В настоящее время я разрабатываю веб-сайт с 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
return 404 error).
Конечно, можно создавать два маршрута каждый раз, но это очень утомительно. Поэтому я ищу чистое решение.
Кстати, я заметил, что поведение, которое я искал с URL-адресом, было именно тем, что было принято официальной документацией Symfony2:
http://symfony.com/fr/doc/current/book/translation.html
демонстрирует французскую тенденцию
http://symfony.com/it/doc/current/book/translation.html
отображает итальянскую тенденцию
http://symfony.com/en/doc/current/book/translation.html
перенаправить на http://symfony.com/doc/current/book/translation.html
(который отображает страницу на английском языке)
Установите JMSI18nBundle и примените стратегию prefix_except_default
.
Пакет позаботится о создании маршрутов для вас.
конфигурация:
jms_i18n_routing: default_locale: en locales: [de, en] strategy: prefix_except_default
Дополнительную информацию можно найти в документации на комплект поставки.