Source
xxxxxxxxxx
echo "!! $num_msgids_not_removed strings are no longer present in php files, but have been preserved in po files !!"
function show_help
{
echo "$(basename $0) [--cleanup]"
echo ""
echo "Extract new strings from php files and regenerate po files."
echo ""
}
function run
{
local cleanup=false
while [[ $# -gt 0 ]]; do
case "$1" in
--help|-h|help)
show_help
exit 0
;;
--cleanup)
cleanup=true
;;
*)
die "unsupported parameter \"$1\"!"
;;
esac
shift
done
local workdir=$(realpath $(dirname $0)/..)
[[ -d "$workdir" ]] ||
die "cannot find \"$workdir\" working directory!"
cd "$workdir" || die
local pofiles=locale/*/LC_MESSAGES/frontend.po
local curpot=locale/en/LC_MESSAGES/frontend.pot
local oldpot=locale/old.pot
local newpot=locale/new.pot
local cur_msgids=locale/cur_msgids
local new_msgids=locale/new_msgids
local potlist=locale/POTFILES.in
# handle nonexistent potfile
mkdir -p $(dirname $curpot)
touch $curpot
# use xgettext on all php files
find . -type f -name '*.php' | sort -d -f > $potlist
# keyword "_n" is Zabbix frontend plural function
# keyword "_s" is Zabbix frontend placeholder function
# keyword "_x" is Zabbix frontend context function
# keyword "_xs" is Zabbix frontend context function
xgettext --files-from=$potlist \
--from-code=UTF-8 \
--output=$newpot \
--copyright-holder="Zabbix SIA" \
--no-wrap --sort-output \
--add-comments="GETTEXT:" \
--keyword=_n:1,2 \
--keyword=_s \
--keyword=_x:1,2c \
--keyword=_xs:1,2c \
--keyword=_xn:1,2,4c ||
die
rm $potlist
sed -i 's/^#, php-format/#, c-format/' $newpot || die
if $cleanup; then
mv $newpot $curpot
local num_msgids_not_removed=-1
else
# compute the number of strings that were repoved from php, but we still are keeping in po
grep msgid $curpot | sort > $cur_msgids
grep msgid $newpot | sort > $new_msgids
local num_msgids_not_removed=$(diff $cur_msgids $new_msgids | grep '^<' | wc -l)
[[ "$num_msgids_not_removed" =~ ^[0-9]+$ ]] ||
die "cannot compute number of msgids that were not removed!"
rm $cur_msgids $new_msgids
# make sure no string are removed or pontoon will die!
mv $curpot $oldpot
msgcat --use-first --no-wrap --sort-output $oldpot $newpot -o $curpot
rm $oldpot $newpot
fi