summaryrefslogtreecommitdiff
path: root/l10ntools
diff options
context:
space:
mode:
authorAndras Timar <atimar@suse.com>2011-12-15 14:02:57 +0100
committerAndras Timar <atimar@suse.com>2011-12-15 14:03:45 +0100
commitec4f2f1d81884a1b4ddc1e1f9981636c5e443aab (patch)
treeb9e7afe91ab62f795c186cd0f8b5aee9a07f34b6 /l10ntools
parent82b71e04a1594755d345d227181642c491518e18 (diff)
propmerge tool to merge strings back to localized .properties files
Diffstat (limited to 'l10ntools')
-rw-r--r--l10ntools/prj/d.lst1
-rwxr-xr-xl10ntools/scripts/propex2
-rwxr-xr-xl10ntools/scripts/propmerge86
3 files changed, 89 insertions, 0 deletions
diff --git a/l10ntools/prj/d.lst b/l10ntools/prj/d.lst
index 0d3971975818..ee088ffc8ec6 100644
--- a/l10ntools/prj/d.lst
+++ b/l10ntools/prj/d.lst
@@ -39,6 +39,7 @@ mkdir: %_DEST%\bin\help\com\sun\star\help
..\scripts\addkeyid2pot.pl %_DEST%\bin\addkeyid2pot.pl
..\scripts\po2lo %_DEST%\bin\po2lo
..\scripts\propex %_DEST%\bin\propex
+..\scripts\propmerge %_DEST%\bin\propmerge
..\inc\export.hxx %_DEST%\inc\l10ntools\export.hxx
..\inc\l10ntools\directory.hxx %_DEST%\inc\l10ntools\directory.hxx
..\inc\l10ntools\file.hxx %_DEST%\inc\l10ntools\file.hxx
diff --git a/l10ntools/scripts/propex b/l10ntools/scripts/propex
index e7ee7e99c9db..ba7a49d15fcf 100755
--- a/l10ntools/scripts/propex
+++ b/l10ntools/scripts/propex
@@ -50,6 +50,8 @@ while (<INFILE>) {
chomp;
if (/=/) {
my ($id, $value) = split /=/;
+ $id =~ s/^\s+//; #remove leading spaces
+ $id =~ s/\s+$//; #remove trailing spaces
$value =~ s/^\s+//; #remove leading spaces
$value =~ s/\s+$//; #remove trailing spaces
$value =~ s/(\\u([0-9a-fA-F]{4}))/pack("C0U1",hex($2))/ge; #convert ascii escaped unicode to utf-8
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;