国际化I18n简介
i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要。对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。 在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落。
实现
这里以文本为例,我们知道android应用中的文本一般放在res->values->strings.xml文件中,假设现在我们的应用要再中国和美国使用,那么应用就需要支持英语和中文两种语言,其实现方式就是在项目res目录下建立对应的资源目录。具体的步骤如下:
1.新建资源文件
2.如下图所示,Resource type一栏是选择你要国际化的资源类型,有mipmap,raw,values,xml,layout等;如果你要国际化文字资源,就选择values,图片就选择mipmap。在弹出的窗口中选择Locale,然后点击箭头所指按钮,就会出现图二所示界面,Language选择一种语言,最右边的Specific Region Only选择具体的某个地区,比如你选了英语,最右边区域就会显示所有官方语言为英语的国家。我这里选择的语言是英语,地区是美国,资源类型是values,然后点击OK,系统会自动为你生成名为“values-en-rUS”的文件夹,在该目录下的strings.xml文件就是你存放文字资源国际化的文件
3.将布局文件里面的android:text
属性替换为对应的xml坐标
中文国际化文件的内容
布局文件内的替换位置
要点1
无论是数组资源还是文字资源以及图片资源,在不同的目录下他们的名字要保持一致,这样系统才能在不同的语言环境下找到对应的资源。
如下图:左边是中文环境的strings.xml,右边是英语环境下的strings.xml.要保持名字一致。
要点2
不仅是资源的文件的名称要保持一致,里面的xml的内容也要与 目录/res/values/strings.xml
的内容保持一致
strings.xml内的内容
string.xml(中文国际化文件与英语国际化文件)
国际化案例预览
修改手机模拟器的语言环境为“简体中文”
修改手机模拟器的语言环境为“EngLish”