C/Visual C - Cambiar el idioma de un proyecto en ejecución

 
Vista:

Cambiar el idioma de un proyecto en ejecución

Publicado por Lucia (1 intervención) el 28/12/2001 05:07:18
Tengo una aplicación que permite seleccionar el idioma de la aplicación (inglés o español) en ejecución, seleccionando la opción deseada en el menú. He conseguido cambiar el idioma del menu, de todos los mensajes y de las cajas de dialogo diseñadas por mi, pero las que me ofrece el compilador como la caja de abrir, guardar y guardar como, no consigo cambiarlas. He leido en un libro que esto se puede hacer cambiando en ejecución la dll del idioma, pero no se como hacerlo.
Si me podeis decir como hacer esto sería de gran ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar el idioma de un proyecto en ejecución

Publicado por Melkor (1 intervención) el 07/03/2002 13:14:23
Lo siento, pero no puedo ayudarte. Tú a mí sí, ¿Cómo consigues cambiar el idioma en el menú?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar el idioma de un proyecto en ejecución

Publicado por jose luis gomez (2 intervenciones) el 15/04/2005 09:43:26
Hola lucia, tengo una aplicación en c++ .net y me gustaria saber si puedes decirme como podria hacerla multiidioma, pues tengo que hacerlo en corto plazo
un saludo

jose luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar el idioma de un proyecto en ejecución

Publicado por fernando.gomez (1603 intervenciones) el 15/04/2005 22:20:11
Hola Lucía,

Es algo más o menos sencillo. Supondré que estás trabajando sobre MFC, pero el proceso es más o menos similar a si trabajas con el API de Windows directamente (si requieres más ayuda, me escribes).

En esencia, tu sabes que la forma general de emplear controles estándares es a través de un archivo de recursos RC. Por ejemplo, cuadros de diálogo, botones, menús, barras de herramientas y de estado, etc, las declaras en este archivo de recurso. Supongo que esto no es nuevo para tí.

El truco consiste en que crees diversas librerías DLL que lo único que tendrán es el archivo de recursos y un método DllMain que no hará nada (o en su caso, la instanciación de una clase derivada de CWinApp donde el método InitInstance no hará nada). Estas diferentes librerías contendrán los mismos recursos, pero las cadenas de texto las cambiarás de idioma. Así, puedes tener tantas librerías como quieras, digamos, myappesp.dll, myappita.dll, myappeng.dll, etcétera.

Ya que las compilaste, en algún método para cambiar tu idioma, cargas esa librería. Yo usualmente lo hago en el InitInstance de mi CWinApp, pero si lo haces en algún método que sea llamado por tu menú, está bien.

Primero, necesitas una variable donde guardar la instancia de la librería de recursos que vas a cargar, por ejemplo, la variable global g_hResLib de tipo HMODULE:

HMOUDLE g_hResLib = NULL;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar el idioma de un proyecto en ejecución

Publicado por fernando.gomez (1603 intervenciones) el 15/04/2005 22:21:20
Luego, en tu método, cargas la librería que quieras y empleas AfxSetResourceHandle. Por ejemplo, supongamos que el siguiente método carga a Italiano. Entonces:

void SeleccionarItaliano()
{
/* Si ya se tenía alguna librería de recursos, la liberamos. */
if (g_hResLib)
Free(g_hResLIb);

g_hResLib = LoadLibrary("myapp_italiano.dll");
AfxSetResourceHandle(g_hResLib);
}

Y ¡voilá! Ahora, todos los nuevos recursos que obtengas serán traidos de esta nueva librería. Sin embargo, los recursos que hayas cambiado anteriormente permanecerán en el lenguaje anterior, por lo que tendrás que recargar todos estos recursos.

Este método es útil sobre todo en las cadenas de mensajes (es decir, la tabla de cadenas del archivo RC), pero habrás de manejarlo con cuidado. Por ello, te sugeriría que sólo se pudiese cambiar el idioma al iniciar la aplicación (quizás a través de un valor en el Registro, un archivo de iniciación o un parámetro en la línea de comandos), ya
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar el idioma de un proyecto en ejecución

Publicado por fernando.gomez (1603 intervenciones) el 15/04/2005 22:23:16
ya que recargar todos los recursos cada vez que se selecciona un nuevo lenguaje, puede ser un verdadero problema: no te lo recomiendo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar