您的位置:首页 > 移动开发 > Android开发

Android Quantity Strings 的 getQuantityString方法取值问题

2016-03-11 15:39 501 查看
(转载)http://blog.csdn.net/a78270528/article/details/46791533  

不同的语言对数量的语法规定有不同的规则。在英语里面,例如,1是特例。我们会直接写1book,而针对一个以上的我们会在book后加复数形式。这种区别对单数和复数来说是很普遍的。对Android来说,它支持zero,one,two,few,many,和other。

  对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适的资源。

  尽管历史上称为“数量字符”(在API里面还是这样称呼),数量字符应该仅仅用于plurals。使用数量字符比使用if语句更方便,但是需要看到有些语言(例如中文)根本没有语法区别,所以你会一直得到other字符。

如果我们在使用getQuantityString方法时,一直返回other的情况,是因为我们在中文环境下开发。为了测试,我们可以把手机语言设置为English,再来调用getQuantityString方法,注意:如果我们按下面的方式使用:

[html] view
plain copy

 print?

<plurals name="numberOfSongsAvailable">   

       <item quantity="zero">Zero song found.</item>   

       <item quantity="one">One song found.</item>   

       <item quantity="two">Two song found.</item>   

       <item quantity="few">Few song found.</item>   

       <item quantity="other">Other song found.</item>   

       <item quantity="many">Many song found.</item>   

</plurals>   

提示:For language "en" (English) the following quantities are not relevant: few, many, two, zero,也就是说,英文下只支持one或other,至于哪种语言会全部支持,还需要具体使用具体观察。


描述
zero                     
语言需要对数字0进行特殊处理。(比如阿拉伯语)
one
语言需要对类似1的数字进行特殊处理。(比如英语和其它大多数语言里的1;在俄语里,任何以1结尾但不以11结尾的数也属于此类型。)
two
语言需要对类似2的数字进行特殊处理。(比如威尔士语)
few
语言需要对较小数字进行特殊处理(比如捷克语里的2、3、4;或者波兰语里以2、3、4结尾但不是12、13、14的数。)
many
语言需要对较大数字进行特殊处理(比如马耳他语里以11-99结尾的数)
other
语言不需要对数字进行特殊处理。
  调用:

[java] view
plain copy

 print?

int count = 1;    

Resources res = getResources();    

String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count, count);  

Note:一个plural集合是一个简单的资源,它可以通过name的属性来访问(不是xml文件的name)。这样,你可以把plural资源和其他的简单资源一样放在同一个xml 文件里面,在同一个<resoures>节点下。 

  android多国语言文件夹文件汇总如下:

  通常国际化我们只要在res/目录下在重新定义values-国家编号,如values-zh-rCN简体汉语,values-zh-rTW繁体,values-jp日语等。

  


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

常见的有:

zh_cn: 简体中文

zh_hk: 繁体中文(中国香港)  

zh_tw: 繁体中文(中国台湾地区)

en-hk: 英语(香港)

en_us: 英语(美国)

en_gb: 英语(英国)

en_ww: 英语(全球)

ja_jp: 日语(日本)

ko_kr: 韩文(韩国)

其它:

中文(中国):values-zh-rCN

中文(台湾):values-zh-rTW

中文(香港):values-zh-rHK

英语(美国):values-en-rUS

英语(英国):values-en-rGB

英文(澳大利亚):values-en-rAU

英文(加拿大):values-en-rCA

英文(爱尔兰):values-en-rIE

英文(印度):values-en-rIN

英文(新西兰):values-en-rNZ

英文(新加坡):values-en-rSG

英文(南非):values-en-rZA

阿拉伯文(埃及):values-ar-rEG

阿拉伯文(以色列):values-ar-rIL

保加利亚文:  values-bg-rBG

加泰罗尼亚文:values-ca-rES

捷克文:values-cs-rCZ

丹麦文:values-da-rDK

德文(奥地利):values-de-rAT

德文(瑞士):values-de-rCH

德文(德国):values-de-rDE

德文(列支敦士登):values-de-rLI

希腊文:values-el-rGR

西班牙文(西班牙):values-es-rES

西班牙文(美国):values-es-rUS

芬兰文(芬兰):values-fi-rFI

法文(比利时):values-fr-rBE

法文(加拿大):values-fr-rCA

法文(瑞士):values-fr-rCH

法文(法国):values-fr-rFR

希伯来文:values-iw-rIL

印地文:values-hi-rIN

克罗里亚文:values-hr-rHR

匈牙利文:values-hu-rHU

印度尼西亚文:values-in-rID

意大利文(瑞士):values-it-rCH

意大利文(意大利):values-it-rIT

日文:values-ja-rJP

韩文:values-ko-rKR

立陶宛文:valueslt-rLT

拉脱维亚文:values-lv-rLV

挪威博克马尔文:values-nb-rNO

荷兰文(比利时):values-nl-BE

荷兰文(荷兰):values-nl-rNL

波兰文:values-pl-rPL

葡萄牙文(巴西):values-pt-rBR

葡萄牙文(葡萄牙):values-pt-rPT

罗马尼亚文:values-ro-rRO

俄文:values-ru-rRU

斯洛伐克文:values-sk-rSK

斯洛文尼亚文:values-sl-rSI

塞尔维亚文:values-sr-rRS

瑞典文:values-sv-rSE

泰文:values-th-rTH

塔加洛语:values-tl-rPH

土耳其文:values--r-rTR

乌克兰文:values-uk-rUA

越南文:values-vi-rVN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: