Просмотр исходного кода

Merge branch 'localizetexture' of ssh://192.168.0.8:29418/xianjing into hy_dny_localized
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

gdl_123 3 месяцев назад
Родитель
Сommit
c9a081dd40

+ 6 - 0
Assets/Content/Config/LanguageCfg.csv

@@ -0,0 +1,6 @@
+ID,内容
+key,Language
+string,string
+base,_base
+en,_en
+cn,_base

+ 7 - 0
Assets/Content/Config/LanguageCfg.csv.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5e53c5ad307e57045b95de540d5bbf83
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 19 - 1
Assets/Editor/CsvToLua/CfgLanguageTextureCfg.csv

@@ -5,4 +5,22 @@ int,string,string,string,int,int,string
 3,ItemCfg1,Icon,ICfg_Icon_,1,0,Assets/Content/Icons
 4,ItemCfg1,MiniIcon,ICfg_MiniIcon_,1,0,Assets/Content/Icons
 5,ItemCfg2,Icon,ICfg_Icon_,1,0,Assets/Content/Icons
-6,ItemCfg2,MiniIcon,ICfg_MiniIcon_,1,0,Assets/Content/Icons
+6,ItemCfg2,MiniIcon,ICfg_MiniIcon_,1,0,Assets/Content/Icons
+7,FunctionCfg,Word,fcfg_word_,0,0,Assets/Content/Icons
+8,VipCfg,VipMarkIcon,vipCfg_icon_,1,1,Assets/Content/Icons
+9,DesignationCfg,ChatSource,dgCfg_Cs_,1,1,Assets/Content/Icons
+10,ExpeditionCfg,BannerImg,epCfg_bi_,1,1,Assets/Content/Icons
+11,RuneShopGuildBattleCfg,NameImg,gbCfg_ng_,1,1,Assets/Content/Icons
+12,RuneShopRankAidouluCfg,NameImg,raCfg_ng_,1,1,Assets/Content/Icons
+13,RuneShopRankArenaCfg,NameImg,rarCfg_ng_,1,1,Assets/Content/Icons
+14,RuneShopRankMapCfg,NameImg,rm_ng_,1,1,Assets/Content/Icons
+15,RuneShopRankPetCfg,NameImg,rp_ng_,1,1,Assets/Content/Icons
+16,RuneShopRankSkillCfg,NameImg,rs_ng_,1,1,Assets/Content/Icons
+17,RuneShopRankTowerCfg,NameImg,rt_ng_,1,1,Assets/Content/Icons
+18,ParterCfg,Avatar,pcfg_av_,1,1,Assets/Content/Icons
+19,PurseShopCfg,Pic,psCfg_p_,1,1,Assets/Content/Icons
+20,PurseShopCfg,FirstBuyPic,psCfg_fbp_,1,1,Assets/Content/Icons
+21,PurseShopCfg,ExtraBuyPic,psCfg_ebp_,1,1,Assets/Content/Icons
+22,RuneShopGiftsCfg,Pic,rsgCfg_p_,1,0,Assets/Content/Icons
+23,RuneShopLimitCfg,Banner,rslCfg_b_,1,1,Assets/Content/Icons
+24,SummonCfg,ShowImg,sCfg_si_,1,1,Assets/Content/Icons

+ 16 - 0
Assets/Editor/CsvToLua/luaCopyFileCfg.lua

@@ -111,6 +111,22 @@ luaCopyFileCfg.FileCfg ={
 {basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "summertask_cn_14.png",																			 },
 {basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "superartifactsummon_cn.png",																	 },
 {basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "supercharge_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "duanwujie_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "duanwujierecharge_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "goddessday8_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "goddessday8bg_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "goddessday12_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "goddessday12bg_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "goddessday14_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "goddessday14bg_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "img_banner_newyearlogin_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "img_duanwujie_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "img_summertask_cn_7.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "newyear_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "newyearlogin_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "newyearshop_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "qingming_cn.png",																			 },
+{basepath = "Assets/Content/Icons/",     path = "ActivityImg",    fileName = "summertask_cn_7.png",																			 },
 {basepath = "Assets/Content/Icons/",     path = "BossImg",    fileName = "bossimg_qingtuan.png",																				 },
 {basepath = "Assets/Content/Icons/",     path = "Buff",    fileName = "text_buff_001_up_cn.png",																				 },
 {basepath = "Assets/Content/Icons/",     path = "Buff",    fileName = "text_buff_002_down_cn.png",																			 },

+ 9 - 0
Assets/Src/Core/Base/Constants.cs

@@ -172,4 +172,13 @@ public static class LangKeys
     public const string Korea = "_ko";
     public const string Russia = "_ru";
     public const string Turkey = "_tr";
+}
+
+public static class LanguageFileEx
+{
+    public const string Vietnamese = "vi";
+    public const string Thai = "th";
+    public const string Chinese = "cn";
+    public const string English = "en";
+    public const string Unknown = "base";
 }

+ 140 - 3
Assets/Src/Core/Config/LocalizedTextureCfgMgr.cs

@@ -28,20 +28,57 @@ public class LocalizedSpriteCfg
         return !string.IsNullOrEmpty(SetNativeSize) && SetNativeSize != "0";
     }
 }
+
+
+public class GameLanguageCfg
+{
+    public const string FileName = "LanguageCfg";
+    public string key;
+    public string language;
+
+    public GameLanguageCfg()
+    {
+        key = "";
+        language = "";
+    }
+}
+
 public class LocalizedTextureCfgMgr : Singleton<LocalizedTextureCfgMgr>
 {
-    private string baseName;
+    public static string  baseName = "LocalizeTextureCfg";
+    private static bool isOpen = false;
+    public static bool IsOpen { get => isOpen; }
+
     private string baseKey;
 
     private string curLanguageKey;
     private string oldLanguageKey;
     private Dictionary<string, Dictionary<string, LocalizedSpriteCfg>> cfgs = new Dictionary<string, Dictionary<string, LocalizedSpriteCfg>>();
     private Dictionary<string, LocalizedSpriteCfg> curCfg;
+    private Dictionary<string, GameLanguageCfg> gameLanguageCfgs = new Dictionary<string, GameLanguageCfg>();
     public override void Init()
     {
-        baseName = "LocalizeTextureCfg";
+        ReadlanguageCfg();
 
-        baseKey = "_base";
+        if (!isOpen)
+        {
+            return ;
+        }
+        string defaultlg = GetLanguageLocalSetting();
+        string systemlg = GetSystemDefaultLanguage();
+        if (!string.IsNullOrEmpty(defaultlg))
+        {
+            baseKey = defaultlg;
+        }
+        else if (!string.IsNullOrEmpty(systemlg))
+        {
+            baseKey = systemlg;
+        }
+        else
+        {
+            baseKey = GetLanguageCfgByKey(LanguageFileEx.Unknown);
+        }
+        ConfigMgr.CurLangKey = baseKey;
         curLanguageKey = baseKey;
         oldLanguageKey = baseKey;
         ReadConfig();
@@ -86,6 +123,7 @@ public class LocalizedTextureCfgMgr : Singleton<LocalizedTextureCfgMgr>
         {
             curLanguageKey = language;
             ReadConfig();
+            ConfigMgr.CurLangKey = language;
         }
     }
 
@@ -102,6 +140,10 @@ public class LocalizedTextureCfgMgr : Singleton<LocalizedTextureCfgMgr>
     /// <returns></returns>
     public LocalizedSpriteCfg GetLocalizedSpriteCfg(string key, bool notbase = true)
     {
+        if (!isOpen)
+        {
+            return null;
+        }
         if (notbase && curLanguageKey == oldLanguageKey)
         {
             return null;
@@ -126,6 +168,10 @@ public class LocalizedTextureCfgMgr : Singleton<LocalizedTextureCfgMgr>
 
     public string GetLocalize(string key, bool notbase = false)
     {
+        if (!isOpen)
+        {
+            return "";
+        }
         if (notbase && curLanguageKey == oldLanguageKey)
         {
             return "";
@@ -146,5 +192,96 @@ public class LocalizedTextureCfgMgr : Singleton<LocalizedTextureCfgMgr>
 
         return "";
     }
+
+    private void ReadlanguageCfg()
+    {
+        Dictionary<string, Dictionary<string, string>> cfgdata = ConfigMgr.Instance.getTable(GameLanguageCfg.FileName);
+        if (cfgdata == null)
+        {
+            return;
+        }
+        gameLanguageCfgs.Clear();
+        foreach (var item in cfgdata)
+        {
+            GameLanguageCfg cfg = new GameLanguageCfg();
+            cfg.key = item.Key;
+            cfg.language = item.Value["Language"];
+            gameLanguageCfgs.Add(cfg.key,cfg);
+        }
+
+        isOpen = FileHelper.CheckStringIsTrue(GetLanguageCfgByKey("openSetting"));
+    }
+
+
+    public void SetLanguageByKey(string key)
+    {
+        if (!isOpen)
+        {
+            return;
+        }
+        string lg = GetLanguageCfgByKey(key);
+        if (!string.IsNullOrEmpty(lg))
+        {
+            SetLanguage(lg);
+        }
+    }
+
+    public string GetLanguageCfgByKey(string key)
+    {
+        if (gameLanguageCfgs.ContainsKey(key))
+        {
+            return gameLanguageCfgs[key].language;
+        }
+
+        return "";
+    }
+
+
+    public string GetSystemDefaultLanguage()
+    {
+        string ret = LanguageFileEx.Unknown;
+        switch (UnityEngine.Application.systemLanguage)
+        {
+
+            case UnityEngine.SystemLanguage.Vietnamese: //越南语
+                {
+                    ret = LanguageFileEx.Vietnamese;
+                }
+                break;
+            case UnityEngine.SystemLanguage.Thai: //泰语
+                {
+                    ret = LanguageFileEx.Thai;
+                }
+                break;
+
+            case UnityEngine.SystemLanguage.English:
+                {
+                    ret = LanguageFileEx.English;
+                }
+                break;
+           
+            case UnityEngine.SystemLanguage.Chinese:
+            case UnityEngine.SystemLanguage.ChineseSimplified:
+            case UnityEngine.SystemLanguage.ChineseTraditional:
+                {
+                    ret = LanguageFileEx.Chinese;
+                }
+                break;
+            case UnityEngine.SystemLanguage.Unknown:
+                {
+                    ret = LanguageFileEx.Unknown;
+                }
+                break;
+            default:
+                break;
+        }
+
+        return GetLanguageCfgByKey(ret);
+    }
+
+    public static string GetLanguageLocalSetting()
+    {
+        return UnityEngine.PlayerPrefs.GetString("LanguageLocalSetting",string.Empty);
+    }
 }
 

+ 1 - 1
Assets/Src/ExtendComponents/UILocalizeTexture.cs

@@ -44,7 +44,7 @@ public class UILocalizeTexture : MonoBehaviour
 
     public void Refresh()
     {
-        if (string.IsNullOrEmpty(key))
+        if (string.IsNullOrEmpty(key) || mImage == null)
             return;
 
         spriteCfg = LocalizedTextureCfgMgr.Instance.GetLocalizedSpriteCfg(key);

+ 2 - 0
Assets/Src/GameLogic/LaunchLoadMgr.cs

@@ -278,6 +278,8 @@ public class LaunchLoadMgr
     private void OnConfigMgrInited(CoreEvent<int> ce)
     {
         EventMgr.RemoveEventListener<int>(ECoreEventType.EID_ConfigMgrInit, OnConfigMgrInited);
+
+        LocalizedTextureCfgMgr.Instance.Init();
         // m_LoadingRootGo.SetActive(true);
         //SetLoadEffectShowState(true);
         SetLoadDes("GameLogin17");