我正在这样使用i18next
和i18next-browser-languageDetector
:
await (i18next
.use(initReactI18next)
.use(LanguageDetector)
.init({
resources,
fallbackLng: process.env.DEV ? 'dev' : DEFAULT_LANGUAGE,
debug: Boolean(process.env.DEV),
returnObjects: true,
interpolation: {
escapeValue: false,
},
detection: {
// Order and from where user language should be detected:
order: ['localStorage', 'cookie', 'navigator'],
// Keys or params to lookup language from:
lookupLocalStorage: I18N_LANGUAGE_KEY,
lookupCookie: I18N_COOKIE_KEY,
// Cache user language on:
caches: ['localStorage', 'cookie'],
// Only detect languages that are in the whitelist:
checkWhitelist: true,
},
}));
现在,检测是在i18next
库的初始化阶段进行的,该阶段是异步的,因此,如果我要检查已检测到的语言(i18next.language
),则需要等待完成。
问题是我需要在i18next
加载资源之前检测语言,以便在向后端发出任何请求之前在Accept-Language
中设置axios
标头。
我知道自己可以自己阅读localStorage
,cookies
或navigator
,但是如果有以下情况,我想使用i18next-browser-languageDetector
中已内置的功能可能。