zoukankan      html  css  js  c++  java
  • 【移动开发】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

         语法:

    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

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



  • 相关阅读:
    mysql InnoDB 索引小记
    Linux shell 脚本小记
    Java中Integer的源码学习
    nginx小记
    位运算小结
    Redis小结
    CSS中nth-child和nth-of-type的简单使用
    Linux awk小记
    mysql小记--基础知识
    让44.1版本的sketch打开更高版本的sketch文件
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6158028.html
Copyright © 2011-2022 走看看