IX; foreach ($messages as $id => $message) { unset($this->messages[$altDomain][$id]); $this->messages[$domain][$id] = $message; } if ([] === ($this->messages[$altDomain] ?? null)) { unset($this->messages[$altDomain]); } } public function addCatalogue(MessageCatalogueInterface $catalogue): void { if ($catalogue->getLocale() !== $this->locale) { throw new LogicException(\sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s".', $catalogue->getLocale(), $this->locale)); } foreach ($catalogue->all() as $domain => $messages) { if ($intlMessages = $catalogue->all($domain.self::INTL_DOMAIN_SUFFIX)) { $this->add($intlMessages, $domain.self::INTL_DOMAIN_SUFFIX); $messages = array_diff_key($messages, $intlMessages); } $this->add($messages, $domain); } foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } if ($catalogue instanceof MetadataAwareInterface) { $metadata = $catalogue->getMetadata('', ''); $this->addMetadata($metadata); } if ($catalogue instanceof CatalogueMetadataAwareInterface) { $catalogueMetadata = $catalogue->getCatalogueMetadata('', ''); $this->addCatalogueMetadata($catalogueMetadata); } } public function addFallbackCatalogue(MessageCatalogueInterface $catalogue): void { // detect circular references $c = $catalogue; while ($c = $c->getFallbackCatalogue()) { if ($c->getLocale() === $this->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } } $c = $this; do { if ($c->getLocale() === $catalogue->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } foreach ($catalogue->getResources() as $resource) { $c->addResource($resource); } } while ($c = $c->parent); $catalogue->parent = $this; $this->fallbackCatalogue = $catalogue; foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } } public function getFallbackCatalogue(): ?MessageCatalogueInterface { return $this->fallbackCatalogue; } public function getResources(): array { return array_values($this->resources); } public function addResource(ResourceInterface $resource): void { $this->resources[$resource->__toString()] = $resource; } public function getMetadata(string $key = '', string $domain = 'messages'): mixed { if ('' == $domain) { return $this->metadata; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX])) { if ('' === $key) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX]; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key])) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key]; } } if (isset($this->metadata[$domain])) { if ('' == $key) { return $this->metadata[$domain]; } if (isset($this->metadata[$domain][$key])) { return $this->metadata[$domain][$key]; } } return null; } public function setMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->metadata[$domain][$key] = $value; } public function deleteMetadata(string $key = '', string $domain = 'messages'): void { if ('' == $domain) { $this->metadata = []; } elseif ('' == $key) { unset($this->metadata[$domain]); } else { unset($this->metadata[$domain][$key]); } } public function getCatalogueMetadata(string $key = '', string $domain = 'messages'): mixed { if (!$domain) { return $this->catalogueMetadata; } if (isset($this->catalogueMetadata[$domain])) { if (!$key) { return $this->catalogueMetadata[$domain]; } if (isset($this->catalogueMetadata[$domain][$key])) { return $this->catalogueMetadata[$domain][$key]; } } return null; } public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->catalogueMetadata[$domain][$key] = $value; } public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages'): void { if (!$domain) { $this->catalogueMetadata = []; } elseif (!$key) { unset($this->catalogueMetadata[$domain]); } else { unset($this->catalogueMetadata[$domain][$key]); } } /** * Adds current values with the new values. * * @param array $values Values to add */ private function addMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setMetadata($key, $value, $domain); } } } private function addCatalogueMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setCatalogueMetadata($key, $value, $domain); } } } } JFIFC  !"$"$C" P5-=JϘJbR2q 0 A?<&oWsDŢ~psn8Ni=ۗ=/5x9KaQn :llLlo6,z@73 laӝ3/ mu6:k9Tuulfp$͇"g;Z]ލ=@0|OmUrtWV28=aI:6y=yg y_G3yG}tK8Eu[>+̀O+l|ݎWXEͻ9}AO|9/?wz[̫ ;~.p<0{z]q*eԢ,|@A^Y^Mlq`U68IF@Ҝ/krєcx*]je Hkk̄3ȪsKκhe,2=XX/)9<ͺ,k5WRb`YIaJʮreV՗rjJ \Ӡ=蠈h:|6CHWU==%Her$ wteχ 6y;`H~`VsW,ߵrrgA&)&#\j+m9ظ9&=QTMӳphY moy߹Z I{/ Sqޯ؟'ݘPȐY}dMD|(zDtdPGT- d(bERMe؝ݵX/C)T=hW!N6Z]/[l |ʸs|Cu=Oo gu63w[Q4XMZ6٬Uܓͭ%mל VdG[P@J B[*nPc0lf,19Q)Ngk{t^ns0ɻ/q Ե뵙#w\=n. V33-r DmDtN$f(WCݺ[[!^pRpA+n,3@&5A uiTTWJoE!ULhDdS:ۈnXw pUt܇SAw]<lQ˖8vjz+&Xؔ_Z?L:-\7(!1AQ0aq@Pp?!wcp8~\s 4;$ Bu|m[F&B:f|*6[b$nqU/H,#~F|R~rBy) .֕ "ܶMzʎB E)l~5c =~ wG4JՠQ35S7f4 yV;F AlB ilSZ/x0\xRx45EJYN:[Զ@F! Uf z}pN ^]حJp K 0B/.Aꍦ4`lv8 - BeWLܡB4fYƲrA5 &յj |q<{eܴ;`t WlSVxcT!9 (4!F(U e\ek c[-&cG9o#AM+zf/[vE/b&V 9}(+ {Ղ= ,AxRpj*J+KbnbcNъ!VD@0@ޯїg}0tv$ucƅ |O(agwV\c7T@yջ\j0&jȏWƣ ek/"(D fU_ƶB&] ߼` ;`P x)]}P(2Dbkydz*$ޚ̱Xi-* > V- qCą1W)"ĺ>Pm yJ^ڂlr֡,[ܭKv\eT\*yGj$ca5R)lX2v}Q}$16`,% +b }(`d,&2nIX1 ]G;0uF3=՚ HVὉ mSwZEfNF0/ <<<<<<<<<1ԙ< >w<m[<,,2S<$ <-!<*D<[?<+ڻ<1V'<> -/<<<<*!1AQ aq0@P?8Zqj)`_ =ϼX/;YE>`|Jɏvp/WlBsM멁Pd\7Y<W۟V6f ]p+[l,q뵕z|oۈUuʚqQ^|nDhRͤBD:ON#͘&#I