LCL: Added convenience TranslateUnitResourceStringsEx wrapper to LCLTranslator.

It allows to no longer include Translations unit in addition to LCLTranslator if user wants to translate some additional unit.
'Ex' suffix allows to avoid name collision with similar functions in Translations unit.
This commit is contained in:
Maxim Ganetsky 2022-07-29 02:58:22 +03:00
parent 8f1d7a66c9
commit d85e87e54f

View File

@ -79,6 +79,7 @@ type
end;
function TranslateLCLResourceStrings(Lang, Dir: string): string;
function TranslateUnitResourceStringsEx(Lang, Dir, LocaleFileName: string; LocaleUnitName: string = ''): string;
function SetDefaultLang(Lang: string; Dir: string = ''; LocaleFileName: string = ''; ForceUpdate: boolean = true): string;
function GetDefaultLang: String; deprecated 'Use SetDefaultLang function result instead'; // Lazarus 2.1.0
@ -525,19 +526,28 @@ begin
end;
function TranslateLCLResourceStrings(Lang, Dir: string): string;
begin
Result:=LCLTranslator.TranslateUnitResourceStringsEx(Lang, Dir, 'lclstrconsts');
end;
function TranslateUnitResourceStringsEx(Lang, Dir, LocaleFileName: string; LocaleUnitName: string = ''): string;
var
LCLPath: string;
UnitPath: string;
begin
Result:='';
if LocaleFileName='' then
exit;
if LocaleUnitName='' then
LocaleUnitName:=LocaleFileName;
try
LCLPath:=FindLocaleFileName('.po', Lang, ExtractFilePath(Dir), 'lclstrconsts', Result);
if LCLPath<>'' then
Translations.TranslateUnitResourceStrings('LCLStrConsts', LCLPath)
UnitPath:=FindLocaleFileName('.po', Lang, ExtractFilePath(Dir), LocaleFileName, Result);
if UnitPath<>'' then
Translations.TranslateUnitResourceStrings(LocaleUnitName, UnitPath)
else
begin
LCLPath:=FindLocaleFileName('.mo', Lang, ExtractFilePath(Dir), 'lclstrconsts', Result);
if LCLPath<>'' then
GetText.TranslateResourceStrings(UTF8ToSys(LCLPath));
UnitPath:=FindLocaleFileName('.mo', Lang, ExtractFilePath(Dir), LocaleFileName, Result);
if UnitPath<>'' then
GetText.TranslateResourceStrings(UTF8ToSys(UnitPath));
end;
except
Result:='';