[Libguestfs] [PATCH 1/3] po: fix broken message extraction

Richard W.M. Jones rjones at redhat.com
Thu Dec 5 16:01:59 UTC 2013


On Thu, Dec 05, 2013 at 04:30:04PM +0100, Pino Toscano wrote:
> Extracting separately the pot for the various languages and then
> creating manually the global pot (by manually joining the above ones
> after having stripped their headers) is wrong, since other than being
> an hack it can create an invalid pot when the same message appears in
> sources written in different languages.
> 
> Instead, a cleaner and safer solution is to first let ocaml-gettext
> (if available) extract the messages for the ml files, and then use
> xgettext to extract the messages for the other languages, joining the
> new messages to the existing (or not) pot file.
> ---
>  po/Makefile.am | 22 ++++++----------------
>  1 file changed, 6 insertions(+), 16 deletions(-)
> 
> diff --git a/po/Makefile.am b/po/Makefile.am
> index e2bfe45..b0a8038 100644
> --- a/po/Makefile.am
> +++ b/po/Makefile.am
> @@ -66,24 +66,14 @@ XGETTEXT_ARGS = \
>  	--directory=$(top_srcdir)
>  
>  $(DOMAIN).pot: Makefile $(POTFILES) $(POTFILES-pl) $(POTFILES-ml)
> -	rm -f $@-t $@-pl $@-ml
> -	$(XGETTEXT) -o $@-t $(XGETTEXT_ARGS) \
> -	  --files-from=$(abs_srcdir)/POTFILES
> -	$(XGETTEXT) -o $@-pl $(XGETTEXT_ARGS) --language=Perl \
> -	  --files-from=$(abs_srcdir)/POTFILES-pl
> -# Don't trust msgcat since it will definitely screw up.  Instead, chop
> -# the head from the second file and append it to the first.
> -	echo >> $@-t
> -	awk '/^#:/{i++}i{print}' < $@-pl >> $@-t
> -	rm $@-pl
> +	rm -f $@-t
>  if HAVE_OCAML_GETTEXT
> -	$(OCAML_GETTEXT) --action extract --extract-pot $@-ml $(POTFILES_ML)
> -# Don't trust msgcat since it will definitely screw up.  Instead, chop
> -# the head from the second file and append it to the first.
> -	echo >> $@-t
> -	awk '/^#:/{i++}i{print}' < $@-ml >> $@-t
> -	rm $@-ml
> +	$(OCAML_GETTEXT) --action extract --extract-pot $@-t $(POTFILES_ML)
>  endif
> +	$(XGETTEXT) -j -o $@-t $(XGETTEXT_ARGS) \
> +	  --files-from=$(abs_srcdir)/POTFILES
> +	$(XGETTEXT) -j -o $@-t $(XGETTEXT_ARGS) --language=Perl \
> +	  --files-from=$(abs_srcdir)/POTFILES-pl
>  	mv $@-t $@
>  
>  %.po: $(DOMAIN).pot
> -- 
> 1.8.3.1

ACK.

This appears to be OK, and the results look sane:

$ ll po/libguestfs.pot*
-rw-rw-r--. 1 rjones rjones 180001 Dec  5 15:52 po/libguestfs.pot
-rw-rw-r--. 1 rjones rjones 178207 Dec  5 15:40 po/libguestfs.pot-backup

and I also checked the pot file (which is basically impossible) but it
doesn't look as if messages are being dropped.

Thanks, I'm going to push 1/3 and 3/3 for now.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list