summaryrefslogtreecommitdiff
path: root/l10ntools/scripts/propmerge
diff options
context:
space:
mode:
Diffstat (limited to 'l10ntools/scripts/propmerge')
-rwxr-xr-xl10ntools/scripts/propmerge86
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;