越來越多的程序使用了多國語言切換,雖然自帶多語言包的添加和配置,但是那種方法在切換語言時界面會出現閃爍,而且實現起來很麻煩,這里我介紹給大家的是利用INI文件來讀取界面的語種文字,用這種方法,不但簡單易行,而且在切換的時候不會出現界面的閃爍。
我們從一個例子出發做界面的有哪些語言,看看怎么實現語言的切換。首先建立一個新工程。
放置如下組件:
:;
File1:;
Exit1:;
:;
:;
:;
:;
:;
:;
:;
:;
由于要讀取Ini文件,所以在USES中加入聲明;然后將和的屬性設置為True;其中我們用來顯示可供選擇的語言和用來選擇語言。
我們在程序的目錄下編輯如下的.Ini文件:
;///////////////////////////////////////////////////////////////////
;
;翻譯的一些規則:
;翻譯前,拷貝.ini改名到.ini
;僅僅翻譯符號'='后的文字
;
;
[]
;
.=文字1
.=文字2
.=語言
.=按鈕1
.=按鈕2
.Hint=按鈕1_提示
.Hint=按鈕2_提示
.=復選框1
.=復選框2
File1.=文件
Exit1.=退出
;
[]
;
M1=信息框測試
;
;//////////////////////////////////////////////////////////////////
同樣的方法編輯一個名為.ini的文件,將“=”左邊的文字改為英文。
例如:.=
程序運行時做界面的有哪些語言,我們查找當前目錄下所有的語言配置文件(*.ini),為了達到這個目的,我編寫了如下的函數搜索目錄下所有的語言配置文件的文件名,然后將文件名去掉ini擴展名保存返回:
.:;
var
:;
:;
:;
begin
:=.;
:=(((0))+'*.ini',,);
=0do
begin
{返回的文件名并去掉末尾的.ini字符}
.Add((.Name,'));
:=();
end;
();
:=;
end;
在Form建立的事件中添加代碼,將目錄下所有的語言文件名加入選擇列表框中。
.(:);
begin
.Items.();
end;
程序的重點在如何切換語言,在的事件中進行切換操作。這里我寫了過程用于實現這一操作。
.(:);
begin
(.Text);
end;
其中代碼如下:
.(:);
const
='';
='';
var
:;
i:;
begin
.(((0))++'.ini')do
begin
fori:=-1do{遍歷Form組件}
begin
:=[i];
{如果組件為型則當作處理,以下同}
begin
().:=
(,.Name+'.',().);
end;
begin
(Box).:=
(,.Name+'.',(Box).);
end;
begin
(n).:=
(,.Name+'.',(n).);
(n).Hint:=
(,.Name+'.Hint',(n).Hint);
end;
begin
(tem).:=
(,.Name+'.',(tem).);
end;
end;
M1:=(,'M1',M1);
end;
end;
在這個過程中,我們遍歷了Form中的所有組件,根據他們的類別和組件名動態的從ini配置文件中讀出應該顯示的語言文字。
用遍歷組件的方法比一個一個寫出具體的組件維護起來要方便很多,代碼的適應性也更強。
其中M1為一個字符串變量,這樣提示消息也能切換,比如在的Click事件中
.(:);
begin
(M1);
end;
就可以根據不同的語言給出不同的提示文字。
好了,整個工程就做完了,你可以運行測試一下,是不是切換迅速而且無閃爍。
我的主頁上有完整的例子和代碼下載:
歡迎大家于我交流:
11:-6-28