using System;
using System.Collections.Generic;
using AlicizaX;
namespace AlicizaX.Localization.Runtime
{
///
/// 本地化管理器。
///
[UnityEngine.Scripting.Preserve]
internal sealed partial class LocalizationModule : ILocalizationModule
{
private readonly Dictionary Dic = new();
private Language _language;
public Language Language
{
get => _language;
}
public void ChangedLanguage(Language language)
{
if (_language == language) return;
_language = language;
LocalizationChangeEvent.Publisher(_language);
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典主键。
/// 要获取的字典内容字符串。
public string GetString(string key)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
return value;
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典主键。
/// 参数列表.
/// 要获取的字典内容字符串。
public string GetString(string key, params object[] args)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
return Utility.Text.Format(value, args);
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数的类型。
/// 字典主键。
/// 字典参数。
/// 要获取的字典内容字符串。
public string GetString(string key, T arg)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3}", key, value, arg, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4}", key, value, arg1, arg2, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5}", key, value, arg1, arg2, arg3, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6}", key, value, arg1, arg2, arg3, arg4, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7}", key, value, arg1, arg2, arg3, arg4, arg5, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典参数 11 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 字典参数 11。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典参数 11 的类型。
/// 字典参数 12 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 字典参数 11。
/// 字典参数 12。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典参数 11 的类型。
/// 字典参数 12 的类型。
/// 字典参数 13 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 字典参数 11。
/// 字典参数 12。
/// 字典参数 13。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13);
}
catch (Exception exception)
{
return Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典参数 11 的类型。
/// 字典参数 12 的类型。
/// 字典参数 13 的类型。
/// 字典参数 14 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 字典参数 11。
/// 字典参数 12。
/// 字典参数 13。
/// 字典参数 14。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
}
catch (Exception exception)
{
var args = Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}", arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
return Utility.Text.Format("{0},{1},{2},{3}", key, value, args, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典参数 11 的类型。
/// 字典参数 12 的类型。
/// 字典参数 13 的类型。
/// 字典参数 14 的类型。
/// 字典参数 15 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 字典参数 11。
/// 字典参数 12。
/// 字典参数 13。
/// 字典参数 14。
/// 字典参数 15。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
}
catch (Exception exception)
{
var args = Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14}", arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
return Utility.Text.Format("{0},{1},{2},{3}", key, value, args, exception);
}
}
///
/// 根据字典主键获取字典内容字符串。
///
/// 字典参数 1 的类型。
/// 字典参数 2 的类型。
/// 字典参数 3 的类型。
/// 字典参数 4 的类型。
/// 字典参数 5 的类型。
/// 字典参数 6 的类型。
/// 字典参数 7 的类型。
/// 字典参数 8 的类型。
/// 字典参数 9 的类型。
/// 字典参数 10 的类型。
/// 字典参数 11 的类型。
/// 字典参数 12 的类型。
/// 字典参数 13 的类型。
/// 字典参数 14 的类型。
/// 字典参数 15 的类型。
/// 字典参数 16 的类型。
/// 字典主键。
/// 字典参数 1。
/// 字典参数 2。
/// 字典参数 3。
/// 字典参数 4。
/// 字典参数 5。
/// 字典参数 6。
/// 字典参数 7。
/// 字典参数 8。
/// 字典参数 9。
/// 字典参数 10。
/// 字典参数 11。
/// 字典参数 12。
/// 字典参数 13。
/// 字典参数 14。
/// 字典参数 15。
/// 字典参数 16。
/// 要获取的字典内容字符串。
public string GetString(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14,
T15 arg15, T16 arg16)
{
var value = GetRawString(key);
if (value == null)
{
return Utility.Text.Format("{0}", key);
}
try
{
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16);
}
catch (Exception exception)
{
var args = Utility.Text.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15}", arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16);
return Utility.Text.Format("{0},{1},{2},{3}", key, value, args, exception);
}
}
public string GetRawString(string key)
{
if (Dic.TryGetValue(key, out string value))
{
return value;
}
return key;
}
public void AddLocalizationConfig(Dictionary config)
{
foreach (var item in config)
{
Dic.TryAdd(item.Key, item.Value);
}
}
void IModule.Dispose()
{
Dic.Clear();
}
void IModuleAwake.Awake()
{
#if UNITY_EDITOR
_language = (Language)UnityEditor.EditorPrefs.GetInt(LocalizationComponent.PrefsKey, 1);
#else
_language = AppBuilderSetting.Instance.Language;
#endif
}
}
}