lunes, 8 de marzo de 2010

Problemas de traducción

Cuando estamos diseñando una aplicación en nuestro idioma tanto en ventanas de mensaje, botones, etiquetas, etc. Aun puede suceder que los usuarios sean sorprendidos con mensajes o ventanas en otro idioma, principalmente en inglés. Esto puede ocurrir debido a que usamos paquetes adicionales o la misma LCL que fueron diseñados en otro idioma.

La solución a este problema es traducir dichos recursos externos al español. Afortunadamente la LCL y algunos paquetes adicionales como por ejemplo LazReport, ya están traducidos y solo necesitamos usar dicha traducción en la aplicación. En general, necesitamos la traducción de todos los recursos externos que la aplicación use.

Aunque este tema esta relacionado con el de hacer disponible la aplicación en diversos idiomas, en esta ocasión nos enfocaremos solamente en traducir los recursos restantes al español. Esto se hace con el siguiente procedimiento:

1. Crear un directorio llamado languages en el mismo lugar donde se encuentre el archivo de proyecto.

2. Copiar al directorio languages los archivos .po correspondientes a los recursos externos necesarios. Para la LCL necesitamos el archivo lazarus/lcl/languages/lclstrconst.es.po, para LazReport el archivo necesario es lazarus/components/lazreport/source/languages/lr_consts.es.po y así de forma similar para los demás recursos que nuestra aplicación use.

3. Añadir a la sección uses del código fuente del proyecto (Menú Proyecto->Ver Código Fuente) la unidad translations. Por ejemplo:

{ you can add units after this }
,translations;

4. Antes de inicializar la aplicación, efectuar la traducción de los recursos externos mediante algo como esto:

begin
...
  TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
  TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');
// etc.
Application.Initialize;
...
Con esto, la aplicación estará traducida "correctamente", hago énfasis en ésta palabra pues si usted llegara a encontrar algún punto donde la traducción no sea ideal, no dude en hacerlo saber a los desarrolladores, su aportación puede ayudar a mejorar el proyecto.

4 comentarios:

  1. Muchas gracias, me voy a tomar la libertad de postearlo en delphiaccess, aciendo obviamente referencia tuya.

    ResponderBorrar
  2. Muchas gracias, pero, ¿no es posible distribuir solo el .exe sin la carpeta languages para distribuirlo limpiamente y que salga traducido?

    ResponderBorrar

Seguidores