none
Cambio idioma Software RRS feed

  • Pregunta

  • Buenas a tod@s, 

    He hecho una determinada aplicación con Visual Studio 2018, en C#. La idea es poder realizar un instalador y desde el instalador poder seleccionar el idioma en el que se ejecutará el software. Tenéis idea de cómo poder hacer esto? 

    Gracias de antemano. 

    Saludos.

    martes, 27 de marzo de 2018 11:05

Respuestas

  • La primera parte es hacer que el programa funcione en multiples idiomas. Para ello, la solucion mas tipica es guardar todas las cadenas localizables en archivos de recursos (.resx), y hacer que el programa las lea desde ahi. Si es WinForms o WebForms, hay automatismos en Visual Studio para facilitar esto sin que tengas que programarlo a mano, pero solo afectan a los propios formularios; si tienes (por ejemplo) cadenas que salgan en un MessageBox tienes que escribir el codigo que las toma desde el archivo de recursos.

    Despues, para agregar varias traducciones, simplemente duplicas el archivo de recursos y le pones el nombre siguiendo una convencion que incrusta el idioma en el nombre (por ejemplo, si el idioma predeterminado estaba en miformulario.resx, la traduccion al frances se mete en miformulario.fr.resx). Esto basta para que el programa tome el idioma oportuno, no hace falta cambiar nada en el codigo fuente.

    En tiempo de ejecucion, de forma predeterminada la aplicacion toma el idioma del sistema operativo y busca un fichero de recursos en ese mismo idioma. Si no lo encuentra, utiliza el predeterminado. Si quieres cambiarlo, puedes meter el idioma deseado en el CurrentThread.CurrentUICulture (antes de que se presente el primer formulario).

    Si lo quieres fijar durante la instalacion, hay dos opciones: Una es que el instalador salve el idioma deseado en un ficherito de configuracion, y luego el programa al arrancar lea ese fichero y meta el idioma en el CurrentUICulture. La otra es que los recursos los compiles en una DLL separada del ejecutable principal, y que el instalador copie solo esa DLL (como idioma predeterminado) y no copie ninguna otra de las dlls que hayas preparado con los recursos de los otros idioma.

    • Marcado como respuesta GabrieloBurja martes, 27 de marzo de 2018 13:45
    martes, 27 de marzo de 2018 13:37
    Moderador

Todas las respuestas

  • La primera parte es hacer que el programa funcione en multiples idiomas. Para ello, la solucion mas tipica es guardar todas las cadenas localizables en archivos de recursos (.resx), y hacer que el programa las lea desde ahi. Si es WinForms o WebForms, hay automatismos en Visual Studio para facilitar esto sin que tengas que programarlo a mano, pero solo afectan a los propios formularios; si tienes (por ejemplo) cadenas que salgan en un MessageBox tienes que escribir el codigo que las toma desde el archivo de recursos.

    Despues, para agregar varias traducciones, simplemente duplicas el archivo de recursos y le pones el nombre siguiendo una convencion que incrusta el idioma en el nombre (por ejemplo, si el idioma predeterminado estaba en miformulario.resx, la traduccion al frances se mete en miformulario.fr.resx). Esto basta para que el programa tome el idioma oportuno, no hace falta cambiar nada en el codigo fuente.

    En tiempo de ejecucion, de forma predeterminada la aplicacion toma el idioma del sistema operativo y busca un fichero de recursos en ese mismo idioma. Si no lo encuentra, utiliza el predeterminado. Si quieres cambiarlo, puedes meter el idioma deseado en el CurrentThread.CurrentUICulture (antes de que se presente el primer formulario).

    Si lo quieres fijar durante la instalacion, hay dos opciones: Una es que el instalador salve el idioma deseado en un ficherito de configuracion, y luego el programa al arrancar lea ese fichero y meta el idioma en el CurrentUICulture. La otra es que los recursos los compiles en una DLL separada del ejecutable principal, y que el instalador copie solo esa DLL (como idioma predeterminado) y no copie ninguna otra de las dlls que hayas preparado con los recursos de los otros idioma.

    • Marcado como respuesta GabrieloBurja martes, 27 de marzo de 2018 13:45
    martes, 27 de marzo de 2018 13:37
    Moderador
  • hola

    Aplicaciones multilenguaje, globalización y localización

    en este ejemplo se explica de forma completa como implementar multi idioma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 27 de marzo de 2018 13:50
  • Todo lo dicho anteriormente es muy válido, pero aporto otra posible solución en la cual el idioma cambia en tiempo de ejecución sin necesidad de reinicio de la aplicación. Te recomiendo que visites el enlace http://www.rsoftware.es/CourseWPF/Strategies/Localization donde encontrarás la implementación multiidoma que yo utilizo.

    Un saludo y espero que te sirva de ayuda.

    martes, 27 de marzo de 2018 17:00