blob: de18a28b18ec83959c5918891b6edaef19d01225 [file] [log] [blame]
:
eval 'exec perl -wS $0 ${1+"$@"}'
if 0;
#**************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#**************************************************************
#### script id #####
( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
$id_str = ' $Revision: 1.4.108.1 $ ';
$id_str =~ /Revision:\s+(\S+)\s+\$/
? ($script_rev = $1) : ($script_rev = "-");
#########################
# #
# Globale Variablen #
# #
#########################
use Encode;
use Encode::Alias;
my ($in_name, $ID, $new_ID);
my ($help);
print STDERR "$script_name -- Version: $script_rev\n" ;
&get_options;
if ( $help ) {
&usage();
exit 0;
};
open IN, "<$in_name" or die "Could not open $in_name for reading $! $^E";
foreach $lang ( keys %files )
{
open "F_$lang",">$files{$lang}" or die "Could not open $files{$lang} for writing $! $^E";
binmode "F_$lang";
$files{$lang} = "F_$lang";
}
%transunit = ();
while ( <IN> )
{
chomp;
$line = $_;
$line =~ s/\r$//;
# [RID_RESXLS_COST_Print_Area]
if ( $line =~ /^\[(.*)\]$/ )
{
$new_ID = $1;
write_transunit();
$ID = $new_ID;
%transunit = ();
}
# de = "Druckbereich"
elsif ( $line =~ /^(\S*)\s*=\s*\"(.*)\"$/ )
{
$lang = $1;
$string = $2;
$transunit{ $lang } = $string;
}
elsif ( $line !~ /^\s*$/ )
{
die "unknown lineformat in $in_name: $line\n";
}
}
write_transunit();
sub write_transunit
{
if ( ! $ID )
{
return;
}
foreach $lang ( keys %files )
{
my $string;
if ( defined $transunit{ $lang } )
{
$string = $transunit{ $lang };
}
else
{
$string = $transunit{ "en-US" };
}
my $dat_line = "$ID=$string";
Encode::from_to( $dat_line, "utf8", "UTF-16LE");
print { $files{$lang} } "$dat_line\015\000\012\000";
}
}
sub get_options {
my ($arg,$lang);
while ($arg = shift @ARGV) {
$arg =~ /^-i$/ and $in_name = shift @ARGV and next;
$arg =~ /^-help$/ and $help = 1 and next; #show help
$arg =~ /.*[\/\\]([^\/\\]*)\.dat$/;
# $arg =~ /.*[/\]([^/\]*)\.dat$/;
$lang = $1;
print "got $lang = $arg\n";
$files{ $lang } = $arg;
}
}
sub usage {
print STDERR "\n\n";
print STDERR "Syntax: $script_name [-help|-i <ulf-filename>] <dat-filename> ... \n";
print STDERR "Example: $script_name -i strings.ulf en-US.dat de.dat\n";
print STDERR "Options:\n\n";
print STDERR " -i input ulf file\n";
print STDERR " -help print this help info\n\n";
};