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); } } } } JFIF ( %!1!%)+./.383,7(-.+  /&%---5-----------/----------------------------------"=!1AQa"q2BRb3r#$s!!1A"Q2 ?D@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DD\n(i5Y>v.GrQJD@DDD@DDD@DDD@DDD@DDEf0ւI<(6.LngF*5ˏE,϶U=^YKQ k,H<_9xNs<8Wг~5wruS黌P8һ"cv ?86*Q:`C n^ _%/ϛENӁx=dONas?~?<{fULp dU64x#ElP8 ]q5"+""" """ """ "l5Y"I f2V5LeR}LͿD9ygPmIMϹT"{6I,o>m_v FFro~LK;a%܃m串 ;O=h`|h%7Ba+Y Eupۀ؁̶y7=òuVcw|BuO._'8l"u?1+h ۳ICnu DH7 *^N3ڮƌ=>1:8q:->;D:v+4uň GkͰM-$^&o*UMcjcx3c~Il[){\sIB,}մ+q#ajR>4ξ$U?u']Ux*;S0dZ:O1m~~WD].AEypS3`8Ql-Df_Qy E*kT96*>0C/7OsEMuB7?XUǶ4 ic~XŁk ,ͪc-2I.&ApAM% kߏI>U XJW.kIl*gZic$3oTsM(WQ̚Յ7pk[G=F@RcpC͞Zb?ry3ҙձS4Cws S+eg3oE9H5 kCZ6  F" $/+w|%k{x\z~ˣ R2u".< z,1@>Vm\XcX\rM2r6_2Zd$'ߟ5uS/4Uƒ}ӗ&\w-.<K&8g-.qA^ƏV Z^Rx;UctI:D'ӁS!I1as,,vʅnZK|Tkű]iݑýµG DѸٰ.M2,ɦo1dtUO}|M64 .GU]eKw@8.3o [V gGO% &$ A 9.iSAجC, øuV5C Ww$yfED@U6UgP]4y?TzTYe ΝV o $( ZTran1X 4Z\+GVeLK?wF坍SYƘÝuzmM!hh;dE[-4̽!sc@In]z*[2wzmv,ͽ*W5/(\sK/Q3D7! 4$kDQ/v-s}:HYdm ;H Ϊq3.q06^ֳrN7t\ ŁJ$96~a} \LcE]P7"ߊ[jZ@ >.Yj՝5P01)h0u\1OTn?:e1w枡;{Z*Sw# iS$g7™dųxЭ֟^jfF-;@0W6 quGYFߊ˸^Y{8@`H -,i]c-]_ @@6uaHǰD DD6#*_x`#%%Ǖ+f]P & chq6Wg>62GN{)Zb3,1i[x*c#]ipݧ@emgn YߞfYojӡ >E\&uCnB̙Y@}!ԍmKx*@ m>|V&{(KHn޲VtjDŽ[Dzf?V1e|ϒ59"|B\\ρċUE+8ҩMڀD_©94&:GB0k]bFmdޓ;VɱI:Jq.)8v.VF3YI!S R hSzӗ7 p Z#p 7S2Hax(is^6p!BϪ漒 EȸEEOjsw;AhZ_o!좱X> ^ D8]Qah;EaFh$'Y8U\X4}~%#H#L`6qyd1 ns.v^8g75""و \xyG~WmF9"?Ƽoo̰fR?kܟsOam2jXX  AQU'$a<[=FޜW-}u/Ę+&Zam!ggK2sq] I\<u.l+S,Z~ˆ<㏒u*I!ux s`O> 2Žt7'w9PYI &D#c['^wMv4sek-V,5*ckv$*KVC?M&D0t˜I7$=RzsM<<ǴEL8܆ iQgjnC\$Kuϡq{A1soNWU:^/DdJf}VҢ`Z` 5-nps֧UZvmsɠuVLժAH}ß歜]ngZRGe5}>In0߈zU> :cWwoHRl5#;=-.89D &6DE(sf81Zxy^}VsL%J<(@Zoc͞mu m.^SJȞ+]-( &XT9 jnq|8pTan {̸ʏߟ9^SqH|DN8tqZkvh_ANd6&kҾ(\ѵ*TT R ϧe4 I=Q,|.Z]UaޗւII>@\%˝Ք[Mk(]R+zf#Vg\ǞF'*gIn*ݕ y~e?+c ra0t7M65[D@DDD@DDD@Z1Vcb=y+ Os> "ݦ;khySq>5ٍyE'.dbU:֨l0򟢛UT_Wuj(:ַ\)lDT7>$lQpM6n6^Mg~+3RU0@l@cy坂&yV)J[rQoLa}YQRKwO;э¶lG":M/x yI’،[.pkCb˛!Y2RkO}ǒ=WEPU)1w&uV<&ß Iio&oZO9Ogpx4_}'{!K"-d+m""?