i18next return 翻译所有语言作为对象
i18next return translation of all languages as object
在我的 Express 应用程序中,我想 return 我的前端应用程序支持的所有语言的错误描述。
有效载荷理想情况下应该是这样的:
{ errors: [messages: { de: “Passwort zu kurz”, en: “Password too short” }] }
由于我不想将依赖于语言的文本直接放在我的路由编码中,所以我考虑使用 i18n-next。但是,我不想使用 t(key)
函数取回一种语言,而是针对特定键取回相应语言 json 的所有语言。
所以理想情况下我会得到类似的东西:
{ errors: [message: functionINeed(“password_short”)] }
然后我会有 de
和 en
两个语言文件,从中提取文本。
有人知道如何实现吗?
我认为 i18next
的 public API 中没有这样的功能。但是,您仍然可以通过以下功能实现您的最终目标:
function getTranslationsForKey(key) {
return i18next.languages.reduce((messages, currentLang) => {
messages[currentLang] = i18next.t(key, { lng: currentLang });
return messages
}, {});
}
const errors = getTranslationsForKey('password_short');
console.log(errors);
// output:
{
en: 'Password too short',
de: 'Passwort zu kurz'
}
它遍历每个已配置的 i18next
语言,为当前语言翻译提供的密钥,并构建一个哈希映射,其中包含该密钥的所有可能翻译。
在我的 Express 应用程序中,我想 return 我的前端应用程序支持的所有语言的错误描述。
有效载荷理想情况下应该是这样的:
{ errors: [messages: { de: “Passwort zu kurz”, en: “Password too short” }] }
由于我不想将依赖于语言的文本直接放在我的路由编码中,所以我考虑使用 i18n-next。但是,我不想使用 t(key)
函数取回一种语言,而是针对特定键取回相应语言 json 的所有语言。
所以理想情况下我会得到类似的东西:
{ errors: [message: functionINeed(“password_short”)] }
然后我会有 de
和 en
两个语言文件,从中提取文本。
有人知道如何实现吗?
我认为 i18next
的 public API 中没有这样的功能。但是,您仍然可以通过以下功能实现您的最终目标:
function getTranslationsForKey(key) {
return i18next.languages.reduce((messages, currentLang) => {
messages[currentLang] = i18next.t(key, { lng: currentLang });
return messages
}, {});
}
const errors = getTranslationsForKey('password_short');
console.log(errors);
// output:
{
en: 'Password too short',
de: 'Passwort zu kurz'
}
它遍历每个已配置的 i18next
语言,为当前语言翻译提供的密钥,并构建一个哈希映射,其中包含该密钥的所有可能翻译。