feat: 允许选择WPFGUI中的干员名称显示语言

This commit is contained in:
ManicSteiner
2024-08-04 23:50:30 +08:00
parent 2dceadbd7d
commit 46abd60d9d
5 changed files with 71 additions and 2 deletions

View File

@@ -30,6 +30,7 @@ namespace MaaWpfGui.Constants
public const string ConfigurationCron = "Cron";
public const string Localization = "GUI.Localization";
public const string OperNameLanguage = "GUI.OperNameLanguage";
public const string UseTray = "GUI.UseTray";
public const string MinimizeToTray = "GUI.MinimizeToTray";
public const string HideCloseButton = "GUI.HideCloseButton";

View File

@@ -100,7 +100,7 @@ namespace MaaWpfGui.Helper
return null;
}
language ??= Instances.SettingsViewModel.Language;
language ??= Instances.SettingsViewModel.OperNameLocalization;
return language switch
{

View File

@@ -404,6 +404,9 @@
<system:String x:Key="AutoRoguelike">自动肉鸽</system:String>
<system:String x:Key="ReclamationAlgorithm">生息演算·沙中之火</system:String>
<system:String x:Key="ReclamationAlgorithm2">生息演算·沙洲遗闻</system:String>
<system:String x:Key="OperNameLanguage">干员名称显示语言</system:String>
<system:String x:Key="OperNameLanguageMAA">跟随MAA</system:String>
<system:String x:Key="OperNameLanguageClient">跟随游戏客户端</system:String>
<system:String x:Key="Light">亮色</system:String>
<system:String x:Key="Dark">暗色</system:String>
<system:String x:Key="SyncWithOs">与系统同步</system:String>

View File

@@ -1936,7 +1936,7 @@ namespace MaaWpfGui.ViewModels.UI
continue;
}
var localizedName = DataHelper.GetLocalizedCharacterName(name, _language);
var localizedName = DataHelper.GetLocalizedCharacterName(name, OperNameLocalization);
if (!string.IsNullOrEmpty(localizedName) && !(_clientType.Contains("YoStar") && DataHelper.GetLocalizedCharacterName(name, "en-us") == DataHelper.GetLocalizedCharacterName(name, "zh-cn")))
{
roguelikeCoreCharList.Add(localizedName);
@@ -4428,6 +4428,15 @@ namespace MaaWpfGui.ViewModels.UI
/// </summary>
public List<CombinedData> LanguageList { get; set; }
/// <summary>
/// Gets the list of operator name language settings
/// </summary>
public List<CombinedData> OperNameLanguageModeList { get; } =
[
new() { Display = LocalizationHelper.GetString("OperNameLanguageMAA"), Value = "OperNameLanguageMAA" },
new() { Display = LocalizationHelper.GetString("OperNameLanguageClient"), Value = "OperNameLanguageClient" }
];
/// <summary>
/// Gets the list of dark mode.
/// </summary>
@@ -4763,6 +4772,51 @@ namespace MaaWpfGui.ViewModels.UI
}
}
private static readonly Dictionary<string, string> _clientLanguageMapper = new()
{
{ string.Empty, "zh-cn" },
{ "Official", "zh-cn" },
{ "Bilibili", "zh-cn" },
{ "YoStarEN", "en-us" },
{ "YoStarJP", "ja-jp" },
{ "YoStarKR", "ko-kr" },
{ "txwy", "zh-tw" },
};
private string _operNameLanguage = ConfigurationHelper.GetValue(ConfigurationKeys.OperNameLanguage, "OperNameLanguageMAA");
public string OperNameLanguage
{
get => _operNameLanguage;
set
{
switch (value)
{
case "OperNameLanguageClient":
ConfigurationHelper.SetValue(ConfigurationKeys.OperNameLanguage, value);
break;
case "OperNameLanguageMAA":
default:
ConfigurationHelper.SetValue(ConfigurationKeys.OperNameLanguage, "OperNameLanguageMAA");
break;
}
}
}
public string OperNameLocalization
{
get
{
if (_operNameLanguage == "OperNameLanguageClient")
{
return _clientLanguageMapper[ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty)];
}
return _language;
}
}
#endregion
#region HotKey

View File

@@ -93,6 +93,17 @@
SelectedValue="{Binding Language}"
SelectedValuePath="Value"
Style="{StaticResource ComboBoxExtend}" />
<ComboBox
Width="180"
Margin="10"
HorizontalAlignment="Right"
VerticalAlignment="Center"
hc:InfoElement.Title="{DynamicResource OperNameLanguage}"
DisplayMemberPath="Display"
ItemsSource="{Binding OperNameLanguageModeList}"
SelectedValue="{Binding OperNameLanguage}"
SelectedValuePath="Value"
Style="{StaticResource ComboBoxExtend}" />
<ComboBox
Width="180"
Margin="10"