From 1866a59d12a4f663dd7d1ca0e55223d9496596b8 Mon Sep 17 00:00:00 2001 From: Slnanx Date: Mon, 18 Nov 2024 09:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A8=8B=E5=BA=8F=E5=86=85?= =?UTF-8?q?=E5=B5=8C=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6=20(#6101)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix * fix * 移除自述 * 改用单例模式,避免多次初始化。 * 小修正 * 修正 * 更正自述 * 应该完成了 * 内嵌资源 * Update LocalizationHelper.cs --- v2rayN/AmazTool/LocalizationHelper.cs | 46 +++++++++++++++------------ 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/v2rayN/AmazTool/LocalizationHelper.cs b/v2rayN/AmazTool/LocalizationHelper.cs index 3804564c..839be22e 100644 --- a/v2rayN/AmazTool/LocalizationHelper.cs +++ b/v2rayN/AmazTool/LocalizationHelper.cs @@ -1,11 +1,12 @@ -using System.Globalization; +using System.Globalization; +using System.Reflection; using System.Text.Json; namespace AmazTool { public class LocalizationHelper { - private static Dictionary languageResources = new(); + private static Dictionary languageResources = []; static LocalizationHelper() { @@ -13,9 +14,6 @@ namespace AmazTool LoadLanguageResources(); } - /// - /// 加载外部 JSON 文件中的语言资源 - /// private static void LoadLanguageResources() { try @@ -26,33 +24,39 @@ namespace AmazTool currentLanguage = "en-US"; } - string jsonFilePath = $"{currentLanguage}.json"; - if (!File.Exists(jsonFilePath)) - { - jsonFilePath = "en-US.json"; - } + string resourceName = $"AmazTool.{currentLanguage}.json"; + var assembly = Assembly.GetExecutingAssembly(); - var json = File.ReadAllText(jsonFilePath); - if (!string.IsNullOrEmpty(json)) + using Stream? stream = assembly.GetManifestResourceStream(resourceName); + if (stream != null) { - languageResources = JsonSerializer.Deserialize>(json) ?? new Dictionary(); + using StreamReader reader = new(stream); + + var json = reader.ReadToEnd(); + + if (!string.IsNullOrEmpty(json)) + { + languageResources = JsonSerializer.Deserialize>(json) ?? new Dictionary(); + } } } + catch (IOException ex) + { + Console.WriteLine($"Failed to read language resource file: {ex.Message}"); + } + catch (JsonException ex) + { + Console.WriteLine($"Failed to parse JSON data: {ex.Message}"); + } catch (Exception ex) { - Console.WriteLine($"Failed to load language resources: {ex.Message}"); - languageResources = []; // 初始化为空字典 + Console.WriteLine($"Unexpected error occurred: {ex.Message}"); } } - /// - /// 获取系统当前语言的本地化字符串 - /// - /// 要翻译的关键字 - /// 对应语言的本地化字符串,如果没有找到则返回关键字 public static string GetLocalizedValue(string key) { - if (languageResources != null && languageResources.TryGetValue(key, out var translation)) + if (languageResources.TryGetValue(key, out var translation)) { return translation; }