【发布时间】:2020-01-30 15:02:10
【问题描述】:
即使翻译退出,我也有翻译缺失的问题,
const translationGetters = {
en: () => require('./translations/en.json'),
de: () => require('./translations/de.json'),
};
const translate = memoize(
(key, config) => i18n.t(key, config),
(key, config) => (config ? key + JSON.stringify(config) : key),
);
const setI18nConfig = () => {
// fallback if no available language fits
const fallback = {languageTag: 'en', isRTL: false};
const {languageTag, isRTL} =
RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) ||
fallback;
// clear translation cache
translate.cache.clear();
// update layout direction
I18nManager.forceRTL(isRTL);
// set i18n-js config
i18n.translations = {[languageTag]: translationGetters[languageTag]()};
i18n.locale = languageTag;
};
const App = () => {
handleLocalizationChange = () => {
setI18nConfig()
.then(() => this.forceUpdate())
.catch(error => {
console.error(error);
});
};
useEffect(() => {
setI18nConfig();
RNLocalize.addEventListener('change', handleLocalizationChange);
return () => {
RNLocalize.removeEventListener('change', handleLocalizationChange);
};
}, []);
return (
<ThemeProvider theme={ThemeRed}>
<AppContainer />
</ThemeProvider>
);
};
export default App;
在主屏幕中
import i18n from 'i18n-js';
const HomeScreen = ({...props}) => {
return (
<SafeAreaView style={styles.mainView}>
<Text style={styles.welcomeText}>{i18n.t('welcome')}</Text>
</SafeAreaView>
);
};
export default HomeScreen;
谁能帮忙看看我做错了什么。
任何帮助将不胜感激。
【问题讨论】:
-
您找到解决方案了吗?我面临着同样的问题。
-
我也有同样的问题 +1
-
同样的问题。你能解决这个问题吗?