[Перевод] Локализация приложений Node.js. Часть 3: локализация в действии
От переводчика: Это деcятая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona. Предыдущие статьи: «Охотимся за утечками памяти в Node.js»
«Нагружаем Node под завязку»
«Храним сессии на клиенте, чтобы упростить масштабирование приложения»
«Производительность фронтэнда. Часть 1 — конкатенация, компрессия, кэширование»
«Пишем сервер, который не падает под нагрузкой»
«Производительность фронтэнда. Часть 2 — кешируем динамический контент с помощью etagify»
«Приручаем конфигурации веб-приложений с помощью node-convict»
«Производительность фронтенда. Часть 3 — оптимизация шрифтов»
«Локализация приложений Node.js. Часть 1»
«Локализация приложений Node.js. Часть 2: инструментарий и процесс»
Использование строк
Итак, сначала мы подключили к нашему приложению модуль i18n-abide и обернули строки в вызовы gettext. Затем наша команда переводчиков перевела эти строки и у нас есть готовый перевод для каждого языка.
Теперь давайте заставим наше приложение Node.js работать с локализованными строками. Переводы в виде po-файлов лежат в файловой системе в таком виде: locale
en
LC_MESSAGES
messages.po
de
LC_MESSAGES
messages.po
es
LC_MESSAGES
messages.po
Во время выполнения нашего приложения нужно извлекать переведённые строки из этих файлов. Есть два способа сделать это: на стороне сервера с помощью всё той же функции gettext из модуля i18n-abide;
на стороне клиента с помощью скрипта gettext.js, который также входит в состав i18n-abide.
Оба этих метода требуют, чтобы строки были в формате JSON. При переводе на стороне сервера они загружаются при старте приложения, а клиент загружает их с помощью HTTP-запросов (или можно включить их в минифицированный файл JavaScript в процессе сборки).
Так как наша система перевода совместима с GNU Gettext, есть ещё и третий путь — модуль node-gettext. Он довольно эффективен при переводе на стороне сервера.
Дальше мы будем рассматривать первый способ, так как это наиболее привычный способ использования i18n-abide.Читать дальше →
