Documente Academic
Documente Profesional
Documente Cultură
´
C# – Aplicaciones multilenguaje ( globalización y
localización )
Este artículo es una copia cruzada del artículo original en mi blog:
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.
Finalmente relacionare otros temas de interés para tener una funcionalidad más robusta.
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.
http://geeks.ms/blogs/juank/archive/2010/08/30/c-aplicaciones-multilenguaje-globalizaci... 1/9/2010
Ideas de un Conejo Page 2 of 6
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.
http://geeks.ms/blogs/juank/archive/2010/08/30/c-aplicaciones-multilenguaje-globalizaci... 1/9/2010
Ideas de un Conejo Page 3 of 6
Casi todo el trabajo de codificación 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 dejándolos con los textos que se ven a continuación (pueden ayudarse de
traductores online para obtener los caracteres en japonés).
http://geeks.ms/blogs/juank/archive/2010/08/30/c-aplicaciones-multilenguaje-globalizaci... 1/9/2010
Ideas de un Conejo Page 4 of 6
Una vez hecho esto procedemos a modificar el evento SelectedIndexChanged del listbox y lo dejamos así:
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 aplicación, 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.
Cuando se utiliza un archivo de recursos el CLR busca primero cual es la cultura del hilo actual, entonces
con ese dato automáticamente 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
específica.
FUNCIONA!
Ejecutamos la aplicación, damos clic en cada uno de los ítems del listbox y podemos ver esto :) :
http://geeks.ms/blogs/juank/archive/2010/08/30/c-aplicaciones-multilenguaje-globalizaci... 1/9/2010
Ideas de un Conejo Page 5 of 6
Para que esto funcione, en el proyecto de la librería 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 aún más allá de donde lo hemos llevado, los invito averiguar acerca de como utilizar
ensamblados satélite para brindar algunas funcionalidades adicionales y que intenten utilizar la clase
CultureInfo y demás 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 inglés y luego le actualizadas el lenguaje a español,
algunas funciones te seguirán reportando que el idioma del sistema esta en inglés por lo que hay que hacer
un trabajo adicional para detectar el idioma actual de la interfaz de usuario actual.
Pueden bajar la solución completa aquí: Articulo Aplicaciones multilenguaje ( globalización y localización )
Saludos.
Posted: 30/8/2010 9:28 por Juan Carlos Ruiz Pacheco | con 2 comment(s) |
Archivado en: C#,codigo,Forms,recursos,multilenguaje
Comentarios
Rafael ha opinado:
hey muy bueno, asi puedo crear aplicaciones multi-idiomas y no estaria usando una BD para llamar a las propiedades caption, text,
etc de los controles.
Tonio ha opinado:
http://geeks.ms/blogs/juank/archive/2010/08/30/c-aplicaciones-multilenguaje-globalizaci... 1/9/2010
Ideas de un Conejo Page 6 of 6
Muy buen articulo, lastima no saber esto hace unos meses cuando presente mi pfc, me estube peleando una semana con la
localización y la verdad es que no se me dio muy bien, al final presente mi pfc solo en español (tb queria en ingles).
http://geeks.ms/blogs/juank/archive/2010/08/30/c-aplicaciones-multilenguaje-globalizaci... 1/9/2010