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; }
/** * @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; }