我对i18next有一些困惑。我用英语的时候完全正确。但是当我把语言改为zh时,它总是在值是单数的情况下返回复数值。
我尝试升级依赖项,更改配置,但仍然不起作用。
我在下面的链接中提供了一个示例代码。
https://codesandbox.io/s/react-i18next-plurals-forked-jgulw6?file=/public/locales/zh/translation.json
配置
i18n
.use(Backend)
.use(initReactI18next)
.init({
ns: ["common"],
defaultNS: "common",
resources,
fallbackNS: "en",
supportedLngs: ["en", "zh"],
interpolation: {
escapeValue: false
},
react: {
bindI18n: "loaded languageChanged"
},
returnEmptyString: false,
nsSeparator: false
});
export default i18n;
依赖项版本:
i18next 21.3.1
intl-pluralrules 1.3.1
react 17.0.0
react-i18next. 11.12.0
1条答案
按热度按时间6yjfywim1#
这不是一个bug,而是一个特性
不同的语言(地区)有不同的适用复数后缀。
只能使用允许的后缀或到另一个(如果存在)命名空间的i18 n回退。
阅读https://www.i18next.com/translation-function/plurals并使用(由i18 next提供,您可以在上一页找到链接)https://jsfiddle.net/6bpxsgd4来检查您想要的语言(区域设置)支持哪些后缀。
例如:
因此,在提供翻译密钥时,您需要牢记这一点。当我尝试使用“month_one”和“month_other”表示“en”和“ru”时,我也遇到了类似的问题:
这一切都是因为“ru”不支持“_other”后缀。当我只使用“month”和“month_one”键时,问题就解决了。
对于你的情况-中文(zh)只支持“_other”后缀(或者根本不使用后缀):