Android Quantity Strings 的 getQuantityString方法取值问题

原创 2015年07月07日 16:54:45

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


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


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


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

 <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

语言需要对较小数字进行特殊处理(比如捷克语里的234;或者波兰语里以234结尾但不是121314的数。)

many

语言需要对较大数字进行特殊处理(比如马耳他语里以11-99结尾的数)

other

语言不需要对数字进行特殊处理。


  调用:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

getQuantityString

Quantity Strings(复数) 不同的语言对数量进行描述的语法规则也不同。比如在英语里,数量1是个特殊情况,我们写成“1 book”,但其他任何数量都要写成“n books”。这种...

android中的Plurals(Quantity Strings)类型

不同的语言对数量的定义有不同的语法规则。例如,在英语中,1个指的是一种特殊情况。其他时候我们说n个。这种单数和复数的情况非常的普通。但其他语言却有明显的区别。Android中设置了0,1,2,"很少"...

android res加载

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 ...

android gallery photoview分析

最近想修改下camera下面的图片查看部分 发现里面使用的是gotogallery()方法,经 photopage 最终使用photoview.switchWithCaptureAnimation()...

android中的Plurals(Quantity Strings)类型

From:http://blog.csdn.net/ltl451011/article/details/6947642 不同的语言对数量的定义有不同的语法规则。例如,在英语中,1个指的是一种特殊...

CodeForces 151D Quantity of Strings(并查集)

题目链接 D. Quantity of Strings time limit per test 2 seconds memory limit per test 2...

【Android开发】plurals 和 getQuantityString,以及%d 、%.d 、%1$s 、%1$d等的用法

plurals 和 getQuantityString,以及%d 、%.d 、%1$s 、%1$d
  • nzfxx
  • nzfxx
  • 2016年12月27日 17:44
  • 276

ANDROID STRINGS.XML的特殊字符_安卓STRING.XML添加空格或字符的方法

项目中要在string.xml 中显示特殊符号、如@号冒号等、直接写肯定不行啦 只能考虑使用ASCII码进行显示、在XML中空格符不是用HMTL中的表示、而是用编码表示 以下为常见的ASC...
  • oPINGU
  • oPINGU
  • 2015年05月26日 09:31
  • 1378

android[xml]Android strings.xml中空格符的标识方法附xml特殊字符表示法

在XML中空格符不是用HMTL中的 表示,而是用 表示。 附XML中特殊字符的表示法列表: space -->...

android strings

  • 2014年03月10日 23:13
  • 25KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Quantity Strings 的 getQuantityString方法取值问题
举报原因:
原因补充:

(最多只允许输入30个字)