不止 WordPress ,包括很多桌面應用程序都是是依靠 po 文件或 mo 文件來實現多語言版本。
一般國外的 wordpress 模板,本身包含語言包文件,您可以在 lang 或者language 文件夾中查找是否存在以.po、.pot 的文件,如果模板中存在以.po、.pot 的文件,我們可以使用 Poedit 軟件直接打開對其進行翻譯。複製其中的 en_US.po 文件,然後粘貼到同一文件夾,並命名為 zh_CN.po,然後使用 Poedit 軟件直接打開對其進行翻譯。
工具-PoEdit(po文件編輯器)
PoEdit:PoEdit是一款.po文件編輯器,PO即Portable Object,可跨平台對象的意思,PoEdit常用來漢化各種程序,它內置於wxWidgets工具中,可以在所有它支持的平台上運行,如Unix下的GTK+以及Windows。PoEdit提供更方便的辦法編輯目錄,而不用通過啟動VI文本編輯器,手動編輯。
文件簡介
.po文件,.mo文件,.pot文件是由gettext程序生成或者使用的源代碼和編譯結果。其中:
pot文件:是一種模板文件,其實質與.po文件一樣,其中包含了從源代碼中提取所有的翻譯字符串的列表,主要提供給翻譯人員使用。
注意:主要讀取的是mo文件,po文件可以不拷貝過來。
po文件(zh_CN.po)
(1)用程序msginit來分析pot文件,生成各語言對應的po文件,比如中文就是zh_CN.po,法語就是fr.po文件。(2)PO是Portable Object(可移植對象)的縮寫形式,它是面向翻譯人員的、提取於源代碼的一種資源文件。(3).po文件可以用任何編輯器如poEdit,vi,Emacs,editplus打開,交給翻譯人員來將其中的文字翻譯成本國語言。
mo文件(zh_CN.mo)
(1)用msgfmt將.po文件編譯成mo文件,這是一個二進制文件,不能直接編輯。(2)MO是Machine Object(機器對象)的縮寫形式,它是面向計算機的、由.po文件通過GNU gettext工具包編譯而成的二進制文件,應用程序通過讀取.mo文件使自身的界面轉換成用戶使用的語言,如簡體中文。(3)可以用工具如msgunfmt命令將.mo文件反編譯為.po文件。
關於gettext,在文章末尾有介紹。
什麼是po文件:PO即Portable Object
mo文件:
default.pot文件:
en.po文件:
【百度】Poedit
【下載地址】https://poedit.net/download
假設主題名為「mywptheme」
在目錄mywpthem->languages下,找到如下文件
mywptheme.pot
說明:
多語言支持
定義一個domain(自帶2021主題):
/*
* Make theme available for translation.
* Translations can be filed in the /languages/ directory.
* If you're building a theme based on Twenty Twenty-One, use a find and replace
* to change 'twentytwentyone' to the name of your theme in all the template files.
*/
load_theme_textdomain( 'twentytwentyone', get_template_directory() . '/languages' );
說明:
1、如上代碼一般放在主題的啟動函數中,或如下:
function theme_init() {
load_theme_textdomain($domain, $path);
}
add_action (『init』, 』theme_init』);
2、$domain:翻譯中的唯一標識符,如「twentytwentyone」,對應後面的__( 'Newer Comments →', 'twentytwentyone' );
3、$path:為模板中翻譯語言包的路徑,一般會放在模板中的 language 或者lang 文件夾中保存。
3、至此網站前台或者後台仍然不顯示為中文,那麼請檢查一下網站根目錄下的 wp-config.php 文件,找到「define (『WPLANG』, 」)」處,並將其改寫為「define (『WPLANG』, 『zh_CN』);」,那麼網站將會顯示為您漢化的中文語言了。
內置的語言函數
WordPress 內置的語言函數,__()、_e()、_x(),這裡我們可以直接修改這裡語言函數內的英文部分,將其翻譯為中文,就完成了漢化工作。
舉例1:
$slider_default['slider1'] = array(
'onepage_slider_trans' => 'horizontal',
'onepage_slider_image' => ONEPAGE_DIR_URI . "assets/images/1.jpg",
'onepage_slider_heading' => __( 'Best One Page WordPress Theme', 'one-page' ),
'onepage_slider_subheading' => __( 'Give Your Business Website A New Shape.', 'one-page' ),
'onepage_slider_button_link' => '#',
'onepage_slider_button_text' => __( 'Create Your Website!', 'one-page' ),
'onepage_slider_overlay' => 'rgba(29, 105, 165, 0.82)',
);
舉例2:
<p class="xxx"><?php _e( '404 ERROR', 'mywptheme' ); ?></p>
<p class="yyy"><?php _e( 'This is somewhat embarrassing, isn』t it?', 'mywptheme' ); ?></p>
「_e」 是wordpress的自定義的內置函數,顯示 translate()返回的被翻譯過的內容 注意,並非php原生函數,所以你在網絡上找不到。
內置翻譯的函數設置,一般在【wp-includes目錄下110n.php】文件中定義。
若您在欣賞自己的漢化作品時發現某一些地方仍然不是很完美,唯一的原因便是 Poedit 軟件沒有查找到,或者說需要翻譯的部分並沒有使用「__」或者「_e」函數來規範。那麼您可以使用 Dreamweaver 軟件對站點目錄下的文件進行查找需要漢化的部分。然後使用函數「__」或者「_e」規範或者直接修改。
關於GUN
【關於GNU,Gettext國別代碼:】http://www.gnu.org/software/gettext/manual/gettext.html#Country-Codes
如何使用Poedit將mo文件反編譯(轉換)為po文件
有些主題和插件的翻譯不好,想重新翻譯,但是可能原項目不帶po文件,這時候需要用Poedit把mo文件反編譯為po文件。
1.將需要反編譯的mo文件放在某個盤的根目錄下,比如F:\a.mo
,備用;
2.Win+R
或者點擊開始->運行,然後輸入cmd
;
3.假如你的Poedit是安裝在D盤的,安裝位置是:D:\Program Files (x86)\Poedit
;
4.在DOS窗口輸入D: 然後回車
;
5.在DOS窗口輸入cd加一個空格
,然後輸入或者右鍵粘貼Program Files (x86)\Poedit\GettextTools\bin\
;
6.
來到F盤根目錄下,你會看到a.po文件已經存在了:
【】http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/09/2131908.html
【】http://teliute.laxjyj.com/TeacHtm/TePoedit/index.html
如何有效率的漢化wordpress主題:http://jingyan.baidu.com/article/90bc8fc87b72e3f653640cee.html
wordpress語言文件.po.pot.mo簡介及漢化:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/09/2131908.html
在主題中加入本地化編譯函數請閱讀上一篇教程:
查看wordpress主題語言包系列教程:
wordpress主題語言包(一):前言
wordpress主題語言包(二):在Wordpress主題中加入本地化編譯函數
wordpress主題語言包(三):使用POEdit製作wordpress主題語言包
wordpress主題語言包(四):wordpress主題調用語言包