Skip to content

Commit 42985c1

Browse files
committed
Add supports for translation domains with +intl-icu suffix
1 parent b746b8c commit 42985c1

File tree

6 files changed

+40
-5
lines changed

6 files changed

+40
-5
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,15 @@ private String getDomainName(@NotNull String fileName) {
139139
return null;
140140
}
141141

142-
return StringUtils.join(Arrays.copyOfRange(split, 0, split.length - 2), ".");
142+
String domain = StringUtils.join(Arrays.copyOfRange(split, 0, split.length - 2), ".");
143+
144+
if (domain.endsWith("+intl-icu")) {
145+
// Remove +intl-icu suffix, as it is not part of the domain
146+
// https://symfony.com/blog/new-in-symfony-4-2-intlmessageformatter
147+
domain = domain.replace("+intl-icu", "");
148+
}
149+
150+
return domain;
143151
}
144152
};
145153
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ public TranslationStringMap parse(File file) {
5151

5252
TranslationStringMap string_map = new TranslationStringMap();
5353

54-
Matcher matcher = Pattern.compile("'([\\w]+)'\\s=>.*?array\\s\\((.*?)\\s\\),", Pattern.MULTILINE).matcher(string);
54+
Matcher matcher = Pattern.compile("'([\\w]+(\\+intl\\-icu)?)'\\s=>.*?array\\s\\((.*?)\\s\\),", Pattern.MULTILINE).matcher(string);
5555
while(matcher.find()){
5656
String domain = matcher.group(1);
57-
String array_strings = matcher.group(2);
57+
String array_strings = matcher.group(3);
5858

5959
Matcher match_strings = Pattern.compile("\\s'(.*?)'\\s=>\\s'.*?',\\s", Pattern.MULTILINE).matcher(array_strings);
6060
while(match_strings.find()){

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/translation/TranslationStringParserTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ public void testParse() {
1616
File testFile = new File("src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/translation/translations/catalogue.de.php");
1717
TranslationStringMap map = new TranslationStringParser().parse(testFile);
1818

19-
assertTrue(map.getDomainMap("FOSUserBundle").contains("registration.email.message"));
20-
2119
assertTrue(map.getDomainList().contains("FOSUserBundle"));
20+
assertTrue(map.getDomainList().contains("icu_domain+intl-icu"));
2221
assertFalse(map.getDomainList().contains("NotInList"));
2322

2423
assertTrue(map.getDomainMap("FOSUserBundle").size() > 0);
24+
assertTrue(map.getDomainMap("icu_domain+intl-icu").size() > 0);
2525
assertNull(map.getDomainMap("NotInList"));
26+
27+
assertTrue(map.getDomainMap("FOSUserBundle").contains("registration.email.message"));
28+
assertTrue(map.getDomainMap("icu_domain+intl-icu").contains("login.submit"));
2629
}
2730

2831
@Test

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/translation/translations/catalogue.de.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@
5151
array (
5252
'login.headline' => 'Anmeldung',
5353
),
54+
'icu_domain+intl-icu' =>
55+
array (
56+
'login.submit' => 'Einloggen',
57+
),
5458
));
5559

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

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/stubs/indexes/TranslationStubIndexTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class TranslationStubIndexTest extends SymfonyLightCodeInsightFixtureTest
2020
public void setUp() throws Exception {
2121
super.setUp();
2222
myFixture.copyFileToProject("messages.fr.xlf");
23+
myFixture.copyFileToProject("messages+intl-icu.fr.xlf");
2324
myFixture.copyFileToProject("messages_two.fr.xlf");
2425
myFixture.copyFileToProject("foo.fr.xliff");
2526
myFixture.copyFileToProject("fr.xlf");
@@ -90,6 +91,10 @@ public void testThatTranslationsInRootForSymfonyFlexIsInIndex() {
9091
assertContainsElements(getDomainKeys("car_flex_yaml"), "foo_yaml.symfony.great");
9192
assertContainsElements(getDomainKeys("car_xlf_flex"), "Symfony is great");
9293
}
94+
public void testThatIcuMessagesAreInIndex() {
95+
assertContainsElements(getDomainKeys("messages"), "Hello {name}");
96+
assertContainsElements(getDomainKeys("messages"), "resname.hello");
97+
}
9398

9499
@NotNull
95100
private Set<String> getDomainKeys(@NotNull String domain) {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
3+
<file source-language="en" datatype="plaintext" original="file.ext">
4+
<body>
5+
<trans-unit id="1">
6+
<source>Hello {name}</source>
7+
<target>Bonjour {name}</target>
8+
</trans-unit>
9+
<trans-unit id="1" resname="resname.hello">
10+
<source xml:lang="fr">Test</source>
11+
<target xml:lang="fr">Test</target>
12+
</trans-unit>
13+
</body>
14+
</file>
15+
</xliff>

0 commit comments

Comments
 (0)