我正在致力于将I18Next集成到一个Reaction项目中,使用REACT-18NEXT,并使用I18Next-parser生成带有当前翻译字符串的JSON文件,并使用自然语言键.
在我的源代码中,我有一些类似的东西:
<p>{t('{{count}} Sensors', { count: getSensorCount() })}</p>
其中getSensorCount()
返回一个数字.
我的i18next-parser配置如下:
{
locales: ['en', 'fr', 'es'],
output: 'src/locales/$LOCALE/$NAMESPACE.json',
defaultValue: (locale, namespace, key, value) => value || key,
keySeparator: false,
namespaceSeparator: false,
verbose: true,
createOldCatalogs: false
}
运行解析器将生成一个带有如下键的JSON文件:
{
...
"{{count}} Sensors_one": "{{count}} Sensors",
"{{count}} Sensors_other": "{{count}} Sensors",
...
}
然后我将Sensors_One的值更改为{{count}} Sensor
.
当count
为1时,我希望返回"1传感器".这也是i18next文档描述复数的工作方式.
然而,它只是返回密钥,似乎无法在JSON文件中找到翻译.
要让它返回正确的值,唯一的方法是像这样更改密钥:
"{{count}} Sensors": "{{count}} Sensor",
"{{count}} Sensors_plural": "{{count}} Sensors",
我想知道复数键的正确语法是什么,以及
如果是key_one
和key_other
,我如何让我的项目认识到这一点
如果是key
和key_plural
,我将如何获得我的i18next-parser配置以使用正确的键生成JSON文件.
我的包版本如下:
"i18next": "^20.6.1",
"i18next-parser": "^8.0.0",
"react-i18next": "^13.0.0",
"react": "^18.2.0",
谢谢.
编辑:Codesandbox示例: https://codesandbox.io/s/react-i18next-forked-l5t9ws?file=/src/app.js个