Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 8226)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 8227)
@@ -1,3 +1,2 @@
-// License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
@@ -349,5 +348,5 @@
 
     private static URL getTranslationFile(String lang) {
-        return Main.class.getResource("/data/"+lang+".lang");
+        return Main.class.getResource("/data/"+lang.replace("@","-")+".lang");
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 8226)
+++ trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 8227)
@@ -48,6 +48,10 @@
                 return null;
             }
-        } else if(type == LocaleType.DEFAULTNOTENGLISH && "en".equals(code))
+        } else if(type == LocaleType.DEFAULTNOTENGLISH && "en".equals(code)) {
             return null;
+        } else if(code.matches(".+@.+")) {
+          return code.substring(0,1).toUpperCase() + code.substring(1,2)
+          + "-" + code.substring(3,4).toUpperCase() + code.substring(4) + ":";
+        }
         return code.substring(0,1).toUpperCase() + code.substring(1) + ":";
     }
@@ -109,5 +113,5 @@
      */
     public static Locale getLocale(String localeName) {
-        if ("ca@valencia".equals(localeName) || "ca__valencia".equals(localeName)) {
+        if ("ca@valencia".equals(localeName)) {
             return new Locale("ca", "", "valencia");
         }
@@ -152,5 +156,7 @@
      */
     public static String getLanguageCodeXML() {
-        return getJOSMLocaleCode()+".";
+        String code = getJOSMLocaleCode();
+        code = code.replace("@", "-");
+        return code+".";
     }
 
@@ -162,5 +168,7 @@
      */
     public static String getLanguageCodeManifest() {
-        return getJOSMLocaleCode()+"_";
+        String code = getJOSMLocaleCode();
+        code = code.replace("@", "-");
+        return code+"_";
     }
 }
