private function populateTranslationLocaleMenu(Item $menu) { $requestParameters = $this->getRequestParameters(); $route = $this->request->get('_route'); $languageBundle = Intl::getLanguageBundle(); if (isset($requestParameters['redirect_uri'])) { $redirectRequest = $this->createRedirectRequest($requestParameters['redirect_uri']); } foreach ($this->localeManager->getLocales() as $locale) { $requestParameters['locale'] = $locale; if (isset($redirectRequest)) { try { $requestParameters['redirect_uri'] = $this->generateRequestUriForLocale($redirectRequest, $locale); } catch (ResourceNotFoundException $e) { } } $localeItem = new RoutableItem(sprintf('translation-locale.%s', $locale), $route, $requestParameters); $localeItem->setLabel($languageBundle->getLanguageName($locale, null, $this->request->getLocale())); $menu->addChild($localeItem); } }
function let(TranslatorInterface $translator, Router $router, LocaleManager $localeManager, RequestStack $requestStack, Request $request, ParameterBag $query, ParameterBag $server) { $localeManager->getLocale()->willReturn('en'); $request->getLocale()->willReturn('en'); $request->get('_route_params')->willReturn(array('element' => 'event', 'locale' => 'en')); $request->get('_route')->willReturn('admin_translatable_list'); $requestStack->getCurrentRequest()->willReturn($request); $query->all()->willReturn(array('param1' => 'val1', 'redirect_uri' => '/admin/en/list/element?param=value')); $request->query = $query; $router->matchRequest(Argument::that(function ($argument) { return $argument->server->get('REQUEST_URI') === '/admin/en/list/element' && $argument->server->get('QUERY_STRING') === 'param=value'; }))->willReturn(array('_route' => 'some_admin_route', 'locale' => 'en', 'element' => 'element')); $request->server = $server; $localeManager->getLocales()->willReturn(array('pl', 'en', 'de')); $translator->trans('admin.locale.dropdown.title', array('%locale%' => 'en'), 'FSiAdminTranslatableBundle')->willReturn('Menu label'); $this->beConstructedWith($translator, $router, $localeManager, $requestStack); }