如何在无服务器节点 js 中使用 i18next?
How to use i18next in serverless node js?
我正在使用 Node JS Azure 函数。我正在尝试使用 i18next 将函数返回的错误消息国际化。我可以找到带有 express 或 plain 节点服务器的示例。在这些情况下,可以使用中间件模式。
但是对于函数,我需要一种调用 i18next.t('key') 的方法,可能带有我找不到的语言参数。在每次调用 i18next.t('key') 之前调用 i18next.changeLanguage() 似乎不切实际。
我的骨架代码如下
const i18next = require("i18next");
const backend = require("i18next-node-fs-backend");
const options = {
// path where resources get loaded from
loadPath: '../locales/{{lng}}/{{ns}}.json',
// path to post missing resources
addPath: '../locales/{{lng}}/{{ns}}.missing.json',
// jsonIndent to use when storing json files
jsonIndent: 4
};
i18next.use(backend).init(options);
exports.getString = (key, lang) => {
//i18next.changeLanguage(lang,
return i18next.t(key);
}
是否可以在每次不执行 changeLanguage 的情况下获取翻译?
正如评论中所指出的,只要需要定义或更改语言,您就需要调用 i18next.changeLanguage(lang)
函数。
你可以看看documentation here。
代码可能如下所示
const i18next = require('i18next')
const backend = require('i18next-node-fs-backend')
const options = {
// path where resources get loaded from
loadPath: '../locales/{{lng}}/{{ns}}.json',
// path to post missing resources
addPath: '../locales/{{lng}}/{{ns}}.missing.json',
// jsonIndent to use when storing json files
jsonIndent: 4
}
i18next.use(backend).init(options)
exports.getString = (key, lang) => {
return i18next
.changeLanguage(lang)
.then((t) => {
t(key) // -> same as i18next.t
})
}
我正在使用 Node JS Azure 函数。我正在尝试使用 i18next 将函数返回的错误消息国际化。我可以找到带有 express 或 plain 节点服务器的示例。在这些情况下,可以使用中间件模式。
但是对于函数,我需要一种调用 i18next.t('key') 的方法,可能带有我找不到的语言参数。在每次调用 i18next.t('key') 之前调用 i18next.changeLanguage() 似乎不切实际。
我的骨架代码如下
const i18next = require("i18next");
const backend = require("i18next-node-fs-backend");
const options = {
// path where resources get loaded from
loadPath: '../locales/{{lng}}/{{ns}}.json',
// path to post missing resources
addPath: '../locales/{{lng}}/{{ns}}.missing.json',
// jsonIndent to use when storing json files
jsonIndent: 4
};
i18next.use(backend).init(options);
exports.getString = (key, lang) => {
//i18next.changeLanguage(lang,
return i18next.t(key);
}
是否可以在每次不执行 changeLanguage 的情况下获取翻译?
正如评论中所指出的,只要需要定义或更改语言,您就需要调用 i18next.changeLanguage(lang)
函数。
你可以看看documentation here。
代码可能如下所示
const i18next = require('i18next')
const backend = require('i18next-node-fs-backend')
const options = {
// path where resources get loaded from
loadPath: '../locales/{{lng}}/{{ns}}.json',
// path to post missing resources
addPath: '../locales/{{lng}}/{{ns}}.missing.json',
// jsonIndent to use when storing json files
jsonIndent: 4
}
i18next.use(backend).init(options)
exports.getString = (key, lang) => {
return i18next
.changeLanguage(lang)
.then((t) => {
t(key) // -> same as i18next.t
})
}