コード例 #1
0
 /**
  * @param string $name
  *
  * @return string
  */
 protected function getPropertyName($name)
 {
     if (in_array($name, $this->translatableFields, true)) {
         return 'translations.' . $this->localeProvider->getDefaultLocaleCode() . '.' . $name;
     }
     return $name;
 }
コード例 #2
0
 /**
  * @param string $locale
  * @param array $options
  *
  * @return bool
  */
 private function isLocaleRequired($locale, array $options = [])
 {
     if (isset($options['required_locales'])) {
         return in_array($locale, $options['required_locales']);
     }
     return $this->localeProvider->getDefaultLocaleCode() === $locale;
 }
コード例 #3
0
 /**
  * {@inheritdoc}
  */
 public function getLocaleCode()
 {
     $availableLocalesCodes = $this->localeProvider->getAvailableLocalesCodes();
     $localeCode = $this->localeProvider->getDefaultLocaleCode();
     if (!in_array($localeCode, $availableLocalesCodes, true)) {
         throw LocaleNotFoundException::notAvailable($localeCode, $availableLocalesCodes);
     }
     return $localeCode;
 }
コード例 #4
0
 /**
  * {@inheritdoc}
  *
  * @throws UnexpectedTypeException
  */
 public function createNew()
 {
     $resource = $this->factory->createNew();
     if (!$resource instanceof TranslatableInterface) {
         throw new UnexpectedTypeException($resource, TranslatableInterface::class);
     }
     $resource->setCurrentLocale($this->localeProvider->getDefaultLocaleCode());
     $resource->setFallbackLocale($this->localeProvider->getDefaultLocaleCode());
     return $resource;
 }
コード例 #5
0
 /**
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     try {
         $request->setLocale($this->localeContext->getLocaleCode());
     } catch (LocaleNotFoundException $exception) {
     }
     try {
         $request->setDefaultLocale($this->localeProvider->getDefaultLocaleCode());
     } catch (LocaleNotFoundException $exception) {
     }
 }
コード例 #6
0
 /**
  * {@inheritdoc}
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $locales = $this->localeProvider->getAvailableLocalesCodes();
     $localesWithRequirement = [];
     foreach ($locales as $locale) {
         $localesWithRequirement[$locale] = false;
         if ($this->localeProvider->getDefaultLocaleCode() === $locale) {
             $localesWithRequirement[$locale] = true;
             $localesWithRequirement = array_reverse($localesWithRequirement, true);
         }
     }
     $builder->addEventSubscriber(new ResourceTranslationsSubscriber($localesWithRequirement));
 }
コード例 #7
0
 function it_builds_form(LocaleProviderInterface $localeProvider, FormBuilderInterface $builder)
 {
     $localeProvider->getDefinedLocalesCodes()->willReturn(['pl_PL', 'en_EN', 'en_GB']);
     $localeProvider->getDefaultLocaleCode()->willReturn('en_EN');
     $builder->addEventSubscriber(Argument::type(ResourceTranslationsSubscriber::class))->shouldBeCalled()->willReturn($builder);
     $this->buildForm($builder, ['type' => 'text']);
 }
コード例 #8
0
 function it_creates_translatable_and_sets_locales(FactoryInterface $factory, LocaleProviderInterface $localeProvider, TranslatableInterface $resource)
 {
     $localeProvider->getDefaultLocaleCode()->willReturn('pl_PL');
     $factory->createNew()->willReturn($resource);
     $resource->setCurrentLocale('pl_PL')->shouldBeCalled();
     $resource->setFallbackLocale('pl_PL')->shouldBeCalled();
     $this->createNew()->shouldReturn($resource);
 }
コード例 #9
0
 function it_sets_default_locale_on_request_even_if_locale_context_fails(LocaleContextInterface $localeContext, LocaleProviderInterface $localeProvider, GetResponseEvent $event, Request $request)
 {
     $event->getRequest()->willReturn($request);
     $localeContext->getLocaleCode()->willThrow(LocaleNotFoundException::class);
     $localeProvider->getDefaultLocaleCode()->willReturn('en_US');
     $request->setLocale(Argument::any())->shouldNotBeCalled();
     $request->setDefaultLocale('en_US')->shouldBeCalled();
     $this->onKernelRequest($event);
 }
コード例 #10
0
 function it_sets_locale_and_default_locale_on_request(LocaleContextInterface $localeContext, LocaleProviderInterface $localeProvider, GetResponseEvent $event, Request $request)
 {
     $event->getRequest()->willReturn($request);
     $localeContext->getLocaleCode()->willReturn('pl_PL');
     $localeProvider->getDefaultLocaleCode()->willReturn('en_US');
     $request->setLocale('pl_PL')->shouldBeCalled();
     $request->setDefaultLocale('en_US')->shouldBeCalled();
     $this->onKernelRequest($event);
 }
コード例 #11
0
 /**
  * @param LifecycleEventArgs $args
  */
 public function postLoad(LifecycleEventArgs $args)
 {
     $entity = $args->getEntity();
     if (!$entity instanceof TranslatableInterface) {
         return;
     }
     try {
         $entity->setCurrentLocale($this->localeContext->getLocaleCode());
     } catch (LocaleNotFoundException $exception) {
         $entity->setCurrentLocale($this->localeProvider->getDefaultLocaleCode());
     }
     $entity->setFallbackLocale($this->localeProvider->getDefaultLocaleCode());
 }
コード例 #12
0
 function it_throws_a_locale_not_found_exception_if_default_locale_is_not_available(LocaleProviderInterface $localeProvider)
 {
     $localeProvider->getAvailableLocalesCodes()->willReturn(['es_ES', 'en_US']);
     $localeProvider->getDefaultLocaleCode()->willReturn('pl_PL');
     $this->shouldThrow(LocaleNotFoundException::class)->during('getLocaleCode');
 }
コード例 #13
0
ファイル: RequestLocaleSetter.php プロジェクト: sylius/sylius
 /**
  * @param GetResponseEvent $event
  *
  * @throws LocaleNotFoundException
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     $request->setLocale($this->localeContext->getLocaleCode());
     $request->setDefaultLocale($this->localeProvider->getDefaultLocaleCode());
 }