修改 WordPress 中文翻譯

.2015-04-24 新增 gettext_with_context 在 add_filter,修正一些字沒有被修改問題
.2015-04-24 新增外掛方法於文末

雖然 WordPress 的文章不是主要這個網誌要寫的內容,不過因為覺得還蠻實用的,順便也給自己記錄一下。主要會想改的中文翻譯是:迴響 (改為留言),還有前、後這兩個字 (改為前一篇文章、後一篇文章,原先這兩個字會位於文章底部,前後篇文章的連結)。

然而網路上比較常見的是修改 .PO 檔,然後再用 Poedit 來匯出 .MO 檔給 WordPress。不過很快今天早上就遇到問題了:問題在於今早 WordPress 更新了 4.1.2 版,中文版的翻譯也有更新,所以又必須手動改一次 .PO 檔,然後匯出成 .MO 檔,一次需要改的 .PO 檔是六個,如果每次更新都要這樣再來一次,可能真的會受不了。

網路上有人提供用 PHP 的方式來修改 (新增程式在 /wp-includes/function.php),我也是用這個方法。雖然之後 WordPress 更新有可能會動到 function.php 這隻檔案,但是改一隻總比改六隻,還要匯出來的方便。以下就是修改的方法:

開啟 /wp-includes/function.php,然後在裡面隨便一個地方加入以下 PHP 程式碼:

function change_translate_text( $translated ) {
$text = array(
'迴響' => '留言',
'前' => '前一篇文章',
'後' => '後一篇文章',
);
$translated = str_ireplace( array_keys($text), $text, $translated );
return $translated;
}
add_filter( 'gettext', 'change_translate_text', 20 );
add_filter( 'gettext_with_context', 'change_translate_text', 20 );

如果你修改完發現 Critical Error,可能還需要更改根目錄下的 wp-settings.php,搜尋 require( ABSPATH . WPINC . '/functions.php' ); 然後把它放到 require( ABSPATH . WPINC . '/plugin.php' ); 之後,所以程式碼會像下面這樣子。

require( ABSPATH . WPINC . '/plugin.php' );
require( ABSPATH . WPINC . '/functions.php' );

以上就完成整個 WordPress 中文翻譯的修改。如果還有更好的方法,也歡迎隨時留言討論。

來源:RonAngelo

--
2015-04-24 更新
由於每次 WordPress 更新都要動到這兩隻檔案,覺得有點麻煩,所以就改為外掛的模式。如果你有需要此外掛,則可以前往這邊下載,然後解壓縮後,將整個資料夾上傳至 wp-content/plugins 下,接著在後台 > 外掛 > 將 Custom Translation 啟用即可。

預設是會將迴響變更成留言,前變更為前一篇文章,後變更為後一篇文章。如果你有要更改要翻譯的文字,請更改 custom_translation.php 檔案中,$text 陣列裡的字串,如下方範例:

$text = array(
'迴響' => '留言',
'前' => '前一篇文章',
'後' => '後一篇文章',
);

外掛名稱:Custom Translation
下載網址:點我下載

發表留言

你的電子郵件位址並不會被公開。 必要欄位標記為 *

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>