The .po files are created by a gettext utility - to get all the strings in the code encapsulated in the gettext function _() and then re-merged with the existing translation.
The script to create the merged/updated translation files is under build/make_release.sh
Code:
xgettext --no-wrap --from-code=utf-8 --language=PHP -o locale/en_GB.utf8/LC_MESSAGES/messages.pot *php includes/*.php includes/*.inc reportwriter/*.php reportwriter/*.inc reportwriter/forms/*.html reportwriter/admin/*.php reportwriter/admin/*.inc reportwriter/admin/forms/*.html api/*.php install/*.php ../webSHOP/*.php ../webSHOP/includes/*.php
.
.
.
then
Code:
msgmerge -U -N --backup=off locale/en_US.utf8/LC_MESSAGES/messages.po locale/en_GB.utf8/LC_MESSAGES/messages.pot
and this is run before each release so the .po files always have all the latest strings in them.
I guess we need to figure out the correct syntax of the msgmerge utility to avoid the empty msgid lines
Perhaps the no-wrap parameter to msgmerge might do it.