diff --git a/src/Symfony/Component/Translation/Loader/XliffFileLoader.php b/src/Symfony/Component/Translation/Loader/XliffFileLoader.php
index fae07dbe3d958..f4d2396191fac 100644
--- a/src/Symfony/Component/Translation/Loader/XliffFileLoader.php
+++ b/src/Symfony/Component/Translation/Loader/XliffFileLoader.php
@@ -111,16 +111,20 @@ private function extractXliff1(\DOMDocument $dom, MessageCatalogue $catalogue, s
continue;
}
- if (isset($translation->target) && 'needs-translation' === (string) $translation->target->attributes()['state']) {
+ $source = (string) (isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source);
+
+ if (isset($translation->target)
+ && 'needs-translation' === (string) $translation->target->attributes()['state']
+ && \in_array((string) $translation->target, [$source, (string) $translation->source], true)
+ ) {
continue;
}
- $source = isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source;
// If the xlf file has another encoding specified, try to convert it because
// simple_xml will always return utf-8 encoded values
$target = $this->utf8ToCharset((string) ($translation->target ?? $translation->source), $encoding);
- $catalogue->set((string) $source, $target, $domain);
+ $catalogue->set($source, $target, $domain);
$metadata = [
'source' => (string) $translation->source,
@@ -143,7 +147,7 @@ private function extractXliff1(\DOMDocument $dom, MessageCatalogue $catalogue, s
$metadata['id'] = (string) $attributes['id'];
}
- $catalogue->setMetadata((string) $source, $metadata, $domain);
+ $catalogue->setMetadata($source, $metadata, $domain);
}
}
}
diff --git a/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php b/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php
index 5013d2713b181..99fa9249d7500 100644
--- a/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php
+++ b/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php
@@ -52,9 +52,17 @@ public function testLoadRawXliff()
test
- with
+ with
note
+
+ baz
+ baz
+
+
+ baz
+ buz
+