2016-06-22 3 views
2

Я реализую перевод на моем приложении Symfony3. Я прочитал the book и внедрил _locale var в начале моего маршрута. Я также установил перенаправление от / до /en и определим резервные копии переводчика.Symfony3 местный язык не используется в FOSUserBundle route

Это работает как предназначение, за исключением маршрута FOSUserBundle. Поскольку они не определены в моей собственной маршрутизации, они не заботятся о {_locale}, и когда я нахожу их, они возвращаются к языку по умолчанию. (/de/mypage =>/profile =>/en/mypage)

Моих файлы перевод сохраняются в app/ressources/translations, и весь мой перевод делается ветка стороны.

app_localized: 
    resource: "@AppBundle/Controller/" 
    type:  annotation 
    prefix: /{_locale} 

app: 
    path:/
    defaults: 
     _controller: FrameworkBundle:Redirect:urlRedirect 
     path: /en 
     permanent: true 

я видел в книге было рекомендовано установить перевод в контроллере, но в моем случае, я получил некоторые, и не думаю, что это ценно, чтобы повторить в каждом из них проверка языка.

У меня также есть вопрос о том, как хранить сеанс var в сессии, и поставить слушателя в глобальном масштабе, но кажется немного чересчур, поэтому я думаю, что, вероятно, я чего-то не вижу.

Итак, как обрабатывать URL-адрес globale через URL-адрес, в том числе по маршруту FOSUserBundle, без повторного кода в каждом контроллере?

На самом деле, мой FOSRout такой. fos_js_routing: ресурс: "@ FOSJsRoutingBundle/Resources/конфигурация/маршрутизация/routing.xml"

fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 
    prefix: /{_locale} 
    requirements: 
     _locale: '%app_locales%' 

fos_user_profile: 
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml" 
    prefix: /{_locale}/profile 
    requirements: 
     _locale: '%app_locales%' 

fos_user_register: 
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml" 
    prefix: /{_locale}/register 
    requirements: 
     _locale: '%app_locales%' 

fos_user_resetting: 
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml" 
    prefix: /{_locale}/resetting 
    requirements: 
     _locale: '%app_locales%' 

fos_user_change_password: 
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml" 
    prefix: /{_locale}/profile 
    requirements: 
     _locale: '%app_locales%' 

ответ

0

ли вы установить эти параметры в рамочной секции файла config.yml:

framework: 
    translator:  { fallbacks: ["%locale%"] } 
    default_locale: "%locale%" 

и вам нужно префикс FOSUserBundle маршрутов тоже в файл routing.yml, как это:

fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 
    prefix: /{_locale}/ 
    requirements: 
     _locale: en|fr 
fos_user_profile: 
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml" 
    prefix: /{_locale}/profile 
fos_user_register: 
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml" 
    prefix: /{_locale}/register 
fos_user_resetting: 
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml" 
    prefix: /{_locale}/resetting 
fos_user_change_password: 
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml" 
    prefix: /{_locale}/profile 
+0

Да я реализовал запасной вариант и dEFAULT_LOCALE Params. О маршруте, я попробовал, но у меня все еще есть проблемы. То же самое применяется, когда я пытаюсь изменить текущий язык. –

+0

Возможно ли увидеть все ваши routing.yml с помощью маршрута FOSUser? –

+0

уверен, я отредактирую свое первое сообщение –