當(dāng)前位置:首頁>WordPress建站>WordPress開發(fā)>讓W(xué)ordPress主題支持語言本地化

讓W(xué)ordPress主題支持語言本地化

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

讓W(xué)ordPress主題支持語言本地化,主要流程為:讓主題開啟語言本地化功能,然后使用符合WordPress API 規(guī)范的寫法來撰寫需要翻譯的內(nèi)容,接著使用 poedit 生成語言包。下面倡萌將進(jìn)行詳細(xì)講解。

讓主題支持語言包

在主題的 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() 函數(shù)來定義主題的語言路徑,其中包含了兩個(gè)參數(shù),第一個(gè)“wpdaxue”是 textdomain ,第二個(gè)“get_template_directory() . ‘/languages’ ”則指明主題的語言存放路徑為 當(dāng)前主題的 languages 目錄。只要將語言包存放在這個(gè)目錄,就可以生效。

規(guī)范編譯要翻譯的內(nèi)容

要讓你的主題的文本內(nèi)容支持自動(dòng)翻譯,需要你做好規(guī)范符合 WordPress API 的書寫。WordPress常用下面幾個(gè)函數(shù)來包裹需要翻譯的內(nèi)容:

  • __()
  • _e()
  • _x()
  • _ex()
  • _n()

倡萌已經(jīng)介紹過《WordPress翻譯中 __()、_e()、_x、_ex 和 _n 的用法及區(qū)別》,但是在實(shí)際使用中,我們還需要注意以上函數(shù)的末位參數(shù) 。也就是在上一步中,我們通過 load_theme_textdomain() 函數(shù)定義了第一個(gè)參數(shù) $domain 為“wpdaxue”,這個(gè)參數(shù)都需要添加到 __() 等函數(shù)中作為末位參數(shù),它是用來檢索被翻譯字符串的唯一標(biāo)識(shí)符。例如:

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

如果去掉上面代碼 __() 的末位參數(shù)‘wpdaxue’,對(duì)應(yīng)的 ‘Click here to read more’ 的翻譯內(nèi)容就沒辦法正常加載。

使用 POEdit 制作語言包

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

新建編目

點(diǎn)擊 文件 > 新建編目,會(huì)出現(xiàn)如下界面:

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

wpdaxue.com-201304549

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

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

wpdaxue.com-201304550

3.添加“源關(guān)鍵字”,這個(gè)關(guān)鍵字就是要識(shí)別上面的幾個(gè)翻譯函數(shù)。

wpdaxue.com-201304551

需要注意的是,_n、_x 和 _ex 這三個(gè)函數(shù)要添加對(duì)應(yīng)的參數(shù)才能實(shí)現(xiàn)其功能,建議對(duì)應(yīng)的寫法為

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

填寫完以后,點(diǎn)擊“確認(rèn)”,就創(chuàng)建好了編目。

導(dǎo)入需要翻譯的字符串

點(diǎn)擊“更新”按鈕,如果你前面的步驟沒有出錯(cuò)的話,就會(huì)自動(dòng)搜索主題文件中需要翻譯的條目,如下圖:

wpdaxue.com-201304552

翻譯字符串

wpdaxue.com-201304553

翻譯完以后,將語言包保存到主題的語言目錄 languages 中,這里特別要注意語言包的命名。它是使用 Gettext 代碼來命名的,比如中文的 Gettext 語言代碼為 zh ,國別代碼為 CN,所以最終保存的簡(jiǎn)體中文語言包為 zh_CN.po,POEdit 會(huì)自動(dòng)生成一個(gè)名為 zh_CN.mo 的文件。

po 和 mo 的最直接的區(qū)別在于:po文件是給人看的,也是可以直接通過 POEdit 編輯的,mo 文件則是給服務(wù)器識(shí)別的,是用來顯示翻譯內(nèi)容所必需的。也就是說,你的主題語言目錄中,可以沒有po文件,但是必須有mo文件,否則服務(wù)器就沒辦法加載翻譯!

你可以通過下面的鏈接了解更多 Gettext 代碼:

讓W(xué)ordPress識(shí)別語言包

通過上面的步驟,我們已經(jīng)創(chuàng)建好了語言包,那么WordPress如何才能識(shí)別語言包?打開WordPress根目錄下的 wp-config.php 文件,找到 WPLANG,如果這里填入的是 zh_CN ,說明你使用的是簡(jiǎn)體中文版本的 WordPress,那么主題也會(huì)自動(dòng)調(diào)用簡(jiǎn)體中文語言包 zh_CN.mo 。

/**
 * WordPress 語言設(shè)置,中文版本默認(rèn)為中文。
 *
 * 本項(xiàng)設(shè)定能夠讓 WordPress 顯示您需要的語言。
 * wp-content/languages 內(nèi)應(yīng)放置同名的 .mo 語言文件。
 * 要使用 WordPress 簡(jiǎn)體中文界面,只需填入 zh_CN。
 */
define('WPLANG', 'zh_CN');

小結(jié)

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

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
WordPress開發(fā)

WordPress翻譯中 __()、_e()、_x、_ex 和 _n 的用法及區(qū)別

2013-4-14 10:59:42

WordPress開發(fā)

讓W(xué)ordPress插件支持語言本地化

2013-4-19 8:18:25

16 條回復(fù) A文章作者 M管理員
  1. 請(qǐng)問大神,我翻譯了一個(gè)主題,但是該主題自帶的后臺(tái)設(shè)置還是英文的,后臺(tái)設(shè)置在哪里翻譯呢

  2. 我想在我的主題里更改后臺(tái)的語言如何做?
    如:將后臺(tái)的“添加文章”更改為“添加產(chǎn)品”等這種需求??

  3. 這行

  4. 我在主題文件functions.php添加了這個(gè)

    add_action(‘after_setup_theme’, ‘my_theme_setup’);
    function my_theme_setup(){
    load_theme_textdomain(‘lioit’, get_template_directory() . ‘/languages’);
    }
    依據(jù)的是

    _e()的第二個(gè)參數(shù),這樣做對(duì)嗎,
    還有把翻譯好的zh_CN.mo文件放在主題文件下languages,
    還是放在wp-content/language
    怎么那么多地方要放

    • 放到你主題的 languages 目錄

    • gxlztm

      請(qǐng)問倡萌!為什么我下的英文主題包里面的語言文件夾是lang而不是languages呢?

  5. 請(qǐng)問如果主題更新后,漢化文件應(yīng)該如何修改,不可能全部都再重新翻譯一邊吧

    • 如果你的語言包文件 po 設(shè)置了路徑,重新掃描一次文件就可以自動(dòng)添加新的需要漢化的字段,然后只需要翻譯新增的幾個(gè)即可

  6. 還要自己翻譯啊,好麻煩的感覺

  7. 請(qǐng)問,多語言后,后臺(tái)主題設(shè)置有一部分不能實(shí)現(xiàn)翻譯,這是為什么?

  8. 納尼!這Poedit工具也就是找出可以翻譯的詞出來而已?然后還得要一個(gè)一個(gè)自己翻譯?

    • 當(dāng)然了,你不翻譯,誰來翻譯呢,現(xiàn)在的軟件還沒有這么智能準(zhǔn)確的翻譯功能,要不然,世界上就少了做翻譯的人了

  9. 逛逛,學(xué)習(xí)了,正打算翻譯一個(gè)主題。

  10. 主題的設(shè)置如何漢化呢,比如:<h2>Theme Options</h2> 沒有函數(shù)輸出!想漢化yootheme的那款cloud主題!

?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

怀来县| 麻江县| 阜南县| 百色市| 沅江市| 河东区| 珲春市| 四会市| 贵德县| 安陆市| 汕尾市| 江津市| 织金县| 会理县| 家居| 喀喇沁旗| 含山县| 肃南| 密云县| 巴林右旗| 腾冲县| 民丰县| 榕江县| 淮滨县| 玉山县| 盖州市| 玉环县| 二手房| 镇平县| 沛县| 娄烦县| 康保县| 辰溪县| 象山县| 新建县| 磐石市| 彭阳县| 南宁市| 延津县| 宁强县| 蒙山县|