利用INI文件實現(xiàn)界面無閃爍多語言切換

字號:

越來越多的程序使用了多國語言切換,雖然Delphi自帶多語言包的添加和配置,
    但是那種方法在切換語言時界面會出現(xiàn)閃爍,而且實現(xiàn)起來很麻煩,這里我介紹給大家的是利用INI文件來讀取界面的語種文字,
    用這種方法,不但簡單易行,而且在切換的時候不會出現(xiàn)界面的閃爍。
    我們從一個例子出發(fā),看看怎么實現(xiàn)語言的切換。首先建立一個新工程。放置如下組件:(如圖)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Exit1: TMenuItem;
    Label1: TLabel;
    Button1: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Button2: TButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label3: TLabel;
    由于要讀取Ini文件,所以在USES中加入聲明IniFiles;
    然后將Button1和Button2的ShowHint屬性設(shè)置為True;
    其中我們用ComboBox1來顯示可供選擇的語言和用來選擇語言。
    我們在程序的目錄下編輯如下的Chinese GB.Ini文件:
    ;///////////////////////////////////////////////////////////////////
    ;
    ; 翻譯的一些規(guī)則:
    ; 翻譯前,拷貝 Chinese GB.ini 改名到 yourlanguage.ini
    ; 僅僅翻譯符號'='后的文字
    ;
    [Translations]
    ;
    Label1.Caption =文字1
    Label2.Caption =文字2
    Label3.Caption =語言
    Button1.Caption =按鈕1
    Button2.Caption =按鈕2
    Button1.Hint =按鈕1_提示
    Button2.Hint =按鈕2_提示
    CheckBox1.Caption =復(fù)選框1
    CheckBox2.Caption =復(fù)選框2
    File1.Caption =文件
    Exit1.Caption =退出
    ;
    [Messages]
    ;
    M1 =信息框測試
    ;
    ;//////////////////////////////////////////////////////////////////
    同樣的方法編輯一個名為English.ini的文件,將“=”左邊的文字改為英文。
    例如:Label1.Caption =Label1
    程序運行時,我們查找當(dāng)前目錄下所有的語言配置文件(*.ini),
    為了達到這個目的,
    我編寫了如下的函數(shù)搜索目錄下所有的語言配置文件的文件名,
    然后將文件名去掉ini擴展名保存返回:
    function TForm1.SearchLanguagePack:TStrings;
    var
    ResultStrings:TStrings;
    DosError:integer;
    SearchRec:TsearchRec;
    begin
    ResultStrings:=TStringList.Create;
    DosError:=FindFirst(ExtractFilePath(ParamStr(0))+'*.ini', faAnyFile, SearchRec);
    while DosError=0 do
    begin
    { 返回的文件名并去掉末尾的.ini字符 }
    ResultStrings.Add(ChangeFileExt(SearchRec.Name,''));
    DosError:=FindNext(SearchRec);
    end;
    FindClose(SearchRec);
    Result:=ResultStrings;
    end;