Возврат переведенной сущности с помощью настройки заголовка Accept-Language - PullRequest
0 голосов
/ 24 апреля 2019

Я довольно новичок в переводах в Symfony, поэтому я включил несколько пакетов, чтобы помочь мне переводить сущности.

Теперь я установил Accept-Language Header в своем почтальоне, и мне нужно вернуть результаты, обнаруженные по локали на этом языке.

Мне надоело писать слушателю.

Может кто-нибудь помочь.

Мой слушатель:

 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 Call:

  /**
 * @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;
}

Я полностью потерян.

Мне нужно вызвать моего слушателя, чтобы определить язык, который я разместил в заголовке почтальона, а затем вернуть переведенные данные.

Я возвращаю результаты, как и должно быть, поэтому мне нужно соединение с моим слушателем. Спасибо.

...