mirror of
https://github.com/2dust/v2rayN.git
synced 2025-08-25 20:36:55 +00:00
Merge branch '2dust:master' into master
This commit is contained in:
commit
3a2837b223
6 changed files with 29 additions and 28 deletions
|
@ -8,5 +8,10 @@
|
||||||
<Copyright>Copyright © 2017-2024 (GPLv3)</Copyright>
|
<Copyright>Copyright © 2017-2024 (GPLv3)</Copyright>
|
||||||
<FileVersion>1.3.0</FileVersion>
|
<FileVersion>1.3.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Assets\en-US.json" />
|
||||||
|
<EmbeddedResource Include="Assets\zh-CN.json" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
|
@ -1,11 +1,12 @@
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace AmazTool
|
namespace AmazTool
|
||||||
{
|
{
|
||||||
public class LocalizationHelper
|
public class LocalizationHelper
|
||||||
{
|
{
|
||||||
private static Dictionary<string, string> languageResources = new();
|
private static Dictionary<string, string> _languageResources = [];
|
||||||
|
|
||||||
static LocalizationHelper()
|
static LocalizationHelper()
|
||||||
{
|
{
|
||||||
|
@ -13,51 +14,46 @@ namespace AmazTool
|
||||||
LoadLanguageResources();
|
LoadLanguageResources();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 加载外部 JSON 文件中的语言资源
|
|
||||||
/// </summary>
|
|
||||||
private static void LoadLanguageResources()
|
private static void LoadLanguageResources()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string currentLanguage = CultureInfo.CurrentCulture.Name;
|
var currentLanguage = CultureInfo.CurrentCulture.Name;
|
||||||
if (currentLanguage != "zh-CN" && currentLanguage != "en-US")
|
if (currentLanguage != "zh-CN" && currentLanguage != "en-US")
|
||||||
{
|
{
|
||||||
currentLanguage = "en-US";
|
currentLanguage = "en-US";
|
||||||
}
|
}
|
||||||
|
|
||||||
string jsonFilePath = $"{currentLanguage}.json";
|
var resourceName = $"AmazTool.Assets.{currentLanguage}.json";
|
||||||
if (!File.Exists(jsonFilePath))
|
var assembly = Assembly.GetExecutingAssembly();
|
||||||
{
|
|
||||||
jsonFilePath = "en-US.json";
|
|
||||||
}
|
|
||||||
|
|
||||||
var json = File.ReadAllText(jsonFilePath);
|
using var stream = assembly.GetManifestResourceStream(resourceName);
|
||||||
|
if (stream == null) return;
|
||||||
|
|
||||||
|
using StreamReader reader = new(stream);
|
||||||
|
var json = reader.ReadToEnd();
|
||||||
if (!string.IsNullOrEmpty(json))
|
if (!string.IsNullOrEmpty(json))
|
||||||
{
|
{
|
||||||
languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
|
_languageResources = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Failed to load language resources: {ex.Message}");
|
Console.WriteLine($"Unexpected error occurred: {ex.Message}");
|
||||||
languageResources = []; // 初始化为空字典
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取系统当前语言的本地化字符串
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="key">要翻译的关键字</param>
|
|
||||||
/// <returns>对应语言的本地化字符串,如果没有找到则返回关键字</returns>
|
|
||||||
public static string GetLocalizedValue(string key)
|
public static string GetLocalizedValue(string key)
|
||||||
{
|
{
|
||||||
if (languageResources != null && languageResources.TryGetValue(key, out var translation))
|
return _languageResources.TryGetValue(key, out var translation) ? translation : key;
|
||||||
{
|
|
||||||
return translation;
|
|
||||||
}
|
|
||||||
|
|
||||||
return key;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -356,7 +356,7 @@ namespace v2rayN.Desktop.Views
|
||||||
item2.Width = new DataGridLength(item.Width, DataGridLengthUnitType.Pixel);
|
item2.Width = new DataGridLength(item.Width, DataGridLengthUnitType.Pixel);
|
||||||
item2.DisplayIndex = displayIndex++;
|
item2.DisplayIndex = displayIndex++;
|
||||||
}
|
}
|
||||||
if (item.Name.StartsWith("to"))
|
if (item.Name.ToLower().StartsWith("to"))
|
||||||
{
|
{
|
||||||
if (!_config.GuiItem.EnableStatistics)
|
if (!_config.GuiItem.EnableStatistics)
|
||||||
{
|
{
|
||||||
|
|
|
@ -338,7 +338,7 @@ namespace v2rayN.Views
|
||||||
item2.Width = item.Width;
|
item2.Width = item.Width;
|
||||||
item2.DisplayIndex = displayIndex++;
|
item2.DisplayIndex = displayIndex++;
|
||||||
}
|
}
|
||||||
if (item.Name.StartsWith("to"))
|
if (item.Name.ToLower().StartsWith("to"))
|
||||||
{
|
{
|
||||||
if (!_config.GuiItem.EnableStatistics)
|
if (!_config.GuiItem.EnableStatistics)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue