## Formateo de Mensajes

A todos nos gusta utilizar programas que nos cuenten lo que están haciendo. Los programas que nos mantienen informados normalmente lo hacen mostrando mensajes de estado o de error. Por supuesto, estos mensajes necesitan ser traducidos para que puedan ser entendidos por los usuarios finales de todo el mundo. Explicamos la tradución de mensajes de textos en Aislar Objetos Específicos de la Localidad en un ResourceBundle. Normalmente con mover el mensaje String dentro de un ResourceBundle, ya está hecho. Sin embargo, si un mensaje contiene datos variables tendremos que hacer unos pasos extra para preparar su traducción.

En la siguiente lista de mensajes, hemos subrayado los datos variables:

    The disk named MyDisk contains 300 files.
    The current balance of account #34-98-222 is $2,745.72.
    405,390 people have visited your website since January 1, 1998.
    Delete all files older than 120 days.

Podríamos estar tentados a construir el último mensaje de la lista concatenando frases y variables:

    double numDays;
    ResourceBundle mssgBundle;
    .
    .
    String message = mssgBundle.getString("deleteolder") +
                     numDays.toString() +
                     mssgBundle.getString("days");

Esta aproximación funciona bien en Inglés, pero no funciona en idiomas donde los verbos aparezcan al final de la sentencia. Como el orden de las palabras de este mensaje está codificado, los localizadores no podrán crear traducciones gramáticamente correctas para todos los idiomas.

¿Cómo podemos hacer que nuestros programas sean fácilmente localizables si necesitamos utilizar mensajes concatenados? Podemos hacerlo utilizando la clase MessageFormat, que es el punto principal de esta lección.

#### Tratar con Mensajes Concatenados

> Un mensaje concatenado podría contener varios tipos de variables: fechas, horas, cadenas, números, monedas y porcentajes. Para formatear un mensaje concatenado de un forma independiente de la Localidad, se construye un patrón que luego se aplica a un objeto MessageFormat.

#### Manejar Plurales

> Las palabras de un mensaje pueden variar si son en plural o singular. Con la clase ChoiceFormat, se puede mapear un número a una palabra o frase, permitiendo construir mensajes que sean gramáticamente correctos.

Ozito