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()
{