相關推薦

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

使用WordPress的朋友都會發現有一些.pot或是.mo為後輟名的文件,這些文件其實就是WordPress程序的語言包及編譯文件.我們把做的就是把這些文件翻譯成中文並編輯為.mo格式.現在先介紹一些基本知識,讓我認識pot文件、po文件、mo文件分別是什麼和它們之間的關係。

一、文件簡介
.po文件,.mo文件,.pot文件是由gettext程序生成或者使用的源代碼和編譯結果。

1、.pot文件
是一種模板文件,其實質與.po文件一樣,其中包含了從源代碼中提取所有的翻譯字符串的列表,主要提供給翻譯人員使用。

2、.po文件

 

  • 用程序msginit來分析pot文件,生成各語言對應的po文件,比如中文就是zh_CN.po,法語就是fr.po文件。
  • PO是Portable Object(可移植對象)的縮寫形式,它是面向翻譯人員的、提取於源代碼的一種資源文件。
  • .po文件可以用任何編輯器如poEdit,vi,Emacs,editplus打開,交給翻譯人員來將其中的文字翻譯成本國語言。

 


3.mo文件

 

  • 用msgfmt將.po文件編譯成mo文件,這是一個二進製文件,不能直接編輯。
  • MO是Machine Object(機器對象)的縮寫形式,它是面向計算機的、由.po文件通過GNU gettext工具包編譯而成的二進製文件,應用程序通過讀取.mo文件使自身的界面轉換成用戶使用的語言,如簡體中文。
  • 可以用工具如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 -od:\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環境。

下面介紹幾個工具的簡單使用方法:

用Pootle翻譯WordPress

  1. 在Pootle 服務器註冊一個賬號,發送一份郵件給管理員,要求增加我們的目標語言版本的WordPress
  2. 開始翻譯前,請登錄 Pootle。未登錄用戶有時能夠瀏覽內容、提交意見,但翻譯是登錄用戶的獨有權利,不登錄無法翻譯。
  3. 訪問目標語言的WordPress頁面。例如Afrikaan語的頁面是pootle.locamotion.org/af/wordpress/(不要忘了結尾斜線)。
  4. 點擊“Show Editing Functions(顯示編輯功能)”
  5. 點擊“Quick Translate(快速翻譯)”以編輯未翻譯的與語義含糊的內容,或點擊“Translate All(翻譯全部)”以編輯所有內容。

為了能在locamotion.org上翻譯WordPress,wordpress.pot文件被分散成多個小邏輯單元,其中包括readme.html文件,還包括一個包含所有內容的文件,用戶可將該文件按正常步驟手動添加到PHP文件中。 這里這裡有對WordPress翻譯的相關介紹。

將翻譯結果整合到wordpress.pot正常情況下,翻譯人員可用Pootle 服務器隨時下載自己翻譯的軟件的PO文件,並將下載的文件提交到自己的翻譯項目中。但由於在pootle.locamotion.org上,原始源代碼被分散成多個小單元,翻譯人員不得不手動整合翻譯結果和wordpress.pot文件,之後再將結果提交到WordPress。

  1. 下載官方WordPress POT file
  2. 下載WordPress Continent POT file  (可選操作)
  3. 在本地機器上下載並安裝  Translate Toolkit
  4. 從Pootle 服務器上下載經過翻譯的或部分翻譯的PO文件。可以逐個下載,也可以以ZIP文件形式一次性下載(參見網站上的選項)。一般情況下下載經過翻譯的PO文件無需登錄Pootle。
  5. 首先將PO文件整合到0翻譯記憶中(整合後,之後的操作中只需要處理一個文件),在命令行中執行以下命令:po2tmx -l xx -i pofiles -o xx.tmx,其中xx即你的目標語言代碼。以上操作生成一個名為xx.tmx的TMX翻譯記憶文件。
  6. 接下來根據翻譯記憶文件預翻譯WordPress POT文件。可執行以下命令進行預翻譯:pot2po –tm=xx.tmx -i wordpress.pot -o wordpress_xx.po。該命令為目標語言生成一個PO文件,文件名為wordpress_xx.po。
  7. 最後,在命令行中使用pocount wordpress_xx.po來計算PO文件的字數/字符數,查看有多少內容已經被翻譯,多少內容還沒有翻譯或意義不明。

如果所有PO文件都被100%翻譯了,最終的wordpress_xx.po文件也會被100%翻譯。如果PO文件中有字符串沒有被翻譯,pot2po命令可能會造成wordpress_xx.po文件中的翻譯語句含意模糊(這未必是壞事)。

用poEdit翻譯WordPress

  1. 下載並安裝poEdit
  2. 下載官方WordPress POT file
  3. 在poEdit中打開官方WordPress POT文件
  4. 標註有①的文本框是POT文件中的原始信息(英文)。在標註有②的文本框中添加對①的翻譯,在標註有③和④的文本框中添加對該信息的註釋。與翻譯團隊合作時,可以通過這種方式分享自己對PO文件內容的看法。
  5. 文件 —— 另存為….中將翻譯結果保存為PO文件。
  6. 翻譯完畢後,再次在文件 —— 另存為….中將翻譯結果保存為PO文件。
  7. 也可以點擊文件——優先級,然後在編輯框中點擊保存時自動編譯.mo文件

用KBabel翻譯WordPress

本部分內容不完整。

  1. 下載官方WordPress POT file
  2. 在KBabel中打開文件

用Gettext工具翻譯WordPress

  1. 下載官方WordPress POT file
  2. 在常用的文本編輯器中打開文件
  3. 升級頁頭信息
  4. 翻譯信息
  5. 以.po為擴展名保存文件
  6. msgfmt -o  filename .mo  filename .po

为您推荐

發佈留言

联系我们

联系我们

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部