[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [DDR] po-debconf://pnm2ppa/fr.po



On Wed, Sep 10, 2003 at 09:44:55AM +0200, Christian Perrier wrote:
> Quoting Denis Barbier (barbier@linuxfr.org):
> 
> > Tu peux renvoyer ton script, qu'on regarde ce qui cloche ?
> 
> Ahem, patapé, il est vraiment nul.... :-)

D'après tes explications, tu voudrais ne pas reformater ; or
c'est nécessaire pour ne pas modifier les msgid avec sed.
Voici une approche différente, en Perl. J'ai vaguement testé,
il peut y avoir des erreurs.

Denis
--- relire.orig	2003-09-10 21:19:24.000000000 +0200
+++ relire	2003-09-10 21:33:26.000000000 +0200
@@ -17,17 +17,40 @@
   if [ "$answer" = "O" -o "$answer" = "o" -o "$answer" = "" ]
   then 
     TEMPFILE=`tempfile`
-    sed ':a;N;$!ba;s/"\n"//g' fr.po.relu-bubulle >$TEMPFILE && mv $TEMPFILE fr.po.relu-bubulle
-    cat fr.po.relu-bubulle | \
-    sed '/^msgstr/s/« /« /g' | \
-    sed '/^msgstr/s/p\.ex\./p\. ex\./g' | \
-    sed '/^msgstr/s/par ex\./p\. ex\./g' | \
-    sed '/^msgstr/s/ »/ »/g' | \
-    sed '/^msgstr/s/ ?/ ?/g' | \
-    sed '/^msgstr/s/ !/ !/g' | \
-    sed '/^msgstr/s/ :/ :/g' | \
-    sed '/^msgstr/s/ ;/ ;/g' \
-    > $TEMPFILE && mv $TEMPFILE fr.po.relu-bubulle
+    perl -e '
+      sub fix {
+        my $text = shift;
+        $text =~ s/«("\\n")? /« /g;
+        $text =~ s/p("\\n")?\.("\\n")?e("\\n")?x("\\n")?\./p\. ex\./g;
+        $text =~ s/p("\\n")?a("\\n")?r("\\n")?  ("\\n")?e("\\n")?x("\\n")?\./p\. ex\./g;
+        $text =~ s/ ("\\n")?»/ »/g;
+        $text =~ s/ ("\\n")?\?/ ?/g;
+        $text =~ s/ ("\\n")?!/ !/g;
+        $text =~ s/ ("\\n")?:/ :/g;
+        $text =~ s/ ("\\n")?;/ ;/g;
+        return $text;
+      }
+      my $inmsgstr = 0;
+      my $line = "";
+      while (<>) {
+        if (m/^msgid/ || m/^$/) {
+          if ($inmsgstr) {
+            print fix($line);
+            $line = "";
+          }
+          print;
+          $inmsgstr = 0;
+        } elsif (m/^msgstr/) {
+          $inmsgstr = 1;
+          $line = $_;
+        } elsif ($inmsgstr) {
+          $line .= $_;
+        } else {
+          print;
+        }
+      }
+      print fix($line) if $inmsgstr;
+    ' fr.po.relu-bubulle >$TEMPFILE && mv $TEMPFILE fr.po.relu-bubulle
   fi
   more fr.po.relu-bubulle
   echo -n "Reformater (o/N)? "

Reply to: