[Lazarus-es] (sin asunto)
Jose Antonio Cuello
jcuello en artextrading.com
Mie Jun 1 14:00:58 CEST 2016
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
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus-ide.org
http://lists.lazarus-ide.org/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160601/ad779306/attachment-0001.html>
More information about the Lazarus-es
mailing list