diff options
author | Andras Timar <atimar@suse.com> | 2011-12-15 14:02:57 +0100 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2011-12-15 14:03:45 +0100 |
commit | ec4f2f1d81884a1b4ddc1e1f9981636c5e443aab (patch) | |
tree | b9e7afe91ab62f795c186cd0f8b5aee9a07f34b6 /l10ntools | |
parent | 82b71e04a1594755d345d227181642c491518e18 (diff) |
propmerge tool to merge strings back to localized .properties files
Diffstat (limited to 'l10ntools')
-rw-r--r-- | l10ntools/prj/d.lst | 1 | ||||
-rwxr-xr-x | l10ntools/scripts/propex | 2 | ||||
-rwxr-xr-x | l10ntools/scripts/propmerge | 86 |
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; |