Site multilingue avec variable dans l'URL
Bonjour à tous.
Je souhaite re-coder mon site sous symfony2.
Je souhaite que celui-ci soit multi-langues. Voici ce que j'ai fait pour le moment:
J'ai donc instaurer dans chaque path une variable _locale qui déterminera la langue. Je veux donc que les URL soit de cette forme :www.monsite.com/fr ou www.monsite.com/de, etc.. Pour les autres pages, ça suivra la même logique : www.monsite.com/fr/documents , etc...
Voici mon routing.yml de base (dans app) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| collaide_domain:
resource: "@CollaideDomainBundle/Resources/config/routing.yml"
prefix: /{_locale}/domains
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
collaide_document:
resource: "@CollaideDocumentBundle/Resources/config/routing.yml"
prefix: /{_locale}/documents
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
collaide_user:
resource: "@CollaideUserBundle/Resources/config/routing.yml"
prefix: /{_locale}
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /{_locale}
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /{_locale}/profile
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /{_locale}/register
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /{_locale}/resetting
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /{_locale}/profile
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev
collaide_main:
resource: "@CollaideMainBundle/Resources/config/routing.yml"
prefix: /{_locale}
defaults: {_locale: null}
requirements:
_locale: en|fr|de|dev |
Le problème, c'est que la j'ai énormément de code à double ! Je viens donc vous demander si ma façon de procédé est correct. Sinon, comment dois-je procéder pour faire les choses le plus proprement possible?
J'ai aussi un autre soucis. J'aimerais, dans le header, donner la possibilité à l'utilisateur de choisir la langue. Pour le moment, j'ai donc mis ça dans le layout de base (dans app) :
Code:
1 2 3 4 5 6 7
|
<ul id="choose_language">{{"body.language.choose"|trans}}:
<li><a href="{{path('collaide_main_index', {'_locale':'fr'})}}">{{"body.language.french"|trans}}</a> </li>
<li><a href="{{path('collaide_main_index', {'_locale':'en'})}}">{{"body.language.english"|trans}}</a> </li>
<li><a href="{{path('collaide_main_index', {'_locale':'de'})}}">{{"body.language.german"|trans}}</a></li>
<li><a href="{{path('collaide_main_index', {'_locale':'dev'})}}">{{"body.language.developement"|trans}}</a></li>
</ul> |
Le problème avec ce code, c'est que lorsque l'utilisateur clique sur une langue, il est redirigé directement sur la page d'accueil (normal, vu la route). Comme faire pour donc mettre la route de la page actuelle ?
J'espère avoir été assez clair dans l'explication de mon problème.
Merci d'avance pour vos réponses.