Poedit Pro(舊稱poEdit)是一個免費(專業版收費)、開源及跨平臺的gettext類(.po 格式,應用程式里采用了gettext來作程式的國際化)國際化翻譯編輯器,也是同類型軟件中最廣泛使用的一個。現時它不論在 Unix+GTK 或 Windows平臺 配合 wxWidgets 均有相關版本,并以MIT許可證釋出。
PoEdit常用來漢化各種程序,它內置于wxWidgets工具中,可以在所有它支持的平臺上運行,如Unix下的GTK+以及Windows。PoEdit提供更方便的辦法編輯目錄,而不用通過啟動VI文本編輯器,手動編輯。
從POT更新PO文件
如果你翻譯完成一個PO文件后,使用此PO文件的程序升級了,此時新的程序中可能包含了原來PO文件中沒有的詞匯條目,也可能以前的詞匯條目在新程序中不再使用了,怎么更新呢?
一種方法是自己從新程序中提取PO文件,另一種方法是使用POT文件自動更新。
一般程序作者提供了POT文件(有的是PO為后綴名,需要手動修改為POT后綴名),它包含了最新的詞匯條目供你更新使用。微軟Office PowerPoint的模板文件后綴名也是POT,注意別搞錯了。
在PoEdit菜單欄中,選擇“條目》從POT文件更新……”,選擇最新的POT文件就可以了更新了。
利用TM(翻譯詞庫)
比如翻譯Wordpress的一個插件的PO文件,由于專業術語一般都相關或相同,因此這個PO文件中有很多詞匯可能已經被翻譯過了,比如在wordpress 自身或者其他插件或主題的zh_CN.po文件中。利用PoEdit的TM(Translation Memory)功能,可以利用前輩的翻譯成果而不用從頭開始。
先搜集一些與你要翻譯的程序相關的已經翻譯好的MO文件,TM利用的是MO而不是PO。
首先在PoEdit中創建翻譯詞庫。
1、在PoEdit 菜單欄中,選擇“文件》首選”,打開“首選”對話框,選擇“翻譯詞庫”面板,如下圖所示。
2、點擊“添加”按鈕,添加語言“zh(Chinese)”后,如上圖所示,“我的語言”中出現了“zh”。
3、“到DB的路徑”可以保持默認,這是PoEdit創建的翻譯詞庫的保存位置,如果有必要可以備份它。
4、點擊“產生數據庫”按鈕,打開“更新翻譯詞庫”的對話框,如下圖所示。
5、在此對話框中,點擊“添加文件”按鈕,選擇你搜集的MO文件存放的位置,PoEdit會自動搜索MO文件并列出,點擊“下一個”按鈕,將會生成翻譯詞庫。到此,翻譯詞庫就創建好了,以后你還可以通過這種方式更新補充翻譯詞庫。
如何使用翻譯詞庫,很簡單。
打開一個需要翻譯的PO文件,然后在PoEdit菜單欄中選擇“類目》使用TM自動翻譯”,PoEdit就會自動從翻譯詞庫中提取精確匹配或模糊匹配的翻譯。模糊匹配的翻譯一般是粗體顯示,可以用“CTRL+U”確定,也可以用鼠標右鍵選擇恰當的翻譯。
單數和復數的問題
INTEGER 表示單復數變化形式的數量,其值是一個正整數。中、日、韓文里沒有單復數區分,也就是說單復數變化形式只有一種, 所以 nplurals=1,英文單復數有兩種表現形式,所以 nplurals=2; EXPRESSION 表示對第幾種單復數變化取相應的第幾種譯文,其值是一個標準的 C 語言表達式。如果有四種單復數變化,這個 表達式的值將包括 0、1、2、3,分別對應于譯文 msgstr[0]、msgstr[1]、msgstr[2]、msgstr[3]。所以,有時這個表達式相當復雜。 在漢語里,只需 plural=0,譯文只要保留 msgstr[0] 即可。
使用快捷鍵
翻譯是個體力活兒,使用快捷鍵絕對可以提高效率。
(1)使用“ALT+U”,可以確認模糊的翻譯。
(2)使用“ALT+C”,可以將需翻譯的條目拷貝到翻譯欄中。
(3)使用“CTRL+F”,可以查找匹配的文字。
使用查找功能
要善于使用查找功能,也能提高效率。可以直接在程序界面中拷貝需要翻譯的文字,然后在PoEdit中查找相關文字。PO文件中的詞匯條目是按照先按照程序源文件,其次是源文件中的位置排序的。如果某個詞匯不知道在哪兒,一般情況下與其前后的詞匯是在同一個文件中,也就可能在同一個界面中。
一般情況下,選擇“在原文中查找”和“在譯文中查找”就行了。
查看程序文件
翻譯某些詞匯時,由于脫離了語義環境,可能不知道如何翻譯。除了直接在界面中查看相關詞匯外,還可以查看詞匯所在的源程序文件。
使用Poedit漢化wordpress主題和插件
眾所周知,WordPress是國際互聯網上非常流行的一個開源博客/CMS程序。許多來自不同國家的網站主都在使用WordPress,因此WordPress也提供了強大的國際化功能以支持各種不同的語言和文字。不過很多時候,WordPress官方自身的本地化翻譯并不能盡如人意,一些開發者為WordPress開發的主題和插件在國際化方面也并不完善。在中國,我們使用的很多WordPress主題和插件都是國外的開發人員開發的,這些主題和插件大多都沒有實現漢化或者不夠完善,這個時候就需要我們自己來完成最后的漢化工作。
WordPress采用GNU gettext來實現國際化。作為使用者,我們不必深究其底層實現,只需要知道在WordPress中如何實現國際化即可。
在WordPress中,一般使用函數__()和_e()來標識需要翻譯的地方。以漢化英文主題為例,我們如果想要將英文「hello」翻譯并顯示為中文「你好」,我們只需要在對應顯示的地方編寫如下代碼即可:
<?phpecho __('hello', 'Codex');//Codex為對應主題或插件的名稱,如果是WordPress內部模塊,則第二個參數可以省略。?>
函數__($text, $domain)
和_e($text, $domain)
都是WordPress的國際化翻譯函數,不過前者__()是返回翻譯后的字符串,后者_e()則是直接輸出(echo)翻譯后的內容。 一般情況下,主題的名稱會在主題的簡介說明中指出,并且主題的文件夾名稱即是主題名稱。此外,你還可以查看當前主題文件夾下的functions.php文件,其中大多都會包含如下語句:
load_theme_textdomain( 'Codex', get_template_directory() . '/languages' );
其中,Codex即是當前主題的名稱,后面的get_template_directory().'/languages'
指定主題的翻譯字典文件存放目錄。get_template_directory()表示獲取當前主題或插件的根目錄,因此上面的代碼指的就是主題或插件目錄下的languages文件夾。
除此之外,我們還需要編寫對應的翻譯字典文件,否則WordPress怎么知道要將「hello」翻譯成什么樣的中文呢。翻譯字典文件中記錄的其實是一對對翻譯前與翻譯后的文字映射,WordPress中的翻譯字典文件后綴為.po。.po文件是翻譯字典的源文件,我們還要使用工具將其編譯成供正式運行使用的.mo文件。翻譯字典的文件名稱一般都根據本地化語言命名(或以其為后綴)。例如:簡體中文的翻譯字典文件為zh_CN.po、zh_CN.mo;繁體中文(臺灣地區)的翻譯字典為zh_TW.po、zh_TW.mo;英文(美國)的翻譯字典為en_US.po、en_US.mo……這樣WordPress就能夠根據當前用戶的國家語言將網站內容顯示為對應的中文簡體、繁體或其他語言文字。
想要方便快捷地制作翻譯字典文件,我們就需要用到Poedit了。Poedit是一款開源、免費、跨平臺的gettext類(.po文件)國際化翻譯編輯器,也是同類型軟件中使用最廣泛的一個。
首先,我們需要下載并安裝Poedit,Poedit的官網下載地址是http://www.poedit.net/download.php。Poedit的安裝非常簡單,也沒有什么需要特別注意的,在此就不再贅述。
接著,我們打開安裝好的Poedit,點擊菜單【文件】——【新建編目】。
此時將會彈出如下的編目屬性窗口,根據自身實際情況填寫對應的表單內容(大部分內容可以留空)
值得注意的是,表單「復數形式」默認可以不填寫,但是如果需要翻譯的文字中有復數形式的話,可能導致程序出錯。因此建議將復數形式填寫為:
nplurals=2; plural=(n != 1);
接著,切換到編目屬性的源路徑選項卡,如下圖所示:
在基礎路徑文本框中,一般填入「.」即可,表示當前目錄及其子目錄。不過有些時候,由于路徑問題,Poedit可能無法正確找到指定的目錄,這個時候就需要為Poedit手動指定需要提取翻譯內容的目錄。例如,這里我想要將主題epublishing進行漢化,就手動輸入epublishing主題的本地路徑D:/PHP/CodePlayer/wp-content/themes/epublishing(路徑只需要輸入編輯時的本地路徑即可,即使上傳到服務器后路徑發生改變也不會產生影響。)
最后,切換到編目屬性的「源關鍵字」選項卡,如下圖所示:
這里的關鍵字就填寫我們在WordPress中用于國際化翻譯的函數__
和_e
。 這樣,Poedit就會自動在我們指定路徑下(例如上面的epublishing)的所有文件中查找函數__
和_e
包含的文字,并在左側列出。
這個時候,我們要做的就是根據左側列出的源文本內容,逐行輸入翻譯后的結果。翻譯完畢后點擊菜單欄的【保存】按鈕,我們就成功制作出了可以漢化WordPress指定主題或插件的zh_CN.po和zh_CN.mo文件。將這兩個文件放入對應主題或插件的語言目錄,我們的主題或插件的漢化工作就完成了。
以前面的__('hello', 'Codex')
為例,如果WordPress找不到任何對應的翻譯,那么WordPress將直接輸出待翻譯的內容(即「hello」)。
新聞熱點
疑難解答
圖片精選