Préparation traduction en => fr Part1

This commit is contained in:
2025-09-21 11:27:19 +02:00
parent 78089a9fc7
commit 17aa6e247c
10 changed files with 616 additions and 98 deletions

View File

@@ -0,0 +1,48 @@
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;
}
}
}