Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 4211)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 4212)
@@ -299,4 +299,9 @@
         });
         return l;
+    }
+
+    public static boolean hasCode(String code)
+    {
+        return languages.containsKey(code);
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 4211)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 4212)
@@ -69,8 +69,8 @@
         else if (full.equals("in"))
             return "id";
-        /* list of non-single codes supported by josm */
-        else if (full.equals("en_GB") || full.equals("pt_BR") || full.equals("en_AU") || full.equals("zh_TW") || full.equals("zh_CN"))
+        else if (I18n.hasCode(full)) /* catch all non-single codes */
             return full;
 
+        /* return single code */
         return locale.getLanguage();
     }
