2016-05-05 4 views
1

При попытке форматирования правильный Icu сообщениеJQuery/глобализовать пользовательский вопрос форматировщик

'Ваш открытым счетчик билет {п, число}'

JQuery/Globalize бросить исключение: FMT является не определено (...)

Сообщение скомпилировано без ошибки в компиляторе globalize, но не выполняется во время выполнения.

Использование JQuery/глобализовать 1.0.0 & 1.1.1
Проблема аналогична: github.com/jquery/globalize/issues/563


Изменение JQuery/глобализовать ... глобализовать/сообщение .js (добавление слова customFormatters) удаляет ошибку ... но изменение исходного файла третьей стороны неприемлемо в проекте.

Globalize.messageFormatter = 
Globalize.prototype.messageFormatter = function(path, customFormatters) { 
... 
formatter = new MessageFormat(cldr.locale, pluralGenerator, customFormatters).compile(message) 




Ниже НПМ пакет также обрабатывает сообщение форматирования, как и ожидалось. https://www.npmjs.com/package/format-message


(у меня есть PM'ed Рафаэль из JQuery/глобализацию, и он просил меня опубликовать вопрос здесь)

вопросы:

  1. Кто-нибудь еще сталкивался это и как вы обходились?

  2. Кто-нибудь использует jquery/globalize для базового номера/даты/единицы/etc formatters и другой библиотеки, например, «format-message» для форматирования сообщений?

  3. Проекты, которые будут использоваться для nodejs и на основе браузера (spa). Переключение на Intl и polyfill станет допустимой альтернативой. (Требуется поддержка Safari http://caniuse.com/#search=intl)

  4. Есть ли тест для оценки стоимости выполнения добавления «customFormatters» к источнику через PR.

+0

Эй, Джейсон, спасибо, что разместили свое сообщение здесь, чтобы он мог также помочь широкому сообществу. –

ответ

0
  1. Использование переменной replacement instead, например, 'Your open ticket count is {n}' и Globalize.formatMessage('<message>', {n: Globalize.formatNumber(n)}).

  2. С помощью функции глобализации вы можете форматировать числа, даты, относительное время, единицу и т. Д., Используя их соответствующие форматирующие элементы, а затем передавать их вместе с сообщением в качестве замены переменных. Каждый из форматировщиков имеет свой собственный набор параметров, поэтому вы можете настроить вывод так, как вам нужно. Поэтому разница в том, что вы сможете определить форматирование в коде, а не в самом сообщении.Одним из больших преимуществ использования Globalize для всех этих форматировщиков и форматирования сообщений является то, что вы можете использовать globalize-compiler для статического анализа кода и генерации очень эффективного прекомпилированного кода (small и fast) для запуска на производстве. См. Также наш app demo using webpack.

  3. Обратите внимание, что Intl (определенный ecma-402 сегодняшнего дня) определяет только форматы даты и даты. Он не определяет формат сообщения, множественное число (скоро будет частью спецификации), относительный форматтер и т. Д. Поэтому вы можете найти полифиль для первых двух.

  4. Этот раздел по-прежнему очень груб, но обязательно прочитайте глобализацию performance section.

PS: Я обновил https://github.com/jquery/globalize/issues/563 спасибо.

Смежные вопросы