Symfony2 Использовать локаль по умолчанию в маршрутизации (один URL для одного языка)

В настоящее время я занимаюсь разработкой веб-сайта с Symfony2, и мне нужно его перевести. С инструментами Symfony2 это очень просто. Но я сталкиваюсь с проблемой:

Я хотел бы иметь определенный URL (с префиксом) для языка (то есть один URL, один язык), но с языком по умолчанию. В частности:

Предположим, что языком по умолчанию является английский, поэтому

  • http://example.com/fr/hello показать страницу по-французски
  • http://example.com/it/hello показать страницу по-итальянски
  • http://example.com/en/hello перенаправить на http://example.com/hello (потому что en является языком по умолчанию)
  • http://example.com/hello отображение конечно страницы на английском языке (язык по умолчанию)

Я наивно пытаюсь настроить свою маршрутизацию так:

#routing.yml
_welcome:
    pattern:  /{_locale}/hello
    defaults: { _controller: AcmeDemoBundle:Welcome:hello, _locale: en}

Но это не работает (http://example.com/en/hello просто отобразить страницу на английском и http://example.com/hello вернуть ошибку 404).

Можно, конечно, каждый раз создавать два маршрута, но это очень утомительно. Поэтому я ищу чистое решение.

Между прочим, я заметил, что поведение, которое я искал с URL, было именно тем, которое было принято в официальной документации Symfony2:

http://symfony.com/fr/doc/current/book/translation.html показать французскую традукцию

http://symfony.com/it/doc/current/book/translation.html показать итальянский traduction

http://symfony.com/en/doc/current/book/translation.html перенаправить на http://symfony.com/doc/current/book/translation.html (которые отображают страницу на английском языке)

1 ответ

Решение

Установите JMSI18nBundle и примените стратегию prefix_except_default,

Пакет позаботится о создании маршрутов для вас.

конфигурация:

jms_i18n_routing:
    default_locale: en
    locales: [de, en]
    strategy: prefix_except_default

Дополнительную информацию можно найти в документации к комплекту.

Другие вопросы по тегам