: 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 # 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 () { 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}; $lang =~ s/-/_/; $locfilename =~ s/en_US\.properties/$lang.properties/; $lang =~ s/_/-/; open (INFILE, "<$options{i}") || die "propmerge: cannot open source file: $options{i}"; open (OUTFILE, ">$locfilename") || die "propmerge: cannot open output file: $locfilename"; while () { 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;