i18next 处理多个翻译文件嵌套的命名空间
i18next dealing with multiple translation files nested namespaces
我在弄清楚如何使用 i18next 延迟加载我的翻译时遇到问题。
这是我的设置:
i18n
.use(Backend)
.use(LanguageDetector)
.use(initReactI18next)
.init({
debug: NODE_ENV === 'development',
defaultNS: 'translation',
fallbackLng: false,
fallbackNS: 'translation',
keySeparator: false,
lng: 'en',
load: 'currentOnly',
nsSeparator: '.'
});
我有这样的文件夹结构:
├── src
│ └── pages
│ ├── customer
│ │ └── home.tsx
│ └── manager
│ └── dashboard.tsx
我将翻译保存在 /public/locales/en/translation.json
中,这很好用。但是,我的应用程序正在扩展,我不想将一种语言的所有翻译都保存在一个文件中。例如。 customer
不需要下载 manager
门户网站上发生的事情的所有翻译。
我的目标是专门为经理的仪表板下载翻译。
我已经尝试创建一个文件并将其添加到此位置
/public/locales/en/manager/dashboard
然后在我的 React 组件中使用以下钩子:
...
// This probably needs to change
const { t } = useTranslation('manager.dashboard');
return <div>{t('Hello World')}</div>
为了测试它,我的 /public/locales/en/manager/dashboard.json
(我真的想维护这个文件结构)文件中有一个键值:
{ "Hello World": "Goodbye World" }
它不工作(如果我将这个密钥添加到 /public/locales/en/translation.json
文件就可以工作)
如何更改我的配置才能使这个有组织的嵌套翻译文件结构正常工作。
如果您像这样使用 useTranslation:
const { t } = useTranslation('manager.dashboard');
你的文件名应该是这样的/public/locales/en/manager.dashboard.json
顺便说一句。延迟加载时确保使用 Suspense 或检查就绪标志:https://react.i18next.com/latest/usetranslation-hook#not-using-suspense
您也可以查看此页面,关于多个翻译文件:https://react.i18next.com/guides/multiple-translation-files
编辑:或者,你可以试试这个:
const { t } = useTranslation('manager/dashboard');
喜欢这里:https://codesandbox.io/s/react-i18next-http-example-forked-2ptmu?file=/src/app.js:153-162
我在弄清楚如何使用 i18next 延迟加载我的翻译时遇到问题。
这是我的设置:
i18n
.use(Backend)
.use(LanguageDetector)
.use(initReactI18next)
.init({
debug: NODE_ENV === 'development',
defaultNS: 'translation',
fallbackLng: false,
fallbackNS: 'translation',
keySeparator: false,
lng: 'en',
load: 'currentOnly',
nsSeparator: '.'
});
我有这样的文件夹结构:
├── src
│ └── pages
│ ├── customer
│ │ └── home.tsx
│ └── manager
│ └── dashboard.tsx
我将翻译保存在 /public/locales/en/translation.json
中,这很好用。但是,我的应用程序正在扩展,我不想将一种语言的所有翻译都保存在一个文件中。例如。 customer
不需要下载 manager
门户网站上发生的事情的所有翻译。
我的目标是专门为经理的仪表板下载翻译。
我已经尝试创建一个文件并将其添加到此位置
/public/locales/en/manager/dashboard
然后在我的 React 组件中使用以下钩子:
...
// This probably needs to change
const { t } = useTranslation('manager.dashboard');
return <div>{t('Hello World')}</div>
为了测试它,我的 /public/locales/en/manager/dashboard.json
(我真的想维护这个文件结构)文件中有一个键值:
{ "Hello World": "Goodbye World" }
它不工作(如果我将这个密钥添加到 /public/locales/en/translation.json
文件就可以工作)
如何更改我的配置才能使这个有组织的嵌套翻译文件结构正常工作。
如果您像这样使用 useTranslation:
const { t } = useTranslation('manager.dashboard');
你的文件名应该是这样的/public/locales/en/manager.dashboard.json
顺便说一句。延迟加载时确保使用 Suspense 或检查就绪标志:https://react.i18next.com/latest/usetranslation-hook#not-using-suspense
您也可以查看此页面,关于多个翻译文件:https://react.i18next.com/guides/multiple-translation-files
编辑:或者,你可以试试这个:
const { t } = useTranslation('manager/dashboard');
喜欢这里:https://codesandbox.io/s/react-i18next-http-example-forked-2ptmu?file=/src/app.js:153-162