Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 default locale in routing

Tags:

symfony

I have a problem with routing and the internationalization of my site built with Symfony2.
If I define routes in the routing.yml file, like this:

example:      pattern:  /{_locale}/example      defaults: { _controller: ExampleBundle:Example:index, _locale: fr }  

It works fine with URLs like:

mysite.com/en/example  mysite.com/fr/example  

But doesn't work with

mysite.com/example  

Could it be that optional placeholders are permitted only at the end of an URL ?
If yes, what could be a possible solution for displaying an url like :

mysite.com/example   

in a default language or redirecting the user to :

mysite.com/defaultlanguage/example  

when he visits :

mysite.com/example. ?  

I'm trying to figure it out but without success so far.

Thanks.

like image 748
Ka. Avatar asked Oct 26 '11 13:10

Ka.


1 Answers

If someone is interested in, I succeeded to put a prefix on my routing.yml without using other bundles.

So now, thoses URLs work :

www.example.com/ www.example.com//home/ www.example.com/fr/home/ www.example.com/en/home/ 

Edit your app/config/routing.yml:

ex_example:     resource: "@ExExampleBundle/Resources/config/routing.yml"     prefix:   /{_locale}     requirements:         _locale: |fr|en # put a pipe "|" first 

Then, in you app/config/parameters.yml, you have to set up a locale

parameters:     locale: en 

With this, people can access to your website without enter a specific locale.

like image 97
Pitchou Avatar answered Sep 21 '22 05:09

Pitchou