5

在 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 一起工作?

4

2 回答 2

9

我最近写了一篇关于 Zend Framework 2 以及所有 i18n、l10n 和语言环境设置如何工作的博客。这对您来说可能也很有趣,因为可以通过多种方式设置使用的语言环境。

阅读: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');
    }

    //...
}
于 2012-10-02T11:05:55.203 回答
2

从这个RFC来看,决定将 Zend_Locale 排除在 Zend Framework 2 之外并依赖于核心PHP I18n 类

我建议从介绍开始阅读手册,以更好地理解这些类,然后重构代码以使用它们。

于 2012-10-02T10:23:01.487 回答