Изменение направления приложения на лету без перезапуска всего приложения - PullRequest
0 голосов
/ 19 ноября 2018

Я занимаюсь разработкой собственного приложения на двух языках: английском и персидском (фарси).Я использую I18nManager для установки направления компоновки приложения, но сам управляю переводами и не использую I18nManager для перевода., поэтому обратите внимание, что мой перевод приложения не связан с локалью системы. и локаль приложения полностью независимы от локали системы.

Я передаю язык приложения как опору всем дочерним компонентам в иерархии и управляю его изменениями в компоненте App.js (как корневой компонент системы).(в App.js есть состояние с именем applicationLanguage)

У меня есть функция ниже, которую я вызывал после setState для изменения applicationLanguage:

setApplicationDirection = (language: Language) => {
  I18nManager.allowRTL(language === Language.Farsi);
  I18nManager.forceRTL(language === Language.Farsi);
};

использования setApplicationDirection:

onChangeLanguage = (language: Language) => {
  this.setState({
    applicationLanguage: language
  });
  this.setApplicationDirection(language);
};

после onChangeLanguage мои переводы были изменены без перезапуска приложения.но направление приложения не изменилось.

Я знаю, что могу использовать react-native-restart и вручную перезапустить приложение для вступления в силу, но я действительно предпочитаю, чтобы изменения произошли без перезапуска приложения из-за увеличения UX приложения.в моем приложении пользователь может изменить язык на каждом экране, и, если я перезапущу приложение, ему придется снова перейти на этот экран.

...