/** * @param Request $request * @param string $code * * @return Response */ public function switchAction(Request $request, $code) { if (!in_array($code, $this->localeProvider->getAvailableLocalesCodes())) { throw new HttpException(Response::HTTP_NOT_ACCEPTABLE, sprintf('The locale code "%s" is invalid.', $code)); } $this->localeChangeHandler->handle($code); return new RedirectResponse($request->headers->get('referer', $request->getBaseUrl())); }
/** * {@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; }
/** * {@inheritdoc} */ public function getLocaleCode() { $availableLocalesCodes = $this->localeProvider->getAvailableLocalesCodes(); try { $localeCode = $this->localeStorage->get($this->channelContext->getChannel()); } catch (ChannelNotFoundException $exception) { throw new LocaleNotFoundException(null, $exception); } if (!in_array($localeCode, $availableLocalesCodes, true)) { throw LocaleNotFoundException::notAvailable($localeCode, $availableLocalesCodes); } return $localeCode; }
/** * {@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)); }
/** * Builds frontend locale menu. * * @return ItemInterface */ public function createMenu() { $locales = $this->localeProvider->getAvailableLocalesCodes(); $menu = $this->factory->createItem('root', ['childrenAttributes' => ['class' => 'nav nav-pills']]); if (1 === count($locales)) { $menu->setDisplay(false); return $menu; } foreach ($locales as $locale) { $menu->addChild($locale, ['route' => 'sylius_locale_change', 'routeParameters' => ['locale' => $locale]])->setLabel(Intl::getLocaleBundle()->getLocaleName($locale)); } return $menu; }
function it_builds_form(LocaleProviderInterface $localeProvider, FormBuilderInterface $builder) { $localeProvider->getAvailableLocalesCodes()->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']); }
function it_throws_an_exception_if_locale_taken_from_storage_is_not_available(ChannelContextInterface $channelContext, LocaleStorageInterface $localeStorage, LocaleProviderInterface $localeProvider, ChannelInterface $channel) { $channelContext->getChannel()->willReturn($channel); $localeStorage->get($channel)->willReturn('pl_PL'); $localeProvider->getAvailableLocalesCodes()->willReturn(['en_US', 'en_UK']); $this->shouldThrow(LocaleNotFoundException::class)->during('getLocaleCode'); }
function it_returns_master_request_locale_code(RequestStack $requestStack, LocaleProviderInterface $localeProvider, Request $request) { $requestStack->getMasterRequest()->willReturn($request); $request->attributes = new ParameterBag(['_locale' => 'pl_PL']); $localeProvider->getAvailableLocalesCodes()->willReturn(['pl_PL', 'de_DE']); $this->getLocaleCode()->shouldReturn('pl_PL'); }
/** * {@inheritdoc} */ public function getLocaleCode() { $request = $this->requestStack->getMasterRequest(); if (null === $request) { throw new LocaleNotFoundException('No master request available.'); } $localeCode = $request->attributes->get('_locale'); if (null === $localeCode) { throw new LocaleNotFoundException('No locale attribute is set on the master request.'); } $availableLocalesCodes = $this->localeProvider->getAvailableLocalesCodes(); if (!in_array($localeCode, $availableLocalesCodes, true)) { throw LocaleNotFoundException::notAvailable($localeCode, $availableLocalesCodes); } return $localeCode; }
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'); }
/** * @return Response */ public function renderSelectorAction() { return $this->templatingEngine->renderResponse('SyliusShopBundle:Locale:selector.html.twig', ['activeLocaleCode' => $this->localeContext->getLocaleCode(), 'availableLocalesCodes' => $this->localeProvider->getAvailableLocalesCodes()]); }