Skip to content

Commit d502f1d

Browse files
committed
Correctly load plugin localization files
1 parent 597eaa0 commit d502f1d

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

Flow.Launcher.Core/Plugin/PluginManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public static async Task InitializePluginsAsync(IPublicAPI api)
203203
}
204204
}
205205

206-
InternationalizationManager.Instance.AddPluginLanguageDirectories();
206+
InternationalizationManager.Instance.AddPluginLanguageDirectories(GetPluginsForInterface<IPluginI18n>());
207207
InternationalizationManager.Instance.ChangeLanguage(InternationalizationManager.Instance.Settings.Language);
208208

209209
if (failedPlugins.Any())

Flow.Launcher.Core/Resource/Internationalization.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ public class Internationalization
2525

2626
public Internationalization()
2727
{
28-
LoadDefaultLanguage();
29-
// we don't want to load /Languages/en.xaml twice
30-
// so add flowlauncher language directory after load plugin language files
3128
AddFlowLauncherLanguageDirectory();
3229
}
3330

@@ -39,9 +36,9 @@ private void AddFlowLauncherLanguageDirectory()
3936
}
4037

4138

42-
internal void AddPluginLanguageDirectories()
39+
internal void AddPluginLanguageDirectories(IEnumerable<PluginPair> plugins)
4340
{
44-
foreach (var plugin in PluginManager.GetPluginsForInterface<IPluginI18n>())
41+
foreach (var plugin in plugins)
4542
{
4643
var location = Assembly.GetAssembly(plugin.Plugin.GetType()).Location;
4744
var dir = Path.GetDirectoryName(location);
@@ -55,6 +52,8 @@ internal void AddPluginLanguageDirectories()
5552
Log.Error($"|Internationalization.AddPluginLanguageDirectories|Can't find plugin path <{location}> for <{plugin.Metadata.Name}>");
5653
}
5754
}
55+
56+
LoadDefaultLanguage();
5857
}
5958

6059
private void LoadDefaultLanguage()
@@ -139,11 +138,14 @@ private void RemoveOldLanguageFiles()
139138

140139
private void LoadLanguage(Language language)
141140
{
141+
var flowEnglishFile = Path.Combine(Constant.ProgramDirectory, Folder, DefaultFile);
142142
var dicts = Application.Current.Resources.MergedDictionaries;
143143
var filename = $"{language.LanguageCode}{Extension}";
144144
var files = _languageDirectories
145145
.Select(d => LanguageFile(d, filename))
146-
.Where(f => !string.IsNullOrEmpty(f))
146+
// Exclude Flow's English language file since it's built into the binary, and there's no need to load
147+
// it again from the file system.
148+
.Where(f => !string.IsNullOrEmpty(f) && f != flowEnglishFile)
147149
.ToArray();
148150

149151
if (files.Length > 0)

0 commit comments

Comments
 (0)