Zend Framework国际化用到的是Zend_Translate组建
一、用数据的形式来国际化
建立一个ZF的项目中application中建立languages的文件夹,在文件夹中添加en.php和zh_cn.php文件
en.php中的文件内容如下:
<?php return array( 'showList'=>'DataListShow', 'addData'=>'addData', 'serial_number'=> 'NO.', 'title' => 'Title', 'content' => 'content', 'opt' => 'operate', 'get_lg' => 'zh_CN', 'language' => '简体中文', ); ?>
zh_cn.php中文件的内容如下:
<?php return array( 'showList'=>'数据列表显示', 'addData'=>'增加数据', 'serial_number'=>'编号', 'title'=>'标题', 'content'=>'内容', 'opt'=>'操作', 'get_lg'=>'en_US', 'language'=>'English', ); ?>
在pulibc下的index.php文件中添加代码:
//设置自动加载 require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); //国家化 $translate = new Zend_Translate('array',APPLICATION_PATH.'/languages/zh_cn.php','zh_ch'); print '中文的:'; print $translate->_('hello_world'); print_r('<br/>'); $translate->addTranslation(APPLICATION_PATH.'/languages/en.php','en'); $translate->setLocale('en'); print '英文的国际化:'; print $translate->_('hello_world'); print_r('<br/>'); $application->bootstrap() ->run();
就可以看到国际的实例了
二、gettext来实现国际化
你可以在zf的项目中的index.php文件中添加如下代码
//设置自动加载 require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); $translate = new Zend_Translate('gettext',APPLICATION_PATH.'/languages/gettext','zh_CN', array('scan'=>Zend_Translate::LOCALE_DIRECTORY)); $translate->setLocale('auto'); print $translate->_('hello_world'); Zend_Registry::set('zendTranslate',$translate);
在IndexController.php控制器重的indexAction中添加如下代码:
$zendTranslate = Zend_Registry::get('zendTranslate'); echo $zendTranslate->_('hello_world').'<br/>'; echo $zendTranslate->_('myName').'<br/>'; echo $zendTranslate->_('php').'<br/>';
在项目中的添加文件路劲与index.php中的路径对应如下:
languages
gettext
zh_CN.mo
这个zh_CN.mo的文件生成可以看哈子我写的这篇文章:
http://blog.csdn.net/ycb1689/article/details/7575005
随便生成一个po的文件之后,将名字修改为zh_CN即可.
然后就可以到po文件中添加对应的
msgid "hello_world" msgstr "你好我的世界" msgid "myName" msgstr "我的名字" msgid "php" msgstr "我在学习php"
再用gettext来生成对应的mo文件即可