diff options
Diffstat (limited to 'l10ntools/scripts/propmerge')
-rwxr-xr-x | l10ntools/scripts/propmerge | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/l10ntools/scripts/propmerge b/l10ntools/scripts/propmerge new file mode 100755 index 000000000000..1e0e8a772ca4 --- /dev/null +++ b/l10ntools/scripts/propmerge @@ -0,0 +1,86 @@ +: +eval 'exec perl -S $0 ${1+"$@"}' + if 0; +# Version: MPL 1.1 / GPLv3+ / LGPLv3+ +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License or as specified alternatively below. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Initial Developer of the Original Code is +# Andras Timar <atimar@suse.com> +# Portions created by the Initial Developer are Copyright (C) 2011 the +# Initial Developer. All Rights Reserved. +# +# Major Contributor(s): +# +# For minor contributions see the git repository. +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 3 or later (the "GPLv3+"), or +# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), +# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable +# instead of those above. +# +# merges strings from SDF file to properties files +# + +use strict; +use Getopt::Std; + +my %options=(); +getopts("i:m:", \%options); + +my %translations = (); +my %languages = (); + # ( leftpart ) ( rightpart ) + # prj file dummy type gid lid helpid pform width lang text helptext qhelptext title +my $sdf_regex = "((([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t])*\t([^\t]*)\t([^\t]*))\t([^\t]*)\t(([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)))"; + +open (SDFFILE, "<$options{m}") || die "propmerge: cannot open sdf file: $options{m}"; + +while (<SDFFILE>) { + chomp; + if( /$sdf_regex/ ) { + my $gid = defined $7 ? $7 : ''; + my $lang = defined $12 ? $12 : ''; + my $text = defined $14 ? $14 : ''; + my $key = $lang . $gid; + $languages{$lang} = 1; + utf8::decode($text); + $text =~ s/([^\x{20}-\x{7E}])/sprintf("\\u%04X",ord($1))/ge; + $translations{$key} = $text; + } +} + +close (SDFFILE); + +foreach my $lang (keys %languages) { + my $locfilename = $options{i}; + $locfilename =~ s/en_US\.properties/$lang.properties/; + open (INFILE, "<$options{i}") || die "propmerge: cannot open source file: $options{i}"; + open (OUTFILE, ">$locfilename") || die "propmerge: cannot open output file: $locfilename"; + while (<INFILE>) { + if (/=/) { + chomp; + my ($id, $value) = split /=/; + $id =~ s/^\s+//; #remove leading spaces + $id =~ s/\s+$//; #remove trailing spaces + my $key = $lang . $id; + print OUTFILE "$id=$translations{$key}\n"; + } + else { + print OUTFILE "$_"; + } + } + close (INFILE); + close (OUTFILE); +} + +exit 0; |