summaryrefslogtreecommitdiffstats
path: root/tools/binlang
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-09-24 12:38:00 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-09-24 12:38:00 +0000
commite770bc8be0717199e244ffe3756d866f25831e25 (patch)
treedf09b6dbe92de2f0d0c50b6acab7f8bb58dec1cf /tools/binlang
parent2da8e8e1959f8949e263f47f396fbc5eee9632c1 (diff)
downloadrockbox-e770bc8be0717199e244ffe3756d866f25831e25.tar.gz
rockbox-e770bc8be0717199e244ffe3756d866f25831e25.zip
funny little script to generate a binary language file
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2386 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'tools/binlang')
-rwxr-xr-xtools/binlang107
1 files changed, 107 insertions, 0 deletions
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 <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);