1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| unit Main;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ScrollBox,
FMX.Memo, FMX.ListBox, FMX.StdCtrls, FMX.Controls.Presentation;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
combo1: TComboBox;
Memo1: TMemo;
od1: TOpenDialog;
sd1: TSaveDialog;
btnClickMe: TButton;
Lang1: TLang;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure combo1Change(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure btnClickMeClick(Sender: TObject);
private
{ Déclarations privées }
procedure InitCombobox;
function CheckCurrentLang: string;
procedure MajText;
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
ResourceString
MsgLang = 'Message in English';
HintBtnClickMe = 'Show a message';
TitleMain = 'Multilanguage application';
const
LANG_FILE: string = 'CheckLang.lng';
implementation
uses
MyDatas,
FMX.Platform;
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
InitCombobox;
MajText;
end;
{ button }
procedure TForm1.Button1Click(Sender: TObject);
begin
Lang1.Resources.Clear;
Lang1.LoadFromFile(ExtractFilePath(ParamStr(0)) + LANG_FILE);
InitCombobox;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Lang1.SaveToFile(ExtractFilePath(ParamStr(0)) + LANG_FILE);
end;
procedure TForm1.Button3Click(Sender: TObject);
var myLang: string;
begin
myLang := CheckCurrentLang;
ShowMessageFmt('CurrentLangID:%s', [myLang]);
LoadLangFromStrings(Lang1.LangStr[myLang]);
combo1.ItemIndex := combo1.Items.IndexOf(myLang);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if (combo1.ItemIndex > 0) then
Memo1.Lines.Assign(TStrings(Lang1.Resources.Objects[combo1.ItemIndex-1]))
else
Memo1.Lines.Assign(Lang1.Original);
end;
procedure TForm1.combo1Change(Sender: TObject);
begin
if (combo1.ItemIndex > 0) then
LoadLangFromStrings(Lang1.LangStr[combo1.Items[combo1.ItemIndex]])
else
ResetLang;
MajText;
end;
procedure TForm1.btnClickMeClick(Sender: TObject);
var pos: Integer;
begin
ShowMessage(Translate(MsgLang));
end;
{ Others functions }
procedure TForm1.InitCombobox;
begin
combo1.Items.Clear;
combo1.Items.Add('Default');
combo1.Items.AddStrings(Lang1.Resources);
combo1.ItemIndex := combo1.Items.IndexOf(CheckCurrentLang);
end;
function TForm1.CheckCurrentLang: string;
var lsv: IFMXLocaleService;
begin
Result := '';
if (TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, lsv)) then
Result := lsv.GetCurrentLangID;
end;
procedure TForm1.MajText;
begin
Caption := Translate(TitleMain);
btnClickMe.Hint := Translate(HintBtnClickMe);
end;
end. |
Partager