Siempre me preguntaba como crear programas multilenguajes, ya tenía una idea bastante robusta para hacerlo y luego de investigar en varias fuentes me he quedado con un método sencillo (casi todos son sencillos de hecho), pero éste es el más práctico.
Para ejemplificar vamos a crear un proyecto WinForm con C# en Visual Studio, el formulario debe quedar algo así:
Lo que haremos será escribir las 3 comidas principales del dia, Desayuno, Almuerzo y Cena en los Label de los botones, obviamente cada uno en una lengua según los radio button que elijamos. Si ya se pude haber tenido una mejor idea :[
Luego vamos a crear una carpeta llamada Lenguajes (o como les guste) y crearemos dentro de él, 4 archivos de recursos, uno para cada idioma, teniendo en cuenta uno por defecto por si no podemos detectar correctamente la cultura o no tenemos un recurso para dicha cultura .
Quedaría así mas o menos el contenido de cada recurso.
Ya solo nos queda crear un archivo de recurso por cada idioma y al final del nombre agregarle la Cultura, en este ejemplo use
- DE-DE: Alemán
- ES-PY: Paraguay
- ES-US: Inglés
Necesitamos crear un método que se encargue de asignar los labels correctos para cada idioma, de este modo:
1 2 3 4 5 6 | private void SwitchIdioma() { Boton1.Text = Lenguajes.Recurso.Boton1; Boton2.Text = Lenguajes.Recurso.Boton2; Boton3.Text = Lenguajes.Recurso.Boton3; } |
Ahora en el evento de change selection de cada radio button escribimos el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private void rdbEspañol_CheckedChanged(object sender, EventArgs e) { System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ES-PY"); SwitchIdioma(); } private void rdbIngles_CheckedChanged(object sender, EventArgs e) { System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ES-US"); SwitchIdioma(); } private void rdbAleman_CheckedChanged(object sender, EventArgs e) { System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("DE-DE"); SwitchIdioma(); } |
En todo caso para que cuando se cargue el formulario se vean ya bien configurado un idioma llamamos al metodo en el Load del Form:
1 2 3 4 | private void FrmDevTroce_Load(object sender, EventArgs e) { SwitchIdioma(); } |
Finalmente los formularios se verán asi:














en
en
en
en
en
COMO LE HAGO PARA QUE ME APAREZCAN LOS OBJETOS, EN AUTOMATICO EN EL FORMULARIO DE IDIOMAS Y NO LLENARLOS AUTOMATICAMENTE. ESPERO ME PUEDADN AYUDAR. GRACIAS
Lamentablemente no es posible hacerlo. Quiza exista algun plugin en codeplex que lo haga pero no me consta..
muchas gracias por contestar. ME GUSTARIA QUE ME AYUDARAS PARA HACER UNA APLICACION MULTILENGUAJE CON LA OPCION DE GLOBALIZACION EN INGLES Y ESPAÑOL. ESPERO Y SE PUEDA.
Muchas gracias!!
Se hace un poco peliagudo googlear una buena guía para principiantes de Visual Studio,como es mi caso, y aunque trabajo en Visual Basic,esta guía me ha ayudado mucho.
Gran trabajo!;-)