如果你的项目想要支持多语言版本,那么就需要用到 Zend_Translate。通过google搜索了一些帮助文档,除了需要Zend_Translate,还需要Zend_Session_Namespace的使用,我将多个网站的描述和讲解总结如下。
1. 准备翻译文件
Zend_Translate 支持多种格式的翻译文件。假设,我们需要一个中文版支持和一个英文版支持,翻译文件命名为 zh_cn.php、en.php,放在与 application 平行的 languages 文件夹里。
zh_cn.php该文件内容如下:
| <?php return array( ‘hello_world’ => ‘你好!’, ); |
en.php该文件内容如下:
| <?php return array( ‘hello_world’ => ‘Hello world!’, ); |
2. 加载翻译文件
编辑 index.php 文件,在前端控制器运行之前,插入下面的代码:
| $registry['fileurl']=dirname(__FILE__);
require_once ‘Zend/Registry.php’; $languageNamespace = new Zend_Session_Namespace(‘language’); if($langid == ‘zh_cn’){ Zend_Registry::set(‘Zend_Translate’, $adapter); |
A.上述代码的作用是载入 zh_cn.php,并把它保存成全局变量。
B.Zend_Registry 可以看成是一个全局变量容器。
C.创建一个Zend_Session_Namespace的实例,使用SESSION存储数据时要设置命名空间language。
D.根据session中存储的language值切换调用的语言包文件。
E.在保存到 Zend_Registry 中时,键值必须是 Zend_Translate,否则,得不到应有的结果。
3. 在视图中使用翻译条目
编辑 application/views/scripts/admin/index.phtml 文件,将原来的“<h1>Hello World!</h1>”替换成:
| <h1> <?php echo $this->translate(‘hello_world’); ?> </h1> |
4. 设置翻译按钮
编辑 application/layouts/admin.phtml 文件,在原来的导航位置添加:
| <a href=’<?php echo $this->baseUrl();?>/language/change/l/zhcn’?>简体中文</a> | <a href=’<?php echo $this->baseUrl();?>/language/change/l/en’>English</a> |
5. 设置session内的语言标量值
在application中新建LanguageController.php文件,添加一个方法用于获取参数L,并将语言标量值保存到session中,为前台index.php获取提供便利:
| function changeAction(){ $lid = $this->_request->getParam(‘l’); $languageNamespace = new Zend_Session_Namespace(‘language’); if($lid == ‘zhcn’){ $languageNamespace->languagetype = ‘zh_cn’; }elseif($lid == ‘en’){ $languageNamespace->languagetype = ‘en’; }else{ $languageNamespace->languagetype = ‘zh_cn’; } $this->_helper->layout->setLayout(‘adminlogin’); } |
新建application/views/scripts/language/change.phtml,用于当点击切换语言后自动返回当前页面。
| <script> window.history.go(-1); window.histrory.back(); </script> |
6. 完毕
参考网站:
Zend Framework入门-多国语言支持
Zend Framework之Zend_Session
Zend Session使用要点
Google搜索“zend session”

