Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1542bbb

Browse filesBrowse files
committed
bug #40050 [FrameworkBundle][Translator] Fixed updating catalogue metadata from Intl domain (yceruto)
This PR was merged into the 4.4 branch. Discussion ---------- [FrameworkBundle][Translator] Fixed updating catalogue metadata from Intl domain | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #37490 | License | MIT | Doc PR | - Commits ------- 33e6af5 Fixed updating catalogue metadata from intl domain
2 parents c274812 + 33e6af5 commit 1542bbb
Copy full SHA for 1542bbb

File tree

Expand file treeCollapse file tree

5 files changed

+66
-12
lines changed
Filter options
Expand file treeCollapse file tree

5 files changed

+66
-12
lines changed

‎src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,11 @@ private function filterCatalogue(MessageCatalogue $catalogue, string $domain): M
369369
foreach ($catalogue->getResources() as $resource) {
370370
$filteredCatalogue->addResource($resource);
371371
}
372+
if ($metadata = $catalogue->getMetadata('', $intlDomain)) {
373+
foreach ($metadata as $k => $v) {
374+
$filteredCatalogue->setMetadata($k, $v, $intlDomain);
375+
}
376+
}
372377
if ($metadata = $catalogue->getMetadata('', $domain)) {
373378
foreach ($metadata as $k => $v) {
374379
$filteredCatalogue->setMetadata($k, $v, $domain);

‎src/Symfony/Component/Translation/Catalogue/MergeOperation.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Catalogue/MergeOperation.php
+8-6Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,21 @@ protected function processDomain($domain)
3838

3939
foreach ($this->source->all($domain) as $id => $message) {
4040
$this->messages[$domain]['all'][$id] = $message;
41-
$this->result->add([$id => $message], $this->source->defines($id, $intlDomain) ? $intlDomain : $domain);
42-
if (null !== $keyMetadata = $this->source->getMetadata($id, $domain)) {
43-
$this->result->setMetadata($id, $keyMetadata, $domain);
41+
$d = $this->source->defines($id, $intlDomain) ? $intlDomain : $domain;
42+
$this->result->add([$id => $message], $d);
43+
if (null !== $keyMetadata = $this->source->getMetadata($id, $d)) {
44+
$this->result->setMetadata($id, $keyMetadata, $d);
4445
}
4546
}
4647

4748
foreach ($this->target->all($domain) as $id => $message) {
4849
if (!$this->source->has($id, $domain)) {
4950
$this->messages[$domain]['all'][$id] = $message;
5051
$this->messages[$domain]['new'][$id] = $message;
51-
$this->result->add([$id => $message], $this->target->defines($id, $intlDomain) ? $intlDomain : $domain);
52-
if (null !== $keyMetadata = $this->target->getMetadata($id, $domain)) {
53-
$this->result->setMetadata($id, $keyMetadata, $domain);
52+
$d = $this->target->defines($id, $intlDomain) ? $intlDomain : $domain;
53+
$this->result->add([$id => $message], $d);
54+
if (null !== $keyMetadata = $this->target->getMetadata($id, $d)) {
55+
$this->result->setMetadata($id, $keyMetadata, $d);
5456
}
5557
}
5658
}

‎src/Symfony/Component/Translation/Catalogue/TargetOperation.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Catalogue/TargetOperation.php
+8-6Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ protected function processDomain($domain)
4949
foreach ($this->source->all($domain) as $id => $message) {
5050
if ($this->target->has($id, $domain)) {
5151
$this->messages[$domain]['all'][$id] = $message;
52-
$this->result->add([$id => $message], $this->target->defines($id, $intlDomain) ? $intlDomain : $domain);
53-
if (null !== $keyMetadata = $this->source->getMetadata($id, $domain)) {
54-
$this->result->setMetadata($id, $keyMetadata, $domain);
52+
$d = $this->target->defines($id, $intlDomain) ? $intlDomain : $domain;
53+
$this->result->add([$id => $message], $d);
54+
if (null !== $keyMetadata = $this->source->getMetadata($id, $d)) {
55+
$this->result->setMetadata($id, $keyMetadata, $d);
5556
}
5657
} else {
5758
$this->messages[$domain]['obsolete'][$id] = $message;
@@ -62,9 +63,10 @@ protected function processDomain($domain)
6263
if (!$this->source->has($id, $domain)) {
6364
$this->messages[$domain]['all'][$id] = $message;
6465
$this->messages[$domain]['new'][$id] = $message;
65-
$this->result->add([$id => $message], $this->target->defines($id, $intlDomain) ? $intlDomain : $domain);
66-
if (null !== $keyMetadata = $this->target->getMetadata($id, $domain)) {
67-
$this->result->setMetadata($id, $keyMetadata, $domain);
66+
$d = $this->target->defines($id, $intlDomain) ? $intlDomain : $domain;
67+
$this->result->add([$id => $message], $d);
68+
if (null !== $keyMetadata = $this->target->getMetadata($id, $d)) {
69+
$this->result->setMetadata($id, $keyMetadata, $d);
6870
}
6971
}
7072
}

‎src/Symfony/Component/Translation/Tests/Catalogue/MergeOperationTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Tests/Catalogue/MergeOperationTest.php
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,29 @@ public function testGetResultWithMetadata()
9090
);
9191
}
9292

93+
public function testGetResultWithMetadataFromIntlDomain()
94+
{
95+
$leftCatalogue = new MessageCatalogue('en', ['messages+intl-icu' => ['a' => 'old_a', 'b' => 'old_b']]);
96+
$leftCatalogue->setMetadata('a', 'foo', 'messages+intl-icu');
97+
$leftCatalogue->setMetadata('b', 'bar', 'messages+intl-icu');
98+
$rightCatalogue = new MessageCatalogue('en', ['messages+intl-icu' => ['b' => 'new_b', 'c' => 'new_c']]);
99+
$rightCatalogue->setMetadata('b', 'baz', 'messages+intl-icu');
100+
$rightCatalogue->setMetadata('c', 'qux', 'messages+intl-icu');
101+
102+
$mergedCatalogue = new MessageCatalogue('en', ['messages+intl-icu' => ['a' => 'old_a', 'b' => 'old_b', 'c' => 'new_c']]);
103+
$mergedCatalogue->setMetadata('a', 'foo', 'messages+intl-icu');
104+
$mergedCatalogue->setMetadata('b', 'bar', 'messages+intl-icu');
105+
$mergedCatalogue->setMetadata('c', 'qux', 'messages+intl-icu');
106+
107+
$this->assertEquals(
108+
$mergedCatalogue,
109+
$this->createOperation(
110+
$leftCatalogue,
111+
$rightCatalogue
112+
)->getResult()
113+
);
114+
}
115+
93116
protected function createOperation(MessageCatalogueInterface $source, MessageCatalogueInterface $target)
94117
{
95118
return new MergeOperation($source, $target);

‎src/Symfony/Component/Translation/Tests/Catalogue/TargetOperationTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Translation/Tests/Catalogue/TargetOperationTest.php
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,28 @@ public function testGetResultWithMetadata()
102102
);
103103
}
104104

105+
public function testGetResultWithMetadataFromIntlDomain()
106+
{
107+
$leftCatalogue = new MessageCatalogue('en', ['messages+intl-icu' => ['a' => 'old_a', 'b' => 'old_b']]);
108+
$leftCatalogue->setMetadata('a', 'foo', 'messages+intl-icu');
109+
$leftCatalogue->setMetadata('b', 'bar', 'messages+intl-icu');
110+
$rightCatalogue = new MessageCatalogue('en', ['messages+intl-icu' => ['b' => 'new_b', 'c' => 'new_c']]);
111+
$rightCatalogue->setMetadata('b', 'baz', 'messages+intl-icu');
112+
$rightCatalogue->setMetadata('c', 'qux', 'messages+intl-icu');
113+
114+
$diffCatalogue = new MessageCatalogue('en', ['messages+intl-icu' => ['b' => 'old_b', 'c' => 'new_c']]);
115+
$diffCatalogue->setMetadata('b', 'bar', 'messages+intl-icu');
116+
$diffCatalogue->setMetadata('c', 'qux', 'messages+intl-icu');
117+
118+
$this->assertEquals(
119+
$diffCatalogue,
120+
$this->createOperation(
121+
$leftCatalogue,
122+
$rightCatalogue
123+
)->getResult()
124+
);
125+
}
126+
105127
protected function createOperation(MessageCatalogueInterface $source, MessageCatalogueInterface $target)
106128
{
107129
return new TargetOperation($source, $target);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.