[Перевод] Локализация приложений 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.Читать дальше →