/** * Will check the translator for the key "eav.family.{$code}.label" * and humanize the code if no translation is found * * @param string|array $tIds * @param array $parameters * @param string $fallback * @param bool $humanizeFallback * @return string */ protected function tryTranslate($tIds, array $parameters = [], $fallback = null, $humanizeFallback = true) { if (!is_array($tIds)) { $tIds = [$tIds]; } foreach ($tIds as $tId) { try { if ($this->translator instanceof TranslatorBagInterface) { if ($this->translator->getCatalogue()->has($tId)) { /** @noinspection PhpUndefinedMethodInspection */ return $this->translator->trans($tId, $parameters); } } elseif ($this->translator instanceof TranslatorInterface) { $label = $this->translator->trans($tId, $parameters); if ($label !== $tId) { return $label; } } } catch (\InvalidArgumentException $e) { // Do nothing } } if ($fallback === null) { return null; } if (!$humanizeFallback) { return $fallback; } $pattern = '/(?!^)[A-Z]{2,}(?=[A-Z][a-z])|[A-Z][a-z]|\\d{1,}/'; return str_replace('_', ' ', preg_replace($pattern, ' $0', $fallback)); }
/** * @param string $message * @param string $defaultMessage * @param int $count * @param array $arguments * @param null|string $domain * @param null|string $locale * @return string */ public function transchoiceWithDefault($message, $defaultMessage, $count, array $arguments = array(), $domain = null, $locale = null) { if (null === $domain) { $domain = 'messages'; } // If < sf2.6 if (!method_exists($this->translator, 'getCatalogue')) { return $this->transchoiceWithDefaultLegacy($message, $defaultMessage, $count, $arguments, $domain, $locale); } if (false == $this->translator->getCatalogue($locale)->defines($message, $domain)) { return $this->translator->transChoice($defaultMessage, $count, array_merge(array('%count%' => $count), $arguments), $domain, $locale); } return $this->translator->transChoice($message, $count, array_merge(array('%count%' => $count), $arguments), $domain, $locale); }
/** * @param string|null $locale * @param string|null $domain * @param string $id * @param string $translation * @param array|null $parameters * @param int|null $number */ private function collectMessage($locale, $domain, $id, $translation, $parameters = array(), $number = null) { if (null === $domain) { $domain = 'messages'; } $id = (string) $id; $catalogue = $this->translator->getCatalogue($locale); $locale = $catalogue->getLocale(); if ($catalogue->defines($id, $domain)) { $state = self::MESSAGE_DEFINED; } elseif ($catalogue->has($id, $domain)) { $state = self::MESSAGE_EQUALS_FALLBACK; $fallbackCatalogue = $catalogue->getFallbackCatalogue(); while ($fallbackCatalogue) { if ($fallbackCatalogue->defines($id, $domain)) { $locale = $fallbackCatalogue->getLocale(); break; } $fallbackCatalogue = $fallbackCatalogue->getFallbackCatalogue(); } } else { $state = self::MESSAGE_MISSING; } $this->messages[] = array('locale' => $locale, 'domain' => $domain, 'id' => $id, 'translation' => $translation, 'parameters' => $parameters, 'transChoiceNumber' => $number, 'state' => $state); }
/** * @param \OAuth2\Endpoint\Authorization\AuthorizationInterface $authorization * * @return null|string */ private function getUiLocale(AuthorizationInterface $authorization) { if (!method_exists($this->translator, 'getCatalogue') || !$authorization->hasQueryParam('ui_locales')) { return; } $ui_locales = explode(' ', $authorization->getQueryParam('ui_locales')); foreach ($ui_locales as $ui_locale) { $catalogue = $this->translator->getCatalogue($ui_locale); if (in_array('SpomkyLabsOAuth2Server', $catalogue->getDomains())) { return $ui_locale; } } }
/** * Logs for missing translations. * * @param string $id * @param string|null $domain * @param string|null $locale */ private function log($id, $domain, $locale) { if (null === $domain) { $domain = 'messages'; } $id = (string) $id; $catalogue = $this->translator->getCatalogue($locale); if ($catalogue->defines($id, $domain)) { return; } if ($catalogue->has($id, $domain)) { $this->logger->debug('Translation use fallback catalogue.', array('id' => $id, 'domain' => $domain, 'locale' => $catalogue->getLocale())); } else { $this->logger->warning('Translation not found.', array('id' => $id, 'domain' => $domain, 'locale' => $catalogue->getLocale())); } }
/** * {@inheritdoc} */ public function getCatalogue($locale = null) { return $this->translator->getCatalogue($locale); }
/** * Returns the message catalogue * * @param string $locale * * @return MessageCatalogueInterface */ protected function getCatalogue(string $locale) : MessageCatalogueInterface { return $this->translator->getCatalogue($locale); }
/** * Return the number of translated messages * * @param string $locale * * @return int */ protected function getProgress($locale) { $catalogue = $this->translator->getCatalogue($locale); return count($catalogue->all(), COUNT_RECURSIVE); }