/** * Creat new Translator instance. * * @param \Viserio\Contracts\Translation\MessageCatalogue $catalogue * @param \Viserio\Contracts\Translation\MessageSelector $selector The message selector for pluralization * * @throws \InvalidArgumentException If a locale contains invalid characters */ public function __construct(MessageCatalogueContract $catalogue, MessageSelectorContract $selector) { $this->setLocale($catalogue->getLocale()); $this->catalogue = $catalogue; $this->selector = $selector; }
/** * Add message catalogue. * * @param \Viserio\Contracts\Translation\MessageCatalogue $messageCatalogue * * @return $this */ public function addMessageCatalogue(MessageCatalogueContract $messageCatalogue) : TranslationManager { $locale = $messageCatalogue->getLocale(); if ($fallback = $this->getLanguageFallback($messageCatalogue->getLocale())) { $messageCatalogue->addFallbackCatalogue($fallback); } elseif ($fallback = $this->defaultFallback) { $messageCatalogue->addFallbackCatalogue($fallback); } $translation = new Translator($messageCatalogue, $this->messageSelector); if ($this->logger !== null) { $translation->setLogger($this->logger); } $this->translations[$locale] = $translation; return $this; }
/** * {@inheritdoc} */ public function addFallbackCatalogue(MessageCatalogueContract $catalogue) { // detect circular references $circular = $this; do { if ($circular->getLocale() === $catalogue->getLocale()) { throw new LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } } while ($circular = $circular->parent); $catalogue->setParent($this); $this->fallbackCatalogue = $catalogue; }