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
Дополнительную информацию можно найти в документации к комплекту.