мой сценарий: Node.js + Express + Handlebars + i18next app.
Я хотел бы установить язык по умолчанию для ключа конфигурации базы данных. Если я решу, что языком по умолчанию должен быть X вместо Y, я бы просто изменил его и сохранил этот выбор в серверной части своего приложения. Проблема в том, что я не хочу перезагружать все приложение каждый раз, когда меняю язык по умолчанию, и поэтому я не могу сделать это в методе i18next.init()
. Язык по умолчанию должен считываться из базы данных при каждом запросе страницы и использоваться, если от текущего пользователя не было сделано других вариантов. Моя идея заключалась в следующем, но она не работает:
const express = require('express');
const i18next = require('i18next');
const app = express();
...
i18next.init(...);
...
app.use((req, res, next) => {
const lng = someLogicToDecideLanguage();
i18next.changeLanguage(lng, (err, t) => {
if (err) {
next(err);
}
console.log(i18next.language); // it's changed!
next();
});
});
Если я регистрирую i18next.language
в результате обратного вызова changeLanguage
, кажется, что он изменился, но когда представление отображается, язык не меняется.
Спасибо!