diff --git a/scripts/ts2cpp.pl b/scripts/ts2cpp.pl new file mode 100644 index 00000000000..23604467329 --- /dev/null +++ b/scripts/ts2cpp.pl @@ -0,0 +1,34 @@ +#!/usr/bin/perl + +use XML::Simple; +use Data::Dumper; + +die "usage: $0 source.ts dest.cpp\n" unless @ARGV==2 && -f $ARGV[0]; + +my $xml = XMLin($ARGV[0], ForceArray=>1); + +open F, ">$ARGV[1]"; + +print F <{context}; + +foreach my $context ( @{ $xml->{context} } ) { + print F "\n// context: $context->{name}->[0]\n\n"; + + foreach my $message ( @{ $context->{message} } ) { + $message->{source}->[0] =~ s/"/\\"/g; + $message->{source}->[0] =~ s/\n/\\n/g; + + print F "translate( \"$context->{name}->[0]\", \"$message->{source}->[0]\");\n"; + } +} + +close F; diff --git a/scripts/update_ts_files.sh b/scripts/update_ts_files.sh index 16a81f10020..326ccef075e 100755 --- a/scripts/update_ts_files.sh +++ b/scripts/update_ts_files.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Update the translation files with strings used in QGIS # 1. create a clean Qt .pro file for the project # 2. run lupdate using the .pro file from step 1 @@ -14,10 +14,21 @@ PATH=$QTDIR/bin:$PATH echo Creating qt_ts.tar tar -cvf i18n/qt_ts.tar i18n/qt_*.ts rm i18n/qt_*.ts +echo Updating python plugin translations +P=$PWD +for i in python/plugins/*/.; do + cd $i + pylupdate4 $(find . -name "*.py") -ts i18n.ts + perl $P/scripts/ts2cpp.pl i18n.ts i18n.cpp + rm i18n.ts + cd ../../.. +done echo Creating qmake project file qmake -project -o qgis_ts.pro echo Updating translation files lupdate -verbose qgis_ts.pro +echo Removing temporary python plugin translation files +rm python/plugins/*/i18n.cpp echo Removing qmake project file rm qgis_ts.pro echo Unpacking qt_ts.tar