mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 01:28:19 +02:00
LCLTranslator: Made SetDefaultLang return found language (aka 'default language') and deprecated separate GetDefaultLang function. This change reduces global variable usage and allows to save (or not to save) found language separately for each FindLocaleFileName function call.
git-svn-id: trunk@61599 -
This commit is contained in:
parent
7b0e251c98
commit
4f92041356
@ -81,8 +81,8 @@ type
|
||||
end;
|
||||
|
||||
procedure TranslateLCLResourceStrings(Lang, Dir: string);
|
||||
procedure SetDefaultLang(Lang: string; Dir: string = ''; LocaleFileName: string = ''; ForceUpdate: boolean = true);
|
||||
function GetDefaultLang: 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
|
||||
|
||||
implementation
|
||||
|
||||
@ -123,7 +123,7 @@ begin
|
||||
LazGetLanguageIDs(Lang, T);
|
||||
end;
|
||||
|
||||
function FindLocaleFileName(LCExt: string; LangID: string; Dir: string; LocaleFileName: string): string;
|
||||
function FindLocaleFileName(LCExt, LangID, Dir, LocaleFileName: string; out FoundLang: string): string;
|
||||
var
|
||||
LangShortID: string;
|
||||
AppDir,LCFileName,FullLCFileName: String;
|
||||
@ -141,7 +141,7 @@ begin
|
||||
Result := '';
|
||||
FindLang(LangID);
|
||||
|
||||
DefaultLang := LangID;
|
||||
FoundLang := LangID;
|
||||
|
||||
AppDir := ExtractFilePath(ParamStrUTF8(0));
|
||||
LCFileName := ChangeFileExt(GetLCFileName, LCExt);
|
||||
@ -190,7 +190,7 @@ begin
|
||||
{$ENDIF}
|
||||
//Let us search for short id files
|
||||
LangShortID := copy(LangID, 1, 2);
|
||||
Defaultlang := LangShortID;
|
||||
FoundLang := LangShortID;
|
||||
|
||||
if Dir<>'' then
|
||||
begin
|
||||
@ -299,7 +299,7 @@ begin
|
||||
exit;
|
||||
|
||||
Result := '';
|
||||
DefaultLang := '';
|
||||
FoundLang := '';
|
||||
end;
|
||||
|
||||
function GetIdentifierPath(Sender: TObject;
|
||||
@ -534,25 +534,21 @@ end;
|
||||
|
||||
procedure TranslateLCLResourceStrings(Lang, Dir: string);
|
||||
var
|
||||
LCLPath, DefaultLangBackup: string;
|
||||
LCLPath, FoundLang: string;
|
||||
begin
|
||||
// DefaultLang value is preserved when translating LCL, so it will depend only
|
||||
// on presence of interface translation. Useful when interface translation present
|
||||
// and LCL one missing, or the other way round.
|
||||
DefaultLangBackup:=DefaultLang;
|
||||
LCLPath:=FindLocaleFileName('.po', Lang, ExtractFilePath(Dir), 'lclstrconsts');
|
||||
FoundLang:='';
|
||||
LCLPath:=FindLocaleFileName('.po', Lang, ExtractFilePath(Dir), 'lclstrconsts', FoundLang);
|
||||
if LCLPath<>'' then
|
||||
Translations.TranslateUnitResourceStrings('LCLStrConsts', LCLPath)
|
||||
else
|
||||
begin
|
||||
LCLPath:=FindLocaleFileName('.mo', Lang, ExtractFilePath(Dir), 'lclstrconsts');
|
||||
LCLPath:=FindLocaleFileName('.mo', Lang, ExtractFilePath(Dir), 'lclstrconsts', FoundLang);
|
||||
if LCLPath<>'' then
|
||||
GetText.TranslateResourceStrings(UTF8ToSys(LCLPath));
|
||||
end;
|
||||
DefaultLang:=DefaultLangBackup;
|
||||
end;
|
||||
|
||||
procedure SetDefaultLang(Lang: string; Dir: string = ''; LocaleFileName: string = ''; ForceUpdate: boolean = true);
|
||||
function SetDefaultLang(Lang: string; Dir: string = ''; LocaleFileName: string = ''; ForceUpdate: boolean = true): string;
|
||||
{ Arguments:
|
||||
Lang - language (e.g. 'ru', 'de'); empty argument is default language.
|
||||
Dir - custom translation files subdirectory (e.g. 'mylng'); empty argument means searching only in predefined subdirectories.
|
||||
@ -566,10 +562,11 @@ var
|
||||
i: integer;
|
||||
|
||||
begin
|
||||
Result := '';
|
||||
LocalTranslator := nil;
|
||||
// search first po translation resources
|
||||
try
|
||||
lcfn := FindLocaleFileName('.po', Lang, Dir, LocaleFileName);
|
||||
lcfn := FindLocaleFileName('.po', Lang, Dir, LocaleFileName, Result);
|
||||
if lcfn <> '' then
|
||||
begin
|
||||
Translations.TranslateResourceStrings(lcfn);
|
||||
@ -583,7 +580,7 @@ begin
|
||||
begin
|
||||
// try now with MO translation resources
|
||||
try
|
||||
lcfn := FindLocaleFileName('.mo', Lang, Dir, LocaleFileName);
|
||||
lcfn := FindLocaleFileName('.mo', Lang, Dir, LocaleFileName, Result);
|
||||
if lcfn <> '' then
|
||||
begin
|
||||
GetText.TranslateResourceStrings(UTF8ToSys(lcfn));
|
||||
@ -594,6 +591,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
DefaultLang := Result;
|
||||
|
||||
if lcfn<>'' then
|
||||
TranslateLCLResourceStrings(Lang, lcfn);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user