[Wordpress] Multi Language Theme

在裝 Wordpress 的同時,如果要中文化大家都會知道要在建立

CODE:
  1. $WP_HOME/wp-includes/languages

然後把 zh_TW.po 以及 zh_TW.mo 丟進去
接著在 wp-config.php 寫入

PHP:
  1. define ('WPLANG', 'zh_TW');

就會變成中文化的 Wordpress

可是很多人沒有想到,是否可以把這樣的語系也套用到 Theme 上
今天我就教大家如何簡單的把 Wordpress 2.1.3 的 Default Theme 的全中文化
進而透過這個例子把中文化 地區化的語系套用在你的其他 Theme

首先 編輯一下

CODE:
  1. $WP_HOME/wp-content/themes/default/index.php

加入

PHP:
  1. <?php load_theme_textdomain('theme_default'); ?>

這樣基本上,這個 Theme 就會讀取 zh_TW.mo 的語系資訊了
你的Theme 專用的 zh_TW.mo 要放在

CODE:
  1. $WP_HOME/wp-content/themes/default/zh_TW.mo

大概的 zh_TW.po 內容會是這樣 ( 在 Linux 上可以用 msgfmt zh_TW.po -o zh_TW.mo 去製作 mo file )

CODE:
  1. msgid ""
  2. msgstr ""
  3. "Project-Id-Version: 1.0\n"
  4. "POT-Creation-Date: \n"
  5. "PO-Revision-Date: 2007-04-20 19:06+0800\n"
  6. "Last-Translator: Nickolas Chen (Chen, Ming-Te) <nickolas.c@gmail.com>\n"
  7. "Language-Team: \n"
  8. "MIME-Version: 1.0\n"
  9. "Content-Type: text/plain; charset=utf-8\n"
  10. "Content-Transfer-Encoding: 8bit\n"
  11. "X-Poedit-Language: Chinese\n"
  12. "X-Poedit-Country: TAIWAN\n"
  13. "X-Poedit-SourceCharset: utf-8\n"
  14.  
  15. #: index.php:15
  16. msgid "Read the rest of this entry &raquo;"
  17. msgstr "繼續閱讀 &raquo;"
  18.  
  19. #: index.php:18
  20. msgid "Edit"
  21. msgstr "編輯"
  22.  
  23. #: sidebar.php:41
  24. msgid "title_li=<h2>Pages</h2>"
  25. msgstr "title_li=<h2>分頁</h2>"
  26.  
  27. #: sidebar.php:43
  28. msgid "Archives"
  29. msgstr "文章彙整"
  30.  
  31. #: sidebar.php:54
  32. msgid "Meta"
  33. msgstr "站務"

從上面的 po 內容
你大概可以知道 po mo 紀錄的東西
要先找到要本地化的程式碼的特定行的特定訊息才有辦法轉換

最後一步就是讓 Wordpress 讀到 mo po 以後
用它支援的 Function 去做到本地化
Wordpress 支援兩種指令去作訊息轉換
以下用範例解釋 (第一行都是沒有用指令, 第二行是用了指令後)

(1)

PHP:
  1. <?php edit_post_link('Edit', ''); ?>
  2. <?php edit_post_link(__('Edit',theme_default), ''); ?>

(2)

PHP:
  1. <h2>Archives</h2>
  2. <h2><?php _e('Archives', 'theme_default') ?></h2>

第一個例子用了到 Wordpress 的 Function __($msg,$domain)
第二個例子用了到 Wordpress 的 Function _e($msg,$domain)
$domain 是 load_theme_textdomain 的時候附加的 parameter
$msg 是 你要 Localization 的訊息 

呼,
歷經
1. 讀取 mo file
2. mo file 的內容
3. 本地化指令值入
你是不是比較清楚了呢?

Leave a Reply

It sounds like SK2 has recently been updated on this blog. But not fully configured. You MUST visit Spam Karma's admin page at least once before letting it filter your comments (chaos may ensue otherwise).