diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AppSettingsControl.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AppSettingsControl.xaml index 270fe96..9ce9dff 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AppSettingsControl.xaml +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AppSettingsControl.xaml @@ -9,6 +9,7 @@ xmlns:helper="using:BetterLyrics.WinUI3.Helper" xmlns:local="using:BetterLyrics.WinUI3.Controls" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:models="using:BetterLyrics.WinUI3.Models" xmlns:ui="using:CommunityToolkit.WinUI" mc:Ignorable="d"> @@ -28,14 +29,9 @@ IsExpanded="True"> - + - - + diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/PlaybackSettingsControl.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/PlaybackSettingsControl.xaml index 06f273f..63b9948 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/PlaybackSettingsControl.xaml +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/PlaybackSettingsControl.xaml @@ -230,14 +230,9 @@ - + - - + diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs index e5c2a96..60a14fa 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs @@ -15,7 +15,7 @@ namespace BetterLyrics.WinUI3.Converter { if (value is string langCode) { - return LanguageHelper.SupportedDisplayLanguages.FindIndex(x => x.LanguageTag == langCode); + return LanguageHelper.SupportedDisplayLanguages.FindIndex(x => x.LanguageCode == langCode); } return 0; } @@ -24,7 +24,7 @@ namespace BetterLyrics.WinUI3.Converter { if (value is int index) { - return LanguageHelper.SupportedDisplayLanguages.ElementAt(index).LanguageTag; + return LanguageHelper.SupportedDisplayLanguages.ElementAt(index).LanguageCode; } return ""; } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs index eb1b31d..06aa4d1 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs @@ -1,4 +1,5 @@ using BetterLyrics.WinUI3.Helper; +using BetterLyrics.WinUI3.Models; using NTextCat; using NTextCat.Commons; using System.Collections.Generic; @@ -13,80 +14,88 @@ namespace BetterLyrics.WinUI3.Helper private static readonly RankedLanguageIdentifierFactory _factory = new(); private static readonly RankedLanguageIdentifier _identifier; - public static List SupportedTranslationTargetLanguages { get; set; } = + public static List SupportedTranslationTargetLanguages { get; set; } = [ - new Language("ar"), - new Language("az"), + new ExtendedLanguage("ar"), + new ExtendedLanguage("az"), - new Language("bg"), - new Language("bn"), + new ExtendedLanguage("bg"), + new ExtendedLanguage("bn"), - new Language("ca"), - new Language("cs"), + new ExtendedLanguage("ca"), + new ExtendedLanguage("cs"), - new Language("da"), - new Language("de"), + new ExtendedLanguage("da"), + new ExtendedLanguage("de"), - new Language("el"), - new Language("en"), - new Language("eo"), - new Language("es"), - new Language("et"), - new Language("eu"), + new ExtendedLanguage("el"), + new ExtendedLanguage("en"), + new ExtendedLanguage("eo"), + new ExtendedLanguage("es"), + new ExtendedLanguage("et"), + new ExtendedLanguage("eu"), - new Language("fa"), - new Language("fi"), - new Language("fr"), + new ExtendedLanguage("fa"), + new ExtendedLanguage("fi"), + new ExtendedLanguage("fr"), - new Language("ga"), - new Language("gl"), + new ExtendedLanguage("ga"), + new ExtendedLanguage("gl"), - new Language("he"), - new Language("hi"), - new Language("hu"), + new ExtendedLanguage("he"), + new ExtendedLanguage("hi"), + new ExtendedLanguage("hu"), - new Language("id"), - new Language("it"), + new ExtendedLanguage("id"), + new ExtendedLanguage("it"), - new Language("ja"), + new ExtendedLanguage("ja"), - new Language("ko"), - new Language("ky"), + new ExtendedLanguage("ko"), + new ExtendedLanguage("ky"), - new Language("lt"), - new Language("lv"), + new ExtendedLanguage("lt"), + new ExtendedLanguage("lv"), - new Language("ms"), + new ExtendedLanguage("ms"), - new Language("nb"), - new Language("nl"), + new ExtendedLanguage("nb"), + new ExtendedLanguage("nl"), - new Language("pt-BR"), - new Language("pl"), - new Language("pt"), + new ExtendedLanguage("pt-BR"), + new ExtendedLanguage("pl"), + new ExtendedLanguage("pt"), - new Language("ro"), - new Language("ru"), + new ExtendedLanguage("ro"), + new ExtendedLanguage("ru"), - new Language("sk"), - new Language("sl"), - new Language("sq"), - new Language("sr"), - new Language("sv"), + new ExtendedLanguage("sk"), + new ExtendedLanguage("sl"), + new ExtendedLanguage("sq"), + new ExtendedLanguage("sr"), + new ExtendedLanguage("sv"), - new Language("th"), - new Language("tl"), - new Language("tr"), + new ExtendedLanguage("th"), + new ExtendedLanguage("tl"), + new ExtendedLanguage("tr"), - new Language("uk"), - new Language("ur"), + new ExtendedLanguage("uk"), + new ExtendedLanguage("ur"), - new Language("vi"), + new ExtendedLanguage("vi"), - new Language("zh"), + new ExtendedLanguage("zh"), ]; - public static List SupportedDisplayLanguages { get; set; } = ApplicationLanguages.ManifestLanguages.Select(x => new Language(x)).ToList(); + public static List SupportedDisplayLanguages { get; set; } = + [ + new ExtendedLanguage("", App.ResourceLoader!.GetString("SettingsPageSystemLanguage")), + new ExtendedLanguage("en-US", "English"), + new ExtendedLanguage("ja-JP"), + new ExtendedLanguage("ko-KR"), + new ExtendedLanguage("zh-CN", "简体中文"), + new ExtendedLanguage("zh-TW", "繁體中文"), + ]; static LanguageHelper() { @@ -120,22 +129,17 @@ namespace BetterLyrics.WinUI3.Helper public static string GetDefaultTargetTranslationLanguageCode() { - var found = SupportedTranslationTargetLanguages.Find(x => ApplicationLanguages.Languages.FirstOrDefault()?.Contains(x.LanguageTag) == true); + var found = SupportedTranslationTargetLanguages.Find(x => ApplicationLanguages.Languages.FirstOrDefault()?.Contains(x.LanguageCode) == true); if (found == null) { return "en"; } else { - return found.LanguageTag; + return found.LanguageCode; } } - public static string GetDefaultDisplayLanguageCode() - { - return ApplicationLanguages.Languages.FirstOrDefault() ?? "en-US"; - } - public static string GetOrderChar(string text) { if (string.IsNullOrWhiteSpace(text)) return "#"; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/ExtendedLanguage.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/ExtendedLanguage.cs new file mode 100644 index 0000000..1979bf6 --- /dev/null +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/ExtendedLanguage.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Windows.Globalization; + +namespace BetterLyrics.WinUI3.Models +{ + public class ExtendedLanguage + { + public string Name { get; private set; } + public string LanguageCode { get; private set; } + + public ExtendedLanguage(string languageCode, string? name = null) + { + LanguageCode = languageCode; + Name = name ?? new Language(languageCode).NativeName; + } + } +} diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/GeneralSettings.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/GeneralSettings.cs index db8a684..c741e2a 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/GeneralSettings.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/GeneralSettings.cs @@ -13,7 +13,7 @@ namespace BetterLyrics.WinUI3.Models.Settings { public partial class GeneralSettings : ObservableRecipient { - [ObservableProperty][NotifyPropertyChangedRecipients] public partial string LanguageCode { get; set; } = LanguageHelper.GetDefaultDisplayLanguageCode(); + [ObservableProperty][NotifyPropertyChangedRecipients] public partial string LanguageCode { get; set; } = ""; [ObservableProperty][NotifyPropertyChangedRecipients] public partial string LXMusicServer { get; set; } = string.Empty; [ObservableProperty][NotifyPropertyChangedRecipients] public partial List ShowOrHideLyricsWindowShortcut { get; set; } = new List { "Ctrl", "Alt", "H" }; [ObservableProperty][NotifyPropertyChangedRecipients] public partial bool ExitOnLyricsWindowClosed { get; set; } = false; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw index 8dfd276..d04091c 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw @@ -1219,7 +1219,7 @@ If you encounter any problems, please go to the Settings page, About tab, and vi Stroke color - + Default diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw index 1779fb7..3321ada 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw @@ -1219,7 +1219,7 @@ ストロークカラー - + デフォルト diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw index 9eaacdf..5f0e588 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw @@ -1219,7 +1219,7 @@ 윤곽선 색상 - + 기본 diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw index 347fe64..95a29c3 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw @@ -1219,7 +1219,7 @@ 描边颜色 - + 默认 diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw index add6e10..0f71373 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw @@ -1219,7 +1219,7 @@ 描邊顏色 - + 預設 diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/PlaybackSettingsControlViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/PlaybackSettingsControlViewModel.cs index b89e273..cd4b245 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/PlaybackSettingsControlViewModel.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/PlaybackSettingsControlViewModel.cs @@ -91,7 +91,7 @@ namespace BetterLyrics.WinUI3.ViewModels AppleMusicMediaUserToken = PasswordVaultHelper.Get(Constants.App.AppName, Constants.AppleMusic.MediaUserTokenKey) ?? ""; - SelectedTargetLanguageIndex = LanguageHelper.SupportedTranslationTargetLanguages.ToList().FindIndex(x => x.LanguageTag == AppSettings.TranslationSettings.SelectedTargetLanguageCode); + SelectedTargetLanguageIndex = LanguageHelper.SupportedTranslationTargetLanguages.ToList().FindIndex(x => x.LanguageCode == AppSettings.TranslationSettings.SelectedTargetLanguageCode); IsLastFMAuthenticated = _lastFMService.IsAuthenticated; LastFMUser = _lastFMService.User; @@ -231,7 +231,7 @@ namespace BetterLyrics.WinUI3.ViewModels partial void OnSelectedTargetLanguageIndexChanged(int value) { - AppSettings.TranslationSettings.SelectedTargetLanguageCode = LanguageHelper.SupportedTranslationTargetLanguages[value].LanguageTag; + AppSettings.TranslationSettings.SelectedTargetLanguageCode = LanguageHelper.SupportedTranslationTargetLanguages[value].LanguageCode; } } }