mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
- integrate PythonConsole help into main translation - allow referencing QGIS images in context help(viewer)
149 lines
3.0 KiB
Perl
Executable File
149 lines
3.0 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Data::Dumper;
|
|
use XML::Simple;
|
|
|
|
my %langmap = (
|
|
"it_IT" => "it",
|
|
"pl_PL" => "pl_PL",
|
|
"pt_PT" => "pt_PT",
|
|
"pt_BR" => "pt_BR",
|
|
"sk_SK" => "sk",
|
|
"sv_SE" => "sv",
|
|
"fr_FR" => "fr",
|
|
"de_DE" => "de",
|
|
"ru_RU" => "ru",
|
|
"ja_JP" => "ja",
|
|
"es_ES" => "es",
|
|
);
|
|
|
|
my @lang;
|
|
my @context;
|
|
|
|
foreach (@ARGV) {
|
|
if( /-lang=(.*)/ ) {
|
|
push @lang, $1;
|
|
}
|
|
|
|
if( /-context=(.*)/ ) {
|
|
push @context, $1;
|
|
}
|
|
}
|
|
|
|
|
|
my %langs;
|
|
my %src;
|
|
for my $f (<resources/{function_help,context_help}/*-*>) {
|
|
my ($context,$id,$lang) = $f =~ m#^resources/(function_help|context_help)/(.+)-(.+)$#;
|
|
|
|
next if @lang && !grep($lang, @lang);
|
|
next if @context && !grep($context, @context);
|
|
|
|
die "lang undefined in $f" unless defined $lang;
|
|
$langs{$lang}{ts} = "";
|
|
|
|
open F, "<:encoding(UTF-8)", $f;
|
|
$src{$id}{$lang} = join("", <F>);
|
|
$src{$id}{$lang} =~ s/\\/\\/mg;
|
|
close F;
|
|
}
|
|
|
|
delete $langs{en_US};
|
|
|
|
my $cmd = "scripts/update_ts_files.sh";
|
|
foreach my $l (keys %langs) {
|
|
unless( exists $langmap{$l} ) {
|
|
die "no ts lang for $l found\n";
|
|
} else {
|
|
my $ts = "i18n/qgis_" . $langmap{$l} . ".ts";
|
|
die "LANG: no ts for $ts found\n" unless -f $ts;
|
|
$langs{$l}{ts} = $ts;
|
|
$cmd .= " $langmap{$l}";
|
|
}
|
|
}
|
|
|
|
system $cmd;
|
|
|
|
foreach my $l (keys %langs) {
|
|
print "LANG:$l\n";
|
|
|
|
open my $in, $langs{$l}{ts};
|
|
open my $out, ">$langs{$l}{ts}.new";
|
|
binmode $out, ":utf8";
|
|
|
|
my $line = <$in> . <$in>;
|
|
print $out $line;
|
|
|
|
my $xml = XMLin( $in, ForceArray=>1, keeproot=>1);
|
|
|
|
my %ot;
|
|
foreach my $c ( @{ $xml->{TS}->[0]->{context} } ) {
|
|
my $name = $c->{name}->[0];
|
|
next unless $name eq "QObject" || $name eq "QgsExpressionBuilderWidget";
|
|
|
|
foreach my $m ( @{ $c->{message} } ) {
|
|
my $s = $m->{source}->[0];
|
|
my $t = $m->{translation}->[0];
|
|
$t = $t->{content} if ref($t) eq "HASH" && defined $t->{content};
|
|
$ot{$t} = $s;
|
|
}
|
|
|
|
}
|
|
|
|
my %t;
|
|
foreach my $oid ( keys %src ) {
|
|
my $id = $oid;
|
|
next unless exists $src{$id}{$l};
|
|
|
|
unless(exists $src{$id}{en_US} ) {
|
|
if( exists $ot{$id} ) {
|
|
$id = $ot{$id};
|
|
} else {
|
|
die "No translation for $id found.";
|
|
}
|
|
}
|
|
|
|
unless(exists $src{$id}{en_US} ) {
|
|
die "source for $id not found" unless exists $src{$id}{en_US};
|
|
}
|
|
|
|
$t{ $src{$id}{en_US} } = $src{$oid}{$l};
|
|
}
|
|
|
|
die "T empty" unless %t;
|
|
|
|
foreach my $c ( @{ $xml->{TS}->[0]->{context} } ) {
|
|
my $name = $c->{name}->[0];
|
|
|
|
if( $name eq "context_help" || $name eq "function_help" ) {
|
|
foreach my $m ( @{ $c->{message} } ) {
|
|
my $s = $m->{source}->[0];
|
|
my $t = $m->{translation}->[0];
|
|
my $translation = $t{ $s };
|
|
next unless $translation;
|
|
|
|
if( ref($t) eq "HASH" ) {
|
|
warn "Previous content overwritten: " . $t->{content} if exists $t->{content} && $t->{content} ne $translation;
|
|
$t->{content} = $translation;
|
|
} else {
|
|
$m->{translation}->[0] = $translation;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
close $in;
|
|
|
|
my $xmlout = XMLout($xml, keeproot=>1);
|
|
print $out $xmlout;
|
|
close $out;
|
|
|
|
rename "$langs{$l}{ts}", "$langs{$l}{ts}.orig";
|
|
rename "$langs{$l}{ts}.new", "$langs{$l}{ts}";
|
|
}
|
|
|
|
system $cmd;
|