From 9e49d9fb26d55a0166aeca7033acc1b7709e8d6b Mon Sep 17 00:00:00 2001 From: vjrj <vjrj@comunes.org> Date: Sat, 14 Oct 2023 18:39:26 +0200 Subject: [PATCH] Fallback to NumberFormat for Esperanto --- lib/ui/ui_helpers.dart | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/ui/ui_helpers.dart b/lib/ui/ui_helpers.dart index a6cd24a5..72c97104 100644 --- a/lib/ui/ui_helpers.dart +++ b/lib/ui/ui_helpers.dart @@ -158,7 +158,7 @@ NumberFormat currentNumberFormat( {required bool useSymbol, required bool isG1, required String locale}) { final NumberFormat currencyFormatter = NumberFormat.currency( symbol: useSymbol ? currentCurrency(isG1) : '', - locale: locale, + locale: eo(locale), decimalDigits: isG1 ? 2 : 3, ); return currencyFormatter; @@ -199,12 +199,19 @@ String formatKAmountInViewWithLocale( double convertAmount(bool isG1, double amount, double currentUd) => isG1 ? amount / 100 : ((amount / 100) / currentUd); +// NumberFormat does not work with esperanto nowadays, so we use +// this fallback +// https://en.wikipedia.org/wiki/Decimal_separator +// The three most spoken international auxiliary languages, Ido, Esperanto, and +// Interlingua, all use the comma as the decimal separator. +String eo(String locale) => locale == 'eo' ? 'es' : locale; + double parseToDoubleLocalized( {required String locale, required String number}) => - NumberFormat.decimalPattern(locale).parse(number).toDouble(); + NumberFormat.decimalPattern(eo(locale)).parse(number).toDouble(); String localizeNumber(BuildContext context, double amount) => - NumberFormat.decimalPattern(currentLocale(context)).format(amount); + NumberFormat.decimalPattern(eo(currentLocale(context))).format(amount); Future<Contact> contactFromResultSearch(Map<String, dynamic> record) async { final Map<String, dynamic> source = record['_source'] as Map<String, dynamic>; @@ -465,7 +472,7 @@ double calculate({required String textInTerminal, required String decimalSep}) { } String decimalSep(BuildContext context) { - return NumberFormat.decimalPattern(currentLocale(context)) + return NumberFormat.decimalPattern(eo(currentLocale(context))) .symbols .DECIMAL_SEP; } @@ -502,7 +509,7 @@ String? validateDecimal( required String locale, required String? amount, required String Function(String s) tr}) { - final NumberFormat format = NumberFormat.decimalPattern(locale); + final NumberFormat format = NumberFormat.decimalPattern(eo(locale)); if (amount == null || amount.isEmpty || amount.startsWith(sep)) { return null; } -- GitLab