Files
UmbraClient/MareSynchronos/Localization/LocalizationExtensions.cs
2025-09-21 17:01:12 +02:00

49 lines
1.5 KiB
C#

using System.Globalization;
namespace MareSynchronos.Localization;
public static class LocalizationExtensions
{
public static string Loc(this string fallbackEnglish, params object[] formatArgs)
{
var service = LocalizationService.Instance;
if (service == null) return FormatFallback(fallbackEnglish, formatArgs);
return service.GetString(fallbackEnglish, formatArgs);
}
public static string LocKey(this string key, string fallbackEnglish, params object[] formatArgs)
{
var service = LocalizationService.Instance;
if (service == null) return FormatFallback(fallbackEnglish, formatArgs);
return service.GetString(key, fallbackEnglish, formatArgs);
}
public static string LocLabel(this string labelWithId, params object[] formatArgs)
{
if (string.IsNullOrEmpty(labelWithId)) return labelWithId;
var separatorIndex = labelWithId.IndexOf("##", StringComparison.Ordinal);
if (separatorIndex < 0)
{
return labelWithId.Loc(formatArgs);
}
var label = labelWithId[..separatorIndex];
var id = labelWithId[separatorIndex..];
return string.Concat(label.Loc(formatArgs), id);
}
private static string FormatFallback(string fallback, params object[] args)
{
if (args == null || args.Length == 0) return fallback;
try
{
return string.Format(CultureInfo.CurrentCulture, fallback, args);
}
catch
{
return fallback;
}
}
}