Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesCellRenderer.java	(revision 14173)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesCellRenderer.java	(revision 14174)
@@ -10,8 +10,11 @@
 import java.awt.Font;
 import java.util.Collection;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.swing.JLabel;
@@ -40,4 +43,7 @@
     private static final CachingProperty<Boolean> DISCARDABLE
             = new BooleanProperty("display.discardable-keys", false).cached();
+
+    // Matches ISO-639 two and three letters language codes
+    private static final Pattern LANGUAGE_NAMES = Pattern.compile("name:(\\p{Lower}{2,3})");
 
     static {
@@ -111,4 +117,14 @@
                 }
             }
+            if (column == 0 && str != null) {
+                Matcher m = LANGUAGE_NAMES.matcher(str);
+                if (m.matches()) {
+                    String code = m.group(1);
+                    String label = new Locale(code).getDisplayLanguage();
+                    if (!code.equals(label)) {
+                        str = new StringBuilder(str).append(" <").append(label).append('>').toString();
+                    }
+                }
+            }
             ((JLabel) c).putClientProperty("html.disable", Boolean.TRUE); // Fix #8730
             ((JLabel) c).setText(str);
