Skip to content

Commit 4136b77

Browse files
committed
Merge branch 'master' of github.com:Haehnchen/idea-php-symfony2-plugin
2 parents c990d03 + aba9581 commit 4136b77

File tree

9 files changed

+55
-116
lines changed

9 files changed

+55
-116
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/completion/xml/XmlGotoCompletionRegistrar.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,12 @@ public void getLookupElements(@NotNull GotoCompletionProviderLookupArguments arg
192192
.create(ServiceUtil.getServiceNameForClass(getProject(), aClass))
193193
.withIcon(Symfony2Icons.SERVICE);
194194

195+
LookupElementBuilder lookupElementWithClassName = LookupElementBuilder
196+
.create(aClass)
197+
.withIcon(Symfony2Icons.SERVICE);
198+
195199
arguments.getResultSet().addElement(lookupElement);
200+
arguments.getResultSet().addElement(lookupElementWithClassName);
196201
}
197202
}
198203
}

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/dict/TranslationUtil.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,15 @@ public static Set<String> getPlaceholderFromTranslation(@NotNull String text) {
402402
placeholder.add(matcher.group(1));
403403
}
404404

405+
// Simple parser for MessageFormat by the ICU project
406+
matcher = Pattern.compile("(\\{\\s*[^{]*\\s*})").matcher(text);
407+
while(matcher.find()){
408+
// Keep the whole placeholder for consistency with other formats, but also add just the placeholder name
409+
// as this is allowed with the ICU format.
410+
placeholder.add(matcher.group(1));
411+
placeholder.add(matcher.group(1).replace("{", "").replace("}", "").trim());
412+
}
413+
405414
return placeholder;
406415
}
407416

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

Lines changed: 0 additions & 81 deletions
This file was deleted.

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

Lines changed: 0 additions & 34 deletions
This file was deleted.

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>

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/translation/dict/TranslationUtilTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,14 @@ public void testGetPlaceholderFromTranslationForDrupalStyle2() {
188188
assertContainsElements(placeholder, "%title", "%url");
189189
}
190190

191+
public void testGetPlaceholderFromTranslationForIcuStyle() {
192+
Set<String> placeholder = TranslationUtil.getPlaceholderFromTranslation(
193+
"Updated URL for feed {title} to {url}."
194+
);
195+
196+
assertContainsElements(placeholder, "{title}", "{url}", "title", "url");
197+
}
198+
191199
public void testGetPlaceholderFromTranslationForKeyAndDomain() {
192200
Set<String> placeholder = TranslationUtil.getPlaceholderFromTranslation(
193201
getProject(), "my_foobar", "symfony"

0 commit comments

Comments
 (0)