196 lines
5.5 KiB
ObjectPascal
196 lines
5.5 KiB
ObjectPascal
|
|
unit LanguageLoaderExampleForm;
|
||
|
|
|
||
|
|
interface
|
||
|
|
|
||
|
|
uses
|
||
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
|
|
Dialogs, Menus, JvMenus, JvComponent, JvgLanguageLoader, StdCtrls,
|
||
|
|
JvComponentBase;
|
||
|
|
|
||
|
|
type
|
||
|
|
TForm1 = class(TForm)
|
||
|
|
MainMenu: TJvMainMenu;
|
||
|
|
MM_Bestand: TMenuItem;
|
||
|
|
FileNew: TMenuItem;
|
||
|
|
FileOpen: TMenuItem;
|
||
|
|
FileSave: TMenuItem;
|
||
|
|
FileExit: TMenuItem;
|
||
|
|
MM_Bewerken: TMenuItem;
|
||
|
|
MM_EditUndo: TMenuItem;
|
||
|
|
Redo1: TMenuItem;
|
||
|
|
N4: TMenuItem;
|
||
|
|
Cut1: TMenuItem;
|
||
|
|
Copy1: TMenuItem;
|
||
|
|
Paste1: TMenuItem;
|
||
|
|
MM_Help: TMenuItem;
|
||
|
|
HelpShowHelp: TMenuItem;
|
||
|
|
HelpAbout: TMenuItem;
|
||
|
|
SelectLang: TMenuItem;
|
||
|
|
LangEnglish: TMenuItem;
|
||
|
|
LangDutch: TMenuItem;
|
||
|
|
LangFrench: TMenuItem;
|
||
|
|
JvgLanguageLoader: TJvgLanguageLoader;
|
||
|
|
btnOK: TButton;
|
||
|
|
btnCancel: TButton;
|
||
|
|
lbl1: TLabel;
|
||
|
|
lbl2: TLabel;
|
||
|
|
lbl3: TLabel;
|
||
|
|
lblWarning: TLabel;
|
||
|
|
procedure FileExitClick(Sender: TObject);
|
||
|
|
procedure FormShow(Sender: TObject);
|
||
|
|
procedure LangDutchClick(Sender: TObject);
|
||
|
|
procedure LangFrenchClick(Sender: TObject);
|
||
|
|
procedure LangEnglishClick(Sender: TObject);
|
||
|
|
private
|
||
|
|
FLanguageDir: string;
|
||
|
|
FLanguageFile: string;
|
||
|
|
{ Private declarations }
|
||
|
|
public
|
||
|
|
{ Public declarations }
|
||
|
|
property LanguageDir: string read FLanguageDir;
|
||
|
|
property LanguageFile: string read FLanguageFile;
|
||
|
|
|
||
|
|
procedure TranslateConsts;
|
||
|
|
end;
|
||
|
|
|
||
|
|
var
|
||
|
|
Form1: TForm1;
|
||
|
|
|
||
|
|
implementation
|
||
|
|
|
||
|
|
{$R *.dfm}
|
||
|
|
|
||
|
|
uses
|
||
|
|
JclFileUtils, JclStrings;
|
||
|
|
|
||
|
|
|
||
|
|
// Some string constants
|
||
|
|
const
|
||
|
|
BlueLabel1 = 'English';
|
||
|
|
BlueLabel2 = 'Dutch';
|
||
|
|
BlueLabel3 = 'French';
|
||
|
|
|
||
|
|
procedure TForm1.FileExitClick(Sender: TObject);
|
||
|
|
begin
|
||
|
|
Close;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TForm1.FormShow(Sender: TObject);
|
||
|
|
var
|
||
|
|
ProgramDir: string;
|
||
|
|
begin
|
||
|
|
// Get program dir (in case it's running from a different dir)
|
||
|
|
ProgramDir := PathExtractFileDirFixed(Application.ExeName);
|
||
|
|
ProgramDir := StrEnsureSuffix('\', ProgramDir);
|
||
|
|
FLanguageDir := ProgramDir + '..\examples\Globus\LanguageLoader';
|
||
|
|
FLanguageDir := StrEnsureSuffix('\', PathCanonicalize(FLanguageDir));
|
||
|
|
|
||
|
|
|
||
|
|
// In a real app this should be done only once and after that saved
|
||
|
|
// in the programs's settings, here we do it always at startup...
|
||
|
|
|
||
|
|
// Get the default system language
|
||
|
|
if (GetUserDefaultLangID and LANG_DUTCH) = LANG_DUTCH then
|
||
|
|
begin
|
||
|
|
// Set dutch as currently used language
|
||
|
|
FLanguageFile := LanguageDir + 'Nederlands.lng';
|
||
|
|
LangDutch.Checked := True;
|
||
|
|
end
|
||
|
|
else if (GetUserDefaultLangID and LANG_FRENCH) = LANG_FRENCH then
|
||
|
|
begin
|
||
|
|
// Set french as currently used language
|
||
|
|
FLanguageFile := LanguageDir + 'Francais.lng';
|
||
|
|
LangFrench.Checked := True;
|
||
|
|
end
|
||
|
|
else
|
||
|
|
begin
|
||
|
|
// use English as default
|
||
|
|
// No real need to translate it but we do it anyway
|
||
|
|
// The English language file is needed when changing from one language to another
|
||
|
|
FLanguageFile := LanguageDir + 'English.lng';
|
||
|
|
LangEnglish.Checked := True;
|
||
|
|
end;
|
||
|
|
|
||
|
|
JvgLanguageLoader.DictionaryFileName := LanguageFile;
|
||
|
|
|
||
|
|
// Translate the form
|
||
|
|
// The translations for the form to be translated will be found
|
||
|
|
// in the ini section name defined in property JvgLanguageLoader.FormSection
|
||
|
|
// When the second parameter is True string constants will also be loaded from
|
||
|
|
// the section defined in JvgLanguageLoader.StringsSection
|
||
|
|
jvgLanguageLoader.TranslateComponent(Self,True);
|
||
|
|
|
||
|
|
// Now translate some string constants
|
||
|
|
TranslateConsts;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TForm1.TranslateConsts;
|
||
|
|
begin
|
||
|
|
// Translate some constant strings
|
||
|
|
lbl1.Caption := jvgLanguageLoader.Translate(BlueLabel1);
|
||
|
|
lbl2.Caption := jvgLanguageLoader.Translate(BlueLabel2);
|
||
|
|
lbl3.Caption := jvgLanguageLoader.Translate(BlueLabel3);
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TForm1.LangDutchClick(Sender: TObject);
|
||
|
|
var OldLanguage: string;
|
||
|
|
begin
|
||
|
|
if not LangDutch.Checked then
|
||
|
|
begin
|
||
|
|
OldLanguage := LanguageFile;
|
||
|
|
FLanguageFile := LanguageDir + 'Nederlands.lng';
|
||
|
|
JvgLanguageLoader.DictionaryFileName := LanguageFile;
|
||
|
|
|
||
|
|
// Change language of this form
|
||
|
|
jvgLanguageLoader.ChangeTranslation(Self,True,OldLanguage);
|
||
|
|
LangFrench.Checked := False;
|
||
|
|
LangEnglish.Checked := False;
|
||
|
|
LangDutch.Checked := True;
|
||
|
|
|
||
|
|
// Now translate some string constants we are using on this form
|
||
|
|
TranslateConsts;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TForm1.LangFrenchClick(Sender: TObject);
|
||
|
|
var OldLanguage: string;
|
||
|
|
begin
|
||
|
|
if not LangFrench.Checked then
|
||
|
|
begin
|
||
|
|
OldLanguage := LanguageFile;
|
||
|
|
FLanguageFile := LanguageDir+'Francais.lng';
|
||
|
|
JvgLanguageLoader.DictionaryFileName := LanguageFile;
|
||
|
|
|
||
|
|
// Change language of this form
|
||
|
|
jvgLanguageLoader.ChangeTranslation(Self,True,OldLanguage);
|
||
|
|
LangFrench.Checked := True;
|
||
|
|
LangEnglish.Checked := False;
|
||
|
|
LangDutch.Checked := False;
|
||
|
|
|
||
|
|
// Now translate some string constants we are using on this form
|
||
|
|
TranslateConsts;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TForm1.LangEnglishClick(Sender: TObject);
|
||
|
|
var OldLanguage: string;
|
||
|
|
begin
|
||
|
|
if not LangEnglish.Checked then
|
||
|
|
begin
|
||
|
|
OldLanguage := LanguageFile;
|
||
|
|
FLanguageFile := LanguageDir+'English.lng';
|
||
|
|
JvgLanguageLoader.DictionaryFileName := LanguageFile;
|
||
|
|
|
||
|
|
// Change language of this form
|
||
|
|
jvgLanguageLoader.ChangeTranslation(Self,True,OldLanguage);
|
||
|
|
LangFrench.Checked := False;
|
||
|
|
LangEnglish.Checked := True;
|
||
|
|
LangDutch.Checked := False;
|
||
|
|
|
||
|
|
// Now translate some string constants we are using on this form
|
||
|
|
TranslateConsts;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
end.
|