在CakePHP 1.2中实现多语言支持-i18n和L10n 的使用简述 - IDC资讯网_站长学院 - Java PHP Flex Python Ajax CSS 编程 开源 学习 总结 分享
CakePHP 1.2 中新增了对 i18n 和 L10n 的支持。实现的方式是采用了php的 gettext。目前还没有文档说明如何来使用 i18n 和 L10n,恰好我最新的一个项目要用到,所以就说一下最基本的用法。

用户定义的本地化语言文件位于 app/locale 目录下。默认只有一个 eng 目录,也就是英语。
1). 新建语言文件。在 app/locale 下依次新建 /zh_cn/LC_MESSAGES/ 目录,在其下新建 default.po 文件。最终的路径为:app/locale/zh_cn/LC_MESSAGES/default.po 。再在 /eng/LC_MESSAGES 目录下也新建一个 default.po 文件。特别注意,这2个 .po 文件都应该是 utf-8 编码。

2). 打开 app/locale/eng/LC_MESSAGES/default.po ,写入以下代码:
msgid "Hello China"
msgstr "Hello China"

打开 app/locale/zh_cn/LC_MESSAGES/default.po ,写入以下代码:
msgid "Hello China"
msgstr "你好,中国"

3). 打开任意一个 view 文件,加入以下PHP代码:

__('Hello China');
// 如果系统语言为中文,则输出“你好中国”;系统语言为英文或其他语言,则默认输出“Hello China”
 

"__()"函数是 L10n 输出函数(具体可以查看 cakep/basics.php)。如果写作

__('Hello China',true)
 

则函数只返回翻译后的字符,不会有任何输出。

4). 完成。现在打开页面,即可看见页面输出“你好中国”。如果系统在eng和zh_cn的语言包里都找不到名为 “Hello China” 的msgid,则会将 __(’string’) 函数中的 string 直接输出。

其他提示:

1. 系统是根据 HTTP_ACCEPT_LANGUAGE 自动判别该翻译为何种语言。如果要手动指定语言,比如要指定翻译为德语,可以在 controller 中加入如下代码:

$language = 'deu'; // 要翻译为何种语言
Configure::write('Config.language', $language);
// $this->Session->write('Config.language', $language); // 或者是这句
 

2. cake/basics.php 中包含了多个L10n输出函数,可以详细查阅按需运用。

转载自:http://blog.csdn.net/httpnet/archive/2007/05/30/1630690.aspx
编程语言 | 评论(0) | 引用(0) | 阅读(6280)