diff options
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/binlang | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/tools/binlang b/tools/binlang new file mode 100755 index 0000000..284dbf7 --- /dev/null +++ b/tools/binlang @@ -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); |