通过“接受语言标题”设置返回翻译后的实体

时间:2019-04-24 12:33:23

标签: php locale symfony-3.4 http-accept-language http-accept-header

我是使用Symfony进行翻译的初学者,因此我提供了一些捆绑包来帮助我翻译实体。

现在,我在邮递员中设置了接受语言标头,我需要返回按该语言区域设置检测到的结果。

我很累写听众。

有人可以帮忙吗

我的听众:

 class LocaleListener
{

private $session;

public function setSession(Session $session)
{
    $this->session = $session;
}

public function setLocale(GetResponseEvent $event)
{
    if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
        return;
    }

    $request = $event->getRequest();

    if (!$request->attributes->has('locale')) {
        $request->setLocale($request->getPreferredLanguage(array('en', 'de')));
    }
}
}

services.yml

 listener.request:
    class: App\Base\EventListener\LocaleListener
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: setLocale }
    arguments: [ "@router", "@service_container" ]

我的Api呼叫:

  /**
 * @Route("/translation/all", name="trans")
 * @throws \Exception
 */
    public function allTranslate()
{

    $locale = $this->get('listener.request')->setLocale();

    $thing = $this->getThingRepository()->find(1);
    $repository = $this->em->getRepository('Gedmo\Translatable\Entity\Translation');
    $translations = $repository->findTranslations($thing);

    return $translations;
}

我完全迷路了。

我需要在这里打电话给我的监听器,以检测我在邮递员标题中发布的语言,然后通过该语言返回翻译后的数据。

我正在返回应有的结果,因此现在需要与我的侦听器建立连接。谢谢。

0 个答案:

没有答案