首页 > 解决方案 > zf3 翻译路线 - 找不到翻译器

问题描述

我需要实现一个多语言网站。比我需要使用 i18n 和翻译器,但我对路由翻译器有一些问题

这是我的 module.config.php

{
return [
    'router' => [
        'router' => [
            'router_class'           => TranslatorAwareTreeRouteStack::class,
        ],
        'routes' => [
            'home' => [
                'type' => Literal::class,
                'options' => [
                    'route'    => '/',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/{contact}',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
        ],
    ]};
    }

这是我的 Module.php 类

 public function onBootstrap(MvcEvent $e)
    {
        /** @var \Zend\Mvc\I18n\Translator $translator */

        $translator = $e->getApplication()->getServiceManager()->get('MvcTranslator');
        $translator->addTranslationFilePattern(
            'phpArray',
            Resources::getBasePath(),
            Resources::getPatternForValidator()
        );
        AbstractValidator::setDefaultTranslator($translator);
    }       

当我启动应用程序时出现此错误

Zend\Router\Exception\RuntimeException: No translator provided in ..vendor\zendframework\zend-router\src\Http\Segment.php on line 372   

如何将翻译器传递给段类?我需要使用不同的类进行翻译吗?

标签: routeszend-framework3

解决方案


问题是配置。我移动这个

'router' => [
        'router_class' => \Zend\Mvc\I18n\Router\TranslatorAwareTreeRouteStack::class,
        'routes' => [

        ],
    ],

在全局配置中,一切正常。


推荐阅读