Index: src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Way.java	(Revision 1975)
+++ src/org/openstreetmap/josm/data/osm/Way.java	(Arbeitskopie)
@@ -185,7 +185,7 @@
         if (incomplete) {
             name = tr("incomplete");
         } else {
-            name = get("name");
+            name = getNameTag();
             if (name == null) {
                 name = get("ref");
             }
Index: src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Relation.java	(Revision 1975)
+++ src/org/openstreetmap/josm/data/osm/Relation.java	(Arbeitskopie)
@@ -180,7 +180,7 @@
             }
             String nameTag = null;
             for (String n : names) {
-                nameTag = get(n);
+                nameTag = (n=="name") ? getNameTag() : get(n);
                 if (nameTag != null) {
                     break;
                 }
Index: src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Node.java	(Revision 1975)
+++ src/org/openstreetmap/josm/data/osm/Node.java	(Arbeitskopie)
@@ -131,7 +131,7 @@
         if (incomplete) {
             name = tr("incomplete");
         } else {
-            name = get("name");
+            name = getNameTag();
             if (name == null) {
                 name = id == 0 ? tr("node") : ""+id;
             }
Index: src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(Revision 1975)
+++ src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(Arbeitskopie)
@@ -9,6 +9,7 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -334,6 +335,20 @@
         return keys == null ? null : keys.get(key);
     }
 
+    protected String getNameTag() {
+        String result = null;
+        if (Main.pref.getBoolean("tags.name.uselocale", true)) {
+            final String language = Locale.getDefault().getLanguage();
+            if (language != "") {
+                result = get("name:" + language);
+            }
+        }
+        if ((result == null) || (result == "")) {
+            result = get("name");
+        }
+        return result;
+    }
+
     public final Collection<Entry<String, String>> entrySet() {
         if (keys == null)
             return Collections.emptyList();
