http://developer.android.com/guide/topics/resources/string-resource.html#Plurals

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

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

尽管历史上称为“数量字符”(在API里面还是这样称呼),数量字符应该仅仅用于plurals.如果把它用来解释当有未读邮件时,Gmail的Inbox为Inbox(12)这样的事情是不正确的。看起来,使用数量字符比使用if语句更方便,但是需要看到有些语言(例如中文)根本没有语法区别,所以你会一直得到other字符。[不懂]

选择使用哪个字符,唯一的取决于语法的要求。在英语里面,对零的字符将会被忽略,尽管数字是0,因为0从语法上来说跟2没有什么区别,其他数字也是一样,除了1("zero books","one book","two books",等等)

不要误认为,two sounds应该针对数字2:一种语言或许要求2,12,102等等都是一样的,但是跟别数字又不一样。取决于你的翻译者知道他们语言的真正区别。

It's often possible to avoid quantity strings by using quantity-neutral formulations such as "Books: 1". 如果你在你的应用里面保持这样的风格,这样将让你和你的翻译者的生活更简单。

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

文件位置:

res/values/filename.xml

filename 是任意的。<plurals>节点的name将被作为resource ID.

资源访问:

在java里面:R.plurals.plural_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources><pluralsname="plural_name"><itemquantity=["zero" | "one" | "two" | "few" | "many" | "other"]>text_string</item></plurals>
</resources>

节点:

<resources>

必须的节点。必须为根节点。

没有属性。

<plurals>
   字符串的集合,提供取决于某类事物个数的字符串。包含一个或者多个<item>节点

属性: 

      name  字符串. A name for the pair of strings.这个name将被作为resource ID。

<item>

一个复数或者单数字符串。它的值可以是对其他字符串资源的一个引用。必须是<plurals> 的子节点。必须知道不要撇号和引号。可以参考下面的例子。

属性:

      quantity

          关键字.这个值反应了什么时候这个字符该被使用。正确的值,在括号里面有不详尽的例子:

Value Description
zero 当语言需要特别对待0时(就想阿拉伯)
one 当语言需要特别对待1(就像英语里和其他语言里的1;在russian,任何以1结尾但是不是以11结尾的也使用这种情况)
two 当语言需要特别对待1(例如Welsh的2,或者Slovenian的102)
few 当语言需要特别对待small(例如Czech的2,3,4;或者以2,3,4结尾但是不是12,13,14的Polisth)
many 当语言需要特别对待large(例如Maltese的11-99)
other 当语言没有要求对特定资源进行特殊对待(例如中国的所有数字,或者英语的42

例子:xml文件保存在res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><plurals name="numberOfSongsAvailable"><item quantity="one">Znaleziono jedną piosenkę.</item><item quantity="few">Znaleziono %d piosenki.</item><item quantity="other">Znaleziono %d piosenek.</item></plurals>
</resources>
 
int count = getNumberOfsongsAvailable();
Resources res = getResources();
String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count, count);
 


int count = getNumberOfsongsAvailable();
Resources res = getResources();
String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count, count);
												

android_Quantity Strings (Plurals)相关推荐

  1. Android Quantity Strings (Plurals)- 复数形式的“一个”不起作用

    今天在使用Quantity Strings的时候遇到一个问题,代码如下: <?xml version="1.0" encoding="utf-8"?> ...

  2. 【我的Android进阶之旅】Android使用Quantity Strings来实现全球化的单复数功能

    一.背景描述 之前APP的业务只在国内,所有的字符串都是中文的,目前APP业务扩展到了国外,因此很多国际化适配的工作就需要做了.比如不同语言在语法数量一致上具有不同的规则. 在英语中,数量 1 是一种 ...

  3. Android资源之String (四): plurals

    转 Android资源之String (四): plurals <div class="article-info-box"><div class="ar ...

  4. Android应用开发(15)---字符串资源

    字符串资源 字符串资源为您的应用提供具有可选文本样式和格式设置的文本字符串. 共有三种类型的资源可为您的应用提供字符串: String 提供单个字符串的 XML 资源. String Array 提供 ...

  5. 第三部分:Android 应用程序接口指南---第三节:应用程序资源---第五章 资源类型...

    第5章 资源类型 这一大章节的每个部分描述了一类应用资源的用法,格式和语法.你可以把这些资源放在你的资源目录下(即res/).下面是对每个资源类型的简介: ◆动画资源(Animation Resour ...

  6. 用生命周期规范组件化流程

    写在前面 1. 组件划分 架构 宿主壳.调试壳 组件层 基础层 MVC.MVP.MVVM 如何下沉 Utils 规范:使用 Kotlin 静态方法 单例模式 res 规范:命名清晰 string.xm ...

  7. android中的Plurals(Quantity Strings)类型

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

  8. 不可不知的 Android strings.xml 那些事

    不可不知的 Android strings.xml 那些事 相信 strings.xml 已经是大家在 Android 开发中最熟悉的文件之一了,但其实它也有很多需要注意的地方和一些小技巧,知道了这些 ...

  9. Android 字符串资源(strings.xml)

    文章目录 基础使用 1. String 2. String Array 进阶使用 1. 特殊字符转义 2. 设置字符串格式 3. 使用HTML标记设置样式 4. 使用注解设置样式 注意事项❗❗❗ 1. ...

最新文章

  1. ASP.NET 2.0的全球化与本地化之全球化
  2. 京东618单日销售超10亿,B2C网购正成主流
  3. SSI注入(server side includes injection 服务器端包含注入)
  4. vs 编译android so
  5. 《京东技术解密》——海量订单处理
  6. python partial_Python--并行计算框架(pathos)
  7. JavaScript 常用工具函数
  8. 430单片机实现三人投票表决器_长虹KFR-28变频空调器室内机控制板电路原理分析...
  9. UVA 11367 Full Tank? 最短路
  10. linux下安装Firefox
  11. OSPF的Router-id确定顺序和冲突情况
  12. 浅析城市道路照明的安全及节电设备的应用
  13. excel文件损坏修复绝招_ps文件损坏有修复的软件!超强开挂辅助神器
  14. 论文笔记:Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing
  15. 《财富自由子路》李笑来
  16. 手把手教你搭建Hexo博客
  17. MTK android 可修改IMEI方法
  18. cobar是什么? 能做什么?
  19. 信息收集:CCF大学生计算机系统与程序设计竞赛(CCSP)
  20. 运动会加油稿计算机学院150字,大学运动会经典加油稿150字左右2018

热门文章

  1. 检测域名是否已被微信封掉不能访问
  2. 哦耶,总算把博客皮肤做好咯。峰之博纹转地复活!满血满状态!
  3. DEBUG的使用方法(译文)
  4. 用Python实现一个简单的——人脸相似度对比
  5. antd radio设置默认选中_antd中如何给绑定Form的Radio.Group设置默认的选中值!
  6. PHP调试输出的方法
  7. (2)【全局路径规划】曲线拟合的方法--Dubins曲线与Reeds-Shepp曲线
  8. 基于51单片机实现红外循迹
  9. 基于react/vue开发一个专属于程序员的朋友圈应用
  10. QT快速设置QTableWidget表头内容