SelectFormat 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
SelectFormat 支持透過關鍵字選擇詞句來創造國際化訊息。
[Android.Runtime.Register("android/icu/text/SelectFormat", ApiSince=24, DoNotGenerateAcw=true)]
public class SelectFormat : Java.Text._Format
[<Android.Runtime.Register("android/icu/text/SelectFormat", ApiSince=24, DoNotGenerateAcw=true)>]
type SelectFormat = class
inherit _Format
- 繼承
- 屬性
備註
SelectFormat 支持透過關鍵字選擇詞句來創造國際化訊息。 該模式規範如何將關鍵字映射到片語,並提供預設片語。 格式方法提供的物件是一個與關鍵字匹配的字串。 若有匹配,則選擇相應的片語;否則,則使用預設片語。
<h3>用於 SelectFormat 性別協議</h3>
注意:通常,選取格式是透過 MessageFormat 參數 select 類型來完成,而非使用獨立的 SelectFormat參數。
Select 格式的主要使用情境是基於性別的語調變化。 當名字或名詞插入句子時,其性別會影響代名詞、動詞形式、冠詞和形容詞。 若性別無法確定,則需特別注意。 影響因語言而異:
<ul><li>English 有三種性別,未知性別則被視為特殊情況。 名字使用被命名者的性別(若已知),指稱人名詞使用自然性別,無生命物通常為中性。 性別只影響代名詞:「他」、「她」、「它」、「他們」。
<li>German 與英語不同之處在於名詞的性別相當任意,即使是指稱人名詞的名詞(「Mädchen」,女孩,是中性)。 性別影響代名詞(「er」、「sie」、「es」)、冠詞(「der」、「die」、「das」)及形容詞形式(「guter Mann」、「gute Frau」、「gutes Mädchen」)。
<法>語只有兩個性別;如同德語,名詞的性別相當隨意——太陽和月亮的性別與德語相反。 性別影響代名詞(「il」、「elle」)、冠詞(「le」、「la」)、形容詞形式(「bon」、「bonne」),有時也影響動詞形式(「allé」、「allée").
<li>Polish 區分五種性別(或名詞類別):人類陽性、有生命非人類陽性、無生命陽性、陰性及中性。 </ul>
有些語言的名詞類別與性別無關,但在語法用法上相似。 有些非洲語言大約有20個名詞類別。
<b>註:</b>對於句子中 某人的 性別,我們通常只需區分女性、男性及其他/未知。
為了讓本地化工具能創造出考慮語言性別依賴性的句型,軟體必須提供與名詞或名稱相關的性別資訊。MessageFormat 主要可區分為兩種情況:
<李翊><>對每個人來說,自然的性別資訊應該被保留。 可使用「男性」、「女性」、「混合」(針對群體)及「未知」等關鍵字。
<對於>名詞,應為每個名詞及語言保留語法性別資訊,例如資源包。 「陽性」、「陰性」和「中性」等關鍵字被常用,但有些語言可能需要其他關鍵字。 </ul>
所得的關鍵字會作為一個與其關聯名稱或名詞分開的參數提供給 。MessageFormat 例如,要產生像「Jean 去了巴黎」這樣的訊息,會提供三個不同的論元:論元 0 是人物姓名,1 是人物的性別,2 是城市名稱。 英語的句型,若人稱性別對此簡單句子無影響,則根本不指論點1:
{0} went to {2}.
<b>注意:</b> 整句話應包含(並部分重複)於每個片語中。 否則翻譯者必須訓練如何將句子中的位元移入或移出訊息的選取參數。 (以下範例不符合此建議!)
法語句型中,人稱性別會影響分詞形式,採用基於論元1的選擇格式:
{0} est {1, select, female {allée} other {allé}} à {2}.
模式可以巢狀,因此在必要時能處理數量與性別的互動。 例如,如果上述句子允許插入多個人的名字,則可以使用以下句型(參數 0 為人名列表,參數 1 為人數,參數 2 為他們的綜合性別,參數 3 為城市名稱):
{0} {1, plural,
one {est {2, select, female {allée} other {allé}}}
other {sont {2, select, female {allées} other {allés}}}
}à {3}.
<h4>模式及其詮釋</h4>
SelectFormat模式字串定義了每個使用者定義關鍵字的短語輸出。 這個模式是一連串(關鍵字、訊息)對。 關鍵字是「模式識別碼」:[^[[:P attern_Syntax:][:P attern_White_Space:]]]+。
每則訊息都是 MessageFormat 模式字串,內含 {curly braces}。
你必須為預設關鍵字 other定義一個詞組;當提供給 format 方法的關鍵字沒有其他關鍵字匹配時,這個詞組會回傳。 若模式未提供短語, other則該方法回傳錯誤 U_DEFAULT_KEYWORD_MISSING。
<關鍵字與訊息之間的 BR> Pattern_White_Space 會被忽略。 訊息中的Pattern_White_Space會被保留並輸出。
Example:
MessageFormat msgFmt = new MessageFormat("{0} est " +
"{1, select, female {allée} other {allé}} à Paris.",
new ULocale("fr"));
Object args[] = {"Kirti","female"};
System.out.println(msgFmt.format(args));
產生輸出:<br>Kirti est allée à Paris.
Java 文件 android.icu.text.SelectFormat。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| SelectFormat(IntPtr, JniHandleOwnership) |
|
| SelectFormat(String) |
為給定的圖案串建立一個新 |
屬性
| 名稱 | 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) |
| Format(Object, StringBuffer, FieldPosition) |
選擇給定關鍵字的片語。 |
| Format(Object) |
格式化物件以產生字串。 (繼承來源 _Format) |
| Format(String) |
選擇給定關鍵字的片語。 |
| FormatToCharacterIterator(Object) |
格式化物件產生 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| ParseObject(String, ParsePosition) |
此方法不支援。 |
| ParseObject(String) |
解析給定字串開頭的文字以產生物件。 (繼承來源 _Format) |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| 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) |
試著強制 |