Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zf2动态更改语言_Php_Zend Framework2 - Fatal编程技术网

Php zf2动态更改语言

Php zf2动态更改语言,php,zend-framework2,Php,Zend Framework2,我有一个问题,关于ZF2翻译,在具体的案例中,当用户点击标志或菜单链接时,在构造更改语言的链接 在我的应用程序/config/module.config.php中,我有以下代码: 'service_manager' => array( 'factories' => array( 'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory', '

我有一个问题,关于ZF2翻译,在具体的案例中,当用户点击标志或菜单链接时,在构造更改语言的链接

在我的应用程序/config/module.config.php中,我有以下代码:

   'service_manager' => array(
        'factories' => array(
            'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
            'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
        ),

    ),
我的路线是:

return array(
    'router' => array(
        'routes' => array(

            'home' => array(
                'type' => 'Segment',
                'options' => array(
                    'route'    => '/[:lang[/:action]]',
                    'constraints' => array(
                        'lang'   => '[a-zA-Z]*',
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    ),
                    'defaults' => array(
                        'controller' => 'Application\Controller\Index',
                        'action'     => 'index',
                    ),
                ),
            ),
在我的Application/Module.php中,我在bootstrap上设置了以下代码:

public function onBootstrap(MvcEvent $e)
    {
        $sm = $e->getApplication()->getServiceManager();

        $router = $sm->get('router');
        $request = $sm->get('request');
        $matchedRoute = $router->match($request);
        $params = $matchedRoute->getParams();

        if(isset($params['lang']) && $params['lang'] !== '') {
            $translator = $e->getApplication()->getServiceManager()->get('translator');
            //or
            //$translator = $e->getApplication()->getServiceManager()->get('MvcTranslator');

            if($params['lang'] == 'en') {
                $translator->setLocale('en_US');
            }
        }

        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);
    }
现在我的路线或,但我无法在我的视图中为我的应用程序中的更改语言创建链接

我该如何进行


谢谢

您只需更改
lang
参数,即可创建指向您所在页面的链接,如下所示:

$this->url(null, array('lang' => $anotherLang), array(), true)

通过仅更改
lang
参数,您可以创建指向所处页面的链接,如下所示:

$this->url(null, array('lang' => $anotherLang), array(), true)

通过仅更改
lang
参数,您可以创建指向所处页面的链接,如下所示:

$this->url(null, array('lang' => $anotherLang), array(), true)

通过仅更改
lang
参数,您可以创建指向所处页面的链接,如下所示:

$this->url(null, array('lang' => $anotherLang), array(), true)

只需在您的视图中执行此操作:

<a href="<?= $this->url($this->route, array('lang' => 'en'));?>"> English </a>

这将提供与当前相同的
URL
,但语言不同(这里是英语)


希望这能有所帮助。

只需在您的视图中执行以下操作:

<a href="<?= $this->url($this->route, array('lang' => 'en'));?>"> English </a>

这将提供与当前相同的
URL
,但语言不同(这里是英语)


希望这能有所帮助。

只需在您的视图中执行以下操作:

<a href="<?= $this->url($this->route, array('lang' => 'en'));?>"> English </a>

这将提供与当前相同的
URL
,但语言不同(这里是英语)


希望这能有所帮助。

只需在您的视图中执行以下操作:

<a href="<?= $this->url($this->route, array('lang' => 'en'));?>"> English </a>

这将提供与当前相同的
URL
,但语言不同(这里是英语)



希望这能有所帮助。

您好,谢谢您的回答,我尝试了这是一种解决方案,但我无法在链接中插入操作和设置。我还应该设置控制器?嗨,谢谢你的帮助和回答,但是我不能在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器中有东西?只需在url中添加
'action'=>'company'
。您好,谢谢您的回答,我尝试了这是解决方案,但我无法在链接中插入操作和设置。我还应该设置控制器?嗨,谢谢你的帮助和回答,但是我不能在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器中有东西?只需在url中添加
'action'=>'company'
。您好,谢谢您的回答,我尝试了这是解决方案,但我无法在链接中插入操作和设置。我还应该设置控制器?嗨,谢谢你的帮助和回答,但是我不能在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器中有东西?只需在url中添加
'action'=>'company'
。您好,谢谢您的回答,我尝试了这是解决方案,但我无法在链接中插入操作和设置。我还应该设置控制器?嗨,谢谢你的帮助和回答,但是我不能在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器中有东西?只需在url中添加
'action'=>'company'
。您好,谢谢您的帮助和回答,但我无法在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器里有东西吗?——您好,谢谢您的帮助和回答,但我无法在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器里有东西吗?——您好,谢谢您的帮助和回答,但我无法在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器里有东西吗?——您好,谢谢您的帮助和回答,但我无法在我的url上设置操作。在我的主版面中,我有两个英文或意大利文的“更改”页面链接,但运行脚本时,我只会看到www.xxxx.com/it,而我会看到www.xxx.com/it/company和www.xxx.com/en/company。我的控制器里有东西吗?——谢谢你的回答。。。我用这个方法解决了这个问题:[如何在ZF2][1][1]中全局地将变量传递给layout.phtml]:谢谢你的回答。。。我用这个方法解决了这个问题:[如何在ZF2][1][1]中全局地将变量传递给layout.phtml]:谢谢你的回答。。。我用这个方法解决了这个问题:[如何在ZF2][1][1]中全局地将变量传递给layout.phtml]:谢谢你的回答。。。我用以下方法解决了这个问题:[如何在ZF2][1][1]中全局地将变量传递给layout.phtml]: