React i18next和正确的语言更改方式

我正在使用React i18next和开发一个多语言应用程序i18next-browser-languagedetector

我通过以下方式初始化i18next:

i18n

.use(LanguageDetector)

.init({

lng: localStorage.getItem(I18N_LANGUAGE) || "pt",

fallbackLng: "pt",

resources: {

en: stringsEn,

pt: stringsPt

},

detection: {

order: ["localStorage", "navigator"],

lookupQuerystring: "lng",

lookupLocalStorage: I18N_LANGUAGE,

caches: ["localStorage"]

}

});

export default i18n;

而且我实现了一个语言选择器,该选择器仅将中的值更改localStorage为用户选择的值。

这是正确的做法吗?

我问,因为即使这可行,但我仍然感觉自己在通过设置进行“欺骗”,localStorage.getItem(I18N_LANGUAGE) ||

"pt"并且我没有按原样使用语言检测。

回答:

根据文档,您不需要自己指定语言:

import i18next from 'i18next';

import LngDetector from 'i18next-browser-languagedetector';

i18next

.use(LngDetector)

.init({

detection: options

});

而根据这片源中i18next,它的确使用了插件的检测能力:

if (!lng && this.services.languageDetector) lng =

this.services.languageDetector.detect();

这是正确的做法吗?

所以,不,不是。让插件完成它的工作。:)

以上是 React i18next和正确的语言更改方式 的全部内容, 来源链接: utcz.com/qa/435452.html

回到顶部