You are on page 1of 4

juank.black-byte.

com

http://juank.black-byte.com/csharp-aplicaciones-multilenguaje-globalizacion-localizacion/

C# - Aplicaciones multilenguaje ( globalizacin y localizacin )


August 29th, 2010 by JuanK Continuamente en mis conferencias y de paso por los foros a travs de internet encuentro multitud de dudas e inquietudes al respecto de Cmo hacer una aplicacin que soporte mltiples idiomas, ciertamente hay varias formas de conseguirlo y no todas esas formas son buenas en todos los escenarios, dependiendo de diferentes factores como por ejemplo el tamao de la aplicacin o la cantidad de idiomas soportados. Sin embargo yo tengo mi mtodo preferido, el cual considero que es vlido para la inmensa mayora de aplicaciones desarrolladas, el mtodo de los archivos de recursos y ese es el tema principal de este artculo. En tres pasos enseare como hacerlo. 1. Utilizar archivos de recursos para manipular las cadenas de texto 2. Soportar mltiples lenguajes con los archivos de recursos 3. Aislar los archivos de recursos para facilitar la actualizacin Finalmente relacionare otros temas de inters para tener una funcionalidad ms robusta. 1. UTILIZAR ARCHIVOS DE RECURSOS PARA MANIPULAR LAS CADENAS DE TEXTO PREPARAR LA APLICACION Lo primero que debemos hacer es crear una aplicacin de Windows Forms con 1 ListBox y 5 Botones como se ven la siguiente imagen. Para fines de este ejemplo con excepcin de los textos del listbox ninguno de los textos es obligatorio. Ahora, dentro de la solucin, creamos una carpeta la cual llamaremos Recursos Localizables, justo como se ve a continuacin. Ahora creamos un nuevo archivo de recursos y lo llamaremos StringResources, debemos crearlo junto dentro de la carpeta Recursos Localizables que acabamos de crear. Revisamos las propiedades del archivo recin creado y nos aseguramos que en Build Action diga Embedded Resource. Ahora utilizaremos ese archivo de recursos para guardar las cadenas en el idioma principal (por defecto ) de nuestra aplicacin, as que le damos doble clic y adicionamos los valores que se ven en la siguiente imagen. Para efectos del ejemplo es importante hacerlo con los valores que ven. UTILIZAR EL ARCHIVO DE RECURSOS EN NUESTRA APLICACION Esta parte es muy sencilla, creamos un mtodo llamado AplicarIdioma con el siguiente cdigo:

private void AplicarIdioma()

1 2 3 4 5 6 7 8 9

{ button1.Text = StringResources.ButtonLabel1; button2.Text = StringResources.ButtonLabel2; button3.Text = StringResources.ButtonLabel3; button4.Text = StringResources.ButtonLabel4; button5.Text = StringResources.ButtonLabel5; this.Text = StringResources.WindowTitle; }

Y lo llamamos desde el Form_Load, ejecutamos la aplicacin y obtenemos esto 2. SOPORTAR MLTIPLES LENGUAJES CON LOS ARCHIVOS DE RECURSOS Casi todo el trabajo de codificacin ha terminado ahora viene la magia . En la carpeta Recursos Localizables creamos 3 copias de el archivo de recursos original, nos aseguramos de que cada una de ellas quede con los siguientes nombres. Ahora editamos cada uno de ellos dejndolos con los textos que se ven a continuacin (pueden ayudarse de traductores online para obtener los caracteres en japons). Una vez hecho esto procedemos a modificar el evento SelectedIndexChanged del listbox y lo dejamos as:

1 2 3 4 5

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { Thread.CurrentThread.CurrentUICultur e = new CultureInfo((string)listBox1.SelectedIte m); AplicarIdioma(); }

Lo que hemos hecho es hacer que cada vez que se de clic en uno de los miembros de la lista se cambie la cultura de la interfaz de usuario del hilo actual de la aplicacin, y dado que cada miembro del listbox es el nombre corto de cada una de las tres culturas que tenemos, basta con crear un nuevo objeto de tipo CultureInfo que coincida con el nombre corto del tem seleccionado. PORQU Y PARA QU? Esto que acabamos de hacer tiene un importante objetivo.

Cuando se utiliza un archivo de recursos el CLR busca primero cual es la cultura del hilo actual, entonces con ese dato automticamente utiliza el archivo de recursos cuya nomenclatura coincide con esa cultura, sino encuentra dicho archivo de recursos entonces el CLR utiliza el archivo de recursos que no tiene cultura especfica. FUNCIONA! Ejecutamos la aplicacin, damos clic en cada uno de los tems del listbox y podemos ver esto : 3. AISLAR LOS ARCHIVOS DE RECURSOS PARA FACILITAR LA ACTUALIZACIN Hasta aqu nuestro proyecto ya esta terminado y ya estamos en capacidad de hacer aplicaciones multilenguaje, sin embargo como tip final de este artculo les recomiendo que si piensan incluir alguna funcionalidad de actualizaciones en sus aplicaciones y tienen planeado actualizar o incluir nuevos idiomas en su aplicacin, coloquen los archivo de recursos en una dl por aparte donde solo se coloquen archivos de recursos, esto permitir que las actualizaciones relacionadas con cadenas de lenguaje se aslen en un solo componente. Para que esto funcione, en el proyecto de la librera que utilicen para tal fin, recuerden establecer en cada archivo de recursos el modificador de acceso en public como lo muestra esta imagen.

LECTURAS RECOMENDADAS Este tema puede ir an ms all de donde lo hemos llevado, los invito averiguar acerca de como utilizar ensamblados satlite para brindar algunas funcionalidades adicionales y que intenten utilizar la clase CultureInfo y dems relacionadas para detectar el idioma de la interfaz de usuario actual o el idioma con el cual se ha instalado el sistema operativo. En Sistemas como Windows 7 si instalas el sistema en ingls y luego le actualizadas el lenguaje a espaol, algunas funciones te seguirn reportando que el idioma del sistema esta en ingls por lo que hay que hacer un trabajo adicional para detectar el idioma actual de la interfaz de usuario actual. Pueden bajar la solucin completa aqu: Articulo Aplicaciones multilenguaje ( globalizacin y localizacin ) Espero que le puedan sacar mucho provecho. Saludos.

You might also like