Локализация в полимере?

Я собираюсь создать webapp с Polymer. Для этого webapp мне нужна локализация. Есть ли способ полимеризации сделать локализацию? Кто-нибудь когда-либо делал локализацию в веб-браузере Polymer?

Ответ 1

Я создал реализацию самостоятельно. Глядя на то, что я сделал, это не так сложно сделать.

Ответ 2

I18n и l10n также находятся в моем списке дел. В настоящее время я переношу приложение из AngularJS в Polymer. Back-end - Ruby on Rails. Я использую i18n-js gem, который преобразует файлы перевода Rails (en.yml, de.yml и т.д.) В один большой файл JavaScript, содержащий объект I18n со всеми переводы. Этот камень также предоставляет библиотеку JavaScript для выполнения текстовых переводов и локализации значений. Но есть и другие библиотеки JavaScript, обеспечивающие аналогичную функциональность.

Текущая локаль устанавливается из ответа HTTP-запроса, возвращая заголовок Accept-Language пользователей.

Ничего не зависит от полимера.

Затем я создал группу глобальных фильтров выражения Polymer, которые выполняют различные преобразования локалей на своих входных строках. Это тот же метод, что и тот, который я научился использовать в приложении AngularJS. Фильтр перевода выглядит следующим образом (I18n.t - функция перевода библиотеки JavaScript)

PolymerExpressions.prototype.i18n = function(key) {
  return I18n.t(key);
};

и используется таким образом

<paper-button label="{{ 'action.help' | i18n }}"></paper-button>

Локализация даты может быть записана как

{{ someDate | i18n_date('short') }}

Я упаковал фильтры i18n и дополнительные вспомогательные функции в элемент Polymer, поэтому я могу также включить этот элемент в другой элемент и использовать функции перевода из него кода JavaScript.

Элемент i18n также включен в мой основной элемент приложения, где он инициализирует библиотеку I18n и устанавливает стандартную и текущую локали.

Ответ 4

Не осознавая, что Polymer -way делает i18n, я предлагаю сделать это на стороне сервера.

Если фреймворк Spring, я бы использовал пользовательские элементы как jsp и обрабатывал i18n, как обычно, с тегами <spring:message />.

Только оговорка заключается в том, что для переключения языка приложения потребуется полная перезагрузка. Но поскольку переключение языков обычно не выполняется часто, я не думаю об этом как о проблеме.

Ответ 5

Для Polymer 1.0 я только что опубликовал простой (сильно развитый) элемент (см. его gitlab или прочитайте об этом здесь). Он загружает файлы перевода асинхронно, а использование довольно просто:

<!-- Import it in head -->
<link rel="import" href="bower_components/quaintous-i18n/quaintous-i18n.html">
<!-- initialize it in body -->
<quaintous-i18n locales-path="/locales/fa.json"></quaintous-i18n>

Теперь вы можете использовать его различными способами:

  • В вычисленных свойствах: просто добавьте I18N в качестве своего элемента behavior и переведите привязки данных, например. {{__('hello')}}
  • В глобальном контексте просто используйте объект I18N, например. I18N.__('hello')