mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-28 13:40:29 +02:00
LCL, DefaultTranslator: reduce code duplication, patch from Mario Ray Mahardhika, bug #23986
git-svn-id: trunk@40470 -
This commit is contained in:
parent
5f5d746e7f
commit
dfe9c8ba18
@ -87,78 +87,74 @@ var
|
|||||||
function GetLocaleFileName(const LangID, LCExt: string): string;
|
function GetLocaleFileName(const LangID, LCExt: string): string;
|
||||||
var
|
var
|
||||||
LangShortID: string;
|
LangShortID: string;
|
||||||
|
AppDir,LCFileName,FullLCFileName: String;
|
||||||
begin
|
begin
|
||||||
if LangID <> '' then
|
if LangID <> '' then
|
||||||
begin
|
begin
|
||||||
|
AppDir := ExtractFilePath(ParamStrUTF8(0));
|
||||||
|
LCFileName := ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
||||||
|
FullLCFileName := ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangID) + LCExt;
|
||||||
|
|
||||||
//ParamStrUTF8(0) is said not to work properly in linux, but I've tested it
|
//ParamStrUTF8(0) is said not to work properly in linux, but I've tested it
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + LangID +
|
Result := AppDir + LangID + DirectorySeparator + LCFileName;
|
||||||
DirectorySeparator + ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'languages' + DirectorySeparator + LangID +
|
Result := AppDir + 'languages' + DirectorySeparator + LangID +
|
||||||
DirectorySeparator + ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
DirectorySeparator + LCFileName;
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'locale' + DirectorySeparator
|
Result := AppDir + 'locale' + DirectorySeparator + LangID +
|
||||||
+ LangID + DirectorySeparator + ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
DirectorySeparator + LCFileName;
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'locale' + DirectorySeparator
|
Result := AppDir + 'locale' + DirectorySeparator + LangID +
|
||||||
+ LangID + DirectorySeparator + 'LC_MESSAGES' + DirectorySeparator +
|
DirectorySeparator + 'LC_MESSAGES' + DirectorySeparator + LCFileName;
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
{$IFDEF UNIX}
|
{$IFDEF UNIX}
|
||||||
//In unix-like systems we can try to search for global locale
|
//In unix-like systems we can try to search for global locale
|
||||||
Result := '/usr/share/locale/' + LangID + '/LC_MESSAGES/' +
|
Result := '/usr/share/locale/' + LangID + '/LC_MESSAGES/' + LCFileName;
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
//Let us search for reducted files
|
//Let us search for reducted files
|
||||||
LangShortID := copy(LangID, 1, 2);
|
LangShortID := copy(LangID, 1, 2);
|
||||||
//At first, check all was checked
|
//At first, check all was checked
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + LangShortID +
|
Result := AppDir + LangShortID + DirectorySeparator + LCFileName;
|
||||||
DirectorySeparator + ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'languages' + DirectorySeparator +
|
Result := AppDir + 'languages' + DirectorySeparator +
|
||||||
LangShortID + DirectorySeparator + ChangeFileExt(
|
LangShortID + DirectorySeparator + LCFileName;
|
||||||
ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'locale' + DirectorySeparator
|
Result := AppDir + 'locale' + DirectorySeparator
|
||||||
+ LangShortID + DirectorySeparator + ChangeFileExt(
|
+ LangShortID + DirectorySeparator + LCFileName;
|
||||||
ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'locale' + DirectorySeparator
|
Result := AppDir + 'locale' + DirectorySeparator + LangShortID +
|
||||||
+ LangShortID + DirectorySeparator + 'LC_MESSAGES' + DirectorySeparator +
|
DirectorySeparator + 'LC_MESSAGES' + DirectorySeparator + LCFileName;
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
//Full language in file name - this will be default for the project
|
//Full language in file name - this will be default for the project
|
||||||
//We need more careful handling, as it MAY result in incorrect filename
|
//We need more careful handling, as it MAY result in incorrect filename
|
||||||
try
|
try
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangID) + LCExt;
|
Result := AppDir + FullLCFileName;
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
//Common location (like in Lazarus)
|
//Common location (like in Lazarus)
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'locale' + DirectorySeparator +
|
Result := AppDir + 'locale' + DirectorySeparator + FullLCFileName;
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangID) + LCExt;
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'languages' +
|
Result := AppDir + 'languages' + DirectorySeparator + FullLCFileName;
|
||||||
DirectorySeparator + ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangID) + LCExt;
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
except
|
except
|
||||||
@ -166,22 +162,22 @@ var
|
|||||||
end;
|
end;
|
||||||
{$IFDEF UNIX}
|
{$IFDEF UNIX}
|
||||||
Result := '/usr/share/locale/' + LangShortID + '/LC_MESSAGES/' +
|
Result := '/usr/share/locale/' + LangShortID + '/LC_MESSAGES/' +
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), LCExt);
|
LCFileName;
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + ChangeFileExt(
|
|
||||||
ExtractFileName(ParamStrUTF8(0)), '.' + LangShortID) + LCExt;
|
FullLCFileName := ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangShortID) + LCExt;
|
||||||
|
|
||||||
|
Result := AppDir + FullLCFileName;
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'locale' + DirectorySeparator +
|
Result := AppDir + 'locale' + DirectorySeparator + FullLCFileName;
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangShortID) + LCExt;
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
Result := ExtractFilePath(ParamStrUTF8(0)) + 'languages' + DirectorySeparator +
|
Result := AppDir + 'languages' + DirectorySeparator + FullLCFileName;
|
||||||
ChangeFileExt(ExtractFileName(ParamStrUTF8(0)), '.' + LangShortID) + LCExt;
|
|
||||||
if FileExistsUTF8(Result) then
|
if FileExistsUTF8(Result) then
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user