uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus, ExtCtrls,
Buttons, StdCtrls, EditBtn, BCButton, BCComboBox, BCLabel, DefaultTranslator,
LCLTranslator, translations, LazUTF8, BGRAResizeSpeedButton, fileutil,
backupclass, ustatus, dbf, uabout, LazFileUtils;
...
function TFMain.FindLanguageFiles:TStringList;
begin
Result := TStringList.Create;
Result := FindAllFiles(ExtractFilePath(Application.ExeName)+'languages','*.mo',False);
end;
procedure TFMain.CreateLanguageMenuItems;
var
TMILanguage : TMenuItem;
LFiles : TStringList;
tmpstring : string;
I : Integer;
Lang, FallbackLang: String;
begin
LazGetLanguageIDs(Lang,FallbackLang);
LFiles := FindLanguageFiles;
try
if LFiles.Count > 0 then
MILanguages.Enabled := True
else
MILanguages.Enabled := False;
For I := 0 to LFiles.Count -1 do
begin
LFiles[I] := ExtractFileNameOnly(LFiles[I]);
tmpstring := UpperCase(StringReplace(LFiles[I],
ExtractFileNameOnly(Application.ExeName)+'.',
'',
[rfReplaceAll, rfIgnoreCase])
);
if trim(tmpstring) <> '' then
begin
TMILanguage := TMenuItem.Create(Self);
TMILanguage.Caption := tmpstring;
MILanguages.Add(TMILanguage);
TMILanguage.ImageIndex:=SelectLanguageFlag(tmpstring);
TMILanguage.RadioItem := True;
If pos(tmpstring,Lang) > 0 then
TMILanguage.Checked := True;
TMILanguage.OnClick := @ChangeLanguage;
end;
end;
finally
if Assigned(LFiles) then
FreeAndNil(LFiles);
end;
If MILanguages.Count> 0 then
MILanguages.Enabled := True
else
MILanguages.Enabled := False;
end;
function TFMain.SelectLanguageFlag(Language:String): Integer;
begin
Result := 2;
case Language of
'EN' : Result := 3;
'FR' : Result := 4;
'ES' : Result := 5;
'RU' : Result := 6;
'ZH' : Result := 7;
'JA' : Result := 8;
end;
end;
procedure TFMain.ChangeLanguage(Sender: TObject);
begin
SetDefaultLang(LowerCase(TMenuItem(Sender).Caption));
MILanguages.Items[TMenuItem(Sender).MenuIndex].Checked := True;
end;