Aislar los objetos específicos de la localidad en un ResourceBundle

Los datos específicos de la localidad deben ser creados de acuerdo a las convenciones del idioma y la región del usuario final. El texto mostrado por un interface de usuario es el ejemplo más obvio de datos expecíficos de la localidad. Por ejemplo, una aplicación con un botón "Cancel" en los Estados Unidos, tendrá un botón "Abbrechen" en Alemanía. En otros paises este botón tendrá otras etiquetas. Obviamente, tu no quieres codificar la etiqueta de este botón. ¿No sería bonito poder obtener automáticamente la etiqueta correcta para una Localidad dada? Afortunadamente, se puede, asilando los objetos específicos de la localidad en un ResourceBundle.

En esta lección, aprenderás cómo crear, cargar y acceder a objetos ResourceBundle. Si tienes prisa por examinar algún código fuente, adelantate y chequea las dos últimas lecciones. Luego podrás volver a las dos primeras para obtener alguna información conceptual sobre los objetos ResourceBundle.

La clase ResourceBundle

Los objetos ResourceBundle contienen objetos específicos de la localidad. Cuando se necesita uno de estos objetos, se busca en el ResourceBundle, que devuelve el objeto que corresponde con la Localidad del usuario final. En esta sección, explicaremos como un ResourceBundle se relaciona con una Locale. También describiremos las subclases de ResourceBundle, y cuando se pueden utilizar.

Preparar el uso de un ResourceBundle

Antes de crear y cargar objetos ResourceBundle, se debería planificar un poco. Primero, identificar los objetos específicos de la localidad de nuestro programa. Luego, organizar estos objetos en categorias y almacenarlos en diferentes objetos ResourceBundle.

Utilizar Ficheros de Propiedades

Si nuestra aplicación contiene objetos String que necesitan ser traducidos a diferentes idiomas, deberíamos almacener estos objetos String en un PropertyResourceBundle, que está constituido por un conjunto de ficheros de propiedades. Como los ficheros de propiedades son sencillos ficheros de texto, pueden ser creados y mantenidos por tus traductores. No necesitas cambiar el código fuente. En esta sección aprenderás cómo seleccionar los ficheros de propiedades que constituyen un PropertyResourceBundle.

Utilizar un ListResourceBundle

La clase ListResourceBundle, que es una subclase de ResourceBundle, maneja objetos específicos de la localidad con una lista. Un ListResourceBundle está constituido por un fichero de clase, lo que significa que se deberá codificar y compilar un nuevo fichero fuente cada vez que querramos soportar una nueva localidad. Por lo tanto, no se debería utilizar un ListResourceBundle para aislar objetos String que deban ser traducidos a otros idiomas. Para aislar texto traducible, se debería utilizar un PropertyResourceBundle porque está constituido por un conjunto de ficheros de propiedades editables. Sin embargo, los objetos ListResourceBundle son útiles, porque al contrario que los ficheros de propiedades, pueden almacenar cualquier tipo de objeto específico de la localidad. Pasando a través de un programa de ejemplo, en esta sección veremos cómo utilizar un ListResourceBundle.

Ozito