我正在使用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
。