【前言】

自适应的知识与编程无关,关键在于配置文件的修改。自适应的内容包括:语言、屏幕、平台。今天就来说一下如何自适应国际化言。

i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。

语言_地区的形式表示一种语言,如:zh_CN表示简体中文。

 

操作方法:

在res/目录下在重新新建文件夹为:values-国家编号,如values-zh-rCN表示简体中文,values-zh-rTW表示繁体,values-jp表示日语等。

语言代号和地区代号。表示中文和中国的配置选项是 zh-rCN; 表示英文和美国的配置选项是en-rUS。其中,zh 和 en 表示中文和英文;CN和US表示中国和美国;前面的r是必须的。

 

举例:支持中文简体的国际化

操作如下:

现在新建一个Android工程Android_i18n,默认在res/values/strings.xml中的代码如下:


android支持国际化语言 android国际化英文_本地化



1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 
4     <string name="app_name">" Android_i18n"</string>
5     <string name="hello_world">Hello world!</string>
6     <string name="action_settings">Settings</string>
7 
8 </resources>



android支持国际化语言 android国际化英文_本地化


不做任何修改,直接在手机上运行程序,默认的效果如下:


android支持国际化语言 android国际化英文_自适应_03

声明:我的手机默认的语言是设置为中文的:


android支持国际化语言 android国际化英文_android应用_04

那现在开始来设置吧。

values-zh-rCN,目录结构如下图所示:


android支持国际化语言 android国际化英文_中国_05

values-en即可。

修改res/values-zh-rCN/strings.xml的代码,如下:


android支持国际化语言 android国际化英文_本地化



1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 
4     <string name="app_name">" 安卓国际化"</string>
5     <string name="hello_world">你好,世界</string>
6     <string name="action_settings">设置</string>
7 
8 </resources>



android支持国际化语言 android国际化英文_本地化


此时运行程序,效果如下:


android支持国际化语言 android国际化英文_android应用_08

因为手机设置的是中文语言,此时加载的字符串是res/values-zh-rCN/目录下的资源。

大功告成。

 

问题一:

现在我并没有添加繁体中文的对应的资源,如果我将手机的语言设置为繁体中文,运行程序会是什么现象呢?

如果没有定义繁体中文的资源,那默认加载的就是res/values/目录下的资源。

问题二:

定义一个字符串,只在res/values-zh-rCN/下定义,而不在res/values/定义,运行程序会是什么现象呢?

答案:

现在我们在activity_main.xml中添加一个按钮:


1     <Button 
2         android:layout_width="match_parent"
3         android:layout_height="wrap_content"
4         android:text="@string/login_button"/>


第04行代码:按钮显示的名字引用了字符串login_button

此时,让res/values/strings.xml的代码保持不变:


android支持国际化语言 android国际化英文_本地化



<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">" Android_i18n"</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

</resources>



android支持国际化语言 android国际化英文_本地化


在res/values-zh-rCN/strings.xml中加一行login_button的声明:(第07行代码)


android支持国际化语言 android国际化英文_本地化



1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 
4     <string name="app_name">" 安卓国际化"</string>
5     <string name="hello_world">你好,世界</string>
6     <string name="action_settings">设置</string>
7     <string name="login_button">登陆按钮</string>
8 
9 </resources>



android支持国际化语言 android国际化英文_本地化


效果:

activity_main.xml的视图如下:


android支持国际化语言 android国际化英文_中国_13

运行程序,如果手机的语言设置为英文,效果如下:(非正常显示)


android支持国际化语言 android国际化英文_中国_14

如果手机的语言设置为中文,效果如下:(能正常显示)


android支持国际化语言 android国际化英文_本地化_15

 

其实,国际化并不难,但是如果想支持更多国家的语言,工作量会很大的。

最后附上用于平时用于查阅的东西:

国家_地区的语言缩写代码:(查询备用)


android支持国际化语言 android国际化英文_自适应_16

 

附上国际化资源的常用链接: