Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReader.java	(revision 34292)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReader.java	(revision 34331)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.io.ProjectionPatterns;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -50,4 +51,5 @@
     public static final String KML_EXT_TRACK = "Track";
     public static final String KML_EXT_COORD = "coord";
+    public static final String KML_EXT_LANG = "lang";
     // CHECKSTYLE.ON: SingleSpaceSeparator
 
@@ -104,4 +106,5 @@
         Relation relation = null;
         String role = "";
+        String previousName = null;
         Map<String, String> tags = new HashMap<>();
         while (parser.hasNext()) {
@@ -115,5 +118,9 @@
                     }
                 } else if (parser.getLocalName().equals(KML_NAME)) {
-                    tags.put(KML_NAME, parser.getElementText());
+                    try {
+                        tags.put(KML_NAME, parser.getElementText());
+                    } catch (XMLStreamException e) {
+                        Logging.trace(e);
+                    }
                 } else if (parser.getLocalName().equals(KML_SIMPLE_DATA)) {
                     String key = parser.getAttributeValue(null, "name");
@@ -151,5 +158,10 @@
                 } else if (parser.getLocalName().equals(KML_WHEN)) {
                     when = DateUtils.tsFromString(parser.getElementText().trim());
-                }
+                } else if (parser.getLocalName().equals(KML_EXT_LANG)) {
+                    if (KML_NAME.equals(previousName)) {
+                        tags.put(KML_NAME, parser.getElementText());
+                    }
+                }
+                previousName = parser.getLocalName();
             } else if (event == XMLStreamConstants.END_ELEMENT) {
                 if (parser.getLocalName().equals(KML_PLACEMARK)) {
@@ -158,5 +170,5 @@
                     list.add(node);
                 } else if (parser.getLocalName().equals(KML_LINE_STRING)
-                        || parser.getLocalName().equals(KML_EXT_TRACK) 
+                        || parser.getLocalName().equals(KML_EXT_TRACK)
                         || parser.getLocalName().equals(KML_LINEAR_RING)) {
                     if (way != null && wayNodes != null)
