WordPress多語言外掛程式:qTranslate (使用篇)

本文目錄1qTranslate 的優缺點2Qtranslate 安裝和配置2.1STEP1:啟用外掛2.2STEP2:設置語種2.3STEP3:設置默認語言2.4STEP4:設置固定鏈接2.5STEP5:實現主題雙語化2.6STEP6:文章雙語化2.7STEP7: 插入語言切換按鈕3qTranslate 的基本使用方法3.1WP主題站點標題中英化3.2WP主題自定義域中英化3.3WP主題版權信息中英化3.4WP主題菜單欄中英化3.5WP主題圖片/LOGO中英化4相關推薦閱讀

qTranslate 是由華人秦謙開發的一款 WordPress 多語言外掛。其主要功能是通過處理 WordPress 前臺/後臺的過程,實現多語言數據分開編輯、共同存儲於數據庫中,達到真正的多語言 WordPress,並可隨意切換。對於多語言的企業網站開發來說,使用qTranslate 還是比較方便的。

qTranslate 的優缺點

qTranslate 的最大優點是每篇文章都可以為不同語種的文章生成對應的文章鏈接,符合SEO。比如英文的鏈接可以是 ?lang=en 或 /en/foo/ 或 en.yoursite.com ,取決於你的固定鏈接設置。

需要註意的是:qTranslate 不會自動翻譯文章的內容,隻是讓你可以為同一篇文章提供多語種的編輯區域,如下圖所示:

wpdaxue.com-201303377

因為功能上的高度融合,出於兼容性方面考慮,當 WordPress 被升級之後,qTranslate 將被自動禁用,與此同時外掛作者也將迅速發佈與當前最新版本 WordPress 相兼容的 qTranslate 版本。

因為 qTranslate 是將多種語言的數據通過一定的格式經合並後作為一條字符串寫入數據庫的,所以當 qTranslate 外掛被禁用或刪除後,讀者將可能看到非常不滿意的現象:前臺中,各語言的內容同時被顯示出來;後臺文章編輯、文章列表、分類列表中,諸如“<!–:zh–>”此類代碼被裸露瞭出來。因此,在不確定未來是否會棄用 qTranslate 外掛的情況下,筆者也建議謹慎選擇。

Qtranslate 安裝和配置

首先,我說明下教程的測試環境。

1.全新安裝的WordPress站點。默認使用3.5.1主題twentytwelve(2012)

2.安裝完成 Qtranslate 外掛。可以在後臺外掛安裝界面直接搜索 qTranslate 線上安裝,或者在此下載 qTranslate 。

3.測試域名http://www.qt.com/(本地解析而已)

STEP1:啟用外掛

啟用外掛會有Warming提醒,忽略即可。

wpdaxue.com-201303378

STEP2:設置語種

啟用外掛之後,WordPress後臺會自動變成英文版。點擊後臺側欄最底部的中文即可恢復中文版。點擊設置-語言。選擇性地啟用和禁用部分語言。由於外掛的作者是德籍華人,所以默認啟用的語言包括:德語、英語、中文。我把德語禁用掉。

wpdaxue.com-201303379

STEP3:設置默認語言

在一般設置後,將默認語言更換為中文。其他設置保持默認。

wpdaxue.com-201303380

STEP4:設置固定鏈接

此步驟為推薦步驟!

設置固定鏈接,實現WP偽靜態。這樣可以實現http://www.qt.com/en/訪問

wpdaxue.com-201303381

STEP5:實現主題雙語化

現在我們返回前臺看效果。中文版http://www.qt.com/ 英文版http://www.qt.com/en/
從截圖中可以看出,主題的標識語言已經實現雙語化。

wpdaxue.com-201303382

這裡面插入一段小知識:

WordPress默認主題自帶語言,3.5.1版本是將語言文件放置在wp-content/language/theme目錄下。其實這樣的放置方法並不好,我仍喜歡之前版本的放置。所以我將twentytwelve-zh_CN.mo和twentytwelve-zh_CN.po兩個文件更名為zh_CN.mo和zh_CN.po,然後放置到主題目錄的language目錄下。此時如果有其他語言,例如日語,那麼你要復制zh_CN.mo和zh_CN.po一份,重命名為:ja.mo和ja.po,這個文件名可以在設置-語言-編輯處查看。

wpdaxue.com-201303383

現在我們打開twentytwelve主題目錄,打開footer.php,查找一段代碼:

1
<!--?php printf( __( 'Proudly powered by %s', 'twentytwelve' ), 'WordPress' ); ?-->

<!–?php printf( __( ‘Proudly powered by %s’, ‘twentytwelve’ ), ‘WordPress’ ); ?–>

此處Proudly powered by %s即會自動超找語言文件中對應的語言,由於英語是主語言,切換到英文,直接輸出,不需要查找語言文件。如果切換到中文,將對應的中文輸出。

所以,你使用的主題不是WordPress自帶的語言,那麼就要檢查主題是否使用瞭語言文件,沒有的話就需要自行創建。我比較推薦大傢使用默認主題2010修改,這個主題代碼簡潔易讀,非常適合以此為基礎樣版。

STEP6:文章雙語化

文章雙語是最簡單的,打開文章編輯,輸入不同的語言保存即可。看下如下效果。

wpdaxue.com-201303384

wpdaxue.com-201303385

STEP7: 插入語言切換按鈕

將主題語言切換按鈕插入到主題樣版。

QT提供瞭一段代碼。

1
<?php echo qtrans_generateLanguageSelectCode('both'); ?>

<?php echo qtrans_generateLanguageSelectCode(‘both’); ?>

我將這段代碼添加到header.php的描述旁邊,實現的效果如下:

wpdaxue.com-201303386

當然,我隻是隨意添加,至於添加在哪裡視主題而論吧。

qTranslate 的基本使用方法

啟用外掛後,大傢可以發現,添加文章和添加頁面會自動出現中英文標題和中英文正文編輯區域,因此,在寫文章的時候,隻需要手動輸入雙語內容即可。保存後查看數據庫會發現post_content中的內容會自動變更為

1
<!--:zh-->正文內容<!--:--><!--:en-->Content<!--:-->

<!–:zh–>正文內容<!–:–><!–:en–>Content<!–:–>

此處的

1
<!--:zh--><!--:-->

<!–:zh–><!–:–>

標簽即為中英文判斷標記。其中的zh為語言代碼,在Qtranlate後臺中可以自定義,一般中文為zh,英文為en。

除瞭上述的標記外,還可以用簡碼的方式調用:

1
[:zh]正文內容[:en]Content

[:zh]正文內容[:en]Content

由於添加文章、頁面,分類編輯均提供瞭語言編輯區域。因此,不需要再重復添加以上代碼, 系統會自動生成。

完成如上操作後,基本可以實現WP 文章、頁面、分類目錄的雙語化。如何查看效果呢?

假設WP的域名為https://www.wpdaxue.com,英文版隻需更改為http://https://www.wpdaxue.com?lang=en ,也可以使用https://www.wpdaxue.com/en/進行訪問。

WP主題站點標題中英化

由於Qtranslate沒有提供站點標題並沒有提供語言編輯區域,表面上看無法實現雙語化,很多人會想到,隻要在後臺編輯區域的站點標題中將標題手動更改為雙語模式即可。

1
<!--:zh-->站點標題<!--:--><!--:en-->Sitename<!--:-->

<!–:zh–>站點標題<!–:–><!–:en–>Sitename<!–:–>

但實際的調用是並沒有效果,因此,為瞭實現標題雙語化,需要更改兩個地方:

1.將後臺站點標題更改為

1
[:zh]站點標題[:en]Sitename

[:zh]站點標題[:en]Sitename

之所以要改段代碼,是因為大部分標題不支援尖括號輸出,尖括號極容易造成站點XSS。

2.修改主題header.php文件,查找

1
bloginfo( 'name' );

bloginfo( ‘name’ );

將其更改為

1
echo _e(apply_filters(' ', bloginfo( 'name' )));

echo _e(apply_filters(‘ ‘, bloginfo( ‘name’ )));

WP主題自定義域中英化

一般主題不會存在自定義域,但很多WP高級主題需要調用到自定義域,例如酷站導航,我們往往會把酷站的URL填入到一個自定義域,如後在樣版中統一調用。這樣可以簡化我們編輯文章,撰寫html的麻煩。由於我們一般在調用自定義域內容的時候代碼為

1
<?php echo get_post_meta(get_the_ID(), "price", true);?>

<?php echo get_post_meta(get_the_ID(), "price", true);?>

參考之前標題中英化,可以將上述代碼更改為:

1
<?php echo _e(apply_filters(' ', _(get_post_meta($post->ID, 'price', true)))); ?>

<?php echo _e(apply_filters(‘ ‘, _(get_post_meta($post->ID, ‘price’, true)))); ?>

WP主題版權信息中英化

為瞭省去版權信息編輯後臺化的麻煩,我們喜歡在主題footer.php裡面直接寫入版權信息,因此,在實際調用中我們會寫道類似代碼:

1
2
3
<div id="colophon">
<span style="font-family:arial;">©</span> 2012-2013 WordPress大學 版權所有
</div>

<div id="colophon">
<span style="font-family:arial;">©</span> 2012-2013 WordPress大學 版權所有
</div>

此時的杭州XXXXX有限公司 版權所有 雙語化,可以更改為如下代碼:

1
2
3
<div id="colophon">
<span style="font-family:arial;">©</span> 2012-2013 <?php _e("<!--:zh-->WordPress大學 版權所有<!--:--><!--:en-->WPdaxue.com All Rights Reserved.<!--:-->");?>
</div>

<div id="colophon">
<span style="font-family:arial;">©</span> 2012-2013 <?php _e("<!–:zh–>WordPress大學 版權所有<!–:–><!–:en–>WPdaxue.com All Rights Reserved.<!–:–>");?>
</div>

根據以上的案例,如果主題中存在類似的中文信息,均可以使用該思路進行雙語化。

WP主題菜單欄中英化

由於WP默認主題twentyten提供瞭菜單選項,我們可以自由地將頁面、文章分類添加到菜單欄。根據之前提及的頁面、分類中英化,菜單欄中的所有已知頁面和分類均會自動切換中英文。我們的習慣會將首頁放置在菜單欄中,一般情況下,我們會將首頁做為一個自定義連接添加到菜單欄,此時出現的問題是:名稱可以使用[:zh]和[:en]區分,但是鏈接怎麼改都不行。

百般無奈隻下,我隻能手動將首頁鏈接添加到主題模版。為瞭讓頁面自動判斷中英為,可以使用如下代碼:

1
<ul><li><a href="<?php bloginfo('url');?>"><?php _e("<!--:zh-->首頁<!--:--><!--:en-->Home<!--:-->");?></a></li></ul>

<ul><li><a href="<?php bloginfo(‘url’);?>"><?php _e("<!–:zh–>首頁<!–:–><!–:en–>Home<!–:–>");?></a></li></ul>

WP主題圖片/LOGO中英化

上一節中的代碼得益於WP自帶函數bloginfo(‘url’),但是

1
<!--:zh-->首頁<!--:--><!--:en-->Home<!--:-->

<!–:zh–>首頁<!–:–><!–:en–>Home<!–:–>

中無法直接填寫img代碼,所以,隻能考慮判斷當前頁面的語言屬性,代碼如下:

1
2
3
4
5
6
<?php if(qtrans_getLanguage()=='zh'): ?>
	<img src="<?php bloginfo('template_url')>/images/logo_zh.png" />
<?php endif; ?>
<?php if(qtrans_getLanguage()=='en'): ?>
	<img src="<?php bloginfo('template_url')>/images/logo_en.png" />
<?php endif; ?>

<?php if(qtrans_getLanguage()==’zh’): ?>
<img src="<?php bloginfo(‘template_url’)>/images/logo_zh.png" />
<?php endif; ?>
<?php if(qtrans_getLanguage()==’en’): ?>
<img src="<?php bloginfo(‘template_url’)>/images/logo_en.png" />
<?php endif; ?>

參考資料:http://www.6666.so/tag/qtranslate

相關推薦閱讀

WordPress多語言外掛:qTranslate (開發篇)

Qtranslate FAQ

Qtranslate 支援論壇

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *