funny little script to generate a binary language file
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2386 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
2da8e8e195
commit
e770bc8be0
1 changed files with 107 additions and 0 deletions
107
tools/binlang
Executable file
107
tools/binlang
Executable file
|
@ -0,0 +1,107 @@
|
|||
#!/usr/bin/perl
|
||||
############################################################################
|
||||
# __________ __ ___.
|
||||
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
# \/ \/ \/ \/ \/
|
||||
# $Id$
|
||||
#
|
||||
# Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
|
||||
#
|
||||
# All files in this archive are subject to the GNU General Public License.
|
||||
# See the file COPYING in the source tree root for full license agreement.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
if(!$ARGV[0] || !$ARGV[1] || !$ARGV[2]) {
|
||||
print <<MOO
|
||||
Usage: binlang <english file> <language file> <output file>
|
||||
|
||||
Generate a binary language file.
|
||||
MOO
|
||||
;
|
||||
exit;
|
||||
}
|
||||
|
||||
my $english = $ARGV[0];
|
||||
my $input = $ARGV[1];
|
||||
my $output = $ARGV[2];
|
||||
|
||||
my $idnum=0;
|
||||
|
||||
open(ENG, "<$english");
|
||||
open(LANG, "<$input");
|
||||
open(OFILE, ">$output");
|
||||
|
||||
my $langversion = 1;
|
||||
|
||||
printf OFILE ("\x1a%c", $langversion); # magic lang file header
|
||||
|
||||
#
|
||||
# We scan the english file to get the correct order of the id numbers
|
||||
#
|
||||
while(<ENG>) {
|
||||
if($_ =~ / *\#/) {
|
||||
# comment
|
||||
next;
|
||||
}
|
||||
# get rid of DOS newlines
|
||||
$_ =~ s/\r//g;
|
||||
if($_ =~ / *([a-z]+): *(.*)/) {
|
||||
($var, $value) = ($1, $2);
|
||||
$set{$var} = $value;
|
||||
|
||||
if($var eq "new") {
|
||||
# the last one for a single phrase
|
||||
$idnum{$set{'id'}}=$idnum;
|
||||
$idnum++;
|
||||
undef %set;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(ENG);
|
||||
|
||||
|
||||
while(<LANG>) {
|
||||
if($_ =~ / *\#/) {
|
||||
# comment
|
||||
next;
|
||||
}
|
||||
# get rid of DOS newlines
|
||||
$_ =~ s/\r//g;
|
||||
if($_ =~ / *([a-z]+): *(.*)/) {
|
||||
($var, $value) = ($1, $2);
|
||||
# print "$var => $value\n";
|
||||
|
||||
$set{$var} = $value;
|
||||
|
||||
if($var eq "new") {
|
||||
# the last one for a single phrase
|
||||
|
||||
if(!$value) {
|
||||
# if not set, get the english version
|
||||
$value = $set{'eng'};
|
||||
}
|
||||
|
||||
$value =~ s/^\"(.*)\"/$1/g;
|
||||
|
||||
$idnum = $idnum{$set{'id'}};
|
||||
|
||||
printf OFILE ("%c%c%s\x00",
|
||||
($idnum>>8), ($idnum&0xff),
|
||||
$value);
|
||||
|
||||
undef %set;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
close(LANG);
|
||||
|
||||
close(OFILE);
|
Loading…
Reference in a new issue