Index: applications/editors/josm/i18n/build.xml
===================================================================
--- applications/editors/josm/i18n/build.xml	(revision 25150)
+++ applications/editors/josm/i18n/build.xml	(revision 25155)
@@ -27,5 +27,5 @@
   <target name="trans_.java">
     <mkdir dir="${i18n.build.dir}"/>
-    <exec executable="perl" output="${i18n.build.dir}/trans_presets.java">
+    <exec executable="perl" failonerror="true" output="${i18n.build.dir}/trans_presets.java">
       <arg line="convpreset.pl ${josm.presets}"/>
     </exec>
Index: applications/editors/josm/i18n/convpreset.pl
===================================================================
--- applications/editors/josm/i18n/convpreset.pl	(revision 25150)
+++ applications/editors/josm/i18n/convpreset.pl	(revision 25155)
@@ -11,4 +11,5 @@
 my @combo_values;
 my $combo_idx;
+my $result = 0;
 my $comment = 0;
 
@@ -104,7 +105,8 @@
   }
   # first handle display values
-  elsif($line =~ /<combo.*\s+text=(".*?").*\s+display_values="(.*?)"/)
-  {
-    my ($n,$vals) = ($1,$2);
+  elsif($line =~ /<(combo|multiselect).*\s+text=(".*?").*\s+display_values="(.*?)"/)
+  {
+    my ($type,$n,$vals) = ($1,$2,$3);
+    my $sp = ($type eq "combo" ? ",":";");
     $combo_n = $n;
     $combo_idx = 0;
@@ -112,22 +114,23 @@
     if($line =~ /text_context=(".*?")/)
     {
-      print "/* item $item combo $n */ trc($1,$n);";
-    }
-    else
-    {
-      print "/* item $item combo $n */ tr($n);";
-    }
-    $vals =~ s/\\,/\x91/g;
-    @combo_values = split ",",$vals;
+      print "/* item $item $type $n */ trc($1,$n);";
+    }
+    else
+    {
+      print "/* item $item $type $n */ tr($n);";
+    }
+    $vals =~ s/\\$sp/\x91/g;
+    @combo_values = split $sp,$vals;
     for (my $i=0; $i<@combo_values; ++$i) {
-      $combo_values[$i] =~ s/\x91/,/g;
+      $combo_values[$i] =~ s/\x91/$sp/g;
       next if $combo_values[$i] =~ /^[0-9-]+$/; # search for non-numbers
-      print "/* item $item combo $n display value */" . ($vctx ? " trc($vctx, \"$combo_values[$i]\");" : " tr(\"$combo_values[$i]\");");
-    }
-    print "\n";
-  }
-  elsif($line =~ /<combo.*\s+text=(".*?").*\s+values="(.*?)"/)
-  {
-    my ($n,$vals) = ($1,$2);
+      print "/* item $item $type $n display value */" . ($vctx ? " trc($vctx, \"$combo_values[$i]\");" : " tr(\"$combo_values[$i]\");");
+    }
+    print "\n";
+  }
+  elsif($line =~ /<(combo|multiselect).*\s+text=(".*?").*\s+values="(.*?)"/)
+  {
+    my ($type,$n,$vals) = ($1,$2,$3);
+    my $sp = ($type eq "combo" ? ",":";");
     $combo_n = $n;
     $combo_idx = 0;
@@ -135,15 +138,15 @@
     if($line =~ /text_context=(".*?")/)
     {
-      print "/* item $item combo $n */ trc($1,$n);";
-    }
-    else
-    {
-      print "/* item $item combo $n */ tr($n);";
-    }
-    @combo_values = split ",",$vals;
+      print "/* item $item $type $n */ trc($1,$n);";
+    }
+    else
+    {
+      print "/* item $item $type $n */ tr($n);";
+    }
+    @combo_values = split $sp,$vals;
     foreach my $val (@combo_values)
     {
       next if $val =~ /^[0-9-]+$/; # search for non-numbers
-      print "/* item $item combo $n display value */" . ($vctx ? " trc($vctx, \"$val\");" : " tr(\"$val\");");
+      print "/* item $item $type $n display value */" . ($vctx ? " trc($vctx, \"$val\");" : " tr(\"$val\");");
     }
     print "\n";
@@ -179,8 +182,10 @@
      || $line =~ /<\/?optional>/
      || $line =~ /<key/
-     || $line =~ /annotations/
+     || $line =~ /<presets/
+     || $line =~ /<\/presets/
      || $line =~ /roles/
      || $line =~ /href=/
      || $line =~ /<!--/
+     || $line =~ /<\?xml/
      || $line =~ /-->/
      || $comment)
@@ -191,5 +196,5 @@
   {
     print "/* unparsed line $line */\n";
-#    print STDERR "Unparsed line $line\n";
+    $result = 20
   }
 
@@ -200,2 +205,3 @@
 
 print "}}\n";
+return $result if $result;
Index: applications/editors/josm/i18n/specialmessages.java
===================================================================
--- applications/editors/josm/i18n/specialmessages.java	(revision 25150)
+++ applications/editors/josm/i18n/specialmessages.java	(revision 25155)
@@ -9,4 +9,5 @@
 /* OSM server message */ tr("Database offline for maintenance");
 /* OSM server message */ tr("The maximum bbox size is 0.25, and your request was too large. Either request a smaller area, or use planet.osm");
+/* JOSM server message */ tr("JOSM-Trac login at josm.openstreetmap.de");
 /* Java message loading audio data */ tr("could not get audio input stream from input URL");
 /* Java message loading audio data */ tr("Audio Device Unavailable");
