Я занимаюсь разработкой собственного приложения на двух языках: английском и персидском (фарси).Я использую 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 приложения.в моем приложении пользователь может изменить язык на каждом экране, и, если я перезапущу приложение, ему придется снова перейти на этот экран.