Add I18N class for static localization

This commit is contained in:
Thorsten Sommer 2025-05-03 21:45:52 +02:00
parent be52c94ec7
commit 2981da577b
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 32 additions and 0 deletions

View File

@ -206,6 +206,8 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan
break;
case Event.PLUGINS_RELOADED:
this.Lang = await this.SettingsManager.GetActiveLanguagePlugin();
I18N.Init(this.Lang);
await this.InvokeAsync(this.StateHasChanged);
break;
}

View File

@ -0,0 +1,30 @@
namespace AIStudio.Tools.PluginSystem;
public class I18N : ILang
{
public static readonly I18N I = new();
private static readonly ILogger<I18N> LOG = Program.LOGGER_FACTORY.CreateLogger<I18N>();
private ILanguagePlugin language = PluginFactory.BaseLanguage;
private I18N()
{
}
public static void Init(ILanguagePlugin language) => I.language = language;
#region Implementation of ILang
public string T(string fallbackEN)
{
LOG.LogWarning("Using I18N.I.T without namespace and type is probably wrong, because the I18N key collection process of the build system will not find those keys.");
return this.GetText(this.language, fallbackEN);
}
public string T(string fallbackEN, string? typeNamespace, string? typeName)
{
return this.GetText(this.language, fallbackEN, typeNamespace, typeName);
}
#endregion
}