Index: applications/editors/josm/i18n/convpreset.pl
===================================================================
--- applications/editors/josm/i18n/convpreset.pl	(revision 26176)
+++ applications/editors/josm/i18n/convpreset.pl	(revision 26180)
@@ -21,4 +21,11 @@
 print "class trans_preset { void tr(String s){} void f() {";
 
+sub fix($)
+{
+  my ($val) = @_;
+  $val =~ s/'/''/g;
+  return $val;
+}
+
 while(my $line = <>)
 {
@@ -26,5 +33,5 @@
   if($line =~ /<item\s+name=(".*?")/)
   {
-    my $val = $1;
+    my $val = fix($1);
     $item = $group ? "$group$val" : $val;
     $item =~ s/""/\//;
@@ -40,5 +47,5 @@
   elsif($line =~ /<group.*\s+name=(".*?")/)
   {
-    my $gr = $1;
+    my $gr = fix($1);
     $group = $group ? "$group$gr" : $gr;
     $group =~ s/\"\"/\//;
@@ -58,5 +65,5 @@
   elsif($line =~ /<label.*\s+text=(".*?")/)
   {
-    my $text = $1;
+    my $text = fix($1);
     if($line =~ /text_context=(".*?")/)
     {
@@ -70,5 +77,5 @@
   elsif($line =~ /<text.*\s+text=(".*?")/)
   {
-    my $n = $1;
+    my $n = fix($1);
     if($line =~ /text_context=(".*?")/)
     {
@@ -82,5 +89,5 @@
   elsif($line =~ /<check.*\s+text=(".*?")/)
   {
-    my $n = $1;
+    my $n = fix($1);
     if($line =~ /text_context=(".*?")/)
     {
@@ -94,5 +101,5 @@
   elsif($line =~ /<role.*\s+text=(".*?")/)
   {
-    my $n = $1;
+    my $n = fix($1);
     if($line =~ /text_context=(".*?")/)
     {
@@ -107,5 +114,5 @@
   elsif($line =~ /<(combo|multiselect).*\s+text=(".*?").*\s+display_values="(.*?)"/)
   {
-    my ($type,$n,$vals) = ($1,$2,$3);
+    my ($type,$n,$vals) = ($1,fix($2),$3);
     my $sp = ($type eq "combo" ? ",":";");
     $combo_n = $n;
@@ -122,8 +129,11 @@
     $vals =~ s/\\$sp/\x91/g;
     @combo_values = split $sp,$vals;
-    for (my $i=0; $i<@combo_values; ++$i) {
-      $combo_values[$i] =~ s/\x91/$sp/g;
-      next if $combo_values[$i] =~ /^[0-9-]+$/; # search for non-numbers
-      print "/* item $item $type $n display value */" . ($vctx ? " trc($vctx, \"$combo_values[$i]\");" : " tr(\"$combo_values[$i]\");");
+    for (my $i=0; $i<@combo_values; ++$i)
+    {
+      my $val = $combo_values[$i];
+      $val =~ s/\x91/$sp/g;
+      next if $val =~ /^[0-9-]+$/; # search for non-numbers
+      $val = fix($val);
+      print "/* item $item $type $n display value */" . ($vctx ? " trc($vctx, \"$val\");" : " tr(\"$val\");");
     }
     print "\n";
@@ -131,5 +141,5 @@
   elsif($line =~ /<(combo|multiselect).*\s+text=(".*?").*\s+values="(.*?)"/)
   {
-    my ($type,$n,$vals) = ($1,$2,$3);
+    my ($type,$n,$vals) = ($1,fix($2),$3);
     my $sp = ($type eq "combo" ? ",":";");
     $combo_n = $n;
@@ -148,4 +158,5 @@
     {
       next if $val =~ /^[0-9-]+$/; # search for non-numbers
+      $val = fix($val);
       print "/* item $item $type $n display value */" . ($vctx ? " trc($vctx, \"$val\");" : " tr(\"$val\");");
     }
@@ -154,5 +165,5 @@
   elsif(!$comment && $line =~ /<short_description>(.*?)<\/short_description>/)
   {
-    my $n = $1;
+    my $n = fix($1);
     print "/* item $item combo $combo_n item \"$combo_values[$combo_idx]\" short description */ tr(\"$n\");\n";
     $combo_idx++;
