React + i18next:为什么我的嵌套键不起作用?
React + i18next: Why aren't my nested keys working?
我正在为一个小型网站使用 ReactJS。我决定使用 i18next 进行国际化并且它有效 - 除非我使用嵌套引用作为翻译键。
在下面的示例中,显示了 intro1 和 intro2 键,但未找到 welcome.headtitle(控制台中出现错误 "missingKey")。
App.js:
...
<p><Trans i18nKey='intro1'/></p>
<p><Trans i18nKey='intro2'/></p>
<p><Trans i18nKey='welcome.headtitle'/></p>
...
translation.json:
{
"welcome": {
"headtitle": ...
...
},
"intro1": ...,
"intro2": ...,
}
我知道 i18next 允许嵌套 JSON 翻译对象。我究竟做错了什么?我检查了文档和示例,没有发现任何错误。
虽然使用 "welcome.name" 等的答案是有效的用法,但对于我的用例,我实际上需要使用结构化键,以便更好地构建我的翻译。
让嵌套值对我有用的是从 i18n.init
函数中删除 keySeparator: false
。
代码为:
i18n.use(initReactI18next).init({
resources: {
en: {translation: EN},
fr: {translation: FR},
},
lng: 'en',
fallbackLng: 'en',
// keySeparator: false, // this was the line that I've had to remove to make it work
interpolation: {
escapeValue: false,
},
});
我的 JSON 看起来像:
{
"nested": {
"value": "Trying a nested value"
}
}
我的 HTML(div 在我的 React 组件中):
<div>{t("nested.value")}</div>
我正在为一个小型网站使用 ReactJS。我决定使用 i18next 进行国际化并且它有效 - 除非我使用嵌套引用作为翻译键。
在下面的示例中,显示了 intro1 和 intro2 键,但未找到 welcome.headtitle(控制台中出现错误 "missingKey")。
App.js:
...
<p><Trans i18nKey='intro1'/></p>
<p><Trans i18nKey='intro2'/></p>
<p><Trans i18nKey='welcome.headtitle'/></p>
...
translation.json:
{
"welcome": {
"headtitle": ...
...
},
"intro1": ...,
"intro2": ...,
}
我知道 i18next 允许嵌套 JSON 翻译对象。我究竟做错了什么?我检查了文档和示例,没有发现任何错误。
虽然使用 "welcome.name" 等的答案是有效的用法,但对于我的用例,我实际上需要使用结构化键,以便更好地构建我的翻译。
让嵌套值对我有用的是从 i18n.init
函数中删除 keySeparator: false
。
代码为:
i18n.use(initReactI18next).init({
resources: {
en: {translation: EN},
fr: {translation: FR},
},
lng: 'en',
fallbackLng: 'en',
// keySeparator: false, // this was the line that I've had to remove to make it work
interpolation: {
escapeValue: false,
},
});
我的 JSON 看起来像:
{
"nested": {
"value": "Trying a nested value"
}
}
我的 HTML(div 在我的 React 组件中):
<div>{t("nested.value")}</div>