public function getLocalePath(Locale $locale, Request $request) { $arrPath = explode('/', ltrim($request->getPathInfo(), '/')); if (in_array($arrPath[0], $this->manager->getAllAliases())) { unset($arrPath[0]); } $resultUrl = '/' . implode('/', $arrPath); if (!$this->manager->getIgnoreDefaultLocaleFlag() || $locale->getAlias() != $this->manager->getDefaultLocaleAlias()) { $resultUrl = '/' . $locale->getAlias() . $resultUrl; } return $resultUrl; }
/** * {@inheritDoc} */ public function load(ObjectManager $manager) { $data = [['English', 'en', true], ['Русский', 'ru', true], ['中文简体', 'zh', false], ['中文繁體', 'tw', false], ['Indonesia', 'id', false], ['Melayu', 'ms', false], ['Italian', 'it', false], ['Español', 'es', false], ['Português', 'pt', false], ['Polish', 'pl', false], ['Deutsch', 'de', false], ['Suomi', 'fi', false], ['Norsk', 'no', false], ['Svenska', 'sv', false], ['Dansk', 'da', false], ['Nederlands', 'nl', false], ['हिंदी', 'hi', false], ['اللغة العربية', 'ar', false], ['Українська', 'ua', false], ['ภาษาไทย', 'th', false], ['Français', 'fr', false]]; foreach ($data as $position => $item) { list($name, $alias, $state) = $item; $locale = new Locale(); $locale->setName($name); $locale->setAlias($alias); $locale->setState($state); $manager->persist($locale); } $manager->flush(); }
/** * @param $transFile * @param $resourceDirs * @param $locale * @param $loader * @param $globalCatalogue * @return MessageCatalogue */ protected function merge($transFile, &$resourceDirs, Locale $locale, TranslationLoader $loader, $globalCatalogue) { $transFileDir = dirname($transFile); if (!in_array($transFileDir, $resourceDirs) && '.' != $transFileDir) { $resourceDirs[] = $transFileDir; $currentCatalogue = new MessageCatalogue($locale->getAlias()); $loader->loadMessages($transFileDir, $currentCatalogue); $operation = new MergeOperation($globalCatalogue, $currentCatalogue); $globalCatalogue = $operation->getResult(); return $globalCatalogue; } return $globalCatalogue; }
public function sortLocales(Locale $a, Locale $b) { if (in_array($a->getAlias(), $this->getLocalesAlias()) && in_array($b->getAlias(), $this->getLocalesAlias())) { if ($a->getPosition() == $b->getPosition()) { $result = 0; } else { $result = $a->getPosition() < $b->getPosition() ? -1 : 1; } } else { if (in_array($a->getAlias(), $this->getLocalesAlias())) { $result = -1; } elseif (in_array($b->getAlias(), $this->getLocalesAlias())) { $result = 1; } else { if ($a->getPosition() == $b->getPosition()) { $result = 0; } else { $result = $a->getPosition() < $b->getPosition() ? -1 : 1; } } } return $result; }