Compare commits

...

405 commits

Author SHA1 Message Date
Solomon Peachy
9aa6a35b3f Fix warnings introduced in prior commit
* #define CONFIG_RTC APPLICATION  (in sim builds)
 * #define CONFIG_STORAGE 0        (in PCTOOL builds)

Change-Id: Iabb77bd0a29ca06a13d1075f1e8cedb00f785c64
2025-10-12 17:20:20 -04:00
Solomon Peachy
0f8f05db29 build: Enforce -Wundef on all targets.
Simulators (and some hosted targets) no longer get a free pass!

This commit includes general fixes for simulator builds, but it
will undoubtedly result in many more warnings that need to be properly
fixed.

Change-Id: I6bb9d3fc4a29ccfe40366c438e058b5dfff0ddc3
2025-10-12 16:12:56 -04:00
Solomon Peachy
7ba4af6ab0 configure: Delete an obsolete, unused toolchain reference
'arm946cc' was only used by the never-finished 'tcc77x' targets that
were removed from the tree in 3ba2f6e5c7 (April 2021)

Change-Id: I935847ec9d339b8e90c6d2362113c2ff94b8b20f
2025-10-08 13:46:10 -04:00
Sebastian Leonhardt
a4aaf94af1 fix typo in imx233_power_get_info()
obviously the number should be 14400 (confirmed by datasheet)

Change-Id: I89dbd291a388fdd27575d814dc54609ebc17c964
2025-10-08 11:01:49 +02:00
Solomon Peachy
958f5ad5bd FS#13667: Updated Serbian translation (Ivan Pešić)
Change-Id: I04b7597a21342fd07ea4b4cdf7cad905dd8c728a
2025-10-06 08:27:19 -04:00
Solomon Peachy
5a4030cb35 usb: Partial revert of previous commit
...A rebase gone wrong led to a bunch of extra crap in the commit.

Change-Id: Id8f0e33b9fba0949594701fbc574da58e74fa776
2025-10-05 15:56:00 -04:00
Solomon Peachy
43ec77f84c usb: Strip ALL spaces from passthrough ATA serial number
Leading spaces in particular were resulting in Linux warnings/panics, but
to be safe strip out all spaces, including those in the middle.

This was noticed on an ipod6g with the stock hard drive; it reported
a serial number of '            xxxxxxxx', which is technically legal
per ATA specs, but needs to be properly trimmed.

Change-Id: I34309fe64b341caefd5b18f6d0cf539cb97d4a38
2025-10-05 15:48:12 -04:00
Solomon Peachy
7795426648 fonts: Update GNU Unifont -- Now with Unicode 16 support!
Thanks to the UnifontEX crew for their hard work.

Change-Id: Iad8266396ba89e27f00ba1f86018f40f19ae78ce
2025-10-04 10:18:27 -04:00
Solomon Peachy
b4565feed6 builds.pm: Add disabled TTS entry for Hungrarian
Will enable once we cross the 85% threshold.

Change-Id: Ia3c5c591fe0bd8bec610e7025e98b8c868e0bfc8
2025-10-04 10:18:27 -04:00
Solomon Peachy
84b883907f lang: Fix a missing colon in the previous commit
Change-Id: I13dca8f94047d192574a69fc4661209d4103ea2f
2025-10-03 12:16:34 -04:00
Solomon Peachy
d3f9cc579f lang: Correct LANG_TIME_REVERT and LANG_TIME_BUTTON_SET for xduoox3/x3ii
Change-Id: Ia3f71a96ad8d4be07d2b35d46a40190442b5f5cd
2025-10-03 10:03:17 -04:00
Aidan MacDonald
e24deccd00 sound: fix volume change being reported to %mv tag on boot
Setting the last_volume_change time was moved here in
commit 2e08b0f82e ("sound: update global volume state
in sound_set_volume()"); however this also triggers the
%mv tag on boot, as if the user was actively changing
the volume.

Move the last_volume_change update back to the original
call sites to fix this.

Change-Id: I895112cea4315f194f67c27839f1082d67c1ffa9
2025-10-03 10:01:02 +01:00
Aidan MacDonald
b19b95c00f sound: update global volume state in sound_set_volume()
Instead of calling sound_set_volume() and then manually
setting global_status.volume to match, update the global
volume state directly in sound_set_volume(). This makes
things a bit simpler and less error-prone.

Change-Id: I4db4d60ae1a72bd051ef49c90b1ae7f5ba59e535
2025-10-02 14:32:54 -04:00
Sebastian Leonhardt
ae001cb60c Fix wrong order of strings in .lang files
A "feature target" string must come before the device targets,
otherwise the real target string may be overwritten by the
feature string (happened with CreativeZEN button description
in the time screen).

Change-Id: I75b7441d4dc97b215cc26b42d3af3943fce32e20
2025-10-02 12:48:02 -04:00
Solomon Peachy
79e4e075e6 updatelang: Respect the target ordering in individual phrases
When matching the target id in a phrase, if there is more than one match
we always use the final one.  This allows us to easily specify a
default/wildcard entry that gets overridden by a target-specific one.

The list of targets was sorted alphabetically to ensure consistent ordering
from one run of the tooling to the next.

However, if a phrase contained both device-specific phrases as well as a
generic "feature" fallback, alphabetical sorting may screw things up, as
the "feature default" was no longer at the top of the list. This is
known to be an issue for LANG_TIME_SET_BUTTON and LANG_TIME_REVERT, but
may affect other phrases as well.

(To be blunt, we shouldn't be mixing feature and device-specific targets
 in this context.  The "feature default" should be removed in favor of
 target-specific entries, but in this specific case it looks to be a
 real PITA due to incomplete keymaps)

Consequently, work around this by sorting the target list within each phrase
based on the ordering in the master (ie English) language file.

Change-Id: Id32439c179a98663f414530fb36012f9b217c1b6
2025-10-02 12:36:49 -04:00
Sebastian Leonhardt
a7cf86e5c1 Creative ZEN: enable multiboot
defines redirect file name as "rockbox_main.zen"

Change-Id: Ieb0f10492ccf6edfa5652882ec031a7b4e862b04
2025-10-02 08:52:33 -04:00
Sebastian Leonhardt
58ad4ecf54 IMX233: make use of register define for bootdata
(the #define is already there, just unused)

Change-Id: I96d5cfe3ffc87a918eb6cd3e1eca8d9f4c91e13f
2025-10-02 13:06:11 +02:00
Solomon Peachy
1ab63c3d92 ipod: Small cleanup of piezo code on PP502x-based iPods
Basically use proper register names instead of magic values.

PP5002-based ipods (ie ipod1g-3g) use UART1 to drive the piezo vs
PWM of the newer models.

Change-Id: Ia333717a825ac6a0ebf43850fc31fca34178dd88
2025-10-01 20:46:43 -04:00
Aidan MacDonald
b09ce21023 echoplayer: fix incorrect button reporting
Must've been a copy paste error...

Change-Id: I751c529c748037f9afe5d2e4543d3630693d2d21
2025-10-01 18:28:12 +01:00
Franklin Wei
be5457b5eb puzzles: resync with Simon's upstream e00cb46 from 25 Sep 2025.
Notably, this enables "Group".

This also includes some changes to the Rockbox frontend:

- Removes extraneous underline from Extensive Help text.

- Implements a workaround for an upstream breaking change that removes
  the BLITTER_FROMSAVED flag. We depend on this for mouse mode. This
  is apparently the only place this flag was ever used. Note that I've
  hardcoded an arbitrary negative value for BLITTER_FROMSAVED instead
  of -1, for the reason Ben Harris mentioned in his commit removing it
  from the upstream source tree.

- Adds an implicit clip() to the game region when drawing a
  puzzle. This fixes a bug in Untangle where dragging a point off
  screen leads to ugly lines outside the play area.

- Implements "Quick Help" for unfinished plugins (but not "Extensive
  Help").

- Documents the need to disable unfinished plugins in resync.sh (weak
  symbols on win32).

Change-Id: Ic318a5db4b15acb437a3f951fbc9b7919c6fa652
2025-10-01 00:49:19 -04:00
Solomon Peachy
306d8d4fc9 FS#13666 - Updated Hungarian translation (Matyas Kadlicsko)
Change-Id: Ie787603807537246ccc4328b064d808574b1163a
2025-09-30 19:40:13 -04:00
Dana Conrad
7533faed66 ErosQ: Add multimedia HID keys
presentation, browser, mouse not implemented

Change-Id: I81f5d43ecc229ae152c5ebdfef36755a685423ab
2025-09-29 15:58:48 -04:00
Solomon Peachy
8a94a37502 checkwps: Exclude targets that only exist as a bootloader from buildall
Change-Id: I95cb65a204b4e509d48c9a8fb009d438f382a9f6
2025-09-27 13:47:04 -04:00
Solomon Peachy
7c30b318e4 Hopefully fix all of the red and yellow.
Change-Id: I356b664067a6eecbb01f8a71cf9fa2cfcfd75128
2025-09-27 11:39:19 -04:00
Solomon Peachy
d7d7627baf checkwps: Validate %?St() tags
This will bail if referenced setting name does not exist.

Change-Id: I7abd54ec1260d3da6024ebec809f8e270b0a84e5
2025-09-27 10:19:20 -04:00
Solomon Peachy
d57e1a21d1 FS#13665 - Updated Hungarian translation (Matyas Kadlicsko)
Change-Id: I784264c2e62432566d7f62eaa012147a9309e2ad
2025-09-25 15:14:08 -04:00
Solomon Peachy
aef5cec1ad disk: Minor cleanups with respect to virtual<->logical sector mapping
Change-Id: Ib20c73c8afe6cf71165600ace1b2ca4b10de2ae8
2025-09-22 22:12:59 -04:00
Hairo R. Carela
3ddde8615c rgnano: drop doom plugin due to musl issues
Dropping this after some failed attempts to work around musl dlclose implementation, fortunately there's a native port.

Change-Id: I17550df81494c6e67ddab21d44fe1287ccfa6156
2025-09-21 19:46:54 -04:00
Solomon Peachy
d29663a412 Revert "configure: remove redundant ARG_ARM_THUMB checks"
This reverts commit 5323c49fe6.

This caused build failures on two of the three affected targets.  The intent
of the delted code was to force thumb on unless it had been explicitly
disabled.  Due to extreme space constraints those targets _need_ to
be built in thumb mode.
2025-09-21 15:50:24 -04:00
Solomon Peachy
caaea275eb libspc: Temporarily disable problematic armv4 asm optimization
asm volatile (
    "mov    %[t0], %[out], asr #11  \n"
    "mul    %[out], %[t0], %[envx]  \n"
    : [out]"+r"(output), [t0]"=&r"(t0)
    : [envx]"r"((int) voice->envx));

This is resulting in "Rd and Rm should be different in mul" error,
because the compiler is putting [out] and [t0] into the same
register.

After some poking there doesn't appear to be a sane way to change
the constraints, so just disable it for now.

Change-Id: I7827713c8aadb27f0bf4a6f4a3e1d910c6193686
2025-09-21 15:39:35 -04:00
Solomon Peachy
bb251ba603 surfansf28: Hook up CONTEXT_YESNOSCREEN
Change-Id: I6faa43c95dffaf92d91f6b96f57acb164cf5b364
2025-09-21 15:39:35 -04:00
Solomon Peachy
977b6ef692 Toolchains: Update to GCC 9.5.0
GCC 9.5.0, binutils 2.38, gmp 6.1.2, mpfr 4.1.1, mpc 1.2.1, isl 0.18

Native:

  * arm - mini2g, nano2g, ipod6g works
  * mips - xduoox3 works
  * m68k - binaries untested

Hosted:

  * arm - samsungypr0 works
  * mips - xduoox3ii works
  * Android NDK - unchanged at GCC 4.9.4

Change-Id: I80faed4c74f7238265bf7a19b794e8476c351411
2025-09-21 09:03:00 -04:00
Solomon Peachy
5a1a5de3e3 build: Use 'nproc' instead of counting /proc/cpuinfo entries
Change-Id: If3b31504bcd37692ad109bb2779620e2302aa9fa
2025-09-21 09:03:00 -04:00
Solomon Peachy
5323c49fe6 configure: remove redundant ARG_ARM_THUMB checks
Change-Id: I25a5e631605173596de5971ff8d9bd7b7500791f
2025-09-21 09:03:00 -04:00
Solomon Peachy
d7d80a0c3a misc: Fix up more gcc9 warnings
Change-Id: Ia2f763ca7494c6a93b48bdd347a91f3d1a967f29
2025-09-21 09:03:00 -04:00
Solomon Peachy
b71fb1f12a misc: Fix some build warnings with gcc9
ata-creativezen looks like a legit memory-trashing bug, the rtc fixes
are bitwise inversion of a bool, and the remaining are just unused
static variables.

Change-Id: I1a818d4839cd3a54ca6e85f26feb743a4a9d29dc
2025-09-21 00:18:28 -04:00
Solomon Peachy
6340e79cda ipod6g: Improve power management with CE-ATA devices
* IDENTIFY_INFO flags that signify power management are _optional_
 * CE-ATA always supports STANDBY IMMEDIATE and FLUSH CACHE EXT

Change-Id: I7d575437d91f02267021fe680b9b49914e79291e
2025-09-17 08:23:41 -04:00
Solomon Peachy
44ce302348 janitorial: move FAT code from firmware/drivers to firmware/common
It's not a "driver" that interacts with hardware.

Change-Id: I7d688e1086aa118569ebc1440e20b48d0ae4881e
2025-09-17 08:23:41 -04:00
Solomon Peachy
6150e556fe unicode: Turn on 32-bit unicode for targets with >2MB RAM
Change-Id: I199dc928fc9a88fa4bff7bdb3dc03bb212612f6f
2025-09-16 20:56:16 -04:00
James D. Smith
d86240cf91 APEv2: AA: Fix a couple of bugs.
Change-Id: I1345d53f904d9c529dd6e2a7875dab97ffc9c2f3
2025-09-16 20:29:32 -04:00
Solomon Peachy
5c38669476 fat: Fix warning with fat_file_sector_size with (MAX_VARIABLE_LOG_SECTOR && HAVE_MULTIVOLUME)
Change-Id: I9bc7206b8121645688f5901ab448eba4077cba92
2025-09-16 16:50:32 -04:00
Solomon Peachy
9644bb5d9d ipod6g: CE-ATA uses a 4K block size at minimum
Therefore, turn on MAX_VARIABLE_LOG_SECTOR so we can support 512B and 4K
sector sizes.  Additionally, correct the interpretation of identify info
word 106 in CE-ATA mode.

Change-Id: I24dc7dd4a8617fcb60ed87c0c1be98d00dbdfa30
2025-09-16 15:12:16 -04:00
Solomon Peachy
4960a3b753 ipod: Turn on SMART support for all PP502x-based iPods
Unless you've modded the device with modern CF or mSATA storage, it's
not likely to achieve anything.  the original hard drives (supposedly)
lack SMART support, and none of the SD adapters bother to emulate it.

Change-Id: Id3cbe717c64947faf4b23d8c84a04b822cfb35da
2025-09-16 10:59:57 -04:00
Solomon Peachy
c307fd5525 ata: Parameterize the SMART query, add support to primary ATA driver
There are numerous sub-commands, this makes it possible to call the others.

Also in this patch is the ability for the "default" ATA driver to
query smart data too

Change-Id: Ie3aaf9e0b2d7a5d25d09dea34e4f10ee29047e1b
2025-09-16 09:52:05 -04:00
Solomon Peachy
e09829a71d debug: Log if SMART is supported in the debug menu
This is the first step towards enabling this feature for all ATA
devices.

Only the ipod6g supports it out of the box with its stock storage device
but with the prevalence of flash/ssd mods of one sort or another, this
really should be determined at runtime.

Change-Id: Ie35d97fd857bec8213cd0a2ad80695e8bb04a2d6
2025-09-15 19:35:51 -04:00
Solomon Peachy
bb605c91a4 usb_storage: Support 12/16-byte ATA passthrough
This is an unofficial command that many USB<->ATA chipsets support,
allowing direct passthrough of ATA commands to the device.

We don't pass things through as-is; instead we only intercept and handle
requests for IDENFITY INFO and SMART.  Everything else will return an
error.

Change-Id: I3bbb76990e5f6f0512f6eb42825fa505475b2ecd
2025-09-15 18:04:11 -04:00
Solomon Peachy
14157860b9 rgnano: Shrink CODEC and PLUGIN buffer sizes to reasonable sizes
(From 4MB->2MB and 8MB->2MB, respectively)

This is a hosted platform with a decent amount of free RAM; however
plugins and codecs are dlopen() which doesn't count against those
buffers.  Furthermore, the rgnano uses musl libc which does NOT
implement dlclose() so plugins, codecs, etc stick around in RAM
indefinitely even if they are never used again.

By shrinking these buffers we free up a bit more headroom for dlopen()
to leak, and for the host OS to provide disk caches and whatnot.

Change-Id: Ie657bd3b9fc8bd2a1f4bbc07debe3b10538c41c3
2025-09-13 08:44:38 -04:00
Solomon Peachy
c14ea0e01e samsung ypr0/r1: Shrink audio buffer from 31 to 23MB.
This frees up some headroom in the OS for things like dlopen() and
more effective disk caches.

Change-Id: I8b8dca65ad70adecfcbe674129c294e5ab3b21bb
2025-09-13 08:44:38 -04:00
Solomon Peachy
19ee9363d1 ibasso: Rejigger RAM and buffer sizes a little
Shrink audio buffer from ~256MB to ~192MB.  Increase plugin buffer size
to 2MB, not that it should matter given how much extra RAM this platform has.

This leaves plenty of room for the base OS to do what it needs to do.

Change-Id: I59ca235b9cf80cf86d406e4a144fee7d7784ed5d
2025-09-13 08:44:38 -04:00
Solomon Peachy
b497e71708 hibylinux: Shrink PLUGIN_BUFFER to 512K
Hosted platforms use dlopen() for plugin loading, and hibylinux is
relatively RAM constrained, so shrink this will free up more memory to
the OS for plugins to use.

Change-Id: I6b7cb17b964eaf5afc4958db242dfe4b82178e2e
2025-09-13 08:44:38 -04:00
Solomon Peachy
32d52e0415 hosted: Shrink audiobuffer to (MEMORY_SIZE-1) megabytes
This represents a 256K increase from the former (MEMORYSIZE-0.75), and
is necessary due to the growth in our binary sizes over the past decade
or so.

It is debatable if this is enough given that our actual memory
usage is approximately (MEMORYSIZE+3) megabytes (plus runtime OS
overhead) for the typical hosted build, but giving the host OS a bit
more breathing room is warranted.

Change-Id: I53e044585a32efd50a85e68d64fd21921eda01a3
2025-09-12 23:15:11 -04:00
Solomon Peachy
161f8c0e24 configure: Document the 'memory' parameter for hosted builds
Change-Id: I49979cf20fd5405bbb90dff297f5e695e046f2b9
2025-09-12 20:50:17 -04:00
Solomon Peachy
a2c10f6189 unicode: Support characters beyond the first unicode plane
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.

This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match.  This includes:

 * utf8decode() and friends
 * font manipulation, caching, rendering, and generation
 * on-screen keyboard
 * FAT filesystem (parsing and generating utf16 LFNs)
 * WIN32 simulator platform code

Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.

Appears to work on:

  * hosted linux, native, linux simulator in both 16/32-bit modes.

Needs testing on:

  * windows and macos simulator (16bit+32bit)

Change-Id: Iba111b27d2433019b6bff937cf1ebd2c4353a0e8
2025-09-12 09:24:30 -04:00
Hairo R. Carela
2a88253426 rbutil: add qt version check for setIniCodec
QSettings::setIniCodec was deprecated in qt6, this fixes building with it.
Change-Id: Icd2ac05bb0a9f56181823a25a9307ac791664d88
2025-09-11 21:39:52 -04:00
Christian Soffke
fe038d5d4b manual: album art tag: fix width/height mixup
Change-Id: Ied765faba5256dc383fbd5a133fc58e2317bdda4
2025-09-10 22:30:03 +02:00
Solomon Peachy
471624a75d DSP: put filter_process() into IRAM on all PP50xx CPUs
(Instead of just the slowest 500x family)

Change-Id: I39229d8765ff8c07da115e71909a60546597f603
2025-09-10 08:21:23 -04:00
Solomon Peachy
c6db7114f8 as3525: Fix build warning with newer toolchains
Change-Id: I3dad32caf0dc087b717ed76b900f414aa1608bc2
2025-09-09 10:03:22 -04:00
Solomon Peachy
01a62372ff flac: Fix build on Cowon D2.
Not enough IRAM on this target to support larger MAX_BLOCKSIZE even with
only 2ch.

Change-Id: I91675b9eb294f8af3f7d17aa9c76c7cb83ce0bd7
2025-09-09 08:09:45 -04:00
Christian Soffke
c5e5a537c0 shortcuts: respect talk_menu setting when deleting shortcut
Change-Id: I6f06db5a41c402eeb3703a25c5d51fd0e4fe354f
2025-09-09 05:59:38 +02:00
Solomon Peachy
a98a8ce131 FLAC: Conditionally increase MAX_BLOCKSIZE to 8KB
High-frequency files increasingly use a block size of over 4608B, which
means we need larger buffers to decode them.  However, larger buffers no
longer fit in IRAM on less-capable devices, hurting performance for
"normal" file playback.

On our slowest devices (M68K and PP-based devices), this is not worth
the tradeoff as they will likely not have enough CPU oomph to decode and
downmix these files in realtime.

S5L87xx-based devices have the raw performance to do this, so we decided
to err on the side of wider file compatibility at the cost of some
performance.

All other devices are unaffected.

Change-Id: I7344cf4c8c6b7b5c14f1ea67381160665d6ece5b
2025-09-08 22:51:46 -04:00
Christian Soffke
ebe961a2a8 plugins: playing time: fix possible stack overflow
Change-Id: Ieb38e84e8c4126741d4630de3594fd16a360d1ed
2025-09-09 02:29:49 +02:00
Solomon Peachy
eb03c7b4d0 build: Newer toolchains need a few tweaks to linker options.
Pull those fixes in now

Change-Id: I71c373ecc9d062ca997eb940c7d84a94e2d678aa
2025-09-07 15:40:44 -04:00
Solomon Peachy
e9b8413f49 Revert "Toolchains: Update to GCC 10.5.0"
I pushed the wrong working tree AGAIN

This reverts commit b92033f716.
2025-09-07 15:22:31 -04:00
Solomon Peachy
2c0bcc0be9 xrick: finally fix the red.
Change-Id: I1e0b4e2d77c8988a286051d391d99aeb7907f9c4
2025-09-07 15:21:59 -04:00
Solomon Peachy
b92033f716 Toolchains: Update to GCC 10.5.0
All toolchain dependencies are circa the GCC 10.5.0 release:

  GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24

Native:

 * arm - mini2g, nano2g works
       - ipod6g hangs at logo display
 * mips - xduoox3 works
 * m68k - binaries untested

Hosted:

 * arm - samsungypr0 works
 * mips - xduoox3ii works
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: Ic157255d76030e66325719e64331f553cb7c4363
2025-09-07 15:11:52 -04:00
Solomon Peachy
5953569ce5 xrick: Fix up a questionable choice of include paths
Change-Id: I60589f2151270349176d10505c3d75ab00fff9d4
2025-09-07 15:11:52 -04:00
Solomon Peachy
79582121ea xrick: Fix Makefile construct that made xrick includes global
Change-Id: Iac8e3c0ff4bba6d5da70042fd47a23392f3133bf
2025-09-07 13:40:41 -04:00
Solomon Peachy
3f71709152 s5l77xx: Correct definitions of VICADDRESS(n) and AESINADDR
By switching them from (const void* volatile*) to (void* volatile*)

The 'const' bit was causing GCC>4 to optimize away writes to those
addresses when compiled with -Os, badly breaking the interrupt handler.

Change-Id: Ia4b0ca37e082bddf78e084b80a5e550894645f1a
2025-09-07 10:02:40 -04:00
Solomon Peachy
da02b5921f s5l8702: Clean up the IRQ handler code slightly
* move all state into IRAM
 * eliminate dummy variables
 * get rid of 'naked' attribute and (slightly wasteful) hand-written asm
   in favor of auto-created 'interrupt' code

Change-Id: Ie6a2e12a4c1a0faa6ae89504cf931657044bd457
2025-09-07 09:59:45 -04:00
Solomon Peachy
fb8b52eaf1 s5l8702: CONSTify the clocking setup
Change-Id: I88f7a2e176606b718d778a5a4a5756c4c4b58c03
2025-09-07 09:11:11 -04:00
Solomon Peachy
afa096e8b9 misc: More fallthrough annotations
Change-Id: Iec45e339005de79535f11d15e77e60ee1e53a5f9
2025-09-07 08:06:56 -04:00
Christian Soffke
978a486d87 plugins: pictureflow: adjust PF_TRACKLIST behavior
Clarifies presumably intentional fall-through for
PF_TRACKLIST and fixes unwanted behavior of
PF_TRACKLIST while scrolling, which may have
started playback instead of showing the track list.

(affected keymaps at the moment are only SANSA_FUZE_PAD,
SAMSUNG_YH820_PAD, SAMSUNG_YH92X_PAD, and FIIO_M3K_PAD)

Change-Id: I335dd1b4a2152caed966b73aaa189bcfddc79734
2025-09-07 04:57:43 +02:00
Solomon Peachy
34f34bb7f1 misc: Fix a small pile of warnings found with diagnostics turned way up
* possible null pointer dereferences
 * non-annotated fallthroughs in case statements

Change-Id: I2332e0e0a4203ceca0999291ead112b8ab94c613
2025-09-06 21:31:58 -04:00
Solomon Peachy
d51d49550c FS13585: Display corruption in robotfindskitten game
When you're using a "large" screen device, and the message doesn't need
to scroll, parts of the previous mesage are left behind.

Work around this by explicitly clearing the messgage with a loooong
blank string.

Change-Id: I02f7789eb6567e92ecca174c40dabc4b580ac045
2025-09-06 12:44:11 -04:00
Solomon Peachy
e4e50e36f1 rbcodec: Force use of -O2 for dsp code
We already use targeted optimization for most codecs, and the
DSP code is just as performance-sensitive.

Improves mp3 decoding performance by a whopping 1% wwhen PBE is
turned on.

Change-Id: I801a6624c0f7068b6cd67961ad3b08f809b92fca
2025-09-06 08:44:32 -04:00
Solomon Peachy
4de25f7020 font: glpyh_cache_load() is now NO_INLINE
It is particularly stack-heavy (>1.25K, >2.25K with 32-bit unicode)

Its only caller was font_load_ex() but that can be called recursively
which _really_ blew up the stack.

Change-Id: I211cd33ca3478b2bd01d3ddcf6c890399af2fb9c
2025-09-05 20:02:46 -04:00
Solomon Peachy
16c9ef64b0 misc: Ensure stacks are always aligned with the native pointer size.
Change-Id: Ie7efae914dcb43be98bbb71bae9b765b2d87d817
2025-09-05 19:43:11 -04:00
Solomon Peachy
695698b918 SID: Don't uselessly upconvert from 16bpp mono to 28bpp stereo
cRSID natively renders its output as a 16bit mono stream.  There's no
reason to not use it as-is, and save a bunch of CPU cycles in the
process.

Change-Id: Ib934c05e77298e377053b29db91d1f05fb65eb76
2025-09-02 20:19:22 -04:00
Solomon Peachy
6f7dbc2153 FS#13661: Major Spanish translation update (Sergio Delgado)
* Added some missing strings and updated some others that made no sense
   (were literal/poor translations).
 * More usage of music-relevant terms.
 * This translation fits a standard-internationally spoken Spanish,
   supported with the use of DLE (Spanish language dictionary) of RAE
   (Real Spanish Academmy)

Change-Id: Ie891520bcafe1e880e25dd42ce81393b1f10840d
2025-08-31 21:31:04 -04:00
Amaury Pouly
ac6822debb zen/zenxfi: fix incorrect dotclk polarity
By default STMP3700 launches from negative edge for capture on positive edge.
If we leave DPL (bit 13 of reg 0x13) to 0, it will be captured on falling edge,
resulting in a potentially undefined behavior. Some make sure LCD captures on
rising edge. Alternatively we could change the dotclk polarity in VDCTRL0.

Change-Id: I4ceb2f5a9be88e07f0af9bf493b7881883320fda
2025-08-31 20:50:22 -04:00
Solomon Peachy
4ad041e17a disk: Always try to mount the first partition on a disk.
We've received multiple reports from users of 6th gen iPods where we
fail to find any mountable partition.  A user was able to supply an MBR
dump, which showed that the "type" listed for parition 0 was set to 0x00
(ie "unused"), leading us to (correctly) completely ignore that entry.
However, it looks like the stock firmware ignores the type and
unconditionally uses the first entry even if it's nominally "invalid"

So, to deal with this, always try to mount partition 0 if it is not one
of the two "extended partition table" types.  If that speculative mount
succeeds, we now treat it as type 0x0c (Fat32 w/LBA) internally.

Note that this will not allow the partition to be mountable over USB, as
the MBR is still incorrect, leading the host OS to ignore the partition.
Further complicating things, the stock Apple firmware always constructs
a fake MBR to hand to the host!

To prevent user confusion with these devices, we may consider faking the
MBR too; alternatively we could correct the MBR and write it back to
disk, perhaps via a debug menu option.

Change-Id: I1e9392d20401eb94ecc6d70263fb0e45392a9bd4
2025-08-31 19:31:20 -04:00
Solomon Peachy
063b0357c3 FS#13660: Translation updates
Ukranian and German:  (Pavlo Rudy and Bernhard Kepplinger)

Change-Id: I89dc971ded1eafd79334f10a68144d5c5cbc3507
2025-08-31 13:17:07 -04:00
Hairo R. Carela
268a282da6 rgnano: Proper keylock support
Can use the advanced keylock menu options now.

Change-Id: If59b16ef5649c328558a74dd0601bc2f272c37b7
2025-08-30 17:20:31 -04:00
Christian Soffke
8418fc9078 tools: makefile: include wavtrim and voicefont in CLEANALL
Change-Id: I79040c0a5ac8dd68c46e984501e523efcc4c5f6f
2025-08-28 06:52:25 +02:00
Solomon Peachy
b21c477819 plugins: plugin_bss_start[] and plugin_end_addr[] are only for NATIVE builds
Change-Id: I5a856cd89126c3aa8f718536a8ddadfae80bb15a
2025-08-27 13:58:44 -04:00
Hairo R. Carela
a7a21bd311 rgnano: Some extra button mappings
We have a lot of buttons might as well use them.

Change-Id: Ic5ef6a38b2bdf2e1625886905fefb5343af3d6fb
2025-08-26 19:14:58 -04:00
Solomon Peachy
088806550b textviewer: Workaround for musl libc
musl doesn't unload shared objects when we dlclose() the handle.  This means
it also never re-initializes them if we try to re-launch.

This means that global state is persisted across invocations instead of
being wiped.  Until we come up with a proper workaround we can apply
globally, have the textviewer clean up the important global state when
it exits.

Change-Id: I43bf38e6e9f0e7d824931740daff6c060537235a
2025-08-26 17:20:43 -04:00
Solomon Peachy
9e3bb65228 database: Validate paths against MAX_PATH as well as TAX_MAXLEN
TAG_MAXLEN is 2* MAX_PATH, so this means we don't reject paths
that we could never actually open on the device.

Change-Id: I64363758163c0a6a5f54ebb1c9b455f3cb5b6e56
2025-08-25 10:46:16 -04:00
Solomon Peachy
31939086af database: Add much more verbose logging into database.log
Also turns database.log on for dbtool builds

Change-Id: I2d3fcfdd14cc7c354c84e37663b72920da564b84
2025-08-25 10:46:10 -04:00
Solomon Peachy
1690b393ad iriver: rename SECTOR_SIZE to FLASH_SECTOR_SIZE
Prevents collisions from the storage SECTOR_SIZE definition

Change-Id: I3f8fa56deaccb31c927a1eba677513f2ba8c24f2
2025-08-25 10:34:02 -04:00
Solomon Peachy
7de9d8dae5 limits: define PATH_MAX in only one place.
(This is the first step towards making it larger)

Change-Id: I4cea522074c455e04c8d228cf6463fb6500c41a0
2025-08-25 10:10:38 -04:00
Hairo R. Carela
6f107430f4 rgnano: Voltage and current measure support
Battery time estimation works now.

This commit also changes the mksquashfs path to FUNKEY_SDK_PATH.

Change-Id: Ic0aa4c40011b0716f1c36c014377eaccb486e841
2025-08-23 13:44:25 -04:00
Solomon Peachy
97ebba1fbd SD: Move sd_parse_csd() into common sdmmc code
This leaves firmware/driver/sd.c only containing storage API wrappers

Change-Id: I94f3f38c180f3802f479cdc54723fcd1b7782421
2025-08-22 14:48:28 -04:00
Christian Soffke
e10e3b2345 manual: backdrops: remove outdated info
Backdrops persist regardless of their location
in the file system since commit d09f978 (FS#12041):

"allows loading of backdrops from anywhere, and
keeps those backdrops after reboot."

Change-Id: I7b8cd2cdbca15b6d9ee7baae20a5d074c9765257
2025-08-21 17:05:09 -04:00
Solomon Peachy
1cd175a9fe build: Fix build on on 320x240 devices
(Regression introduced in 2aed517a07 )

Change-Id: If4b309a78f21b2730df2c63f5fac956901ff62bd
2025-08-21 15:28:54 -04:00
Hairo R. Carela
2aed517a07 Add 240x240 support to various plugins and rgnano manual updates
This should be all of the "standard" plugins (except sdl ones).

Change-Id: Iacae3edcc69a136a9dd887f31ad6ca51a9b5aea4
2025-08-20 20:50:42 -04:00
Solomon Peachy
a60c09c24c Revert "Toolchains: Update to GCC 10.5.0"
This reverts commit 94712b34d4.
2025-08-20 16:09:54 -04:00
Solomon Peachy
84504c7471 Revert "internals: Support characters beyond the first unicode plane (WIP)"
This reverts commit d05c59f35b.
2025-08-20 16:09:49 -04:00
Solomon Peachy
d05c59f35b internals: Support characters beyond the first unicode plane (WIP)
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.

This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match.  This includes:

 * utf8decode() and friends
 * on-screen keyboard
 * font manipulation, caching, rendering, and generation
 * VFAT code parses and generates utf16 dirents
 * WIN32 simulator reads and writes utf16 filenames

Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.

Known bugs:

  * Native players in 32-bit unicode mode generate mangled filename
    entries if they include UTF16 surrogate codepoints.  Root cause
    is unclear, and may reside in core dircache code.

Needs testing on:

 * windows simulator (16bit+32bit)

Change-Id: I193a00fe2a11a4181ddc82df2d71be52bf00b6e6
2025-08-20 16:08:43 -04:00
Solomon Peachy
94712b34d4 Toolchains: Update to GCC 10.5.0
All toolchain dependencies are circa the GCC 10.5.0 release:

  GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24

Native:

 * arm - mini2g, nano2g works
       - ipod6g hangs at logo display
 * mips - xduoox3 works
 * m68k - binaries untested

Hosted:

 * arm - samsungypr0 works
 * mips - xduoox3ii works
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: Ic9c4ad487927d2ad4247c140f1a7db2740e5f316
2025-08-20 09:16:57 -04:00
Solomon Peachy
0456ec5630 IAP: First steps towards true multiport state
iap_reset_state() and iap_getc() are now passed the logical IAP port
(0 is dock/only connector, 1 is headphone connector)

Change-Id: I97421146a8cab032b90c9b4eb55b50aa00d73312
2025-08-20 07:56:43 -04:00
Hairo R. Carela
e2f2ee88c8 bubbles: Fix various text positioning and line spacing issues
Affected a bunch of resolutions, tested with every resolution that had the game and ui simulator support.

Change-Id: I6abe9626f323d1f87f94589299ea6c847682e88b
2025-08-19 22:48:27 -04:00
Solomon Peachy
b0a4aae76e tools: Delete the unused 'buildtheme.pl' script
It was forked off of wpsbuild.pl but never utilized, and wpsbuild
continued to receive improvements

Change-Id: I38de687e45560398f438830ba920bacceff5cc24
2025-08-19 21:39:06 -04:00
Christian Soffke
963a66f670 tagcache: fix building with LOGF_ENABLE when LOGF_CLAUSES not defined
Change-Id: I1cfcd45069b54115cf368f52c74826d3b3eacd6e
2025-08-19 07:40:16 -04:00
Hairo R. Carela
69f27d4c66 rgnano: Use proper lcd depth and pixelformat
According to screen driver this device screen is actually 16 bit RGB565 (https://github.com/DrUm78/linux/blob/FunKey_S/drivers/staging/fbtft/fb_st7789v.c#L137).

This also fixes the color banding issues we had before and boomshine doesn't segfault anymore. Also building rockpaint now that's possible.

Change-Id: Icee49c347fbfabc79e0040314ec148cb77ca6325
2025-08-18 21:43:13 -04:00
Hairo R. Carela
e6ddf94fbd rgnano: Add simulator button click mappings
Was missing this in the fisrt commit.

Change-Id: I685c61cc419f720ece6ca4402839af0de70f8645
2025-08-18 19:06:04 -04:00
Christian Soffke
8145e326a3 tagcache: skip search roots that don't exist, instead of aborting
https://forums.rockbox.org/index.php/topic,55459

Change-Id: I0c3fa07f9920ed4caabf3013702b10e59c0b550e
2025-08-15 20:46:37 +02:00
Hairo R. Carela
c9e16e4888 rgnano: Sleep timer and idle poweroff support
Actually power off the handheld with the sleep timer and idle poweroff functions instead of closing rockbox.

This commit also moves setting system volume to max from the launch script to system-sdl.c so it works when running rockbox via instant play.

Change-Id: I174b67c6abef451faa05f4a8f52b8d9eeed98a22
2025-08-15 09:44:35 -04:00
Solomon Peachy
5ecb5832e1 as3525: Silence portability warning with GCC10+
Change-Id: I66ca05bd7b6029b7699d5534f82efe0c14da1291
2025-08-15 08:39:05 -04:00
Vencislav Atanasov
0781195c22 Add iPod Nano 2G post-mortem memory dumper by Michael Sparmann
The files are downloaded from https://www.rockbox.org/tracker/task/11701

Change-Id: Ic6415f76207868661c231cb534cb179160eb60e0
2025-08-14 20:45:19 -04:00
Solomon Peachy
bf2320d23b pdbox: Silence false warning with GCC10
Change-Id: I0d5e7d74e9aa27ca21cde739389a040a83505cf7
2025-08-14 20:43:09 -04:00
Solomon Peachy
472a6a69c6 IAP: Reset IAP state upon headphone or dock unplug
Provides a semi-automatic way of recovering from desynchronization

Change-Id: I527b0bacc22ef38c1e7213653e522ea1b0ac155d
2025-08-14 20:41:14 -04:00
Solomon Peachy
80eca90481 tagcache: Don't try to look up "deleted" filename entries
When a file is deleted from the database, the first character of that entry
is changed to \0.  However the entry's length is not updated,
because the entry is still using space in the index.

When checking for deleted files, we were only keying on "length == 0"
instead of also checking to see if the entry itself starts with \0.

Change-Id: Ic00a0b29c3857c597ee5ff6ec01a5f4fd9633447
2025-08-13 11:38:56 -04:00
Solomon Peachy
01860627bd test_codec: Fix crash due to missing strip_filesize function
Probably only affects mp3 files.

(Introduced in 38105860dc)

Change-Id: I1946e7be604784ec47ff21a47aab81e91d933a3d
2025-08-12 10:47:31 -04:00
Solomon Peachy
b40cf73d36 doom: Fix warning with RGNano Simulator
Change-Id: I311c7afb203d00a229d79ce655f41b702634a03f
2025-08-12 10:47:06 -04:00
Hairo R. Carela
707585e6c0 rgnano: Change ROCKBOX_DIR to /mnt/FunKey/.rockbox
For consistency's sake.

Change-Id: Ia2ef27dceaf143ab85adb22581c6461d50914a84
2025-08-10 14:47:17 -04:00
Christian Soffke
50f10681b3 playlist: remove support for PLAYLIST_COMMAND_CLEAR
Although this breaks compatibility with playlist control
file versions 3-5, i.e. control files generated by any RB
build between Jan 29 2023 (commit 25bd3bc) and Oct 26 2024
(commit 7592d2c), compatibility with v2 of the control file
that was in use from 2003 to 2023 is maintained.

Change-Id: I7fd3394e31131bb0563e41d921bcaf940dd999bc
2025-08-08 09:34:52 -04:00
Solomon Peachy
6265bbbd97 sdl: Explicitly disable the cursor for non-touchscreen devices
...Except for simulators, those always need the cursor

In practice this only affects the RG Nano as it is currently our
only SDL target that lacks a touchscreen.

Change-Id: I292f923848528c233da518b062d9ccd8a03515dd
2025-08-07 09:36:51 -04:00
Solomon Peachy
209f833c7a rgnano: Fix simulator build
Change-Id: I2e6dfae25a2dae18e672c5584e8bd52c7bbd279a
2025-08-06 21:25:57 -04:00
Hairo R. Carela
46d10dda33 rgnano: Instant play support and proper system brightness/volume handling
Instant play is a Funkey OS feature that allows it to relaunch at boot the last program it was running before shutting down, which means that if the handheld is powered off (holding the power button) while rockbox is running the next time it's powered on rockbox will launch at boot.

This commit also handles system brightness/volume in rockbox itself instead of the launch script, so the values are properly reset when powering off the handheld while rockbox is running.

Change-Id: Ie1adbf71069aeed5fbf6670971718a2f718716a3
2025-08-06 20:21:02 -04:00
Solomon Peachy
16a6ad032f pp502x: Restructure UART code
* Move to a structure instead of pointers to registers
 * Autobaud operates per-uart
 * When explitily setting uart speed, it applies to all uarts

This allows both UARTs to be enabled and serviced simultaneously,
allowing either accessory port to be used.  Note that the last
port to receive something is where subsequent transmits are directed,
and only one set of IAP state is maintained.

To change this, we will need to revamp IAP to support more than
one state machine, and then extend the serial API to allow for both
UARTs to be used independently.  Probably not worth the effort.

Change-Id: I0142f0906706fc0c4ee6d6d7aa6b0515e1a749dd
2025-08-06 08:27:58 -04:00
Christian Soffke
921abc7beb toolchains: mips: prevent failing build on MacOS
mips gcc will fail to build using the system's
BSD sed. Make sure the Homebrew-installed GNU sed
'sed' simlink is in the PATH. Otherwise, only 'gsed'
can be used to run GNU sed by default.

Change-Id: I0a793c692d9a6de4f326e447281892eb08e4f4cb
2025-08-05 18:37:19 -04:00
Christian Soffke
b713f1190a toolchains: fix building on MacOS with clang 17
The zlib version used by GCC 4.9.4 and binutils 2.26.1
is incompatible with clang 17 from the latest Xcode
command line tools, resulting in fdopen being defined
as NULL.

Remove the define for MacOS, as in zlib 1.31:

4bd9a71f35

Change-Id: Ic7f3108dc4fcaca4ae9a571f2bdb9039be095f36
2025-08-05 18:37:19 -04:00
Christian Soffke
2ddcc95423 tagtree: Fix FS#13651 database track titles not voiced with extensions turned off
regression introduced in commit 26c612f

Change-Id: Id2328a9f0de1fefdfddc7572524cb22a0668af96
2025-08-05 15:54:11 +02:00
Hairo R. Carela
7b0f408c71 rgnano: UI simulator support
Change-Id: Id488d16e01ef49a9d1b57641bc1c22ed2fef4931
2025-08-05 08:30:30 -04:00
Solomon Peachy
b52bf1bf65 gigabeats: Fix compilation with -fno-common
Change-Id: I02974bffd6def6bdfa6b15c593ac2eb82953ea73
2025-08-05 07:25:23 -04:00
Solomon Peachy
74508093f2 rk27xx: Fix compilation with -fno-common
Change-Id: I9fbe85fed23fe7b1b3fd88aa5e8a4a63c509fa62
2025-08-05 07:25:23 -04:00
Solomon Peachy
e4abe9177e build: Turn on -fno-common globally
Can make global variable access more efficient at the price of erroring
out if a variable is declared in more than one place.

Change-Id: I918eacf4a4c8c7827be64f7f2ee04cc6cc2009e0
2025-08-04 23:12:42 -04:00
Solomon Peachy
9f91f02159 sdl: Fix up build failures with -fno-common
Big pile of duplicate variable definitions in quake and duke3d

Change-Id: If5ef873c1dc1d7b3104536f657258e0a06574d53
2025-08-04 22:40:00 -04:00
Solomon Peachy
c33602375d pp500x: Switch to plain C sleep/wake code (instead of asm)
Supposedly this is responsible for startup crashes on ipod1g/2g.

Change-Id: I9d03ddc996f46db6fa782d1d8b1cd8baf9d23308
2025-08-04 10:02:52 -04:00
Hairo R. Carela
8e7fa2932e simulator: Fix battery level for targets with PERCENTAGE_MEASURE
Previous code returned 0 in targets using only `PERCENTAGE_MEASURE` which means the simulator closed itself (due to low battery) shortly after boot.

Change-Id: I8b66dd085e02a8e565893aad4c8b643233dd3852
2025-08-04 02:01:26 -04:00
Hairo R. Carela
20de670340 rgnano: Add manual images
Also sliding puzzle button labels.

Change-Id: Id6cf3e342da2e1b4b4ba170c003782f4e9fa4134
2025-08-03 12:39:46 -04:00
Hairo R. Carela
8dfd219598 rgnano: Fix duplicated target_id
The surfansf28 port was already using 120, my bad.

Change-Id: I40574d818e4bf5635996d6babce546172ff500ba
2025-08-02 19:06:50 -04:00
Solomon Peachy
543f2494dd builds: Indicate that the RG Nano now has a manual
Change-Id: I6acb4992ca2dd6b89d179c744148501ae54beb64
2025-08-02 13:51:15 -04:00
Hairo R. Carela
01a4f3eec9 rgnano: Add manual code and missing AB reset mappings
Cleaned up manual changes, and for some reason i forgot to add ACTION_WPS_ABRESET
mappings before so here it is, needed for the manual wps section.

Change-Id: If7ab8b146e84f91bb51a3ed03fb872ef3bab4d1f
2025-08-01 22:32:19 -04:00
Solomon Peachy
53ae37825f rgnano: Use the regular install, rather than 'fullinstall'
The difference is that 'fullinstall' installs the full set of
fonts.

Change-Id: Ifd0fb78c3b2e52cdd4c27ba746fddf54914375ae
2025-08-01 13:54:46 -04:00
Solomon Peachy
06d03d8e28 rgnano: More aggressively update the "installed" version
The current code checks the date listed in the "Version" string
in rockbox-info.txt, and updates if the new package has a newer date.

However this is not granular enough, especially when you are iterating
multiple builds on a single day.  It also prevents downgrading to
an older build.

So, instead of checking for a newer date, apply the update if the new
version string (including the commit id) is merely *different* than the
installed one.

Change-Id: Ie5d10ffe011afd1efb3c76c77a3ed19d36df9321
2025-07-31 08:32:31 -04:00
Solomon Peachy
340273a74c builds.pm: Add the new RG Nano port as an "unstable" build.
With this it will filter through the UI and hopefully get the
nightlies going.

Change-Id: I04638f31737ee69212ac966f38f4289f6fa30f87
2025-07-30 20:11:57 -04:00
neofright
7e2b129c64 Fix typo in database.c
Change-Id: I08e82013db80534284cebc054d0b6d705b473e33
2025-07-30 17:39:07 +01:00
Solomon Peachy
9bf5589d77 rgnano: Add an 'opk-zip' target that wraps the opk (and rockbox-info.txt) in a zip file.
Change-Id: Iae21b693f82d70e350a974138b710c093d24fc3e
2025-07-30 11:45:51 -04:00
Solomon Peachy
52e3fe4906 misc: Fix warble build
Change-Id: If5672285f2832ca6a5034e3f765785769e813409
2025-07-30 11:30:25 -04:00
Hairo R. Carela
fd9ab93178 xworld: Use ROCKBOX_DIR for data/save paths.
Hardcoded /.rockbox causing issues.

Change-Id: I13bfcda753afda33700ff2d88dfac6d607d3a9dd
2025-07-30 11:16:53 -04:00
Solomon Peachy
8e9125ee28 configure: re-export FUNKEY_SDK_PATH
Change-Id: I41bb5ba91fd69a40f2136315c6f27b00c78a7792
2025-07-30 10:46:49 -04:00
Vencislav Atanasov
68a5524a48 iPod 6G: Disable usage of deep standby mode on LCD type 2 and 3
This caused the devices to crash a few seconds after sending the command. A small power consumption increase is possible when the screen is off with this patch, but Rockbox doesn't crash anymore. Type 0 and 1 are not affected as they use a completely different sequence.

Tested on iPod 6G LCD type 1 and LCD type 2. Type 0 is similar to Type 1, Type 3 is similar to Type 2, so it should cover all available LCD types.

Change-Id: I3e8a653ca22bf59e3db38e1d26e747b358e62cb2
2025-07-30 09:51:15 -04:00
Solomon Peachy
5fa3b1ada3 SDL_MAJOR_VERSION isn't defined when parsing SOURCES
use RG_NANO instead for now.

Change-Id: I289432bfcd797b555da6e6e0e21fd62e5f342387
2025-07-29 23:03:21 -04:00
Solomon Peachy
2c0d70ccb2 build: Fix the large pile of yellow (and false red)
Introduced in 48392bab94

Change-Id: I848dad7ef8e830dafbe604909a4e8376890edc8e
2025-07-29 21:28:26 -04:00
Solomon Peachy
3dda9bd99b sdl: Turn on debugf in sdl-threads by default
Change-Id: I688732ad9bb52bd4eeb77d989e1a20e50ddd4a2c
2025-07-29 21:05:53 -04:00
Solomon Peachy
dc72190d88 otp: Correct some 64-bit time_t warnings
Change-Id: Ic2c00168170cee797a8ac7de1df2cb6650a9184d
2025-07-29 21:03:52 -04:00
Hairo R. Carela
48392bab94 New port: Anbernic RG Nano
A bit of context, this device is a clone of the FunKey-S with a different form factor, hardware is mostly identical, the relevant difference is it has audio out (via usb-c, adapter to 3.5mm is included), this is the reason why the FunKey-SDK is needed for bulding.

This port is based on the old SDL 1.2 code because the device doesn't have SDL2 support. Alongside what was supported in the SDL 1.2 builds this port supports battery level, charging status and backlight control.

Change-Id: I7fcb85be62748644b667c0efebabf59d6e9c5ade
2025-07-29 21:01:53 -04:00
Solomon Peachy
9d3e286454 ipod4g: Explicitly initialize both UARTs
This should allow either accesspory port to be used for IAP comms.

No regressions on an ipodphoto and mini2g through the dock connector,
but I don't have any headset-attached accessories to test against.

Change-Id: If217d8147ee871b20ad5f81ba95542379eb9f2dc
2025-07-28 11:05:13 -04:00
Solomon Peachy
8a04d02a1e FS#13648: Update Chinese (Simplified) translation (王吉)
Change-Id: I57b58a0e4a62e0443b0903ade7459610a1bce9c7
2025-07-28 10:36:01 -04:00
Vencislav Atanasov
d40be8404b SDL: Prevent SDL_FreeSurface from freeing the LCD buffer
In direct mode, the statically allocated Rockbox LCD framebuffer is used and should never be freed. Otherwise, ROCKBOX_VideoQuit takes care of freeing the dynamically allocated hidden buffer, used for scaling.

This fixed hanging of Rockbox when quitting an SDL app.

Change-Id: Ib9cd8c04cc0d2d6ccedaa582a5a85ef211d0273c
2025-07-25 22:17:19 +02:00
Solomon Peachy
f27de46472 PP502x: Hacky technique to switch UARTs based on which IRQ was triggered
This lets us have multiple serial ports enabled, which will help with
4th-gen ipods that have a serial port in the HP jack as well in the dock.

Change-Id: I6a00a776020848a6908413e05a6f27bad65b2d8e
2025-07-25 14:26:08 -04:00
Solomon Peachy
85f731c1e0 Translation updates:
* Italian (Alessio Lenzi)
 * Korean (Hoseok Seo)
 * Latvian (Renalds Belaks)
 * Moldavian (Mihai Alexandru Vasiliu)
 * Polish (Adam Rak)
 * Romanian (Mihai Alexandru Vasiliu)
 * Slovak (Matej Golian)

Change-Id: Ia8df6f4948967c46de716f4c6f1e0d63ac54ea07
2025-07-25 11:28:47 -04:00
Vencislav Atanasov
843ac237c1 ROLO: Ensure messages are not covering each other, change punctuation
Change-Id: I7c9a96afce39d95f120c8349d489f0b649f1ae11
2025-07-24 14:13:07 -04:00
Vencislav Atanasov
a901b530e0 Require HAVE_LCD_SLEEP when HAVE_LCD_SLEEP_SETTING is defined
Change-Id: I5429c538b8c46ab857100f3a290c4241c8991038
2025-07-23 20:46:41 +02:00
Solomon Peachy
e181ebfb2d Udpate english-us "translation"
Change-Id: I16557a3befab65dc35d39f1411b21fe6d679848e
2025-07-23 12:27:57 -04:00
Christian Soffke
f6cdcc8ca9 voice: LANG_PLUGIN_CANT_OPEN
Change-Id: Icbcbd7ed2dff88065726ce2520fbcc718bc3eba0
2025-07-23 11:13:13 -04:00
Paul Sauro
f2356303d9 [Tagtree] Add a new button to list automatically all tracks in all albums of the current view
This feature allow easily to start playing all albums from an artist by following the albums tracks orders, just like the Stock OS does on the iPods when you try to listen to all songs from an artist.

It is just a new opportunity, I did not touch the former "All tracks" button which sorts everything by title automatically since it is also very useful (and stock OS don't have this one, and sorting Alphabetically is very useful to listen to all versions of one track from an artist view).

Change-Id: Icf2a29bffe49c4e72f9c81d9727310b84c1150e4
2025-07-23 11:12:54 -04:00
Vencislav Atanasov
620a190baf iPod S5L87xx bootloader: Enable LCD sleep/awake test depending on target config, not on model
Change-Id: I7a3d86814e5f5b1c84ef73636f2094514aaf0120
2025-07-22 10:47:37 -04:00
William Wilgus
bf286ef373 Revert "Splash modified playername.txt on device startup"
This reverts commit 9d92d161d8.

Reason for revert: going to end up changing this might as well just revert

Change-Id: I914f61a5e79f80ff1bf40c06253c85dba25cc305
2025-07-22 10:27:34 -04:00
Solomon Peachy
59a50d3964 rbutil: Correct ini entry for the ro_MD (Moldovian) language
Change-Id: Ie044c4cab55174e6d655526adfb7a7aa09c97152
2025-07-21 12:53:24 -04:00
William Wilgus
9d92d161d8 Splash modified playername.txt on device startup
if playername.txt is modified its now splashed on device start-up

should be less confusing than having it in the WPS theme I hope..

Change-Id: Ifcec491f75a0c977a98d26292509f4ca62d79dac
2025-07-20 12:16:15 -04:00
William Wilgus
6df48c5f7f Revert^2 "Remove flashing text with the player name from the Next track label in WPS"
This reverts commit 1c0cfcee70.

Reason for revert: Going to put a splash at start-up

Change-Id: I9dcee79737f91161d7911923cec841f40e36e81d
2025-07-20 11:54:21 -04:00
William Wilgus
1c0cfcee70 Revert "Remove flashing text with the player name from the Next track label in WPS"
This reverts commit 614c6e9500.

Reason for revert: Just because you find it confusing doesn't mean it doesn't have a purpose..

make YOUR own theme if you don't like it seems like just as useful as the previous commit

Change-Id: I1555f483baaae77e396e88af6973c90414ee11dc
2025-07-20 11:38:09 -04:00
William Wilgus
d9a3fe19ce Bugfix plugins rockpaint toolbar blocks exit
allow power button to collapse toolbar and allow exiting the plugin

Change-Id: I205ee5253ca116eddd737683faab6e132f4936ba
2025-07-20 11:22:22 -04:00
William Wilgus
31c8c0496b Bugfix Zero runtime not reset runtime while charger connected
I can't repro the users issue guessing its the difference with
charging monitor vs not

https://forums.rockbox.org/index.php/topic,55406.0.html

Change-Id: I252f48cd24a9cb0fb2b899352fe9f9ac540a9a5b
2025-07-19 09:19:38 -04:00
Solomon Peachy
29e0303915 FS#13640: Updated Russian Translation (Vladislav Voronichev)
Change-Id: I044f45f10aae96af3a1cbf22209963cd973d3f46
2025-07-13 14:22:54 -04:00
Hairo R. Carela
893828b488 Use ROCKBOX_DIR in legal notices file paths
These paths were hardcoded to /.rockbox/ and could cause issues with ports not using that path.

Change-Id: I1aef65d21d47b7f49f06c304a4dc9d30471d3ae2
2025-07-09 19:04:34 -04:00
Vencislav Atanasov
648675dd0c iPod 6G: add support for every possible bootloader version, for all revisions of the target
Change-Id: Ie602c096c26a0d71afae07b6460457eeebda154a
2025-07-07 03:31:02 +03:00
Vencislav Atanasov
8d5f7baefe iPod S5L87xx bootloader: Add code for printing the bootloader hash
Change-Id: I6921ef894e328e462ea3ca77266a1a30b7a75972
2025-07-07 01:40:48 +03:00
Vencislav Atanasov
a20fe4a3ff Add debug menu option that dumps the boot flash of iPod 6G to a file
Change-Id: I7d7c3294cb45500297b903c40a3ec93c8a8ea33c
2025-07-06 23:17:26 +03:00
Dana Conrad
f2ea677b4d hibyos_nativepatcher: make tolerant of spaces in paths
Change-Id: Ibc0f2e6e1a00c526b4617e4b4ebfcfe132cbfa25
2025-06-30 17:07:36 -04:00
Dana Conrad
4d9314692f ErosQNative: More manual updates
More tweaks to remove references to Rockbox Utility, reducing confusion.

Change-Id: I9ddf2dc00a4f696a34982ebc76c7b9510848aad0
2025-06-27 15:47:30 -04:00
Solomon Peachy
a12d8e2171 fix yellow in c53e9ba27d
Change-Id: I46f222918d95373e389b16f50d7b0ac112de0f73
2025-06-27 10:08:28 -04:00
Roman Artiukhin
c53e9ba27d metadata: mp4: Fill disc/track count
Show Track Info now shows Discnum/Tracknum as "i/n" (e.g., "1/3" for disc 1 of 3). Previously, it only showed the disc/track number without the total count.

Change-Id: If6b2a73ad0fecc27aaee371f8c860031eacca796
2025-06-27 13:03:57 +03:00
Dana Conrad
534460611f ErosQNative: Update and clarify manual
Rework installation instructions, add blind users button
description, and generally clean up and make more readable.

Change-Id: I81fd4a7abf2ccc886cdc029afb73b1d0a71a35d1
2025-06-24 09:27:00 -04:00
Solomon Peachy
cc4e3b098d FS#13638: Updated Ukranian Translation (Pavlo Rudy)
Change-Id: I84c1367f9726515aaca6cc544a3925cf27c9c77b
2025-06-23 17:47:15 -04:00
Solomon Peachy
c145f41658 theme_menu: Error out gracefully when a directory doesn't exist
Normally we can't browse into a directory that doesn't exist; hwoever
the theme menu lets us directly browse (eg) fonts, themes, etc.  If the
target directory is not present (due to a broken installation) we
actually crash!

So, um, check and bail gracefully.

Should fix FS#13636

Change-Id: Idb28c55cf0ce3954114d056725f9992ceaf1db20
2025-06-17 18:40:06 -04:00
Solomon Peachy
9265d43a56 FS#13637: Minor update for Romanian translations (Mihai Alexandru Vasiliu)
Change-Id: I74a6daf7f71bd6bf15d834a12d70ae605c05530e
2025-06-17 18:22:05 -04:00
Christian Soffke
5f593fb000 album art setting: use settings callback
Since even Shuffle and Repeat are now immediately applied
from the Quickscreen, I suppose it makes sense to do the
same for the album art setting as the remaining holdout.

Change-Id: Ib1b56c31f28d8197e001901296d9897a23134564
2025-06-15 11:30:59 -04:00
Christian Soffke
fbbf08575f quickscreen: remove callback
this isn't used by anything anymore

Change-Id: Ia94b34a5e72b3b78e5e65f0a7a75c4aa347f0100
2025-06-15 11:30:59 -04:00
Christian Soffke
5f05d66853 quickscreen: fix disappearing elements in misbehaved themes
Adjusting certain settings from the Quickscreen causes a
GUI_EVENT_NEED_UI_UPDATE event to be sent. For example:
Changing the Repeat or Shuffle setting while music is playing
or paused (which results in audio being flushed and tracks
being reloaded immediately since commit 1c80f53)

This creates an issue with themes such as Terminal(Two),
FreshOS, or Themify, which appear to have viewports that
overlap with the UI viewport, thereby wiping out the
Quickscreen viewports.

We now redraw the Quickscreen when a full SBS update is
requested, similar to how it is done by lists. You'll still
see the viewport flash in case of misbehaved themes, so,
ideally, these themes would receive an update by their authors,
removing any viewports that overlap the UI viewport.

Change-Id: I7affbb70fc2e72fd6e1418196559204aec125e12
2025-06-15 11:30:59 -04:00
Solomon Peachy
19056b50d4 WPS: As a general rule, Use 16bit WPS resources on 24/32bpp targets
This pulled in some missing backgroups, selectors, and icon sets
on various 24|32bpp targets.

Change-Id: I913a64a30f3ef276619c920ae1068a4f24bfc993
2025-06-12 11:48:08 -04:00
Solomon Peachy
5d207bfd3e aigoerosq: Specify a font for our default CabbieV2 WPS
Without this, no font gets installed into the generated zip files

Change-Id: Ie8ebf3eaa31269f940576c0f90f1915037400094
2025-06-12 11:24:28 -04:00
Christian Soffke
91c724dc19 plugins: clock: adjust defaults, don't restore color
- Default to round border in analog mode
- Default to segmented LCD style in digital and binary mode
- Default to date format most fitting for current language
  (instead of D-M-Y)
- Don't forcibly set a light background before menu is
  displayed or when quitting
- Update manual

Change-Id: Ifb6a41bb99701ae8f8cbf5fa0db2a3a332085f43
2025-06-08 11:31:14 -04:00
Christian Soffke
8d4efb6cf2 plugins: clock: simplify settings
- Use system time format and remove separate setting
- Hide timer until started & eliminate setting for it
- Simplify menu, reorder settings, keep theme enabled
- Make dialog for resetting settings more consistent
  with other reset dialogs

Change-Id: I0fd38612b0592cd5a650c8985f377acc70a48eb7
2025-06-08 11:31:14 -04:00
Christian Soffke
ab161a3d89 plugins: clock: remove messages when starting/quitting
- When loading or saving clock settings,
  only show message if an error occurred
- Eliminate error message that was displayed
  when clock settings file didn't exist (yet).

Change-Id: I6d9c646d3895dba1f18ef3c2f9e73fa15fbc2c1c
2025-06-08 11:31:14 -04:00
Christian Soffke
2d00292df5 plugins: clock: fix fd not closed when file size differs
Change-Id: I12716c650703c47f8db825b1ae7e6fe62c039258
2025-06-08 11:31:14 -04:00
Christian Soffke
1812d15416 plugins: calculator: remove delay when quitting
Change-Id: Ie419e19302c6ec7d2f452fad4aa3e51a0325e899
2025-06-08 11:31:14 -04:00
Christian Soffke
9593dca0ef plugins: stopwatch: use UI viewport, fix vp not cleared
- lap times were not cleared after reset
- fix stuck lap scroll position after reset
- the running counter displayed stuck pixels
  depending on the font's character width

Change-Id: I0427bb2257ae8646ae675ae92ae3a5601083c4d1
2025-06-07 19:01:45 +02:00
Christian Soffke
42e5fa3ea5 shortcuts: Fix garbled title after language change
Change-Id: I09517c2f143e16b8874b8b8df7d3f8125686ff7a
2025-06-07 02:19:34 +02:00
Christian Soffke
855c4d666a shortcuts: voice: fix name isn't ignored when timedata.sleep_timeout < 0
regression introduced in 94cf340

Change-Id: Ib214021413d500b5538e38a38edfe620d3fd3a7b
2025-06-06 22:49:40 +02:00
Christian Soffke
94cf3403e2 shortcuts: add missing voice for sleep shortcuts without name
Change-Id: I1178be8c82671d64746297306b27ee9ccb50c1a2
2025-06-06 19:12:07 +02:00
Christian Soffke
e9d0be5dfd shortcuts: Don't require name for 'time' (i.e. talk or sleep) shortcuts
Change-Id: I5b0777c10527f6a49ac7305ca0ba1d4c269333fe
2025-06-06 18:12:06 +02:00
Christian Soffke
19dc2466c8 action: fix "first keypress enables display only" ignored in plugins
Change-Id: I131887e4b7d72022026dcd4adbfc6bd3e8bd2ee2
2025-06-05 16:09:29 -04:00
Christian Soffke
2bf929c7ae plugins: disktidy: use UI viewport, limit UI updates
- Show stats when finished
- Keep stats on screen until Cancel or Menu
  button is pressed
- Limiting progress updates to 10fps results
  in a big speedup

Change-Id: Iebffaead6e1212306edaa42aad925458d13a5f82
2025-06-05 16:08:58 -04:00
Paul Sauro
e3fb41919d metronome: increase rectangle sizes to use a greater portion of the screen
Change-Id: I6c0b3faa173f5b68282c8e75b039e61d2362f749
2025-06-04 09:44:31 -04:00
Christian Soffke
4ebf2edf32 plugins: pictureflow: fix backlight setting requires restart
Change-Id: I6a2f0fe1ab3909ab831f89f92988d82b5a7c9b14
2025-06-04 12:43:48 +02:00
William Wilgus
4811e48026 [Bugfix] make theme menu reset browse context
we try to reuse the browse context to return to folders in the plugin browser

but in the browse_folder() case we want to load the root directory
so reset the current browse context and force the browse
to be reloaded

Change-Id: I416ee40411cdce4e404b6119b33d91ff6ba533c8
2025-06-03 11:10:53 -04:00
William Wilgus
380e8c2687 [BugFix] lua add stub for splash() to splashf()
Change-Id: If3fbcae201fd950c60eedc9e090cca5f9ca45bae
2025-06-03 01:45:18 -04:00
Christian Soffke
5c2a33bba3 Hide extension in Rename dialog when viewing single file type
Hides the file name extension when renaming a file in
places other than the File Browser, such as in the
Playlists menu, where only a single file type is displayed.

Otherwise, a file can disappear from view if its extension
is accidentally changed.

Plus, it becomes a little easier to edit playlist names,
because  you don't have to skip past the extension in the
keyboard picker anymore.

Change-Id: I39fc2b008d5504080e0aa728acf88ceedc2b4617
2025-06-02 21:05:32 -04:00
Christian Soffke
d9feabc720 voice: replace splashf with talk equivalent
Add voice equivalent to splashf messages that require
pauses between individual announcements, or that need
to include their arguments

Change-Id: Ie72326a2371f242de8999761278b22080ba33c81
2025-06-02 21:04:19 -04:00
Christian Soffke
60010b52a2 voice: Use "All" prefix for final progress announcement
Use "All" prefix when the final item count is announced
in display_playlist_count and search_playlist
("All 2000 tracks saved"), to make it possible to tell
when the operation has finished.

Change-Id: I90419599fb30da511ee4671b8f0f7f92e2098fd0
2025-06-02 21:04:06 -04:00
Christian Soffke
4e50ae5e6e voice: database: interrupt for LANG_RANDOM_SHUFFLE_RANDOM_SELECTIVE_SONGS_SUMMARY
Change-Id: I7450d98323d377bebbd58521748b54e73a1646cd
2025-06-02 21:03:39 -04:00
Solomon Peachy
123d3b9a23 talk: Keep QUEUE_SIZE at 64 for smallmem devices
Change-Id: I03fb48b4dadbe0079f699d1fa9d994efd7fe4f68
2025-06-02 12:44:44 -04:00
Christian Soffke
36a5501d74 talk: Increase QUEUE_SIZE from 64 to 128
Ensures that fewer spelled-out strings
will run into this limit

Change-Id: I66cc1bcaffc7b63ee4a9908a59d157e4d2b7e598
2025-06-01 20:35:54 -04:00
Christian Soffke
ae1dc0adf8 talk: Keep UI responsive when spelling out long strings
Commit 3b1230b ensured that strings exceeding QUEUE_SIZE
were spelled out completely, but also resulted in the UI
becoming unresponsive.

We now check for any button presses, and truncate the
spelled-out string in that case.

Change-Id: Ibbd4f630cb5b88c9c133fdaf3a591e1a38f61e82
2025-06-01 19:59:57 -04:00
Christian Soffke
c51ca1eeb5 voice: splash_progress
Says "Loading x%" in previously unvoiced splash_progress

Change-Id: I81780e3baf6ea8a8871a4433e1a733100b8cd5f6
2025-06-02 00:03:42 +02:00
Solomon Peachy
a001d76afe More translation updates
* Moldavian: Mihai Alexandru Vasiliu
 * Romanian:  Mihai Alexandru Vasiliu
 * Slovak: Matej Golian

Change-Id: I63585940fc1b517c3ad399db4d3afe1dc515745b
2025-06-01 15:09:05 -04:00
Roman Artiukhin
2334e08d72 Codecs: Fix stuck buffer when advance_buffer fails
Fixes FS#9186 (constant noise at the end of truncated flac file)

Change-Id: I516282e48cecb2be009b5779115395a50edb6fdc
2025-06-01 12:11:53 +03:00
Vencislav Atanasov
c464a81e00 iPod S5L87xx bootloader: Add code for dumping the boot flash to UART
Change-Id: I9513cac0a9463f033456fd7ba7c3db648edf691b
2025-05-31 11:49:51 -04:00
Vencislav Atanasov
6a626a2cae iPod S5L87xx bootloader: Implement the development menu as a list selector
This allows more than 5 items to be added, as every item was bound to a physical button.

Change-Id: Ib03ffe8e7c5f356e170a72bedf35f143051d1eaf
2025-05-31 11:49:51 -04:00
Solomon Peachy
bda1fc9003 Multiple translation updates:
- US English (myself)
 - Simplified Chinese (王吉)
 - Italian (Alessio Lenzi)
 - Korean (Hoseok Seo)
 - Latvian (Renalds Belaks)
 - Polish (Adam Rak)

Change-Id: I93b8650835c6f7209c0264ad039f7a6c329ce58a
2025-05-31 11:39:15 -04:00
Christian Soffke
8ba02932b3 voice: splashf 39f8685 add missing voice phrase
Two of the splashf messages that were converted
to support voicing in commit 39f8685 didn't have
a voice string yet. Translations tbd for:
* LANG_READ_FAILED
* LANG_FM_SCANNING

Change-Id: I73fc609348f319f84d1e94cc9673685c75958bbc
2025-05-30 08:30:58 -04:00
Christian Soffke
4346a1e8e7 playlist catalog: sort independently from file browser
Allow independent sorting of playlists in the
playlist catalog, using the context menu.

You may want to usually sort playlists by their date
(modified), but sort audio tracks alphabetically.
This is now possible without having to constantly
adjust a setting.

The fact that 'Sort Files' applied to both the file
browser and playlist catalog seems more like a side
effect of the implementation, rather than behavior
that is wanted. Additionally, the 'By Type' sorting
makes no sense when only a single type is displayed.

Since many of the other File View settings don't
apply to the playlist catalog, hide the menu there.

Change-Id: Ic35038015d0860998ae117f472ce23ce3bc80cfa
2025-05-30 08:30:47 -04:00
Christian Soffke
6e06319988 addendum to 498d581
two more that I missed

Change-Id: I48863fb870375328228d2c4caf1ea83931ccc218
2025-05-28 12:52:45 +02:00
Christian Soffke
498d581ca6 voice: fix regression 39f8685 (already voiced)
Some of the splashf messages that were converted
to support voicing in commit 39f8685 already had
a voice equivalent that was more appropriate,
since it also voiced parameters, and included
pauses between announcements where necessary.

Change-Id: Ia91a01c82acd6148afb4afadd64b1105802aea36
2025-05-28 11:18:29 +02:00
Christian Soffke
348054712d fix red f3d127f372
Change-Id: I62e7f16c49d8e6f7f8645e1f27ee4fa0cfecee66
2025-05-27 05:46:19 +02:00
Christian Soffke
f3d127f372 Minor confirm prompt adjustments
* Rename LANG_RESET_ASK to LANG_ARE_YOU_SURE,
  so that it matches the actual language string
  (translations remain valid), and can be repurposed
  for generic confirmation prompts, where the
  first line says "Are you sure?", and the second
  line reiterates the selected action

* Add "Reset Settings" as second line to the prompt
  shown before resetting settings, instead of just
  asking "Are you sure?"

* Make Shuffle prompt consistent between WPS and
  Playlist Viewer, and ask whether user is sure they
  want to Shuffle instead of warning them that the
  current playlist will be erased, which was a bit
  misleading

* Explicitly say "Cancelled" when user answers NO to
  erasing the current playlist or to overwriting a file.
  Improves consistency with other prompts that are
  displayed for potentially destructive actions, e.g.
  before items are deleted, renamed, saved, or reset.

* PictureFlow: Prompt before rebuilding/updating cache

Change-Id: Id8ae36db7187315eb1a374701307e6ab4dcdbd1d
2025-05-26 23:15:53 -04:00
Solomon Peachy
57f3f290c9 warble: Fix build in light of ci.strip_filesize
Change-Id: I8fb7b04c71f588258496cf353fb01df3b38da227
2025-05-26 11:51:26 -04:00
Roman Artiukhin
38105860dc Codecs: mp3: Move strip tags to codec
Another fix for FS#13626 (replacement for 2bd88936f7)

Change-Id: Ife5f65539457559fd908d0048d4df94649b0b894
2025-05-26 10:59:56 -04:00
Roman Artiukhin
78903e9d38 Reapply "buffering: remove bufgettail/bufcuttail"
This reverts commit 2bd88936f7. Strip tags functionlity will be moved to codec.

Change-Id: Iff28ff7a29da09632ceed30a7959cc1ee8bf3cc8
2025-05-26 10:59:56 -04:00
Christian Soffke
e7110c0beb macos: tools: configure: use GCC 15
Matches updated GCC Homebrew formula:
https://formulae.brew.sh/formula/gcc

Change-Id: I9b8e66a16ccfaf840fd50bbe313cae33e44d4f11
2025-05-25 14:46:16 -04:00
Solomon Peachy
efefe143bd ibasso: Fix a build warning that got lost
Change-Id: I51287f5cdd7f07d9407ed6aac949d4e389d6df0e
2025-05-25 11:02:27 -04:00
Solomon Peachy
adb49159ce winsim: Build fixes for current mingw64 cross compiles
Change-Id: I5d523a4aa0ca9044b8f83ae6aafd4f3705ff96d6
2025-05-25 07:56:05 -04:00
Christian Soffke
667d6c140b plugins: main_menu_config misc addendum 5efb6d7fac
handle USB or shutdown events, exit for ACTION_STD_MENU,
and eliminate unnecessary list redraws

Change-Id: Ieedf75805f3a859d1aeb85ef51253636d8870fb6
2025-05-24 02:57:37 +02:00
Solomon Peachy
33c74d948c convbdf: Replace magic number with #define shared with main code
Change-Id: Id46d5f2fe88fdaac94d00b1a4810ab161baad35b
2025-05-23 18:55:11 -04:00
Christian Soffke
5efb6d7fac Settings menu: add main menu customization
Lets you launch the main_menu_config plugin
from Settings, so that it remains accessible,
even after all other menu items have been
hidden.

Includes minor changes to the main menu config
plugin, so that it better fits in with the rest
of the settings menus:

* Keep theme enabled
* Autosave
* Add "On" or "Off" suffix to each item, to prevent
  confusion when Icon_Config is blank, as is the case
  with certain iconsets
* Update current selection after swapping items
* Prefix spoken selection with row number for enhanced
  clarity when swapping items
* Change title to LANG_MAIN_MENU
* ACTION_STD_OK to toggle an item's visibility
* ACTION_STD_CONTEXT to access options for reordering
  menu items, or for reverting to the default menu
* Ask for confirmation before reverting

Change-Id: I74240b94243224c76e23ef8f3a0559bd8ba28df0
2025-05-23 14:28:29 -04:00
Vencislav Atanasov
dbeefebcad Change playername.txt default value
Replaces the "Rockbox!" string in playername.txt with the player's model name, in case the file does not exist at boot.

Change-Id: I458b6b89d0d998d8cf889d01122b01cee42b21c5
2025-05-23 11:45:41 -04:00
Roman Artiukhin
9e95b337cc Codecs: mp3: Skip attempts to recover from buffer errors when the stream has ended
Change-Id: I81a636b48ea1e55de1dc8911a20d84f0f73c43ad
2025-05-23 11:35:47 -04:00
Solomon Peachy
2f6ecaf3c2 convttf: Switch to c99 fixed size integers for fnt file header
Change-Id: Idff55a88a9bddaec42e568cf3c3ff3f6df15ec34
2025-05-23 09:01:56 -04:00
Solomon Peachy
adaae1731f tools: Switch CFLAGS to -Os -Wall -Wextra
(From -Og -W -Wall -pendantic)

Change-Id: If094a22e7c7cd4fb175909fd12b9d8de514f1f38
2025-05-23 09:01:56 -04:00
Christian Soffke
83a8fc4c7e voice: output_dyn_value: fix scale
regression introduced in 15e5237

Change-Id: Ib107be08d2712b9c74e2795180ac8565c146af0b
2025-05-22 19:41:46 -04:00
Vencislav Atanasov
614c6e9500 Remove flashing text with the player name from the Next track label in WPS
Currently, in Cabbie v2 there is a demonstration of the %ft() tag, which shows the player name (or Rockbox! if not configured) for a second between switching tracks, or every 5 minutes of playback. This is confusing for a couple of users (including me), does not bring any useful information, and is removed from the theme. The tag and its documentation are left intact, so theme developers can make use of it in their themes.

Change-Id: Id3c79f442e4836a78d24997bd66e01c08206dd18
2025-05-23 01:38:50 +03:00
Solomon Peachy
08a6f804ce ibasso: Use correct API to query power input and charging state
Instead of using the generic hosted sysfs code, which expects
a full path, the ibasso code's sysfs code uses an enumeration.
Unfortunatley the generic power input/charging code used the former
API but linked with the latter.  oops.

Correct this by placing a private copy of these functions in
the ibasso-specific port, and removing the generic version from
that build.

(A "proper" fix would be to rework all 17 of the ibasso sysfs calls
 to use the generic sysfs API)

Change-Id: Ic13adc9782d85560f0c74d77f60a629619d38668
2025-05-22 07:15:15 -04:00
Solomon Peachy
2bd88936f7 Revert "buffering: remove bufgettail/bufcuttail"
This reverts commit 9e93796407.

Fixes FS#13626, which is caused by non-audio ID3v1/APE tags at
the end of the audio data stream.

Change-Id: Ic69af14a5d1264b7896a54b5f2ad314022dd98ac
2025-05-20 07:51:48 -04:00
Roman Artiukhin
3cb4e63253 strnatcmp: Sort dots first
Moves special folders (like .rockbox) on top and makes filenames sorting look more consistent with folders sorting. See https://forums.rockbox.org/index.php/topic,55303

Change-Id: I6ffd9b3ea0acfcbab69f09415f4e9f53737e7769
2025-05-18 22:50:05 -04:00
Roman Artiukhin
e08b8fcc74 strcasecmp: Optimize size and speed
Applies changes similar to strncasecmp in 64c0cfb0.

Change-Id: I5f80b0031dd12c58d982578f5c5224c7f59cd915
2025-05-18 16:57:35 -04:00
Solomon Peachy
3e92a11618 FS#13625: Disabling voice menus didn't entirely silence playing_time plugin
Change-Id: Id8b472fdfc51d837810fb36bce815d4a7b67b712
2025-05-18 16:08:33 -04:00
Solomon Peachy
afcebf1b48 Fix sea of errors introduced in cde144233b
I swear I compiled this successfully; clearly I had not.

Change-Id: Id604abeeeb895aa9c61acaad261b7190f0140089
2025-05-17 18:40:47 -04:00
Solomon Peachy
39f86858c4 voice: Convert a pile of splashf() messages to be voiced
Basically, this just replaces str(STRID) with ID2P(STRID).

The voiced version of these strings cannot not have any format
specifiers (enforced by the language tooling) and are instead more
generic.

As many of these are error conditions, it is doubly important for
them to be voiced in some way.

There are some places in the code that perform their own voicing
for splash messages (eg the shutdown code); those are left alone.

Change-Id: I7d51af351e8fa5c4beee42fbfc02719f1d6591b8
2025-05-17 17:33:46 -04:00
Solomon Peachy
cde144233b misc: Suppress -Wformat-security when building with GCC7
Making splash -> splashf means its arguments are now checked
at compile time, but the "format" is nearly
always one of our virtual pointers instead of a string/format
literal.

Our gcc494 (and upcoming gcc950) toolchains handle this fine,
but simulator builds with gcc7 complain about this, so suppress
the warning for those environments.

(GCC 12, GCC 14, and GCC15 all seem to be okay with this too)

Change-Id: Ifaf061f14e2552db73a7515f61950ad83116e8b5
2025-05-17 17:30:09 -04:00
Solomon Peachy
622ff574e7 splash: splashf() should be voiced if given an IDPTR
Most calls to splashf() use str(IDNUM), those can be safely
moved to ID2P(IDNUM) now.  Those will follow.

This change effectively makes splash() a simple wrapper around
splashf() so just make it into a #define instead..

Change-Id: I820e74e34cb4be3f523b25ce3f5dcc341bdba3e4
2025-05-17 16:13:58 -04:00
Solomon Peachy
4ab056ab15 database: Respect global "talk menu" setting in the database tree
Should fix FS#13625

Change-Id: Ibc6210be45941b2074da1e5c11536bcd31b5ac8f
2025-05-17 08:27:33 -04:00
Solomon Peachy
944026f2b7 rbutil: Correct typos in the language names
Change-Id: Ib6f66d528a03e64255407fb4bba4aca4fde1ee8b
2025-05-11 09:38:51 -04:00
Solomon Peachy
1d7e9d4910 rbutil: Show language names in their native script
Change-Id: I02a9a05dc3cfe2484285868e1ead6c44d0e2989a
2025-05-09 11:36:12 -04:00
William Wilgus
92b786a0fd Don't turn off backlight while buttons are pressed FS#13391
while scrolling lists or seeking in a song with several second
backlight timeouts the screen turns off even though you are currently
pressing a button

Try #2 moves the logic to button_tick()

Change-Id: I32455eb578cc578b4cbd4b4dc16325970cf9dc29
2025-05-09 11:18:38 -04:00
Solomon Peachy
077f44ca41 rbutil: Pull voice-corrections.txt out of voicestrings.zip
If the corrections file is not present on the target, then
fall back to the (probably outdated) compile-time builtin version.

Change-Id: I9904b81b2f3737149fc8a905ecd03ff54782bbdf
2025-05-09 09:26:14 -04:00
Solomon Peachy
bb20b5c6bf rbutil: Don't stub out PlayerBuildInfo in tests
Change-Id: I75667bc291828c1d4c548ab8f92c43a7a7fb892e
2025-05-09 08:38:24 -04:00
Solomon Peachy
22d72bf369 rbutilqt: Add missing 'Q_OBJECT' macros to three classes
Change-Id: I0999c286facc06039a456243f6f0525f939e97d6
2025-05-09 07:51:16 -04:00
Solomon Peachy
35ca67534c lang: More title case corrections to English
* 'As' -> 'as'
 * 'In' -> 'in'
 * 'On' -> 'on'
 * 'Of' -> 'of'
 * 'And' -> 'and'

Change-Id: Ia5c57463441b183228b4872c658897f3199a76f9
2025-05-08 21:19:41 -04:00
Solomon Peachy
70b6a08be5 lang: Update the documentation in the "master" english.lang
Also improve the documentation in voice-corrections.txt

Change-Id: I81cdd8b3aac71d849e8ce54211ee1fdff1d19f5b
2025-05-08 21:19:34 -04:00
Solomon Peachy
c63b82a895 debug: Report if double-buffered fb is enabled
(Only applies to hosted targets if FB_DOUBLEBUF is enabled)

Change-Id: I6ef3ead5f6ef12b26e3dd0d07ac582cff98deaed
2025-05-08 12:35:03 -04:00
Solomon Peachy
89ea2eafb5 surfansf28: Get rid of the redundant debug code.
Change-Id: Iabfea333fc8598e3b7518bd2502759864b1982e8
2025-05-08 12:27:48 -04:00
Solomon Peachy
9502d8879e FS#13619: Updated Polish translation (Adam Rak)
Just one minor correction

Change-Id: I1e21a3c312320df59966f8385018b2c44aa705a2
2025-05-07 22:05:17 -04:00
Solomon Peachy
08eb6179a6 lang: Fix incorrect capitalization of some English strings:
* Automatic resume -> Automatic Resume
 * Set Wps Context Plugin -> Set WPS Context Plugin
 * Voice prompt volume -> Voice Prompt/Volume

Additionally, 'Wps' is corrected to 'WPS' in all translations.

Change-Id: I0305c6ab2ef09c11cd2ab26d6fde266c8a9c44a3
2025-05-07 21:53:28 -04:00
Solomon Peachy
950909fd5a build: Further simplification of checkwps build.
Change-Id: Ic6436ba744457d92606eaf24d6449f8c7009ba0f
2025-05-06 14:27:04 -04:00
Solomon Peachy
862243df21 checkwps: Fix failure to build due to genlang changes
Change-Id: I69ecce18f199822bf076075a1963960b9dd89ef7
2025-05-06 14:23:57 -04:00
Solomon Peachy
cd3207064e lang: Remove all deprecated strings from master language file
Previous fixes to genlang resulted in language files no longer being
backwards compatibile with 4.0 binaries.  So let's take advantage of
this break and get rid of all no-longer-used strings

Change-Id: I6a7a90dd7a20322f59fe0f3b40bc9a55b5954c8d
2025-05-06 13:56:06 -04:00
Solomon Peachy
5d5698a616 genlang: Fix inconsistent rules when enumerating strings
* 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
2025-05-06 13:53:20 -04:00
Solomon Peachy
0ebfab36ba surfansf28: More fixes:
* Use 16-bit audio output
 * More audio tweaks (mute on startup, working volume control)
 * Treat the rotary input as a scroll wheel (works now)

To-dos:

 * Better global keymap (incorporate touchscreen)
 * Turn on plugins and define the approximately eight bajillion keymaps
 * Still have some audible pops when we turn on, need to figure out why
 * Default Cabbiev2 comes off as rather crappy on this device

...I don't know how much work I will do on this thing, as the limited
number of physical controls (and a lack of a line-out) mean I'd never
want to use this thing myself.

Change-Id: I37229d92766495219ee989d9ae48b5ed79bd45f5
2025-05-06 09:56:03 -04:00
Solomon Peachy
9b39c96ac7 input: Correct screen swapping input remapping with touchscreens
The virtual keypad uses BUTTON_MIDLEFT/MIDRIGHT not LEFT/RIGHT

Change-Id: I5f02c1e5b8c22403d3ff243568e562de834cd0a9
2025-05-06 09:30:51 -04:00
Solomon Peachy
5e8a73a817 surfansf28: Fix the default cabbiev2 WPS
Change-Id: I9231b85a127885402d1884375ab08db72ee266f8
2025-05-05 20:51:55 -04:00
Solomon Peachy
95f970076e surfansf28: Major improvements:
* Add a crude keymap
 * Use native "hardware mute" for audiohw_mute()
 * Properly handle touchscreen inputs
 * Can now play back music, with some warts..

Broken:

 * rotary wheel still doesn't work
 * audio garbled/distorted a bit
 * no volume control

Change-Id: I040217035a7bf3983b0e269fca3408eedd972cd0
2025-05-05 20:38:18 -04:00
Solomon Peachy
3a0d490713 hosted: improvements in devinput touchscreen handling
Some screens (eg Surfans F28) only report absolute positioning
via "EV_ABS" events, and the actual "touch on, touch off" happens
via a separate "EV_KEY" event.  So handle this.

This also fixes a nasty bug introduced in 3270daf2c4.

Change-Id: If73d390679ba6ffe37541442f631c03b73774fbb
2025-05-05 20:34:28 -04:00
Solomon Peachy
18f93ec46a FS#13621: Updated Romanian and Moldavian translations (Mihai Alexandru Vasiliu)
Change-Id: I6ce1f7987818c67e9cb4fd992f60938d295af677
2025-05-05 09:20:51 -04:00
Solomon Peachy
7feae37344 FS#13620: Updated Serbian translation (Ivan Pešić)
Change-Id: I3a68bafaf1edc047681304e30dcc1e8e2796ba9d
2025-05-05 09:19:47 -04:00
Solomon Peachy
51d8d452cb erosq: Don't require a long-press to cancel in time setting context
Change-Id: I108a7d795d03f44907f334fc12d38d11476e4b6f
2025-05-05 09:16:01 -04:00
Solomon Peachy
859984bd8c Fix red in 82f3d0c18f, accidentaly commited it.
Change-Id: Ie801992589ea278e3c2864d9bb335aeff549debc
2025-05-04 18:57:31 -04:00
Solomon Peachy
82f3d0c18f WIP hosted port to the Surfans F28
* Only bootloader builds
 * Plugins disabled
 * No keymaps to anything else
 * No simulator
 * Touchscreen not wired up yet
 * Audio still untested

Bugs:

 * rotary encoder does nothing in bootloader
   (might be bootloader bug, might be something else)

Other stuff pulled in:

 * Unify all of the (identical!) hibyos makefiles
 * Rename the "bootloader" to more generic name

Change-Id: I6d8a3b58de726db8e89cf193c90960a070a575c2
2025-05-04 18:34:22 -04:00
Solomon Peachy
3270daf2c4 hosted: Have common /dev/input code handle touchscreens.
With this we should be able to consolidate some of the hosted
variations.

Change-Id: Ie03631b4e700e3a0adcdc1b8476237384f0ace1a
2025-05-04 18:34:22 -04:00
Solomon Peachy
f38109f8ed lang: Better handle duplicate translation target matches
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
2025-05-04 18:34:22 -04:00
Solomon Peachy
c08bbaac49 Revert "lang: Complain if there are multiple target matches for a given string"
This reverts commit a88ef80560.
2025-05-04 09:21:18 -04:00
Solomon Peachy
a88ef80560 lang: Complain if there are multiple target matches for a given string
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
2025-05-04 08:53:22 -04:00
Solomon Peachy
336d42c72b FS#13618: Updated German translation (Yannic Schmidt)
Change-Id: Ic3585574ebfd4a5757c326da174ca6376d8b0e30
2025-05-04 07:14:05 -04:00
Solomon Peachy
82f602ae1d FS#13617: Updated German translation (Yannic Schmidt)
Change-Id: I64af8075cddc15df05cf8ee794467b71fec25ef3
2025-05-03 23:03:49 -04:00
Solomon Peachy
7c813a79d0 builds: Use consistent formatting for language codes in voice list.
...strictly speaking, what we use isn't correct (eg we should use es_MX
instead of es-mx) but the latter is clearer on the download page.

Change-Id: Ia1a21c4259826ca2a0f6755df1cb3db94e4a50b3
2025-05-03 11:15:12 -04:00
Solomon Peachy
61dc053ce1 voice: Enable Moldavian voice in the nightlies
Change-Id: I253434727af43645f7076be5c377ae0b5154bc56
2025-05-02 20:33:58 -04:00
Solomon Peachy
3ac252b840 FS#13614: Add Moldavian (ro_MD) language (Mihai Alexandru Vasiliu)
TTS is set up to use ro_RO, but is not enabled yet.

Change-Id: Id71e1453e58b03e0a4205f459de87a79ff11a10e
2025-05-02 16:51:23 -04:00
Solomon Peachy
6acbf74d7f Add support for double buffering to hosted framebuffer code
Requires kernel-level support to work.  No in-tree users yet

Change-Id: Iec7e22971aa24fc7a26996a3d507143955c0ab5c
2025-05-02 13:48:31 -04:00
Solomon Peachy
1f43b14127 linux-fbdev: Don't overrun the framebuffer when it's larger than expected
We expect a fixed FRAMEBUFFER_SIZE that's width*height*bitdepth, and we
mmap()ed that in.  However, when doing the initial fb clear, we
were using the hardware-provided 'finfo.smem_len' which could be
larger than FRAMEBUFFER_SIZE.  This overran our mmap and triggered
a segfault.

Correct this by mmaping (and clearing) the entire smem_len.  As a safety
measure, panic if smem_len is smaller than our expected FRAMEBUFFER_SIZE

Change-Id: I3222139c7aed6e8e8ee232b1730edd5cd70065ff
2025-05-02 11:42:31 -04:00
Solomon Peachy
5f48d44acf FS#13613: Updated Romanian translation (Mihai Alexandru Vasiliu)
Should bring us to 100% coverage!

Change-Id: I5e74d59112e47e48da29e37f9a80ca471d2cd6be
2025-05-02 09:02:37 -04:00
Solomon Peachy
400ae7cb22 disk: GPT lookup code now supports virtual logical sector sizes
GPT superblocks are located at sector 1 and max_sector-1. If the system
uses a "virtual" sector that's larger than the drive's logical sector,
we need to map those virtual sector numbers to the drive's logical
sector.

If DEFAULT_VIRT_SECTOR_SIZE is defined, try that multiplier as well
as the standard multiplier of 1.

It's not practical to try every intermediate value so instead, if
DEFAULT_VIRT_SECTOR_SIZE is defined, try that as well as the standard
multiplier of 1.

This still leaves a handful of targets that don't set DEFAULT_VIRT
but do set MAX_VIRT.

Change-Id: I3accffcb97436b043836e072bfc620318a9b1230
2025-04-30 22:02:48 -04:00
Solomon Peachy
64de7aa8d2 disk: If primary GPT header is missing, try secondary one
Basically the GPT is supposed to live at sector 1, but a backup copy is
stored on the final sector.

This gives us a little bit of extra flexibility on systems that might
require sector 1 for other things, but in any case it's a more robust
arrangement.

Change-Id: I8925ffc743629cf2eba51861042492e35b41664b
2025-04-30 19:21:54 -04:00
Solomon Peachy
6a8f1a7e84 pp5002: Fix warning in the USB detection code
A function that returned bool was an alias for a function that returned
an int. While that original function was limited to returning either 0
or 1, this aliasing is technially a no-no.  So create a small shim to
make the warning go away.

Change-Id: I4d7807730234928bd59d75f13a4e4adeabbf655e
2025-04-30 07:22:38 -04:00
Solomon Peachy
69c0c3f207 languages: Correct Latvian time reporting
12b9419006 stripped out leading/trailing whitespace, but the Latvian
translation used a blank string for VOICE_OH which got wiped out.

This string is only used when voicing the time, eg: 12:05 is spoken in
English as "twelve oh five".  Doing a little digging into Latvian, it
seems that for 24 hour clocks it would be voiced as "<twelve> nulle <five>"
instead, so I changed VOICE_OH to that.

Now for 12-hour clocks, it seems Latvian would voice "12:05" as "<five
past twelve>" but we don't currently have the ability to voice things
in this manner.  Will be addressed in a future patch.

Change-Id: I2c1bcd2e9caff508de3199da29c2e994e9d00c3c
2025-04-29 21:42:54 -04:00
Solomon Peachy
efdf78e976 rk27xx: fix red in bootloaders, introduced in c31518201c
Change-Id: I1396e16161df80757d9de6aee6cce6be9ba80c67
2025-04-29 20:56:19 -04:00
Solomon Peachy
e4a16c23ee misc: Fix two more -Wunused-const-variable warnings
Only exposed in bootloader builds

Change-Id: Iee277112c027b28eccd0432c8b231a4084450dbe
2025-04-29 20:56:19 -04:00
Solomon Peachy
6ae4933d6e gitignore: Add the output directory of the release scripts
Change-Id: Ifd43889c442b97814f77412b42ce56e7fe570168
2025-04-29 20:20:16 -04:00
Solomon Peachy
c31518201c disk: In "superfloppy" mode, create a fake partition entry
We normally create a table of the partition sizes/types present
on a drive.  Howeever, if the drive is set up as a "superfloppy",
where there is no partition table and a single filesystem starting
at sector 0, this "pinfo" table is not populated.

So now, populate the pinfo table with a single entry that matches
the filesystem type, start, and size.

Change-Id: Ifa8760909109d67ff96481b1fc7f26c64280a00a
2025-04-29 20:20:16 -04:00
Solomon Peachy
12b9419006 Some fixes for language and voice scripts:
Languages:
  * Get rid of leading space on LANG_ID3_VBR [ " (VBR)" ]
  * Fix up sole user to insert the space programmically
 updatelang:
  * strip leading and trailing spaces on all phrases except VOICE_PAUSE
 voice.pl
  * Debug logging with UTF-8 output
  * Explicitly delete tab character from voiced strings

Change-Id: Ie466793479ce15ce7a9553770583a070530e7afd
2025-04-29 20:03:11 -04:00
Solomon Peachy
0ea02f0268 translations: Delete trailing spaces and tabs in Ukranian translation
Change-Id: If9a7ed7e002cef9012d5849e1ea972d5939e2040
2025-04-29 20:03:10 -04:00
Solomon Peachy
a3dfdb32f6 Revert "Toolchains: Update to GCC 9.5.0"
This reverts commit d87e9b99a6.

Reason for revert: Accidentally merged

Change-Id: Ib69e88cc93faa7d1a08c137977600d0659944128
2025-04-29 15:09:46 -04:00
Solomon Peachy
bbca8e3bd9 Another Ukrainian translation update (Pavlo Rudy)
This should bring coverage to a full 100%

Change-Id: Ief051d6e774e94b3dde5b07203a18e7a5ae97b21
2025-04-29 15:08:32 -04:00
Solomon Peachy
d87e9b99a6 Toolchains: Update to GCC 9.5.0
All toolchain dependencies are circa the GCC 9.5.0 release:

  GCC 9.5.0, binutils 2.38, gmp 6.2.1, mpfr 4.1.1, mpc 1.2.1, isl 0.18

Native:

 * arm - mini2g, nano2g seems to work
       - ipod6g boot hang on 9.5.0 (possibly leading to disk corruption)
 * mips - xduoox3 seems stable so far
 * m68k - binaries untested

Hosted:

 * arm - binaries untested
 * mips - erosq seems stable so far
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: I4ca00edd49e1936b32f68f1e7b34df38e1d1d76e
2025-04-29 14:56:12 -04:00
Solomon Peachy
e72c42df20 voice: Add the bits needed to voice Ukrainian, and enable it by default
Change-Id: I002fd5022539db6f8e4270c24e0112e151f7e516
2025-04-29 14:33:35 -04:00
Solomon Peachy
232e5b4daf FS#13611: Major update to Ukranian translation (Pavlo Rudy)
Change-Id: I8aca68a151451f710a0069d8a5e1325a21ce901d
2025-04-29 14:26:34 -04:00
Solomon Peachy
6b063acaae toolchains: Ensure toolchain builds with C23 compilers
* binutils (mips) uses its own 'static_assert'
 * linux (mips) uses constexpr when generating headers

With these patches, all toolchains build successfully under GCC15

(These patches are still needed with the pending GCC9.5 bump)

Change-Id: Id2f8cca414d2907b6aa29612ae4fb0e8b5f79f79
2025-04-28 15:17:30 -04:00
Solomon Peachy
9159fc0159 builds: Enable nightly Romanian voice generation.
Change-Id: I1bb84d1c9e68158ea240be37f65721857e5181c2
2025-04-28 10:52:11 -04:00
Solomon Peachy
20512b03a9 FS#13610: Updated Romanian translation (Mihai Alexandru Vasiliu)
Change-Id: Ib39f0a7ad8a8790e1a93563a087df0e58fa4afdc
2025-04-28 10:27:09 -04:00
Solomon Peachy
fb2f56f8a6 hibyos: "run script" now invokes "/bin/sh" instead of "sh"
Change-Id: I409b8deaf7150abb0c00204e596bf8906b3fdc46
2025-04-26 09:57:59 -04:00
Solomon Peachy
310e380056 voice: Add the bits necessary to generate Romanian voices.
Due to the coverage being below 85%, disabled for nightlies

Change-Id: I90641f472e5a5cbca147986501236bd1b2ca8a5b
2025-04-25 20:47:27 -04:00
Solomon Peachy
d3e0f44f3b builds: Correct short language ID for Swedish (sr->sv)
Change-Id: Ia0d4abe8a0c893518b913de9ee1d0680a3ebb828
2025-04-25 07:04:46 -04:00
Solomon Peachy
2d820bfc7d lang: Correct clock set/revert text for erosq.
All translations with at least 80% coverage are upated.

Most of these also got a few mechanical corrections as well.

Change-Id: Id4cf5e6c066cb7cd0a73bcd5ad68135c9aeb3294
2025-04-24 22:01:49 -04:00
Solomon Peachy
de74b8738b nano4g: Make real bootloader fit in limited IRAM
...Trim support for alpha-blended bitmaps and stack trace.

Change-Id: I2d10af6c8bcb261cdbfb3f17ed81b6ee9bb0cc4b
2025-04-24 20:35:27 -04:00
Solomon Peachy
2dd422ffcf FS#13609: Updated Swedish Translation (Wilton Millfjord)
Change-Id: If7df3c6c57ee09e80ac74bcf79081e38494acd3d
2025-04-24 16:19:19 -04:00
Solomon Peachy
8f41516e96 lang: Fix a typo in the Swedish translation
Change-Id: I3bba6ef52a35d9cd9fda8fe94e437b5e691627e0
2025-04-24 16:16:49 -04:00
Solomon Peachy
dd53e99870 FS#13608: Updated Swedish Translation (Wilton Millfjord)
Change-Id: I73e4692375166c55c5171de491895bb3fd8bc3e9
2025-04-24 14:52:43 -04:00
Solomon Peachy
17c7357efe builds: Enable nightly Swedish voice
Via Piper's sv_SE-nst-medium

Change-Id: Idffbfdb0931085ce5d0015ed181fa92d66d06a51
2025-04-24 12:27:45 -04:00
Solomon Peachy
299d255743 FS#13607: Updated Swedish Translation (Wilton Millfjord)
Change-Id: Id780d45ec2057d46f53278be4a4f6460746b411c
2025-04-24 11:23:51 -04:00
Solomon Peachy
1eb06ea0d2 FS#13606: Updated Swedish Translation (Wilton Millfjord)
Change-Id: I96e143d935330a44335b98c5d0c0aeeeb7719169
2025-04-24 11:03:52 -04:00
Solomon Peachy
0771d38c1e FS#13605: Updated Romanian translation (Mihai Alexandru Vasiliu)
Change-Id: I0af77ebe5aaff50961ad14cfc4d5ce70209e07a3
2025-04-24 11:02:19 -04:00
Solomon Peachy
27ad208024 FS#13604: Updated Swedish Translation (wilton millfjord)
Change-Id: I9a5e5b83501b25488033b6edaf31e7c4254e4692
2025-04-23 15:02:31 -04:00
Solomon Peachy
28a3ac6b30 FS#13603: Updated Spanish Translation (Guillermo Garcia Rojas)
Change-Id: I06539c94e216da3bf5bf79248c07dace2dce2791
2025-04-23 13:50:48 -04:00
Solomon Peachy
5b1158e64a misc: Properly annotate some intentional case fallthroughs
Change-Id: Ie758f17fefac72aca1aa28a8ba1126b9334fe134
2025-04-22 20:54:37 -04:00
Aidan MacDonald
83950bf233 New WIP port: Echo R1
The Echo R1 is a new open-hardware music player design, based
on the STM32H743 microcontroller. Schematics and hardware
documentation for it can be found here:

- https://github.com/amachronic/echoplayer

This is an incomplete port. The bootloader can be loaded using
OpenOCD and it can draw to the LCD using SPI. SDRAM is working
but hasn't been extensively tested.

Change-Id: Ifd2bee15c49868fbc989683d3ca14dce48bf3e18
2025-04-22 20:08:08 -04:00
Paul Sauro
abae4660e2 fr translation: 100% coverage
Change-Id: I7b45562f98257139b8c611ed42b52de664bd22f8
2025-04-22 13:10:53 -04:00
Solomon Peachy
fb096e64b4 misc: Re-enable the -Wtautological-compare warning (GCC>=6)
Every globally surpressed warning potentially hides real bugs.  Let's
fix up the false positives.

Change-Id: I8f4ed43fac4c2496f7fcfafa1cb33633dcc7a9be
2025-04-22 12:48:36 -04:00
Aidan MacDonald
71d3bd2091 erosqnative: use same target ID for hw3/hw4 bootloaders
The bootloaders for version 3 and 4 hardware used separate target
IDs which now overlap with the Nano 3G / Nano 4G ports. It likely
makes sense for all the ErosQ native builds to share the same ID.

Change-Id: I40d166758744e8ba25931e568da11f374b2d7b90
2025-04-22 10:48:13 -04:00
Solomon Peachy
4096669eb5 dsp: Partial revert of previous commit, just disable warning
The "fix" produces different asm and I don't have the bandwidth
to determine if it's functionally equivalent.

Change-Id: I822557d1244f8e8a05e7ebfc45da2643152345a4
2025-04-22 10:23:14 -04:00
Solomon Peachy
865de6b907 dsp: Another warning fix in the compressor.
Change-Id: Ie4266d4d71d7b8f2faae9c5f4924e0d07ceae4e6
2025-04-22 10:09:53 -04:00
Solomon Peachy
303f262acb dsp: Silence a warning in the compressor code
/* offset = -3db * (ratio - 1) / ratio */
    db_curve[2].offset = (int32_t)((long long)(-3 << 16)
        * (ratio - 1) / ratio);

Results in a warning: left shift of negative value [-Wshift-negative-value]

To fix this, replace the '-3' with -3UL.

(As that is effectively what is already happening)

Change-Id: I5aa269ff332703d3c2d889fa032d2fdc403ff14f
2025-04-22 09:45:24 -04:00
Solomon Peachy
6f5760b41a jpeg: Silence -Wshift-negative-value warnings
These are all from upstream code, so just force-ignore the warnings

Change-Id: I9936e1cb79636b0bfee5dd4db0c98a06792d2f69
2025-04-22 09:43:40 -04:00
Solomon Peachy
9e52dcc7e7 iriverify: Fix a build warning
Change-Id: I12a50a8e71c50c232dad89342f59f5afe8d0aace
2025-04-22 09:34:30 -04:00
Solomon Peachy
8f3b8390d1 codecs: hopefully silence a -Wshift-negative warning in the metadata code
Change-Id: I023499e098bbc706c2f677a7f7a156ec58bd5b14
2025-04-22 09:00:21 -04:00
Solomon Peachy
bcf925a35f codecs: Silence two sets of warnings in musepak and wma codecs
The warnings triggered by -Wshift-negative-value are in the
upstream code, and presumably "correct"

Change-Id: I1cf20e12208f493c69e0852477d800cd417a67c6
2025-04-22 08:55:37 -04:00
Solomon Peachy
3975584497 mikmod: We don't need its custom 'strdup()' function
Fixes a warning with newer GCCs

Change-Id: I9ccf7bf77a40a0ad79122e9cf4a5e8e6859cfcfa
2025-04-22 08:54:19 -04:00
Solomon Peachy
4cac35b603 misc: re-enable -Wshift-negative-value and -Wnonnull-compare (GCC6+)
Change-Id: I37c98da8d42fb6825b43006a549980b59d179698
2025-04-22 07:50:11 -04:00
Solomon Peachy
6d24ff3257 h1x0/h3x0: Fix missing TIME context in remote button map
It was actually defined but not actually mapped in.

Also shut up a warning in the peakmeter code when not using a color
display.

Both caught by -Wunused-const-variable

Change-Id: Ie2403c0cd77e6fdf3468fd45115a1e0f228238e8
2025-04-22 07:40:27 -04:00
Solomon Peachy
3b974e791a misc: Fix more build warnings uncovered with GCC15 and -Wunused-const-variable
Change-Id: I43f5d03d8496b2ac8b30df30b14d1c6e816ef0e2
2025-04-21 21:55:03 -04:00
Solomon Peachy
9d4632b0c3 misc: Clean up a pile of -Wunused-const-variable warnings
And re-enable the warning (applies to GCC 6+)

Change-Id: I7aa679ec65707db12de83c0433966b3821d07087
2025-04-21 21:13:59 -04:00
Solomon Peachy
c7eda36341 misc: Clean up a large pile of -Wexpansion-to-defined warnings
And re-enable the warning (applies with GCC 7+)

Change-Id: I406ce796ebd06bad53cab911e17a28265a79b420
2025-04-21 21:04:05 -04:00
Aidan MacDonald
6fc87143df stm32: add sample files for OpenOCD and GDB usage
Change-Id: I674ebab9c25a8dcd69bcebf665dc8d749c380b42
2025-04-21 18:15:15 -04:00
Solomon Peachy
0d8f99e78c Fix red in 180753ce0a
Change-Id: Ie324d923a322bb8fbf429498ad653d4e83b6f97d
2025-04-21 16:59:10 -04:00
Solomon Peachy
180753ce0a misc: Correct various -Wunterminated-string-initialization warnings
-Wunterminates-string-initialization will complain if we try to shove
a "string" into a fixed array that is too small.  Sometimes this is
intentional; when you are merely using "string" as a standin for
"non-terminated sequence of bytes".  In these cases we need to mark
the "string" as "not actually a string" with an attribute.  Applies to
GCC >=8, but this warning isn't pulled in by -Wextra until GCC >= 15.

Change-Id: Ib94410a22f4587940b16cf03d539fbadc3373686
2025-04-21 16:39:00 -04:00
Solomon Peachy
c65050571e docs: Do a proper "merge" with the API docs
This keeps all the old descriptions etc that were there before.

Had to fix up the tools some more, honestly feels better to just
rewrite this crap in perl.

Change-Id: Ic15deae200c143ba5457423e12c81f871c0fef09
2025-04-21 15:59:00 -04:00
Aidan MacDonald
bf689e9b5d stm32h743: add intitial register definitions
Change-Id: I0c9f94103eedb333b2167a8ef49568c8e50c2218
2025-04-21 14:15:31 -04:00
Aidan MacDonald
d68efd3363 arm: add NVIC utility functions
Change-Id: I85567251fb00dec0f38be2a63261ad5509f4ec4f
2025-04-21 13:07:38 -04:00
Aidan MacDonald
d14ddcafd5 arm: implement cache maintenance ops for ARMv7-M
To keep the code size small, this hardcodes the D-Cache line
size and set/way information (which is defined by the target
and should be fixed for a given CPU) and assumes there is only
one level of cache.

Change-Id: Ia6d0e6a87b5dbfc6c39bda83b58461ed8767edf6
2025-04-21 13:07:38 -04:00
Aidan MacDonald
4d3190f416 arm: split ARM cache maintenance functions to separate header
Cortex-M processors don't have an MMU, but can still have caches
that need software management, so on those platforms we don't want
to include the MMU related functions.

While here, remove an outdated section of a comment referring to
deprecated cache maintenance functions which no longer exist.

Change-Id: I6f0fe694560bdee25ed7c69a846bf46e3e544cb1
2025-04-21 12:39:47 -04:00
Aidan MacDonald
bfa76dca9a arm: add ARM Cortex-M register definitions
Change-Id: Ifb90606d2b6c94c4f91798a41415c895e2888520
2025-04-20 20:19:10 -04:00
Solomon Peachy
96f5cb728c docs: Update the Plugin API document, which was _very_ out of date
Change-Id: I2490e86e6cc4d949eca0298498d384c3dba733f4
2025-04-20 17:07:40 -04:00
Solomon Peachy
6d656814dd api: Fix some basic syntax problems with the plugin API generator
Change-Id: I9e6afa5b75e7fb803ee4c29f8306b56d7f8d7f64
2025-04-20 17:07:40 -04:00
Solomon Peachy
3383060990 docs: Delete some _very_ obsolete documentation
Change-Id: I9c04c8eed8d7400d9d16f80c7dab1d6c8c42674f
2025-04-20 16:53:57 -04:00
Aidan MacDonald
89a9b5cf39 reggen-ng: add support for floating instances and nochild flag
Change-Id: I790149587b622f95f575964cd29caab4a0cff6d4
2025-04-20 16:28:07 -04:00
Solomon Peachy
bcee6318f0 headergen_v2: Add additional generator types to help output
Change-Id: I070c9554958c45e78462b8515cdce56fcee1a5ed
2025-04-20 16:26:50 -04:00
Aidan MacDonald
ecfc62cda6 headergen_v2: add ST generator for STM32 family
Change-Id: Id8f06a6f77cc58d3f0f94b72108dc91ba8037813
2025-04-20 16:25:58 -04:00
Aidan MacDonald
2db0627d38 headergen_v2: add ARM Cortex-M generator
Change-Id: If9059b0964ce6f905aa230139eb78b800ff6a102
2025-04-20 16:25:58 -04:00
Aidan MacDonald
08f800d5b8 headergen_v2: only generate MT_REG_INDEX macro when needed
This is only needed if the generator sets has_sct() to true.

Change-Id: Ie7fcb6a1f0f9d27e9ef8a5558c12a66ab6da4394
2025-04-20 15:53:54 -04:00
Aidan MacDonald
af9156406d headergen_v2: only generate GET_VARIANT macro if needed
This is an internal macro which is only used if has_sct()
is set by the generator, so don't generate it if we don't
need to.

Change-Id: I7ad51ad34ecabd833b84a270b5046e77131dcb41
2025-04-20 15:53:54 -04:00
Aidan MacDonald
f50455f6a7 headergen_v2: increase macro argument limit to 20
When registers have lot of 1- and 2-bit fields it's possible
to exceed the 13 argument limit. Usually this only shows up
when programming a configuration register, but it's annoying
to have to split up the write. 20 arguments should be enough
to avoid that.

Change-Id: I6240fae4a51ae14600afcfb8a4e3f1e983cbffa6
2025-04-20 15:53:54 -04:00
Aidan MacDonald
cffd158ace headergen_v2: add helper macros for base+offset addressing
Add a relative version of the register/field read/write operations
which takes a base address (which may be a void pointer or integer)
and computes the register address using offsets.

Change-Id: I7c012192e67adcd675a0fc1975ca4b16ed87bcac
2025-04-20 15:53:54 -04:00
Aidan MacDonald
387f67cab6 headergen_v2: add floating instances and nochild flag
Floating instances don't have an address and will only generate
child nodes and registers with offsets. The 'nochild' flag will
disable generating the children for a node but will generate the
node's own address, which can be used to generate base addresses.

Change-Id: Ib1014de94531436d5708db46aa684741e7740ace
2025-04-20 15:53:54 -04:00
Aidan MacDonald
0f5c2877fe headergen_v2: generate register offsets and node addresses
Register offsets are defined as the address of the register minus
the address of the parent node. If enabled by the generator, these
will be emitted alongside defines for the node base addresses.

This allows the base address to be stored in a variable, and the
offset can be used to access registers relative to the base.

Change-Id: I15576aeb2945293a259007da7f00a26055f4d0f0
2025-04-20 15:53:54 -04:00
Solomon Peachy
81e050871b updatelang: Correct grammatical goofs in some of the errors
Change-Id: I3795d89e68453e636188b26a1620226a836c8a4d
2025-04-20 11:58:38 -04:00
Roman Artiukhin
17d73c968a Codecs: mp4: Fix possible glitch at the end of song
sample_to_chunk last value was ignored in some cases leading to invalid sample value in lookup_table.

Fixes FS#13600

Change-Id: I8f066966e15c384d3185f689b68a2cc2a3abad1d
2025-04-20 13:43:15 +03:00
Solomon Peachy
f563fe54c2 updatelang: Alter syntax for 'phrase missing entirely' errors
Instead of 'this phrase missing entirely [...]' followed by the
verbatim phrase copied from English, instead the message now
reads 'the 'PHRASE_ID' is missing entirely [...].  This allows
the warning to be self-contained.

Change-Id: I413c29e0c1f6616e74d875d197b34c4724330d67
2025-04-19 21:59:01 -04:00
Solomon Peachy
ceeca12f07 lang: Apply some mechanical corrections to Romanian and Korean
Change-Id: I01a2d4c2d4ee39e502913e58fc175ab5aaf8e9fd
2025-04-19 20:59:53 -04:00
Christian Soffke
ae54b06af4 playlist catalog: Hide Copy/Cut/Open With
It may make sense to only show these in the
file browser, where you'd expect to do more
general file operations involving other folders.

Change-Id: I008569d2017811ee54b4449acb30359843f35294
2025-04-19 20:59:16 -04:00
Solomon Peachy
b7b20c4a77 FS#13599: Updated Romanian translation (Mihai Alexandru Vasiliu)
Change-Id: Ia87c6a34c6776059e51c06f96708040914d3a97b
2025-04-19 17:43:14 -04:00
Aidan MacDonald
1aa9f26b02 arm: workaround to build Cortex-M7 targets with GCC 4.9
Cortex-M7 support was added in GCC 5, while GCC 4.9 only
supports the M4. The instruction set is almost identical
between both processors; the only difference is that the
M7 supports double-precision floating point and the M4
doesn't.

Since Rockbox currently doesn't use the FPU, building M7
targets as M4 works fine.

Change-Id: I5880d6e81a85fa9b3e16e08d57e7955b4493df0b
2025-04-19 13:16:36 -04:00
Aidan MacDonald
da4e02cdd3 codecs: disable incompatible ARM assembly for Cortex-M
Some assembly routines don't work on Thumb as-is. For now
just disable these so the codecs compile.

Affected codecs:

- libflac
- libmad
- libspeex
- libtta
- libwavpack

A few DSP routines need to be disabled for the same reason:

- crossfeed_process
- crossfeed_meier_process
- resample_hermite
- filter_process
- sample_output_stereo

Change-Id: I277e0719652096745a19a7e2b597eff32d8e1553
2025-04-19 13:00:17 -04:00
Aidan MacDonald
94c7c908b3 libmusepack: add ARMv7-M version of MPC_MULTIPLY_EX
We can't use Operand2 with register based shifts on ARMv7-M as it
isn't supported in the Thumb encoding. Instead, perform the shift
separately.

Change-Id: Ie96aa0a565e98bbca724dffc2ffc6d64fdb5d7c3
2025-04-19 12:26:47 -04:00
Aidan MacDonald
c249dea2b7 libsetjmp: fix unpredictable behavior warning on ARM Cortex-M
GAS warns about unpredictable behavior of "ldr sp, [a1], #4"
that exists on Cortex-M3 (errata 752419) but this warning is
incorrectly issued on other cores too (eg, Cortex-M7).

Since the fix is just one extra instruction we may as well
apply the workaround for all Cortex-M targets.

Change-Id: I0c2aa46837f776d67d0236b627af1572aa5ab307
2025-04-19 11:24:01 -04:00
Aidan MacDonald
6ea328f0f1 arm: add div0 handler for 64-bit division on ARMv7-M
Even though ARMv7-M has a hardware divider, 64-bit division is
handled in software and needs a div0 handler. The libgcc routines
call __aeabi_{i,l}div0 so we alias those to __div0.

Change-Id: I5152c43d39e25e03f31404753f13978a614aca06
2025-04-19 09:43:40 -04:00
Vencislav Atanasov
545506c923 New port: iPod Nano 4G
Currently, only the development bootloader can be built successfully.

This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.

Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I74ea0da999ddb1d8ce5d0f5434141b3f0b5f7448
2025-04-18 20:40:49 -04:00
Vencislav Atanasov
d6cd237f80 New port: iPod Nano 3G
Currently, only a bootloader can be built successfully. The development bootloader is functional, it enables further progress on the port.

This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.

Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Idf85e42334b0e0ae36f9ed273e2940d5d7736e34
2025-04-18 20:10:29 -04:00
Christian Soffke
96615af033 Shortcuts & QS: Fix tree sort settings not immediately applied
Change-Id: I51158f786ad7dae46ce6201826cb35958e8014ec
2025-04-18 20:00:42 -04:00
Solomon Peachy
d307568410 FS#13598: Updated Spanish translation (Guillermo Garcia Rojas)
Change-Id: Ida5f5319c0b9f37b04ac2d7be35186f798e3480a
2025-04-18 17:30:41 -04:00
Aidan MacDonald
3ed9fb3115 arm: add initial ARM Cortex-M support
M-profile cores manage interrupts differently from classic cores
and lack the FIQ. Split the interrupt management parts out into
separate headers but keep the endian swapping routines (which are
not profile-dependent) in the common system-arm header.

The initial part of the vector table is common to all Cortex-M
CPUs and is intended to be included by the target linker script,
with the vendor-specific part of the vector table appended to it.

Change-Id: Ib2ad5b9dc41db27940e39033cfef4308923db66d
2025-04-18 13:19:42 -04:00
Aidan MacDonald
96b6a7b4e4 arm: implement get_sp for Cortex-M
On Cortex-M we can just return SP directly, which will return
PSP/MSP depending on the current processor mode.

Note that unwarminder doesn't handle Cortex-M exception frames
yet, so a panic from an interrupt handler will currently stop
at the exception boundary.

Change-Id: I8818126c065c896d781bd52b877965a4094dee2a
2025-04-18 12:47:03 -04:00
Solomon Peachy
8d5fd1b20b manual: add 'manual-7zip' build target for 7zipped HTML manual.
7zip produces files nearly *half* the size of a zipped one.

Change-Id: Ic8bc4129dd4106a32060c98049061ea3848ebddc
2025-04-18 11:24:40 -04:00
Aidan MacDonald
c33aafcd5c arm: add ARMv7-M version of ARMv6 mixer code
GCC cannot compile the existing assembly here on ARMv7-M,
claiming impossible constraints. It is actually possible to
compile if the input arguments (addresses and sizes) are
first moved to a high register so as not to conflict with
the use of r0-r7 in ldm/stm -- this is exactly what GCC does
for ARMv6, but it won't do it on ARMv7-M for some reason.

We can get a result similar to the ARMv6 code by manually
moving the inputs into temporaries, but the generated code
is a actually a bit smaller on ARMv7-M if the r0-r7 block is
shifted up to r3-r10. This only works since ARMv7-M supports
the 32-bit Thumb encoding -- 16-bit Thumb can't represent an
ldm/stm instruction of this type.

It's worth #ifdef'ing the code because although the ARMv7-M
version works on ARMv6 too, it spills a lot of registers on
the stack even though register use is mostly similar.

Change-Id: I9bc8b5c76e198aecfd0a0e7a2158b1c00f82c4df
2025-04-18 10:57:45 -04:00
Vencislav Atanasov
a1bf19de36 Fix unused function warning
Change-Id: I6252a6db2a0f9cdd3d0c18262b5809856a5bd977
2025-04-18 10:57:04 -04:00
Aidan MacDonald
1c96d51717 arm: add ARMv7-M support for thread context switching
On ARMv7-M, stm/ldm instructions can't include SP, so we must
load and store that separately. This changes the order of
registers in the context struct, but it doesn't seem to be
accessed anywhere else so this shouldn't cause any problems.

Change-Id: Ie1cd23272f23384e030f51f0b76739624fa7332b
2025-04-18 10:55:32 -04:00
Aidan MacDonald
6712779ccb x1000: fix regression on Q1 with misaligned write pointer
Commit 1fb906500a ("x1000: LCD DMA fix") caused a regression
on the Q1 by breaking the LCD_X1000_DMA_WAIT_FOR_FRAME logic,
since the wrong branch of lcd_wait_frame() was taken.

Change-Id: Icb44335f506a1a691280de8219188526bb11468f
2025-04-18 10:49:27 -04:00
Aidan MacDonald
76c62dc429 x1000: remove bogus modes from lcd_dma_start()
These 'modes' don't do anything here except clutter the code.

Change-Id: I4e0eef39e0c3bac288c40d571ba855c9ffd7c1a1
2025-04-18 10:49:27 -04:00
Aidan MacDonald
b71337f1fd x1000: remove LCD fast sleep define
All the X1000 targets use "fast" sleep, as opposed to the normal
HAVE_LCD_SLEEP define which creates a user-configurable option.
Remove the ifdefs to make the code a bit easier to read.

Change-Id: Ibb80c92a8e23191651fee61fc8cf6f4e4fac8750
2025-04-18 10:35:49 -04:00
Vencislav Atanasov
7e2019fde9 iPod Nano 2G NAND: Use the correct bit names for FMCSTAT
Looks like they were always off-by-one, so the wrong functions have been used to rectify this bug. This is now properly fixed.

No changes to the ipodnano2g binaries (bootloader, rockbox)

Change-Id: I19fe1b89f9e5d722f7e877d60f68fc3275c3642a
2025-04-18 10:26:57 -04:00
Aidan MacDonald
a0bfcd77c8 arm: enable unified assembly syntax in more files
This makes these files compileable, or in some cases less
broken, on Cortex-M targets.

In lcd-16bit.c, newer versions of GAS complain about the
infix condition codes so we use the suffix form instead,
which requires unified syntax to compile on GCC 4.9.

Change-Id: If45166d3fc83d64c692cbb331096a966397aa9e9
2025-04-18 10:26:02 -04:00
Aidan MacDonald
639b587fc7 arm: add support for processors with hardware division
ARMv7-M has hardware division, so it doesn't require __div0
or any support functions for 32-bit division.

Change-Id: I840683a1a77d737f378899ca4bcf858216b81014
2025-04-18 09:22:48 -04:00
Aidan MacDonald
7e8a818d95 arm: add ARM architecture profile detection
Add some logic to detect classic and M-profile cores, and make
this info available to the build system. All existing targets
are classic profile.

Change-Id: I07bfcd418bcaa6297b9bbf889fc189f167147428
2025-04-18 09:22:48 -04:00
Solomon Peachy
9e79ebf78d bootloader: Fix red on hosted bootloaders
Fixes: 888ce7cae8
Change-Id: I802779cf158634d5b3b547d74999798cb56d2882
2025-04-17 08:31:33 -04:00
Christian Soffke
93b1611474 tagtree: defer context menu disk access
When the database isn't loaded into RAM,
or the "quick" load setting is enabled,
filenames for tracks must be retrieved
from disk.

With a single track selected, this
can cause a delay before its context
menu is displayed.

Since filenames are only needed after the
user has selected something from the menu,
it makes sense to defer retrieval until
disk access becomes inevitable.

Change-Id: I72b57eff3102b50f3e19441119e20aad903b1f2b
2025-04-17 08:23:45 -04:00
Roman Artiukhin
be47d646f0 jpeg: Add support for FORMAT_RETURN_SIZE flag
Change-Id: I01f883400d775ffee5cdaa107fc3d6fb89b02573
2025-04-17 08:23:32 -04:00
Solomon Peachy
888ce7cae8 disk: Dump partition tables when we can't find a usable partition
Change-Id: I10a1b4f149657da4292f34ac8a14e58ec6cdcf72
2025-04-17 08:15:13 -04:00
Roman Artiukhin
08bd5cdd3d plugins: db_folder_select, disktidy, main_menu_config: Fix selection dialog with Show Icons set to No
Temporarily enable icons for required lists. Probably not a proper fix but a simple workaround.

Fixes FS#13574

Change-Id: I011a80e2a9f03019927b32e92cd5a35275c051e1
2025-04-10 12:30:29 +03:00
Solomon Peachy
b3caf32f78 voice: Disable Greek voicing in daily and release builds
...Its coverage is below the 80% threshold.  If anyone complains, they
can help improve the translation coverage first.

Change-Id: I0201497ec1209a7d125ac99ec45de6e2a9e41098
2025-04-07 08:44:43 -04:00
Solomon Peachy
b26d85d2ff FS#13592: Update Brazilian Portuguese translation (Santiago Silva)
Change-Id: Id4e12b0af93878fdd8704fcee8597a273be66675
2025-04-07 07:40:23 -04:00
Solomon Peachy
8b54bec33e tools: Release scripts should only create artefacts for _stable_ targets
...Instead of including unstable targets too.  Those have to make do with
dailies.

Change-Id: Ie7d75338dab7b395e1f5980da54bc03f4b9f0184
2025-04-05 20:47:23 -04:00
Solomon Peachy
f884f92234 rbutil: http:// -> https:// for all displayed Rockbox URLs.
Change-Id: I6afe427144681103e52cb976ac10fdbd939e2237
2025-04-05 13:58:56 -04:00
Solomon Peachy
1fadf1cd89 Disable nightly Norweigan and Czech voice generation
They are hovering at 61% and 73% respectively.  Our current cutoff
is 75%, and that should arguably be raied to at least 80%.

If anyone complains we can politely request they help with the
translation.

Change-Id: I39fd0a3b40311669c2a644de8c359a29ae066e75
2025-04-04 11:31:38 -04:00
Christian Soffke
66a18f7c30 pictureflow: fix greylib crash when album not found
Change-Id: Ic9c532234613c805d851710b960db0c91d1049ab
2025-04-03 15:35:27 -04:00
Pavel Rzehák
4d616be48b Rockbox Utility: updated Czech translation
translated two missing strings

Change-Id: Ib1f938c4b103d37c9c4b78767a4b22935748fa09
2025-04-03 14:16:23 -04:00
Solomon Peachy
d835a294ef Minor mechanical correction to the Russian translation
(Now at 100%)

Change-Id: I236dd37ab9d4b88f7a42314ae22b8540aaf56b1d
2025-04-03 11:03:26 -04:00
Solomon Peachy
5c3976c521 FS#13590: Updated Russian Translation (Fedor Pomazkov)
Change-Id: Ib67c4107b793d843b2fa4afd616461aeb1c76fac
2025-04-03 10:38:29 -04:00
Solomon Peachy
87e9c3991a rbutil: Update tarball scripts
Change-Id: I33a42fc2535ddead1780bbceb2c4c048a3aba8de
2025-04-02 08:21:38 -04:00
William Wilgus
25c345feac Manual add theme list tags
these have been around since around 2010 add them to the manual

Change-Id: I4f28c4c8ef837f54e77f55c835355cde8991cdb2
2025-04-02 07:32:02 -04:00
Solomon Peachy
4347d41076 CREDITS: legal name change
Change-Id: Iec092f3e8d7f8dba165ff0a99d996d7076f6baa2
2025-04-01 20:02:08 -04:00
Solomon Peachy
4bdbd0785b tools: Update release script so that it generates 7z archives
Change-Id: Icc41a54af590d71a97baff16ad1c0124b26b0d0c
2025-04-01 17:26:08 -04:00
Solomon Peachy
15e79a0816 FS#13587: Updated Latvian translation (Renalds Belaks)
Change-Id: Ic086db0b8ce9341835e1e24aa6c9fa2a9bb594ba
2025-04-01 08:37:31 -04:00
Roman Artiukhin
ed40c5a036 metadata: opus, vorbis, speex: Don't fill metadata buffer with album art and cuesheet
Fixup for 0847bcc1. Fixes FS#13586

Change-Id: I2af63747266bf0dea85812354caadca432dfcd32
2025-04-01 08:33:16 -04:00
Solomon Peachy
7d51b14cca tools: Alter the 'voice_url' in the [release] build-info
Now it's consistent with everything else.  All old files have been renamed.

Change-Id: I5c6974fb30cc90a7aedb732d8f970800c7de74c4
2025-04-01 07:35:12 -04:00
Solomon Peachy
0b214badc8 builds: 4.0 is out, make it official
Change-Id: I61dc303c4d68a0d9cf559ecff2373f1f09fef01e
2025-04-01 06:32:12 -04:00
989 changed files with 80402 additions and 24626 deletions

3
.gitignore vendored
View file

@ -23,6 +23,9 @@ __pycache__
/tools/checkwps/rockbox-info.txt
/tools/checkwps/checkwps.failures
# Release
/tools/release/output
# android: java build system
/android/bin
/android/data

View file

@ -299,4 +299,10 @@ keymaps/keymap-fiiom3k.c
keymaps/keymap-erosq.c
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
keymaps/keymap-shanlingq1.c
#elif CONFIG_KEYPAD == ECHO_R1_PAD
keymaps/keymap-echor1.c
#elif CONFIG_KEYPAD == SURFANS_F28_PAD
keymaps/keymap-surfansf28.c
#elif CONFIG_KEYPAD == RG_NANO_PAD
keymaps/keymap-rgnano.c
#endif

View file

@ -488,7 +488,7 @@ static inline void button_flip_horizontally(int context, int *button)
{
newbutton |= BUTTON_LEFT;
}
#else
#elif !defined(NO_BUTTON_LR)
#warning "BUTTON_LEFT / BUTTON_RIGHT not defined!"
#endif
@ -770,7 +770,7 @@ static inline int do_auto_softlock(action_last_t *last, action_cur_t *cur)
#if defined(HAVE_TOUCHSCREEN)
const int touch_fakebuttons =
BUTTON_TOPLEFT | BUTTON_TOPMIDDLE | BUTTON_TOPRIGHT |
BUTTON_LEFT | BUTTON_CENTER | BUTTON_RIGHT |
BUTTON_MIDLEFT | BUTTON_CENTER | BUTTON_MIDRIGHT |
BUTTON_BOTTOMLEFT | BUTTON_BOTTOMMIDDLE | BUTTON_BOTTOMRIGHT;
if (has_flag(cur->button, BUTTON_TOUCHSCREEN))
cur->button = BUTTON_NONE;
@ -1318,7 +1318,11 @@ int get_custom_action(int context,int timeout,
action_cur_t current;
init_act_cur(&current, context, timeout, get_context_map);
return get_action_worker(&action_last, &current);
int action = get_action_worker(&action_last, &current);
action = do_backlight(&action_last, &current, action);
return action;
}
intptr_t get_action_data(void)

View file

@ -74,6 +74,7 @@ int alarm_screen(void)
talk_value(mins_togo % 60, UNIT_MIN, true);
talk_force_enqueue_next();
}
/* (voiced above) */
splashf(HZ*2, str(LANG_ALARM_MOD_TIME_TO_GO),
mins_togo / 60, mins_togo % 60);
} else {

View file

@ -46,7 +46,7 @@ toolsicon.130x130x16.bmp
hibyicon.70x70x16.bmp
rockboxicon.70x70x16.bmp
toolsicon.70x70x16.bmp
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q))
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q) || defined(SURFANS_F28))
hibyicon.130x130x16.bmp
rockboxicon.130x130x16.bmp
toolsicon.130x130x16.bmp

View file

@ -1408,6 +1408,16 @@ ssize_t bufread(int handle_id, size_t size, void *dest)
return size;
}
off_t bufstripsize(int handle_id, off_t size)
{
struct memory_handle *h = find_handle(handle_id);
if (!h || h->filesize < size)
return ERR_INVALID_VALUE;
h->filesize = size;
return size;
}
/* Update the "data" pointer to make the handle's data available to the caller.
Return the length of the available linear data or < 0 for failure (handle
not found).

View file

@ -81,6 +81,7 @@ int bufseek(int handle_id, size_t newpos);
int bufadvance(int handle_id, off_t offset);
off_t bufftell(int handle_id);
ssize_t bufread(int handle_id, size_t size, void *dest);
off_t bufstripsize(int handle_id, off_t size);
ssize_t bufgetdata(int handle_id, size_t size, void **data);
/***************************************************************************

View file

@ -269,6 +269,7 @@ static bool codec_advance_buffer_counters(size_t amount)
{
if (bufadvance(ci.audio_hid, amount) < 0)
{
bufseek(ci.audio_hid, ci.filesize);
ci.curpos = ci.filesize;
return false;
}
@ -440,6 +441,11 @@ static bool codec_loop_track_callback(void)
return global_settings.repeat_mode == REPEAT_ONE;
}
void codec_strip_filesize_callback(off_t size)
{
if (bufstripsize(ci.audio_hid, size) >= 0)
ci.filesize = size;
}
/** --- CODEC THREAD --- **/
@ -647,6 +653,7 @@ void INIT_ATTR codec_thread_init(void)
ci.configure = codec_configure_callback;
ci.get_command = codec_get_command_callback;
ci.loop_track = codec_loop_track_callback;
ci.strip_filesize = codec_strip_filesize_callback;
/* Init threading */
queue_init(&codec_queue, false);

View file

@ -89,9 +89,10 @@ struct codec_api ci = {
NULL, /* configure */
NULL, /* get_command */
NULL, /* loop_track */
NULL, /* strip_filesize */
/* kernel/ system */
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
#if defined(ARM_NEED_DIV0)
__div0,
#endif
sleep,

View file

@ -118,10 +118,6 @@
#include "usb_core.h"
#endif
#if defined(IPOD_ACCESSORY_PROTOCOL)
#include "iap.h"
#endif
#include "talk.h"
#if defined(HAVE_DEVICEDATA)// && !defined(SIMULATOR)
@ -140,6 +136,10 @@
#include "norboot-target.h"
#endif
#if defined(IPOD_ACCESSORY_PROTOCOL)
#include "iap.h"
#endif
#define SCREEN_MAX_CHARS (LCD_WIDTH / SYSFONT_WIDTH)
static const char* threads_getname(int selected_item, void *data,
@ -1347,7 +1347,7 @@ static int disk_callback(int btn, struct gui_synclist *lists)
simplelist_addline(
"Nsac: %d clk", card->nsac);
simplelist_addline(
"R2W: *%d", card->r2w_factor);
"R2W: *%d", 1 << card->r2w_factor);
#if (CONFIG_STORAGE & STORAGE_SD)
int csd_structure = card_extract_bits(card->csd, 127, 2);
const char *ver;
@ -1482,6 +1482,9 @@ static int disk_callback(int btn, struct gui_synclist *lists)
i = identify_info[83] & (1<<9);
simplelist_addline(
"Noise mgmt: %s", i ? "enabled" : "unsupported");
i = identify_info[85] & (1<<0);
simplelist_addline(
"SMART: %s", i ? "enabled" : "unsupported");
simplelist_addline(
"Flush cache: %s", identify_info[83] & (1<<13) ? "extended" : identify_info[83] & (1<<12) ? "standard" : identify_info[80] >= (1<<5) ? "ATA-5" : "unsupported");
i = identify_info[82] & (1<<6);
@ -1750,7 +1753,7 @@ static int ata_smart_callback(int btn, struct gui_synclist *lists)
{
int rc;
memset(&smart_data, 0, sizeof(struct ata_smart_values));
rc = ata_read_smart(&smart_data);
rc = ata_read_smart(&smart_data, ATA_SMART_READ_DATA);
simplelist_reset_lines();
if (rc == 0)
{
@ -2714,6 +2717,37 @@ static bool dbg_syscfg(void) {
return simplelist_show_list(&info);
}
#define FLASH_PAGES (FLASH_SIZE >> 12)
#define FLASH_PAGE_SIZE (FLASH_SIZE >> 8)
static bool dbg_bootflash_dump(void) {
splashf(HZ, "Please wait...");
int fd;
fd = creat("/bootflash.bin", 0666);
if (fd < 0)
{
splashf(HZ * 3, "Error opening file");
return false;
}
uint8_t page[FLASH_PAGE_SIZE];
bootflash_init(SPI_PORT);
for (int i = 0; i < FLASH_PAGES; i++) {
bootflash_read(SPI_PORT, i << 12, FLASH_PAGE_SIZE, page);
write(fd, page, FLASH_PAGE_SIZE);
}
bootflash_close(SPI_PORT);
close(fd);
splashf(HZ * 3, "Dump saved to /bootflash.bin");
return false;
}
#endif
/****** The menu *********/
@ -2821,6 +2855,9 @@ static const struct {
#if (defined(HAVE_WHEEL_ACCELERATION) && (CONFIG_KEYPAD==IPOD_4G_PAD) \
&& !defined(IPOD_MINI) && !defined(SIMULATOR))
{"Debug scrollwheel", dbg_scrollwheel },
#endif
#if defined(IPOD_ACCESSORY_PROTOCOL)
{"Debug IAP", dbg_iap },
#endif
{"Talk engine stats", dbg_talk },
#if defined(HAVE_BOOTDATA) && !defined(SIMULATOR)
@ -2833,6 +2870,7 @@ static const struct {
#if defined(IPOD_6G) && !defined(SIMULATOR)
{"View SysCfg", dbg_syscfg },
{"Dump bootflash to file", dbg_bootflash_dump },
#endif
};

View file

@ -182,7 +182,7 @@ depth_3d
#endif
/* This should be AUDIOHW_HAVE_FILTER_ROLL_OFF but that is only defined later */
#if defined(DX50) || defined(HAVE_DF1704_CODEC) || defined(HAVE_PCM1792_CODEC) || defined(HAVE_CS4398) || defined(HAVE_WM8740) || defined(HAVE_ES9018)|| defined(HAVE_EROS_QN_CODEC) || defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_AK4376) || defined(HAVE_ES9218)
#if defined(DX50) || defined(HAVE_DF1704_CODEC) || defined(HAVE_PCM1792_CODEC) || defined(HAVE_CS4398) || defined(HAVE_WM8740) || defined(HAVE_ES9018)|| defined(HAVE_EROS_QN_CODEC) || defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_AK4376) || defined(HAVE_ES9218) || defined(HAVE_SURFANS_LINUX_CODEC)
filter_roll_off
#endif

View file

@ -510,7 +510,9 @@ int copy_move_fileobject(const char *src_path, const char *dst_path, unsigned in
int rc;
if (file_exists(dst.path)) {
/* If user chooses not to overwrite, cancel */
if (!yesno_pop(ID2P(LANG_REALLY_OVERWRITE))) {
if (!yesno_pop(ID2P(LANG_REALLY_OVERWRITE)))
{
splash(HZ, ID2P(LANG_CANCEL));
return FORC_NOOVERWRT;
}
@ -611,6 +613,7 @@ int rename_file(const char *selected_file)
{
int rc;
char newname[MAX_PATH];
char *newext = NULL;
const char *oldbase, *selection = selected_file;
path_basename(selection, &oldbase);
@ -620,11 +623,20 @@ int rename_file(const char *selected_file)
if (strmemccpy(newname, selection, sizeof (newname)) == NULL)
return FORC_PATH_TOO_LONG;
if ((*tree_get_context()->dirfilter > NUM_FILTER_MODES) &&
(newext = strrchr(newbase, '.')))
/* hide extension when renaming in lists restricted to a
single file format, such as in the Playlists menu */
*newext = '\0';
rc = prompt_name(newbase, sizeof (newname) - pathlen);
if (rc != FORC_SUCCESS)
return rc;
if (newext) /* re-add original extension */
strlcat(newbase, strrchr(selection, '.'), sizeof (newname) - pathlen);
if (!strcmp(oldbase, newbase))
return FORC_NOOP; /* No change at all */

View file

@ -58,6 +58,7 @@
static struct compare_data
{
int sort_dir; /* qsort key for sorting directories */
int sort_file; /* ...for sorting files */
int(*_compar)(const char*, const char*, size_t);
} cmp_data;
@ -234,7 +235,7 @@ static int compare(const void* p1, const void* p2)
if (cmp_data.sort_dir == SORT_AS_FILE)
{ /* treat as two files */
criteria = global_settings.sort_file;
criteria = cmp_data.sort_file;
}
else if (e1->attr & ATTR_DIRECTORY && e2->attr & ATTR_DIRECTORY)
{ /* two directories */
@ -253,7 +254,7 @@ static int compare(const void* p1, const void* p2)
}
else if (!(e1->attr & ATTR_DIRECTORY) && !(e2->attr & ATTR_DIRECTORY))
{ /* two files */
criteria = global_settings.sort_file;
criteria = cmp_data.sort_file;
}
else /* dir and file, dir goes first */
return (e2->attr & ATTR_DIRECTORY) - (e1->attr & ATTR_DIRECTORY);
@ -425,6 +426,10 @@ int ft_load(struct tree_context* c, const char* tempdir)
/* allow directories to be sorted into file list */
cmp_data.sort_dir = (*c->dirfilter == SHOW_PLUGINS) ? SORT_AS_FILE : c->sort_dir;
/* playlist catalog uses sorting independent from file browser */
cmp_data.sort_file = (*c->dirfilter == SHOW_M3U) ?
global_settings.sort_playlists : global_settings.sort_file;
if (global_settings.sort_case)
{
if (global_settings.interpret_numbers == SORT_INTERPRET_AS_NUMBER)
@ -560,7 +565,7 @@ int ft_enter(struct tree_context* c)
struct entry* file = tree_get_entry_at(c, c->selected_item);
if (!file)
{
splashf(HZ, str(LANG_READ_FAILED), str(LANG_UNKNOWN));
splashf(HZ, ID2P(LANG_READ_FAILED), str(LANG_UNKNOWN));
return rc;
}
@ -768,7 +773,7 @@ int ft_enter(struct tree_context* c)
file = tree_get_entry_at(c, c->selected_item);
if (!file)
{
splashf(HZ, str(LANG_READ_FAILED), str(LANG_UNKNOWN));
splashf(HZ, ID2P(LANG_READ_FAILED), str(LANG_UNKNOWN));
return rc;
}

View file

@ -39,9 +39,7 @@
#include "option_select.h"
#include "debug.h"
#include "shortcuts.h"
#ifdef HAVE_ALBUMART
#include "playback.h"
#endif
#include "appevents.h"
/* 1 top, 1 bottom, 2 on either side, 1 for the icons
* if enough space, top and bottom have 2 lines */
@ -52,6 +50,18 @@
#define MARGIN 10
#define CENTER_ICONAREA_SIZE (MARGIN+8*2)
static bool redraw;
static void quickscreen_update_callback(unsigned short id,
void *data, void *userdata)
{
(void)id;
(void)data;
(void)userdata;
redraw = true;
}
static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
struct screen *display,
struct viewport *parent,
@ -335,6 +345,8 @@ static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter
push_current_activity(ACTIVITY_QUICKSCREEN);
add_event_ex(GUI_EVENT_NEED_UI_UPDATE, false, quickscreen_update_callback, NULL);
FOR_NB_SCREENS(i)
{
screens[i].set_viewport(NULL);
@ -355,6 +367,13 @@ static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter
if (qs->items[QUICKSCREEN_LEFT] != qs->items[QUICKSCREEN_RIGHT])
talk_qs_option(qs->items[QUICKSCREEN_RIGHT], true);
while (true) {
if (redraw)
{
redraw = false;
FOR_NB_SCREENS(i)
gui_quickscreen_draw(qs, &screens[i], &parent[i],
vps[i], &vp_icons[i]);
}
button = get_action(CONTEXT_QUICKSCREEN, HZ/5);
#ifdef HAVE_TOUCHSCREEN
if (button == ACTION_TOUCHSCREEN)
@ -369,11 +388,7 @@ static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter
{
ret |= QUICKSCREEN_CHANGED;
can_quit = true;
FOR_NB_SCREENS(i)
gui_quickscreen_draw(qs, &screens[i], &parent[i],
vps[i], &vp_icons[i]);
if (qs->callback)
qs->callback(qs);
redraw = true;
}
else if (button == button_enter)
can_quit = true;
@ -412,15 +427,14 @@ static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter
else
pop_current_activity();
remove_event_ex(GUI_EVENT_NEED_UI_UPDATE, quickscreen_update_callback, NULL);
return ret;
}
int quick_screen_quick(int button_enter)
{
struct gui_quickscreen qs;
#ifdef HAVE_ALBUMART
int old_album_art = global_settings.album_art;
#endif
bool usb = false;
for (int i = 0; i < 4; ++i)
@ -431,16 +445,9 @@ int quick_screen_quick(int button_enter)
qs.items[i] = NULL;
}
qs.callback = NULL;
int ret = gui_syncquickscreen_run(&qs, button_enter, &usb);
if (ret & QUICKSCREEN_CHANGED)
{
settings_save();
#ifdef HAVE_ALBUMART
if (old_album_art != global_settings.album_art)
set_albumart_mode(global_settings.album_art);
#endif
}
if (usb)
return QUICKSCREEN_IN_USB;
return ret & QUICKSCREEN_GOTO_SHORTCUTS_MENU ? QUICKSCREEN_GOTO_SHORTCUTS_MENU :

View file

@ -46,8 +46,6 @@ enum quickscreen_return {
struct gui_quickscreen
{
const struct settings_list *items[QUICKSCREEN_ITEM_COUNT];
void (*callback)(struct gui_quickscreen * qs); /* called after a
item is changed */
};
extern int quick_screen_quick(int button_enter);

View file

@ -829,19 +829,12 @@ static int parse_setting_and_lang(struct skin_element *element,
}
else
{
/* NOTE: The string validations that happen here will
* automatically PASS on checkwps because its too hard to get
* settings_list.c built for a specific target.
* If that ever changes remove the #ifndef __PCTOOL__ here
*/
#ifndef __PCTOOL__
const struct settings_list *setting = find_setting_by_cfgname(temp);
if (!setting) {
DEBUGF("Invalid setting [%s]\n", temp);
return WPS_ERROR_INVALID_PARAM;
}
token->value.xdata = (void *)setting;
#endif
}
return 0;
}
@ -2173,7 +2166,7 @@ static bool skin_load_fonts(struct wps_data *data)
{
if (success)
{
splashf(HZ, str(LANG_FONT_LOAD_ERROR), "(no name)");
splashf(HZ, ID2P(LANG_FONT_LOAD_ERROR), "(no name)");
DEBUGF("font %d not specified\n", font_id);
}
success = false;
@ -2198,7 +2191,7 @@ static bool skin_load_fonts(struct wps_data *data)
if (font->id < 0)
{
splashf(HZ, str(LANG_FONT_LOAD_ERROR), font->name);
splashf(HZ, ID2P(LANG_FONT_LOAD_ERROR), font->name);
DEBUGF("Unable to load font %d: '%s'\n", font_id, font->name);
font->name = NULL; /* to stop trying to load it again if we fail */
success = false;

View file

@ -36,7 +36,7 @@
#include "misc.h" /* get_current_activity */
#endif
static long progress_next_tick = 0;
static long progress_next_tick, talked_tick;
#define MAXLINES (LCD_HEIGHT/6)
#define MAXBUFFER 512
@ -215,6 +215,13 @@ void splashf(int ticks, const char *fmt, ...)
{
va_list ap;
/* fmt may be a so called virtual pointer. See settings.h. */
long id;
if((id = P2ID((const unsigned char*)fmt)) >= 0)
/* If fmt specifies a voicefont ID, and voice menus are
enabled, then speak it. */
cond_talk_ids_fq(id);
/* If fmt is a lang ID then get the corresponding string (which
still might contain % place holders). */
fmt = P2STR((unsigned char *)fmt);
@ -236,23 +243,11 @@ void splashf(int ticks, const char *fmt, ...)
sleep(ticks);
}
void splash(int ticks, const char *str)
{
#if !defined(SIMULATOR)
long id;
/* fmt may be a so called virtual pointer. See settings.h. */
if((id = P2ID((const unsigned char*)str)) >= 0)
/* If fmt specifies a voicefont ID, and voice menus are
enabled, then speak it. */
cond_talk_ids_fq(id);
#endif
splashf(ticks, "%s", P2STR((const unsigned char*)str));
}
/* set delay before progress meter is shown */
void splash_progress_set_delay(long delay_ticks)
{
progress_next_tick = current_tick + delay_ticks;
talked_tick = 0;
}
/* splash a progress meter */
@ -272,6 +267,15 @@ void splash_progress(int current, int total, const char *fmt, ...)
vp_flag = 0; /* don't mark vp dirty to prevent flashing */
}
if (global_settings.talk_menu &&
total > 0 &&
TIME_AFTER(current_tick, talked_tick + HZ*5))
{
talked_tick = current_tick;
talk_ids(false, LANG_LOADING_PERCENT,
TALK_ID(current * 100 / total, UNIT_PERCENT));
}
/* If fmt is a lang ID then get the corresponding string (which
still might contain % place holders). */
fmt = P2STR((unsigned char *)fmt);

View file

@ -38,7 +38,7 @@ extern void splashf(int ticks, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3);
* - str : what to say, if this is a LANG_* string (from ID2P)
* it will be voiced
*/
extern void splash(int ticks, const char *str);
#define splash(__ticks, __str) splashf(__ticks, __str)
/* set a delay before displaying the progress meter the first time */
extern void splash_progress_set_delay(long delay_ticks);

View file

@ -192,7 +192,7 @@ static struct screen * sb_fill_bar_info(struct gui_statusbar * bar)
/* zero battery run time if charging */
if (charge_state > DISCHARGING)
reset_runtime();
zero_runtime();
/* animate battery if charging */
if ((charge_state == DISCHARGING) || (charge_state == TRICKLE))
@ -202,7 +202,7 @@ static struct screen * sb_fill_bar_info(struct gui_statusbar * bar)
else
{
#else /* CONFIG_CHARGING < CHARGING_MONITOR */
reset_runtime();
zero_runtime();
{
#endif /* CONFIG_CHARGING < CHARGING_MONITOR */
/* animate in (max.) 4 steps, starting near the current charge level */

View file

@ -368,14 +368,35 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message,
main_message, yes_message, no_message);
}
/* Function to manipulate all yesno dialogues.
This function needs the prompt text as an argument. */
bool yesno_pop(const char* text)
static bool yesno_pop_lines(const char *lines[], int line_cnt)
{
const char *lines[]={text};
const struct text_message message={lines, 1};
const struct text_message message={lines, line_cnt};
bool ret = (gui_syncyesno_run(&message,NULL,NULL)== YESNO_YES);
FOR_NB_SCREENS(i)
screens[i].clear_viewport();
return ret;
}
/* YES/NO dialog, uses text parameter as prompt */
bool yesno_pop(const char* text)
{
const char *lines[]= {text};
return yesno_pop_lines(lines, 1);
}
/* YES/NO dialog, asks "Are you sure?", displays
text parameter on second line.
Says "Cancelled" if answered negatively.
*/
bool yesno_pop_confirm(const char* text)
{
bool confirmed;
const char *lines[] = {ID2P(LANG_ARE_YOU_SURE), text};
confirmed = yesno_pop_lines(lines, 2);
if (!confirmed)
splash(HZ, ID2P(LANG_CANCEL));
return confirmed;
}

View file

@ -57,5 +57,6 @@ extern enum yesno_res gui_syncyesno_run_w_tmo(
const struct text_message * no_message);
bool yesno_pop(const char* text);
bool yesno_pop_confirm(const char* text);
#endif /* _GUI_YESNO_H_ */

View file

@ -82,7 +82,7 @@ static void kdb_init(void)
sleep(HZ/10);
}
int kbd_input(char* text, int buflen, unsigned short *kbd)
int kbd_input(char* text, int buflen, ucschar_t *kbd)
{
(void)kbd;
JNIEnv e = *env_ptr;

View file

@ -28,6 +28,7 @@
#include "settings.h"
#include "lang.h"
#include "kernel.h"
#include "splash.h"
extern JNIEnv *env_ptr;
static jobject RockboxYesno_instance = NULL;
@ -130,14 +131,35 @@ enum yesno_res gui_syncyesno_run_w_tmo(int ticks, enum yesno_res tmo_default_res
#endif
/* Function to manipulate all yesno dialogues.
This function needs the output text as an argument. */
bool yesno_pop(const char* text)
static bool yesno_pop_lines(const char *lines[], int line_cnt)
{
const char *lines[]={text};
const struct text_message message={lines, 1};
const struct text_message message={lines, line_cnt};
bool ret = (gui_syncyesno_run(&message,NULL,NULL)== YESNO_YES);
FOR_NB_SCREENS(i)
screens[i].clear_viewport();
return ret;
}
/* YES/NO dialog, uses text parameter as prompt */
bool yesno_pop(const char* text)
{
const char *lines[]= {text};
return yesno_pop_lines(lines, 1);
}
/* YES/NO dialog, asks "Are you sure?", displays
text parameter on second line.
Says "Cancelled" if answered negatively.
*/
bool yesno_pop_confirm(const char* text)
{
bool confirmed;
const char *lines[] = {ID2P(LANG_ARE_YOU_SURE), text};
confirmed = yesno_pop_lines(lines, 2);
if (!confirmed)
splash(HZ, ID2P(LANG_CANCEL));
return confirmed;
}

View file

@ -177,7 +177,7 @@ unsigned char lingo_versions[32][2] = {
/* states of the iap de-framing state machine */
enum fsm_state {
ST_SYNC, /* wait for 0xFF sync byte */
ST_SYNC = 0, /* wait for 0xFF sync byte */
ST_SOF, /* wait for 0x55 start-of-frame byte */
ST_LEN, /* receive length byte (small packet) */
ST_LENH, /* receive length high byte (large packet) */
@ -210,6 +210,17 @@ static struct buflib_callbacks iap_buflib_callbacks = {
static void iap_malloc(void);
static void iap_reset_buffers(void)
{
iap_txstart = iap_buffers;
iap_txpayload = iap_txstart+5;
iap_txnext = iap_txpayload;
iap_rxstart = iap_buffers+(TX_BUFLEN+6);
iap_rxpayload = iap_rxstart;
iap_rxnext = iap_rxpayload;
iap_rxlen = RX_BUFLEN+2;
}
void put_u16(unsigned char *buf, const uint16_t data)
{
buf[0] = (data >> 8) & 0xFF;
@ -295,6 +306,27 @@ void iap_reset_auth(struct auth_t* auth)
auth->next_section = 0;
}
void iap_reset_state(IF_IAP_MP_NONVOID(int port))
{
if (!iap_running)
return;
/* 0 is dock, 1 is headphone. This is for
when we eventually maintain independent state */
IF_IAP_MP((void)port);
iap_reset_device(&device);
iap_bitrate_set(global_settings.serial_bitrate);
#if 0 // XXX this is still screwed up
memset(&frame_state, 0, sizeof(frame_state));
interface_state = IST_STANDARD;
frame_state.state = ST_SYNC;
iap_reset_buffers();
#endif
}
void iap_reset_device(struct device_t* device)
{
iap_reset_auth(&(device->auth));
@ -326,7 +358,6 @@ void iap_set_remote_volume(void)
iap_send_tx();
}
/* This thread is waiting for events posted to iap_queue and calls
* the appropriate subroutines in response
*/
@ -460,13 +491,8 @@ static void iap_malloc(void)
#else
iap_buffers = serbuf;
#endif
iap_txstart = iap_buffers;
iap_txpayload = iap_txstart+5;
iap_txnext = iap_txpayload;
iap_rxstart = iap_buffers+(TX_BUFLEN+6);
iap_rxpayload = iap_rxstart;
iap_rxnext = iap_rxpayload;
iap_rxlen = RX_BUFLEN+2;
iap_reset_buffers();
iap_running = true;
}
@ -567,7 +593,7 @@ void iap_send_pkt(const unsigned char * data, const int len)
iap_send_tx();
}
bool iap_getc(const unsigned char x)
bool iap_getc(IF_IAP_MP(int port,) const unsigned char x)
{
struct state_t *s = &frame_state;
static long pkt_timeout;
@ -580,7 +606,7 @@ bool iap_getc(const unsigned char x)
/* Packet timeouts only make sense while not waiting for the
* sync byte */
s->state = ST_SYNC;
return iap_getc(x);
return iap_getc(IF_IAP_MP(port,) x);
}
@ -607,7 +633,7 @@ bool iap_getc(const unsigned char x)
s->state = ST_LEN;
} else {
s->state = ST_SYNC;
return iap_getc(x);
return iap_getc(IF_IAP_MP(port,) x);
}
break;
case ST_LEN:
@ -1418,3 +1444,32 @@ void iap_fill_power_state(void)
IAP_TX_PUT(0x00);
}
}
#include "lcd.h"
#include "font.h"
bool dbg_iap(void)
{
lcd_setfont(FONT_SYSFIXED);
while (1)
{
if (action_userabort(HZ/10))
break;
lcd_clear_display();
/* show internal state of IAP subsystem */
lcd_putsf(0, 0, "auth: %d acc: %d", device.auth.state, device.accinfo);
lcd_putsf(0, 1, "lin: %08x", device.lingoes);
lcd_putsf(0, 2, "notif: %08x", device.notifications);
lcd_putsf(0, 3, "cap: %08x/%08x", device.capabilities, device.capabilities_queried);
// frame_state.state
// serial state
lcd_update();
}
lcd_setfont(FONT_UI);
return false;
}

View file

@ -23,7 +23,7 @@
/* '*kbd', same format as https://www.rockbox.org/wiki/LoadableKeyboardLayouts */
int kbd_input(char* buffer, int buflen, unsigned short *kbd);
int kbd_input(char* buffer, int buflen, ucschar_t *kbd);
int load_kbd(unsigned char* filename);

View file

@ -0,0 +1,42 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2025 Aidan MacDonald
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for Echo R1 */
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/* {Action Code, Button code, Prereq button code } */
static const struct button_mapping button_context_standard[] = {
LAST_ITEM_IN_LIST
}; /* button_context_standard */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
{
default:
return button_context_standard;
}
}

View file

@ -140,7 +140,7 @@ static const struct button_mapping button_context_settings_time[] = {
{ ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_PREV },
{ ACTION_STD_NEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
{ ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
{ ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
{ ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE },
@ -191,6 +191,65 @@ static const struct button_mapping button_context_bmark[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_usb_hid[] = {
{ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER, BUTTON_NONE},
LAST_ITEM_IN_LIST,
}; /* button_context_usb_hid */
static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
{ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE},
{ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_FWD, BUTTON_NONE}, // might be annoying
{ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE},
{ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_BACK, BUTTON_NONE}, // might be annoying
{ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
{ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
{ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER},
{ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_PREV, BUTTON_NONE},
{ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_NEXT, BUTTON_NONE},
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
}; /* button_context_usb_hid_mode_multimedia */
static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
// TODO
// {ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
// {ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY},
// {ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT},
// {ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT},
// {ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT},
// {ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT},
// {ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_VOL_UP, BUTTON_NONE},
// {ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_VOL_DOWN, BUTTON_NONE},
// {ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_MENU, BUTTON_NONE},
// {ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_BACK, BUTTON_NONE},
// {ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
// {ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT},
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
}; /* button_context_usb_hid_mode_presentation */
static const struct button_mapping button_context_usb_hid_mode_browser[] = {
// TODO
// {ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_BACK, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_VOL_UP, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_VOL_DOWN, BUTTON_NONE},
// {ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
// {ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT},
// {ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT},
// {ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT},
// {ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT},
// {ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT},
// {ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY},
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
}; /* button_context_usb_hid_mode_browser */
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
@ -235,6 +294,18 @@ const struct button_mapping* get_context_mapping(int context)
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
case CONTEXT_USB_HID:
return button_context_usb_hid;
case CONTEXT_USB_HID_MODE_MULTIMEDIA:
return button_context_usb_hid_mode_multimedia;
case CONTEXT_USB_HID_MODE_PRESENTATION:
return button_context_usb_hid_mode_presentation;
case CONTEXT_USB_HID_MODE_BROWSER:
return button_context_usb_hid_mode_browser;
default:
return button_context_standard;
}

View file

@ -703,7 +703,6 @@ static const struct button_mapping button_context_radio_h300lcdremote[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
};
static const struct button_mapping button_context_time_remote[] = {
{ ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_ON, BUTTON_NONE },
@ -881,6 +880,7 @@ static const struct button_mapping* get_context_mapping_remote(int context)
case CONTEXT_CUSTOM|CONTEXT_TREE:
return remote_btn_ctxt_tree;
case CONTEXT_SETTINGS_TIME:
return button_context_time_remote;
case CONTEXT_SETTINGS_RECTRIGGER:
return remote_btn_ctxt_settingsgrph;

View file

@ -0,0 +1,274 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2025 Hairo R. Carela
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for Android targets */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_B, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_A, BUTTON_NONE },
{ ACTION_STD_MENU, BUTTON_Y|BUTTON_REL, BUTTON_Y },
{ ACTION_STD_CONTEXT, BUTTON_START|BUTTON_REL, BUTTON_START },
{ ACTION_STD_QUICKSCREEN, BUTTON_R|BUTTON_REL, BUTTON_R },
{ ACTION_STD_KEYLOCK, BUTTON_FN|BUTTON_START, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_A|BUTTON_REL, BUTTON_A },
{ ACTION_WPS_STOP, BUTTON_A|BUTTON_REPEAT, BUTTON_A },
{ ACTION_WPS_STOP, BUTTON_L|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_MENU, BUTTON_B|BUTTON_REL, BUTTON_B },
{ ACTION_WPS_CONTEXT, BUTTON_START|BUTTON_REL, BUTTON_START },
{ ACTION_WPS_HOTKEY, BUTTON_L|BUTTON_REL, BUTTON_L },
{ ACTION_WPS_QUICKSCREEN, BUTTON_R|BUTTON_REL, BUTTON_R },
{ ACTION_WPS_BROWSE, BUTTON_Y|BUTTON_REL, BUTTON_Y },
{ ACTION_WPS_ID3SCREEN, BUTTON_X|BUTTON_REL, BUTTON_X },
{ ACTION_WPS_PITCHSCREEN, BUTTON_R|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_ABSETA_PREVDIR, BUTTON_A|BUTTON_LEFT, BUTTON_A },
{ ACTION_WPS_ABSETB_NEXTDIR, BUTTON_A|BUTTON_RIGHT, BUTTON_A },
{ ACTION_WPS_ABRESET, BUTTON_A|BUTTON_UP, BUTTON_A },
{ ACTION_WPS_ABRESET, BUTTON_A|BUTTON_DOWN, BUTTON_A },
{ ACTION_STD_KEYLOCK, BUTTON_FN|BUTTON_START, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
{ ACTION_LIST_VOLUP, BUTTON_FN|BUTTON_A, BUTTON_NONE },
{ ACTION_LIST_VOLUP, BUTTON_FN|BUTTON_A|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_FN|BUTTON_Y, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_FN|BUTTON_Y|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LISTTREE_PGUP, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_LISTTREE_PGUP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LISTTREE_PGDOWN, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_LISTTREE_PGDOWN, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_X|BUTTON_REL, BUTTON_X },
{ ACTION_TREE_HOTKEY, BUTTON_L|BUTTON_REL, BUTTON_L },
{ ACTION_TREE_STOP, BUTTON_L|BUTTON_REPEAT, BUTTON_NONE},
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_with_combo[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_is_inc[] = {
{ ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settingsgraphical */
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_A, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_colorchooser[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_Y, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_VOLUP, BUTTON_FN|BUTTON_A, BUTTON_NONE },
{ ACTION_QS_VOLUP, BUTTON_FN|BUTTON_A|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_VOLDOWN, BUTTON_FN|BUTTON_Y, BUTTON_NONE },
{ ACTION_QS_VOLDOWN, BUTTON_FN|BUTTON_Y|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
{ ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
{ ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_TOGGLE_MODE, BUTTON_A, BUTTON_NONE },
{ ACTION_PS_RESET, BUTTON_Y, BUTTON_NONE },
{ ACTION_PS_EXIT, BUTTON_B, BUTTON_NONE },
{ ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_L, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_L|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_R, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_R|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_A, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_Y|BUTTON_REL, BUTTON_Y },
{ ACTION_KBD_PAGE_FLIP, BUTTON_X, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_START|BUTTON_REL, BUTTON_START },
{ ACTION_KBD_ABORT, BUTTON_B|BUTTON_REL, BUTTON_B },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_keyboard */
static const struct button_mapping button_context_radio[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
}; /* button_context_radio */
const struct button_mapping* get_context_mapping(int context)
{
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
if (global_settings.hold_lr_for_scroll_in_list)
return button_context_listtree_scroll_without_combo;
else
return button_context_listtree_scroll_with_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
case CONTEXT_SETTINGS_RECTRIGGER:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_FM:
return button_context_radio;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -0,0 +1,215 @@
/***************************************************************************
* __________ __ ___
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2025 Solomon Peachy
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
static const struct button_mapping button_context_standard[] =
{
{ ACTION_STD_CONTEXT, BUTTON_PLAY | BUTTON_REPEAT, BUTTON_PLAY },
{ ACTION_STD_OK, BUTTON_PLAY | BUTTON_REL, BUTTON_PLAY },
{ ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_NEXT , BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_PREV | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_NEXT | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST
};
static const struct button_mapping button_context_wps[] =
{
{ ACTION_WPS_MENU, BUTTON_POWER, BUTTON_NONE },
{ ACTION_WPS_CONTEXT, BUTTON_PLAY | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_PLAY, BUTTON_PLAY | BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_SEEKBACK, BUTTON_PREV | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_NEXT | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_PREV | BUTTON_REL, BUTTON_PREV | BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_NEXT | BUTTON_REL, BUTTON_NEXT | BUTTON_REPEAT },
{ ACTION_WPS_SKIPNEXT, BUTTON_NEXT | BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_SKIPPREV, BUTTON_PREV | BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST
};
static const struct button_mapping button_context_list[] =
{
{ ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_tree[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
};
static const struct button_mapping button_context_listtree_scroll_with_combo[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM | CONTEXT_TREE),
};
static const struct button_mapping button_context_listtree_scroll_without_combo[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM | CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] =
{
{ ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_settings_right_is_inc[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_mainmenu[] =
{
{ ACTION_TREE_WPS, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE),
};
static const struct button_mapping button_context_yesno[] =
{
{ ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_colorchooser[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
};
static const struct button_mapping button_context_eq[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
};
static const struct button_mapping button_context_keyboard[] =
{
{ ACTION_KBD_LEFT, BUTTON_SCROLL_BACK, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY | BUTTON_SCROLL_BACK, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY | BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_PREV, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_PREV | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_NEXT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_NEXT | BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST
};
static const struct button_mapping button_context_bmark[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
};
static const struct button_mapping button_context_time[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
};
static const struct button_mapping button_context_quickscreen[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
};
static const struct button_mapping button_context_pitchscreen[] =
{
{ ACTION_PS_INC_SMALL, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_SCROLL_BACK, BUTTON_NONE },
{ ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
};
static const struct button_mapping button_context_radio[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
};
const struct button_mapping* target_get_context_mapping(int context)
{
switch(context)
{
case CONTEXT_STD: { return button_context_standard; }
case CONTEXT_WPS: { return button_context_wps; }
case CONTEXT_LIST: { return button_context_list; }
case CONTEXT_MAINMENU: { return button_context_mainmenu; }
case CONTEXT_CUSTOM | CONTEXT_TREE: { return button_context_tree; }
case CONTEXT_SETTINGS: { return button_context_settings; }
case CONTEXT_SETTINGS_COLOURCHOOSER: { return button_context_colorchooser; }
case CONTEXT_SETTINGS_EQ: { return button_context_eq; }
case CONTEXT_SETTINGS_TIME: { return button_context_time; }
case CONTEXT_YESNOSCREEN: { return button_context_yesno; }
case CONTEXT_KEYBOARD: { return button_context_keyboard; }
case CONTEXT_FM: { return button_context_radio; }
case CONTEXT_BOOKMARKSCREEN: { return button_context_bmark; }
case CONTEXT_QUICKSCREEN: { return button_context_quickscreen; }
case CONTEXT_PITCHSCREEN: { return button_context_pitchscreen; }
case CONTEXT_CUSTOM | CONTEXT_SETTINGS:
case CONTEXT_SETTINGS_RECTRIGGER: { return button_context_settings_right_is_inc; }
case CONTEXT_TREE:
{
if(global_settings.hold_lr_for_scroll_in_list)
{
return button_context_listtree_scroll_without_combo;
}
return button_context_listtree_scroll_with_combo;
}
}
return button_context_standard;
}

View file

@ -99,7 +99,7 @@ static const struct button_mapping button_context_settings_right_is_inc[] = {
static const struct button_mapping button_context_yesno[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
#if 0
static const struct button_mapping button_context_colorchooser[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
@ -107,7 +107,7 @@ static const struct button_mapping button_context_colorchooser[] = {
static const struct button_mapping button_context_eq[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
#endif
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),

View file

@ -21,6 +21,7 @@ italiano.lang
latviesu.lang
lietuviu.lang
magyar.lang
moldoveneste.lang
nederlands.lang
norsk.lang
norsk-nynorsk.lang

View file

@ -581,7 +581,7 @@
desc: in display_settings_menu
user: core
<source>
*: "Backlight On When Plugged"
*: "Backlight on When Plugged"
</source>
<dest>
*: "Beligting Tydens Laai"

View file

@ -2534,20 +2534,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
rtc: "Current time:"
rtc: "Current time"
</voice>
</phrase>
<phrase>
@ -2948,7 +2948,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -3194,8 +3194,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -4149,7 +4149,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -4157,7 +4157,7 @@
</dest>
<voice>
*: none
recording: "Same As Source"
recording: "Same as Source"
</voice>
</phrase>
<phrase>
@ -5350,7 +5350,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "بحث في قائمة التشغيل"
@ -6070,7 +6070,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -6379,6 +6379,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -6387,12 +6388,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Revert"
gigabeatfx: "طاقة = إاغاء الأمر"
gigabeats: "خلف = إاغاء الأمر"
gogearsa9200: "يسار = إاغاء الأمر"
@ -6401,7 +6402,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "السابق = إاغاء الأمر"
iriverh100,iriverh120,iriverh300: "عرض = إاغاء الأمر"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</dest>
@ -6749,7 +6749,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none

View file

@ -227,8 +227,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2935,7 +2935,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Pantailatik Kanpoko Korritzea"
@ -3262,7 +3262,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3279,7 +3279,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3775,22 +3775,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Ezarri"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Ezarri"
gogearsa9200,samsungyh*: "PLAY = Ezarri"
iriverh100,iriverh120,iriverh300: "NAVI = Ezarri"
mpiohd300: "ENTER = Ezarri"
mrobe500: "HEART = Ezarri"
rtc: "ON = Ezarri"
vibe500: "OK = Ezarri"
</dest>
<voice>
@ -3804,6 +3804,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3812,12 +3813,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Itzuli"
gigabeatfx,mrobe500: "POWER = Itzuli"
gigabeats,sansafuzeplus: "BACK = Itzuli"
gogearsa9200: "LEFT = Itzuli"
@ -3826,7 +3827,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Itzuli"
iriverh100,iriverh120,iriverh300: "STOP = Itzuli"
mrobe100: "DISPLAY = Itzuli"
rtc: "OFF = Itzuli"
samsungyh*: "REW = Itzuli"
vibe500: "CANCEL = Itzuli"
</dest>
@ -4266,7 +4266,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5435,7 +5435,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5693,7 +5693,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6698,7 +6698,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Zerrendan Bilatu"
@ -7076,10 +7076,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7329,7 +7329,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9410,20 +9410,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Uneko denbora"
</dest>
<voice>
*: none
rtc: "Uneko denbora:"
rtc: "Uneko denbora"
</voice>
</phrase>
<phrase>
@ -10273,7 +10273,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10291,7 +10291,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -12233,7 +12233,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Berrekin automatikoki"
@ -12289,7 +12289,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Ezarri Zerrenda Katalogo Direktorio Gisa"
@ -12483,7 +12483,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Lotarako Denbora Berrasi Botoiak Sakatzean"
@ -12511,7 +12511,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Abiaraztean Hasi Lotarako Denbora"

View file

@ -231,8 +231,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2747,7 +2747,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Скролиране на екрана извън изгледа"
@ -3033,7 +3033,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Минимален обхват"
@ -3047,7 +3047,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Максимален обхват"
@ -3361,59 +3361,53 @@
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Battery Type"
battery_types: ""
</source>
<dest>
*: none
battery_types: "Тип на батерията"
battery_types: ""
</dest>
<voice>
*: none
battery_types: "Тип на батерията"
battery_types: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "Алкална"
xduoox3: "Нов модел (2000 mAh)"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "Алкална"
xduoox3: "Нов модел 2000 милиампер часа"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "NiMH "
xduoox3: "Стар модел (1500 mAh)"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "Никел Метал Хидридна"
xduoox3: "Стар модел 1500 милиампер часа"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
@ -3546,22 +3540,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Запази"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Запази"
gogearsa9200,samsungyh*: "PLAY = Запази"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Запази"
iriverh100,iriverh120,iriverh300: "NAVI = Запази"
mpiohd300: "ENTER = Запази"
mrobe500: "HEART = Запази"
rtc: "ON = Запази"
vibe500: "OK = Запази"
</dest>
<voice>
@ -3575,29 +3569,29 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = отказ"
gigabeatfx,mrobe500: "POWER = отказ"
gigabeats,sansafuzeplus: "BACK = отказ"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = отказ"
gogearsa9200: "LEFT = отказ"
iaudiom5,iaudiox5: "RECORD = отказ"
ipod*,mpiohd300,sansac200*: "MENU = отказ"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = отказ"
iriverh100,iriverh120,iriverh300: "STOP = отказ"
mrobe100: "DISPLAY = отказ"
rtc: "OFF = отказ"
samsungyh*: "REW = отказ"
vibe500: "CANCEL = отказ"
</dest>
@ -4037,7 +4031,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5044,7 +5038,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5795,16 +5789,16 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
desc: deprecated
user: core
<source>
*: "Playlist Catalogue"
*: ""
</source>
<dest>
*: "Каталог с плейлисти"
*: ""
</dest>
<voice>
*: "Каталог с плейлисти"
*: ""
</voice>
</phrase>
<phrase>
@ -6168,7 +6162,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Търсене в плейлиста"
@ -6518,10 +6512,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6757,7 +6751,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -8695,16 +8689,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Часът е"
</dest>
<voice>
*: none
@ -8739,20 +8733,6 @@
*: "Честота на отрязване"
</voice>
</phrase>
<phrase>
id: LANG_SYSFONT_GAIN
desc: in the equalizer settings menu
user: core
<source>
*: "Gain"
</source>
<dest>
*: "Усилване"
</dest>
<voice>
*: "Усилване"
</voice>
</phrase>
<phrase>
id: VOICE_OF
desc: spoken only, as in 3/8 => 3 of 8
@ -9323,7 +9303,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9341,7 +9321,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10753,23 +10733,6 @@
histogram: "Интервал на хистограмата"
</voice>
</phrase>
<phrase>
id: LANG_LINEOUT_ONOFF
desc: in system settings menu
user: core
<source>
*: none
lineout_poweroff: "Line Out"
</source>
<dest>
*: none
lineout_poweroff: "Линеен изход"
</dest>
<voice>
*: none
lineout_poweroff: "Линеен изход"
</voice>
</phrase>
<phrase>
id: LANG_HOTKEY
desc: hotkey menu
@ -11227,7 +11190,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Автоматично възобновяване"
@ -11373,7 +11336,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Стартирай таймера на заспиване при включване"
@ -11477,7 +11440,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Рестартирай таймера на заспиване при натискане на бутон"
@ -11615,20 +11578,6 @@
*: "Време за нападение"
</voice>
</phrase>
<phrase>
id: LANG_SYSFONT_EQUALIZER_BAND_Q
desc: in the equalizer settings menu
user: core
<source>
*: "Q"
</source>
<dest>
*: "Q"
</dest>
<voice>
*: "Q"
</voice>
</phrase>
<phrase>
id: LANG_FILTER_SLOW
desc: in sound settings
@ -11929,7 +11878,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Сила на гласовите съобщения"
@ -12543,16 +12492,16 @@
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: playing time screen
desc: deprecated
user: core
<source>
*: "Playlist remaining:"
*: ""
</source>
<dest>
*: "Оставащо време в плейлистата:"
*: ""
</dest>
<voice>
*: "Оставащо време в плейлистата"
*: ""
</voice>
</phrase>
<phrase>
@ -13295,48 +13244,6 @@
*: "Ниво 7, 40 хода за 240 минути"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Ниво 8: 1 ход / 15 мин"
</dest>
<voice>
*: "Ниво 8, 1 ход за 15 минути"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Ниво 9: 1 ход / 60 мин"
</dest>
<voice>
*: "Ниво 9, 1 ход за 60 минути"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Ниво 10: 1 ход / 600 мин"
</dest>
<voice>
*: "Ниво 10, 1 ход за 600 минути"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14730,16 +14637,16 @@
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
desc: deprecated
user: core
<source>
*: "Cache will be rebuilt on next restart"
*: ""
</source>
<dest>
*: "Кешът ще се прегенерира при следващия рестарт"
*: ""
</dest>
<voice>
*: "Кешът ще се прегенерира при следващия рестарт"
*: ""
</voice>
</phrase>
<phrase>
@ -15150,7 +15057,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Избери плъгин за WPS контекст"
@ -16244,62 +16151,6 @@
*: "Експертно"
</voice>
</phrase>
<phrase>
id: LANG_STEREOSW_MODE
desc: Stereo Switch Mode
user: core
<source>
*: "Stereo Switch Mode"
</source>
<dest>
*: "Разменяне на стерео"
</dest>
<voice>
*: "Разменяне на стерео"
</voice>
</phrase>
<phrase>
id: LANG_REVERSE
desc: in settings_menu
user: core
<source>
*: "Reverse"
</source>
<dest>
*: "Обърнато"
</dest>
<voice>
*: "Обърнато"
</voice>
</phrase>
<phrase>
id: LANG_ALWAYS_ZERO
desc: in settings_menu
user: core
<source>
*: "Always 0"
</source>
<dest>
*: "Винаги 0"
</dest>
<voice>
*: "Винаги 0"
</voice>
</phrase>
<phrase>
id: LANG_ALWAYS_ONE
desc: in settings_menu
user: core
<source>
*: "Always 1"
</source>
<dest>
*: "Винаги 1"
</dest>
<voice>
*: "Винаги 1"
</voice>
</phrase>
<phrase>
id: LANG_LEGAL_NOTICES
desc: in system menu

View file

@ -229,8 +229,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2935,7 +2935,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Desplaçament fora de la pantalla"
@ -3260,7 +3260,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3277,7 +3277,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3773,22 +3773,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Desa"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansae200*,sansafuze*: " SELECT = Desa"
gogearsa9200,samsungyh*: "PLAY = Desa"
iriverh100,iriverh120,iriverh300: "NAVI = Desa"
mpiohd300: "ENTER = Desa"
mrobe500: "HEART = Desa"
rtc: "ON = Desa"
vibe500: "OK = Desa"
</dest>
<voice>
@ -3801,6 +3801,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3809,12 +3810,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Cancel·la"
gigabeatfx,mrobe500: "POWER = Cancel·la"
gigabeats,sansafuzeplus: "BACK = Cancel·la"
gogearsa9200: "LEFT = Cancel·la"
@ -3823,7 +3824,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Cancel·la"
iriverh100,iriverh120,iriverh300: "STOP = Cancel·la"
mrobe100: "DISPLAY = Cancel·la"
rtc: "OFF = Cancel·la"
samsungyh*: "REW = Cancel·la"
vibe500: "CANCEL = Cancel·la"
</dest>
@ -4261,7 +4261,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5429,7 +5429,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5687,7 +5687,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6693,7 +6693,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Cercar a la llista de reproducció"
@ -7071,10 +7071,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7324,7 +7324,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9404,20 +9404,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Hora actual"
</dest>
<voice>
*: none
rtc: "Hora actual:"
rtc: "Hora actual"
</voice>
</phrase>
<phrase>
@ -10267,7 +10267,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10285,7 +10285,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -12162,7 +12162,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Reprendre la reproducció automàticament"
@ -12300,13 +12300,13 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</dest>
<voice>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</voice>
</phrase>
<phrase>
@ -12491,7 +12491,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Reiniciar el temporitzador al prémer una tecla"
@ -12564,7 +12564,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Inicia el temportzador al arrancar"

View file

@ -2862,7 +2862,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "允许列表查看时滚动全屏"
@ -3086,7 +3086,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "量程最小值"
@ -3100,7 +3100,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "量程最大值"
@ -3123,63 +3123,6 @@
*: "电池容量"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "电池类型"
</dest>
<voice>
*: none
battery_types: "电池类型"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "碱性"
xduoox3: "新电池 (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "碱性"
xduoox3: "新电池"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "锂镁氢"
xduoox3: "旧电池 (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "锂镁氢"
xduoox3: "旧电池"
</voice>
</phrase>
<phrase>
id: LANG_SPINDOWN
desc: in settings_menu
@ -3444,7 +3387,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3631,7 +3574,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "在播放列表中查找"
@ -3804,16 +3747,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "现在时间"
</dest>
<voice>
*: none
@ -3930,22 +3873,23 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF:取消"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK:取消"
gigabeatfx: "POWER:取消"
gigabeats,sansafuzeplus: "BACK:取消"
gogearsa9200: "LEFT:取消"
iaudiom5,iaudiox5: "RECORD:取消"
ipod*,mpiohd300,sansac200*: "MENU:取消"
@ -3953,13 +3897,11 @@
iriverh100,iriverh120,iriverh300: "STOP:取消"
mrobe100: "DISPLAY:取消"
mrobe500: "电源:取消"
rtc: "OFF:取消"
samsungyh*: "REW:取消"
vibe500: "CANCEL:取消"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4112,7 +4054,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4339,7 +4281,7 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: "(VBR)"
@ -6292,7 +6234,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "正在扫描"
</voice>
</phrase>
<phrase>
@ -6562,7 +6504,7 @@
*: "无法打开%s"
</dest>
<voice>
*: ""
*: "无法打开插件"
</voice>
</phrase>
<phrase>
@ -6576,7 +6518,7 @@
*: "读取%s失败"
</dest>
<voice>
*: ""
*: "读取文件失败"
</voice>
</phrase>
<phrase>
@ -7133,7 +7075,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -7453,27 +7395,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON:设置"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY:设置"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT:设置"
gogearsa9200,samsungyh*: "PLAY:设置"
iriverh100,iriverh120,iriverh300: "NAVI=设置"
mpiohd300: "ENTER:设置"
mrobe500: "HEART:设置"
rtc: "ON:设置"
vibe500: "OK:设置"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -7986,20 +7927,6 @@
headphone_detection: "拔出耳机后自动暂停"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "播放列表目录"
</dest>
<voice>
*: "播放列表目录"
</voice>
</phrase>
<phrase>
id: LANG_SPLIT_MEASURE
desc: in record timesplit options
@ -8763,8 +8690,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -9379,7 +9306,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -9581,7 +9508,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -11101,7 +11028,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "自动断点续播"
@ -11478,7 +11405,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "按键时重置睡眠计时器"
@ -11551,7 +11478,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "开机即启动睡眠计时器"
@ -11871,7 +11798,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "语音提示音量"
@ -12500,20 +12427,6 @@
*: "曲目已播放"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_TRK_REMAINING
desc: playing time screen
@ -13254,48 +13167,6 @@
*: "Level 7, 40 步 每240 分钟"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Level 8: 1 步 / 15 分钟"
</dest>
<voice>
*: "Level 8, 1 步 每15 分钟"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Level 9: 1 步 / 60 分钟"
</dest>
<voice>
*: "Level 9, 1 步 每60 分钟"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Level 10: 1 步 / 600 分钟"
</dest>
<voice>
*: "Level 10, 1 步 每 600 分钟"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14108,16 +13979,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "切换项目"
*: ""
</dest>
<voice>
*: "切换项目"
*: ""
</voice>
</phrase>
<phrase>
@ -14178,13 +14049,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Rockbox主屏幕菜单定制"
*: ""
</dest>
<voice>
*: ""
@ -14687,20 +14558,6 @@
*: "未找到专辑艺术"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "下次启动时重建缓存"
</dest>
<voice>
*: "下次启动时重建缓存"
</voice>
</phrase>
<phrase>
id: LANG_ERROR_WRITING_CONFIG
desc: in the pictureflow splash messages
@ -15110,7 +14967,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "设置播放屏幕上下文插件"
@ -17039,3 +16896,31 @@
*: "无法加载字体"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "排序播放列表"
</dest>
<voice>
*: "排序播放列表"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[按专辑排序]"
</dest>
<voice>
*: "按专辑排序的所有乐曲"
</voice>
</phrase>

View file

@ -2863,7 +2863,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "畫面範圍外捲動"
@ -3087,7 +3087,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "最小範圍"
@ -3101,7 +3101,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "最大範圍"
@ -3405,7 +3405,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3648,7 +3648,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "在播放清單內搜尋"
@ -3835,20 +3835,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
rtc: "Current time:"
rtc: "Current time"
</voice>
</phrase>
<phrase>
@ -3961,6 +3961,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3969,12 +3970,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = 返回"
gigabeatfx: "POWER = 返回"
gigabeats,sansafuzeplus: "BACK = 返回"
gogearsa9200,ipod*,mpiohd300,sansac200*: "MENU = 返回"
@ -3983,7 +3984,6 @@
iriverh100,iriverh120,iriverh300: "STOP = 返回"
mrobe100: "DISPLAY = 返回"
mrobe500: "POWER = Revert"
rtc: "OFF = 返回"
samsungyh*: "REW = 返回"
vibe500: "CANCEL = 返回"
</dest>
@ -4159,7 +4159,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4432,7 +4432,7 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (變動位元率)"
@ -7254,7 +7254,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -7577,22 +7577,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = 設定"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansae200*: "SELECT = 設定"
gogearsa9200,samsungyh*: "PLAY = 設定"
iriverh100,iriverh120,iriverh300: "NAVI = 設定"
mpiohd300: "ENTER = 設定"
mrobe500: "HEART = Set"
rtc: "ON = 設定"
sansaclip*,sansaconnect,sansafuze*: "SELECT = Set"
vibe500: "OK = 設定"
</dest>
@ -8944,8 +8944,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -9022,7 +9022,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -9724,7 +9724,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10050,7 +10050,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10287,7 +10287,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "偵測到按鍵時重置睡眠計時器"
@ -10301,7 +10301,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "開機即啓動睡眠計時"
@ -10329,7 +10329,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "單檔案斷點續撥"
@ -10792,7 +10792,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "設定為播放清單目錄位置"
@ -10876,7 +10876,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "開機即啓動睡眠計時"
@ -10890,7 +10890,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "偵測到按鍵時重置睡眠計時器"
@ -10904,7 +10904,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "單檔案斷點續撥"

View file

@ -231,8 +231,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2923,7 +2923,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Rolování obrazovky mimo"
@ -3250,7 +3250,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3267,7 +3267,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3763,22 +3763,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Nastavit"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Nastavit"
gogearsa9200,samsungyh*: "PLAY = Nastavit"
iriverh100,iriverh120,iriverh300: "NAVI = Nastavit"
mpiohd300: "ENTER = Nastavit"
mrobe500: "HEART = Nastavit"
rtc: "ON = Nastavit"
vibe500: "OK = Nastavit"
</dest>
<voice>
@ -3792,6 +3792,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3800,12 +3801,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Vrátit zpět"
gigabeatfx,mrobe500: "POWER = Vrátit zpět"
gigabeats,sansafuzeplus: "BACK = Vrátit zpět"
gogearsa9200: "LEFT = Vrátit zpět"
@ -3814,7 +3815,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Vrátit zpět"
iriverh100,iriverh120,iriverh300: "STOP = Vrátit zpět"
mrobe100: "DISPLAY = Vrátit zpět"
rtc: "OFF = Vrátit zpět"
samsungyh*: "REW = Vrátit zpět"
vibe500: "CANCEL = Vrátit zpět"
</dest>
@ -4271,7 +4271,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5426,7 +5426,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5684,7 +5684,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6706,7 +6706,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Hledat v playlistu"
@ -7084,10 +7084,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "vé bé er"
@ -7337,7 +7337,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9427,20 +9427,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Aktuální čas"
</dest>
<voice>
*: none
rtc: "Aktuální čas:"
rtc: "Aktuální čas"
</voice>
</phrase>
<phrase>
@ -10290,7 +10290,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10308,7 +10308,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -12250,7 +12250,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Pokračování přehrávání u všech skladeb"
@ -12306,7 +12306,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Nastavit jako složku pro katalog playlistů"
@ -12424,7 +12424,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Aktivovat časovač vypnutí při startu přehrávače"
@ -12528,7 +12528,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Stisk klávesy restartuje časovač vypnutí"

View file

@ -2857,7 +2857,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -2874,7 +2874,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3533,16 +3533,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Klokken er"
</dest>
<voice>
*: none
@ -3659,6 +3659,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3667,12 +3668,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "SLUK = Fortryd"
gigabeatfx,mrobe500: "TÆND/SLUK = Fortryd"
gigabeats: "TILBAGE = Fortryd"
gogearsa9200: "VENSTRE = Fortryd"
@ -3681,7 +3682,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "FORRIGE = Fortryd"
iriverh100,iriverh120,iriverh300: "STOP = Fortryd"
mrobe100: "VIS = Fortryd"
rtc: "SLUK = Fortryd"
samsungyh*: "REW = Fortryd"
vibe500: "C = Fortryd"
</dest>
@ -3856,7 +3856,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4064,10 +4064,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6841,7 +6841,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Skærm ruller ud"
@ -6900,7 +6900,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Søg i sætliste"
@ -7292,7 +7292,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -8238,7 +8238,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -9164,7 +9164,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -9347,22 +9347,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "Tænd = Indstil"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansae200*,sansafuze*: "VÆLG = Indstil"
gogearsa9200,samsungyh*: "SPIL = Indstil"
iriverh100,iriverh120,iriverh300: "NAVI = Indstil"
mpiohd300: "ENTER = Indstil"
mrobe500: "HJERTE = Indstil"
rtc: "Tænd = Indstil"
vibe500: "OK = Indstil"
</dest>
<voice>
@ -9785,8 +9785,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -10263,7 +10263,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10304,7 +10304,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -12230,7 +12230,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatisk fortsættelse"
@ -12424,7 +12424,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Vælg mappe til sætliste katalog"
@ -12567,7 +12567,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Nulstil auto-sluk ved tastetryk"
@ -12640,7 +12640,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Start auto-sluk ved opstart"

View file

@ -36,6 +36,7 @@
# - Johannes Rauh
# - Wilfried Winkler
# - Karl Huber
# - Yannic Schmidt
<phrase>
id: LANG_SET_BOOL_YES
desc: bool true representation
@ -247,8 +248,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2733,7 +2734,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Über Bildschirmrand scrollen"
@ -3019,7 +3020,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Kleinster Wert"
@ -3033,7 +3034,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Größter Wert"
@ -3345,63 +3346,6 @@
*: "Batteriekapazität"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "Batterietyp"
</dest>
<voice>
*: none
battery_types: "Batterietyp"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "~Alkaline"
xduoox3: "Neuer (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "~Alkaline"
xduoox3: "Nuwer 2000 milliamp hour"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "~NiMH"
xduoox3: "Älter (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "Nickel-Metallhydrid"
xduoox3: "Älter 1500 Milliamperestunden"
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3532,27 +3476,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Speichern"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Speichern"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Speichern"
gogearsa9200,samsungyh*: "PLAY = Speichern"
iriverh100,iriverh120,iriverh300: "NAVI = Speichern"
mpiohd300: "ENTER = Speichern"
mrobe500: "HEART = Speichern"
rtc: "ON = Speichern"
vibe500: "OK = Speichern"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3561,35 +3504,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Abbrechen"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Abbrechen"
gigabeatfx,mrobe500: "POWER = Abbrechen"
gigabeats,sansafuzeplus: "BACK = Abbrechen"
gogearsa9200: "LEFT = Abbrechen"
iaudiom5,iaudiox5: "RECORD = Abbrechen"
ipod*,mpiohd300,sansac200*: "MENU = Abbrechen"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Abbrechen"
iriverh100,iriverh120,iriverh300: "STOP = Abbrechen"
mrobe100: "DISPLAY = Abbrechen"
rtc: "OFF = Abbrechen"
samsungyh*: "REW = Abbrechen"
vibe500: "CANCEL = Abbrechen"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4023,7 +3965,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4667,7 +4609,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "Suche"
</voice>
</phrase>
<phrase>
@ -5030,7 +4972,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5779,20 +5721,6 @@
*: "Titel abgespeichert"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "Wiedergabelisten-Katalog"
</dest>
<voice>
*: "Wiedergabelisten-Katalog"
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6154,7 +6082,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Wiedergabeliste durchsuchen"
@ -6465,10 +6393,10 @@
*: "Album Artist"
</source>
<dest>
*: "Album-Künstler"
*: "Album Künstler"
</dest>
<voice>
*: "Album-Künstler"
*: "Album Künstler"
</voice>
</phrase>
<phrase>
@ -6504,10 +6432,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6743,7 +6671,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7229,7 +7157,7 @@
*: "Kann %s nicht öffnen"
</dest>
<voice>
*: ""
*: "Kann das Plugin nicht öffnen"
</voice>
</phrase>
<phrase>
@ -7243,7 +7171,7 @@
*: "Fehler beim Lesen von %s"
</dest>
<voice>
*: ""
*: "Fehler beim Lesen von Datei"
</voice>
</phrase>
<phrase>
@ -8681,16 +8609,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Uhrzeit"
</dest>
<voice>
*: none
@ -9302,7 +9230,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -9385,7 +9313,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -11199,7 +11127,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatisches Fortsetzen"
@ -11407,7 +11335,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Einschlaftimer bei Tastendruck zurücksetzen"
@ -11449,7 +11377,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Einschlaftimer automatisch starten"
@ -13013,20 +12941,6 @@
recording: "Aufnahmeverzeichnis"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Level 9: 1 Züge / 60 min"
</dest>
<voice>
*: "Level 9, 1 Züge pro 60 Minuten"
</voice>
</phrase>
<phrase>
id: LANG_CHANGE_VOLUME
desc: in playback control menu
@ -13340,13 +13254,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Rockbox Anordnung Hauptmenü"
*: ""
</dest>
<voice>
*: ""
@ -13532,20 +13446,6 @@
*: "Größe"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_RESTART_PLAYBACK
desc: in the mpegplayer settings menu
@ -13681,20 +13581,6 @@
*: "Nächster Titel"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "Zwischenspeicher wird bei Neustart neu erstellt"
</dest>
<voice>
*: "Zwischenspeicher wird bei Neustart neu erstellt"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_THINKING
desc: in chessbox
@ -13975,16 +13861,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "Element umschalten"
*: ""
</dest>
<voice>
*: "Element umschalten"
*: ""
</voice>
</phrase>
<phrase>
@ -14279,20 +14165,6 @@
*: "Dateien"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Level 10: 1 Zug / 600 min"
</dest>
<voice>
*: "Level 10, 1 Zug pro 600 Minuten"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_MENU_NEW_GAME
desc: in the chessbox menu
@ -14349,20 +14221,6 @@
*: "Wormlet spielen!"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Level 8: 1 Zug / 15 min"
</dest>
<voice>
*: "Level 8, 1 Zug pro 15 Minuten"
</voice>
</phrase>
<phrase>
id: LANG_SLIDESHOW_MODE
desc: in the imageviewer settings menu
@ -14466,7 +14324,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Lautstärke Sprachansage"
@ -15120,7 +14978,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Setze WPS Kontext Zusatzprogramm"
@ -16573,3 +16431,507 @@
*: "Wiedergabliste beendet. Erneut abspielen?"
</voice>
</phrase>
<phrase>
id: LANG_DISPLAY_SPECIAL_CHARACTER
desc: Special character (japanese, accents, etc)
user: core
<source>
*: "Special character"
</source>
<dest>
*: "Sonderzeichen"
</dest>
<voice>
*: "Sonderzeichen"
</voice>
</phrase>
<phrase>
id: LANG_ID3_ALBUMARTISTS
desc: in tag viewer
user: core
<source>
*: "Album Artists"
</source>
<dest>
*: "Album Künstler"
</dest>
<voice>
*: "Album Künstler"
</voice>
</phrase>
<phrase>
id: LANG_SHOW_FIRST_LETTER
desc: Database menu
user: core
<source>
*: "First Letter"
</source>
<dest>
*: "Anfangsbuchstabe"
</dest>
<voice>
*: "Anfangsbuchstabe"
</voice>
</phrase>
<phrase>
id: LANG_SHOW_BY_FIRST_LETTER
desc: Database menu
user: core
<source>
*: "By First Letter..."
</source>
<dest>
*: "Nach Anfangsbuchstaben"
</dest>
<voice>
*: "Nach Anfangsbuchstaben"
</voice>
</phrase>
<phrase>
id: LANG_SHOW_ARTISTS_BY_FIRST_LETTER
desc: Database menu
user: core
<source>
*: "Artists by First Letter"
</source>
<dest>
*: "Künstler nach Anfangsbuchstaben"
</dest>
<voice>
*: "Künstler nach Anfangsbuchstaben"
</voice>
</phrase>
<phrase>
id: LANG_SHOW_ALBUM_ARTISTS_BY_FIRST_LETTER
desc: Database menu
user: core
<source>
*: "Album Artists by First Letter"
</source>
<dest>
*: "Album Künstler nach Anfangsbuchstaben"
</dest>
<voice>
*: "Album Künstler nach Anfangsbuchstaben"
</voice>
</phrase>
<phrase>
id: LANG_SHOW_ALBUMS_BY_FIRST_LETTER
desc: Database menu
user: core
<source>
*: "Albums by First Letter"
</source>
<dest>
*: "Alben nach Anfangsbuchstaben"
</dest>
<voice>
*: "Alben nach Anfangsbuchstaben"
</voice>
</phrase>
<phrase>
id: LANG_SHOW_TRACKS_BY_FIRST_LETTER
desc: Database menu
user: core
<source>
*: "Tracks by First Letter"
</source>
<dest>
*: "Lieder nach Anfangsbuchstaben"
</dest>
<voice>
*: "Lieder nach Anfangsbuchstaben"
</voice>
</phrase>
<phrase>
id: LANG_ARTISTS
desc: Database menu
user: core
<source>
*: "Artists"
</source>
<dest>
*: "Künstler"
</dest>
<voice>
*: "Künstler"
</voice>
</phrase>
<phrase>
id: LANG_ALBUMS
desc: Database menu
user: core
<source>
*: "Albums"
</source>
<dest>
*: "Alben"
</dest>
<voice>
*: "Alben"
</voice>
</phrase>
<phrase>
id: LANG_TRACKS
desc: Database menu
user: core
<source>
*: "Tracks"
</source>
<dest>
*: "Lieder"
</dest>
<voice>
*: "Lieder"
</voice>
</phrase>
<phrase>
id: LANG_SHUFFLE_SONGS
desc: Database menu
user: core
<source>
*: "Shuffle Songs"
</source>
<dest>
*: "Zufallswiedergabe"
</dest>
<voice>
*: "Zufallswiedergabe"
</voice>
</phrase>
<phrase>
id: LANG_FILENAME
desc: Database and recording menus
user: core
<source>
*: "Filename"
</source>
<dest>
*: "Dateinamen"
</dest>
<voice>
*: "Dateinamen"
</voice>
</phrase>
<phrase>
id: LANG_TITLE_WITH_DURATION
desc: Database menu
user: core
<source>
*: "Title (with track duration)"
</source>
<dest>
*: "Titel (mit Spieldauer)"
</dest>
<voice>
*: "Titel mit Spieldauer"
</voice>
</phrase>
<phrase>
id: LANG_USER_RATING
desc: Database menu
user: core
<source>
*: "User Rating"
</source>
<dest>
*: "Benutzerbewertung"
</dest>
<voice>
*: "Benutzerbewertung"
</voice>
</phrase>
<phrase>
id: LANG_SEARCH
desc: Database menu
user: core
<source>
*: "Search"
</source>
<dest>
*: "Suche"
</dest>
<voice>
*: "Suche"
</voice>
</phrase>
<phrase>
id: LANG_SEARCH_BY
desc: Database menu
user: core
<source>
*: "Search by..."
</source>
<dest>
*: "Suche nach"
</dest>
<voice>
*: "Suche nach"
</voice>
</phrase>
<phrase>
id: LANG_RECENTLY_ADDED
desc: Database menu
user: core
<source>
*: "Recently Added"
</source>
<dest>
*: "Kürzlich hinzugefügt"
</dest>
<voice>
*: "Kürzlich hinzugefügt"
</voice>
</phrase>
<phrase>
id: LANG_PLAYBACK_HISTORY
desc: Database menu
user: core
<source>
*: "Playback History"
</source>
<dest>
*: "Wiedergabeverlauf"
</dest>
<voice>
*: "Wiedergabeverlauf"
</voice>
</phrase>
<phrase>
id: LANG_CUSTOM_MENU
desc: Database menu
user: core
<source>
*: "Custom menu"
</source>
<dest>
*: "individuelles Menü"
</dest>
<voice>
*: "individuelles Menü"
</voice>
</phrase>
<phrase>
id: LANG_SAME_AS_CURRENT
desc: Database menu
user: core
<source>
*: "Same as currently played track"
</source>
<dest>
*: "Gleich wie der aktuell gespielte Titel"
</dest>
<voice>
*: "Gleich wie der aktuell gespielte Titel"
</voice>
</phrase>
<phrase>
id: LANG_DIRECTORY
desc: Database menu
user: core
<source>
*: "Directory"
</source>
<dest>
*: "Verzeichnis"
</dest>
<voice>
*: "Verzeichnis"
</voice>
</phrase>
<phrase>
id: LANG_ALBUMS_BY_YEAR
desc: Database menu
user: core
<source>
*: "Albums by Year"
</source>
<dest>
*: "Alben nach Jahr"
</dest>
<voice>
*: "Alben nach Jahr"
</voice>
</phrase>
<phrase>
id: LANG_ALBUMS_BETWEEN_YEARS
desc: Database menu
user: core
<source>
*: "Albums between Years"
</source>
<dest>
*: "Alben zwischen den Jahren"
</dest>
<voice>
*: "Alben zwischen den Jahren"
</voice>
</phrase>
<phrase>
id: LANG_ARTISTS_BETWEEN_YEARS
desc: Database menu
user: core
<source>
*: "Artists between Years"
</source>
<dest>
*: "Künstler zwischen den Jahren"
</dest>
<voice>
*: "Künstler zwischen den Jahren"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_MOST_PLAYED
desc: Database menu
user: core
<source>
*: "Most played (Plays|Score)"
</source>
<dest>
*: "Meistgespielt (Anzahl|Punktzahl)"
</dest>
<voice>
*: "Meistgespielt nach Anzahl dann nach Punktzahl"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_RECENTLY_PLAYED_TRACKS
desc: Database menu
user: core
<source>
*: "Recently played tracks"
</source>
<dest>
*: "Kürzlich gespielt"
</dest>
<voice>
*: "Kürzlich gespielt"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_NEVER_PLAYED_TRACKS
desc: Database menu
user: core
<source>
*: "Never played tracks"
</source>
<dest>
*: "Noch nie gespielt"
</dest>
<voice>
*: "Noch nie gespielt"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_FAVOURITE_ARTISTS
desc: Database menu
user: core
<source>
*: "Favourite artists"
</source>
<dest>
*: "Lieblingskünstler"
</dest>
<voice>
*: "Lieblingskünstler"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_FAVOURITE_ALBUMS
desc: Database menu
user: core
<source>
*: "Favourite albums"
</source>
<dest>
*: "Lieblingsalben"
</dest>
<voice>
*: "Lieblingsalben"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_RECENT_FAVOURITES
desc: Database menu
user: core
<source>
*: "Recent favourites"
</source>
<dest>
*: "Aktuelle Favoriten"
</dest>
<voice>
*: "Aktuelle Favoriten"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_NEW_FAVOURITES
desc: Database menu
user: core
<source>
*: "New favourites"
</source>
<dest>
*: "Neue Favoriten"
</dest>
<voice>
*: "Neue Favoriten"
</voice>
</phrase>
<phrase>
id: LANG_HISTORY_FORGOTTEN_FAVOURITES
desc: Database menu
user: core
<source>
*: "Forgotten favourites"
</source>
<dest>
*: "Vergessene Favoriten"
</dest>
<voice>
*: "Vergessene Favoriten"
</voice>
</phrase>
<phrase>
id: LANG_TRACKS_BY
desc: Database menu
user: core
<source>
*: "Tracks by"
</source>
<dest>
*: "Titel nach"
</dest>
<voice>
*: "Titel nach"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[Nach Album]"
</dest>
<voice>
*: "Alle Titel sortiert nach Album"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Playlists sortieren"
</dest>
<voice>
*: "playlists sortieren"
</voice>
</phrase>

View file

@ -2961,7 +2961,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Kerimiseribad vaateväljast väljas"
@ -3199,7 +3199,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Väikseim ulatus"
@ -3213,7 +3213,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Suurim ulatus"
@ -3549,7 +3549,7 @@
desc: text for onplay menu entry
user: core
<source>
*: "Set As Backdrop"
*: "Set as Backdrop"
</source>
<dest>
*: "Sea backdropina"
@ -3787,7 +3787,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Otsi esitusloendist"
@ -3984,17 +3984,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: ""
*: none
rtc: "Current Time"
</source>
<dest>
*: ""
*: none
rtc: "Kellaaeg"
</dest>
<voice>
*: "Kellaaeg:"
*: none
rtc: "Kellaaeg"
</voice>
</phrase>
<phrase>
@ -4304,10 +4307,10 @@
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
user: core
<source>
*: "Waking Up In %d:%02d"
*: "Waking Up in %d:%02d"
</source>
<dest>
*: "Waking Up In %d:%02d"
*: "Waking Up in %d:%02d"
</dest>
<voice>
*: ""
@ -4550,10 +4553,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"

View file

@ -225,8 +225,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -1265,7 +1265,7 @@
*: "Fade on Stop/Pause"
</dest>
<voice>
*: "Fade On Stop and Pause"
*: "Fade on Stop and Pause"
</voice>
</phrase>
<phrase>
@ -2741,13 +2741,13 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</dest>
<voice>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</voice>
</phrase>
<phrase>
@ -3027,13 +3027,13 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Minimum Of Range"
*: "Minimum of Range"
</dest>
<voice>
*: "Minimum Of Range"
*: "Minimum of Range"
</voice>
</phrase>
<phrase>
@ -3041,13 +3041,13 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Maximum Of Range"
*: "Maximum of Range"
</dest>
<voice>
*: "Maximum Of Range"
*: "Maximum of Range"
</voice>
</phrase>
<phrase>
@ -3353,63 +3353,6 @@
*: "Battery Capacity"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "Battery Type"
</dest>
<voice>
*: none
battery_types: "Battery type"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "Alkaline"
xduoox3: "Newer 2000 milliamp hour"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "Nickel metal hydride"
xduoox3: "Older 1500 milliamp hour"
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3540,27 +3483,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3569,35 +3511,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4031,11 +3972,11 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</dest>
<voice>
*: none
@ -4675,7 +4616,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "Scanning"
</voice>
</phrase>
<phrase>
@ -5038,15 +4979,15 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</dest>
<voice>
*: none
recording: "Same As Source"
recording: "Same as Source"
</voice>
</phrase>
<phrase>
@ -5787,20 +5728,6 @@
*: "tracks saved"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "Playlist Catalog"
</dest>
<voice>
*: "Playlist Catalog"
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6162,13 +6089,13 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Search In Playlist"
*: "Search in Playlist"
</dest>
<voice>
*: "Search In Playlist"
*: "Search in Playlist"
</voice>
</phrase>
<phrase>
@ -6512,10 +6439,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6751,15 +6678,15 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</dest>
<voice>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</voice>
</phrase>
<phrase>
@ -7237,7 +7164,7 @@
*: "Can't open %s"
</dest>
<voice>
*: ""
*: "Can't open plugin"
</voice>
</phrase>
<phrase>
@ -7251,7 +7178,7 @@
*: "Failed reading %s"
</dest>
<voice>
*: ""
*: "Failed reading file"
</voice>
</phrase>
<phrase>
@ -8689,16 +8616,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
@ -9157,13 +9084,13 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</dest>
<voice>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</voice>
</phrase>
<phrase>
@ -9317,7 +9244,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9335,15 +9262,15 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</dest>
<voice>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</voice>
</phrase>
<phrase>
@ -11235,13 +11162,13 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatic resume"
*: "Automatic Resume"
</dest>
<voice>
*: "Automatic resume"
*: "Automatic Resume"
</voice>
</phrase>
<phrase>
@ -11381,13 +11308,13 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</dest>
<voice>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</voice>
</phrase>
<phrase>
@ -11513,13 +11440,13 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</dest>
<voice>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</voice>
</phrase>
<phrase>
@ -12490,20 +12417,6 @@
*: "Track elapsed"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_TRK_REMAINING
desc: playing time screen
@ -13244,48 +13157,6 @@
*: "Level 7, 40 moves per 240 minutes"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Level 8: 1 move / 15 min"
</dest>
<voice>
*: "Level 8, 1 move per 15 minutes"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Level 9: 1 move / 60 min"
</dest>
<voice>
*: "Level 9, 1 move per 60 minutes"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Level 10: 1 move / 600 min"
</dest>
<voice>
*: "Level 10, 1 move per 600 minutes"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14098,16 +13969,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "Toggle Item"
*: ""
</dest>
<voice>
*: "Toggle Item"
*: ""
</voice>
</phrase>
<phrase>
@ -14168,13 +14039,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Rockbox Main Menu Order"
*: ""
</dest>
<voice>
*: ""
@ -14677,20 +14548,6 @@
*: "No album art found"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "Cache will be rebuilt on next restart"
</dest>
<voice>
*: "Cache will be rebuilt on next restart"
</voice>
</phrase>
<phrase>
id: LANG_ERROR_WRITING_CONFIG
desc: in the pictureflow splash messages
@ -15099,10 +14956,10 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</dest>
<voice>
*: "Set WPS Context Plugin"
@ -15514,7 +15371,7 @@
*: "Artist + Name"
</dest>
<voice>
*: "Artist And Name"
*: "Artist and Name"
</voice>
</phrase>
<phrase>
@ -15528,7 +15385,7 @@
*: "Artist + Year"
</dest>
<voice>
*: "Artist And Year"
*: "Artist and Year"
</voice>
</phrase>
<phrase>
@ -17028,3 +16885,31 @@
*: "Tracks by"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Sort Playlists"
</dest>
<voice>
*: "sort playlists"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[By album]"
</dest>
<voice>
*: "All tracks sorted by album"
</voice>
</phrase>

View file

@ -4,7 +4,6 @@
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -14,83 +13,80 @@
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# This is the master of the language files. This is the original, the one with
# all the existing strings Rockbox features.
# This is the root source of truth for Rockbox's translatable strings,
# contianing all strings for all Rockbox features. All other languages
# overlay on top of this one.
#
# The target names used for target-specific strings are set in the ARCHOS
# variable in the root Makefile
# IMPORTANT NOTES:
#
# *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
# and voice files, so instead of removing a unused <phrase>, change the
# desc field to "deprecated" (without quotes) and blank the strings.
# Do *not* change the targets.
# * Due to strict run-time checks, binary lang and voice files are not
# portable from one device to another. They may not even be compatible
# from one build to another on the same device, especially if phrases
# or strings were added (or removed) from this file, or if the features
# list for your device have changed.
#
# 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 <phrase>, 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.
# As this file is both the master for the language system, as well as the
# source for generating english strings, all <source> strings *must* be
# *identical* to the <dest> strings within the english.lang file. The
# <source> strings are referenced by other languages when doing updates,
# while the <dest> strings are used when this file is used to as the
# source of english strings for a particular target. In other files,
# the <dest> string is the translated text.
#
# 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.
# 'Targets' refer to both the unique device name (as specified in the
# configure file and stored in MODELNAME of the top-level Makefile) and
# to various common features that are shared between more than one
# device. If mixed, the feature string must be placed at the top as a
# default, so it gets overwritten by subsequent device strings.
# See apps/features.txt for all available features that can be used
# instead of or in addition to the device name itself.
#
# The "voice" entry contains how we want the speech UI to pronounce the phrase.
# All phrases have a default string, designated with a target
# of '*' (eg: *: "default text") that will be used if no other target
# matches the particular device you are building for. If you want to
# designate a particular string for a specific target, you would write
# it like:
# target: "target-specific string"
# and locate it below the the default line. If the phrase will not be
# used for all targets, set the default to none, eg:
# *: none
# to ensure it will not be included when it is not needed.
#
# Since this file is both the master for the language system, as well as the
# source for generating english strings, make sure that all <source> strings
# are *identical* to the <dest> strings within the english.lang file. The
# <source> strings are the ones that'll be exposed and used by other languages
# 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.
# Phrases starting with LANG_ are displayed in the UI, and are usually
# voiced as well. Phrases starting with VOICE_ are only voiced. They
# *must* have empty (ie "") <source> and <dest> strings, and non-empty
# <voice> strings.
#
# 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 individual entries under the <voice> section of a phrase contain
# the text the speech UI will use to pronounce the phrase. This is
# usually the same as the <dest> section, albeit with some limitations.
# For example, most punctuation and any dynamic strings (ie with with C
# format specifiers) are not allowed. If a phrase is not intended to be
# voiced, you may use either an empty string (ie "") or 'none' under its
# <voice> section.
#
# 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*
# In <voice> sections, keep in mind that the text will be spoken by TTS
# engines, so some changes from the <dest> may be necessary for clarity.
# For example, you may want to separate acronyms into their individual
# letters so they are spoken separately, or expand abbreviations into
# their full form. Some adjustments are made automatically; please see
# tools/voice-corrections.txt for further details.
#
# To validate the contents of a translation, you can use the Rockbox
# translation site at https://translate.rockbox.org. Alternatively, you
# can use the command-line 'updatelang' tool as follows:
#
# tools/updatelang apps/lang/english.lang path/to/translation.lang path/to/updated.lang
#
# You can then examine the updated file. All problematic areas will be marked with '###'
#
####
# This is the first item, and will be shown when P2STR is passed a NULL pointer
<phrase>
id: LANG_ROCKBOX_TITLE
desc: main menu title
@ -105,7 +101,6 @@
*: "Rockbox"
</voice>
</phrase>
# First item will be shown when P2STR is passed a NULL pointer
<phrase>
id: LANG_SET_BOOL_YES
desc: bool true representation
@ -317,8 +312,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -1357,7 +1352,7 @@
*: "Fade on Stop/Pause"
</dest>
<voice>
*: "Fade On Stop and Pause"
*: "Fade on Stop and Pause"
</voice>
</phrase>
<phrase>
@ -2875,13 +2870,13 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</dest>
<voice>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</voice>
</phrase>
<phrase>
@ -3175,13 +3170,13 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Minimum Of Range"
*: "Minimum of Range"
</dest>
<voice>
*: "Minimum Of Range"
*: "Minimum of Range"
</voice>
</phrase>
<phrase>
@ -3189,13 +3184,13 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Maximum Of Range"
*: "Maximum of Range"
</dest>
<voice>
*: "Maximum Of Range"
*: "Maximum of Range"
</voice>
</phrase>
<phrase>
@ -3501,63 +3496,6 @@
*: "Battery Capacity"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: deprecated
user: core
<source>
*: none
battery_types: ""
</source>
<dest>
*: none
battery_types: ""
</dest>
<voice>
*: none
battery_types: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: deprecated
user: core
<source>
*: none
battery_types: ""
xduoox3: ""
</source>
<dest>
*: none
battery_types: ""
xduoox3: ""
</dest>
<voice>
*: none
battery_types: ""
xduoox3: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: deprecated
user: core
<source>
*: none
battery_types: ""
xduoox3: ""
</source>
<dest>
*: none
battery_types: ""
xduoox3: ""
</dest>
<voice>
*: none
battery_types: ""
xduoox3: ""
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3688,27 +3626,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3717,35 +3654,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4179,11 +4115,11 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</dest>
<voice>
*: none
@ -4823,7 +4759,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "Scanning"
</voice>
</phrase>
<phrase>
@ -5186,15 +5122,15 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</dest>
<voice>
*: none
recording: "Same As Source"
recording: "Same as Source"
</voice>
</phrase>
<phrase>
@ -5935,20 +5871,6 @@
*: "tracks saved"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6310,13 +6232,13 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Search In Playlist"
*: "Search in Playlist"
</dest>
<voice>
*: "Search In Playlist"
*: "Search in Playlist"
</voice>
</phrase>
<phrase>
@ -6674,10 +6596,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6913,15 +6835,15 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</dest>
<voice>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</voice>
</phrase>
<phrase>
@ -6994,7 +6916,6 @@
*: "Add Current to Shortcuts"
</voice>
</phrase>
<phrase>
id: LANG_PITCH
desc: "pitch" in the pitch screen
@ -7414,7 +7335,7 @@
*: "Can't open %s"
</dest>
<voice>
*: ""
*: "Can't open plugin"
</voice>
</phrase>
<phrase>
@ -7428,7 +7349,7 @@
*: "Failed reading %s"
</dest>
<voice>
*: ""
*: "Failed reading file"
</voice>
</phrase>
<phrase>
@ -8866,16 +8787,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
@ -9334,13 +9255,13 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</dest>
<voice>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</voice>
</phrase>
<phrase>
@ -9494,7 +9415,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9512,15 +9433,15 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</dest>
<voice>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</voice>
</phrase>
<phrase>
@ -11426,13 +11347,13 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatic resume"
*: "Automatic Resume"
</dest>
<voice>
*: "Automatic resume"
*: "Automatic Resume"
</voice>
</phrase>
<phrase>
@ -11572,13 +11493,13 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</dest>
<voice>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</voice>
</phrase>
<phrase>
@ -11704,13 +11625,13 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</dest>
<voice>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</voice>
</phrase>
<phrase>
@ -12681,20 +12602,6 @@
*: "Track elapsed"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_TRK_REMAINING
desc: playing time screen
@ -14247,16 +14154,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "Toggle Item"
*: ""
</dest>
<voice>
*: "Toggle Item"
*: ""
</voice>
</phrase>
<phrase>
@ -14317,13 +14224,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Rockbox Main Menu Order"
*: ""
</dest>
<voice>
*: ""
@ -14826,20 +14733,6 @@
*: "No album art found"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_ERROR_WRITING_CONFIG
desc: in the pictureflow splash messages
@ -15248,10 +15141,10 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</dest>
<voice>
*: "Set WPS Context Plugin"
@ -15663,7 +15556,7 @@
*: "Artist + Name"
</dest>
<voice>
*: "Artist And Name"
*: "Artist and Name"
</voice>
</phrase>
<phrase>
@ -15677,7 +15570,7 @@
*: "Artist + Year"
</dest>
<voice>
*: "Artist And Year"
*: "Artist and Year"
</voice>
</phrase>
<phrase>
@ -16958,6 +16851,20 @@
*: "View Album Art"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[By album]"
</dest>
<voice>
*: "All tracks sorted by album"
</voice>
</phrase>
<phrase>
id: LANG_HP_LO_SELECT
desc: Output Select
@ -16998,15 +16905,15 @@
user: core
<source>
*: none
lineout_poweroff,erosqnative: "Line Out"
erosqnative,lineout_poweroff: "Line Out"
</source>
<dest>
*: none
lineout_poweroff,erosqnative: "Line Out"
erosqnative,lineout_poweroff: "Line Out"
</dest>
<voice>
*: none
lineout_poweroff,erosqnative: "Line Out"
erosqnative,lineout_poweroff: "Line Out"
</voice>
</phrase>
<phrase>
@ -17065,3 +16972,17 @@
*: "Playlist finished. Play again?"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Sort Playlists"
</dest>
<voice>
*: "sort playlists"
</voice>
</phrase>

File diff suppressed because it is too large Load diff

View file

@ -3104,7 +3104,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Ekrano Rulumas Ekster Vido"
@ -3342,7 +3342,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Ampleksa Minimumo"
@ -3356,7 +3356,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Ampleksa Maksimumo"
@ -3678,7 +3678,7 @@
desc: text for onplay menu entry
user: core
<source>
*: "Set As Backdrop"
*: "Set as Backdrop"
</source>
<dest>
*: "Uzi kiel Fono"
@ -3916,7 +3916,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Serĉi En Leglisto"
@ -4109,17 +4109,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: ""
*: none
rtc: "Current Time"
</source>
<dest>
*: ""
*: none
rtc: "Nuna Tempo"
</dest>
<voice>
*: "Nuna Tempo:"
*: none
rtc: "Nuna Tempo"
</voice>
</phrase>
<phrase>
@ -4415,7 +4418,7 @@
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
user: core
<source>
*: "Waking Up In %d:%02d"
*: "Waking Up in %d:%02d"
</source>
<dest>
*: "Vekonta Je %d:%02d"
@ -4659,10 +4662,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"

View file

@ -3116,7 +3116,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Rivien vieritys pois näytöstä"
@ -3378,7 +3378,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3395,7 +3395,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3736,7 +3736,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3979,7 +3979,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Etsi soittolistalta"
@ -4185,20 +4185,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Nykyinen aika"
</dest>
<voice>
*: none
rtc: "Nykyinen aika:"
rtc: "Nykyinen aika"
</voice>
</phrase>
<phrase>
@ -4311,6 +4311,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -4319,12 +4320,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Peruuta"
gigabeatfx,mrobe500: "POWER = Peruuta"
gigabeats,sansafuzeplus: "BACK = Peruuta"
gogearsa9200: "VASEN = Peruuta"
@ -4333,7 +4334,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Peruuta"
iriverh100,iriverh120,iriverh300: "STOP = Peruuta"
mrobe100: "DISPLAY = Peruuta"
rtc: "OFF = Peruuta"
samsungyh*: "REW = Peruuta"
vibe500: "CANCEL = Peruuta"
</dest>
@ -4508,7 +4508,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4781,10 +4781,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -8362,7 +8362,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -9137,7 +9137,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -9320,22 +9320,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Aseta"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Aseta"
gogearsa9200,samsungyh*: "PLAY = Aseta"
iriverh100,iriverh120,iriverh300: "NAVI = Aseta"
mpiohd300: "ENTER = Aseta"
mrobe500: "HEART = Aseta"
rtc: "ON = Aseta"
vibe500: "OK = Aseta"
</dest>
<voice>
@ -9675,8 +9675,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -10258,7 +10258,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10276,7 +10276,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11437,7 +11437,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Jatka automaattisesti"
@ -11755,7 +11755,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Aseta soittolistaluettelon hakemistoksi"
@ -12282,7 +12282,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Käynnistä uniajastin uudelleen näppäinpainalluksesta"
@ -12496,7 +12496,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Käynnistä uniajastin laitetta käynnistettäessä"

View file

@ -258,8 +258,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -830,10 +830,10 @@
*: "Crossfeed"
</source>
<dest>
*: "Crossfeed"
*: "Diffusion croisée (Crossfeed)"
</dest>
<voice>
*: "Crossfeed"
*: "Diffusion croisée dite Crossfeed"
</voice>
</phrase>
<phrase>
@ -2194,6 +2194,20 @@
*: "Toutes les pistes"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[Par album]"
</dest>
<voice>
*: "Toutes les pistes triées par album"
</voice>
</phrase>
<phrase>
id: LANG_DISPLAY
desc: in settings_menu()
@ -2802,7 +2816,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Défilement hors de l'écran"
@ -3102,7 +3116,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Minimum de l'intervalle"
@ -3116,7 +3130,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Maximum de l'intervalle"
@ -3430,59 +3444,53 @@
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Battery Type"
battery_types: ""
</source>
<dest>
*: none
battery_types: "Type de batterie"
battery_types: ""
</dest>
<voice>
*: none
battery_types: "Type de batterie"
battery_types: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "Alcaline"
xduoox3: "Nouveau (2000 mAh)"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "Alcaline"
xduoox3: "Nouveau 2000 milliampère heure"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "~NiMH"
xduoox3: "Ancien (1500 mAh)"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "Nickel-Métal Hydrure"
xduoox3: "Ancien 1500 milliampère heure"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
@ -3615,22 +3623,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Valider"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Valider"
gogearsa9200,samsungyh*: "PLAY = Valider"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Valider"
iriverh100,iriverh120,iriverh300: "NAVI = Valider"
mpiohd300: "ENTER = Valider"
mrobe500: "HEART = Valider"
rtc: "ON = Valider"
vibe500: "OK = Valider"
</dest>
<voice>
@ -3644,29 +3652,29 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Annuler"
gigabeatfx,mrobe500: "POWER = Annuler"
gigabeats,sansafuzeplus: "BACK = Annuler"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Annuler"
gogearsa9200: "LEFT = Annuler"
iaudiom5,iaudiox5: "RECORD = Annuler"
ipod*,mpiohd300,sansac200*: "MENU = Annuler"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Annuler"
iriverh100,iriverh120,iriverh300: "STOP = Annuler"
mrobe100: "DISPLAY = Annuler"
rtc: "OFF = Annuler"
samsungyh*: "REW = Annuler"
vibe500: "C = Annuler"
</dest>
@ -4106,7 +4114,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4981,11 +4989,11 @@
</source>
<dest>
*: none
recording: "MPEG Layer 3"
recording: "~MPEG Layer 3"
</dest>
<voice>
*: none
recording: "MPEG Layer 3"
recording: "~MPEG Layer 3"
</voice>
</phrase>
<phrase>
@ -5113,7 +5121,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5862,16 +5870,16 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
desc: deprecated
user: core
<source>
*: "Playlist Catalogue"
*: ""
</source>
<dest>
*: "Catalogue de listes de lecture"
*: ""
</dest>
<voice>
*: "Catalogue de listes de lecture"
*: ""
</voice>
</phrase>
<phrase>
@ -6235,7 +6243,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Rechercher dans liste de lecture"
@ -6599,10 +6607,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6838,7 +6846,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -8758,7 +8766,7 @@
*: ""
</dest>
<voice>
*: "cuesheet"
*: "~cuesheet"
</voice>
</phrase>
<phrase>
@ -8776,16 +8784,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Temps actuel"
</dest>
<voice>
*: none
@ -9390,7 +9398,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9408,7 +9416,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -9663,7 +9671,7 @@
</source>
<dest>
*: none
recording: "CLIP:"
recording: "~CLIP:"
</dest>
<voice>
*: none
@ -11277,7 +11285,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Reprise automatique"
@ -11437,7 +11445,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Lancer la minuterie d'arrêt au démarrage"
@ -11527,7 +11535,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Redémarrer la mise en veille programmable sur pression d'une touche"
@ -13204,11 +13212,11 @@
lowmem: none
</source>
<dest>
*: "Panning Separation"
*: "Séparation Panoramique"
lowmem: none
</dest>
<voice>
*: "Panning Separation"
*: "Séparation Panoramique"
lowmem: none
</voice>
</phrase>
@ -13753,16 +13761,16 @@
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
desc: deprecated
user: core
<source>
*: "Cache will be rebuilt on next restart"
*: ""
</source>
<dest>
*: "Le cache sera reconstruit au prochain redémarrage"
*: ""
</dest>
<voice>
*: "Le cache sera reconstruit au prochain redémarrage"
*: ""
</voice>
</phrase>
<phrase>
@ -14152,20 +14160,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Niveau 10: 1 mouvement / 600 minutes"
</dest>
<voice>
*: "Niveau 10, 1 mouvement par 600 minutes"
</voice>
</phrase>
<phrase>
id: VOICE_BAT_BENCH_KEYS
desc: Battery bench start up message
@ -14180,20 +14174,6 @@
*: "Appuyer sur lecture pour lancer le test batterie ou sur stop pour annuler"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Niveau 8: 1 mouvement / 15 minutes"
</dest>
<voice>
*: "Niveau 8, 1 mouvement par 15 minutes"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_AVG_TRACK_SIZE
desc: playing time screen
@ -14452,20 +14432,6 @@
*: "Taille de la nourriture"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Niveau 9: 1 mouvement / 60 minutes"
</dest>
<voice>
*: "Niveau 9, 1 mouvement par 60 minutes"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_MENU_SELECT_OTHER_GAME
desc: in the chessbox menu
@ -14578,7 +14544,7 @@
*: ""
</dest>
<voice>
*: "Battery bench is already running"
*: "La mesure des performances de la batterie est déjà en cours d'exécution"
</voice>
</phrase>
<phrase>
@ -14592,7 +14558,7 @@
*: ""
</dest>
<voice>
*: "GNU Chess"
*: "GNU Échecs"
</voice>
</phrase>
<phrase>
@ -14656,7 +14622,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Volume des messages vocaux"
@ -14675,11 +14641,11 @@
</source>
<dest>
*: none
filter_roll_off: "Short Sharp"
filter_roll_off: "Rapide court"
</dest>
<voice>
*: none
filter_roll_off: "Short Sharp"
filter_roll_off: "Rapide court"
</voice>
</phrase>
<phrase>
@ -14967,7 +14933,7 @@
</source>
<dest>
*: "Appuyer sur GAUCHE pour annuler."
android,hifietma*,zenvision,vibe500: "Appuyer sur RETOUR pour annuler."
android,hifietma*,vibe500,zenvision: "Appuyer sur RETOUR pour annuler."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Appuyer sur ETEINDRE pour annuler."
ihifi760,ihifi960: "Double appuis sur RETOURNER pour annuler."
ihifi770,ihifi770c,ihifi800: "Appuyer sur ACCEUIL pour annuler."
@ -14981,7 +14947,7 @@
</dest>
<voice>
*: "Appuyer sur GAUCHE pour annuler."
android,hifietma*,zenvision,vibe500: "Appuyer sur RETOUR pour annuler."
android,hifietma*,vibe500,zenvision: "Appuyer sur RETOUR pour annuler."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Appuyer sur ETEINDRE pour annuler."
ihifi760,ihifi960: "Double appuis sur RETOURNER pour annuler."
ihifi770,ihifi770c,ihifi800: "Appuyer sur ACCEUIL pour annuler."
@ -15226,7 +15192,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Définir le Plugin de Contexte WPS"
@ -15495,10 +15461,10 @@
*: "List Wraparound"
</source>
<dest>
*: "List Wraparound"
*: "Navigation des listes d'un bout à l'autre"
</dest>
<voice>
*: "List Wraparound"
*: "Navigation des listes d'un bout à l'autre"
</voice>
</phrase>
<phrase>
@ -16550,10 +16516,10 @@
*: "Albums"
</source>
<dest>
*: "Albums"
*: "~Albums"
</dest>
<voice>
*: "Albums"
*: "~Albums"
</voice>
</phrase>
<phrase>
@ -16586,7 +16552,7 @@
</phrase>
<phrase>
id: LANG_FILENAME
desc: Database menu
desc: Database and recording menus
user: core
<source>
*: "Filename"

View file

@ -2120,7 +2120,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -2137,7 +2137,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -2778,20 +2778,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Hora actual"
</dest>
<voice>
*: none
rtc: "Hora actual:"
rtc: "Hora actual"
</voice>
</phrase>
<phrase>
@ -2904,6 +2904,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -2912,12 +2913,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = desfacer"
gigabeatfx,mrobe500: "POWER = desfacer"
gigabeats,sansafuzeplus: "BACK = desfacer"
gogearsa9200: "LEFT = desfacer"
@ -2926,12 +2927,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = desfacer"
iriverh100,iriverh120,iriverh300: "STOP = desfacer"
mrobe100: "DISPLAY = desfacer"
rtc: "OFF = desfacer"
samsungyh*: "REW = desfacer"
vibe500: "CANCEL = desfacer"
</dest>
<voice>
*: none
rtc: "OFF = desfacer"
gigabeatfx,mrobe500: "POWER = desfacer"
gigabeats,sansafuzeplus: "BACK = desfacer"
gogearsa9200: "LEFT = desfacer"
@ -2940,7 +2941,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = desfacer"
iriverh100,iriverh120,iriverh300: "STOP = desfacer"
mrobe100: "DISPLAY = desfacer"
rtc: "OFF = desfacer"
samsungyh*: "REW = desfacer"
vibe500: "CANCEL = desfacer"
</voice>
@ -3133,7 +3133,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -6155,10 +6155,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6697,7 +6697,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -6910,7 +6910,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Reanudación automática"
@ -7673,22 +7673,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Aceptar"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Aceptar"
gogearsa9200,samsungyh*: "PLAY = Aceptar"
iriverh100,iriverh120,iriverh300: "NAVI = Aceptar"
mpiohd300: "ENTER = Aceptar"
mrobe500: "HEART = Aceptar"
rtc: "ON = Aceptar"
vibe500: "OK = Aceptar"
</dest>
<voice>
@ -8546,7 +8546,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -9250,7 +9250,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Desprazar a liñas fóra da pantalla"
@ -9464,7 +9464,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Buscar na lista de repr."
@ -11654,7 +11654,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -11731,15 +11731,15 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</dest>
<voice>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</voice>
</phrase>
<phrase>
@ -11934,8 +11934,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -12105,7 +12105,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -12395,7 +12395,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Establecer como o directorio de catálogo de listas de reprodución"
@ -12510,7 +12510,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Iniciar o temporizador de apagado no encendido"

View file

@ -231,8 +231,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2906,7 +2906,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Κύλιση εκτός ορίων οθόνης"
@ -3233,7 +3233,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3250,7 +3250,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3746,22 +3746,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Ρύθμιση"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Ρύθμιση"
gogearsa9200,samsungyh*: "PLAY = Ρύθμιση"
iriverh100,iriverh120,iriverh300: "NAVI = Ρύθμιση"
mpiohd300: "ENTER = Ρύθμιση"
mrobe500: "HEART = Ρύθμιση"
rtc: "ON = Ρύθμιση"
vibe500: "OK = Ρύθμιση"
</dest>
<voice>
@ -3774,6 +3774,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3782,12 +3783,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Ακύρωση"
gigabeatfx,mrobe500: "POWER = Ακύρωση"
gigabeats,sansafuzeplus: "BACK = Ακύρωση"
gogearsa9200: "LEFT = Ακύρωση"
@ -3796,7 +3797,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Ακύρωση"
iriverh100,iriverh120,iriverh300: "STOP = Ακύρωση"
mrobe100: "DISPLAY = Ακύρωση"
rtc: "OFF = Ακύρωση"
samsungyh*: "REW = Ακύρωση"
vibe500: "C = Ακύρωση"
</dest>
@ -4235,7 +4235,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5389,7 +5389,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5647,7 +5647,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6652,7 +6652,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Αναζήτηση στην λίστα αναπαραγωγής"
@ -7030,10 +7030,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7283,7 +7283,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9322,20 +9322,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Τρέχουσα ώρα"
</dest>
<voice>
*: none
rtc: "Τρέχουσα ώρα:"
rtc: "Τρέχουσα ώρα"
</voice>
</phrase>
<phrase>
@ -10212,7 +10212,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10456,7 +10456,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10820,7 +10820,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Ορισμός ως καταλόγου λιστών αναπαραγωγής"
@ -11096,7 +11096,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Αυτόματη επαναφορά"
@ -11172,7 +11172,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Επανεκίνηση χρονοδιακόπτη ύπνου με το πάτημα πλήκτρου"
@ -12184,7 +12184,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Έναρξη χρονοδιακόπτη ύπνου στην εκίνηση"

View file

@ -233,8 +233,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2969,7 +2969,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "מסך נגלל מחוץ לתצוגה"
@ -3296,7 +3296,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3313,7 +3313,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3809,22 +3809,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "קבע = ON"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansae200*,sansafuze*: "קבע = SELECT"
gogearsa9200,samsungyh*: "קבע = PLAY"
iriverh100,iriverh120,iriverh300: "קבע = NAVI"
mpiohd300: "קבע = ENTER"
mrobe500: "קבע = HEART"
rtc: "קבע = ON"
vibe500: "קבע = OK"
</dest>
<voice>
@ -3838,6 +3838,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3846,12 +3847,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "החזר = OFF"
gigabeatfx,mrobe500: "החזר = POWER"
gigabeats: "החזר = BACK"
gogearsa9200: "החזר = LEFT"
@ -3860,7 +3861,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "החזר = PREV"
iriverh100,iriverh120,iriverh300: "החזר = STOP"
mrobe100: "החזר = DISPLAY"
rtc: "החזר = OFF"
samsungyh*: "החזר = Revert"
vibe500: "החזר = C"
</dest>
@ -4300,7 +4300,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5468,7 +5468,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5726,7 +5726,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6731,7 +6731,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "חפש ברשימת שירים"
@ -7109,10 +7109,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7362,7 +7362,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9443,20 +9443,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "זמן נוכחי"
</dest>
<voice>
*: none
rtc: "זמן נוכחי:"
rtc: "זמן נוכחי"
</voice>
</phrase>
<phrase>
@ -10306,7 +10306,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10324,7 +10324,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none

View file

@ -3070,7 +3070,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Search In पलेलिसट"

View file

@ -227,8 +227,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2933,7 +2933,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Ekran se skliže van pogleda"
@ -3260,7 +3260,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3277,7 +3277,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3773,22 +3773,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Postavi"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Postavi"
gogearsa9200,samsungyh*: "PLAY = Postavi"
iriverh100,iriverh120,iriverh300: "NAVI = Postavi"
mpiohd300: "ENTER = Postavi"
mrobe500: "HEART = Postavi"
rtc: "ON = Postavi"
vibe500: "OK = Postavi"
</dest>
<voice>
@ -3802,6 +3802,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3810,12 +3811,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Povrati"
gigabeatfx,mrobe500: "POWER = Povrati"
gigabeats,sansafuzeplus: "BACK = Povrati"
gogearsa9200: "LEFT = Povrati"
@ -3824,7 +3825,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Povrati"
iriverh100,iriverh120,iriverh300: "STOP = Povrati"
mrobe100: "DISPLAY = Povrati"
rtc: "OFF = Povrati"
samsungyh*: "REW = Povrati"
vibe500: "CANCEL = Povrati"
</dest>
@ -4263,7 +4263,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5432,7 +5432,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5690,7 +5690,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6695,7 +6695,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Traži u popisu izvođenja"
@ -7073,10 +7073,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7326,7 +7326,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9407,20 +9407,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Trenutno vrijeme"
</dest>
<voice>
*: none
rtc: "Trenutno vrijeme:"
rtc: "Trenutno vrijeme"
</voice>
</phrase>
<phrase>
@ -10270,7 +10270,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10288,7 +10288,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -12240,7 +12240,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatsko nastavljanje"
@ -12285,7 +12285,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Postavi kao direktorij kataloga popisa izvođenja"
@ -12476,7 +12476,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Pokreni tajmer spavanja pri paljenju "

View file

@ -943,7 +943,7 @@
*: "Dofnun við Stop/Pásu"
</dest>
<voice>
*: "Fade On Stop and Pause"
*: "Fade on Stop and Pause"
</voice>
</phrase>
<phrase>
@ -2436,7 +2436,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -2444,7 +2444,7 @@
masd: none
</dest>
<voice>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</voice>
</phrase>
@ -2453,7 +2453,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -2461,7 +2461,7 @@
masd: none
</dest>
<voice>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</voice>
</phrase>
@ -3094,20 +3094,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
rtc: "Current time:"
rtc: "Current time"
</voice>
</phrase>
<phrase>
@ -3220,6 +3220,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3228,12 +3229,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3242,7 +3243,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</dest>
@ -3435,7 +3435,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -3643,10 +3643,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"

View file

@ -229,8 +229,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2731,7 +2731,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Scorrimento schermo fuori visione"
@ -3017,7 +3017,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Livello minimo"
@ -3031,7 +3031,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Livello massimo"
@ -3343,63 +3343,6 @@
*: "Capacità Batteria"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "Tipo batteria"
</dest>
<voice>
*: none
battery_types: "Tipo batteria"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "Alcalina"
xduoox3: "Nuovo tipo (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "Alcalina"
xduoox3: "Nuovo tipo 2000 milliamp ora"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "Nickel metal idrato"
xduoox3: "Vecchio tipo (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "Nickel metal idrato"
xduoox3: "Vecchio tipo 1500 milliamp ora"
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3530,27 +3473,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Imposta"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Imposta"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Imposta"
gogearsa9200,samsungyh*: "PLAY = Imposta"
iriverh100,iriverh120,iriverh300: "NAVI = Imposta"
mpiohd300: "ENTER = Imposta"
mrobe500: "HEART = Imposta"
rtc: "ON = Imposta"
vibe500: "OK = Imposta"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3559,35 +3501,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Annulla"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Annulla"
gigabeatfx,mrobe500: "POWER = Annulla"
gigabeats,sansafuzeplus: "BACK = Annulla"
gogearsa9200: "LEFT = Annulla"
iaudiom5,iaudiox5: "RECORD = Annulla"
ipod*,mpiohd300,sansac200*: "MENU = Annulla"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Annulla"
iriverh100,iriverh120,iriverh300: "STOP = Annulla"
mrobe100: "DISPLAY = Annulla"
rtc: "OFF = Annulla"
samsungyh*: "REW = Annulla"
vibe500: "CANCEL = Annulla"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4021,7 +3962,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4665,7 +4606,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "Ricerca"
</voice>
</phrase>
<phrase>
@ -5028,7 +4969,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5777,20 +5718,6 @@
*: "Traccie salvate"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "Catalogo Playlist"
</dest>
<voice>
*: "Catalogo playlist"
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6152,7 +6079,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Ricerca nella playlist"
@ -6502,10 +6429,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6741,7 +6668,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7224,10 +7151,10 @@
*: "Can't open %s"
</source>
<dest>
*: "Non riesco ad aprire %s"
*: "Impossibile aprire %s"
</dest>
<voice>
*: ""
*: "Impossibile aprire il plugin"
</voice>
</phrase>
<phrase>
@ -7241,7 +7168,7 @@
*: "Errore in lettura di %s"
</dest>
<voice>
*: ""
*: "Errore nella lettura del file"
</voice>
</phrase>
<phrase>
@ -8679,16 +8606,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "ora attuale"
</dest>
<voice>
*: none
@ -9293,7 +9220,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9311,7 +9238,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11180,7 +11107,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Riprendi Automaticamente"
@ -11326,7 +11253,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Avvio Tempo Spegnimento All'accensione"
@ -11430,7 +11357,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Riavvia Tempo Spegnimento Al Tocco"
@ -12407,34 +12334,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Livello 9: 1 mossa / 60 min"
</dest>
<voice>
*: "Livello 9, 1 mossa ogni 60 minuti"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Livello 8: 1 mossa / 15 min"
</dest>
<voice>
*: "Livello 8, 1 mossa ogni 15 minuti"
</voice>
</phrase>
<phrase>
id: LANG_UNAVAILABLE
desc: in mpegplayer settings
@ -12850,13 +12749,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Ordine Menu Principale Rockbox"
*: ""
</dest>
<voice>
*: ""
@ -12921,20 +12820,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "La cache sarà ricostruita al prossimo riavvio"
</dest>
<voice>
*: "La cache sarà ricostruita al prossimo riavvio"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_2
desc: in the chessbox game level selection
@ -13216,20 +13101,6 @@
*: "Visualizza Partite Giocate"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Livello 10: 1 mossa / 600 min"
</dest>
<voice>
*: "Livello 10, 1 mossa ogni 600 minuti"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_GAMES
desc: in chessbox
@ -13530,20 +13401,6 @@
*: "Livello 7, 40 mosse ogni 240 minuti"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_PROPERTIES_PATH
desc: in properties plugin
@ -13852,16 +13709,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "Commuta l'elemento"
*: ""
</dest>
<voice>
*: "Commuta l'elemento"
*: ""
</voice>
</phrase>
<phrase>
@ -14828,10 +14685,10 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Imposta un Plugin Contestuale per Wps"
*: "Imposta un Plugin Contestuale per WPS"
</dest>
<voice>
*: "Imposta un Plugin Contestuale per WPS"
@ -14954,7 +14811,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Volume dei prompt vocali"
@ -17032,3 +16889,31 @@
*: "Tracce per"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Ordina Playlist"
</dest>
<voice>
*: "Ordina Playlist"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[Per album]"
</dest>
<voice>
*: "Ordina tutte le tracce per album"
</voice>
</phrase>

View file

@ -234,8 +234,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2751,7 +2751,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "画面範囲外スクロール"
@ -3037,7 +3037,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "レベルメータの最小値"
@ -3051,7 +3051,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "レベルメータの最大値"
@ -3365,59 +3365,53 @@
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Battery Type"
battery_types: ""
</source>
<dest>
*: none
battery_types: "電源の種類"
battery_types: ""
</dest>
<voice>
*: none
battery_types: "電源の種類"
battery_types: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "アルカリ"
xduoox3: "新しい方2000 mAh"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "アルカリ"
xduoox3: "新しい二千ミリアンペア・アワー"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "ニッケル水素"
xduoox3: "旧型1500 mAh"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "ニッケル水素"
xduoox3: "年長 千五百ミリアンペア時"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
@ -3550,22 +3544,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = 設定"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = 設定"
gogearsa9200,samsungyh*: "PLAY = 設定"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = 設定"
iriverh100,iriverh120,iriverh300: "NAVI = 設定"
mpiohd300: "ENTER = 設定"
mrobe500: "HEART = 設定"
rtc: "ON = 設定"
vibe500: "OK = 設定"
</dest>
<voice>
@ -3579,29 +3573,29 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = 元に戻す"
gigabeatfx,mrobe500: "POWER = 元に戻す"
gigabeats,sansafuzeplus: "BACK = 元に戻す"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = 元に戻す"
gogearsa9200: "LEFT = 元に戻す"
iaudiom5,iaudiox5: "RECORD = 元に戻す"
ipod*,mpiohd300,sansac200*: "MENU = 元に戻す"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = 元に戻す"
iriverh100,iriverh120,iriverh300: "STOP = 元に戻す"
mrobe100: "DISPLAY = 元に戻す"
rtc: "OFF = 元に戻す"
samsungyh*: "REW = 元に戻す"
vibe500: "CANCEL = 元に戻す"
</dest>
@ -4041,7 +4035,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5048,7 +5042,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5799,16 +5793,16 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
desc: deprecated
user: core
<source>
*: "Playlist Catalogue"
*: ""
</source>
<dest>
*: "プレイリスト カタログ"
*: ""
</dest>
<voice>
*: "プレイリスト カタログ"
*: ""
</voice>
</phrase>
<phrase>
@ -6172,7 +6166,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "プレイリスト内の検索"
@ -6522,10 +6516,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6761,7 +6755,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -8699,16 +8693,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "現在時刻"
</dest>
<voice>
*: none
@ -9313,7 +9307,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9331,7 +9325,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11197,7 +11191,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "オートレジューム"
@ -11346,7 +11340,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "ブートでスリープタイマーをスタート"
@ -11492,7 +11486,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "キー押下でスリープ・タイマー再起動"
@ -11958,7 +11952,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "音声プロンプトの音量"
@ -13338,48 +13332,6 @@
*: "レベル7、40手/240分"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Level 8: 1 move / 15 min"
</dest>
<voice>
*: "Level 8, 1 move per 15 minutes"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "レベル9、60分につき1手"
</dest>
<voice>
*: "レベル9、60分につき1手"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "レベル10、600分に1手"
</dest>
<voice>
*: "レベル10、600分に1手"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14773,16 +14725,16 @@
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
desc: deprecated
user: core
<source>
*: "Cache will be rebuilt on next restart"
*: ""
</source>
<dest>
*: "キャッシュは次回再起動時に再構築される"
*: ""
</dest>
<voice>
*: "キャッシュは次回再起動時に再構築される"
*: ""
</voice>
</phrase>
<phrase>
@ -15193,7 +15145,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "再生中に画面のコンテキストを設定するプラグイン"

View file

@ -242,8 +242,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2758,7 +2758,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "화면 스크롤이 보이지 않음"
@ -3044,7 +3044,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "최소 범위"
@ -3058,7 +3058,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "최대 범위"
@ -3370,63 +3370,6 @@
*: "배터리 용량"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "배터리 유형"
</dest>
<voice>
*: none
battery_types: "배터리 유형"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "알카라인"
xduoox3: "최신 (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "알카라인"
xduoox3: "최신 2000 밀리암페어 시간"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "~NiMH"
xduoox3: "오래됨 (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "니켈 수소"
xduoox3: "오래됨 1500 밀리암페어 시간"
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3557,27 +3500,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "켬 버튼 = 설정"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "재생 버튼 = 설정"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "선택 버튼 = 설정"
gogearsa9200,samsungyh*: "재생 버튼 = 설정"
iriverh100,iriverh120,iriverh300: "탐색 버튼 = 설정"
mpiohd300: "진입 버튼 = 설정"
mrobe500: "하트 버튼 = 설정"
rtc: "켬 버튼 = 설정"
vibe500: "확인 버튼 = 설정"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3586,35 +3528,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "끔 버튼 = 반복"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "뒤로가기 버튼 = 반복"
gigabeatfx,mrobe500: "전원 버터느 = 반복"
gigabeats,sansafuzeplus: "뒤로가기 버튼 = 반복"
gogearsa9200: "왼쪽 버튼 = 반복"
iaudiom5,iaudiox5: "녹음 버튼 = 반복"
ipod*,mpiohd300,sansac200*: "메뉴 버튼 = 반복"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "이전 버튼 = 반복"
iriverh100,iriverh120,iriverh300: "정지 버튼 = 반복"
mrobe100: "화면 버튼 = 반복"
rtc: "끔 버튼 = 반복"
samsungyh*: "되감기 버튼 = 반복"
vibe500: "취소 버튼 = 반복"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4048,7 +3989,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4692,7 +4633,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "검색 중"
</voice>
</phrase>
<phrase>
@ -5055,7 +4996,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5804,20 +5745,6 @@
*: "트랙이 저장되었음"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "재생목록 카탈로그"
</dest>
<voice>
*: "재생목록 카탈로그"
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6179,7 +6106,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "재생목록에서 검색"
@ -6529,10 +6456,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6768,7 +6695,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7254,7 +7181,7 @@
*: "%s 을(를) 열 수 없음"
</dest>
<voice>
*: ""
*: "플러그인을 열 수 없음"
</voice>
</phrase>
<phrase>
@ -7268,7 +7195,7 @@
*: "%s을(를) 읽기 실패함"
</dest>
<voice>
*: ""
*: "파일 읽기 실패함"
</voice>
</phrase>
<phrase>
@ -8706,16 +8633,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "현재 시간"
</dest>
<voice>
*: none
@ -9174,7 +9101,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "음성 안내 볼륨"
@ -9334,7 +9261,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9352,7 +9279,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11252,7 +11179,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "자동 재시작"
@ -11398,7 +11325,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "부팅 시 절전 타이머 시작"
@ -11530,7 +11457,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "키를 누를 때 절전 타이머 다시 시작"
@ -12507,20 +12434,6 @@
*: "트랙 경과됨"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_TRK_REMAINING
desc: playing time screen
@ -13261,48 +13174,6 @@
*: "레벨 7, 240 분당 40 이동"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "레벨 8: 1 이동 / 15 분"
</dest>
<voice>
*: "레벨 8, 15 분당 1 이동"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "레벨 9: 1 이동 / 60 분"
</dest>
<voice>
*: "레벨 9, 60 분당 1 이동"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "레벨 10: 1 이동 / 600 분"
</dest>
<voice>
*: "레벨 10, 600 분당 1 이동"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14115,16 +13986,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "전환 항목"
*: ""
</dest>
<voice>
*: "전환 항목"
*: ""
</voice>
</phrase>
<phrase>
@ -14185,13 +14056,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "록박스 메인 메뉴 순서"
*: ""
</dest>
<voice>
*: ""
@ -14694,20 +14565,6 @@
*: "앨범 아트를 찾을 수 없음"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "다음에 다시 시작할 때 캐시가 다시 작성됨"
</dest>
<voice>
*: "다음에 다시 시작할 때 캐시가 다시 작성됨"
</voice>
</phrase>
<phrase>
id: LANG_ERROR_WRITING_CONFIG
desc: in the pictureflow splash messages
@ -15116,13 +14973,13 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Wps 컨텍스트 플러그인 설정"
*: "WPS 컨텍스트 플러그인 설정"
</dest>
<voice>
*: "Wps 컨텍스트 플러그인 설정"
*: "WPS 컨텍스트 플러그인 설정"
</voice>
</phrase>
<phrase>
@ -15150,7 +15007,7 @@
*: "이름"
</dest>
<voice>
*: "이름e"
*: "이름"
</voice>
</phrase>
<phrase>
@ -17045,3 +16902,31 @@
*: "다음의 트랙"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "재생 목록 정렬"
</dest>
<voice>
*: "재생 목록 정렬"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[앨범별]"
</dest>
<voice>
*: "모든 트랙을 앨범별로 정렬"
</voice>
</phrase>

View file

@ -37,10 +37,9 @@ $(BUILDDIR)/lang/lang_core.o: $(BUILDDIR)/lang/lang.h $(BUILDDIR)/lang/lang_core
# instead we pretend that genlang create lang_core.c and that lang.c depends from lang.h
# it will work fine as long as one never manually removes lang.c and not lang.h, and it will avoid
# race conditions such as running genlang twice or worse in parallel with other things!
$(BUILDDIR)/lang/lang.h: $(APPSDIR)/lang/$(ENGLISH).lang $(BUILDDIR)/apps/features $(TOOLSDIR)/genlang
$(BUILDDIR)/lang/lang.h: $(APPSDIR)/lang/$(ENGLISH).lang $(BUILDDIR)/apps/genlang-features $(TOOLSDIR)/genlang
$(call PRINTS,GEN lang.h)
$(SILENT)for f in `cat $(BUILDDIR)/apps/features`; do feat="$$feat:$$f" ; done; \
perl -s $(TOOLSDIR)/genlang -p=$(BUILDDIR)/lang -t=$(MODELNAME)$$feat $<
$(SILENT)$(TOOLSDIR)/genlang -e=$(APPSDIR)/lang/$(ENGLISH).lang -p=$(BUILDDIR)/lang -t=$(MODELNAME):`cat $(BUILDDIR)/apps/genlang-features` $<
$(BUILDDIR)/lang/lang_core.c: $(BUILDDIR)/lang/lang.h $(TOOLSDIR)/genlang
$(BUILDDIR)/lang_enum.h: $(BUILDDIR)/lang/lang.h $(TOOLSDIR)/genlang

File diff suppressed because it is too large Load diff

View file

@ -298,8 +298,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -3015,7 +3015,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Ekrano slinkimas už ribų"
@ -3342,7 +3342,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3359,7 +3359,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3855,20 +3855,20 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansae200*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Nustatyti"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansae200*: "SELECT = Nustatyti"
gogearsa9200,samsungyh*: "PLAY = Nustatyti"
iriverh100,iriverh120,iriverh300: "NAVI = Nustatyti"
mpiohd300: "ENTER = Nustatyti"
rtc: "ON = Nustatyti"
vibe500: "OK = Nustatyti"
</dest>
<voice>
@ -3882,6 +3882,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200,ipod*,mpiohd300,sansac200*: "MENU = Revert"
@ -3889,12 +3890,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Atstatyti"
gigabeatfx: "POWER = Atstatyti"
gigabeats,sansafuzeplus: "BACK = Atstatyti"
gogearsa9200,ipod*,mpiohd300,sansac200*: "MENU = Atstatyti"
@ -3902,7 +3903,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Atstatyti"
iriverh100,iriverh120,iriverh300: "STOP = Atstatyti"
mrobe100: "DISPLAY = Atstatyti"
rtc: "OFF = Atstatyti"
samsungyh*: "REW = Atstatyti"
vibe500: "CANCEL = Atstatyti"
</dest>
@ -4341,7 +4341,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5510,7 +5510,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5768,7 +5768,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6773,7 +6773,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Ieškoti grojaraštyje"
@ -7151,10 +7151,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7404,7 +7404,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9485,20 +9485,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Dabartinis laikas"
</dest>
<voice>
*: none
rtc: "Dabartinis laikas:"
rtc: "Dabartinis laikas"
</voice>
</phrase>
<phrase>
@ -10348,7 +10348,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10366,7 +10366,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none

File diff suppressed because it is too large Load diff

16924
apps/lang/moldoveneste.lang Normal file

File diff suppressed because it is too large Load diff

View file

@ -2867,7 +2867,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Scherm schuift uit beeld"
@ -3091,7 +3091,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Minimaal bereik"
@ -3105,7 +3105,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Maximaal bereik"
@ -3449,7 +3449,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3692,7 +3692,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Zoeken in afspeellijst"
@ -3882,20 +3882,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "huidige tijd"
</dest>
<voice>
*: none
rtc: "huidige tijd:"
rtc: "huidige tijd"
</voice>
</phrase>
<phrase>
@ -4008,29 +4008,29 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Terugzetten"
gigabeatfx,mrobe500: "POWER = Terugzetten"
gigabeats,sansafuzeplus: "BACK = Terugzetten"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Terugzetten"
gogearsa9200: "LINKS = Terugzetten"
iaudiom5,iaudiox5: "RECORD = Terugzetten"
ipod*,mpiohd300,sansac200*: "MENU = Terugzetten"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Terugzetten"
iriverh100,iriverh120,iriverh300: "STOP = Terugzetten"
mrobe100: "DISPLAY = Terugzetten"
rtc: "OFF = Terugzetten"
samsungyh*: "REW = Terugzetten"
vibe500: "C = Terugzetten"
</dest>
@ -4206,7 +4206,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4464,10 +4464,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "Variabele bitrate"
@ -7713,7 +7713,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -8660,22 +8660,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Instellen"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Instellen"
gogearsa9200,samsungyh*: "PLAY = Instellen"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Instellen"
iriverh100,iriverh120,iriverh300: "NAVI = Instellen"
mpiohd300: "ENTER = Instellen"
mrobe500: "HEART = Instellen"
rtc: "ON = Instellen"
vibe500: "OK = Instellen"
</dest>
<voice>
@ -8965,8 +8965,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -9548,7 +9548,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9566,7 +9566,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11508,7 +11508,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatisch hervatten"
@ -11713,7 +11713,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Slaaptimer starten bij opstarten"
@ -11831,7 +11831,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Slaaptimer herstarten bij toetsklik"
@ -15363,10 +15363,10 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Stel Wps Context Plugin in"
*: "Stel WPS Context Plugin in"
</dest>
<voice>
*: "Stel WPS Context Plugin in"
@ -15503,7 +15503,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Volume van gesproken prompt"

View file

@ -3088,7 +3088,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Skjermen kan rulla ut av syne"
@ -3348,7 +3348,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3365,7 +3365,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3704,7 +3704,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3947,7 +3947,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Søk i speleliste"
@ -4150,12 +4150,12 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
@ -4163,6 +4163,7 @@
</dest>
<voice>
*: none
rtc: ""
</voice>
</phrase>
<phrase>
@ -4273,6 +4274,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -4281,12 +4283,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = tilbakestill"
gigabeatfx,mrobe500: "POWER = Tilbakestill"
gigabeats,sansafuzeplus: "BACK = Tilbakestill"
gogearsa9200: "LEFT = Tilbakestill"
@ -4295,7 +4297,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Tilbakestill"
iriverh100,iriverh120,iriverh300: "STOP = Tilbakestill"
mrobe100: "DISPLAY = Tilbakestill"
rtc: "OFF = tilbakestill"
samsungyh*: "REW = Tilbakestill"
vibe500: "CANCEL = Tilbakestill"
</dest>
@ -4465,7 +4466,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4731,10 +4732,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -8195,7 +8196,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -9062,22 +9063,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "PÅ = velg"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = velg"
gogearsa9200,samsungyh*: "PLAY = velg"
iriverh100,iriverh120,iriverh300: "NAVI = velg"
mpiohd300: "ENTER = velg"
mrobe500: "HEART = velg"
rtc: "PÅ = velg"
vibe500: "OK = velg"
</dest>
<voice>
@ -9779,8 +9780,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -9812,7 +9813,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -10237,7 +10238,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10481,7 +10482,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""

View file

@ -2845,7 +2845,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -2862,7 +2862,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3521,20 +3521,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Gjeldende tid"
</dest>
<voice>
*: none
rtc: "Gjeldende tid:"
rtc: "Gjeldende tid"
</voice>
</phrase>
<phrase>
@ -3647,6 +3647,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3655,12 +3656,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Tilbakestill"
gigabeatfx,mrobe500: "POWER = Tilbakestill"
gigabeats,sansafuzeplus: "BACK = Tilbakestill"
gogearsa9200: "LEFT = Tilbakestill"
@ -3669,7 +3670,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Tilbakestill"
iriverh100,iriverh120,iriverh300: "STOP = Tilbakestill"
mrobe100: "DISPLAY = Tilbakestill"
rtc: "OFF = Tilbakestill"
samsungyh*: "REW = Tilbakestill"
vibe500: "CANCEL = Tilbakestill"
</dest>
@ -3844,7 +3844,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4052,10 +4052,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6801,7 +6801,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Skal skjermen kunne rulle ut av syne?"
@ -6860,7 +6860,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Søk i spillelisten"
@ -7266,7 +7266,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7664,7 +7664,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -9215,22 +9215,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Sett"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Sett"
gogearsa9200,samsungyh*: "PLAY = Sett"
iriverh100,iriverh120,iriverh300: "NAVI = Sett"
mpiohd300: "ENTER = Sett"
mrobe500: "HEART = Sett"
rtc: "ON = Sett"
vibe500: "OK = Sett"
</dest>
<voice>
@ -10042,8 +10042,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -10075,7 +10075,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -10168,7 +10168,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10176,7 +10176,7 @@
</dest>
<voice>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</voice>
</phrase>
<phrase>
@ -10293,7 +10293,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -11100,7 +11100,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Start sovenedtelling ved oppstart"
@ -12097,7 +12097,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Start sovenedtelling på nytt ved knappetrykk"
@ -12344,7 +12344,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatisk fortsettelse"
@ -12392,7 +12392,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Bruk som spilleliste-katalogmappe"

View file

@ -235,8 +235,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2737,7 +2737,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Przesuwanie poza ekran"
@ -3023,7 +3023,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Początek skali"
@ -3037,7 +3037,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Koniec skali"
@ -3349,63 +3349,6 @@
*: "Pojemność baterii"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "Typ baterii"
</dest>
<voice>
*: none
battery_types: "Typ baterii"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "Alkaliczna"
xduoox3: "Nowsza (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "Alkaliczna"
xduoox3: "Nowsza 2000 miliamperogodzin"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "~NiMH"
xduoox3: "Starsza (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "Niklowo metalowo wodorkowa"
xduoox3: "Starsza 1500 miliamperogodzin"
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3536,27 +3479,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Ustaw"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Ustaw"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Ustaw"
gogearsa9200,samsungyh*: "PLAY = Ustaw"
iriverh100,iriverh120,iriverh300: "NAVI = Ustaw"
mpiohd300: "ENTER = Ustaw"
mrobe500: "HEART = Ustaw"
rtc: "ON = Ustaw"
vibe500: "OK = Ustaw"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3565,35 +3507,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Przywróć"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Przywróć"
gigabeatfx,mrobe500: "POWER = Przywróć"
gigabeats,sansafuzeplus: "BACK = Przywróć"
gogearsa9200: "LEFT = Przywróć"
iaudiom5,iaudiox5: "RECORD = Przywróć"
ipod*,mpiohd300,sansac200*: "MENU = Przywróć"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Przywróć"
iriverh100,iriverh120,iriverh300: "STOP = Przywróć"
mrobe100: "DISPLAY = Przywróć"
rtc: "OFF = Przywróć"
samsungyh*: "REW = Przywróć"
vibe500: "C = Przywróć"
vibe500: "CANCEL = Przywróć"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4027,7 +3968,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4667,11 +4608,11 @@
</source>
<dest>
*: none
radio: "Szukam %d.%02d MHz"
radio: "Wyszukiwanie %d.%02d MHz"
</dest>
<voice>
*: none
radio: ""
radio: "Wyszukiwanie"
</voice>
</phrase>
<phrase>
@ -5034,7 +4975,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5783,20 +5724,6 @@
*: "Zachowano utwory"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "Katalog list odtwarzania"
</dest>
<voice>
*: "Katalog list odtwarzania"
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6158,7 +6085,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Szukaj na liście"
@ -6508,10 +6435,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6747,7 +6674,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7230,10 +7157,10 @@
*: "Can't open %s"
</source>
<dest>
*: "Nie mo otworzyć %s"
*: "Nie można otworzyć %s"
</dest>
<voice>
*: ""
*: "Nie można otworzyć wtyczki"
</voice>
</phrase>
<phrase>
@ -7247,7 +7174,7 @@
*: "Błąd odczytu %s"
</dest>
<voice>
*: ""
*: "Błąd odczytu pliku"
</voice>
</phrase>
<phrase>
@ -8685,16 +8612,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Aktualna godzina"
</dest>
<voice>
*: none
@ -9299,7 +9226,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9317,7 +9244,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11186,7 +11113,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatyczne wznawianie"
@ -11408,7 +11335,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Zresetuj usypiacz przy naciśnięciu przycisku"
@ -11436,7 +11363,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Uruchom usypiacz przy włączeniu"
@ -12236,20 +12163,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_MENU_RESTORE_GAME
desc: in the chessbox menu
@ -12587,20 +12500,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Poziom 8: 1 ruch / 15 min"
</dest>
<voice>
*: "Poziom 8 1 ruch na 15 minut"
</voice>
</phrase>
<phrase>
id: VOICE_PLAYER
desc: spoken only, for announcing player's id
@ -13555,16 +13454,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "Przełącz element"
*: ""
</dest>
<voice>
*: "Przełącz element"
*: ""
</voice>
</phrase>
<phrase>
@ -13758,20 +13657,6 @@
*: "Ładowanie pozycji"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Poziom 10: 1 ruch / 600 min"
</dest>
<voice>
*: "Poziom 10 1 ruch na 600 minut"
</voice>
</phrase>
<phrase>
id: LANG_SPACING
desc: in the pictureflow settings menu
@ -14167,13 +14052,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Kolejność menu głównego Rockbox"
*: ""
</dest>
<voice>
*: ""
@ -14266,20 +14151,6 @@
*: "Podkatal."
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Poziom 9: 1 ruch / 60 min"
</dest>
<voice>
*: "Poziom 9 1 ruch na 60 minut"
</voice>
</phrase>
<phrase>
id: LANG_SLIDESHOW_MODE
desc: in the imageviewer settings menu
@ -14364,20 +14235,6 @@
*: "Zamień kanały"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "Pamięć podręczna zostanie odbudowana po restarcie"
</dest>
<voice>
*: "Pamięć podręczna zostanie odbudowana po restarcie"
</voice>
</phrase>
<phrase>
id: LANG_4_KEY_CONTROL
desc: Item for menus
@ -14834,7 +14691,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Ustaw wtyczkę kontekstową WPS"
@ -15008,7 +14865,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Głośność komunikatów głosowych"
@ -17038,3 +16895,31 @@
*: "Utwory według"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Sortuj listy odtwarzania"
</dest>
<voice>
*: "Sortuj listy odtwarzania"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[Według albumu]"
</dest>
<voice>
*: "Wszystkie utwory posortowane według albumu"
</voice>
</phrase>

File diff suppressed because it is too large Load diff

View file

@ -2928,7 +2928,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Barras de Navegação Fora do Ecrã"
@ -3173,7 +3173,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3190,7 +3190,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3475,7 +3475,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3988,6 +3988,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3996,12 +3997,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Reverter"
gigabeatfx,mrobe500: "POWER = Reverter"
gigabeats,sansafuzeplus: "BACK = Reverter"
gogearsa9200: "LEFT = Reverter"
@ -4010,7 +4011,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Reverter"
iriverh100,iriverh120,iriverh300: "STOP = Reverter"
mrobe100: "DISPLAY = Reverter"
rtc: "OFF = Reverter"
samsungyh*: "REW = Reverter"
vibe500: "C = Reverter"
</dest>
@ -4218,7 +4218,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4431,10 +4431,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7400,22 +7400,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Definir"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Definir"
gogearsa9200,samsungyh*: "PLAY = Definir"
iriverh100,iriverh120,iriverh300: "NAVI = Definir"
mpiohd300: "ENTER = Definir"
mrobe500: "HEART = Definir"
rtc: "ON = Definir"
vibe500: "OK = Definir"
</dest>
<voice>
@ -7810,7 +7810,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -8189,7 +8189,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Procurar na Playlist"
@ -9134,7 +9134,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9203,8 +9203,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -9264,7 +9264,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -9653,7 +9653,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -10479,20 +10479,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Tempo actual"
</dest>
<voice>
*: none
rtc: "Tempo actual:"
rtc: "Tempo actual"
</voice>
</phrase>
<phrase>
@ -12234,7 +12234,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Retoma da reprodução automática"
@ -12369,7 +12369,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Definir como pasta para Catálogo de Playlists"
@ -12484,7 +12484,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Iniciar Temporizador no Arranque"
@ -12512,7 +12512,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Reiniciar Temporizador ao Premir Teclas"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -227,8 +227,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2729,7 +2729,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Obrazovka Roluje Mimo Zobrazenia"
@ -3015,7 +3015,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Minimum Rozsahu"
@ -3029,7 +3029,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Maximum Rozsahu"
@ -3341,51 +3341,6 @@
*: "Kapacita batérie"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: deprecated
user: core
<source>
*: none
battery_types: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: deprecated
user: core
<source>
*: none
battery_types,xduoox3: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: deprecated
user: core
<source>
*: none
battery_types,xduoox3: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3516,27 +3471,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Nastaviť"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Nastaviť"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Nastaviť"
gogearsa9200,samsungyh*: "PLAY = Nastaviť"
iriverh100,iriverh120,iriverh300: "NAVI = Nastaviť"
mpiohd300: "ENTER = Nastaviť"
mrobe500: "HEART = Nastaviť"
rtc: "ON = Nastaviť"
vibe500: "OK = Nastaviť"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3545,35 +3499,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Vrátiť"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Vrátiť"
gigabeatfx,mrobe500: "POWER = Vrátiť"
gigabeats,sansafuzeplus: "BACK = Vrátiť"
gogearsa9200: "LEFT = Vrátiť"
iaudiom5,iaudiox5: "RECORD = Vrátiť"
ipod*,mpiohd300,sansac200*: "MENU = Vrátiť"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Vrátiť"
iriverh100,iriverh120,iriverh300: "STOP = Vrátiť"
mrobe100: "DISPLAY = Vrátiť"
rtc: "OFF = Vrátiť"
samsungyh*: "REW = Vrátiť"
vibe500: "C = Vrátiť"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4007,7 +3960,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4651,7 +4604,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "Skenujem"
</voice>
</phrase>
<phrase>
@ -5014,7 +4967,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5763,20 +5716,6 @@
*: "Stôp uložených"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6138,7 +6077,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Hľadať V Plejliste"
@ -6488,10 +6427,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6727,7 +6666,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7213,7 +7152,7 @@
*: "Nemožno otvoriť %s"
</dest>
<voice>
*: ""
*: "Nemožno otvoriť zásuvný modul"
</voice>
</phrase>
<phrase>
@ -7227,7 +7166,7 @@
*: "Zlihalo čítanie %s"
</dest>
<voice>
*: ""
*: "Čítanie súboru zlihalo"
</voice>
</phrase>
<phrase>
@ -8665,16 +8604,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Aktuálny čas"
</dest>
<voice>
*: none
@ -9279,7 +9218,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9297,7 +9236,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11167,7 +11106,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatické Obnovenie Prehrávania"
@ -11327,7 +11266,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Aktivovať Časovač Spánku Po Zapnutí"
@ -11417,7 +11356,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Stlačenie Tlačidla Reštartuje Časovač Spánku"
@ -12896,34 +12835,6 @@
*: "Typ ovládania"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Úroveň 9: 1 ťah / 60 min"
</dest>
<voice>
*: "Úroveň 9: 1 ťah za 60 minút"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Úroveň 8: 1 ťah / 15 min"
</dest>
<voice>
*: "Úroveň 8: 1 ťah za 15 minút"
</voice>
</phrase>
<phrase>
id: LANG_MENU_PLAY_MODE
desc: in mpegplayer menus
@ -12957,13 +12868,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Rockbox poradie hlavnej ponuky"
*: ""
</dest>
<voice>
*: ""
@ -12983,20 +12894,6 @@
*: "Strana kráľa"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_RETURN
desc: in various plugin menus
@ -13805,16 +13702,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "prepnúť položku"
*: ""
</dest>
<voice>
*: "prepnúť položku"
*: ""
</voice>
</phrase>
<phrase>
@ -14193,20 +14090,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: VOICE_BAT_BENCH_KEYS
desc: Battery bench start up message
@ -14314,20 +14197,6 @@
lowmem: none
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Úroveň 10: 1 ťah / 600 min"
</dest>
<voice>
*: "Úroveň 10: 1 ťah za 600 minút"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LOADING_POSITION
desc: in chessbox
@ -14803,7 +14672,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Hlasitosť ozvučenia"
@ -15092,7 +14961,7 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Nastaviť zásuvný modul pre kontext obrazovky Teraz hrá"
@ -17021,3 +16890,31 @@
*: "Plejlist sa skončil. Prehrať znova?"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Triediť plejlisty"
</dest>
<voice>
*: "Triediť plejlisty"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[Podľa albumu]"
</dest>
<voice>
*: "Všetky stopy zoradené podľa albumu"
</voice>
</phrase>

View file

@ -1170,7 +1170,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -1187,7 +1187,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -1593,6 +1593,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -1601,7 +1602,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
@ -1687,7 +1687,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: "Bujenje cez %d:%02d"
@ -3200,10 +3200,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -4020,15 +4020,15 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</dest>
<voice>
*: none
recording: "Same As Source"
recording: "Same as Source"
</voice>
</phrase>
<phrase>
@ -5238,22 +5238,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</dest>
<voice>
@ -6443,15 +6443,15 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</dest>
<voice>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</voice>
</phrase>
<phrase>
@ -7495,13 +7495,13 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</dest>
<voice>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</voice>
</phrase>
<phrase>
@ -7877,13 +7877,13 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Search In Playlist"
*: "Search in Playlist"
</dest>
<voice>
*: "Search In Playlist"
*: "Search in Playlist"
</voice>
</phrase>
<phrase>
@ -10282,20 +10282,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
rtc: "Current time:"
rtc: "Current time"
</voice>
</phrase>
<phrase>
@ -11116,7 +11116,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -11266,15 +11266,15 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</dest>
<voice>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</voice>
</phrase>
<phrase>
@ -11553,8 +11553,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -11783,15 +11783,15 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</dest>
<voice>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</voice>
</phrase>
<phrase>
@ -11971,7 +11971,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Samodejno nadaljevanje"
@ -12123,7 +12123,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Nastavi kot mapo za katalog seznamov predvajanj"
@ -12373,7 +12373,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Ponovno zaženi časovnik stanja pripravljenosti ob pritisku na tipko"
@ -12505,7 +12505,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Zaženi časovnik stanja pripravljenost ob zagonu"

View file

@ -241,8 +241,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -1490,7 +1490,7 @@
*: "Replaygain"
</source>
<dest>
*: "Replaygain"
*: "Риплејгејн"
</dest>
<voice>
*: "Риплејгејн"
@ -2799,7 +2799,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Екран скролује ван погледа"
@ -3099,7 +3099,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "Минимум опсега"
@ -3113,7 +3113,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "Максимум опсега"
@ -3425,63 +3425,6 @@
*: "Капацитет батерије"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
user: core
<source>
*: none
battery_types: "Battery Type"
</source>
<dest>
*: none
battery_types: "Тип батерије"
</dest>
<voice>
*: none
battery_types: "Тип батерије"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
</source>
<dest>
*: none
battery_types: "Алкална"
xduoox3: "Новија (2000 mAh)"
</dest>
<voice>
*: none
battery_types: "Алкална"
xduoox3: "Новија двехиљаде милиампер часова"
</voice>
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
</source>
<dest>
*: none
battery_types: "NiMH"
xduoox3: "Старија (1500 mAh)"
</dest>
<voice>
*: none
battery_types: "Никл метал хидридна"
xduoox3: "Старија хиљадупетсто милиампер часова"
</voice>
</phrase>
<phrase>
id: LANG_DISK_MENU
desc: in the system sub menu
@ -3612,27 +3555,26 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Постави"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Постави"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Постави"
gogearsa9200,samsungyh*: "PLAY = Постави"
iriverh100,iriverh120,iriverh300: "NAVI = Постави"
mpiohd300: "ENTER = Постави"
mrobe500: "HEART = Постави"
rtc: "ON = Постави"
vibe500: "OK = Постави"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -3641,35 +3583,34 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Врати на старо"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Врати на старо"
gigabeatfx,mrobe500: "POWER = Врати на старо"
gigabeats,sansafuzeplus: "BACK = Врати на старо"
gogearsa9200: "LEFT = Врати на старо"
iaudiom5,iaudiox5: "RECORD = Врати на старо"
ipod*,mpiohd300,sansac200*: "MENU = Врати на старо"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Врати на старо"
iriverh100,iriverh120,iriverh300: "STOP = Врати на старо"
mrobe100: "DISPLAY = Врати на старо"
rtc: "OFF = Врати на старо"
samsungyh*: "REW = Врати на старо"
vibe500: "CANCEL = Врати на старо"
</dest>
<voice>
*: none
gigabeat*,gogearsa9200,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh100,iriverh10_5gb,iriverh120,iriverh300,mrobe100,rtc,samsungyh*,sansac200*,sansae200*: ""
</voice>
</phrase>
<phrase>
@ -4103,7 +4044,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4747,7 +4688,7 @@
</dest>
<voice>
*: none
radio: ""
radio: "Скенирам"
</voice>
</phrase>
<phrase>
@ -4978,7 +4919,7 @@
</source>
<dest>
*: none
recording: "MPEG Layer 3"
recording: "Емпег лејер три"
</dest>
<voice>
*: none
@ -4995,7 +4936,7 @@
</source>
<dest>
*: none
recording: "PCM Wave"
recording: "~PCM Wave"
</dest>
<voice>
*: none
@ -5110,7 +5051,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5859,20 +5800,6 @@
*: "снимљене нумере"
</voice>
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
user: core
<source>
*: "Playlist Catalogue"
</source>
<dest>
*: "Каталог плејлисти"
</dest>
<voice>
*: "Каталог плејлисти"
</voice>
</phrase>
<phrase>
id: LANG_RECURSE_DIRECTORY
desc: In playlist menu
@ -6012,8 +5939,8 @@
</source>
<dest>
*: "Инт:"
hibylinux: "mSD:"
xduoox3: "mSD1:"
hibylinux: "~mSD:"
xduoox3: "~mSD1:"
</dest>
<voice>
*: "Интерни"
@ -6034,10 +5961,10 @@
</source>
<dest>
*: none
hibylinux: "USB:"
multivolume: "HD1"
sansac200*,sansaclipplus,sansae200*,sansafuze*: "mSD:"
xduoox3: "mSD2:"
hibylinux: "~USB:"
multivolume: "~HD1"
sansac200*,sansaclipplus,sansae200*,sansafuze*: "~mSD:"
xduoox3: "~mSD2:"
</dest>
<voice>
*: none
@ -6234,7 +6161,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Тражи у плејлисти"
@ -6598,10 +6525,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -6837,7 +6764,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7337,7 +7264,7 @@
*: "Не могу да отворим %s"
</dest>
<voice>
*: ""
*: "Не могу да отворим додатак"
</voice>
</phrase>
<phrase>
@ -7351,7 +7278,7 @@
*: "Неуспело читање %s"
</dest>
<voice>
*: ""
*: "Неуспело читање фајла"
</voice>
</phrase>
<phrase>
@ -8789,16 +8716,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Тренутно време"
</dest>
<voice>
*: none
@ -9257,7 +9184,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Јачина гласа"
@ -9417,7 +9344,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -9435,7 +9362,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -11228,7 +11155,7 @@
*: "PictureFlow"
</source>
<dest>
*: "PictureFlow"
*: "~PictureFlow"
</dest>
<voice>
*: "покрени ток слика"
@ -11261,7 +11188,7 @@
</source>
<dest>
*: none
touchscreen: "Del"
touchscreen: "Дел"
</dest>
<voice>
*: none
@ -11349,7 +11276,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Аутоматско настављање репродукције"
@ -11495,7 +11422,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Покрени тајмер за спавање након укључења"
@ -11627,7 +11554,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Рестартуј тајмер за спавање приликом притиска на тастер"
@ -12604,20 +12531,6 @@
*: "Од почетка нумере"
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_REMAINING
desc: deprecated
user: core
<source>
*: ""
</source>
<dest>
*: ""
</dest>
<voice>
*: ""
</voice>
</phrase>
<phrase>
id: LANG_PLAYTIME_TRK_REMAINING
desc: playing time screen
@ -13358,48 +13271,6 @@
*: "Ниво седам четрдесет потеза за двеста четрдесет минута"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Ниво 8: 1 потез / 15 минута"
</dest>
<voice>
*: "Ниво осам један потез за петнаест минута"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Ниво 9: 1 потез / 60 мин"
</dest>
<voice>
*: "Ниво девет један потез за шездесет минута"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Ниво 10: 1 потез / 600 мин"
</dest>
<voice>
*: "Ниво десет један потез за шесто минута"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14212,16 +14083,16 @@
</phrase>
<phrase>
id: LANG_TOGGLE_ITEM
desc: in main_menu_config
desc: deprecated
user: core
<source>
*: "Toggle Item"
*: ""
</source>
<dest>
*: "Преклопи ставку"
*: ""
</dest>
<voice>
*: "Преклопи ставку"
*: ""
</voice>
</phrase>
<phrase>
@ -14282,13 +14153,13 @@
</phrase>
<phrase>
id: LANG_MAIN_MENU_ORDER
desc: main_menu_config plugin title
desc: deprecated
user: core
<source>
*: "Rockbox Main Menu Order"
*: ""
</source>
<dest>
*: "Редослед Rockbox главног менија"
*: ""
</dest>
<voice>
*: ""
@ -14791,20 +14662,6 @@
*: "Није пронађена ниједна слика албума"
</voice>
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
user: core
<source>
*: "Cache will be rebuilt on next restart"
</source>
<dest>
*: "Кеш ће да се изгради при наредном поновном покретању"
</dest>
<voice>
*: "Кеш ће да се изгради при наредном поновном покретању"
</voice>
</phrase>
<phrase>
id: LANG_ERROR_WRITING_CONFIG
desc: in the pictureflow splash messages
@ -15213,10 +15070,10 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Постави Wps контекст додатак"
*: "Постави WPS контекст додатак"
</dest>
<voice>
*: "Постави WPS контекст додатак"
@ -17030,3 +16887,31 @@
*: "Плејлиста се завршила. Желите ли да се пусти поново?"
</voice>
</phrase>
<phrase>
id: LANG_TAGNAVI_ALL_TRACKS_SORTED_BY_ALBUM
desc: "[By album]" entry in tag browser
user: core
<source>
*: "[By album]"
</source>
<dest>
*: "[по албуму]"
</dest>
<voice>
*: "Све нумере сортиране по албуму"
</voice>
</phrase>
<phrase>
id: LANG_SORT_PLAYLISTS
desc: playlists sorting setting
user: core
<source>
*: "Sort Playlists"
</source>
<dest>
*: "Сортирај плејлисте"
</dest>
<voice>
*: "сортирај плејлисте"
</voice>
</phrase>

File diff suppressed because it is too large Load diff

View file

@ -227,8 +227,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -1436,7 +1436,7 @@
*: "Mawala sa ibabaw Pahintuin/Tumigil"
</dest>
<voice>
*: "Fade On Stop and Pause"
*: "Fade on Stop and Pause"
</voice>
</phrase>
<phrase>
@ -2933,13 +2933,13 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: " Pagtingin nasa labas ng umikot sa screen"
</dest>
<voice>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</voice>
</phrase>
<phrase>
@ -3260,7 +3260,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3268,7 +3268,7 @@
masd: none
</dest>
<voice>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</voice>
</phrase>
@ -3277,7 +3277,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3285,7 +3285,7 @@
masd: none
</dest>
<voice>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</voice>
</phrase>
@ -3773,22 +3773,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Ilagay"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Ilagay"
gogearsa9200,samsungyh*: "PLAY = Ilagay"
iriverh100,iriverh120,iriverh300: "NAVI = Ilagay"
mpiohd300: "ENTER = Ilagay"
mrobe500: "HEART =Ilagay"
rtc: "ON = Ilagay"
vibe500: "OK = Ilagay"
</dest>
<voice>
@ -3801,6 +3801,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3809,12 +3810,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Mabalik"
gigabeatfx,mrobe500: "POWER = Mabalik"
gigabeats,sansafuzeplus: "BACK = Mabalik"
gogearsa9200: "LEFT = Mabalik"
@ -3823,7 +3824,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Mabalik"
iriverh100,iriverh120,iriverh300: "STOP = Mabalik"
mrobe100: "DISPLAY = Mabalik"
rtc: "OFF = Mabalik"
samsungyh*: "REW = Mabalik"
vibe500: "C = Mabalik"
</dest>
@ -4262,7 +4262,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5431,7 +5431,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5439,7 +5439,7 @@
</dest>
<voice>
*: none
recording: "Same As Source"
recording: "Same as Source"
</voice>
</phrase>
<phrase>
@ -5689,7 +5689,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6142,10 +6142,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -8538,13 +8538,13 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Hanapin sa listahan"
</dest>
<voice>
*: "Search In Playlist"
*: "Search in Playlist"
</voice>
</phrase>
<phrase>
@ -9444,20 +9444,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
rtc: "Current time:"
rtc: "Current time"
</voice>
</phrase>
<phrase>
@ -9927,7 +9927,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9935,7 +9935,7 @@
</dest>
<voice>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</voice>
</phrase>
<phrase>
@ -10264,7 +10264,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10389,7 +10389,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""

View file

@ -228,8 +228,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -1437,7 +1437,7 @@
*: "หรี่เสียงตอนหยุดเล่น"
</dest>
<voice>
*: "Fade On Stop and Pause"
*: "Fade on Stop and Pause"
</voice>
</phrase>
<phrase>
@ -2933,13 +2933,13 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "เลื่อนจอเมื่อตกขอบ"
</dest>
<voice>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</voice>
</phrase>
<phrase>
@ -3260,7 +3260,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3268,7 +3268,7 @@
masd: none
</dest>
<voice>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</voice>
</phrase>
@ -3277,7 +3277,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3285,7 +3285,7 @@
masd: none
</dest>
<voice>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</voice>
</phrase>
@ -3756,22 +3756,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = ตั้งค่า"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = ตั้งค่า"
gogearsa9200,samsungyh*: "PLAY = ตั้งค่า"
iriverh100,iriverh120,iriverh300: "NAVI = ตั้งค่า"
mpiohd300: "ENTER = ตั้งค่า"
mrobe500: "HEART = ตั้งค่า"
rtc: "ON = ตั้งค่า"
vibe500: "OK = ตั้งค่า"
</dest>
<voice>
@ -3784,6 +3784,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3792,12 +3793,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = ยกเลิก"
gigabeatfx,mrobe500: "POWER = ยกเลิก"
gigabeats,sansafuzeplus: "BACK = ยกเลิก"
gogearsa9200: "LEFT = ยกเลิก"
@ -3806,7 +3807,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = ยกเลิก"
iriverh100,iriverh120,iriverh300: "STOP = ยกเลิก"
mrobe100: "DISPLAY = ยกเลิก"
rtc: "OFF = ยกเลิก"
samsungyh*: "REW = ยกเลิก"
vibe500: "C = ยกเลิก"
</dest>
@ -4245,7 +4245,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5413,7 +5413,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5421,7 +5421,7 @@
</dest>
<voice>
*: none
recording: "Same As Source"
recording: "Same as Source"
</voice>
</phrase>
<phrase>
@ -5671,7 +5671,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -5679,7 +5679,7 @@
</dest>
<voice>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</voice>
</phrase>
<phrase>
@ -6676,13 +6676,13 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "ค้นหาในรายการเพลง"
</dest>
<voice>
*: "Search In Playlist"
*: "Search in Playlist"
</voice>
</phrase>
<phrase>
@ -7054,10 +7054,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7307,7 +7307,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -7315,7 +7315,7 @@
</dest>
<voice>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</voice>
</phrase>
<phrase>
@ -9389,20 +9389,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Current Time"
</dest>
<voice>
*: none
rtc: "Current time:"
rtc: "Current time"
</voice>
</phrase>
<phrase>
@ -10358,7 +10358,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -10366,7 +10366,7 @@
</dest>
<voice>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</voice>
</phrase>
<phrase>
@ -10653,7 +10653,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""

View file

@ -217,8 +217,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -1582,7 +1582,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "En Düşük Aralık"
@ -1596,7 +1596,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "En Yüksek Aralık"
@ -1707,22 +1707,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "Açma Tuşu = Ayarla"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SEÇ Tuşu = Ayarla"
gogearsa9200,samsungyh*: "PLAY Tuşu = Ayarla"
aigoerosq,erosqnative,gogearsa9200,samsungyh*,xduoox3*: "PLAY Tuşu = Ayarla"
iriverh100,iriverh120,iriverh300: "NAVI Tuşu = Ayarla"
mpiohd300: "Tamam Tuşu = Ayarla"
mrobe500: "Kalp Tuşu = Ayarla"
rtc: "Açma Tuşu = Ayarla"
vibe500: "Tamam Tuşu = Ayarla"
</dest>
<voice>
@ -1736,31 +1736,30 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "BACK = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
iaudiom5,iaudiox5: "RECORD = Revert"
ipod*,mpiohd300,sansac200*: "MENU = Revert"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Geri Döndür"
gigabeatfx,mrobe500: "POWER = Geri Döndür"
gigabeats: "LEFT = Revert"
aigoerosq,erosqnative,gigabeats,sansafuzeplus,xduoox3*: "LEFT = Revert"
gogearsa9200: "LEFT = Geri Döndür"
iaudiom5,iaudiox5: "RECORD = Geri Döndür"
ipod*,mpiohd300,sansac200*: "MENU = Geri Döndür"
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Geri Döndür"
iriverh100,iriverh120,iriverh300: "STOP = Geri Döndür"
mrobe100: "DISPLAY = Geri Döndür"
rtc: "OFF = Geri Döndür"
samsungyh*: "REW = Geri Döndür"
sansafuzeplus: "BACK = Geri Döndür"
vibe500: "C = Geri Döndür"
</dest>
<voice>
@ -3037,7 +3036,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -3055,7 +3054,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -3460,19 +3459,19 @@
</phrase>
<phrase>
id: LANG_BATTERY_TYPE
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Battery Type"
battery_types: ""
</source>
<dest>
*: none
battery_types: "Pil Türü"
battery_types: ""
</dest>
<voice>
*: none
battery_types: "Pil Türü"
battery_types: ""
</voice>
</phrase>
<phrase>
@ -3922,7 +3921,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Oynatma Listesinde Ara"
@ -4622,7 +4621,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Önyüklemede Uyku Zamanlayıcısını Başlat"
@ -4632,16 +4631,16 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "Geçerli Zaman"
</dest>
<voice>
*: none
@ -4847,7 +4846,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Otomatik Devam"
@ -4935,7 +4934,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -5121,7 +5120,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -6150,7 +6149,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -6551,10 +6550,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7550,16 +7549,16 @@
</phrase>
<phrase>
id: LANG_CATALOG
desc: in main menu and onplay menu
desc: deprecated
user: core
<source>
*: "Playlist Catalogue"
*: ""
</source>
<dest>
*: "Oynatma Listesi Kataloğu"
*: ""
</dest>
<voice>
*: "Oynatma Listesi Kataloğu"
*: ""
</voice>
</phrase>
<phrase>
@ -9050,7 +9049,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Tuşa Basıldığında Uyku Zamanlayıcısını Yeniden Başlatın"
@ -9137,22 +9136,19 @@
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_2
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "NiMH"
xduoox3: "Older (1500 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "NiMH Nikel metal Hidrit"
xduoox3: "Daha eski (1500 mAh)"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "Nikel metal Hidrit"
xduoox3: "Daha eski 1500 miliamper saat"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
@ -11027,7 +11023,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Satırlar Ekrandan Taşsın mı?"
@ -11901,22 +11897,19 @@
</phrase>
<phrase>
id: LANG_BATTERY_TYPE_1
desc: in battery settings
desc: deprecated
user: core
<source>
*: none
battery_types: "Alkaline"
xduoox3: "Newer (2000 mAh)"
battery_types,xduoox3: ""
</source>
<dest>
*: none
battery_types: "Alkalin"
xduoox3: "Daha yeni (2000 mAh)"
battery_types,xduoox3: ""
</dest>
<voice>
*: none
battery_types: "Alkalin"
xduoox3: "Daha yeni 2000 mAh den"
battery_types,xduoox3: ""
</voice>
</phrase>
<phrase>
@ -12053,7 +12046,7 @@
desc: Relative volume of voice prompts
user: core
<source>
*: "Voice prompt volume"
*: "Voice Prompt Volume"
</source>
<dest>
*: "Ses istemi ses seviyesi"
@ -13251,48 +13244,6 @@
*: "7. Seviye 240 dakikada 40 hamle"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_8
desc: in the chessbox game level selection
user: core
<source>
*: "Level 8: 1 move / 15 min"
</source>
<dest>
*: "Seviye 8: 1 hamle / 15 dk."
</dest>
<voice>
*: "Seviye 8 15 dakikada 1 hamle"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_9
desc: in the chessbox game level selection
user: core
<source>
*: "Level 9: 1 move / 60 min"
</source>
<dest>
*: "Seviye 9: 1 hamle / 60 dk."
</dest>
<voice>
*: "Seviye 9 60 dakikada 1 hamle"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_LEVEL_10
desc: in the chessbox game level selection
user: core
<source>
*: "Level 10: 1 move / 600 min"
</source>
<dest>
*: "Seviye 10: 1 hamle / 600 dk."
</dest>
<voice>
*: "Seviye 10, 600 dakikada 1 hamle"
</voice>
</phrase>
<phrase>
id: LANG_CHESSBOX_PGN_PARSE_ERROR
desc: in the chessbox game viewer
@ -14686,16 +14637,16 @@
</phrase>
<phrase>
id: LANG_CACHE_REBUILT_NEXT_RESTART
desc: in the pictureflow splash messages
desc: deprecated
user: core
<source>
*: "Cache will be rebuilt on next restart"
*: ""
</source>
<dest>
*: "Önbellek bir sonraki yeniden başlatmada yeniden oluşturulacak"
*: ""
</dest>
<voice>
*: "Önbellek bir sonraki yeniden başlatmada yeniden oluşturulacak"
*: ""
</voice>
</phrase>
<phrase>
@ -15105,13 +15056,13 @@
desc: open plugin module
user: core
<source>
*: "Set Wps Context Plugin"
*: "Set WPS Context Plugin"
</source>
<dest>
*: "Wps Bağlam Eklentisini Ayarla"
*: "WPS Bağlam Eklentisini Ayarla"
</dest>
<voice>
*: "Wps Bağlam Eklentisini Ayarla"
*: "WPS Bağlam Eklentisini Ayarla"
</voice>
</phrase>
<phrase>

File diff suppressed because it is too large Load diff

View file

@ -3110,7 +3110,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Scherm schuift uit beeld"
@ -3372,7 +3372,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3389,7 +3389,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3730,7 +3730,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -3973,7 +3973,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Zoeken in afspeellijst"
@ -4179,20 +4179,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "huidigen tijd"
</dest>
<voice>
*: none
rtc: "huidigen tijd:"
rtc: "huidigen tijd"
</voice>
</phrase>
<phrase>
@ -4305,6 +4305,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -4313,12 +4314,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = terugzetten"
gigabeatfx,mrobe500: "POWER = terugzetten"
gigabeats,sansafuzeplus: "BACK = terugzetten"
gogearsa9200: "LINKS = terugzetten"
@ -4327,12 +4328,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = terugzetten"
iriverh100,iriverh120,iriverh300: "STOP = terugzetten"
mrobe100: "DISPLAY = terugzetten"
rtc: "OFF = terugzetten"
samsungyh*: "REW = terugzetten"
vibe500: "C = terugzetten"
</dest>
<voice>
*: none
rtc: "OFF = terugzetten"
gigabeatfx,mrobe500: "POWER = terugzetten"
gigabeats,sansafuzeplus: "BACK = terugzetten"
gogearsa9200: "LINKS = terugzetten"
@ -4341,7 +4342,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = terugzetten"
iriverh100,iriverh120,iriverh300: "STOP = terugzetten"
mrobe100: "DISPLAY = terugzetten"
rtc: "OFF = terugzetten"
samsungyh*: "REW = terugzetten"
vibe500: "C = terugzetten"
</voice>
@ -4517,7 +4517,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -4796,10 +4796,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "Variabele bitrate"
@ -8323,7 +8323,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -9098,7 +9098,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -9304,32 +9304,32 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = instellen"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = instellen"
gogearsa9200,samsungyh*: "PLAY = instellen"
iriverh100,iriverh120,iriverh300: "NAVI = instellen"
mpiohd300: "ENTER = instellen"
mrobe500: "HEART = instellen"
rtc: "ON = instellen"
vibe500: "OK = instellen"
</dest>
<voice>
*: none
rtc: "ON = instellen"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = instellen"
gogearsa9200,samsungyh*: "PLAY = instellen"
iriverh100,iriverh120,iriverh300: "NAVI = instellen"
mpiohd300: "ENTER = instellen"
mrobe500: "HEART = instellen"
rtc: "ON = instellen"
vibe500: "OK = instellen"
</voice>
</phrase>
@ -9651,8 +9651,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -10234,7 +10234,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10252,7 +10252,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none
@ -12194,7 +12194,7 @@
desc: resume settings menu
user: core
<source>
*: "Automatic resume"
*: "Automatic Resume"
</source>
<dest>
*: "Automatisch hervatten"
@ -12298,7 +12298,7 @@
desc: used in the onplay menu to set a playlist catalogue dir
user: core
<source>
*: "Set As Playlist Catalogue Directory"
*: "Set as Playlist Catalogue Directory"
</source>
<dest>
*: "Instellen als afspeellijstcatalogusmap"
@ -12399,7 +12399,7 @@
desc: whether sleep timer starts on power up
user: core
<source>
*: "Start Sleep Timer On Boot"
*: "Start Sleep Timer on Boot"
</source>
<dest>
*: "Slaaptimer starten bij opstarten"
@ -12517,7 +12517,7 @@
desc: whether to restart running sleep timer on keypress
user: core
<source>
*: "Restart Sleep Timer On Keypress"
*: "Restart Sleep Timer on Keypress"
</source>
<dest>
*: "Slaaptimer herstarten bij toetsklik"

View file

@ -847,7 +847,7 @@
desc: options menu to set fade on stop or pause
user: core
<source>
*: "Fade On Stop/Pause"
*: "Fade on Stop/Pause"
</source>
<dest>
*: "Uberblendu bi Stop/Pause"
@ -1575,7 +1575,7 @@
desc: in display_settings_menu
user: core
<source>
*: "Backlight On When Plugged"
*: "Backlight on When Plugged"
</source>
<dest>
*: "Bilüüchtig a bim Netzbitrieb"
@ -1981,7 +1981,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
</source>
<dest>
*: "chlinschte Wärt"
@ -1995,7 +1995,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
</source>
<dest>
*: "greeschte Wärt"
@ -2439,17 +2439,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: ""
*: none
rtc: "Current Time"
</source>
<dest>
*: ""
*: none
rtc: ""
</dest>
<voice>
*: ""
*: none
rtc: ""
</voice>
</phrase>
<phrase>
@ -2647,7 +2650,7 @@
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
user: core
<source>
*: "Waking Up In %d:%02d"
*: "Waking Up in %d:%02d"
</source>
<dest>
*: "Üfwachu in %d:%02d"

View file

@ -232,8 +232,8 @@
</voice>
</phrase>
<phrase>
id: LANG_RESET_ASK
desc: confirm to reset settings
id: LANG_ARE_YOU_SURE
desc: confirm action
user: core
<source>
*: "Are You Sure?"
@ -2953,7 +2953,7 @@
desc: should lines scroll out of the screen
user: core
<source>
*: "Screen Scrolls Out Of View"
*: "Screen Scrolls Out of View"
</source>
<dest>
*: "Erôlaedje foû del waitroûle"
@ -3280,7 +3280,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Minimum Of Range"
*: "Minimum of Range"
masd: none
</source>
<dest>
@ -3297,7 +3297,7 @@
desc: in the peak meter menu
user: core
<source>
*: "Maximum Of Range"
*: "Maximum of Range"
masd: none
</source>
<dest>
@ -3793,22 +3793,22 @@
user: core
<source>
*: none
rtc: "ON = Set"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
gogearsa9200,samsungyh*: "PLAY = Set"
iriverh100,iriverh120,iriverh300: "NAVI = Set"
mpiohd300: "ENTER = Set"
mrobe500: "HEART = Set"
rtc: "ON = Set"
vibe500: "OK = Set"
</source>
<dest>
*: none
rtc: "ON = Eployî"
gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Eployî"
gogearsa9200,samsungyh*: "PLAY = Eployî"
iriverh100,iriverh120,iriverh300: "NAVI = Eployî"
mpiohd300: "ENTER = Eployî"
mrobe500: "HEART = Eployî"
rtc: "ON = Eployî"
vibe500: "OK = Eployî"
</dest>
<voice>
@ -3822,6 +3822,7 @@
user: core
<source>
*: none
rtc: "OFF = Revert"
gigabeatfx,mrobe500: "POWER = Revert"
gigabeats,sansafuzeplus: "BACK = Revert"
gogearsa9200: "LEFT = Revert"
@ -3830,12 +3831,12 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
iriverh100,iriverh120,iriverh300: "STOP = Revert"
mrobe100: "DISPLAY = Revert"
rtc: "OFF = Revert"
samsungyh*: "REW = Revert"
vibe500: "CANCEL = Revert"
</source>
<dest>
*: none
rtc: "OFF = Rinoncî"
gigabeatfx,mrobe500: "POWER = Rinoncî"
gigabeats,sansafuzeplus: "BACK = Rinoncî"
gogearsa9200: "LEFT = Rinoncî"
@ -3844,7 +3845,6 @@
iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Rinoncî"
iriverh100,iriverh120,iriverh300: "STOP = Rinoncî"
mrobe100: "DISPLAY = Rinoncî"
rtc: "OFF = Rinoncî"
samsungyh*: "REW = Rinoncî"
vibe500: "C = Rinoncî"
</dest>
@ -4284,7 +4284,7 @@
user: core
<source>
*: none
alarm: "Waking Up In %d:%02d"
alarm: "Waking Up in %d:%02d"
</source>
<dest>
*: none
@ -5453,7 +5453,7 @@
user: core
<source>
*: none
recording: "(Same As Source)"
recording: "(Same as Source)"
</source>
<dest>
*: none
@ -5709,7 +5709,7 @@
user: core
<source>
*: none
recording: "Set As Recording Directory"
recording: "Set as Recording Directory"
</source>
<dest>
*: none
@ -6714,7 +6714,7 @@
desc: in playlist menu.
user: core
<source>
*: "Search In Playlist"
*: "Search in Playlist"
</source>
<dest>
*: "Cweri el djivêye di boket"
@ -7092,10 +7092,10 @@
desc: in browse_id3
user: core
<source>
*: " (VBR)"
*: "(VBR)"
</source>
<dest>
*: " (VBR)"
*: "(VBR)"
</dest>
<voice>
*: "VBR"
@ -7345,7 +7345,7 @@
user: core
<source>
*: none
lcd_non-mono: "Set As Backdrop"
lcd_non-mono: "Set as Backdrop"
</source>
<dest>
*: none
@ -9426,20 +9426,20 @@
</voice>
</phrase>
<phrase>
id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce
id: LANG_CURRENT_TIME
desc: for wall clock announce
user: core
<source>
*: none
rtc: ""
rtc: "Current Time"
</source>
<dest>
*: none
rtc: ""
rtc: "eure do moumint"
</dest>
<voice>
*: none
rtc: "eure do moumint:"
rtc: "eure do moumint"
</voice>
</phrase>
<phrase>
@ -10289,7 +10289,7 @@
</phrase>
<phrase>
id: VOICE_OK
desc: spoken only, On exiting a context, specifically the quick screen
desc: spoken only, on exiting a context, specifically the quick screen
user: core
<source>
*: ""
@ -10307,7 +10307,7 @@
user: core
<source>
*: none
recording: "Stop Recording And Shutdown"
recording: "Stop Recording and Shutdown"
</source>
<dest>
*: none

View file

@ -206,7 +206,7 @@ int main(void)
int fd = open(ROCKBOX_DIR"/playername.txt", O_CREAT|O_WRONLY|O_TRUNC, 0666);
if(fd >= 0)
{
fdprintf(fd, "%s!", str(LANG_ROCKBOX_TITLE));
fdprintf(fd, "%s", MODEL_NAME);
close(fd);
}
}
@ -500,7 +500,7 @@ static void init(void)
power_init();
enable_irq();
#ifdef CPU_ARM
#if defined(CPU_ARM_CLASSIC)
enable_fiq();
#endif
/* current_tick should be ticking by now */
@ -636,16 +636,24 @@ static void init(void)
CHART("<disk_mount_all");
if (rc<=0)
{
int line=0;
lcd_clear_display();
lcd_puts(0, 0, "No partition");
lcd_putsf(0, 1, "found (%d).", rc);
lcd_putsf(0, line++, "No partition found (%d).", rc);
#ifndef USB_NONE
lcd_puts(0, 2, "Insert USB cable");
lcd_puts(0, 3, "and fix it.");
lcd_puts(0, line++, "Insert USB cable");
lcd_puts(0, line++, "and fix it.");
#elif !defined(DEBUG) && !(CONFIG_STORAGE & STORAGE_RAMDISK)
lcd_puts(0, 2, "Rebooting in 5s");
lcd_puts(0, line++, "Rebooting in 5s");
#endif
lcd_puts(0, 4, rbversion);
lcd_puts(0, line++, rbversion);
struct partinfo pinfo;
for (int i = 0 ; i < NUM_VOLUMES ; i++) {
disk_partinfo(i, &pinfo);
if (pinfo.type)
lcd_putsf(0, line++, "P%d T%02x S%08lx",
i, pinfo.type, pinfo.size);
}
lcd_update();
#if defined(MAX_VIRT_SECTOR_SIZE) && defined(DEFAULT_VIRT_SECTOR_SIZE)

View file

@ -578,7 +578,9 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
shortcuts_add(SHORTCUT_SETTING, (void*)setting);
break;
#endif
} /* swicth(do_menu()) */
} /* switch(do_menu()) */
if (menu->flags & MENU_EXITAFTERTHISMENU)
done = true; /* in case onplay menu contains setting */
redraw_lists = true;
}
} /* else if (!in_stringlist) */

View file

@ -57,7 +57,7 @@ static int show_info(void);
static int reset_settings(void)
{
static const char *lines[]={ID2P(LANG_RESET_ASK)};
static const char *lines[]={ID2P(LANG_ARE_YOU_SURE), ID2P(LANG_RESET)};
static const char *yes_lines[]={
ID2P(LANG_SETTINGS),
ID2P(LANG_RESET_DONE_CLEAR)
@ -66,7 +66,7 @@ static int reset_settings(void)
ID2P(LANG_SETTINGS),
ID2P(LANG_CANCEL)
};
static const struct text_message message={lines, 1};
static const struct text_message message={lines, 2};
static const struct text_message yes_message={yes_lines, 2};
static const struct text_message no_message={no_lines, 2};
@ -123,9 +123,9 @@ static int show_credits(void)
static int show_legal(void)
{
if (plugin_load(VIEWERS_DIR "/text_viewer.rock", "/.rockbox/docs/COPYING.txt") != PLUGIN_OK)
if (plugin_load(VIEWERS_DIR "/text_viewer.rock", ROCKBOX_DIR "/docs/COPYING.txt") != PLUGIN_OK)
show_info();
if (plugin_load(VIEWERS_DIR "/text_viewer.rock", "/.rockbox/docs/LICENSES.txt") != PLUGIN_OK)
if (plugin_load(VIEWERS_DIR "/text_viewer.rock", ROCKBOX_DIR "/docs/LICENSES.txt") != PLUGIN_OK)
show_info();
return 0;
}
@ -240,7 +240,7 @@ static int info_speak_item(int selected_item, void * data)
#if CONFIG_RTC
case INFO_TIME:
talk_id(VOICE_CURRENT_TIME, false);
talk_id(LANG_CURRENT_TIME, false);
/* fallthrough */
case INFO_DATE:
tm = get_time();
@ -495,6 +495,15 @@ MAKE_MENU(info_menu, ID2P(LANG_SYSTEM), 0, Icon_System_menu,
/* INFO MENU */
/***********************************/
static int main_menu_config(void)
{
plugin_load(PLUGIN_APPS_DIR "/main_menu_config.rock", NULL);
return 0;
}
MENUITEM_FUNCTION(main_menu_config_item, 0, ID2P(LANG_MAIN_MENU),
main_menu_config, NULL, Icon_Rockbox);
/***********************************/
/* MAIN MENU */
@ -509,6 +518,7 @@ MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), NULL,
#if CONFIG_RTC
&timedate_item,
#endif
&main_menu_config_item,
&manage_settings,
);
/* MAIN MENU */

View file

@ -177,26 +177,7 @@ MENUITEM_SETTING(pause_rewind, &global_settings.pause_rewind, NULL);
MENUITEM_SETTING(play_frequency, &global_settings.play_frequency, NULL);
#endif
#ifdef HAVE_ALBUMART
static int albumart_callback(int action,
const struct menu_item_ex *this_item,
struct gui_synclist *this_list)
{
(void)this_item;
(void)this_list;
static int initial_aa_setting;
switch (action)
{
case ACTION_ENTER_MENUITEM:
initial_aa_setting = global_settings.album_art;
break;
case ACTION_EXIT_MENUITEM: /* on exit */
if (initial_aa_setting != global_settings.album_art)
set_albumart_mode(global_settings.album_art);
}
return action;
}
MENUITEM_SETTING(album_art, &global_settings.album_art,
albumart_callback);
MENUITEM_SETTING(album_art, &global_settings.album_art, NULL);
#endif
MENUITEM_SETTING(playback_log, &global_settings.playback_log, NULL);

View file

@ -157,9 +157,11 @@ MAKE_MENU(currentplaylist_settings_menu, ID2P(LANG_CURRENT_PLAYLIST),
&show_shuffled_adding_options,
&show_queue_options);
MENUITEM_SETTING(sort_playlists, &global_settings.sort_playlists, NULL);
MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLISTS), NULL,
Icon_Playlist,
&viewer_settings_menu, &recursive_dir_insert, &currentplaylist_settings_menu);
&sort_playlists, &viewer_settings_menu, &recursive_dir_insert,
&currentplaylist_settings_menu);
MAKE_MENU(playlist_options, ID2P(LANG_PLAYLISTS), NULL,
Icon_Playlist,
&view_cur_playlist, &save_playlist,

View file

@ -180,14 +180,10 @@ MAKE_MENU(tagcache_menu, ID2P(LANG_TAGCACHE), 0, Icon_NOICON,
/***********************************/
/* FILE VIEW MENU */
static int fileview_callback(int action,
const struct menu_item_ex *this_item,
struct gui_synclist *this_list);
MENUITEM_SETTING(sort_case, &global_settings.sort_case, NULL);
MENUITEM_SETTING(sort_dir, &global_settings.sort_dir, fileview_callback);
MENUITEM_SETTING(sort_file, &global_settings.sort_file, fileview_callback);
MENUITEM_SETTING(interpret_numbers, &global_settings.interpret_numbers, fileview_callback);
MENUITEM_SETTING(sort_dir, &global_settings.sort_dir, NULL);
MENUITEM_SETTING(sort_file, &global_settings.sort_file, NULL);
MENUITEM_SETTING(interpret_numbers, &global_settings.interpret_numbers, NULL);
MENUITEM_SETTING(dirfilter, &global_settings.dirfilter, NULL);
MENUITEM_SETTING(show_filename_ext, &global_settings.show_filename_ext, NULL);
MENUITEM_SETTING(browse_current, &global_settings.browse_current, NULL);
@ -205,25 +201,6 @@ static int clear_start_directory(void)
}
MENUITEM_FUNCTION(clear_start_directory_item, 0, ID2P(LANG_RESET_START_DIR),
clear_start_directory, NULL, Icon_file_view_menu);
static int fileview_callback(int action,
const struct menu_item_ex *this_item,
struct gui_synclist *this_list)
{
(void)this_list;
static int oldval;
int *variable = this_item->variable;
switch (action)
{
case ACTION_ENTER_MENUITEM: /* on entering an item */
oldval = *variable;
break;
case ACTION_EXIT_MENUITEM: /* on exit */
if (*variable != oldval)
reload_directory(); /* force reload if this has changed */
break;
}
return action;
}
static int filemenu_callback(int action,
const struct menu_item_ex *this_item,
@ -243,10 +220,13 @@ static int filemenu_callback(int action,
{
(void)this_list;
/* Show File View menu in Settings or File Browser,
but not in Database or Playlist Catalog */
if (action == ACTION_REQUEST_MENUITEM &&
this_item == &file_menu &&
get_onplay_context() == CONTEXT_ID3DB &&
get_current_activity() != ACTIVITY_SETTINGS)
get_current_activity() != ACTIVITY_SETTINGS &&
(get_onplay_context() != CONTEXT_TREE
|| *tree_get_context()->dirfilter == SHOW_M3U))
return ACTION_EXIT_MENUITEM;
return action;
@ -505,7 +485,7 @@ int sleeptimer_voice(int selected_item, void*data)
{
(void)selected_item;
(void)data;
talk_sleeptimer();
talk_sleeptimer(-1);
return 0;
}

View file

@ -29,6 +29,7 @@
#include "settings.h"
#include "rbpaths.h"
#include "menu.h"
#include "dir.h"
#include "tree.h"
#include "list.h"
#include "color_picker.h"
@ -42,6 +43,7 @@
#include "viewport.h"
#include "statusbar-skinned.h"
#include "skin_engine/skin_engine.h"
#include "splash.h"
#include "icons.h"
#ifdef HAVE_LCD_COLOR
#include "filetypes.h"
@ -211,7 +213,9 @@ MENUITEM_SETTING(remote_statusbar, &global_settings.remote_statusbar,
statusbar_callback_remote);
#endif
MENUITEM_SETTING(volume_type, &global_settings.volume_type, NULL);
#if (CONFIG_BATTERY_MEASURE != 0)
MENUITEM_SETTING(battery_display, &global_settings.battery_display, NULL);
#endif
MAKE_MENU(bars_menu, ID2P(LANG_BARS_MENU), 0, Icon_NOICON,
&scrollbar_item, &scrollbar_width, &statusbar,
#ifdef HAVE_REMOTE_LCD
@ -256,6 +260,11 @@ int browse_folder(void *param)
.root = info->dir,
};
if (!dir_exists(info->dir)) {
splash(HZ, ID2P(LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR));
return GO_TO_PREVIOUS;
}
/* if we are in a special settings folder, center the current setting */
switch(info->show_options)
{
@ -323,6 +332,7 @@ int browse_folder(void *param)
browse.title = str(lang_id);
}
tree_get_context()->browse = NULL; /*bugfix - force root dir reload */
return rockbox_browse(&browse);
}

View file

@ -178,7 +178,7 @@ char *output_dyn_value(char *buf,
}
else
{
talk_fractional(tbuf, value, P2ID(units[unit_no]));
talk_fractional(tbuf, value2, P2ID(units[unit_no]));
}
return buf;
}
@ -196,7 +196,13 @@ bool warn_on_pl_erase(void)
{ID2P(LANG_WARN_ERASEDYNPLAYLIST_PROMPT)};
static const struct text_message message={lines, 1};
return (gui_syncyesno_run(&message, NULL, NULL) == YESNO_YES);
if (gui_syncyesno_run(&message, NULL, NULL) == YESNO_YES)
return true;
else
{
splash(HZ, ID2P(LANG_CANCEL));
return false;
}
}
else
return true;
@ -204,12 +210,13 @@ bool warn_on_pl_erase(void)
bool show_search_progress(bool init, int display_count, int current, int total)
{
static int last_tick = 0;
static long last_tick, talked_tick;
/* Don't show splashes for 1/2 second after starting search */
if (init)
{
last_tick = current_tick + HZ/2;
talked_tick = 0;
return true;
}
@ -217,13 +224,22 @@ bool show_search_progress(bool init, int display_count, int current, int total)
if (TIME_AFTER(current_tick, last_tick + HZ/10))
{
if (total != current)
{
/* (voiced) */
splash_progress(current, total, str(LANG_PLAYLIST_SEARCH_MSG),
display_count, str(LANG_OFF_ABORT));
}
else
{
if (global_settings.talk_menu &&
TIME_AFTER(current_tick, talked_tick + (HZ * 5)))
{
talked_tick = current_tick;
talk_number(display_count, false);
talk_id(LANG_PLAYLIST_SEARCH_MSG, true);
}
/* (voiced above) */
splashf(0, str(LANG_PLAYLIST_SEARCH_MSG),
display_count, str(LANG_OFF_ABORT));
}
if (action_userabort(TIMEOUT_NOBLOCK))
return false;
@ -861,7 +877,7 @@ void setvol(void)
volume = max_vol;
if (volume > global_settings.volume_limit)
volume = global_settings.volume_limit;
global_status.volume = volume;
sound_set_volume(volume);
global_status.last_volume_change = current_tick;
status_save(false);
@ -1539,13 +1555,14 @@ int toggle_sleeptimer(void)
return 0;
}
void talk_sleeptimer(void)
void talk_sleeptimer(int custom_duration)
{
int seconds = get_sleep_timer();
int seconds = custom_duration < 0 ? get_sleep_timer() : custom_duration*60;
long talk_ids[] = {
seconds ? LANG_SLEEP_TIMER_CANCEL_CURRENT
: LANG_SLEEP_TIMER_START_CURRENT,
custom_duration >= 0 ? LANG_SLEEP_TIMER :
(seconds ? LANG_SLEEP_TIMER_CANCEL_CURRENT : LANG_SLEEP_TIMER_START_CURRENT),
VOICE_PAUSE,
custom_duration == 0 ? LANG_OFF :
(seconds ? seconds_to_min(seconds)
: global_settings.sleeptimer_duration) | UNIT_MIN << UNIT_SHIFT,
TALK_FINAL_ID
@ -1559,7 +1576,7 @@ void talk_timedate(void)
struct tm *tm = get_time();
if (!global_settings.talk_menu)
return;
talk_id(VOICE_CURRENT_TIME, false);
talk_id(LANG_CURRENT_TIME, false);
if (valid_time(tm))
{
talk_time(tm, true);

View file

@ -101,7 +101,7 @@ const char* format_sleeptimer(char* buffer, size_t buffer_size,
canceled, and how long it will be or how long is remaining in brackets */
char* string_sleeptimer(char *buffer, size_t buffer_len);
int toggle_sleeptimer(void);
void talk_sleeptimer(void);
void talk_sleeptimer(int custom_duration);
#if CONFIG_RTC
void talk_timedate(void);

View file

@ -64,6 +64,9 @@
#include "pathfuncs.h"
#include "shortcuts.h"
#include "misc.h"
#ifdef HAVE_DISK_STORAGE
#include "storage.h"
#endif
static int onplay_result = ONPLAY_OK;
static bool in_queue_submenu = false;
@ -180,7 +183,7 @@ static int bookmark_menu_callback(int action,
/* CONTEXT_WPS playlist options */
static bool shuffle_playlist(void)
{
if (!warn_on_pl_erase())
if (!yesno_pop_confirm(ID2P(LANG_SHUFFLE)))
return false;
playlist_sort(NULL, true);
playlist_randomise(NULL, current_tick, true);
@ -267,6 +270,11 @@ static void op_playlist_insert_selected(int position, bool queue)
ctx_current_playlist_insert(position, queue, false);
return;
}
else if (selected_file.context == CONTEXT_ID3DB)
{
tagtree_current_playlist_insert(position, queue);
return;
}
#endif
if ((selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO)
playlist_insert_track(NULL, selected_file.path, position, queue, true);
@ -274,13 +282,6 @@ static void op_playlist_insert_selected(int position, bool queue)
playlist_insert_playlist(NULL, selected_file.path, position, queue);
else if (selected_file.attr & ATTR_DIRECTORY)
{
#ifdef HAVE_TAGCACHE
if (selected_file.context == CONTEXT_ID3DB)
{
tagtree_current_playlist_insert(position, queue);
return;
}
#endif
bool recurse = (global_settings.recursive_dir_insert == RECURSE_ON);
if (global_settings.recursive_dir_insert == RECURSE_ASK)
{
@ -839,16 +840,33 @@ static bool list_viewers(void)
#ifdef HAVE_TAGCACHE
static bool prepare_database_sel(void *param)
{
if (selected_file.context == CONTEXT_ID3DB &&
(selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO)
if (selected_file.context == CONTEXT_ID3DB)
{
if (!strcmp(param, "properties"))
if (param && !strcmp(param, "properties")
&& (selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO)
{
strmemccpy(selected_file.buf, MAKE_ACT_STR(ACTIVITY_DATABASEBROWSER),
sizeof(selected_file.buf));
else if (!tagtree_get_subentry_filename(selected_file.buf, MAX_PATH))
}
else
{
onplay_result = ONPLAY_RELOAD_DIR;
return false;
/* If database is not loaded into RAM, or tagcache_ram is
set to "quick", filename needs to be retrieved from disk! */
#ifdef HAVE_DISK_STORAGE
if ((selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO
&& !storage_disk_is_active()
#ifdef HAVE_TC_RAMCACHE
&& (global_settings.tagcache_ram != TAGCACHE_RAM_ON
|| !tagcache_is_in_ram())
#endif
)
splash(0, ID2P(LANG_WAIT));
#endif
if (!tagtree_get_subentry_filename(selected_file.buf, MAX_PATH))
{
onplay_result = ONPLAY_RELOAD_DIR;
return false;
}
}
selected_file.path = selected_file.buf;
@ -1031,9 +1049,13 @@ static int clipboard_callback(int action,
else if (selected_file.path)
{
/* requires an actual file */
if (this_item == &rename_file_item ||
this_item == &clipboard_cut_item ||
this_item == &clipboard_copy_item ||
if (this_item == &clipboard_cut_item ||
this_item == &clipboard_copy_item)
{
if (*tree_get_context()->dirfilter != SHOW_M3U)
return action;
}
else if (this_item == &rename_file_item ||
(this_item == &track_info_item &&
(selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) ||
(this_item == &properties_item &&
@ -1058,12 +1080,14 @@ static int clipboard_callback(int action,
)
return action;
}
else if (this_item == &delete_file_item ||
this_item == &list_viewers_item)
{
/* only for files */
return action;
else if (this_item == &list_viewers_item)
{
if (*tree_get_context()->dirfilter != SHOW_M3U)
return action;
}
else if (this_item == &delete_file_item)
return action;
#if LCD_DEPTH > 1
else if (this_item == &set_backdrop_item)
{
@ -1108,6 +1132,23 @@ MAKE_ONPLAYMENU( wps_onplay_menu, ID2P(LANG_ONPLAY_MENU_TITLE),
#endif
);
int sort_playlists_callback(int action,
const struct menu_item_ex *this_item,
struct gui_synclist *this_list)
{
(void) this_list;
(void) this_item;
if (action == ACTION_REQUEST_MENUITEM &&
*tree_get_context()->dirfilter != SHOW_M3U)
{
return ACTION_EXIT_MENUITEM;
}
return action;
}
MENUITEM_SETTING(sort_playlists, &global_settings.sort_playlists, sort_playlists_callback);
MENUITEM_FUNCTION(view_playlist_item, 0, ID2P(LANG_VIEW),
view_playlist,
onplaymenu_callback, Icon_Playlist);
@ -1125,7 +1166,7 @@ MAKE_ONPLAYMENU( tree_onplay_menu, ID2P(LANG_ONPLAY_MENU_TITLE),
#if LCD_DEPTH > 1
&set_backdrop_item,
#endif
&add_to_faves_item, &set_as_dir_menu, &file_menu,
&add_to_faves_item, &set_as_dir_menu, &file_menu, &sort_playlists,
);
static int onplaymenu_callback(int action,
const struct menu_item_ex *this_item,
@ -1173,6 +1214,9 @@ static bool hotkey_delete_item(void)
if (selected_file.context == CONTEXT_ID3DB &&
(selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO)
return false;
if (!prepare_database_sel(NULL))
return false;
#endif
return clipboard_delete_selected_fileobject();
@ -1186,6 +1230,10 @@ static bool hotkey_open_with(void)
#ifdef HAVE_MULTIVOLUME
if (selected_file.attr & ATTR_VOLUME)
return false;
#endif
#ifdef HAVE_TAGCACHE
if (!prepare_database_sel(NULL))
return false;
#endif
return list_viewers();
}
@ -1341,8 +1389,7 @@ int onplay(char* file, int attr, int from_context, bool hotkey, int customaction
selected_file_set(from_context, NULL, attr);
#ifdef HAVE_TAGCACHE
if (from_context == CONTEXT_ID3DB &&
(attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO)
if (from_context == CONTEXT_ID3DB)
{
ctx_add_to_playlist = tagtree_add_to_playlist;
if (file != NULL)

View file

@ -348,7 +348,7 @@ uint32_t open_plugin_add_path(const char *key, const char *plugin, const char *p
logf("OP add_path Invalid, *Clearing entry*");
if (lang_id != LANG_SHORTCUTS) /* from shortcuts menu */
splashf(HZ * 2, str(LANG_OPEN_PLUGIN_NOT_A_PLUGIN), pos);
splashf(HZ * 2, ID2P(LANG_OPEN_PLUGIN_NOT_A_PLUGIN), pos);
op_clear_entry(op_entry);
return 0;
}

View file

@ -140,7 +140,8 @@
* a supported position for (A)dd or (Q)eue commands.
* v6 removed the (C)lear command.
*/
#define PLAYLIST_CONTROL_FILE_MIN_VERSION 2
#define PLAYLIST_CONTROL_FILE_LTS_VERSION 2 /* v2 still supported */
#define PLAYLIST_CONTROL_FILE_MIN_VERSION 6
#define PLAYLIST_CONTROL_FILE_VERSION 6
#define PLAYLIST_COMMAND_SIZE (MAX_PATH+12)
@ -679,12 +680,22 @@ static void display_playlist_count(int count, const unsigned char *fmt,
if(count && TIME_AFTER(current_tick, next_tick))
{
talked_tick = current_tick;
talk_number(count, false);
talk_id(id, true);
if (final)
{
talk_id(LANG_ALL, false);
talk_number(count, true);
talk_id(id, true);
talk_force_enqueue_next(); /* Don't interrupt final announcement */
}
else
{
talk_number(count, false);
talk_id(id, true);
}
}
}
splashf(0, P2STR(fmt), count, str(LANG_OFF_ABORT));
splashf(0, P2STR(fmt), count, str(LANG_OFF_ABORT)); /* (voiced above) */
}
/*
@ -1164,7 +1175,7 @@ static int create_and_play_dir(int direction, bool play_last)
/*
* remove all tracks, leaving the current track queued
*/
static int remove_all_tracks_unlocked(struct playlist_info *playlist, bool write)
static int remove_all_tracks_unlocked(struct playlist_info *playlist)
{
char filename[MAX_PATH];
int seek_pos = -1;
@ -1172,25 +1183,22 @@ static int remove_all_tracks_unlocked(struct playlist_info *playlist, bool write
if (playlist->amount <= 0)
return 0;
if (write) /* Write control file commands to disk */
{
if (playlist->control_fd < 0)
return -1;
if (playlist->control_fd < 0)
return -1;
if (get_track_filename(playlist, playlist->index,
filename, sizeof(filename)) != 0)
return -1;
if (get_track_filename(playlist, playlist->index,
filename, sizeof(filename)) != 0)
return -1;
/* Start over with fresh control file for emptied dynamic playlist */
pl_close_control(playlist);
create_control_unlocked(playlist);
update_control_unlocked(playlist, PLAYLIST_COMMAND_PLAYLIST,
PLAYLIST_CONTROL_FILE_VERSION, -1,
"", "", NULL);
update_control_unlocked(playlist, PLAYLIST_COMMAND_QUEUE,
0, 0, filename, NULL, &seek_pos);
sync_control_unlocked(playlist);
}
/* Start over with fresh control file for emptied dynamic playlist */
pl_close_control(playlist);
create_control_unlocked(playlist);
update_control_unlocked(playlist, PLAYLIST_COMMAND_PLAYLIST,
PLAYLIST_CONTROL_FILE_VERSION, -1,
"", "", NULL);
update_control_unlocked(playlist, PLAYLIST_COMMAND_QUEUE,
0, 0, filename, NULL, &seek_pos);
sync_control_unlocked(playlist);
/* Move current track down to position 0 */
playlist->indices[0] = playlist->indices[playlist->index];
@ -1338,7 +1346,7 @@ static int add_track_to_playlist_unlocked(struct playlist_info* playlist,
break;
}
case PLAYLIST_REPLACE:
if (remove_all_tracks_unlocked(playlist, true) < 0)
if (remove_all_tracks_unlocked(playlist) < 0)
return -1;
int newpos = playlist->index + 1;
playlist->last_insert_pos = position = insert_position = newpos;
@ -2416,7 +2424,7 @@ int playlist_insert_context_create(struct playlist_info* playlist,
if (position == PLAYLIST_REPLACE)
{
if (remove_all_tracks_unlocked(playlist, true) == 0)
if (remove_all_tracks_unlocked(playlist) == 0)
position = PLAYLIST_INSERT_LAST;
else
{
@ -3082,7 +3090,7 @@ int playlist_remove_all_tracks(struct playlist_info *playlist)
dc_thread_stop(playlist);
playlist_write_lock(playlist);
result = remove_all_tracks_unlocked(playlist, true);
result = remove_all_tracks_unlocked(playlist);
playlist_write_unlock(playlist);
dc_thread_start(playlist, false);
@ -3119,8 +3127,6 @@ static enum playlist_command pl_cmds_run(char cmd)
return PLAYLIST_COMMAND_UNSHUFFLE;
case 'R':
return PLAYLIST_COMMAND_RESET;
case 'C':
return PLAYLIST_COMMAND_CLEAR;
case 'F':
return PLAYLIST_COMMAND_FLAGS;
case '#':
@ -3283,8 +3289,9 @@ int playlist_resume(void)
* (It's not a big deal since the error message will
* be practically the same either way...)
*/
if (version < PLAYLIST_CONTROL_FILE_MIN_VERSION ||
version > PLAYLIST_CONTROL_FILE_VERSION)
if ((version < PLAYLIST_CONTROL_FILE_MIN_VERSION ||
version > PLAYLIST_CONTROL_FILE_VERSION)
&& version != PLAYLIST_CONTROL_FILE_LTS_VERSION)
{
result = -3;
goto out;
@ -3418,19 +3425,6 @@ int playlist_resume(void)
playlist->last_insert_pos = -1;
break;
}
/* FIXME: Deprecated.
* Adjust PLAYLIST_CONTROL_FILE_MIN_VERSION after removal */
case PLAYLIST_COMMAND_CLEAR:
{
if (strp[0])
playlist->index = atoi(strp[0]);
if (remove_all_tracks_unlocked(playlist, false) < 0)
{
result = -16;
goto out;
}
break;
}
case PLAYLIST_COMMAND_FLAGS:
{
if (!strp[0] || !strp[1])

View file

@ -51,7 +51,6 @@ enum playlist_command {
PLAYLIST_COMMAND_SHUFFLE,
PLAYLIST_COMMAND_UNSHUFFLE,
PLAYLIST_COMMAND_RESET,
PLAYLIST_COMMAND_CLEAR,
PLAYLIST_COMMAND_FLAGS,
PLAYLIST_COMMAND_COMMENT,
PLAYLIST_COMMAND_ERROR = PLAYLIST_COMMAND_COMMENT + 1 /* Internal */

View file

@ -100,6 +100,7 @@ static int initialize_catalog_buf(char* dirbuf, size_t dirbuf_sz)
talk_dir_or_spell(dirbuf, NULL, true);
talk_force_enqueue_next();
}
/* (voiced above) */
splashf(HZ*2, str(LANG_CATALOG_NO_DIRECTORY), dirbuf);
return -1;
}
@ -264,7 +265,7 @@ static void display_insert_count(int count)
talk_number(count, false);
talk_id(LANG_PLAYLIST_INSERT_COUNT, true);
}
/* (voiced above) */
splashf(0, str(LANG_PLAYLIST_INSERT_COUNT), count, str(LANG_OFF_ABORT));
}
@ -286,8 +287,8 @@ static int add_track_to_playlist(char* filename, void* context)
/* Add "sel" file into specified "playlist". How to insert depends on type
of file */
static int add_to_playlist(const char* playlist, bool new_playlist,
const char* sel, int sel_attr)
int catalog_insert_into(const char* playlist, bool new_playlist,
const char* sel, int sel_attr)
{
int fd;
int result = -1;
@ -514,7 +515,7 @@ bool catalog_add_to_a_playlist(const char* sel, int sel_attr,
result = ctx_add_to_playlist(playlist, new_playlist);
}
else
result = add_to_playlist(playlist, new_playlist, sel, sel_attr);
result = catalog_insert_into(playlist, new_playlist, sel, sel_attr);
return (result == 0);
}

View file

@ -36,6 +36,9 @@ bool catalog_view_playlists(void);
bool catalog_pick_new_playlist_name(char *pl_name, size_t buf_size,
const char* curr_pl_name);
int catalog_insert_into(const char* playlist, bool new_playlist,
const char* sel, int sel_attr);
/*
* Add something to a playlist (new or select from list of playlists in
* catalog).

View file

@ -774,6 +774,8 @@ static enum pv_context_result context_menu(int index)
return show_track_info(current_track);
case 5:
/* shuffle */
if (!yesno_pop_confirm(ID2P(LANG_SHUFFLE)))
return PV_CONTEXT_UNCHANGED;
playlist_sort(viewer.playlist, !viewer.playlist);
playlist_randomise(viewer.playlist, current_tick, !viewer.playlist);
viewer.selected_track = 0;
@ -1253,6 +1255,7 @@ bool search_playlist(void)
int found_indicies_count = 0, last_found_count = -1;
int button;
int track_display = global_settings.playlist_viewer_track_display;
long talked_tick = 0;
struct gui_synclist playlist_lists;
struct playlist_track_info track;
@ -1271,6 +1274,14 @@ bool search_playlist(void)
{
if (found_indicies_count != last_found_count)
{
if (global_settings.talk_menu &&
TIME_AFTER(current_tick, talked_tick + (HZ * 5)))
{
talked_tick = current_tick;
talk_number(found_indicies_count, false);
talk_id(LANG_PLAYLIST_SEARCH_MSG, true);
}
/* (voiced above) */
splashf(0, str(LANG_PLAYLIST_SEARCH_MSG), found_indicies_count,
str(LANG_OFF_ABORT));
last_found_count = found_indicies_count;
@ -1293,7 +1304,7 @@ bool search_playlist(void)
cpu_boost(false);
cond_talk_ids_fq(TALK_ID(found_indicies_count, UNIT_INT),
cond_talk_ids_fq(LANG_ALL, TALK_ID(found_indicies_count, UNIT_INT),
LANG_PLAYLIST_SEARCH_MSG);
if (!found_indicies_count)
{

View file

@ -184,7 +184,6 @@ static const struct plugin_api rockbox_api = {
language_strings,
&core_bitmaps[0],
/* lcd */
splash,
splashf,
splash_progress,
splash_progress_set_delay,
@ -412,7 +411,7 @@ static const struct plugin_api rockbox_api = {
storage_sleep,
STORAGE_FUNCTION(spin),
STORAGE_FUNCTION(spindown),
#if USING_STORAGE_CALLBACK
#ifdef USING_STORAGE_CALLBACK
register_storage_idle_func,
unregister_storage_idle_func,
#endif /* USING_STORAGE_CALLBACK */
@ -463,7 +462,7 @@ static const struct plugin_api rockbox_api = {
talk_force_enqueue_next,
/* kernel/ system */
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
#if defined(ARM_NEED_DIV0)
__div0,
#endif
sleep,
@ -845,6 +844,7 @@ static const struct plugin_api rockbox_api = {
the API gets incompatible */
add_playbacklog,
&device_battery_tables,
yesno_pop_confirm,
};
static int plugin_buffer_handle;
@ -861,7 +861,9 @@ int plugin_load(const char* plugin, const void* parameter)
/* for some plugins, the SBS can be left enabled */
const char *sepch = strrchr(plugin, PATH_SEPCH);
bool theme_enabled = sepch && !strcmp("properties.rock", sepch + 1);
bool theme_enabled = sepch && (!strcmp("properties.rock", sepch + 1) ||
!strcmp("main_menu_config.rock", sepch + 1) ||
!strcmp("disktidy.rock", sepch + 1));
if (current_plugin_handle)
{
@ -900,6 +902,13 @@ int plugin_load(const char* plugin, const void* parameter)
strcpy(current_plugin, plugin);
current_plugin_handle = lc_open(plugin, pluginbuf, PLUGIN_BUFFER_SIZE);
if (current_plugin_handle == NULL) {
if (global_settings.talk_menu)
{
talk_id(LANG_PLUGIN_CANT_OPEN, false);
talk_spell(plugin, true);
talk_force_enqueue_next();
}
/* (voiced above) */
splashf(HZ*2, str(LANG_PLUGIN_CANT_OPEN), plugin);
return -1;
}

View file

@ -58,6 +58,8 @@
#undef vsprintf
#endif
#define splash(__ticks, __str) splashf(__ticks, __str)
char* strncpy(char *, const char *, size_t);
void* plugin_get_buffer(size_t *buffer_size);
size_t plugin_reserve_buffer(size_t buffer_size);
@ -174,7 +176,7 @@ int plugin_open(const char *plugin, const char *parameter);
* when this happens please take the opportunity to sort in
* any new functions "waiting" at the end of the list.
*/
#define PLUGIN_API_VERSION 273
#define PLUGIN_API_VERSION 274
/* 239 Marks the removal of ARCHOS HWCODEC and CHARCELL */
@ -211,7 +213,6 @@ struct plugin_api {
const struct cbmp_bitmap_info_entry *core_bitmaps;
/* lcd */
void (*splash)(int ticks, const char *str);
void (*splashf)(int ticks, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3);
void (*splash_progress)(int current, int total, const char *fmt, ...) ATTRIBUTE_PRINTF(3, 4);
void (*splash_progress_set_delay)(long delay_ticks);
@ -295,15 +296,15 @@ struct plugin_api {
#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP)
void (*button_queue_post)(long id, intptr_t data);
#endif
unsigned short *(*bidi_l2v)( const unsigned char *str, int orientation );
bool (*is_diacritic)(const unsigned short char_code, bool *is_rtl);
const unsigned char *(*font_get_bits)( struct font *pf, unsigned short char_code );
ucschar_t *(*bidi_l2v)(const unsigned char *str, int orientation);
bool (*is_diacritic)(const ucschar_t char_code, bool *is_rtl);
const unsigned char *(*font_get_bits)(struct font *pf, ucschar_t char_code);
int (*font_load)(const char *path);
void (*font_unload)(int font_id);
struct font* (*font_get)(int font);
int (*font_getstringsize)(const unsigned char *str, int *w, int *h,
int fontnumber);
int (*font_get_width)(struct font* pf, unsigned short char_code);
int (*font_get_width)(struct font* pf, ucschar_t char_code);
void (*screen_clear_area)(struct screen * display, int xstart, int ystart,
int width, int height);
void (*gui_scrollbar_draw)(struct screen * screen, int x, int y,
@ -474,7 +475,7 @@ struct plugin_api {
void (*storage_sleep)(void);
void (*storage_spin)(void);
void (*storage_spindown)(int seconds);
#if USING_STORAGE_CALLBACK
#ifdef USING_STORAGE_CALLBACK
void (*register_storage_idle_func)(void (*function)(void));
void (*unregister_storage_idle_func)(void (*function)(void), bool run);
#endif /* USING_STORAGE_CALLBACK */
@ -537,7 +538,7 @@ struct plugin_api {
void (*talk_force_enqueue_next)(void);
/* kernel/ system */
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
#if defined(ARM_NEED_DIV0)
void (*__div0)(void);
#endif
unsigned (*sleep)(unsigned ticks);
@ -666,7 +667,7 @@ struct plugin_api {
const unsigned char * const *units,
unsigned int unit_count, bool binary_scale);
/* unicode stuff */
const unsigned char* (*utf8decode)(const unsigned char *utf8, unsigned short *ucs);
const unsigned char* (*utf8decode)(const unsigned char *utf8, ucschar_t *ucs);
unsigned char* (*iso_decode)(const unsigned char *iso, unsigned char *utf8, int cp, int count);
unsigned char* (*utf16LEdecode)(const unsigned char *utf16, unsigned char *utf8, int count);
unsigned char* (*utf16BEdecode)(const unsigned char *utf16, unsigned char *utf8, int count);
@ -922,7 +923,7 @@ struct plugin_api {
int (*rand)(void);
void (*qsort)(void *base, size_t nmemb, size_t size,
int(*compar)(const void *, const void *));
int (*kbd_input)(char* buffer, int buflen, unsigned short *kbd);
int (*kbd_input)(char* buffer, int buflen, ucschar_t *kbd);
struct tm* (*get_time)(void);
struct tm * (*gmtime_r)(const time_t *timep, struct tm *tm);
#if CONFIG_RTC
@ -992,6 +993,7 @@ struct plugin_api {
the API gets incompatible */
void (*add_playbacklog)(struct mp3entry *id3);
struct battery_tables_t *device_battery_tables;
bool (*yesno_pop_confirm)(const char* text);
};
/* plugin header */

Some files were not shown because too many files have changed in this diff Show more