post icon

Guía para crear aplicaciones Multilenguajes con dotNet

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

  1. DE-DE: Alemán
  2. ES-PY: Paraguay
  3. 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:

4 Comentarios

Deja tu Comentario
  1. natanael MEXICO Google Chrome Windows
    4 abril 2011 at 16:39 #

    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

    • GeekZero PARAGUAY Google Chrome Windows
      4 abril 2011 at 21:10 #

      Lamentablemente no es posible hacerlo. Quiza exista algun plugin en codeplex que lo haga pero no me consta..

      • natanael MEXICO Google Chrome Windows
        5 abril 2011 at 09:36 #

        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.

  2. JM SPAIN Internet Explorer Windows
    5 enero 2011 at 15:36 #

    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!;-)

Responder