delphi多語言MultiLanguage支持,Translation Manager詳細使用方法

delphi多語言MultiLanguage支持,經搜索網上流傳的使用教程如下,

1.創建一個工程MultiLanguage, 在Form上放一個Label和一個Button, 分
別把Caption賦值爲“English Label”和“English Button”。
2.選擇菜單Project|Languages|Add ..., Delphi顯示Add Languages對話框, 選擇Next。
3.從語言列表中選中“英語(美國)”和“中文(中國)”, 選擇Next。
4.ITE會根據所選的語言創建子目錄,目錄名稱是語言的縮寫,選擇Next。
5.第一次增加語言時, Update Mode固定爲Create new, 選擇Next。
6.選擇Finish。

Delphi會自動創建支持不同語言的資源動態庫。
Delphi還會自動創建一個工程組, 其中包括原有的MultiLanguages.EXE, 還包括新建
的兩個資源動態庫 (MultiLanguages.enu, MultiLanguages.chs)。保存工程組。
Delphi啓動Translation Manager, ...
選擇“中文(中國)”|Forms|Unit1, 填寫翻譯後的中文。保存並關閉。
打開Project Manager, 編譯MultiLanguages.enu和MultiLanguages.chs, Delphi會在
相應的子目錄生成資源動態庫(我的目錄下有三個文件 擴展名分別是 rc rcn res )


此教程不夠全面、詳細,工程創建完成,接下來要怎麼修改呢?

本人研究delphi自帶的demo(Demos\RichEdit)後,頗有心得,現在將Translation Manager使用方法共享。

1.打開工程組bpg文件,點擊View Form(Shift + F12),會看到有exe對應的窗體和多語言chs、enu等對應的窗體。exe文件對應的窗體可以增加、刪除、修改窗體上的控件,而多語言chs、enu等對應的窗體只能調整窗體上的控件的caption和位置。如果在多語言chs、enu等對應的窗體上增加、刪除、修改窗體上的控件會報錯Modification not allowed in a form resource.

2.打開exe對應的窗體,新增一個button。

3.exe對應的窗體增加了一個button,這裏就需要更新到多語言chs、enu等對應的窗體上。怎麼操作呢?首先保存修改後的exe對應的窗體,再點擊菜單

Project|Languages|Update Resource DLLs,接着會出現確認對話框,點擊YES。
4.編譯。點擊View|Project Manager,首先編譯多語言chs、enu等工程,在工程上右鍵點擊Compile,然後再便宜exe工程。
-----------------------------------------------------------------------------------------------------------------------------------
動態切換語言
uses  reinit;
引用reinit單元,該單元在delphi自帶的demo(Demos\RichEdit)項目文件夾下。
1.首先聲明
const
  ENU = (SUBLANG_ENGLISH_US shl 10) or LANG_ENGLISH;
  CHS = (SUBLANG_CHINESE_SIMPLIFIED shl 10) or LANG_CHINESE;
  CHT = (SUBLANG_CHINESE_TRADITIONAL shl 10) or LANG_CHINESE;

2.使用
procedure TForm1.N2Click(Sender: TObject);
begin
  if LoadNewResourceModule(CHS) <> 0 then
  begin
    ReInitializeForms();
  end;
end;


procedure TForm1.N1Click(Sender: TObject);
begin
  if LoadNewResourceModule(CHT) <> 0 then
  begin
    ReInitializeForms();
  end;
end;


procedure TForm1.N3Click(Sender: TObject);
begin
  if LoadNewResourceModule(ENU) <> 0 then
  begin
    ReInitializeForms();
  end;
end;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章