如何在浏览器首选项中设置ZF2中的区域设置?

Caw*_*awa 5 translation zend-framework2

在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);
Run Code Online (Sandbox Code Playgroud)

但它如何与Zend Framework 2一起使用?

Sam*_*Sam 9

我最近在博客上发表了关于Zend Framework 2以及所有i18n,l10n和locale设置的工作原理.这对您来说也很有趣,因为所使用的语言环境可以通过多种方式设置.

阅读它:Zend Framework 2 - 翻译,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');
    }

    //...
}
Run Code Online (Sandbox Code Playgroud)


vas*_*ite 2

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

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