Delphi XE2의FireMonkey 입문(18) - Tlang(다중 언어 전환의 실현)
3802 단어 Delphi
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
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
RadioButton1.Text := 'English';
RadioButton2.Text := ' ';
RadioButton3.Text := ' ';
RadioButton1.Tag := 0;
RadioButton2.Tag := 1;
RadioButton3.Tag := 2;
RadioButton2.OnChange := RadioButton1.OnChange;
RadioButton3.OnChange := RadioButton1.OnChange;
{ TLang }
Button1.Text := 'Button';
CheckBox1.Text := 'CheckBox';
Label1.Text := 'Test';
Caption := 'Test';
{ }
Lang1.AddLang('en');
Lang1.AddLang('cn');
Lang1.AddLang('big');
{Original: TStrings }
with Lang1.Original do
begin
Add('Button');
Add('CheckBox');
Add('Test');
end;
{en }
with Lang1.LangStr['en'] do
begin
Add('Button');
Add('CheckBox');
Add('Test');
end;
{ }
with Lang1.LangStr['cn'] do
begin
Values['Button'] := ' ';
Values['CheckBox'] := ' ';
Values['Test'] := ' ';
// Values[Lang1.Original[0]] := ' ';
// Values[Lang1.Original[1]] := ' ';
// Values[Lang1.Original[2]] := ' ';
end;
{ }
with Lang1.LangStr['big'] do
begin
Values['Button'] := ' ';
Values['CheckBox'] := ' ';
Values['Test'] := ' ';
end;
end;
{ }
procedure TForm1.RadioButton1Change(Sender: TObject);
begin
case TRadioButton(Sender).Tag of
0: Lang1.Lang := 'en';
1: Lang1.Lang := 'cn';
2: Lang1.Lang := 'big';
end;
end;
{ Resources , TStrings }
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to Lang1.Resources.Count - 1 do
ShowMessage(TStrings(Lang1.Resources.Objects[i]).Text);
end;
end.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.