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