diff options
author | Daniel Stenberg <daniel@haxx.se> | 2006-04-02 09:07:24 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2006-04-02 09:07:24 +0000 |
commit | 12e528ccd9f8764e745a4b634cc1d4f798fe44d8 (patch) | |
tree | 6d43cc38423aecff00d2d54a96f7ffdb49329674 /tools | |
parent | 4ab75786811acffb410263442df3f6ea463f04f5 (diff) |
first take at -o for producing a friendly output for the voice-generating
scripts
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9420 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/genlang2 | 124 |
1 files changed, 86 insertions, 38 deletions
diff --git a/tools/genlang2 b/tools/genlang2 index 7d82f21b31..07c866a288 100755 --- a/tools/genlang2 +++ b/tools/genlang2 @@ -44,6 +44,9 @@ Usage: genlang2 [options] <langv2 file> Specify which target you want the translations/phrases for. Required when -b or -p is used. + -o + Voice mode output. Outputs all id: and voice: lines for the given target! + -v Enables verbose (debug) output. MOO @@ -69,19 +72,20 @@ my $binary = $b; my $update = $u; my $english = $e; +my $voiceout = $o; -my $check = ($binary?1:0) + ($prefix?1:0) + ($update?1:0); +my $check = ($binary?1:0) + ($prefix?1:0) + ($update?1:0) + ($voiceout?1:0); if($check > 1) { - print "Please use only one of -p, -u and -b\n"; + print "Please use only one of -p, -u, -o and -b\n"; exit; } if(!$check) { - print "Please use at least one of -p, -u and -b\n"; + print "Please use at least one of -p, -u, -o and -b\n"; exit; } -if(($binary || $update) && !$english) { - print "Please use -e too when you use -b or -u\n"; +if(($binary || $update || $voiceout) && !$english) { + print "Please use -e too when you use -b, -o or -u\n"; exit; } @@ -99,7 +103,6 @@ my %source; # id string to source phrase hash my %dest; # id string to dest phrase hash my %voice; # id string to voice phrase hash - my $input = $ARGV[0]; my @m; @@ -163,6 +166,7 @@ sub voice { parsetarget("voice", \$voice, @_); } +my %idmap; my %english; if($english) { # For the cases where the english file needs to be scanned/read, we do @@ -170,7 +174,7 @@ if($english) { # -u it is convenient. my $idnum=0; # start with a true number - my %idmap; + my $vidnum=0x8000; # first voice id open(ENG, "<$english") || die "can't open $english"; my @phrase; my $id; @@ -194,14 +198,17 @@ if($english) { if($_ =~ /^ *id: ([^ \t\n]+)/i) { $id=$1; - # Skip voice-only entries + # voice-only entries get a difference range if($id =~ /^VOICE_/) { - next; + # Assign an ID number to this entry + $idmap{$id}=$vidnum; + $vidnum++; + } + else { + # Assign an ID number to this entry + $idmap{$id}=$idnum; + $idnum++; } - - # Assign an ID number to this entry - $idmap{$id}=$idnum; - $idnum++; } } close(ENG); @@ -324,7 +331,7 @@ while(<LANG>) { if($dest =~ /^none\z/i) { # "none" as dest means that this entire phrase is to be # ignored - print "dest is NONE!\n"; + #print "dest is NONE!\n"; } else { @@ -432,11 +439,11 @@ extern unsigned char *language_strings[]; extern const unsigned char language_builtin[]; /* The enum below contains all available strings */ -enum { +enum \{ MOO ; -print CFILE <<MOO + print CFILE <<MOO /* This file was automaticly generated using genlang2, the strings come from "$input" */ @@ -445,21 +452,21 @@ print CFILE <<MOO unsigned char *language_strings[LANG_LAST_INDEX_IN_ARRAY]; const unsigned char language_builtin[] = MOO - ; - - # Output the ID names for the enum in the header file -my $i; -for $i (1 .. $idcount) { - my $name=$idnum[$i - 1]; # get the ID name - - $name =~ s/\"//g; # cut off the quotes +; - printf HFILE (" %s,\n", $name); -} + # Output the ID names for the enum in the header file + my $i; + for $i (1 .. $idcount) { + my $name=$idnum[$i - 1]; # get the ID name + + $name =~ s/\"//g; # cut off the quotes + + printf HFILE (" %s,\n", $name); + } # Output separation marker for last string ID and the upcoming voice IDs -print HFILE <<MOO + print HFILE <<MOO LANG_LAST_INDEX_IN_ARRAY, /* this is not a string, this is a marker */ /* --- below this follows voice-only strings --- */ VOICEONLY_DELIMITER = 0x8000, @@ -467,16 +474,16 @@ MOO ; # Output the ID names for the enum in the header file -my $i; -for $i (0x8000 .. ($voiceid-1)) { - my $name=$idnum[$i]; # get the ID name - - $name =~ s/\"//g; # cut off the quotes - - printf HFILE (" %s,\n", $name); -} + my $i; + for $i (0x8000 .. ($voiceid-1)) { + my $name=$idnum[$i]; # get the ID name + + $name =~ s/\"//g; # cut off the quotes + + printf HFILE (" %s,\n", $name); + } -# Output end of enum + # Output end of enum print HFILE "\n};\n/* end of generated enum list */\n"; # Output the target phrases for the source file @@ -495,11 +502,11 @@ for $i (0x8000 .. ($voiceid-1)) { } # Output end of string chunk -print CFILE <<MOO + print CFILE <<MOO ; /* end of generated string list */ MOO - ; +; close(HFILE); close(CFILE); @@ -534,6 +541,47 @@ elsif($binary) { } } } +elsif($voiceout) { + # voice output requested, display id: and voice: strings in a v1-like + # fashion + + my @engl; + + # This loops over the strings in the translated language file order + my @ids = ((0 .. ($idcount-1))); + push @ids, (0x8000 .. ($voiceid-1)); + + #for my $id (@ids) { + # print "$id\n"; + #} + + for $i (@ids) { + my $name=$idnum[$i]; # get the ID + my $dest = $voice{$name}; # get the destination voice string + + if($dest) { + $dest =~ s/^\"(.*)\"\s*$/$1/g; # cut off quotes + + # Now, make sure we get the number from the english sort order: + $idnum = $idmap{$name}; + + $engl[$idnum] = $i; + + # print "Input index $i output index $idnum\n"; + + } + } + for my $i (@ids) { + + my $o = $engl[$i]; + + my $name=$idnum[$o]; # get the ID + my $dest = $voice{$name}; # get the destination voice string + + print "#$i\nid: $name\nvoice: $dest\n"; + } + +} if($verbose) { |