diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.java b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.java index f2b82de1e2..10e2e9c79b 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.java +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.java @@ -112,6 +112,11 @@ public class DuplicateCrowdInStrings extends ResourceXmlDetector { @Override public void visitElement(@NotNull XmlContext context, @NotNull Element element) { + // Only check the golden copy - not the translated sources. + if (!"values".equals(context.file.getParentFile().getName())) { + return; + } + NodeList childNodes = element.getChildNodes(); if (childNodes.getLength() > 0) { if (childNodes.getLength() == 1) { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.java b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.java index 1c423a7f23..e40c04eae5 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.java +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.java @@ -26,7 +26,7 @@ public class DuplicateCrowdInStringsTest { /** Easiest test case: Two exact duplicates in the same file */ @Language("XML") - private final String selfInvalid = "\n" + + private final String mSelfInvalid = "\n" + " a\n" + " a\n" + ""; @@ -38,9 +38,22 @@ public class DuplicateCrowdInStringsTest { lint() .allowMissingSdk() .allowCompilationErrors() - .files(xml("res/values/string.xml", selfInvalid)) + .files(xml("res/values/string.xml", mSelfInvalid)) .issues(DuplicateCrowdInStrings.ISSUE) .run() .expectErrorCount(1); } + + @Test + public void invalidStringInNonEnglishPasses() { + // We only want to check the base resource files, not the translated ones - + // translators know if values are equivalent and do not require a comment explaining why. + lint() + .allowMissingSdk() + .allowCompilationErrors() + .files(xml("res/values-af/string.xml", mSelfInvalid)) + .issues(DuplicateCrowdInStrings.ISSUE) + .run() + .expectErrorCount(0); + } }