Está en la página 1de 4

C# - Aplicaciones multilenguaje ( globalización y localización ) | Ideas de un Conejo Página 1 de 4

Continuamente en mis conferencias y de paso por los foros a través de internet encuentro multitud de dudas e inquietudes al respecto de Cómo hacer una aplicación
que soporte múltiples 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 tamaño de la aplicación o la cantidad de idiomas soportados.

Sin embargo yo tengo mi método preferido, el cual considero que es válido para la inmensa mayoría de aplicaciones desarrolladas, el método de los archivos de
recursos y ese es el tema principal de este artículo.

En tres pasos enseñare como hacerlo.

1. Utilizar archivos de recursos para manipular las cadenas de texto


2. Soportar múltiples lenguajes con los archivos de recursos
3. Aislar los archivos de recursos para facilitar la actualización

Finalmente relacionare otros temas de interés para tener una funcionalidad más robusta.

1. UTILIZAR ARCHIVOS DE RECURSOS PARA MANIPULAR LAS CADENAS DE TEXTO

PREPARAR LA APLICACION

Lo primero que debemos hacer es crear una aplicación de Windows Forms con 1 ListBox y 5 Botones como se ven la siguiente imagen.

Para fines de este ejemplo con excepción de los textos del listbox ninguno de los textos es obligatorio.

Ahora, dentro de la solución, creamos una carpeta la cual llamaremos “Recursos Localizables”, justo como se ve a continuación.

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 recién 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 aplicación, 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 método llamado AplicarIdioma con el siguiente código:

http://juank.black-byte.com/csharp-aplicaciones-multilenguaje-globalizacion-localiza... 30/04/2013
C# - Aplicaciones multilenguaje ( globalización y localización ) | Ideas de un Conejo Página 2 de 4

1 private void AplicarIdioma()


2 {
3 button1.Text = StringResources.ButtonLabel1;
4 button2.Text = StringResources.ButtonLabel2;
5 button3.Text = StringResources.ButtonLabel3;
6 button4.Text = StringResources.ButtonLabel4;
7 button5.Text = StringResources.ButtonLabel5;
8 this.Text = StringResources.WindowTitle;
9 }

Y lo llamamos desde el Form_Load, ejecutamos la aplicación y obtenemos esto

2. SOPORTAR MÚLTIPLES LENGUAJES CON LOS ARCHIVOS DE RECURSOS

Casi todo el trabajo de codificación ha terminado ahora viene ‘la magia’ . En la carpeta “Recursos Localizables” creamos 3 copias de el

Ahora editamos cada uno de ellos dejándolos con los textos que se ven a continuación (pueden ayudarse de traductores online para obtene

http://juank.black-byte.com/csharp-aplicaciones-multilenguaje-globalizacion-localiza... 30/04/2013
C# - Aplicaciones multilenguaje ( globalización y localización ) | Ideas de un Conejo Página 3 de 4

Una vez hecho esto procedemos a modificar el evento SelectedIndexChanged del listbox y lo dejamos así:

1 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)


2 {
3 Thread.CurrentThread.CurrentUICulture = new CultureInfo((string)listBox1.SelectedItem);
4 AplicarIdioma();
5 }

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 usuar

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 automáticament

FUNCIONA!

Sorpresa
Ejecutamos la aplicación, damos clic en cada uno de los ítems del listbox y podemos ver esto :

3. AISLAR LOS ARCHIVOS DE RECURSOS PARA FACILITAR LA ACTUALIZACIÓN

Hasta aquí nuestro proyecto ya esta terminado y ya estamos en capacidad de hacer aplicaciones multilenguaje, sin embargo como tip final

Para que esto funcione, en el proyecto de la librería que utilicen para tal fin, recuerden establecer en cada archivo de recursos el mo

http://juank.black-byte.com/csharp-aplicaciones-multilenguaje-globalizacion-localiza... 30/04/2013
C# - Aplicaciones multilenguaje ( globalización y localización ) | Ideas de un Conejo Página 4 de 4

LECTURAS RECOMENDADAS

Este tema puede ir aún más allá de donde lo hemos llevado, los invito averiguar acerca de como utilizar ensamblados satélite para brind

En Sistemas como Windows 7 si instalas el sistema en inglés y luego le actualizadas el lenguaje a español, algunas funciones te seguirá

Pueden bajar la solución completa aquí: Articulo Aplicaciones multilenguaje ( globalización y localización )

Espero que le puedan sacar mucho provecho.

http://juank.black-byte.com/csharp-aplicaciones-multilenguaje-globalizacion-localiza... 30/04/2013

También podría gustarte