Préparation traduction en => fr Part1
This commit is contained in:
48
MareSynchronos/Localization/LocalizationExtensions.cs
Normal file
48
MareSynchronos/Localization/LocalizationExtensions.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user