Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Multilenguaje en Delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=1892)

Athalon 02-07-2003 09:08:10

Multilenguaje en Delphi 7
 
Hola Chic@s,

Bueno, este es mi primer mensaje en un foro, espero hacerlo correctamente.

Tengo que investigar el multilenguaje en Delphi y he encontrado algunas cositas interesantes, he visto que puedes introducir lenguajes y hacer la traducción mediante la opción de Project|Languages|Add..., introduzco un lenguaje y hago la traducción pero no se como hacer que se refleje en el programa, por ejemplo, el programa comienza en lengua Castellana y quiero pasarlo a lengua inglesa, introduzco el lenguaje correspondiente y cuando ejecuto el programa me sale la principal, la lengua castellana y quiero saber como hacer la llamada para que me aparezca la lengua inglesa.

Espero una respuesta lo más rápido posible y muchas gracias por leer el mensaje.

__cadetill 02-07-2003 13:46:53

El problema de utilizar este metodo, es que el lenguaje se basa en el que tienes establecido en Windows (si no voy errado), por lo que para que puedas ver la aplicacion en ingles, tienes que decirle a Windows que su idioma es el ingles.

Si lo que quieres es poder cambiar el idioma por opcion de menu, tienes que hacerlo de otra forma. Hay varias maneras, pero la que yo utilizo es poner todos los textos en una tabla de la base de datos y, traducirlos en ella. Entonces, segun el idioma escogido, muestro la pantalla. (muy a grandes rasgos ;))

Athalon 02-07-2003 13:53:51

Gracias Cadetill pero he encontrado otro método bastante eficaz y sencillo, ahora utilizo ficheros de recursos de texto (*.res) creados con C++ aunque me parece que desde Delphi también se pueden modificar cosa que no he probado y la verdad que es bastante sencillo, por si acaso te interesa o le interesa a alguien más el método que se ha de utilizar es tan sencillo como poner el fichero en el Source del programa mediante la clave {$R nombrefichero.res} y luego utilizar una función llamada LoadStr(integer) en la cual le pasas el código que le has puesto a la frase dentro del .res y esta función te la devuelve, lo que no he probado es de hacerlo con varios ficheros.

De todas maneras Gracias otra vez Cadetill y ahora entiendo más el funcionamiento de los Languages de Delphi.

delphi.com.ar 02-07-2003 16:04:36

Agrego que tienes un ejemplo entre las Demos de Delphi (RichEdit).

Saludos!

Athalon 02-07-2003 16:44:09

Gracias delphi.com.ar, si alguna vez necesito hacerlo con la opción de Languages tendre en cuenta el ejemplo que ya lo he mirado por encima.

Muchas Gracias.

Descendents 02-07-2003 19:44:43

Yo no se si me he complicado la vida, pero yo lo que hecho, es una función, que lo que hace es que se recorre todos los componentes del form, cogen su caption, y los busca en un diccionario hecho por mi.Se queda con el numero de linea y carga el diccionario de inglés y va a buscar el número de linea con el que me he quedado antes y se lo pone al caption.

CAPTION, TEXT, lo que sea del compoente que sea

Pongo la llamada de función en el create del form y lo que hace es que siempre me lo traduce el sólo al diccionario que yo le diga

Y con el tema de showmessage y messagedlg y tal, lo que hago es que le asigno directamente un número de linea al mensaje, y el mensaje lo escribo en el diccionario

__cadetill 03-07-2003 13:30:31

Hola Descendents

La funcion de la que hablas, lo hagas de la forma en que lo hagas (con un fichero, con una tabla de la VD, con archivos de recursos,....) la tienes que hacer de todas maneras, asi que no es ninguna locura lo que has hecho (ni complicarte la vida) ;)

guillotmarc 03-07-2003 14:42:25

Hola

Yo utilizo un componente comercial (de pago), el TsiLang, es muy comodo y funciona bien, además es bastante económico.

http://www.sicomponents.com/tsilang1.html

Saludos.

Athalon 03-07-2003 16:51:19

Hola a tod@s y gracias por todas las respuesta,

Ya lo he hecho y he hecho un programa que me funciona de mil maravillas, como bien decis paso por todos los componentes y les aplico el idioma adecuado utilizando un fichero de recursos.

Otra vez gracias por la ayuda y la orientación.

DJ VMan 23-11-2003 13:35:42

Hola. Vengo con una interrogante al tema:

He visto algunos software multilenguaje (o idioma), que ocupan archivos XML. En uno de ellos me consta que está hecho en CB, la pregunta es ¿Como se hace?, no tengo la mas mímina idea por ello pregunto.

He leido todo lo que han dicho (incluido el ejemplo richedit), y la forma de utilizar un XML, es la que mas megusta.

Digo esto por lo siguiente:

Supongamos que tengo un software que se hace popular. YO (nótese que YO) no voy a querer traducir toda la aplicación, es más fácil enviar un archivo de config. de idioma (1 solo) y que algunos voluntarios por aqui y por allá lo editen en los idiomas que se requiera.

Desde este punto de vista, me parece mejor un XML ya que es mas popular su construcción y su manejo.

Se me ocurre que tendré que hacer una función como la que dijo Descendents...o no?, pero como hago para abrir un XML desde Delphi?

(escribiendo se me ha ocurrido que tambien podría ser con un INI)

kinobi 23-11-2003 14:17:42

Hola,

Cita:

DJ VMan comentó:
Supongamos que tengo un software que se hace popular. YO (nótese que YO) no voy a querer traducir toda la aplicación, es más fácil enviar un archivo de config. de idioma (1 solo) y que algunos voluntarios por aqui y por allá lo editen en los idiomas que se requiera.
Otra alternativa: puedes utilizar gettext, el conjunto de herramientas del proyecto GNU para internacionalización.

Yo lo he utilizado en Linux con C y C++ y es bastante cómoda. Se crean archivos (ASCII) donde se almacenan las cadenas que precisan ser traducidas en tu aplicación, con un determinado formato (documentado), para cada idioma que quieras utilizar y, tras una especie de compilación de recursos del archivo, ya están listos para utilizar en tu aplicación. En ésta, tu aplicación, se marcan las cadenas que dependan del idioma escogido, bien a través de la función gettext("cadena_a_internacionalizar") o con la macro: _("cadena_a_internacionalizar") y listo, el sistema ya se encarga de localizar la versión adecuada al idioma utilizado en ese momento.

Al ser archivos ASCII los que guardan las cadenas de la aplicación que son susceptibles de internacionalización, cualquiera puede adaptar tu aplicación a su idioma con tener a mano un simple editor ASCII.

Como te he comentado, yo he utilizado gettext con C y C++ en Linux. Existen versiones para Win32, entre ellas esta: http://gettext.sourceforge.net/, con lo que lo único que quedaría sería hacer una interfaz, si no está hecha ya (que no lo sé), para poder utilizar gettext desde Delphi.

Saludos.


La franja horaria es GMT +2. Ahora son las 14:16:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi