Quantity Strings(複數)html
不一樣的語言對數量進行描述的語法規則也不一樣。好比在英語裏,數量1是個特殊狀況,咱們寫成「1 book」,但其餘任何數量都要寫成「n books」。這種單複數之間的區別是很廣泛的,不過其餘語言會有更好的區分方式。Android支持的全集包括zero、one、 two、few、many和other。android
決定選擇和使用某種語言和複數的規則是很是複雜的,因此Android提供了諸如getQuantityString()的方法來選擇合適的資源。ios
注意,要按照語法規則來創建可選項。在英語裏,即便數量爲0,字符串零(zero)也不須要創建。由於0在英語語法表達上和2沒有區別,和其餘除1之外的任何數字都沒有差異("zero books", "one book", "two books",等等)。 不要被「two聽起來彷佛只能用於數量2」 樣的事誤導。某語言可能須要二、十二、102(等等)和1同樣形式表示,而又與其餘數的形式都不一樣。請依靠翻譯人員來了解一下實際語言中的差異。ide
若是和應用程序的風格一致,常能夠用諸如「Books: 1」的模糊數量形式來避免使用數量字符串。這會讓你和翻譯人員都輕鬆些。ui
注意:複數字符串是簡單類型資源,是用名稱(name)(而不是XML文件名)來直接引用的。所以,在一個XML文件裏,能夠把複數字符串資源和其餘簡單類型資源一塊兒放在一個<resources>元素下。spa
文件位置.net
res/values/filename.xml翻譯
文件名可隨意指定。<plurals>元素的名字name將被用做資源ID。orm
資源引用xml
Java代碼::R.plurals.plural_name
語法
<?xml version="1.0" encoding="utf-8"?> <resources> name="plural_name"> <item_plurals quantity=["zero" | "one" | "two" | "few" | "many" | "other"] >text_string</item> </plurals> </resources> |
元素
<resources>
必填項。必須是根元素。
無屬性。
<plurals>
一個字符串集,每一個數量表示提供一個字符串。包含一個或多個<item>元素。
屬性:
name
String類型。字符串對的名稱。此名稱將做爲資源ID。
<item>
一個單數或複數形式的字符串。能夠是對其餘字符串資源的引用。必須做爲<plurals>元素的子元素存在。注意須對單引號和雙引號進行轉義。有關如何正確地樣式化及格式化字符串,請參閱下文格式化和樣式化。
屬性:
quantity
關鍵字。 表示要使用此字符串的數量值。如下是合法的值(括號內列出部分語言要求):
值 |
描述 |
zero |
語言須要對數字0進行特殊處理。(好比阿拉伯語) |
one |
語言須要對相似1的數字進行特殊處理。(好比英語和其它大多數語言裏的1;在俄語裏,任何以1結尾但不以11結尾的數也屬於此類型。) |
two |
語言須要對相似2的數字進行特殊處理。(好比威爾士語) |
few |
語言須要對較小數字進行特殊處理(好比捷克語裏的二、三、4;或者波蘭語裏以二、三、4結尾但不是十二、1三、14的數。) |
many |
語言須要對較大數字進行特殊處理(好比馬耳他語裏以11-99結尾的數) |
other |
語言不須要對數字進行特殊處理。 |
示例
存放在res/values/strings.xml 的XML文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <plurals name="numberOfSongsAvailable"> <item quantity="one">One song found.</item> <item quantity="other">%d songs found.</item> </plurals> </resources> |
存放在res/values-pl/strings.xml 的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> |
Java代碼:
int count = getNumberOfsongsAvailable(); Resources res = getResources(); String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count,count); |
在使用getQuantityString()方法時,若是字符串包含數字格式化串,則須要傳遞2個count參數。例如:對於字符串「%d songs found」,第一個count參數選擇合適的複數字符串,第二個count參數插入佔位符%d中。若是複數字符串資源不包含格式化信息,就不須要給getQuantityString()傳遞第三個參數。