Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-04-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Smile Como traducir fácilmente una aplicación a otros idiomas

Hola.

Existe un Unit que permite traducir una aplicación a otros idiomas de forma muy sencilla y rápida.

Es IniLang vs. 0.9. Se encuentra en http://www.torry.net/pages.php?id=273 y aparece como un componente (realmente es un Unit) para Delphi 4.

Al ser de 1999 y aparecer como para Delphi 4, seguramente muchas personas lo desestimarán. Sin embargo, creo que es una joya.

Funciona bien en Delphi 4, 5, 6 y 7; quizás también lo haga en versiones posteriores.

Traduce los caption, los hint, las líneas de memos y richedit, las constantes de texto, etc. y permite cambiar de idioma en ejecución.

Para utilizarlo, primero se añade IniLang.pas a la aplicación, todos los form que tengan componentes que deban ser traducidos deben incluir IniLang en el Uses.

Luego se guardan todas las constantes de texto en un Unit específico.

Después se añade la llamada al procedimiento "Fillcustomini", que crea el archivo INI (custom.ini) con los datos de todos los componentes de todos los form y con los datos de todas las constantes de texto.

Y ya está hecho el trabajo.

Finalmente se traduce el texto del archivo creado (custom.ini) y se guarda con el nombre del nuevo idioma. Se añade al programa una llamada a ese archivo y unos pocos detalles más.

Incluye un ejemplo bastante claro.

Aclarar que seguramente no funcionará con idiomas como el árabe, el japonés, etc.

El componente comete uno o dos errores que se resuelven con unas modificaciones que están incluidas en IniLang2.

Todo ello se encuentra en el archivo de descarga que aparece en mi mensaje del día 30-04-2010. En ese archivo la unit se llama IniLang2 y sustituye a IniLang.



Y aquí van algunas recomendaciones de uso:

- El ejemplo incluido es muy claro.

- Los nombres de los componentes deben ser diferentes de los caption, pues si son iguales, los caption son ignorados por INILang2.

- Para que un componente sea ignorado por INILang2, su nombre debe comenzar por "out"; por ejemplo, "outLabel1".

- Cuando se va a crear el archivo "custom.ini" con el procedimiento "Fillcustomini" hay que asegurarse antes de que todos los form están cargados en memoria.
Es decir, que en menú Project/Options.../Forms (pestaña) todos los forms están en el cuadro de la izquierda (Auto-create forms). Si alguno está en el cuadro de la derecha (Avalaible Forms), sus datos no se incluirán en el archivo "custom.ini".

- Cuando se ejecuta el programa desde Delphi (con F9) para crear el archivo "custom.ini" (con el procedimiento "Fillcustomini" ), aparece un error al leer las constantes, y no se crea el archivo "custom.ini" de forma completa.
Para solucionarlo, hay que compilar con Ctrl-F9 y luego ejecutar el programa desde el navegador de windows.

- Para obtener el texto de una constante de texto (por ejemplo, una cuyo nombre sea "Form1_01") hay que utilizar la función "misc( , )", que recibe 2 parámetros. De esta manera: "misc(Form1_01,'Form1_01')". Un ejemplo sería:
showMessage( misc(Form1_01,'Form1_01') );

- Importante: Este error se encuentra en IniLang, pero está resuelto en IniLang2.
En el código del programa (después de "implementation") no pueden haber líneas que, después de eliminar los espacios en blanco (con Trim() ), se inicien con alguno de estos 3 caracteres (# ' +) .

Si hay líneas que se inicien con alguno de estos 3 caracteres (# ' +), IniLang las confundirá con constantes de texto que contienen varias líneas y se producirá un error al crear la sección [Misc] del archivo "Custom.ini"

Un ejemplo de esto sería:

Label3.caption := Label1.caption
+ Label2.caption ;

La segunda línea ( "+ Label2.caption ;" ) producirá un error cuando INILang vaya a crear el archivo "Custom.ini".

Si es necesario que existan estas líneas, el autor recomienda esta solución utilizando las llaves de comentarios para evitar que, tras usar Trim(), "+" sea el primer caracter de la línea y respetando el código:

Label3.caption := Label1.caption
{} + Label2.caption ;

Como ya se mencionó, este error no aparecerá en IniLang2.

El cambio, es decir, el añadir los comentarios "{}" lo realizará automáticamente el procedimiento "Before_SearchStr". Esa es la mejora principal que aporta INILang2 0.9 .

Debido a estos cambios (añadiendo "{}"), después de ejecutar el programa, Delphi le anunciará que aquellos archivos modificados (que estuvieran cargados por Delphi) han sufrido cambios y le preguntará si deben ser leidos de nuevo.

- Es recomendable borrar el fichero "custom.ini" antes de utilizar la función "Fillcustomini". Por ello, IniLang2 incluye este proceso al inicio del procedimiento "Fillcustomini".


Salu2.

Ramón



Localización, traducción.

Última edición por rrf fecha: 30-04-2010 a las 17:51:30. Razón: Actualizar y simplificar la información. Hacer referencia a fichero zip en mensaje del día 30-04-2010
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Idiomas en una aplicación madiazg API de Windows 4 12-03-2008 17:20:05
Aplicación en varios idiomas. Killo Varios 11 17-03-2007 17:40:45
Como traducir el idioma de mi aplicacion? JuanErasmo C++ Builder 1 30-12-2005 15:17:11
Aplicacion Multi-idiomas - MessageBox Traducir en run-time le4br Varios 2 19-03-2005 21:35:31
Hacer una aplicación en varios idiomas David OOP 2 02-03-2005 19:28:34


La franja horaria es GMT +2. Ahora son las 01:42:04.


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
Copyright 1996-2007 Club Delphi