【发布时间】:2021-12-02 07:29:14
【问题描述】:
我已在我的 Express 应用程序中包含 i18next 并对其进行如下配置:
const i18next = require('i18next');
const Backend = require('i18next-fs-backend');
const i18nextMiddleware = require('i18next-http-middleware');
i18next
.use(Backend)
.use(i18nextMiddleware.LanguageDetector)
.init({
backend: {
loadPath: __dirname + '/locales/{{lng}}/{{ns}}.json'
},
fallbackLng: 'en',
preload: ['en', 'de']
});
我的翻译文件的路径是正确的,如下所示:
locales/de/translation.json
{
"SignIn": "Anmelden",
"Username": "Benutzername",
"Password": "Passwort",
"Login": "Anmelden"
}
locales/en/translation.json
{
"SignIn": "Sign in",
"Username": "Username",
"Password": "Password",
"Login": "Login"
}
在渲染ejs模板的时候,我是这样把i18next的t函数传给视图的
res.render("index",{t:i18next.t});
在模板中,我然后使用如下值:
<h2 class="ui center aligned header"><%= t("SignIn") %></h2>
结果是什么都没有显示,无论是备用语言还是德语,因为我的浏览器是德语,语言检测器应该检测到它。
我读到您必须重新绑定 t 函数才能使其在视图中工作,我也尝试过,像这样:
res.render("index", {t: i18next.t.bind(i18next.t)});
我这样做后,会立即呈现备用语言,如果我将其更改为德语,也会呈现德语。
但是没有自动检测到语言
【问题讨论】:
标签: node.js typescript express i18next