diff --git a/Flow.Launcher.Avalonia/App.axaml.cs b/Flow.Launcher.Avalonia/App.axaml.cs
index caedad3f7..fae4c6a64 100644
--- a/Flow.Launcher.Avalonia/App.axaml.cs
+++ b/Flow.Launcher.Avalonia/App.axaml.cs
@@ -23,14 +23,8 @@ public partial class App : Application
private static readonly string ClassName = nameof(App);
private Settings? _settings;
private MainViewModel? _mainVM;
- private Internationalization? _i18n;
public static IPublicAPI? API { get; private set; }
-
- ///
- /// Gets the internationalization service for translations.
- ///
- public static Internationalization? I18n { get; private set; }
public override void Initialize() => AvaloniaXamlLoader.Load(this);
@@ -39,7 +33,6 @@ public partial class App : Application
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
LoadSettings();
- InitializeInternationalization();
ConfigureDI();
API = Ioc.Default.GetRequiredService();
@@ -77,31 +70,18 @@ public partial class App : Application
}
}
- private void InitializeInternationalization()
- {
- try
- {
- _i18n = new Internationalization(_settings!);
- _i18n.Initialize();
- I18n = _i18n;
- Log.Info(ClassName, "Internationalization initialized");
- }
- catch (Exception e)
- {
- Log.Exception(ClassName, "Failed to initialize internationalization", e);
- }
- }
-
private void ConfigureDI()
{
var services = new ServiceCollection();
services.AddSingleton(_settings!);
services.AddSingleton();
services.AddSingleton();
+ services.AddSingleton();
services.AddSingleton();
services.AddSingleton(sp => new AvaloniaPublicAPI(
sp.GetRequiredService(),
- () => sp.GetRequiredService()));
+ () => sp.GetRequiredService(),
+ sp.GetRequiredService()));
Ioc.Default.ConfigureServices(services.BuildServiceProvider());
}
diff --git a/Flow.Launcher.Avalonia/AvaloniaPublicAPI.cs b/Flow.Launcher.Avalonia/AvaloniaPublicAPI.cs
index da1cdc618..deac2575c 100644
--- a/Flow.Launcher.Avalonia/AvaloniaPublicAPI.cs
+++ b/Flow.Launcher.Avalonia/AvaloniaPublicAPI.cs
@@ -25,11 +25,13 @@ public class AvaloniaPublicAPI : IPublicAPI
{
private readonly Settings _settings;
private readonly Func _getMainViewModel;
+ private readonly Internationalization _i18n;
- public AvaloniaPublicAPI(Settings settings, Func getMainViewModel)
+ public AvaloniaPublicAPI(Settings settings, Func getMainViewModel, Internationalization i18n)
{
_settings = settings;
_getMainViewModel = getMainViewModel;
+ _i18n = i18n;
}
#pragma warning disable CS0067
@@ -40,14 +42,7 @@ public class AvaloniaPublicAPI : IPublicAPI
// Essential for plugins
public void ChangeQuery(string query, bool requery = false) => _getMainViewModel().QueryText = query;
- public string GetTranslation(string key)
- {
- var i18n = App.I18n;
- if (i18n == null)
- return key;
-
- return i18n.GetTranslation(key);
- }
+ public string GetTranslation(string key) => _i18n.GetTranslation(key);
public List GetAllPlugins() => PluginManager.AllPlugins;
public MatchResult FuzzySearch(string query, string stringToCompare) =>
diff --git a/Flow.Launcher.Avalonia/Resource/Internationalization.cs b/Flow.Launcher.Avalonia/Resource/Internationalization.cs
index 3c71969fb..b5cc19ecd 100644
--- a/Flow.Launcher.Avalonia/Resource/Internationalization.cs
+++ b/Flow.Launcher.Avalonia/Resource/Internationalization.cs
@@ -34,6 +34,7 @@ public class Internationalization
public Internationalization(Settings settings)
{
_settings = settings;
+ Initialize();
}
///
diff --git a/Flow.Launcher.Avalonia/Resource/LocalizeExtension.cs b/Flow.Launcher.Avalonia/Resource/LocalizeExtension.cs
index 9b6c673be..e88ec87e2 100644
--- a/Flow.Launcher.Avalonia/Resource/LocalizeExtension.cs
+++ b/Flow.Launcher.Avalonia/Resource/LocalizeExtension.cs
@@ -1,6 +1,7 @@
using Avalonia.Data;
using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.MarkupExtensions;
+using CommunityToolkit.Mvvm.DependencyInjection;
using System;
namespace Flow.Launcher.Avalonia.Resource;
@@ -37,7 +38,7 @@ public class LocalizeExtension : MarkupExtension
return Fallback ?? "[No Key]";
}
- var i18n = App.I18n;
+ var i18n = Ioc.Default.GetService();
if (i18n == null)
{
return Fallback ?? $"[{Key}]";
@@ -64,7 +65,7 @@ public static class Translator
/// The translated string or the key in brackets if not found
public static string GetString(string key)
{
- var i18n = App.I18n;
+ var i18n = Ioc.Default.GetService();
if (i18n == null)
{
return $"[{key}]";