Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體
2,326 total views, 1 views today
過去一直在找很多方式製作多國語言的方法,有很多元件需要錢購買授權,使用ini來處理又有效能的問題。
直到發現有開源碼 gettext 的工具,原來製作多國語言很簡單。
首先下載並安裝需要的軟體,安裝後要重開機功能才能作用。
開啟 Delphi 並在 implementaion 中 user JvGnugettext
implementation uses JvGnugettext;
接下來在 FormCreate 事件加入 TranslateComponent(Self, ”);
可以查看 JvGnugettext.pas 原始碼發現他預設會偵測作業系統語系,如果有要設定多國語言切換功能可以使用 UseLanguage 函式來強制轉換語言。
procedure TFrmMain.FormCreate(Sender: TObject); begin UseLanguage('en_TW'); TranslateComponent(Self, ''); end;
接下來對整個程式碼資料夾按右鍵,即可匯出語系 default.po 檔案,產出的檔案會在根目錄。
必須將 Allow non-ASCII texts 打勾,這樣中文的「來源文字」才能正常被抓到。
依照程式路徑建立 locale\zh_TW\LC_MESSAGES 資料夾,並把defulat.po移動到此目錄底下,對 po 檔案點滑鼠左鍵兩下即可編輯,若要編譯成mo檔案,只需要對該檔案按右鍵,叫出選單選擇「Complie to mo file」即可編譯。
使用方法如下:
function TFrmMain.CheckModified: Boolean; begin Result := not Modified; if Modified then case MessageDlg(_('Save changes?'), mtConfirmation, [mbYes, mbNo, mbCancel], 0) of mrCancel: result := False; mrYes: Result := SaveToFile; mrNo: result := True; end; end;
對照 default.po 圖