threads / discuss / 41741

Update *.po with git.pot?

Subject: Update *.po with git.pot?

## tl;dr

3 messages between Mar 18, 2016 and Mar 20, 2016.

replies: 2people: 3as markdown or json

Ralf Thielow· Mar 18, 2016, 20:19 UTC · lore

When a translation round starts for a Git release, the git.pot file will be updated and translators msgmerge their .po-files accordingly before translating. This results in a huge change to the .po-file as line numbers and stuff gets updated.

Since translations are made in one commit, this commit is messed up with the msgmerge update so when you look at the commit later, you'll have a hard time to find out what the actual changes in translations were.

We could improve this by making git.pot-updates update the *.po files as well, so further updates from translators will only contain actual translations. I think this is what the gitk project does. It will make the history of *.po-files much more readable.

Ralf
Peter Krefting· Mar 19, 2016, 06:53 UTC · re: Ralf Thielow · lore

Re: Update *.po with git.pot?

Ralf Thielow:
> Since translations are made in one commit, this commit is messed up 
> with the msgmerge update so when you look at the commit later, 
> you'll have a hard time to find out what the actual changes in 
> translations were.

You can always use something like podiff <http://man.gnu.org.ua/manpage/?1+podiff> to find the actual changes in each update.

> It will make the history of *.po-files much more readable.

Unfortunately, it also makes merging changes more difficult. I sometimes queue up bugfixes between translation runs, and having the po file be reformatted in commits I do not control means I would have to manually re-add those as there is no good merge driver than can handle that reformatting.

-- 
\\// Peter - http://www.softwolves.pp.se/
Jiang Xin· Mar 20, 2016, 07:29 UTC · re: Peter Krefting · lore

Re: Update *.po with git.pot?

2016-03-19 14:53 GMT+08:00 Peter Krefting <peter@softwolves.pp.se>:
Show 10 quoted lines
> Ralf Thielow:
>
>> Since translations are made in one commit, this commit is messed up with
>> the msgmerge update so when you look at the commit later, you'll have a hard
>> time to find out what the actual changes in translations were.
>
>
> You can always use something like podiff
> <http://man.gnu.org.ua/manpage/?1+podiff> to find the actual changes in each
> update.

In my worktree, I have defined some attributes and a diff driver, which can make a clear diff on po/pot files.

First, add these two lines in .git/info/attributes:
        *.po diff=gettext-uniq
        *.pot diff=gettext-uniq
Then, define diff driver named "gettext-uniq":
        git config --global diff.gettext-uniq.textconv  "msguniq -i
--no-location --strict -s"
        git config --global diff.gettext-uniq.cachetextconv   true

And the settings above will make clean output for `git diff`, `git show` commands.

Show 8 quoted lines
>> It will make the history of *.po-files much more readable.
>
> Unfortunately, it also makes merging changes more difficult. I sometimes
> queue up bugfixes between translation runs, and having the po file be
> reformatted in commits I do not control means I would have to manually
> re-add those as there is no good merge driver than can handle that
> reformatting.
>

If we update "po" files with "pot” file in one commit, l10n guys can not merge directly, but have to use msgmerge instead of using "po-helper.sh update XX.po".

And some translations could not been updated, e.g. "is.po" is used for testing, and "it.po" and "pt_PT.po" have stopped maintenance for years.

-- 
Jiang Xin

← back to recent threads