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

 2,711 total views,  2 views today

過去一直在找很多方式製作多國語言的方法,有很多元件需要錢購買授權,使用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 檔案,產出的檔案會在根目錄。

必須將 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 圖

發表迴響

%d 位部落客按了讚: