PluralFormat 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
PluralFormat 支持創造具有複數屈折的國際化訊息。
[Android.Runtime.Register("android/icu/text/PluralFormat", ApiSince=24, DoNotGenerateAcw=true)]
public class PluralFormat : Android.Icu.Text.UFormat
[<Android.Runtime.Register("android/icu/text/PluralFormat", ApiSince=24, DoNotGenerateAcw=true)>]
type PluralFormat = class
inherit UFormat
- 繼承
- 屬性
備註
PluralFormat 支持創造具有複數屈折的國際化訊息。 它是基於 複數選擇,也就是說,呼叫者會指定每個複數大小寫的訊息,並 PluralFormat 根據號碼選擇合適的訊息。
<h3>國際化訊息<中複數形式問題/h3>
不同語言對複數詞的屈折方式各不相同。 只有當框架能正確處理 所有 語言的複數形式時,才能創造包含複數形式的國際訊息。
ChoiceFormat 處理不好,因為它會為每個訊息附加一個數字區間,並選擇區間中包含特定數字的訊息。 此方法只能處理有限數量的區間。 但在某些語言中,如波蘭語,複數格位適用於無限多個區間(例如,低格適用於以2、3或4結尾的數字,除了以12、13或14結尾的數字)。 因此 ChoiceFormat ,並不足夠。
PluralFormat 透過將問題分為兩部分來處理此問題: <ul><li>它使用 PluralRules 了可以定義比單一區間更複雜的複數條件。 這些複數規則定義了語言中存在哪些複數格,以及這些複數格適用於哪些數字。
<它>為許多語言提供了預先定義的複數規則。 因此,程式設計師不必擔心語言的複數格,也不必定義複數格;他們可以直接使用預先定義的關鍵字。 訊息的複數格式化可以透過資源包的在地化模式來完成。 關於預先定義的複數規則,請參閱 CLDR 語言複 數規則 頁面 https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html</ul>
<h4>/h4 的 PluralFormat<用法>
注意:通常複數格式是透過 MessageFormat 參數 plural 類型來完成,而非使用獨立的 PluralFormat。
這個討論假設你使用 PluralFormat 一套預先定義的複數規則。 你可以用其中一個取 ULocale 物的建構子來建立一個。 要指定訊息模式,你可以把它傳給建構子,或是用這個 applyPattern() 方法明確設定。 此 format() 方法會選取一個數字物件,並選擇匹配複數格的訊息。 此訊息將被回覆。
<h5>模式及其詮釋</h5>
模式文本定義了指定地點中每個複數情況的訊息輸出。 語法: <blockquote>
pluralStyle = [offsetValue] (selector '{' message '}')+
offsetValue = "offset:" number
selector = explicitValue | keyword
explicitValue = '=' number // adjacent, no white space in between
keyword = [^[[:Pattern_Syntax:][:Pattern_White_Space:]]]+
message: see {@link MessageFormat}
</blockquote> Pattern_White_Space語法元素間會被忽略,除了 {curly 大括號} 與其子訊息之間,以及 '=' 與 explicitValue 的編號之間。
CLDR/ICU 中有六個預設病例關鍵字——「零」、「一」、「二」、「少數」、「多」及「其他」。 你必須為預設複數大小寫other「」定義訊息文字,這在每個規則集中都有。 若未指定特定複數格的訊息文字,複數格「other」的訊息文字會分配給該複數格。
格式化時,輸入數字會先與 explicitValue 子句相匹配。 若無精確數字匹配,則透過呼叫 PluralRules 輸入數 <em>減去偏移量</em> 來選擇關鍵字。 (若模式字串中省略偏移量,則預設為 0。)若沒有包含該關鍵字的子句,則回傳「其他」子句。
所選子訊息本身(即子訊息中巢狀參數之外)中的未引號磅號(#)會被輸入數字減去偏移量所取代。 數字減去偏移量的值以 a NumberFormat 作為 PluralFormat的 位置格式化。 如果你需要特殊的數字格式,你必須使用 並 MessageFormat 明確指定一個 NumberFormat 參數。
<強>注意:</強烈> 這個論點是在格式上不減去偏移量! 如果你需要自訂格式且偏移量非零,那你需要將數字減去偏移值作為獨立參數傳遞。
使用範例請參考 MessageFormat 類別文件。
<h4>定義自訂複數規則</h4>
如果你需要用 PluralFormat 自訂規則,可以建立 PluralRules 一個物件並傳給 PluralFormat的建構子。 如果你在這個建構器中也指定一個地點,這個地點將用來格式化訊息文字中的數字。
如需 PluralRules 的詳細資訊,請參閱PluralRules。
Java 文件 android.icu.text.PluralFormat。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| PluralFormat() |
為預設 |
| PluralFormat(IntPtr, JniHandleOwnership) |
|
| PluralFormat(Locale, PluralRules) |
為給定規則集創造一個新的基數 |
| PluralFormat(Locale, PluralRules+PluralType) |
為複數類型建立新的複數格式。 |
| PluralFormat(Locale) |
為給定 |
| PluralFormat(PluralRules, String) |
為給定規則組和模式創造一個新的基數 |
| PluralFormat(PluralRules) |
為給定規則集創造一個新的基數 |
| PluralFormat(String) |
為給定的模式字串建立一個新的基 |
| PluralFormat(ULocale, PluralRules, String) |
為給定規則組、模式及區域創建新的基數 |
| PluralFormat(ULocale, PluralRules) |
為給定規則集創造一個新的基數 |
| PluralFormat(ULocale, PluralRules+PluralType, String) |
為複數類型、模式和地點建立新的複數格式。 |
| PluralFormat(ULocale, PluralRules+PluralType) |
為複數類型建立新的複數格式。 |
| PluralFormat(ULocale, String) |
為給定的模式字串和位置建立新的基數 |
| PluralFormat(ULocale) |
為特定地點建立一個新的基數 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
|
| ThresholdType |
|
方法
| 名稱 | Description |
|---|---|
| ApplyPattern(String) |
奠定了複數格式所採用的模式。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Equals(PluralFormat) |
若此值等於所提供的複數格式,則回傳為真。 |
| Format(Double) |
為特定號碼格式化複數訊息。 |
| Format(Object, StringBuffer, FieldPosition) |
格式化給定數字的複數訊息,並將格式化後的訊息附加於給定 |
| Format(Object) |
格式化物件以產生字串。 (繼承來源 _Format) |
| FormatToCharacterIterator(Object) |
格式化物件產生 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Parse(String, ParsePosition) |
此方法尚未被支援。 |
| ParseObject(String, ParsePosition) |
此方法尚未被支援。 |
| ParseObject(String) |
解析給定字串開頭的文字以產生物件。 (繼承來源 _Format) |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetNumberFormat(NumberFormat) |
設定此格式化器所使用的數字格式。 |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToPattern() |
回傳此複數格式的圖案。 |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |