首頁 > 資訊科技 > Delphi開發 > Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體
2013
02-21

Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體

過去一直在找很多方式製作多國語言的方法,有很多元件需要錢購買授權,使用ini來處理又有效能的問題。

直到發現有開源碼 gettext 的工具,原來製作多國語言很簡單。
首先下載並安裝需要的軟體,安裝後要重開機功能才能作用。

  1. GNU Gettext for Delphi and C++ Builder
  2. Poedit 語言編輯工具軟體

開啟 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 檔案,產出的檔案會在根目錄。
Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體 - 第1張  | 小翰部落格

必須將 Allow non-ASCII texts 打勾,這樣中文的「來源文字」才能正常被抓到。

Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體 - 第2張  | 小翰部落格

依照程式路徑建立 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 圖

Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體 - 第3張  | 小翰部落格
最後修改日:
作者:蔡 小翰

常見問題:

  1. 文章可以轉貼嗎?可以,不過請要註明出處並標示本站連結。
  2. 載點可以轉貼嗎?可以,歡迎隨意盜連,無須告知。
  3. 反盜版聲明:本站支持正版軟體,請勿討論破解版、快樂版、註冊碼、註冊機、序號...等違法主題。
  4. 檔案無法解壓縮或解壓縮時發生錯誤?請使用7-Zip解壓縮
  5. 更多細節請參閱使用條款及免責聲明


Delphi使用 Jedi 中的 JvGnugettext 元件製作多國語言軟體》有 2 條評論

  1. Richard 說:

    感謝您的資訊,正在找關於Multilingue的相關資料與技術,就不知道這個工具能否應用在最新的Delphi 10 Seattle上哩!

發表迴響