build: set i18n-update.pl to break at .po error

Add logic into i18n-update.pl to break on noticing a fatal error
in the .po file. That is needed especially for syncing with
i18n-sync script, where possibly all modules and applications are synced
and errors easily disappear from screen.

Example:

Updating ./applications/luci-app-keepalived/po/de/keepalived.po./applications/luci-app-keepalived/po/de/keepalived.po:928:40: invalid control sequence
./applications/luci-app-keepalived/po/de/keepalived.po:928:51: invalid control sequence
msgmerge: found 2 fatal errors
./build/i18n-update.pl: [] failed: 256

and

Updating modules/luci-base/po/zh_Hant/base.po    modules/luci-base/po/zh_Hant/base.po:1169: duplicate message definition...
modules/luci-base/po/zh_Hant/base.po:1129: ...this is the location of the first definition
modules/luci-base/po/zh_Hant/base.po:1173: duplicate message definition...
modules/luci-base/po/zh_Hant/base.po:1133: ...this is the location of the first definition
msgmerge: found 2 fatal errors
./build/i18n-update.pl: [] failed: 256

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
This commit is contained in:
Hannu Nyman
2025-10-26 09:36:05 +02:00
parent 2025a7afce
commit 6e9a7e12ca

View File

@ -72,7 +72,7 @@ foreach my $dir (@dirs)
my $head = read_header($file);
printf "Updating %-40s", $file;
system("msgmerge", "-U", "-N", $file, "$dir/templates/$basename.pot");
system("msgmerge", "-U", "-N", $file, "$dir/templates/$basename.pot") == 0 || die "$0: [$cmd] failed: $?\n";
write_header($file, $head);
}