不同的语言对数量的语法规定有不同的规则。在英语里面,例如,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

语法:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <plurals
  4. name="plural_name">
  5. <item
  6. quantity=["zero" | "one" | "two" | "few" | "many" | "other"]
  7. >text_string</item>
  8. </plurals>
  9. </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

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

【移动开发】plurals相关推荐

  1. java知识体系介绍

    国内最牛七星级团队马士兵.高淇等11位十年开发经验专家录制 目 录 百战程序员Java1573题 2百战程序员介绍 3JavaSE编程基础 9第一章 初识Java 9阶段项目课程1 11第二章 数据类 ...

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

    使用场景: 1.根据数字的不同自动选择不同的字符串显示,特别是单复数. 2.特别是不同国家的语言对应不同的单复数. 使用方法: 在values/strings.xml下的写法: 1.plurals 2 ...

  3. android plurals用法(单复数),移动智能终端开发技术题库

    String bookNum = getResources().getQuantityString(R.plurals.book_number, 1, 2); tv4.setText(bookNum) ...

  4. android 常用注解,Android 开发小工具之:注解 Annotation

    Android Support 包之一的 support-annotations是通过静态编译检测来提高代码质量的一个注解工具.里面包含了 Android 开发中常用的代码检测注解,帮助开发者提高代码 ...

  5. ios开发语言本地国际化_开发人员软件本地化最终语言指南

    ios开发语言本地国际化 There are lots of great guides out there for how to prep your product for international ...

  6. 【阶段小结】协同开发——这学期的Git使用小结

    [阶段小结]协同开发--这学期的Git使用小结 一.Git简介 1. Git简单介绍 2. Git工作流程以及各个区域 3. Git文件状态变化 二.Git安装&Git基本配置 三.个人踩坑 ...

  7. 基于Golang的简单web服务程序开发——CloudGo

    基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...

  8. 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发

    基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...

  9. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

最新文章

  1. virsh 常用操作
  2. python3遍历电子表格_python 3读取多个文本写入同一个excel,每个文本对应各自独立的 sheet 页...
  3. php单例模式实现对象只被创建一次 mysql单例操作类
  4. 爬虫+数据分析,制作一个世界疫情人数增长动态柱状竞赛图
  5. 【收藏】在 Linux 上以 All-in-One 模式安装 KubeSphere
  6. java xss 默认值_一台 Java 服务器可以跑多少个线程?
  7. CentOS下搭建DNS服务器
  8. 2020全国计算机二级office大纲,2018-2020年(最新)全国计算机等级考试二级MS Office高级应用考试大纲...
  9. 学生信息管理系统html界面,学生信息管理系统jsp课程设计.doc
  10. Java实战之管家婆记账系统(1)——项目简述
  11. 成功解决pyinstaller打包时报错:lib not found的问题
  12. 金三银四,给大家肝一下面试题~
  13. 电脑无法启动,风扇不转,电源灯一直闪烁
  14. Google Filament 源码学习(三):Material System (二)
  15. 妹子图APP(四)—— SQLite保存数据实现离线图片查看
  16. 为什么要进行软件验收测试?如何获得软件验收测试报告
  17. Linux系统下计算机C语言的编程技巧
  18. 一条 Select 语句 在 Postgresql 中的执行链路
  19. JavaScript script标签同步异步加载过程
  20. Android 优秀文章收集整理集合

热门文章

  1. h5打开麦克风权限录音_网页录音时的麦克风权限问题解决
  2. 生活记录-- 林微因《分手信》
  3. Windows 窗口程序的运行过程
  4. 软件测试-黑盒测试2
  5. 实战游戏项目管理4-线上管理篇
  6. 第4章 Linux网络编程 24.端口复用
  7. 随机性检测之游程总数测试
  8. 深入理解BRep_Curve3d
  9. [29期] 随便说说我的学习感受
  10. C语言基础 - char字符串数组的概念和定义