Android学习----自适应国际化语言

【前言】

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

internationalization (国际化)简称: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中的代码如下:

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>

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

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

其实无论手机设置成什么语言,运行的效果都是一样的,因为我们还没有进行国际化设置嘛。那现在开始来设置吧。

现在来加一个中文简体的国际化:在res/目录下新建一个文件夹代表中文简体:values-zh-rCN,目录结构如下图所示:

注:如果想再加一个英语的国际化,新建的文件夹为values-en即可。

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

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>

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

因为手机设置的是中文语言,此时加载的字符串是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的代码保持不变:

<?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>

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

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>

效果:

activity_main.xml的视图如下:

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

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

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

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

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

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

各国语言缩写:http://www.loc.gov/standards/iso639-2/php/code_list.php

国家和地区简写:http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

国家_地区语言速查表:http://www.cnblogs.com/Mien/archive/2008/08/22/1273950.html

时间: 2024-10-07 23:58:08

Android学习----自适应国际化语言的相关文章

Android旋转屏幕后国际化语言失效的解决办法

本文已同步至个人博客:liyuyu.cn 最近在项目中使用到了国际化多语言(英文+中文),但在使用时发现了一个问题,当屏幕旋转后,APP语言(中文)自动转换为了系统语言(英文),设置了Activity的android:configChanges="orientation|screenSize"属性也无效,于是求助Stackoverflow,你懂的,最后问题解决了,于是整理了此文以作参考. 1.新建FunctionApplication类继承Application,覆写onConfigu

Android旋转屏幕后国际化语言失效的解决的方法

本文已同步至个人博客:liyuyu.cn 近期在项目中使用到了国际化多语言(英文+中文),但在使用时发现了一个问题.当屏幕旋转后.APP语言(中文)自己主动转换为了系统语言(英文).设置了Activity的android:configChanges="orientation|screenSize"属性也无效.于是求助Stackoverflow,你懂的,最后问题攻克了.于是整理了此文以作參考. 1.新建FunctionApplication类继承Application.覆写onConfi

Android学习路线(十七)支持不同设备——支持不同的语言

将UI中的字符串从应用代码中提取出来并存放在额外的文件中是一个好习惯.Android在每个项目中通过一个资源目录让这件事变得很简单. 如果你使用Android SDK工具创建了一个项目,这个工具会在你的项目的顶级目录下创建一个 res/ 目录.在这个目录下有很多子目录用来存放多种类型的资源.同样有一些默认的文件,例如res/values/strings.xml,用来存放字符串. 创建区域目录以及字符串文件 为了支持更多的语言,在res/目录下创建附加的values目录,文件名使用values加上

Android学习JNI,使用C调用JAVA语言

本节学习使用C语言调用JAVA语言.在生活中比如我们某些底层的硬件必须使用C语言去编写,当C语言返回的某些数值显示在界面上时,就比如使用JNI.这样可以将C返回的值显示在界面上. 本节模拟传感器返回的值,通过进度条显示灵敏度,然后显示到界面上. 1:界面布局就补多说了.里面就2个Button,一个用于开启监控,一个用于关闭监控,一个进度条 2:Activity代码如下: //开始监控button public void start(View v) { startMonitor(); } //停止

Android学习路线(四)构建一个简单的UI

Android应用的图形化用户界面的构建使用的是View 和 ViewGroup 对象的层次嵌套. View 对象通常是UI部件,例如 buttons 或者 text fields ,而 ViewGroup 是用来定义它的子布局如何排布的容器,它通常是不可见的,例如一个网格或者一个垂直的列表. Android提供XML词汇与View或者ViewGroup的子类的对应,这样的话你就可以通过XML元素的层级嵌套来定义你的UI. 另一种布局 使用XML声明UI比在运行时代码中声明更有用处可以在很多地方

Android 学习资料分享(2015 版)

我是如何自学Android,资料分享(2015 版) Tikitoo2015.02.11 10:21 1713 字 3932 次阅读 自己学了两三个月的Android,最近花了一周左右的时间写了个App--Diigoer(已开源),又花了一两周时间找工作,收到了两个Offer,也算是对自己学习的一种认可吧:我刚开始学习总结的--<我是如何自学Android,资料分享>,如果是初学Android 的话,不应该错过的,而今天这篇分享好这篇文章,相对于第一次写的会有所提升,所以建议先把上一篇看了,再

Android学习系列(17)--App列表之圆角ListView(续)

http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html 本来这篇文章想并到上篇Android学习系列(16)--App列表之圆角ListView中的,但是若是如此就让大家错过一篇新的好的文章,着实可惜.上篇中我们使用shape,corners,gradient实现了一个渐变的圆角效果,但是在完文之后的实践中,我发现有时效果不甚满意,选中和放手的事件监听没有去正确的判断,然后渐变效果也比较单一,性能也觉得不是很快

Android 应用内多语言切换

p.p1 { margin: 0.0px 0.0px 12.0px 0.0px; line-height: 18.0px; font: 12.0px ".PingFang SC"; color: #000000 } p.p3 { margin: 0.0px 0.0px 13.9px 0.0px; line-height: 18.0px; font: 16.8px "PT Sans"; color: #000000 } p.p4 { margin: 0.0px 0.0

Android学习记录一——安装环境

一直想接触这块,但是却一直耽搁到现在.找过几回资料,找过几回安装包,这两天受了些刺(gong)激(zi),决定静下心来,一点点开始吃. 接触c#都是从门外汉开始,谈不上任何编程基础,所以接触android也很慢. 1.首先需要找到开发工具.就像c#winform用VisualStudio,android的基础语言是java,开发工具自然首选eclipse.这个环节走了一些弯路,最后找到了android官网上的ADT(Android Development Tools). 官网介绍: It's a