Создание шаблонов JavaScript с поддержкой i18n? (и что потом?)

#javascript #node.js #internationalization #translation

#javascript #node.js #интернационализация #перевод

Вопрос:

В отдаленном будущем я хотел бы распространять свое многоязычное одностраничное приложение, содержащее всевозможные ресурсы (видео, тексты, интерактивные приложения), как для Интернета, так и для настольных компьютеров (офлайн). Этот сценарий dream также позволил бы переводчикам получить доступ к единой панели управления translator, откуда все переводы для всех форматов могли бы быть получены из краудсорсинга.

Но это будущее.

Вместо этого я ищу краткосрочное эффективное решение для интеграции i18n в мои шаблоны JavaScript. Также должен быть какой-то метод, который можно использовать, когда создание шаблонов невозможно, т. Е. Когда текстовые элементы SVG (которые должны содержать переведенные строки) добавляются динамически.

Я не уверен в плюсах и минусах выполнения этого на стороне сервера (т. е. с node.js ) — пожалуйста, просветите меня — но было бы неплохо, если бы хранилище данных можно было легко поменять местами (с базы данных на файлы и т.д.) В случае, если механизм автономной доставки не поставляется с поддержкой базы данных.

С чего мне следует начать, и есть ли какой-либо путь, который позволит мне постепенно создавать систему i18n без необходимости сдвигать всю парадигму при переходе от мелкомасштабного к крупномасштабному?

Ответ №1:

Идея могла бы заключаться в том, чтобы определить глобальный ярлык, такой как сопоставление (например) _ (подчеркивание) с методом перевода плагина / библиотеки i18n, что угодно и т. д. затем вы можете из своего кода JavaScript (и, следовательно, также из своего шаблона) выполнять вызовы типа

 _("textToLocalize")
  

которое вернет правильно локализованный текст на основе текущего языка.

Затем этот метод может связаться со службой REST (с надлежащим кэшированием) для извлечения локализованных строк с сервера, где они каким-то образом управляются в файлах / таблицах db.

Комментарии:

1. Спасибо, Юрий, не могли бы вы предложить какую-нибудь конкретную библиотеку i18n?

2. Я использую jQuery.i18n.properties, но я не знаю, поддерживает ли он удаленную выборку свойств. Вам нужно было бы проверить в Google, но это не должно быть слишком сложно закодировать самостоятельно, учитывая, что вы хотели бы создать какую-то панель локализации в будущем, как вы упомянули.

3. взгляните на i18next.com — что может предложить клиентская и серверная части (node.js ), поддержка localstorage и и и…