[Libreoffice-commits] .: l10ntools/prj l10ntools/scripts

Andras Timar timar at kemper.freedesktop.org
Thu Dec 15 05:03:16 PST 2011


 l10ntools/prj/d.lst         |    1 
 l10ntools/scripts/propex    |    2 +
 l10ntools/scripts/propmerge |   86 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 89 insertions(+)

New commits:
commit ec4f2f1d81884a1b4ddc1e1f9981636c5e443aab
Author: Andras Timar <atimar at suse.com>
Date:   Thu Dec 15 14:02:57 2011 +0100

    propmerge tool to merge strings back to localized .properties files

diff --git a/l10ntools/prj/d.lst b/l10ntools/prj/d.lst
index 0d39719..ee088ff 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 e7ee7e9..ba7a49d 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 0000000..1e0e8a7
--- /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 at 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;


More information about the Libreoffice-commits mailing list