66 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|