Browse Source

fix (#6099)

* fix

* fix

* 移除自述

* 改用单例模式,避免多次初始化。

* 小修正

* 修正

* 更正自述

* 应该完成了
pull/6101/head
Slnanx 5 days ago committed by GitHub
parent
commit
2e32de2fbb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 136
      v2rayN/AmazTool/LocalizationHelper.cs
  2. 5
      v2rayN/AmazTool/Program.cs
  3. 7
      v2rayN/AmazTool/UpgradeApp.cs
  4. 14
      v2rayN/AmazTool/en-US.json
  5. 14
      v2rayN/AmazTool/zh-CN.json

136
v2rayN/AmazTool/LocalizationHelper.cs

@ -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 两字母代码 static LocalizationHelper()
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; // 加载语言资源
} LoadLanguageResources();
}
// 如果未找到翻译,返回关键字本身
return key;
} }
/// <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..." },
{ "zh", "正在进行中,请等待..." }
}
},
{
"Try_Terminate_Process", new Dictionary<string, string>
{ {
{ "en", "Try to terminate the v2rayN process." }, currentLanguage = "en-US";
{ "zh", "尝试结束 v2rayN 进程..." }
} }
},
{ string jsonFilePath = $"{currentLanguage}.json";
"Failed_Terminate_Process", new Dictionary<string, string> if (!File.Exists(jsonFilePath))
{ {
{ "en", "Failed to terminate the v2rayN.Close it manually,or the upgrade may fail." }, jsonFilePath = "en-US.json";
{ "zh", "请手动关闭正在运行的v2rayN,否则可能升级失败。" }
} }
},
{ var json = File.ReadAllText(jsonFilePath);
"Start_Unzipping", new Dictionary<string, string> if (!string.IsNullOrEmpty(json))
{ {
{ "en", "Start extracting the update package." }, languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
{ "zh", "开始解压缩更新包..." }
} }
},
{
"Success_Unzipping", new Dictionary<string, string>
{
{ "en", "Successfully extracted the update package!" },
{ "zh", "解压缩更新包成功!" }
} }
}, catch (Exception ex)
{
"Failed_Unzipping", new Dictionary<string, string>
{ {
{ "en", "Failed to extract the update package!" }, Console.WriteLine($"Failed to load language resources: {ex.Message}");
{ "zh", "解压缩更新包失败!" } languageResources = []; // 初始化为空字典
} }
},
{
"Failed_Upgrade", new Dictionary<string, string>
{
{ "en", "Upgrade failed!" },
{ "zh", "升级失败!" }
}
},
{
"Success_Upgrade", new Dictionary<string, string>
{
{ "en", "Upgrade success!" },
{ "zh", "升级成功!" }
} }
},
{ /// <summary>
"Information", new Dictionary<string, string> /// 获取系统当前语言的本地化字符串
{ /// </summary>
{ "en", "Information" }, /// <param name="key">要翻译的关键字</param>
{ "zh", "提示" } /// <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..." }, return translation;
{ "zh", "正在重启,请等待..." }
} }
return key;
} }
};
} }
} }

5
v2rayN/AmazTool/Program.cs

@ -1,7 +1,4 @@
using System; namespace AmazTool
using System.Threading;
namespace AmazTool
{ {
internal static class Program internal static class Program
{ {

7
v2rayN/AmazTool/UpgradeApp.cs

@ -1,9 +1,6 @@
using System; using System.Diagnostics;
using System.Diagnostics;
using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Text; using System.Text;
using System.Threading;
namespace AmazTool namespace AmazTool
{ {
@ -11,7 +8,7 @@ namespace AmazTool
{ {
public static void Upgrade(string fileName) public static void Upgrade(string fileName)
{ {
Console.WriteLine(fileName); Console.WriteLine($"{LocalizationHelper.GetLocalizedValue("Start_Unzipping")}\n{fileName}");
Thread.Sleep(9000); Thread.Sleep(9000);

14
v2rayN/AmazTool/en-US.json

@ -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"
}

14
v2rayN/AmazTool/zh-CN.json

@ -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…
Cancel
Save