PluralFormat Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
PluralFormat supporta la creazione di messaggi internazionalizzati con un'inflessione plurale.
[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
- Ereditarietà
- Attributi
Commenti
PluralFormat supporta la creazione di messaggi internazionalizzati con un'inflessione plurale. Si basa sulla selezione plurale, ad esempio il chiamante specifica i messaggi per ogni caso plurale che può essere visualizzato nella lingua dell'utente e PluralFormat seleziona il messaggio appropriato in base al numero.
<h3>Il problema delle forme plurali nei messaggi< internazionalizzati/h3>
Diverse lingue hanno modi diversi per inflect plurali. La creazione di messaggi internazionalizzati che includono forme plurali è fattibile solo quando il framework è in grado di gestire correttamente forme plurali di tutte le lingue.
ChoiceFormat non gestisce questa operazione, perché allega un intervallo numerico a ogni messaggio e seleziona il messaggio il cui intervallo contiene un determinato numero. Questo può gestire solo un numero finito di intervalli. Ma in alcune lingue, come il polacco, un caso plurale si applica a intervalli infinitamente molti (ad esempio, il caso di sospensione si applica ai numeri che terminano con 2, 3 o 4 tranne quelli che terminano con 12, 13 o 14). Pertanto ChoiceFormat , non è adeguato.
PluralFormat gestisce questo problema suddividendo il problema in due parti: <ul><li>Usa PluralRules che può definire condizioni più complesse per un caso plurale rispetto a un solo intervallo. Queste regole plurali definiscono sia i casi plurali presenti in una lingua che i numeri a cui si applicano questi casi.
<li>Fornisce regole plurali predefinite per molte lingue. Pertanto, il programmatore non deve preoccuparsi dei casi plurali di una lingua e non deve definire i casi plurali; possono semplicemente usare le parole chiave predefinite. L'intera formattazione plurale dei messaggi può essere eseguita usando modelli localizzati da bundle di risorse. Per le regole plurali predefinite, vedere la pagina Regole plurali del linguaggio CLDR in https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html</ul>
<h4 Utilizzo di >PluralFormat/h4<>
Nota: in genere, la formattazione plurale viene eseguita tramite MessageFormat con un plural tipo di argomento, invece di usare un oggetto autonomo PluralFormat.
Questa discussione presuppone che l'utente usi PluralFormat con un set predefinito di regole plurali. È possibile crearne uno usando uno dei costruttori che accetta un ULocale oggetto . Per specificare il modello di messaggio, è possibile passarlo al costruttore o impostarlo in modo esplicito usando il applyPattern() metodo . Il format() metodo accetta un oggetto number e seleziona il messaggio del caso plurale corrispondente. Questo messaggio verrà restituito.
<modelli h5>e la loro interpretazione</h5>
Il testo del criterio definisce l'output del messaggio per ogni caso plurale delle impostazioni locali specificate. Sintassi: <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 tra gli elementi della sintassi viene ignorato, tranne tra le parentesi graffe} e il relativo sotto-messaggio e tra '=' e il numero di un valore explicitValue.
Esistono 6 parole chiave case predefinite in CLDR/ICU - 'zero', 'one', 'two', 'few', 'many' e 'other'. È sempre necessario definire un testo del messaggio per il caso plurale predefinito "other" contenuto in ogni set di regole. Se non si specifica un testo del messaggio per un caso plurale specifico, il testo del messaggio del caso plurale "other" viene assegnato a questo caso plurale.
Durante la formattazione, il numero di input viene prima confrontato con le clausole explicitValue. Se non è presente alcuna corrispondenza esatta, viene selezionata una parola chiave chiamando PluralRules con il numero di <input em>meno l'offset</em>. L'offset viene impostato su 0 per impostazione predefinita se viene omesso dalla stringa del criterio. Se non è presente alcuna clausola con tale parola chiave, vengono restituite le clausole "other".
Un segno di cancelletto non racchiuso tra virgoole (#) nel sottomessagio selezionato (ad esempio, all'esterno degli argomenti annidati nel sottomessagio) viene sostituito dal numero di input meno l'offset. Il valore number-minus-offset viene formattato usando un NumberFormat valore per le PluralFormatimpostazioni locali. Se è necessaria una formattazione numerica speciale, è necessario usare un MessageFormat oggetto e specificare in modo esplicito un NumberFormat argomento.
<nota forte>:/strong< L'argomento> è formattato senza sottrarre l'offset. Se è necessario un formato personalizzato e un offset diverso da zero, è necessario passare il valore number-minus-offset come parametro separato.
Per un esempio di utilizzo, vedere la documentazione della MessageFormat classe.
<h4>Definizione di regole< plurali personalizzate/h4>
Se è necessario usare PluralFormat con regole personalizzate, è possibile creare un PluralRules oggetto e passarlo al PluralFormatcostruttore di . Se si specificano anche impostazioni locali in questo costruttore, queste impostazioni locali verranno utilizzate per formattare il numero nei testi del messaggio.
Per altre informazioni su PluralRules, vedere PluralRules.
per android.icu.text.PluralFormat.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.
Costruttori
| Nome | Descrizione |
|---|---|
| PluralFormat() |
Crea un nuovo numero |
| PluralFormat(IntPtr, JniHandleOwnership) |
|
| PluralFormat(Locale, PluralRules) |
Crea un nuovo numero |
| PluralFormat(Locale, PluralRules+PluralType) |
|
| PluralFormat(Locale) |
Crea un nuovo numero |
| PluralFormat(PluralRules, String) |
Crea un nuovo numero |
| PluralFormat(PluralRules) |
Crea un nuovo numero |
| PluralFormat(String) |
Crea un nuovo numero |
| PluralFormat(ULocale, PluralRules, String) |
Crea un nuovo numero |
| PluralFormat(ULocale, PluralRules) |
Crea un nuovo numero |
| PluralFormat(ULocale, PluralRules+PluralType, String) |
|
| PluralFormat(ULocale, PluralRules+PluralType) |
|
| PluralFormat(ULocale, String) |
Crea un nuovo numero |
| PluralFormat(ULocale) |
Crea un nuovo numero |
Proprietà
| Nome | Descrizione |
|---|---|
| Class |
Restituisce la classe di runtime di questo |
| Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
| JniIdentityHashCode |
Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| JniPeerMembers |
|
| PeerReference |
Ottiene il riferimento all'oggetto JNI per questo peer Java. (Ereditato da Object) |
| ThresholdClass |
|
| ThresholdType |
|
Metodi
| Nome | Descrizione |
|---|---|
| ApplyPattern(String) |
Imposta il modello utilizzato da questo formato plurale. |
| Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da _Format) |
| Dispose() |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Dispose(Boolean) |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
| Equals(PluralFormat) |
Restituisce true se l'oggetto è uguale a PluralFormat specificato. |
| Format(Double) |
Formatta un messaggio plurale per un determinato numero. |
| Format(Object, StringBuffer, FieldPosition) |
Formatta un messaggio plurale per un determinato numero e accoda il messaggio formattato all'oggetto specificato |
| Format(Object) |
Formatta un oggetto per produrre una stringa. (Ereditato da _Format) |
| FormatToCharacterIterator(Object) |
Formatta un oggetto che produce un oggetto |
| GetHashCode() |
Restituisce un valore di codice hash per l'oggetto . (Ereditato da Object) |
| JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
| Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| Parse(String, ParsePosition) |
Questo metodo non è ancora supportato da |
| ParseObject(String, ParsePosition) |
Questo metodo non è ancora supportato da |
| ParseObject(String) |
Analizza il testo dall'inizio della stringa specificata per produrre un oggetto . (Ereditato da _Format) |
| SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
| SetNumberFormat(NumberFormat) |
Imposta il formato numerico utilizzato dal formattatore. |
| ToArray<T>() |
Crea una matrice gestita da questo wrapper di matrice Java. (Ereditato da Object) |
| ToPattern() |
Restituisce il modello per pluralFormat. |
| ToString() |
Restituisce una rappresentazione di stringa dell'oggetto . (Ereditato da Object) |
| UnregisterFromRuntime() |
Annulla la registrazione di questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
| Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
| Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IJavaPeerable.Disposed() |
Notifica al runtime di interoperabilità che il peer gestito è stato eliminato. (Ereditato da Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Rilascia questo Java peer a meno che non venga conservato da un altro riferimento gestito. (Ereditato da Object) |
| IJavaPeerable.Finalized() |
Notifica al runtime di interoperabilità che il peer gestito è stato finalizzato. (Ereditato da Object) |
| IJavaPeerable.JniManagedPeerState |
Ottiene lo stato che descrive la relazione tra questo peer gestito e il relativo riferimento JNI. (Ereditato da Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Imposta il codice hash dell'identità di interoperabilità per questo Java peer. (Ereditato da Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Imposta lo stato peer gestito e JNI per questo peer Java. (Ereditato da Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Imposta il riferimento all'oggetto JNI usato da questo peer gestito. (Ereditato da Object) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |