Aplicación multilenguaje con paquete de recursos | Java
Java puede trabajar con paquetes de recursos (Java resource bundle) es un archivo con extensión .properties y tiene la forma clave - valor nos permite guardar datos de tipo String y podemos obtenerlo mediante la clave (key).
En el caso de la utilización de ficheros de propiedades, si nuestra aplicación requiere de localizar cadenas de texto a varios idiomas, se definirán varios de estos ficheros, uno para cada idioma:
- Bundle.properties es el principal y por lo general recomiendo que sea en inglés, si no encuentra un archivo de la localización actual del sistema se usará este por default.
- Bundle_es.properties en este caso contendrá todo lo traducido a español.
Existen varios idiomas y sufijos que le puedes agregar de acuerdo al país e
idioma del mismo, alguno de ellos son los siguientes:
- _es especifica la configuración para el español sin tener en cuenta el país.
- _es_ES especifica la configuración para el español de España.
- _de especifica la configuración para el alemán sin tener en cuenta el país.
- _de_CH especifica la configuración para el alemán en Suiza.
- _fr_FR especifica la configuración para el francés en Francia.
- _fr especifica la configuración para el francés en todos los países que sea dominante este lenguaje.
Vamos a añadir dos recursos uno en inglés y otro en español; recuerda que un
# significa un
comentario y no afecta en nada al archivo de propiedades, solo nos sirve
como un guía. Ten en cuenta que la clave esta a lado izquierdo del signo
= y el valor esta a
lado derecho, lo único que podemos cambiar en todos los archivos de
propiedades es el valor más no la llave fíjate en los siguientes ejemplos.
#Buttons
addButton=Add
cancelButton=Cancel
saveButton=Save
#Labels
addressLabel=Address:
creationDateLabel=Creation date:
dateBirthLabel=Date of birth:
dateFormatLabel=dd/MM/yyyy
descriptionLabel=Description:
emailLabel=Email:
errorLabel=Error
idCardLabel=Id card:
lastNameLabel=Last name:
nameLabel=Name:
phoneLabel=Phone:
postalCodeLabel=Postal code:
sexEmptyLabel=Empty
sexFemaleLabel=(F) Female
sexLabel=Sex:
sexMaleLabel=(M) Male
statusLabel=Status:
successLabel=Success
updateDateLabel=Update date:
#Titles
addCustomerTitle=Add customer
addModuleTitle=Add system module
addProductCategoryTitle=Add product category
addProductTitle=Add product
addProviderTitle=Add provider
#Error Messages
moduleDescriptionErrorMessage=The description must be between 5 and 100 characters
moduleNameErrorMessage=The name must be between 5 and 50 characters long
productCategoryDescriptionErrorMessage=The description must be between 4 and 100 characters
productCategoryNameErrorMessage=The name must be between 3 and 50 characters long
uniqueIdCardErrorMessage=A record with that ID already exists
uniqueNameErrorMessage=A record with the same name already exists
#Success Messages
recordSaveSuccessMessage=The record has been saved successfully
#Buttons addButton=A\u00F1adir cancelButton=Cancelar saveButton=Guardar #Labels addressLabel=Direcci\u00F3n: creationDateLabel=Fecha de creaci\u00F3n: dateBirthLabel=Fecha de nacimiento: dateFormatLabel=dd/MM/aaaa descriptionLabel=Descripci\u00F3n: emailLabel=Correo electr\u00F3nico: errorLabel=Error idCardLabel=C\u00E9dula: lastNameLabel=Apellido: nameLabel=Nombre: phoneLabel=Tel\u00E9fono: postalCodeLabel=C\u00F3digo Postal: sexEmptyLabel=Vac\u00EDo sexFemaleLabel=(F) Femenino sexLabel=Sexo: sexMaleLabel=(M) Masculino statusLabel=Estado: successLabel=\u00C9xito updateDateLabel=Fecha de actualizaci\u00F3n: #Titles addCustomerTitle=A\u00F1adir cliente addModuleTitle=A\u00F1adir m\u00F3dulo del sistema addProductCategoryTitle=A\u00F1adir categor\u00EDa de productos addProductTitle=A\u00F1adir producto addProviderTitle=A\u00F1adir proveedor #Error Messages moduleDescriptionErrorMessage=La descripci\u00F3n debe tener entre 5 y 100 caracteres moduleNameErrorMessage=El nombre debe tener entre 5 y 50 caracteres productCategoryDescriptionErrorMessage=La descripci\u00F3n debe tener entre 4 y 100 caracteres productCategoryNameErrorMessage=El nombre debe tener entre 3 y 50 caracteres uniqueIdCardErrorMessage=Ya existe un registro con esa identificaci\u00F3n uniqueNameErrorMessage=Ya existe un registro con el mismo nombre #Success Message recordSaveSuccessMessage=El registro se ha guardado correctamente
Los anteriores son un ejemplo de como se usa un paquete de recursos en Java,
el primero es el Bundle.properties y el segundo es el Bundle_es.properties,
este último al tener caracteres especiales como tildes y ñ se debe utilizar la
codificación Unicode para que se pueda interpretar.
Una vez realizado ahora vamos a utilizarlo en un ejemplo simple para obtener
el texto del ResourceBundle.
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("com/abigsite/facturationsystem/bundle/Bundle");
JOptionPane.showMessageDialog(null, bundle.getString("recordSaveSuccessMessage"), bundle.getString("successLabel"), JOptionPane.INFORMATION_MESSAGE);
}
En el código anterior simplemente estamos utilizando la clase ResourceBundle
para obtener el archivo dándole como parámetro la ubicación que en este caso
se ha agregado en src/main/resources/com/abigsite/facturationsystem/bundle.
Para obtener los datos simplemente se llama a la función getString y se le
pasa la llave o key y nos traerá el valor.
Comentarios
Publicar un comentario