diff --git a/src/Symfony/Component/Translation/Dumper/XliffFileDumper.php b/src/Symfony/Component/Translation/Dumper/XliffFileDumper.php index 72d9c6e9f3..63f30a5b64 100644 --- a/src/Symfony/Component/Translation/Dumper/XliffFileDumper.php +++ b/src/Symfony/Component/Translation/Dumper/XliffFileDumper.php @@ -150,11 +150,11 @@ class XliffFileDumper extends FileDumper foreach ($messages->all($domain) as $source => $target) { $translation = $dom->createElement('unit'); $translation->setAttribute('id', strtr(substr(base64_encode(hash('sha256', $source, true)), 0, 7), '/+', '._')); - $name = $source; - if (\strlen($source) > 80) { - $name = substr(md5($source), -7); + + if (\strlen($source) <= 80) { + $translation->setAttribute('name', $source); } - $translation->setAttribute('name', $name); + $metadata = $messages->getMetadata($source, $domain); // Add notes section diff --git a/src/Symfony/Component/Translation/Tests/Dumper/XliffFileDumperTest.php b/src/Symfony/Component/Translation/Tests/Dumper/XliffFileDumperTest.php index 6377132f70..cb995553b5 100644 --- a/src/Symfony/Component/Translation/Tests/Dumper/XliffFileDumperTest.php +++ b/src/Symfony/Component/Translation/Tests/Dumper/XliffFileDumperTest.php @@ -43,6 +43,7 @@ class XliffFileDumperTest extends TestCase 'foo' => 'bar', 'key' => '', 'key.with.cdata' => ' & ', + 'translation.key.that.is.longer.than.eighty.characters.should.not.have.name.attribute' => 'value', ]); $catalogue->setMetadata('key', ['target-attributes' => ['order' => 1]]); diff --git a/src/Symfony/Component/Translation/Tests/fixtures/resources-2.0-clean.xlf b/src/Symfony/Component/Translation/Tests/fixtures/resources-2.0-clean.xlf index efa69b27ff..ccc5ef7a72 100644 --- a/src/Symfony/Component/Translation/Tests/fixtures/resources-2.0-clean.xlf +++ b/src/Symfony/Component/Translation/Tests/fixtures/resources-2.0-clean.xlf @@ -19,5 +19,11 @@ & ]]> + + + translation.key.that.is.longer.than.eighty.characters.should.not.have.name.attribute + value + +