Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 14659)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 14660)
@@ -92,4 +92,5 @@
     private static Locale originalLocale = Locale.getDefault();
     private static Map<String, PluralMode> languages = new HashMap<>();
+    // NOTE: check also WikiLanguage handling in LanguageInfo.java when adding new languages
     static {
         //languages.put("ar", PluralMode.MODE_AR);
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 14659)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 14660)
@@ -55,9 +55,27 @@
         } else if (type == LocaleType.OSM_WIKI && Locale.TRADITIONAL_CHINESE.equals(locale)) {
             return "Zh-hant:";
-        } else if (type == LocaleType.OSM_WIKI) {
-            return locale.getLanguage() + ':';
         }
 
         String code = getJOSMLocaleCode(locale);
+
+        if (type == LocaleType.OSM_WIKI) {
+            if (code.matches("[^_@]+[_@][^_]+")) {
+                code = code.substring(0, 2);
+                if ("en".equals(code))
+                    return "";
+            }
+            if (code.equals("nb")) { /* OSM-Wiki has "no", but no "nb" */
+              return "No:";
+            }
+            else if (code.equals("de") || code.equals("es") || code.equals("fr") ||
+            code.equals("it") || code.equals("nl") || code.equals("ru")
+            || code.equals("ja")) {
+                return code.toUpperCase(Locale.ENGLISH) + ":";
+            } else {
+                return code.substring(0, 1).toUpperCase(Locale.ENGLISH)
+                    + code.substring(1) + ":";
+            }
+        }
+
         if (type == LocaleType.BASELANGUAGE) {
             if (code.matches("[^_]+_[^_]+")) {
