¿Qué es la internacionalización y para qué sirve?
Enviado por alejandro180 • 8 de Noviembre de 2018 • Apuntes • 739 Palabras (3 Páginas) • 178 Visitas
Internacionalización.[pic 1]
¿Qué es la internacionalización y para qué sirve?
Permite crear aplicaciones que se puedan adaptar a los diferentes idiomas y así abarcar poder abarcar más usuarios.
Además, se podrá utilizar textos de manera que no estén fijos en el código Java “hardcoded”.
Formatos y funcionamiento.
Existen dos maneras de crear textos, una de ellas es utilizando una clase de Java y la otra consiste en un archivo de texto plano, Java determina automáticamente el idioma y el país por defecto, por ejemplo español Argentina, “Etiquetas_es_AR”, si no encuentra el archivo o la clase con esa terminación lo buscará como “Etiquetas_es”, en caso de no encontrar este otro lenguaje mostrará una excepción.
Estructura de los textos.
Archivo de texto plano:
El archivo se lo guarda con la siguiente estructura “Nombre_xx_yy.properties” donde xx es el idioma e yy es el país.
Utiliza varias líneas siguiendo el formato de clave-valor, por ejemplo:
# Textos_es_ES
Texto_Boton=Pulsame
Titulo_Ventana=Una ventana
Texto_Boton_Salir=Salir
# Textos_en_US
Texto_Boton=Hit me!
Titulo_Ventana=A window
Texto_Boton_Salir=Exit
El caracter # sirve para hacer comentarios.
Un detalle importante a la hora de crear archivos de textos es el de no usar caracteres especiales como acentos, eñes o cirílicos, en su lugar se deben poner los códigos Unicode correspondientes, por ejemplo para escribir “eñe” se debe escribir “e\u00a4e” donde “\u00a4” es la letra ñ en Unicode. Java permite obtener estos códigos con una herramienta incluida llamada “Native2ascii”.
Otra manera de armar el archivo sería crear un documento y armarle la estructura con los caracteres especiales, esto se puede hacer con un block de notas. Luego guardar el archivo en formato Unicode, hasta ese punto el archivo no será legible, ahora se deberá ejecutar un comando para poder convertirlo con los caracteres especiales: “native2ascii –encoding UNICODE archivo_unicode.properties archivo_es.properties” luego de eso el archivo podrá verse con los caracteres convertidos.
Clase de Java:
En el caso de crear una clase Java, se debe heredar de la clase ListResourceBundle y definir el método abstracto.
package languages;
import java.util.ListResourceBundle;
public class Lenguaje_ES extends ListResourceBundle {
// Atributos de la clase.
private Object[][] contenido = {{"Texto_Boton", "Pulsame"},{"Titulo_Ventana","Una Ventana"},{"Texto_Boton_Salir","Salir"}};
@Override
protected Object[][] getContents() {
// TODO Auto-generated method stub
return contenido;
}
}
package languages;
import java.util.ListResourceBundle;
public class Lenguaje_EN extends ListResourceBundle {
// Atributos de la clase.
private Object[][] contenido = {{"Texto_Boton", "Hit me!"},{"Titulo_Ventana","A window"},{"Texto_Boton_Salir","Exit"}};
@Override
protected Object[][] getContents() {
// TODO Auto-generated method stub
return contenido;
}
}
Utilizar los textos.
“Textos” será el nombre del archivo o clase de Java, con el método ResourceBundle.getBundle() se determina el idioma y el país y se añadirá la extensión al parámetro “Textos”, es decir, construirá la cadena “Textos_es_AR”. Luego buscará la clase con ese nombre “Textos_es_AR.class”, si no existe buscará un archivo de nombre “Textos_es_AR.properties”, una vez que lo encuentre, se llamará al método getString(“Texto_Boton”) y el texto correspondiente a esa clave.
Ejemplo:
System.out.println(ResourceBundle.getBundle(“Etiquetas”).getString(“Texto_Boton”));
System.out.println(ResourceBundle.getBundle(“paquete.paquete2.Etiquetas”).getString(“Texto_Boton”));
Utilizar los textos.
Para comprobar los archivos de idiomas se puede indicar al programa a cambiar el lenguaje y el país con el siguiente código:
Locale.setDefault(new Locale(“XX”, ”YY”));
Donde XX es el idioma e YY el país.
Language | Country | Locale ID |
Albanian | Albania | sq_AL |
Arabic | Algeria | ar_DZ |
Arabic | Bahrain | ar_BH |
Arabic | Egypt | ar_EG |
Arabic | Iraq | ar_IQ |
Arabic | Jordan | ar_JO |
Arabic | Kuwait | ar_KW |
Arabic | Lebanon | ar_LB |
Arabic | Libya | ar_LY |
Arabic | Morocco | ar_MA |
Arabic | Oman | ar_OM |
Arabic | Qatar | ar_QA |
Arabic | Saudi Arabia | ar_SA |
Arabic | Sudan | ar_SD |
Arabic | Syria | ar_SY |
Arabic | Tunisia | ar_TN |
Arabic | United Arab Emirates | ar_AE |
Arabic | Yemen | ar_YE |
Belarusian | Belarus | be_BY |
Bulgarian | Bulgaria | bg_BG |
Catalan | Spain | ca_ES |
Chinese (Simplified) | China | zh_CN |
Chinese (Simplified) | Singapore | zh_SG |
Chinese (Traditional) | Hong Kong | zh_HK |
Chinese (Traditional) | Taiwan | zh_TW |
Croatian | Croatia | hr_HR |
Czech | Czech Republic | cs_CZ |
Danish | Denmark | da_DK |
Dutch | Belgium | nl_BE |
Dutch | Netherlands | nl_NL |
English | Australia | en_AU |
English | Canada | en_CA |
English | India | en_IN |
English | Ireland | en_IE |
English | Malta | en_MT |
English | New Zealand | en_NZ |
English | Philippines | en_PH |
English | Singapore | en_SG |
English | South Africa | en_ZA |
English | United Kingdom | en_GB |
English | United States | en_US |
Estonian | Estonia | et_EE |
Finnish | Finland | fi_FI |
French | Belgium | fr_BE |
French | Canada | fr_CA |
French | France | fr_FR |
French | Luxembourg | fr_LU |
French | Switzerland | fr_CH |
German | Austria | de_AT |
German | Germany | de_DE |
German | Luxembourg | de_LU |
German | Switzerland | de_CH |
Greek | Cyprus | el_CY |
Greek | Greece | el_GR |
Hebrew | Israel | iw_IL |
Hindi | India | hi_IN |
Hungarian | Hungary | hu_HU |
Icelandic | Iceland | is_IS |
Indonesian | Indonesia | in_ID |
Irish | Ireland | ga_IE |
Italian | Italy | it_IT |
Italian | Switzerland | it_CH |
Japanese (Gregorian calendar) | Japan | ja_JP |
Japanese (Imperial calendar) | Japan | ja_JP_JP |
Korean | South Korea | ko_KR |
Latvian | Latvia | lv_LV |
Lithuanian | Lithuania | lt_LT |
Macedonian | Macedonia | mk_MK |
Malay | Malaysia | ms_MY |
Maltese | Malta | mt_MT |
Norwegian (Bokmål) | Norway | no_NO |
Norwegian (Nynorsk) | Norway | no_NO_NY |
Polish | Poland | pl_PL |
Portuguese | Brazil | pt_BR |
Portuguese | Portugal | pt_PT |
Romanian | Romania | ro_RO |
Russian | Russia | ru_RU |
Serbian (Cyrillic) | Bosnia and Herzegovina | sr_BA |
Serbian (Cyrillic) | Montenegro | sr_ME |
Serbian (Cyrillic) | Serbia | sr_RS |
Serbian (Latin) | Bosnia and Herzegovina | sr_Latn_BA |
Serbian (Latin) | Montenegro | sr_Latn_ME |
Serbian (Latin) | Serbia | sr_Latn_RS |
Slovak | Slovakia | sk_SK |
Slovenian | Slovenia | sl_SI |
Spanish | Argentina | es_AR |
Spanish | Bolivia | es_BO |
Spanish | Chile | es_CL |
Spanish | Colombia | es_CO |
Spanish | Costa Rica | es_CR |
Spanish | Dominican Republic | es_DO |
Spanish | Ecuador | es_EC |
Spanish | El Salvador | es_SV |
Spanish | Guatemala | es_GT |
Spanish | Honduras | es_HN |
Spanish | Mexico | es_MX |
Spanish | Nicaragua | es_NI |
Spanish | Panama | es_PA |
Spanish | Paraguay | es_PY |
Spanish | Peru | es_PE |
Spanish | Puerto Rico | es_PR |
Spanish | Spain | es_ES |
Spanish | United States | es_US |
Spanish | Uruguay | es_UY |
Spanish | Venezuela | es_VE |
Swedish | Sweden | sv_SE |
Thai (Western digits) | Thailand | th_TH |
Thai (Thai digits) | Thailand | th_TH_TH |
Turkish | Turkey | tr_TR |
Ukrainian | Ukraine | uk_UA |
Vietnamese | Vietnam | vi_VN |
...