Дело в том, чтобы изменить язык, функция setlanguage извлекает код языка из asyncstorage и устанавливает этот язык, это выполнение выполняется одновременно с другими инициализациями, такими как createStackNavigator, createDrawerNavigator, поэтому измененные языковые строки не применяются к компонентам навигации, таким как ящик. Как можноЯ выполняю заданный язык перед createStackNavigator? Поэтому языковые строки присутствуют заранее.
Я попытался вручную изменить параметр навигации компонентов в componentDidMount домашнего компонента, но это не сработало.
const lang = await AsyncStorage.getItem('selectedLangCode');
if (lang == null) {
try {
await AsyncStorage.setItem('selectedLangCode', 'en');
} catch (e) {
console.log('not able to store language');
}
}
if (lang) {
await strings.setLanguage(lang);
}
И в навигации по App.jsесть код для
createDrawerNavigator(...components...))
Я импортировал функцию languageSetup до импорта app.js в корневой файл (index.js), но выполнение все равно происходит синхронно, поэтому во время работы languageSetup createDrawerNavigator загружает компоненты в ящик. Так что в ящике языковые переводы не применяются