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

diffs propres de fichiers po (fut autre chose)



On Wed, Feb 23, 2005 at 07:24:21PM +0100, Frédéric Bothamy wrote:
> * Christophe Masson <chrs.masson@tiscali.fr> [2005-02-23 19:08] :
> > On Wed, 23 Feb 2005 18:42:22 +0100
> > "Valery Perrin" <valery.perrin.debian@free.fr> wrote:
> > 
> > > Juste un petit soucis, comment à tu fais le diff ? impossible de
> > > l'appliquer avec patch ou alors je n'ai pas trouvé la bonne option.
> > > J'ai fait les modifs à la main comme ce n'était pas trop long...
> > 
> > Le patch a été généré par :
> > 
> > $ diff fr.po new.fr.po > diff.txt
> 
> Il est de beaucoup préférable de générer les diff au format universel
> (i.e. avec -u), cela facilite beaucoup la vérification des
> modifications. Enfin, c'est le cas si le .po est formaté correctement à
> 80 caractères pour éviter les lignes très longues, ce qui n'était pas le
> cas ici (il faut utiliser "msgconv -w 80 fr.po > fr.po.dest").

Et si tu veux le faire en une seule étape, tu peux utiliser le script
ci-joint à la place de diff. Il se charge de remettre le fichier po à plat
komyfo et de passer les bonnes options à diff. 

En particulier, il ne vient pas polluer ton diff parce que tu as changé la
date de derniere édition du fichier dans les entetes, ou parce que tu as
refais un msgmerge qui change les commentaires de positions (les lignes
commençant par #:). Bref, il ignore les trucs ignorables.


$ msgdiff fr.po new.fr.po > diff.txt


HTH, Mt.

PS: la plupart des gens font diff -u, et ca se passe souvent bien. Ca, c'est
un peu la royces des diffs. ;)
#! /bin/sh

# Makes a clean diff of two po files, ignoring ignorable changes

if [ "x$1" = "xhelp" -o "x$1" = "x--help" ] ; then
   echo "msgdiff: produce a clean diff of two po files, ignoring ignorable changes."
   echo "usage: msgdiff orig new"
   exit 0;
fi

if [ $# != 2 ] ; then
   echo "usage: msgdiff orig new"
   exit 1;
fi

tmp1=`mktemp /tmp/msgdiff.XXXXXXXXXXXX`
msgcat $1 > $tmp1
tmp2=`mktemp /tmp/msgdiff.XXXXXXXXXXXX`
msgcat $2 > $tmp2
diff -u -I '^#:' -I 'PO-Revision-Date' -I 'POT-Creation-Date' $tmp1 $tmp2 | \
  sed -e "s|^--- $tmp1|--- $1|" \
      -e "s|^\+\+\+ $tmp2|+++ $2|"
rm -f $tmp1 $tmp2

Attachment: signature.asc
Description: Digital signature


Reply to: