語言文件.po .pot和.mo簡介及漢化


一、文件簡介 
.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." 
msgstr "對不起,這篇文章禁止評論。"

上面是這個 po 文件的最初部分,各行意思一目瞭然,注意編碼儘可能採用UTF-8。

# 第一條要翻譯的字符串。 
#: wp-comments-post.php:15 
msgid "Sorry, comments are closed for this item." 
msgstr "對不起,這篇文章禁止評論。"

這段就是po文件的主體結構了,每一個翻譯項佔一段。#: wp-comments-post.php:15 說明字符串相應的位置; msgid "Sorry, comments are closed for this item." 翻譯前的原文; msgstr "對不起,這篇文章禁止評論。" 翻譯後的字符串。以此類推,即可完成所有資源的翻譯。非常簡單。 
那麼如何將 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環境。

http://shandian.biz/278.html

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