mirror of https://github.com/2dust/v2rayN
parent
30a838df77
commit
2e32de2fbb
|
@ -1,10 +1,50 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Globalization;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace AmazTool
|
||||
{
|
||||
public class LocalizationHelper
|
||||
{
|
||||
private static Dictionary<string, string> languageResources = new();
|
||||
|
||||
static LocalizationHelper()
|
||||
{
|
||||
// 加载语言资源
|
||||
LoadLanguageResources();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载外部 JSON 文件中的语言资源
|
||||
/// </summary>
|
||||
private static void LoadLanguageResources()
|
||||
{
|
||||
try
|
||||
{
|
||||
string currentLanguage = CultureInfo.CurrentCulture.Name;
|
||||
if (currentLanguage != "zh-CN" && currentLanguage != "en-US")
|
||||
{
|
||||
currentLanguage = "en-US";
|
||||
}
|
||||
|
||||
string jsonFilePath = $"{currentLanguage}.json";
|
||||
if (!File.Exists(jsonFilePath))
|
||||
{
|
||||
jsonFilePath = "en-US.json";
|
||||
}
|
||||
|
||||
var json = File.ReadAllText(jsonFilePath);
|
||||
if (!string.IsNullOrEmpty(json))
|
||||
{
|
||||
languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Failed to load language resources: {ex.Message}");
|
||||
languageResources = []; // 初始化为空字典
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取系统当前语言的本地化字符串
|
||||
/// </summary>
|
||||
|
@ -12,120 +52,12 @@ namespace AmazTool
|
|||
/// <returns>对应语言的本地化字符串,如果没有找到则返回关键字</returns>
|
||||
public static string GetLocalizedValue(string key)
|
||||
{
|
||||
// 定义支持的语言
|
||||
HashSet<string> supportedLanguages = ["zh", "en"];
|
||||
|
||||
// 获取当前系统语言的 ISO 两字母代码
|
||||
string currentLanguage = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
|
||||
|
||||
// 如果当前语言不在支持的语言列表中,默认使用英文
|
||||
if (!supportedLanguages.Contains(currentLanguage))
|
||||
if (languageResources != null && languageResources.TryGetValue(key, out var translation))
|
||||
{
|
||||
currentLanguage = "en";
|
||||
return translation;
|
||||
}
|
||||
|
||||
// 尝试获取对应语言的翻译
|
||||
if (languageResources.TryGetValue(key, out var translations))
|
||||
{
|
||||
if (translations.TryGetValue(currentLanguage, out var translation))
|
||||
{
|
||||
return translation;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果未找到翻译,返回关键字本身
|
||||
return key;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 存储不同语言的本地化资源
|
||||
/// </summary>
|
||||
public static Dictionary<string, Dictionary<string, string>> languageResources = new()
|
||||
{
|
||||
{
|
||||
"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>
|
||||
{
|
||||
{ "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>
|
||||
{
|
||||
{ "en", "Upgrade failed!" },
|
||||
{ "zh", "升级失败!" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"Success_Upgrade", new Dictionary<string, string>
|
||||
{
|
||||
{ "en", "Upgrade success!" },
|
||||
{ "zh", "升级成功!" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"Information", new Dictionary<string, string>
|
||||
{
|
||||
{ "en", "Information" },
|
||||
{ "zh", "提示" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"Restart_v2rayN", new Dictionary<string, string>
|
||||
{
|
||||
{ "en", "Start v2rayN, please wait..." },
|
||||
{ "zh", "正在重启,请等待..." }
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
|
||||
namespace AmazTool
|
||||
namespace AmazTool
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace AmazTool
|
||||
{
|
||||
|
@ -11,8 +8,8 @@ namespace AmazTool
|
|||
{
|
||||
public static void Upgrade(string fileName)
|
||||
{
|
||||
Console.WriteLine(fileName);
|
||||
|
||||
Console.WriteLine($"{LocalizationHelper.GetLocalizedValue("Start_Unzipping")}\n{fileName}");
|
||||
|
||||
Thread.Sleep(9000);
|
||||
|
||||
if (!File.Exists(fileName))
|
||||
|
|
|
@ -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