我正在使用React、i18next和i18next-browser-languagedetector来开发一个多语言应用程序。
我是这样初始化i18next的:
<p>I am developing a multilanguage application using React, <code>i18next</code> and <code>i18next-browser-languagedetector</code>.</p><p>I initialize i18next the following way:</p>
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"
,我没有像应该那样使用语言检测。
i18next
找不到键?顺便说一下,我正在使用react-i18next
。请检查此链接: https://gist.github.com/pteixeira/4a75160ca15e3edf6975我还有一个语言选择器组件,在初始化时设置localStorage条目的值,检查默认值或用户选择的值。 - pteixeirai18n.changeLanguage(ev.target.value);
(i18n
来自于i18next
)和localStorage.setItem(I18N_LANGUAGE, ev.target.value);
来设置语言。希望这对你有用 :) - pteixeira