語言檔案 po pot和 mo簡介及漢化

2021-06-21 12:57:16 字數 3274 閱讀 4234

一、檔案簡介 

.po檔案,.mo檔案,.pot檔案是由gettext程式生成或者使用的源**和編譯結果。

1、.pot檔案 

是一種模板檔案,其實質與.po檔案一樣,其中包含了從源**中提取所有的翻譯字串的列表,主要提供給翻譯人員使用。

2、.po檔案 

(1)用程式msginit來分析pot檔案,生成各語言對應的po檔案,比如中文就是zh_cn.po,法語就是fr.po檔案。 

(2)po是portable object(可移植物件)的縮寫形式,它是面向翻譯人員的、提取於源**的一種資源檔案。 

(3).po檔案可以用任何編輯器如poedit,vi,emacs,editplus開啟,交給翻譯人員來將其中的文字翻譯成本國語言。

3、.mo檔案 

(1)用msgfmt將.po檔案編譯成mo檔案,這是乙個二進位制檔案,不能直接編輯。 

(2)mo是machine object(機器物件)的縮寫形式,它是面向計算機的、由.po檔案通過gnu gettext工具包編譯而成的二進位制檔案,應用程式通過讀取.mo檔案使自身的介面轉換成使用者使用的語言,如簡體中文。 

(3)可以用工具如msgunfmt命令將.mo檔案反編譯為.po檔案。 

不止 wordpress ,包括很多桌面應用程式都是是依靠 po 檔案或 mo 檔案來實現多語言版本。一般情況下,我們在漢化軟體的時候會碰上如下幾種情況:

1、如果程式本身提供了.po檔案,直接使用poedit漢化,並自動生成.mo檔案。 

2、如果程式提供了.pot檔案,複製乙份並更改字尾名為.po,再使用poedit漢化,最後生成.mo檔案。 

3、程式既沒有提供.po檔案,也沒有提供.pot檔案,只提供了.mo檔案,那麼有以下步驟: 

(1)使用poedit安裝程式bin資料夾中的msgunfmt程式將.mo檔案轉換成.po檔案,命令類似如下:msgunfmt d:\demo.mo -o d:\demo.po

注:在命令提示符介面,使用 msgfmt demo.po 命令將po檔案編譯為可用的 demo.mo 檔案,用 msgunfmt demo.mo 命令轉回 demo.po 檔案,這些命令在 poedit 的安裝目錄下有,可以拷貝msgunfmt.exe 、msgfmt.exe 及相關鏈結庫檔案 gettextlib.dll 、gettextsrc.dll 、iconv.dll 、intl.dll 到 c:/windows/system32 目錄下使用。 

(2)使用poedit漢化,然後生成.mo檔案。

二、參考資料 

1、在windows系統搭建linux軟體漢化平台 

2、wordpress語言檔案介紹:po檔案,mo檔案,pot檔案 

3、如何漢化 po 檔案及編譯成 mo 檔案 

如何漢化 po 檔案及編譯成 mo 檔案 

本文介紹如何 漢化、翻譯 po 檔案 及 編譯、轉換成 mo 檔案

我們在使用 wordpress 及其外掛程式時,經常可以找到漢化的版本,一般是通過乙個漢化過(翻譯過)的 mo 檔案來實現( wordpress 僅可識別 mo 檔案),實際上不單 wordpress ,包括很多桌面應用程式都是是依靠 po 檔案或 mo 檔案來實現多語言版本。如果原作者提供了乙個 po 檔案或 mo 檔案,那麼我們就可以通過相關工具來自行漢化,或者翻譯成其他語言版本。因為 mo 檔案不能直接編輯,所以我們得編輯 po 檔案,若僅有 mo 檔案,那麼就應該先把它轉換成 po 檔案後再進行編輯翻譯。

至於編輯工具,由於 po 檔案本身就是乙個文字檔案,所以任何文字編輯器都可以使用。除了專門編輯 po 檔案的 poedit ,還推薦使用 poedit 、editplus、ultraedit或者你喜歡的 vi 或 vim。 

我們來看乙個 po 檔案,這是 yskin 製作的 wordpress 2.11 中文版 po 檔案 中的一部分

msgid "" 

msgstr "" 

"project-id-version: wordpress 2.1-1.0\n" 

"po-revision-date: 2007-02-22 12:35+0800\n" 

"last-translator: yskin \n" 

"mime-version: 1.0\n" 

"content-type: text/plain; charset=utf-8\n" 

"content-transfer-encoding: 8bit\n" 

"x-poedit-basepath: d:/wordpress\n" 

"x-poedit-language: simplified chinese\n" 

"x-poedit-country: china\n" 

"x-poedit-sourcecharset: utf-8\n" 

"x-poedit-keywordslist: _e;__;__ngettext:1,2\n" 

"language-team: \n" 

"pot-creation-date: \n" 

"plural-forms: nplurals=1; plural=0;\n" 

"x-poedit-searchpath-0: .\n"

# 第一條要翻譯的字串。 

#: wp-comments-post.php:15 

msgid "sorry, comments are closed for this item." 

上面是這個 po 檔案的最初部分,各行意思一目了然,注意編碼盡可能採用utf-8。

# 第一條要翻譯的字串。 

#: wp-comments-post.php:15 

msgid "sorry, comments are closed for this item." 

那麼如何將 po 檔案編譯成**換) mo 檔案呢?

如果你使用的是 poedit ,按 ctrl + s 儲存就會自動生成相應的 po 檔案和 mo 檔案; 

或者在命令提示符介面,使用 msgfmt demo.po 命令將po檔案編譯為可用的 demo.mo 檔案,用 msgunfmt demo.mo 命令轉回 demo.po 檔案,這些命令在 poedit 的安裝目錄下有,可以拷貝msgunfmt.exe 、msgfmt.exe 及相關鏈結庫檔案 gettextlib.dll 、gettextsrc.dll 、iconv.dll 、intl.dll 到 c:/windows/system32 目錄下,或者安裝 .net 2.0環境。

另外推薦一款 gui 介面的轉化程式 po2mo.exe ,作者的說明:該程式是呼叫 msgfmt.exe 和 msgunfmt.exe 檔案,從而進行po 、mo 檔案互轉。檔案是用c#寫的,需要.net 2.0環境。

如何漢化 po 檔案及編譯成 mo 檔案

背景知識 po檔案簡介 po檔案本來是用來翻譯程式源 裡的字串的。先來稍微解釋一下它本來的用途,需要一點點c語言的基礎才能完全理解。如果理解有困難 可以忽略這段內容,不會對我們使用po來翻譯造成任何影響。目前大部分自由軟體實現國際化使用的是gettext。國際化就是讓程式可以使用多國語言來顯示程式裡...

如何漢化 po 檔案及編譯成 mo 檔案

背景知識 po檔案簡介 po檔案本來是用來翻譯程式源 裡的字串的。先來稍微解釋一下它本來的用途,需要一點點c語言的基礎才能完全理解。如果理解有困難 可以忽略這段內容,不會對我們使用po來翻譯造成任何影響。目前大部分自由軟體實現國際化使用的是gettext。國際化就是讓程式可以使用多國語言來顯示程式裡...

如何漢化 po 檔案及編譯成 mo 檔案

背景知識 po檔案簡介 po檔案本來是用來翻譯程式源 裡的字串的。先來稍微解釋一下它本來的用途,需要一點點c語言的基礎才能完全理解。如果理解有困難 可以忽略這段內容,不會對我們使用po來翻譯造成任何影響。目前大部分自由軟體實現國際化使用的是gettext。國際化就是讓程式可以使用多國語言來顯示程式裡...