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 ]
| 分类 » 

