From 447e07c49ee36931b9b4bcfcfee38a5892be5fcd Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 24 三月 2026 18:34:18 +0800
Subject: [PATCH] 585 趣动海外渠道对接 - 多语言界面
---
Main/System/PlayerProfile/PlayerProfileWin.cs | 11 ++
Main/System/Language/Language.cs | 96 ++++++++++++++++++-----
Main/System/HeroUI/HeroBestWin.cs | 6 +
Main/System/PlayerProfile/ChangeLanguageWin.cs.meta | 11 ++
Main/System/PlayerProfile/ChangeLanguageWin.cs | 77 +++++++++++++++++++
5 files changed, 178 insertions(+), 23 deletions(-)
diff --git a/Main/System/HeroUI/HeroBestWin.cs b/Main/System/HeroUI/HeroBestWin.cs
index 634fa5a..8ae5787 100644
--- a/Main/System/HeroUI/HeroBestWin.cs
+++ b/Main/System/HeroUI/HeroBestWin.cs
@@ -222,6 +222,12 @@
HeroUIManager.Instance.selectForPreviewHeroID = HeroUIManager.Instance.heroCollectList[resultIndex];
Display();
+ //鎺у埗涓�绾у姛鑳界晫闈㈢殑鐨偆鎸夐挳
+ var ui = UIManager.Instance.GetUI<HeroBestBaseWin>();
+ if (ui != null)
+ {
+ ui.ShowSkinBtn();
+ }
}
diff --git a/Main/System/Language/Language.cs b/Main/System/Language/Language.cs
index 9eb65ec..7261706 100644
--- a/Main/System/Language/Language.cs
+++ b/Main/System/Language/Language.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System;
using UnityEngine;
+using LitJson;
public static class Language
@@ -22,38 +23,74 @@
}
}
+ public static Dictionary<string, string> languageShowDict = new Dictionary<string, string>();//鐣岄潰鏄剧ず鐨勫璇█鐗堟湰
+
+ //鍚姩澶氳瑷�鐨勬笭閬�,濡倇appid:[榛樿璇█鏍囪瘑,鏄惁棣栨瀹夎寮哄埗鎸囧畾璇█,鍙寘鍚摢浜涜瑷�鐗堟湰]}
+ // 濡倇"sghy":["en","0","en,zh,ft"]}锛屽瓧绗�0浠h〃闅忕郴缁熼�夋嫨濡傛灉鎵句笉鍒板垯鐢ㄩ粯璁わ紝閰�1鍒欎笉妫�鏌ョ郴缁熺洿鎺ョ敤榛樿
+ //涓轰簡鍚屼唬鐮佺増鏈悓琛ㄧ淮鎶わ紝淇濇寔閰嶇疆涓�鑷存寜appid鍖哄垎锛屽彧鍋氱炕璇戝鐞�
+ public static Dictionary<string, string[]> languageStartDict = new Dictionary<string, string[]>();//鍚姩澶氳瑷�鐨勬笭閬�
+ static Dictionary<string, string> languageDict = new Dictionary<string, string>();// unity璇█閰嶇疆瀵瑰簲鐨勭害瀹氬瓧绗� 鎵句笉鍒扮敤榛樿
/// <summary>
- /// 鏍规嵁绯荤粺璇█鑷姩璁剧疆榛樿璇█
+ /// 鏈己鍒惰瑷�鐨� 鏍规嵁绯荤粺璇█鑷姩璁剧疆榛樿璇█ 绛夋儏鍐�
/// </summary>
public static void InitDefaultLanguage()
{
- var config = InitialFunctionConfig.Get("Language").Numerical1;
- Debug.LogFormat("绯荤粺璇█锛歿0} {1}", Application.systemLanguage, config);
- if (string.IsNullOrEmpty(config))
+ //鍒濆鍖�, 璇ヨ〃鏄殢鍖呭畨瑁呯殑濡傛灉鐑洿闇�瑕佷簩娆℃墠鐢熸晥
+ var config = InitialFunctionConfig.Get("LanguageEx");
+
+ languageShowDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical1);
+ languageStartDict = JsonMapper.ToObject<Dictionary<string, string[]>>(config.Numerical2);
+ languageDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical3);
+
+ if (languageStartDict == null || !languageStartDict.ContainsKey(VersionConfigEx.Get().appId))
+ {
+ //妫�鏌ユ湁娌″璇█
+ Debug.Log("褰撳墠娓犻亾鏈紑鍚璇█:" + VersionConfigEx.Get().appId);
return;
+ }
+
+ Debug.LogFormat("绯荤粺璇█锛歿0} {1}", Application.systemLanguage, config.Numerical1);
+
var id = LocalSave.GetString("LANGUAGE_ID1");
if (!string.IsNullOrEmpty(id))
- return;
-
- switch (Application.systemLanguage)
{
- case SystemLanguage.Chinese:
- case SystemLanguage.ChineseSimplified:
- case SystemLanguage.ChineseTraditional:
- {
- id = "zh";
- break;
- }
+ //鐜╁宸茬粡閫夋嫨杩囪瑷�锛屼笉鍋氬鐞�
+ Debug.Log("褰撳墠閫夋嫨璇█锛�" + id);
+ return;
}
- var json = LitJson.JsonMapper.ToObject(config);
- if (json.Keys.Contains(id))
- Id = id;
+
+ var defaultCfg = languageStartDict[VersionConfigEx.Get().appId];
+ string languageMark;
+ if (defaultCfg[1] == "0")
+ {
+ //闅忕郴缁熼�夋嫨
+ languageMark = ((int)Application.systemLanguage).ToString();
+ if (languageDict.ContainsKey(languageMark))
+ {
+ id = languageDict[languageMark];
+ var lanArr = defaultCfg[2].Split(',');
+ if (Array.IndexOf(lanArr, id) == -1)
+ {
+ //涓嶅寘鍚殑璇█ 鐢ㄩ粯璁�
+ id = defaultCfg[0];
+ }
+
+ }
+ else
+ {
+ //榛樿
+ id = defaultCfg[0];
+ }
+ }
else
{
- //寮�鍚殑鎯呭喌涓嬪繀椤昏鏈変釜榛樿鍊�
- Id = InitialFunctionConfig.Get("Language").Numerical2;
+ //寮哄埗鎸囧畾榛樿
+ id = defaultCfg[0];
}
+
+ Id = id;
+ Debug.LogFormat("绯荤粺璇█锛歿0} 璁剧疆涓簕1}", Application.systemLanguage, Id);
}
/// <summary>
@@ -64,9 +101,14 @@
{
get
{
- var config = InitialFunctionConfig.Get("Language").Numerical1;
- if (string.IsNullOrEmpty(config))
+ if (languageStartDict == null || languageStartDict.Count == 0)
+ {
return "";
+ }
+ if (!languageStartDict.ContainsKey(VersionConfigEx.Get().appId))
+ {
+ return "";
+ }
return LocalSave.GetString("LANGUAGE_ID1");
}
set
@@ -75,6 +117,7 @@
}
}
+ //澶氳瑷�鐨勮矾寰�
//榛樿璺緞涓嶉檮鍔犲湴鍧�锛孖d涓嶄负绌烘椂闄勫姞Id
public static string fixPath
{
@@ -86,6 +129,17 @@
}
}
+
+ // 鑾峰彇璇█閫夐」
+ public static string[] GetLanguages()
+ {
+ if (languageStartDict == null || !languageStartDict.ContainsKey(VersionConfig.Get().appId))
+ {
+ return null;
+ }
+ return languageStartDict[VersionConfig.Get().appId][2].Split(',');
+ }
+
public static string Get(string _id)
{
// return string.Empty;
diff --git a/Main/System/PlayerProfile/ChangeLanguageWin.cs b/Main/System/PlayerProfile/ChangeLanguageWin.cs
new file mode 100644
index 0000000..8bd5bfe
--- /dev/null
+++ b/Main/System/PlayerProfile/ChangeLanguageWin.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class ChangeLanguageWin : UIBase
+{
+ [SerializeField] Toggle[] languageToggles;
+ [SerializeField] Text[] languageTexts;
+ [SerializeField] Button changeBtn;
+
+ List<string> languageList = new List<string>();
+ protected override void InitComponent()
+ {
+ changeBtn.AddListener(() =>
+ {
+ int index = 0;
+ for (int i = 0; i < languageToggles.Length; i++)
+ {
+ if (languageToggles[i].isOn)
+ {
+ index = i;
+ break;
+ }
+ }
+
+ var lgId = languageList[index];
+ ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("language_tip_info"),
+ Language.Get("language_tip_btn2"), Language.Get("language_tip_btn1"), (yes) =>
+ {
+ if (yes)
+ {
+ Language.Id = lgId;
+#if UNITY_EDITOR
+ UnityEditor.EditorApplication.isPlaying = false;
+#else
+ Application.Quit();
+#endif
+ }
+ });
+ });
+ }
+
+ protected override void OnPreOpen()
+ {
+ languageList = new List<string>();
+ Display();
+ }
+
+ protected override void OnPreClose()
+ {
+ base.OnPreClose();
+ }
+
+ void Display()
+ {
+ var languages = Language.GetLanguages();
+ for (int i = 0; i < languageToggles.Length; i++)
+ {
+ if (i < languages.Length)
+ {
+ languageToggles[i].SetActive(true);
+ languageTexts[i].text = Language.languageShowDict[languages[i]];
+ if (Language.Id == languages[i])
+ {
+ languageToggles[i].isOn = true;
+ }
+ languageList.Add(languages[i]);
+ }
+ else
+ {
+ languageToggles[i].SetActive(false);
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Main/System/PlayerProfile/ChangeLanguageWin.cs.meta b/Main/System/PlayerProfile/ChangeLanguageWin.cs.meta
new file mode 100644
index 0000000..0684b8b
--- /dev/null
+++ b/Main/System/PlayerProfile/ChangeLanguageWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2e64ebc16632a5d4895be9d2e57e2650
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/PlayerProfile/PlayerProfileWin.cs b/Main/System/PlayerProfile/PlayerProfileWin.cs
index b08f0aa..fd0d335 100644
--- a/Main/System/PlayerProfile/PlayerProfileWin.cs
+++ b/Main/System/PlayerProfile/PlayerProfileWin.cs
@@ -21,7 +21,8 @@
[SerializeField] ButtonEx btnSyncPlatformAvatar;
[SerializeField] ButtonEx btnCopy;
[SerializeField] ButtonEx btnChangeName;
- [SerializeField] ButtonEx btnText1;
+ [SerializeField] ButtonEx btnLanguage;
+ [SerializeField] ButtonEx btnText1; // 闅愮鍗忚
[SerializeField] ButtonEx btnText2;
protected override void InitComponent()
{
@@ -57,6 +58,10 @@
avatarCell.SetListener(() =>
{
UIManager.Instance.OpenWindow<PhantasmPavilionWin>();
+ });
+ btnLanguage.AddListener(()=>
+ {
+ UIManager.Instance.OpenWindow<ChangeLanguageWin>();
});
}
@@ -105,6 +110,8 @@
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
PlayerDatas.Instance.baseData.face,
PlayerDatas.Instance.baseData.facePic));
- officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID,1f);
+ officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID, 1f);
+ var languages = Language.GetLanguages();
+ btnLanguage.SetActive(!languages.IsNullOrEmpty());
}
}
\ No newline at end of file
--
Gitblit v1.8.0