src/EventListener/LanguageListener.php line 17

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright (c) 2011-present Qualiteam software Ltd. All rights reserved.
  4.  * See https://www.x-cart.com/license-agreement.html for license details.
  5.  */
  6. namespace XCart\EventListener;
  7. use Symfony\Component\HttpFoundation\HeaderUtils;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use XLite\API\Language;
  10. use XLite\Core\Database;
  11. final class LanguageListener
  12. {
  13.     public function onKernelRequest(RequestEvent $event): void
  14.     {
  15.         $request $event->getRequest();
  16.         if (!str_starts_with($request->getRequestUri(), '/api/')) {
  17.             return;
  18.         }
  19.         $xc \XLite::getInstance();
  20.         $isAdminZone = !str_starts_with($request->getRequestUri(), '/api/storefront/');
  21.         $xc->run($isAdminZone);
  22.         $acceptLanguage $request->headers->get('Accept-Language');
  23.         if (empty($acceptLanguage)) {
  24.             return;
  25.         }
  26.         $acceptLanguageParts HeaderUtils::split($acceptLanguage',;');
  27.         if (empty($acceptLanguageParts[0][0])) {
  28.             return;
  29.         }
  30.         $code explode('-'$acceptLanguageParts[0][0])[0];
  31.         $language Database::getRepo('XLite\Model\Language')->findOneByCode($code);
  32.         if (isset($language) && $language->getEnabled()) {
  33.             $langCode $language->getCode();
  34.             Language::getInstance()->setLanguageCode($langCode);
  35.         }
  36.     }
  37. }