2016-06-22 2 views
2

私はSymfony3アプリケーションで翻訳を実装しています。私はthe bookを読んで、私のルートの始めに_locale varを実装しました。また、/から/enへのリダイレクトを設定し、トランスレータフォールバックを定義しました。symfony3のローカル言語がFOSUserBundleルートで使用されていません

これは、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を保存し、グローバルリスナーを置くことを考えていますが、少し余裕があるようですので、おそらく何か不足していると思います。

したがって、FOSUserBundleルートを含め、各コントローラでリピートコードなしでglobal language throught URLを処理する方法はありますか?

実際、私のFOSRoutはそうです。 fos_js_routing: リソース: "FOSJsRoutingBundle /リソース/設定/ルーティング/ 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%" 

そして、次のようにrouting.ymlファイルにFOSUserBundleルートのプレフィックスを付ける必要があります。

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パラメータを実装しました。ルートについては、私は試しましたが、まだ問題があります。現在の言語を変更しようとしたときも同じです –

+0

FOSUserルートでrouting.ymlをすべて見ることはできますか? –

+0

確かに、最初の投稿を編集します –

関連する問題