Index: trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java	(revision 8238)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java	(revision 8239)
@@ -46,9 +46,9 @@
      *
      * @param p The primitive whose translation is missing
+     * @param name The name whose translation is missing
      */
-    private void missingTranslation(OsmPrimitive p) {
+    private void missingTranslation(OsmPrimitive p, String name) {
         errors.add(new TestError(this, Severity.OTHER,
-            tr("A name:* translation is missing."),
-            NAME_TRANSLATION_MISSING, p));
+                tr("Missing name:*={0}. Add tag with correct language key.", name), NAME_TRANSLATION_MISSING, p));
     }
 
@@ -90,5 +90,5 @@
         if (splitNames.length == 1) {
             /* The name is not composed of multiple parts. Complain. */
-            missingTranslation(p);
+            missingTranslation(p, splitNames[0]);
             return;
         }
@@ -97,6 +97,5 @@
         for (String n : splitNames) {
             if (!names.contains(n)) {
-                missingTranslation(p);
-                return;
+                missingTranslation(p, n);
             }
         }
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java	(revision 8239)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java	(revision 8239)
@@ -0,0 +1,61 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.validation.tests;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.validation.TestError;
+
+public class NameMismatchTest {
+
+    @Before
+    public void setUp() throws Exception {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    List<TestError> test(String primitive) {
+        final NameMismatch test = new NameMismatch();
+        test.check(OsmUtils.createPrimitive(primitive));
+        return test.getErrors();
+    }
+
+    @Test
+    public void test0() throws Exception {
+        final List<TestError> errors = test("node name:de=Europa");
+        assertThat(errors.size(), is(1));
+        assertThat(errors.get(0).getMessage(), is("A name is missing, even though name:* exists."));
+    }
+
+    @Test
+    public void test1() throws Exception {
+        final List<TestError> errors = test("node name=Europe name:de=Europa");
+        assertThat(errors.size(), is(1));
+        assertThat(errors.get(0).getMessage(), is("Missing name:*=Europe. Add tag with correct language key."));
+    }
+
+    @Test
+    public void test2() throws Exception {
+        final List<TestError> errors = test("node name=Europe name:de=Europa name:en=Europe");
+        assertThat(errors.size(), is(0));
+    }
+
+    @Test
+    public void test3() throws Exception {
+        List<TestError> errors;
+        errors = test("node \"name\"=\"Italia - Italien - Italy\"");
+        assertThat(errors.size(), is(0));
+        errors = test("node name=\"Italia - Italien - Italy\" name:it=Italia");
+        assertThat(errors.size(), is(2));
+        errors = test("node name=\"Italia - Italien - Italy\" name:it=Italia name:de=Italien");
+        assertThat(errors.size(), is(1));
+        assertThat(errors.get(0).getMessage(), is("Missing name:*=Italy. Add tag with correct language key."));
+        errors = test("node name=\"Italia - Italien - Italy\" name:it=Italia name:de=Italien name:en=Italy");
+        assertThat(errors.size(), is(0));
+    }
+}
