diff --git a/Flow.Launcher.Core/Resource/Internationalization.cs b/Flow.Launcher.Core/Resource/Internationalization.cs index 78e8c5cbf23..374f7c71fc8 100644 --- a/Flow.Launcher.Core/Resource/Internationalization.cs +++ b/Flow.Launcher.Core/Resource/Internationalization.cs @@ -10,6 +10,7 @@ using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; using System.Globalization; +using System.Threading.Tasks; namespace Flow.Launcher.Core.Resource { @@ -95,10 +96,13 @@ public void ChangeLanguage(Language language) { LoadLanguage(language); } - UpdatePluginMetadataTranslations(); Settings.Language = language.LanguageCode; CultureInfo.CurrentCulture = new CultureInfo(language.LanguageCode); CultureInfo.CurrentUICulture = CultureInfo.CurrentCulture; + Task.Run(() => + { + UpdatePluginMetadataTranslations(); + }); } public bool PromptShouldUsePinyin(string languageCodeToSet) diff --git a/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs b/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs index e332d450eae..61662b671a2 100644 --- a/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs +++ b/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs @@ -1,4 +1,6 @@ -namespace Flow.Launcher.Plugin +using System.Globalization; + +namespace Flow.Launcher.Plugin { /// /// Represent plugins that support internationalization @@ -8,5 +10,13 @@ public interface IPluginI18n : IFeatures string GetTranslatedPluginTitle(); string GetTranslatedPluginDescription(); + + /// + /// The method will be invoked when language of flow changed + /// + void OnCultureInfoChanged(CultureInfo newCulture) + { + + } } } \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Classes/WindowsSetting.cs b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Classes/WindowsSetting.cs index 4a130daf746..be7cd44d307 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Classes/WindowsSetting.cs +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Classes/WindowsSetting.cs @@ -9,7 +9,7 @@ namespace Flow.Plugin.WindowsSettings.Classes /// /// A windows setting /// - internal class WindowsSetting + internal record WindowsSetting { /// /// Initializes a new instance of the class. diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs index 177f1ec0059..c5fd287bda7 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs @@ -150,12 +150,8 @@ private static bool DoOpenSettingsAction(WindowsSetting entry) ProcessStartInfo processStartInfo; var command = entry.Command; - - if (command.Contains("%windir%", StringComparison.InvariantCultureIgnoreCase)) - { - var windowsFolder = Environment.GetFolderPath(Environment.SpecialFolder.Windows); - command = command.Replace("%windir%", windowsFolder, StringComparison.InvariantCultureIgnoreCase); - } + + command = Environment.ExpandEnvironmentVariables(command); if (command.Contains(' ')) { diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/TranslationHelper.cs b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/TranslationHelper.cs index 48886167fee..529fae0a3c1 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/TranslationHelper.cs +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/TranslationHelper.cs @@ -80,7 +80,7 @@ internal static IEnumerable TranslateAllSettings(in IEnumerable< } } - var translatedSetting = new WindowsSetting + var translatedSetting = settings with { Area = area ?? settings.Area, Name = name ?? settings.Name, diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Main.cs b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Main.cs index b531ac97e2f..491bb903f20 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Main.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Reflection; using Flow.Launcher.Plugin; using Flow.Plugin.WindowsSettings.Classes; @@ -106,6 +107,11 @@ public List Query(Query query) } + public void OnCultureInfoChanged(CultureInfo newCulture) + { + _translatedSettingList = TranslationHelper.TranslateAllSettings(_settingsList); + } + /// /// Return a list context menu entries for a given (shown at the right side of the result). ///