mirror of https://github.com/2dust/v2rayN
Slnanx
5 days ago
committed by
GitHub
5 changed files with 72 additions and 118 deletions
@ -1,131 +1,63 @@ |
|||||||
using System.Collections.Generic; |
using System.Globalization; |
||||||
using System.Globalization; |
using System.Text.Json; |
||||||
|
|
||||||
namespace AmazTool |
namespace AmazTool |
||||||
{ |
{ |
||||||
public class LocalizationHelper |
public class LocalizationHelper |
||||||
{ |
{ |
||||||
/// <summary> |
private static Dictionary<string, string> languageResources = new(); |
||||||
/// 获取系统当前语言的本地化字符串 |
|
||||||
/// </summary> |
|
||||||
/// <param name="key">要翻译的关键字</param> |
|
||||||
/// <returns>对应语言的本地化字符串,如果没有找到则返回关键字</returns> |
|
||||||
public static string GetLocalizedValue(string key) |
|
||||||
{ |
|
||||||
// 定义支持的语言 |
|
||||||
HashSet<string> supportedLanguages = ["zh", "en"]; |
|
||||||
|
|
||||||
// 获取当前系统语言的 ISO 两字母代码 |
|
||||||
string currentLanguage = CultureInfo.CurrentCulture.TwoLetterISOLanguageName; |
|
||||||
|
|
||||||
// 如果当前语言不在支持的语言列表中,默认使用英文 |
|
||||||
if (!supportedLanguages.Contains(currentLanguage)) |
|
||||||
{ |
|
||||||
currentLanguage = "en"; |
|
||||||
} |
|
||||||
|
|
||||||
// 尝试获取对应语言的翻译 |
|
||||||
if (languageResources.TryGetValue(key, out var translations)) |
|
||||||
{ |
|
||||||
if (translations.TryGetValue(currentLanguage, out var translation)) |
|
||||||
{ |
|
||||||
return translation; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// 如果未找到翻译,返回关键字本身 |
static LocalizationHelper() |
||||||
return key; |
{ |
||||||
|
// 加载语言资源 |
||||||
|
LoadLanguageResources(); |
||||||
} |
} |
||||||
|
|
||||||
/// <summary> |
/// <summary> |
||||||
/// 存储不同语言的本地化资源 |
/// 加载外部 JSON 文件中的语言资源 |
||||||
/// </summary> |
/// </summary> |
||||||
public static Dictionary<string, Dictionary<string, string>> languageResources = new() |
private static void LoadLanguageResources() |
||||||
{ |
{ |
||||||
|
try |
||||||
{ |
{ |
||||||
"Guidelines", new Dictionary<string, string> |
string currentLanguage = CultureInfo.CurrentCulture.Name; |
||||||
{ |
if (currentLanguage != "zh-CN" && currentLanguage != "en-US") |
||||||
{ "en", "Please run it from the main application." }, |
|
||||||
{ "zh", "请从主应用运行!" } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"Upgrade_File_Not_Found", new Dictionary<string, string> |
|
||||||
{ |
|
||||||
{ "en", "Upgrade failed, file not found." }, |
|
||||||
{ "zh", "升级失败,文件不存在!" } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"In_Progress", new Dictionary<string, string> |
|
||||||
{ |
{ |
||||||
{ "en", "In progress, please wait..." }, |
currentLanguage = "en-US"; |
||||||
{ "zh", "正在进行中,请等待..." } |
|
||||||
} |
} |
||||||
}, |
|
||||||
{ |
string jsonFilePath = $"{currentLanguage}.json"; |
||||||
"Try_Terminate_Process", new Dictionary<string, string> |
if (!File.Exists(jsonFilePath)) |
||||||
{ |
|
||||||
{ "en", "Try to terminate the v2rayN process." }, |
|
||||||
{ "zh", "尝试结束 v2rayN 进程..." } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"Failed_Terminate_Process", new Dictionary<string, string> |
|
||||||
{ |
|
||||||
{ "en", "Failed to terminate the v2rayN.Close it manually,or the upgrade may fail." }, |
|
||||||
{ "zh", "请手动关闭正在运行的v2rayN,否则可能升级失败。" } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"Start_Unzipping", new Dictionary<string, string> |
|
||||||
{ |
|
||||||
{ "en", "Start extracting the update package." }, |
|
||||||
{ "zh", "开始解压缩更新包..." } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"Success_Unzipping", new Dictionary<string, string> |
|
||||||
{ |
|
||||||
{ "en", "Successfully extracted the update package!" }, |
|
||||||
{ "zh", "解压缩更新包成功!" } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"Failed_Unzipping", new Dictionary<string, string> |
|
||||||
{ |
|
||||||
{ "en", "Failed to extract the update package!" }, |
|
||||||
{ "zh", "解压缩更新包失败!" } |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
"Failed_Upgrade", new Dictionary<string, string> |
|
||||||
{ |
{ |
||||||
{ "en", "Upgrade failed!" }, |
jsonFilePath = "en-US.json"; |
||||||
{ "zh", "升级失败!" } |
|
||||||
} |
} |
||||||
}, |
|
||||||
{ |
var json = File.ReadAllText(jsonFilePath); |
||||||
"Success_Upgrade", new Dictionary<string, string> |
if (!string.IsNullOrEmpty(json)) |
||||||
{ |
{ |
||||||
{ "en", "Upgrade success!" }, |
languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>(); |
||||||
{ "zh", "升级成功!" } |
|
||||||
} |
} |
||||||
}, |
} |
||||||
|
catch (Exception ex) |
||||||
{ |
{ |
||||||
"Information", new Dictionary<string, string> |
Console.WriteLine($"Failed to load language resources: {ex.Message}"); |
||||||
{ |
languageResources = []; // 初始化为空字典 |
||||||
{ "en", "Information" }, |
} |
||||||
{ "zh", "提示" } |
} |
||||||
} |
|
||||||
}, |
/// <summary> |
||||||
|
/// 获取系统当前语言的本地化字符串 |
||||||
|
/// </summary> |
||||||
|
/// <param name="key">要翻译的关键字</param> |
||||||
|
/// <returns>对应语言的本地化字符串,如果没有找到则返回关键字</returns> |
||||||
|
public static string GetLocalizedValue(string key) |
||||||
|
{ |
||||||
|
if (languageResources != null && languageResources.TryGetValue(key, out var translation)) |
||||||
{ |
{ |
||||||
"Restart_v2rayN", new Dictionary<string, string> |
return translation; |
||||||
{ |
|
||||||
{ "en", "Start v2rayN, please wait..." }, |
|
||||||
{ "zh", "正在重启,请等待..." } |
|
||||||
} |
|
||||||
} |
} |
||||||
}; |
|
||||||
|
return key; |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"Restart_v2rayN": "Start v2rayN, please wait...", |
||||||
|
"Guidelines": "Please run it from the main application.", |
||||||
|
"Upgrade_File_Not_Found": "Upgrade failed, file not found.", |
||||||
|
"In_Progress": "In progress, please wait...", |
||||||
|
"Try_Terminate_Process": "Try to terminate the v2rayN process.", |
||||||
|
"Failed_Terminate_Process": "Failed to terminate the v2rayN.Close it manually,or the upgrade may fail.", |
||||||
|
"Start_Unzipping": "Start extracting the update package.", |
||||||
|
"Success_Unzipping": "Successfully extracted the update package!", |
||||||
|
"Failed_Unzipping": "Failed to extract the update package!", |
||||||
|
"Failed_Upgrade": "Upgrade failed!", |
||||||
|
"Success_Upgrade": "Upgrade success!", |
||||||
|
"Information": "Information" |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"Restart_v2rayN": "正在重启,请等待...", |
||||||
|
"Guidelines": "请从主应用运行!", |
||||||
|
"Upgrade_File_Not_Found": "升级失败,文件不存在!", |
||||||
|
"In_Progress": "正在进行中,请等待...", |
||||||
|
"Try_Terminate_Process": "尝试结束 v2rayN 进程...", |
||||||
|
"Failed_Terminate_Process": "请手动关闭正在运行的v2rayN,否则可能升级失败。", |
||||||
|
"Start_Unzipping": "开始解压缩更新包...", |
||||||
|
"Success_Unzipping": "解压缩更新包成功!", |
||||||
|
"Failed_Unzipping": "解压缩更新包失败!", |
||||||
|
"Failed_Upgrade": "升级失败!", |
||||||
|
"Success_Upgrade": "升级成功!", |
||||||
|
"Information": "提示" |
||||||
|
} |
Loading…
Reference in new issue