我正在尝试在Symfony2上翻译404页面,但它无效。有500个错误页面,效果很好。
例如,当我尝试访问页面时:/ es / not-found它显示404页面,但是当我访问/ en / not-found时,它给了我SAME页面,虽然我已经翻译了错误我的消息-en.yml上的消息。
似乎总是访问messages-es.yml文件,因为我已经使用这个默认语言环境配置了Symfony。
如果我在我的Twig模板上打印{{app.request.locale}},它就不会给我任何东西。
我多次清除缓存,是的:)。
提前致谢!
答案 0 :(得分:2)
如果本地化配置正常工作,您应该能够在Twig上打印语言环境。有这样的事情:
{% if app.request.locale == 'en' %}
English 404 message
{% else %}
Other 404 message
{% endif %}
如果您的Symfony版本低于2.1,则必须使用app.session.locale而不是app.request.locale
然而,良好做法始终可以创建自定义404 以及您需要的任何其他错误页面:
http://symfony.com/doc/current/cookbook/controller/error_pages.html
最强大的方法是使用此方法:
使用您自己的控制器替换默认的异常控制器twig.controller.exception:showAction,并根据需要处理它(请参阅Twig参考中的exception_controller)。默认的异常控制器被注册为服务 - 实际的类是Symfony \ Bundle \ TwigBundle \ Controller \ ExceptionController。
这样,您甚至可以为每个国家/地区设置不同的模板。
亲切的问候。