/
home
/
sjslayjy
/
public_html
/
theweavenest
/
vendor
/
symfony
/
translation
/
Tests
/
Command
/
Upload File
HOME
<?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\Tests\Command; use PHPUnit\Framework\TestCase; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Translation\Provider\FilteringProvider; use Symfony\Component\Translation\Provider\ProviderInterface; use Symfony\Component\Translation\Provider\TranslationProviderCollection; /** * @author Mathieu Santostefano <msantostefano@protonmail.com> */ abstract class TranslationProviderTestCase extends TestCase { protected Filesystem $fs; protected string $translationAppDir; protected array $files; protected string $defaultLocale; protected function setUp(): void { parent::setUp(); $this->defaultLocale = \Locale::getDefault(); \Locale::setDefault('en'); $this->fs = new Filesystem(); $this->translationAppDir = sys_get_temp_dir().'/'.uniqid('sf_translation', true); $this->fs->mkdir($this->translationAppDir.'/translations'); } protected function tearDown(): void { \Locale::setDefault($this->defaultLocale); $this->fs->remove($this->translationAppDir); parent::tearDown(); } protected function getProviderCollection(ProviderInterface $provider, array $providerNames = ['loco'], array $locales = ['en'], array $domains = ['messages']): TranslationProviderCollection { $collection = []; foreach ($providerNames as $providerName) { $collection[$providerName] = new FilteringProvider($provider, $locales, $domains); } return new TranslationProviderCollection($collection); } protected function createYamlFile(array $messages = ['node' => 'NOTE'], $targetLanguage = 'en', $fileNamePattern = 'messages.%locale%.yml'): string { $yamlContent = ''; foreach ($messages as $key => $value) { $yamlContent .= "$key: $value\n"; } $yamlContent .= "\n"; $filename = sprintf('%s/%s', $this->translationAppDir.'/translations', str_replace('%locale%', $targetLanguage, $fileNamePattern)); file_put_contents($filename, $yamlContent); $this->files[] = $filename; return $filename; } protected function createFile(array $messages = ['note' => 'NOTE'], $targetLanguage = 'en', $fileNamePattern = 'messages.%locale%.xlf', string $xlfVersion = 'xlf12'): string { if ('xlf12' === $xlfVersion) { $transUnits = ''; foreach ($messages as $key => $value) { $transUnits .= <<<XLIFF <trans-unit id="$key"> <source>$key</source> <target>$value</target> </trans-unit> XLIFF; } $xliffContent = <<<XLIFF <?xml version="1.0"?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> <file source-language="en" target-language="$targetLanguage" datatype="plaintext" original="file.ext"> <body> $transUnits </body> </file> </xliff> XLIFF; } else { $units = ''; foreach ($messages as $key => $value) { $units .= <<<XLIFF <unit id="$key"> <segment> <source>$key</source> <target>$value</target> </segment> </unit> XLIFF; } $xliffContent = <<<XLIFF <?xml version="1.0" encoding="utf-8"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en" trgLang="$targetLanguage"> <file id="messages.$targetLanguage"> $units </file> </xliff> XLIFF; } $filename = sprintf('%s/%s', $this->translationAppDir.'/translations', str_replace('%locale%', $targetLanguage, $fileNamePattern)); file_put_contents($filename, $xliffContent); $this->files[] = $filename; return $filename; } }