0

基本的に、私はここと同じ問題を抱えていました:

Symfony2 & Translatable : エンティティのロケールが空です

ext_translations翻訳はテーブルに保存されていますが、表示されていません。

提案された修正を追加した後、それは機能しました。

今日、私は 2.0 から 2.1 にアップグレードしました。

しかし、私の翻訳可能ファイルは再び適切に表示されません (まだ適切に保存されています)。

2.0 と比較して 2.1 でユーザーのロケールが保存される場所と方法の変更に関係があると思います..しかし、私はこれを理解できません。

4

1 に答える 1

0

カスタムリスナーを登録することでこれを修正しました

namespace XXX;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class LocaleListener implements EventSubscriberInterface
{
   private $defaultLocale;

   public function __construct($defaultLocale = 'en')
   {
       $this->defaultLocale = $defaultLocale;
   }

   public function onKernelRequest(GetResponseEvent $event)
   {
       $request = $event->getRequest();
       if (!$request->hasPreviousSession()) {
           return;
       }

       if ($locale = $request->attributes->get('_locale')) {
           $request->getSession()->set('_locale', $request->getLocale());
       } else {
           $request->setDefaultLocale($request->getSession()->get('_locale',             $this->defaultLocale));
       }
   }

   static public function getSubscribedEvents()
   {
       return array(
           // must be registered before the default Locale listener
           KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
       );
   }
}

その後変更

$request->setDefaultLocale($request->getSession()->get('_locale', $this->defaultLocale));

$request->setLocale($request->getSession()->get('_locale'));

と使用

$this->getRequest()->getSession()->set('_locale', 'nl');

ロケールを設定するために、翻訳と翻訳対象が機能するようになりました

これが他の誰かにも役立つことを願っています..

于 2012-08-09T07:43:18.730 に答える