From c028aa8e4607bedee8b0b8f4de4368c72ab83418 Mon Sep 17 00:00:00 2001 From: Zhe Fang Date: Tue, 23 Dec 2025 06:18:16 -0500 Subject: [PATCH] chores --- .../Package.appxmanifest | 12 +---- .../BetterLyrics.WinUI3/App.xaml.cs | 11 +++- .../BetterLyrics.WinUI3.csproj | 41 ++++++-------- .../DisplayLanguageCodeToIndexConverter.cs | 4 +- .../Helper/LanguageHelper.cs | 53 +++++-------------- .../SettingsService/ISettingsService.cs | 1 - .../SettingsService/SettingsService.cs | 15 ++---- .../Strings/{de => de-DE}/Resources.resw | 0 .../Strings/{en => en-US}/Resources.resw | 0 .../Strings/{es => es-ES}/Resources.resw | 0 .../Strings/{fr => fr-FR}/Resources.resw | 0 .../Strings/{ja => ja-JP}/Resources.resw | 0 .../Strings/{ko => ko-KR}/Resources.resw | 0 .../Strings/{ru => ru-RU}/Resources.resw | 0 14 files changed, 46 insertions(+), 91 deletions(-) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{de => de-DE}/Resources.resw (100%) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{en => en-US}/Resources.resw (100%) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{es => es-ES}/Resources.resw (100%) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{fr => fr-FR}/Resources.resw (100%) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{ja => ja-JP}/Resources.resw (100%) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{ko => ko-KR}/Resources.resw (100%) rename BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/{ru => ru-RU}/Resources.resw (100%) diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest index 7262596..e5a0ed7 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest @@ -12,7 +12,7 @@ + Version="1.1.214.0" /> @@ -28,15 +28,7 @@ - - - - - - - - - + diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs index 6769458..7a5aea5 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs @@ -19,8 +19,10 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.UI.Xaml; using Microsoft.Windows.ApplicationModel.Resources; +using Microsoft.Windows.Globalization; using Serilog; using System; +using System.Globalization; using System.Linq; using System.Text; using System.Threading; @@ -67,10 +69,15 @@ namespace BetterLyrics.WinUI3 } } - protected override void OnLaunched(LaunchActivatedEventArgs args) + protected override async void OnLaunched(LaunchActivatedEventArgs args) { var settingsService = Ioc.Default.GetRequiredService(); - settingsService.UpdateLanguage(); + if (settingsService.AppSettings.GeneralSettings.LanguageCode == "") + { + settingsService.AppSettings.GeneralSettings.LanguageCode = CultureInfo.CurrentUICulture.Name; + await Task.Delay(Constants.Time.DebounceTimeout * 2); + WindowHook.RestartApp(); + } WindowHook.OpenOrShowWindow(); diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/BetterLyrics.WinUI3.csproj b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/BetterLyrics.WinUI3.csproj index 361b8a1..a4d078b 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/BetterLyrics.WinUI3.csproj +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/BetterLyrics.WinUI3.csproj @@ -387,41 +387,32 @@ - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - + - - + diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs index 3dcc34a..7b0fc2f 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Converter/DisplayLanguageCodeToIndexConverter.cs @@ -11,8 +11,8 @@ namespace BetterLyrics.WinUI3.Converter { if (value is string langCode) { - langCode = LanguageHelper.ParseLanguageCode(langCode); - return LanguageHelper.SupportedDisplayLanguages.FindIndex(x => x.LanguageCode == langCode); + var found = LanguageHelper.SupportedDisplayLanguages.FindIndex(x => x.LanguageCode == langCode); + return found == -1 ? 0 : found; } return 0; } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs index 8b5e5fb..7fbf1a4 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs @@ -1,6 +1,10 @@ using BetterLyrics.WinUI3.Models; +using BetterLyrics.WinUI3.Services.LocalizationService; +using CommunityToolkit.Mvvm.DependencyInjection; using NTextCat; using System.Collections.Generic; +using System.ComponentModel.Design; +using System.Globalization; using System.Linq; using Windows.Globalization; @@ -8,6 +12,7 @@ namespace BetterLyrics.WinUI3.Helper { public class LanguageHelper { + private static readonly ILocalizationService _localizationService = Ioc.Default.GetRequiredService(); private static readonly RankedLanguageIdentifierFactory _factory = new(); private static readonly RankedLanguageIdentifier _identifier; @@ -89,13 +94,14 @@ namespace BetterLyrics.WinUI3.Helper public static List SupportedDisplayLanguages { get; set; } = [ - new ExtendedLanguage("de"), - new ExtendedLanguage("en"), - new ExtendedLanguage("es"), - new ExtendedLanguage("fr"), - new ExtendedLanguage("ja"), - new ExtendedLanguage("ko"), - new ExtendedLanguage("ru"), + new ExtendedLanguage(CultureInfo.CurrentUICulture.Name, _localizationService.GetLocalizedString("SettingsPageSystemLanguage")), + new ExtendedLanguage("de-DE"), + new ExtendedLanguage("en-US"), + new ExtendedLanguage("es-ES"), + new ExtendedLanguage("fr-FR"), + new ExtendedLanguage("ja-JP"), + new ExtendedLanguage("ko-KR"), + new ExtendedLanguage("ru-RU"), new ExtendedLanguage("zh-Hans"), new ExtendedLanguage("zh-Hant"), ]; @@ -143,39 +149,6 @@ namespace BetterLyrics.WinUI3.Helper } } - public static string ParseLanguageCode(string? languageCode) - { - if (string.IsNullOrWhiteSpace(languageCode)) - { - languageCode = ApplicationLanguages.Languages.FirstOrDefault(); - } - - if (languageCode == null) - { - return "en"; - } - - var shortSysLangCode = languageCode.Substring(0, 2); - var found = SupportedDisplayLanguages.FirstOrDefault(x => shortSysLangCode == x.LanguageCode.Substring(0, 2)); - if (found == null) - { - return "en"; - } - else - { - var shortLangCodeFound = found.LanguageCode.Substring(0, 2); - if (shortLangCodeFound == "zh") - { - // https://learn.microsoft.com/zh-cn/windows/apps/publish/publish-your-app/msix/app-package-requirements#supported-languages - return languageCode is "zh-Hans" or "zh-CN" or "zh-Hans-CN" or "zh-SG" or "zh-Hans-SG" ? "zh-Hans" : "zh-Hant"; - } - else - { - return shortLangCodeFound; - } - } - } - public static string GetOrderChar(string text) { if (string.IsNullOrWhiteSpace(text)) return "#"; diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/ISettingsService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/ISettingsService.cs index c717ac9..a5282de 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/ISettingsService.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/ISettingsService.cs @@ -8,7 +8,6 @@ namespace BetterLyrics.WinUI3.Services.SettingsService { AppSettings AppSettings { get; set; } - void UpdateLanguage(); bool ImportSettings(string importPath); void ExportSettings(string exportPath); } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs index b83e947..f34a79f 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService/SettingsService.cs @@ -12,8 +12,10 @@ using BetterLyrics.WinUI3.ViewModels; using CommunityToolkit.WinUI; using Microsoft.UI.Dispatching; using System; +using System.Globalization; using System.IO; using System.Linq; +using Windows.ApplicationModel.Resources; using Windows.Globalization; namespace BetterLyrics.WinUI3.Services.SettingsService @@ -21,14 +23,12 @@ namespace BetterLyrics.WinUI3.Services.SettingsService // 新建一个 AppSettings 类 public partial class SettingsService : BaseViewModel, ISettingsService { - private readonly ILocalizationService _localizationService; private readonly DispatcherQueueTimer _writeAppSettingsTimer; public AppSettings AppSettings { get; set; } - public SettingsService(ILocalizationService localizationService) + public SettingsService() { - _localizationService = localizationService; _writeAppSettingsTimer = _dispatcherQueue.CreateTimer(); AppSettings = ReadAppSettings(); @@ -117,7 +117,7 @@ namespace BetterLyrics.WinUI3.Services.SettingsService switch (e.PropertyName) { case nameof(GeneralSettings.LanguageCode): - UpdateLanguage(); + ApplicationLanguages.PrimaryLanguageOverride = AppSettings.GeneralSettings.LanguageCode; break; default: break; @@ -125,13 +125,6 @@ namespace BetterLyrics.WinUI3.Services.SettingsService WriteAppSettings(); } - public void UpdateLanguage() - { - var langCode = AppSettings.GeneralSettings.LanguageCode; - var parsedLangCode = LanguageHelper.ParseLanguageCode(langCode); - ApplicationLanguages.PrimaryLanguageOverride = parsedLangCode; - } - /// /// Export settings to specific folder /// diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/de/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/de-DE/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/de/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/de-DE/Resources.resw diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/es/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/es-ES/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/es/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/es-ES/Resources.resw diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/fr/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/fr-FR/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/fr/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/fr-FR/Resources.resw diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ru/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ru-RU/Resources.resw similarity index 100% rename from BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ru/Resources.resw rename to BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ru-RU/Resources.resw