summaryrefslogtreecommitdiff
path: root/sysui/desktop/share
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2012-07-01 18:38:07 +0200
committerDavid Tardon <dtardon@redhat.com>2012-07-01 18:46:39 +0200
commitb9c376111b7ed3137d7ff72286888e7373487142 (patch)
treef3da3995fddd91523e373f20fc783b350af8caaf /sysui/desktop/share
parent00240d049790d11c4ef35de7a294819107197efd (diff)
rewrite a horrible perl script to saner form
The old form duplicated the last line of the processed file if the key was not present. This was not a problem before we added Unity-specific keys to the desktop files, because all keys were always present... Change-Id: Ifef6a90250fd303b913807944c7a23e04a5aafb1
Diffstat (limited to 'sysui/desktop/share')
-rwxr-xr-xsysui/desktop/share/translate.pl125
1 files changed, 62 insertions, 63 deletions
diff --git a/sysui/desktop/share/translate.pl b/sysui/desktop/share/translate.pl
index 89c9da0db5ff..c55ee25131d4 100755
--- a/sysui/desktop/share/translate.pl
+++ b/sysui/desktop/share/translate.pl
@@ -29,15 +29,9 @@ eval 'exec perl -wS $0 ${1+"$@"}'
#
#*************************************************************************
-
-#*********************************************************************
-#
-# main
-#
-
my ($prefix, $ext, $key);
-$productname = "LibreOffice";
-$workdir = ".";
+my $productname = "LibreOffice";
+my $workdir = ".";
while ($_ = $ARGV[0], /^-/) {
shift;
@@ -65,63 +59,36 @@ while ($_ = $ARGV[0], /^-/) {
}
# hack for unity section
-$outkey = $key;
+my $outkey = $key;
if ( $outkey eq "UnityQuicklist" ) {
$outkey = "Name";
}
+my %templates;
+
# open input file
unless (open(SOURCE, $ARGV[0])) {
print STDERR "Can't open $ARGV[0] file: $!\n";
return;
}
+# currently read template
+my $template;
-# For every section in the specified ulf file there should exist
-# a template file in $workdir ..
+# read ulf file
while (<SOURCE>) {
- $line = $_;
+ my $line = $_;
if ( "[" eq substr($line, 0, 1) ) {
- # Pass the tail of the template to the output file
- while (<TEMPLATE>) {
- print OUTFILE;
- }
-
- close(TEMPLATE);
-
- if (close(OUTFILE)) {
- system "mv -f $outfile.tmp $outfile\n";
- }
-
- $_ = substr($line, 1, index($line,"]")-1);
- $outfile = "$workdir/$prefix$_.$ext";
-
- # open the template file - ignore sections for which no
- # templates exist
- unless(open(TEMPLATE, $outfile)) {
- print STDERR "Warning: No template found for item $_: $outfile: $!\n";
- next;
- }
-
- # open output file
- unless (open(OUTFILE, "> $outfile.tmp")) {
- print STDERR "Can't create output file $outfile.tmp: $!\n";
- exit -1;
- }
-
- # Pass the head of the template to the output file
-KEY: while (<TEMPLATE>) {
- $keyline = $_;
- last KEY if (/$key/);
- print OUTFILE;
- }
- $keyline=~s/^$key/$outkey/;
- print OUTFILE $keyline;
-
+ $template = substr($line, 1, index($line,"]")-1);
+ my %entry;
+ # For every section in the specified ulf file there should exist
+ # a template file in $workdir ..
+ $entry{'outfile'} = "$workdir/$prefix$template.$ext";
+ $templates{$template} = \%entry;
} else {
# split locale = "value" into 2 strings
- ($locale, $value) = split(' = ', $line);
+ my ($locale, $value) = split(' = ', $line);
if ( $locale ne $line ) {
# replace en-US with en
@@ -135,23 +102,55 @@ KEY: while (<TEMPLATE>) {
$locale=~s/-/_/;
- if (not $value eq '') {
- if ($ext eq "desktop") {
- print OUTFILE "$outkey\[$locale\]=$value\n";
- } else {
- print OUTFILE "\t\[$locale\]$outkey=$value\n";
- }
- }
+ $templates{$template}->{'locale'} = $locale;
+ $templates{$template}->{'value'} = $value;
}
}
}
-while (<TEMPLATE>) {
- print OUTFILE;
-}
+close(SOURCE);
-if (close(OUTFILE)) {
- system "mv -f $outfile.tmp $outfile\n";
-}
+# process templates
+foreach $template (keys %templates) {
+ my $outfile = $templates{$template}->{'outfile'};
+ print "processing template $template in $outfile\n";
+
+ # open the template file - ignore sections for which no
+ # templates exist
+ unless(open(TEMPLATE, $outfile)) {
+ print STDERR "Warning: No template found for item $_: $outfile: $!\n";
+ next;
+ }
+
+ # open output file
+ unless (open(OUTFILE, "> $outfile.tmp")) {
+ print STDERR "Can't create output file $outfile.tmp: $!\n";
+ exit -1;
+ }
-close(TEMPLATE);
+ # emit the template to the output file
+ while (<TEMPLATE>) {
+ my $keyline = $_;
+ $keyline =~ s/^$key/$outkey/;
+ print OUTFILE $keyline;
+ if (/$key/) {
+ my $locale = $templates{$template}->{'locale'};
+ my $value = $templates{$template}->{'value'};
+ print "locale is $locale\n";
+ print "value is $value\n";
+ if ($value) {
+ if ($ext eq "desktop") {
+ print OUTFILE "$outkey\[$locale\]=$value\n";
+ } else {
+ print OUTFILE "\t\[$locale\]$outkey=$value\n";
+ }
+ }
+ }
+ }
+
+ close(TEMPLATE);
+
+ if (close(OUTFILE)) {
+ system "mv -f $outfile.tmp $outfile\n";
+ }
+}