diff --git a/v2rayN/AmazTool/LocalizationHelper.cs b/v2rayN/AmazTool/LocalizationHelper.cs new file mode 100644 index 00000000..116fe465 --- /dev/null +++ b/v2rayN/AmazTool/LocalizationHelper.cs @@ -0,0 +1,131 @@ +using System.Collections.Generic; +using System.Globalization; + +namespace AmazTool +{ + public class LocalizationHelper + { + /// + /// 获取系统当前语言的本地化字符串 + /// + /// 要翻译的关键字 + /// 对应语言的本地化字符串,如果没有找到则返回关键字 + public static string GetLocalizedValue(string key) + { + // 定义支持的语言 + HashSet 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; + } + } + + // 如果未找到翻译,返回关键字本身 + return key; + } + + /// + /// 存储不同语言的本地化资源 + /// + public static Dictionary> languageResources = new() + { + { + "Guidelines", new Dictionary + { + { "en", "Please run it from the main application." }, + { "zh", "请从主应用运行!" } + } + }, + { + "Upgrade_File_Not_Found", new Dictionary + { + { "en", "Upgrade failed, file not found." }, + { "zh", "升级失败,文件不存在!" } + } + }, + { + "In_Progress", new Dictionary + { + { "en", "In progress, please wait..." }, + { "zh", "正在进行中,请等待..." } + } + }, + { + "Try_Terminate_Process", new Dictionary + { + { "en", "Try to terminate the v2rayN process." }, + { "zh", "尝试结束 v2rayN 进程..." } + } + }, + { + "Failed_Terminate_Process", new Dictionary + { + { "en", "Failed to terminate the v2rayN.Close it manually,or the upgrade may fail." }, + { "zh", "请手动关闭正在运行的v2rayN,否则可能升级失败。" } + } + }, + { + "Start_Unzipping", new Dictionary + { + { "en", "Start extracting the update package." }, + { "zh", "开始解压缩更新包..." } + } + }, + { + "Success_Unzipping", new Dictionary + { + { "en", "Successfully extracted the update package!" }, + { "zh", "解压缩更新包成功!" } + } + }, + { + "Failed_Unzipping", new Dictionary + { + { "en", "Failed to extract the update package!" }, + { "zh", "解压缩更新包失败!" } + } + }, + { + "Failed_Upgrade", new Dictionary + { + { "en", "Upgrade failed!" }, + { "zh", "升级失败!" } + } + }, + { + "Success_Upgrade", new Dictionary + { + { "en", "Upgrade success!" }, + { "zh", "升级成功!" } + } + }, + { + "Information", new Dictionary + { + { "en", "Information" }, + { "zh", "提示" } + } + }, + { + "Restart_v2rayN", new Dictionary + { + { "en", "Start v2rayN, please wait..." }, + { "zh", "正在重启,请等待..." } + } + } + }; + } +} diff --git a/v2rayN/AmazTool/Program.cs b/v2rayN/AmazTool/Program.cs index 3f61464b..74725033 100644 --- a/v2rayN/AmazTool/Program.cs +++ b/v2rayN/AmazTool/Program.cs @@ -1,4 +1,7 @@ -namespace AmazTool +using System; +using System.Threading; + +namespace AmazTool { internal static class Program { @@ -10,7 +13,7 @@ { if (args.Length == 0) { - Console.WriteLine("Please run it from the main application.(请从主应用运行)"); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Guidelines")); Thread.Sleep(5000); return; } diff --git a/v2rayN/AmazTool/UpgradeApp.cs b/v2rayN/AmazTool/UpgradeApp.cs index 852f18da..afab6cba 100644 --- a/v2rayN/AmazTool/UpgradeApp.cs +++ b/v2rayN/AmazTool/UpgradeApp.cs @@ -1,6 +1,9 @@ -using System.Diagnostics; +using System; +using System.Diagnostics; +using System.IO; using System.IO.Compression; using System.Text; +using System.Threading; namespace AmazTool { @@ -9,17 +12,16 @@ namespace AmazTool public static void Upgrade(string fileName) { Console.WriteLine(fileName); - Console.WriteLine("In progress, please wait...(正在进行中,请等待)"); Thread.Sleep(9000); if (!File.Exists(fileName)) { - Console.WriteLine("Upgrade Failed, File Not Exist(升级失败,文件不存在)."); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Upgrade_File_Not_Found")); return; } - Console.WriteLine("Try to end the process(尝试结束进程)."); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Try_Terminate_Process")); try { var existing = Process.GetProcessesByName(V2rayN); @@ -32,11 +34,10 @@ namespace AmazTool catch (Exception ex) { // Access may be denied without admin right. The user may not be an administrator. - Console.WriteLine("Failed to close v2rayN(关闭v2rayN失败).\n" + - "Close it manually, or the upgrade may fail.(请手动关闭正在运行的v2rayN,否则可能升级失败。\n\n" + ex.StackTrace); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Failed_Terminate_Process") + ex.StackTrace); } - Console.WriteLine("Start extracting files(开始解压文件)."); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Start_Unzipping")); StringBuilder sb = new(); try { @@ -79,16 +80,16 @@ namespace AmazTool } catch (Exception ex) { - Console.WriteLine("Upgrade Failed(升级失败)." + ex.StackTrace); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Failed_Upgrade") + ex.StackTrace); //return; } if (sb.Length > 0) { - Console.WriteLine("Upgrade Failed(升级失败)." + sb.ToString()); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Failed_Upgrade") + sb.ToString()); //return; } - Console.WriteLine("Start v2rayN, please wait...(正在重启,请等待)"); + Console.WriteLine(LocalizationHelper.GetLocalizedValue("Restart_v2rayN")); Thread.Sleep(9000); Process process = new() {