Index: /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 2842)
@@ -84,5 +84,5 @@
     public static boolean confirmLaunchMultiple(int numBrowsers) {
         String msg  = tr(
-                "You''re about to launch {0} browser windows.<br>"
+                "You are about to launch {0} browser windows.<br>"
                 + "This may both clutter your screen with browser windows<br>"
                 + "and take some time to finish.", numBrowsers);
Index: /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 2842)
@@ -285,5 +285,5 @@
             public CancelAction() {
                 putValue(NAME, tr("Cancel"));
-                putValue(SHORT_DESCRIPTION, tr("Close the dialog, don't create a new node"));
+                putValue(SHORT_DESCRIPTION, tr("Close the dialog, do not create a new node"));
                 putValue(SMALL_ICON, ImageProvider.get("cancel"));
             }
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 2842)
@@ -4,8 +4,10 @@
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.io.IOException;
+import java.text.MessageFormat;
 import java.util.Collection;
 import java.util.HashMap;
@@ -26,4 +28,5 @@
 import org.openstreetmap.josm.io.OsmServerBackreferenceReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ExceptionUtil;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -85,7 +88,6 @@
     static public void downloadReferrers(OsmDataLayer targetLayer, long id, OsmPrimitiveType type) throws IllegalArgumentException {
         if (id <= 0)
-            throw new IllegalArgumentException(tr("Id > 0 required, got {0}", id));
-        if (type == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "type"));
+            throw new IllegalArgumentException(MessageFormat.format("Id > 0 required, got {0}", id));
+        CheckParameterUtil.ensureParameterNotNull(type, "type");
         Main.worker.submit(new DownloadReferrersTask(targetLayer, id, type));
     }
@@ -125,6 +127,5 @@
         public DownloadReferrersTask(OsmDataLayer targetLayer, Collection<OsmPrimitive> children) {
             super("Download referrers", false /* don't ignore exception*/);
-            if (targetLayer == null)
-                throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "targetLayer"));
+            CheckParameterUtil.ensureParameterNotNull(targetLayer, "targetLayer");
             cancelled = false;
             this.children = new HashMap<Long, OsmPrimitiveType>();
@@ -150,6 +151,5 @@
         public DownloadReferrersTask(OsmDataLayer targetLayer, Map<Long, OsmPrimitiveType> children) {
             super("Download referrers", false /* don't ignore exception*/);
-            if (targetLayer == null)
-                throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "targetLayer"));
+            CheckParameterUtil.ensureParameterNotNull(targetLayer, "targetLayer");
             cancelled = false;
             this.children = new HashMap<Long, OsmPrimitiveType>();
@@ -178,10 +178,8 @@
         public DownloadReferrersTask(OsmDataLayer targetLayer, long id, OsmPrimitiveType type) throws IllegalArgumentException {
             super("Download referrers", false /* don't ignore exception*/);
-            if (targetLayer == null)
-                throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "targetLayer"));
+            CheckParameterUtil.ensureParameterNotNull(targetLayer, "targetLayer");
             if (id <= 0)
-                throw new IllegalArgumentException(tr("Id > 0 required, got {0}", id));
-            if (type == null)
-                throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "type"));
+                throw new IllegalArgumentException(MessageFormat.format("Id > 0 required, got {0}", id));
+            CheckParameterUtil.ensureParameterNotNull(type, "type");
             cancelled = false;
             this.children = new HashMap<Long, OsmPrimitiveType>();
@@ -226,8 +224,10 @@
             JOptionPane.showMessageDialog(
                     Main.parent,
-                    tr("There were {0} conflicts during import.",
+                    trn("There was {0} conflict during import.",
+                            "There were {0} conflicts during import.",
+                            visitor.getConflicts().size(),
                             visitor.getConflicts().size()
                     ),
-                    tr("Conflicts during download"),
+                    trn("Conflict during download", "Conflicts during download", visitor.getConflicts().size()),
                     JOptionPane.WARNING_MESSAGE
             );
Index: /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 2842)
@@ -10,4 +10,5 @@
 import java.io.File;
 import java.io.IOException;
+import java.text.MessageFormat;
 
 import javax.swing.JOptionPane;
@@ -18,4 +19,5 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.FileExporter;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -67,8 +69,7 @@
      */
     public void export(Layer layer) {
-        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.getClass().getName()));
+            throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.", layer.getClass().getName()));
 
         File file = createAndOpenSaveFileChooser(tr("Export GPX file"), ".gpx");
Index: /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 2842)
@@ -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.awt.GridBagLayout;
@@ -136,5 +137,5 @@
         for (Way way: ways) {
             if(!way.isClosed()) {
-                JOptionPane.showMessageDialog(Main.parent, tr("\"{0}\" is not closed and therefore can't be joined.", way.getName()));
+                JOptionPane.showMessageDialog(Main.parent, tr("\"{0}\" is not closed and therefore cannot be joined.", way.getName()));
                 return;
             }
@@ -149,7 +150,9 @@
                 if (!dataSourceArea.contains(node.getCoor())) {
                     int option = JOptionPane.showConfirmDialog(Main.parent,
-                            tr("The selected way(s) have nodes outside of the downloaded data region.\n"
-                                    + "This can lead to nodes being deleted accidentally.\n"
-                                    + "Are you really sure to continue?"),
+                            trn("The selected way has nodes outside of the downloaded data region.",
+                                    "The selected ways have nodes outside of the downloaded data region.",
+                                    ways.size()) + "\n"
+                                    + tr("This can lead to nodes being deleted accidentally.") + "\n"
+                                    + tr("Are you really sure to continue?"),
                                     tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION,
                                     JOptionPane.WARNING_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 2842)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -169,8 +170,6 @@
      */
     public static Command mergeNodes(OsmDataLayer layer,Collection<Node> nodes, Node targetNode) {
-        if (layer == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "nodes"));
-        if (targetNode == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "targetNode"));
+        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
+        CheckParameterUtil.ensureParameterNotNull(targetNode, "targetNode");
         if (nodes == null)
             return null;
Index: /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 2842)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.event.ActionEvent;
@@ -161,5 +162,5 @@
                     msg = tr("Opening 1 file...");
                 } else {
-                    msg = tr("Opening {0} files...", files.size());
+                    msg = trn("Opening {0} file...", "Opening {0} files...", files.size(), files.size());
                 }
                 getProgressMonitor().indeterminateSubTask(msg);
Index: /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 2842)
@@ -68,5 +68,5 @@
 
         JCheckBox layer = new JCheckBox(tr("Separate Layer"));
-        layer.setToolTipText(tr("Select if the data should be downloaded in a new layer"));
+        layer.setToolTipText(tr("Select if the data should be downloaded into a new layer"));
         layer.setSelected(Main.pref.getBoolean("download.newlayer"));
         JPanel all = new JPanel(new GridBagLayout());
Index: /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 2842)
@@ -36,9 +36,9 @@
  */
 public final class OrthogonalizeAction extends JosmAction {
-    String USAGE = "<h3>"+
-    "When one or more ways are selected, the shape is adjusted, such that all angles are 90 or 180 degrees.<h3>"+
-    "You can add two nodes to the selection. Then the direction is fixed by these two reference nodes.<h3>"+
+    String USAGE = tr(
+    "When one or more ways are selected, the shape is adjusted such, that all angles are 90 or 180 degrees.<h3>"+
+    "You can add two nodes to the selection. Then, the direction is fixed by these two reference nodes."+
     "(Afterwards, you can undo the movement for certain nodes:<br>"+
-    "Select them and press the shortcut for Orthogonalize / Undo. The default is Shift-Q.)";
+    "Select them and press the shortcut for Orthogonalize / Undo. The default is Shift-Q.)");
 
     public OrthogonalizeAction() {
@@ -194,5 +194,5 @@
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        "<html><h2>"+tr("Usage")+tr(USAGE),
+                        "<html><h2>" + tr("Usage") + "</h2>" + USAGE + "</html>",
                         tr("Orthogonalize Shape"),
                         JOptionPane.INFORMATION_MESSAGE);
@@ -201,5 +201,5 @@
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        "<html><h3>"+tr(ex.getMessage())+"<br><hr><h3>"+tr("Usage")+tr(USAGE),
+                        "<html>" + tr(ex.getMessage()) + "<br><hr><h2>" + tr("Usage") + "</h2>" + USAGE + "</html>",
                         tr("Selected Elements cannot be orthogonalized"),
                         JOptionPane.INFORMATION_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 2842)
@@ -63,7 +63,9 @@
                         if (!isInsideOneBoundingBox) {
                             int option = JOptionPane.showConfirmDialog(Main.parent,
-                                    tr("The selected way(s) have nodes outside of the downloaded data region.\n"
-                                            + "This can lead to nodes being deleted accidentally.\n"
-                                            + "Are you really sure to continue?"),
+                                    trn("The selected way has nodes outside of the downloaded data region.",
+                                            "The selected ways have nodes outside of the downloaded data region.",
+                                            Main.main.getCurrentDataSet().getSelectedWays().size()) + "\n"
+                                            + tr("This can lead to nodes being deleted accidentally.") + "\n"
+                                            + tr("Are you really sure to continue?"),
                                     tr("Please abort if you are not sure"), JOptionPane.YES_NO_CANCEL_OPTION,
                                     JOptionPane.WARNING_MESSAGE);
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 2842)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.event.ActionEvent;
@@ -103,5 +104,5 @@
                     errMsg =  tr("None of these nodes are glued to anything else.");
                 } else {
-                    errMsg = tr("None of this way's nodes are glued to anything else.");
+                    errMsg = tr("None of this way''s nodes are glued to anything else.");
                 }
             } else {
@@ -390,5 +391,6 @@
         cmds.add(new ChangeCommand(selectedWay, tmpWay)); // only one changeCommand for a way, else garbage will happen
 
-        Main.main.undoRedo.add(new SequenceCommand(tr("Dupe {0} nodes into {1} nodes", selectedNodes.size(), selectedNodes.size()+allNewNodes.size()), cmds));
+        Main.main.undoRedo.add(new SequenceCommand(
+                trn("Dupe {0} node into {1} nodes", "Dupe {0} nodes into {1} nodes", selectedNodes.size(), selectedNodes.size(), selectedNodes.size()+allNewNodes.size()), cmds));
         getCurrentDataSet().setSelected(allNewNodes);
     }
Index: /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 2842)
@@ -75,5 +75,5 @@
         OsmPrimitive primitive = getEditLayer().data.getPrimitiveById(id);
         if (primitive == null)
-            throw new IllegalStateException(tr("Didn''t find an object with id {0} in the current dataset", id));
+            throw new IllegalStateException(tr("Did not find an object with id {0} in the current dataset", id));
         updatePrimitives(Collections.singleton(primitive));
     }
Index: /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 2842)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.io.OsmServerBackreferenceReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ExceptionUtil;
 import org.xml.sax.SAXException;
@@ -233,6 +234,5 @@
          */
         public Set<OsmPrimitive> build(Collection<OsmPrimitive> base) throws IllegalArgumentException{
-            if (base == null)
-                throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null", "base"));
+            CheckParameterUtil.ensureParameterNotNull(base, "base");
             hull = new HashSet<OsmPrimitive>();
             for (OsmPrimitive p: base) {
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 2842)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
@@ -17,5 +18,5 @@
     public AudioBackAction() {
         super(tr("Back"), "audio-back", tr("Jump back."),
-        Shortcut.registerShortcut("audio:back", tr("Audio: {0}", tr("Back")), KeyEvent.VK_F6, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:back", tr("Audio: {0}", trc("audio", "Back")), KeyEvent.VK_F6, Shortcut.GROUP_DIRECT), true);
         this.putValue("help", "Action/Back");
     }
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 2842)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.KeyEvent;
@@ -12,5 +13,5 @@
     public AudioFasterAction() {
         super(tr("Faster"), "audio-faster", tr("Faster Forward"),
-        Shortcut.registerShortcut("audio:faster", tr("Audio: {0}", tr("Faster")), KeyEvent.VK_F9, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:faster", tr("Audio: {0}", trc("audio", "Faster")), KeyEvent.VK_F9, Shortcut.GROUP_DIRECT), true);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 2842)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
@@ -16,5 +17,5 @@
     public AudioFwdAction() {
         super(tr("Forward"), "audio-fwd", tr("Jump forward"),
-        Shortcut.registerShortcut("audio:forward", tr("Audio: {0}", tr("Forward")), KeyEvent.VK_F7, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:forward", tr("Audio: {0}", trc("audio", "Forward")), KeyEvent.VK_F7, Shortcut.GROUP_DIRECT), true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 2842)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
@@ -15,5 +16,5 @@
     public AudioNextAction() {
         super(tr("Next Marker"), "audio-next", tr("Play next marker."),
-        Shortcut.registerShortcut("audio:next", tr("Audio: {0}", tr("Next Marker")), KeyEvent.VK_F8, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:next", tr("Audio: {0}", trc("audio", "Next Marker")), KeyEvent.VK_F8, Shortcut.GROUP_DIRECT), true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 2842)
@@ -3,5 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-
+import static org.openstreetmap.josm.tools.I18n.trc;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -17,5 +17,5 @@
     public AudioPlayPauseAction() {
         super(tr("Play/Pause"), "audio-playpause", tr("Play/pause audio."),
-        Shortcut.registerShortcut("audio:pause", tr("Audio: {0}", tr("Play/Pause")), KeyEvent.VK_PERIOD, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:pause", tr("Audio: {0}", trc("audio", "Play/Pause")), KeyEvent.VK_PERIOD, Shortcut.GROUP_DIRECT), true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 2842)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.ActionEvent;
@@ -15,5 +16,5 @@
     public AudioPrevAction() {
         super(tr("Previous Marker"), "audio-prev", tr("Play previous marker."),
-        Shortcut.registerShortcut("audio:prev", tr("Audio: {0}", tr("Previous Marker")), KeyEvent.VK_F5, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:prev", tr("Audio: {0}", trc("audio", "Previous Marker")), KeyEvent.VK_F5, Shortcut.GROUP_DIRECT), true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 2842)
@@ -3,4 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.event.KeyEvent;
@@ -12,5 +13,5 @@
     public AudioSlowerAction() {
         super(tr("Slower"), "audio-slower", tr("Slower Forward"),
-        Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", tr("Slower")), KeyEvent.VK_F4, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", trc("audio", "Slower")), KeyEvent.VK_F4, Shortcut.GROUP_DIRECT), true);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 2842)
@@ -92,5 +92,5 @@
             } catch(Exception e) {
                 if (isCanceled()) {
-                    logger.warning(tr("Ignoring exception because download has been cancelled. Exception was: {0}" + e.toString()));
+                    logger.warning(tr("Ignoring exception because download has been cancelled. Exception was: {0}", e.toString()));
                     return;
                 }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 2842)
@@ -25,4 +25,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.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -243,5 +244,5 @@
 
     @Override public String getModeHelpText() {
-        return tr("Click to delete. Shift: delete way segment. Alt: don't delete unused nodes when deleting a way. Ctrl: delete referring objects.");
+        return tr("Click to delete. Shift: delete way segment. Alt: do not delete unused nodes when deleting a way. Ctrl: delete referring objects.");
     }
 
@@ -265,8 +266,6 @@
      */
     public static void deleteRelation(OsmDataLayer layer, Relation toDelete) {
-        if (layer == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "layer"));
-        if (toDelete == null)
-            throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "toDelete"));
+        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
+        CheckParameterUtil.ensureParameterNotNull(toDelete, "toDelete");
 
         Command cmd = DeleteCommand.delete(layer, Collections.singleton(toDelete));
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 2842)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.Font;
@@ -115,10 +116,10 @@
         JLabel description =
             new JLabel("<html><ul>"
-                    + "<li>"+tr("<b>Baker Street</b> - 'Baker' and 'Street' in any key or name.")+"</li>"
-                    + "<li>"+tr("<b>\"Baker Street\"</b> - 'Baker Street' in any key or name.")+"</li>"
-                    + "<li>"+tr("<b>name:Bak</b> - 'Bak' anywhere in the name.")+"</li>"
-                    + "<li>"+tr("<b>type=route</b> - key 'type' with value exactly 'route'.") + "</li>"
-                    + "<li>"+tr("<b>type=*</b> - key 'type' with any value. Try also <b>*=value</b>, <b>type=</b>, <b>*=*</b>, <b>*=</b>") + "</li>"
-                    + "<li>"+tr("<b>-name:Bak</b> - not 'Bak' in the name.")+"</li>"
+                    + "<li>"+tr("<b>Baker Street</b> - ''Baker'' and ''Street'' in any key or name.")+"</li>"
+                    + "<li>"+tr("<b>\"Baker Street\"</b> - ''Baker Street'' in any key or name.")+"</li>"
+                    + "<li>"+tr("<b>name:Bak</b> - ''Bak'' anywhere in the name.")+"</li>"
+                    + "<li>"+tr("<b>type=route</b> - key ''type'' with value exactly ''route''.") + "</li>"
+                    + "<li>"+tr("<b>type=*</b> - key ''type'' with any value. Try also <b>*=value</b>, <b>type=</b>, <b>*=*</b>, <b>*=</b>") + "</li>"
+                    + "<li>"+tr("<b>-name:Bak</b> - not ''Bak'' in the name.")+"</li>"
                     + "<li>"+tr("<b>foot:</b> - key=foot set to any value.")+"</li>"
                     + "<li>"+tr("<u>Special targets:</u>")+"</li>"
@@ -319,6 +320,6 @@
         @Override
         public String toString() {
-            String cs = caseSensitive ? tr("CS") : tr("CI");
-            String rx = regexSearch ? (", " + tr("RX")) : "";
+            String cs = caseSensitive ? trc("case sensitive", "CS") : trc("case insensitive", "CI");
+            String rx = regexSearch ? (", " + trc("regex search", "RX")) : "";
             return "\"" + text + "\" (" + cs + rx + ", " + mode + ")";
         }
Index: /trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java	(revision 2841)
+++ /trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java	(revision 2842)
@@ -46,5 +46,5 @@
         pnl.setLayout(new BorderLayout());
         String msg = tr("<html>{0} relations build a cycle because they refer to each other.<br>"
-                + "JOSM can''t upload them. Please edit the relations and remove the "
+                + "JOSM cannot upload them. Please edit the relations and remove the "
                 + "cyclic dependency.</html>", dep.size()-1);
         pnl.add(new JLabel(msg), BorderLayout.NORTH);
