Symfony2 Use a localidade padrão no roteamento (uma URL para um idioma)
Atualmente, estou desenvolvendo um site com o Symfony2 e preciso traduzi-lo. Com as ferramentas fornecidas pelo Symfony2, é muito fácil. Mas encontro um problema:
Eu gostaria de ter um URL específico (com prefixo) para um idioma (ou seja, um URL, um único idioma), mas com um idioma padrão. Concretamente:
Suponha que o idioma padrão seja inglês, então
http://example.com/fr/hello
exibir a página em francêshttp://example.com/it/hello
exibir a página em italianohttp://example.com/en/hello
redirecionar parahttp://example.com/hello
(porque en é o idioma padrão)http://example.com/hello
exibir, é claro, a página em inglês (idioma padrão)Tento ingenuamente configurar meu roteamento assim:
#routing.yml
_welcome:
pattern: /{_locale}/hello
defaults: { _controller: AcmeDemoBundle:Welcome:hello, _locale: en}
Mas isso não funciona (http://example.com/en/hello
basta exibir a página em inglês ehttp://example.com/hello
retornar erro 404).
É possível, é claro, criar duas rotas de cada vez, mas é muito tedioso. Então, estou procurando uma solução limpa.
Aliás, notei que o comportamento que eu estava procurando com a URL era exatamente o adotado pela documentação oficial do Symfony2:
http://symfony.com/fr/doc/current/book/translation.html
Indicar a tradição francesa
http://symfony.com/it/doc/current/book/translation.html
exibir tradição italiana
http://symfony.com/en/doc/current/book/translation.html
redirecionar parahttp://symfony.com/doc/current/book/translation.html
(que exibe a página em inglês)