2023-08-22 19:08:45 +08:00
|
|
|
|
using Framework;
|
|
|
|
|
|
using System;
|
2023-11-08 15:50:08 +08:00
|
|
|
|
using System.Collections;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using cfg;
|
|
|
|
|
|
using cfg.StringCfg;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
public class StringManager
|
|
|
|
|
|
{
|
|
|
|
|
|
private static StringManager m_instance;
|
2023-10-19 15:00:19 +08:00
|
|
|
|
public static LanguageType CurLanguage = LanguageType.Default;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
|
|
|
|
|
public static StringManager Instance
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_instance == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_instance = new StringManager();
|
|
|
|
|
|
}
|
|
|
|
|
|
return m_instance;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-10-19 15:00:19 +08:00
|
|
|
|
public enum LanguageType
|
|
|
|
|
|
{
|
|
|
|
|
|
Default,
|
|
|
|
|
|
CN,
|
|
|
|
|
|
TW,
|
|
|
|
|
|
EN,
|
|
|
|
|
|
}
|
2023-08-22 19:08:45 +08:00
|
|
|
|
private DataString GetStringConfigByKey(string key)
|
|
|
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
|
var dataString = TableManager.Instance.Tables.StringConfig?.GetOrDefault(key);
|
|
|
|
|
|
if (dataString == null || string.IsNullOrEmpty(dataString.Value))
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("{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;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string GetTextByKey(string key)
|
|
|
|
|
|
{
|
|
|
|
|
|
DataString DataString = GetStringConfigByKey(key);
|
|
|
|
|
|
if (DataString != null)
|
|
|
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
|
return GetStringConfigValue(DataString);
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
return key;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string GetTextByKeyAndParams<T>(string key, T param)
|
|
|
|
|
|
{
|
|
|
|
|
|
DataString DataString = GetStringConfigByKey(key);
|
|
|
|
|
|
string str = key;
|
|
|
|
|
|
if (DataString != null)
|
|
|
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
|
str = GetStringConfigValue(DataString);
|
2023-08-22 19:08:45 +08:00
|
|
|
|
str = string.Format(str, param);
|
|
|
|
|
|
}
|
2023-10-19 15:00:19 +08:00
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
return str;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string GetTextByKeyAndParams<T0, T1>(string key, T0 param0, T1 param1)
|
|
|
|
|
|
{
|
|
|
|
|
|
DataString DataString = GetStringConfigByKey(key);
|
|
|
|
|
|
string str = key;
|
|
|
|
|
|
if (DataString != null)
|
|
|
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
|
str = GetStringConfigValue(DataString);
|
2023-08-22 19:08:45 +08:00
|
|
|
|
str = string.Format(str, param0, param1);
|
|
|
|
|
|
}
|
2023-10-19 15:00:19 +08:00
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
return str;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string GetTextByKeyAndParams<T0, T1, T2>(string key, T0 param0, T1 param1, T2 param2)
|
|
|
|
|
|
{
|
|
|
|
|
|
DataString DataString = GetStringConfigByKey(key);
|
|
|
|
|
|
string str = key;
|
|
|
|
|
|
if (DataString != null)
|
|
|
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
|
str = GetStringConfigValue(DataString);
|
2023-08-22 19:08:45 +08:00
|
|
|
|
str = string.Format(str, param0, param1, param2);
|
|
|
|
|
|
}
|
2023-10-19 15:00:19 +08:00
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
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 "";
|
|
|
|
|
|
}
|
2023-10-19 15:00:19 +08:00
|
|
|
|
|
2023-11-08 15:50:08 +08:00
|
|
|
|
public string GetLocalizeTextByKeyAndList(string key, IList param)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (param.Count <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTextByKey(key);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (param.Count == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTextByKeyAndParams(key, param[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (param.Count == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTextByKeyAndParams(key, param[0], param[1]);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (param.Count == 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTextByKeyAndParams(key, param[0], param[1], param[2]);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DebugUtil.LogError(string.Format("==== 请检查文本内容参数个数!!! 文本Key为 {0} ! ====", key));
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-10-19 15:00:19 +08:00
|
|
|
|
public static void ChangeLanguage(LanguageType language)
|
|
|
|
|
|
{
|
|
|
|
|
|
CurLanguage = language;
|
|
|
|
|
|
}
|
2023-10-24 14:47:25 +08:00
|
|
|
|
|
|
|
|
|
|
public static string GetStoryTalkText(string key)
|
|
|
|
|
|
{
|
|
|
|
|
|
return key;
|
|
|
|
|
|
}
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|