diff --git a/java/java-tests/testData/codeInsight/externalAnnotations/content/anno/i18n/annotations.xml b/java/java-tests/testData/codeInsight/externalAnnotations/content/anno/i18n/annotations.xml
new file mode 100644
index 000000000000..4f726baa822b
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/externalAnnotations/content/anno/i18n/annotations.xml
@@ -0,0 +1,5 @@
+
+ -
+
+
+
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/externalAnnotations/src/i18n/Foo.java b/java/java-tests/testData/codeInsight/externalAnnotations/src/i18n/Foo.java
new file mode 100644
index 000000000000..237c7defcff2
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/externalAnnotations/src/i18n/Foo.java
@@ -0,0 +1,9 @@
+package i18n;
+public class Foo {
+ public Foo(String s) {
+ }
+
+ {
+ new Foo("abc de");
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java
index c7cee2d0045d..90149e44e51a 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/ExternalAnnotationsTest.java
@@ -3,6 +3,7 @@ package com.intellij.java.codeInsight;
import com.intellij.codeInsight.intention.AddAnnotationPsiFix;
import com.intellij.codeInsight.intention.IntentionAction;
+import com.intellij.codeInspection.i18n.I18nInspection;
import com.intellij.java.JavaBundle;
import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.openapi.module.Module;
@@ -78,6 +79,15 @@ public class ExternalAnnotationsTest extends UsefulTestCase {
true);
}
+ public void testHardcodedStringLiteralWithExternalPackageAnnotation() {
+ myFixture.configureByFiles("src/i18n/Foo.java", "content/anno/i18n/annotations.xml");
+ I18nInspection inspection = new I18nInspection();
+ inspection.setIgnoreForAllButNls(true);
+ myFixture.enableInspections(inspection);
+
+ myFixture.testHighlighting(true, false, false, "src/i18n/Foo.java");
+ }
+
public void testBringToSrc() {
myFixture.configureByFiles("src/toSrc/Foo.java", "content/anno/toSrc/annotations.xml");
diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java
index c0fdc900a5f3..9de286b38286 100644
--- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java
+++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/NlsInfo.java
@@ -486,7 +486,15 @@ public abstract class NlsInfo {
String packageName = ((PsiClassOwner)containingFile).getPackageName();
PsiPackage aPackage = JavaPsiFacade.getInstance(method.getProject()).findPackage(packageName);
if (aPackage != null) {
- return fromAnnotationOwner(aPackage.getAnnotationList());
+ NlsInfo info = fromAnnotationOwner(aPackage.getAnnotationList());
+ if (info != Unspecified.UNKNOWN) {
+ return info;
+ }
+
+ PsiAnnotation annotation = AnnotationUtil.findAnnotation(aPackage, ANNOTATION_NAMES, false);
+ if (annotation != null) {
+ return fromAnnotation(annotation);
+ }
}
}
return Unspecified.UNKNOWN;