public function createLocaleMenu(MenuEvent $event) { if (count($this->locales) < 2) { return; } $language = new Item('admin-locale'); $language->setLabel($this->translator->trans('admin.language.current', array('%locale%' => $this->getLanguageName()), 'FSiAdminBundle')); $language->setOptions(array('attr' => array('id' => 'language'))); foreach ($this->locales as $locale) { $localeItem = new RoutableItem(sprintf('admin-locale.%s', $locale), 'fsi_admin_locale', array('_locale' => $locale, 'redirect_uri' => $this->requestStack->getMasterRequest()->getUri())); $localeItem->setLabel($this->getLanguageName($locale)); if ($locale === $this->getCurrentLocale()) { $localeItem->setOptions(array('attr' => array('class' => 'active'))); } $language->addChild($localeItem); } $event->getMenu()->addChild($language); }
private function populateMenu(Item $menu, array $configs) { foreach ($configs as $itemConfig) { $item = $this->buildSingleItem($itemConfig); if (null !== $item) { $options = array('attr' => array('class' => 'admin-element')); $options['elements'] = $this->buildItemElements($itemConfig); $item->setOptions($options); } if (null === $item) { if ($this->isSingleItem($itemConfig)) { continue; } $item = new Item(key($itemConfig)); $group = array_values($itemConfig); $this->populateMenu($item, $group[0]); } $menu->addChild($item); } }
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); } }