当i18n.locale更改时,在本机android上更改启动图像

时间:2019-02-04 08:21:37

标签: android react-native splash-screen

我正在开发我的第一个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。有人请帮帮我!

1 个答案:

答案 0 :(得分:1)

您需要制作。不同的图像文件夹作为标准本地化 就像制作不同的string.xml文件

Localize your app

假设某个应用包含一组默认的图形和另外两组图形,每组均针对不同的设备设置进行了优化:

  

res / drawable /

包含默认图形。

  

res / drawable-small-land-stylus /

包含针对需要手写笔输入的设备进行了优化的图形,该设备在横向上具有QVGA低密度屏幕。

  

res / drawable-ja /

包含针对日语使用而优化的图形。