#!/usr/bin/perl ########################################################################### # processing2cpp.pl # --------------------- # begin : July 2015 # copyright : (C) 2015 by Juergen E. Fischer # email : jef at norbit dot de ########################################################################### # # # This program is free software; you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation; either version 2 of the License, or # # (at your option) any later version. # # # ########################################################################### use XML::Simple; use Data::Dumper; die "usage: $0 dest.cpp\n" unless @ARGV==1; open F, ">$ARGV[0]"; print F <<EOF; /* This is NOT a proper c++ source code. This file is only designed to be caught by qmake and included in lupdate. It contains all translateable strings collected by processing2cpp.pl. */ EOF my %strings; for my $f (<python/plugins/processing/algs/otb/description/*.xml>) { my $xml = XMLin($f, ForceArray=>1); foreach my $k (qw/longname group description/) { $strings{"OTBAlgorithm"}{$xml->{$k}->[0]} = 1; } } for my $f (<python/plugins/processing/algs/grass*/description/*.txt>) { open I, $f; my $name = scalar(<I>); my $desc = scalar(<I>); my $group = scalar(<I>); close I; chop $desc; chop $group; $strings{"GrassAlgorithm"}{$desc} = 1; $strings{"GrassAlgorithm"}{$group} = 1; } for my $f (<python/plugins/processing/algs/taudem/description/*/*.txt>) { open I, $f; my $desc = scalar(<I>); my $name = scalar(<I>); my $group = scalar(<I>); close I; chop $desc; chop $group; $strings{"TAUDEMAlgorithm"}{$desc} = 1; $strings{"TAUDEMAlgorithm"}{$group} = 1; } for my $f (<python/plugins/processing/algs/saga/description/*/*.txt>) { open I, $f; my $desc = scalar(<I>); close I; chop $desc; $strings{"SAGAAlgorithm"}{$desc} = 1; } for my $f ( ("python/plugins/processing/gui/algclasssification.txt", "python/plugins/processing/gui/algnames.txt") ) { open I, $f; while(<I>) { chop; s/^.*,//; foreach my $v (split "/", $_) { $strings{"AlgorithmClassification"}{$v} = 1; } } close I; } foreach my $k (keys %strings) { foreach my $v (keys %{ $strings{$k} } ) { $v =~ s/\\/\\\\/g; $v =~ s/"/\\"/g; $v =~ s/\n/\\n/g; print F "translate(\"$k\", \"$v\");\n"; } } close F;