Files
mpv.net/src/NGettext.Wpf/Translation.cs
2023-12-08 06:23:17 +01:00

66 lines
2.5 KiB
C#

using System.Globalization;
namespace NGettext.Wpf
{
public static class Translation
{
public static string _(string msgId) => Localizer?.Gettext(msgId) ?? "";
public static string _(string msgId, params object[] parameters)
{
return parameters.Any()
? Localizer?.Gettext(msgId, parameters) ?? ""
: Localizer?.Gettext(msgId) ?? "";
}
public static ILocalizer? Localizer { get; set; }
public static string Noop(string msgId) => msgId;
[Obsolete("Use GetPluralString() instead. This method will be removed in 2.x")]
public static string PluralGettext(int n, string singularMsgId, string pluralMsgId, params object[] @params)
{
return GetPluralString(singularMsgId, pluralMsgId, n, @params);
}
public static string GetPluralString(string singularMsgId, string pluralMsgId, int n, params object[] args)
{
if (Localizer is null)
{
CompositionRoot.WriteMissingInitializationErrorMessage();
return string.Format(CultureInfo.InvariantCulture, n == 1 ? singularMsgId : pluralMsgId, args);
}
return args.Any()
? Localizer.Catalog.GetPluralString(singularMsgId, pluralMsgId, n, args)
: Localizer.Catalog.GetPluralString(singularMsgId, pluralMsgId, n);
}
public static string GetParticularPluralString(string context, string text, string pluralText, int n, params object[] args)
{
if (Localizer is null)
{
CompositionRoot.WriteMissingInitializationErrorMessage();
return string.Format(CultureInfo.InvariantCulture, n == 1 ? text : pluralText, args);
}
return args.Any()
? Localizer.Catalog.GetParticularPluralString(context, text, pluralText, n, args)
: Localizer.Catalog.GetParticularPluralString(context, text, pluralText, n);
}
public static string GetParticularString(string context, string text, params object[] args)
{
if (Localizer is null)
{
CompositionRoot.WriteMissingInitializationErrorMessage();
return (args.Any() ? string.Format(CultureInfo.InvariantCulture, text, args) : text);
}
return args.Any()
? Localizer.Catalog.GetParticularString(context, text, args)
: Localizer.Catalog.GetParticularString(context, text);
}
}
}