Формат валюты (по локали) в дартс - PullRequest
0 голосов
/ 24 сентября 2019

Мне удалось получить число в формате валюты со следующим:

final myLocale = Localizations.localeOf(context).toString();
final longNumberFormat = NumberFormat.currency(locale: myLocale, symbol: mySymbol, decimalDigits: 2);
print(longNumberFormat.format(1234));

И результат этого:

для локали 'en_US': $ 1,234.00

для локали 'es' или 'es_AR': 1,234,00 $

В первом случае (en_US) это верно, но для последнего случая (es_AR), который является аргентинским испанским (моя страна)) это неправильно, мы не используем символ в конце, мы используем его спереди, как США, но точки / запятые верны.

Это ошибка библиотеки?Есть ли обходной путь для этого?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Как и выше, es_AR отсутствует в данных.Вы не можете изменить этот файл, так как он генерируется из данных CLDR и будет перезаписан.Но вы можете изменить его во время выполнения, чтобы добавить отсутствующую запись или изменить существующую.Например, здесь я создал запись, в которой я взял запись "es" и переместил символ валюты (\ u00a4) в начало.

import 'package:intl/intl.dart';
import 'package:intl/number_symbols.dart';
import 'package:intl/number_symbols_data.dart';

main() {
  var argentina = NumberSymbols(
      NAME: "es_AR",
      DECIMAL_SEP: ',',
      GROUP_SEP: '.',
      PERCENT: '%',
      ZERO_DIGIT: '0',
      PLUS_SIGN: '+',
      MINUS_SIGN: '-',
      EXP_SYMBOL: 'E',
      PERMILL: '\u2030',
      INFINITY: '\u221E',
      NAN: 'NaN',
      DECIMAL_PATTERN: '#,##0.###',
      SCIENTIFIC_PATTERN: '#E0',
      PERCENT_PATTERN: '#,##0\u00A0%',
      CURRENCY_PATTERN: '\u00A4#,##0.00\u00A0',
      DEF_CURRENCY_CODE: r'$');

  numberFormatSymbols['es_AR'] = argentina;
  var f = NumberFormat.currency(locale: 'es_AR');
  print(f.format(1234));

}
0 голосов
/ 24 сентября 2019

Похоже, es_AR еще не был добавлен, поэтому он возвращается к чему-то другому, возможно, es ?.Возможно, вы можете внести свой вклад в пакет и добавить его самостоятельно?Я думаю, это то, куда он должен идти https://github.com/dart-lang/intl/blob/master/lib/number_symbols_data.dart.

Редактировать: Как указано, этот файл генерируется из CLDR, поэтому файл дротика не должен быть изменен.Возможно, вы можете отправить вопрос на страницу github или воспользоваться решением, предложенным Аланом Найтом.

...