summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2024-05-15 13:12:43 -0400
committerSolomon Peachy <pizza@shaftnet.org>2024-05-16 20:40:37 -0400
commit3a6ed727d4435ba4bca970fe0f309e6a728f0ee6 (patch)
tree3f73a41346fbbc6d3190355966c315a474e2022d
parent9d3b012ac06cec18e9128e87bc866169613925dc (diff)
downloadrockbox-3a6ed727d4435ba4bca970fe0f309e6a728f0ee6.tar.gz
rockbox-3a6ed727d4435ba4bca970fe0f309e6a728f0ee6.zip
lang: Add a special flag to differentiate "intentionally identical to english"
We normally treat "same as English" as a translation errors that needs to be corrected. However, many languages effectively use english words as-is, so we need a way of distinguishing the "intentionally the same" situations with our tools "automatically copying missing translated strings from English" to avoid blank or missing UI strings. The solution is to make sure these "intentionally same as english" strings are actually different. This will be accomplished by prepending '~' to the these strings. This special character is stripped from the binary data files used by the player and the voice generation tools. Change-Id: I90088cbd74de0e5cb9d65f75f26afe04f7e301bf
-rwxr-xr-xtools/genlang4
-rwxr-xr-xtools/updatelang4
2 files changed, 6 insertions, 2 deletions
diff --git a/tools/genlang b/tools/genlang
index abff3e8e18..24b29b7d9a 100755
--- a/tools/genlang
+++ b/tools/genlang
@@ -469,6 +469,10 @@ while(<LANG>) {
469 else { 469 else {
470 $idnum = $idcount[$user]++; 470 $idnum = $idcount[$user]++;
471 } 471 }
472
473 # Strip out the magic "Same as english" flag
474 $dest =~ s/^("?)~/$1/;
475 $voice =~ s/^("?)~/$1/;
472 476
473 $id{$idstr} = $idnum; 477 $id{$idstr} = $idnum;
474 $idnum[$user][$idnum]=$idstr; 478 $idnum[$user][$idnum]=$idstr;
diff --git a/tools/updatelang b/tools/updatelang
index 6f0012c573..e8a5fcae9d 100755
--- a/tools/updatelang
+++ b/tools/updatelang
@@ -360,7 +360,7 @@ foreach my $id (@langorder) {
360 $lang{$id}{'dest'}{$tgt} = $english{$id}{'dest'}{$tgt}; 360 $lang{$id}{'dest'}{$tgt} = $english{$id}{'dest'}{$tgt};
361 } 361 }
362 } elsif ($lp{$tgt} ne 'none' && $lp{$tgt} ne '' && not_ignorelist($id) && !$lang{$id}{'new'} && !$ignoredups) { 362 } elsif ($lp{$tgt} ne 'none' && $lp{$tgt} ne '' && not_ignorelist($id) && !$lang{$id}{'new'} && !$ignoredups) {
363 $lang{$id}{'notes'} .= "### The <dest> section for '$id:$tgt' is identical to english!\n"; 363 $lang{$id}{'notes'} .= "### The <dest> section for '$id:$tgt' is identical to english! (correct or prefix with ~)\n";
364# print "#!! '$id:$tgt' dest identical ('$lp{$tgt}')\n"; 364# print "#!! '$id:$tgt' dest identical ('$lp{$tgt}')\n";
365 } 365 }
366 if ($id eq 'LANG_VOICED_DATE_FORMAT') { 366 if ($id eq 'LANG_VOICED_DATE_FORMAT') {
@@ -466,7 +466,7 @@ foreach my $id (@langorder) {
466 $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' is identical to english, copying translated <dest>\n"; 466 $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' is identical to english, copying translated <dest>\n";
467 $lang{$id}{'voice'}{$tgt} = $lang{$id}{'dest'}{$tgt}; 467 $lang{$id}{'voice'}{$tgt} = $lang{$id}{'dest'}{$tgt};
468 } else { 468 } else {
469 $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' is identical to english!\n"; 469 $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' is identical to english! (correct or prefix with ~)\n";
470 } 470 }
471 } 471 }
472 if (defined($lp{$tgt}) && ($lp{$tgt} =~ /%"/)) { 472 if (defined($lp{$tgt}) && ($lp{$tgt} =~ /%"/)) {