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文件即可