Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use xgettext iteratively to update .po files for translation

I'm looking at using xgettext to aid translation of large codebase, and I have two questions:

  • if I have one .po file per-language, is there an easy way to update them all using a single xgettext scan of the codebase, or must I run xgettext once for each language?
  • if I add the target langauge to the .po file header with poedit, xgettext seems to overwrite this with default headers. How can I stop this?

Maybe I'm using the wrong tool, in which case suggestions are welcome. What I want is to be able to scan the code and update the .po files with any new strings, but leaving any header information intact.

EDIT: I know that poedit can scan code, but I was hoping to find a command line application to perform the scanning to automate the process more easily.

like image 906
Paul Dixon Avatar asked Dec 30 '22 02:12

Paul Dixon


1 Answers

Yes, basically you're using the tools wrong.

xgettext extracts the tags and creates the template file. (e.g. *.pot file)

The msgmerge command updates a .po file with changes from the .pot file.

We have make rules to update the .po files, like the one below:

%.en.po : %.pot
    -[ -e $@ ] && msgmerge --width=110 --update $@ $<
    [ -e $@ ] || cp $< $@
like image 165
Douglas Leeder Avatar answered Jan 14 '23 03:01

Douglas Leeder