fixed formatting of floating point numbers during localization (#27441)

This commit is contained in:
KrasnoshchekovPavel
2024-04-29 07:52:35 +03:00
committed by GitHub
parent 4c66e4f9dc
commit 199e05fb34

View File

@@ -69,7 +69,7 @@ namespace Content.Shared.Localizations
var maxDecimals = (int)Math.Floor(((LocValueNumber) args.Args[1]).Value); var maxDecimals = (int)Math.Floor(((LocValueNumber) args.Args[1]).Value);
var formatter = (NumberFormatInfo)NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo(Culture)).Clone(); var formatter = (NumberFormatInfo)NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo(Culture)).Clone();
formatter.NumberDecimalDigits = maxDecimals; formatter.NumberDecimalDigits = maxDecimals;
return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd('.') + "%"); return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd(char.Parse(formatter.NumberDecimalSeparator)) + "%");
} }
private ILocValue FormatNaturalFixed(LocArgs args) private ILocValue FormatNaturalFixed(LocArgs args)
@@ -78,7 +78,7 @@ namespace Content.Shared.Localizations
var maxDecimals = (int)Math.Floor(((LocValueNumber) args.Args[1]).Value); var maxDecimals = (int)Math.Floor(((LocValueNumber) args.Args[1]).Value);
var formatter = (NumberFormatInfo)NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo(Culture)).Clone(); var formatter = (NumberFormatInfo)NumberFormatInfo.GetInstance(CultureInfo.GetCultureInfo(Culture)).Clone();
formatter.NumberDecimalDigits = maxDecimals; formatter.NumberDecimalDigits = maxDecimals;
return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd('.')); return new LocValueString(string.Format(formatter, "{0:N}", number).TrimEnd('0').TrimEnd(char.Parse(formatter.NumberDecimalSeparator)));
} }
private static readonly Regex PluralEsRule = new("^.*(s|sh|ch|x|z)$"); private static readonly Regex PluralEsRule = new("^.*(s|sh|ch|x|z)$");