Index: trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 2852)
@@ -5,4 +5,5 @@
 
 import java.text.DateFormat;
+import java.text.MessageFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -56,5 +57,5 @@
     public ChangesetQuery forUser(int uid) throws IllegalArgumentException{
         if (uid <= 0)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' > 0 expected. Got ''{1}''.", "uid", uid));
+            throw new IllegalArgumentException(MessageFormat.format("Parameter ''{0}'' > 0 expected. Got ''{1}''.", "uid", uid));
         this.uid = uid;
         this.userName = null;
@@ -359,9 +360,9 @@
                 if (k.equals("uid")) {
                     if (queryParams.containsKey("display_name"))
-                        throw new ChangesetQueryUrlException(tr("Can't create a changeset query including both the query parameters 'uid' and 'display_name'"));
+                        throw new ChangesetQueryUrlException(tr("Cannot create a changeset query including both the query parameters ''uid'' and ''display_name''"));
                     csQuery.forUser(parseUid(queryParams.get("uid")));
                 } else if (k.equals("display_name")) {
                     if (queryParams.containsKey("uid"))
-                        throw new ChangesetQueryUrlException(tr("Can't create a changeset query including both the query parameters 'uid' and 'display_name'"));
+                        throw new ChangesetQueryUrlException(tr("Cannot create a changeset query including both the query parameters ''uid'' and ''display_name''"));
                     csQuery.forUser(queryParams.get("display_name"));
                 } else if (k.equals("open")) {
Index: trunk/src/org/openstreetmap/josm/io/DefaultProxySelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/DefaultProxySelector.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/DefaultProxySelector.java	(revision 2852)
@@ -150,5 +150,5 @@
         case USE_SYSTEM_SETTINGS:
             if (!JVM_WILL_USE_SYSTEM_PROXIES) {
-                System.err.println(tr("Warning: the JVM is not configured to lookup proxies from the system settings. The property 'java.net.useSystemProxies' was missing at startup time. Won't use a proxy."));
+                System.err.println(tr("Warning: the JVM is not configured to lookup proxies from the system settings. The property ''java.net.useSystemProxies'' was missing at startup time.  Will not use a proxy."));
                 return Collections.singletonList(Proxy.NO_PROXY);
             }
Index: trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java	(revision 2852)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -78,6 +79,5 @@
             progressMonitor = NullProgressMonitor.INSTANCE;
         }
-        if (diffUploadResponse == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "source"));
+        CheckParameterUtil.ensureParameterNotNull(diffUploadResponse, "diffUploadResponse");
         try {
             progressMonitor.beginTask(tr("Parsing response from server..."));
Index: trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 2852)
@@ -12,4 +12,5 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.text.MessageFormat;
 import java.util.Calendar;
 
@@ -33,4 +34,5 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -52,11 +54,9 @@
     @Override
     public void exportData(File file, Layer layer) throws IOException {
-        if (layer == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "layer"));
+        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
         if (!(layer instanceof OsmDataLayer) && !(layer instanceof GpxLayer))
-            throw new IllegalArgumentException(tr("Expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.", layer
+            throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.", layer
                     .getClass().getName()));
-        if (file == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "file"));
+        CheckParameterUtil.ensureParameterNotNull(file, "file");
 
         String fn = file.getPath();
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 2852)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -107,6 +108,5 @@
      */
     protected void remember(DataSet ds, long id, OsmPrimitiveType type) throws IllegalArgumentException, NoSuchElementException{
-        if (ds == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "ds"));
+        CheckParameterUtil.ensureParameterNotNull(ds, "ds");
         if (id <= 0) return;
         OsmPrimitive primitive = ds.getPrimitiveById(id, type);
Index: trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 2852)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.io.BufferedReader;
@@ -33,4 +34,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -132,6 +134,5 @@
      */
     protected OsmApi(String serverUrl)  {
-        if (serverUrl == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "serverUrl"));
+        CheckParameterUtil.ensureParameterNotNull(serverUrl, "serverUrl");
         this.serverUrl = serverUrl;
     }
@@ -306,6 +307,5 @@
      */
     public void openChangeset(Changeset changeset, ProgressMonitor progressMonitor) throws OsmTransferException {
-        if (changeset == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "changeset"));
+        CheckParameterUtil.ensureParameterNotNull(changeset, "changeset");
         try {
             progressMonitor.beginTask((tr("Creating changeset...")));
@@ -338,6 +338,5 @@
      */
     public void updateChangeset(Changeset changeset, ProgressMonitor monitor) throws OsmTransferException {
-        if (changeset == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "changeset"));
+        CheckParameterUtil.ensureParameterNotNull(changeset, "changeset");
         if (monitor == null) {
             monitor = NullProgressMonitor.INSTANCE;
@@ -379,6 +378,5 @@
      */
     public void closeChangeset(Changeset changeset, ProgressMonitor monitor) throws OsmTransferException {
-        if (changeset == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "changeset"));
+        CheckParameterUtil.ensureParameterNotNull(changeset, "changeset");
         if (monitor == null) {
             monitor = NullProgressMonitor.INSTANCE;
@@ -423,5 +421,6 @@
             // Upload to the server
             //
-            monitor.indeterminateSubTask(tr("Uploading {0} objects...", list.size()));
+            monitor.indeterminateSubTask(
+                    trn("Uploading {0} object...", "Uploading {0} objects...", list.size(), list.size()));
             String diffUploadResponse = sendRequest("POST", "changeset/" + changeset.getId() + "/upload", diffUploadRequest,monitor);
 
Index: trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java	(revision 2852)
@@ -239,5 +239,5 @@
                     || qName.equals("relation")) {
                 if (currentModificationType == null) {
-                    throwException(tr("Illegal document structure. Found node, way, or relation outside of 'create', 'modify', or 'delete'."));
+                    throwException(tr("Illegal document structure. Found node, way, or relation outside of ''create'', ''modify'', or ''delete''."));
                 }
                 data.put(currentPrimitive, currentModificationType);
Index: trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 2852)
@@ -5,4 +5,5 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.text.MessageFormat;
 import java.util.LinkedList;
 import java.util.List;
@@ -195,5 +196,5 @@
                 return User.createOsmUser(id, name);
             } catch(NumberFormatException e) {
-                throwException(tr("Illegal value for attribute ''uid''. Got ''{0}''.", uid));
+                throwException(MessageFormat.format("Illegal value for attribute ''uid''. Got ''{0}''.", uid));
             }
             return null;
Index: trunk/src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 2852)
@@ -13,4 +13,5 @@
 import java.io.PrintWriter;
 import java.io.Writer;
+import java.text.MessageFormat;
 
 import javax.swing.JOptionPane;
@@ -43,5 +44,5 @@
             save(file, (OsmDataLayer) layer);
         } else
-            throw new IllegalArgumentException(tr("Expected instance of OsmDataLayer. Got ''{0}''.", layer
+            throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer. Got ''{0}''.", layer
                     .getClass().getName()));
     }
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2852)
@@ -5,4 +5,5 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -33,4 +34,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.DateUtils;
 import org.xml.sax.Attributes;
@@ -325,5 +327,5 @@
                 return User.createOsmUser(id, name);
             } catch(NumberFormatException e) {
-                throwException(tr("Illegal value for attribute ''uid''. Got ''{0}''.", uid));
+                throwException(MessageFormat.format("Illegal value for attribute ''uid''. Got ''{0}''.", uid));
             }
             return null;
@@ -586,6 +588,5 @@
             progressMonitor = NullProgressMonitor.INSTANCE;
         }
-        if (source == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "source"));
+        CheckParameterUtil.ensureParameterNotNull(source, "source");
         OsmReader reader = new OsmReader();
         try {
Index: trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java	(revision 2852)
@@ -5,4 +5,5 @@
 
 import java.io.InputStream;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -16,4 +17,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -50,8 +52,5 @@
      */
     public OsmServerBackreferenceReader(OsmPrimitive primitive) throws IllegalArgumentException {
-        if (primitive == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "primitive"));
-        if (primitive.isNew())
-            throw new IllegalArgumentException(tr("ID parameter ''{0}'' > 0 expected. Got ''{1}''.", "primitive", primitive.getId()));
+        CheckParameterUtil.ensureValidPrimitiveId(primitive, "primitive");
         this.id = primitive.getId();
         this.primitiveType = OsmPrimitiveType.from(primitive);
@@ -71,7 +70,6 @@
     public OsmServerBackreferenceReader(long id, OsmPrimitiveType type) throws IllegalArgumentException   {
         if (id <= 0)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' > 0 expected. Got ''{1}''.", "id", id));
-        if (type == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "type"));
+            throw new IllegalArgumentException(MessageFormat.format("Parameter ''{0}'' > 0 expected. Got ''{1}''.", "id", id));
+        CheckParameterUtil.ensureParameterNotNull(type, "type");
         this.id = id;
         this.primitiveType = type;
Index: trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 2852)
@@ -7,4 +7,5 @@
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -18,4 +19,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -51,6 +53,5 @@
      */
     public List<Changeset> queryChangesets(ChangesetQuery query, ProgressMonitor monitor) throws OsmTransferException {
-        if (query == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "query"));
+        CheckParameterUtil.ensureParameterNotNull(query, "query");
         if (monitor == null) {
             monitor = NullProgressMonitor.INSTANCE;
@@ -86,5 +87,5 @@
     public Changeset readChangeset(long id, ProgressMonitor monitor) throws OsmTransferException {
         if (id <= 0)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' > 0 expected. Got ''{1}''.", "id", id));
+            throw new IllegalArgumentException(MessageFormat.format("Parameter ''{0}'' > 0 expected. Got ''{1}''.", "id", id));
         if (monitor == null) {
             monitor = NullProgressMonitor.INSTANCE;
@@ -171,5 +172,5 @@
     public ChangesetDataSet downloadChangeset(int id, ProgressMonitor monitor) throws IllegalArgumentException, OsmTransferException {
         if (id <= 0)
-            throw new IllegalArgumentException(tr("Expected value of type integer > 0 for parameter ''{0}'', got {1}", "id", id));
+            throw new IllegalArgumentException(MessageFormat.format("Expected value of type integer > 0 for parameter ''{0}'', got {1}", "id", id));
         if (monitor == null) {
             monitor = NullProgressMonitor.INSTANCE;
Index: trunk/src/org/openstreetmap/josm/io/OsmServerHistoryReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerHistoryReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerHistoryReader.java	(revision 2852)
@@ -5,4 +5,5 @@
 
 import java.io.InputStream;
+import java.text.MessageFormat;
 
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -10,4 +11,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -30,8 +32,7 @@
      */
     public OsmServerHistoryReader(OsmPrimitiveType type, long id) throws IllegalArgumentException {
-        if (type == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "type"));
+        CheckParameterUtil.ensureParameterNotNull(type, "type");
         if (id < 0)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' >= 0 expected. Got ''{1}''.", "id", id));
+            throw new IllegalArgumentException(MessageFormat.format("Parameter ''{0}'' >= 0 expected. Got ''{1}''.", "id", id));
         this.primitiveType = type;
         this.id = id;
Index: trunk/src/org/openstreetmap/josm/io/OsmServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerObjectReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerObjectReader.java	(revision 2852)
@@ -6,4 +6,5 @@
 import java.io.IOException;
 import java.io.InputStream;
+import java.text.MessageFormat;
 
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -13,4 +14,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.xml.sax.SAXException;
 
@@ -40,7 +42,6 @@
     public OsmServerObjectReader(long id, OsmPrimitiveType type, boolean full) throws IllegalArgumentException {
         if (id <= 0)
-            throw new IllegalArgumentException(tr("Expected value > 0 for parameter ''{0}'', got {1}", "id", id));
-        if (type == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "type"));
+            throw new IllegalArgumentException(MessageFormat.format("Expected value > 0 for parameter ''{0}'', got {1}", "id", id));
+        CheckParameterUtil.ensureParameterNotNull(type, "type");
         this.id = new SimplePrimitiveId(id, type);
         this.full = full;
@@ -57,8 +58,5 @@
      */
     public OsmServerObjectReader(PrimitiveId id, boolean full) {
-        if (id == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "id"));
-        if (id.getUniqueId() <= 0)
-            throw new IllegalArgumentException(tr("Expected value > 0 for parameter ''{0}'', got {1}", "id.getUniqueId()", id.getUniqueId()));
+        CheckParameterUtil.ensureValidPrimitiveId(id, "id");
         this.id = id;
         this.full = full;
Index: trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 2852)
@@ -84,5 +84,5 @@
             } catch (Exception e) {
                 e.printStackTrace();
-                throw new OsmTransferException(tr("Couldn't connect to the OSM server. Please check your internet connection."), e);
+                throw new OsmTransferException(tr("Could not connect to the OSM server. Please check your internet connection."), e);
             }
             try {
Index: trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 2851)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 2852)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.util.ArrayList;
@@ -18,4 +19,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -154,5 +156,8 @@
                     chunk.add(it.next());
                 }
-                progressMonitor.setCustomText(tr("({0}/{1}) Uploading {2} objects...", i,numChunks,chunk.size()));
+                progressMonitor.setCustomText(
+                        trn("({0}/{1}) Uploading {2} object...",
+                                "({0}/{1}) Uploading {2} objects...",
+                                chunk.size(), i, numChunks, chunk.size()));
                 processed.addAll(api.uploadDiff(chunk, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)));
             }
@@ -176,6 +181,5 @@
      */
     public void uploadOsm(UploadStrategySpecification strategy, Collection<OsmPrimitive> primitives, Changeset changeset, ProgressMonitor monitor) throws OsmTransferException {
-        if (changeset == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "changeset"));
+        CheckParameterUtil.ensureParameterNotNull(changeset, "changeset");
         processed = new LinkedList<OsmPrimitive>();
         monitor = monitor == null ? NullProgressMonitor.INSTANCE : monitor;
