forked from 2dust/v2rayN
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* fix * fix * 移除自述 * 改用单例模式,避免多次初始化。 * 小修正 * 修正 * 更正自述 * 应该完成了
- Loading branch information
Slnanx
authored
Nov 17, 2024
1 parent
30a838d
commit 2e32de2
Showing
5 changed files
with
72 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"]; | ||
|
||
// 获取当前系统语言的 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; | ||
} | ||
} | ||
private static Dictionary<string, string> languageResources = new(); | ||
|
||
// 如果未找到翻译,返回关键字本身 | ||
return key; | ||
static LocalizationHelper() | ||
{ | ||
// 加载语言资源 | ||
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> | ||
string currentLanguage = CultureInfo.CurrentCulture.Name; | ||
if (currentLanguage != "zh-CN" && currentLanguage != "en-US") | ||
{ | ||
{ "en", "In progress, please wait..." }, | ||
{ "zh", "正在进行中,请等待..." } | ||
currentLanguage = "en-US"; | ||
} | ||
}, | ||
{ | ||
"Try_Terminate_Process", new Dictionary<string, string> | ||
{ | ||
{ "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> | ||
|
||
string jsonFilePath = $"{currentLanguage}.json"; | ||
if (!File.Exists(jsonFilePath)) | ||
{ | ||
{ "en", "Upgrade failed!" }, | ||
{ "zh", "升级失败!" } | ||
jsonFilePath = "en-US.json"; | ||
} | ||
}, | ||
{ | ||
"Success_Upgrade", new Dictionary<string, string> | ||
|
||
var json = File.ReadAllText(jsonFilePath); | ||
if (!string.IsNullOrEmpty(json)) | ||
{ | ||
{ "en", "Upgrade success!" }, | ||
{ "zh", "升级成功!" } | ||
languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>(); | ||
} | ||
}, | ||
} | ||
catch (Exception ex) | ||
{ | ||
"Information", new Dictionary<string, string> | ||
{ | ||
{ "en", "Information" }, | ||
{ "zh", "提示" } | ||
} | ||
}, | ||
Console.WriteLine($"Failed to load language resources: {ex.Message}"); | ||
languageResources = []; // 初始化为空字典 | ||
} | ||
} | ||
|
||
/// <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> | ||
{ | ||
{ "en", "Start v2rayN, please wait..." }, | ||
{ "zh", "正在重启,请等待..." } | ||
} | ||
return translation; | ||
} | ||
}; | ||
|
||
return key; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,4 @@ | ||
using System; | ||
using System.Threading; | ||
|
||
namespace AmazTool | ||
namespace AmazTool | ||
{ | ||
internal static class Program | ||
{ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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": "提示" | ||
} |