我正在开发我的第一个React本机应用程序。首先,对我的长期提问深表歉意。
我正在使用i18n支持英语和日语(en,jp)。我有一个设置屏幕,可以在这两种语言之间切换。切换到另一种语言时,我正在使用react-native-restart重新启动整个应用程序。在所有应用程序屏幕上,一切正常。
但是,我添加了原生android初始图像,以避免启动react-native-app时出现白屏。现在,问题是,更改i18n.locale = 'en'
时,它不会更改原生android语言环境。有两个启动画面(一个用于“ en”,另一个用于“ jp”)。总是我得到第一张图像(为“ en”添加)作为我的飞溅。
我尝试过的解决方案
我在所有mipmap-(mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi)处都添加了splash.png。 并为“ jp”创建了另一个文件夹mipmap-jp-(mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi)并放置了另一张图片。
下面是我的文件夹结构,用于支持“ jp”和“ en”。
res:
->值
-> values-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中的app_name具有相同的内容。
我尝试了我所知道的方法。我想在android语言环境中设置onChanging语言,以便它会根据语言更改启动画面和app_name。有人请帮帮我!
答案 0 :(得分:1)
您需要制作。不同的图像文件夹作为标准本地化 就像制作不同的string.xml文件
假设某个应用包含一组默认的图形和另外两组图形,每组均针对不同的设备设置进行了优化:
res / drawable /
包含默认图形。
res / drawable-small-land-stylus /
包含针对需要手写笔输入的设备进行了优化的图形,该设备在横向上具有QVGA低密度屏幕。
res / drawable-ja /
包含针对日语使用而优化的图形。