Symfony翻译只显示英文

时间:2017-06-26 13:41:24

标签: symfony internationalization translation symfony-2.3

我尝试用用户语言翻译网站。

在我的config.yml中:

parameters:
    locale: en

framework:
    #esi: ~
    translator: { fallbacks: [en] }

我在app / resources / translations下添加了messges.en.yml和messages.it.yml。

当我访问带有意大利语浏览器的页面时,我会看到英文翻译。

在symfony书之后,我添加了此活动订阅者:

namespace AppBundle\Service;

use AppBundle\Controller\TokenAuthenticatedController;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;

class LanguageListener implements EventSubscriberInterface
{

    public function onKernelController(FilterControllerEvent $event)
    {
        $request = $event->getRequest();
        $user_lang = $request->getPreferredLanguage();
        $request->setLocale($user_lang);
    }

    public static function getSubscribedEvents()
    {
        return array(
            KernelEvents::CONTROLLER => 'onKernelController',
        );
    }
}

但我仍然只看到英语...

有些提示?

1 个答案:

答案 0 :(得分:0)

您需要创建定义为 _locale 的路线

@Route("/{_locale}/post/list", name="post_index", defaults={"_locale": "en"}, requirements={"_locale": "en|fr|nl" })

不要忘记为注释导入Route类并清除缓存。