Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 3417)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 3418)
@@ -424,5 +424,5 @@
      * given by <code>localName</code>.
      *
-     * Ignored if localName is null. If the locale with name <code>localName</code>
+     * Ignored if localeName is null. If the locale with name <code>localName</code>
      * isn't found the default local is set to <tt>en</tt> (english).
      *
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 3417)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 3418)
@@ -19,4 +19,6 @@
         if (code.length() == 2) {
             if (code.equals("en")) return "";
+        } else if (code.equals("zh_TW") || code.equals("zh_CN")) {
+            /* do nothing */
         } else if (code.matches("[^_]+_[^_]+")) {
             code = code.substring(0,2);
@@ -50,5 +52,5 @@
 
     /**
-     * Replies the local code used by JOSM for a given locale.
+     * Replies the locale code used by JOSM for a given locale.
      *
      * In most cases JOSM uses the 2-character ISO 639 language code ({@see Locale#getLanguage()}
@@ -65,5 +67,5 @@
             return "he";
         /* list of non-single codes supported by josm */
-        else if (full.equals("en_GB") || full.equals("en_AU"))
+        else if (full.equals("en_GB") || full.equals("pt_BR") || full.equals("en_AU") || full.equals("zh_TW") || full.equals("zh_CN"))
             return full;
 
