Merge branch '2.8'
* 2.8: Mark deprecated Twig functions as deprecated with the Twig feature [appveyor] PHP 5.3.11 for Symfony 2.7 [HttpKernel] Group deprecation notices [Translation] added <tool> element metadata to XliffFileDumper Conflicts: appveyor.yml src/Symfony/Bridge/Twig/AppVariable.php src/Symfony/Bridge/Twig/Extension/AssetExtension.php src/Symfony/Bridge/Twig/Extension/FormExtension.php
This commit is contained in:
commit
73a31966ea
@ -14,7 +14,6 @@ namespace Symfony\Bridge\Twig;
|
|||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\RequestStack;
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
use Symfony\Component\HttpFoundation\Session\Session;
|
use Symfony\Component\HttpFoundation\Session\Session;
|
||||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
|
||||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -120,6 +120,10 @@
|
|||||||
{% set stack = log.context.stack|default([]) %}
|
{% set stack = log.context.stack|default([]) %}
|
||||||
{% set id = 'sf-call-stack-' ~ log_index %}
|
{% set id = 'sf-call-stack-' ~ log_index %}
|
||||||
|
|
||||||
|
{% if log.context.errorCount is defined %}
|
||||||
|
({{ log.context.errorCount }}x)
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if stack %}
|
{% if stack %}
|
||||||
<a href="#" onclick="Sfjs.toggle('{{ id }}', document.getElementById('{{ id }}-on'), document.getElementById('{{ id }}-off')); return false;">
|
<a href="#" onclick="Sfjs.toggle('{{ id }}', document.getElementById('{{ id }}-on'), document.getElementById('{{ id }}-off')); return false;">
|
||||||
<img class="toggle" id="{{ id }}-off" alt="-" src="data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=" style="display:none">
|
<img class="toggle" id="{{ id }}-off" alt="-" src="data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=" style="display:none">
|
||||||
|
@ -102,7 +102,7 @@ class JsonDescriptor extends Descriptor
|
|||||||
'name' => $argument->getName(),
|
'name' => $argument->getName(),
|
||||||
'is_required' => $argument->isRequired(),
|
'is_required' => $argument->isRequired(),
|
||||||
'is_array' => $argument->isArray(),
|
'is_array' => $argument->isArray(),
|
||||||
'description' => preg_replace('/\s*\R\s*/', ' ', $argument->getDescription()),
|
'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()),
|
||||||
'default' => $argument->getDefault(),
|
'default' => $argument->getDefault(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ class JsonDescriptor extends Descriptor
|
|||||||
'accept_value' => $option->acceptValue(),
|
'accept_value' => $option->acceptValue(),
|
||||||
'is_value_required' => $option->isValueRequired(),
|
'is_value_required' => $option->isValueRequired(),
|
||||||
'is_multiple' => $option->isArray(),
|
'is_multiple' => $option->isArray(),
|
||||||
'description' => preg_replace('/\s*\R\s*/', ' ', $option->getDescription()),
|
'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()),
|
||||||
'default' => $option->getDefault(),
|
'default' => $option->getDefault(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ class MarkdownDescriptor extends Descriptor
|
|||||||
.'* Name: '.($argument->getName() ?: '<none>')."\n"
|
.'* Name: '.($argument->getName() ?: '<none>')."\n"
|
||||||
.'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n"
|
.'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n"
|
||||||
.'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n"
|
.'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n"
|
||||||
.'* Description: '.preg_replace('/\s*\R\s*/', PHP_EOL.' ', $argument->getDescription() ?: '<none>')."\n"
|
.'* Description: '.preg_replace('/\s*[\r\n]\s*/', "\n ", $argument->getDescription() ?: '<none>')."\n"
|
||||||
.'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`'
|
.'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ class MarkdownDescriptor extends Descriptor
|
|||||||
.'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n"
|
.'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n"
|
||||||
.'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n"
|
.'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n"
|
||||||
.'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n"
|
.'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n"
|
||||||
.'* Description: '.preg_replace('/\s*\R\s*/', PHP_EOL.' ', $option->getDescription() ?: '<none>')."\n"
|
.'* Description: '.preg_replace('/\s*[\r\n]\s*/', "\n ", $option->getDescription() ?: '<none>')."\n"
|
||||||
.'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`'
|
.'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ class TextDescriptor extends Descriptor
|
|||||||
$argument->getName(),
|
$argument->getName(),
|
||||||
str_repeat(' ', $spacingWidth),
|
str_repeat(' ', $spacingWidth),
|
||||||
// + 17 = 2 spaces + <info> + </info> + 2 spaces
|
// + 17 = 2 spaces + <info> + </info> + 2 spaces
|
||||||
preg_replace('/\s*\R\s*/', PHP_EOL.str_repeat(' ', $totalWidth + 17), $argument->getDescription()),
|
preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 17), $argument->getDescription()),
|
||||||
$default
|
$default
|
||||||
), $options);
|
), $options);
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ class TextDescriptor extends Descriptor
|
|||||||
$synopsis,
|
$synopsis,
|
||||||
str_repeat(' ', $spacingWidth),
|
str_repeat(' ', $spacingWidth),
|
||||||
// + 17 = 2 spaces + <info> + </info> + 2 spaces
|
// + 17 = 2 spaces + <info> + </info> + 2 spaces
|
||||||
preg_replace('/\s*\R\s*/', "\n".str_repeat(' ', $totalWidth + 17), $option->getDescription()),
|
preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 17), $option->getDescription()),
|
||||||
$default,
|
$default,
|
||||||
$option->isArray() ? '<comment> (multiple values allowed)</comment>' : ''
|
$option->isArray() ? '<comment> (multiple values allowed)</comment>' : ''
|
||||||
), $options);
|
), $options);
|
||||||
|
@ -97,15 +97,46 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
|
|||||||
|
|
||||||
private function sanitizeLogs($logs)
|
private function sanitizeLogs($logs)
|
||||||
{
|
{
|
||||||
foreach ($logs as $i => $log) {
|
$errorContextById = array();
|
||||||
|
$sanitizedLogs = array();
|
||||||
|
|
||||||
|
foreach ($logs as $log) {
|
||||||
$context = $this->sanitizeContext($log['context']);
|
$context = $this->sanitizeContext($log['context']);
|
||||||
if (isset($context['type'], $context['level']) && !($context['type'] & $context['level'])) {
|
|
||||||
$context['scream'] = true;
|
if (isset($context['type'], $context['file'], $context['line'], $context['level'])) {
|
||||||
|
$errorId = md5("{$context['type']}/{$context['line']}/{$context['file']}\x00{$log['message']}", true);
|
||||||
|
$silenced = !($context['type'] & $context['level']);
|
||||||
|
|
||||||
|
if (isset($errorContextById[$errorId])) {
|
||||||
|
if (isset($errorContextById[$errorId]['errorCount'])) {
|
||||||
|
++$errorContextById[$errorId]['errorCount'];
|
||||||
|
} else {
|
||||||
|
$errorContextById[$errorId]['errorCount'] = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$silenced && isset($errorContextById[$errorId]['scream'])) {
|
||||||
|
unset($errorContextById[$errorId]['scream']);
|
||||||
|
$errorContextById[$errorId]['level'] = $context['level'];
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$errorContextById[$errorId] = &$context;
|
||||||
|
if ($silenced) {
|
||||||
|
$context['scream'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$log['context'] = &$context;
|
||||||
|
unset($context);
|
||||||
|
} else {
|
||||||
|
$log['context'] = $context;
|
||||||
}
|
}
|
||||||
$logs[$i]['context'] = $context;
|
|
||||||
|
$sanitizedLogs[] = $log;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $logs;
|
return $sanitizedLogs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function sanitizeContext($context)
|
private function sanitizeContext($context)
|
||||||
|
@ -75,8 +75,18 @@ class LoggerDataCollectorTest extends \PHPUnit_Framework_TestCase
|
|||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
1,
|
1,
|
||||||
array(array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => 0), 'priority' => 100, 'priorityName' => 'DEBUG')),
|
array(array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => 0, 'file' => __FILE__, 'line' => 123), 'priority' => 100, 'priorityName' => 'DEBUG')),
|
||||||
array(array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => 0, 'scream' => true), 'priority' => 100, 'priorityName' => 'DEBUG')),
|
array(array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => 0, 'file' => __FILE__, 'line' => 123, 'scream' => true), 'priority' => 100, 'priorityName' => 'DEBUG')),
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
1,
|
||||||
|
array(
|
||||||
|
array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => 0, 'file' => __FILE__, 'line' => 123), 'priority' => 100, 'priorityName' => 'DEBUG'),
|
||||||
|
array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => -1, 'file' => __FILE__, 'line' => 123), 'priority' => 100, 'priorityName' => 'DEBUG'),
|
||||||
|
),
|
||||||
|
array(array('message' => 'foo3', 'context' => array('type' => E_USER_WARNING, 'level' => -1, 'file' => __FILE__, 'line' => 123, 'errorCount' => 2), 'priority' => 100, 'priorityName' => 'DEBUG')),
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
),
|
),
|
||||||
|
@ -20,30 +20,22 @@ use Symfony\Component\Translation\MessageCatalogue;
|
|||||||
*/
|
*/
|
||||||
class XliffFileDumper extends FileDumper
|
class XliffFileDumper extends FileDumper
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $defaultLocale;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function dump(MessageCatalogue $messages, $options = array())
|
protected function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
|
||||||
{
|
{
|
||||||
if (array_key_exists('default_locale', $options)) {
|
if (array_key_exists('default_locale', $options)) {
|
||||||
$this->defaultLocale = $options['default_locale'];
|
$defaultLocale = $options['default_locale'];
|
||||||
} else {
|
} else {
|
||||||
$this->defaultLocale = \Locale::getDefault();
|
$defaultLocale = \Locale::getDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::dump($messages, $options);
|
$toolInfo = array('tool-id' => 'symfony', 'tool-name' => 'Symfony');
|
||||||
}
|
if (array_key_exists('tool_info', $options)) {
|
||||||
|
$toolInfo = array_merge($toolInfo, $options['tool_info']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected function format(MessageCatalogue $messages, $domain)
|
|
||||||
{
|
|
||||||
$dom = new \DOMDocument('1.0', 'utf-8');
|
$dom = new \DOMDocument('1.0', 'utf-8');
|
||||||
$dom->formatOutput = true;
|
$dom->formatOutput = true;
|
||||||
|
|
||||||
@ -52,11 +44,17 @@ class XliffFileDumper extends FileDumper
|
|||||||
$xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2');
|
$xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2');
|
||||||
|
|
||||||
$xliffFile = $xliff->appendChild($dom->createElement('file'));
|
$xliffFile = $xliff->appendChild($dom->createElement('file'));
|
||||||
$xliffFile->setAttribute('source-language', str_replace('_', '-', $this->defaultLocale));
|
$xliffFile->setAttribute('source-language', str_replace('_', '-', $defaultLocale));
|
||||||
$xliffFile->setAttribute('target-language', str_replace('_', '-', $messages->getLocale()));
|
$xliffFile->setAttribute('target-language', str_replace('_', '-', $messages->getLocale()));
|
||||||
$xliffFile->setAttribute('datatype', 'plaintext');
|
$xliffFile->setAttribute('datatype', 'plaintext');
|
||||||
$xliffFile->setAttribute('original', 'file.ext');
|
$xliffFile->setAttribute('original', 'file.ext');
|
||||||
|
|
||||||
|
$xliffHead = $xliffFile->appendChild($dom->createElement('header'));
|
||||||
|
$xliffTool = $xliffHead->appendChild($dom->createElement('tool'));
|
||||||
|
foreach ($toolInfo as $id => $value) {
|
||||||
|
$xliffTool->setAttribute($id, $value);
|
||||||
|
}
|
||||||
|
|
||||||
$xliffBody = $xliffFile->appendChild($dom->createElement('body'));
|
$xliffBody = $xliffFile->appendChild($dom->createElement('body'));
|
||||||
foreach ($messages->all($domain) as $source => $target) {
|
foreach ($messages->all($domain) as $source => $target) {
|
||||||
$translation = $dom->createElement('trans-unit');
|
$translation = $dom->createElement('trans-unit');
|
||||||
@ -105,6 +103,14 @@ class XliffFileDumper extends FileDumper
|
|||||||
return $dom->saveXML();
|
return $dom->saveXML();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function format(MessageCatalogue $messages, $domain)
|
||||||
|
{
|
||||||
|
return $this->formatCatalogue($messages, $domain);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
@ -16,6 +16,13 @@ use Symfony\Component\Translation\Dumper\XliffFileDumper;
|
|||||||
|
|
||||||
class XliffFileDumperTest extends \PHPUnit_Framework_TestCase
|
class XliffFileDumperTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
private $tempDir;
|
||||||
|
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
$this->tempDir = sys_get_temp_dir();
|
||||||
|
}
|
||||||
|
|
||||||
public function testDump()
|
public function testDump()
|
||||||
{
|
{
|
||||||
$catalogue = new MessageCatalogue('en_US');
|
$catalogue = new MessageCatalogue('en_US');
|
||||||
@ -27,19 +34,40 @@ class XliffFileDumperTest extends \PHPUnit_Framework_TestCase
|
|||||||
$catalogue->setMetadata('foo', array('notes' => array(array('priority' => 1, 'from' => 'bar', 'content' => 'baz'))));
|
$catalogue->setMetadata('foo', array('notes' => array(array('priority' => 1, 'from' => 'bar', 'content' => 'baz'))));
|
||||||
$catalogue->setMetadata('key', array('notes' => array(array('content' => 'baz'), array('content' => 'qux'))));
|
$catalogue->setMetadata('key', array('notes' => array(array('content' => 'baz'), array('content' => 'qux'))));
|
||||||
|
|
||||||
$tempDir = sys_get_temp_dir();
|
|
||||||
$dumper = new XliffFileDumper();
|
$dumper = new XliffFileDumper();
|
||||||
$dumper->dump($catalogue, array('path' => $tempDir, 'default_locale' => 'fr_FR'));
|
$dumper->dump($catalogue, array('path' => $this->tempDir, 'default_locale' => 'fr_FR'));
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
file_get_contents(__DIR__.'/../fixtures/resources-clean.xlf'),
|
file_get_contents(__DIR__.'/../fixtures/resources-clean.xlf'),
|
||||||
file_get_contents($tempDir.'/messages.en_US.xlf')
|
file_get_contents($this->tempDir.'/messages.en_US.xlf')
|
||||||
);
|
);
|
||||||
|
|
||||||
unlink($tempDir.'/messages.en_US.xlf');
|
unlink($this->tempDir.'/messages.en_US.xlf');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTargetAttributesMetadataIsSetInFile()
|
public function testDumpWithCustomToolInfo()
|
||||||
|
{
|
||||||
|
$options = array(
|
||||||
|
'path' => $this->tempDir,
|
||||||
|
'default_locale' => 'en_US',
|
||||||
|
'tool_info' => array('tool-id' => 'foo', 'tool-name' => 'foo', 'tool-version' => '0.0', 'tool-company' => 'Foo'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$catalogue = new MessageCatalogue('en_US');
|
||||||
|
$catalogue->add(array('foo' => 'bar'));
|
||||||
|
|
||||||
|
$dumper = new XliffFileDumper();
|
||||||
|
$dumper->dump($catalogue, $options);
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
file_get_contents(__DIR__.'/../fixtures/resources-tool-info.xlf'),
|
||||||
|
file_get_contents($this->tempDir.'/messages.en_US.xlf')
|
||||||
|
);
|
||||||
|
|
||||||
|
unlink($this->tempDir.'/messages.en_US.xlf');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDumpWithTargetAttributesMetadata()
|
||||||
{
|
{
|
||||||
$catalogue = new MessageCatalogue('en_US');
|
$catalogue = new MessageCatalogue('en_US');
|
||||||
$catalogue->add(array(
|
$catalogue->add(array(
|
||||||
@ -47,30 +75,15 @@ class XliffFileDumperTest extends \PHPUnit_Framework_TestCase
|
|||||||
));
|
));
|
||||||
$catalogue->setMetadata('foo', array('target-attributes' => array('state' => 'needs-translation')));
|
$catalogue->setMetadata('foo', array('target-attributes' => array('state' => 'needs-translation')));
|
||||||
|
|
||||||
$tempDir = sys_get_temp_dir();
|
$this->tempDir = sys_get_temp_dir();
|
||||||
$dumper = new XliffFileDumper();
|
$dumper = new XliffFileDumper();
|
||||||
$dumper->dump($catalogue, array('path' => $tempDir, 'default_locale' => 'fr_FR'));
|
$dumper->dump($catalogue, array('path' => $this->tempDir, 'default_locale' => 'fr_FR'));
|
||||||
|
|
||||||
$content = <<<EOT
|
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
|
||||||
<file source-language="fr-FR" target-language="en-US" datatype="plaintext" original="file.ext">
|
|
||||||
<body>
|
|
||||||
<trans-unit id="acbd18db4cc2f85cedef654fccc4a4d8" resname="foo">
|
|
||||||
<source>foo</source>
|
|
||||||
<target state="needs-translation">bar</target>
|
|
||||||
</trans-unit>
|
|
||||||
</body>
|
|
||||||
</file>
|
|
||||||
</xliff>
|
|
||||||
|
|
||||||
EOT;
|
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$content,
|
file_get_contents(__DIR__.'/../fixtures/resources-target-attributes.xlf'),
|
||||||
file_get_contents($tempDir.'/messages.en_US.xlf')
|
file_get_contents($this->tempDir.'/messages.en_US.xlf')
|
||||||
);
|
);
|
||||||
|
|
||||||
unlink($tempDir.'/messages.en_US.xlf');
|
unlink($this->tempDir.'/messages.en_US.xlf');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||||
<file source-language="fr-FR" target-language="en-US" datatype="plaintext" original="file.ext">
|
<file source-language="fr-FR" target-language="en-US" datatype="plaintext" original="file.ext">
|
||||||
|
<header>
|
||||||
|
<tool tool-id="symfony" tool-name="Symfony"/>
|
||||||
|
</header>
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="acbd18db4cc2f85cedef654fccc4a4d8" resname="foo">
|
<trans-unit id="acbd18db4cc2f85cedef654fccc4a4d8" resname="foo">
|
||||||
<source>foo</source>
|
<source>foo</source>
|
||||||
|
14
src/Symfony/Component/Translation/Tests/fixtures/resources-target-attributes.xlf
vendored
Normal file
14
src/Symfony/Component/Translation/Tests/fixtures/resources-target-attributes.xlf
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||||
|
<file source-language="fr-FR" target-language="en-US" datatype="plaintext" original="file.ext">
|
||||||
|
<header>
|
||||||
|
<tool tool-id="symfony" tool-name="Symfony"/>
|
||||||
|
</header>
|
||||||
|
<body>
|
||||||
|
<trans-unit id="acbd18db4cc2f85cedef654fccc4a4d8" resname="foo">
|
||||||
|
<source>foo</source>
|
||||||
|
<target state="needs-translation">bar</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
14
src/Symfony/Component/Translation/Tests/fixtures/resources-tool-info.xlf
vendored
Normal file
14
src/Symfony/Component/Translation/Tests/fixtures/resources-tool-info.xlf
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||||
|
<file source-language="en-US" target-language="en-US" datatype="plaintext" original="file.ext">
|
||||||
|
<header>
|
||||||
|
<tool tool-id="foo" tool-name="foo" tool-version="0.0" tool-company="Foo"/>
|
||||||
|
</header>
|
||||||
|
<body>
|
||||||
|
<trans-unit id="acbd18db4cc2f85cedef654fccc4a4d8" resname="foo">
|
||||||
|
<source>foo</source>
|
||||||
|
<target>bar</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
Reference in New Issue
Block a user