refactor(i18n): take language labels from culture native names

This commit is contained in:
yyc12345 committed 2026-10-05 15:42:53 +08:00
1 parent 506fb4b2f1
commit 6b5a59cd87
4 files changed
+12 -30

No files matched your search

-9
View File
@@ -292,15 +292,6 @@
<data name="Settings_Language_RestartNotice" xml:space="preserve"> <data name="Settings_Language_RestartNotice" xml:space="preserve">
<value>再起動後に有効になります</value> <value>再起動後に有効になります</value>
</data> </data>
<data name="Settings_LanguageEnglish" xml:space="preserve">
<value>English</value>
</data>
<data name="Settings_LanguageChinese" xml:space="preserve">
<value>简体中文</value>
</data>
<data name="Settings_LanguageJapanese" xml:space="preserve">
<value>日本語</value>
</data>
<data name="Settings_Theme" xml:space="preserve"> <data name="Settings_Theme" xml:space="preserve">
<value>テーマ</value> <value>テーマ</value>
</data> </data>
-9
View File
@@ -292,15 +292,6 @@
<data name="Settings_Language_RestartNotice" xml:space="preserve"> <data name="Settings_Language_RestartNotice" xml:space="preserve">
<value>Takes effect after restart</value> <value>Takes effect after restart</value>
</data> </data>
<data name="Settings_LanguageEnglish" xml:space="preserve">
<value>English</value>
</data>
<data name="Settings_LanguageChinese" xml:space="preserve">
<value>简体中文</value>
</data>
<data name="Settings_LanguageJapanese" xml:space="preserve">
<value>日本語</value>
</data>
<data name="Settings_Theme" xml:space="preserve"> <data name="Settings_Theme" xml:space="preserve">
<value>Theme</value> <value>Theme</value>
</data> </data>
@@ -292,15 +292,6 @@
<data name="Settings_Language_RestartNotice" xml:space="preserve"> <data name="Settings_Language_RestartNotice" xml:space="preserve">
<value>重启后生效</value> <value>重启后生效</value>
</data> </data>
<data name="Settings_LanguageEnglish" xml:space="preserve">
<value>English</value>
</data>
<data name="Settings_LanguageChinese" xml:space="preserve">
<value>简体中文</value>
</data>
<data name="Settings_LanguageJapanese" xml:space="preserve">
<value>日本語</value>
</data>
<data name="Settings_Theme" xml:space="preserve"> <data name="Settings_Theme" xml:space="preserve">
<value>主题</value> <value>主题</value>
</data> </data>
@@ -1,3 +1,5 @@
using System.Globalization;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using YKanBan.Storage.AppData; using YKanBan.Storage.AppData;
@@ -24,9 +26,9 @@ public sealed partial class SettingsDialogViewModel : ViewModelBase {
Languages = Languages =
[ [
new OptionItem(AppConfig.DefaultLanguage, Resources.Settings_LanguageEnglish), LanguageOption(AppConfig.DefaultLanguage),
new OptionItem("zh-Hans", Resources.Settings_LanguageChinese), LanguageOption("zh-Hans"),
new OptionItem("ja", Resources.Settings_LanguageJapanese), LanguageOption("ja"),
]; ];
selectedLanguage = Languages.FirstOrDefault(option => (string)option.Value == _config.Language) selectedLanguage = Languages.FirstOrDefault(option => (string)option.Value == _config.Language)
?? Languages[0]; ?? Languages[0];
@@ -127,4 +129,11 @@ public sealed partial class SettingsDialogViewModel : ViewModelBase {
/// </summary> /// </summary>
private void RefreshRestartNotice() => private void RefreshRestartNotice() =>
RestartNoticeVisible = SelectedLanguage is not null && (string)SelectedLanguage.Value != _startupLanguage; RestartNoticeVisible = SelectedLanguage is not null && (string)SelectedLanguage.Value != _startupLanguage;
/// <summary>
/// Builds a language option whose label is the culture's native name, so the
/// language designates itself identically under every UI culture.
/// </summary>
/// <param name="code">The language code stored in app.json.</param>
private static OptionItem LanguageOption(string code) => new(code, new CultureInfo(code).NativeName);
} }