Zend framework2 Zend框架多语言集成步骤

Zend framework2 Zend框架多语言集成步骤,zend-framework2,Zend Framework2,我是zend framework2的新手,我正在一个多语言集成的网站上工作。请告诉我如何配置内置库和翻译文件,以及如何从视图文件调用它。ZF2已经集成了I18n工具 如何整合 module.config.php 文件*.mo 按照上一步,创建一个文件夹,并使用(简单且良好的应用程序)添加您的en_US.mo(例如) Module.php rq:就我个人而言,我使用一个会话来存储我的区域设置,但这取决于我是否需要使用SEO语言 // session container $sessi

我是zend framework2的新手,我正在一个多语言集成的网站上工作。请告诉我如何配置内置库和翻译文件,以及如何从视图文件调用它。ZF2已经集成了I18n工具

如何整合 module.config.php 文件*.mo 按照上一步,创建一个文件夹,并使用(简单且良好的应用程序)添加您的en_US.mo(例如)

Module.php 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!"); ?>

一些链接可供探索

我明白了。。谢谢你,雷米。非常好的解释。在我的例子中,我必须在module.config.php中将转换器定义为一个可调用的服务。否则它将找不到服务。如果我不希望使用
$\u SERVER['HTTP\u ACCEPT\u LANGUAGE']
设置值,而是从
url
domain.com/en/…
设置值,该怎么办。路线将给我的值为
en
,而不是ZF2中要求的
en_US
。实际上,我需要它的
fr
,它有两个变体。
    // 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!"); ?>