Я собираюсь создать 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 и устанавливает стандартную и текущую локали.
Ответ 3
Использование Polymer.AppLocalizeBehavior
https://github.com/PolymerElements/app-localize-behavior
Я использую это поведение в шаблоне PWA для локалей на пользовательский элемент.
https://github.com/StartPolymer/progressive-web-app-template
Ответ 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')