我是zend framework2的新手,我正在一个具有多语言集成的网站上工作。请给我一些想法,应该如何配置内置库和翻译文件,以及如何从视图文件中调用它
问问题
4760 次
1 回答
13
ZF2 已经集成了 I18n 工具。
如何整合它
模块.config.php
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
文件 *.mo
按照上一步,创建一个文件夹并使用Poedit(简单而好的应用程序)添加您的en_US.mo(例如)
模块.php
public function onBootstrap($e)
{
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator
->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))
->setFallbackLocale('en_US');
}
rq:我个人使用会话来存储我的语言环境,但这取决于我是否需要使用语言的 SEO
// session container
$sessionContainer = new Container('locale');
// test if session language exists
if(!$sessionContainer->offsetExists('mylocale')){
// if not use the browser locale
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$sessionContainer->offsetSet('mylocale', Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
}else{
$sessionContainer->offsetSet('mylocale', 'en_US');
}
}
// translating system
$translator = $serviceManager->get('translator');
$translator ->setLocale($sessionContainer->mylocale)
->setFallbackLocale('en_US');
$mylocale = $sessionContainer->mylocale;
如何使用它
在视图中,只需键入:
<?php echo $this->translate("Translate that!"); ?>
一些要探索的链接
于 2013-10-09T12:55:09.540 回答