Programacion Generica en Java.
Enviado por Kate • 13 de Marzo de 2018 • 1.758 Palabras (8 Páginas) • 453 Visitas
...
4.1 PASOS PARA INTERNACIONALIZAR UN PROGRAMA.
- Se debe identificar todos los mensajes o componentes gráficos que se desean internacionalizar, como por ejemplo etiquetas.
- Una vez identificado el conjunto de mensajes, entonces se debe crear por cada idiomas, un nuevo archivo de propiedades con el nombre especificado en la siguiente sintaxis: nombreArchivo_idioma_localizacion.properties
- El idioma debe estar escrito según la norma ISO-639-1, la misma que generalmente está representada por las dos primeras letras del nombre del idioma en inglés y escrito en minúsculas.
- La localización debe estar escrita según la norma ISO 3166-1, dicha norma representa el país mediante dos letras en mayúsculas.
- Dentro de cada archivo se debe escribir un conjunto de todas las etiquetas que van a ser utilizadas dentro de la aplicación en un formato clave=valor
- Una vez definido el conjunto de mensajes a mostrar en diferentes idiomas y en sus respectivos archivos, entonces se debe crear una instancia de java.util.Locale, la misma que puede ser construida de dos maneras: la primera definiendo la localización por defecto que se encuentra utilizando el OS y la segunda especificando mediante dos parámetros tipo String el idioma y el país.
- Para obtener los contenidos de todas las etiquetas que se encuentran en los archivos de internacionalización, se debe crear una instancia de la clase java.utilResourceBundle, la misma que posee el método sobrecargado llamado getBundle(); el mismo que retorna un objeto de ResourceBundle ya creado y que no necesita ser llamado de una instancia por su calidad de estático.
- Finalmente, se debe reemplazar dentro del programa todas las etiquetas que se desean internacionalizar por el getString(); de la instancia del ResourceBundle.
EJEMPLO
package internacionalizacion;
import java.io.IOException;
import java.util.Properties;
public class Idioma extends Properties{
private static final long serialVersionUID = 1L;
public Idioma(String idioma){
//Modificar si quieres añadir mas idiomas
//Cambia el nombre de los ficheros o añade los necesarios
switch(idioma){
case "Español":
getProperties("espanol.properties");
break;
case "Ingles":
getProperties("ingles.properties");
break;
case "Frances":
getProperties("frances.properties");
break;
case "Italiano":
getProperties("italiano.properties");
break;
default:
getProperties("espanol.properties");
}
}
private void getProperties(String idioma) {
try {
this.load( getClass().getResourceAsStream(idioma) );
} catch (IOException ex) {
}
}
}
package internacionalizacion;
public class CambioIdioma extends javax.swing.JFrame {
public CambioIdioma() {
initComponents();
cambiarIdioma("Espanol");
}
public void cambiarIdioma(String nombreIdioma){
idioma=new Idioma(nombreIdioma);
btnCambio.setText(idioma.getProperty("cambio"));
this.setTitle(idioma.getProperty("titulo"));
lblHola.setText(idioma.getProperty("saludo"));
cmbIdiomas.removeAllItems();
String idiomas[]={
idioma.getProperty("espanol"),
idioma.getProperty("ingles"),
idioma.getProperty("frances"),
};
for(int i=0;i
cmbIdiomas.addItem(idiomas[i]);
}
}
@SuppressWarnings("unchecked")
//
private void initComponents() {
btnCambio = new javax.swing.JButton();
lblHola = new javax.swing.JLabel();
cmbIdiomas = new javax.swing.JComboBox();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMaximumSize(new java.awt.Dimension(400, 400));
setMinimumSize(new java.awt.Dimension(400, 300));
getContentPane().setLayout(null);
btnCambio.setFont(new java.awt.Font("Tempus Sans ITC", 1, 12)); // NOI18N
btnCambio.setText("jButton1");
btnCambio.addActionListener(new
...