Index: /trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 1540)
+++ /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 1541)
@@ -21,4 +21,5 @@
 import java.util.Collection;
 import java.util.Properties;
+import java.util.HashMap;
 import java.util.StringTokenizer;
 
@@ -78,4 +79,20 @@
      */
     private boolean initialized = false;
+
+    /**
+     * list of server error messages (as transported in the Error: header) and their translations.
+     */
+    public static final HashMap<String,String> serverErrorTranslations;
+
+    static {
+        serverErrorTranslations = new HashMap<String,String>();
+        serverErrorTranslations.put("Database offline for maintenance", 
+            tr("Database offline for maintenance"));
+        serverErrorTranslations.put("You must make your edits public to upload new data",
+            tr("You must make your edits public to upload new data"));
+        // FIXME there is one additional server error message that goes
+        // "You requested too many nodes (limit is #{APP_CONFIG['max_number_of_nodes']}). Either request a smaller area, or use planet.osm"
+        // but we would have to switch this mechanism to using regular expressions if we wanted to translate that...
+    }
     
     private StringWriter swriter = new StringWriter();
@@ -410,5 +427,7 @@
                 if (activeConnection.getHeaderField("Error") != null) {
                     statusMessage.append(": ");
-                    statusMessage.append(activeConnection.getHeaderField("Error"));
+                    String er = activeConnection.getHeaderField("Error");
+                    if (serverErrorTranslations.containsKey(er)) er = serverErrorTranslations.get(er);
+                    statusMessage.append(er);
                 }
                 activeConnection.disconnect();
