using Framework; using System; using System.Collections; using System.Collections.Generic; using cfg; using cfg.StringCfg; using UnityEngine; public class StringManager { private static StringManager m_instance; public static LanguageType CurLanguage = LanguageType.Default; public static StringManager Instance { get { if (m_instance == null) { m_instance = new StringManager(); } return m_instance; } } public enum LanguageType { Default, CN, TW, EN, } private DataString GetStringConfigByKey(string key) { var dataString = TableManager.Instance.Tables.StringConfig?.GetOrDefault(key); if (dataString == null || string.IsNullOrEmpty(dataString.Value)) { DebugUtil.LogWarning("{0}.GetStringConfigByKey: key = {1} is not exist, check table please!!",GetType(), key); } return dataString; } private string GetStringConfigValue(DataString data) { string value = ""; switch (CurLanguage) { case (LanguageType.Default): { value = data.Value; break; } case (LanguageType.CN): { value = data.Value; break; } case (LanguageType.TW): { break; } case (LanguageType.EN): { value = data.ValueEn; break; } default: { DebugUtil.LogError($"==== 文本翻译的语言不存在相应的枚举值!请检查语言设置!!! ===="); break; } } return value; } public string GetTextByKey(string key) { DataString DataString = GetStringConfigByKey(key); if (DataString != null) { return GetStringConfigValue(DataString); } return key; } public string GetTextByKeyAndParams(string key, T param) { DataString DataString = GetStringConfigByKey(key); string str = key; if (DataString != null) { str = GetStringConfigValue(DataString); str = string.Format(str, param); } return str; } public string GetTextByKeyAndParams(string key, T0 param0, T1 param1) { DataString DataString = GetStringConfigByKey(key); string str = key; if (DataString != null) { str = GetStringConfigValue(DataString); str = string.Format(str, param0, param1); } return str; } public string GetTextByKeyAndParams(string key, T0 param0, T1 param1, T2 param2) { DataString DataString = GetStringConfigByKey(key); string str = key; if (DataString != null) { str = GetStringConfigValue(DataString); str = string.Format(str, param0, param1, param2); } return str; } //本地化,后续扩展 public string GetLocalizeTextByKey(string key) { return GetTextByKey(key); } //可填入参数的文本,目前最多支持三个参数 public string GetLocalizeTextByKeyAndParams(string key, params object[] param) { if (param.Length <= 0) { return GetTextByKey(key); } else if (param.Length == 1) { return GetTextByKeyAndParams(key, param[0]); } else if (param.Length == 2) { return GetTextByKeyAndParams(key, param[0], param[1]); } else if (param.Length == 3) { return GetTextByKeyAndParams(key, param[0], param[1], param[2]); } DebugUtil.LogError(string.Format("==== 请检查文本内容参数个数!!! 文本Key为 {0} ! ====", key)); return ""; } /// /// 获取本地化文本,根据本地化key和参数列表 /// /// /// /// public string GetLocalizeTextByKeyAndList(string key, params string[] param) { if (param == null) return GetTextByKey(key); switch (param.Length) { case 0: return GetTextByKey(key); case 1: return GetTextByKeyAndParams(key, param[0]); case 2: return GetTextByKeyAndParams(key, param[0], param[1]); case 3: return GetTextByKeyAndParams(key, param[0], param[1], param[2]); default: { DebugUtil.LogError($"==== 请检查文本内容参数个数!!! 文本Key为 {key} ! ===="); } return string.Empty; } } public static void ChangeLanguage(LanguageType language) { CurLanguage = language; } public static string GetStoryTalkText(string key) { return key; } }