From e770bc8be0717199e244ffe3756d866f25831e25 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 24 Sep 2002 12:38:00 +0000 Subject: funny little script to generate a binary language file git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2386 a1c6a512-1295-4272-9138-f99709370657 --- tools/binlang | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 tools/binlang (limited to 'tools/binlang') diff --git a/tools/binlang b/tools/binlang new file mode 100755 index 0000000000..284dbf738e --- /dev/null +++ b/tools/binlang @@ -0,0 +1,107 @@ +#!/usr/bin/perl +############################################################################ +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ +# $Id$ +# +# Copyright (C) 2002 by Daniel Stenberg +# +# 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 < + +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() { + 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() { + 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); -- cgit v1.2.3