Подтвердить что ты не робот

Многоязычное экспресс-приложение

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

Должен ли я просто сделать это?

app.get("/", function(req, res) {
    res.render(language + "/index");
});

Или есть более умный/лучший способ?

4b9b3361

Ответ 1

Я бы предложил оставить только один шаблон, как если бы вы использовали один шаблон для каждого языка, он быстро выйдет из-под контроля, не говоря уже о дублировании большого количества контента (и небольшого количества "логики", которые вы бы вложили в шаблон). Многие приложения используют инструмент, называемый gettext, для выполнения операции интернационализации. Для него есть node.js библиотека https://github.com/DanielBaulig/node-gettext

В качестве альтернативы существует также i18n-node. Похоже, что он немного интегрирован с express js.

Ответ 2

i18n-node - это самый простой и самый большой модуль, который вы должны использовать. Вы можете использовать непосредственно в Javascript-коде или с помощью шаблонов Jade/Handlebar с выражением js.

Почему вы должны использовать i18n?

  • Автоматическое определение локали из браузера по заголовку, файлу cookie или параметру запроса в зависимости от вашей настройки.
  • Он также содержит примеры.
  • Он автоматически генерирует en.json по умолчанию внутри ./locales/. Это действует как основной файл для начала создания новых переводов.
  • Поддерживает особые и множественные формы
  • Поддержка параметров: __('Hello %s', 'Marcus') возвращает Hallo Marcus

Ответ 3

Я думал, что мы можем определить json-объекты в lang-папке, например, en.js, fr.js, и эти json файлы содержат пары ключевых значений, чем рендеринг шаблона в соответствии с настройкой языка пользователя, настройки lang могут быть в базе данных.

И мы можем сохранить этот fr.js или что-нибудь еще в res.locals для вызова каждого шаблона.

Это подходит?