Skip to content

Commit 9518036

Browse files
authored
ENGCOM-6646: #8691: improved language pack inheritance order #26420
2 parents 8f47bb7 + 4ad27bc commit 9518036

File tree

33 files changed

+326
-23
lines changed

33 files changed

+326
-23
lines changed

dev/tests/integration/testsuite/Magento/Framework/App/Language/DictionaryTest.php

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ public function dictionaryDataProvider()
6363
// Second case with inheritance of package with the same language code
6464
'a case with inheritance similar language code' => $this->getDataInheritanceWitSimilarCode(),
6565
// Third case with circular inheritance, when two packages depend on each other
66-
'a case with circular inheritance' => $this->getDataCircularInheritance()
66+
'a case with circular inheritance' => $this->getDataCircularInheritance(),
67+
// Fourth case with multiple inheritance from dev docs
68+
'a case with multiple inheritance from dev docs' => $this->getDataMultipleInheritanceFromDevDocs()
6769
];
6870
}
6971

@@ -113,7 +115,7 @@ private function getDataCircularInheritance()
113115
{
114116
return [
115117
// Dictionary that will be requested
116-
'language_code' => 'en_US',
118+
'language_code' => 'en_AZ',
117119
// Expected merged dictionary data
118120
'expectation' => [
119121
'one' => '1.0',
@@ -123,4 +125,48 @@ private function getDataCircularInheritance()
123125
]
124126
];
125127
}
128+
129+
/**
130+
* If a language package inherits from two packages:
131+
* ...
132+
* <code>en_AK</code>
133+
* ...
134+
* <use vendor="parent-package-one" package="language_package_one"/>
135+
* <use vendor= "parent-package-two" package="language_package_two"/>
136+
* ...
137+
*
138+
* In the preceding example:
139+
* language_package_one inherits from en_au_package and en_au_package inherits from en_ie_package
140+
* language_package_two inherits from en_ca_package and en_ca_package inherits from en_us_package
141+
*
142+
* If the Magento application cannot find word or phrase in the en_AK package,
143+
* it looks in other packages in following sequence:
144+
* parent-package-one/language_package_one
145+
* <vendorname>/en_au_package
146+
* <vendorname>/en_ie_package
147+
* parent-package-two/language_package_two
148+
* <vendorname>/en_ca_package
149+
* <vendorname>/en_us_package
150+
*
151+
* @return array
152+
*/
153+
private function getDataMultipleInheritanceFromDevDocs()
154+
{
155+
return [
156+
// Dictionary that will be requested
157+
'language_code' => 'en_AK',
158+
// Expected merged dictionary data
159+
'expectation' => [
160+
'one' => 'en_us_package_one',
161+
'two' => 'en_ca_package_two',
162+
'three' => 'language_package_two_three',
163+
'four' => 'en_ie_package_four',
164+
'five' => 'en_au_package_five',
165+
'six' => 'language_package_one_six',
166+
'seven' => 'en_ak_seven',
167+
'eight' => 'en_ak_eight',
168+
'nine' => 'en_ak_nine',
169+
]
170+
];
171+
}
126172
}

dev/tests/integration/testsuite/Magento/Framework/App/Language/_files/bar/en_us/language.xml renamed to dev/tests/integration/testsuite/Magento/Framework/App/Language/_files/bar/en_az/language.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
*/
77
-->
88
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
9-
<code>en_US</code>
9+
<code>en_AZ</code>
1010
<vendor>bar</vendor>
11-
<package>en_us</package>
11+
<package>en_az</package>
1212
<sort_order>0</sort_order>
1313
</language>

dev/tests/integration/testsuite/Magento/Framework/App/Language/_files/bar/en_us/registration.php renamed to dev/tests/integration/testsuite/Magento/Framework/App/Language/_files/bar/en_az/registration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66

77
use Magento\Framework\Component\ComponentRegistrar;
88

9-
ComponentRegistrar::register(ComponentRegistrar::LANGUAGE, 'bar_en_us', __DIR__);
9+
ComponentRegistrar::register(ComponentRegistrar::LANGUAGE, 'bar_en_az', __DIR__);

dev/tests/integration/testsuite/Magento/Framework/App/Language/_files/bar/en_gb/language.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
<vendor>bar</vendor>
1111
<package>en_gb</package>
1212
<sort_order>100</sort_order>
13-
<use package="en_us" vendor="bar"/>
13+
<use package="en_az" vendor="bar"/>
1414
</language>
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
four and 5/10,4.5
1+
one,1.00
2+
two,2.00
3+
three,3.00
4+
four,4.00
5+
four and 5/10,4.5
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
seven,en_ak_seven
2+
eight,en_ak_eight
3+
nine,en_ak_nine
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
9+
<code>en_AK</code>
10+
<vendor>devdoc</vendor>
11+
<package>en_ak</package>
12+
<sort_order>0</sort_order>
13+
<use vendor="parent-package-one" package="language_package_one"/>
14+
<use vendor="parent-package-two" package="language_package_two"/>
15+
</language>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\Framework\Component\ComponentRegistrar;
8+
9+
ComponentRegistrar::register(ComponentRegistrar::LANGUAGE, 'devdoc_en_ak', __DIR__);

0 commit comments

Comments
 (0)