2026-03-31 17:25:20 +08:00
|
|
|
|
using System;
|
2025-09-05 19:46:30 +08:00
|
|
|
|
using System.Collections.Generic;
|
2026-03-31 17:25:20 +08:00
|
|
|
|
using System.Threading;
|
2025-09-05 19:46:30 +08:00
|
|
|
|
using AlicizaX;
|
2026-03-31 17:25:20 +08:00
|
|
|
|
using Cysharp.Threading.Tasks;
|
2025-09-05 19:46:30 +08:00
|
|
|
|
|
|
|
|
|
|
namespace AlicizaX.Localization.Runtime
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
[UnityEngine.Scripting.Preserve]
|
2026-03-26 16:14:05 +08:00
|
|
|
|
internal sealed partial class LocalizationService : ServiceBase, ILocalizationService
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
private readonly Dictionary<string, string> Dic = new();
|
2026-03-31 17:25:20 +08:00
|
|
|
|
private readonly List<GameLocaizationTable> _trackedTables = new();
|
|
|
|
|
|
private readonly Dictionary<GameLocaizationTable, List<string>> _trackedTableKeys = new();
|
2025-09-23 12:04:39 +08:00
|
|
|
|
private string _language;
|
2025-09-05 19:46:30 +08:00
|
|
|
|
|
2025-09-23 12:04:39 +08:00
|
|
|
|
public string Language
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
get => _language;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-23 12:04:39 +08:00
|
|
|
|
public void ChangedLanguage(string language)
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
SwitchLanguageAsync(language).Forget();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public UniTask SwitchLanguageAsync(string language, CancellationToken cancellationToken = default)
|
|
|
|
|
|
{
|
|
|
|
|
|
cancellationToken.ThrowIfCancellationRequested();
|
|
|
|
|
|
if (string.IsNullOrEmpty(language) || _language == language)
|
|
|
|
|
|
{
|
|
|
|
|
|
return UniTask.CompletedTask;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-05 19:46:30 +08:00
|
|
|
|
_language = language;
|
2026-03-31 17:25:20 +08:00
|
|
|
|
RebuildTrackedTables();
|
|
|
|
|
|
LocalizationComponent.SaveLanguagePreference(language);
|
2025-09-05 19:46:30 +08:00
|
|
|
|
LocalizationChangeEvent.Publisher(_language);
|
2026-03-31 17:25:20 +08:00
|
|
|
|
return UniTask.CompletedTask;
|
2025-09-05 19:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-11 15:18:09 +08:00
|
|
|
|
public void Initialize(string language)
|
|
|
|
|
|
{
|
|
|
|
|
|
_language = language;
|
2026-03-31 17:25:20 +08:00
|
|
|
|
LocalizationComponent.SaveLanguagePreference(language);
|
2025-10-11 15:18:09 +08:00
|
|
|
|
Log.Info($"Initializing LocalizationModule :{language}");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-31 17:25:20 +08:00
|
|
|
|
public bool TryGetRawString(string key, out string value)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Dic.TryGetValue(key, out value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString(string key)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="args"><3E><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>.</param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString(string key, params object[] args)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return Utility.Text.Format(value, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T>(string key, T arg)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3}", key, value, arg, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2>(string key, T1 arg1, T2 arg2)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4}", key, value, arg1, arg2, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3>(string key, T1 arg1, T2 arg2, T3 arg3)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5}", key, value, arg1, arg2, arg3, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3, arg4);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5},{6}", key, value, arg1, arg2, arg3, arg4, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5},{6},{7}", key, value, arg1, arg2, arg3, arg4, arg5, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5},{6},{7},{8}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{0}", key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format(value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<Error>{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}", key, value, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <param name="arg11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11<31><31></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(string key, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <param name="arg11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11<31><31></param>
|
|
|
|
|
|
/// <param name="arg12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12<31><32></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(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)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <param name="arg11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11<31><31></param>
|
|
|
|
|
|
/// <param name="arg12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12<31><32></param>
|
|
|
|
|
|
/// <param name="arg13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13<31><33></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(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)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T14"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 14 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <param name="arg11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11<31><31></param>
|
|
|
|
|
|
/// <param name="arg12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12<31><32></param>
|
|
|
|
|
|
/// <param name="arg13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13<31><33></param>
|
|
|
|
|
|
/// <param name="arg14"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 14<31><34></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(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)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{0},{1},{2},{3}", key, value, args, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T14"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 14 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T15"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 15 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <param name="arg11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11<31><31></param>
|
|
|
|
|
|
/// <param name="arg12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12<31><32></param>
|
|
|
|
|
|
/// <param name="arg13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13<31><33></param>
|
|
|
|
|
|
/// <param name="arg14"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 14<31><34></param>
|
|
|
|
|
|
/// <param name="arg15"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 15<31><35></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(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)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{0},{1},{2},{3}", key, value, args, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
/// </summary>
|
2026-03-31 17:25:20 +08:00
|
|
|
|
/// <typeparam name="T1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T14"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 14 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T15"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 15 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <typeparam name="T16"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 16 <20><><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD></typeparam>
|
|
|
|
|
|
/// <param name="key"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="arg1"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 1<><31></param>
|
|
|
|
|
|
/// <param name="arg2"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 2<><32></param>
|
|
|
|
|
|
/// <param name="arg3"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 3<><33></param>
|
|
|
|
|
|
/// <param name="arg4"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 4<><34></param>
|
|
|
|
|
|
/// <param name="arg5"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 5<><35></param>
|
|
|
|
|
|
/// <param name="arg6"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 6<><36></param>
|
|
|
|
|
|
/// <param name="arg7"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 7<><37></param>
|
|
|
|
|
|
/// <param name="arg8"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 8<><38></param>
|
|
|
|
|
|
/// <param name="arg9"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 9<><39></param>
|
|
|
|
|
|
/// <param name="arg10"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 10<31><30></param>
|
|
|
|
|
|
/// <param name="arg11"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 11<31><31></param>
|
|
|
|
|
|
/// <param name="arg12"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 12<31><32></param>
|
|
|
|
|
|
/// <param name="arg13"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 13<31><33></param>
|
|
|
|
|
|
/// <param name="arg14"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 14<31><34></param>
|
|
|
|
|
|
/// <param name="arg15"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 15<31><35></param>
|
|
|
|
|
|
/// <param name="arg16"><3E>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD> 16<31><36></param>
|
|
|
|
|
|
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD></returns>
|
2025-09-05 19:46:30 +08:00
|
|
|
|
public string GetString<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(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)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!Dic.TryGetValue(key, out string value))
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
|
|
|
|
|
return Utility.Text.Format("<NoKey>{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("<Error>{0},{1},{2},{3}", key, value, args, exception);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string GetRawString(string key)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
return TryGetRawString(key, out string value) ? value : null;
|
2025-09-05 19:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-23 12:04:39 +08:00
|
|
|
|
public void IncreAddLocalizationConfig(GameLocaizationTable table)
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
TrackTable(table);
|
|
|
|
|
|
ReapplyTrackedTable(table);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void CoverAddLocalizationConfig(GameLocaizationTable table)
|
|
|
|
|
|
{
|
|
|
|
|
|
Dic.Clear();
|
|
|
|
|
|
_trackedTables.Clear();
|
|
|
|
|
|
_trackedTableKeys.Clear();
|
|
|
|
|
|
TrackTable(table);
|
|
|
|
|
|
ReapplyTrackedTable(table);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void ReloadLocalizationConfig(GameLocaizationTable table)
|
|
|
|
|
|
{
|
|
|
|
|
|
TrackTable(table);
|
|
|
|
|
|
ReapplyTrackedTable(table);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void OnInitialize() { }
|
|
|
|
|
|
|
|
|
|
|
|
protected override void OnDestroyService()
|
|
|
|
|
|
{
|
|
|
|
|
|
Dic.Clear();
|
|
|
|
|
|
_trackedTables.Clear();
|
|
|
|
|
|
_trackedTableKeys.Clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void TrackTable(GameLocaizationTable table)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (table == null)
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
2025-09-23 12:04:39 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!_trackedTables.Contains(table))
|
2025-09-23 12:04:39 +08:00
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
_trackedTables.Add(table);
|
2025-09-23 12:04:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-31 17:25:20 +08:00
|
|
|
|
private void RebuildTrackedTables()
|
2025-09-23 12:04:39 +08:00
|
|
|
|
{
|
|
|
|
|
|
Dic.Clear();
|
2026-03-31 17:25:20 +08:00
|
|
|
|
_trackedTableKeys.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < _trackedTables.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
ReapplyTrackedTable(_trackedTables[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ReapplyTrackedTable(GameLocaizationTable table)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (table == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
RemoveTrackedTableEntries(table);
|
|
|
|
|
|
|
2025-09-23 12:04:39 +08:00
|
|
|
|
LocalizationLanguage localizationLanguage = table.GetLanguage(_language);
|
|
|
|
|
|
if (localizationLanguage == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Log.Warning($"Can not Find {_language} Strins ");
|
2026-03-31 17:25:20 +08:00
|
|
|
|
_trackedTableKeys[table] = new List<string>(0);
|
2025-09-23 12:04:39 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-31 17:25:20 +08:00
|
|
|
|
Dic.EnsureCapacity(Dic.Count + localizationLanguage.Strings.Count);
|
|
|
|
|
|
List<string> keys = new(localizationLanguage.Strings.Count);
|
2025-09-23 12:04:39 +08:00
|
|
|
|
foreach (var item in localizationLanguage.Strings)
|
|
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
Dic[item.Key] = item.Value;
|
|
|
|
|
|
keys.Add(item.Key);
|
2025-09-05 19:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-31 17:25:20 +08:00
|
|
|
|
_trackedTableKeys[table] = keys;
|
|
|
|
|
|
}
|
2026-03-26 16:14:05 +08:00
|
|
|
|
|
2026-03-31 17:25:20 +08:00
|
|
|
|
private void RemoveTrackedTableEntries(GameLocaizationTable table)
|
2025-09-05 19:46:30 +08:00
|
|
|
|
{
|
2026-03-31 17:25:20 +08:00
|
|
|
|
if (!_trackedTableKeys.TryGetValue(table, out List<string> keys))
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < keys.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
Dic.Remove(keys[i]);
|
|
|
|
|
|
}
|
2025-09-05 19:46:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-03-31 17:25:20 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|