i18next 不应该在加载后备语言之前等待语言检测结果
Shouldn't i18next wait for language detection result before loading fallback language
我使用 react-i18next example 作为基础。
我用自定义语言检测器替换了 'i18next-browser-languagedetector':
class MyLanguageDetector {
constructor(services, options = {}) {
this.async = true;
this.init(services, options);
}
init(services, options = {}, i18nOptions = {}) { }
detect(callback) {
setTimeout(() => {
callback('de')
}, 5000);
}
cacheUserLanguage(lng, caches) { }
}
MyLanguageDetector.type = 'languageDetector';
配置:
i18n
.use(MyLanguageDetector)
.use(Backend)
.use(reactI18nextModule)
.init({
fallbackLng: 'en',
debug: true,
interpolation: { escapeValue: false },
react: { wait: true }
});
我看到的是:
i18next::backendConnector: loaded namespace translation for language en
约 5 秒后:
i18next::backendConnector: loaded namespace translation for language de
我预计 'en' 不会被加载,因为检测到的语言是 'de'
fallbackLng
始终加载,以便在当前语言翻译文件缺少特定 key/resource
时可以使用它
我使用 react-i18next example 作为基础。 我用自定义语言检测器替换了 'i18next-browser-languagedetector':
class MyLanguageDetector {
constructor(services, options = {}) {
this.async = true;
this.init(services, options);
}
init(services, options = {}, i18nOptions = {}) { }
detect(callback) {
setTimeout(() => {
callback('de')
}, 5000);
}
cacheUserLanguage(lng, caches) { }
}
MyLanguageDetector.type = 'languageDetector';
配置:
i18n
.use(MyLanguageDetector)
.use(Backend)
.use(reactI18nextModule)
.init({
fallbackLng: 'en',
debug: true,
interpolation: { escapeValue: false },
react: { wait: true }
});
我看到的是:
i18next::backendConnector: loaded namespace translation for language en
约 5 秒后:
i18next::backendConnector: loaded namespace translation for language de
我预计 'en' 不会被加载,因为检测到的语言是 'de'
fallbackLng
始终加载,以便在当前语言翻译文件缺少特定 key/resource