我正在尝试获取RN i18next,并根据来自react-native-i18n的当前语言环境提供翻译(已经在本地设置翻译了)
我在这里找到languageDetector库时遇到问题: https://github.com/DylanVann/i18next-react-native-language-detector
如果找不到对象的参数“替换”,则会引发错误。
所以我想我会使用以下代码设置自己的locize / languageDetector。
但是。.语言环境更改时似乎没有更新。.
我在做什么错了?
在i18next.js中:
import i18next from "i18next";
import LocizeBackend from "i18next-locize-backend";
import I18n from "../i18n/i18n";
const languageDetector = {
init: Function.prototype,
type: "languageDetector",
async: true, // flags below detection to be async
detect: lng => I18n.locale,
cacheUserLanguage: () => {}
};
i18next
.use(languageDetector)
.use(LocizeBackend)
.init({
fallbackLng: I18n.locale,
lng: I18n.locale,
debug: true,
whitelist: ["en", "fr", "sv", "dev"],
keySeparator: false,
ns: ["common"],
defaultNS: "common",
saveMissing: false,
interpolation: {
escapeValue: false
},
backend: {
referenceLng: "en",
}
});
答案 0 :(得分:1)
您使用的I18n.locale语言检测似乎不同步->因此,请删除async: true
...如果在i18next.init上设置了语言,它将不再使用检测器...
您也可以将此检测器用作示例:https://github.com/dormakaba-digital/digital-reactnative-client/blob/master/src/modules/i18n/i18n.js#L4->使用过的deviceInfo模块