MessageFormat Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
<strong>[icu enhancement]</strong> ICU's replacement for 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
- Herencia
- Atributos
Comentarios
<strong>[icu enhancement]</strong> ICU's replacement for java.text.MessageFormat. Los métodos, los campos y otras funcionalidades específicas de ICU se etiquetan como "<strong>[icu]</strong>".
MessageFormat prepara cadenas para mostrar a los usuarios, con argumentos opcionales (variables o marcadores de posición). Los argumentos pueden producirse en cualquier orden, lo que es necesario para la traducción a idiomas con diferentes gramáticas.
MessageFormat se construye a partir de una <cadena em>pattern</em> con argumentos en {llaves} que se reemplazarán por valores con formato.
MessageFormat difiere de las demás Format clases en que se crea un MessageFormat objeto con uno de sus constructores (no con un getInstance método de generador de estilo). Los métodos de fábrica no son necesarios porque MessageFormat no implementa ningún comportamiento específico de la configuración regional. Cualquier comportamiento específico de la configuración regional se define mediante el patrón que se proporciona y los subformatos usados para los argumentos insertados.
Los argumentos se pueden denominar (mediante identificadores) o numerados (mediante enteros pequeños de dígitos ASCII). Algunos de los métodos de API solo funcionan con números de argumento y producen una excepción si el patrón tiene argumentos con nombre (vea #usesNamedArguments()).
Es posible que un argumento no especifique ningún tipo de formato. En este caso, se da formato a un valor Number con un valor numberFormat predeterminado (para la configuración regional), se da formato a un valor Date con un valor predeterminado (para la configuración regional) DateFormat y, para cualquier otro valor, se usa su valor toString().
Un argumento puede especificar un tipo "simple" para el que se crea, almacena en caché y se usa el objeto Format especificado.
Un argumento puede tener un tipo "complejo" con sub-patrones MessageFormat anidados. Durante el formato, se selecciona uno de estos mensajes secundarios según el valor del argumento y con formato recursivo.
Después de la construcción, se puede establecer un objeto Format personalizado para un argumento de nivel superior, invalidando el formato predeterminado y el comportamiento de análisis de ese argumento. Sin embargo, el formato personalizado se puede lograr más simplemente escribiendo un argumento sin tipo en la cadena de patrón y proporcionándolo con un valor de cadena con formato previo.
Al aplicar formato, MessageFormat toma una colección de valores de argumento y escribe una cadena de salida. Los valores de argumento se pueden pasar como una matriz (cuando el patrón solo contiene argumentos numerados) o como una asignación (que funciona para argumentos con nombre y numerados).
Cada argumento coincide con uno de los valores de entrada por índice de matriz o clave de asignación y tiene formato según su especificación de patrón (o mediante un objeto Format personalizado si se estableció uno). Un argumento de patrón numerado coincide con una clave de mapa que contiene ese número como una cadena de dígito decimal ASCII (sin cero inicial).
<h3>"patterns">Patterns and Their Interpretation</h3>
MessageFormat usa patrones de la forma siguiente: <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 puede contener cadenas literales entre comillas, incluidos caracteres de sintaxis. Una cadena literal entre comillas comienza con un apóstrofo ASCII y un carácter de sintaxis (normalmente una llave {}) y continúa hasta el siguiente apóstrofo único. Un apóstrofo ASCII doble dentro o fuera de una cadena entre comillas representa un apóstrofo literal.
<Los caracteres de sintaxis li>quotable son las {llaves} en todas las partes messageText, además del inicio de sesión '#' en un messageText inmediatamente dentro de un pluralStyle, y el símbolo '|' de un messageText inmediatamente dentro de un choiceStyle.
<li>See also MessagePattern.ApostropheMode<li>In argStyleText, every single ASCII apóstrofo begins and ends quoted literal text, and unquoted {curly braces} must occur in matched pairs.
</ul>
Recomendación: Use el carácter real de apóstrofo (comillas simples) \\u2019 para texto legible para humanos y use el apóstrofo ASCII (\\u0027 ' ) solo en la sintaxis del programa, como las comillas en MessageFormat. Consulte las anotaciones de U+0027 Aptrophe en El estándar Unicode.
El choice tipo de argumento está en desuso. Use plural argumentos para la selección plural adecuada y select argumentos para la selección simple entre un conjunto fijo de opciones.
Los argType valores y argStyle se usan para crear una Format instancia del elemento de formato. En la tabla siguiente se muestra cómo los valores se asignan a instancias de formato. Las combinaciones que no se muestran en la tabla son ilegales. Cualquiera argStyleText debe ser una cadena de patrón válida para la subclase Format usada.
<table border=1><tr><th>argType <th>argStyle <th>resultante Object <tr td><colspan=2>(none)<td>null<tr><td rowspan=5>number<td>(none)<td>NumberFormat.getInstance(getLocale())<tr td tr><>integer<>NumberFormat.getIntegerInstance(getLocale())<td td><td>currency<>NumberFormat.getCurrencyInstance(getLocale())<tr td tr td td tr><>percent<>NumberFormat.getPercentInstance(getLocale())<><td>argStyleText<td>new DecimalFormat(argStyleText, new DecimalFormatSymbols(getLocale()))<tr td><rowspan=6>date<td>(none)<td>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<tr><td td>short<>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())<tr><td>medium<td>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<tr><td td>long<>DateFormat.getDateInstance(DateFormat.LONG, getLocale())<tr td tr><td td>full<tr td>DateFormat.getDateInstance(DateFormat.FULL, getLocale())<tr td td>< argStyleText><td>new SimpleDateFormat(argStyleText, getLocale())<tr><td rowspan=6>time<td>(none)<td>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<tr td><>short<>trDateFormat.getTimeInstance(DateFormat.SHORT, getLocale())<td td><>medium<tr td>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<tr><>long<td td>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())<tr><td td>full<tr td>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())<tr><td> argStyleText <td tr>new SimpleDateFormat(argStyleText, getLocale())<><td td>spellout<>argStyleText (optional)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT) <br> .setDefaultRuleset(argStyleText);<tr><td td>ordinal<>argStyleText (optional)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL) <br> .setDefaultRuleset(argStyleText);<tr><td td>duration<>argStyleText (optional)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION) <br> .setDefaultRuleset(argStyleText);</table>
<h4>"diffsjdk">Diferencias de java.text.MessageFormat</h4>
MessageFormat de ICU admite argumentos con nombre y numerados, mientras que el MessageFormat de JDK solo admite argumentos numerados. Los argumentos con nombre hacen que los patrones sean más legibles.
ICU implementa una sintaxis de comillas apóstrofo más fáciles de usar. En el texto del mensaje, un apóstrofo solo comienza a citar texto literal si precede inmediatamente a un carácter de sintaxis (principalmente {llaves}).<br> En el JDK MessageFormat, un apóstrofo siempre comienza a citar, lo que requiere texto común como "don't" y "aujourd'hui" para escribirse con apóstrofos duplicados como "don't" y "aujourd''hui". Para obtener más información, consulte MessagePattern.ApostropheMode.
ICU no crea un objeto ChoiceFormat para choiceArg, pluralArg o selectArg, sino que controla dichos argumentos. El objeto MessageFormat de JDK crea y usa un objeto ChoiceFormat (new ChoiceFormat(argStyleText)). El JDK no admite argumentos plurales y select.
<h4>Información de uso</h4>
Estos son algunos ejemplos de uso: <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> Normalmente, el formato del mensaje procede de los recursos y los argumentos se establecerán dinámicamente en tiempo de ejecución.
Ejemplo 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>
Para los mensajes que incluyen formularios plurales, puede usar un argumento plural:
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".
Consulte PluralFormat y PluralRules para obtener más información.
<h4>"synchronization">Synchronization</h4>
MessageFormats no están sincronizados. Se recomienda crear instancias de formato independientes para cada subproceso. Si varios subprocesos acceden a un formato simultáneamente, debe sincronizarse externamente.
Java documentación para android.icu.text.MessageFormat.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Constructores
| Nombre | Description |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| MessageFormat(String, Locale) |
Construye un MessageFormat para la configuración regional y el patrón especificados. |
| MessageFormat(String, ULocale) |
Construye un MessageFormat para la configuración regional y el patrón especificados. |
| MessageFormat(String) |
Construye un MessageFormat para la configuración regional predeterminada |
Propiedades
| Nombre | Description |
|---|---|
| ApostropheMode |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ArgumentNames |
<strong>[icu]</strong> Devuelve los nombres de argumento de nivel superior. |
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
<strong>[icu enhancement]</strong> ICU's replacement for |
| JniPeerMembers |
<strong>[icu enhancement]</strong> ICU's replacement for |
| Locale |
Devuelve la configuración regional que se usa al crear o comparar subformatos. -o bien- Establece la configuración regional que se va a usar para crear objetos Format de argumento. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| ThresholdClass |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ThresholdType |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ULocale |
<strong>[icu]</strong> Devuelve la configuración regional que se usa al crear objetos Format de argumento. |
Métodos
| Nombre | Description |
|---|---|
| ApplyPattern(String, MessagePattern+ApostropheMode) |
[icu] Establece el ApóstrofoMode y el patrón usado por este formato de mensaje. |
| ApplyPattern(String) |
Establece el patrón usado por este formato de mensaje. |
| AutoQuoteApostrophe(String) |
<strong>[icu]</strong> Convierte un patrón 'apóstrofo-friendly' en un patrón estándar. |
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
<strong>[icu enhancement]</strong> ICU's replacement for |
| Equals(Object) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| Format(IDictionary<String,Object>, StringBuffer, FieldPosition) |
Da formato a un mapa de objetos y anexa el |
| Format(Object, StringBuffer, FieldPosition) |
Da formato a un mapa o una matriz de objetos y anexa el |
| Format(Object) |
Da formato a un objeto para generar una cadena. (Heredado de _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Da formato a una matriz de objetos y anexa el |
| Format(String, IDictionary<String,Object>) |
Crea un MessageFormat con el patrón especificado y lo usa para dar formato a los argumentos especificados. |
| Format(String, Object[]) |
Crea un MessageFormat con el patrón especificado y lo usa para dar formato a los argumentos especificados. |
| FormatToCharacterIterator(Object) |
Da formato a un objeto que genera un |
| GetFormatByArgumentName(String) |
<strong>[icu]</strong> Devuelve el primer formato de nivel superior asociado al nombre del argumento especificado. |
| GetFormats() |
Devuelve los objetos Format usados para los elementos de formato de la cadena de patrón establecida anteriormente. |
| GetFormatsByArgumentIndex() |
Devuelve los objetos Format usados para los valores pasados a |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| JavaFinalize() |
Obsoletos.
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| Parse(String, ParsePosition) |
Analiza la cadena. |
| Parse(String) |
Analiza el texto desde el principio de la cadena especificada para generar una matriz de objetos. |
| ParseObject(String, ParsePosition) |
Analiza el texto de una cadena para generar una matriz de objetos o map. |
| ParseObject(String) |
Analiza el texto desde el principio de la cadena especificada para generar un objeto . (Heredado de _Format) |
| ParseToMap(String, ParsePosition) |
<strong>[icu]</strong> Analiza la cadena y devuelve los resultados en un mapa. |
| ParseToMap(String) |
<strong>[icu]</strong> Analiza texto desde el principio de la cadena especificada para generar un mapa de argumento a valores. |
| SetFormat(Int32, _Format) |
Establece el objeto Format que se va a usar para el elemento de formato con el índice de elemento de formato especificado dentro de la cadena de patrón establecida anteriormente. |
| SetFormatByArgumentIndex(Int32, _Format) |
Establece el objeto Format que se va a usar para los elementos de formato dentro de la cadena de patrón establecida anteriormente que usan el índice de argumento especificado. |
| SetFormatByArgumentName(String, _Format) |
<strong>[icu]</strong> Establece el objeto Format que se va a usar para los elementos de formato dentro de la cadena de patrón establecida anteriormente que usa el nombre del argumento especificado. |
| SetFormats(_Format[]) |
Establece los objetos Format que se van a usar para los elementos de formato de la cadena de patrón establecida anteriormente. |
| SetFormatsByArgumentIndex(_Format[]) |
Establece los objetos Format que se van a usar para los valores pasados a |
| SetFormatsByArgumentName(IDictionary<String,_Format>) |
<strong>[icu]</strong> Establece los objetos Format que se van a usar para los valores pasados a |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetLocale(ULocale) |
Establece la configuración regional que se va a usar para crear objetos Format de argumento. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToPattern() |
Devuelve la cadena de patrón aplicada. |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| UsesNamedArguments() |
<strong>[icu]</strong> Devuelve true si messageFormat usa argumentos con nombre y false en caso contrario. |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
<strong>[icu enhancement]</strong> ICU's replacement for |
| IJavaPeerable.Finalized() |
<strong>[icu enhancement]</strong> ICU's replacement for |
| IJavaPeerable.JniObjectReferenceControlBlock |
<strong>[icu enhancement]</strong> ICU's replacement for |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| IJavaPeerable.UnregisterFromRuntime() |
<strong>[icu enhancement]</strong> ICU's replacement for |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |