diff -ru intltool-debian-0.30+20040211-old/intltool-bin/intltool-extract intltool-debian-0.30+20040211/intltool-bin/intltool-extract
--- intltool-debian-0.30+20040211-old/intltool-bin/intltool-extract	2004-03-30 14:10:30.000000000 -0800
+++ intltool-debian-0.30+20040211/intltool-bin/intltool-extract	2004-03-30 16:25:46.000000000 -0800
@@ -354,7 +354,16 @@
     my $type = shift;
     my $text = shift;
     $text =~ s/^[ \t]//mg;
-    return (split(/, */, $text, 0)) if $type ne 1;
+    if ($type ne 1)
+    {
+        my @values = ();
+        for my $value (split(/(?<!\\), */, $text, 0))
+        {
+            $value =~ s/\\,/,/;
+            push @values, $value;
+        }
+        return @values;
+    }
     return ($text) if $text !~ /\n/;
 
     $text =~ s/([^\n]*)\n//;
diff -ru intltool-debian-0.30+20040211-old/intltool-bin/intltool-merge intltool-debian-0.30+20040211/intltool-bin/intltool-merge
--- intltool-debian-0.30+20040211-old/intltool-bin/intltool-merge	2004-03-30 14:10:30.000000000 -0800
+++ intltool-debian-0.30+20040211/intltool-bin/intltool-merge	2004-03-30 23:35:06.000000000 -0800
@@ -1251,6 +1251,8 @@
 	                #  $translation may also contain [] dummy
                         #  strings, mostly to indicate an empty string
 	                $translation =~ s/\[\s[^\[\]]*\]$//;
+
+			$translation =~ s/,/\\,/ if $underscore eq 2;
                         
                         if ($first) 
                         {
@@ -1314,7 +1316,16 @@
     my $type = shift;
     my $text = shift;
     $text =~ s/^[ \t]//mg;
-    return (split(/, */, $text, 0)) if $type ne 1;
+    if ($type ne 1)
+    {
+        my @values = ();
+        for my $value (split(/(?<!\\), */, $text, 0))
+        {
+            $value =~ s/\\,/,/;
+            push @values, $value;
+        }
+        return @values;
+    }
     return ($text) if $text !~ /\n/;
 
     $text =~ s/([^\n]*)\n//;
