Refactor translation logic into ILangExtensions utility.

This commit is contained in:
Thorsten Sommer 2025-04-17 12:38:45 +02:00
parent 19888ff74d
commit 8ff66f8622
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 30 additions and 20 deletions

View File

@ -35,26 +35,7 @@ public abstract class MSGComponentBase : ComponentBase, IDisposable, IMessageBus
#region Implementation of ILang
/// <inheritdoc />
public string T(string fallbackEN)
{
var type = this.GetType();
var ns = $"{type.Namespace!}::{type.Name}".ToUpperInvariant().Replace(".", "::");
var key = $"root::{ns}::T{fallbackEN.ToFNV32()}";
if(this.Lang is NoPluginLanguage)
return fallbackEN;
if(this.Lang.TryGetText(key, out var text, logWarning: false))
{
if(string.IsNullOrWhiteSpace(text))
return fallbackEN;
return text;
}
this.Logger.LogWarning($"Missing translation key '{key}' for content '{fallbackEN}'.");
return fallbackEN;
}
public string T(string fallbackEN) => this.GetText(this.Lang, fallbackEN);
#endregion

View File

@ -0,0 +1,29 @@
using SharedTools;
namespace AIStudio.Tools.PluginSystem;
public static class ILangExtensions
{
private static readonly ILogger<ILang> LOGGER = Program.LOGGER_FACTORY.CreateLogger<ILang>();
public static string GetText(this ILang lang, ILanguagePlugin plugin, string fallbackEN)
{
var type = lang.GetType();
var ns = $"{type.Namespace!}::{type.Name}".ToUpperInvariant().Replace(".", "::");
var key = $"root::{ns}::T{fallbackEN.ToFNV32()}";
if(plugin is NoPluginLanguage)
return fallbackEN;
if(plugin.TryGetText(key, out var text, logWarning: false))
{
if(string.IsNullOrWhiteSpace(text))
return fallbackEN;
return text;
}
LOGGER.LogWarning($"Missing translation key '{key}' for content '{fallbackEN}'.");
return fallbackEN;
}
}