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