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) :
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager