mirror of https://github.com/2dust/v2rayN
Slnanx
4 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 |
||||
{ |
||||
public class LocalizationHelper |
||||
{ |
||||
/// <summary> |
||||
/// 获取系统当前语言的本地化字符串 |
||||
/// </summary> |
||||
/// <param name="key">要翻译的关键字</param> |
||||
/// <returns>对应语言的本地化字符串,如果没有找到则返回关键字</returns> |
||||
public static string GetLocalizedValue(string key) |
||||
{ |
||||
// 定义支持的语言 |
||||
HashSet<string> supportedLanguages = ["zh", "en"]; |
||||
private static Dictionary<string, string> languageResources = new(); |
||||
|
||||
// 获取当前系统语言的 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)) |
||||
static LocalizationHelper() |
||||
{ |
||||
return translation; |
||||
} |
||||
} |
||||
|
||||
// 如果未找到翻译,返回关键字本身 |
||||
return key; |
||||
// 加载语言资源 |
||||
LoadLanguageResources(); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// 存储不同语言的本地化资源 |
||||
/// 加载外部 JSON 文件中的语言资源 |
||||
/// </summary> |
||||
public static Dictionary<string, Dictionary<string, string>> languageResources = new() |
||||
private static void LoadLanguageResources() |
||||
{ |
||||
try |
||||
{ |
||||
"Guidelines", new Dictionary<string, string> |
||||
{ |
||||
{ "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..." }, |
||||
{ "zh", "正在进行中,请等待..." } |
||||
} |
||||
}, |
||||
{ |
||||
"Try_Terminate_Process", new Dictionary<string, string> |
||||
string currentLanguage = CultureInfo.CurrentCulture.Name; |
||||
if (currentLanguage != "zh-CN" && currentLanguage != "en-US") |
||||
{ |
||||
{ "en", "Try to terminate the v2rayN process." }, |
||||
{ "zh", "尝试结束 v2rayN 进程..." } |
||||
currentLanguage = "en-US"; |
||||
} |
||||
}, |
||||
{ |
||||
"Failed_Terminate_Process", new Dictionary<string, string> |
||||
|
||||
string jsonFilePath = $"{currentLanguage}.json"; |
||||
if (!File.Exists(jsonFilePath)) |
||||
{ |
||||
{ "en", "Failed to terminate the v2rayN.Close it manually,or the upgrade may fail." }, |
||||
{ "zh", "请手动关闭正在运行的v2rayN,否则可能升级失败。" } |
||||
jsonFilePath = "en-US.json"; |
||||
} |
||||
}, |
||||
{ |
||||
"Start_Unzipping", new Dictionary<string, string> |
||||
|
||||
var json = File.ReadAllText(jsonFilePath); |
||||
if (!string.IsNullOrEmpty(json)) |
||||
{ |
||||
{ "en", "Start extracting the update package." }, |
||||
{ "zh", "开始解压缩更新包..." } |
||||
languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>(); |
||||
} |
||||
}, |
||||
{ |
||||
"Success_Unzipping", new Dictionary<string, string> |
||||
{ |
||||
{ "en", "Successfully extracted the update package!" }, |
||||
{ "zh", "解压缩更新包成功!" } |
||||
} |
||||
}, |
||||
{ |
||||
"Failed_Unzipping", new Dictionary<string, string> |
||||
catch (Exception ex) |
||||
{ |
||||
{ "en", "Failed to extract the update package!" }, |
||||
{ "zh", "解压缩更新包失败!" } |
||||
Console.WriteLine($"Failed to load language resources: {ex.Message}"); |
||||
languageResources = []; // 初始化为空字典 |
||||
} |
||||
}, |
||||
{ |
||||
"Failed_Upgrade", new Dictionary<string, string> |
||||
{ |
||||
{ "en", "Upgrade failed!" }, |
||||
{ "zh", "升级失败!" } |
||||
} |
||||
}, |
||||
{ |
||||
"Success_Upgrade", new Dictionary<string, string> |
||||
{ |
||||
{ "en", "Upgrade success!" }, |
||||
{ "zh", "升级成功!" } |
||||
} |
||||
}, |
||||
{ |
||||
"Information", new Dictionary<string, string> |
||||
{ |
||||
{ "en", "Information" }, |
||||
{ "zh", "提示" } |
||||
} |
||||
}, |
||||
|
||||
/// <summary> |
||||
/// 获取系统当前语言的本地化字符串 |
||||
/// </summary> |
||||
/// <param name="key">要翻译的关键字</param> |
||||
/// <returns>对应语言的本地化字符串,如果没有找到则返回关键字</returns> |
||||
public static string GetLocalizedValue(string key) |
||||
{ |
||||
"Restart_v2rayN", new Dictionary<string, string> |
||||
if (languageResources != null && languageResources.TryGetValue(key, out var translation)) |
||||
{ |
||||
{ "en", "Start v2rayN, please wait..." }, |
||||
{ "zh", "正在重启,请等待..." } |
||||
return translation; |
||||
} |
||||
|
||||
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