2017-06-26 22 views
0

私はユーザーの言語でウェブサイトを翻訳しようとしています。私のconfig.ymlでsymfonyのみを英語に翻訳

parameters: 
    locale: en 

framework: 
    #esi: ~ 
    translator: { fallbacks: [en] } 

私はアプリ/リソース/翻訳下messges.en.ymlとmessages.it.ymlを追加しました。

イタリア語のブラウザでページを閲覧すると、英語の翻訳が表示されます。私はこのイベントサブスクライバ追加symfonyブックに続き

namespace AppBundle\Service; 

use AppBundle\Controller\TokenAuthenticatedController; 
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; 
use Symfony\Component\HttpKernel\Event\FilterControllerEvent; 
use Symfony\Component\EventDispatcher\EventSubscriberInterface; 
use Symfony\Component\HttpKernel\KernelEvents; 

class LanguageListener implements EventSubscriberInterface 
{ 

    public function onKernelController(FilterControllerEvent $event) 
    { 
     $request = $event->getRequest(); 
     $user_lang = $request->getPreferredLanguage(); 
     $request->setLocale($user_lang); 
    } 

    public static function getSubscribedEvents() 
    { 
     return array(
      KernelEvents::CONTROLLER => 'onKernelController', 
     ); 
    } 
} 

が、私は英語だけ表示され続けるの...

いくつかのヒント?あなたが定義されてから_locate

このような
@Route("/{_locale}/post/list", name="post_index", defaults={"_locale": "en"}, requirements={"_locale": "en|fr|nl" }) 

でルートを作成する必要が

+0

キャッシュをクリーニングしましたか? 'rm -rf app/cache/*' – ste

+0

'$ user_lang'は正しい値ですか?おそらく 'getPrefferedLanguage'は意図したとおりに動作しておらず、あなたはあなたの"フォールバック "ロジックに当たっていますか? –

答えて

0

は注釈とクリアキャッシュのルートクラスをインポートすることを忘れないでください。

関連する問題