viernes, 22 de septiembre de 2017

Traducir diálogos y botones

¿Cómo hacer que el programa creado con Lazarus muestre los diálogos y botones en español?

Utilizando la unidad Translations y lafunción TranslateUnitResourceStrings.

En nuestra unidad principal del proyecto debemos incluir la unidad Translations de la manera habitual:

uses Translations

Luego podemos definir un procedimiento privado dentro del formulario de la misma unidad principal de esta forma:

private
    procedure Traducir;


Lo implementamos:

procedure TForm1.Traducir;
var
  Lang, FallbackLang: string;
begin
  Lang := 'es';
  FallBackLang := '';
  TranslateUnitResourceStrings('LclStrConsts','lclstrconsts.es.po', Lang, FallbackLang);
  TranslateUnitResourceStrings('lr_const','lr_const.es.po', Lang, FallbackLang);
  TranslateUnitResourceStrings('printer4lazstrconst','printer4lazstrconst.es.po', Lang, FallbackLang);
end;


Aclaraciones:

lclstrconsts.es.po: ya viene incluído con Lazarus, traduce los diálogos y botones.

lr_const.es.po: Solo si se utiliza LazReports, el archivo está incluido en el paquete.

printer4lazstrconst.es.po: es para traducir los diálogos de impresión, que no están traducidos en Lazarus 1.6, por lo que lo traduje y lo posteé en el foro de Lazarus para que lo agreguen, desconozco si está incuído en versiones posteriores a la 1.6, por ende es probable que si no se posee el archivo printer4lazstrconst.es.po o bien puede tirar un error o simplemente no traducir.

Finalmente debemos hacer la llamada al procedimiento, sino, no pasa nada:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Traducir;
end;


Si esto no funciona de la forma esperada hay dos opciones: una es estudiar a fondo el tema empezando por la wiki: http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs/es . La otra es copiando esos 3 archivos en la carpeta de nuestro proyecto y listo.

Los dos primeros archivos, como ya dije, vienen incluídos, por lo tanto solo hay que encontrarlos y copiarlos.

En esta carpeta están los 3 archivos, si se está usando la versión 1.6 de Lazarus se pueden usar sin problemas todos. Para el caso de los diálogos de impresora, pueden usarse de manera segura en versiones 1.6 y anteriores.

No hay comentarios:

Publicar un comentario