From c08bbaac490f02573586a945981273f7d9b36649 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Sun, 4 May 2025 09:21:09 -0400 Subject: [PATCH] Revert "lang: Complain if there are multiple target matches for a given string" This reverts commit a88ef80560cd1ebb948573472925f44063b9e564. --- apps/lang/english.lang | 94 +++++++++++++++++++++++++++--------------- tools/genlang | 39 +++++++----------- tools/updatelang | 3 -- 3 files changed, 76 insertions(+), 60 deletions(-) diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 770b60da28..dcaeb2f7e5 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -17,14 +17,16 @@ # This is the master of the language files. This is the original, the one with # 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* # # 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 -# files and voice files so instead of removing a unused , change -# the desc field to "deprecated" (without quotes) and either blank the -# strings or change them to "deprecated" (without quotes) and do *not* -# change the targets. +# Removing strings will break the numbering of strings in binary lang files and +# voice files so instead of removing a unused , change the desc field +# to "deprecated" (without quotes) and either blank the strings or change them to +# "deprecated" (without quotes) and do *not* change the targets. # # 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. @@ -38,31 +40,57 @@ # when doing updates etc, while the ones are used when this file is # used to simply get the full set of english strings for a particular target. # -# All phrases have a default string like: -# *: "default" -# that will be used if no other string matches for the particular model you -# build the anguage for. If you want a particular string for the iriver -# iriverh300 series you'd write it like: -# iriverh300: "iriverh300-specific string" (below the default line). -# If your string isn't used for all targets set the default to none like: -# *: none (no quotes!) -# 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". +# All phrases have a default string like: *: "default" that will be used if no +# other string matches for the particular model you build the language for. If +# you want a particular string for the iriver iriverh300 series you'd write it like: +# iriverh300: "iriverh300-specific string" (below the default line). If your string isn't +# used for all targets set the default to none like: *: none (no quotes!) 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 -# configure script, or various feature flags. Look at the 'rockbox-info.txt' -# file in your build directory for a list of all of the feature flags -# supported by your build; typicall there are well over a dozen. -# -# It is possible for there to be multiple matches. When this is deteted -# the build system will treat this as a failure. There is a special -# case where this is intentional. Some strings refer to key actions that -# may be unique for a given device, but we need a way to flag an error -# if that is not properly defined. In this case, the feature flag -# is given a special value "FALLBACK". As an example of this, see -# the 'rtc' string of of LANG_TIME_SET_BUTTON. -#### +# The target names used are picked from the configure script and are set in the +# MODELNAME variable in the root makefile. This is an incomplete list: +# Target Target string +# iriver +# H100/H110/H115 iriverh100 +# H120/H140 iriverh120 +# H320/H340 iriverh300 +# H10 iriverh10 +# iaudio/Cowon +# X5 iaudiox5 +# M5 iaudiom5 +# 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 id: LANG_ROCKBOX_TITLE @@ -3659,7 +3687,7 @@ iriverh100,iriverh120,iriverh300: "NAVI = Set" mpiohd300: "ENTER = Set" mrobe500: "HEART = Set" - rtc: "FALLBACK" + rtc: "ON = Set" vibe500: "OK = Set" @@ -3669,7 +3697,7 @@ iriverh100,iriverh120,iriverh300: "NAVI = Set" mpiohd300: "ENTER = Set" mrobe500: "HEART = Set" - rtc: "FALLBACK" + rtc: "ON = Set" vibe500: "OK = Set" @@ -3691,7 +3719,7 @@ iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert" iriverh100,iriverh120,iriverh300: "STOP = Revert" mrobe100: "DISPLAY = Revert" - rtc: "FALLBACK" + rtc: "OFF = Revert" samsungyh*: "REW = Revert" vibe500: "CANCEL = Revert" @@ -3705,7 +3733,7 @@ iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert" iriverh100,iriverh120,iriverh300: "STOP = Revert" mrobe100: "DISPLAY = Revert" - rtc: "FALLBACK" + rtc: "OFF = Revert" samsungyh*: "REW = Revert" vibe500: "CANCEL = Revert" diff --git a/tools/genlang b/tools/genlang index 7fd8f8099b..6d0aa12528 100755 --- a/tools/genlang +++ b/tools/genlang @@ -235,7 +235,6 @@ sub readenglish { my $withindest; my $numphrases = 0; my $numusers = 1; # core is already in the users map - my $deststr; while() { @@ -244,7 +243,8 @@ sub readenglish { if($_ =~ /^ *\/) { # this is the start of a phrase - } elsif($_ =~ /\<\/phrase\>/) { + } + elsif($_ =~ /\<\/phrase\>/) { # if id is something, when we count and store this phrase if($id) { @@ -253,7 +253,8 @@ sub readenglish { # Assign an ID number to this entry $idmap[$user]{$id}=$vidnum[$user]; $vidnum[$user]++; - } else { + } + else { # Assign an ID number to this entry $idmap[$user]{$id}=$idnum[$user]; $idnum[$user]++; @@ -265,7 +266,8 @@ sub readenglish { } undef @phrase; $id=""; - } elsif($_ ne "\n") { + } + elsif($_ ne "\n") { # gather everything related to this phrase push @phrase, $_; if($_ =~ /^ *\/i) { @@ -276,10 +278,12 @@ sub readenglish { $withindest=0; 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; # print "DEST: use this id $id\n"; - } else { + } + else { # print "skip $maybeid for $name\n"; } } @@ -289,24 +293,11 @@ sub readenglish { # model name isn't "ours" dest($_, $name, $val); - ## If $dest is nonnull (ie we have a match for this target) - ## if $deststr is null, accept - ## if $name is '*', accept - ## if $name is not '*' and $deststr is not null, COMPLAIN. - - if ($dest) { - if (!$deststr) { - $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; - } - } + if($dest) { + # Store the current dest string. If this target matches + # multiple strings, it will get updated several times. + $deststr = $dest; + } } } diff --git a/tools/updatelang b/tools/updatelang index c17d08a85b..e68d958221 100755 --- a/tools/updatelang +++ b/tools/updatelang @@ -555,7 +555,6 @@ foreach my $id (@finalorder) { print $fh " \n"; foreach my $tgt (sort(keys(%lp))) { my $w = NFC($lp{$tgt}); - next if ($w eq 'FALLBACK'); if ($w eq 'none') { print $fh " $tgt: $w\n"; } else { @@ -569,7 +568,6 @@ foreach my $id (@finalorder) { print $fh " \n"; foreach my $tgt (sort(keys(%lp))) { my $w = NFC($lp{$tgt}); - next if ($w eq 'FALLBACK'); if ($w eq 'none') { print $fh " $tgt: $w\n"; } else { @@ -583,7 +581,6 @@ foreach my $id (@finalorder) { print $fh " \n"; foreach my $tgt (sort(keys(%lp))) { my $w = NFC($lp{$tgt}); - next if ($w eq 'FALLBACK'); if ($w eq 'none') { print $fh " $tgt: $w\n"; } else {