Traduccion (Seleccion De Idioma)


Objetivo: Traduccion (Seleccion De Idioma)
Buenas.

Hace un par de días estoy buscando información sobre como puedo traducir mi aplicativo en tiempo de ejecución sin importar cual sea el idioma configurado en el sistema operativo, me gustaria saber si alguien tiene idea de como puedo hacer esto, quiero que el usuario a través de un menú pueda seleccionar el idioma del aplicativo y que este cambie automáticamente o reiniciando el aplicativo.

Muchas Gracias por la ayuda.

PD: Ya he usado la herramienta de traducción de gambas y creo los archivos .po pero no se como puedo usar estos.

última edición por jodacame el Lunes, 11 Enero 2010, 14:58; editado 1 vez
Objetivo: Re: Traduccion (Seleccion De Idioma)
A mi también me interesaría, pero yo no e tocado nada respecto a este tema...

Objetivo: Re: Traduccion (Seleccion De Idioma)
La internacionalización de las aplicaciones se realiza marcando la opción de proyecto traducible desde la configuración del proyecto. Usando la herramienta Traducir (Ctrl+T) es posible traducir todos los literales de los controles de la aplicación. Para traducir cadenas de texto que estén escritas en el código, basta con encerrarlas entre paréntesis y aparecerán listas para traducir en el interfaz citado.

De esta manera, una vez completas las traducciones, éstas se cargarán automáticamente dependiendo del idioma de nuestro sistema operativo. Para poder ver nuestra aplicación en otro lenguaje, necesariamente deberemos instalar los "locales" del idioma que queramos, pues de otro modo no veremos los textos traducidos y se usará nuestro lenguaje por defecto (o el que hayamos designado como tal en nuestra aplicación).

Tenemos además que indicar a nuestra aplicación un argumento especial o usar la propiedad Language de la clase System que requiere como argumento un string de la forma:

"xx_XX.UTF-8"

Donde xx_XX es el código del lenguaje, por ejemplo para español de España 'es_ES'.

Pero te lo mostraré con un ejemplo que utilizo en mis aplicaciones. Este código va en un módulo que yo llamo MStart y es el que está marcado como 'clase de inicio', es decir el programa al arrancar lo hará desde este módulo, que luego llama al formulario principal después de haber seleccionado el idioma.

De esta forma, puedo ejecutar mi aplicación desde consola (o desde un lanzador) simplemente poniendo un parámetro después del nombre del ejecutable, por ejemplo:

miaplicacion -en

lo que arrancaría "miaplicacion" en el idioma ingles.

Pues éste es el código:

PUBLIC SUB Main() 'Select language from command line args. You need to install selected locales to work
'USAGE dfhLog.gambas -xx (where xx is your selected language)
DIM a AS String
IF Application.Args[1] THEN 'if no args, it shows in your default lang
a = Application.Args[1]
SELECT CASE a
CASE "-es"
System.Language = "es_ES.UTF-8"
CASE "-gl"
System.Language = "gl_ES.UTF-8"
CASE "-pt"
System.Language = "pt_PT.UTF-8"
CASE "-en"
System.Language = "en_US.UTF-8"
'TODO add more languages
CASE ELSE
Message.Info(("Possible values for arguments are:\n-es (for Spanish)\n-gl (for Galego)\n" &
"-pt (for Portuguesse)\n-en (for English)"))
END SELECT
ENDIF
FMain.Show

END


Ahí tienes la idea básica, pero recuerda que no es posible cambiar el lenguaje en tiempo de ejecución, hay que reiniciar la aplicación necesariamente.

Saludos

Perfil MP  
Objetivo: Re: Traduccion (Seleccion De Idioma)
Gran información, me la guardo, jejeje. Gracias jguardon!

PD: Si en algún momento necesitas poner algún programa en catalán, me ofrezco a hacerte la traducción necesaria.

Salu2, cracks

Perfil MP  
Objetivo: Re: Traduccion (Seleccion De Idioma)
Hola,

Tengo la costumbre de crear un módulo con costantes de texto que se suelen repetir en los programas como por ejemplo los clásicos textos:

Citar:

PUBLIC CONST version AS String = "1.1.0"
PUBLIC CONST programa AS String = ("nombre del programa")
PUBLIC CONST iconotux AS String = "TPV-ERP/img/tux_currito.ico"

'cadenas de menu
PUBLIC CONST menu_nuevo AS String = ("Añadir")
PUBLIC CONST menu_editar AS String = ("Editar")
PUBLIC CONST menu_Borrar AS String =( "Borrar")
PUBLIC CONST menu_imprimir AS String =( "Imprimir")
PUBLIC CONST menu_seleccionar AS String =( "Seleccionar")
PUBLIC CONST menu_aceptar AS String = ("Aceptar")
PUBLIC CONST menu_salir AS String = ("Salir")
PUBLIC CONST menu_ayuda AS String = ("Ayuda")
PUBLIC CONST menu_next AS String = ("Siguiente")
PUBLIC CONST menu_previus AS String = ("Previo")


Posteriormente asigno estas cadenas a los botones, etiquetas, o controles en sus correspondientes formularios al inicializar.

El problema es que aunque haga las oportunas traducciones de estas cadenas de texto, luego no aparecen traducidas al cambiar el idioma, sale el texto del módulo. He probado a traducir el propio idioma por defecto (con fines didácticos) pero tampoco coge la traducción.

¿Alguien sabe como solucionar esto y poder asignar las traducciones de las costantes a los objetos?

Gracias anticipadas

Saludos

Objetivo: Re: Traduccion (Seleccion De Idioma)
Hola.

Solo tienes que probar con el codigo que mas arriba coloca Jguardon.
Para probar, dentro de un formulario inserta un control button y dentro del codigo del formulario pon:

PRIVATE CONST texto AS String = ("Añadir")

PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
System.Language = "en_US.UTF-8"
Button1.Caption = texto
END


Luego, tienes que realizar la traduccion al ingles, mediante la herramienta de traduccion.

Ejecutalo, y si no te funciona es que no tienes instalado el soporte para ingles en tu equipo.

Saludos

Perfil MP  
Objetivo: Re: Traduccion (Seleccion De Idioma)
Hola abarzuaf,

Gracias por la respuesta. El soporte lo tengo instalado porque hay partes que se traducen correctamente.

El problema es que no quiero repetir estas cadenas de texto en cada formulario. Me gusta más tener un módulo aparte con los textos "repetitivos" y apuntar a ellos desde cada formulario. La ventaja es evidente, traduces una vez para todo el programa con independencia de las veces que emplees el literal, lo mismo si hay que corregir, etc.

Citar:
En un módulo
PUBLIC CONST texto AS String = ("Añadir")
etc, etc


En una form
PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
System.Language = "en_US.UTF-8"
Button1.Caption = modulo.texto
END

En otra form
PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
System.Language = "en_US.UTF-8"
Button1.Caption = modulo.texto
END




Esto no consigo que se traduzca.


Gracias otra vez

Saludos

Objetivo: Re: Traduccion (Seleccion De Idioma)
Hola.

Estuve probando y tienes razón. Las traducciones no se propagan desde el modulo a los formularios.
Al parecer cada formulario o modulo en que se ocupa la cadena, debe ser traducida.
Deberías enviar un correo a la lista en Ingles, para ver si este comportamiento es una característica normal.

Saludos

Perfil MP  
Objetivo: Re: Traduccion (Seleccion De Idioma)
Hola,

Muchas gracias; así lo haré. Si obtengo respuesta lo publicaré puntualmente.


Saludos

Objetivo: Re: Traduccion (Seleccion De Idioma)
hola aprovechando este tema necesito ayuda con la traducción de mi aplicación, el idioma mi aplicacion por defecto es el español y ya tengo la traducción al inglés, pero, luego creo un paquete instalable .deb, lo instalado y aun que tenga mi sistema (kubuntu 13.04) totalemente en ingles (region=U.S.A, lenguaje Ingles Americano) el programa sigue abriendose en español.

he intentaod hacer una aplicacion con un solo boton (Aceptar,accept) y nada siempre sale en español. que podria estar haciendo mal?

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4293s (PHP: -80% SQL: 180%)
Consultas SQL: 46 - Debug off - GZIP Activado