getAvailableLocales() публичный Метод

Returns array of locales from given resources
public getAvailableLocales ( ) : array
Результат array
Пример #1
0
 public function getLocale()
 {
     $languages = $this->translator->getAvailableLocales();
     foreach ($languages as $itemL) {
         $result = explode("_", $itemL);
         $iLocale[] = $result[0];
     }
     return $iLocale;
 }
Пример #2
0
 public function dump()
 {
     $allMessages = [];
     $locales = $this->translator->getAvailableLocales();
     foreach ($locales as $locale) {
         $catalogue = $this->translator->getCatalogue($locale);
         $messages = $catalogue->all();
         $shortLocale = $this->getShortLocale($locale);
         $allMessages[$shortLocale] = $messages;
     }
     return Json::encode($allMessages, Json::PRETTY);
 }
Пример #3
0
 /**
  * @param \Kdyby\Translation\Translator $translator
  * @return string|NULL
  */
 public function resolve(Kdyby\Translation\Translator $translator)
 {
     $short = array_map(function ($locale) {
         return substr($locale, 0, 2);
     }, $translator->getAvailableLocales());
     return $this->httpRequest->detectLanguage($short) ?: NULL;
 }
Пример #4
0
 /**
  * @param Translator $translator
  * @return string|NULL
  */
 public function resolve(Translator $translator)
 {
     if (!$this->session->isStarted() && $this->httpResponse->isSent()) {
         trigger_error("The advice of session locale resolver is required but the session has not been started and headers had been already sent. " . "Either start your sessions earlier or disabled the SessionResolver.", E_USER_WARNING);
         return NULL;
     }
     if (empty($this->localeSession->locale)) {
         return NULL;
     }
     $short = array_map(function ($locale) {
         return substr($locale, 0, 2);
     }, $translator->getAvailableLocales());
     if (!in_array(substr($this->localeSession->locale, 0, 2), $short, TRUE)) {
         return NULL;
     }
     return $this->localeSession->locale;
 }
 public function compute(Translator $translator, $locale)
 {
     $locales = array();
     foreach ($this->fallbackLocales as $fallback) {
         if ($fallback === $locale) {
             continue;
         }
         $locales[] = $fallback;
     }
     if (strrchr($locale, '_') !== false) {
         array_unshift($locales, substr($locale, 0, -strlen(strrchr($locale, '_'))));
     }
     foreach ($translator->getAvailableLocales() as $available) {
         if ($available === $locale) {
             continue;
         }
         if (substr($available, 0, 2) === substr($locale, 0, 2)) {
             array_unshift($locales, $available);
             break;
         }
     }
     return array_unique($locales);
 }
 /**
  * Detects language from the Accept-Language header.
  * This method uses the code from Nette\Http\Request::detectLanguage.
  * @link https://github.com/nette/http/blob/0d9ef49051fba799148ef877dd32928a68731766/src/Http/Request.php#L294-L326
  * @author David Grudl
  * @param Kdyby\Translation\Translator $translator
  * @return string|NULL
  */
 public function resolve(Kdyby\Translation\Translator $translator)
 {
     $header = $this->httpRequest->getHeader('Accept-Language');
     if (!$header) {
         return NULL;
     }
     $langs = [];
     foreach ($translator->getAvailableLocales() as $locale) {
         $langs[] = $locale;
         if (strlen($locale) > 2) {
             $langs[] = substr($locale, 0, 2);
         }
     }
     if (!$langs) {
         return NULL;
     }
     $s = strtolower($header);
     // case insensitive
     $s = strtr($s, '_', '-');
     // cs_CZ means cs-CZ
     rsort($langs);
     // first more specific
     preg_match_all('#(' . implode('|', $langs) . ')(?:-[^\\s,;=]+)?\\s*(?:;\\s*q=([0-9.]+))?#', $s, $matches);
     if (!$matches[0]) {
         return NULL;
     }
     $max = 0;
     $lang = NULL;
     foreach ($matches[1] as $key => $value) {
         $q = $matches[2][$key] === '' ? 1.0 : (double) $matches[2][$key];
         if ($q > $max) {
             $max = $q;
             $lang = $value;
         }
     }
     return $lang;
 }
 /**
  * Saves translation to catalog. ONLY NEON IS SUPPORTED AT THIS MOMENT
  *
  * @param string $locale
  * @param string $code
  * @param string $string
  */
 private function saveTranslationToCatalogue($locale, $code, $string)
 {
     if (!in_array($locale, $this->translator->getAvailableLocales())) {
         throw new Kdyby\TranslationControl\InvalidArgumentException(sprintf('Catalog "%s" is unknown.', $locale));
     }
     $catalog = $this->translator->getCatalogue($locale);
     $catalogFound = FALSE;
     foreach ($catalog->getResources() as $resource) {
         if (get_class($resource) != 'Symfony\\Component\\Config\\Resource\\FileResource') {
             continue;
         }
         /** @var \Symfony\Component\Config\Resource\FileResource $resource */
         $filePath = $resource->getResource();
         if (pathinfo($filePath, PATHINFO_EXTENSION) != 'neon' || !Nette\Utils\Strings::endsWith(strtolower($filePath), sprintf('%s.neon', strtolower($locale)))) {
             continue;
         }
         $catalog->add(array($code => $string));
         $this->saveTranslationToNeonFile($filePath, $code, $string);
         $catalogFound = TRUE;
     }
     if (!$catalogFound) {
         throw new Kdyby\TranslationControl\UnsupportedCatalogException('Only neon catalog is supported.');
     }
 }
Пример #8
0
 public function __construct($defaultLocale, Kdyby\Translation\Translator $translator)
 {
     $this->availableLocales = $translator->getAvailableLocales();
     $this->defaultLocale = $defaultLocale;
 }
Пример #9
0
 public function getAvailableLocales()
 {
     return $this->translator->getAvailableLocales();
 }
 /**
  * Sets translator
  *
  * @param \Kdyby\Translation\Translator $translator translator
  * @return self
  */
 public function setTranslator(Translator $translator)
 {
     $availableLocales = $translator->getAvailableLocales();
     if (in_array('cs_CZ', $availableLocales) === FALSE) {
         $translator->addResource('neon', __DIR__ . '/lang/visualPaginator.cs_CZ.neon', 'cs_CZ', 'visualPaginator');
     }
     if (in_array('en_GB', $availableLocales) === FALSE) {
         $translator->addResource('neon', __DIR__ . '/lang/visualPaginator.en_GB.neon', 'en_GB', 'visualPaginator');
     }
     $this->translator = $translator;
     return $this;
 }