Я занимаюсь разработкой своего первого реагирующего нативного приложения. Прежде всего, извините за длинный вопрос.
Я поддерживаю английский и японский языки (en, jp), используя i18n .У меня есть один экран настроек, на котором мы можем переключаться между этими двумя языками. Когда я переключаюсь на другой, я перезагружаю все свое приложение, используя response-native-restart . Все отлично работает на всех экранах моего приложения.
Но я добавил собственное изображение-заставку для Android, чтобы избежать появления белого экрана при запуске response-native-app. Теперь проблема в том, что при изменении i18n.locale = 'en'
он не меняет родную локаль для Android.У меня есть два изображения-заставки (одно для «en» и другое для «jp»).Я всегда получаю первое изображение (добавлено для 'en') в качестве всплеска.
Решение, которое я пробовал
Я помещаю splash.png на все mipmap- (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) для «en».И создал еще одну папку mipmap-jp- (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) для «jp» и поместил другое изображение.
Ниже приведена структура моей папки для поддержки «jp» и «en».
res:
-> значения
-> значения-jp
-> mipmap-hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi
-> mipmap-jp-hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi
i18n.js
import RNLanguages from 'react-native-languages';
import i18n from 'i18n-js';
import en from './en';
import jp from './jp';
i18n.locale = RNLanguages.language;
i18n.fallbacks = true;
i18n.translations = {en,jp};
RNLanguages.addEventListener('change', ({ language }) => {
i18n.locale = language
})
export default i18n;
Settings.js
...
onChange(value){
if(value === 'USA English'){
setLanguage('en').then().catch(err=>{
console.log(err);
});
i18n.locale = 'en';
}
else{
setLanguage('jp').then().catch(err=>{
console.log(err);
});
i18n.locale = 'jp';
}
}
...
strings.xml
<resources>
<string name="app_name">appname in eng</string>
</resources>
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:datePickerDialogTheme">@style/MyDialogTheme</item>
</style>
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@mipmap/splash</item>
<item name="android:statusBarColor">@color/theme</item>
</style>
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#00c786</item>
</style>
</resources>
В папке values-jpя только что изменил имя приложения в strings.xml и styles.xml имеют одинаковое содержимое.
Я попробовал известные мне способы. Я хочу настроить язык Android на изменение языка и, таким образом, он изменит заставкуи app_name в зависимости от языка. Кто-то, пожалуйста, помогите мне!