Index: trunk/src/org/openstreetmap/josm/data/osm/IPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/IPrimitive.java	(revision 19068)
+++ trunk/src/org/openstreetmap/josm/data/osm/IPrimitive.java	(revision 19070)
@@ -381,9 +381,9 @@
      *
      * @return the name of this primitive, <code>null</code> if no name exists
-     * @see LanguageInfo#getLanguageCodes
+     * @see LanguageInfo#getOSMLocaleCodes
      */
     default String getLocalName() {
-        for (String s : LanguageInfo.getLanguageCodes(null)) {
-            String val = get("name:" + s);
+        for (String s : LanguageInfo.getOSMLocaleCodes("name:")) {
+            String val = get(s);
             if (val != null)
                 return val;
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 19068)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 19070)
@@ -191,5 +191,9 @@
                 return new String[]{prefix+"zh-Hant-TW", prefix+"zh-Hant", prefix+"zh"};
             default:
-                return new String[]{prefix+main};
+                ArrayList<String> r = new ArrayList<String>();
+                for (String s : LanguageInfo.getLanguageCodes(null)) {
+                    r.add(prefix + s);
+                }
+                return r.toArray(String[]::new);
         }
     }
