在Zend框架1中,我可以做到
try {
$locale = new Zend_Locale('browser');
} catch (Zend_Locale_Exception $e) {
$locale = new Zend_Locale('en');
}
$registry = Zend_Registry::getInstance();
$registry->set('Zend_Locale', $locale);
但它如何与Zend Framework 2一起使用?
答案 0 :(得分:9)
我最近在博客中介绍了Zend Framework 2以及所有i18n,l10n和locale设置的工作原理。这对您来说也很有趣,因为所使用的语言环境可以通过多种方式设置。
了解它:Zend Framework 2 - translate, i18n, locale
我个人使用以下方法,然后 - 根据您的结构 - 您可以添加来自数据库,会话或cookie等的语言环境;)
<?php
namespace FileManager;
use Zend\Mvc\ModuleRouteListener;
class Module
{
public function onBootstrap($e)
{
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator
->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))
->setFallbackLocale('en_US');
}
//...
}
答案 1 :(得分:2)
从这个RFC判断,决定将Zend_Locale从Zend Framework 2中删除并依赖核心PHP I18n classes。
我建议您阅读从introduction开始的手册,以便更好地理解这些类,然后重构代码以使用它们。