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);
}