2013-08-11 2 views
3

Я пытаюсь перевести 404 страницы на Symfony2, но это не работает. С 500 страницами ошибок он отлично работает.Страницы ошибок Symfony2 с языками

Например, когда я пытаюсь получить доступ к странице:/es/not-found, она показывает страницу 404, но когда я обращаюсь к/en/not-found, она дает мне ту же страницу, хотя я перевел сообщение об ошибке в моих сообщениях-en.yml.

Кажется, что он всегда обращается к файлу messages-es.yml, потому что я настроил Symfony с этим стандартом по умолчанию.

Если я печатаю {{app.request.locale}} на моем шаблоне Twig, это ничего мне не дает.

Я несколько раз очистил кеш, да :).

Заранее благодарен!

ответ

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 с вашим собственным контроллером и обрабатывайте его, как вы хотите (см. Exception_controller в ссылке Twig). Контроллер исключений по умолчанию зарегистрирован как служба - фактическим классом является Symfony \ Bundle \ TwigBundle \ Controller \ ExceptionController.

Таким образом, у вас могут быть разные шаблоны для каждой страны.

С уважением.

+0

Спасибо за ответ! Я попробую создать свой собственный контроллер! –

+0

Да! Теперь он работает (настройка контроллера, который обрабатывает исключение). Тем не менее, странно, что контроллер внутри TwigBundle неправильно обрабатывает локали. Я посмотрю, наверное, это моя вина. –

+1

У вас есть пример вашего собственного контроллера? – Mondane

Смежные вопросы