* sort contents of generated apps/lang/english.list
* Ignore all entries with a source of 'none'
* Filter out all destination strings not present in master english list
* Always require '-e' argument
Change-Id: Ic86c0cb6c44139465cba6b6ce840131efe217c4d
For example, LANG_TIME_SET_BUTTON has these:
*: none
aigoerosq,erosqnative,gogearsa9200,samsungyh*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
But all of these players will match their name _and_ the generic 'rtc'
feature that enables use of this phrase. The language tooling
always used the final match in the list, so this resulted in
most devices showing the generic (and incorrect) 'ON = Set" instead
of the device-specific strings.
This patch changes the behavior so that only a match with the device
model itself can override the previously used string.
Change-Id: I93ee11b1e4925c39edaecdcbc13ccc51ed176a45
The tooling will always use the *final* match, which may or may not be
what is desired. Treat this as a bug, and complain appropriately.
However, there is a special case. The RTC set screen uses strings that
include the device button names. There should be an entry for the
specific device, but if not, we wanted to fall back to the string
specified by the 'rtc' feature flag as opposed to falling back to the
default, empty string.
To still support this, add a special "FALLBACK" value; If we end up
using this for a device, the tooling will treat this as a bug, and
complain accordingly.
This should fix FS#13615 and FS13616, and may introduce build failures
on targets that are missing appropriate entries. We'll see.
Change-Id: Ie78bb247f968e19d450a0fbf6e1177b6d01126a1
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
Previously, it was hardcoded to the english convention of units-last, so
"100%" would be voiced as "one hundred percent". This adds a new
language flag that makes the units be voiced first, ie "100%" will be
voiced as "percent one hundred".
So far only the Chinese-traditional and Chinese-simplified languages
utilize this feature (taken from an old ticket, FS#10340) but I'm sure
others would want this feature too.
Change-Id: Idf825ec9299dc0ed09921cf67aec61b1ab262fc6
The 'rtl' flags for Arabic and Hebrew was inadvertantly deleted
in 7ff3c94e1 (over a year ago, in November 2020!) but it's actually been
broken since the introduction of 'updatelang', in 2305966d (July 2020)
The fix here is to change the 'RTL' flag from an <options> section in
the language file to a comment in the header. It's not as pure in a
design sense but it makes for a much cleaner implementation.
I may further revamp this by making the 'RTL' flag into an explicit
LANG_xxx string
Change-Id: I48f394adfadc0aa804fd67690c87cc28f04fccdc
* Use consistent ID numbering
* Use consistent logic for voicelist and voicebin files
* Fix situations where English <-> English would fail in strange ways
* Delete leftover tmpfile.
* Off-by-one error in voice validation code
* Off-by-one error in voicelist generation
Change-Id: Ib3cea2c6612138b1cbe614dacbe51000199cc9ad
In addition to version and target also check id1_max & id2_max
for proper length before allowing voice file to be loaded
Change-Id: I36016059d07781b0bb43dd9873bbb6e565298d76
Original patch by Mario Lang
Heavily updated by Igor Poretsky
Further updated by myself
This patch breaks binary API compatibility by placing the new
functions where they make the most logical sense. IMO this is
the better approach to take given the scope of the changes needed
for talk support.
Since binary API is changing, the patch also moves some other
functions around to more logical locations.
As well as voice support in plugins, this patch voice-enables several
simple plugins. There will be follow-up patches for many plugins that
build on this one.
Change-Id: I18070c06e77e8a3c016c2eb6b6c5dbe6633b9b54
Extend genlang to create files holding the voice strings in a binary format
similar to lng. Create such files for all languages during a normal build, put
them in a zip file and add them to rockbox.zip so they are installed with a
main build.
Creating a voice file requires access to the voice strings, which are currently
not distributed with Rockbox. Therefore it is necessary to either have access
to the source code of the installed build or to use a build the genlang service
on rockbox.org can retrieve the strings for, making it impossible for normal
users to generate a voice file for custom builds, test builds and older builds
that aren't supported by the rockbox.org script. It also requires a network
connection when creating voice files with Rockbox Utility even if creating a
voice file by itself isn't network related.
Furthermore, putting the voice strings on the target is also a prerequisite for
eventually supporting a TTS on the player.
Strip voice strings path.
Change-Id: Ic2f86130909b3b257986a348e5cfcf618c4500c3
voicefont uses the id prefix VOICE_ to recognize voice-only strings. Unused ids
get a NOT_USED prefixed entry to keep order correct. However, since this
applies to voice-only entries as well voicefont doesn't recognize those as
voice entries and puts them at the end of the lang strings table. This messes
up the order in the created voice file, so add VOICE_ as prefix so voicefont
can identify them.
Change-Id: Ic3f2ec038ce1ed93c84286979e6583b478fa697e
New genlang code forgot to allow for the wildcard being the full target name
with a * appended.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30514 a1c6a512-1295-4272-9138-f99709370657
With this change generating all languages takes only two-thirds the
time. It changes the acceptable syntax for target wildcards in language
files, however: instead of a comma-separated list of glob-style
wildcards it requires that it be a comma-separated list of prefix
matches, i.e. the * can only appear at the end of each wildcard, and ?
cannot be used. This does not require any changes to existing language
files as they are all already in this form.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30481 a1c6a512-1295-4272-9138-f99709370657
Amiconn: "langv2" had nothing to do with the language version byte in the
generated .lng file, so "langv4" makes no sense. It refers to the format of the
.lang. The current, tag-based format which allows to restrict strings to
certain targets or features is called langv2 versus the old, simpler format.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22939 a1c6a512-1295-4272-9138-f99709370657
- In the future, they should be united.
- Fix bug in max size calculation
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22930 a1c6a512-1295-4272-9138-f99709370657
FS#7576, and it typically caused a bazillion of LANG_SET_BOOL_YES to get output
when -o was used with non-english
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14277 a1c6a512-1295-4272-9138-f99709370657
strings. I also added the numerical id number for strings in the generated
header file, which is useful when the new lngdump tool is used and you want to
compare the ids for the built-in strings to the ones in the generated binary
files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14274 a1c6a512-1295-4272-9138-f99709370657
1) Introduces apps/features.txt that controls which strings are included
for each target based on defines.
2) .lng and .voice files are now target specific and the format versions
of both these file types have been bumped, which means that new voice
files are needed.
3) Use the 'features' mechanism to exclude strings for targets that
didn't use them.
4) Delete unused and deprecated and duplicated strings, sort strings in
english.lang
Some string IDs were changed so translations will be slightly worse than
before.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14198 a1c6a512-1295-4272-9138-f99709370657
dictate when a certain phrase doesn't exist and should be ignored in the
output
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14150 a1c6a512-1295-4272-9138-f99709370657