Improved I18N system (#445)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2025-05-03 21:47:43 +02:00
1 parent f8dbc186fb
commit cfc2103b43
11 files changed
+109 -26

No files matched your search

@@ -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
}
@@ -12,8 +12,8 @@ public static class ILangExtensions
typeName ??= type.Name;
typeNamespace ??= type.Namespace!;
// When the type's name ends with `1 or 2`, etc. (i.e., generic classes), remove it:
if(typeName.Contains("`"))
// When the type's name ends with `1 or `2, etc. (i.e., generic classes), remove it:
if(typeName.Contains('`'))
typeName = typeName[..typeName.IndexOf('`')];
var ns = $"{typeNamespace}::{typeName}".ToUpperInvariant().Replace(".", "::");