[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