android - 当 i18n.locale 更改时,在本机 android 上更改 Splash Image
问题描述
我正在开发我的第一个反应原生应用程序。首先对我的长问题感到抱歉。
我正在使用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;
设置.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';
}
}
...
字符串.xml
<resources>
<string name="app_name">appname in eng</string>
</resources>
样式.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。请帮助我!
解决方案
你需要制作 . 不同的图像文件夹作为标准本地化,就像制作不同的 string.xml 文件一样
假设一个应用程序包含一组默认图形和另外两组图形,每组都针对不同的设备设置进行了优化:
资源/可绘制/
包含默认图形。
res/drawable-small-land-stylus/
包含针对需要手写笔输入并具有横向 QVGA 低密度屏幕的设备而优化的图形。
res/drawable-ja/
包含优化用于日语的图形。
推荐阅读
- c++ - 对统一写入筛选器 (UWF) 的某些 WMI 调用返回拒绝访问错误
- javascript - 如何使用 infura 在部署在 ropsten 测试网上的智能合约中调用 setter 函数
- python - KerasRegression Loss 太大
- node.js - Nuxt.js - 如何仅在服务器端填充应用程序启动时的初始 vuex 状态?
- java - 如何检查 recyclerView 是否为空 Espresso
- javascript - 新的 Intl.NumberFormat 'de-DE' 没有返回预期的结果
- flutter - 在 mapEventToState 中使用 yield 和 Either 时测试我的块失败
- javascript - 为什么我的文本在移动设备上的条纹卡元素输入字段中被截断
- javascript - 来自 Asp:button 的 HTML 输入文本值
- ode - 在受限域上求解(刚性)ODE