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