У меня проблема с отсутствующим переводом, даже если перевод завершен,
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;
и в HomeScreen
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;
Может кто-нибудь помочь понять, что я делаю неправильно.
любая помощь будет оценена.