当 i18n.locale 更改时,在本机 android 上更改 Splash Image
Posted
技术标签:
【中文标题】当 i18n.locale 更改时,在本机 android 上更改 Splash Image【英文标题】:Change Splash Image on native android when i18n.locale changes 【发布时间】:2019-06-27 23:15:52 【问题描述】:我正在开发我的第一个反应原生应用程序。首先抱歉我的长问题。
我正在使用 i18n 支持英语和日语 (en,jp)。我有一个设置屏幕,我们可以在这两种语言之间切换。在切换到另一种语言时,我正在使用 react-native-restart 重新启动我的整个应用程序。在我的应用程序的所有屏幕上一切正常。
但是,我添加了原生 android 启动图像以避免在启动 react-native-app 时出现白屏。现在,问题是,在更改 i18n.locale = 'en'
时它不会更改原生 android 语言环境。我有两个飞溅图像(一个用于“en”,另一个用于“jp”)。我总是得到第一张图片(为“en”添加)作为我的启动画面。
我尝试过的解决方案
我将 splash.png 放在所有 mipmap-(mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi) 中作为“en”。 并为“jp”创建了另一个文件夹 mipmap-jp-(mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi) 并放置另一个图像。
下面是我支持“jp”和“en”的文件夹结构。
回复:
->价值观
->价值观-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 中的 app_name 和 styles.xml 具有相同的内容。
我已经尝试了我知道的方法。我想在更改语言时设置 android 区域设置,以便它会根据语言更改启动图像和 app_name。请帮助我!
【问题讨论】:
我只是在这里犯了一个错误。日语代码是ja。我用过jp。现在,在更改手机语言时,splash 和 app_name 正在更改。 i18n.locale更改时我没有找到更改手机语言的方法。我认为无法完成。是吗? 你是如何切换语言的?我在这部分苦苦挣扎?可以请指导吗? 【参考方案1】:你需要制作 .不同的图像文件夹作为标准本地化 就像制作不同的 string.xml 文件一样
Localize your app
假设一个应用包含一组默认图形和另外两组图形,每组都针对不同的设备设置进行了优化:
res/drawable/
包含默认图形。
res/drawable-small-land-stylus/
包含经过优化的图形,可用于需要手写笔输入并具有横向 QVGA 低密度屏幕的设备。
res/drawable-ja/
包含优化用于日语的图形。
【讨论】:
以上是关于当 i18n.locale 更改时,在本机 android 上更改 Splash Image的主要内容,如果未能解决你的问题,请参考以下文章
kibana.yml配置i18n.locale汉化中文Kibana