Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 15544)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 15547)
@@ -605,5 +605,5 @@
     public static void set(String localeName) {
         if (localeName != null) {
-            Locale l = LanguageInfo.getLocale(localeName);
+            Locale l = LanguageInfo.getLocale(localeName, true);
             if (load(LanguageInfo.getJOSMLocaleCode(l))) {
                 Locale.setDefault(l);
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 15544)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 15547)
@@ -197,4 +197,18 @@
      */
     public static Locale getLocale(String localeName) {
+        return getLocale(localeName, false);
+    }
+
+    /**
+     * Replies the locale used by Java for a given language code.
+     *
+     * Accepts JOSM and Java codes as input.
+     *
+     * @param localeName the locale code.
+     * @param useDefaultCountry if {@code true}, the current locale country will be used if no country is specified
+     * @return the resulting locale
+     * @since 15547
+     */
+    public static Locale getLocale(String localeName, boolean useDefaultCountry) {
         int country = localeName.indexOf('_');
         int variant = localeName.indexOf('@');
@@ -209,5 +223,5 @@
             l = new Locale(localeName.substring(0, country), localeName.substring(country + 1));
         } else {
-            l = new Locale(localeName, Locale.getDefault().getCountry());
+            l = new Locale(localeName, useDefaultCountry ? Locale.getDefault().getCountry() : "");
         }
         return l;
