At 1:15 PM on April 13, 1998, we detected 7 spaceships on the planet Mars.
^ ^ ^ ^
| | | |
Date Date Number String
Observa que hemos subrayado las variables, y hemos identificado qué tipo de objetos representará estos datos.
ResourceBundle messages =
ResourceBundle.getBundle("MessageBundle",currentLocale);
Este ResourceBundle está compuesto por un fichero de propiedades para cada Localidad. Como nuestro ResourceBundle se llama MessageBundle, el fichero de propiedades para la Localidad U.S. English se llamará MessageBundle_en_US.properties. Aquí tienes los contendos de este fichero de propiedades:
template = At {2,time,short} on {2,date,long}, we detected {1,number,integer} spaceships on the planet {0}.
planet = Mars
Hemos especificado el patrón en la primera línea del fichero de propiedades. Si comparamos este patrón con el mensaje de texto mostrado en el paso 1, veremos que se ha reemplazado cada variable del mensaje con un argumento encerrado entre corchetes. Cada argumento empieza con un dígito llamado el número de argumento, que corresponde con el índice de un elemento en un array de Object que contiene los valores de los argumentos. Observa que en el patrón, estos argumentos no están en ningún orden particular. Se pueden situar los argumentos en cualquier orden dentro del patrón. El único requerimiento es que el número del argumento tenga un elemento correspondiente en el array de valores de los argumentos. En el siguiente paso explicaremos el array de valores de argumentos, pero primero echemos un vistazo a todos los argumentos del patrón. La siguiente tabla proporciona algunos detalles sobre los argumentos.
| Argumento | Descripción |
|---|---|
| {2,time,short} | La parte horaria de un objeto Date. El estilo "short" especifica el estilo de formato DateFormat.SHORT. |
| {2,date,long} | La parte de la fecha de un objeto Date. El mismo objeto Date se utiliza para las dos variables de fecha y hora. En el array de argumentos Object el índice que contiene el objeto Date es el 2. |
| {1,number,integer} | Un objeto Number, además cualificado con el estilo numérico "integer". |
| {0} | El String del ResourceBundle que corresponde con la clave "planet". |
Para una descripción completa de la síntaxis de argumentos, puedes ver la documentación del API para la clase MessageFormat.
Object[] messageArguments = {
messages.getString("planet"),
new Integer(7),
new Date()
};
MessageFormat formatter = new MessageFormat("");
formatter.setLocale(currentLocale);
formatter.applyPattern(messages.getString("template"));
String output = formatter.format(messageArguments);
% java MessageFormatDemo en US currentLocale = en_US At 1:15 PM on April 13, 1998, we detected 7 spaceships on the planet Mars.Cuando se ejecuta el programa para la Localidad Alemana, observamos que la fecha y la hora han sido localizadas:
% java MessageFormatDemo de DE currentLocale = de_DE Um 13.15 Uhr am 13. April 1998 haben wir 7 Raumschiffe auf dem Planeten Mars entdeckt.