Android设置APP内语言的两个简单方案

5,103 阅读2分钟

方案一:修改配置类中的语言参数,实现对应用语言的变更(推荐)

方案效果:点击“系统语言设置”后,会进入系统语言设置界面,选择不同的语言点击确定,会将修改信息放入配置文件中,然后会弹出是否重启对话框,若选择重启,APP则进入重启,APP重启后,APP的语言读取刚刚的配置文件,实现切换刚刚选择的语言,然而系统语言并没改变。若不选择重启,则下一次重启APP的时候才生效。

技术设计:参照 Android开发者官网 上的描述,系统配置类Configuration包含了设备的所有的配置信息,这些配置信息会影响应用获取的资源。例如string资源,就是根据系统配置类Configuration的local属性来判断该取哪种语言的string资源,默认是value文件夹下的,启动APP时,我们新建一个地区语言类Locale ,然后读取系统中的配置文件获取对应的语言的语言代号和地区代号,比如美式英文的语言代号为"en",地区代号为"US",利用该类Locale可以改系统配置类中的语言参数,实现对应用语言的变更,修改语言时,只需要修改配置文件中的信息,然后重启APP就能实现切换语言。

修改配置类中的语言参数核心代码:

locale需要自己new一个,传进去对应的地区号就行

Resources resources = this.getApplicationContext().getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();
configuration.setLocale(locale);
esources.updateConfiguration(configuration, metrics);

方案二:跳转到系统语言设置中切换系统语言

技术设计:Android中提供了Intent机制来协助应用间的交互与通讯,新建一个Intent添加跳转常量,该Intent负责对应用中一次跳转到系统语言设置的动作,然后附加一个返回提示按键的信息,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用,实现APP中跳转到系统语言设置界面的功能。

普通跳转系统语言设置核心代码:

Intent it = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(it);

带返回键跳转系统语言设置核心代码:

Intent it = new Intent(Settings.ACTION_LOCALE_SETTINGS);
it.putExtra("extra_prefs_show_button_bar", true);//是否显示button bar
it.putExtra("extra_prefs_set_back_text", "提示");
it.putExtra("extra_prefs_set_back_text", "返回");
startActivity(it);