我尝试用用户语言翻译网站。
在我的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',
);
}
}
但我仍然只看到英语...
有些提示?
答案 0 :(得分:0)
您需要创建定义为 _locale 的路线
@Route("/{_locale}/post/list", name="post_index", defaults={"_locale": "en"}, requirements={"_locale": "en|fr|nl" })
不要忘记为注释导入Route类并清除缓存。