android plurals用法

来源:互联网 发布:上海精神科医院 知乎 编辑:程序博客网 时间:2024/06/05 03:26

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

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

         节点:

          <resources>  必须的节点。必须为根节点。

          没有属性。

    <plurals>

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

          属性:

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

<item>

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

属性

quantity:

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

Value Descriptionzero当语言需要特别对待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 version="1.0" encoding="utf-8"?>      <resources>          <plurals name="numberOfSongsAvailable">              <item quantity="one">Znaleziono jedną piosenkę.</item>              <item quantity="other">Znaleziono %d piosenek.</item>          </plurals>      </resources>  
cartText = (TextView) findViewById(R.id.itemsTextView);Resources res = getResources();String items = res.getQuantityString(R.plurals.numberOfItems, 1, 1);cartText.setText(items);

上述给定代码,每个数量将产生一个是何其复数形式的恰当的字符串。

getQuantityString()方法的第一个参数是复数资源id,第二个参数选择要使用的字符串。当参数为1时,按原样使用该字符串。当值不为1时,必须使用第三个参数,他的值放在%d所在的位置。如果在附属自愿中使用了一种格式化字符串,必须始终总有至少三个参数。第二个参数可能会令人困惑,这个参数的唯一差别就是值为1和不为1.

0 0
原创粉丝点击