1
0
Fork 0
forked from len0rd/rockbox

Revert "lang: Complain if there are multiple target matches for a given string"

This reverts commit a88ef80560.
This commit is contained in:
Solomon Peachy 2025-05-04 09:21:09 -04:00
parent a88ef80560
commit c08bbaac49
3 changed files with 76 additions and 60 deletions

View file

@ -17,14 +17,16 @@
# This is the master of the language files. This is the original, the one with # This is the master of the language files. This is the original, the one with
# all the existing strings Rockbox features. # all the existing strings Rockbox features.
# #
# The target names used for target-specific strings are set in the ARCHOS
# variable in the root Makefile
#
# *WARNING* # *WARNING*
# #
# If you want to add a new string, add it to the end of this file! # If you want to add a new string, add it to the end of this file!
# Removing strings will break the numbering of strings in binary lang # Removing strings will break the numbering of strings in binary lang files and
# files and voice files so instead of removing a unused <phrase>, change # voice files so instead of removing a unused <phrase>, change the desc field
# the desc field to "deprecated" (without quotes) and either blank the # to "deprecated" (without quotes) and either blank the strings or change them to
# strings or change them to "deprecated" (without quotes) and do *not* # "deprecated" (without quotes) and do *not* change the targets.
# change the targets.
# #
# If you re-order things or remove entries, you must bump the binary language # If you re-order things or remove entries, you must bump the binary language
# file version number in both the 'genlang' tool and the language loader code. # file version number in both the 'genlang' tool and the language loader code.
@ -38,31 +40,57 @@
# when doing updates etc, while the <dest> ones are used when this file is # when doing updates etc, while the <dest> ones are used when this file is
# used to simply get the full set of english strings for a particular target. # used to simply get the full set of english strings for a particular target.
# #
# All phrases have a default string like: # All phrases have a default string like: *: "default" that will be used if no
# *: "default" # other string matches for the particular model you build the language for. If
# that will be used if no other string matches for the particular model you # you want a particular string for the iriver iriverh300 series you'd write it like:
# build the anguage for. If you want a particular string for the iriver # iriverh300: "iriverh300-specific string" (below the default line). If your string isn't
# iriverh300 series you'd write it like: # used for all targets set the default to none like: *: none (no quotes!) this
# iriverh300: "iriverh300-specific string" (below the default line). # will not include the string for target that will not need it, see
# If your string isn't used for all targets set the default to none like: # apps/features.txt for available categories that can be used instead of the
# *: none (no quotes!) # target name, for example: swcodec: "swcodec-specific string".
# this will not include the string for target that will not need it, see
# apps/features.txt for available categories that can be used instead of
# the target name, for example: swcodec: "swcodec-specific string".
# #
# The target names are either the model name picked from the # The target names used are picked from the configure script and are set in the
# configure script, or various feature flags. Look at the 'rockbox-info.txt' # MODELNAME variable in the root makefile. This is an incomplete list:
# file in your build directory for a list of all of the feature flags # Target Target string
# supported by your build; typicall there are well over a dozen. # iriver
# # H100/H110/H115 iriverh100
# It is possible for there to be multiple matches. When this is deteted # H120/H140 iriverh120
# the build system will treat this as a failure. There is a special # H320/H340 iriverh300
# case where this is intentional. Some strings refer to key actions that # H10 iriverh10
# may be unique for a given device, but we need a way to flag an error # iaudio/Cowon
# if that is not properly defined. In this case, the feature flag # X5 iaudiox5
# is given a special value "FALLBACK". As an example of this, see # M5 iaudiom5
# the 'rtc' string of of LANG_TIME_SET_BUTTON. # D2 cowond2*
#### # ipod
# All iPods ipod*
# 4G Color/Photo ipodcolor
# Nano ipodnano1g
# Video (5G) ipodvideo
# 3G ipod3g
# 4G gray ipod4g
# mini ipodmini1g
# mini 2G ipodmini2g
# Toshiba
# All gigabeats gigabeat*
# Gigabeat Fxx gigabeatfx
# Gigabeat Sxx gigabeats
# Sandisk
# Sansa E200 sansae200*
# Sansa C200 sansac200*
# Sansa Fuze sansafuze*
# Sansa Clip sansaclip*
# Olympus
# m:robe 100 mrobe100
# m:robe 500 mrobe500
# Mpio
# HD200 mpiohd200
# HD300 mpiohd300
# Packard Bell
# Vibe 500 vibe500
# Philips
# GoGear SA9200 gogearsa9200
# Samsung
# YH820/YH920/YH925 samsungyh*
# First item will be shown when P2STR is passed a NULL pointer # First item will be shown when P2STR is passed a NULL pointer
<phrase> <phrase>
id: LANG_ROCKBOX_TITLE id: LANG_ROCKBOX_TITLE
@ -3659,7 +3687,7 @@
iriverh100,iriverh120,iriverh300: "NAVI = Set" iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set" mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set" mrobe500: "HEART = Set"
rtc: "FALLBACK" rtc: "ON = Set"
vibe500: "OK = Set" vibe500: "OK = Set"
</source> </source>
<dest> <dest>
@ -3669,7 +3697,7 @@
iriverh100,iriverh120,iriverh300: "NAVI = Set" iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set" mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set" mrobe500: "HEART = Set"
rtc: "FALLBACK" rtc: "ON = Set"
vibe500: "OK = Set" vibe500: "OK = Set"
</dest> </dest>
<voice> <voice>
@ -3691,7 +3719,7 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert" iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert" iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert" mrobe100: "DISPLAY = Revert"
rtc: "FALLBACK" rtc: "OFF = Revert"
samsungyh*: "REW = Revert" samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert" vibe500: "CANCEL = Revert"
</source> </source>
@ -3705,7 +3733,7 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert" iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert" iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert" mrobe100: "DISPLAY = Revert"
rtc: "FALLBACK" rtc: "OFF = Revert"
samsungyh*: "REW = Revert" samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert" vibe500: "CANCEL = Revert"
</dest> </dest>

View file

@ -235,7 +235,6 @@ sub readenglish {
my $withindest; my $withindest;
my $numphrases = 0; my $numphrases = 0;
my $numusers = 1; # core is already in the users map my $numusers = 1; # core is already in the users map
my $deststr;
while(<ENG>) { while(<ENG>) {
@ -244,7 +243,8 @@ sub readenglish {
if($_ =~ /^ *\<phrase\>/) { if($_ =~ /^ *\<phrase\>/) {
# this is the start of a phrase # this is the start of a phrase
} elsif($_ =~ /\<\/phrase\>/) { }
elsif($_ =~ /\<\/phrase\>/) {
# if id is something, when we count and store this phrase # if id is something, when we count and store this phrase
if($id) { if($id) {
@ -253,7 +253,8 @@ sub readenglish {
# Assign an ID number to this entry # Assign an ID number to this entry
$idmap[$user]{$id}=$vidnum[$user]; $idmap[$user]{$id}=$vidnum[$user];
$vidnum[$user]++; $vidnum[$user]++;
} else { }
else {
# Assign an ID number to this entry # Assign an ID number to this entry
$idmap[$user]{$id}=$idnum[$user]; $idmap[$user]{$id}=$idnum[$user];
$idnum[$user]++; $idnum[$user]++;
@ -265,7 +266,8 @@ sub readenglish {
} }
undef @phrase; undef @phrase;
$id=""; $id="";
} elsif($_ ne "\n") { }
elsif($_ ne "\n") {
# gather everything related to this phrase # gather everything related to this phrase
push @phrase, $_; push @phrase, $_;
if($_ =~ /^ *\<dest\>/i) { if($_ =~ /^ *\<dest\>/i) {
@ -276,10 +278,12 @@ sub readenglish {
$withindest=0; $withindest=0;
if($deststr && ($deststr !~ /^none\z/i)) { if($deststr && ($deststr !~ /^none\z/i)) {
die ("Missing specific target match for $maybeid\n") if ($deststr eq '"FALLBACK"'); # we unconditionally always use all IDs when the "update"
# feature is used
$id = $maybeid; $id = $maybeid;
# print "DEST: use this id $id\n"; # print "DEST: use this id $id\n";
} else { }
else {
# print "skip $maybeid for $name\n"; # print "skip $maybeid for $name\n";
} }
} }
@ -289,23 +293,10 @@ sub readenglish {
# model name isn't "ours" # model name isn't "ours"
dest($_, $name, $val); dest($_, $name, $val);
## If $dest is nonnull (ie we have a match for this target) if($dest) {
## if $deststr is null, accept # Store the current dest string. If this target matches
## if $name is '*', accept # multiple strings, it will get updated several times.
## if $name is not '*' and $deststr is not null, COMPLAIN.
if ($dest) {
if (!$deststr) {
$deststr = $dest; $deststr = $dest;
} elsif ($name eq '*') {
$deststr = $dest;
} elsif ($deststr ne 'none' && $val ne '"FALLBACK"') {
die("multiple matches on $maybeid ($name:$val / $deststr)\n");
} elsif ($deststr ne 'none' && $val eq '"FALLBACK"') {
# Ignore FALLBACK row if we already have a match
} else {
$deststr = $dest;
}
} }
} }
} }

View file

@ -555,7 +555,6 @@ foreach my $id (@finalorder) {
print $fh " <source>\n"; print $fh " <source>\n";
foreach my $tgt (sort(keys(%lp))) { foreach my $tgt (sort(keys(%lp))) {
my $w = NFC($lp{$tgt}); my $w = NFC($lp{$tgt});
next if ($w eq 'FALLBACK');
if ($w eq 'none') { if ($w eq 'none') {
print $fh " $tgt: $w\n"; print $fh " $tgt: $w\n";
} else { } else {
@ -569,7 +568,6 @@ foreach my $id (@finalorder) {
print $fh " <dest>\n"; print $fh " <dest>\n";
foreach my $tgt (sort(keys(%lp))) { foreach my $tgt (sort(keys(%lp))) {
my $w = NFC($lp{$tgt}); my $w = NFC($lp{$tgt});
next if ($w eq 'FALLBACK');
if ($w eq 'none') { if ($w eq 'none') {
print $fh " $tgt: $w\n"; print $fh " $tgt: $w\n";
} else { } else {
@ -583,7 +581,6 @@ foreach my $id (@finalorder) {
print $fh " <voice>\n"; print $fh " <voice>\n";
foreach my $tgt (sort(keys(%lp))) { foreach my $tgt (sort(keys(%lp))) {
my $w = NFC($lp{$tgt}); my $w = NFC($lp{$tgt});
next if ($w eq 'FALLBACK');
if ($w eq 'none') { if ($w eq 'none') {
print $fh " $tgt: $w\n"; print $fh " $tgt: $w\n";
} else { } else {