| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\Translation\Command;use Symfony\Component\Translation\MessageCatalogue;use Symfony\Component\Translation\MessageCatalogueInterface;use Symfony\Component\Translation\TranslatorBag;/** * @internal */trait TranslationTrait{    private function readLocalTranslations(array $locales, array $domains, array $transPaths): TranslatorBag    {        $bag = new TranslatorBag();        foreach ($locales as $locale) {            $catalogue = new MessageCatalogue($locale);            foreach ($transPaths as $path) {                $this->reader->read($path, $catalogue);            }            if ($domains) {                foreach ($domains as $domain) {                    $bag->addCatalogue($this->filterCatalogue($catalogue, $domain));                }            } else {                $bag->addCatalogue($catalogue);            }        }        return $bag;    }    private function filterCatalogue(MessageCatalogue $catalogue, string $domain): MessageCatalogue    {        $filteredCatalogue = new MessageCatalogue($catalogue->getLocale());        // extract intl-icu messages only        $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX;        if ($intlMessages = $catalogue->all($intlDomain)) {            $filteredCatalogue->add($intlMessages, $intlDomain);        }        // extract all messages and subtract intl-icu messages        if ($messages = array_diff($catalogue->all($domain), $intlMessages)) {            $filteredCatalogue->add($messages, $domain);        }        foreach ($catalogue->getResources() as $resource) {            $filteredCatalogue->addResource($resource);        }        if ($metadata = $catalogue->getMetadata('', $intlDomain)) {            foreach ($metadata as $k => $v) {                $filteredCatalogue->setMetadata($k, $v, $intlDomain);            }        }        if ($metadata = $catalogue->getMetadata('', $domain)) {            foreach ($metadata as $k => $v) {                $filteredCatalogue->setMetadata($k, $v, $domain);            }        }        return $filteredCatalogue;    }}
 |