mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-15 17:30:27 +08:00
feat: 允许手动指定WPFGUI中干员名称显示语言 (#10310)
This commit is contained in:
@@ -411,6 +411,7 @@ Only supports Official(CN) and Bilibili server. Login account is not supported.<
|
||||
<system:String x:Key="OperNameLanguage">Operator display language</system:String>
|
||||
<system:String x:Key="OperNameLanguageMAA">Follow MAA</system:String>
|
||||
<system:String x:Key="OperNameLanguageClient">Follow game client</system:String>
|
||||
<system:String x:Key="OperNameLanguageForce">Force use of specified language</system:String>
|
||||
<system:String x:Key="Light">Light</system:String>
|
||||
<system:String x:Key="Dark">Dark</system:String>
|
||||
<system:String x:Key="SyncWithOs">Sync with OS</system:String>
|
||||
|
||||
@@ -410,6 +410,7 @@
|
||||
<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="OperNameLanguageForce">指定された言語を強制的に使用する</system:String>
|
||||
<system:String x:Key="Light">ライトモード</system:String>
|
||||
<system:String x:Key="Dark">ダークモード</system:String>
|
||||
<system:String x:Key="SyncWithOs">OSと同期する</system:String>
|
||||
|
||||
@@ -410,6 +410,7 @@ OF-1을 해금하지 않았다면 선택하지 말아 주세요.</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="OperNameLanguageForce">지정된 언어를 강제로 사용</system:String>
|
||||
<system:String x:Key="Light">라이트</system:String>
|
||||
<system:String x:Key="Dark">다크</system:String>
|
||||
<system:String x:Key="SyncWithOs">시스템 연동</system:String>
|
||||
|
||||
@@ -411,6 +411,7 @@
|
||||
<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="OperNameLanguageForce">强制使用指定语言</system:String>
|
||||
<system:String x:Key="Light">亮色</system:String>
|
||||
<system:String x:Key="Dark">暗色</system:String>
|
||||
<system:String x:Key="SyncWithOs">与系统同步</system:String>
|
||||
|
||||
@@ -401,6 +401,7 @@
|
||||
<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="OperNameLanguageForce">強制使用指定語言</system:String>
|
||||
<system:String x:Key="Light">亮色</system:String>
|
||||
<system:String x:Key="Dark">暗色</system:String>
|
||||
<system:String x:Key="SyncWithOs">與系統同步</system:String>
|
||||
|
||||
@@ -409,7 +409,8 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
if (json.TryGetValue("buff", out var buffValue))
|
||||
{
|
||||
string buffLog = LocalizationHelper.GetString("DirectiveECTerm");
|
||||
AddLog(buffLog + DataHelper.GetLocalizedCharacterName((string?)buffValue), UiLogColor.Message, showTime: false);
|
||||
string? localizedBuffName = DataHelper.GetLocalizedCharacterName((string?)buffValue);
|
||||
AddLog(buffLog + (string.IsNullOrEmpty(localizedBuffName) ? (string?)buffValue : localizedBuffName), UiLogColor.Message, showTime: false);
|
||||
}
|
||||
|
||||
if (json.TryGetValue("tool_men", out var toolMenValue))
|
||||
|
||||
@@ -514,8 +514,8 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
/// <summary>
|
||||
/// 未实装干员,但在battle_data中,
|
||||
/// </summary>
|
||||
private static readonly HashSet<string> _virtuallyOpers = new HashSet<string>
|
||||
{
|
||||
private static readonly HashSet<string?> _virtuallyOpers =
|
||||
[
|
||||
"char_504_rguard",
|
||||
"char_505_rcast",
|
||||
"char_506_rmedic",
|
||||
@@ -527,8 +527,8 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
"char_509_acast",
|
||||
"char_508_aguard",
|
||||
"char_1001_amiya2",
|
||||
"char_1037_amiya3",
|
||||
};
|
||||
"char_1037_amiya3"
|
||||
];
|
||||
|
||||
private string _operBoxInfo = LocalizationHelper.GetString("OperBoxRecognitionTip");
|
||||
|
||||
@@ -585,11 +585,6 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
{
|
||||
get
|
||||
{
|
||||
if (OperBoxDataArray == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (_operBoxPotential != null)
|
||||
{
|
||||
return _operBoxPotential;
|
||||
@@ -612,39 +607,26 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
|
||||
public bool OperBoxParse(JObject details)
|
||||
{
|
||||
var operBoxes = (JArray)details["all_opers"];
|
||||
var operBoxes = (JArray?)details["all_opers"];
|
||||
|
||||
if (operBoxes == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
List<Tuple<string, int>> operHave = [];
|
||||
List<Tuple<string, int>> operNotHave = [];
|
||||
|
||||
string localizedName = ConfigurationHelper.GetValue(ConfigurationKeys.OperNameLanguage, string.Empty) == "OperNameLanguageClient" ?
|
||||
ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty) switch
|
||||
{
|
||||
"Official" => "name",
|
||||
"Bilibili" => "name",
|
||||
"YoStarJP" => "name_jp",
|
||||
"YoStarKR" => "name_kr",
|
||||
"txwy" => "name_tw",
|
||||
_ => "name_en",
|
||||
} : ConfigurationHelper.GetValue(ConfigurationKeys.Localization, string.Empty) switch
|
||||
{
|
||||
"zh-cn" => "name",
|
||||
"ja-jp" => "name_jp",
|
||||
"ko-kr" => "name_kr",
|
||||
"zh-tw" => "name_tw",
|
||||
_ => "name_en",
|
||||
};
|
||||
|
||||
foreach (JObject operBox in operBoxes.Cast<JObject>())
|
||||
{
|
||||
var tuple = new Tuple<string, int>((string)operBox[localizedName], (int)operBox["rarity"]);
|
||||
var tuple = new Tuple<string, int>(DataHelper.GetLocalizedCharacterName((string?)operBox["name"]) ?? "???", (int)(operBox["rarity"] ?? -1));
|
||||
|
||||
if (_virtuallyOpers.Contains((string)operBox["id"]))
|
||||
if (_virtuallyOpers.Contains((string?)operBox["id"]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((bool)operBox["own"])
|
||||
if ((bool)(operBox["own"] ?? false))
|
||||
{
|
||||
/*已拥有干员*/
|
||||
operHave.Add(tuple);
|
||||
@@ -688,13 +670,13 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
newlineFlag = 0;
|
||||
}
|
||||
|
||||
bool done = (bool)details["done"];
|
||||
bool done = (bool)(details["done"] ?? false);
|
||||
if (done)
|
||||
{
|
||||
OperBoxInfo = LocalizationHelper.GetString("IdentificationCompleted") + "\n" + LocalizationHelper.GetString("OperBoxRecognitionTip");
|
||||
OperBoxResult = string.Format(LocalizationHelper.GetString("OperBoxRecognitionResult"), operNotHave.Count, operNotHaveNames, operHave.Count, operHaveNames);
|
||||
OperBoxExportData = details["own_opers"].ToString();
|
||||
OperBoxDataArray = (JArray)details["own_opers"];
|
||||
OperBoxExportData = details["own_opers"]?.ToString() ?? string.Empty;
|
||||
OperBoxDataArray = (JArray)(details["own_opers"] ?? new JArray());
|
||||
OperBoxDone = true;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -4572,9 +4572,9 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
public List<CombinedData> LanguageList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the list of operator name language settings
|
||||
/// Gets or sets the list of operator name language settings
|
||||
/// </summary>
|
||||
public List<CombinedData> OperNameLanguageModeList { get; } =
|
||||
public List<CombinedData> OperNameLanguageModeList { get; set; } =
|
||||
[
|
||||
new() { Display = LocalizationHelper.GetString("OperNameLanguageMAA"), Value = "OperNameLanguageMAA" },
|
||||
new() { Display = LocalizationHelper.GetString("OperNameLanguageClient"), Value = "OperNameLanguageClient" }
|
||||
@@ -4926,15 +4926,32 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
{ "txwy", "zh-tw" },
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Opername display language, can set force display when it was set as "OperNameLanguageForce.en-us"
|
||||
/// </summary>
|
||||
private string _operNameLanguage = ConfigurationHelper.GetValue(ConfigurationKeys.OperNameLanguage, "OperNameLanguageMAA");
|
||||
|
||||
public string OperNameLanguage
|
||||
{
|
||||
get => _operNameLanguage;
|
||||
get
|
||||
{
|
||||
if (!_operNameLanguage.Contains('.'))
|
||||
{
|
||||
return _operNameLanguage;
|
||||
}
|
||||
|
||||
if (_operNameLanguage.Split('.')[0] != "OperNameLanguageForce" || !LocalizationHelper.SupportedLanguages.ContainsKey(_operNameLanguage.Split('.')[1]))
|
||||
{
|
||||
return _operNameLanguage;
|
||||
}
|
||||
|
||||
OperNameLanguageModeList.Add(new CombinedData { Display = LocalizationHelper.GetString("OperNameLanguageForce"), Value = "OperNameLanguageForce" });
|
||||
return "OperNameLanguageForce";
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (value == _operNameLanguage)
|
||||
if (value == _operNameLanguage.Split('.')[0])
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -4981,7 +4998,17 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
{
|
||||
if (_operNameLanguage == "OperNameLanguageClient")
|
||||
{
|
||||
return _clientLanguageMapper[ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty)];
|
||||
return _clientLanguageMapper[_clientType];
|
||||
}
|
||||
|
||||
if (!_operNameLanguage.Contains('.'))
|
||||
{
|
||||
return _language;
|
||||
}
|
||||
|
||||
if (_operNameLanguage.Split('.')[0] == "OperNameLanguageForce" && LocalizationHelper.SupportedLanguages.ContainsKey(_operNameLanguage.Split('.')[1]))
|
||||
{
|
||||
return _operNameLanguage.Split('.')[1];
|
||||
}
|
||||
|
||||
return _language;
|
||||
|
||||
Reference in New Issue
Block a user