如果你的WordPress主題要提交到WordPress官方主題庫,使用者來自世界各地的多種語言,那么,你就要讓你的WordPress主題支持語言本地化,方便使用者進行語言翻譯和制作語言包。
讓WordPress主題支持語言本地化,主要流程為:讓主題開啟語言本地化功能,然后使用符合WordPress API 規范的寫法來撰寫需要翻譯的內容,接着使用 poedit 生成語言包。下面倡萌將進行詳細講解。
讓主題支持語言包
在主題的 functions.php 文件添加下面的代碼:
-
add_action('after_setup_theme', 'my_theme_setup'); -
function my_theme_setup(){ -
load_theme_textdomain('wpdaxue', get_template_directory() . '/languages'); -
}
該代碼是通過 load_theme_textdomain() 函數來定義主題的語言路徑,其中包含了兩個參數,第一個“wpdaxue”是 textdomain ,第二個“get_template_directory() . '/languages' ”則指明主題的語言存放路徑為 當前主題的 languages 目錄。只要將語言包存放在這個目錄,就可以生效。
規范編譯要翻譯的內容
要讓你的主題的文本內容支持自動翻譯,需要你做好規范符合 WordPress API 的書寫。WordPress常用下面幾個函數來包裹需要翻譯的內容:
__()_e()_x()_ex()_n()
倡萌已經介紹過《WordPress翻譯中 __()、_e()、_x、_ex 和 _n 的用法及區別》,但是在實際使用中,我們還需要注意以上函數的末位參數 。也就是在上一步中,我們通過 load_theme_textdomain() 函數定義了第一個參數 $domain 為“wpdaxue”,這個參數都需要添加到 __() 等函數中作為末位參數,它是用來檢索被翻譯字符串的唯一標識符。例如:
-
<?php -
the_content( __( 'Click here to read more','wpdaxue' ) ); -
?>
如果去掉上面代碼 __() 的末位參數‘wpdaxue’,對應的 'Click here to read more' 的翻譯內容就沒辦法正常加載。
使用 POEdit 制作語言包
POEdit 是一款非常有用的語言包制作軟件,你可以在 POEdit 官方下載,安裝好以后,就是中文界面了。下面就簡單演示一下操作過程。
新建編目
點擊 文件 > 新建編目,會出現如下界面:
1.在”翻譯屬性”中按照下面的范例添加信息:
需要注意的是,“語言”就是輸出語言的簡碼,比如簡體中文為 zh_CN (注意大小寫),然后字符集一般選擇 UTF-8,復數形式一般填 nplurals=2; plural=(n!=1); 即可。
2.切換到“源路徑”,由於前面我們創建的語言包路徑為當前主題的 languages 目錄,所以這里我們添加相對路徑 ../ 即可,如下圖:
3.添加“源關鍵字”,這個關鍵字就是要識別上面的幾個翻譯函數。
需要注意的是,_n、_x 和 _ex 這三個函數要添加對應的參數才能實現其功能,建議對應的寫法為
- __
- _e
- _n:1,2
- _x:1,2c
- _ex:1,2c
填寫完以后,點擊“確認”,就創建好了編目。
導入需要翻譯的字符串
點擊“更新”按鈕,如果你前面的步驟沒有出錯的話,就會自動搜索主題文件中需要翻譯的條目,如下圖:
翻譯字符串
翻譯完以后,將語言包保存到主題的語言目錄 languages 中,這里特別要注意語言包的命名。它是使用 Gettext 代碼來命名的,比如中文的 Gettext 語言代碼為 zh ,國別代碼為 CN,所以最終保存的簡體中文語言包為 zh_CN.po,POEdit 會自動生成一個名為 zh_CN.mo 的文件。
po 和 mo 的最直接的區別在於:po文件是給人看的,也是可以直接通過 POEdit 編輯的,mo 文件則是給服務器識別的,是用來顯示翻譯內容所必需的。也就是說,你的主題語言目錄中,可以沒有po文件,但是必須有mo文件,否則服務器就沒辦法加載翻譯!
你可以通過下面的鏈接了解更多 Gettext 代碼:
讓WordPress識別語言包
通過上面的步驟,我們已經創建好了語言包,那么WordPress如何才能識別語言包?打開WordPress根目錄下的 wp-config.php 文件,找到 WPLANG,如果這里填入的是 zh_CN ,說明你使用的是簡體中文版本的 WordPress,那么主題也會自動調用簡體中文語言包 zh_CN.mo 。
-
/** -
* WordPress 語言設置,中文版本默認為中文。 -
* -
* 本項設定能夠讓 WordPress 顯示您需要的語言。 -
* wp-content/languages 內應放置同名的 .mo 語言文件。 -
* 要使用 WordPress 簡體中文界面,只需填入 zh_CN。 -
*/ -
define('WPLANG', 'zh_CN');
小結
在整個過程中,工作量最大的就是 “規范編譯要翻譯的內容”這個步驟,你必須有耐心,仔細地規范代碼。熟悉 __()、_e()、_x、_ex 和 _n 的不同用法是難點所在。





