Skip to content

Commit 85ea936

Browse files
committed
"+intl-icu" remove suffix from compiled translation domains
1 parent 16ef874 commit 85ea936

File tree

7 files changed

+65
-4
lines changed

7 files changed

+65
-4
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/TranslationStubIndex.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ private static String getDomainName(@NotNull String fileName) {
165165
if (domain.endsWith("+intl-icu")) {
166166
// Remove +intl-icu suffix, as it is not part of the domain
167167
// https://symfony.com/blog/new-in-symfony-4-2-intlmessageformatter
168-
domain = domain.replace("+intl-icu", "");
168+
domain = domain.substring(0, domain.length() - 9);
169169
}
170170

171171
if (StringUtils.isBlank(domain)) {

src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/DomainMappings.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import fr.adrienbrault.idea.symfony2plugin.translation.dict.DomainFileMap;
44
import fr.adrienbrault.idea.symfony2plugin.util.service.AbstractServiceParser;
5+
import org.apache.commons.lang.StringUtils;
56
import org.w3c.dom.Element;
67
import org.w3c.dom.NodeList;
78

@@ -42,7 +43,19 @@ public void parser(InputStream file) {
4243
NodeList arguments = node.getElementsByTagName("argument");
4344

4445
if(arguments.getLength() == 4) {
45-
this.domainFileMaps.add(new DomainFileMap(arguments.item(0).getTextContent(), arguments.item(1).getTextContent(), arguments.item(2).getTextContent(), arguments.item(3).getTextContent()));
46+
String domain = arguments.item(3).getTextContent();
47+
if (domain.endsWith("+intl-icu")) {
48+
domain = domain.substring(0, domain.length() - 9);
49+
}
50+
51+
if (StringUtils.isNotBlank(domain)) {
52+
this.domainFileMaps.add(new DomainFileMap(
53+
arguments.item(0).getTextContent(),
54+
arguments.item(1).getTextContent(),
55+
arguments.item(2).getTextContent(),
56+
domain
57+
));
58+
}
4659
}
4760
} else if("argument".equals(tagName)) {
4861
// Symfony 5: arguments in constructor
@@ -58,7 +71,13 @@ public void parser(InputStream file) {
5871
// split by filename: validators.af.xlf
5972
String[] split = filename.split("\\.");
6073
if (split.length == 3) {
61-
this.domainFileMaps.add(new DomainFileMap(split[2], path, split[1], split[0]));
74+
if (split[0].endsWith("+intl-icu")) {
75+
split[0] = split[0].substring(0, split[0].length() - 9);
76+
}
77+
78+
if (StringUtils.isNotBlank(split[0])) {
79+
this.domainFileMaps.add(new DomainFileMap(split[2], path, split[1], split[0]));
80+
}
6281
}
6382
}
6483
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/TranslationStringMap.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.jetbrains.php.lang.psi.elements.*;
1212
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1313
import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil;
14+
import org.apache.commons.lang.StringUtils;
1415
import org.jetbrains.annotations.NotNull;
1516
import org.jetbrains.annotations.Nullable;
1617

@@ -128,6 +129,18 @@ private void getTranslationMessages(@NotNull NewExpression newExpression) {
128129
PhpPsiElement arrayKey = arrayHashElement.getKey();
129130
if(arrayKey instanceof StringLiteralExpression) {
130131
String transDomain = ((StringLiteralExpression) arrayKey).getContents();
132+
if (StringUtils.isBlank(transDomain)) {
133+
continue;
134+
}
135+
136+
if (transDomain.endsWith("+intl-icu")) {
137+
transDomain = transDomain.substring(0, transDomain.length() - 9);
138+
}
139+
140+
if (StringUtils.isBlank(transDomain)) {
141+
continue;
142+
}
143+
131144
addDomain(transDomain);
132145

133146
// parse translation keys

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/translation/parser/DomainMappingsTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void testParser() throws FileNotFoundException {
2222
domainMappings.parser(new FileInputStream(testFile));
2323
Collection<DomainFileMap> domainFileMaps = domainMappings.getDomainFileMaps();
2424

25-
assertEquals(14, domainFileMaps.size());
25+
assertEquals(16, domainFileMaps.size());
2626

2727
DomainFileMap craueFormFlowBundle = domainFileMaps.stream().filter(domainFileMap -> domainFileMap.getDomain().equals("CraueFormFlowBundle")).findFirst().get();
2828

@@ -40,5 +40,18 @@ public void testParser() throws FileNotFoundException {
4040
assertNotNull(domainFileMaps.stream().filter(domainFileMap -> domainFileMap.getDomain().equals("foobar_domain2")).findFirst().get());
4141
assertNotNull(domainFileMaps.stream().filter(domainFileMap -> domainFileMap.getDomain().equals("foobar_domain3")).findFirst().get());
4242
assertNotNull(domainFileMaps.stream().filter(domainFileMap -> domainFileMap.getDomain().equals("foobar_domain4")).findFirst().get());
43+
44+
45+
DomainFileMap foobarIntl = domainFileMaps.stream().filter(domainFileMap -> domainFileMap.getDomain().equals("foobar_intl")).findFirst().get();
46+
assertEquals("foobar_intl", foobarIntl.getDomain());
47+
assertEquals("de", foobarIntl.getLanguageKey());
48+
assertEquals("xlf", foobarIntl.getLoader());
49+
assertTrue(foobarIntl.getPath().endsWith("foobar_intl+intl-icu.de.xlf"));
50+
51+
DomainFileMap foobarOldIntl = domainFileMaps.stream().filter(domainFileMap -> domainFileMap.getDomain().equals("foobar_old_intl")).findFirst().get();
52+
assertEquals("foobar_old_intl", foobarOldIntl.getDomain());
53+
assertEquals("de", foobarOldIntl.getLanguageKey());
54+
assertEquals("xlf", foobarOldIntl.getLoader());
55+
assertTrue(foobarOldIntl.getPath().endsWith("foobar_old_intl+intl-icu.de.xlf"));
4356
}
4457
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/translation/parser/TranslationPsiParserTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,10 @@ public void testCompiledTranslationParser() {
2929

3030
assertTrue(translationStringMap.getDomainMap("validators").contains("This value should be false."));
3131
assertTrue(translationStringMap.getDomainMap("validators").contains("This value should be false. (1)"));
32+
33+
assertNull(translationStringMap.getDomainMap("my_intl_icu_domain+intl-icu"));
34+
35+
assertTrue(translationStringMap.getDomainMap("my_intl_icu_domain").size() > 0);
36+
assertTrue(translationStringMap.getDomainMap("my_intl_icu_domain").contains("messages_intl_icu_key"));
3237
}
3338
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/translation/parser/appDevDebugProjectContainer.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
<argument>es</argument>
7979
<argument>FOSUserBundle</argument>
8080
</call>
81+
<call method="addResource">
82+
<argument>xlf</argument>
83+
<argument>C:\symfony2\vendor\friendsofsymfony\user-bundle\FOS\UserBundle/Resources/translations\foobar_old_intl+intl-icu.de.xlf</argument>
84+
<argument>de</argument>
85+
<argument>foobar_old_intl+intl-icu</argument>
86+
</call>
8187
</service>
8288

8389
<service id="translator.default" class="Symfony\Bundle\FrameworkBundle\Translation\Translator" public="false">
@@ -108,6 +114,7 @@
108114
<argument key="ar" type="collection">
109115
<argument>/app/vendor/symfony/validator/Resources/translations/foobar_domain2.ar.xlf</argument>
110116
<argument>/app/vendor/symfony/security-core/Resources/translations/foobar_domain3.ar.xlf</argument>
117+
<argument>/app/vendor/symfony/security-core/Resources/translations/foobar_intl+intl-icu.de.xlf</argument>
111118
</argument>
112119
<argument key="pt_PT" type="collection">
113120
<argument>/home/daniel/projects/symfony5/vendor/symfony/security-core/Resources/translations/foobar_domain4.pt_PT.xlf</argument>

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/translation/parser/fixtures/catalogue.af.X7ow_p+.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
array (
1313
'An authentication exception occurred.' => '\'n Verifikasie probleem het voorgekom.',
1414
),
15+
'my_intl_icu_domain+intl-icu' =>
16+
array (
17+
'messages_intl_icu_key' => 'foobar intl-icu',
18+
),
1519
));
1620

1721
$catalogueEn = new MessageCatalogue('en', array (

0 commit comments

Comments
 (0)