黃聰:讓WordPress主題支持語言本地化(使用poedit軟件實現中文翻譯功能)


如果你的WordPress主題要提交到WordPress官方主題庫,使用者來自世界各地的多種語言,那么,你就要讓你的WordPress主題支持語言本地化,方便使用者進行語言翻譯和制作語言包。

讓WordPress主題支持語言本地化,主要流程為:讓主題開啟語言本地化功能,然后使用符合WordPress API 規范的寫法來撰寫需要翻譯的內容,接着使用 poedit 生成語言包。下面倡萌將進行詳細講解。

讓主題支持語言包

在主題的 functions.php 文件添加下面的代碼:

  1. add_action('after_setup_theme', 'my_theme_setup');
  2. function my_theme_setup(){
  3.     load_theme_textdomain('wpdaxue', get_template_directory() . '/languages');
  4. }

該代碼是通過 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”,這個參數都需要添加到 __() 等函數中作為末位參數,它是用來檢索被翻譯字符串的唯一標識符。例如:

  1. <?php  
  2. the_content( __( 'Click here to read more','wpdaxue' ) ); 
  3. ?>

如果去掉上面代碼 __() 的末位參數‘wpdaxue’,對應的 'Click here to read more' 的翻譯內容就沒辦法正常加載。

使用 POEdit 制作語言包

POEdit 是一款非常有用的語言包制作軟件,你可以在 POEdit 官方下載,安裝好以后,就是中文界面了。下面就簡單演示一下操作過程。

新建編目

點擊 文件 > 新建編目,會出現如下界面:

1.在”翻譯屬性”中按照下面的范例添加信息:

wpdaxue.com-201304549

需要注意的是,“語言”就是輸出語言的簡碼,比如簡體中文為 zh_CN (注意大小寫),然后字符集一般選擇 UTF-8,復數形式一般填 nplurals=2; plural=(n!=1); 即可。

2.切換到“源路徑”,由於前面我們創建的語言包路徑為當前主題的 languages 目錄,所以這里我們添加相對路徑 ../ 即可,如下圖:

wpdaxue.com-201304550

3.添加“源關鍵字”,這個關鍵字就是要識別上面的幾個翻譯函數。

wpdaxue.com-201304551

需要注意的是,_n、_x 和 _ex 這三個函數要添加對應的參數才能實現其功能,建議對應的寫法為

  • __
  • _e
  • _n:1,2
  • _x:1,2c
  • _ex:1,2c

填寫完以后,點擊“確認”,就創建好了編目。

導入需要翻譯的字符串

點擊“更新”按鈕,如果你前面的步驟沒有出錯的話,就會自動搜索主題文件中需要翻譯的條目,如下圖:

wpdaxue.com-201304552

翻譯字符串

wpdaxue.com-201304553

翻譯完以后,將語言包保存到主題的語言目錄 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 。

  1. /**
  2.  * WordPress 語言設置,中文版本默認為中文。
  3.  *
  4.  * 本項設定能夠讓 WordPress 顯示您需要的語言。
  5.  * wp-content/languages 內應放置同名的 .mo 語言文件。
  6.  * 要使用 WordPress 簡體中文界面,只需填入 zh_CN。
  7.  */
  8. define('WPLANG', 'zh_CN');

小結

在整個過程中,工作量最大的就是 “規范編譯要翻譯的內容”這個步驟,你必須有耐心,仔細地規范代碼。熟悉 __()、_e()、_x、_ex 和 _n 的不同用法是難點所在。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM