在使用Zend_Framework建立网站,若网站在以后的使用中面向国际,这时就需要实现网站的多语言国际化问题。使用Zend_Framework开发的网站需要进行多语言的开发时,就需要用到了Zend_Translate这个解决方案。
msgid "Hello"
msgstr "你好"
这样一个po文件就编写好了,然后进行保存,这里有一些小问题就是在保存的时候会出现一些小的问题,这一方面是文件没有配好的缘故,这里需要进行的配置是打开刚刚新建好的zh_CN.po文件,然后打开编目>>属性菜单,
如图所示,然后在源路径下进行设定,在源路径下,有个基础路径,该基础路径是PoEdit在进行文件扫描的时候要用到的,当一切设置完成之后进行点击确定,然后若设置正确的话下图中的更新就可用:
否则不可用,然后进行翻译,在翻译之前可进行翻译验证,检查是否有错误,检查无误后就可以开始进行正常的配置了。
;============Zend_Translate resources.locale.default="zh_CN" resources.translate.registry_key="Zend_Translate" resources.translate.adapter="gettext" resources.translate.options.scan="filename" resources.translate.locale="zh_CN" resources.translate.data = APPLICATION_PATH"/langs/"
上面的文件的意思如下,首先,resource.locale.default="zh_CN"是指系统默认语言环境,下面的registry_key是指使用Zend_Translate,translate.adapter="gettext"是表明使用的是gettext适配器,最后的那个translate.data=APPLICATION_PATH"/langs/"是说明相关的语言文件所在的位置,这样在ini文件中就把最基础的相关参数配置好了,接下来是进行Bootstrap.php,也就是引导文件中进行相关的配置,Bootstrap.php中需要写入如下的代码:
1 public function _initTranslate()
2 {
3 //首先读取相关的配置文件 4 $options=$this->getOption("resources"); 5 $options=$options["translate"]; 6 if(!isset($options["data"])){ 7 throw new Zend_Application_Resources_Exception("No translation resources provided"); 8 } 9 $adapter=isset($options["adapter"])?$options["adapter"]:Zend_Translate::AN_GETTEXT; 10 $session=new Zend_Session_Namespace("locale"); 11 if($session->locale){ 12 $locale=$secsson->locale; 13 }else{
14 $locale=isset($options["locale"])?$option["locale"]:new Zend_Local(Zend_Locale::BROWSER); 15 $session->locale=$locale; 16 } 17 $date=$options["data"]; 18 $translateOptions=isset($options["option"])?$options["option"]:array(); 19 $translate=new Zend_Translate($adapte,$locale,$data,$translateOptions); 20 Zend_Registry::set("Zend_Translate",$translate); 21 }
以上的就是相关的关于多语言的相关的一些配置上面的配置完成之后就需要进行使用了,在controller中的使用方法是如下代码:
public function indexAction() { //首先取得已经注册了的键值 $translate=Zend_Registry::get("Zend_Translate"); $translate->_('msgid'); }
视图文件中的使用为:
1 <h4><?php echo $this->translate('translate') ?></h4>