【移动开发】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>
- <plurals
- name="plural_name">
- <item
- quantity=["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
-
关键字.这个值反应了什么时候这个字符该被使用。正确的值,在括号里面有不详尽的例子:
http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
【移动开发】plurals相关推荐
- java知识体系介绍
国内最牛七星级团队马士兵.高淇等11位十年开发经验专家录制 目 录 百战程序员Java1573题 2百战程序员介绍 3JavaSE编程基础 9第一章 初识Java 9阶段项目课程1 11第二章 数据类 ...
- 【Android开发】plurals 和 getQuantityString,以及%d 、%.d 、%1$s 、%1$d等的用法
使用场景: 1.根据数字的不同自动选择不同的字符串显示,特别是单复数. 2.特别是不同国家的语言对应不同的单复数. 使用方法: 在values/strings.xml下的写法: 1.plurals 2 ...
- android plurals用法(单复数),移动智能终端开发技术题库
String bookNum = getResources().getQuantityString(R.plurals.book_number, 1, 2); tv4.setText(bookNum) ...
- android 常用注解,Android 开发小工具之:注解 Annotation
Android Support 包之一的 support-annotations是通过静态编译检测来提高代码质量的一个注解工具.里面包含了 Android 开发中常用的代码检测注解,帮助开发者提高代码 ...
- ios开发语言本地国际化_开发人员软件本地化最终语言指南
ios开发语言本地国际化 There are lots of great guides out there for how to prep your product for international ...
- 【阶段小结】协同开发——这学期的Git使用小结
[阶段小结]协同开发--这学期的Git使用小结 一.Git简介 1. Git简单介绍 2. Git工作流程以及各个区域 3. Git文件状态变化 二.Git安装&Git基本配置 三.个人踩坑 ...
- 基于Golang的简单web服务程序开发——CloudGo
基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...
- 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...
- 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)
目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...
最新文章
- virsh 常用操作
- python3遍历电子表格_python 3读取多个文本写入同一个excel,每个文本对应各自独立的 sheet 页...
- php单例模式实现对象只被创建一次 mysql单例操作类
- 爬虫+数据分析,制作一个世界疫情人数增长动态柱状竞赛图
- 【收藏】在 Linux 上以 All-in-One 模式安装 KubeSphere
- java xss 默认值_一台 Java 服务器可以跑多少个线程?
- CentOS下搭建DNS服务器
- 2020全国计算机二级office大纲,2018-2020年(最新)全国计算机等级考试二级MS Office高级应用考试大纲...
- 学生信息管理系统html界面,学生信息管理系统jsp课程设计.doc
- Java实战之管家婆记账系统(1)——项目简述
- 成功解决pyinstaller打包时报错:lib not found的问题
- 金三银四,给大家肝一下面试题~
- 电脑无法启动,风扇不转,电源灯一直闪烁
- Google Filament 源码学习(三):Material System (二)
- 妹子图APP(四)—— SQLite保存数据实现离线图片查看
- 为什么要进行软件验收测试?如何获得软件验收测试报告
- Linux系统下计算机C语言的编程技巧
- 一条 Select 语句 在 Postgresql 中的执行链路
- JavaScript script标签同步异步加载过程
- Android 优秀文章收集整理集合