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" })
でルートを作成する必要が
キャッシュをクリーニングしましたか? 'rm -rf app/cache/*' – ste
'$ user_lang'は正しい値ですか?おそらく 'getPrefferedLanguage'は意図したとおりに動作しておらず、あなたはあなたの"フォールバック "ロジックに当たっていますか? –