Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2016-05

(sin asunto)

8 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

hfiandor

Estimados listeros:

He terminado una aplicaci�n, donde uso el Translate para que los mensajes me los ponga en espa�ol.

Noto que cuando llevo en un pendrive la app para la maquina del cliente y la ejecuto, los mensajes aparecen en ingl�s.

�Qu� debo hacer para que se conserve la facilidad del translate?

Saludos

Ing. H�ctor F. Fiandor Rosario

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20160523/9f92b0f9/attachment.html>

Reply by email

Jose Antonio Cuello
to hfiandor

Hola, aseg�rate que junto con la aplicaci�n copias los archivos lclstrconsts.es.po y lr_const.es.po

Un saludo

De: "hfiandor" <hfiandor en ceniai.inf.cu>
Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Lunes, 23 de Mayo 2016 16:39:40
Asunto: [Lazarus-es] (sin asunto)

Estimados listeros:

He terminado una aplicaci�n, donde uso el Translate para que los mensajes me los ponga en espa�ol.

Noto que cuando llevo en un pendrive la app para la maquina del cliente y la ejecuto, los mensajes aparecen en ingl�s.

�Qu� debo hacer para que se conserve la facilidad del translate?

Saludos

Ing. H�ctor F. Fiandor Rosario

Reply by email

hfiandor
to Jose Antonio Cuello: En el archivo de proyecto (.lpr) asegurate de tener: - en el uses la unidad Translations…

Estimado Cuello:

Muchas gracias por su respuesta.

A continuación le copio mi .lpr

program Contratos;

{Version 10}

{$mode objfpc}{$H+}

uses

  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, sqlite3laz, uSeleccion, upassword_1, ulicencia, uPortada,
  uLecturaEscritura, uFinal, uanimador, udm, ufondo, uvarios, uvariables,
  uFecha, uAreaEjecutiva, uactividades, uactivas, uClientes, uNegocios,
  uTerminados, uServicios, uNSA_x_Area, uNoComenzados, uNegSerAct, uTerAuxiliar,
  uNSAAuxiliar, uNegAuxiliar, uAuxiliar_2, uAuxiliar_1, uvales_insmed_aux,
  uvales_InsMed, uHacerListado_insmed_aux, uInsertarEjecutadas,
  uhacerlistado_NSA_aux, uestadocuenta_2, uEC_auxiliar, uVerFacturas_1;
{$R *.res}
begin
  TranslateLCL;
  RequireDerivedFormResource := True;
  Application.Initialize;
  Application.CreateForm(TfDM, fDM);
  Application.CreateForm(Tffondo, ffondo);
  Application.Run;
end.

Como puede observer, escribo al inicio del begin … end la sentencia “TranslateLCL”, cuyo procedure está en una unit (uVarios) que uso para los procedure comunes, y que transcribo a continuación:

procedure TranslateLCL;
var
  PODirectory, Lang, FallbackLang: String;
begin
  //PODirectory:='e:\lazarus\lcl\languages\';
  PODirectory:='d:\lazarus\lcl\languages\';
  Lang:='es';
  FallbackLang:='';
  LCLGetLanguageIDs(Lang,FallbackLang); // in unit LCLProc
  Translations.TranslateUnitResourceStrings('LCLStrConsts',
                      PODirectory+'lclstrconsts.%s.po',Lang,FallbackLang);
  // ... add here a TranslateUnitResourceStrings call for every po file ...
  TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
  TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');
end;

He añadido las dos últimas líneas, y al compilar, compiló bien, sin “quejarse”. Cuando no las tenía, compilaba igual y parece que trabajaba bien, en mi PC.

En esta unit uVarios si se llama a la unit Translation como verá

uses

SysUtils, Classes,{Graphics,} Controls, {Forms,} Math,

Dialogs, Buttons, uvariables, {printers,}

  translations, LCLProc;
Al llevar el .exe para otra máquina, allí no está el  PODirectory:='d:\lazarus\lcl\languages\'; y por tanto, no puede hacer este procedure.

Ya investigué y la unit translations pertenece a un paquete. No se recomienda incorporarla como una unit independiene al Proyecto (Ctrl+F11).

Si no entendí mal, lo que usted me sugiere es escribir “a mano” la palabra “Translations” en el uses del .lpr, pudiera ser después de “Forms”, por ejemplo.

Para que en otra máquina esto se lea, tendría que copiar la unit Translations en la PC del cliente. Cierto o no?

¿Sería necesario incluir las dos líneas

TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');

en el begin … end del .lpr?

Espero me perdone mi torpeza, pero es la primera vez que hago algo con esto.

Saludos

Ing. Héctor F. Fiandor Rosario

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160601/b12492fd/attachment.html>

Reply by email

Jose Antonio Cuello

En el archivo de proyecto (.lpr) asegurate de tener:

- en el uses la unidad Translations
- entre en "begin" y "end."
TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');

en mi caso yo pongo los archivos de lenguaje dentro de una carpeta "languages" en el directorio "raíz" de la aplicación

Un saludo

De: "hfiandor" <hfiandor en ceniai.inf.cu>
Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Martes, 31 de Mayo 2016 22:02:46
Asunto: Re: [Lazarus-es] (sin asunto)

Estimado José A. Cuello:

Ya encontré los ficheros sugeridos y los copie en el paquete con la aplicación y otros ficheros.

Cuando ejecuto en la PC del cliente, los mensajes siguen saliendo en Inglés.

Saludos

Ing. Héctor F. Fiandor Rosario

De: Jose Antonio Cuello [mailto:jcuello en artextrading.com] Enviado el: martes, 24 de mayo de 2016 08:04 a. m. Para: Spanish version of Lazarus List
Asunto: Re: [Lazarus-es] (sin asunto)

Hola, asegúrate que junto con la aplicación copias los archivos lclstrconsts.es.po y lr_const.es.po

Un saludo

Reply by email

Martin Gomez
to hfiandor: Estimado Cuello: Muchas gracias por su respuesta. A continuación le copio mi .lpr…

2016-06-01 1:53 GMT-03:00 hfiandor <hfiandor en ceniai.inf.cu>:

Show quoted text 7 lines
Si no entendí mal, lo que usted me sugiere es escribir “a mano” la palabra “Translations” en el uses del .lpr, pudiera ser después de “Forms”, por ejemplo. Para que en otra máquina esto se lea, tendría que copiar la unit Translations en la PC del cliente. Cierto o no?

​No es necesario copiar las units a menos que vayas a compilar el programa allí.
​

Show quoted text 12 lines
¿Sería necesario incluir las dos líneas TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es',''); TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es',''); en el begin … end del .lpr?

​Si entiendo bien como funciona (yo no lo he utilizado), debe copiar los archivos '.po' junto con el ejecutable, por lo que la ruta que indicas en las funciones TranslateUnitResourceStrings() debe apuntar adonde tiene los archivos '*.po'.
En ese ejemplo, debería o cambiar el segundo parámetro a 'lclstrconsts.%s.po' o crear una carpeta 'languages' junto al ejecutable y poner los archivos '.po' ahi dentro.
​
Saludos,

​ Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. ​ ​ *Linus Torvalds* ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160601/87ceba6e/attachment-0001.html>

Reply by email

Jose Antonio Cuello
to hfiandor: Estimado Cuello: Muchas gracias por su respuesta. A continuación le copio mi .lpr…

Debería ser tan sencillo como en el .lpr poner "Translations" en el uses, por ejemplo después de "Interfaces," para que el compilador incluya esa unit en el programa y luego en el apartado "begin ... end" hacer las llamadas a las funciones que cargan los archivos con las traducciones de las cadenas.

Te pongo un ejemplo de un proyecto, ten en cuenta que compilo para windows y linux. Por otro lado, como no es necesario no creo todos los forms ni uso todas las units en el arranque de la aplicación.

program LWin2Bavel;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
{$IFDEF UseCThreads}
cthreads,
{$ENDIF}
{$ENDIF}
LResources, Forms, Interfaces, Translations, MainU;
{$IFDEF WINDOWS}
{$R LWin2Bavel.rc}
{$ENDIF}
begin
{$I LWin2Bavel.lrs}
TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');
Application.Title:='LWin to Bavel';
Application.Initialize;
Application.CreateForm(TMain, Main);
Application.Run;
end.

De: "hfiandor" <hfiandor en ceniai.inf.cu>
Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus-ide.org> Enviados: Miércoles, 1 de Junio 2016 6:53:17
Asunto: Re: [Lazarus-es] (sin asunto)

Estimado Cuello:

Muchas gracias por su respuesta.

A continuación le copio mi .lpr

program Contratos;

{Version 10}

{$mode objfpc}{$H+}

uses

{$IFDEF UNIX}{$IFDEF UseCThreads}

cthreads,

{$ENDIF}{$ENDIF}

Interfaces, // this includes the LCL widgetset

Forms, sqlite3laz, uSeleccion, upassword_1, ulicencia, uPortada,

uLecturaEscritura, uFinal, uanimador, udm, ufondo, uvarios, uvariables,

uFecha, uAreaEjecutiva, uactividades, uactivas, uClientes, uNegocios,

uTerminados, uServicios, uNSA_x_Area, uNoComenzados, uNegSerAct, uTerAuxiliar,

uNSAAuxiliar, uNegAuxiliar, uAuxiliar_2, uAuxiliar_1, uvales_insmed_aux,

uvales_InsMed, uHacerListado_insmed_aux, uInsertarEjecutadas,

uhacerlistado_NSA_aux, uestadocuenta_2, uEC_auxiliar, uVerFacturas_1;
{$R *.res}
begin
TranslateLCL;
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TfDM, fDM);
Application.CreateForm(Tffondo, ffondo);
Application.Run;
end.

Como puede observer, escribo al inicio del begin … end la sentencia “TranslateLCL”, cuyo procedure está en una unit (uVarios) que uso para los procedure comunes, y que transcribo a continuación:

procedure TranslateLCL;
var
PODirectory, Lang, FallbackLang: String;
begin
//PODirectory:='e:\lazarus\lcl\languages\';
PODirectory:='d:\lazarus\lcl\languages\';
Lang:='es';
FallbackLang:='';
LCLGetLanguageIDs(Lang,FallbackLang); // in unit LCLProc

Translations.TranslateUnitResourceStrings('LCLStrConsts',

PODirectory+'lclstrconsts.%s.po',Lang,FallbackLang);
// ... add here a TranslateUnitResourceStrings call for every po file ...
TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');
end;

He añadido las dos últimas líneas, y al compilar, compiló bien, sin “quejarse”. Cuando no las tenía, compilaba igual y parece que trabajaba bien, en mi PC.

En esta unit uVarios si se llama a la unit Translation como verá

uses

SysUtils, Classes,{Graphics,} Controls, {Forms,} Math,

Dialogs, Buttons, uvariables, {printers,}

translations, LCLProc;
Al llevar el .exe para otra máquina, allí no está el PODirectory:='d:\lazarus\lcl\languages\'; y por tanto, no puede hacer este procedure.

Ya investigué y la unit translations pertenece a un paquete. No se recomienda incorporarla como una unit independiene al Proyecto (Ctrl+F11).

Si no entendí mal, lo que usted me sugiere es escribir “a mano” la palabra “Translations” en el uses del .lpr, pudiera ser después de “Forms”, por ejemplo.

Para que en otra máquina esto se lea, tendría que copiar la unit Translations en la PC del cliente. Cierto o no?

¿Sería necesario incluir las dos líneas

TranslateUnitResourceStrings('LCLStrConsts','languages/lclstrconsts.%s.po','es','');
TranslateUnitResourceStrings('Lr_const','languages/lr_const.%s.po','es','');

en el begin … end del .lpr?

Espero me perdone mi torpeza, pero es la primera vez que hago algo con esto.

Saludos

Ing. Héctor F. Fiandor Rosario

Reply by email

hfiandor
to Martin Gomez: 2016-06-01 1:53 GMT-03:00 hfiandor <hfiandor en ceniai.inf.cu>: ​No es necesario copiar…

Estimados José Cuello y Martín:

Muchas gracias por su ayuda. He intentado lo sugerido, mas otras variantes, y nada.

Tenía entendido que no se debe agregar “con la mano” el nombre de una unit en el uses del .lpr, pero lo hice y el programa compiló “sin quejarse”. Comenté la sentencia “TranslateLCL;” y el programa compiló “sin quejarse”.

Cree una carpeta nueva que la llamé “Prueba limpia” y en ella copie lo que le entrego al Cliente. Sustituí el fichero ejecutable anterior por el recién obtenido con los cambios anteriores. En esa carpeta están los dos .po. Pienso que con esto estoy copiando a la PC del usuario, que no tiene Lazarus instalado en su máquina.

Ejecuté y no “tradujo”.

No quisiera insistir en la Lista con esto, que indudablemente es un problema mío, ya que ustedes lo han hecho y si funciona. Trataré de resolverlo por fuera de la lista, para no ser tan insistente.

Nos comunicaremos.

Saludos

Ing. Héctor F. Fiandor Rosario

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160601/ef7bcb57/attachment.html>

Reply by email