Declaration
function LanguageToStr(ALanguage : TMsgLanguage) : string;
Description
Converts a
TMsgLanguage to string, e.g. msEnglish would return 'English', msItalian returns 'Italian', etc.
If Localized is true, the language is returned as it would be in that language, e.g. 'Italiano' for msItalian.
// Create a pop up menu to select language
procedure AddLanguagesToMenu(Pop: TPopupMenu; OnClick: TNotifyEvent);
var
langs: TMsgLanguages;
i: Integer;
aLang : TMsgLanguage;
NewItem: TMenuItem;
begin
Pop.Items.Clear;
langs := IEGlobalSettings().GetLanguages();
for i := Low( langs ) to High( langs ) do
begin
aLang := langs[ i ];
NewItem := TMenuItem.Create( Pop.Owner );
NewItem.Caption := LanguageToStr( aLang, True );
NewItem.Hint := format( iemsg( IEMsg_SetLanguageToX ), [ LanguageToStr( aLang , False ) ]);
NewItem.Checked := IEGlobalSettings.MsgLanguage = aLang;
NewItem.Tag := ord(aLang);
NewItem.OnClick := OnClick;
Pop.Items.Add(NewItem);
// Add separator for "Default"
if aLang = msSystem then
begin
NewItem := TMenuItem.Create( Pop.Owner );
NewItem.Caption := '-';
Pop.Items.Add(NewItem);
end;
end;
end;
procedure TfrmMain.LanguageClick(Sender: TObject);
var
aLang : TMsgLanguage;
I: Integer;
begin
for I := 0 to popLanguage.Items.Count - 1 do
popLanguage.Items[I].Checked := False;
aLang := TMsgLanguage(TMenuItem(Sender).Tag);
try
IEGlobalSettings.MsgLanguage := aLang;
TMenuItem(Sender).Checked := True;
except
MessageDlg( 'IELang32.dll not found! Copy it to the EXE folder for localization support.', mtInformation, [ mbOK ], 0 );
end;
end;
procedure TfrmMain.PopupLanguageMenuAtControl(Control: TControl);
begin
if popLanguage.Items.Count = 0 then
AddLanguagesToMenu( popLanguage, LanguageClick );
popLanguage.Popup( Control.ClientOrigin.X, Control.ClientOrigin.Y + Control.Height )
end;
See Also
◼Language Support
◼GetLanguages
◼MsgLanguage