Android 资源国际化问题(1): 来自开源的启示

真实的感受告诉我,开源给人以启示。

今天,主要根据开源项目以及android源码自带app,说明android资源国际化问题。

这篇文章http://www.cnblogs.com/yangshaoning/archive/2010/09/12/1824432.html写的不错。

1. sipdroid

这个开源项目,很经典。其框架思想,令人观止。先看几张图吧!

drawable文件夹


layout文件夹


values文件夹,支持不同语言


2. Contacts

来自android源码的app


3. 图片国际化


应用场景:
显示图片,如某张图片显示“开始”(中文设置),那么为了国际化,需要将该图片改为显示“start”的图片。注意:不管是“开始”图片,还是“start”图片,在drawable××下面名称必须一致如pic_start.png,这样在代码中引用资源时方便,且适应android系统的自动选择。如图pic_start.png


还有,在不同语言环境中显示不同国家国旗等。

注意:上面的文件中包含land-320x240、land-480x320是为了适应这两中屏幕大小的手机。关于屏幕的自适应问题,关注下篇相关博客。

4.  参考其它



drawable-en:英文设置下的图片资源,drawable-zh中文设置下的图片资源。
如果要为不同像素的手机准备的话,需要(以drawable-en为例说明)
:drawable-en-hdpi
:drawable-en-ldpi
:drawable-en-mdpi
同理:为美式英语,
:drawable-en-rUS-hdpi
:drawable-en-rUS-ldpi
:drawable-en-rUS-mdpi
再复杂一点,为不同方向的准备图片资源
//竖直
:drawable-en-rUS-port-hdpi
:drawable-en-rUS-port-ldpi
:drawable-en-rUS-port-mdpi
//水平
:drawable-en-rUS-land-hdpi
:drawable-en-rUS-land-ldpi
:drawable-en-rUS-land-mdpi

5.  相关说明



另外,建立这些文件夹是有顺序的。即按优先级别排列的,见下表。所以建立文件夹时一般从左到右的排列其优先级别如:drawable-en-rUS-land-mdpi
如:drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480x320/

限定符Qualifier

Values

移动国家码MCC和移动网络码MNC

手机设备SIM卡上的移动国家码和移动网络码。比如mcc310-mnc004 (美国,Verizon品牌); mcc208-mnc00 (法国,Orange品牌); mcc234-mnc00 (英国,BT品牌). 
如果这个设备使用一个无线连接(GSM电话),则MCC来自SIM卡,而MNC来自该设备将要附着的网络。你有时会仅使用MCC,例如包含特定国家合法资源在您的应用程序中。如果您的应用程序指定了MCC/MNC组合的资源,这些资源仅在MCCMNC都匹配的时候才能使用。

语言和区域Languageand region

两个字母的ISO639-1语言码和ISO3166-1-alpha-2区域码 ("r"为前缀)。比如en-rUS,fr-rFR,es-rES.这个代码是大小写敏感的:语言码是小写字母,国家码是大写字母。你不能单独指定一个区域,但是你可以单独指定一个语言,比如en,fr, es, zh.

屏幕方向Screenorientation

纵向,横向,正方形(port,land, square

屏幕像素密度Screenpixel density

92dpi,108dpiAndroid选择使用哪个资源时,它对屏幕像素密度的处理和其它限定符不同。在文章后面描述的步骤1Android如何查找最匹配的目录中,屏幕密度总被认为是匹配的。在步骤4中,如果被考虑的限定符是屏幕密度,Android将选择在那个位置的最佳匹配,而无需继续步骤5

触摸屏类型Touchscreentype

非触摸式,触摸笔,手指(notouch,stylus, finger

键盘可用方式Whetherthe keyboard is available to the user

外在键盘,隐藏键盘,软键盘(keysexposed,keyshidden,keyssoft
如果你的应用程序有一个特定的资源只能通过软件盘使用,则使用keyssoft 值,如果没有keyssoft 资源可用(只有keysexposed  keyshidden)并且该设备显示了一个软键盘,那么系统将使用keysexposed 资源。

首选文本输入方法Primarytext input method

不支持按键,标准键盘,12(nokeys,qwerty, 12key)

首选非触摸式导航方法Primarynon-touchscreen
navigation method

不支持导航,滑板,跟踪球,滚轮(nonav,dpad, trackball, wheel)

屏幕分辨率Screendimensions

320x240,640x480更大的分辨率必须先被指定。

SDK版本SDKversion

设备支持的SDK版本,比如v3Android1.0SDKv11.1SDKv21.5SDKv3

小版本(Minorversion)

你目前还不能指定小版本,它总是被设置为0

6. 推荐文章

sdk-path/docs/guide/topics/resources/index.html
sdk-path/docs/guide/practices/screens_support.html



©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页