在CakePHP 1.2 中实现多语言支持——i18n 和 L10n 的使用简述

本文转自: http://www.phpframework.cn/archives/8/%e5%9c%a8cakephp-12-%e4%b8%ad%e5%ae%9e%e7%8e%b0%e5%a4%9a%e8%af%ad%e8%a8%80%e6%94%af%e6%8c%81%e2%80%94%e2%80%94i18n-%e5%92%8c-l10n-%e7%9a%84%e4%bd%bf%e7%94%a8%e7%ae%80%e8%bf%b0/

转载时请注明

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输出函数,可以详细查阅按需运用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值