Android Studio 中对Android进行国际化
国际化要求App能够根据Android系统设置的语言类型或者用户的设定返回对应语言的界面。 英文为internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符。
通常一种语言的表示,采用“语言_地区”的形式,例如:
* zh_cn 简体中文
* zh_hk 繁体中文(中国香港)
* zh_tw 繁体中文(中国台湾地区)
* en_us 英语(美国)
在Android中国际化包括两种方式:
方式一:Android系统语言可以在系统设置中进行设置,APP的语言随着Android系统语言的改变而改变;
方式二:通过代码中设置APP的语言,此种方式仅仅对本APP的语言进行设置,Android系统设置中更改语言设置不会改变此APP的语言。
方式一
res目录中生成针对不同语言的values:
1.在Android中,通常把字符串存放在工程资源目录中的strings.xml文件中,工程结构切换到Android模式下,打开res/values目录下有string.xml文件,如图:
2.鼠标右键单击values文件夹,弹出菜单中选择“New->Values resource file”,弹出“New Resource File”对话框,如图所示:
3.输入文件名为strings,并且Available qualifiers中选择Locale,根据APP国际化的语言要求,分别在Language和Specific Region Only中选择对应的语言和地区,如图所示:
4.点击OK生成相应语言的values文件夹,并且values文件夹中生成strings.xml,将该strings.xml文件中字符串改为相应语言文字,这样就实现了对这种语言的支持。例如我们想让APP支持简体中文、繁体中文(台湾)、英语(美国),那么我们的values文件夹和strings.xml分别如下:
简体中文values文件夹为values-zh-rCN,strings.xml内容为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="content">我是中国人</string>
</resources>
繁体中文(台湾)values文件夹为values-zh-rTW,strings.xml内容为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="content">我是中國人</string>
</resources>
英语(美国)values文件夹为values-en-rUS,strings.xml内容为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="content">I am a Chinese</string>
</resources>
我们让TextView中显示“content”字符串。
我们运行demo测试可以发现,当我们在Android系统的系统设置中分别设置语言为简体中文、繁体中文(台湾)、英语(美国),页面显示文字也相应的切换为了对应语言的文字。
方式二
在按照第一种方式生成所需语言的values文件夹和strings.xml文件后,在APP代码中设置指定语言:
//获得res资源对象
Resources resources =getResources();
//获得设置对象
Configuration config = resources.getConfiguration();
//获得屏幕参数:主要是分辨率,像素等。
DisplayMetrics dm = resources.getDisplayMetrics();
//英语(美国)
//config.locale = Locale.US;
//繁体中文(台湾)
//config.locale = Locale.TAIWAN;
//简体中文
config.locale = Locale.CHINA;
resources.updateConfiguration(config, dm);
建议上面代码填写在setContentView方法前,否则需要重新Activity才能生效。