blog.TangGaowei.com

Wordpress 的国际化

作者 传说一梦 写于 2008-05-12  | 270 次浏览

Wordpress 是使用 mo 文件进行国际化的。mo 文件是二进制文件,由 po 文件生成。从 po 文件生成 mo 文件,可使用 poEdit 编辑器。用 poEdit 编辑器打开 po 文件后,按 [Ctrl + S] 保存时,就可自动生成同名的 mo 文件。

po 文件是文本文件,可以用记事本、Editplus 等文本编辑器编辑。po 文件的格式类似如下:

1  msgid ""
2  msgstr ""
3  "Project-Id-Version: WP-T-WAP\n"
4  "POT-Creation-Date: \n"
5  "PO-Revision-Date: 2008-05-12 12:14+0800\n"
6  "Last-Translator: tanggaowei <tanggaowei@gmail.com>\n"
7  "Language-Team: TangGaowei.com <tanggaowei@gmail.com>\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-KeywordsList: _e;__\n"
12 "X-Poedit-Basepath: .\n"
13 "X-Poedit-SearchPath-0: .\n"
14
15 #: index.php:57
16 msgid "Last Comments"
17 msgstr "最新评论"
18
19 #: index.php:54
20 msgid "Categories"
21 msgstr "分类"

文件最上面两行可能是定义数据的格式。将 msgid 引号里的内容定义为信息 ID,将 msgstr 引号里的内容定义为 ID 对应的内容。如第 16 行的 "Last Comments" 就是 ID,"最新评论" 翻译成的内容。

第 3 行到第 13 行是文件信息和编辑成 mo 文件要使用的参数。poEdit 的 "设置" 里可设置这部分内容,保存时能自动生成。

第 15 行和第 19 行是注释,不写也可以。注释是为了下次修改时,查看所有使用过此翻译的位置。一定格式的注释能在 poEdit 里直接定位到被翻译的文件位置。

Wordpress 有 4 个方法用于加载 mo 文件到内容,以供页面使用:

1. load_textdomain($domain, $mofile)

$domain - 域名,用于区分其它域的 mo 数据。
$mofile - mo 文件的物理地址,含文件名。

load_textdomain 函数是下面 3 个函数的基础。

2. load_default_textdomain()

用于加载 Wordpress 站点自己使用的 mo 文件。(实际将 $domain 缺省为 ‘default’。)

3. load_plugin_textdomain($domain, $path = false)

$domain - 域名,用于区分其它域的国际化数据。
$path - mo 文件相对于 Wordpress 站点根目录的相对路径,不含文件名。(不一定非得是插件目录,站点的任何目录都可以)

用于加载 Wordpress 插件所使用的 mo 文件。假设 $domain = ‘wap’,Language = ‘zh_CN’,则 mo 文件名应为 wap-zh_CN.mo 。

4. load_theme_textdomain($domain)

$domain - 域名,用于区分其它域的国际化数据。假设 $domain = ‘wap’,Language = ‘zh_CN’,则 mo 文件名应为 zh_CN.mo ,mo 文件的目录为当前模板的目录。

用于加载 Wordpress 模板所使用的 mo 文件。

以上 4 个函数都在 /wp-includes/l10n.php 文件里定义。它们的生命周期都是 Page,也就是当页面加载完时失效,并不是一个页面执行一次,其它页面都可使用。

Language 在 /wp-config.php 文件的 "define (’WPLANG’, ‘zh_CN’);" 行定义。

mo 文件被正确的加载后,就可以在页面里使用这些数据了:

1. 返回值函数

__(’Last Comments’)

返回 load_default_textdomain() 函数加载的, ID 为 ‘Last Comments’ 所对应的数据。如上例,应返回 ‘最新评论’ 。(函数名为 2 个下划线)

__(’Last Comments’, ‘wap’)

返回 ‘wap’ 域中,ID 为 ‘Last Comments’ 所对应的数据。如上例,应返回 ‘最新评论’ 。

2. 输出函数

_e(’Last Comments’)

输出 load_default_textdomain() 函数加载的, ID 为 ‘Last Comments’ 所对应的数据。如上例,应返回 ‘最新评论’ 。

_e(’Last Comments’,'wap’)

输出 ‘wap’ 域中,ID 为 ‘Last Comments’ 所对应的数据。如上例,应返回 ‘最新评论’ 。

[ 标签: 国际化 ]
[ 固定链接:http://blog.tanggaowei.com/2008/05/wordpress-4.html ]

订阅

 

手机访问

http://blog.tanggaowei.com/wap/

Google