MessageFormat Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour java.text.MessageFormat.
[Android.Runtime.Register("android/icu/text/MessageFormat", ApiSince=24, DoNotGenerateAcw=true)]
public class MessageFormat : Android.Icu.Text.UFormat
[<Android.Runtime.Register("android/icu/text/MessageFormat", ApiSince=24, DoNotGenerateAcw=true)>]
type MessageFormat = class
inherit UFormat
- Héritage
- Attributs
Remarques
<strong>[icu enhancement]</strong> ICU’s replacement for java.text.MessageFormat. ; Les méthodes, les champs et d’autres fonctionnalités spécifiques à l’ICU sont étiquetées «< strong>[icu]</strong> ».
MessageFormat prépare des chaînes pour l’affichage aux utilisateurs, avec des arguments facultatifs (variables/espaces réservés). Les arguments peuvent se produire dans n’importe quel ordre, ce qui est nécessaire pour la traduction en langues avec différentes grammaires.
Un MessageFormat est construit à partir d’une <chaîne em>pattern</em> avec des arguments dans {accolades} qui seront remplacés par des valeurs mises en forme.
MessageFormat diffère des autres Format classes dans lesquelles vous créez un MessageFormat objet avec l’un de ses constructeurs (et non avec une getInstance méthode de fabrique de style). Les méthodes de fabrique ne sont pas nécessaires, car MessageFormat elle-même n’implémente pas de comportement spécifique aux paramètres régionaux. Tout comportement spécifique aux paramètres régionaux est défini par le modèle que vous fournissez et les sous-formats utilisés pour les arguments insérés.
Les arguments peuvent être nommés (à l’aide d’identificateurs) ou numérotés (à l’aide de petits entiers à chiffres ASCII). Certaines méthodes d’API fonctionnent uniquement avec des nombres d’arguments et lèvent une exception si le modèle a des arguments nommés (voir #usesNamedArguments()).
Un argument peut ne pas spécifier de type de format. Dans ce cas, une valeur numérique est mise en forme avec un NumberFormat par défaut (pour les paramètres régionaux), une valeur Date est mise en forme avec une valeur par défaut (pour les paramètres régionaux) DateFormat, et pour toute autre valeur, sa valeur toString() est utilisée.
Un argument peut spécifier un type « simple » pour lequel l’objet Format spécifié est créé, mis en cache et utilisé.
Un argument peut avoir un type « complexe » avec des sous-modèles MessageFormat imbriqués. Pendant la mise en forme, l’un de ces sous-messages est sélectionné en fonction de la valeur de l’argument et de la mise en forme récursive.
Après la construction, un objet Format personnalisé peut être défini pour un argument de niveau supérieur, en remplaçant le comportement de mise en forme et d’analyse par défaut de cet argument. Toutefois, la mise en forme personnalisée peut être obtenue plus simplement en écrivant un argument sans type dans la chaîne de modèle et en lui fournissant une valeur de chaîne préformatée.
Lors de la mise en forme, MessageFormat prend une collection de valeurs d’argument et écrit une chaîne de sortie. Les valeurs d’argument peuvent être passées en tant que tableau (lorsque le modèle contient uniquement des arguments numérotés) ou en tant que mappage (qui fonctionne pour les arguments nommés et numérotés).
Chaque argument est mis en correspondance avec l’une des valeurs d’entrée par index de tableau ou clé de mappage et mis en forme conformément à sa spécification de modèle (ou à l’aide d’un objet Format personnalisé si un objet a été défini). Un argument de modèle numéroté est mis en correspondance avec une clé de carte qui contient ce nombre sous forme de chaîne à chiffres décimaux ASCII (sans zéro non significatif).
<h3>"patterns"Patterns">Patterns and Their Interpretation</h3>
MessageFormat utilise des modèles de la forme suivante : <blockquote>
message = messageText (argument messageText)*
argument = noneArg | simpleArg | complexArg
complexArg = choiceArg | pluralArg | selectArg | selectordinalArg
noneArg = '{' argNameOrNumber '}'
simpleArg = '{' argNameOrNumber ',' argType [',' argStyle] '}'
choiceArg = '{' argNameOrNumber ',' "choice" ',' choiceStyle '}'
pluralArg = '{' argNameOrNumber ',' "plural" ',' pluralStyle '}'
selectArg = '{' argNameOrNumber ',' "select" ',' selectStyle '}'
selectordinalArg = '{' argNameOrNumber ',' "selectordinal" ',' pluralStyle '}'
choiceStyle: see {@link ChoiceFormat}
pluralStyle: see {@link PluralFormat}
selectStyle: see {@link SelectFormat}
argNameOrNumber = argName | argNumber
argName = [^[[:Pattern_Syntax:][:Pattern_White_Space:]]]+
argNumber = '0' | ('1'..'9' ('0'..'9')*)
argType = "number" | "date" | "time" | "spellout" | "ordinal" | "duration"
argStyle = "short" | "medium" | "long" | "full" | "integer" | "currency" | "percent" | argStyleText
</blockquote>
<ul><li>messageText peut contenir des chaînes littérales entre guillemets, y compris des caractères de syntaxe. Une chaîne littérale entre guillemets commence par une apostrophe ASCII et un caractère de syntaxe (généralement un {accolades}) et se poursuit jusqu’à l’apostrophe unique suivante. Une apostrophe ASCII double à l’intérieur ou à l’extérieur d’une chaîne entre guillemets représente une apostrophe littérale.
<Les caractères de syntaxe li>Quotable sont les {accolades} dans toutes les parties messageText, ainsi que la connexion « # » dans un messageText immédiatement à l’intérieur d’un pluralStyle, et le symbole « | » dans un messageText immédiatement à l’intérieur d’un choiceStyle.
<li See également >MessagePattern.ApostropheModeli<>In argStyleText, chaque apostrophe ASCII commence et met fin au texte littéral entre guillemets, et {accolades} non cités} doit se produire dans des paires correspondantes.
</ul>
Recommandation : Utilisez le caractère apostrophe réel (guillemet unique) \\u2019 pour le texte lisible par l’homme et utilisez l’apostrophe ASCII (\\u0027 ' ) uniquement dans la syntaxe du programme, comme le guillemet dans MessageFormat. Consultez les annotations pour U+0027 Apostrophe dans la norme Unicode.
Le choice type d’argument est déconseillé. Utilisez plural des arguments pour une sélection au pluriel appropriée et select des arguments pour une sélection simple parmi un ensemble fixe de choix.
Les argType valeurs et argStyle les valeurs sont utilisées pour créer une Format instance pour l’élément de format. Le tableau suivant montre comment les valeurs sont mappées aux instances Format. Les combinaisons non affichées dans le tableau ne sont pas valides. Tout argStyleText doit être une chaîne de modèle valide pour la sous-classe Format utilisée.
<table border=1><tr><th argType >th<>argStyle <th>résultant Objet <Format tr><td colspan=2>(none)<td>null<tr><td rowspan=5>number<td>(none)<td>NumberFormat.getInstance(getLocale())<tr><td>integer<>NumberFormat.getIntegerInstance(getLocale())<><>currency<>NumberFormat.getCurrencyInstance(getLocale())<><>percent<>NumberFormat.getPercentInstance(getLocale())<> td tr td td tr<td>argStyleText<td>new DecimalFormat(argStyleText, new DecimalFormatSymbols(getLocale()))<tr><td rowspan=6>date<td>(none)<td>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<tr><>short<>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())<><>medium<>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<><>long<>DateFormat.getDateInstance(DateFormat.LONG, getLocale())<td td tr><td>full<>DateFormat.getDateInstance(DateFormat.FULL, getLocale())<td tr td tr><td>< td>new SimpleDateFormat(argStyleText, getLocale())<tr><td rowspan=6>time<td>(none)<td>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<tr><td>short<>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())<><>medium<>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<><>long<>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())<><>full<>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())<><td tr td td>< td tr tr>new SimpleDateFormat(argStyleText, getLocale())<><td td>spellout<> (facultatif)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT) <br> .setDefaultRuleset(argStyleText);<tr><td td>ordinal<> argStyleText (facultatif)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL) <br> .setDefaultRuleset(argStyleText);<td><>duration<>td<>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION) <br> .setDefaultRuleset(argStyleText);/table<>
<h4>"diffsjdk">Différences de java.text.MessageFormat</h4>
ICU MessageFormat prend en charge les arguments nommés et numérotés, tandis que le JDK MessageFormat prend uniquement en charge les arguments numérotés. Les arguments nommés rendent les modèles plus lisibles.
L’ICU implémente une syntaxe de guillemets apostrophe plus conviviale. Dans le texte du message, une apostrophe commence uniquement à citer le texte littéral s’il précède immédiatement un caractère de syntaxe (principalement {accolades}).<br> Dans le JDK MessageFormat, une apostrophe commence toujours à citer, ce qui nécessite un texte commun comme « don’t » et « aujourd’hui » pour être écrit avec des apostrophes doublées comme « don’t » et « aujourd’hui ». Pour plus d’informations, consultez MessagePattern.ApostropheMode.
L’ICU ne crée pas d’objet ChoiceFormat pour un choixArg, pluralArg ou selectArg, mais gère plutôt ces arguments lui-même. Le JDK MessageFormat crée et utilise un objet ChoiceFormat (new ChoiceFormat(argStyleText)). Le JDK ne prend pas en charge le pluriel et sélectionne les arguments du tout.
<Informations> d’utilisation h4</h4>
Voici quelques exemples d’utilisation : <blockquote>
Object[] arguments = {
7,
new Date(System.currentTimeMillis()),
"a disturbance in the Force"
};
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
arguments);
<em>output</em>: At 12:30 PM on Jul 3, 2053, there was a disturbance
in the Force on planet 7.
</blockquote> Généralement, le format du message provient de ressources et les arguments sont définis dynamiquement au moment de l’exécution.
Exemple 2 : <blockquote>
Object[] testArgs = { 3, "MyDisk" };
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
// output, with different testArgs
<em>output</em>: The disk "MyDisk" contains 0 file(s).
<em>output</em>: The disk "MyDisk" contains 1 file(s).
<em>output</em>: The disk "MyDisk" contains 1,273 file(s).
</blockquote>
Pour les messages qui incluent des formulaires pluriels, vous pouvez utiliser un argument pluriel :
MessageFormat msgFmt = new MessageFormat(
"{num_files, plural, " +
"=0{There are no files on disk \"{disk_name}\".}" +
"=1{There is one file on disk \"{disk_name}\".}" +
"other{There are # files on disk \"{disk_name}\".}}",
ULocale.ENGLISH);
Map args = new HashMap();
args.put("num_files", 0);
args.put("disk_name", "MyDisk");
System.out.println(msgFmt.format(args));
args.put("num_files", 3);
System.out.println(msgFmt.format(args));
<em>output</em>:
There are no files on disk "MyDisk".
There are 3 files on "MyDisk".
Consultez PluralFormat et PluralRules pour plus d’informations.
<h4>"synchronisation">Synchronisation</h4>
Les messagesFormats ne sont pas synchronisés. Il est recommandé de créer des instances de format distinctes pour chaque thread. Si plusieurs threads accèdent simultanément à un format, il doit être synchronisé en externe.
Java documentation pour android.icu.text.MessageFormat.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| MessageFormat(String, Locale) |
Construit un MessageFormat pour les paramètres régionaux et le modèle spécifiés. |
| MessageFormat(String, ULocale) |
Construit un MessageFormat pour les paramètres régionaux et le modèle spécifiés. |
| MessageFormat(String) |
Construit un MessageFormat pour les paramètres régionaux par défaut |
Propriétés
| Nom | Description |
|---|---|
| ApostropheMode |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| ArgumentNames |
<strong>[icu]</strong> Renvoie les noms d’arguments de niveau supérieur. |
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| JniIdentityHashCode |
Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité. (Hérité de Object) |
| JniManagedPeerState |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| JniPeerMembers |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| Locale |
Retourne les paramètres régionaux utilisés lors de la création ou de la comparaison de sous-formats. -ou- Définit les paramètres régionaux à utiliser pour la création d’objets Format d’argument. |
| PeerReference |
Obtient la référence d’objet JNI pour cet homologue Java. (Hérité de Object) |
| ThresholdClass |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| ThresholdType |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| ULocale |
<strong>[icu]</strong> Renvoie les paramètres régionaux utilisés lors de la création d’objets Format d’argument. |
Méthodes
| Nom | Description |
|---|---|
| ApplyPattern(String, MessagePattern+ApostropheMode) |
[icu] Définit apostropheMode et le modèle utilisé par ce format de message. |
| ApplyPattern(String) |
Définit le modèle utilisé par ce format de message. |
| AutoQuoteApostrophe(String) |
<strong>[icu]</strong> Convertit un modèle « apostrophe-friendly » en modèle standard. |
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| Dispose() |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| Dispose(Boolean) |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| DisposeUnlessReferenced() |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| Equals(Object) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| Format(IDictionary<String,Object>, StringBuffer, FieldPosition) |
Met en forme une carte d’objets et ajoute le |
| Format(Object, StringBuffer, FieldPosition) |
Met en forme une carte ou un tableau d’objets et ajoute le |
| Format(Object) |
Met en forme un objet pour produire une chaîne. (Hérité de _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Met en forme un tableau d’objets et ajoute le |
| Format(String, IDictionary<String,Object>) |
Crée un MessageFormat avec le modèle donné et l’utilise pour mettre en forme les arguments donnés. |
| Format(String, Object[]) |
Crée un MessageFormat avec le modèle donné et l’utilise pour mettre en forme les arguments donnés. |
| FormatToCharacterIterator(Object) |
Met en forme un objet produisant un |
| GetFormatByArgumentName(String) |
<strong>[icu]</strong> Renvoie le premier format de niveau supérieur associé au nom d’argument donné. |
| GetFormats() |
Retourne les objets Format utilisés pour les éléments de format dans la chaîne de modèle définie précédemment. |
| GetFormatsByArgumentIndex() |
Retourne les objets Format utilisés pour les valeurs passées dans |
| GetHashCode() |
Retourne une valeur de code de hachage pour l’objet. (Hérité de Object) |
| JavaFinalize() |
Obsolète.
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| Parse(String, ParsePosition) |
Analyse la chaîne. |
| Parse(String) |
Analyse le texte à partir du début de la chaîne donnée pour produire un tableau d’objets. |
| ParseObject(String, ParsePosition) |
Analyse le texte d’une chaîne pour produire un tableau d’objets ou une carte. |
| ParseObject(String) |
Analyse le texte à partir du début de la chaîne donnée pour produire un objet. (Hérité de _Format) |
| ParseToMap(String, ParsePosition) |
<strong>[icu]</strong> analyse la chaîne, en retournant les résultats dans une carte. |
| ParseToMap(String) |
<strong>[icu]</strong> Analyse le texte du début de la chaîne donnée pour produire un mappage d’argument à des valeurs. |
| SetFormat(Int32, _Format) |
Définit l’objet Format à utiliser pour l’élément de format avec l’index d’élément de format donné dans la chaîne de modèle précédemment définie. |
| SetFormatByArgumentIndex(Int32, _Format) |
Définit l’objet Format à utiliser pour les éléments de format dans la chaîne de modèle définie précédemment qui utilise l’index d’argument donné. |
| SetFormatByArgumentName(String, _Format) |
<strong>[icu]</strong> Définit l’objet Format à utiliser pour les éléments de format dans la chaîne de modèle définie précédemment qui utilise le nom d’argument donné. |
| SetFormats(_Format[]) |
Définit les objets Format à utiliser pour les éléments de format dans la chaîne de modèle définie précédemment. |
| SetFormatsByArgumentIndex(_Format[]) |
Définit les objets Format à utiliser pour les valeurs passées dans |
| SetFormatsByArgumentName(IDictionary<String,_Format>) |
<strong>[icu]</strong> Définit les objets Format à utiliser pour les valeurs passées dans |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| SetLocale(ULocale) |
Définit les paramètres régionaux à utiliser pour créer des objets Format d’argument. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| ToArray<T>() |
Crée un tableau managé à partir de ce wrapper de tableau Java. (Hérité de Object) |
| ToPattern() |
Retourne la chaîne de modèle appliquée. |
| ToString() |
Retourne une représentation sous forme de chaîne de l’objet. (Hérité de Object) |
| UnregisterFromRuntime() |
Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité. (Hérité de Object) |
| UsesNamedArguments() |
<strong>[icu]</strong> Renvoie true si ce MessageFormat utilise des arguments nommés et false dans le cas contraire. |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| IJavaPeerable.Finalized() |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| IJavaPeerable.JniObjectReferenceControlBlock |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| IJavaPeerable.UnregisterFromRuntime() |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
<strong>[icu enhancement]</strong> ICU remplacement de l’ICU pour |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |