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 : 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
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 : 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.