PHP 8.3.31
Preview: QtFileLoader.php Size: 2.70 KB
/home/getspomw/royalsquad.us/vendor/symfony/translation/Loader/QtFileLoader.php

<?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\Loader;

use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\Config\Util\XmlUtils;
use Symfony\Component\Translation\Exception\InvalidResourceException;
use Symfony\Component\Translation\Exception\NotFoundResourceException;
use Symfony\Component\Translation\Exception\RuntimeException;
use Symfony\Component\Translation\MessageCatalogue;

/**
 * QtFileLoader loads translations from QT Translations XML files.
 *
 * @author Benjamin Eberlei <kontakt@beberlei.de>
 */
class QtFileLoader implements LoaderInterface
{
    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
    {
        if (!class_exists(XmlUtils::class)) {
            throw new RuntimeException('Loading translations from the QT format requires the Symfony Config component.');
        }

        if (!stream_is_local($resource)) {
            throw new InvalidResourceException(\sprintf('This is not a local file "%s".', $resource));
        }

        if (!file_exists($resource)) {
            throw new NotFoundResourceException(\sprintf('File "%s" not found.', $resource));
        }

        try {
            $dom = XmlUtils::loadFile($resource);
        } catch (\InvalidArgumentException $e) {
            throw new InvalidResourceException(\sprintf('Unable to load "%s".', $resource), $e->getCode(), $e);
        }

        $internalErrors = libxml_use_internal_errors(true);
        libxml_clear_errors();

        $xpath = new \DOMXPath($dom);
        $nodes = $xpath->evaluate('//TS/context/name[text()="'.$domain.'"]');

        $catalogue = new MessageCatalogue($locale);
        if (1 == $nodes->length) {
            $translations = $nodes->item(0)->nextSibling->parentNode->parentNode->getElementsByTagName('message');
            foreach ($translations as $translation) {
                $translationValue = (string) $translation->getElementsByTagName('translation')->item(0)->nodeValue;

                if ($translationValue) {
                    $catalogue->set(
                        (string) $translation->getElementsByTagName('source')->item(0)->nodeValue,
                        $translationValue,
                        $domain
                    );
                }
            }

            if (class_exists(FileResource::class)) {
                $catalogue->addResource(new FileResource($resource));
            }
        }

        libxml_use_internal_errors($internalErrors);

        return $catalogue;
    }
}

Directory Contents

Dirs: 0 × Files: 15

Name Size Perms Modified Actions
1.45 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
1.96 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
27.24 KB lrw-r--r-- 2026-04-27 12:52:12
Edit Download
1.69 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
1.79 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
2.73 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
537 B lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
1.49 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
950 B lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
4.17 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
1.03 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
4.99 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
2.70 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
9.24 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download
1.57 KB lrw-rw-rw- 2025-09-17 06:53:19
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).