Отсутствует проблема перевода с response-native-localize, хотя перевод существует - PullRequest
0 голосов
/ 30 января 2020

У меня проблема с отсутствующим переводом, даже если перевод завершен,

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;

Может кто-нибудь помочь понять, что я делаю неправильно.

любая помощь будет оценена.

1 Ответ

0 голосов
/ 30 января 2020

Я ответил на очень похожий вопрос 2 дня go: Как использовать setLocale в i18n- js?

Я не использовал react-native-localize, но expo-localization но я не знаю, это проблема. Вы по-прежнему используете i18n-js, как я, так что это может применяться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...