在Zend Framework 2中获取布局或视图中的本地值

San*_*nju 5 localization zend-framework2

我们如何在layout.phtml或Zend Framework 2中的视图中获取本地值(即:'en'或'en_US','de'等)?

我的本地设置与此处说明的完全相同

<?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)

我想获得这样的本地价值:

$locale = $this->translate()->getLocale(); // <-- It's not working anyway
Run Code Online (Sandbox Code Playgroud)

我需要在调用google map api url时使用' $ locale '来获取匹配的语言环境/语言.我通过layout.phtml中的应用程序调用它

$this->headScript()->appendFile('http://maps.googleapis.com/maps/api/js?language=' . $locale);
Run Code Online (Sandbox Code Playgroud)

所以我想在调用api时使语言选项动态化.

PS:我没有任何查询字符串参数,如'语言',这是一个谷歌api的东西,我需要在脚本网址设置(如果你不知道)请不要混淆.这里没有回答

ime*_*l96 8

取决于您希望从何处获取区域设置值.无论如何,您可以在控制器中执行此操作,例如:

$locale = $this->request->getQuery('language');
$this->layout()->locale = $locale;
Run Code Online (Sandbox Code Playgroud)

要么

return new ViewModel(array('locale' => $locale));
Run Code Online (Sandbox Code Playgroud)

编辑如果您只想从翻译器获取语言环境,可以在视图脚本中尝试此操作:

$this->plugin('translate')->getTranslator()->getLocale();
Run Code Online (Sandbox Code Playgroud)