一個小小的 TLang 類, 實現多語言切換, 挺好的. 它的工作思路是:
1、首先通過 AddLang('語言代碼') 添加語言類別, 如: AddLang('en')、AddLang('cn').
2、每個語言代碼對應一個 TStrings 列表, 獲取方式如: LangStr['en']、LangStr['cn'].
3、可以手動填充這些數據、可以通過 LoadFromFile() 方法載入之前 SaveToFile() 的數據(*.lng)、還可以在設計時提供的界面中操作這些數據.
4、切換時修改 Lang 屬性即可, 如 Lang := 'cn'.
5、它的作用域是當前工程的所有窗體及控件, 但不包括繪圖控件(如 TText)、控件中的文本和窗體標題等.
測試:
1、先在窗體上添加 TLang;
2、添加三個 TRadioButton, 用於切換語言;
3、添加 TButton、TCheckBox、TLabel 用於顯示測試;
4、激活 RadioButton1、Button1 和窗體的默認事件.
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects; type TForm1 = class(TForm) Lang1: TLang; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; Button1: TButton; CheckBox1: TCheckBox; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure RadioButton1Change(Sender: TObject); procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation procedure TForm1.FormCreate(Sender: TObject); begin RadioButton1.Text := ; RadioButton2.Text := ; RadioButton3.Text := ; RadioButton1.Tag := ; RadioButton2.Tag := ; RadioButton3.Tag := ; RadioButton2.OnChange := RadioButton1.OnChange; RadioButton3.OnChange := RadioButton1.OnChange; Button1.Text := ; CheckBox1.Text := ; Label1.Text := ; Caption := ; Lang1.AddLang(); Lang1.AddLang(); Lang1.AddLang(); with Lang1.Original do begin Add(); Add(); Add(); end; with Lang1.LangStr[] do begin Add(); Add(); Add(); end; with Lang1.LangStr[] do begin Values[] := ; Values[] := ; Values[] := ; end; with Lang1.LangStr[] do begin Values[] := ; Values[] := ; Values[] := ; end; end; procedure TForm1.RadioButton1Change(Sender: TObject); begin case TRadioButton(Sender).Tag of : Lang1.Lang := ; : Lang1.Lang := ; : Lang1.Lang := ; end; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := to Lang1.Resources.Count - do ShowMessage(TStrings(Lang1.Resources.Objects[i]).Text); end; end.