160 lines
4.1 KiB
C#
160 lines
4.1 KiB
C#
using Framework;
|
||
using System;
|
||
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.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;
|
||
}
|
||
|
||
public string GetTextByKey(string key)
|
||
{
|
||
DataString DataString = GetStringConfigByKey(key);
|
||
if (DataString != null)
|
||
{
|
||
return GetStringConfigValue(DataString);
|
||
}
|
||
return key;
|
||
}
|
||
|
||
public string GetTextByKeyAndParams<T>(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<T0, T1>(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<T0, T1, T2>(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 "";
|
||
}
|
||
|
||
public static void ChangeLanguage(LanguageType language)
|
||
{
|
||
CurLanguage = language;
|
||
}
|
||
} |