mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 00:19:26 +02:00
LCL: translations: added TranslateUnitResourceStrings overload with TPOFile, from Benito van der Zander, bug #12280
git-svn-id: trunk@17602 -
This commit is contained in:
parent
40d1b6687c
commit
caca721cc5
@ -144,6 +144,7 @@ procedure TranslateUnitResourceStrings(const ResUnitName, BaseFilename,
|
|||||||
Lang, FallbackLang: string);
|
Lang, FallbackLang: string);
|
||||||
function TranslateUnitResourceStrings(const ResUnitName, AFilename: string
|
function TranslateUnitResourceStrings(const ResUnitName, AFilename: string
|
||||||
): boolean;
|
): boolean;
|
||||||
|
function TranslateUnitResourceStrings(const ResUnitName:string; po: TPOFile): boolean;
|
||||||
function UTF8ToSystemCharSet(const s: string): string; inline;
|
function UTF8ToSystemCharSet(const s: string): string; inline;
|
||||||
|
|
||||||
function UpdatePoFile(Files: TStrings; const POFilename: string): boolean;
|
function UpdatePoFile(Files: TStrings; const POFilename: string): boolean;
|
||||||
@ -341,53 +342,59 @@ end;
|
|||||||
|
|
||||||
function TranslateUnitResourceStrings(const ResUnitName, AFilename: string
|
function TranslateUnitResourceStrings(const ResUnitName, AFilename: string
|
||||||
): boolean;
|
): boolean;
|
||||||
var
|
var po: TPOFile;
|
||||||
|
begin
|
||||||
|
//debugln('TranslateUnitResourceStrings) ResUnitName="',ResUnitName,'" AFilename="',AFilename,'"');
|
||||||
|
if (ResUnitName='') or (AFilename='') or (not FileExistsUTF8(AFilename)) then
|
||||||
|
exit;
|
||||||
|
result:=false;
|
||||||
|
po:=nil;
|
||||||
|
try
|
||||||
|
po:=TPOFile.Create(AFilename);
|
||||||
|
result:=TranslateUnitResourceStrings(ResUnitName,TPOFile.Create(AFilename));
|
||||||
|
finally
|
||||||
|
po.free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TranslateUnitResourceStrings(const ResUnitName: string; po: TPOFile
|
||||||
|
): boolean;
|
||||||
{$ifdef ver2_0}
|
{$ifdef ver2_0}
|
||||||
|
var
|
||||||
TableID, StringID, TableCount: Integer;
|
TableID, StringID, TableCount: Integer;
|
||||||
s: String;
|
s: String;
|
||||||
DefValue: String;
|
DefValue: String;
|
||||||
{$endif ver2_0}
|
{$endif ver2_0}
|
||||||
po: TPOFile;
|
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
//debugln('TranslateUnitResourceStrings) ResUnitName="',ResUnitName,'" AFilename="',AFilename,'"');
|
|
||||||
if (ResUnitName='') or (AFilename='') or (not FileExistsUTF8(AFilename)) then
|
|
||||||
exit;
|
|
||||||
try
|
try
|
||||||
po := nil;
|
|
||||||
// read .po file
|
|
||||||
po := TPOFile.Create(AFilename);
|
|
||||||
try
|
|
||||||
{$ifdef ver2_0}
|
{$ifdef ver2_0}
|
||||||
for TableID:=0 to ResourceStringTableCount - 1 do begin
|
for TableID:=0 to ResourceStringTableCount - 1 do begin
|
||||||
TableCount := ResourceStringCount(TableID);
|
TableCount := ResourceStringCount(TableID);
|
||||||
|
|
||||||
// check if this table belongs to the ResUnitName
|
// check if this table belongs to the ResUnitName
|
||||||
if TableCount=0 then continue;
|
if TableCount=0 then continue;
|
||||||
s:=GetResourceStringName(TableID,0);
|
s:=GetResourceStringName(TableID,0);
|
||||||
if CompareText(ResUnitName+'.',LeftStr(s,length(ResUnitName)+1))<>0
|
if CompareText(ResUnitName+'.',LeftStr(s,length(ResUnitName)+1))<>0
|
||||||
then continue;
|
then continue;
|
||||||
|
|
||||||
// translate all resource strings of the unit
|
// translate all resource strings of the unit
|
||||||
for StringID := 0 to TableCount - 1 do begin
|
for StringID := 0 to TableCount - 1 do begin
|
||||||
DefValue:=GetResourceStringDefaultValue(TableID,StringID);
|
DefValue:=GetResourceStringDefaultValue(TableID,StringID);
|
||||||
// get UTF8 string
|
// get UTF8 string
|
||||||
s := po.Translate(GetResourceStringName(TableID,StringID),DefValue);
|
s := po.Translate(GetResourceStringName(TableID,StringID),DefValue);
|
||||||
|
|
||||||
if Length(s) > 0 then begin
|
if Length(s) > 0 then begin
|
||||||
// convert UTF8 to current local
|
// convert UTF8 to current local
|
||||||
s:=UTF8ToSystemCharSet(s);
|
s:=UTF8ToSystemCharSet(s);
|
||||||
SetResourceStringValue(TableID,StringID,s);
|
SetResourceStringValue(TableID,StringID,s);
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{$else ver2_0}
|
|
||||||
SetUnitResourceStrings(ResUnitName,@Translate,po);
|
|
||||||
{$endif ver2_0}
|
|
||||||
finally
|
|
||||||
po.Free;
|
|
||||||
end;
|
end;
|
||||||
Result:=true;
|
{$else ver2_0}
|
||||||
|
SetUnitResourceStrings(ResUnitName,@Translate,po);
|
||||||
|
{$endif ver2_0}
|
||||||
|
Result:=true;
|
||||||
except
|
except
|
||||||
on e: Exception do begin
|
on e: Exception do begin
|
||||||
DebugLn('Exception while translating ', ResUnitName);
|
DebugLn('Exception while translating ', ResUnitName);
|
||||||
|
Loading…
Reference in New Issue
Block a user