avatar

[Перевод] Локализация приложений Node.js. Часть 3: локализация в действии

Опубликовал в блог Новости IT технологий
0
От переводчика: Это деcятая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona.

Предыдущие статьи:
  1. "Охотимся за утечками памяти в Node.js"

  2. "Нагружаем Node под завязку"
  3. "Храним сессии на клиенте, чтобы упростить масштабирование приложения"
  4. "Производительность фронтэнда. Часть 1 — конкатенация, компрессия, кэширование"
  5. "Пишем сервер, который не падает под нагрузкой"
  6. "Производительность фронтэнда. Часть 2 — кешируем динамический контент с помощью etagify"
  7. "Приручаем конфигурации веб-приложений с помощью node-convict"
  8. "Производительность фронтенда. Часть 3 — оптимизация шрифтов"
  9. "Локализация приложений Node.js. Часть 1"
  10. "Локализация приложений Node.js. Часть 2: инструментарий и процесс"




Использование строк

Итак, сначала мы подключили к нашему приложению модуль i18n-abide и обернули строки в вызовы gettext. Затем наша команда переводчиков перевела эти строки и у нас есть готовый перевод для каждого языка.

Теперь давайте заставим наше приложение Node.js работать с локализованными строками. Переводы в виде po-файлов лежат в файловой системе в таком виде:

<code class="bash">locale
  en
    LC_MESSAGES
      messages.po
  de
    LC_MESSAGES
      messages.po
  es
    LC_MESSAGES
      messages.po
</code>
Во время выполнения нашего приложения нужно извлекать переведённые строки из этих файлов. Есть два способа сделать это:

  • на стороне сервера с помощью всё той же функции gettext из модуля i18n-abide;
  • на стороне клиента с помощью скрипта gettext.js, который также входит в состав i18n-abide.
Оба этих метода требуют, чтобы строки были в формате JSON. При переводе на стороне сервера они загружаются при старте приложения, а клиент загружает их с помощью HTTP-запросов (или можно включить их в минифицированный файл в процессе сборки).

Так как наша система перевода совместима с GNU Gettext, есть ещё и третий путь — модуль node-gettext. Он довольно эффективен при переводе на стороне сервера.

Дальше мы будем рассматривать первый способ, так как это наиболее привычный способ использования i18n-abide.
Читать дальше →
0 комментариев RSS
Нет комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.