waiting is over: initial unicode commit

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8169 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Marcoen Hirschberg 2005-12-06 13:27:15 +00:00
parent 01917ec980
commit b0fee17d6e
70 changed files with 253032 additions and 14343 deletions

View File

@ -47,9 +47,9 @@ void gui_buttonbar_set_display(struct gui_buttonbar * buttonbar,
void gui_buttonbar_draw_button(struct gui_buttonbar * buttonbar, int num) void gui_buttonbar_draw_button(struct gui_buttonbar * buttonbar, int num)
{ {
int xpos, ypos, button_width, text_width; int xpos, ypos, button_width, text_width;
int fw, fh; int fh;
struct screen * display = buttonbar->display; struct screen * display = buttonbar->display;
display->getstringsize("M", &fw, &fh); display->getstringsize("M", NULL, &fh);
button_width = display->width/BUTTONBAR_MAX_BUTTONS; button_width = display->width/BUTTONBAR_MAX_BUTTONS;
xpos = num * button_width; xpos = num * button_width;
@ -58,7 +58,7 @@ void gui_buttonbar_draw_button(struct gui_buttonbar * buttonbar, int num)
if(buttonbar->caption[num][0] != 0) if(buttonbar->caption[num][0] != 0)
{ {
/* center the text */ /* center the text */
text_width = fw * strlen(buttonbar->caption[num]); text_width = display->getstringsize(buttonbar->caption[num], NULL, NULL);
display->putsxy(xpos + (button_width - text_width)/2, display->putsxy(xpos + (button_width - text_width)/2,
ypos, buttonbar->caption[num]); ypos, buttonbar->caption[num]);
} }

View File

@ -52,7 +52,7 @@ void gui_quickscreen_draw(struct gui_quickscreen * qs, struct screen * display)
#endif #endif
gui_textarea_clear(display); gui_textarea_clear(display);
display->setfont(FONT_SYSFIXED); display->setfont(FONT_SYSFIXED);
display->getstringsize((unsigned char *)"M",&w,&h); display->getstringsize((unsigned char *)"M", NULL, &h);
/* Displays the icons */ /* Displays the icons */
display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward], display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward],
display->width/2 - 16, display->width/2 - 16,

View File

@ -128,12 +128,12 @@ new: "buffer vol"
id: LANG_PLAYINDICES_AMOUNT id: LANG_PLAYINDICES_AMOUNT
desc: number of files in playlist desc: number of files in playlist
eng: "%d files" eng: "%d files"
new: "%d lęers" new: "%d lêers"
id: LANG_SETTINGS_SAVE_PLAYER id: LANG_SETTINGS_SAVE_PLAYER
desc: displayed if save settings has failed desc: displayed if save settings has failed
eng: "Save failed" eng: "Save failed"
new: "Bęre gebreek" new: "Bêre gebreek"
id: LANG_SETTINGS_BATTERY_PLAYER id: LANG_SETTINGS_BATTERY_PLAYER
desc: if save settings has failed desc: if save settings has failed
@ -143,7 +143,7 @@ new: "Batt. leeg?"
id: LANG_SETTINGS_SAVE_RECORDER id: LANG_SETTINGS_SAVE_RECORDER
desc: displayed if save settings has failed desc: displayed if save settings has failed
eng: "Save failed" eng: "Save failed"
new: "Bęre gebreek" new: "Bêre gebreek"
id: LANG_SETTINGS_BATTERY_RECORDER id: LANG_SETTINGS_BATTERY_RECORDER
desc: if save settings has failed desc: if save settings has failed
@ -323,7 +323,7 @@ new: "Speel"
id: LANG_FILE id: LANG_FILE
desc: in settings_menu() desc: in settings_menu()
eng: "File View" eng: "File View"
new: "Lęers" new: "Lêers"
id: LANG_DISPLAY id: LANG_DISPLAY
desc: in settings_menu() desc: in settings_menu()
@ -783,7 +783,7 @@ new: "Nuwe Taal"
id: LANG_FILTER id: LANG_FILTER
desc: setting name for dir filter desc: setting name for dir filter
eng: "Show Files" eng: "Show Files"
new: "Wys Lęers" new: "Wys Lêers"
id: LANG_FILTER_MUSIC id: LANG_FILTER_MUSIC
desc: show only music-related files desc: show only music-related files

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
# Translated by: # Translated by:
# - Rune Wiinberg # - Rune Wiinberg
# - Jakob Givoni # - Jakob Givoni
# - Jonas Häggqvist # - Jonas Häggqvist
# #
# Try to follow the guidelines from http://www.sslug.dk/locale/ Specifically # Try to follow the guidelines from http://www.sslug.dk/locale/ Specifically
# try to avoid english words at (almost) all costs. # try to avoid english words at (almost) all costs.
@ -41,7 +41,7 @@ id: LANG_DEBUG
desc: in the main menu desc: in the main menu
eng: "Debug (Keep Out!)" eng: "Debug (Keep Out!)"
voice: "Debug, keep out!" voice: "Debug, keep out!"
new: "Fejlfinding, bliv væk!" new: "Fejlfinding, bliv væk!"
id: LANG_USB id: LANG_USB
desc: in the main menu desc: in the main menu
@ -77,7 +77,7 @@ id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
eng: "Loading..." eng: "Loading..."
voice: "" voice: ""
new: "Indlæser..." new: "Indlæser..."
id: LANG_PLAYLIST_SHUFFLE id: LANG_PLAYLIST_SHUFFLE
desc: displayed on screen while shuffling a playlist desc: displayed on screen while shuffling a playlist
@ -125,7 +125,7 @@ id: LANG_TIME_SET
desc: used in set_time() desc: used in set_time()
eng: "ON To Set" eng: "ON To Set"
voice: "" voice: ""
new: "TÆND: Indstil" new: "TÆND: Indstil"
id: LANG_TIME_REVERT id: LANG_TIME_REVERT
desc: used in set_time() desc: used in set_time()
@ -149,7 +149,7 @@ id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
eng: "Play Selected First" eng: "Play Selected First"
voice: "Play Selected File First" voice: "Play Selected File First"
new: "Spil valgte først" new: "Spil valgte først"
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
@ -161,7 +161,7 @@ id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
eng: "Resume on startup" eng: "Resume on startup"
voice: "Resume on startup" voice: "Resume on startup"
new: "Forsæt ved tænd" new: "Forsæt ved tænd"
id: LANG_OFF id: LANG_OFF
desc: Used in a lot of places desc: Used in a lot of places
@ -173,7 +173,7 @@ id: LANG_RESUME_SETTING_ASK
desc: in settings_menu desc: in settings_menu
eng: "Ask" eng: "Ask"
voice: "Ask" voice: "Ask"
new: "Spørg" new: "Spørg"
id: LANG_ON id: LANG_ON
desc: Used in a lot of places desc: Used in a lot of places
@ -191,7 +191,7 @@ id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
eng: "Scroll Speed Setting Example" eng: "Scroll Speed Setting Example"
voice: "" voice: ""
new: "Eksempel på rulle-hastighed" new: "Eksempel på rulle-hastighed"
id: LANG_DISCHARGE id: LANG_DISCHARGE
desc: DEPRECATED desc: DEPRECATED
@ -227,7 +227,7 @@ id: LANG_FOLLOW
desc: in settings_menu desc: in settings_menu
eng: "Follow Playlist" eng: "Follow Playlist"
voice: "Follow Playlist" voice: "Follow Playlist"
new: "Følg spilleliste" new: "Følg spilleliste"
id: LANG_RESET_ASK_RECORDER id: LANG_RESET_ASK_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
@ -269,7 +269,7 @@ id: LANG_RESET
desc: in system_settings_menu() desc: in system_settings_menu()
eng: "Reset Settings" eng: "Reset Settings"
voice: "Reset Settings" voice: "Reset Settings"
new: "Nulstil opsætning" new: "Nulstil opsætning"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
@ -287,7 +287,7 @@ id: LANG_DISPLAY
desc: in settings_menu() desc: in settings_menu()
eng: "Display" eng: "Display"
voice: "Display" voice: "Display"
new: "Skærm" new: "Skærm"
id: LANG_SYSTEM id: LANG_SYSTEM
desc: in settings_menu() desc: in settings_menu()
@ -371,7 +371,7 @@ id: LANG_CHANNEL_RIGHT
desc: in sound_settings desc: in sound_settings
eng: "Mono Right" eng: "Mono Right"
voice: "Mono Right" voice: "Mono Right"
new: "Mono højre" new: "Mono højre"
id: LANG_AUTOVOL id: LANG_AUTOVOL
desc: in sound_settings desc: in sound_settings
@ -395,7 +395,7 @@ id: LANG_RESUME_ASK
desc: DEPRECATED desc: DEPRECATED
eng: "" eng: ""
voice: "" voice: ""
new: "Forsæt?" new: "Forsæt?"
id: LANG_RESUME_CONFIRM_PLAYER id: LANG_RESUME_CONFIRM_PLAYER
desc: possible answers to resume question desc: possible answers to resume question
@ -407,25 +407,25 @@ id: LANG_KEYLOCK_ON_PLAYER
desc: displayed when key lock is on desc: displayed when key lock is on
eng: "Key Lock ON" eng: "Key Lock ON"
voice: "" voice: ""
new: "Lås TIL" new: "Lås TIL"
id: LANG_KEYLOCK_OFF_PLAYER id: LANG_KEYLOCK_OFF_PLAYER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock OFF" eng: "Key Lock OFF"
voice: "" voice: ""
new: "Lås FRA" new: "Lås FRA"
id: LANG_KEYLOCK_ON_RECORDER id: LANG_KEYLOCK_ON_RECORDER
desc: displayed when key lock is on desc: displayed when key lock is on
eng: "Key Lock Is ON" eng: "Key Lock Is ON"
voice: "" voice: ""
new: "Tast. lås er TIL" new: "Tast. lås er TIL"
id: LANG_KEYLOCK_OFF_RECORDER id: LANG_KEYLOCK_OFF_RECORDER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock Is OFF" eng: "Key Lock Is OFF"
voice: "" voice: ""
new: "Tast. lås er FRA" new: "Tast. lås er FRA"
id: LANG_MUTE_ON_PLAYER id: LANG_MUTE_ON_PLAYER
desc: DEPRECATED desc: DEPRECATED
@ -515,7 +515,7 @@ id: LANG_ID3_LENGHT
desc: in wps desc: in wps
eng: "[Length]" eng: "[Length]"
voice: "" voice: ""
new: "[Længde]" new: "[Længde]"
id: LANG_ID3_PLAYLIST id: LANG_ID3_PLAYLIST
desc: in wps desc: in wps
@ -581,19 +581,19 @@ id: LANG_F3_BAR
desc: in wps F3 pressed desc: in wps F3 pressed
eng: "Bar" eng: "Bar"
voice: "" voice: ""
new: "Bjælke" new: "Bjælke"
id: LANG_END_PLAYLIST_PLAYER id: LANG_END_PLAYLIST_PLAYER
desc: when playlist has finished desc: when playlist has finished
eng: "End Of List" eng: "End Of List"
voice: "" voice: ""
new: "Slut på liste" new: "Slut på liste"
id: LANG_END_PLAYLIST_RECORDER id: LANG_END_PLAYLIST_RECORDER
desc: when playlist has finished desc: when playlist has finished
eng: "End Of Song List" eng: "End Of Song List"
voice: "" voice: ""
new: "Slut på liste" new: "Slut på liste"
id: LANG_POWEROFF_IDLE id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
@ -623,7 +623,7 @@ id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
eng: "Supported" eng: "Supported"
voice: "Supported" voice: "Supported"
new: "Understøttede" new: "Understøttede"
id: LANG_FILTER_ALL id: LANG_FILTER_ALL
desc: show all files desc: show all files
@ -647,7 +647,7 @@ id: LANG_PM_MENU
desc: in the display menu desc: in the display menu
eng: "Peak Meter" eng: "Peak Meter"
voice: "Peak Meter" voice: "Peak Meter"
new: "Spids markør" new: "Spids markør"
id: LANG_PM_RELEASE id: LANG_PM_RELEASE
desc: in the peak meter menu desc: in the peak meter menu
@ -677,7 +677,7 @@ id: LANG_PM_UNITS_PER_READ
desc: in the peak meter menu desc: in the peak meter menu
eng: "Units Per Read" eng: "Units Per Read"
voice: "Units Per Read" voice: "Units Per Read"
new: "Enheder per læsning" new: "Enheder per læsning"
id: LANG_BACKLIGHT_ON_WHEN_CHARGING id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
@ -737,7 +737,7 @@ id: LANG_WEEKDAY_SUNDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Sun" eng: "Sun"
voice: "" voice: ""
new: "Søn" new: "Søn"
id: LANG_WEEKDAY_MONDAY id: LANG_WEEKDAY_MONDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -767,7 +767,7 @@ id: LANG_WEEKDAY_SATURDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Sat" eng: "Sat"
voice: "" voice: ""
new: "Lør" new: "Lør"
id: LANG_MONTH_JANUARY id: LANG_MONTH_JANUARY
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -845,7 +845,7 @@ id: LANG_RESUME_SETTING_ASK_ONCE
desc: DEPRECATED desc: DEPRECATED
eng: "" eng: ""
voice: "" voice: ""
new: "Spørg én gang" new: "Spørg én gang"
id: LANG_BATTERY_DISPLAY id: LANG_BATTERY_DISPLAY
desc: Battery type title desc: Battery type title
@ -905,19 +905,19 @@ id: LANG_PM_LINEAR
desc: in the peak meter menu desc: in the peak meter menu
eng: "Linear(%)" eng: "Linear(%)"
voice: "Linear percent" voice: "Linear percent"
new: "lineær(%)" new: "lineær(%)"
id: LANG_PM_MIN id: LANG_PM_MIN
desc: in the peak meter menu desc: in the peak meter menu
eng: "Minimum Of Range" eng: "Minimum Of Range"
voice: "Minimum Of Range" voice: "Minimum Of Range"
new: "Mindste værdi" new: "Mindste værdi"
id: LANG_PM_MAX id: LANG_PM_MAX
desc: in the peak meter menu desc: in the peak meter menu
eng: "Maximum Of Range" eng: "Maximum Of Range"
voice: "Maximum Of Range" voice: "Maximum Of Range"
new: "Største værdi" new: "Største værdi"
id: LANG_RECORDING id: LANG_RECORDING
desc: in the main menu desc: in the main menu
@ -929,7 +929,7 @@ id: LANG_RECORDING_GAIN
desc: in the recording screen desc: in the recording screen
eng: "Gain" eng: "Gain"
voice: "" voice: ""
new: "Forstærkning" new: "Forstærkning"
id: LANG_RECORDING_LEFT id: LANG_RECORDING_LEFT
desc: in the recording screen desc: in the recording screen
@ -941,7 +941,7 @@ id: LANG_RECORDING_RIGHT
desc: in the recording screen desc: in the recording screen
eng: "Right" eng: "Right"
voice: "" voice: ""
new: "Højre" new: "Højre"
id: LANG_RECORDING_QUALITY id: LANG_RECORDING_QUALITY
desc: in the recording settings desc: in the recording settings
@ -1025,19 +1025,19 @@ id: LANG_SLEEP_TIMER
desc: sleep timer setting desc: sleep timer setting
eng: "Sleep Timer" eng: "Sleep Timer"
voice: "Sleep Timer" voice: "Sleep Timer"
new: "Søvntimer" new: "Søvntimer"
id: LANG_STATUS_BAR id: LANG_STATUS_BAR
desc: display menu, F3 substitute desc: display menu, F3 substitute
eng: "Status Bar" eng: "Status Bar"
voice: "Status Bar" voice: "Status Bar"
new: "Status bjælke" new: "Status bjælke"
id: LANG_SCROLL_BAR id: LANG_SCROLL_BAR
desc: display menu, F3 substitute desc: display menu, F3 substitute
eng: "Scroll Bar" eng: "Scroll Bar"
voice: "Scroll Bar" voice: "Scroll Bar"
new: "Rullebjælke" new: "Rullebjælke"
id: LANG_WEEKDAY_THURSDAY id: LANG_WEEKDAY_THURSDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -1055,7 +1055,7 @@ id: LANG_BIDIR_SCROLL
desc: Bidirectional scroll limit desc: Bidirectional scroll limit
eng: "Bidirectional Scroll Limit" eng: "Bidirectional Scroll Limit"
voice: "Bidirectional Scroll Limit" voice: "Bidirectional Scroll Limit"
new: "Tovejs-rul grænse" new: "Tovejs-rul grænse"
id: LANG_SCROLL_DELAY id: LANG_SCROLL_DELAY
desc: Delay before scrolling desc: Delay before scrolling
@ -1067,7 +1067,7 @@ id: LANG_SCROLL_STEP
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size" eng: "Scroll Step Size"
voice: "Scroll Step Size" voice: "Scroll Step Size"
new: "Rul trin størrelse" new: "Rul trin størrelse"
id: LANG_SCROLL_STEP_EXAMPLE id: LANG_SCROLL_STEP_EXAMPLE
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
@ -1115,7 +1115,7 @@ id: LANG_QUEUE
desc: The verb/action Queue desc: The verb/action Queue
eng: "Queue" eng: "Queue"
voice: "Queue" voice: "Queue"
new: "Sæt i kø" new: "Sæt i kø"
id: LANG_DELETE id: LANG_DELETE
desc: The verb/action Delete desc: The verb/action Delete
@ -1139,7 +1139,7 @@ id: LANG_RENAME
desc: The verb/action Rename desc: The verb/action Rename
eng: "Rename" eng: "Rename"
voice: "Rename" voice: "Rename"
new: "Omdøb" new: "Omdøb"
id: LANG_FAILED id: LANG_FAILED
desc: Something failed. To be appended after above actions desc: Something failed. To be appended after above actions
@ -1151,7 +1151,7 @@ id: LANG_ALARM_MOD_ALARM_MENU
desc: The name of the additional entry in the main menu for the RTC alarm mod. desc: The name of the additional entry in the main menu for the RTC alarm mod.
eng: "Wake-Up Alarm" eng: "Wake-Up Alarm"
voice: "Wake-Up Alarm" voice: "Wake-Up Alarm"
new: "Vækkeur" new: "Vækkeur"
id: LANG_ALARM_MOD_TIME id: LANG_ALARM_MOD_TIME
desc: The current alarm time shown in the alarm menu for the RTC alarm mod. desc: The current alarm time shown in the alarm menu for the RTC alarm mod.
@ -1163,7 +1163,7 @@ id: LANG_ALARM_MOD_TIME_TO_GO
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod. desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
eng: "Waking Up In %d:%02d" eng: "Waking Up In %d:%02d"
voice: "" voice: ""
new: "Vågner om om %d:%02d" new: "Vågner om om %d:%02d"
id: LANG_ALARM_MOD_SHUTDOWN id: LANG_ALARM_MOD_SHUTDOWN
desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod). desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod).
@ -1181,7 +1181,7 @@ id: LANG_ALARM_MOD_KEYS
desc: Shown key functions in alarm menu (for the RTC alarm mod). desc: Shown key functions in alarm menu (for the RTC alarm mod).
eng: "PLAY=Set OFF=Cancel" eng: "PLAY=Set OFF=Cancel"
voice: "" voice: ""
new: "SPIL=Sæt SLUK=Anuller" new: "SPIL=Sæt SLUK=Anuller"
id: LANG_CREATE_PLAYLIST id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist
@ -1235,7 +1235,7 @@ id: LANG_ID3_YEAR
desc: ID3 info 'year' desc: ID3 info 'year'
eng: "[Year]" eng: "[Year]"
voice: "" voice: ""
new: "[År]" new: "[År]"
id: LANG_ID3_NO_INFO id: LANG_ID3_NO_INFO
desc: ID3 info is missing desc: ID3 info is missing
@ -1253,7 +1253,7 @@ id: LANG_RECORDING_SIZE
desc: Display of recorded file size desc: Display of recorded file size
eng: "Size:" eng: "Size:"
voice: "" voice: ""
new: "Størrelse:" new: "Størrelse:"
id: LANG_SETTINGS_LOADED1 id: LANG_SETTINGS_LOADED1
desc: Feedback shown when a .cfg file is loaded desc: Feedback shown when a .cfg file is loaded
@ -1283,7 +1283,7 @@ id: LANG_INVERT
desc: in settings_menu desc: in settings_menu
eng: "LCD Mode" eng: "LCD Mode"
voice: "LCD Mode" voice: "LCD Mode"
new: "Skærm tilstand" new: "Skærm tilstand"
id: LANG_CHANNEL_STEREO_NARROW_PLAYER id: LANG_CHANNEL_STEREO_NARROW_PLAYER
desc: DEPRECATED desc: DEPRECATED
@ -1349,13 +1349,13 @@ id: LANG_INVERT_CURSOR
desc: in settings_menu desc: in settings_menu
eng: "Line Selector" eng: "Line Selector"
voice: "Line Selector" voice: "Line Selector"
new: "Linje vælger" new: "Linje vælger"
id: LANG_RECORDING_EDITABLE id: LANG_RECORDING_EDITABLE
desc: Editable recordings setting desc: Editable recordings setting
eng: "Independent frames" eng: "Independent frames"
voice: "Independent frames" voice: "Independent frames"
new: "Uafhængige rammer" new: "Uafhængige rammer"
id: LANG_CAPTION_BACKLIGHT id: LANG_CAPTION_BACKLIGHT
desc: in settings_menu desc: in settings_menu
@ -1367,13 +1367,13 @@ id: LANG_INVERT_CURSOR_POINTER
desc: in settings_menu desc: in settings_menu
eng: "Pointer" eng: "Pointer"
voice: "Pointer" voice: "Pointer"
new: "Markør" new: "Markør"
id: LANG_INVERT_CURSOR_BAR id: LANG_INVERT_CURSOR_BAR
desc: in settings_menu desc: in settings_menu
eng: "Bar(Inverse)" eng: "Bar(Inverse)"
voice: "Inverse Bar" voice: "Inverse Bar"
new: "Bjælke (omvendt)" new: "Bjælke (omvendt)"
id: LANG_INVERT_LCD_NORMAL id: LANG_INVERT_LCD_NORMAL
desc: in settings_menu desc: in settings_menu
@ -1391,13 +1391,13 @@ id: LANG_MAX_FILES_IN_DIR
desc: in settings_menu desc: in settings_menu
eng: "Max files in dir browser" eng: "Max files in dir browser"
voice: "Max files in directory browser" voice: "Max files in directory browser"
new: "Maks filer i dir vælger" new: "Maks filer i dir vælger"
id: LANG_MAX_FILES_IN_PLAYLIST id: LANG_MAX_FILES_IN_PLAYLIST
desc: in settings_menu desc: in settings_menu
eng: "Max playlist size" eng: "Max playlist size"
voice: "Max playlist size" voice: "Max playlist size"
new: "Maks spilleliste størrelse" new: "Maks spilleliste størrelse"
id: LANG_JUMP_SCROLL id: LANG_JUMP_SCROLL
desc: (player) menu altarnative for jump scroll desc: (player) menu altarnative for jump scroll
@ -1445,7 +1445,7 @@ id: LANG_DISK_FULL
desc: in recording screen desc: in recording screen
eng: "The disk is full. Press OFF to continue." eng: "The disk is full. Press OFF to continue."
voice: "" voice: ""
new: "Disken er fuld. Tryk SLUK for at fortsætte." new: "Disken er fuld. Tryk SLUK for at fortsætte."
id: LANG_CONFIRM_WITH_PLAY_RECORDER id: LANG_CONFIRM_WITH_PLAY_RECORDER
desc: Generic recorder string to use to confirm desc: Generic recorder string to use to confirm
@ -1463,13 +1463,13 @@ id: LANG_PLUGIN_CANT_OPEN
desc: Plugin open error message desc: Plugin open error message
eng: "Can't open %s" eng: "Can't open %s"
voice: "" voice: ""
new: "Kan ikke åbne %s" new: "Kan ikke åbne %s"
id: LANG_READ_FAILED id: LANG_READ_FAILED
desc: There was an error reading a file desc: There was an error reading a file
eng: "Failed reading %s" eng: "Failed reading %s"
voice: "" voice: ""
new: "Læsning af %s fejlede" new: "Læsning af %s fejlede"
id: LANG_PLUGIN_WRONG_MODEL id: LANG_PLUGIN_WRONG_MODEL
desc: The plugin is not compatible with the archos model trying to run it desc: The plugin is not compatible with the archos model trying to run it
@ -1493,7 +1493,7 @@ id: LANG_BOOT_CHANGED
desc: File browser discovered the boot file was changed desc: File browser discovered the boot file was changed
eng: "Boot changed" eng: "Boot changed"
voice: "" voice: ""
new: "Boot ændret" new: "Boot ændret"
id: LANG_REBOOT_NOW id: LANG_REBOOT_NOW
desc: Do you want to reboot? desc: Do you want to reboot?
@ -1505,31 +1505,31 @@ id: LANG_QUEUE_LAST
desc: in onplay menu. queue a track/playlist at end of playlist. desc: in onplay menu. queue a track/playlist at end of playlist.
eng: "Queue last" eng: "Queue last"
voice: "Queue last" voice: "Queue last"
new: "Sæt sidst i køen" new: "Sæt sidst i køen"
id: LANG_INSERT id: LANG_INSERT
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert" eng: "Insert"
voice: "Insert" voice: "Insert"
new: "Indsæt" new: "Indsæt"
id: LANG_INSERT_LAST id: LANG_INSERT_LAST
desc: in onplay menu. append a track/playlist into dynamic playlist. desc: in onplay menu. append a track/playlist into dynamic playlist.
eng: "Insert last" eng: "Insert last"
voice: "Insert last" voice: "Insert last"
new: "Indsæt tilsidst" new: "Indsæt tilsidst"
id: LANG_QUEUE_FIRST id: LANG_QUEUE_FIRST
desc: in onplay menu. queue a track/playlist into dynamic playlist. desc: in onplay menu. queue a track/playlist into dynamic playlist.
eng: "Queue next" eng: "Queue next"
voice: "Queue next" voice: "Queue next"
new: "Set i kø som næste" new: "Set i kø som næste"
id: LANG_INSERT_FIRST id: LANG_INSERT_FIRST
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert next" eng: "Insert next"
voice: "Insert next" voice: "Insert next"
new: "Indsæt som næste" new: "Indsæt som næste"
id: LANG_SAVE_DYNAMIC_PLAYLIST id: LANG_SAVE_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
@ -1553,7 +1553,7 @@ id: LANG_PLAYLIST_QUEUE_COUNT
desc: splash number of tracks queued desc: splash number of tracks queued
eng: "Queued %d tracks (%s)" eng: "Queued %d tracks (%s)"
voice: "" voice: ""
new: "Har sat %d numre i kø (%s)" new: "Har sat %d numre i kø (%s)"
id: LANG_PLAYLIST_SAVE_COUNT id: LANG_PLAYLIST_SAVE_COUNT
desc: splash number of tracks saved desc: splash number of tracks saved
@ -1607,13 +1607,13 @@ id: LANG_RECURSE_DIRECTORY
desc: In playlist menu desc: In playlist menu
eng: "Recursively Insert Directories" eng: "Recursively Insert Directories"
voice: "Recursively Insert Directories" voice: "Recursively Insert Directories"
new: "Indsæt mapper og undermapper" new: "Indsæt mapper og undermapper"
id: LANG_RECURSE_DIRECTORY_QUESTION id: LANG_RECURSE_DIRECTORY_QUESTION
desc: Asked from onplay screen desc: Asked from onplay screen
eng: "Recursively?" eng: "Recursively?"
voice: "" voice: ""
new: "Indsæt undermapper?" new: "Indsæt undermapper?"
id: LANG_CUSTOM_FONT id: LANG_CUSTOM_FONT
desc: in setting_menu() desc: in setting_menu()
@ -1637,7 +1637,7 @@ id: LANG_WHILE_PLAYING
desc: in settings_menu() desc: in settings_menu()
eng: "Browse .wps files" eng: "Browse .wps files"
voice: "Browse while-playing-screen files" voice: "Browse while-playing-screen files"
new: "Vis afspilnings-skærm filer" new: "Vis afspilnings-skærm filer"
id: LANG_CUSTOM_CFG id: LANG_CUSTOM_CFG
desc: in setting_menu() desc: in setting_menu()
@ -1733,7 +1733,7 @@ id: LANG_VIEW_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
eng: "View Current Playlist" eng: "View Current Playlist"
voice: "View Current Playlist" voice: "View Current Playlist"
new: "Vis nuværende spilleliste" new: "Vis nuværende spilleliste"
id: LANG_MOVE id: LANG_MOVE
desc: The verb/action Move desc: The verb/action Move
@ -1751,7 +1751,7 @@ id: LANG_FLIP_DISPLAY
desc: in settings_menu, option to turn display+buttos by 180 degreed desc: in settings_menu, option to turn display+buttos by 180 degreed
eng: "Upside Down" eng: "Upside Down"
voice: "Upside Down" voice: "Upside Down"
new: "På hovedet" new: "På hovedet"
id: LANG_RECORD_PRERECORD id: LANG_RECORD_PRERECORD
desc: in recording and radio screen desc: in recording and radio screen
@ -1769,13 +1769,13 @@ id: LANG_BOOKMARK_AUTOLOAD_QUERY
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark?" eng: "Load Last Bookmark?"
voice: "" voice: ""
new: "Hent seneste bogmærke?" new: "Hent seneste bogmærke?"
id: LANG_AUTO_BOOKMARK_QUERY id: LANG_AUTO_BOOKMARK_QUERY
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
eng: "Create a Bookmark?" eng: "Create a Bookmark?"
voice: "" voice: ""
new: "Opret bogmærke?" new: "Opret bogmærke?"
id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS
desc: From the auto-load screen, allows user to list all bookmarks desc: From the auto-load screen, allows user to list all bookmarks
@ -1793,7 +1793,7 @@ id: LANG_BOOKMARK_SELECT_BOOKMARK_TEXT
desc: Used on the bookmark select window to label bookmark number desc: Used on the bookmark select window to label bookmark number
eng: "Bookmark" eng: "Bookmark"
voice: "" voice: ""
new: "Bogmærke" new: "Bogmærke"
id: LANG_BOOKMARK_SELECT_INDEX_TEXT id: LANG_BOOKMARK_SELECT_INDEX_TEXT
desc: Used on the bookmark select window to label index number desc: Used on the bookmark select window to label index number
@ -1811,55 +1811,55 @@ id: LANG_BOOKMARK_SELECT_PLAY
desc: Used on the bookmark select window to indicated the play option desc: Used on the bookmark select window to indicated the play option
eng: "PLAY = Select" eng: "PLAY = Select"
voice: "" voice: ""
new: "SPIL = Vælg" new: "SPIL = Vælg"
id: LANG_BOOKMARK_SELECT_DELETE id: LANG_BOOKMARK_SELECT_DELETE
desc: Used on the bookmark select window to indicated the bookmark delete option desc: Used on the bookmark select window to indicated the bookmark delete option
eng: "ON+Play = Delete" eng: "ON+Play = Delete"
voice: "" voice: ""
new: "TÆND+Spil = Slet" new: "TÆND+Spil = Slet"
id: LANG_BOOKMARK_CREATE_SUCCESS id: LANG_BOOKMARK_CREATE_SUCCESS
desc: Indicates bookmark was successfully created desc: Indicates bookmark was successfully created
eng: "Bookmark Created" eng: "Bookmark Created"
voice: "" voice: ""
new: "Bogmærke oprettet" new: "Bogmærke oprettet"
id: LANG_BOOKMARK_CREATE_FAILURE id: LANG_BOOKMARK_CREATE_FAILURE
desc: Indicates bookmark was not created desc: Indicates bookmark was not created
eng: "Bookmark Failed!" eng: "Bookmark Failed!"
voice: "" voice: ""
new: "Bogmærke fejlede!" new: "Bogmærke fejlede!"
id: LANG_BOOKMARK_LOAD_EMPTY id: LANG_BOOKMARK_LOAD_EMPTY
desc: Indicates bookmark was empty desc: Indicates bookmark was empty
eng: "Bookmark Empty" eng: "Bookmark Empty"
voice: "" voice: ""
new: "Bogmærke tomt" new: "Bogmærke tomt"
id: LANG_BOOKMARK_SETTINGS id: LANG_BOOKMARK_SETTINGS
desc: in general settings desc: in general settings
eng: "Bookmarking" eng: "Bookmarking"
voice: "Bookmarking" voice: "Bookmarking"
new: "Bogmærker" new: "Bogmærker"
id: LANG_BOOKMARK_SETTINGS_AUTOLOAD id: LANG_BOOKMARK_SETTINGS_AUTOLOAD
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark" eng: "Load Last Bookmark"
voice: "Load Last Bookmark" voice: "Load Last Bookmark"
new: "Hent seneste bogmærke" new: "Hent seneste bogmærke"
id: LANG_BOOKMARK_SETTINGS_AUTOCREATE id: LANG_BOOKMARK_SETTINGS_AUTOCREATE
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
eng: "Bookmark on Stop" eng: "Bookmark on Stop"
voice: "Bookmark on Stop" voice: "Bookmark on Stop"
new: "Opret bogmærke ved stop" new: "Opret bogmærke ved stop"
id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
desc: Configuration option to maintain a list of recent bookmarks desc: Configuration option to maintain a list of recent bookmarks
eng: "Maintain a List of Recent Bookmarks?" eng: "Maintain a List of Recent Bookmarks?"
voice: "Maintain a List of Recent Bookmarks?" voice: "Maintain a List of Recent Bookmarks?"
new: "Vedligehold liste af seneste bogmærker?" new: "Vedligehold liste af seneste bogmærker?"
id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
@ -1871,7 +1871,7 @@ id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
eng: "Ask - Recent only" eng: "Ask - Recent only"
voice: "Ask - Recent only" voice: "Ask - Recent only"
new: "Spørg - kun seneste" new: "Spørg - kun seneste"
id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
desc: Save only on bookmark for each playlist in recent bookmarks desc: Save only on bookmark for each playlist in recent bookmarks
@ -1883,25 +1883,25 @@ id: LANG_BOOKMARK_MENU
desc: Text on main menu to get to bookmark commands desc: Text on main menu to get to bookmark commands
eng: "Bookmarks" eng: "Bookmarks"
voice: "Bookmarks" voice: "Bookmarks"
new: "Bogmærker" new: "Bogmærker"
id: LANG_BOOKMARK_MENU_CREATE id: LANG_BOOKMARK_MENU_CREATE
desc: Used off of the bookmark menu to create a bookmark desc: Used off of the bookmark menu to create a bookmark
eng: "Create Bookmark" eng: "Create Bookmark"
voice: "Create Bookmark" voice: "Create Bookmark"
new: "Opret bogmærke" new: "Opret bogmærke"
id: LANG_BOOKMARK_MENU_LIST id: LANG_BOOKMARK_MENU_LIST
desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U
eng: "List Bookmarks" eng: "List Bookmarks"
voice: "List Bookmarks" voice: "List Bookmarks"
new: "Vis bogmærker" new: "Vis bogmærker"
id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS
desc: Text for the menu text to access the most recent bookmarks list desc: Text for the menu text to access the most recent bookmarks list
eng: "Recent Bookmarks" eng: "Recent Bookmarks"
voice: "Recent Bookmarks" voice: "Recent Bookmarks"
new: "Seneste bogmærker" new: "Seneste bogmærker"
id: LANG_INFO_MENU id: LANG_INFO_MENU
desc: in the info sub menu desc: in the info sub menu
@ -1913,7 +1913,7 @@ id: LANG_RECORDING_MENU
desc: in the recording sub menu desc: in the recording sub menu
eng: "Recording screen" eng: "Recording screen"
voice: "Recording screen" voice: "Recording screen"
new: "Optage skærm" new: "Optage skærm"
id: LANG_WIND_MENU id: LANG_WIND_MENU
desc: in the playback sub menu desc: in the playback sub menu
@ -1925,13 +1925,13 @@ id: LANG_LCD_MENU
desc: in the display sub menu desc: in the display sub menu
eng: "LCD Settings" eng: "LCD Settings"
voice: "LCD Settings" voice: "LCD Settings"
new: "Skærm indstillinger" new: "Skærm indstillinger"
id: LANG_BARS_MENU id: LANG_BARS_MENU
desc: in the display sub menu desc: in the display sub menu
eng: "Status-/Scrollbar" eng: "Status-/Scrollbar"
voice: "Status- and Scrollbar" voice: "Status- and Scrollbar"
new: "Status- og rulle-bjælke" new: "Status- og rulle-bjælke"
id: LANG_BATTERY_MENU id: LANG_BATTERY_MENU
desc: in the system sub menu desc: in the system sub menu
@ -1955,13 +1955,13 @@ id: LANG_LIMITS_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Limits" eng: "Limits"
voice: "Limits" voice: "Limits"
new: "Begrænsninger" new: "Begrænsninger"
id: LANG_MANAGE_MENU id: LANG_MANAGE_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Manage Settings" eng: "Manage Settings"
voice: "Manage Settings" voice: "Manage Settings"
new: "Håndter opsætning" new: "Håndter opsætning"
id: LANG_RECORD_DIRECTORY id: LANG_RECORD_DIRECTORY
desc: in recording settings_menu desc: in recording settings_menu
@ -1973,7 +1973,7 @@ id: LANG_RECORD_CURRENT_DIR
desc: in recording directory options desc: in recording directory options
eng: "Current dir" eng: "Current dir"
voice: "Current directory" voice: "Current directory"
new: "Nuværende mappe" new: "Nuværende mappe"
id: LANG_CREATE_DIR id: LANG_CREATE_DIR
desc: in main menu desc: in main menu
@ -1997,7 +1997,7 @@ id: LANG_TRACK_DISPLAY
desc: in playlist viewer on+play menu desc: in playlist viewer on+play menu
eng: "Track Display" eng: "Track Display"
voice: "Track Display" voice: "Track Display"
new: "Nummer skærm" new: "Nummer skærm"
id: LANG_DISPLAY_TRACK_NAME_ONLY id: LANG_DISPLAY_TRACK_NAME_ONLY
desc: track display options desc: track display options
@ -2027,7 +2027,7 @@ id: LANG_BUTTON_BAR
desc: in settings menu desc: in settings menu
eng: "Button bar" eng: "Button bar"
voice: "Button bar" voice: "Button bar"
new: "Knap bjælke" new: "Knap bjælke"
id: LANG_DIRBROWSE_F1 id: LANG_DIRBROWSE_F1
desc: in dir browser, F1 button bar text desc: in dir browser, F1 button bar text
@ -2045,7 +2045,7 @@ id: LANG_DIRBROWSE_F3
desc: in dir browser, F3 button bar text desc: in dir browser, F3 button bar text
eng: "LCD" eng: "LCD"
voice: "" voice: ""
new: "Skærm" new: "Skærm"
id: VOICE_ZERO id: VOICE_ZERO
desc: spoken only, for composing numbers desc: spoken only, for composing numbers
@ -2663,7 +2663,7 @@ id: LANG_ONPLAY_OPEN_WITH
desc: Onplay open with desc: Onplay open with
eng: "Open with" eng: "Open with"
voice: "open with" voice: "open with"
new: "Åben med" new: "Åben med"
id: LANG_SORT_DIR id: LANG_SORT_DIR
desc: browser sorting setting desc: browser sorting setting
@ -2729,7 +2729,7 @@ id: LANG_FM_BUTTONBAR_ADD
desc: in radio screen desc: in radio screen
eng: "Add" eng: "Add"
voice: "" voice: ""
new: "Tilføj" new: "Tilføj"
id: LANG_FM_BUTTONBAR_ACTION id: LANG_FM_BUTTONBAR_ACTION
desc: in radio screen desc: in radio screen
@ -2795,19 +2795,19 @@ id: LANG_ID3_ORDER
desc: in playback settings screen desc: in playback settings screen
eng: "ID3 tag priority" eng: "ID3 tag priority"
voice: "ID3 tag priority" voice: "ID3 tag priority"
new: "ID3 mærke prioritet" new: "ID3 mærke prioritet"
id: LANG_ID3_V1_FIRST id: LANG_ID3_V1_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V1 then V2" eng: "V1 then V2"
voice: "Version 1 then version 2" voice: "Version 1 then version 2"
new: "V1 før V2" new: "V1 før V2"
id: LANG_ID3_V2_FIRST id: LANG_ID3_V2_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V2 then V1" eng: "V2 then V1"
voice: "Version 2 then version 1" voice: "Version 2 then version 1"
new: "V2 før V1" new: "V2 før V1"
id: LANG_NO_ROCKBOX_DIR id: LANG_NO_ROCKBOX_DIR
desc: in browse root desc: in browse root
@ -2819,7 +2819,7 @@ id: LANG_INSTALLATION_INCOMPLETE
desc: in browse root desc: in browse root
eng: "Installation incomplete" eng: "Installation incomplete"
voice: "" voice: ""
new: "Installation fuldført" new: "Installation fuldført"
id: LANG_REMOVE_MMC id: LANG_REMOVE_MMC
desc: before acknowledging usb in case an MMC is inserted (Ondio) desc: before acknowledging usb in case an MMC is inserted (Ondio)
@ -2879,25 +2879,25 @@ id: LANG_ID3DB_SEARCH
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search" eng: "Search"
voice: "" voice: ""
new: "Søg" new: "Søg"
id: LANG_ID3DB_SEARCH_ARTISTS id: LANG_ID3DB_SEARCH_ARTISTS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Artists" eng: "Search Artists"
voice: "" voice: ""
new: "Søg på kunstnere" new: "Søg på kunstnere"
id: LANG_ID3DB_SEARCH_ALBUMS id: LANG_ID3DB_SEARCH_ALBUMS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Albums" eng: "Search Albums"
voice: "" voice: ""
new: "Søg på albums" new: "Søg på albums"
id: LANG_ID3DB_SEARCH_SONGS id: LANG_ID3DB_SEARCH_SONGS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Songs" eng: "Search Songs"
voice: "" voice: ""
new: "Søg på sange" new: "Søg på sange"
id: LANG_ID3DB_MATCHES id: LANG_ID3DB_MATCHES
desc: ID3 virtual folder name desc: ID3 virtual folder name
@ -2981,19 +2981,19 @@ id: LANG_RECORD_STARTUP
desc: Start Rockbox in Recording screen desc: Start Rockbox in Recording screen
eng: "Show recording screen on startup" eng: "Show recording screen on startup"
voice: "Show recording screen on startup" voice: "Show recording screen on startup"
new: "Vis optage skærm ved start" new: "Vis optage skærm ved start"
id: LANG_ALARM_MOD_DISABLE id: LANG_ALARM_MOD_DISABLE
desc: Announce that the RTC alarm has been turned off desc: Announce that the RTC alarm has been turned off
eng: "Alarm Disabled" eng: "Alarm Disabled"
voice: "Alarm Disabled" voice: "Alarm Disabled"
new: "Alarm slået fra" new: "Alarm slået fra"
id: LANG_RECORD_TRIGGER id: LANG_RECORD_TRIGGER
desc: in recording settings_menu desc: in recording settings_menu
eng: "Trigger" eng: "Trigger"
voice: voice:
new: "Udløser" new: "Udløser"
id: LANG_RECORD_START_THRESHOLD id: LANG_RECORD_START_THRESHOLD
desc: in recording settings_menu desc: in recording settings_menu
@ -3023,13 +3023,13 @@ id: LANG_RECORD_STOP_GAP
desc: in recording settings_menu desc: in recording settings_menu
eng: "Presplit gap" eng: "Presplit gap"
voice: voice:
new: "Pause før deling" new: "Pause før deling"
id: LANG_RECORD_TRIGGER_MODE id: LANG_RECORD_TRIGGER_MODE
desc: in recording settings_menu desc: in recording settings_menu
eng: "Trigger" eng: "Trigger"
voice: voice:
new: "Udløser" new: "Udløser"
id: LANG_RECORD_TRIG_NOREARM id: LANG_RECORD_TRIG_NOREARM
desc: in recording settings_menu desc: in recording settings_menu
@ -3053,19 +3053,19 @@ id: LANG_RECORD_TRIG_IDLE
desc: waiting for threshold desc: waiting for threshold
eng: "Trigger idle" eng: "Trigger idle"
voice: voice:
new: "Udløser venter" new: "Udløser venter"
id: LANG_RECORD_TRIGGER_ACTIVE id: LANG_RECORD_TRIGGER_ACTIVE
desc: desc:
eng: "Trigger active" eng: "Trigger active"
voice: voice:
new: "Udløser klar" new: "Udløser klar"
id: LANG_LCD_REMOTE_MENU id: LANG_LCD_REMOTE_MENU
desc: in the display sub menu desc: in the display sub menu
eng: "Remote-LCD Settings" eng: "Remote-LCD Settings"
voice: voice:
new: "Fjernbetjenings-skærm indstillinger" new: "Fjernbetjenings-skærm indstillinger"
id: LANG_DISK_NAME_INTERNAL id: LANG_DISK_NAME_INTERNAL
desc: in info menu; name for internal disk with multivolume (keep short!) desc: in info menu; name for internal disk with multivolume (keep short!)
@ -3089,13 +3089,13 @@ id: LANG_BACKLIGHT_FADE_IN
desc: in settings_menu desc: in settings_menu
eng: "Backlight fade in" eng: "Backlight fade in"
voice: "Backlight fade in" voice: "Backlight fade in"
new: "Tænd lys langsomt" new: "Tænd lys langsomt"
id: LANG_BACKLIGHT_FADE_OUT id: LANG_BACKLIGHT_FADE_OUT
desc: in settings_menu desc: in settings_menu
eng: "Backlight fade out" eng: "Backlight fade out"
voice: "Backlight fade out" voice: "Backlight fade out"
new: "Dæmp lys" new: "Dæmp lys"
id: LANG_SHUFFLE_PLAYLIST id: LANG_SHUFFLE_PLAYLIST
desc: in playlist menu, reshuffles the order in which songs are played desc: in playlist menu, reshuffles the order in which songs are played
@ -3107,13 +3107,13 @@ id: LANG_INSERT_SHUFFLED
desc: in onplay menu. insert a track/playlist randomly into dynamic playlist desc: in onplay menu. insert a track/playlist randomly into dynamic playlist
eng: "Insert shuffled" eng: "Insert shuffled"
voice: "Insert shuffled" voice: "Insert shuffled"
new: "Indsæt blandet" new: "Indsæt blandet"
id: LANG_NOTHING_TO_RESUME id: LANG_NOTHING_TO_RESUME
desc: Error message displayed when resume button pressed but no playlist desc: Error message displayed when resume button pressed but no playlist
eng: "Nothing to resume" eng: "Nothing to resume"
voice: "" voice: ""
new: "Intet at fortsætte" new: "Intet at fortsætte"
id: LANG_SPDIF_ENABLE id: LANG_SPDIF_ENABLE
desc: in playback settings menu. enable/disable the optical out desc: in playback settings menu. enable/disable the optical out
@ -3125,7 +3125,7 @@ id: LANG_NEXT_FOLDER
desc: in settings_menu. Should we move to next folder when current one ends desc: in settings_menu. Should we move to next folder when current one ends
eng: "Move to Next Folder" eng: "Move to Next Folder"
voice: "Move to Next Folder" voice: "Move to Next Folder"
new: "Fortsæt med næste mappe" new: "Fortsæt med næste mappe"
id: LANG_RUNTIMEDB_ACTIVE id: LANG_RUNTIMEDB_ACTIVE
desc: in settings_menu. desc: in settings_menu.
@ -3137,19 +3137,19 @@ id: LANG_MENU_SET_RATING
desc: in wps context menu desc: in wps context menu
eng: "Set song rating" eng: "Set song rating"
voice: "Set song rating" voice: "Set song rating"
new: "Sæt bedømmelse" new: "Sæt bedømmelse"
id: LANG_RATING id: LANG_RATING
desc: in set_rating desc: in set_rating
eng: "Rating:" eng: "Rating:"
voice: "Rating" voice: "Rating"
new: "Bedømmelse:" new: "Bedømmelse:"
id: LANG_CROSSFADE_DURATION id: LANG_CROSSFADE_DURATION
desc: in playback settings desc: in playback settings
eng: "Crossfade duration" eng: "Crossfade duration"
voice: "Crossfade duration" voice: "Crossfade duration"
new: "Længde af glidende overgang" new: "Længde af glidende overgang"
id: LANG_MIX id: LANG_MIX
desc: in playback settings, crossfade option desc: in playback settings, crossfade option
@ -3179,7 +3179,7 @@ id: LANG_REPLAYGAIN_NOCLIP
desc: in replaygain desc: in replaygain
eng: "Prevent clipping" eng: "Prevent clipping"
voice: voice:
new: "Undgå klipning" new: "Undgå klipning"
id: LANG_REPLAYGAIN_MODE id: LANG_REPLAYGAIN_MODE
desc: in replaygain desc: in replaygain
@ -3221,13 +3221,13 @@ id: LANG_BIDI_SUPPORT
desc: in settings_menu, option to enable reversal of hebrew/arabic text desc: in settings_menu, option to enable reversal of hebrew/arabic text
eng: "BiDi Hebrew/Arabic" eng: "BiDi Hebrew/Arabic"
voice: voice:
new: "Højre mod venstre sprog" new: "Højre mod venstre sprog"
id: LANG_REPLAYGAIN_PREAMP id: LANG_REPLAYGAIN_PREAMP
desc: in browse_id3 desc: in browse_id3
eng: "Pre-amp" eng: "Pre-amp"
voice: voice:
new: "Forforstærkning" new: "Forforstærkning"
id: LANG_UNIT_DB id: LANG_UNIT_DB
desc: in browse_id3 desc: in browse_id3

View File

@ -58,7 +58,7 @@ id: LANG_BATTERY_CHARGE
desc: tells that the battery is charging, instead of battery level desc: tells that the battery is charging, instead of battery level
eng: "Battery: Charging" eng: "Battery: Charging"
voice: "" voice: ""
new: "Akku: lädt" new: "Akku: lädt"
id: LANG_PLAYLIST_LOAD id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
@ -135,14 +135,14 @@ new: "Zufallswiedergabe"
id: LANG_PLAY_SELECTED id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
eng: "Play Selected First" eng: "Play Selected First"
voice: "Gewählte zuerst wiedergeben" voice: "Gewählte zuerst wiedergeben"
new: "Gewählte zuerst wiedergeben" new: "Gewählte zuerst wiedergeben"
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
eng: "Sort Case Sensitive" eng: "Sort Case Sensitive"
voice: "Sortiere Groß- und Kleinschreibung" voice: "Sortiere Groß- und Kleinschreibung"
new: "Sortiere Groß-/Kleinschreibung" new: "Sortiere Groß-/Kleinschreibung"
id: LANG_RESUME id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
@ -178,7 +178,7 @@ id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
eng: "Scroll Speed Setting Example" eng: "Scroll Speed Setting Example"
voice: "" voice: ""
new: "Beispieltext für die Scrollgeschwindigkeit" new: "Beispieltext für die Scrollgeschwindigkeit"
id: LANG_DISCHARGE id: LANG_DISCHARGE
desc: DEPRECATED desc: DEPRECATED
@ -232,7 +232,7 @@ id: LANG_RESET_DONE_CLEAR
desc: visual confirmation after settings reset desc: visual confirmation after settings reset
eng: "Cleared" eng: "Cleared"
voice: "" voice: ""
new: "Gelöscht" new: "Gelöscht"
id: LANG_RESET_DONE_CANCEL id: LANG_RESET_DONE_CANCEL
desc: Visual confirmation of cancelation desc: Visual confirmation of cancelation
@ -255,8 +255,8 @@ new: "Scroll-Einstellungen"
id: LANG_RESET id: LANG_RESET
desc: in system_settings_menu() desc: in system_settings_menu()
eng: "Reset Settings" eng: "Reset Settings"
voice: "Einstellungen zurücksetzen" voice: "Einstellungen zurücksetzen"
new: "Einstellungen zurücksetzen" new: "Einstellungen zurücksetzen"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
@ -285,8 +285,8 @@ new: "System"
id: LANG_VOLUME id: LANG_VOLUME
desc: in sound_settings desc: in sound_settings
eng: "Volume" eng: "Volume"
voice: "Lautstärke" voice: "Lautstärke"
new: "Lautstärke" new: "Lautstärke"
id: LANG_BALANCE id: LANG_BALANCE
desc: in sound_settings desc: in sound_settings
@ -303,8 +303,8 @@ new: "Bass"
id: LANG_TREBLE id: LANG_TREBLE
desc: in sound_settings desc: in sound_settings
eng: "Treble" eng: "Treble"
voice: "Höhen" voice: "Höhen"
new: "Höhen" new: "Höhen"
id: LANG_LOUDNESS id: LANG_LOUDNESS
desc: in sound_settings desc: in sound_settings
@ -322,13 +322,13 @@ id: LANG_DECAY
desc: in sound_settings desc: in sound_settings
eng: "AV Decay Time" eng: "AV Decay Time"
voice: "" voice: ""
new: "AV-Trägheit" new: "AV-Trägheit"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
eng: "Channels" eng: "Channels"
voice: "Kanäle" voice: "Kanäle"
new: "Kanäle" new: "Kanäle"
id: LANG_CHANNEL id: LANG_CHANNEL
desc: in sound_settings desc: in sound_settings
@ -363,8 +363,8 @@ new: "Mono rechts"
id: LANG_AUTOVOL id: LANG_AUTOVOL
desc: in sound_settings desc: in sound_settings
eng: "Auto Volume" eng: "Auto Volume"
voice: "Automatische Lautstärke" voice: "Automatische Lautstärke"
new: "Autom. Lautstärke" new: "Autom. Lautstärke"
id: LANG_SHOWDIR_ERROR_BUFFER id: LANG_SHOWDIR_ERROR_BUFFER
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
@ -466,7 +466,7 @@ id: LANG_ID3_ARTIST
desc: in wps desc: in wps
eng: "[Artist]" eng: "[Artist]"
voice: "" voice: ""
new: "[Künstler]" new: "[Künstler]"
id: LANG_ID3_NO_ARTIST id: LANG_ID3_NO_ARTIST
desc: DEPRECATED desc: DEPRECATED
@ -502,7 +502,7 @@ id: LANG_ID3_LENGHT
desc: in wps desc: in wps
eng: "[Length]" eng: "[Length]"
voice: "" voice: ""
new: "[Länge]" new: "[Länge]"
id: LANG_ID3_PLAYLIST id: LANG_ID3_PLAYLIST
desc: in wps desc: in wps
@ -609,8 +609,8 @@ new: "Musik"
id: LANG_FILTER_SUPPORTED id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
eng: "Supported" eng: "Supported"
voice: "Unterstützte" voice: "Unterstützte"
new: "Unterstützte" new: "Unterstützte"
id: LANG_FILTER_ALL id: LANG_FILTER_ALL
desc: show all files desc: show all files
@ -651,8 +651,8 @@ new: "Aussteuerung Haltezeit"
id: LANG_PM_CLIP_HOLD id: LANG_PM_CLIP_HOLD
desc: in the peak meter menu desc: in the peak meter menu
eng: "Clip Hold Time" eng: "Clip Hold Time"
voice: "Übersteuerung Haltezeit" voice: "Übersteuerung Haltezeit"
new: "Übersteuerung Haltezeit" new: "Übersteuerung Haltezeit"
id: LANG_PM_ETERNAL id: LANG_PM_ETERNAL
desc: in the peak meter menu desc: in the peak meter menu
@ -777,8 +777,8 @@ new: "Feb"
id: LANG_MONTH_MARCH id: LANG_MONTH_MARCH
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
eng: "Mar" eng: "Mar"
voice: "März" voice: "März"
new: "Mär" new: "Mär"
id: LANG_MONTH_APRIL id: LANG_MONTH_APRIL
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -849,8 +849,8 @@ new: "Batterieanzeige"
id: LANG_VOLUME_DISPLAY id: LANG_VOLUME_DISPLAY
desc: Volume type title desc: Volume type title
eng: "Volume Display" eng: "Volume Display"
voice: "Lautstärkeanzeige" voice: "Lautstärkeanzeige"
new: "Lautstärkeanzeige" new: "Lautstärkeanzeige"
id: LANG_DISPLAY_GRAPHIC id: LANG_DISPLAY_GRAPHIC
desc: Label for type of icon display desc: Label for type of icon display
@ -909,8 +909,8 @@ new: "Kleinster Wert"
id: LANG_PM_MAX id: LANG_PM_MAX
desc: in the peak meter menu desc: in the peak meter menu
eng: "Maximum Of Range" eng: "Maximum Of Range"
voice: "Größter Wert" voice: "Größter Wert"
new: "Größter Wert" new: "Größter Wert"
id: LANG_RECORDING id: LANG_RECORDING
desc: in the main menu desc: in the main menu
@ -939,8 +939,8 @@ new: "V. Rechts"
id: LANG_RECORDING_QUALITY id: LANG_RECORDING_QUALITY
desc: in the recording settings desc: in the recording settings
eng: "Quality" eng: "Quality"
voice: "Qualität" voice: "Qualität"
new: "Qualität" new: "Qualität"
id: LANG_RECORDING_FREQUENCY id: LANG_RECORDING_FREQUENCY
desc: in the recording settings desc: in the recording settings
@ -957,8 +957,8 @@ new: "Quelle"
id: LANG_RECORDING_CHANNELS id: LANG_RECORDING_CHANNELS
desc: in the recording settings desc: in the recording settings
eng: "Channels" eng: "Channels"
voice: "Kanäle" voice: "Kanäle"
new: "Kanäle" new: "Kanäle"
id: LANG_RECORDING_SRC_MIC id: LANG_RECORDING_SRC_MIC
desc: in the recording settings desc: in the recording settings
@ -1023,8 +1023,8 @@ new: "Einschlaftimer"
id: LANG_MP3BUFFER_MARGIN id: LANG_MP3BUFFER_MARGIN
desc: MP3 buffer margin time desc: MP3 buffer margin time
eng: "Anti-Skip Buffer" eng: "Anti-Skip Buffer"
voice: "Puffer vorzeitig füllen" voice: "Puffer vorzeitig füllen"
new: "Puffer vorzeitig füllen" new: "Puffer vorzeitig füllen"
id: LANG_BIDIR_SCROLL id: LANG_BIDIR_SCROLL
desc: Bidirectional scroll limit desc: Bidirectional scroll limit
@ -1035,8 +1035,8 @@ new: "Bidirektionales Scroll-Limit"
id: LANG_SCROLL_DELAY id: LANG_SCROLL_DELAY
desc: Delay before scrolling desc: Delay before scrolling
eng: "Scroll Start Delay" eng: "Scroll Start Delay"
voice: "Start-Verzögerung" voice: "Start-Verzögerung"
new: "Start-Verzögerung" new: "Start-Verzögerung"
id: LANG_SCROLL_STEP id: LANG_SCROLL_STEP
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
@ -1048,7 +1048,7 @@ id: LANG_SCROLL_STEP_EXAMPLE
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size Setting Example Text" eng: "Scroll Step Size Setting Example Text"
voice: "" voice: ""
new: "Beispieltext für die Schrittweite" new: "Beispieltext für die Schrittweite"
id: LANG_SCROLL_SPEED id: LANG_SCROLL_SPEED
desc: in display_settings_menu() desc: in display_settings_menu()
@ -1066,7 +1066,7 @@ id: LANG_BATTERY_TOPOFF_CHARGE
desc: in info display, shows that top off charge is running desc: in info display, shows that top off charge is running
eng: "Battery: Top-Off Chg" eng: "Battery: Top-Off Chg"
voice: "" voice: ""
new: "Akku: Übergangsladen" new: "Akku: Übergangsladen"
id: LANG_BATTERY_TRICKLE_CHARGE id: LANG_BATTERY_TRICKLE_CHARGE
desc: in info display, shows that trickle charge is running desc: in info display, shows that trickle charge is running
@ -1077,8 +1077,8 @@ new: "Akku: Erhaltladen"
id: LANG_BATTERY_CAPACITY id: LANG_BATTERY_CAPACITY
desc: in settings_menu desc: in settings_menu
eng: "Battery Capacity" eng: "Battery Capacity"
voice: "Batteriekapazität" voice: "Batteriekapazität"
new: "Batteriekapazität" new: "Batteriekapazität"
id: LANG_MENU_SETTING_CANCEL id: LANG_MENU_SETTING_CANCEL
desc: Visual confirmation of canceling a changed setting desc: Visual confirmation of canceling a changed setting
@ -1095,20 +1095,20 @@ new: "In Warteschlange stellen"
id: LANG_DELETE id: LANG_DELETE
desc: The verb/action Delete desc: The verb/action Delete
eng: "Delete" eng: "Delete"
voice: "Löschen" voice: "Löschen"
new: "Löschen" new: "Löschen"
id: LANG_REALLY_DELETE id: LANG_REALLY_DELETE
desc: Really Delete? desc: Really Delete?
eng: "Delete?" eng: "Delete?"
voice: "" voice: ""
new: "Löschen?" new: "Löschen?"
id: LANG_DELETED id: LANG_DELETED
desc: A file has beed deleted desc: A file has beed deleted
eng: "Deleted" eng: "Deleted"
voice: "" voice: ""
new: "Gelöscht" new: "Gelöscht"
id: LANG_RENAME id: LANG_RENAME
desc: The verb/action Rename desc: The verb/action Rename
@ -1150,7 +1150,7 @@ id: LANG_ALARM_MOD_ERROR
desc: The text that tells that the time is incorrect (for the RTC alarm mod). desc: The text that tells that the time is incorrect (for the RTC alarm mod).
eng: "Alarm Time Is Too Soon!" eng: "Alarm Time Is Too Soon!"
voice: "" voice: ""
new: "Weckzeit ist zu früh!" new: "Weckzeit ist zu früh!"
id: LANG_ALARM_MOD_KEYS id: LANG_ALARM_MOD_KEYS
desc: Shown key functions in alarm menu (for the RTC alarm mod). desc: Shown key functions in alarm menu (for the RTC alarm mod).
@ -1228,7 +1228,7 @@ id: LANG_RECORDING_SIZE
desc: Display of recorded file size desc: Display of recorded file size
eng: "Size:" eng: "Size:"
voice: "" voice: ""
new: "Größe:" new: "Größe:"
id: LANG_SETTINGS_LOADED1 id: LANG_SETTINGS_LOADED1
desc: Feedback shown when a .cfg file is loaded desc: Feedback shown when a .cfg file is loaded
@ -1329,8 +1329,8 @@ new: "Zeilenauswahl"
id: LANG_RECORDING_EDITABLE id: LANG_RECORDING_EDITABLE
desc: Editable recordings setting desc: Editable recordings setting
eng: "Independent frames" eng: "Independent frames"
voice: "Unabhängige mp3-Rahmen" voice: "Unabhängige mp3-Rahmen"
new: "Unabhängige mp3-Frames" new: "Unabhängige mp3-Frames"
id: LANG_STATUS_BAR id: LANG_STATUS_BAR
desc: display menu, F3 substitute desc: display menu, F3 substitute
@ -1383,8 +1383,8 @@ new: "Max Anzahl Dateien in Verzeichnisanzeige"
id: LANG_MAX_FILES_IN_PLAYLIST id: LANG_MAX_FILES_IN_PLAYLIST
desc: in settings_menu desc: in settings_menu
eng: "Max playlist size" eng: "Max playlist size"
voice: "Maximale Länge Abspielliste" voice: "Maximale Länge Abspielliste"
new: "Max Playlist-Länge" new: "Max Playlist-Länge"
id: LANG_JUMP_SCROLL id: LANG_JUMP_SCROLL
desc: (player) menu altarnative for jump scroll desc: (player) menu altarnative for jump scroll
@ -1407,14 +1407,14 @@ new: "Immer"
id: LANG_JUMP_SCROLL_DELAY id: LANG_JUMP_SCROLL_DELAY
desc: (player) Delay before making a jump scroll desc: (player) Delay before making a jump scroll
eng: "Jump Scroll Delay" eng: "Jump Scroll Delay"
voice: "Sprung-Scroll Verzögerung" voice: "Sprung-Scroll Verzögerung"
new: "Sprung-Scroll Verzögerung" new: "Sprung-Scroll Verzögerung"
id: LANG_RECORD_TIMESPLIT id: LANG_RECORD_TIMESPLIT
desc: Prompt for record timer interval setting, in the record settings menu desc: Prompt for record timer interval setting, in the record settings menu
eng: "Time Split" eng: "Time Split"
voice: "Zeitabhängiges Aufteilen" voice: "Zeitabhängiges Aufteilen"
new: "Zeitabhängiges Aufteilen" new: "Zeitabhängiges Aufteilen"
id: LANG_RECORD_TIMESPLIT_REC id: LANG_RECORD_TIMESPLIT_REC
desc: Display of record timer interval setting, on the record screen desc: Display of record timer interval setting, on the record screen
@ -1432,7 +1432,7 @@ id: LANG_DISK_FULL
desc: in recording screen desc: in recording screen
eng: "The disk is full. Press OFF to continue." eng: "The disk is full. Press OFF to continue."
voice: "" voice: ""
new: "Festplatte voll. Drücke OFF zum fortfahren." new: "Festplatte voll. Drücke OFF zum fortfahren."
id: LANG_CONFIRM_WITH_PLAY_RECORDER id: LANG_CONFIRM_WITH_PLAY_RECORDER
desc: Generic recorder string to use to confirm desc: Generic recorder string to use to confirm
@ -1454,7 +1454,7 @@ id: LANG_PLUGIN_CANT_OPEN
desc: Plugin open error message desc: Plugin open error message
eng: "Can't open %s" eng: "Can't open %s"
voice: "" voice: ""
new: "Kann %s nicht öffnen" new: "Kann %s nicht öffnen"
id: LANG_READ_FAILED id: LANG_READ_FAILED
desc: There was an error reading a file desc: There was an error reading a file
@ -1488,7 +1488,7 @@ id: LANG_BOOT_CHANGED
desc: File browser discovered the boot file was changed desc: File browser discovered the boot file was changed
eng: "Boot changed" eng: "Boot changed"
voice: "" voice: ""
new: "Boot geändert" new: "Boot geändert"
id: LANG_REBOOT_NOW id: LANG_REBOOT_NOW
desc: Do you want to reboot? desc: Do you want to reboot?
@ -1505,26 +1505,26 @@ new: "Warteschlange als Letzten"
id: LANG_INSERT id: LANG_INSERT
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert" eng: "Insert"
voice: "Einfügen" voice: "Einfügen"
new: "Einfügen" new: "Einfügen"
id: LANG_INSERT_LAST id: LANG_INSERT_LAST
desc: in onplay menu. append a track/playlist into dynamic playlist. desc: in onplay menu. append a track/playlist into dynamic playlist.
eng: "Insert last" eng: "Insert last"
voice: "Einfügen als Letzten" voice: "Einfügen als Letzten"
new: "Einfügen als Letzten" new: "Einfügen als Letzten"
id: LANG_QUEUE_FIRST id: LANG_QUEUE_FIRST
desc: in onplay menu. queue a track/playlist into dynamic playlist. desc: in onplay menu. queue a track/playlist into dynamic playlist.
eng: "Queue next" eng: "Queue next"
voice: "Warteschlange als Nächsten" voice: "Warteschlange als Nächsten"
new: "Warteschlange als Nächsten" new: "Warteschlange als Nächsten"
id: LANG_INSERT_FIRST id: LANG_INSERT_FIRST
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert next" eng: "Insert next"
voice: "Einfügen als Nächsten" voice: "Einfügen als Nächsten"
new: "Einfügen als Nächsten" new: "Einfügen als Nächsten"
id: LANG_SAVE_DYNAMIC_PLAYLIST id: LANG_SAVE_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
@ -1542,7 +1542,7 @@ id: LANG_PLAYLIST_INSERT_COUNT
desc: splash number of tracks inserted desc: splash number of tracks inserted
eng: "Inserted %d tracks (%s)" eng: "Inserted %d tracks (%s)"
voice: "" voice: ""
new: "%d Tracks eingefügt (%s)" new: "%d Tracks eingefügt (%s)"
id: LANG_PLAYLIST_QUEUE_COUNT id: LANG_PLAYLIST_QUEUE_COUNT
desc: splash number of tracks queued desc: splash number of tracks queued
@ -1596,13 +1596,13 @@ id: LANG_PLAYLIST_CONTROL_INVALID
desc: Playlist resume error desc: Playlist resume error
eng: "Playlist control file is invalid" eng: "Playlist control file is invalid"
voice: "" voice: ""
new: "Playlist-Steuerdatei ist ungültig" new: "Playlist-Steuerdatei ist ungültig"
id: LANG_RECURSE_DIRECTORY id: LANG_RECURSE_DIRECTORY
desc: In playlist menu desc: In playlist menu
eng: "Recursively Insert Directories" eng: "Recursively Insert Directories"
voice: "Verzeichnisse rekursiv hinzufügen" voice: "Verzeichnisse rekursiv hinzufügen"
new: "Verzeichnisse rekursiv hinzufügen" new: "Verzeichnisse rekursiv hinzufügen"
id: LANG_RECURSE_DIRECTORY_QUESTION id: LANG_RECURSE_DIRECTORY_QUESTION
desc: Asked from onplay screen desc: Asked from onplay screen
@ -1613,8 +1613,8 @@ new: "Rekursiv?"
id: LANG_CUSTOM_FONT id: LANG_CUSTOM_FONT
desc: in setting_menu() desc: in setting_menu()
eng: "Browse Fonts" eng: "Browse Fonts"
voice: "Zeige Zeichensätze" voice: "Zeige Zeichensätze"
new: "Zeige Zeichensätze" new: "Zeige Zeichensätze"
id: LANG_FIRMWARE id: LANG_FIRMWARE
desc: in the main menu desc: in the main menu
@ -1668,7 +1668,7 @@ id: LANG_BUTTONBAR_MENU
desc: in button bar desc: in button bar
eng: "Menu" eng: "Menu"
voice: "" voice: ""
new: "Menü" new: "Menü"
id: LANG_FM_BUTTONBAR_PRESETS id: LANG_FM_BUTTONBAR_PRESETS
desc: in button bar desc: in button bar
@ -1757,8 +1757,8 @@ new: "Vorab-Aufnahme"
id: LANG_RECORD_PRERECORD_TIME id: LANG_RECORD_PRERECORD_TIME
desc: in recording settings_menu desc: in recording settings_menu
eng: "Prerecord time" eng: "Prerecord time"
voice: "Vorab-Aufnahme-Länge" voice: "Vorab-Aufnahme-Länge"
new: "Vorab-Aufnahme-Länge" new: "Vorab-Aufnahme-Länge"
#Auto bookmark prompts #Auto bookmark prompts
@ -1810,13 +1810,13 @@ id: LANG_BOOKMARK_SELECT_PLAY
desc: Used on the bookmark select window to indicated the play option desc: Used on the bookmark select window to indicated the play option
eng: "PLAY = Select" eng: "PLAY = Select"
voice: "" voice: ""
new: "PLAY = Auswählen" new: "PLAY = Auswählen"
id: LANG_BOOKMARK_SELECT_DELETE id: LANG_BOOKMARK_SELECT_DELETE
desc: Used on the bookmark select window to indicated the bookmark delete option desc: Used on the bookmark select window to indicated the bookmark delete option
eng: "ON+Play = Delete" eng: "ON+Play = Delete"
voice: "" voice: ""
new: "ON+Play = Löschen" new: "ON+Play = Löschen"
# Bookmark creation/failure text # Bookmark creation/failure text
@ -1925,7 +1925,7 @@ new: "Aufnahmemodus"
id: LANG_WIND_MENU id: LANG_WIND_MENU
desc: in the playback sub menu desc: in the playback sub menu
eng: "FFwd/Rewind" eng: "FFwd/Rewind"
voice: "Vor- und Rücklauf" voice: "Vor- und Rücklauf"
new: "FF/RW" new: "FF/RW"
id: LANG_LCD_MENU id: LANG_LCD_MENU
@ -2042,7 +2042,7 @@ id: LANG_DIRBROWSE_F1
desc: in dir browser, F1 button bar text desc: in dir browser, F1 button bar text
eng: "Menu" eng: "Menu"
voice: "" voice: ""
new: "Menü" new: "Menü"
id: LANG_DIRBROWSE_F2 id: LANG_DIRBROWSE_F2
desc: in dir browser, F2 button bar text desc: in dir browser, F2 button bar text
@ -2375,8 +2375,8 @@ new: "Sprachausgabe"
id: LANG_VOICE_MENU id: LANG_VOICE_MENU
desc: item of voice menu, enable/disable the voice UI desc: item of voice menu, enable/disable the voice UI
eng: "Voice Menus" eng: "Voice Menus"
voice: "Menüs" voice: "Menüs"
new: "Menüs" new: "Menüs"
id: LANG_VOICE_DIR id: LANG_VOICE_DIR
desc: item of voice menu, set the "talkbox" mode for directories desc: item of voice menu, set the "talkbox" mode for directories
@ -2639,8 +2639,8 @@ new:
id: LANG_DELETE_DIR id: LANG_DELETE_DIR
desc: in on+play menu desc: in on+play menu
eng: "Delete directory" eng: "Delete directory"
voice: "Verzeichnis löschen" voice: "Verzeichnis löschen"
new: "Verzeichnis löschen" new: "Verzeichnis löschen"
id: VOICE_CURRENT_TIME id: VOICE_CURRENT_TIME
desc: spoken only, for wall clock announce desc: spoken only, for wall clock announce
@ -2677,8 +2677,8 @@ new: "Dateitypen-Zeichenpuffer leer"
id: LANG_ONPLAY_OPEN_WITH id: LANG_ONPLAY_OPEN_WITH
desc: Onplay open with desc: Onplay open with
eng: "Open with" eng: "Open with"
voice: "öffnen mit" voice: "öffnen mit"
new: "Öffnen mit" new: "Öffnen mit"
id: LANG_SORT_DIR id: LANG_SORT_DIR
desc: browser sorting setting desc: browser sorting setting
@ -2755,14 +2755,14 @@ new: "Aktion"
id: LANG_MDB_STRENGTH id: LANG_MDB_STRENGTH
desc: in sound settings desc: in sound settings
eng: "MDB Strength" eng: "MDB Strength"
voice: "MDB Stärke" voice: "MDB Stärke"
new: "MDB Stärke" new: "MDB Stärke"
id: LANG_MDB_HARMONICS id: LANG_MDB_HARMONICS
desc: in sound settings desc: in sound settings
eng: "MDB Harmonics" eng: "MDB Harmonics"
voice: "MDB Obertöne" voice: "MDB Obertöne"
new: "MDB Obertöne" new: "MDB Obertöne"
id: LANG_MDB_CENTER id: LANG_MDB_CENTER
desc: in sound settings desc: in sound settings
@ -2834,7 +2834,7 @@ id: LANG_INSTALLATION_INCOMPLETE
desc: in browse root desc: in browse root
eng: "Installation incomplete" eng: "Installation incomplete"
voice: "" voice: ""
new: "Installation unvollständig" new: "Installation unvollständig"
id: LANG_REMOVE_MMC id: LANG_REMOVE_MMC
desc: before acknowledging usb in case an MMC is inserted (Ondio) desc: before acknowledging usb in case an MMC is inserted (Ondio)
@ -2876,7 +2876,7 @@ id: LANG_ID3DB_ARTISTS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Artists" eng: "Artists"
voice: "" voice: ""
new: "Künstler" new: "Künstler"
id: LANG_ID3DB_ALBUMS id: LANG_ID3DB_ALBUMS
desc: ID3 virtual folder name desc: ID3 virtual folder name
@ -2900,7 +2900,7 @@ id: LANG_ID3DB_SEARCH_ARTISTS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Artists" eng: "Search Artists"
voice: "" voice: ""
new: "Suche Künstler" new: "Suche Künstler"
id: LANG_ID3DB_SEARCH_ALBUMS id: LANG_ID3DB_SEARCH_ALBUMS
desc: ID3 virtual folder name desc: ID3 virtual folder name
@ -3020,7 +3020,7 @@ id: LANG_RECORD_MIN_DURATION
desc: in recording settings_menu desc: in recording settings_menu
eng: "for at least" eng: "for at least"
voice: voice:
new: "für mindestens" new: "für mindestens"
id: LANG_RECORD_STOP_THRESHOLD id: LANG_RECORD_STOP_THRESHOLD
desc: in recording settings_menu desc: in recording settings_menu
@ -3032,7 +3032,7 @@ id: LANG_RECORD_STOP_POSTREC
desc: in recording settings_menu desc: in recording settings_menu
eng: "for at least" eng: "for at least"
voice: voice:
new: "für mindestens" new: "für mindestens"
id: LANG_RECORD_STOP_GAP id: LANG_RECORD_STOP_GAP
desc: in recording settings_menu desc: in recording settings_menu
@ -3097,8 +3097,8 @@ new: "MMC:"
id: LANG_CROSSFADE id: LANG_CROSSFADE
desc: in playback settings desc: in playback settings
eng: "Crossfade" eng: "Crossfade"
voice: "Überblenden" voice: "Überblenden"
new: "Überblenden" new: "Überblenden"
id: LANG_BACKLIGHT_FADE_IN id: LANG_BACKLIGHT_FADE_IN
desc: in settings_menu desc: in settings_menu
@ -3127,8 +3127,8 @@ new: "Nichts fortzusetzen"
id: LANG_INSERT_SHUFFLED id: LANG_INSERT_SHUFFLED
desc: in onplay menu. insert a track/playlist randomly into dynamic playlist desc: in onplay menu. insert a track/playlist randomly into dynamic playlist
eng: "Insert shuffled" eng: "Insert shuffled"
voice: "Zufällig einfügen" voice: "Zufällig einfügen"
new: "Zufällig einfügen" new: "Zufällig einfügen"
id: LANG_SPDIF_ENABLE id: LANG_SPDIF_ENABLE
desc: in playback settings menu. enable/disable the optical out desc: in playback settings menu. enable/disable the optical out
@ -3181,50 +3181,50 @@ new: "Neustart der Wiedergabe..."
id: LANG_REPLAYGAIN id: LANG_REPLAYGAIN
desc: in replaygain desc: in replaygain
eng: "Replaygain" eng: "Replaygain"
voice: "Lautstärkeanpassung" voice: "Lautstärkeanpassung"
new: "Lautstärkeanpassung" new: "Lautstärkeanpassung"
id: LANG_REPLAYGAIN_ENABLE id: LANG_REPLAYGAIN_ENABLE
desc: in replaygain desc: in replaygain
eng: "Enable replaygain" eng: "Enable replaygain"
voice: "Lautstärkeanpassung aktivieren" voice: "Lautstärkeanpassung aktivieren"
new: "Lautstärkeanpassung aktivieren" new: "Lautstärkeanpassung aktivieren"
id: LANG_REPLAYGAIN_NOCLIP id: LANG_REPLAYGAIN_NOCLIP
desc: in replaygain desc: in replaygain
eng: "Prevent clipping" eng: "Prevent clipping"
voice: "Übersteuerung verhindern" voice: "Übersteuerung verhindern"
new: "Übersteuerung verhindern" new: "Übersteuerung verhindern"
id: LANG_REPLAYGAIN_MODE id: LANG_REPLAYGAIN_MODE
desc: in replaygain desc: in replaygain
eng: "Replaygain type" eng: "Replaygain type"
voice: "Lautstärkeanpassungstyp" voice: "Lautstärkeanpassungstyp"
new: "Lautstärkeanpassungstyp" new: "Lautstärkeanpassungstyp"
id: LANG_TRACK_GAIN id: LANG_TRACK_GAIN
desc: in replaygain desc: in replaygain
eng: "Track gain" eng: "Track gain"
voice: "Titellautstärke" voice: "Titellautstärke"
new: "Titellautstärke" new: "Titellautstärke"
id: LANG_ALBUM_GAIN id: LANG_ALBUM_GAIN
desc: in replaygain desc: in replaygain
eng: "Album gain" eng: "Album gain"
voice: "Albumlautstärke" voice: "Albumlautstärke"
new: "Albumlautstärke" new: "Albumlautstärke"
id: LANG_ID3_TRACK_GAIN id: LANG_ID3_TRACK_GAIN
desc: in browse_id3 desc: in browse_id3
eng: "[Track gain]" eng: "[Track gain]"
voice: voice:
new: "[Titellautstärke]" new: "[Titellautstärke]"
id: LANG_ID3_ALBUM_GAIN id: LANG_ID3_ALBUM_GAIN
desc: in browse_id3 desc: in browse_id3
eng: "[Album gain]" eng: "[Album gain]"
voice: voice:
new: "[Albumlautstärke]" new: "[Albumlautstärke]"
id: LANG_ID3_NO_GAIN id: LANG_ID3_NO_GAIN
desc: DEPRECATED desc: DEPRECATED
@ -3236,13 +3236,13 @@ id: LANG_BIDI_SUPPORT
desc: in settings_menu, option to enable reversal of hebrew/arabic text desc: in settings_menu, option to enable reversal of hebrew/arabic text
eng: "BiDi Hebrew/Arabic" eng: "BiDi Hebrew/Arabic"
voice: "Bidirektionaler Text" voice: "Bidirektionaler Text"
new: "BiDi Hebräisch/Arabisch" new: "BiDi Hebräisch/Arabisch"
id: LANG_REPLAYGAIN_PREAMP id: LANG_REPLAYGAIN_PREAMP
desc: in replaygain settings desc: in replaygain settings
eng: "Pre-amp" eng: "Pre-amp"
voice: "Vorverstärkung" voice: "Vorverstärkung"
new: "Vorverstärkung" new: "Vorverstärkung"
id: LANG_UNIT_DB id: LANG_UNIT_DB
desc: in browse_id3 desc: in browse_id3
@ -3259,8 +3259,8 @@ new: " (VBR)"
id: LANG_BEEP id: LANG_BEEP
desc: in playback settings desc: in playback settings
eng: "Beep volume" eng: "Beep volume"
voice: "Piep-Lautstärke" voice: "Piep-Lautstärke"
new: "Piep-Lautstärke" new: "Piep-Lautstärke"
id: LANG_WEAK id: LANG_WEAK
desc: in beep volume in playback settings desc: in beep volume in playback settings
@ -3289,8 +3289,8 @@ new: "A-B"
id: LANG_SHUFFLE_GAIN id: LANG_SHUFFLE_GAIN
desc: use track gain if shuffle mode is on, album gain otherwise desc: use track gain if shuffle mode is on, album gain otherwise
eng: "Track gain if shuffling" eng: "Track gain if shuffling"
voice: "Titellautstärke beim Mischen" voice: "Titellautstärke beim Mischen"
new: "Titellautstärke beim Mischen" new: "Titellautstärke beim Mischen"
id: LANG_DIRCACHE_ENABLE id: LANG_DIRCACHE_ENABLE
desc: in directory cache settings desc: in directory cache settings
@ -3313,20 +3313,20 @@ new: "Lese Festplatte..."
id: LANG_CROSSFADE_ENABLE id: LANG_CROSSFADE_ENABLE
desc: in crossfade settings menu desc: in crossfade settings menu
eng: "Enable crossfade" eng: "Enable crossfade"
voice: "Überblenden aktivieren" voice: "Überblenden aktivieren"
new: "Überblenden aktivieren" new: "Überblenden aktivieren"
id: LANG_CROSSFADE_FADE_IN_DELAY id: LANG_CROSSFADE_FADE_IN_DELAY
desc: in crossfade settings menu desc: in crossfade settings menu
eng: "Fade in delay" eng: "Fade in delay"
voice: "Einblendverzögerung" voice: "Einblendverzögerung"
new: "Einblendverzögerung" new: "Einblendverzögerung"
id: LANG_CROSSFADE_FADE_OUT_DELAY id: LANG_CROSSFADE_FADE_OUT_DELAY
desc: in crossfade settings menu desc: in crossfade settings menu
eng: "Fade out delay" eng: "Fade out delay"
voice: "Ausblendverzögerung" voice: "Ausblendverzögerung"
new: "Ausblendverzögerung" new: "Ausblendverzögerung"
id: LANG_CROSSFADE_FADE_IN_DURATION id: LANG_CROSSFADE_FADE_IN_DURATION
desc: in crossfade settings menu desc: in crossfade settings menu
@ -3349,14 +3349,14 @@ new: "Ausblendmodus"
id: LANG_RECORDING_ADC_RIGHT id: LANG_RECORDING_ADC_RIGHT
desc: in the recording settings desc: in the recording settings
eng: "ADC Gain Right" eng: "ADC Gain Right"
voice: "Verstärkung rechts" voice: "Verstärkung rechts"
new: "Verstärkung rechts" new: "Verstärkung rechts"
id: LANG_RECORDING_ADC_LEFT id: LANG_RECORDING_ADC_LEFT
desc: in the recording settings desc: in the recording settings
eng: "ADC Gain Left" eng: "ADC Gain Left"
voice: "Verstärkung links" voice: "Verstärkung links"
new: "Verstärkung links" new: "Verstärkung links"
id: LANG_RECORDING_MONITOR id: LANG_RECORDING_MONITOR
desc: DEPRECATED desc: DEPRECATED
@ -3415,14 +3415,14 @@ new: "%d,%01dMHz"
id: LANG_FM_ADD_PRESET id: LANG_FM_ADD_PRESET
desc: in radio menu desc: in radio menu
eng: "Add preset" eng: "Add preset"
voice: "Sender hinzufügen" voice: "Sender hinzufügen"
new: "Sender hinzufügen" new: "Sender hinzufügen"
id: LANG_FM_CLEAR_PRESETS id: LANG_FM_CLEAR_PRESETS
desc: confirmation if presets can be cleared desc: confirmation if presets can be cleared
eng: "Clear current presets?" eng: "Clear current presets?"
voice: "" voice: ""
new: "Alle Sender löschen?" new: "Alle Sender löschen?"
id: LANG_WAIT id: LANG_WAIT
desc: general please wait splash desc: general please wait splash

View File

@ -3240,9 +3240,9 @@ voice: ""
new: new:
id: LANG_BIDI_SUPPORT id: LANG_BIDI_SUPPORT
desc: in settings_menu, option to enable reversal of hebrew/arabic text desc: DEPRECATED
eng: "BiDi Hebrew/Arabic" eng: ""
voice: "Bidirectional text" voice: ""
new: new:
id: LANG_REPLAYGAIN_PREAMP id: LANG_REPLAYGAIN_PREAMP
@ -3389,6 +3389,90 @@ eng: "Screen frozen!"
voice: "" voice: ""
new: new:
id: LANG_DEFAULT_CODEPAGE
desc: default encoding used with id3 tags
eng: "Default Codepage"
voice:
new:
id: LANG_CODEPAGE_LATIN1
desc: in codepage setting menu
eng: "Latin1 (ISO-8859-1)"
voice:
new:
id: LANG_CODEPAGE_GREEK
desc: in codepage setting menu
eng: "Greek (ISO-8859-7)"
voice:
new:
id: LANG_CODEPAGE_HEBREW
desc: in codepage setting menu
eng: "Hebrew (ISO-8859-8)"
voice:
new:
id: LANG_CODEPAGE_RUSSIAN
desc: in codepage setting menu
eng: "Russian (CP1251)"
voice:
new:
id: LANG_CODEPAGE_THAI
desc: in codepage setting menu
eng: "Thai (ISO-8859-11)"
voice:
new:
id: LANG_CODEPAGE_ARABIC
desc: in codepage setting menu
eng: "Arabic (ISO-8859-6)"
voice:
new:
id: LANG_CODEPAGE_TURKISH
desc: in codepage setting menu
eng: "Turkish (ISO-8859-9)"
voice:
new:
id: LANG_CODEPAGE_LATIN_EXTENDED
desc: in codepage setting menu
eng: "Latin Extended (ISO-8859-2)"
voice:
new:
id: LANG_CODEPAGE_JAPANESE
desc: in codepage setting menu
eng: "Japanese (SJIS)"
voice:
new:
id: LANG_CODEPAGE_SIMPLIFIED
desc: in codepage setting menu
eng: "Simp. Chinese (GB2312)"
voice:
new:
id: LANG_CODEPAGE_KOREAN
desc: in codepage setting menu
eng: "Korean (KSX1001)"
voice:
new:
id: LANG_CODEPAGE_TRADITIONAL
desc: in codepage setting menu
eng: "Trad. Chinese (BIG5)"
voice:
new:
id: LANG_CODEPAGE_UTF8
decs: in codepage setting menu
eng: "Unicode (UTF-8)"
voice:
new:
id: LANG_CROSSFEED_ENABLE id: LANG_CROSSFEED_ENABLE
desc: DEPRECATED desc: DEPRECATED
eng: "" eng: ""

View File

@ -14,20 +14,20 @@ new: "Opciones Generales"
id: LANG_INFO id: LANG_INFO
desc: in the main menu desc: in the main menu
eng: "Info" eng: "Info"
voice: "Información" voice: "Información"
new: "Información" new: "Información"
id: LANG_VERSION id: LANG_VERSION
desc: in the main menu desc: in the main menu
eng: "Version" eng: "Version"
voice: "Versión" voice: "Versión"
new: "Versión" new: "Versión"
id: LANG_DEBUG id: LANG_DEBUG
desc: in the main menu desc: in the main menu
eng: "Debug (Keep Out!)" eng: "Debug (Keep Out!)"
voice: "Depuración (¡no tocar!)" voice: "Depuración (¡no tocar!)"
new: "Depuración (¡no tocar!)" new: "Depuración (¡no tocar!)"
id: LANG_USB id: LANG_USB
desc: in the main menu desc: in the main menu
@ -57,7 +57,7 @@ id: LANG_BATTERY_CHARGE
desc: tells that the battery is charging, instead of battery level desc: tells that the battery is charging, instead of battery level
eng: "Battery: Charging" eng: "Battery: Charging"
voice: "" voice: ""
new: "Batería: Cargando" new: "Batería: Cargando"
id: LANG_PLAYLIST_LOAD id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
@ -93,7 +93,7 @@ id: LANG_SETTINGS_BATTERY_PLAYER
desc: if save settings has failed desc: if save settings has failed
eng: "Partition?" eng: "Partition?"
voice: "" voice: ""
new: "Partición?" new: "Partición?"
id: LANG_SETTINGS_SAVE_RECORDER id: LANG_SETTINGS_SAVE_RECORDER
desc: displayed if save settings has failed desc: displayed if save settings has failed
@ -105,7 +105,7 @@ id: LANG_SETTINGS_BATTERY_RECORDER
desc: if save settings has failed desc: if save settings has failed
eng: "No partition?" eng: "No partition?"
voice: "" voice: ""
new: "¿No hay partición?" new: "¿No hay partición?"
id: LANG_TIME_SET id: LANG_TIME_SET
desc: used in set_time() desc: used in set_time()
@ -134,14 +134,14 @@ new: "Aleatorio"
id: LANG_PLAY_SELECTED id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
eng: "Play Selected First" eng: "Play Selected First"
voice: "Reproducir primero la canción marcada" voice: "Reproducir primero la canción marcada"
new: "Reproducir primero la canción marcada" new: "Reproducir primero la canción marcada"
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
eng: "Sort Case Sensitive" eng: "Sort Case Sensitive"
voice: "Sensible a May/minúsculas" voice: "Sensible a May/minúsculas"
new: "Sensible a May/minúsculas" new: "Sensible a May/minúsculas"
id: LANG_RESUME id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
@ -170,8 +170,8 @@ new: "Activo"
id: LANG_BACKLIGHT id: LANG_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Backlight" eng: "Backlight"
voice: "Iluminación" voice: "Iluminación"
new: "Iluminación" new: "Iluminación"
id: LANG_SCROLL id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
@ -200,26 +200,26 @@ new: "Parada del disco duro"
id: LANG_FFRW_STEP id: LANG_FFRW_STEP
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Min Step" eng: "FF/RW Min Step"
voice: "Paso mínimo" voice: "Paso mínimo"
new: "Paso mínimo FF/RW" new: "Paso mínimo FF/RW"
id: LANG_FFRW_ACCEL id: LANG_FFRW_ACCEL
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Accel" eng: "FF/RW Accel"
voice: "Aceleración" voice: "Aceleración"
new: "Aceleración FF/RW" new: "Aceleración FF/RW"
id: LANG_FOLLOW id: LANG_FOLLOW
desc: in settings_menu desc: in settings_menu
eng: "Follow Playlist" eng: "Follow Playlist"
voice: "Seguir lista de reproducción" voice: "Seguir lista de reproducción"
new: "Seguir lista de repr." new: "Seguir lista de repr."
id: LANG_RESET_ASK_RECORDER id: LANG_RESET_ASK_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
eng: "Are You Sure?" eng: "Are You Sure?"
voice: "" voice: ""
new: "¿Estás seguro?" new: "¿Estás seguro?"
id: LANG_RESET_DONE_SETTING id: LANG_RESET_DONE_SETTING
desc: visual confirmation after settings reset desc: visual confirmation after settings reset
@ -260,8 +260,8 @@ new: "Reiniciar opciones"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
eng: "Playback" eng: "Playback"
voice: "Reproducción" voice: "Reproducción"
new: "Reproducción" new: "Reproducción"
id: LANG_FILE id: LANG_FILE
desc: in settings_menu() desc: in settings_menu()
@ -321,7 +321,7 @@ id: LANG_DECAY
desc: in sound_settings desc: in sound_settings
eng: "AV Decay Time" eng: "AV Decay Time"
voice: "" voice: ""
new: "Tiempo de caída del AV" new: "Tiempo de caída del AV"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
@ -333,13 +333,13 @@ id: LANG_CHANNEL
desc: in sound_settings desc: in sound_settings
eng: "Channel Configuration" eng: "Channel Configuration"
voice: "" voice: ""
new: "Configuración de canales" new: "Configuración de canales"
id: LANG_CHANNEL_STEREO id: LANG_CHANNEL_STEREO
desc: in sound_settings desc: in sound_settings
eng: "Stereo" eng: "Stereo"
voice: "Estéreo" voice: "Estéreo"
new: "Estéreo" new: "Estéreo"
id: LANG_CHANNEL_MONO id: LANG_CHANNEL_MONO
desc: in sound_settings desc: in sound_settings
@ -453,13 +453,13 @@ id: LANG_ID3_TITLE
desc: in wps desc: in wps
eng: "[Title]" eng: "[Title]"
voice: "" voice: ""
new: "[Título]" new: "[Título]"
id: LANG_ID3_NO_TITLE id: LANG_ID3_NO_TITLE
desc: in wps when no title is avaible desc: in wps when no title is avaible
eng: "<No Title>" eng: "<No Title>"
voice: "" voice: ""
new: "<sin título>" new: "<sin título>"
id: LANG_ID3_ARTIST id: LANG_ID3_ARTIST
desc: in wps desc: in wps
@ -477,31 +477,31 @@ id: LANG_ID3_ALBUM
desc: in wps desc: in wps
eng: "[Album]" eng: "[Album]"
voice: "" voice: ""
new: "[Álbum]" new: "[Álbum]"
id: LANG_ID3_NO_ALBUM id: LANG_ID3_NO_ALBUM
desc: in wps when no album is avaible desc: in wps when no album is avaible
eng: "<No Album>" eng: "<No Album>"
voice: "" voice: ""
new: "<sin álbum>" new: "<sin álbum>"
id: LANG_ID3_TRACKNUM id: LANG_ID3_TRACKNUM
desc: in wps desc: in wps
eng: "[Tracknum]" eng: "[Tracknum]"
voice: "" voice: ""
new: "[Nº pista]" new: "[Nº pista]"
id: LANG_ID3_NO_TRACKNUM id: LANG_ID3_NO_TRACKNUM
desc: in wps if no track number is avaible desc: in wps if no track number is avaible
eng: "<No Tracknum>" eng: "<No Tracknum>"
voice: "" voice: ""
new: "<sin nº pista>" new: "<sin nº pista>"
id: LANG_ID3_LENGHT id: LANG_ID3_LENGHT
desc: in wps desc: in wps
eng: "[Length]" eng: "[Length]"
voice: "" voice: ""
new: "[Tamaño]" new: "[Tamaño]"
id: LANG_ID3_PLAYLIST id: LANG_ID3_PLAYLIST
desc: in wps desc: in wps
@ -602,8 +602,8 @@ new: "Mostrar archivos"
id: LANG_FILTER_MUSIC id: LANG_FILTER_MUSIC
desc: show only music-related files desc: show only music-related files
eng: "Music" eng: "Music"
voice: "Música" voice: "Música"
new: "Música" new: "Música"
id: LANG_FILTER_SUPPORTED id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
@ -668,8 +668,8 @@ new: "Unidades por lectura"
id: LANG_BACKLIGHT_ON_WHEN_CHARGING id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
eng: "Backlight On When Plugged" eng: "Backlight On When Plugged"
voice: "Iluminación estando enchufado" voice: "Iluminación estando enchufado"
new: "Iluminación estando enchufado" new: "Iluminación estando enchufado"
id: LANG_REPEAT id: LANG_REPEAT
desc: in settings_menu desc: in settings_menu
@ -746,44 +746,44 @@ new: "Despertandose en %d:%02d"
id: LANG_BATTERY_CAPACITY id: LANG_BATTERY_CAPACITY
desc: in settings_menu desc: in settings_menu
eng: "Battery Capacity" eng: "Battery Capacity"
voice: "Capacidad Batería" voice: "Capacidad Batería"
new: "Capacidad Batería" new: "Capacidad Batería"
id: LANG_BATTERY_DISPLAY id: LANG_BATTERY_DISPLAY
desc: Battery type title desc: Battery type title
eng: "Battery Display" eng: "Battery Display"
voice: "Mostrar Batería" voice: "Mostrar Batería"
new: "Mostrar Batería" new: "Mostrar Batería"
id: LANG_BATTERY_TIME id: LANG_BATTERY_TIME
desc: battery level in % and estimated time remaining desc: battery level in % and estimated time remaining
eng: "%d%% %dh %dm" eng: "%d%% %dh %dm"
voice: "Nivel de batería" voice: "Nivel de batería"
new: "%d%% %dh %dm" new: "%d%% %dh %dm"
id: LANG_BATTERY_TOPOFF_CHARGE id: LANG_BATTERY_TOPOFF_CHARGE
desc: in info display, shows that top off charge is running desc: in info display, shows that top off charge is running
eng: "Battery: Top-Off Chg" eng: "Battery: Top-Off Chg"
voice: "" voice: ""
new: "Batería: Top-Off Chg" new: "Batería: Top-Off Chg"
id: LANG_BATTERY_TRICKLE_CHARGE id: LANG_BATTERY_TRICKLE_CHARGE
desc: in info display, shows that trickle charge is running desc: in info display, shows that trickle charge is running
eng: "Battery: Trickle Chg" eng: "Battery: Trickle Chg"
voice: "" voice: ""
new: "Batería: Trickle Chg" new: "Batería: Trickle Chg"
id: LANG_BIDIR_SCROLL id: LANG_BIDIR_SCROLL
desc: Bidirectional scroll limit desc: Bidirectional scroll limit
eng: "Bidirectional Scroll Limit" eng: "Bidirectional Scroll Limit"
voice: "Límite de desplazamiento bidireccional" voice: "Límite de desplazamiento bidireccional"
new: "Límite de desplaz. bidireccional" new: "Límite de desplaz. bidireccional"
id: LANG_CREATE_PLAYLIST id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist
eng: "Create Playlist" eng: "Create Playlist"
voice: "Crear lista de reproducción" voice: "Crear lista de reproducción"
new: "Crear Lista de Reproducción" new: "Crear Lista de Reproducción"
id: LANG_CREATING id: LANG_CREATING
desc: Screen feedback during playlist creation desc: Screen feedback during playlist creation
@ -818,14 +818,14 @@ new:
id: LANG_DISPLAY_GRAPHIC id: LANG_DISPLAY_GRAPHIC
desc: Label for type of icon display desc: Label for type of icon display
eng: "Graphic" eng: "Graphic"
voice: "Gráfico" voice: "Gráfico"
new: "Gráfico" new: "Gráfico"
id: LANG_DISPLAY_NUMERIC id: LANG_DISPLAY_NUMERIC
desc: Label for type of icon display desc: Label for type of icon display
eng: "Numeric" eng: "Numeric"
voice: "Numérico" voice: "Numérico"
new: "Numérico" new: "Numérico"
id: LANG_FAILED id: LANG_FAILED
desc: Something failed. To be appended after above actions desc: Something failed. To be appended after above actions
@ -836,14 +836,14 @@ new: "Fallido"
id: LANG_FILTER_PLAYLIST id: LANG_FILTER_PLAYLIST
desc: show only playlist desc: show only playlist
eng: "Playlists" eng: "Playlists"
voice: "Listas de reproducción" voice: "Listas de reproducción"
new: "Listas de reproducción" new: "Listas de reproducción"
id: LANG_ID3_GENRE id: LANG_ID3_GENRE
desc: ID3 frame 'genre' desc: ID3 frame 'genre'
eng: "[Genre]" eng: "[Genre]"
voice: "" voice: ""
new: "[Género]" new: "[Género]"
id: LANG_ID3_NO_INFO id: LANG_ID3_NO_INFO
desc: ID3 info is missing desc: ID3 info is missing
@ -855,7 +855,7 @@ id: LANG_ID3_YEAR
desc: ID3 info 'year' desc: ID3 info 'year'
eng: "[Year]" eng: "[Year]"
voice: "" voice: ""
new: "[Año]" new: "[Año]"
id: LANG_MENU_SETTING_CANCEL id: LANG_MENU_SETTING_CANCEL
desc: Visual confirmation of canceling a changed setting desc: Visual confirmation of canceling a changed setting
@ -974,13 +974,13 @@ new:
id: LANG_PM_DBFS id: LANG_PM_DBFS
desc: in the peak meter menu desc: in the peak meter menu
eng: "Logarithmic(dB)" eng: "Logarithmic(dB)"
voice: "Logarítmica decibelio" voice: "Logarítmica decibelio"
new: "Logarítmica(dB)" new: "Logarítmica(dB)"
id: LANG_PM_ENERGY_SAVER id: LANG_PM_ENERGY_SAVER
desc: in the peak meter menu desc: in the peak meter menu
eng: "Save Energy" eng: "Save Energy"
voice: "Ahorrar energía" voice: "Ahorrar energía"
new: "Ahorrar energia" new: "Ahorrar energia"
id: LANG_PM_HIGH_PERFORMANCE id: LANG_PM_HIGH_PERFORMANCE
@ -998,14 +998,14 @@ new: "Lineal(%)"
id: LANG_PM_MAX id: LANG_PM_MAX
desc: in the peak meter menu desc: in the peak meter menu
eng: "Maximum Of Range" eng: "Maximum Of Range"
voice: "Máximo de rango" voice: "Máximo de rango"
new: "Máximo de rango" new: "Máximo de rango"
id: LANG_PM_MIN id: LANG_PM_MIN
desc: in the peak meter menu desc: in the peak meter menu
eng: "Minimum Of Range" eng: "Minimum Of Range"
voice: "Mínimo de rango" voice: "Mínimo de rango"
new: "Mínimo de rango" new: "Mínimo de rango"
id: LANG_PM_PERFORMANCE id: LANG_PM_PERFORMANCE
desc: in the peak meter menu desc: in the peak meter menu
@ -1035,13 +1035,13 @@ id: LANG_REALLY_DELETE
desc: Really Delete? desc: Really Delete?
eng: "Delete?" eng: "Delete?"
voice: "" voice: ""
new: "¿Borrar?" new: "¿Borrar?"
id: LANG_RECORDING id: LANG_RECORDING
desc: in the main menu desc: in the main menu
eng: "Recording" eng: "Recording"
voice: "Grabación" voice: "Grabación"
new: "Grabación" new: "Grabación"
id: LANG_RECORDING_CHANNELS id: LANG_RECORDING_CHANNELS
desc: in the recording settings desc: in the recording settings
@ -1082,8 +1082,8 @@ new: "Derecho"
id: LANG_RECORDING_SETTINGS id: LANG_RECORDING_SETTINGS
desc: in the main menu desc: in the main menu
eng: "Recording Settings" eng: "Recording Settings"
voice: "Opciones de Grabación" voice: "Opciones de Grabación"
new: "Opciones de Grabación" new: "Opciones de Grabación"
id: LANG_RECORDING_SOURCE id: LANG_RECORDING_SOURCE
desc: in the recording settings desc: in the recording settings
@ -1100,13 +1100,13 @@ new: "Digital"
id: LANG_RECORDING_SRC_LINE id: LANG_RECORDING_SRC_LINE
desc: in the recording settings desc: in the recording settings
eng: "Line In" eng: "Line In"
voice: "Analógica" voice: "Analógica"
new: "Analógica" new: "Analógica"
id: LANG_RECORDING_SRC_MIC id: LANG_RECORDING_SRC_MIC
desc: in the recording settings desc: in the recording settings
eng: "Mic" eng: "Mic"
voice: "Micrófono" voice: "Micrófono"
new: "Micro" new: "Micro"
id: LANG_RENAME id: LANG_RENAME
@ -1148,14 +1148,14 @@ new: "Velocidad de Desplazamiento"
id: LANG_SCROLL_STEP id: LANG_SCROLL_STEP
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size" eng: "Scroll Step Size"
voice: "Tamaño del paso de Desplazamiento" voice: "Tamaño del paso de Desplazamiento"
new: "Tamaño del paso de Desplaz." new: "Tamaño del paso de Desplaz."
id: LANG_SCROLL_STEP_EXAMPLE id: LANG_SCROLL_STEP_EXAMPLE
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size Setting Example Text" eng: "Scroll Step Size Setting Example Text"
voice: "" voice: ""
new: "Texto de ejemplo del tamaño de paso de desplazamiento" new: "Texto de ejemplo del tamaño de paso de desplazamiento"
id: LANG_SLEEP_TIMER id: LANG_SLEEP_TIMER
desc: sleep timer setting desc: sleep timer setting
@ -1257,7 +1257,7 @@ id: LANG_RECORDING_SIZE
desc: Display of recorded file size desc: Display of recorded file size
eng: "Size:" eng: "Size:"
voice: "" voice: ""
new: "Tamaño:" new: "Tamaño:"
id: LANG_RECORDING_TIME id: LANG_RECORDING_TIME
desc: Display of recorded time desc: Display of recorded time
@ -1268,7 +1268,7 @@ new: "Tiempo"
id: LANG_SAVE_SETTINGS id: LANG_SAVE_SETTINGS
desc: in system_settings_menu() desc: in system_settings_menu()
eng: "Write .cfg file" eng: "Write .cfg file"
voice: "Escribir archivo de configuración" voice: "Escribir archivo de configuración"
new: "Escribir archivo .cfg" new: "Escribir archivo .cfg"
id: LANG_SETTINGS_LOADED1 id: LANG_SETTINGS_LOADED1
@ -1346,8 +1346,8 @@ new: "Barra de Desplazamiento"
id: LANG_CAPTION_BACKLIGHT id: LANG_CAPTION_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Caption backlight" eng: "Caption backlight"
voice: "Iluminacion al iniciar Canción" voice: "Iluminacion al iniciar Canción"
new: "Iluminación al iniciar Canción" new: "Iluminación al iniciar Canción"
id: LANG_INVERT_CURSOR_POINTER id: LANG_INVERT_CURSOR_POINTER
desc: in settings_menu desc: in settings_menu
@ -1383,7 +1383,7 @@ id: LANG_AUTO_BOOKMARK_QUERY
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
eng: "Create a Bookmark?" eng: "Create a Bookmark?"
voice: "" voice: ""
new: "¿Crear un marcapáginas?" new: "¿Crear un marcapáginas?"
id: LANG_BARS_MENU id: LANG_BARS_MENU
desc: in the display sub menu desc: in the display sub menu
@ -1394,62 +1394,62 @@ new: "Barras de Estado/Desplazamiento"
id: LANG_BATTERY_MENU id: LANG_BATTERY_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Battery" eng: "Battery"
voice: "Batería" voice: "Batería"
new: "Batería" new: "Batería"
id: LANG_BOOKMARK_AUTOLOAD_QUERY id: LANG_BOOKMARK_AUTOLOAD_QUERY
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark?" eng: "Load Last Bookmark?"
voice: "" voice: ""
new: "¿Cargar último Marcapáginas?" new: "¿Cargar último Marcapáginas?"
id: LANG_BOOKMARK_CREATE_FAILURE id: LANG_BOOKMARK_CREATE_FAILURE
desc: Indicates bookmark was not created desc: Indicates bookmark was not created
eng: "Bookmark Failed!" eng: "Bookmark Failed!"
voice: "" voice: ""
new: "Falló el Marcapáginas" new: "Falló el Marcapáginas"
id: LANG_BOOKMARK_CREATE_SUCCESS id: LANG_BOOKMARK_CREATE_SUCCESS
desc: Indicates bookmark was successfully created desc: Indicates bookmark was successfully created
eng: "Bookmark Created" eng: "Bookmark Created"
voice: "" voice: ""
new: "Marcapáginas Creado" new: "Marcapáginas Creado"
id: LANG_BOOKMARK_LOAD_EMPTY id: LANG_BOOKMARK_LOAD_EMPTY
desc: Indicates bookmark was empty desc: Indicates bookmark was empty
eng: "Bookmark Empty" eng: "Bookmark Empty"
voice: "" voice: ""
new: "Marcapáginas Vacio" new: "Marcapáginas Vacio"
id: LANG_BOOKMARK_MENU id: LANG_BOOKMARK_MENU
desc: Text on main menu to get to bookmark commands desc: Text on main menu to get to bookmark commands
eng: "Bookmarks" eng: "Bookmarks"
voice: "Marcapáginas" voice: "Marcapáginas"
new: "Marcapáginas" new: "Marcapáginas"
id: LANG_BOOKMARK_MENU_CREATE id: LANG_BOOKMARK_MENU_CREATE
desc: Used off of the bookmark menu to create a bookmark desc: Used off of the bookmark menu to create a bookmark
eng: "Create Bookmark" eng: "Create Bookmark"
voice: "Crear Marcapáginas" voice: "Crear Marcapáginas"
new: "Crear Marcapáginas" new: "Crear Marcapáginas"
id: LANG_BOOKMARK_MENU_LIST id: LANG_BOOKMARK_MENU_LIST
desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U
eng: "List Bookmarks" eng: "List Bookmarks"
voice: "Listar Marcapáginas" voice: "Listar Marcapáginas"
new: "Listar Marcapáginas" new: "Listar Marcapáginas"
id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS
desc: Text for the menu text to access the most recent bookmarks list desc: Text for the menu text to access the most recent bookmarks list
eng: "Recent Bookmarks" eng: "Recent Bookmarks"
voice: "Marcapáginas Recientes" voice: "Marcapáginas Recientes"
new: "Marcapáginas Recientes" new: "Marcapáginas Recientes"
id: LANG_BOOKMARK_SELECT_BOOKMARK_TEXT id: LANG_BOOKMARK_SELECT_BOOKMARK_TEXT
desc: Used on the bookmark select window to label bookmark number desc: Used on the bookmark select window to label bookmark number
eng: "Bookmark" eng: "Bookmark"
voice: "" voice: ""
new: "Marcapáginas" new: "Marcapáginas"
id: LANG_BOOKMARK_SELECT_DELETE id: LANG_BOOKMARK_SELECT_DELETE
desc: Used on the bookmark select window to indicated the bookmark delete option desc: Used on the bookmark select window to indicated the bookmark delete option
@ -1466,8 +1466,8 @@ new: "OFF = Salir"
id: LANG_BOOKMARK_SELECT_INDEX_TEXT id: LANG_BOOKMARK_SELECT_INDEX_TEXT
desc: Used on the bookmark select window to label index number desc: Used on the bookmark select window to label index number
eng: "Index" eng: "Index"
voice: "Índice" voice: "Índice"
new: "Índice" new: "Índice"
id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS
desc: From the auto-load screen, allows user to list all bookmarks desc: From the auto-load screen, allows user to list all bookmarks
@ -1490,44 +1490,44 @@ new: "Tiempo"
id: LANG_BOOKMARK_SETTINGS id: LANG_BOOKMARK_SETTINGS
desc: in general settings desc: in general settings
eng: "Bookmarking" eng: "Bookmarking"
voice: "Marcapáginas" voice: "Marcapáginas"
new: "Marcapáginas" new: "Marcapáginas"
id: LANG_BOOKMARK_SETTINGS_AUTOCREATE id: LANG_BOOKMARK_SETTINGS_AUTOCREATE
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
eng: "Bookmark on Stop" eng: "Bookmark on Stop"
voice: "Marcar página al Detener" voice: "Marcar página al Detener"
new: "Marcar página al Detener" new: "Marcar página al Detener"
id: LANG_BOOKMARK_SETTINGS_AUTOLOAD id: LANG_BOOKMARK_SETTINGS_AUTOLOAD
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark" eng: "Load Last Bookmark"
voice: "Cargar último Marcapáginas" voice: "Cargar último Marcapáginas"
new: "Cargar último Marcapáginas" new: "Cargar último Marcapáginas"
id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
desc: Configuration option to maintain a list of recent bookmarks desc: Configuration option to maintain a list of recent bookmarks
eng: "Maintain a List of Recent Bookmarks?" eng: "Maintain a List of Recent Bookmarks?"
voice: "¿Mantener una Lista de Marcapáginas Recientes?" voice: "¿Mantener una Lista de Marcapáginas Recientes?"
new: "¿Mantener una Lista de Marcapáginas Recientes?" new: "¿Mantener una Lista de Marcapáginas Recientes?"
id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
eng: "Ask - Recent only" eng: "Ask - Recent only"
voice: "Preguntar - Sólo Recientes" voice: "Preguntar - Sólo Recientes"
new: "Preguntar - Sólo Recientes" new: "Preguntar - Sólo Recientes"
id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
eng: "Yes - Recent only" eng: "Yes - Recent only"
voice: "Si - Sólo Recientes" voice: "Si - Sólo Recientes"
new: "Si - Sólo Recientes" new: "Si - Sólo Recientes"
id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
desc: Save only on bookmark for each playlist in recent bookmarks desc: Save only on bookmark for each playlist in recent bookmarks
eng: "Unique only" eng: "Unique only"
voice: "Sólo único" voice: "Sólo único"
new: "Sólo único" new: "Sólo único"
id: LANG_BOOT_CHANGED id: LANG_BOOT_CHANGED
desc: File browser discovered the boot file was changed desc: File browser discovered the boot file was changed
@ -1562,7 +1562,7 @@ new: "PLAY = SI"
id: LANG_CUSTOM_CFG id: LANG_CUSTOM_CFG
desc: in setting_menu() desc: in setting_menu()
eng: "Browse .cfg files" eng: "Browse .cfg files"
voice: "Mostrar archivos de configuración" voice: "Mostrar archivos de configuración"
new: "Mostrar archivos .cfg" new: "Mostrar archivos .cfg"
id: LANG_CUSTOM_FONT id: LANG_CUSTOM_FONT
@ -1652,26 +1652,26 @@ new: "Emisora: %d.%dMHz"
id: LANG_INFO_MENU id: LANG_INFO_MENU
desc: in the info sub menu desc: in the info sub menu
eng: "Rockbox Info" eng: "Rockbox Info"
voice: "Información de Rockbox" voice: "Información de Rockbox"
new: "Info. de Rockbox" new: "Info. de Rockbox"
id: LANG_INSERT id: LANG_INSERT
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert" eng: "Insert"
voice: "Añadir" voice: "Añadir"
new: "Añadir" new: "Añadir"
id: LANG_INSERT_FIRST id: LANG_INSERT_FIRST
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert next" eng: "Insert next"
voice: "Añadir como próxima" voice: "Añadir como próxima"
new: "Añadir como próxima" new: "Añadir como próxima"
id: LANG_INSERT_LAST id: LANG_INSERT_LAST
desc: in onplay menu. append a track/playlist into dynamic playlist. desc: in onplay menu. append a track/playlist into dynamic playlist.
eng: "Insert last" eng: "Insert last"
voice: "Añadir al final" voice: "Añadir al final"
new: "Añadir al final" new: "Añadir al final"
id: LANG_JUMP_SCROLL id: LANG_JUMP_SCROLL
desc: (player) menu altarnative for jump scroll desc: (player) menu altarnative for jump scroll
@ -1700,14 +1700,14 @@ new: "Opciones del LCD"
id: LANG_LIMITS_MENU id: LANG_LIMITS_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Limits" eng: "Limits"
voice: "Límites" voice: "Límites"
new: "Límites" new: "Límites"
id: LANG_LINE_IN id: LANG_LINE_IN
desc: in settings_menu desc: in settings_menu
eng: "Line In" eng: "Line In"
voice: "Entrada Analógica" voice: "Entrada Analógica"
new: "Analógica" new: "Analógica"
id: LANG_MANAGE_MENU id: LANG_MANAGE_MENU
desc: in the system sub menu desc: in the system sub menu
@ -1718,14 +1718,14 @@ new: "Gestionar Opciones"
id: LANG_MAX_FILES_IN_DIR id: LANG_MAX_FILES_IN_DIR
desc: in settings_menu desc: in settings_menu
eng: "Max files in dir browser" eng: "Max files in dir browser"
voice: "Número maximo de archivos por directorio" voice: "Número maximo de archivos por directorio"
new: "Max. Archivos por directorio" new: "Max. Archivos por directorio"
id: LANG_MAX_FILES_IN_PLAYLIST id: LANG_MAX_FILES_IN_PLAYLIST
desc: in settings_menu desc: in settings_menu
eng: "Max playlist size" eng: "Max playlist size"
voice: "Tamaño maximo de Lista de Reproducción" voice: "Tamaño maximo de Lista de Reproducción"
new: "Tamaño maximo de Lista de Reproducción" new: "Tamaño maximo de Lista de Reproducción"
id: LANG_MOVE id: LANG_MOVE
desc: The verb/action Move desc: The verb/action Move
@ -1761,25 +1761,25 @@ id: LANG_PLAYLIST_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist file" eng: "Error accessing playlist file"
voice: "" voice: ""
new: "Error al acceder a la Lista de Reproducción" new: "Error al acceder a la Lista de Reproducción"
id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist control file" eng: "Error accessing playlist control file"
voice: "" voice: ""
new: "Error al acceder al archivo de control de Listas de Reproducción" new: "Error al acceder al archivo de control de Listas de Reproducción"
id: LANG_PLAYLIST_CONTROL_INVALID id: LANG_PLAYLIST_CONTROL_INVALID
desc: Playlist resume error desc: Playlist resume error
eng: "Playlist control file is invalid" eng: "Playlist control file is invalid"
voice: "" voice: ""
new: "Archivo de Control de Listas de Reproducción inválido" new: "Archivo de Control de Listas de Reproducción inválido"
id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR
desc: Playlist error desc: Playlist error
eng: "Error updating playlist control file" eng: "Error updating playlist control file"
voice: "" voice: ""
new: "Error al Actualizar el Archivo de Control de Listas de Reproducción" new: "Error al Actualizar el Archivo de Control de Listas de Reproducción"
id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR
desc: Playlist error desc: Playlist error
@ -1791,13 +1791,13 @@ id: LANG_PLAYLIST_INSERT_COUNT
desc: splash number of tracks inserted desc: splash number of tracks inserted
eng: "Inserted %d tracks (%s)" eng: "Inserted %d tracks (%s)"
voice: "" voice: ""
new: "Añadidas %d Pistas (%s)" new: "Añadidas %d Pistas (%s)"
id: LANG_PLAYLIST_MENU id: LANG_PLAYLIST_MENU
desc: in main menu. desc: in main menu.
eng: "Playlist Options" eng: "Playlist Options"
voice: "Opciones de la Lista de Reproducción" voice: "Opciones de la Lista de Reproducción"
new: "Opciones de la Lista de Reproducción" new: "Opciones de la Lista de Reproducción"
id: LANG_PLAYLIST_QUEUE_COUNT id: LANG_PLAYLIST_QUEUE_COUNT
desc: splash number of tracks queued desc: splash number of tracks queued
@ -1839,7 +1839,7 @@ id: LANG_PLUGIN_WRONG_VERSION
desc: The plugin is not compatible with the rockbox version trying to run it desc: The plugin is not compatible with the rockbox version trying to run it
eng: "Incompatible version" eng: "Incompatible version"
voice: "" voice: ""
new: "Versión Incompatible" new: "Versión Incompatible"
id: LANG_QUEUE_FIRST id: LANG_QUEUE_FIRST
desc: in onplay menu. queue a track/playlist into dynamic playlist. desc: in onplay menu. queue a track/playlist into dynamic playlist.
@ -1868,50 +1868,50 @@ new: "Reiniciar ahora?"
id: LANG_RECORDING_MENU id: LANG_RECORDING_MENU
desc: in the recording sub menu desc: in the recording sub menu
eng: "Recording screen" eng: "Recording screen"
voice: "Pantalla de Grabación" voice: "Pantalla de Grabación"
new: "Pantalla de Grabación" new: "Pantalla de Grabación"
id: LANG_RECORD_PRERECORD id: LANG_RECORD_PRERECORD
desc: in recording and radio screen desc: in recording and radio screen
eng: "Prerecording" eng: "Prerecording"
voice: "" voice: ""
new: "Pregrabación" new: "Pregrabación"
id: LANG_RECORD_PRERECORD_TIME id: LANG_RECORD_PRERECORD_TIME
desc: in recording settings_menu desc: in recording settings_menu
eng: "Prerecord time" eng: "Prerecord time"
voice: "Tiempo de Pregrabación" voice: "Tiempo de Pregrabación"
new: "Tiempo de Pregrabación" new: "Tiempo de Pregrabación"
id: LANG_RECORD_TIMESPLIT id: LANG_RECORD_TIMESPLIT
desc: Prompt for record timer interval setting, in the record settings menu desc: Prompt for record timer interval setting, in the record settings menu
eng: "Time Split" eng: "Time Split"
voice: "Separación por Tiempo" voice: "Separación por Tiempo"
new: "Separación por Tiempo" new: "Separación por Tiempo"
id: LANG_RECORD_TIMESPLIT_REC id: LANG_RECORD_TIMESPLIT_REC
desc: Display of record timer interval setting, on the record screen desc: Display of record timer interval setting, on the record screen
eng: "Split time:" eng: "Split time:"
voice: "" voice: ""
new: "Tiempo de Separación:" new: "Tiempo de Separación:"
id: LANG_RECURSE_DIRECTORY id: LANG_RECURSE_DIRECTORY
desc: In playlist menu desc: In playlist menu
eng: "Recursively Insert Directories" eng: "Recursively Insert Directories"
voice: "Añadir Directorios Recursivamente" voice: "Añadir Directorios Recursivamente"
new: "Añadir Directorios Recursivamente" new: "Añadir Directorios Recursivamente"
id: LANG_RECURSE_DIRECTORY_QUESTION id: LANG_RECURSE_DIRECTORY_QUESTION
desc: Asked from onplay screen desc: Asked from onplay screen
eng: "Recursively?" eng: "Recursively?"
voice: "" voice: ""
new: "¿Recursivamente?" new: "¿Recursivamente?"
id: LANG_SAVE_DYNAMIC_PLAYLIST id: LANG_SAVE_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
eng: "Save Current Playlist" eng: "Save Current Playlist"
voice: "Guardar Lista de Reproducción Actual" voice: "Guardar Lista de Reproducción Actual"
new: "Guardar Lista de Reproducción Actual" new: "Guardar Lista de Reproducción Actual"
id: LANG_SHOW_ICONS id: LANG_SHOW_ICONS
desc: in settings_menu desc: in settings_menu
@ -1934,20 +1934,20 @@ new: "Fecha y Hora"
id: LANG_VIEW_DYNAMIC_PLAYLIST id: LANG_VIEW_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
eng: "View Current Playlist" eng: "View Current Playlist"
voice: "Ver Lista de Reproducción Actual" voice: "Ver Lista de Reproducción Actual"
new: "Ver Lista de Reproducción Actual" new: "Ver Lista de Reproducción Actual"
id: LANG_WHILE_PLAYING id: LANG_WHILE_PLAYING
desc: in settings_menu() desc: in settings_menu()
eng: "Browse .wps files" eng: "Browse .wps files"
voice: "Mostrar archivos de pantalla de reproducción" voice: "Mostrar archivos de pantalla de reproducción"
new: "Mostrar archivos .wps" new: "Mostrar archivos .wps"
id: LANG_WIND_MENU id: LANG_WIND_MENU
desc: in the playback sub menu desc: in the playback sub menu
eng: "FFwd/Rewind" eng: "FFwd/Rewind"
voice: "Avance rápido y rebobinar" voice: "Avance rápido y rebobinar"
new: "Av.Rápido/Rebobinar" new: "Av.Rápido/Rebobinar"
id: LANG_CREATE_DIR id: LANG_CREATE_DIR
desc: in main menu desc: in main menu
@ -1964,8 +1964,8 @@ new: "Ruta Completa"
id: LANG_DISPLAY_TRACK_NAME_ONLY id: LANG_DISPLAY_TRACK_NAME_ONLY
desc: track display options desc: track display options
eng: "Track name only" eng: "Track name only"
voice: "Sólo nombre de pista" voice: "Sólo nombre de pista"
new: "Sólo nombre de pista" new: "Sólo nombre de pista"
id: LANG_FILE_OPTIONS id: LANG_FILE_OPTIONS
desc: in playlist viewer on+play menu desc: in playlist viewer on+play menu
@ -1994,8 +1994,8 @@ new: "Eliminar"
id: LANG_SHOW_INDICES id: LANG_SHOW_INDICES
desc: in playlist viewer menu desc: in playlist viewer menu
eng: "Show Indices" eng: "Show Indices"
voice: "Mostrar Índices" voice: "Mostrar Índices"
new: "Mostrar Índices" new: "Mostrar Índices"
id: LANG_TRACK_DISPLAY id: LANG_TRACK_DISPLAY
desc: in playlist viewer on+play menu desc: in playlist viewer on+play menu
@ -2036,7 +2036,7 @@ new: "LCD"
id: VOICE_BILLION id: VOICE_BILLION
desc: spoken only, for composing numbers desc: spoken only, for composing numbers
eng: "" eng: ""
voice: "billón" voice: "billón"
new: "" new: ""
id: VOICE_DB id: VOICE_DB
@ -2144,7 +2144,7 @@ new:
id: VOICE_MILLION id: VOICE_MILLION
desc: spoken only, for composing numbers desc: spoken only, for composing numbers
eng: "" eng: ""
voice: "millón" voice: "millón"
new: "" new: ""
id: VOICE_MILLISECONDS id: VOICE_MILLISECONDS
@ -2204,7 +2204,7 @@ new: ""
id: VOICE_PLUS id: VOICE_PLUS
desc: spoken only, for composing numbers desc: spoken only, for composing numbers
eng: "" eng: ""
voice: "más" voice: "más"
new: "" new: ""
id: VOICE_POINT id: VOICE_POINT
@ -2391,13 +2391,13 @@ id: LANG_FM_BUTTONBAR_ACTION
desc: in radio screen desc: in radio screen
eng: "Action" eng: "Action"
voice: "" voice: ""
new: "Acción" new: "Acción"
id: LANG_FM_BUTTONBAR_ADD id: LANG_FM_BUTTONBAR_ADD
desc: in radio screen desc: in radio screen
eng: "Add" eng: "Add"
voice: "" voice: ""
new: "Añadir" new: "Añadir"
id: LANG_FM_BUTTONBAR_EDIT id: LANG_FM_BUTTONBAR_EDIT
desc: DEPRECATED desc: DEPRECATED
@ -2415,7 +2415,7 @@ id: LANG_FM_EDIT_PRESET
desc: in radio screen desc: in radio screen
eng: "Edit preset" eng: "Edit preset"
voice: "" voice: ""
new: "Edit presintonía" new: "Edit presintonía"
id: LANG_FM_MONO_MODE id: LANG_FM_MONO_MODE
desc: in radio screen desc: in radio screen
@ -2432,20 +2432,20 @@ new: "Prioridad etiqueta ID3"
id: LANG_ID3_V1_FIRST id: LANG_ID3_V1_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V1 then V2" eng: "V1 then V2"
voice: "Versión 1 y despues versión 2" voice: "Versión 1 y despues versión 2"
new: "V1 y despues V2" new: "V1 y despues V2"
id: LANG_ID3_V2_FIRST id: LANG_ID3_V2_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V2 then V1" eng: "V2 then V1"
voice: "Versión 2 y despues versión 1" voice: "Versión 2 y despues versión 1"
new: "V2 y despues V1" new: "V2 y despues V1"
id: LANG_INSTALLATION_INCOMPLETE id: LANG_INSTALLATION_INCOMPLETE
desc: in browse root desc: in browse root
eng: "Installation incomplete" eng: "Installation incomplete"
voice: "" voice: ""
new: "Instalación incompleta" new: "Instalación incompleta"
id: LANG_MDB_CENTER id: LANG_MDB_CENTER
desc: in sound settings desc: in sound settings
@ -2462,8 +2462,8 @@ new: "Activar MDB"
id: LANG_MDB_HARMONICS id: LANG_MDB_HARMONICS
desc: in sound settings desc: in sound settings
eng: "MDB Harmonics" eng: "MDB Harmonics"
voice: "Armónicos MDB" voice: "Armónicos MDB"
new: "Armónicos MDB" new: "Armónicos MDB"
id: LANG_MDB_SHAPE id: LANG_MDB_SHAPE
desc: in sound settings desc: in sound settings
@ -2510,8 +2510,8 @@ new: "Apagando..."
id: LANG_SORT_ALPHA id: LANG_SORT_ALPHA
desc: browser sorting setting desc: browser sorting setting
eng: "Alphabetical" eng: "Alphabetical"
voice: "Alfabético" voice: "Alfabético"
new: "Alfabético" new: "Alfabético"
id: LANG_SORT_DATE id: LANG_SORT_DATE
desc: browser sorting setting desc: browser sorting setting
@ -2522,8 +2522,8 @@ new: "Por fecha"
id: LANG_SORT_DATE_REVERSE id: LANG_SORT_DATE_REVERSE
desc: browser sorting setting desc: browser sorting setting
eng: "by newest date" eng: "by newest date"
voice: "más reciente" voice: "más reciente"
new: "más reciente" new: "más reciente"
id: LANG_SORT_DIR id: LANG_SORT_DIR
desc: browser sorting setting desc: browser sorting setting
@ -2546,8 +2546,8 @@ new: "por tipo"
id: LANG_STEREO_WIDTH id: LANG_STEREO_WIDTH
desc: in sound_settings desc: in sound_settings
eng: "Stereo width" eng: "Stereo width"
voice: "Amplitud estéreo" voice: "Amplitud estéreo"
new: "Amplitud Estéreo" new: "Amplitud Estéreo"
id: LANG_SUPERBASS id: LANG_SUPERBASS
desc: in sound settings desc: in sound settings
@ -2595,7 +2595,7 @@ id: LANG_VOICE_NUMBER
desc: "talkbox" mode for files+directories desc: "talkbox" mode for files+directories
eng: "Numbers" eng: "Numbers"
voice: "Numeros" voice: "Numeros"
new: "Números" new: "Números"
id: LANG_VOICE_SPELL id: LANG_VOICE_SPELL
desc: "talkbox" mode for files+directories desc: "talkbox" mode for files+directories
@ -2786,13 +2786,13 @@ new: ""
id: VOICE_EXT_BMARK id: VOICE_EXT_BMARK
desc: spoken only, for file extension and the word in general desc: spoken only, for file extension and the word in general
eng: "" eng: ""
voice: "marcapáginas" voice: "marcapáginas"
new: "" new: ""
id: VOICE_EXT_CFG id: VOICE_EXT_CFG
desc: spoken only, for file extension desc: spoken only, for file extension
eng: "" eng: ""
voice: "configuración" voice: "configuración"
new: "" new: ""
id: VOICE_EXT_FONT id: VOICE_EXT_FONT
@ -2846,8 +2846,8 @@ new: ""
id: LANG_BATTERY_TYPE id: LANG_BATTERY_TYPE
desc: in battery settings desc: in battery settings
eng: "Battery Type" eng: "Battery Type"
voice: "Tipo de batería" voice: "Tipo de batería"
new: "Tipo de batería" new: "Tipo de batería"
id: LANG_BATTERY_TYPE_ALKALINE id: LANG_BATTERY_TYPE_ALKALINE
desc: in battery settings desc: in battery settings
@ -2858,7 +2858,7 @@ new: "Alcalina"
id: LANG_BATTERY_TYPE_NIMH id: LANG_BATTERY_TYPE_NIMH
desc: in battery settings desc: in battery settings
eng: "NiMH" eng: "NiMH"
voice: "Níquel hidruro de metal" voice: "Níquel hidruro de metal"
new: "NiMH" new: "NiMH"
id: LANG_BYTE id: LANG_BYTE
@ -2907,7 +2907,7 @@ id: LANG_ID3DB_SEARCH
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search" eng: "Search"
voice: "" voice: ""
new: "Búsqueda" new: "Búsqueda"
id: LANG_ID3DB_SEARCH_ALBUMS id: LANG_ID3DB_SEARCH_ALBUMS
desc: ID3 virtual folder name desc: ID3 virtual folder name
@ -2960,14 +2960,14 @@ new: "<Todas las Canciones>"
id: LANG_PLAYLIST id: LANG_PLAYLIST
desc: Used when you need to say playlist, also voiced desc: Used when you need to say playlist, also voiced
eng: "Playlist" eng: "Playlist"
voice: "Lista de reproducción" voice: "Lista de reproducción"
new: "Lista de reproducción" new: "Lista de reproducción"
id: LANG_RECORD_STARTUP id: LANG_RECORD_STARTUP
desc: Start Rockbox in Recording screen desc: Start Rockbox in Recording screen
eng: "Show recording screen on startup" eng: "Show recording screen on startup"
voice: "Mostrar pantalla de grabación al encender" voice: "Mostrar pantalla de grabación al encender"
new: "Mostrar pantalla de grabación al encender" new: "Mostrar pantalla de grabación al encender"
id: LANG_ALARM_MOD_DISABLE id: LANG_ALARM_MOD_DISABLE
desc: Announce that the RTC alarm has been turned off desc: Announce that the RTC alarm has been turned off

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -17,31 +17,31 @@ id: LANG_SOUND_SETTINGS
desc: in the main menu desc: in the main menu
eng: "Sound Settings" eng: "Sound Settings"
voice: "Sound Settings" voice: "Sound Settings"
new: "Opcións de Son" new: "Opcións de Son"
id: LANG_GENERAL_SETTINGS id: LANG_GENERAL_SETTINGS
desc: in the main menu desc: in the main menu
eng: "General Settings" eng: "General Settings"
voice: "General Settings" voice: "General Settings"
new: "Opcións Xerais" new: "Opcións Xerais"
id: LANG_INFO id: LANG_INFO
desc: in the main menu desc: in the main menu
eng: "Info" eng: "Info"
voice: "Info" voice: "Info"
new: "Información" new: "Información"
id: LANG_VERSION id: LANG_VERSION
desc: in the main menu desc: in the main menu
eng: "Version" eng: "Version"
voice: "Version" voice: "Version"
new: "Versión" new: "Versión"
id: LANG_DEBUG id: LANG_DEBUG
desc: in the main menu desc: in the main menu
eng: "Debug (Keep Out!)" eng: "Debug (Keep Out!)"
voice: "Debug, keep out!" voice: "Debug, keep out!"
new: "Depuración (¡non tocar!)" new: "Depuración (¡non tocar!)"
id: LANG_USB id: LANG_USB
desc: in the main menu desc: in the main menu
@ -71,7 +71,7 @@ id: LANG_BATTERY_CHARGE
desc: tells that the battery is charging, instead of battery level desc: tells that the battery is charging, instead of battery level
eng: "Battery: Charging" eng: "Battery: Charging"
voice: "" voice: ""
new: "Batería: Cargando" new: "Batería: Cargando"
id: LANG_PLAYLIST_LOAD id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
@ -89,13 +89,13 @@ id: LANG_PLAYINDICES_PLAYLIST
desc: in playlist.indices() when playlist is full *WARNING* this and next ID are only used in this function. desc: in playlist.indices() when playlist is full *WARNING* this and next ID are only used in this function.
eng: "Playlist" eng: "Playlist"
voice: "" voice: ""
new: "O búfer da" new: "O búfer da"
ií: LANG_PLAYINDICES_BUFFER ií: LANG_PLAYINDICES_BUFFER
desc: in playlist.indices() when playlist is full desc: in playlist.indices() when playlist is full
eng: "Buffer Full" eng: "Buffer Full"
voice: "" voice: ""
new: "lista está cheo" new: "lista está cheo"
id: LANG_SETTINGS_SAVE_PLAYER id: LANG_SETTINGS_SAVE_PLAYER
desc: displayed if save settings has failed desc: displayed if save settings has failed
@ -149,13 +149,13 @@ id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
eng: "Play Selected First" eng: "Play Selected First"
voice: "Play Selected File First" voice: "Play Selected File First"
new: "Reproducir primeiro a canción marcada" new: "Reproducir primeiro a canción marcada"
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
eng: "Sort Case Sensitive" eng: "Sort Case Sensitive"
voice: "Sort Case Sensitive" voice: "Sort Case Sensitive"
new: "Sensible a Mai/minúsculas" new: "Sensible a Mai/minúsculas"
id: LANG_RESUME id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
@ -185,7 +185,7 @@ id: LANG_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Backlight" eng: "Backlight"
voice: "Backlight" voice: "Backlight"
new: "Ilumicación" new: "Ilumicación"
id: LANG_SCROLL id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
@ -215,13 +215,13 @@ id: LANG_FFRW_STEP
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Min Step" eng: "FF/RW Min Step"
voice: "Minimum Step" voice: "Minimum Step"
new: "Paso mínimo FF/RW" new: "Paso mínimo FF/RW"
id: LANG_FFRW_ACCEL id: LANG_FFRW_ACCEL
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Accel" eng: "FF/RW Accel"
voice: "Acceleration" voice: "Acceleration"
new: "Aceleración FF/RW" new: "Aceleración FF/RW"
id: LANG_FOLLOW id: LANG_FOLLOW
desc: in settings_menu desc: in settings_menu
@ -233,7 +233,7 @@ id: LANG_RESET_ASK_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
eng: "Are You Sure?" eng: "Are You Sure?"
voice: "" voice: ""
new: "¿Estas certo?" new: "¿Estas certo?"
id: LANG_RESET_DONE_SETTING id: LANG_RESET_DONE_SETTING
desc: visual confirmation after settings reset desc: visual confirmation after settings reset
@ -269,13 +269,13 @@ id: LANG_RESET
desc: in system_settings_menu() desc: in system_settings_menu()
eng: "Reset Settings" eng: "Reset Settings"
voice: "Reset Settings" voice: "Reset Settings"
new: "Reiniciar opcións" new: "Reiniciar opcións"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
eng: "Playback" eng: "Playback"
voice: "Playback" voice: "Playback"
new: "Reproducción" new: "Reproducción"
id: LANG_FILE id: LANG_FILE
desc: in settings_menu() desc: in settings_menu()
@ -335,7 +335,7 @@ id: LANG_DECAY
desc: in sound_settings desc: in sound_settings
eng: "AV Decay Time" eng: "AV Decay Time"
voice: "" voice: ""
new: "Tempo de caída do AV" new: "Tempo de caída do AV"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
@ -347,13 +347,13 @@ id: LANG_CHANNEL
desc: in sound_settings desc: in sound_settings
eng: "Channel Configuration" eng: "Channel Configuration"
voice: "" voice: ""
new: "Configuración de canais" new: "Configuración de canais"
id: LANG_CHANNEL_STEREO id: LANG_CHANNEL_STEREO
desc: in sound_settings desc: in sound_settings
eng: "Stereo" eng: "Stereo"
voice: "Stereo" voice: "Stereo"
new: "Estéreo" new: "Estéreo"
id: LANG_CHANNEL_MONO id: LANG_CHANNEL_MONO
desc: in sound_settings desc: in sound_settings
@ -377,13 +377,13 @@ id: LANG_AUTOVOL
desc: in sound_settings desc: in sound_settings
eng: "Auto Volume" eng: "Auto Volume"
voice: "Auto Volume" voice: "Auto Volume"
new: "Volumen automático" new: "Volumen automático"
id: LANG_SHOWDIR_ERROR_BUFFER id: LANG_SHOWDIR_ERROR_BUFFER
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
eng: "Dir Buffer" eng: "Dir Buffer"
voice: "" voice: ""
new: "Búfer do directorio" new: "Búfer do directorio"
id: LANG_SHOWDIR_ERROR_FULL id: LANG_SHOWDIR_ERROR_FULL
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
@ -467,13 +467,13 @@ id: LANG_ID3_TITLE
desc: in wps desc: in wps
eng: "[Title]" eng: "[Title]"
voice: "" voice: ""
new: "[Título]" new: "[Título]"
id: LANG_ID3_NO_TITLE id: LANG_ID3_NO_TITLE
desc: in wps when no title is avaible desc: in wps when no title is avaible
eng: "<No Title>" eng: "<No Title>"
voice: "" voice: ""
new: "[Sen Títuo]" new: "[Sen Títuo]"
id: LANG_ID3_ARTIST id: LANG_ID3_ARTIST
desc: in wps desc: in wps
@ -503,13 +503,13 @@ id: LANG_ID3_TRACKNUM
desc: in wps desc: in wps
eng: "[Tracknum]" eng: "[Tracknum]"
voice: "" voice: ""
new: "[Nº Pista]" new: "[Nº Pista]"
id: LANG_ID3_NO_TRACKNUM id: LANG_ID3_NO_TRACKNUM
desc: in wps if no track number is avaible desc: in wps if no track number is avaible
eng: "<No Tracknum>" eng: "<No Tracknum>"
voice: "" voice: ""
new: "<Sen Nº de Pista>" new: "<Sen Nº de Pista>"
id: LANG_ID3_LENGHT id: LANG_ID3_LENGHT
desc: in wps desc: in wps
@ -593,7 +593,7 @@ id: LANG_END_PLAYLIST_RECORDER
desc: when playlist has finished desc: when playlist has finished
eng: "End Of Song List" eng: "End Of Song List"
voice: "" voice: ""
new: "Fin da lista de cancións" new: "Fin da lista de cancións"
id: LANG_POWEROFF_IDLE id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
@ -617,7 +617,7 @@ id: LANG_FILTER_MUSIC
desc: show only music-related files desc: show only music-related files
eng: "Music" eng: "Music"
voice: "Music" voice: "Music"
new: "Música" new: "Música"
id: LANG_FILTER_SUPPORTED id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
@ -635,7 +635,7 @@ id: LANG_SET_BOOL_YES
desc: bool true representation desc: bool true representation
eng: "Yes" eng: "Yes"
voice: "Yes" voice: "Yes"
new: "Sí" new: "Sí"
id: LANG_SET_BOOL_NO id: LANG_SET_BOOL_NO
desc: bool false representation desc: bool false representation
@ -683,7 +683,7 @@ id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
eng: "Backlight On When Plugged" eng: "Backlight On When Plugged"
voice: "Backlight On When Plugged" voice: "Backlight On When Plugged"
new: "Iluminación estando enchufado" new: "Iluminación estando enchufado"
id: LANG_REPEAT id: LANG_REPEAT
desc: in settings_menu desc: in settings_menu
@ -809,7 +809,7 @@ id: LANG_MONTH_JUNE
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
eng: "Jun" eng: "Jun"
voice: "June" voice: "June"
new: "Xuñ" new: "Xuñ"
id: LANG_MONTH_JULY id: LANG_MONTH_JULY
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -857,7 +857,7 @@ id: LANG_BATTERY_DISPLAY
desc: Battery type title desc: Battery type title
eng: "Battery Display" eng: "Battery Display"
voice: "Battery Display" voice: "Battery Display"
new: "Amosar Batería" new: "Amosar Batería"
id: LANG_VOLUME_DISPLAY id: LANG_VOLUME_DISPLAY
desc: Volume type title desc: Volume type title
@ -869,13 +869,13 @@ id: LANG_DISPLAY_GRAPHIC
desc: Label for type of icon display desc: Label for type of icon display
eng: "Graphic" eng: "Graphic"
voice: "Graphic" voice: "Graphic"
new: "Gráfico" new: "Gráfico"
id: LANG_DISPLAY_NUMERIC id: LANG_DISPLAY_NUMERIC
desc: Label for type of icon display desc: Label for type of icon display
eng: "Numeric" eng: "Numeric"
voice: "Numeric" voice: "Numeric"
new: "Numérico" new: "Numérico"
id: LANG_PM_PERFORMANCE id: LANG_PM_PERFORMANCE
desc: in the peak meter menu desc: in the peak meter menu
@ -893,7 +893,7 @@ id: LANG_PM_ENERGY_SAVER
desc: in the peak meter menu desc: in the peak meter menu
eng: "Save Energy" eng: "Save Energy"
voice: "Save Energy" voice: "Save Energy"
new: "Aforrar Enerxía" new: "Aforrar Enerxía"
id: LANG_PM_SCALE id: LANG_PM_SCALE
desc: in the peak meter menu desc: in the peak meter menu
@ -905,7 +905,7 @@ id: LANG_PM_DBFS
desc: in the peak meter menu desc: in the peak meter menu
eng: "Logarithmic(dB)" eng: "Logarithmic(dB)"
voice: "Logarithmic decibel" voice: "Logarithmic decibel"
new: "Logarítmico(dB)" new: "Logarítmico(dB)"
id: LANG_PM_LINEAR id: LANG_PM_LINEAR
desc: in the peak meter menu desc: in the peak meter menu
@ -917,25 +917,25 @@ id: LANG_PM_MIN
desc: in the peak meter menu desc: in the peak meter menu
eng: "Minimum Of Range" eng: "Minimum Of Range"
voice: "Minimum Of Range" voice: "Minimum Of Range"
new: "Mínimo do Rango" new: "Mínimo do Rango"
id: LANG_PM_MAX id: LANG_PM_MAX
desc: in the peak meter menu desc: in the peak meter menu
eng: "Maximum Of Range" eng: "Maximum Of Range"
voice: "Maximum Of Range" voice: "Maximum Of Range"
new: "Máximo do Rango" new: "Máximo do Rango"
id: LANG_RECORDING id: LANG_RECORDING
desc: in the main menu desc: in the main menu
eng: "Recording" eng: "Recording"
voice: "Recording" voice: "Recording"
new: "Gravación" new: "Gravación"
id: LANG_RECORDING_GAIN id: LANG_RECORDING_GAIN
desc: in the recording screen desc: in the recording screen
eng: "Gain" eng: "Gain"
voice: "" voice: ""
new: "Gañanza" new: "Gañanza"
id: LANG_RECORDING_LEFT id: LANG_RECORDING_LEFT
desc: in the recording screen desc: in the recording screen
@ -983,7 +983,7 @@ id: LANG_RECORDING_SRC_LINE
desc: in the recording settings desc: in the recording settings
eng: "Line In" eng: "Line In"
voice: "Line In" voice: "Line In"
new: "Entrada Analóxica" new: "Entrada Analóxica"
id: LANG_RECORDING_SRC_DIGITAL id: LANG_RECORDING_SRC_DIGITAL
desc: in the recording settings desc: in the recording settings
@ -995,7 +995,7 @@ id: LANG_RECORDING_SETTINGS
desc: in the main menu desc: in the main menu
eng: "Recording Settings" eng: "Recording Settings"
voice: "Recording Settings" voice: "Recording Settings"
new: "Opcións de Gravación" new: "Opcións de Gravación"
id: LANG_DISK_STAT id: LANG_DISK_STAT
desc: DEPRECATED desc: DEPRECATED
@ -1019,7 +1019,7 @@ id: LANG_FILTER_PLAYLIST
desc: show only playlist desc: show only playlist
eng: "Playlists" eng: "Playlists"
voice: "Playlists" voice: "Playlists"
new: "Listas de Reprodución" new: "Listas de Reprodución"
id: LANG_BATTERY_TIME id: LANG_BATTERY_TIME
desc: battery level in % and estimated time remaining desc: battery level in % and estimated time remaining
@ -1043,7 +1043,7 @@ id: LANG_BIDIR_SCROLL
desc: Bidirectional scroll limit desc: Bidirectional scroll limit
eng: "Bidirectional Scroll Limit" eng: "Bidirectional Scroll Limit"
voice: "Bidirectional Scroll Limit" voice: "Bidirectional Scroll Limit"
new: "Límite de despraz. bidireccional" new: "Límite de despraz. bidireccional"
id: LANG_SCROLL_DELAY id: LANG_SCROLL_DELAY
desc: Delay before scrolling desc: Delay before scrolling
@ -1055,13 +1055,13 @@ id: LANG_SCROLL_STEP
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size" eng: "Scroll Step Size"
voice: "Scroll Step Size" voice: "Scroll Step Size"
new: "Tamaño do paso de Despraz." new: "Tamaño do paso de Despraz."
id: LANG_SCROLL_STEP_EXAMPLE id: LANG_SCROLL_STEP_EXAMPLE
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size Setting Example Text" eng: "Scroll Step Size Setting Example Text"
voice: "" voice: ""
new: "Texto de exemplo do tamaño de paso de desprazamento" new: "Texto de exemplo do tamaño de paso de desprazamento"
id: LANG_SCROLL_SPEED id: LANG_SCROLL_SPEED
desc: in display_settings_menu() desc: in display_settings_menu()
@ -1079,19 +1079,19 @@ id: LANG_BATTERY_TOPOFF_CHARGE
desc: in info display, shows that top off charge is running desc: in info display, shows that top off charge is running
eng: "Battery: Top-Off Chg" eng: "Battery: Top-Off Chg"
voice: "" voice: ""
new: "Batería: Tope-de-Carga" new: "Batería: Tope-de-Carga"
id: LANG_BATTERY_TRICKLE_CHARGE id: LANG_BATTERY_TRICKLE_CHARGE
desc: in info display, shows that trickle charge is running desc: in info display, shows that trickle charge is running
eng: "Battery: Trickle Chg" eng: "Battery: Trickle Chg"
voice: "" voice: ""
new: "Batería: Trickle Chg" new: "Batería: Trickle Chg"
id: LANG_BATTERY_CAPACITY id: LANG_BATTERY_CAPACITY
desc: in settings_menu desc: in settings_menu
eng: "Battery Capacity" eng: "Battery Capacity"
voice: "Battery Capacity" voice: "Battery Capacity"
new: "Capacidade da Batería" new: "Capacidade da Batería"
id: LANG_MENU_SETTING_CANCEL id: LANG_MENU_SETTING_CANCEL
desc: Visual confirmation of canceling a changed setting desc: Visual confirmation of canceling a changed setting
@ -1115,7 +1115,7 @@ id: LANG_REALLY_DELETE
desc: Really Delete? desc: Really Delete?
eng: "Delete?" eng: "Delete?"
voice: "" voice: ""
new: "¿Borrar?" new: "¿Borrar?"
id: LANG_DELETED id: LANG_DELETED
desc: A file has beed deleted desc: A file has beed deleted
@ -1175,7 +1175,7 @@ id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist
eng: "Create Playlist" eng: "Create Playlist"
voice: "Create Playlist" voice: "Create Playlist"
new: "Crear Lista de Reproducción" new: "Crear Lista de Reproducción"
id: LANG_CREATING id: LANG_CREATING
desc: Screen feedback during playlist creation desc: Screen feedback during playlist creation
@ -1217,7 +1217,7 @@ id: LANG_ID3_GENRE
desc: ID3 frame 'genre' desc: ID3 frame 'genre'
eng: "[Genre]" eng: "[Genre]"
voice: "" voice: ""
new: "[Xénero]" new: "[Xénero]"
id: LANG_ID3_YEAR id: LANG_ID3_YEAR
desc: ID3 info 'year' desc: ID3 info 'year'
@ -1241,13 +1241,13 @@ id: LANG_RECORDING_SIZE
desc: Display of recorded file size desc: Display of recorded file size
eng: "Size:" eng: "Size:"
voice: "" voice: ""
new: "Tamaño:" new: "Tamaño:"
id: LANG_SETTINGS_LOADED1 id: LANG_SETTINGS_LOADED1
desc: Feedback shown when a .cfg file is loaded desc: Feedback shown when a .cfg file is loaded
eng: "Settings" eng: "Settings"
voice: "" voice: ""
new: "Optións" new: "Optións"
id: LANG_SETTINGS_LOADED2 id: LANG_SETTINGS_LOADED2
desc: Feedback shown when a .cfg file is loaded desc: Feedback shown when a .cfg file is loaded
@ -1259,7 +1259,7 @@ id: LANG_FADE_ON_STOP
desc: options menu to set fade on stop or pause desc: options menu to set fade on stop or pause
eng: "Fade On Stop/Pause" eng: "Fade On Stop/Pause"
voice: "Fade On Stop and Pause" voice: "Fade On Stop and Pause"
new: "Fade ó Parar/Pausar" new: "Fade ó Parar/Pausar"
id: LANG_SOKOBAN_ON id: LANG_SOKOBAN_ON
desc: DEPRECATED desc: DEPRECATED
@ -1337,7 +1337,7 @@ id: LANG_INVERT_CURSOR
desc: in settings_menu desc: in settings_menu
eng: "Line Selector" eng: "Line Selector"
voice: "Line Selector" voice: "Line Selector"
new: "Selector de liña" new: "Selector de liña"
id: LANG_RECORDING_EDITABLE id: LANG_RECORDING_EDITABLE
desc: Editable recordings setting desc: Editable recordings setting
@ -1361,7 +1361,7 @@ id: LANG_CAPTION_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Caption backlight" eng: "Caption backlight"
voice: "Caption backlight" voice: "Caption backlight"
new: "Iluminación ó iniciar MP3" new: "Iluminación ó iniciar MP3"
id: LANG_INVERT_CURSOR_POINTER id: LANG_INVERT_CURSOR_POINTER
desc: in settings_menu desc: in settings_menu
@ -1391,13 +1391,13 @@ id: LANG_MAX_FILES_IN_DIR
desc: in settings_menu desc: in settings_menu
eng: "Max files in dir browser" eng: "Max files in dir browser"
voice: "Max files in directory browser" voice: "Max files in directory browser"
new: "Máx arquivos no visor de directorios" new: "Máx arquivos no visor de directorios"
id: LANG_MAX_FILES_IN_PLAYLIST id: LANG_MAX_FILES_IN_PLAYLIST
desc: in settings_menu desc: in settings_menu
eng: "Max playlist size" eng: "Max playlist size"
voice: "Max playlist size" voice: "Max playlist size"
new: "Tamaño Max da lista de reproducción" new: "Tamaño Max da lista de reproducción"
id: LANG_JUMP_SCROLL id: LANG_JUMP_SCROLL
desc: (player) menu altarnative for jump scroll desc: (player) menu altarnative for jump scroll
@ -1433,7 +1433,7 @@ id: LANG_RECORD_TIMESPLIT_REC
desc: Display of record timer interval setting, on the record screen desc: Display of record timer interval setting, on the record screen
eng: "Split time:" eng: "Split time:"
voice: "" voice: ""
new: "Tempo de División" new: "Tempo de División"
id: LANG_SHOW_ICONS id: LANG_SHOW_ICONS
desc: in settings_menu desc: in settings_menu
@ -1485,7 +1485,7 @@ id: LANG_PLUGIN_WRONG_VERSION
desc: The plugin is not compatible with the rockbox version trying to run it desc: The plugin is not compatible with the rockbox version trying to run it
eng: "Incompatible version" eng: "Incompatible version"
voice: "" voice: ""
new: "Versión Incompatible" new: "Versión Incompatible"
id: LANG_PLUGIN_ERROR id: LANG_PLUGIN_ERROR
desc: The plugin return an error code desc: The plugin return an error code
@ -1507,13 +1507,13 @@ id: LANG_REBOOT_NOW
desc: Do you want to reboot? desc: Do you want to reboot?
eng: "Reboot now?" eng: "Reboot now?"
voice: "" voice: ""
new: "¿Reiniciar agora?" new: "¿Reiniciar agora?"
id: LANG_QUEUE_LAST id: LANG_QUEUE_LAST
desc: in onplay menu. queue a track/playlist at end of playlist. desc: in onplay menu. queue a track/playlist at end of playlist.
eng: "Queue last" eng: "Queue last"
voice: "Queue last" voice: "Queue last"
new: "Poñer último na cola" new: "Poñer último na cola"
id: LANG_INSERT id: LANG_INSERT
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
@ -1525,19 +1525,19 @@ id: LANG_INSERT_LAST
desc: in onplay menu. append a track/playlist into dynamic playlist. desc: in onplay menu. append a track/playlist into dynamic playlist.
eng: "Insert last" eng: "Insert last"
voice: "Insert last" voice: "Insert last"
new: "Insertar de último" new: "Insertar de último"
id: LANG_QUEUE_FIRST id: LANG_QUEUE_FIRST
desc: in onplay menu. queue a track/playlist into dynamic playlist. desc: in onplay menu. queue a track/playlist into dynamic playlist.
eng: "Queue next" eng: "Queue next"
voice: "Queue next" voice: "Queue next"
new: "Poñer seguinte na cola" new: "Poñer seguinte na cola"
id: LANG_INSERT_FIRST id: LANG_INSERT_FIRST
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert next" eng: "Insert next"
voice: "Insert next" voice: "Insert next"
new: "Insertar como próximo" new: "Insertar como próximo"
id: LANG_SAVE_DYNAMIC_PLAYLIST id: LANG_SAVE_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
@ -1549,7 +1549,7 @@ id: LANG_PLAYLIST_MENU
desc: in main menu. desc: in main menu.
eng: "Playlist Options" eng: "Playlist Options"
voice: "Playlist Options" voice: "Playlist Options"
new: "Opcións da lista de reproducción" new: "Opcións da lista de reproducción"
id: LANG_PLAYLIST_INSERT_COUNT id: LANG_PLAYLIST_INSERT_COUNT
desc: splash number of tracks inserted desc: splash number of tracks inserted
@ -1591,7 +1591,7 @@ id: LANG_PLAYLIST_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist file" eng: "Error accessing playlist file"
voice: "" voice: ""
new: "Erro acedendo o arquivo da lista de reproducción" new: "Erro acedendo o arquivo da lista de reproducción"
id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR
desc: Playlist error desc: Playlist error
@ -1621,7 +1621,7 @@ id: LANG_RECURSE_DIRECTORY_QUESTION
desc: Asked from onplay screen desc: Asked from onplay screen
eng: "Recursively?" eng: "Recursively?"
voice: "" voice: ""
new: "¿Recursivamente?" new: "¿Recursivamente?"
id: LANG_CUSTOM_FONT id: LANG_CUSTOM_FONT
desc: in setting_menu() desc: in setting_menu()
@ -1651,7 +1651,7 @@ id: LANG_CUSTOM_CFG
desc: in setting_menu() desc: in setting_menu()
eng: "Browse .cfg files" eng: "Browse .cfg files"
voice: "Browse configuration files" voice: "Browse configuration files"
new: "Visualizar arquivos de configuración" new: "Visualizar arquivos de configuración"
id: LANG_PLUGINS id: LANG_PLUGINS
desc: in main_menu() desc: in main_menu()
@ -1669,7 +1669,7 @@ id: LANG_LINE_IN
desc: in settings_menu desc: in settings_menu
eng: "Line In" eng: "Line In"
voice: "Line In" voice: "Line In"
new: "Entrada de liña" new: "Entrada de liña"
id: LANG_NO_FILES id: LANG_NO_FILES
desc: in settings_menu desc: in settings_menu
@ -1681,13 +1681,13 @@ id: LANG_BUTTONBAR_MENU
desc: in button bar desc: in button bar
eng: "Menu" eng: "Menu"
voice: "" voice: ""
new: "Menú" new: "Menú"
id: LANG_FM_BUTTONBAR_PRESETS id: LANG_FM_BUTTONBAR_PRESETS
desc: in button bar desc: in button bar
eng: "Preset" eng: "Preset"
voice: "" voice: ""
new: "Presintonía" new: "Presintonía"
id: LANG_FM_SAVE_PRESET id: LANG_FM_SAVE_PRESET
desc: DEPRECATED desc: DEPRECATED
@ -1699,19 +1699,19 @@ id: LANG_FM_DELETE_PRESET
desc: in radio screen desc: in radio screen
eng: "Remove preset" eng: "Remove preset"
voice: "" voice: ""
new: "Borrar presintonía" new: "Borrar presintonía"
id: LANG_FM_STATION id: LANG_FM_STATION
desc: in radio screen desc: in radio screen
eng: "Station: %d.%dMHz" eng: "Station: %d.%dMHz"
voice: "" voice: ""
new: "Estación: %d.%dMHz" new: "Estación: %d.%dMHz"
id: LANG_FM_PRESET_SAVE_FAILED id: LANG_FM_PRESET_SAVE_FAILED
desc: in radio screen desc: in radio screen
eng: "Preset save failed" eng: "Preset save failed"
voice: "" voice: ""
new: "Fallo o gardar a presintonía" new: "Fallo o gardar a presintonía"
id: LANG_FM_NO_PRESETS id: LANG_FM_NO_PRESETS
desc: DEPRECATED desc: DEPRECATED
@ -1735,7 +1735,7 @@ id: LANG_FM_BUTTONBAR_RECORD
desc: in main menu desc: in main menu
eng: "Record" eng: "Record"
voice: "" voice: ""
new: "Gravación" new: "Gravación"
id: LANG_VIEW_DYNAMIC_PLAYLIST id: LANG_VIEW_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
@ -1765,26 +1765,26 @@ id: LANG_RECORD_PRERECORD
desc: in recording and radio screen desc: in recording and radio screen
eng: "Prerecording" eng: "Prerecording"
voice: "" voice: ""
new: "Pregravación" new: "Pregravación"
id: LANG_RECORD_PRERECORD_TIME id: LANG_RECORD_PRERECORD_TIME
desc: in recording settings_menu desc: in recording settings_menu
eng: "Prerecord time" eng: "Prerecord time"
voice: "Pre-Record time" voice: "Pre-Record time"
new: "Tempo de Pre-gravación" new: "Tempo de Pre-gravación"
#Auto bookmark prompts #Auto bookmark prompts
id: LANG_BOOKMARK_AUTOLOAD_QUERY id: LANG_BOOKMARK_AUTOLOAD_QUERY
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
voice: "" voice: ""
eng: "Load Last Bookmark?" eng: "Load Last Bookmark?"
new: "¿Cargar o último marcador?" new: "¿Cargar o último marcador?"
id: LANG_AUTO_BOOKMARK_QUERY id: LANG_AUTO_BOOKMARK_QUERY
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
voice: "" voice: ""
eng: "Create a Bookmark?" eng: "Create a Bookmark?"
new: "¿Crear un marcador?" new: "¿Crear un marcador?"
# Bookmark Select Menu Text # Bookmark Select Menu Text
id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS
@ -1860,7 +1860,7 @@ id: LANG_BOOKMARK_SETTINGS_AUTOLOAD
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark" eng: "Load Last Bookmark"
voice: "Load Last Bookmark" voice: "Load Last Bookmark"
new: "Cargar o último marcador" new: "Cargar o último marcador"
id: LANG_BOOKMARK_SETTINGS_AUTOCREATE id: LANG_BOOKMARK_SETTINGS_AUTOCREATE
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
@ -1872,7 +1872,7 @@ id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
desc: Configuration option to maintain a list of recent bookmarks desc: Configuration option to maintain a list of recent bookmarks
eng: "Maintain a List of Recent Bookmarks?" eng: "Maintain a List of Recent Bookmarks?"
voice: "Maintain a List of Recent Bookmarks?" voice: "Maintain a List of Recent Bookmarks?"
new: "¿Manter unha lista de marcadores recentes?" new: "¿Manter unha lista de marcadores recentes?"
id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
@ -1928,7 +1928,7 @@ id: LANG_RECORDING_MENU
desc: in the recording sub menu desc: in the recording sub menu
eng: "Recording screen" eng: "Recording screen"
voice: "Recording screen" voice: "Recording screen"
new: "Pantalla de Gravación" new: "Pantalla de Gravación"
id: LANG_WIND_MENU id: LANG_WIND_MENU
desc: in the playback sub menu desc: in the playback sub menu
@ -1952,7 +1952,7 @@ id: LANG_BATTERY_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Battery" eng: "Battery"
voice: "Battery" voice: "Battery"
new: "Batería" new: "Batería"
id: LANG_DISK_MENU id: LANG_DISK_MENU
desc: in the system sub menu desc: in the system sub menu
@ -1971,7 +1971,7 @@ id: LANG_LIMITS_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Limits" eng: "Limits"
voice: "Limits" voice: "Limits"
new: "Límites" new: "Límites"
id: LANG_MANAGE_MENU id: LANG_MANAGE_MENU
desc: in the system sub menu desc: in the system sub menu
@ -2037,7 +2037,7 @@ id: LANG_FILE_OPTIONS
desc: in playlist viewer on+play menu desc: in playlist viewer on+play menu
eng: "File Options" eng: "File Options"
voice: "File Options" voice: "File Options"
new: "Opcións de arquivo" new: "Opcións de arquivo"
id: LANG_BUTTON_BAR id: LANG_BUTTON_BAR
desc: in settings menu desc: in settings menu
@ -2055,7 +2055,7 @@ id: LANG_DIRBROWSE_F2
desc: in dir browser, F2 button bar text desc: in dir browser, F2 button bar text
eng: "Option" eng: "Option"
voice: "" voice: ""
new: "Opción" new: "Opción"
id: LANG_DIRBROWSE_F3 id: LANG_DIRBROWSE_F3
desc: in dir browser, F3 button bar text desc: in dir browser, F3 button bar text
@ -2401,7 +2401,7 @@ id: LANG_VOICE_NUMBER
desc: "talkbox" mode for files+directories desc: "talkbox" mode for files+directories
eng: "Numbers" eng: "Numbers"
voice: "Numbers" voice: "Numbers"
new: "Números" new: "Números"
id: LANG_VOICE_DIR_ENTER id: LANG_VOICE_DIR_ENTER
desc: DEPRECATED desc: DEPRECATED
@ -2702,7 +2702,7 @@ id: LANG_SORT_ALPHA
desc: browser sorting setting desc: browser sorting setting
eng: "Alphabetical" eng: "Alphabetical"
voice: "Alphabetical" voice: "Alphabetical"
new: "Alfanumérico" new: "Alfanumérico"
id: LANG_SORT_DATE id: LANG_SORT_DATE
desc: browser sorting setting desc: browser sorting setting
@ -2726,7 +2726,7 @@ id: LANG_FM_EDIT_PRESET
desc: in radio screen desc: in radio screen
eng: "Edit preset" eng: "Edit preset"
voice: "" voice: ""
new: "Editar presintonía" new: "Editar presintonía"
id: LANG_FM_MONO_MODE id: LANG_FM_MONO_MODE
desc: in radio screen desc: in radio screen
@ -2750,13 +2750,13 @@ id: LANG_FM_BUTTONBAR_ADD
desc: in radio screen desc: in radio screen
eng: "Add" eng: "Add"
voice: "" voice: ""
new: "Añadir" new: "Añadir"
id: LANG_FM_BUTTONBAR_ACTION id: LANG_FM_BUTTONBAR_ACTION
desc: in radio screen desc: in radio screen
eng: "Action" eng: "Action"
voice: "" voice: ""
new: "Acción" new: "Acción"
id: LANG_MDB_STRENGTH id: LANG_MDB_STRENGTH
desc: in sound settings desc: in sound settings
@ -2822,13 +2822,13 @@ id: LANG_ID3_V1_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V1 then V2" eng: "V1 then V2"
voice: "Version 1 then version 2" voice: "Version 1 then version 2"
new: "Versión 1 entonces versión 2" new: "Versión 1 entonces versión 2"
id: LANG_ID3_V2_FIRST id: LANG_ID3_V2_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V2 then V1" eng: "V2 then V1"
voice: "Version 2 then version 1" voice: "Version 2 then version 1"
new: "Versión 2 entonces version 1" new: "Versión 2 entonces version 1"
id: LANG_NO_ROCKBOX_DIR id: LANG_NO_ROCKBOX_DIR
desc: in browse root desc: in browse root
@ -2840,7 +2840,7 @@ id: LANG_INSTALLATION_INCOMPLETE
desc: in browse root desc: in browse root
eng: "Installation incomplete" eng: "Installation incomplete"
voice: "" voice: ""
new: "Intalación incompleta" new: "Intalación incompleta"
id: LANG_REMOVE_MMC id: LANG_REMOVE_MMC
desc: before acknowledging usb in case an MMC is inserted (Ondio) desc: before acknowledging usb in case an MMC is inserted (Ondio)
@ -2930,7 +2930,7 @@ id: LANG_BATTERY_TYPE
desc: in battery settings desc: in battery settings
eng: "Battery Type" eng: "Battery Type"
voice: "Battery type" voice: "Battery type"
new: "Tipo de batería" new: "Tipo de batería"
id: LANG_BATTERY_TYPE_ALKALINE id: LANG_BATTERY_TYPE_ALKALINE
desc: in battery settings desc: in battery settings
@ -3002,7 +3002,7 @@ id: LANG_RECORD_STARTUP
desc: Start Rockbox in Recording screen desc: Start Rockbox in Recording screen
eng: "Show recording screen on startup" eng: "Show recording screen on startup"
voice: "Show recording screen on startup" voice: "Show recording screen on startup"
new: "Ve la pantalla de gravación no comenzo" new: "Ve la pantalla de gravación no comenzo"
id: LANG_ALARM_MOD_DISABLE id: LANG_ALARM_MOD_DISABLE
desc: Announce that the RTC alarm has been turned off desc: Announce that the RTC alarm has been turned off
@ -3045,7 +3045,7 @@ id: LANG_RECORD_STOP_GAP
desc: in recording settings_menu desc: in recording settings_menu
eng: "Presplit gap" eng: "Presplit gap"
voice: voice:
new: "Espacio Predivisión" new: "Espacio Predivisión"
id: LANG_RECORD_TRIGGER_MODE id: LANG_RECORD_TRIGGER_MODE
desc: in recording settings_menu desc: in recording settings_menu
@ -3111,13 +3111,13 @@ id: LANG_BACKLIGHT_FADE_IN
desc: in settings_menu desc: in settings_menu
eng: "Backlight fade in" eng: "Backlight fade in"
voice: "Backlight fade in" voice: "Backlight fade in"
new: "Incrementar Iluminación" new: "Incrementar Iluminación"
id: LANG_BACKLIGHT_FADE_OUT id: LANG_BACKLIGHT_FADE_OUT
desc: in settings_menu desc: in settings_menu
eng: "Backlight fade out" eng: "Backlight fade out"
voice: "Backlight fade out" voice: "Backlight fade out"
new: "Decrementar Iluminación" new: "Decrementar Iluminación"
id: LANG_SHUFFLE_PLAYLIST id: LANG_SHUFFLE_PLAYLIST
desc: in playlist menu, reshuffles the order in which songs are played desc: in playlist menu, reshuffles the order in which songs are played
@ -3141,7 +3141,7 @@ id: LANG_SPDIF_ENABLE
desc: in playback settings menu. enable/disable the optical out desc: in playback settings menu. enable/disable the optical out
eng: "Optical output" eng: "Optical output"
voice: "Optical output" voice: "Optical output"
new: "Saida óptica" new: "Saida óptica"
id: LANG_NEXT_FOLDER id: LANG_NEXT_FOLDER
desc: in settings_menu. Should we move to next folder when current one ends desc: in settings_menu. Should we move to next folder when current one ends
@ -3153,16 +3153,16 @@ id: LANG_RUNTIMEDB_ACTIVE
desc: in settings_menu. desc: in settings_menu.
eng: "Gather runtime data (experimental)" eng: "Gather runtime data (experimental)"
voice: "Gather runtime data" voice: "Gather runtime data"
new: "Recoller datos en tempo de execución" new: "Recoller datos en tempo de execución"
id: LANG_MENU_SET_RATING id: LANG_MENU_SET_RATING
desc: in wps context menu desc: in wps context menu
eng: "Set song rating" eng: "Set song rating"
voice: "Set song rating" voice: "Set song rating"
new: "Establecer a evaluación da canción" new: "Establecer a evaluación da canción"
id: LANG_RATING id: LANG_RATING
desc: in set_rating desc: in set_rating
eng: "Rating:" eng: "Rating:"
voice "Rating" voice "Rating"
new: "Evaluación:" new: "Evaluación:"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -177,7 +177,7 @@ id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
eng: "Scroll Speed Setting Example" eng: "Scroll Speed Setting Example"
voice: voice:
new: "Esempio velocità scorrimento impostata" new: "Esempio velocità scorrimento impostata"
id: LANG_DISCHARGE id: LANG_DISCHARGE
desc: DEPRECATED desc: DEPRECATED
@ -375,7 +375,7 @@ id: LANG_SHOWDIR_ERROR_FULL
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
eng: "Is Full!" eng: "Is Full!"
voice: voice:
new: "è pieno!" new: "è pieno!"
id: LANG_RESUME_ASK id: LANG_RESUME_ASK
desc: DEPRECATED desc: DEPRECATED
@ -537,7 +537,7 @@ id: LANG_PITCH_DOWN
desc: in wps desc: in wps
eng: "Pitch Down" eng: "Pitch Down"
voice: voice:
new: "Tono giù" new: "Tono giù"
id: LANG_PAUSE id: LANG_PAUSE
desc: in wps desc: in wps
@ -584,8 +584,8 @@ new: "Fine della playlist"
id: LANG_POWEROFF_IDLE id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
eng: "Idle Poweroff" eng: "Idle Poweroff"
voice: "Spegnimento per Inattività" voice: "Spegnimento per Inattività"
new: "Spegnimento per inattività" new: "Spegnimento per inattività"
id: LANG_LANGUAGE_LOADED id: LANG_LANGUAGE_LOADED
desc: shown when a language has been loaded from the dir browser desc: shown when a language has been loaded from the dir browser
@ -662,8 +662,8 @@ new: "Eterno"
id: LANG_PM_UNITS_PER_READ id: LANG_PM_UNITS_PER_READ
desc: in the peak meter menu desc: in the peak meter menu
eng: "Units Per Read" eng: "Units Per Read"
voice: "Unità per lettura" voice: "Unità per lettura"
new: "Unità per lettura" new: "Unità per lettura"
id: LANG_BACKLIGHT_ON_WHEN_CHARGING id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
@ -938,8 +938,8 @@ new: "Destro"
id: LANG_RECORDING_QUALITY id: LANG_RECORDING_QUALITY
desc: in the recording settings desc: in the recording settings
eng: "Quality" eng: "Quality"
voice: "Qualità" voice: "Qualità"
new: "Qualità" new: "Qualità"
id: LANG_RECORDING_FREQUENCY id: LANG_RECORDING_FREQUENCY
desc: in the recording settings desc: in the recording settings
@ -1052,8 +1052,8 @@ new: "Testo d'esempio per il passo di scorrimento corrente"
id: LANG_SCROLL_SPEED id: LANG_SCROLL_SPEED
desc: in display_settings_menu() desc: in display_settings_menu()
eng: "Scroll Speed" eng: "Scroll Speed"
voice: "Velocità Scorrimento" voice: "Velocità Scorrimento"
new: "Velocità scorrimento" new: "Velocità scorrimento"
id: LANG_TRICKLE_CHARGE id: LANG_TRICKLE_CHARGE
desc: DEPRECATED desc: DEPRECATED
@ -1076,8 +1076,8 @@ new: "Batteria: Mantenimento carica"
id: LANG_BATTERY_CAPACITY id: LANG_BATTERY_CAPACITY
desc: in settings_menu desc: in settings_menu
eng: "Battery Capacity" eng: "Battery Capacity"
voice: "Capacità Batteria" voice: "Capacità Batteria"
new: "Capacità batteria" new: "Capacità batteria"
id: LANG_MENU_SETTING_CANCEL id: LANG_MENU_SETTING_CANCEL
desc: Visual confirmation of canceling a changed setting desc: Visual confirmation of canceling a changed setting
@ -1149,7 +1149,7 @@ id: LANG_ALARM_MOD_ERROR
desc: The text that tells that the time is incorrect (for the RTC alarm mod). desc: The text that tells that the time is incorrect (for the RTC alarm mod).
eng: "Alarm Time Is Too Soon!" eng: "Alarm Time Is Too Soon!"
voice: voice:
new: "L'orario impostato è troppo vicino!" new: "L'orario impostato è troppo vicino!"
id: LANG_ALARM_MOD_KEYS id: LANG_ALARM_MOD_KEYS
desc: Shown key functions in alarm menu (for the RTC alarm mod). desc: Shown key functions in alarm menu (for the RTC alarm mod).
@ -1648,8 +1648,8 @@ new: "Avvia plugins"
id: LANG_CAR_ADAPTER_MODE id: LANG_CAR_ADAPTER_MODE
desc: Displayed for setting car adapter mode to on/off desc: Displayed for setting car adapter mode to on/off
eng: "Car Adapter Mode" eng: "Car Adapter Mode"
voice: "Modalità Adattatore Auto" voice: "Modalità Adattatore Auto"
new: "Modalità adattatore auto" new: "Modalità adattatore auto"
id: LANG_LINE_IN id: LANG_LINE_IN
desc: in settings_menu desc: in settings_menu
@ -1667,7 +1667,7 @@ id: LANG_BUTTONBAR_MENU
desc: in button bar desc: in button bar
eng: "Menu" eng: "Menu"
voice: "" voice: ""
new: "Menù" new: "Menù"
id: LANG_FM_BUTTONBAR_PRESETS id: LANG_FM_BUTTONBAR_PRESETS
desc: in button bar desc: in button bar
@ -1709,7 +1709,7 @@ id: LANG_FM_NO_FREE_PRESETS
desc: in radio screen desc: in radio screen
eng: "The preset list is full" eng: "The preset list is full"
voice: "" voice: ""
new: "La lista delle stazioni è piena" new: "La lista delle stazioni è piena"
id: LANG_FM_RADIO id: LANG_FM_RADIO
desc: in main menu desc: in main menu
@ -2027,7 +2027,7 @@ id: LANG_DIRBROWSE_F1
desc: in dir browser, F1 button bar text desc: in dir browser, F1 button bar text
eng: "Menu" eng: "Menu"
voice: "" voice: ""
new: "Menù" new: "Menù"
id: LANG_DIRBROWSE_F2 id: LANG_DIRBROWSE_F2
desc: in dir browser, F2 button bar text desc: in dir browser, F2 button bar text
@ -2242,7 +2242,7 @@ new:
id: VOICE_PLUS id: VOICE_PLUS
desc: spoken only, for composing numbers desc: spoken only, for composing numbers
eng: "" eng: ""
voice: "più" voice: "più"
new: new:
id: VOICE_POINT id: VOICE_POINT
@ -2356,8 +2356,8 @@ new: "Voce"
id: LANG_VOICE_MENU id: LANG_VOICE_MENU
desc: item of voice menu, enable/disable the voice UI desc: item of voice menu, enable/disable the voice UI
eng: "Voice Menus" eng: "Voice Menus"
voice: "Pronuncia Menù" voice: "Pronuncia Menù"
new: "Pronuncia menù" new: "Pronuncia menù"
id: LANG_VOICE_DIR id: LANG_VOICE_DIR
desc: item of voice menu, set the "talkbox" mode for directories desc: item of voice menu, set the "talkbox" mode for directories
@ -2686,8 +2686,8 @@ new: "Per data"
id: LANG_SORT_DATE_REVERSE id: LANG_SORT_DATE_REVERSE
desc: browser sorting setting desc: browser sorting setting
eng: "by newest date" eng: "by newest date"
voice: "dal più recente" voice: "dal più recente"
new: "Dal più recente" new: "Dal più recente"
id: LANG_SORT_TYPE id: LANG_SORT_TYPE
desc: browser sorting setting desc: browser sorting setting
@ -2734,8 +2734,8 @@ new: "Azione"
id: LANG_MDB_STRENGTH id: LANG_MDB_STRENGTH
desc: in sound settings desc: in sound settings
eng: "MDB Strength" eng: "MDB Strength"
voice: "Intensità MDB" voice: "Intensità MDB"
new: "Intensità MDB" new: "Intensità MDB"
id: LANG_MDB_HARMONICS id: LANG_MDB_HARMONICS
desc: in sound settings desc: in sound settings
@ -2788,8 +2788,8 @@ new: "Premere OFF per spegnere"
id: LANG_ID3_ORDER id: LANG_ID3_ORDER
desc: in playback settings screen desc: in playback settings screen
eng: "ID3 tag priority" eng: "ID3 tag priority"
voice: "Priorità ID3 tag" voice: "Priorità ID3 tag"
new: "Priorità info ID3" new: "Priorità info ID3"
id: LANG_ID3_V1_FIRST id: LANG_ID3_V1_FIRST
desc: in playback settings screen desc: in playback settings screen

View File

@ -1168,7 +1168,7 @@ id: LANG_CREATING
desc: Screen feedback during playlist creation desc: Screen feedback during playlist creation
eng: "Creating" eng: "Creating"
voice: "" voice: ""
new: "Creeëren..." new: "Creeëren..."
id: LANG_FADE_ON_STOP id: LANG_FADE_ON_STOP
desc: options menu to set fade on stop or pause desc: options menu to set fade on stop or pause
@ -1365,8 +1365,8 @@ new: ""
id: LANG_INVERT_LCD_INVERSE id: LANG_INVERT_LCD_INVERSE
desc: in settings_menu desc: in settings_menu
eng: "Inverse" eng: "Inverse"
voice: "Geïnverteerd" voice: "Geïnverteerd"
new: "Geïnverteerd" new: "Geïnverteerd"
id: LANG_INVERT_LCD_NORMAL id: LANG_INVERT_LCD_NORMAL
desc: in settings_menu desc: in settings_menu

View File

@ -28,7 +28,7 @@ id: LANG_DEBUG
desc: in the main menu desc: in the main menu
eng: "Debug (Keep Out!)" eng: "Debug (Keep Out!)"
voice: "Debug, keep out!" voice: "Debug, keep out!"
new: "Debug (ikke rør!)" new: "Debug (ikke rør!)"
id: LANG_USB id: LANG_USB
desc: in the main menu desc: in the main menu
@ -112,13 +112,13 @@ id: LANG_TIME_SET
desc: used in set_time() desc: used in set_time()
eng: "ON To Set" eng: "ON To Set"
voice: "" voice: ""
new: "PÅ for å stille" new: "PÅ for å stille"
id: LANG_TIME_REVERT id: LANG_TIME_REVERT
desc: used in set_time() desc: used in set_time()
eng: "OFF To Revert" eng: "OFF To Revert"
voice: "" voice: ""
new: "AV for å tilbakestille" new: "AV for å tilbakestille"
id: LANG_CONTRAST id: LANG_CONTRAST
desc: in settings_menu desc: in settings_menu
@ -130,19 +130,19 @@ id: LANG_SHUFFLE
desc: in settings_menu desc: in settings_menu
eng: "Shuffle" eng: "Shuffle"
voice: "Shuffle" voice: "Shuffle"
new: "Stokk om rekkefølge" new: "Stokk om rekkefølge"
id: LANG_PLAY_SELECTED id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
eng: "Play Selected First" eng: "Play Selected First"
voice: "Play Selected File First" voice: "Play Selected File First"
new: "Spill valgte først" new: "Spill valgte først"
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
eng: "Sort Case Sensitive" eng: "Sort Case Sensitive"
voice: "Sort Case Sensitive" voice: "Sort Case Sensitive"
new: "Sortere små/store bokstaver" new: "Sortere små/store bokstaver"
id: LANG_RESUME id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
@ -160,13 +160,13 @@ id: LANG_RESUME_SETTING_ASK
desc: in settings_menu desc: in settings_menu
eng: "Ask" eng: "Ask"
voice: "Ask" voice: "Ask"
new: "Spør" new: "Spør"
id: LANG_ON id: LANG_ON
desc: Used in a lot of places desc: Used in a lot of places
eng: "On" eng: "On"
voice: "On" voice: "On"
new: "På" new: "På"
id: LANG_BACKLIGHT id: LANG_BACKLIGHT
desc: in settings_menu desc: in settings_menu
@ -196,25 +196,25 @@ id: LANG_SPINDOWN
desc: in settings_menu desc: in settings_menu
eng: "Disk Spindown" eng: "Disk Spindown"
voice: "Disk Spindown" voice: "Disk Spindown"
new: "Slå av harddiskmotor" new: "Slå av harddiskmotor"
id: LANG_FFRW_STEP id: LANG_FFRW_STEP
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Min Step" eng: "FF/RW Min Step"
voice: "Minimum Step" voice: "Minimum Step"
new: "Minimum søkesteg" new: "Minimum søkesteg"
id: LANG_FFRW_ACCEL id: LANG_FFRW_ACCEL
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Accel" eng: "FF/RW Accel"
voice: "Acceleration" voice: "Acceleration"
new: "Søkeaksellerasjon" new: "Søkeaksellerasjon"
id: LANG_FOLLOW id: LANG_FOLLOW
desc: in settings_menu desc: in settings_menu
eng: "Follow Playlist" eng: "Follow Playlist"
voice: "Follow Playlist" voice: "Follow Playlist"
new: "Følg spillelisten" new: "Følg spillelisten"
id: LANG_RESET_ASK_RECORDER id: LANG_RESET_ASK_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
@ -358,7 +358,7 @@ id: LANG_CHANNEL_RIGHT
desc: in sound_settings desc: in sound_settings
eng: "Mono Right" eng: "Mono Right"
voice: "Mono Right" voice: "Mono Right"
new: "Mono høyre" new: "Mono høyre"
id: LANG_AUTOVOL id: LANG_AUTOVOL
desc: in sound_settings desc: in sound_settings
@ -394,25 +394,25 @@ id: LANG_KEYLOCK_ON_PLAYER
desc: displayed when key lock is on desc: displayed when key lock is on
eng: "Key Lock ON" eng: "Key Lock ON"
voice: "" voice: ""
new: "Tastelås PÅ" new: "Tastelås PÅ"
id: LANG_KEYLOCK_OFF_PLAYER id: LANG_KEYLOCK_OFF_PLAYER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock OFF" eng: "Key Lock OFF"
voice: "" voice: ""
new: "Tastelås AV" new: "Tastelås AV"
id: LANG_KEYLOCK_ON_RECORDER id: LANG_KEYLOCK_ON_RECORDER
desc: displayed when key lock is on desc: displayed when key lock is on
eng: "Key Lock Is ON" eng: "Key Lock Is ON"
voice: "" voice: ""
new: "Tastelås er PÅ" new: "Tastelås er PÅ"
id: LANG_KEYLOCK_OFF_RECORDER id: LANG_KEYLOCK_OFF_RECORDER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock Is OFF" eng: "Key Lock Is OFF"
voice: "" voice: ""
new: "Tastelås er AV" new: "Tastelås er AV"
id: LANG_MUTE_ON_PLAYER id: LANG_MUTE_ON_PLAYER
desc: DEPRECATED desc: DEPRECATED
@ -586,13 +586,13 @@ id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
eng: "Idle Poweroff" eng: "Idle Poweroff"
voice: "Idle Poweroff" voice: "Idle Poweroff"
new: "Slå av når ikke i bruk" new: "Slå av når ikke i bruk"
id: LANG_LANGUAGE_LOADED id: LANG_LANGUAGE_LOADED
desc: shown when a language has been loaded from the dir browser desc: shown when a language has been loaded from the dir browser
eng: "New Language" eng: "New Language"
voice: "" voice: ""
new: "Nytt språk" new: "Nytt språk"
id: LANG_FILTER id: LANG_FILTER
desc: setting name for dir filter desc: setting name for dir filter
@ -610,7 +610,7 @@ id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
eng: "Supported" eng: "Supported"
voice: "Supported" voice: "Supported"
new: "Støttede" new: "Støttede"
id: LANG_FILTER_ALL id: LANG_FILTER_ALL
desc: show all files desc: show all files
@ -634,7 +634,7 @@ id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
eng: "Backlight On When Plugged" eng: "Backlight On When Plugged"
voice: "Backlight On When Plugged" voice: "Backlight On When Plugged"
new: "Skjermlys på ved tilkoblet strøm" new: "Skjermlys på ved tilkoblet strøm"
id: LANG_PM_CLIP_HOLD id: LANG_PM_CLIP_HOLD
desc: in the peak meter menu desc: in the peak meter menu
@ -652,7 +652,7 @@ id: LANG_PM_MENU
desc: in the display menu desc: in the display menu
eng: "Peak Meter" eng: "Peak Meter"
voice: "Peak Meter" voice: "Peak Meter"
new: "Toppmåler" new: "Toppmåler"
id: LANG_PM_PEAK_HOLD id: LANG_PM_PEAK_HOLD
desc: in the peak meter menu desc: in the peak meter menu
@ -820,13 +820,13 @@ id: LANG_WEEKDAY_SATURDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Sat" eng: "Sat"
voice: "" voice: ""
new: "Lør" new: "Lør"
id: LANG_WEEKDAY_SUNDAY id: LANG_WEEKDAY_SUNDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Sun" eng: "Sun"
voice: "" voice: ""
new: "Søn" new: "Søn"
id: LANG_WEEKDAY_TUESDAY id: LANG_WEEKDAY_TUESDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -892,13 +892,13 @@ id: LANG_PM_LINEAR
desc: in the peak meter menu desc: in the peak meter menu
eng: "Linear(%)" eng: "Linear(%)"
voice: "Linear percent" voice: "Linear percent"
new: "Lineær(%)" new: "Lineær(%)"
id: LANG_PM_MAX id: LANG_PM_MAX
desc: in the peak meter menu desc: in the peak meter menu
eng: "Maximum Of Range" eng: "Maximum Of Range"
voice: "Maximum Of Range" voice: "Maximum Of Range"
new: "Største verdi" new: "Største verdi"
id: LANG_PM_MIN id: LANG_PM_MIN
desc: in the peak meter menu desc: in the peak meter menu
@ -958,7 +958,7 @@ id: LANG_RECORDING_RIGHT
desc: in the recording screen desc: in the recording screen
eng: "Right" eng: "Right"
voice: "" voice: ""
new: "Høyre" new: "Høyre"
id: LANG_RECORDING_SETTINGS id: LANG_RECORDING_SETTINGS
desc: in the main menu desc: in the main menu
@ -1006,7 +1006,7 @@ id: LANG_POWEROFF
desc: disk poweroff flag desc: disk poweroff flag
eng: "Disk Poweroff" eng: "Disk Poweroff"
voice: "Disk Poweroff" voice: "Disk Poweroff"
new: "Disken slås av" new: "Disken slås av"
id: LANG_BATTERY_TIME id: LANG_BATTERY_TIME
desc: battery level in % and estimated time remaining desc: battery level in % and estimated time remaining
@ -1054,7 +1054,7 @@ id: LANG_SCROLL_DELAY
desc: Delay before scrolling desc: Delay before scrolling
eng: "Scroll Start Delay" eng: "Scroll Start Delay"
voice: "Scroll Start Delay" voice: "Scroll Start Delay"
new: "Pause før rullestart" new: "Pause før rullestart"
id: LANG_SCROLL_SPEED id: LANG_SCROLL_SPEED
desc: in display_settings_menu() desc: in display_settings_menu()
@ -1072,7 +1072,7 @@ id: LANG_SCROLL_STEP_EXAMPLE
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size Setting Example Text" eng: "Scroll Step Size Setting Example Text"
voice: "" voice: ""
new: "Eksempel for å sette rullesteglengde" new: "Eksempel for å sette rullesteglengde"
id: LANG_TRICKLE_CHARGE id: LANG_TRICKLE_CHARGE
desc: DEPRECATED desc: DEPRECATED
@ -1120,7 +1120,7 @@ id: LANG_ALARM_MOD_TIME_TO_GO
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod. desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
eng: "Waking Up In %d:%02d" eng: "Waking Up In %d:%02d"
voice: "" voice: ""
new: "Våkner om %d:%02d" new: "Våkner om %d:%02d"
id: LANG_CREATE_PLAYLIST id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist
@ -1156,7 +1156,7 @@ id: LANG_QUEUE
desc: The verb/action Queue desc: The verb/action Queue
eng: "Queue" eng: "Queue"
voice: "Queue" voice: "Queue"
new: "Legg til i kø" new: "Legg til i kø"
id: LANG_REALLY_DELETE id: LANG_REALLY_DELETE
desc: Really Delete? desc: Really Delete?
@ -1210,7 +1210,7 @@ id: LANG_ID3_YEAR
desc: ID3 info 'year' desc: ID3 info 'year'
eng: "[Year]" eng: "[Year]"
voice: "" voice: ""
new: "[År]" new: "[År]"
id: LANG_MENU_SHOW_ID3_INFO id: LANG_MENU_SHOW_ID3_INFO
desc: Menu option to start id3 viewer desc: Menu option to start id3 viewer
@ -1228,7 +1228,7 @@ id: LANG_RECORDING_SIZE
desc: Display of recorded file size desc: Display of recorded file size
eng: "Size:" eng: "Size:"
voice: "" voice: ""
new: "Størrelse:" new: "Størrelse:"
id: LANG_RECORDING_TIME id: LANG_RECORDING_TIME
desc: Display of recorded time desc: Display of recorded time
@ -1384,7 +1384,7 @@ id: LANG_MAX_FILES_IN_PLAYLIST
desc: in settings_menu desc: in settings_menu
eng: "Max playlist size" eng: "Max playlist size"
voice: "Max playlist size" voice: "Max playlist size"
new: "Maks. spillelistestørrelse" new: "Maks. spillelistestørrelse"
id: LANG_JUMP_SCROLL id: LANG_JUMP_SCROLL
desc: (player) menu altarnative for jump scroll desc: (player) menu altarnative for jump scroll
@ -1396,7 +1396,7 @@ id: LANG_ONE_TIME
desc: (player) the jump scroll shall be done "one time" desc: (player) the jump scroll shall be done "one time"
eng: "One time" eng: "One time"
voice: "One time" voice: "One time"
new: "Én gang" new: "Én gang"
id: LANG_ALWAYS id: LANG_ALWAYS
desc: (player) the jump scroll shall be done "always" desc: (player) the jump scroll shall be done "always"
@ -1432,7 +1432,7 @@ id: LANG_DISK_FULL
desc: in recording screen desc: in recording screen
eng: "The disk is full. Press OFF to continue." eng: "The disk is full. Press OFF to continue."
voice: "" voice: ""
new: "Disken er full. Trykk AV for å fortsette." new: "Disken er full. Trykk AV for å fortsette."
id: LANG_CONFIRM_WITH_PLAY_RECORDER id: LANG_CONFIRM_WITH_PLAY_RECORDER
desc: Generic recorder string to use to confirm desc: Generic recorder string to use to confirm
@ -1450,7 +1450,7 @@ id: LANG_PLUGIN_CANT_OPEN
desc: Plugin open error message desc: Plugin open error message
eng: "Can't open %s" eng: "Can't open %s"
voice: "" voice: ""
new: "Kan ikke åpne %s" new: "Kan ikke åpne %s"
id: LANG_READ_FAILED id: LANG_READ_FAILED
desc: There was an error reading a file desc: There was an error reading a file
@ -1486,13 +1486,13 @@ id: LANG_REBOOT_NOW
desc: Do you want to reboot? desc: Do you want to reboot?
eng: "Reboot now?" eng: "Reboot now?"
voice: "" voice: ""
new: "Omstart nå?" new: "Omstart nå?"
id: LANG_QUEUE_LAST id: LANG_QUEUE_LAST
desc: in onplay menu. queue a track/playlist at end of playlist. desc: in onplay menu. queue a track/playlist at end of playlist.
eng: "Queue last" eng: "Queue last"
voice: "Queue last" voice: "Queue last"
new: "Legg til sist i kø" new: "Legg til sist i kø"
id: LANG_INSERT id: LANG_INSERT
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
@ -1510,7 +1510,7 @@ id: LANG_QUEUE_FIRST
desc: in onplay menu. queue a track/playlist into dynamic playlist. desc: in onplay menu. queue a track/playlist into dynamic playlist.
eng: "Queue next" eng: "Queue next"
voice: "Queue next" voice: "Queue next"
new: "Legg til som neste i kø" new: "Legg til som neste i kø"
id: LANG_INSERT_FIRST id: LANG_INSERT_FIRST
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
@ -1522,7 +1522,7 @@ id: LANG_SAVE_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
eng: "Save Current Playlist" eng: "Save Current Playlist"
voice: "Save Current Playlist" voice: "Save Current Playlist"
new: "Lagre nåværende spilleliste" new: "Lagre nåværende spilleliste"
id: LANG_PLAYLIST_MENU id: LANG_PLAYLIST_MENU
desc: in main menu. desc: in main menu.
@ -1540,7 +1540,7 @@ id: LANG_PLAYLIST_QUEUE_COUNT
desc: splash number of tracks queued desc: splash number of tracks queued
eng: "Queued %d tracks (%s)" eng: "Queued %d tracks (%s)"
voice: "" voice: ""
new: "La til %d spor i køen (%s)" new: "La til %d spor i køen (%s)"
id: LANG_PLAYLIST_SAVE_COUNT id: LANG_PLAYLIST_SAVE_COUNT
desc: splash number of tracks saved desc: splash number of tracks saved
@ -1552,13 +1552,13 @@ id: LANG_OFF_ABORT
desc: Used on recorder models desc: Used on recorder models
eng: "OFF to abort" eng: "OFF to abort"
voice: "" voice: ""
new: "AV for å avbryte" new: "AV for å avbryte"
id: LANG_STOP_ABORT id: LANG_STOP_ABORT
desc: Used on player models desc: Used on player models
eng: "STOP to abort" eng: "STOP to abort"
voice: "" voice: ""
new: "STOP for å avbryte" new: "STOP for å avbryte"
id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR
desc: Playlist error desc: Playlist error
@ -1618,7 +1618,7 @@ id: LANG_LANGUAGE
desc: in settings_menu desc: in settings_menu
eng: "Language" eng: "Language"
voice: "Language" voice: "Language"
new: "Språk" new: "Språk"
id: LANG_WHILE_PLAYING id: LANG_WHILE_PLAYING
desc: in settings_menu() desc: in settings_menu()
@ -1666,7 +1666,7 @@ id: LANG_FM_BUTTONBAR_PRESETS
desc: in button bar desc: in button bar
eng: "Preset" eng: "Preset"
voice: "" voice: ""
new: "Forhåndsinnstilling" new: "Forhåndsinnstilling"
id: LANG_FM_SAVE_PRESET id: LANG_FM_SAVE_PRESET
desc: DEPRECATED desc: DEPRECATED
@ -1678,7 +1678,7 @@ id: LANG_FM_DELETE_PRESET
desc: in radio screen desc: in radio screen
eng: "Remove preset" eng: "Remove preset"
voice: "" voice: ""
new: "Fjern forhåndsinnstilling" new: "Fjern forhåndsinnstilling"
id: LANG_FM_STATION id: LANG_FM_STATION
desc: in radio screen desc: in radio screen
@ -1690,7 +1690,7 @@ id: LANG_FM_PRESET_SAVE_FAILED
desc: in radio screen desc: in radio screen
eng: "Preset save failed" eng: "Preset save failed"
voice: "" voice: ""
new: "Lagring av forhåndsinnstilling feilet" new: "Lagring av forhåndsinnstilling feilet"
id: LANG_FM_NO_PRESETS id: LANG_FM_NO_PRESETS
desc: DEPRECATED desc: DEPRECATED
@ -1702,7 +1702,7 @@ id: LANG_FM_NO_FREE_PRESETS
desc: in radio screen desc: in radio screen
eng: "The preset list is full" eng: "The preset list is full"
voice: "" voice: ""
new: "Forhåndsinnstillingslisten er full" new: "Forhåndsinnstillingslisten er full"
id: LANG_FM_RADIO id: LANG_FM_RADIO
desc: in main menu desc: in main menu
@ -1720,7 +1720,7 @@ id: LANG_VIEW_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
eng: "View Current Playlist" eng: "View Current Playlist"
voice: "View Current Playlist" voice: "View Current Playlist"
new: "Vis nåværende spilleliste" new: "Vis nåværende spilleliste"
id: LANG_MOVE id: LANG_MOVE
desc: The verb/action Move desc: The verb/action Move
@ -1804,7 +1804,7 @@ id: LANG_BOOKMARK_SELECT_DELETE
desc: Used on the bookmark select window to indicated the bookmark delete option desc: Used on the bookmark select window to indicated the bookmark delete option
eng: "ON+Play = Delete" eng: "ON+Play = Delete"
voice: "" voice: ""
new: "PÅ+Play = Slett" new: "PÅ+Play = Slett"
id: LANG_BOOKMARK_CREATE_SUCCESS id: LANG_BOOKMARK_CREATE_SUCCESS
desc: Indicates bookmark was successfully created desc: Indicates bookmark was successfully created
@ -1858,7 +1858,7 @@ id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
eng: "Ask - Recent only" eng: "Ask - Recent only"
voice: "Ask - Recent only" voice: "Ask - Recent only"
new: "Spør - Kun nylige" new: "Spør - Kun nylige"
id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
desc: Save only on bookmark for each playlist in recent bookmarks desc: Save only on bookmark for each playlist in recent bookmarks
@ -1960,7 +1960,7 @@ id: LANG_RECORD_CURRENT_DIR
desc: in recording directory options desc: in recording directory options
eng: "Current dir" eng: "Current dir"
voice: "Current directory" voice: "Current directory"
new: "Nåværende katalog" new: "Nåværende katalog"
id: LANG_CREATE_DIR id: LANG_CREATE_DIR
desc: in main menu desc: in main menu
@ -2650,7 +2650,7 @@ id: LANG_ONPLAY_OPEN_WITH
desc: Onplay open with desc: Onplay open with
eng: "Open with" eng: "Open with"
voice: "open with" voice: "open with"
new: "Åpne med" new: "Åpne med"
id: LANG_SORT_DIR id: LANG_SORT_DIR
desc: browser sorting setting desc: browser sorting setting
@ -2692,7 +2692,7 @@ id: LANG_FM_EDIT_PRESET
desc: in radio screen desc: in radio screen
eng: "Edit preset" eng: "Edit preset"
voice: "" voice: ""
new: "Editer forhåndsinnstilling" new: "Editer forhåndsinnstilling"
id: LANG_FM_MONO_MODE id: LANG_FM_MONO_MODE
desc: in radio screen desc: in radio screen
@ -2752,7 +2752,7 @@ id: LANG_MDB_ENABLE
desc: in sound settings desc: in sound settings
eng: "MDB Enable" eng: "MDB Enable"
voice: "MDB Enable" voice: "MDB Enable"
new: "MDB på" new: "MDB på"
id: LANG_SUPERBASS id: LANG_SUPERBASS
desc: in sound settings desc: in sound settings
@ -2776,7 +2776,7 @@ id: LANG_CONFIRM_SHUTDOWN
desc: in shutdown screen desc: in shutdown screen
eng: "Press OFF to shut down" eng: "Press OFF to shut down"
voice: "" voice: ""
new: "Trykk AV for å avslutte" new: "Trykk AV for å avslutte"
id: LANG_ID3_ORDER id: LANG_ID3_ORDER
desc: in playback settings screen desc: in playback settings screen
@ -2788,13 +2788,13 @@ id: LANG_ID3_V1_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V1 then V2" eng: "V1 then V2"
voice: "Version 1 then version 2" voice: "Version 1 then version 2"
new: "V1 så V2" new: "V1 så V2"
id: LANG_ID3_V2_FIRST id: LANG_ID3_V2_FIRST
desc: in playback settings screen desc: in playback settings screen
eng: "V2 then V1" eng: "V2 then V1"
voice: "Version 2 then version 1" voice: "Version 2 then version 1"
new: "V2 så V1" new: "V2 så V1"
id: LANG_NO_ROCKBOX_DIR id: LANG_NO_ROCKBOX_DIR
desc: in browse root desc: in browse root
@ -2866,25 +2866,25 @@ id: LANG_ID3DB_SEARCH
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search" eng: "Search"
voice: "" voice: ""
new: "Søk" new: "Søk"
id: LANG_ID3DB_SEARCH_ARTISTS id: LANG_ID3DB_SEARCH_ARTISTS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Artists" eng: "Search Artists"
voice: "" voice: ""
new: "Søk i artister" new: "Søk i artister"
id: LANG_ID3DB_SEARCH_ALBUMS id: LANG_ID3DB_SEARCH_ALBUMS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Albums" eng: "Search Albums"
voice: "" voice: ""
new: "Søk i album" new: "Søk i album"
id: LANG_ID3DB_SEARCH_SONGS id: LANG_ID3DB_SEARCH_SONGS
desc: ID3 virtual folder name desc: ID3 virtual folder name
eng: "Search Songs" eng: "Search Songs"
voice: "" voice: ""
new: "Søk i sanger" new: "Søk i sanger"
id: LANG_ID3DB_MATCHES id: LANG_ID3DB_MATCHES
desc: ID3 virtual folder name desc: ID3 virtual folder name
@ -2974,13 +2974,13 @@ id: LANG_ALARM_MOD_DISABLE
desc: Announce that the RTC alarm has been turned off desc: Announce that the RTC alarm has been turned off
eng: "Alarm Disabled" eng: "Alarm Disabled"
voice: "Alarm Disabled" voice: "Alarm Disabled"
new: "Alarm avslått" new: "Alarm avslått"
id: LANG_RECORD_TRIGGER id: LANG_RECORD_TRIGGER
desc: in recording settings_menu desc: in recording settings_menu
eng: "Trigger" eng: "Trigger"
voice: voice:
new: "Utløser" new: "Utløser"
id: LANG_RECORD_START_THRESHOLD id: LANG_RECORD_START_THRESHOLD
desc: in recording settings_menu desc: in recording settings_menu
@ -3010,19 +3010,19 @@ id: LANG_RECORD_STOP_GAP
desc: in recording settings_menu desc: in recording settings_menu
eng: "Presplit gap" eng: "Presplit gap"
voice: voice:
new: "Førsplitt-mellomrom" new: "Førsplitt-mellomrom"
id: LANG_RECORD_TRIGGER_MODE id: LANG_RECORD_TRIGGER_MODE
desc: in recording settings_menu desc: in recording settings_menu
eng: "Trigger" eng: "Trigger"
voice: voice:
new: "Utløser" new: "Utløser"
id: LANG_RECORD_TRIG_NOREARM id: LANG_RECORD_TRIG_NOREARM
desc: in recording settings_menu desc: in recording settings_menu
eng: "Once" eng: "Once"
voice: voice:
new: "Én gang" new: "Én gang"
id: LANG_RECORD_TRIG_REARM id: LANG_RECORD_TRIG_REARM
desc: in recording settings_menu desc: in recording settings_menu
@ -3040,13 +3040,13 @@ id: LANG_RECORD_TRIG_IDLE
desc: waiting for threshold desc: waiting for threshold
eng: "Trigger idle" eng: "Trigger idle"
voice: voice:
new: "Utløser venter" new: "Utløser venter"
id: LANG_RECORD_TRIGGER_ACTIVE id: LANG_RECORD_TRIGGER_ACTIVE
desc: desc:
eng: "Trigger active" eng: "Trigger active"
voice: voice:
new: "Utløser aktiv" new: "Utløser aktiv"
id: LANG_LCD_REMOTE_MENU id: LANG_LCD_REMOTE_MENU
desc: in the display sub menu desc: in the display sub menu
@ -3100,7 +3100,7 @@ id: LANG_NOTHING_TO_RESUME
desc: Error message displayed when resume button pressed but no playlist desc: Error message displayed when resume button pressed but no playlist
eng: "Nothing to resume" eng: "Nothing to resume"
voice: "" voice: ""
new: "Ingenting å fortsette" new: "Ingenting å fortsette"
id: LANG_SPDIF_ENABLE id: LANG_SPDIF_ENABLE
desc: in playback settings menu. enable/disable the optical out desc: in playback settings menu. enable/disable the optical out
@ -3124,13 +3124,13 @@ id: LANG_MENU_SET_RATING
desc: in wps context menu desc: in wps context menu
eng: "Set song rating" eng: "Set song rating"
voice: "Set song rating" voice: "Set song rating"
new: "Sett sangbedømmelse" new: "Sett sangbedømmelse"
id: LANG_RATING id: LANG_RATING
desc: in set_rating desc: in set_rating
eng: "Rating:" eng: "Rating:"
voice: voice:
new: "Bedømmelse:" new: "Bedømmelse:"
id: LANG_CROSSFADE_DURATION id: LANG_CROSSFADE_DURATION
desc: in playback settings desc: in playback settings
@ -3160,7 +3160,7 @@ id: LANG_REPLAYGAIN_ENABLE
desc: in replaygain desc: in replaygain
eng: "Enable replaygain" eng: "Enable replaygain"
voice: voice:
new: "Slå på replaygain" new: "Slå på replaygain"
id: LANG_REPLAYGAIN_NOCLIP id: LANG_REPLAYGAIN_NOCLIP
desc: in replaygain desc: in replaygain
@ -3178,25 +3178,25 @@ id: LANG_TRACK_GAIN
desc: in replaygain desc: in replaygain
eng: "Track gain" eng: "Track gain"
voice: voice:
new: "Spornivå" new: "Spornivå"
id: LANG_ALBUM_GAIN id: LANG_ALBUM_GAIN
desc: in replaygain desc: in replaygain
eng: "Album gain" eng: "Album gain"
voice: voice:
new: "Albumnivå" new: "Albumnivå"
id: LANG_ID3_TRACK_GAIN id: LANG_ID3_TRACK_GAIN
desc: in browse_id3 desc: in browse_id3
eng: "[Track gain]" eng: "[Track gain]"
voice: voice:
new: "[Spornivå]" new: "[Spornivå]"
id: LANG_ID3_ALBUM_GAIN id: LANG_ID3_ALBUM_GAIN
desc: in browse_id3 desc: in browse_id3
eng: "[Album gain]" eng: "[Album gain]"
voice: voice:
new: "[Albumnivå]" new: "[Albumnivå]"
id: LANG_ID3_NO_GAIN id: LANG_ID3_NO_GAIN
desc: DEPRECATED desc: DEPRECATED

View File

@ -5,12 +5,12 @@
id: LANG_SOUND_SETTINGS id: LANG_SOUND_SETTINGS
desc: in the main menu desc: in the main menu
eng: "Sound Settings" eng: "Sound Settings"
new: "Ustawienia dźwięku" new: "Ustawienia dźwięku"
id: LANG_GENERAL_SETTINGS id: LANG_GENERAL_SETTINGS
desc: in the main menu desc: in the main menu
eng: "General Settings" eng: "General Settings"
new: "Ustawienia główne" new: "Ustawienia główne"
id: LANG_GAMES id: LANG_GAMES
desc: in the main menu desc: in the main menu
@ -35,7 +35,7 @@ new: "Wersja"
id: LANG_DEBUG id: LANG_DEBUG
desc: in the main menu desc: in the main menu
eng: "Debug (Keep Out!)" eng: "Debug (Keep Out!)"
new: "Podgląd procesów" new: "Podgląd procesów"
id: LANG_USB id: LANG_USB
desc: in the main menu desc: in the main menu
@ -70,17 +70,17 @@ new: "Bateria: %d%%%s"
id: LANG_BATTERY_CHARGE id: LANG_BATTERY_CHARGE
desc: tells that the battery is charging, instead of battery level desc: tells that the battery is charging, instead of battery level
eng: "Battery: Charging" eng: "Battery: Charging"
new: "Bateria: Ładowanie" new: "Bateria: Ładowanie"
id: LANG_BOUNCE id: LANG_BOUNCE
desc: in the demos menu desc: in the demos menu
eng: "Bounce" eng: "Bounce"
new: "Skaczący napis" new: "Skaczący napis"
id: LANG_SNOW id: LANG_SNOW
desc: in the demos menu desc: in the demos menu
eng: "Snow" eng: "Snow"
new: "Śnieg" new: "Śnieg"
id: LANG_TETRIS id: LANG_TETRIS
desc: in the games menu desc: in the games menu
@ -100,18 +100,18 @@ new: "Robal"
id: LANG_SNAKE id: LANG_SNAKE
desc: in the games menu desc: in the games menu
eng: "Snake" eng: "Snake"
new: "Wąż" new: "Wąż"
id: LANG_PLAYLIST_LOAD id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
eng: "Loading..." eng: "Loading..."
new: "Ładuję..." new: "Ładuję..."
# NO LONGER USED # NO LONGER USED
id: LANG_PLAYLIST_SHUFFLE id: LANG_PLAYLIST_SHUFFLE
desc: displayed on screen while shuffling a playlist desc: displayed on screen while shuffling a playlist
eng: "Shuffling..." eng: "Shuffling..."
new: "Losuję..." new: "Losuję..."
# NO LONGER USED # NO LONGER USED
id: LANG_PLAYLIST_PLAY id: LANG_PLAYLIST_PLAY
@ -127,18 +127,18 @@ new: "Playlista"
id: LANG_PLAYINDICES_BUFFER id: LANG_PLAYINDICES_BUFFER
desc: in playlist.indices() when playlist is full desc: in playlist.indices() when playlist is full
eng: "Buffer Full" eng: "Buffer Full"
new: "Pełny bufor" new: "Pełny bufor"
# NO LONGER USED # NO LONGER USED
id: LANG_PLAYINDICES_AMOUNT id: LANG_PLAYINDICES_AMOUNT
desc: number of files in playlist desc: number of files in playlist
eng: "%d Files" eng: "%d Files"
new: "%d plików" new: "%d plików"
id: LANG_SETTINGS_SAVE_PLAYER id: LANG_SETTINGS_SAVE_PLAYER
desc: displayed if save settings has failed desc: displayed if save settings has failed
eng: "Save Failed" eng: "Save Failed"
new: "Błąd zapisu" new: "Błąd zapisu"
id: LANG_SETTINGS_BATTERY_PLAYER id: LANG_SETTINGS_BATTERY_PLAYER
desc: if save settings has failed desc: if save settings has failed
@ -148,7 +148,7 @@ new: "Partycja?"
id: LANG_SETTINGS_SAVE_RECORDER id: LANG_SETTINGS_SAVE_RECORDER
desc: displayed if save settings has failed desc: displayed if save settings has failed
eng: "Save Failed" eng: "Save Failed"
new: "Błąd zapisu" new: "Błąd zapisu"
id: LANG_SETTINGS_BATTERY_RECORDER id: LANG_SETTINGS_BATTERY_RECORDER
desc: if save settings has failed desc: if save settings has failed
@ -163,7 +163,7 @@ new: "ON - ustaw"
id: LANG_TIME_REVERT id: LANG_TIME_REVERT
desc: used in set_time() desc: used in set_time()
eng: "OFF To Revert" eng: "OFF To Revert"
new: "OFF - przywróć" new: "OFF - przywróć"
id: LANG_HIDDEN id: LANG_HIDDEN
desc: in settings_menu desc: in settings_menu
@ -203,17 +203,17 @@ new:
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
eng: "Sort Case Sensitive" eng: "Sort Case Sensitive"
new: "Sortuj uwzgl. wielkość liter" new: "Sortuj uwzgl. wielkość liter"
id: LANG_RESUME id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
eng: "Resume" eng: "Resume"
new: "Dokończ" new: "Dokończ"
id: LANG_OFF id: LANG_OFF
desc: Used in a lot of places desc: Used in a lot of places
eng: "Off" eng: "Off"
new: "wył." new: "wył."
id: LANG_RESUME_SETTING_ASK id: LANG_RESUME_SETTING_ASK
desc: in settings_menu desc: in settings_menu
@ -223,17 +223,17 @@ new: "Pytaj"
id: LANG_ON id: LANG_ON
desc: Used in a lot of places desc: Used in a lot of places
eng: "On" eng: "On"
new: "włącz" new: "włącz"
id: LANG_BACKLIGHT id: LANG_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Backlight" eng: "Backlight"
new: "Podświetlenie" new: "Podświetlenie"
id: LANG_SCROLL id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
eng: "Scroll Speed Setting Example" eng: "Scroll Speed Setting Example"
new: "Przykładowa prędkość przesuwu" new: "Przykładowa prędkość przesuwu"
id: LANG_DISCHARGE id: LANG_DISCHARGE
desc: DEPRECATED desc: DEPRECATED
@ -243,7 +243,7 @@ new: ""
id: LANG_TIME id: LANG_TIME
desc: in settings_menu desc: in settings_menu
eng: "Set Time/Date" eng: "Set Time/Date"
new: "Ustaw datę/czas" new: "Ustaw datę/czas"
id: LANG_SPINDOWN id: LANG_SPINDOWN
desc: in settings_menu desc: in settings_menu
@ -258,12 +258,12 @@ new: "Minim. skok przewijania"
id: LANG_FFRW_ACCEL id: LANG_FFRW_ACCEL
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Accel" eng: "FF/RW Accel"
new: "Przyśpieszenie przewijania" new: "Przyśpieszenie przewijania"
id: LANG_FOLLOW id: LANG_FOLLOW
desc: in settings_menu desc: in settings_menu
eng: "Follow Playlist" eng: "Follow Playlist"
new: "Idź do playlisty" new: "Idź do playlisty"
# depreciated # depreciated
id: LANG_RESET_ASK_PLAYER id: LANG_RESET_ASK_PLAYER
@ -280,7 +280,7 @@ new:
id: LANG_RESET_ASK_RECORDER id: LANG_RESET_ASK_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
eng: "Are You Sure?" eng: "Are You Sure?"
new: "Jesteś pewny?" new: "Jesteś pewny?"
# depreciated # depreciated
id: LANG_RESET_CONFIRM_RECORDER id: LANG_RESET_CONFIRM_RECORDER
@ -317,12 +317,12 @@ new: "Tryb sortowania"
id: LANG_SCROLL_MENU id: LANG_SCROLL_MENU
desc: in display_settings_menu() desc: in display_settings_menu()
eng: "Scroll" eng: "Scroll"
new: "Przesuwanie napisów" new: "Przesuwanie napisów"
id: LANG_RESET id: LANG_RESET
desc: in system_settings_menu() desc: in system_settings_menu()
eng: "Reset Settings" eng: "Reset Settings"
new: "Ustawienia domyślne" new: "Ustawienia domyślne"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
@ -332,12 +332,12 @@ new: "Odtwarzanie"
id: LANG_FILE id: LANG_FILE
desc: in settings_menu() desc: in settings_menu()
eng: "File View" eng: "File View"
new: "Widok plików" new: "Widok plików"
id: LANG_DISPLAY id: LANG_DISPLAY
desc: in settings_menu() desc: in settings_menu()
eng: "Display" eng: "Display"
new: "Wyświetlanie" new: "Wyświetlanie"
id: LANG_SYSTEM id: LANG_SYSTEM
desc: in settings_menu() desc: in settings_menu()
@ -367,7 +367,7 @@ new: "Wysokie"
id: LANG_LOUDNESS id: LANG_LOUDNESS
desc: in sound_settings desc: in sound_settings
eng: "Loudness" eng: "Loudness"
new: "Głośność" new: "Głośność"
id: LANG_BBOOST id: LANG_BBOOST
desc: in sound settings desc: in sound settings
@ -382,12 +382,12 @@ new: "Czas wyciszenia"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
eng: "Channels" eng: "Channels"
new: "Kanały" new: "Kanały"
id: LANG_CHANNEL id: LANG_CHANNEL
desc: in sound_settings desc: in sound_settings
eng: "Channel Configuration" eng: "Channel Configuration"
new: "Konfiguracja kanałów" new: "Konfiguracja kanałów"
id: LANG_CHANNEL_STEREO id: LANG_CHANNEL_STEREO
desc: in sound_settings desc: in sound_settings
@ -417,17 +417,17 @@ new: "Aut. wzmocnienie"
id: LANG_SHOWDIR_ERROR_BUFFER id: LANG_SHOWDIR_ERROR_BUFFER
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
eng: "Dir Buffer" eng: "Dir Buffer"
new: "Bufor katalogów" new: "Bufor katalogów"
id: LANG_SHOWDIR_ERROR_FULL id: LANG_SHOWDIR_ERROR_FULL
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
eng: "Is Full!" eng: "Is Full!"
new: "jest pełny!" new: "jest pełny!"
id: LANG_RESUME_ASK id: LANG_RESUME_ASK
desc: question asked at the begining when resume is on desc: question asked at the begining when resume is on
eng: "Resume?" eng: "Resume?"
new: "Dokończyć?" new: "Dokończyć?"
id: LANG_RESUME_CONFIRM_PLAYER id: LANG_RESUME_CONFIRM_PLAYER
desc: possible answers to resume question desc: possible answers to resume question
@ -459,12 +459,12 @@ new: "Klawisze odblokowane"
id: LANG_KEYLOCK_ON_RECORDER id: LANG_KEYLOCK_ON_RECORDER
desc: displayed when key lock is on desc: displayed when key lock is on
eng: "Key Lock Is ON" eng: "Key Lock Is ON"
new: "Klawisze są zablokowane" new: "Klawisze są zablokowane"
id: LANG_KEYLOCK_OFF_RECORDER id: LANG_KEYLOCK_OFF_RECORDER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock Is OFF" eng: "Key Lock Is OFF"
new: "Klawisze są odblokowane" new: "Klawisze są odblokowane"
id: LANG_MUTE_ON_PLAYER id: LANG_MUTE_ON_PLAYER
desc: displayed when mute is on desc: displayed when mute is on
@ -499,12 +499,12 @@ new: "--Ekran-- "
id: LANG_ID3_TITLE id: LANG_ID3_TITLE
desc: in wps desc: in wps
eng: "[Title]" eng: "[Title]"
new: "[Tytuł]" new: "[Tytuł]"
id: LANG_ID3_NO_TITLE id: LANG_ID3_NO_TITLE
desc: in wps when no title is avaible desc: in wps when no title is avaible
eng: "<No Title>" eng: "<No Title>"
new: "<bez tytułu>" new: "<bez tytułu>"
id: LANG_ID3_ARTIST id: LANG_ID3_ARTIST
desc: in wps desc: in wps
@ -529,17 +529,17 @@ new: "<brak albumu>"
id: LANG_ID3_TRACKNUM id: LANG_ID3_TRACKNUM
desc: in wps desc: in wps
eng: "[Tracknum]" eng: "[Tracknum]"
new: "[Ścieżka nr]" new: "[Ścieżka nr]"
id: LANG_ID3_NO_TRACKNUM id: LANG_ID3_NO_TRACKNUM
desc: in wps if no track number is avaible desc: in wps if no track number is avaible
eng: "<No Tracknum>" eng: "<No Tracknum>"
new: "<brak nru ścieżki>" new: "<brak nru ścieżki>"
id: LANG_ID3_LENGHT id: LANG_ID3_LENGHT
desc: in wps desc: in wps
eng: "[Length]" eng: "[Length]"
new: "[Długość]" new: "[Długość]"
id: LANG_ID3_PLAYLIST id: LANG_ID3_PLAYLIST
desc: in wps desc: in wps
@ -554,22 +554,22 @@ new: "[Bitrate]"
id: LANG_ID3_FRECUENCY id: LANG_ID3_FRECUENCY
desc: in wps desc: in wps
eng: "[Frequency]" eng: "[Frequency]"
new: "[Częstotl.]" new: "[Częstotl.]"
id: LANG_ID3_PATH id: LANG_ID3_PATH
desc: in wps desc: in wps
eng: "[Path]" eng: "[Path]"
new: "[Ścieżka]" new: "[Ścieżka]"
id: LANG_PITCH_UP id: LANG_PITCH_UP
desc: in wps desc: in wps
eng: "Pitch Up" eng: "Pitch Up"
new: "Podnieś" new: "Podnieś"
id: LANG_PITCH_DOWN id: LANG_PITCH_DOWN
desc: in wps desc: in wps
eng: "Pitch Down" eng: "Pitch Down"
new: "Obniż" new: "Obniż"
id: LANG_PAUSE id: LANG_PAUSE
desc: in wps desc: in wps
@ -589,7 +589,7 @@ new:
id: LANG_F3_STATUS id: LANG_F3_STATUS
desc: in wps F3 pressed desc: in wps F3 pressed
eng: "Status" eng: "Status"
new: "Górny" new: "Górny"
id: LANG_F3_SCROLL id: LANG_F3_SCROLL
desc: in wps F3 pressed desc: in wps F3 pressed
@ -624,7 +624,7 @@ new:
id: LANG_SNAKE_SCORE id: LANG_SNAKE_SCORE
desc: when you die in snake game desc: when you die in snake game
eng: "Your score:" eng: "Your score:"
new: "Twój wynik:" new: "Twój wynik:"
id: LANG_SNAKE_HISCORE id: LANG_SNAKE_HISCORE
desc: high score in snake game desc: high score in snake game
@ -649,7 +649,7 @@ new: "[GRAJ] dalej"
id: LANG_SNAKE_QUIT id: LANG_SNAKE_QUIT
desc: how to quit game desc: how to quit game
eng: "[OFF] To Quit" eng: "[OFF] To Quit"
new: "[OFF] zakończ" new: "[OFF] zakończ"
id: LANG_SNAKE_LEVEL id: LANG_SNAKE_LEVEL
desc: level of difficulty desc: level of difficulty
@ -795,17 +795,17 @@ new:
id: LANG_POWEROFF_IDLE id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
eng: "Idle Poweroff" eng: "Idle Poweroff"
new: "Aut. wylączanie" new: "Aut. wylączanie"
id: LANG_LANGUAGE_LOADED id: LANG_LANGUAGE_LOADED
desc: shown when a language has been loaded from the dir browser desc: shown when a language has been loaded from the dir browser
eng: "New Language" eng: "New Language"
new: "Nowy język" new: "Nowy język"
id: LANG_FILTER id: LANG_FILTER
desc: setting name for dir filter desc: setting name for dir filter
eng: "Show Files" eng: "Show Files"
new: "Pokaż pliki" new: "Pokaż pliki"
id: LANG_FILTER_MUSIC id: LANG_FILTER_MUSIC
desc: show only music-related files desc: show only music-related files
@ -835,7 +835,7 @@ new: "Nie"
id: LANG_PM_MENU id: LANG_PM_MENU
desc: in the display menu desc: in the display menu
eng: "Peak Meter" eng: "Peak Meter"
new: "Wskaźnik szczyt." new: "Wskaźnik szczyt."
id: LANG_PM_RELEASE id: LANG_PM_RELEASE
desc: in the peak meter menu desc: in the peak meter menu
@ -865,12 +865,12 @@ new: "fragm. na odczyt"
id: LANG_BACKLIGHT_ON_WHEN_CHARGING id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
eng: "Backlight On When Plugged" eng: "Backlight On When Plugged"
new: "Podświetl kiedy podłączony" new: "Podświetl kiedy podłączony"
id: LANG_REPEAT id: LANG_REPEAT
desc: in settings_menu desc: in settings_menu
eng: "Repeat" eng: "Repeat"
new: "Powtórz" new: "Powtórz"
id: LANG_REPEAT_ALL id: LANG_REPEAT_ALL
desc: repeat playlist once all songs have completed desc: repeat playlist once all songs have completed
@ -929,7 +929,7 @@ new: "Wto"
id: LANG_WEEKDAY_WEDNESDAY id: LANG_WEEKDAY_WEDNESDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Wed" eng: "Wed"
new: "Śro" new: "Śro"
id: LANG_WEEKDAY_THURSDAY id: LANG_WEEKDAY_THURSDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -939,7 +939,7 @@ new: "Czw"
id: LANG_WEEKDAY_FRIDAY id: LANG_WEEKDAY_FRIDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Fri" eng: "Fri"
new: "Pią" new: "Pią"
id: LANG_WEEKDAY_SATURDAY id: LANG_WEEKDAY_SATURDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -994,7 +994,7 @@ new: "Wrz"
id: LANG_MONTH_OCTOBER id: LANG_MONTH_OCTOBER
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
eng: "Oct" eng: "Oct"
new: "Paź" new: "Paź"
id: LANG_MONTH_NOVEMBER id: LANG_MONTH_NOVEMBER
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -1009,7 +1009,7 @@ new: "Gru"
id: LANG_CUBE id: LANG_CUBE
desc: the name of the cube demo in the demo menu desc: the name of the cube demo in the demo menu
eng: "Cube" eng: "Cube"
new: "Bryła" new: "Bryła"
id: LANG_OSCILLOGRAPH id: LANG_OSCILLOGRAPH
desc: the name of the oscillograph demo in the demo menu desc: the name of the oscillograph demo in the demo menu
@ -1024,12 +1024,12 @@ new: "Zapytaj raz"
id: LANG_BATTERY_DISPLAY id: LANG_BATTERY_DISPLAY
desc: Battery type title desc: Battery type title
eng: "Battery Display" eng: "Battery Display"
new: "Wyświetlanie baterii" new: "Wyświetlanie baterii"
id: LANG_VOLUME_DISPLAY id: LANG_VOLUME_DISPLAY
desc: Volume type title desc: Volume type title
eng: "Volume Display" eng: "Volume Display"
new: "Wyświetlanie wzmocnienia" new: "Wyświetlanie wzmocnienia"
id: LANG_DISPLAY_GRAPHIC id: LANG_DISPLAY_GRAPHIC
desc: Label for type of icon display desc: Label for type of icon display
@ -1044,22 +1044,22 @@ new: "numerycznie"
id: LANG_PM_PERFORMANCE id: LANG_PM_PERFORMANCE
desc: in the peak meter menu desc: in the peak meter menu
eng: "Performance" eng: "Performance"
new: "Wydajność" new: "Wydajność"
id: LANG_PM_HIGH_PERFORMANCE id: LANG_PM_HIGH_PERFORMANCE
desc: in the peak meter menu desc: in the peak meter menu
eng: "High performance" eng: "High performance"
new: "Wysoka wydajność" new: "Wysoka wydajność"
id: LANG_PM_ENERGY_SAVER id: LANG_PM_ENERGY_SAVER
desc: in the peak meter menu desc: in the peak meter menu
eng: "Save Energy" eng: "Save Energy"
new: "Oszczędz. energii" new: "Oszczędz. energii"
id: LANG_PM_SCALE id: LANG_PM_SCALE
desc: in the peak meter menu desc: in the peak meter menu
eng: "Scale" eng: "Scale"
new: "Wskaźnik" new: "Wskaźnik"
id: LANG_PM_DBFS id: LANG_PM_DBFS
desc: in the peak meter menu desc: in the peak meter menu
@ -1104,22 +1104,22 @@ new: "prawy"
id: LANG_RECORDING_QUALITY id: LANG_RECORDING_QUALITY
desc: in the recording settings desc: in the recording settings
eng: "Quality" eng: "Quality"
new: "Jakość" new: "Jakość"
id: LANG_RECORDING_FREQUENCY id: LANG_RECORDING_FREQUENCY
desc: in the recording settings desc: in the recording settings
eng: "Frequency" eng: "Frequency"
new: "Częstotliwość" new: "Częstotliwość"
id: LANG_RECORDING_SOURCE id: LANG_RECORDING_SOURCE
desc: in the recording settings desc: in the recording settings
eng: "Source" eng: "Source"
new: "Źródło" new: "Źródło"
id: LANG_RECORDING_CHANNELS id: LANG_RECORDING_CHANNELS
desc: in the recording settings desc: in the recording settings
eng: "Channels" eng: "Channels"
new: "Kanały" new: "Kanały"
id: LANG_RECORDING_SRC_MIC id: LANG_RECORDING_SRC_MIC
desc: in the recording settings desc: in the recording settings
@ -1154,7 +1154,7 @@ new: "Wolne: %d.%GB"
id: LANG_POWEROFF id: LANG_POWEROFF
desc: disk poweroff flag desc: disk poweroff flag
eng: "Disk Poweroff" eng: "Disk Poweroff"
new: "Wyłączanie dysku" new: "Wyłączanie dysku"
id: LANG_FILTER_PLAYLIST id: LANG_FILTER_PLAYLIST
desc: show only playlist desc: show only playlist
@ -1174,7 +1174,7 @@ new: "Usypiacz"
id: LANG_MP3BUFFER_MARGIN id: LANG_MP3BUFFER_MARGIN
desc: MP3 buffer margin time desc: MP3 buffer margin time
eng: "Anti-Skip Buffer" eng: "Anti-Skip Buffer"
new: "Bufor antywstrząsowy" new: "Bufor antywstrząsowy"
id: LANG_BIDIR_SCROLL id: LANG_BIDIR_SCROLL
desc: Bidirectional scroll limit desc: Bidirectional scroll limit
@ -1184,7 +1184,7 @@ new: "Limit przesuwania dwukierunkowego"
id: LANG_SCROLL_DELAY id: LANG_SCROLL_DELAY
desc: Delay before scrolling desc: Delay before scrolling
eng: "Scroll Start Delay" eng: "Scroll Start Delay"
new: "Opóźnienie rozpoczęcia przesuwania" new: "Opóźnienie rozpoczęcia przesuwania"
id: LANG_SCROLL_STEP id: LANG_SCROLL_STEP
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
@ -1194,12 +1194,12 @@ new: "Rozmiar skoku przesuwania"
id: LANG_SCROLL_STEP_EXAMPLE id: LANG_SCROLL_STEP_EXAMPLE
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
eng: "Scroll Step Size Setting Example Text" eng: "Scroll Step Size Setting Example Text"
new: "Przykładowy rozmiar skoku przesuwania" new: "Przykładowy rozmiar skoku przesuwania"
id: LANG_SCROLL_SPEED id: LANG_SCROLL_SPEED
desc: in display_settings_menu() desc: in display_settings_menu()
eng: "Scroll Speed" eng: "Scroll Speed"
new: "Prędkość przesuwania" new: "Prędkość przesuwania"
id: LANG_TRICKLE_CHARGE id: LANG_TRICKLE_CHARGE
desc: DEPRECATED desc: DEPRECATED
@ -1209,17 +1209,17 @@ new: ""
id: LANG_BATTERY_TOPOFF_CHARGE id: LANG_BATTERY_TOPOFF_CHARGE
desc: in info display, shows that top off charge is running desc: in info display, shows that top off charge is running
eng: "Battery: Top-Off Chg" eng: "Battery: Top-Off Chg"
new: "Bateria: Doładowanie" new: "Bateria: Doładowanie"
id: LANG_BATTERY_TRICKLE_CHARGE id: LANG_BATTERY_TRICKLE_CHARGE
desc: in info display, shows that trickle charge is running desc: in info display, shows that trickle charge is running
eng: "Battery: Trickle Chg" eng: "Battery: Trickle Chg"
new: "Bateria: Wolne ładowanie" new: "Bateria: Wolne ładowanie"
id: LANG_BATTERY_CAPACITY id: LANG_BATTERY_CAPACITY
desc: in settings_menu desc: in settings_menu
eng: "Battery Capacity" eng: "Battery Capacity"
new: "Pojemność baterii" new: "Pojemność baterii"
id: LANG_QUEUE_QUEUED id: LANG_QUEUE_QUEUED
desc: queued track name %s desc: queued track name %s
@ -1269,7 +1269,7 @@ new: "Skasuj"
id: LANG_REALLY_DELETE id: LANG_REALLY_DELETE
desc: Really Delete? desc: Really Delete?
eng: "Delete?" eng: "Delete?"
new: "Skasować?" new: "Skasować?"
id: LANG_DELETED id: LANG_DELETED
desc: A file has beed deleted desc: A file has beed deleted
@ -1284,7 +1284,7 @@ new: "Zm.Naz"
id: LANG_FAILED id: LANG_FAILED
desc: Something failed. To be appended after above actions desc: Something failed. To be appended after above actions
eng: "Failed" eng: "Failed"
new: "nie udało się" new: "nie udało się"
id: LANG_ALARM_MOD_ALARM_MENU id: LANG_ALARM_MOD_ALARM_MENU
desc: The name of the additional entry in the main menu for the RTC alarm mod. desc: The name of the additional entry in the main menu for the RTC alarm mod.
@ -1304,7 +1304,7 @@ new: "Budzenie za %d:%02d"
id: LANG_ALARM_MOD_SHUTDOWN id: LANG_ALARM_MOD_SHUTDOWN
desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod). desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod).
eng: "Shutting Down..." eng: "Shutting Down..."
new: "Wyłączanie..." new: "Wyłączanie..."
id: LANG_ALARM_MOD_ERROR id: LANG_ALARM_MOD_ERROR
desc: The text that tells that the time is incorrect (for the RTC alarm mod). desc: The text that tells that the time is incorrect (for the RTC alarm mod).
@ -1319,12 +1319,12 @@ new: "GRAJ=Ustaw OFF=Anuluj"
id: LANG_CREATE_PLAYLIST id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist
eng: "Create Playlist" eng: "Create Playlist"
new: "Stwórz playlistę" new: "Stwórz playlistę"
id: LANG_CREATING id: LANG_CREATING
desc: Screen feedback during playlist creation desc: Screen feedback during playlist creation
eng: "Creating" eng: "Creating"
new: "Tworzę" new: "Tworzę"
id: LANG_PLAYER_KEYBOARD_BACKSPACE id: LANG_PLAYER_KEYBOARD_BACKSPACE
desc: Backspace alternative in player keyboard interaction desc: Backspace alternative in player keyboard interaction
@ -1344,12 +1344,12 @@ new: "Akceptuj"
id: LANG_PLAYER_KEYBOARD_ABORT id: LANG_PLAYER_KEYBOARD_ABORT
desc: Abort alternative in player keyboard interaction desc: Abort alternative in player keyboard interaction
eng: "Abort" eng: "Abort"
new: "Opuść" new: "Opuść"
id: LANG_MENU_SHOW_ID3_INFO id: LANG_MENU_SHOW_ID3_INFO
desc: Menu option to start id3 viewer desc: Menu option to start id3 viewer
eng: "Show ID3 Info" eng: "Show ID3 Info"
new: "Pokaż info ID3" new: "Pokaż info ID3"
id: LANG_ID3_GENRE id: LANG_ID3_GENRE
desc: ID3 frame 'genre' desc: ID3 frame 'genre'
@ -1389,7 +1389,7 @@ new: "Ustawienia"
id: LANG_SETTINGS_LOADED2 id: LANG_SETTINGS_LOADED2
desc: Feedback shown when a .cfg file is loaded desc: Feedback shown when a .cfg file is loaded
eng: "Loaded" eng: "Loaded"
new: "załadowane" new: "załadowane"
id: LANG_FADE_ON_STOP id: LANG_FADE_ON_STOP
desc: options menu to set fade on stop or pause desc: options menu to set fade on stop or pause
@ -1399,7 +1399,7 @@ new: "Wycisz przy zatrzymaniu"
id: LANG_SOKOBAN_ON id: LANG_SOKOBAN_ON
desc: how to undo move desc: how to undo move
eng: "[ON] To Undo" eng: "[ON] To Undo"
new: "[ON] przywróć" new: "[ON] przywróć"
id: LANG_INVERT id: LANG_INVERT
desc: in settings_menu desc: in settings_menu
@ -1409,12 +1409,12 @@ new: "Tryb LCD"
id: LANG_CHANNEL_STEREO_NARROW_PLAYER id: LANG_CHANNEL_STEREO_NARROW_PLAYER
desc: in sound_settings desc: in sound_settings
eng: "St. Narrow" eng: "St. Narrow"
new: "wąskie st." new: "wąskie st."
id: LANG_CHANNEL_STEREO_NARROW_RECORDER id: LANG_CHANNEL_STEREO_NARROW_RECORDER
desc: in sound_settings desc: in sound_settings
eng: "Stereo Narrow" eng: "Stereo Narrow"
new: "wąskie stereo" new: "wąskie stereo"
id: LANG_CHANNEL_STEREO_WIDE id: LANG_CHANNEL_STEREO_WIDE
desc: in sound_settings desc: in sound_settings
@ -1464,7 +1464,7 @@ new: "Zaznaczanie linii"
id: LANG_RECORDING_EDITABLE id: LANG_RECORDING_EDITABLE
desc: Editable recordings setting desc: Editable recordings setting
eng: "Independent frames" eng: "Independent frames"
new: "Niezależne ramki" new: "Niezależne ramki"
id: LANG_STATUS_BAR id: LANG_STATUS_BAR
desc: display menu, F3 substitute desc: display menu, F3 substitute
@ -1479,12 +1479,12 @@ new: "Pasek przewijania"
id: LANG_CAPTION_BACKLIGHT id: LANG_CAPTION_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Caption backlight" eng: "Caption backlight"
new: "Podświetlanie napisów" new: "Podświetlanie napisów"
id: LANG_INVERT_CURSOR_POINTER id: LANG_INVERT_CURSOR_POINTER
desc: in settings_menu desc: in settings_menu
eng: "Pointer" eng: "Pointer"
new: "wskaźnik" new: "wskaźnik"
id: LANG_INVERT_CURSOR_BAR id: LANG_INVERT_CURSOR_BAR
desc: in settings_menu desc: in settings_menu
@ -1504,7 +1504,7 @@ new: "w negatywie"
id: LANG_MAX_FILES_IN_DIR id: LANG_MAX_FILES_IN_DIR
desc: in settings_menu desc: in settings_menu
eng: "Max files in dir browser" eng: "Max files in dir browser"
new: "Maksym. plików w przeglądarce katalogów" new: "Maksym. plików w przeglądarce katalogów"
id: LANG_MAX_FILES_IN_PLAYLIST id: LANG_MAX_FILES_IN_PLAYLIST
desc: in settings_menu desc: in settings_menu
@ -1529,7 +1529,7 @@ new: "zawsze"
id: LANG_JUMP_SCROLL_DELAY id: LANG_JUMP_SCROLL_DELAY
desc: (player) Delay before making a jump scroll desc: (player) Delay before making a jump scroll
eng: "Jump Scroll Delay" eng: "Jump Scroll Delay"
new: "opóźnienie skoku przewijania" new: "opóźnienie skoku przewijania"
id: LANG_RECORD_TIMESPLIT id: LANG_RECORD_TIMESPLIT
desc: Prompt for record timer interval setting, in the record settings menu desc: Prompt for record timer interval setting, in the record settings menu
@ -1544,12 +1544,12 @@ new: "Dziel co:"
id: LANG_SHOW_ICONS id: LANG_SHOW_ICONS
desc: in settings_menu desc: in settings_menu
eng: "Show Icons" eng: "Show Icons"
new: "Pokaż ikony" new: "Pokaż ikony"
id: LANG_DISK_FULL id: LANG_DISK_FULL
desc: in recording screen desc: in recording screen
eng: "The disk is full. Press OFF to continue." eng: "The disk is full. Press OFF to continue."
new: "Dysk jest pełny. Wciśnij OFF żeby kontynuować." new: "Dysk jest pełny. Wciśnij OFF żeby kontynuować."
id: LANG_CONFIRM_WITH_PLAY_RECORDER id: LANG_CONFIRM_WITH_PLAY_RECORDER
desc: Generic recorder string to use to confirm desc: Generic recorder string to use to confirm
@ -1559,7 +1559,7 @@ new: "GRAJ = Tak"
id: LANG_CANCEL_WITH_ANY_RECORDER id: LANG_CANCEL_WITH_ANY_RECORDER
desc: Generic recorder string to use to cancel desc: Generic recorder string to use to cancel
eng: "Any Other = No" eng: "Any Other = No"
new: "Każdy inny = Nie" new: "Każdy inny = Nie"
## ##
## Strings used in the plugin loader: ## Strings used in the plugin loader:
@ -1568,12 +1568,12 @@ new: "Ka
id: LANG_PLUGIN_CANT_OPEN id: LANG_PLUGIN_CANT_OPEN
desc: Plugin open error message desc: Plugin open error message
eng: "Can't open %s" eng: "Can't open %s"
new: "Nie mogę otworzyć %s" new: "Nie mogę otworzyć %s"
id: LANG_READ_FAILED id: LANG_READ_FAILED
desc: There was an error reading a file desc: There was an error reading a file
eng: "Failed reading %s" eng: "Failed reading %s"
new: "Błąd odczytu %s" new: "Błąd odczytu %s"
id: LANG_PLUGIN_WRONG_MODEL id: LANG_PLUGIN_WRONG_MODEL
desc: The plugin is not compatible with the archos model trying to run it desc: The plugin is not compatible with the archos model trying to run it
@ -1588,7 +1588,7 @@ new: "Wersja niekompatybilna"
id: LANG_PLUGIN_ERROR id: LANG_PLUGIN_ERROR
desc: The plugin return an error code desc: The plugin return an error code
eng: "Plugin returned error" eng: "Plugin returned error"
new: "Wtyczka zwróciła błąd" new: "Wtyczka zwróciła błąd"
## ##
## boot change detection ## boot change detection
@ -1597,17 +1597,17 @@ new: "Wtyczka zwr
id: LANG_BOOT_CHANGED id: LANG_BOOT_CHANGED
desc: File browser discovered the boot file was changed desc: File browser discovered the boot file was changed
eng: "Boot changed" eng: "Boot changed"
new: "Zmienił się plik startowy" new: "Zmienił się plik startowy"
id: LANG_REBOOT_NOW id: LANG_REBOOT_NOW
desc: Do you want to reboot? desc: Do you want to reboot?
eng: "Reboot now?" eng: "Reboot now?"
new: "Zresetować teraz?" new: "Zresetować teraz?"
id: LANG_FLIPIT id: LANG_FLIPIT
desc: in the games menu desc: in the games menu
eng: "Flipit" eng: "Flipit"
new: "Odwróć" new: "Odwróć"
id: LANG_OTHELO id: LANG_OTHELO
desc: in the games menu desc: in the games menu
@ -1627,7 +1627,7 @@ new: "Gwiazda"
id: LANG_QUEUE_LAST id: LANG_QUEUE_LAST
desc: in onplay menu. queue a track/playlist at end of playlist. desc: in onplay menu. queue a track/playlist at end of playlist.
eng: "Queue last" eng: "Queue last"
new: "Kolejkuj ostatni/ą" new: "Kolejkuj ostatni/ą"
id: LANG_INSERT id: LANG_INSERT
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
@ -1637,22 +1637,22 @@ new: "Wstaw"
id: LANG_INSERT_LAST id: LANG_INSERT_LAST
desc: in onplay menu. append a track/playlist into dynamic playlist. desc: in onplay menu. append a track/playlist into dynamic playlist.
eng: "Insert last" eng: "Insert last"
new: "Wstaw ostatni/ą" new: "Wstaw ostatni/ą"
id: LANG_QUEUE_FIRST id: LANG_QUEUE_FIRST
desc: in onplay menu. queue a track/playlist into dynamic playlist. desc: in onplay menu. queue a track/playlist into dynamic playlist.
eng: "Queue next" eng: "Queue next"
new: "Kolejkuj następny/ą" new: "Kolejkuj następny/ą"
id: LANG_INSERT_FIRST id: LANG_INSERT_FIRST
desc: in onplay menu. insert a track/playlist into dynamic playlist. desc: in onplay menu. insert a track/playlist into dynamic playlist.
eng: "Insert next" eng: "Insert next"
new: "Wstaw następny/ą" new: "Wstaw następny/ą"
id: LANG_SAVE_DYNAMIC_PLAYLIST id: LANG_SAVE_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
eng: "Save Dynamic Playlist" eng: "Save Dynamic Playlist"
new: "Zachowaj dynamiczną playlistę" new: "Zachowaj dynamiczną playlistę"
id: LANG_PLAYLIST_MENU id: LANG_PLAYLIST_MENU
desc: in main menu. desc: in main menu.
@ -1662,17 +1662,17 @@ new: "Opcje playlisty"
id: LANG_PLAYLIST_INSERT_COUNT id: LANG_PLAYLIST_INSERT_COUNT
desc: splash number of tracks inserted desc: splash number of tracks inserted
eng: "Inserted %d tracks (%s)" eng: "Inserted %d tracks (%s)"
new: "Wstawione %d plików (%s)" new: "Wstawione %d plików (%s)"
id: LANG_PLAYLIST_QUEUE_COUNT id: LANG_PLAYLIST_QUEUE_COUNT
desc: splash number of tracks queued desc: splash number of tracks queued
eng: "Queued %d tracks (%s)" eng: "Queued %d tracks (%s)"
new: "W kolejce %d plików (%s)" new: "W kolejce %d plików (%s)"
id: LANG_PLAYLIST_SAVE_COUNT id: LANG_PLAYLIST_SAVE_COUNT
desc: splash number of tracks saved desc: splash number of tracks saved
eng: "Saved %d tracks (%s)" eng: "Saved %d tracks (%s)"
new: "Zachowane %d plików (%s)" new: "Zachowane %d plików (%s)"
id: LANG_OFF_ABORT id: LANG_OFF_ABORT
desc: Used on recorder models desc: Used on recorder models
@ -1687,22 +1687,22 @@ new: "STOP - anuluj"
id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR
desc: Playlist error desc: Playlist error
eng: "Error updating playlist control file" eng: "Error updating playlist control file"
new: "Błąd przy odświeżaniu pliku kontroli playlisty" new: "Błąd przy odświeżaniu pliku kontroli playlisty"
id: LANG_PLAYLIST_ACCESS_ERROR id: LANG_PLAYLIST_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist file" eng: "Error accessing playlist file"
new: "Brak dostępu do pliku playlisty" new: "Brak dostępu do pliku playlisty"
id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist control file" eng: "Error accessing playlist control file"
new: "Brak dostępu do pliku kontroli playlisty" new: "Brak dostępu do pliku kontroli playlisty"
id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing directory" eng: "Error accessing directory"
new: "Brak dostępu do katalogu" new: "Brak dostępu do katalogu"
id: LANG_PLAYLIST_CONTROL_INVALID id: LANG_PLAYLIST_CONTROL_INVALID
desc: Playlist resume error desc: Playlist resume error
@ -1732,7 +1732,7 @@ new: "Firmware"
id: LANG_LANGUAGE id: LANG_LANGUAGE
desc: in settings_menu desc: in settings_menu
eng: "Language" eng: "Language"
new: "Język" new: "Język"
id: LANG_WHILE_PLAYING id: LANG_WHILE_PLAYING
desc: in settings_menu() desc: in settings_menu()

View File

@ -3,12 +3,12 @@
id: LANG_SOUND_SETTINGS id: LANG_SOUND_SETTINGS
desc: in the main menu desc: in the main menu
eng: "Sound Settings" eng: "Sound Settings"
new: "Opções de Som" new: "Opções de Som"
id: LANG_GENERAL_SETTINGS id: LANG_GENERAL_SETTINGS
desc: in the main menu desc: in the main menu
eng: "General Settings" eng: "General Settings"
new: "Opções Gerais" new: "Opções Gerais"
id: LANG_GAMES id: LANG_GAMES
desc: in the main menu desc: in the main menu
@ -28,12 +28,12 @@ new: "Info"
id: LANG_VERSION id: LANG_VERSION
desc: in the main menu desc: in the main menu
eng: "Version" eng: "Version"
new: "Versão" new: "Versão"
id: LANG_DEBUG id: LANG_DEBUG
desc: in the main menu desc: in the main menu
eng: "Debug (keep out!)" eng: "Debug (keep out!)"
new: "Debug (não entre!)" new: "Debug (não entre!)"
id: LANG_USB id: LANG_USB
desc: in the main menu desc: in the main menu
@ -118,7 +118,7 @@ new: "A reproduzir..."
id: LANG_PLAYINDICES_PLAYLIST id: LANG_PLAYINDICES_PLAYLIST
desc: in playlist.indices() when playlist is full desc: in playlist.indices() when playlist is full
eng: "Playlist" eng: "Playlist"
new: "Lista de reprodução" new: "Lista de reprodução"
id: LANG_PLAYINDICES_BUFFER id: LANG_PLAYINDICES_BUFFER
desc: in playlist.indices() when playlist is full desc: in playlist.indices() when playlist is full
@ -148,7 +148,7 @@ new: "Falhou a Salvaguarda"
id: LANG_SETTINGS_BATTERY_RECORDER id: LANG_SETTINGS_BATTERY_RECORDER
desc: if save settings has failed desc: if save settings has failed
eng: "Is battery low?" eng: "Is battery low?"
new: "Está a bat. baixa?" new: "Está a bat. baixa?"
id: LANG_TIME_SET id: LANG_TIME_SET
desc: used in set_time() desc: used in set_time()
@ -183,7 +183,7 @@ new: "Contraste"
id: LANG_SHUFFLE id: LANG_SHUFFLE
desc: in settings_menu desc: in settings_menu
eng: "Shuffle" eng: "Shuffle"
new: "Aleatório" new: "Aleatório"
id: LANG_PLAY_SELECTED id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
@ -198,7 +198,7 @@ new: ""
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
eng: "Sort Case Sensitive" eng: "Sort Case Sensitive"
new: "Ordenação sensível a maisc./min." new: "Ordenação sensível a maisc./min."
id: LANG_RESUME id: LANG_RESUME
desc: in settings_menu desc: in settings_menu
@ -223,7 +223,7 @@ new: "Ligar"
id: LANG_BACKLIGHT id: LANG_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Backlight" eng: "Backlight"
new: "Retro-iluminação" new: "Retro-iluminação"
id: LANG_BACKLIGHT_ON id: LANG_BACKLIGHT_ON
desc: in settings_menu desc: in settings_menu
@ -253,7 +253,7 @@ new: "Paragem do disco"
id: LANG_FFRW_STEP id: LANG_FFRW_STEP
desc: in settings_menu desc: in settings_menu
eng: "FF/RW Min Step" eng: "FF/RW Min Step"
new: "Passo mínimo de FF/RW" new: "Passo mínimo de FF/RW"
id: LANG_FFRW_ACCEL id: LANG_FFRW_ACCEL
desc: in settings_menu desc: in settings_menu
@ -263,7 +263,7 @@ new: "Acelar. FF/RW"
id: LANG_FOLLOW id: LANG_FOLLOW
desc: in settings_menu desc: in settings_menu
eng: "Follow Playlist" eng: "Follow Playlist"
new: "Seguir a lista de reprodução" new: "Seguir a lista de reprodução"
# depreciated # depreciated
id: LANG_RESET_ASK_PLAYER id: LANG_RESET_ASK_PLAYER
@ -297,7 +297,7 @@ new: "OFF=Cancelar"
id: LANG_RESET_DONE_SETTING id: LANG_RESET_DONE_SETTING
desc: visual confirmation after settings reset desc: visual confirmation after settings reset
eng: "Settings" eng: "Settings"
new: "Opções" new: "Opções"
id: LANG_RESET_DONE_CLEAR id: LANG_RESET_DONE_CLEAR
desc: visual confirmation after settings reset desc: visual confirmation after settings reset
@ -312,7 +312,7 @@ new: "Cancelado"
id: LANG_CASE_MENU id: LANG_CASE_MENU
desc: in fileview_settings_menu() desc: in fileview_settings_menu()
eng: "Sort Mode" eng: "Sort Mode"
new: "Modo de ordenação" new: "Modo de ordenação"
id: LANG_SCROLL_MENU id: LANG_SCROLL_MENU
desc: in display_settings_menu() desc: in display_settings_menu()
@ -322,7 +322,7 @@ new: "Vel. de desloc. do ecran"
id: LANG_RESET id: LANG_RESET
desc: in system_settings_menu() desc: in system_settings_menu()
eng: "Reset settings" eng: "Reset settings"
new: "Opções de reinicialização" new: "Opções de reinicialização"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
@ -352,7 +352,7 @@ new: "Volume"
id: LANG_BALANCE id: LANG_BALANCE
desc: in sound_settings desc: in sound_settings
eng: "Balance" eng: "Balance"
new: "Balanço" new: "Balanço"
id: LANG_BASS id: LANG_BASS
desc: in sound_settings desc: in sound_settings
@ -377,7 +377,7 @@ new: "Realce dos graves"
id: LANG_DECAY id: LANG_DECAY
desc: in sound_settings desc: in sound_settings
eng: "AV Decay Time" eng: "AV Decay Time"
new: "Tempo de caída de AV" new: "Tempo de caída de AV"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
@ -387,7 +387,7 @@ new: "Canais"
id: LANG_CHANNEL id: LANG_CHANNEL
desc: in sound_settings desc: in sound_settings
eng: "Channel Configuration" eng: "Channel Configuration"
new: "Configuração de canal" new: "Configuração de canal"
id: LANG_CHANNEL_STEREO id: LANG_CHANNEL_STEREO
desc: in sound_settings desc: in sound_settings
@ -422,7 +422,7 @@ new: "Buffer de direct."
id: LANG_SHOWDIR_ERROR_FULL id: LANG_SHOWDIR_ERROR_FULL
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
eng: "is full!" eng: "is full!"
new: "está cheio!" new: "está cheio!"
id: LANG_RESUME_ASK id: LANG_RESUME_ASK
desc: question asked at the begining when resume is on desc: question asked at the begining when resume is on
@ -442,7 +442,7 @@ new: "PLAY = Sim"
id: LANG_RESUME_CANCEL_RECORDER id: LANG_RESUME_CANCEL_RECORDER
desc: possible answer to resume question desc: possible answer to resume question
eng: "Any Other = No" eng: "Any Other = No"
new: "Qualquer outra = Não" new: "Qualquer outra = Não"
id: LANG_KEYLOCK_ON_PLAYER id: LANG_KEYLOCK_ON_PLAYER
desc: displayed when key lock is on desc: displayed when key lock is on
@ -457,32 +457,32 @@ new: "Teclado desbloq."
id: LANG_KEYLOCK_ON_RECORDER id: LANG_KEYLOCK_ON_RECORDER
desc: displayed when key lock is on desc: displayed when key lock is on
eng: "Key lock is ON" eng: "Key lock is ON"
new: "Teclado está bloq." new: "Teclado está bloq."
id: LANG_KEYLOCK_OFF_RECORDER id: LANG_KEYLOCK_OFF_RECORDER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key lock is OFF" eng: "Key lock is OFF"
new: "Teclado está desbloq." new: "Teclado está desbloq."
id: LANG_MUTE_ON_PLAYER id: LANG_MUTE_ON_PLAYER
desc: displayed when mute is on desc: displayed when mute is on
eng: "Mute ON" eng: "Mute ON"
new: "Silêncio activo" new: "Silêncio activo"
id: LANG_MUTE_OFF_PLAYER id: LANG_MUTE_OFF_PLAYER
desc: displayed when mute is off desc: displayed when mute is off
eng: "Mute OFF" eng: "Mute OFF"
new: "Silêncio desactivo" new: "Silêncio desactivo"
id: LANG_MUTE_ON_RECORDER id: LANG_MUTE_ON_RECORDER
desc: displayed when mute is on desc: displayed when mute is on
eng: "Mute is ON" eng: "Mute is ON"
new: "Silêncio está activo" new: "Silêncio está activo"
id: LANG_MUTE_OFF_RECORDER id: LANG_MUTE_OFF_RECORDER
desc: displayed when mute is off desc: displayed when mute is off
eng: "Mute is OFF" eng: "Mute is OFF"
new: "Silêncio está desactivo" new: "Silêncio está desactivo"
id: LANG_ID3_INFO id: LANG_ID3_INFO
desc: in the browse_id3() function desc: in the browse_id3() function
@ -497,12 +497,12 @@ new: "--Ecran-- "
id: LANG_ID3_TITLE id: LANG_ID3_TITLE
desc: in wps desc: in wps
eng: "[Title]" eng: "[Title]"
new: "[Título]" new: "[Título]"
id: LANG_ID3_NO_TITLE id: LANG_ID3_NO_TITLE
desc: in wps when no title is avaible desc: in wps when no title is avaible
eng: "<no title>" eng: "<no title>"
new: "<sem título>" new: "<sem título>"
id: LANG_ID3_ARTIST id: LANG_ID3_ARTIST
desc: in wps desc: in wps
@ -527,12 +527,12 @@ new: "<sem album>"
id: LANG_ID3_TRACKNUM id: LANG_ID3_TRACKNUM
desc: in wps desc: in wps
eng: "[Tracknum]" eng: "[Tracknum]"
new: "[Número pista]" new: "[Número pista]"
id: LANG_ID3_NO_TRACKNUM id: LANG_ID3_NO_TRACKNUM
desc: in wps if no track number is avaible desc: in wps if no track number is avaible
eng: "<no tracknum>" eng: "<no tracknum>"
new: "<sem número pista>" new: "<sem número pista>"
id: LANG_ID3_LENGHT id: LANG_ID3_LENGHT
desc: in wps desc: in wps
@ -552,7 +552,7 @@ new: "[Bitrate]"
id: LANG_ID3_FRECUENCY id: LANG_ID3_FRECUENCY
desc: in wps desc: in wps
eng: "[Frequency]" eng: "[Frequency]"
new: "[Frequência]" new: "[Frequência]"
id: LANG_ID3_PATH id: LANG_ID3_PATH
desc: in wps desc: in wps
@ -612,7 +612,7 @@ new: ""
id: LANG_END_PLAYLIST_RECORDER id: LANG_END_PLAYLIST_RECORDER
desc: when playlist has finished desc: when playlist has finished
eng: "End of song list" eng: "End of song list"
new: "Fim da lista de canções" new: "Fim da lista de canções"
id: LANG_END_CONFIRM_RECORDER id: LANG_END_CONFIRM_RECORDER
desc: when playlist has finished desc: when playlist has finished
@ -622,17 +622,17 @@ new: ""
id: LANG_SNAKE_SCORE id: LANG_SNAKE_SCORE
desc: when you die in snake game desc: when you die in snake game
eng: "Your score:" eng: "Your score:"
new: "A sua pontuação:" new: "A sua pontuação:"
id: LANG_SNAKE_HISCORE id: LANG_SNAKE_HISCORE
desc: high score in snake game desc: high score in snake game
eng: "High Score: %d" eng: "High Score: %d"
new: "Maior Pontuação: %d" new: "Maior Pontuação: %d"
id: LANG_SNAKE_HISCORE_NEW id: LANG_SNAKE_HISCORE_NEW
desc: new high score in snake game desc: new high score in snake game
eng: "New High Score!" eng: "New High Score!"
new: "Nova maior pontuação!" new: "Nova maior pontuação!"
id: LANG_SNAKE_PAUSE id: LANG_SNAKE_PAUSE
desc: displayed when game is paused desc: displayed when game is paused
@ -652,7 +652,7 @@ new: "[OFF] para sair"
id: LANG_SNAKE_LEVEL id: LANG_SNAKE_LEVEL
desc: level of difficulty desc: level of difficulty
eng: "Level - %d" eng: "Level - %d"
new: "Nível - %d" new: "Nível - %d"
id: LANG_SNAKE_RANGE id: LANG_SNAKE_RANGE
desc: range of levels desc: range of levels
@ -662,12 +662,12 @@ new: "(1 - devagar, 9 - depressa)"
id: LANG_SNAKE_START id: LANG_SNAKE_START
desc: how to start or pause the game desc: how to start or pause the game
eng: "[PLAY] to start/pause" eng: "[PLAY] to start/pause"
new: "[PLAY] para começar/pausa" new: "[PLAY] para começar/pausa"
id: LANG_SOKOBAN_LEVEL id: LANG_SOKOBAN_LEVEL
desc: must be smaller than 6 characters desc: must be smaller than 6 characters
eng: "Level" eng: "Level"
new: "Nível" new: "Nível"
id: LANG_SOKOBAN_MOVE id: LANG_SOKOBAN_MOVE
desc: must be smaller than 6 characters desc: must be smaller than 6 characters
@ -687,17 +687,17 @@ new: "[OFF] para parar"
id: LANG_SOKOBAN_F1 id: LANG_SOKOBAN_F1
desc: what does F1 do desc: what does F1 do
eng: "[F1] - level" eng: "[F1] - level"
new: "[F1] - nível" new: "[F1] - nível"
id: LANG_SOKOBAN_F2 id: LANG_SOKOBAN_F2
desc: what does F2 do desc: what does F2 do
eng: "[F2] same level" eng: "[F2] same level"
new: "[F2] mesmo nível" new: "[F2] mesmo nível"
id: LANG_SOKOBAN_F3 id: LANG_SOKOBAN_F3
desc: what does F3 do desc: what does F3 do
eng: "[F3] + level" eng: "[F3] + level"
new: "[F3] + nível" new: "[F3] + nível"
# Next ids are for Worlmet Game. # Next ids are for Worlmet Game.
# Lenght restrictions for score board strings (LANG_SB_XXX): # Lenght restrictions for score board strings (LANG_SB_XXX):
@ -788,7 +788,7 @@ new: "Perdeu!"
id: LANG_TETRIS_LEVEL id: LANG_TETRIS_LEVEL
desc: tetris game desc: tetris game
eng: "Rows - Level" eng: "Rows - Level"
new: "Linhas - Nível" new: "Linhas - Nível"
id: LANG_POWEROFF_IDLE id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
@ -798,7 +798,7 @@ new: "Auto Desligar"
id: LANG_LANGUAGE_LOADED id: LANG_LANGUAGE_LOADED
desc: shown when a language has been loaded from the dir browser desc: shown when a language has been loaded from the dir browser
eng: "new language" eng: "new language"
new: "nova língua" new: "nova língua"
id: LANG_FILTER id: LANG_FILTER
desc: setting name for dir filter desc: setting name for dir filter
@ -808,7 +808,7 @@ new: "Mostrar ficheiros"
id: LANG_FILTER_MUSIC id: LANG_FILTER_MUSIC
desc: show only music-related files desc: show only music-related files
eng: "Music" eng: "Music"
new: "Música" new: "Música"
id: LANG_FILTER_SUPPORTED id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
@ -828,7 +828,7 @@ new: "Sim"
id: LANG_SET_BOOL_NO id: LANG_SET_BOOL_NO
desc: bool false representation desc: bool false representation
eng: "No" eng: "No"
new: "Não" new: "Não"
id: LANG_PM_MENU id: LANG_PM_MENU
desc: in the display menu desc: in the display menu
@ -863,7 +863,7 @@ new: "Unidades por leitura"
id: LANG_BACKLIGHT_ON_WHEN_CHARGING id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
eng: "Backlight On When Plugged" eng: "Backlight On When Plugged"
new: "Com Retro-iluminação quando ligado" new: "Com Retro-iluminação quando ligado"
id: LANG_REPEAT id: LANG_REPEAT
desc: in settings_menu desc: in settings_menu
@ -898,12 +898,12 @@ new: "Formato Horas"
id: LANG_12_HOUR_CLOCK id: LANG_12_HOUR_CLOCK
desc: option for 12 hour clock desc: option for 12 hour clock
eng: "12 hour clock" eng: "12 hour clock"
new: "Relógio 12 horas" new: "Relógio 12 horas"
id: LANG_24_HOUR_CLOCK id: LANG_24_HOUR_CLOCK
desc: option for 24 hour clock desc: option for 24 hour clock
eng: "24 hour clock" eng: "24 hour clock"
new: "Relógio 24 horas" new: "Relógio 24 horas"
id: LANG_WEEKDAY_SUNDAY id: LANG_WEEKDAY_SUNDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -913,32 +913,32 @@ new: "Dom"
id: LANG_WEEKDAY_MONDAY id: LANG_WEEKDAY_MONDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Mon" eng: "Mon"
new: "2ªf" new: "2ªf"
id: LANG_WEEKDAY_TUESDAY id: LANG_WEEKDAY_TUESDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Tue" eng: "Tue"
new: "3ªf" new: "3ªf"
id: LANG_WEEKDAY_WEDNESDAY id: LANG_WEEKDAY_WEDNESDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Wed" eng: "Wed"
new: "4ªf" new: "4ªf"
id: LANG_WEEKDAY_THURSDAY id: LANG_WEEKDAY_THURSDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Thu" eng: "Thu"
new: "5ªf" new: "5ªf"
id: LANG_WEEKDAY_FRIDAY id: LANG_WEEKDAY_FRIDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Fri" eng: "Fri"
new: "6ªf" new: "6ªf"
id: LANG_WEEKDAY_SATURDAY id: LANG_WEEKDAY_SATURDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Sat" eng: "Sat"
new: "Sáb" new: "Sáb"
id: LANG_MONTH_JANUARY id: LANG_MONTH_JANUARY
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -1008,7 +1008,7 @@ new: "Cubo"
id: LANG_OSCILLOGRAPH id: LANG_OSCILLOGRAPH
desc: the name of the oscillograph demo in the demo menu desc: the name of the oscillograph demo in the demo menu
eng: "Oscillograph" eng: "Oscillograph"
new: "Oscilosgráfico" new: "Oscilosgráfico"
id: LANG_RESUME_SETTING_ASK_ONCE id: LANG_RESUME_SETTING_ASK_ONCE
desc: in settings_menu desc: in settings_menu

View File

@ -66,12 +66,12 @@ new: "Baterie: %d%%%s"
id: LANG_BATTERY_CHARGE id: LANG_BATTERY_CHARGE
desc: tells that the battery is charging, instead of battery level desc: tells that the battery is charging, instead of battery level
eng: "Battery: Charging" eng: "Battery: Charging"
new: "Bateria se încarca" new: "Bateria se încarca"
id: LANG_BOUNCE id: LANG_BOUNCE
desc: in the demos menu desc: in the demos menu
eng: "Bounce" eng: "Bounce"
new: "Text în salturi" new: "Text în salturi"
id: LANG_SNOW id: LANG_SNOW
desc: in the demos menu desc: in the demos menu
@ -101,7 +101,7 @@ new: "Sarpe"
id: LANG_PLAYLIST_LOAD id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
eng: "Loading..." eng: "Loading..."
new: "Încarcare..." new: "Încarcare..."
id: LANG_PLAYLIST_SHUFFLE id: LANG_PLAYLIST_SHUFFLE
desc: displayed on screen while shuffling a playlist desc: displayed on screen while shuffling a playlist
@ -201,7 +201,7 @@ new: "Continuare"
id: LANG_OFF id: LANG_OFF
desc: Used in a lot of places desc: Used in a lot of places
eng: "Off" eng: "Off"
new: "Închis" new: "Închis"
id: LANG_RESUME_SETTING_ASK id: LANG_RESUME_SETTING_ASK
desc: in settings_menu desc: in settings_menu
@ -346,7 +346,7 @@ new: "Grave"
id: LANG_TREBLE id: LANG_TREBLE
desc: in sound_settings desc: in sound_settings
eng: "Treble" eng: "Treble"
new: "Înalte" new: "Înalte"
id: LANG_LOUDNESS id: LANG_LOUDNESS
desc: in sound_settings desc: in sound_settings
@ -386,7 +386,7 @@ new: "Mono"
id: LANG_CHANNEL_LEFT id: LANG_CHANNEL_LEFT
desc: in sound_settings desc: in sound_settings
eng: "Mono Left" eng: "Mono Left"
new: "Mono Stânga" new: "Mono Stânga"
id: LANG_CHANNEL_RIGHT id: LANG_CHANNEL_RIGHT
desc: in sound_settings desc: in sound_settings
@ -586,7 +586,7 @@ new: "Bara"
id: LANG_END_PLAYLIST_PLAYER id: LANG_END_PLAYLIST_PLAYER
desc: when playlist has finished desc: when playlist has finished
eng: "End Of List" eng: "End Of List"
new: "Sfârsit de lista" new: "Sfârsit de lista"
id: LANG_END_CONFIRM_PLAYER id: LANG_END_CONFIRM_PLAYER
desc: when playlist has finished desc: when playlist has finished
@ -596,7 +596,7 @@ new: ""
id: LANG_END_PLAYLIST_RECORDER id: LANG_END_PLAYLIST_RECORDER
desc: when playlist has finished desc: when playlist has finished
eng: "End Of Song List" eng: "End Of Song List"
new: "Sfârsitul listei" new: "Sfârsitul listei"
id: LANG_END_CONFIRM_RECORDER id: LANG_END_CONFIRM_RECORDER
desc: when playlist has finished desc: when playlist has finished
@ -631,7 +631,7 @@ new: "[PLAY] pentru continuare"
id: LANG_SNAKE_QUIT id: LANG_SNAKE_QUIT
desc: how to quit game desc: how to quit game
eng: "[OFF] To Quit" eng: "[OFF] To Quit"
new: "[OFF] pentru încetare" new: "[OFF] pentru încetare"
id: LANG_SNAKE_LEVEL id: LANG_SNAKE_LEVEL
desc: level of difficulty desc: level of difficulty
@ -646,7 +646,7 @@ new: "(1 - lent, 9 - rapid)"
id: LANG_SNAKE_START id: LANG_SNAKE_START
desc: how to start or pause the game desc: how to start or pause the game
eng: "[PLAY] To Start/Pause" eng: "[PLAY] To Start/Pause"
new: "[PLAY] pentru început/pauza" new: "[PLAY] pentru început/pauza"
id: LANG_SOKOBAN_LEVEL id: LANG_SOKOBAN_LEVEL
desc: must be smaller than 6 characters desc: must be smaller than 6 characters
@ -661,7 +661,7 @@ new: "Deplasari"
id: LANG_SOKOBAN_WIN id: LANG_SOKOBAN_WIN
desc: displayed when you win desc: displayed when you win
eng: "YOU WIN!!" eng: "YOU WIN!!"
new: "AI CÂSTIGAT!!" new: "AI CÂSTIGAT!!"
id: LANG_SOKOBAN_QUIT id: LANG_SOKOBAN_QUIT
desc: how to quit game desc: how to quit game
@ -696,7 +696,7 @@ new: "Creste"
id: LANG_WORMLET_HUNGRY id: LANG_WORMLET_HUNGRY
desc: wormlet game desc: wormlet game
eng: "Hungry" eng: "Hungry"
new: "Flamând" new: "Flamând"
id: LANG_WORMLET_WORMED id: LANG_WORMLET_WORMED
desc: wormlet game desc: wormlet game
@ -1236,7 +1236,7 @@ new: "Alarma: %02d:%02d"
id: LANG_ALARM_MOD_TIME_TO_GO id: LANG_ALARM_MOD_TIME_TO_GO
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod. desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
eng: "Waking Up In %d:%02d" eng: "Waking Up In %d:%02d"
new: "Alarma în %d:%02d" new: "Alarma în %d:%02d"
id: LANG_CREATE_PLAYLIST id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -268,7 +268,7 @@ new: "Gercekten?"
id: LANG_RESET_CONFIRM_PLAYER id: LANG_RESET_CONFIRM_PLAYER
desc: confirm to reset settings desc: confirm to reset settings
eng: "Play/Stop" eng: "Play/Stop"
new: "Çal/Dur" new: "Çal/Dur"
id: LANG_RESET_ASK_RECORDER id: LANG_RESET_ASK_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
@ -279,7 +279,7 @@ new: "Emin misiniz?"
id: LANG_RESET_CONFIRM_RECORDER id: LANG_RESET_CONFIRM_RECORDER
desc: confirm to reset settings desc: confirm to reset settings
eng: "Play = Yes" eng: "Play = Yes"
new: "Çal = Evet" new: "Çal = Evet"
# depreciated # depreciated
id: LANG_RESET_CANCEL_RECORDER id: LANG_RESET_CANCEL_RECORDER
@ -320,7 +320,7 @@ new: "Ayarlari basa dondur"
id: LANG_PLAYBACK id: LANG_PLAYBACK
desc: in settings_menu() desc: in settings_menu()
eng: "Playback" eng: "Playback"
new: "Çalma" new: "Çalma"
id: LANG_FILE id: LANG_FILE
desc: in settings_menu() desc: in settings_menu()
@ -370,7 +370,7 @@ new: "Bass Boost"
id: LANG_DECAY id: LANG_DECAY
desc: in sound_settings desc: in sound_settings
eng: "AV decay time" eng: "AV decay time"
new: "AV sönüm zamani" new: "AV sönüm zamani"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
@ -425,12 +425,12 @@ new: "Kaldigi yerden?"
id: LANG_RESUME_CONFIRM_PLAYER id: LANG_RESUME_CONFIRM_PLAYER
desc: posible answers to resume question desc: posible answers to resume question
eng: "(PLAY/STOP)" eng: "(PLAY/STOP)"
new: "(ÇAL/DUR)" new: "(ÇAL/DUR)"
id: LANG_RESUME_CONFIRM_RECORDER id: LANG_RESUME_CONFIRM_RECORDER
desc: posible answer to resume question desc: posible answer to resume question
eng: "Play = Yes" eng: "Play = Yes"
new: "Çal = Evet" new: "Çal = Evet"
id: LANG_RESUME_CANCEL_RECORDER id: LANG_RESUME_CANCEL_RECORDER
desc: posible answer to resume question desc: posible answer to resume question
@ -876,7 +876,7 @@ new: "Calani"
id: LANG_RESET_CONFIRM id: LANG_RESET_CONFIRM
desc: confirm to reset settings desc: confirm to reset settings
eng: "PLAY=Reset" eng: "PLAY=Reset"
new: "PLAY=Basa Dön" new: "PLAY=Basa Dön"
id: LANG_RESET_CANCEL id: LANG_RESET_CANCEL
desc: confirm to reset settings desc: confirm to reset settings
@ -916,7 +916,7 @@ new: "Sal"
id: LANG_WEEKDAY_WEDNESDAY id: LANG_WEEKDAY_WEDNESDAY
desc: abbreviation for weekday desc: abbreviation for weekday
eng: "Wed" eng: "Wed"
new: "Çar" new: "Çar"
id: LANG_WEEKDAY_THURSDAY id: LANG_WEEKDAY_THURSDAY
desc: abbreviation for weekday desc: abbreviation for weekday

View File

@ -48,7 +48,7 @@ new: "Puffer: %d.%03dMB"
id: LANG_BATTERY_CHARGE id: LANG_BATTERY_CHARGE
desc: tells that the battery is charging, instead of battery level desc: tells that the battery is charging, instead of battery level
eng: "Battery: Charging" eng: "Battery: Charging"
new: "Akku: Üfladu" new: "Akku: Üfladu"
id: LANG_PLAYLIST_LOAD id: LANG_PLAYLIST_LOAD
desc: displayed on screen while loading a playlist desc: displayed on screen while loading a playlist
@ -73,22 +73,22 @@ new: "Puffer voll"
id: LANG_SETTINGS_SAVE_PLAYER id: LANG_SETTINGS_SAVE_PLAYER
desc: displayed if save settings has failed desc: displayed if save settings has failed
eng: "Save Failed" eng: "Save Failed"
new: "Spiicherfähler" new: "Spiicherfähler"
id: LANG_SETTINGS_BATTERY_PLAYER id: LANG_SETTINGS_BATTERY_PLAYER
desc: if save settings has failed desc: if save settings has failed
eng: "Partition?" eng: "Partition?"
new: "Akku läär?" new: "Akku läär?"
id: LANG_SETTINGS_SAVE_RECORDER id: LANG_SETTINGS_SAVE_RECORDER
desc: displayed if save settings has failed desc: displayed if save settings has failed
eng: "Save Failed" eng: "Save Failed"
new: "Spiicherfähler" new: "Spiicherfähler"
id: LANG_SETTINGS_BATTERY_RECORDER id: LANG_SETTINGS_BATTERY_RECORDER
desc: if save settings has failed desc: if save settings has failed
eng: "No partition?" eng: "No partition?"
new: "Akku läär?" new: "Akku läär?"
id: LANG_TIME_SET id: LANG_TIME_SET
desc: used in set_time() desc: used in set_time()
@ -98,7 +98,7 @@ new: "ON = spiichru"
id: LANG_TIME_REVERT id: LANG_TIME_REVERT
desc: used in set_time() desc: used in set_time()
eng: "OFF To Revert" eng: "OFF To Revert"
new: "OFF = abbrächu" new: "OFF = abbrächu"
id: LANG_CONTRAST id: LANG_CONTRAST
desc: in settings_menu desc: in settings_menu
@ -108,12 +108,12 @@ new: "Kontrascht"
id: LANG_SHUFFLE id: LANG_SHUFFLE
desc: in settings_menu desc: in settings_menu
eng: "Shuffle" eng: "Shuffle"
new: "Züefall" new: "Züefall"
id: LANG_PLAY_SELECTED id: LANG_PLAY_SELECTED
desc: in settings_menu desc: in settings_menu
eng: "Play Selected First" eng: "Play Selected First"
new: "Gwählts zersch abschpilu" new: "Gwählts zersch abschpilu"
id: LANG_SORT_CASE id: LANG_SORT_CASE
desc: in settings_menu desc: in settings_menu
@ -128,12 +128,12 @@ new: "Fortsetzu"
id: LANG_OFF id: LANG_OFF
desc: Used in a lot of places desc: Used in a lot of places
eng: "Off" eng: "Off"
new: "Üs" new: "Üs"
id: LANG_RESUME_SETTING_ASK id: LANG_RESUME_SETTING_ASK
desc: in settings_menu desc: in settings_menu
eng: "Ask" eng: "Ask"
new: "Naafrägu" new: "Naafrägu"
id: LANG_ON id: LANG_ON
desc: Used in a lot of places desc: Used in a lot of places
@ -143,7 +143,7 @@ new: "A"
id: LANG_BACKLIGHT id: LANG_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Backlight" eng: "Backlight"
new: "Bilüüchtig" new: "Bilüüchtig"
id: LANG_SCROLL id: LANG_SCROLL
desc: in settings_menu desc: in settings_menu
@ -163,7 +163,7 @@ new: "Zit/Datum setzu"
id: LANG_SPINDOWN id: LANG_SPINDOWN
desc: in settings_menu desc: in settings_menu
eng: "Disk Spindown" eng: "Disk Spindown"
new: "HDD Motor-Üsschaltzit" new: "HDD Motor-Üsschaltzit"
id: LANG_FFRW_STEP id: LANG_FFRW_STEP
desc: in settings_menu desc: in settings_menu
@ -238,7 +238,7 @@ new: "Syschtem"
id: LANG_VOLUME id: LANG_VOLUME
desc: in sound_settings desc: in sound_settings
eng: "Volume" eng: "Volume"
new: "Lütschterchi" new: "Lütschterchi"
id: LANG_BALANCE id: LANG_BALANCE
desc: in sound_settings desc: in sound_settings
@ -268,12 +268,12 @@ new: "Bass-Verschtercher"
id: LANG_DECAY id: LANG_DECAY
desc: in sound_settings desc: in sound_settings
eng: "AV Decay Time" eng: "AV Decay Time"
new: "AV Trägheit" new: "AV Trägheit"
id: LANG_CHANNEL_MENU id: LANG_CHANNEL_MENU
desc: in sound_settings desc: in sound_settings
eng: "Channels" eng: "Channels"
new: "Kanäl" new: "Kanäl"
id: LANG_CHANNEL id: LANG_CHANNEL
desc: in sound_settings desc: in sound_settings
@ -298,12 +298,12 @@ new: "Mono Lings"
id: LANG_CHANNEL_RIGHT id: LANG_CHANNEL_RIGHT
desc: in sound_settings desc: in sound_settings
eng: "Mono Right" eng: "Mono Right"
new: "Mono Rächts" new: "Mono Rächts"
id: LANG_AUTOVOL id: LANG_AUTOVOL
desc: in sound_settings desc: in sound_settings
eng: "Auto Volume" eng: "Auto Volume"
new: "Autom. Lütschterchi" new: "Autom. Lütschterchi"
id: LANG_SHOWDIR_ERROR_BUFFER id: LANG_SHOWDIR_ERROR_BUFFER
desc: in showdir(), displayed on screen when you reach buffer limit desc: in showdir(), displayed on screen when you reach buffer limit
@ -333,7 +333,7 @@ new: "Schperri A"
id: LANG_KEYLOCK_OFF_PLAYER id: LANG_KEYLOCK_OFF_PLAYER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock OFF" eng: "Key Lock OFF"
new: "Schperri Üs" new: "Schperri Üs"
id: LANG_KEYLOCK_ON_RECORDER id: LANG_KEYLOCK_ON_RECORDER
desc: displayed when key lock is on desc: displayed when key lock is on
@ -343,7 +343,7 @@ new: "Schperri isch A"
id: LANG_KEYLOCK_OFF_RECORDER id: LANG_KEYLOCK_OFF_RECORDER
desc: displayed when key lock is turned off desc: displayed when key lock is turned off
eng: "Key Lock Is OFF" eng: "Key Lock Is OFF"
new: "Schperri isch Üs" new: "Schperri isch Üs"
id: LANG_MUTE_ON_PLAYER id: LANG_MUTE_ON_PLAYER
desc: displayed when mute is on desc: displayed when mute is on
@ -353,7 +353,7 @@ new: "Schtumm A"
id: LANG_MUTE_OFF_PLAYER id: LANG_MUTE_OFF_PLAYER
desc: displayed when mute is off desc: displayed when mute is off
eng: "Mute OFF" eng: "Mute OFF"
new: "Schtumm Üs" new: "Schtumm Üs"
id: LANG_MUTE_ON_RECORDER id: LANG_MUTE_ON_RECORDER
desc: displayed when mute is on desc: displayed when mute is on
@ -363,12 +363,12 @@ new: "Schtumm isch A"
id: LANG_MUTE_OFF_RECORDER id: LANG_MUTE_OFF_RECORDER
desc: displayed when mute is off desc: displayed when mute is off
eng: "Mute Is OFF" eng: "Mute Is OFF"
new: "Schtumm isch Üs" new: "Schtumm isch Üs"
id: LANG_ID3_INFO id: LANG_ID3_INFO
desc: in the browse_id3() function desc: in the browse_id3() function
eng: "-ID3 Info- " eng: "-ID3 Info- "
new: "|¯ ID3 Info" new: "|¯ ID3 Info"
id: LANG_ID3_SCREEN id: LANG_ID3_SCREEN
desc: in the browse_id3() function desc: in the browse_id3() function
@ -388,12 +388,12 @@ new: "<kei Titel>"
id: LANG_ID3_ARTIST id: LANG_ID3_ARTIST
desc: in wps desc: in wps
eng: "[Artist]" eng: "[Artist]"
new: "[Künschtler]" new: "[Künschtler]"
id: LANG_ID3_NO_ARTIST id: LANG_ID3_NO_ARTIST
desc: in wps when no artist is avaible desc: in wps when no artist is avaible
eng: "<No Artist>" eng: "<No Artist>"
new: "<kei Künschtler>" new: "<kei Künschtler>"
id: LANG_ID3_ALBUM id: LANG_ID3_ALBUM
desc: in wps desc: in wps
@ -433,7 +433,7 @@ new: "[Bitrata]"
id: LANG_ID3_FRECUENCY id: LANG_ID3_FRECUENCY
desc: in wps desc: in wps
eng: "[Frequency]" eng: "[Frequency]"
new: "[Frequänz]" new: "[Frequänz]"
id: LANG_ID3_PATH id: LANG_ID3_PATH
desc: in wps desc: in wps
@ -443,7 +443,7 @@ new: "[Pfad]"
id: LANG_PITCH_UP id: LANG_PITCH_UP
desc: in wps desc: in wps
eng: "Pitch Up" eng: "Pitch Up"
new: "schnäller" new: "schnäller"
id: LANG_PITCH_DOWN id: LANG_PITCH_DOWN
desc: in wps desc: in wps
@ -488,12 +488,12 @@ new: "Lischtuendi"
id: LANG_POWEROFF_IDLE id: LANG_POWEROFF_IDLE
desc: in settings_menu desc: in settings_menu
eng: "Idle Poweroff" eng: "Idle Poweroff"
new: "automatischus Üsschaltu" new: "automatischus Üsschaltu"
id: LANG_LANGUAGE_LOADED id: LANG_LANGUAGE_LOADED
desc: shown when a language has been loaded from the dir browser desc: shown when a language has been loaded from the dir browser
eng: "New Language" eng: "New Language"
new: "Nöiji Spraach" new: "Nöiji Spraach"
id: LANG_FILTER id: LANG_FILTER
desc: setting name for dir filter desc: setting name for dir filter
@ -503,12 +503,12 @@ new: "Datiifilter"
id: LANG_FILTER_MUSIC id: LANG_FILTER_MUSIC
desc: show only music-related files desc: show only music-related files
eng: "Music" eng: "Music"
new: "Müsig" new: "Müsig"
id: LANG_FILTER_SUPPORTED id: LANG_FILTER_SUPPORTED
desc: show all file types supported by Rockbox desc: show all file types supported by Rockbox
eng: "Supported" eng: "Supported"
new: "Unnerschtützti" new: "Unnerschtützti"
id: LANG_FILTER_ALL id: LANG_FILTER_ALL
desc: show all files desc: show all files
@ -528,7 +528,7 @@ new: "Nei"
id: LANG_PM_MENU id: LANG_PM_MENU
desc: in the display menu desc: in the display menu
eng: "Peak Meter" eng: "Peak Meter"
new: "Üsstiirigsazeig" new: "Üsstiirigsazeig"
id: LANG_PM_RELEASE id: LANG_PM_RELEASE
desc: in the peak meter menu desc: in the peak meter menu
@ -538,7 +538,7 @@ new: "Gschw. bim Abfallu"
id: LANG_PM_PEAK_HOLD id: LANG_PM_PEAK_HOLD
desc: in the peak meter menu desc: in the peak meter menu
eng: "Peak Hold Time" eng: "Peak Hold Time"
new: "Üsstiirig Haltezit" new: "Üsstiirig Haltezit"
id: LANG_PM_CLIP_HOLD id: LANG_PM_CLIP_HOLD
desc: in the peak meter menu desc: in the peak meter menu
@ -553,12 +553,12 @@ new: "Ewig"
id: LANG_PM_UNITS_PER_READ id: LANG_PM_UNITS_PER_READ
desc: in the peak meter menu desc: in the peak meter menu
eng: "Units Per Read" eng: "Units Per Read"
new: "Einheite pro Mässig" new: "Einheite pro Mässig"
id: LANG_BACKLIGHT_ON_WHEN_CHARGING id: LANG_BACKLIGHT_ON_WHEN_CHARGING
desc: in display_settings_menu desc: in display_settings_menu
eng: "Backlight On When Plugged" eng: "Backlight On When Plugged"
new: "Bilüüchtig a bim Netzbitrieb" new: "Bilüüchtig a bim Netzbitrieb"
id: LANG_REPEAT id: LANG_REPEAT
desc: in settings_menu desc: in settings_menu
@ -583,7 +583,7 @@ new: "PLAY=Zruggsetzu"
id: LANG_RESET_CANCEL id: LANG_RESET_CANCEL
desc: confirm to reset settings desc: confirm to reset settings
eng: "OFF=Cancel" eng: "OFF=Cancel"
new: "OFF=Abbrächu" new: "OFF=Abbrächu"
id: LANG_TIMEFORMAT id: LANG_TIMEFORMAT
desc: select the time format of time in status bar desc: select the time format of time in status bar
@ -593,12 +593,12 @@ new: "Zitformat"
id: LANG_12_HOUR_CLOCK id: LANG_12_HOUR_CLOCK
desc: option for 12 hour clock desc: option for 12 hour clock
eng: "12 Hour Clock" eng: "12 Hour Clock"
new: "12 Std. Ühr" new: "12 Std. Ühr"
id: LANG_24_HOUR_CLOCK id: LANG_24_HOUR_CLOCK
desc: option for 24 hour clock desc: option for 24 hour clock
eng: "24 Hour Clock" eng: "24 Hour Clock"
new: "24 Std. Ühr" new: "24 Std. Ühr"
id: LANG_WEEKDAY_SUNDAY id: LANG_WEEKDAY_SUNDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -608,7 +608,7 @@ new: "Sun"
id: LANG_WEEKDAY_MONDAY id: LANG_WEEKDAY_MONDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
eng: "Mon" eng: "Mon"
new: "Män" new: "Män"
id: LANG_WEEKDAY_TUESDAY id: LANG_WEEKDAY_TUESDAY
desc: Maximum 3-letter abbreviation for weekday desc: Maximum 3-letter abbreviation for weekday
@ -648,7 +648,7 @@ new: "Feb"
id: LANG_MONTH_MARCH id: LANG_MONTH_MARCH
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
eng: "Mar" eng: "Mar"
new: "Mär" new: "Mär"
id: LANG_MONTH_APRIL id: LANG_MONTH_APRIL
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -673,7 +673,7 @@ new: "Jul"
id: LANG_MONTH_AUGUST id: LANG_MONTH_AUGUST
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
eng: "Aug" eng: "Aug"
new: "Öüg" new: "Öüg"
id: LANG_MONTH_SEPTEMBER id: LANG_MONTH_SEPTEMBER
desc: Maximum 3-letter abbreviation for monthname desc: Maximum 3-letter abbreviation for monthname
@ -698,7 +698,7 @@ new: "Dez"
id: LANG_RESUME_SETTING_ASK_ONCE id: LANG_RESUME_SETTING_ASK_ONCE
desc: in settings_menu desc: in settings_menu
eng: "Ask Once" eng: "Ask Once"
new: "eismal frägu" new: "eismal frägu"
id: LANG_BATTERY_DISPLAY id: LANG_BATTERY_DISPLAY
desc: Battery type title desc: Battery type title
@ -708,7 +708,7 @@ new: "Akku Azeig"
id: LANG_VOLUME_DISPLAY id: LANG_VOLUME_DISPLAY
desc: Volume type title desc: Volume type title
eng: "Volume Display" eng: "Volume Display"
new: "Lütschterchiazeig" new: "Lütschterchiazeig"
id: LANG_DISPLAY_GRAPHIC id: LANG_DISPLAY_GRAPHIC
desc: Label for type of icon display desc: Label for type of icon display
@ -753,17 +753,17 @@ new: "linear (%)"
id: LANG_PM_MIN id: LANG_PM_MIN
desc: in the peak meter menu desc: in the peak meter menu
eng: "Minimum Of Range" eng: "Minimum Of Range"
new: "chlinschte Wärt" new: "chlinschte Wärt"
id: LANG_PM_MAX id: LANG_PM_MAX
desc: in the peak meter menu desc: in the peak meter menu
eng: "Maximum Of Range" eng: "Maximum Of Range"
new: "greeschte Wärt" new: "greeschte Wärt"
id: LANG_RECORDING id: LANG_RECORDING
desc: in the main menu desc: in the main menu
eng: "Recording" eng: "Recording"
new: "Üfnahm" new: "Üfnahm"
id: LANG_RECORDING_GAIN id: LANG_RECORDING_GAIN
desc: in the recording screen desc: in the recording screen
@ -778,17 +778,17 @@ new: "Lings"
id: LANG_RECORDING_RIGHT id: LANG_RECORDING_RIGHT
desc: in the recording screen desc: in the recording screen
eng: "Right" eng: "Right"
new: "Rächts" new: "Rächts"
id: LANG_RECORDING_QUALITY id: LANG_RECORDING_QUALITY
desc: in the recording settings desc: in the recording settings
eng: "Quality" eng: "Quality"
new: "Qualität" new: "Qualität"
id: LANG_RECORDING_FREQUENCY id: LANG_RECORDING_FREQUENCY
desc: in the recording settings desc: in the recording settings
eng: "Frequency" eng: "Frequency"
new: "Frequänz" new: "Frequänz"
id: LANG_RECORDING_SOURCE id: LANG_RECORDING_SOURCE
desc: in the recording settings desc: in the recording settings
@ -818,7 +818,7 @@ new: "Digital"
id: LANG_RECORDING_SETTINGS id: LANG_RECORDING_SETTINGS
desc: in the main menu desc: in the main menu
eng: "Recording Settings" eng: "Recording Settings"
new: "Üfnahmeischtellige" new: "Üfnahmeischtellige"
id: LANG_DISK_STAT id: LANG_DISK_STAT
desc: disk size info desc: disk size info
@ -833,7 +833,7 @@ new: "Frii: %d.%dGB"
id: LANG_POWEROFF id: LANG_POWEROFF
desc: disk poweroff flag desc: disk poweroff flag
eng: "Disk Poweroff" eng: "Disk Poweroff"
new: "HDD Üsschaltbifähl brüüchu" new: "HDD Üsschaltbifähl brüüchu"
id: LANG_FILTER_PLAYLIST id: LANG_FILTER_PLAYLIST
desc: show only playlist desc: show only playlist
@ -853,7 +853,7 @@ new: "Ischlaaftimer"
id: LANG_MP3BUFFER_MARGIN id: LANG_MP3BUFFER_MARGIN
desc: MP3 buffer margin time desc: MP3 buffer margin time
eng: "Anti-Skip Buffer" eng: "Anti-Skip Buffer"
new: "Puffer zum vorüs fillu" new: "Puffer zum vorüs fillu"
id: LANG_BIDIR_SCROLL id: LANG_BIDIR_SCROLL
desc: Bidirectional scroll limit desc: Bidirectional scroll limit
@ -863,7 +863,7 @@ new: "Beidsitigs Scroll-Limit"
id: LANG_SCROLL_DELAY id: LANG_SCROLL_DELAY
desc: Delay before scrolling desc: Delay before scrolling
eng: "Scroll Start Delay" eng: "Scroll Start Delay"
new: "Scroll-Startverzögrig" new: "Scroll-Startverzögrig"
id: LANG_SCROLL_STEP id: LANG_SCROLL_STEP
desc: Pixels to advance per scroll desc: Pixels to advance per scroll
@ -898,7 +898,7 @@ new: "Akku: Erhaltladu"
id: LANG_BATTERY_CAPACITY id: LANG_BATTERY_CAPACITY
desc: in settings_menu desc: in settings_menu
eng: "Battery Capacity" eng: "Battery Capacity"
new: "Akku: Kapazität" new: "Akku: Kapazität"
id: LANG_MENU_SETTING_CANCEL id: LANG_MENU_SETTING_CANCEL
desc: Visual confirmation of canceling a changed setting desc: Visual confirmation of canceling a changed setting
@ -948,22 +948,22 @@ new: "Weckzit: %02d:%02d"
id: LANG_ALARM_MOD_TIME_TO_GO id: LANG_ALARM_MOD_TIME_TO_GO
desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod. desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
eng: "Waking Up In %d:%02d" eng: "Waking Up In %d:%02d"
new: "Üfwachu in %d:%02d" new: "Üfwachu in %d:%02d"
id: LANG_ALARM_MOD_SHUTDOWN id: LANG_ALARM_MOD_SHUTDOWN
desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod). desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod).
eng: "Shutting Down..." eng: "Shutting Down..."
new: "Schaltu üs..." new: "Schaltu üs..."
id: LANG_ALARM_MOD_ERROR id: LANG_ALARM_MOD_ERROR
desc: The text that tells that the time is incorrect (for the RTC alarm mod). desc: The text that tells that the time is incorrect (for the RTC alarm mod).
eng: "Alarm Time Is Too Soon!" eng: "Alarm Time Is Too Soon!"
new: "Weckzit isch zfrüeh" new: "Weckzit isch zfrüeh"
id: LANG_ALARM_MOD_KEYS id: LANG_ALARM_MOD_KEYS
desc: Shown key functions in alarm menu (for the RTC alarm mod). desc: Shown key functions in alarm menu (for the RTC alarm mod).
eng: "PLAY=Set OFF=Cancel" eng: "PLAY=Set OFF=Cancel"
new: "PLAY=Ok OFF=Abbrächu" new: "PLAY=Ok OFF=Abbrächu"
id: LANG_CREATE_PLAYLIST id: LANG_CREATE_PLAYLIST
desc: Menu option for creating a playlist desc: Menu option for creating a playlist
@ -973,7 +973,7 @@ new: "Abschpillischta Erschtellu"
id: LANG_CREATING id: LANG_CREATING
desc: Screen feedback during playlist creation desc: Screen feedback during playlist creation
eng: "Creating" eng: "Creating"
new: "Am Zämuschtellu" new: "Am Zämuschtellu"
id: LANG_PLAYER_KEYBOARD_BACKSPACE id: LANG_PLAYER_KEYBOARD_BACKSPACE
desc: Backspace alternative in player keyboard interaction desc: Backspace alternative in player keyboard interaction
@ -988,7 +988,7 @@ new: "Leschu"
id: LANG_PLAYER_KEYBOARD_ACCEPT id: LANG_PLAYER_KEYBOARD_ACCEPT
desc: Accept alternative in player keyboard interaction desc: Accept alternative in player keyboard interaction
eng: "Accept" eng: "Accept"
new: "Anäh" new: "Anäh"
id: LANG_PLAYER_KEYBOARD_ABORT id: LANG_PLAYER_KEYBOARD_ABORT
desc: Abort alternative in player keyboard interaction desc: Abort alternative in player keyboard interaction
@ -1103,12 +1103,12 @@ new: "VBR-Datii aktualisieru"
id: LANG_INVERT_CURSOR id: LANG_INVERT_CURSOR
desc: in settings_menu desc: in settings_menu
eng: "Line Selector" eng: "Line Selector"
new: "Ziiluüswahl" new: "Ziiluüswahl"
id: LANG_RECORDING_EDITABLE id: LANG_RECORDING_EDITABLE
desc: Editable recordings setting desc: Editable recordings setting
eng: "Independent frames" eng: "Independent frames"
new: "unabhängigi Frames" new: "unabhängigi Frames"
id: LANG_STATUS_BAR id: LANG_STATUS_BAR
desc: display menu, F3 substitute desc: display menu, F3 substitute
@ -1123,7 +1123,7 @@ new: "Scrolliischta"
id: LANG_CAPTION_BACKLIGHT id: LANG_CAPTION_BACKLIGHT
desc: in settings_menu desc: in settings_menu
eng: "Caption backlight" eng: "Caption backlight"
new: "Bilüüchtig a bim Titelwägsel" new: "Bilüüchtig a bim Titelwägsel"
id: LANG_INVERT_CURSOR_POINTER id: LANG_INVERT_CURSOR_POINTER
desc: in settings_menu desc: in settings_menu
@ -1173,17 +1173,17 @@ new: "immer"
id: LANG_JUMP_SCROLL_DELAY id: LANG_JUMP_SCROLL_DELAY
desc: (player) Delay before making a jump scroll desc: (player) Delay before making a jump scroll
eng: "Jump Scroll Delay" eng: "Jump Scroll Delay"
new: "Gumpverzögrig" new: "Gumpverzögrig"
id: LANG_RECORD_TIMESPLIT id: LANG_RECORD_TIMESPLIT
desc: Prompt for record timer interval setting, in the record settings menu desc: Prompt for record timer interval setting, in the record settings menu
eng: "Time Split" eng: "Time Split"
new: "Üfnahm teilu" new: "Üfnahm teilu"
id: LANG_RECORD_TIMESPLIT_REC id: LANG_RECORD_TIMESPLIT_REC
decs: Display of record timer interval setting, on the record screen decs: Display of record timer interval setting, on the record screen
eng: "Split time:" eng: "Split time:"
new: "Üfnahm teilu:" new: "Üfnahm teilu:"
id: LANG_SHOW_ICONS id: LANG_SHOW_ICONS
desc: in settings_menu desc: in settings_menu
@ -1212,12 +1212,12 @@ new: "Andri = Nei"
id: LANG_PLUGIN_CANT_OPEN id: LANG_PLUGIN_CANT_OPEN
desc: Plugin open error message desc: Plugin open error message
eng: "Can't open %s" eng: "Can't open %s"
new: "Cha %s nit üftüe" new: "Cha %s nit üftüe"
id: LANG_READ_FAILED id: LANG_READ_FAILED
desc: There was an error reading a file desc: There was an error reading a file
eng: "Failed reading %s" eng: "Failed reading %s"
new: "Fähler bim läsu fa %s" new: "Fähler bim läsu fa %s"
id: LANG_PLUGIN_WRONG_MODEL id: LANG_PLUGIN_WRONG_MODEL
desc: The plugin is not compatible with the archos model trying to run it desc: The plugin is not compatible with the archos model trying to run it
@ -1232,7 +1232,7 @@ new: "nit kompatibli Version"
id: LANG_PLUGIN_ERROR id: LANG_PLUGIN_ERROR
desc: The plugin return an error code desc: The plugin return an error code
eng: "Plugin returned error" eng: "Plugin returned error"
new: "Plugin mäldut Fähler" new: "Plugin mäldut Fähler"
## ##
## boot change detection ## boot change detection
@ -1241,12 +1241,12 @@ new: "Plugin m
id: LANG_BOOT_CHANGED id: LANG_BOOT_CHANGED
desc: File browser discovered the boot file was changed desc: File browser discovered the boot file was changed
eng: "Boot changed" eng: "Boot changed"
new: "Boot gändrut" new: "Boot gändrut"
id: LANG_REBOOT_NOW id: LANG_REBOOT_NOW
desc: Do you want to reboot? desc: Do you want to reboot?
eng: "Reboot now?" eng: "Reboot now?"
new: "jetz nöü bootu?" new: "jetz nöü bootu?"
id: LANG_QUEUE_LAST id: LANG_QUEUE_LAST
desc: in onplay menu. queue a track/playlist at end of playlist. desc: in onplay menu. queue a track/playlist at end of playlist.
@ -1301,37 +1301,37 @@ new: "%d Lieder abgspiichrut (%s)"
id: LANG_OFF_ABORT id: LANG_OFF_ABORT
desc: Used on recorder models desc: Used on recorder models
eng: "OFF to abort" eng: "OFF to abort"
new: "Off fer abzbrächu" new: "Off fer abzbrächu"
id: LANG_STOP_ABORT id: LANG_STOP_ABORT
desc: Used on player models desc: Used on player models
eng: "STOP to abort" eng: "STOP to abort"
new: "STOP fer abzbrächu" new: "STOP fer abzbrächu"
id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR
desc: Playlist error desc: Playlist error
eng: "Error updating playlist control file" eng: "Error updating playlist control file"
new: "Fähler: Aktualisierig Abschpillischta-Kontrolldatii" new: "Fähler: Aktualisierig Abschpillischta-Kontrolldatii"
id: LANG_PLAYLIST_ACCESS_ERROR id: LANG_PLAYLIST_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist file" eng: "Error accessing playlist file"
new: "Fähler: Züegriff Abschpillischta" new: "Fähler: Züegriff Abschpillischta"
id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing playlist control file" eng: "Error accessing playlist control file"
new: "Fähler: Züegriff Abschpillischta-Kontrolldatii" new: "Fähler: Züegriff Abschpillischta-Kontrolldatii"
id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR
desc: Playlist error desc: Playlist error
eng: "Error accessing directory" eng: "Error accessing directory"
new: "Fähler: Verzeichniszüegriff" new: "Fähler: Verzeichniszüegriff"
id: LANG_PLAYLIST_CONTROL_INVALID id: LANG_PLAYLIST_CONTROL_INVALID
desc: Playlist resume error desc: Playlist resume error
eng: "Playlist control file is invalid" eng: "Playlist control file is invalid"
new: "Abschpillischta-Kontrolldatii isch ungültig" new: "Abschpillischta-Kontrolldatii isch ungültig"
id: LANG_RECURSE_DIRECTORY id: LANG_RECURSE_DIRECTORY
desc: In playlist menu desc: In playlist menu
@ -1391,7 +1391,7 @@ new: "kei Datije"
id: LANG_BUTTONBAR_MENU id: LANG_BUTTONBAR_MENU
desc: in button bar desc: in button bar
eng: "Menu" eng: "Menu"
new: "Mönü" new: "Mönü"
id: LANG_FM_BUTTONBAR_PRESETS id: LANG_FM_BUTTONBAR_PRESETS
desc: in button bar desc: in button bar
@ -1416,12 +1416,12 @@ new: "Sender: %d.%dMHz"
id: LANG_FM_PRESET_SAVE_FAILED id: LANG_FM_PRESET_SAVE_FAILED
desc: in radio screen desc: in radio screen
eng: "Preset save failed" eng: "Preset save failed"
new: "Fähler bim spiichru" new: "Fähler bim spiichru"
id: LANG_FM_NO_PRESETS id: LANG_FM_NO_PRESETS
desc: in radio screen desc: in radio screen
eng: "The preset list is empty" eng: "The preset list is empty"
new: "Senderlischta läär" new: "Senderlischta läär"
id: LANG_FM_NO_FREE_PRESETS id: LANG_FM_NO_FREE_PRESETS
desc: in radio screen desc: in radio screen
@ -1436,7 +1436,7 @@ new: "FM Radio"
id: LANG_FM_BUTTONBAR_RECORD id: LANG_FM_BUTTONBAR_RECORD
desc: in main menu desc: in main menu
eng: "Record" eng: "Record"
new: "Üfnäh" new: "Üfnäh"
id: LANG_VIEW_DYNAMIC_PLAYLIST id: LANG_VIEW_DYNAMIC_PLAYLIST
desc: in playlist menu. desc: in playlist menu.
@ -1451,33 +1451,33 @@ new: "verschiebu"
id: LANG_MOVE_FAILED id: LANG_MOVE_FAILED
desc: Error message displayed in playlist viewer desc: Error message displayed in playlist viewer
eng: "Move failed" eng: "Move failed"
new: "Fähler bim verschiebu" new: "Fähler bim verschiebu"
id: LANG_FLIP_DISPLAY id: LANG_FLIP_DISPLAY
desc: in settings_menu, option to turn display+buttos by 180 degreed desc: in settings_menu, option to turn display+buttos by 180 degreed
eng: "Upside Down" eng: "Upside Down"
new: "umgidräht" new: "umgidräht"
id: LANG_RECORD_PRERECORD id: LANG_RECORD_PRERECORD
desc: in recording and radio screen desc: in recording and radio screen
eng: "Prerecording" eng: "Prerecording"
new: "Vorüsüfnahm" new: "Vorüsüfnahm"
id: LANG_RECORD_PRERECORD_TIME id: LANG_RECORD_PRERECORD_TIME
desc: in recording settings_menu desc: in recording settings_menu
eng: "Prerecord time" eng: "Prerecord time"
new: "Vorüsüfnahmezit" new: "Vorüsüfnahmezit"
#Auto bookmark prompts #Auto bookmark prompts
id: LANG_BOOKMARK_AUTOLOAD_QUERY id: LANG_BOOKMARK_AUTOLOAD_QUERY
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark?" eng: "Load Last Bookmark?"
new: "zletscht Läsezeichu ladu?" new: "zletscht Läsezeichu ladu?"
id: LANG_AUTO_BOOKMARK_QUERY id: LANG_AUTO_BOOKMARK_QUERY
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
eng: "Create a Bookmark?" eng: "Create a Bookmark?"
new: "Läsezeichu erschtellu?" new: "Läsezeichu erschtellu?"
# Bookmark Select Menu Text # Bookmark Select Menu Text
id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS id: LANG_BOOKMARK_SELECT_LIST_BOOKMARKS
@ -1493,7 +1493,7 @@ new: "OFF = Biendu"
id: LANG_BOOKMARK_SELECT_BOOKMARK_TEXT id: LANG_BOOKMARK_SELECT_BOOKMARK_TEXT
desc: Used on the bookmark select window to label bookmark number desc: Used on the bookmark select window to label bookmark number
eng: "Bookmark" eng: "Bookmark"
new: "Läsezeichu" new: "Läsezeichu"
id: LANG_BOOKMARK_SELECT_INDEX_TEXT id: LANG_BOOKMARK_SELECT_INDEX_TEXT
desc: Used on the bookmark select window to label index number desc: Used on the bookmark select window to label index number
@ -1508,7 +1508,7 @@ new: "Zit"
id: LANG_BOOKMARK_SELECT_PLAY id: LANG_BOOKMARK_SELECT_PLAY
desc: Used on the bookmark select window to indicated the play option desc: Used on the bookmark select window to indicated the play option
eng: "PLAY = Select" eng: "PLAY = Select"
new: "PLAY = üswählu" new: "PLAY = üswählu"
id: LANG_BOOKMARK_SELECT_DELETE id: LANG_BOOKMARK_SELECT_DELETE
desc: Used on the bookmark select window to indicated the bookmark delete option desc: Used on the bookmark select window to indicated the bookmark delete option
@ -1519,49 +1519,49 @@ new: "ON+PLAY = leschu"
id: LANG_BOOKMARK_CREATE_SUCCESS id: LANG_BOOKMARK_CREATE_SUCCESS
desc: Indicates bookmark was successfully created desc: Indicates bookmark was successfully created
eng: "Bookmark Created" eng: "Bookmark Created"
new: "Läsezeichu erschtellt" new: "Läsezeichu erschtellt"
id: LANG_BOOKMARK_CREATE_FAILURE id: LANG_BOOKMARK_CREATE_FAILURE
desc: Indicates bookmark was not created desc: Indicates bookmark was not created
eng: "Bookmark Failed!" eng: "Bookmark Failed!"
new: "Fähler bim Erschtellu fam Läsezeichu" new: "Fähler bim Erschtellu fam Läsezeichu"
# Bookmark creation/failure text # Bookmark creation/failure text
id: LANG_BOOKMARK_LOAD_EMPTY id: LANG_BOOKMARK_LOAD_EMPTY
desc: Indicates bookmark was empty desc: Indicates bookmark was empty
eng: "Bookmark Empty" eng: "Bookmark Empty"
new: "kei Läsezeichu" new: "kei Läsezeichu"
# Bookmark Settings Text # Bookmark Settings Text
id: LANG_BOOKMARK_SETTINGS id: LANG_BOOKMARK_SETTINGS
desc: in general settings desc: in general settings
eng: "Bookmarking" eng: "Bookmarking"
new: "Läsezeichu" new: "Läsezeichu"
id: LANG_BOOKMARK_SETTINGS_AUTOLOAD id: LANG_BOOKMARK_SETTINGS_AUTOLOAD
desc: prompt for user to decide to create a bookmark desc: prompt for user to decide to create a bookmark
eng: "Load Last Bookmark" eng: "Load Last Bookmark"
new: "letschts Läsezeichu ladu" new: "letschts Läsezeichu ladu"
id: LANG_BOOKMARK_SETTINGS_AUTOCREATE id: LANG_BOOKMARK_SETTINGS_AUTOCREATE
desc: prompt for user to decide to create an bookmark desc: prompt for user to decide to create an bookmark
eng: "Bookmark on Stop" eng: "Bookmark on Stop"
new: "Bim Stoppu Läsezeichu erschtellu" new: "Bim Stoppu Läsezeichu erschtellu"
id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
desc: Configuration option to maintain a list of recent bookmarks desc: Configuration option to maintain a list of recent bookmarks
eng: "Maintain a List of Recent Bookmarks?" eng: "Maintain a List of Recent Bookmarks?"
new: "Lischta mit zletscht gibrüchte Läsezeichu verwaltu?" new: "Lischta mit zletscht gibrüchte Läsezeichu verwaltu?"
id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
eng: "Yes - Recent only" eng: "Yes - Recent only"
new: "Ja - nur znöüschta" new: "Ja - nur znöüschta"
id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
desc: Save in recent bookmarks only desc: Save in recent bookmarks only
eng: "Ask - Recent only" eng: "Ask - Recent only"
new: "Frägu - Nur znöüschta" new: "Frägu - Nur znöüschta"
id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
@ -1573,22 +1573,22 @@ new: "nur verschidni"
id: LANG_BOOKMARK_MENU id: LANG_BOOKMARK_MENU
desc: Text on main menu to get to bookmark commands desc: Text on main menu to get to bookmark commands
eng: "Bookmarks" eng: "Bookmarks"
new: "Läsezeichu" new: "Läsezeichu"
id: LANG_BOOKMARK_MENU_CREATE id: LANG_BOOKMARK_MENU_CREATE
desc: Used off of the bookmark menu to create a bookmark desc: Used off of the bookmark menu to create a bookmark
eng: "Create Bookmark" eng: "Create Bookmark"
new: "Läsezeichu erschtellu" new: "Läsezeichu erschtellu"
id: LANG_BOOKMARK_MENU_LIST id: LANG_BOOKMARK_MENU_LIST
desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U
eng: "List Bookmarks" eng: "List Bookmarks"
new: "Läsezeichu üflischtu" new: "Läsezeichu üflischtu"
id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS
desc: Text for the menu text to access the most recent bookmarks list desc: Text for the menu text to access the most recent bookmarks list
eng: "Recent Bookmarks" eng: "Recent Bookmarks"
new: "nöüschti Läsezeichu" new: "nöüschti Läsezeichu"
id: LANG_INFO_MENU id: LANG_INFO_MENU
desc: in the info sub menu desc: in the info sub menu
@ -1598,7 +1598,7 @@ new: "Rockbox Info"
id: LANG_RECORDING_MENU id: LANG_RECORDING_MENU
desc: in the recording sub menu desc: in the recording sub menu
eng: "Start Recording" eng: "Start Recording"
new: "Üfnahm startu" new: "Üfnahm startu"
id: LANG_WIND_MENU id: LANG_WIND_MENU
desc: in the playback sub menu desc: in the playback sub menu
@ -1634,7 +1634,7 @@ new: "Zit & Datum"
id: LANG_LIMITS_MENU id: LANG_LIMITS_MENU
desc: in the system sub menu desc: in the system sub menu
eng: "Limits" eng: "Limits"
new: "Grenzwärta" new: "Grenzwärta"
id: LANG_MANAGE_MENU id: LANG_MANAGE_MENU
desc: in the system sub menu desc: in the system sub menu
@ -1699,7 +1699,7 @@ new: "Taschtuliischta"
id: LANG_DIRBROWSE_F1 id: LANG_DIRBROWSE_F1
desc: in dir browser, F1 button bar text desc: in dir browser, F1 button bar text
eng: "Menu" eng: "Menu"
new: "Mönü" new: "Mönü"
id: LANG_DIRBROWSE_F2 id: LANG_DIRBROWSE_F2
desc: in dir browser, F2 button bar text desc: in dir browser, F2 button bar text
@ -2025,13 +2025,13 @@ id: LANG_VOICE
desc: root of voice menu desc: root of voice menu
eng: "Voice" eng: "Voice"
voice: "" voice: ""
new: "Spraachüsgab" new: "Spraachüsgab"
id: LANG_VOICE_MENU id: LANG_VOICE_MENU
desc: item of voice menu, enable/disable the voice UI desc: item of voice menu, enable/disable the voice UI
eng: "Voice Menus" eng: "Voice Menus"
voice: "" voice: ""
new: "Mönüs" new: "Mönüs"
id: LANG_VOICE_DIR id: LANG_VOICE_DIR
desc: item of voice menu, set the "talkbox" mode for directories desc: item of voice menu, set the "talkbox" mode for directories
@ -2079,7 +2079,7 @@ id: LANG_VOICE_SPELL
desc: "talkbox" mode for files+directories desc: "talkbox" mode for files+directories
eng: "Spell" eng: "Spell"
voice: "" voice: ""
new: "büechschtabieru" new: "büechschtabieru"
id: VOICE_CHAR_A id: VOICE_CHAR_A
desc: spoken only, for spelling desc: spoken only, for spelling
@ -2326,13 +2326,13 @@ id: LANG_FILETYPES_STRING_BUFFER_EMPTY
desc: Filetype string buffer empty desc: Filetype string buffer empty
eng: "Filetype string buffer empty" eng: "Filetype string buffer empty"
voice: "" voice: ""
new: "Datiitypu-Zeichubuffer läär" new: "Datiitypu-Zeichubuffer läär"
id: LANG_ONPLAY_OPEN_WITH id: LANG_ONPLAY_OPEN_WITH
desc: Onplay open with desc: Onplay open with
eng: "Open with" eng: "Open with"
voice: "" voice: ""
new: "Öffnu mit" new: "Öffnu mit"
id: LANG_SORT_DIR id: LANG_SORT_DIR
desc: browser sorting setting desc: browser sorting setting
@ -2362,7 +2362,7 @@ id: LANG_SORT_DATE_REVERSE
desc: browser sorting setting desc: browser sorting setting
eng: "by newest date" eng: "by newest date"
voice: "" voice: ""
new: "nach nöüschtum Datum" new: "nach nöüschtum Datum"
id: LANG_SORT_TYPE id: LANG_SORT_TYPE
desc: browser sorting setting desc: browser sorting setting
@ -2398,7 +2398,7 @@ id: LANG_FM_BUTTONBAR_ADD
desc: in radio screen desc: in radio screen
eng: "Add" eng: "Add"
voice: "" voice: ""
new: "Derzüe" new: "Derzüe"
id: LANG_FM_BUTTONBAR_ACTION id: LANG_FM_BUTTONBAR_ACTION
desc: in radio screen desc: in radio screen
@ -2422,7 +2422,7 @@ id: LANG_MDB_CENTER
desc: in sound settings desc: in sound settings
eng: "MDB Center frequency" eng: "MDB Center frequency"
voice: "" voice: ""
new: "MDB Mittufrequänz" new: "MDB Mittufrequänz"
id: LANG_MDB_SHAPE id: LANG_MDB_SHAPE
desc: in sound settings desc: in sound settings
@ -2446,19 +2446,19 @@ id: LANG_SHUTDOWN
desc: in main menu desc: in main menu
eng: "Shut down" eng: "Shut down"
voice: "" voice: ""
new: "Üsschaltu" new: "Üsschaltu"
id: LANG_SHUTTINGDOWN id: LANG_SHUTTINGDOWN
desc: in main menu desc: in main menu
eng: "Shutting down..." eng: "Shutting down..."
voice: "" voice: ""
new: "am Üsschaltu..." new: "am Üsschaltu..."
id: LANG_CONFIRM_SHUTDOWN id: LANG_CONFIRM_SHUTDOWN
desc: in shutdown screen desc: in shutdown screen
eng: "Press OFF to shut down" eng: "Press OFF to shut down"
voice: "" voice: ""
new: "OFF fer Üszschaltu" new: "OFF fer Üszschaltu"
id: LANG_ID3_ORDER id: LANG_ID3_ORDER
desc: in playback settings screen desc: in playback settings screen
@ -2482,19 +2482,19 @@ id: LANG_NO_ROCKBOX_DIR
desc: in browse root desc: in browse root
eng: "No .rockbox directory" eng: "No .rockbox directory"
voice: "" voice: ""
new: "Verzeichnis .rockbox fählt" new: "Verzeichnis .rockbox fählt"
id: LANG_INSTALLATION_INCOMPLETE id: LANG_INSTALLATION_INCOMPLETE
desc: in browse root desc: in browse root
eng: "Installation incomplete" eng: "Installation incomplete"
voice: "" voice: ""
new: "Inschtallation unvollschtändig" new: "Inschtallation unvollschtändig"
id: LANG_REMOVE_MMC id: LANG_REMOVE_MMC
desc: before acknowledging usb in case an MMC is inserted (Ondio) desc: before acknowledging usb in case an MMC is inserted (Ondio)
eng: "Please remove inserted MMC" eng: "Please remove inserted MMC"
voice: "" voice: ""
new: "Bitte MMC üsanäh" new: "Bitte MMC üsanäh"
id: VOICE_DOT id: VOICE_DOT
desc: spoken only, for spelling desc: spoken only, for spelling

View File

@ -18,7 +18,7 @@
****************************************************************************/ ****************************************************************************/
/* size of the buffer used for loadable, translated strings */ /* size of the buffer used for loadable, translated strings */
#define MAX_LANGUAGE_SIZE 8000 #define MAX_LANGUAGE_SIZE 14000
/* both these must match the two initial bytes in the binary lang file */ /* both these must match the two initial bytes in the binary lang file */
#define LANGUAGE_COOKIE 0x1a #define LANGUAGE_COOKIE 0x1a

View File

@ -216,83 +216,6 @@ static unsigned long get_long(void* buf)
return p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); return p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
} }
/* Convert an UTF-8 string to Latin-1, overwriting the old string (the new
* string is never longer than the original, so this is safe). Non-latin-1
* chars are replaced with '?'.
*/
static void convert_utf8(char* utf8)
{
char* dest = utf8;
long code = 0;
unsigned char c;
int tail = 0;
int size = 0;
while ((c = *utf8++) != 0)
{
if ((tail <= 0) && ((c <= 0x7f) || (c >= 0xc2)))
{
/* Start of new character. */
if (c < 0x80)
{
size = 1;
}
else if (c < 0xe0)
{
size = 2;
c &= 0x1f;
}
else if (c < 0xf0)
{
size = 3;
c &= 0x0f;
}
else if (c < 0xf5)
{
size = 4;
c &= 0x07;
}
else
{
/* Invalid size. */
size = 0;
}
code = c;
tail = size - 1;
}
else if ((tail > 0) && ((c & 0xc0) == 0x80))
{
/* Valid continuation character. */
code = (code << 6) | (c & 0x3f);
tail--;
if (tail == 0)
{
if (((size == 2) && (code < 0x80))
|| ((size == 3) && (code < 0x800))
|| ((size == 4) && (code < 0x10000)))
{
/* Invalid encoding. */
code = 0;
}
}
}
else
{
tail = -1;
}
if ((tail == 0) && (code > 0))
{
*dest++ = (code <= 0xff) ? (char) (code & 0xff) : '?';
}
}
*dest = 0;
}
/* Read a string tag from an M4A file */ /* Read a string tag from an M4A file */
void read_m4a_tag_string(int fd, int len,char** bufptr,size_t* bytes_remaining, char** dest) void read_m4a_tag_string(int fd, int len,char** bufptr,size_t* bytes_remaining, char** dest)
{ {
@ -316,7 +239,6 @@ void read_m4a_tag_string(int fd, int len,char** bufptr,size_t* bytes_remaining,
} }
**bufptr=(char)0; **bufptr=(char)0;
convert_utf8(*dest);
data_length = strlen(*dest)+1; data_length = strlen(*dest)+1;
*bufptr=(*dest)+data_length; *bufptr=(*dest)+data_length;
*bytes_remaining-=data_length; *bytes_remaining-=data_length;
@ -468,7 +390,6 @@ static bool read_ape_tags(int fd, struct mp3entry* id3)
return false; return false;
} }
convert_utf8(value);
len = parse_tag(name, value, id3, buf, buf_remaining, len = parse_tag(name, value, id3, buf, buf_remaining,
TAGTYPE_APE); TAGTYPE_APE);
buf += len; buf += len;
@ -563,7 +484,6 @@ static bool read_vorbis_tags(int fd, struct mp3entry *id3,
return false; return false;
} }
convert_utf8(value);
len = parse_tag(name, value, id3, buf, buf_remaining, len = parse_tag(name, value, id3, buf, buf_remaining,
TAGTYPE_VORBIS); TAGTYPE_VORBIS);
buf += len; buf += len;

View File

@ -1024,6 +1024,12 @@ static bool read_next_metadata(void)
* is manipulating the playlist a lot, we will just lose battery. */ * is manipulating the playlist a lot, we will just lose battery. */
// filling = true; // filling = true;
status = get_metadata(&tracks[next_track],fd,trackname,v1first); status = get_metadata(&tracks[next_track],fd,trackname,v1first);
/* Preload the glyphs in the tags */
if (status) {
lcd_getstringsize(tracks[next_track].id3.title, NULL, NULL);
lcd_getstringsize(tracks[next_track].id3.artist, NULL, NULL);
lcd_getstringsize(tracks[next_track].id3.album, NULL, NULL);
}
track_changed = true; track_changed = true;
close(fd); close(fd);

View File

@ -29,6 +29,7 @@
#include "statusbar.h" #include "statusbar.h"
#include "talk.h" #include "talk.h"
#include "misc.h" #include "misc.h"
#include "rbunicode.h"
#define KEYBOARD_PAGES 3 #define KEYBOARD_PAGES 3
@ -98,14 +99,16 @@ int kbd_input(char* text, int buflen)
int page = 0, x = 0; int page = 0, x = 0;
int linelen; int linelen;
int len, i; int len, len_utf8, i, j;
int editpos, curpos, leftpos; int editpos, curpos, leftpos;
unsigned short* line = kbd_setupkeys(page, &linelen); unsigned short* line = kbd_setupkeys(page, &linelen);
unsigned char temptext[12]; unsigned char temptext[36];
unsigned short tmp;
unsigned char *utf8;
int button, lastbutton = 0; int button, lastbutton = 0;
editpos = strlen(text); editpos = utf8length(text);
if (global_settings.talk_menu) /* voice UI? */ if (global_settings.talk_menu) /* voice UI? */
talk_spell(text, true); /* spell initial text */ talk_spell(text, true); /* spell initial text */
@ -113,7 +116,8 @@ int kbd_input(char* text, int buflen)
while (!done) while (!done)
{ {
len = strlen(text); len = strlen(text);
len_utf8 = utf8length(text);
if (redraw) if (redraw)
{ {
if (line_edit) if (line_edit)
@ -128,26 +132,47 @@ int kbd_input(char* text, int buflen)
} }
/* Draw insert chars */ /* Draw insert chars */
temptext[0] = KEYBOARD_INSERT_LEFT; utf8 = temptext;
temptext[1] = line[x]; tmp = KEYBOARD_INSERT_LEFT;
temptext[2] = KEYBOARD_INSERT_RIGHT; utf8 = iso_decode((unsigned char*)&tmp, utf8, 0, 1);
tmp = line[x];
utf8 = iso_decode((unsigned char*)&tmp, utf8, 0, 1);
tmp = KEYBOARD_INSERT_RIGHT;
utf8 = iso_decode((unsigned char*)&tmp, utf8, 0, 1);
for (i = 1; i < 8; i++) for (i = 1; i < 8; i++)
{ {
temptext[i+2] = line[(x+i)%linelen]; utf8 = iso_decode((unsigned char*)&line[(x+i)%linelen], utf8, 0, 1);
/* temptext[i+2] = line[(x+i)%linelen]; */
} }
temptext[i+2] = 0; *utf8 = 0;
lcd_puts(1, 0, temptext); lcd_puts(1, 0, temptext);
/* write out the text */ /* write out the text */
curpos = MIN(MIN(editpos, 10 - MIN(len - editpos, 3)), 9); curpos = MIN(MIN(editpos, 10 - MIN(len_utf8 - editpos, 3)), 9);
leftpos = editpos - curpos; leftpos = editpos - curpos;
strncpy(temptext, text + leftpos, 10); if (!leftpos) {
temptext[10] = 0; utf8 = text + utf8seek(text, leftpos);
i = 0;
if (leftpos) j = 0;
} else {
temptext[0] = '<'; temptext[0] = '<';
if (len - leftpos > 10) i = 1;
temptext[9] = '>'; j = 1;
utf8 = text + utf8seek(text, leftpos+1);
}
while (*utf8 && i < 10) {
temptext[j++] = *utf8++;
if ((*utf8 & MASK) != COMP)
i++;
}
temptext[j] = 0;
if (len_utf8 - leftpos > 10) {
utf8 = temptext + utf8seek(temptext, 9);
*utf8++ = '>';
*utf8 = 0;
}
lcd_remove_cursor(); lcd_remove_cursor();
lcd_puts(1, 1, temptext); lcd_puts(1, 1, temptext);
@ -185,10 +210,11 @@ int kbd_input(char* text, int buflen)
case BUTTON_RIGHT | BUTTON_REPEAT: case BUTTON_RIGHT | BUTTON_REPEAT:
if (line_edit) if (line_edit)
{ {
if (editpos < len) if (editpos < len_utf8)
{ {
editpos++; editpos++;
kbd_spellchar(text[editpos]); int c = utf8seek(text, editpos);
kbd_spellchar(text[c]);
} }
} }
else else
@ -206,7 +232,8 @@ int kbd_input(char* text, int buflen)
if (editpos) if (editpos)
{ {
editpos--; editpos--;
kbd_spellchar(text[editpos]); int c = utf8seek(text, editpos);
kbd_spellchar(text[c]);
} }
} }
else else
@ -229,20 +256,35 @@ int kbd_input(char* text, int buflen)
{ {
if (editpos > 0) if (editpos > 0)
{ {
for (i = editpos; i < len; i++) utf8 = text + utf8seek(text, editpos);
text[i-1] = text[i]; i = 0;
text[i-1] = '\0'; do {
i++;
utf8--;
} while ((*utf8 & MASK) == COMP);
while (utf8[i]) {
*utf8 = utf8[i];
utf8++;
}
*utf8 = 0;
editpos--; editpos--;
} }
} }
else /* inserts the selected char */ else /* inserts the selected char */
{ {
if (len + 1 < buflen) utf8 = iso_decode((unsigned char*)&line[x], temptext, 0, 1);
*utf8 = 0;
j = strlen(temptext);
if (len + j < buflen)
{ {
for (i = len ; i > editpos; i--) int k = len_utf8;
text[i] = text[i-1]; for (i = len+j; k >= editpos; i--) {
text[len+1] = 0; text[i] = text[i-j];
text[editpos] = line[x]; if ((text[i] & MASK) != COMP)
k--;
}
while (j--)
text[i--] = temptext[j];
editpos++; editpos++;
} }
} }

View File

@ -361,7 +361,14 @@ static const struct plugin_api rockbox_api = {
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
screen_dump_set_hook, screen_dump_set_hook,
font_get_width,
#endif #endif
utf8decode,
iso_decode,
utf16LEdecode,
utf16BEdecode,
utf8encode,
utf8length,
}; };
int plugin_load(const char* plugin, void* parameter) int plugin_load(const char* plugin, void* parameter)

View File

@ -57,6 +57,7 @@
#endif #endif
#include "sound.h" #include "sound.h"
#include "menu.h" #include "menu.h"
#include "rbunicode.h"
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
#include "lcd-remote.h" #include "lcd-remote.h"
@ -90,7 +91,7 @@
#endif #endif
/* increase this every time the api struct changes */ /* increase this every time the api struct changes */
#define PLUGIN_API_VERSION 52 #define PLUGIN_API_VERSION 53
/* update this to latest version if a change to the api struct breaks /* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any backwards compatibility (and please take the opportunity to sort in any
@ -441,7 +442,14 @@ struct plugin_api {
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
void (*screen_dump_set_hook)(void (*hook)(int fh)); void (*screen_dump_set_hook)(void (*hook)(int fh));
int (*font_get_width)(struct font* pf, unsigned short char_code);
#endif #endif
const unsigned char* (*utf8decode)(const unsigned char *utf8, unsigned short *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, unsigned int count);
unsigned char* (*utf16BEdecode)(const unsigned char *utf16, unsigned char *utf8, unsigned int count);
unsigned char* (*utf8encode)(unsigned long ucs, unsigned char *utf8);
unsigned long (*utf8length)(const unsigned char *utf8);
}; };
int plugin_load(const char* plugin, void* parameter); int plugin_load(const char* plugin, void* parameter);

View File

@ -30,6 +30,7 @@
#include "talk.h" #include "talk.h"
#include "settings.h" #include "settings.h"
#include "misc.h" #include "misc.h"
#include "rbunicode.h"
#include "buttonbar.h" #include "buttonbar.h"
#include "logf.h" #include "logf.h"
@ -117,32 +118,32 @@
#if KEYBOARD_PAGES == 1 #if KEYBOARD_PAGES == 1
static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = { static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = {
{ "ABCDEFG abcdefg !?\" @#$%+'", { "ABCDEFG abcdefg !?\" @#$%+'",
"HIJKLMN hijklmn 789 &_()-`", "HIJKLMN hijklmn 789 &_()-`",
"OPQRSTU opqrstu 456 §|{}/<", "OPQRSTU opqrstu 456 §|{}/<",
"VWXYZ., vwxyz.,0123 ~=[]*>", "VWXYZ., vwxyz.,0123 ~=[]*>",
"ÀÁÂÃÄÅÆ ÌÍÎÏ ÈÉÊË ¢£¤¥¦§©®", "ÀÁÂÃÄÅÆ ÌÍÎÏ ÈÉÊË ¢£¤¥¦§©®",
"àáâãäåæ ìíîï èéêë «»°ºª¹²³", "àáâãäåæ ìíîï èéêë «»°ºª¹²³",
"ÓÒÔÕÖØ ÇÐÞÝß ÙÚÛÜ ¯±×÷¡¿µ·", "ÓÒÔÕÖØ ÇÐÞÝß ÙÚÛÜ ¯±×÷¡¿µ·",
"òóôõöø çðþýÿ ùúûü ¼½¾¬¶¨ " }, "òóôõöø çðþýÿ ùúûü ¼½¾¬¶¨ " },
}; };
#else #else
static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = { static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = {
{ "ABCDEFG !?\" @#$%+'", { "ABCDEFG !?\" @#$%+'",
"HIJKLMN 789 &_()-`", "HIJKLMN 789 &_()-`",
"OPQRSTU 456 §|{}/<", "OPQRSTU 456 §|{}/<",
"VWXYZ.,0123 ~=[]*>" }, "VWXYZ.,0123 ~=[]*>" },
{ "abcdefg ¢£¤¥¦§©®¬", { "abcdefg ¢£¤¥¦§©®¬",
"hijklmn «»°ºª¹²³¶", "hijklmn «»°ºª¹²³¶",
"opqrstu ¯±×÷¡¿µ·¨", "opqrstu ¯±×÷¡¿µ·¨",
"vwxyz., ¼½¾ " }, "vwxyz., ¼½¾ " },
{ "ÀÁÂÃÄÅÆ ÌÍÎÏ ÈÉÊË", { "ÀÁÂÃÄÅÆ ÌÍÎÏ ÈÉÊË",
"àáâãäåæ ìíîï èéêë", "àáâãäåæ ìíîï èéêë",
"ÓÒÔÕÖØ ÇÐÞÝß ÙÚÛÜ", "ÓÒÔÕÖØ ÇÐÞÝß ÙÚÛÜ",
"òóôõöø çðþýÿ ùúûü" }, "òóôõöø çðþýÿ ùúûü" },
}; };
#endif #endif
@ -178,18 +179,19 @@ int kbd_input(char* text, int buflen)
#if defined(KBD_PAGE_FLIP) || (KEYBOARD_PAGES > 1) #if defined(KBD_PAGE_FLIP) || (KEYBOARD_PAGES > 1)
int page = 0; int page = 0;
#endif #endif
int font_w = 0, font_h = 0, i; int font_w = 0, font_h = 0, i, j;
int x = 0, y = 0; int x = 0, y = 0;
int main_x, main_y, max_chars; int main_x, main_y, max_chars;
int status_y1, status_y2; int status_y1, status_y2;
int len; int len, len_utf8, c = 0;
int editpos, curpos, leftpos; int editpos, curpos, leftpos;
bool redraw = true; bool redraw = true;
unsigned char *utf8;
const char * const *line; const char * const *line;
#ifdef HAVE_MORSE_INPUT #ifdef HAVE_MORSE_INPUT
bool morse_reading = false; bool morse_reading = false;
unsigned char morse_code = 0; unsigned char morse_code = 0;
int morse_tick = 0, morse_len, j; int morse_tick = 0, morse_len;
char buf[2]; char buf[2];
#endif #endif
#ifdef KBD_MODES #ifdef KBD_MODES
@ -218,7 +220,7 @@ int kbd_input(char* text, int buflen)
status_y1 = LCD_HEIGHT - font_h; status_y1 = LCD_HEIGHT - font_h;
status_y2 = LCD_HEIGHT; status_y2 = LCD_HEIGHT;
editpos = strlen(text); editpos = utf8length(text);
max_chars = LCD_WIDTH / font_w - 2; /* leave room for < and > */ max_chars = LCD_WIDTH / font_w - 2; /* leave room for < and > */
line = kbdpages[0]; line = kbdpages[0];
@ -229,11 +231,12 @@ int kbd_input(char* text, int buflen)
while(!done) while(!done)
{ {
len = strlen(text); len = strlen(text);
len_utf8 = utf8length(text);
if (redraw) if(redraw)
{ {
lcd_clear_display(); lcd_clear_display();
lcd_setfont(FONT_SYSFIXED); lcd_setfont(FONT_SYSFIXED);
#ifdef HAVE_MORSE_INPUT #ifdef HAVE_MORSE_INPUT
@ -279,18 +282,24 @@ int kbd_input(char* text, int buflen)
/* separator */ /* separator */
lcd_hline(0, LCD_WIDTH - 1, main_y - KEYBOARD_MARGIN); lcd_hline(0, LCD_WIDTH - 1, main_y - KEYBOARD_MARGIN);
/* write out the text */ /* write out the text */
curpos = MIN(editpos, max_chars - MIN(len - editpos, 2)); curpos = MIN(editpos, max_chars - MIN(len_utf8 - editpos, 2));
leftpos = editpos - curpos; leftpos = editpos - curpos;
strncpy(outline, text + leftpos, max_chars); utf8 = text + utf8seek(text, leftpos);
outline[max_chars] = 0; i=j=0;
while (*utf8 && i < max_chars) {
outline[j++] = *utf8++;
if ((*utf8 & MASK) != COMP)
i++;
}
outline[j] = 0;
lcd_putsxy(font_w, main_y, outline); lcd_putsxy(font_w, main_y, outline);
if (leftpos) if (leftpos)
lcd_putsxy(0, main_y, "<"); lcd_putsxy(0, main_y, "<");
if (len - leftpos > max_chars) if (len_utf8 - leftpos > max_chars)
lcd_putsxy(LCD_WIDTH - font_w, main_y, ">"); lcd_putsxy(LCD_WIDTH - font_w, main_y, ">");
/* cursor */ /* cursor */
@ -361,7 +370,8 @@ int kbd_input(char* text, int buflen)
#endif #endif
} }
line = kbdpages[page]; line = kbdpages[page];
kbd_spellchar(line[y][x]); c = utf8seek(line[y], x);
kbd_spellchar(line[y][c]);
break; break;
#endif #endif
@ -374,16 +384,17 @@ int kbd_input(char* text, int buflen)
#ifdef KBD_MODES #ifdef KBD_MODES
if (line_edit) /* right doubles as cursor_right in line_edit */ if (line_edit) /* right doubles as cursor_right in line_edit */
{ {
if (editpos < len) if (editpos < len_utf8)
{ {
editpos++; editpos++;
kbd_spellchar(text[editpos]); c = utf8seek(text, editpos);
kbd_spellchar(text[c]);
} }
} }
else else
#endif #endif
{ {
if (x < (int)strlen(line[y]) - 1) if (x < (int)utf8length(line[y]) - 1)
x++; x++;
else else
{ {
@ -395,7 +406,8 @@ int kbd_input(char* text, int buflen)
line = kbdpages[page]; line = kbdpages[page];
#endif #endif
} }
kbd_spellchar(line[y][x]); c = utf8seek(line[y], x);
kbd_spellchar(line[y][c]);
} }
break; break;
@ -411,7 +423,8 @@ int kbd_input(char* text, int buflen)
if (editpos) if (editpos)
{ {
editpos--; editpos--;
kbd_spellchar(text[editpos]); c = utf8seek(text, editpos);
kbd_spellchar(text[c]);
} }
} }
else else
@ -427,9 +440,10 @@ int kbd_input(char* text, int buflen)
page = (KEYBOARD_PAGES-1); page = (KEYBOARD_PAGES-1);
line = kbdpages[page]; line = kbdpages[page];
#endif #endif
x = strlen(line[y]) - 1; x = utf8length(line[y]) - 1;
} }
kbd_spellchar(line[y][x]); c = utf8seek(line[y], x);
kbd_spellchar(line[y][c]);
} }
break; break;
@ -458,7 +472,8 @@ int kbd_input(char* text, int buflen)
} }
if (!line_edit) if (!line_edit)
#endif #endif
kbd_spellchar(line[y][x]); c = utf8seek(line[y], x);
kbd_spellchar(line[y][c]);
break; break;
case KBD_UP: case KBD_UP:
@ -486,7 +501,8 @@ int kbd_input(char* text, int buflen)
} }
if (!line_edit) if (!line_edit)
#endif #endif
kbd_spellchar(line[y][x]); c = utf8seek(line[y], x);
kbd_spellchar(line[y][c]);
break; break;
case KBD_DONE: case KBD_DONE:
@ -534,21 +550,38 @@ int kbd_input(char* text, int buflen)
{ {
if (editpos > 0) if (editpos > 0)
{ {
for (i = editpos; i < len; i++) utf8 = text + utf8seek(text, editpos);
text[i-1] = text[i]; i = 0;
text[i-1] = '\0'; do {
i++;
utf8--;
} while ((*utf8 & MASK) == COMP);
while (utf8[i]) {
*utf8 = utf8[i];
utf8++;
}
*utf8 = 0;
editpos--; editpos--;
} }
} }
else else
#endif #endif
{ {
if (len + 1 < buflen) const unsigned char *inschar = line[y] + utf8seek(line[y], x);
j = 0;
do {
j++;
} while ((inschar[j] & MASK) == COMP);
if (len + j < buflen)
{ {
for (i = len ; i > editpos; i--) int k = len_utf8;
text[i] = text[i-1]; for (i = len+j; k >= editpos; i--) {
text[len+1] = 0; text[i] = text[i-j];
text[editpos] = line[y][x]; if ((text[i] & MASK) != COMP)
k--;
}
while (j--)
text[i--] = inschar[j];
editpos++; editpos++;
} }
} }
@ -561,9 +594,17 @@ int kbd_input(char* text, int buflen)
case KBD_BACKSPACE | BUTTON_REPEAT: case KBD_BACKSPACE | BUTTON_REPEAT:
if (editpos > 0) if (editpos > 0)
{ {
for (i = editpos; i < len; i++) utf8 = text + utf8seek(text, editpos);
text[i-1] = text[i]; i = 0;
text[i-1] = '\0'; do {
i++;
utf8--;
} while ((*utf8 & MASK) == COMP);
while (utf8[i]) {
*utf8 = utf8[i];
utf8++;
}
*utf8 = 0;
editpos--; editpos--;
} }
if (global_settings.talk_menu) /* voice UI? */ if (global_settings.talk_menu) /* voice UI? */
@ -572,10 +613,11 @@ int kbd_input(char* text, int buflen)
case KBD_CURSOR_RIGHT: case KBD_CURSOR_RIGHT:
case KBD_CURSOR_RIGHT | BUTTON_REPEAT: case KBD_CURSOR_RIGHT | BUTTON_REPEAT:
if (editpos < len) if (editpos < len_utf8)
{ {
editpos++; editpos++;
kbd_spellchar(text[editpos]); c = utf8seek(text, editpos);
kbd_spellchar(text[c]);
} }
break; break;
@ -584,7 +626,8 @@ int kbd_input(char* text, int buflen)
if (editpos) if (editpos)
{ {
editpos--; editpos--;
kbd_spellchar(text[editpos]); c = utf8seek(text, editpos);
kbd_spellchar(text[c]);
} }
break; break;
#endif /* !KBD_MODES */ #endif /* !KBD_MODES */

View File

@ -41,7 +41,6 @@
#include "power.h" #include "power.h"
#include "backlight.h" #include "backlight.h"
#include "powermgmt.h" #include "powermgmt.h"
#include "bidi.h"
#include "status.h" #include "status.h"
#include "atoi.h" #include "atoi.h"
#include "screens.h" #include "screens.h"
@ -67,6 +66,7 @@
#include "version.h" #include "version.h"
#include "rtc.h" #include "rtc.h"
#include "sound.h" #include "sound.h"
#include "rbunicode.h"
#include "dircache.h" #include "dircache.h"
#include "select.h" #include "select.h"
#include "statusbar.h" #include "statusbar.h"
@ -85,7 +85,7 @@ const char rec_base_directory[] = REC_BASE_DIR;
#include "dsp.h" #include "dsp.h"
#endif #endif
#define CONFIG_BLOCK_VERSION 34 #define CONFIG_BLOCK_VERSION 35
#define CONFIG_BLOCK_SIZE 512 #define CONFIG_BLOCK_SIZE 512
#define RTC_BLOCK_SIZE 44 #define RTC_BLOCK_SIZE 44
@ -243,7 +243,6 @@ static const struct bit_entry rtc_bits[] =
{1, S_O(volume_type), 0, "volume display", graphic_numeric }, {1, S_O(volume_type), 0, "volume display", graphic_numeric },
{1, S_O(battery_display), 0, "battery display", graphic_numeric }, {1, S_O(battery_display), 0, "battery display", graphic_numeric },
{1, S_O(timeformat), 0, "time format", "24hour,12hour" }, {1, S_O(timeformat), 0, "time format", "24hour,12hour" },
{1, S_O(bidi_support), false, "bidi hebrew/arabic", off_on },
#endif /* HAVE_LCD_BITMAP */ #endif /* HAVE_LCD_BITMAP */
{1, S_O(show_icons), true, "show icons", off_on }, {1, S_O(show_icons), true, "show icons", off_on },
/* system */ /* system */
@ -910,7 +909,6 @@ void settings_apply(void)
#endif #endif
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
set_bidi_support(global_settings.bidi_support);
lcd_set_invert_display(global_settings.invert); lcd_set_invert_display(global_settings.invert);
lcd_set_flip(global_settings.flip_display); lcd_set_flip(global_settings.flip_display);
button_set_flip(global_settings.flip_display); button_set_flip(global_settings.flip_display);
@ -967,6 +965,8 @@ void settings_apply(void)
talk_init(); /* use voice of same language */ talk_init(); /* use voice of same language */
} }
set_codepage(global_settings.default_codepage);
#if CONFIG_CODEC == SWCODEC #if CONFIG_CODEC == SWCODEC
audio_set_crossfade(global_settings.crossfade); audio_set_crossfade(global_settings.crossfade);
dsp_set_replaygain(true); dsp_set_replaygain(true);

View File

@ -219,7 +219,6 @@ struct user_settings
bool invert_cursor; /* invert the current file in dir browser and menu bool invert_cursor; /* invert the current file in dir browser and menu
instead of using the default cursor */ instead of using the default cursor */
bool flip_display; /* turn display (and button layout) by 180 degrees */ bool flip_display; /* turn display (and button layout) by 180 degrees */
bool bidi_support; /* reverse hebrew/arabic chars: 0=off, 1=on */
int poweroff; /* power off timer */ int poweroff; /* power off timer */
int backlight_timeout; /* backlight off timeout: 0-18 0=never, int backlight_timeout; /* backlight off timeout: 0-18 0=never,
1=always, 1=always,
@ -370,6 +369,7 @@ struct user_settings
bool dircache; /* enable directory cache */ bool dircache; /* enable directory cache */
int dircache_size; /* directory cache structure last size, 22 bits */ int dircache_size; /* directory cache structure last size, 22 bits */
#endif #endif
int default_codepage; /* set default codepage for tag conversion */
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
unsigned char rwps_file[MAX_FILENAME+1]; /* last remote-wps */ unsigned char rwps_file[MAX_FILENAME+1]; /* last remote-wps */
#endif #endif

View File

@ -38,7 +38,6 @@
#include "fat.h" /* For dotfile settings */ #include "fat.h" /* For dotfile settings */
#include "sleeptimer.h" #include "sleeptimer.h"
#include "powermgmt.h" #include "powermgmt.h"
#include "bidi.h"
#include "rtc.h" #include "rtc.h"
#include "ata.h" #include "ata.h"
#include "tree.h" #include "tree.h"
@ -51,6 +50,7 @@
#include "database.h" #include "database.h"
#include "dir.h" #include "dir.h"
#include "dircache.h" #include "dircache.h"
#include "rbunicode.h"
#include "splash.h" #include "splash.h"
#include "yesno.h" #include "yesno.h"
@ -290,18 +290,6 @@ static bool invert_cursor(void)
NULL); NULL);
} }
/**
* Menu to reverse Hebrew and Arabic text according to BiDi algorythm
*/
static bool bidi_support(void)
{
return set_bool_options( str(LANG_BIDI_SUPPORT),
&global_settings.bidi_support,
STR(LANG_SET_BOOL_YES),
STR(LANG_SET_BOOL_NO),
set_bidi_support);
}
/** /**
* Menu to configure the battery display on status bar * Menu to configure the battery display on status bar
*/ */
@ -1150,6 +1138,28 @@ static bool runtimedb(void)
return rc; return rc;
} }
static bool codepage_setting(void)
{
static const struct opt_items names[] = {
{ STR(LANG_CODEPAGE_LATIN1) },
{ STR(LANG_CODEPAGE_GREEK) },
{ STR(LANG_CODEPAGE_HEBREW) },
{ STR(LANG_CODEPAGE_RUSSIAN) },
{ STR(LANG_CODEPAGE_THAI) },
{ STR(LANG_CODEPAGE_ARABIC) },
{ STR(LANG_CODEPAGE_TURKISH) },
{ STR(LANG_CODEPAGE_LATIN_EXTENDED) },
{ STR(LANG_CODEPAGE_JAPANESE) },
{ STR(LANG_CODEPAGE_SIMPLIFIED) },
{ STR(LANG_CODEPAGE_KOREAN) },
{ STR(LANG_CODEPAGE_TRADITIONAL) },
{ STR(LANG_CODEPAGE_UTF8) },
};
return set_option(str(LANG_DEFAULT_CODEPAGE),
&global_settings.default_codepage,
INT, names, 13, set_codepage );
}
#if CONFIG_CODEC == SWCODEC #if CONFIG_CODEC == SWCODEC
static bool replaygain(void) static bool replaygain(void)
{ {
@ -1606,8 +1616,8 @@ static bool display_settings_menu(void)
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
{ ID2P(LANG_BARS_MENU), bars_settings_menu }, { ID2P(LANG_BARS_MENU), bars_settings_menu },
{ ID2P(LANG_PM_MENU), peak_meter_menu }, { ID2P(LANG_PM_MENU), peak_meter_menu },
{ ID2P(LANG_BIDI_SUPPORT), bidi_support },
#endif #endif
{ ID2P(LANG_DEFAULT_CODEPAGE), codepage_setting },
}; };
m=menu_init( items, sizeof(items) / sizeof(*items), NULL, m=menu_init( items, sizeof(items) / sizeof(*items), NULL,

View File

@ -8,7 +8,7 @@
People that have contributed to the project, one way or another. Friends! People that have contributed to the project, one way or another. Friends!
Björn Stenberg Björn Stenberg
Linus Nielsen Feltzing Linus Nielsen Feltzing
Andy Choi Andy Choi
Andrew Jamieson Andrew Jamieson
@ -20,17 +20,17 @@ Gary Czvitkovicz
Stuart Martin Stuart Martin
Felix Arends Felix Arends
Ulf Ralberg Ulf Ralberg
David Härdeman David Härdeman
Thomas Saeys Thomas Saeys
Grant Wier Grant Wier
Julien Labruyére Julien Labruyére
Nicolas Sauzede Nicolas Sauzede
Robert Hak Robert Hak
Dave Chapman Dave Chapman
Stefan Meyer Stefan Meyer
Eric Linenberg Eric Linenberg
Tom Cvitan Tom Cvitan
Magnus Öman Magnus Öman
Jerome Kuptz Jerome Kuptz
Julien Boissinot Julien Boissinot
Nuutti Kotivuori Nuutti Kotivuori
@ -59,14 +59,14 @@ Kjell Ericson
Jim Hagani Jim Hagani
Ludovic Lange Ludovic Lange
Mike Holden Mike Holden
Simon Elén Simon Elén
Matthew P. OReilly Matthew P. OReilly
Christian Schönberger Christian Schönberger
Henrik Backe Henrik Backe
Craig Sather Craig Sather
José Maria Garcia-Valdecasas Bernal José Maria Garcia-Valdecasas Bernal
Stevie Oh Stevie Oh
Jörg Hohensohn Jörg Hohensohn
Dave Jones Dave Jones
Thomas Paul Diffenbach Thomas Paul Diffenbach
Roland Kletzing Roland Kletzing
@ -96,7 +96,7 @@ Jiri Jurecek
Jacob Erlbeck Jacob Erlbeck
Jean-Philippe Bernardy Jean-Philippe Bernardy
Dave Hooper Dave Hooper
Jonas Häggqvist Jonas Häggqvist
Thom Johansen Thom Johansen
Rinat Zakirov Rinat Zakirov
Manuel Dejonghe Manuel Dejonghe
@ -105,12 +105,12 @@ Michiel van der Kolk
Tony Motakis Tony Motakis
Andy Young Andy Young
Alexandre Bourget Alexandre Bourget
Richard S. La Charité III Richard S. La Charité III
Christian Gmeiner Christian Gmeiner
Tomas Salfischberger Tomas Salfischberger
Miika Pekkarinen Miika Pekkarinen
Tapio Karppinen Tapio Karppinen
Richard Ottó O'Brien Richard Ottó O'Brien
Luca Burelli Luca Burelli
Alessio Lenzi Alessio Lenzi
David Bryant David Bryant
@ -126,9 +126,9 @@ Hristo Kovachev
Sander Sweers Sander Sweers
Antonius Hellman Antonius Hellman
Ryan Jackson Ryan Jackson
Per Holmäng Per Holmäng
Frederic Devernay Frederic Devernay
José M. Fandiño José M. Fandiño
Gadi Cohen Gadi Cohen
Naftali Goldstein Naftali Goldstein
David Dent David Dent

View File

@ -1,3 +1,4 @@
common/unicode.c
#ifdef ROCKBOX_HAS_LOGF #ifdef ROCKBOX_HAS_LOGF
logf.c logf.c
#endif #endif
@ -103,6 +104,8 @@ drivers/rtc.c
drivers/serial.c drivers/serial.c
#endif /* !SIMULATOR */ #endif /* !SIMULATOR */
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
lru.c
font_cache.c
font.c font.c
#endif #endif
id3.c id3.c

205
firmware/arabjoin.h Normal file
View File

@ -0,0 +1,205 @@
typedef struct {
unsigned short isolated;
unsigned short final;
unsigned short medial;
unsigned short initial;
} arab_t;
//static arab_t dummy = {0,0,0,0};
static arab_t zwj = {0x20,0x20,0x20,0x20}; //zero-width joiner
static arab_t lamaleph[] = {
{0xfefb,0xfefc,0,0},
{0xfef9,0xfefa,0,0},
{0xfef7,0xfef8,0,0},
{0xfef5,0xfef6,0,0}
};
static arab_t jointable[] = {
{0xfe80,0x0000,0x0000,0x0000}, // 0x0621
{0xfe81,0xfe82,0x0000,0x0000}, // 0x0622
{0xfe83,0xfe84,0x0000,0x0000}, // 0x0623
{0xfe85,0xfe86,0x0000,0x0000}, // 0x0624
{0xfe87,0xfe88,0x0000,0x0000}, // 0x0625
{0xfe89,0xfe8a,0xfe8c,0xfe8b}, // 0x0626
{0xfe8d,0xfe8e,0x0000,0x0000}, // 0x0627
{0xfe8f,0xfe90,0xfe92,0xfe91}, // 0x0628
{0xfe93,0xfe94,0x0000,0x0000}, // 0x0629
{0xfe95,0xfe96,0xfe98,0xfe97}, // 0x062a
{0xfe99,0xfe9a,0xfe9c,0xfe9b}, // 0x062b
{0xfe9d,0xfe9e,0xfea0,0xfe9f}, // 0x062c
{0xfea1,0xfea2,0xfea4,0xfea3}, // 0x062d
{0xfea5,0xfea6,0xfea8,0xfea7}, // 0x062e
{0xfea9,0xfeaa,0x0000,0x0000}, // 0x062f
{0xfeab,0xfeac,0x0000,0x0000}, // 0x0630
{0xfead,0xfeae,0x0000,0x0000}, // 0x0631
{0xfeaf,0xfeb0,0x0000,0x0000}, // 0x0632
{0xfeb1,0xfeb2,0xfeb4,0xfeb3}, // 0x0633
{0xfeb5,0xfeb6,0xfeb8,0xfeb7}, // 0x0634
{0xfeb9,0xfeba,0xfebc,0xfebb}, // 0x0635
{0xfebd,0xfebe,0xfec0,0xfebf}, // 0x0636
{0xfec1,0xfec2,0xfec4,0xfec3}, // 0x0637
{0xfec5,0xfec6,0xfec8,0xfec7}, // 0x0638
{0xfec9,0xfeca,0xfecc,0xfecb}, // 0x0639
{0xfecd,0xfece,0xfed0,0xfecf}, // 0x063a
#if 0
{0x0000,0x0000,0x0000,0x0000}, // 0x063b
{0x0000,0x0000,0x0000,0x0000}, // 0x063c
{0x0000,0x0000,0x0000,0x0000}, // 0x063d
{0x0000,0x0000,0x0000,0x0000}, // 0x063e
{0x0000,0x0000,0x0000,0x0000}, // 0x063f
#endif
{0x0640,0x0640,0x0640,0x0640}, // 0x0640
{0xfed1,0xfed2,0xfed4,0xfed3}, // 0x0641
{0xfed5,0xfed6,0xfed8,0xfed7}, // 0x0642
{0xfed9,0xfeda,0xfedc,0xfedb}, // 0x0643
{0xfedd,0xfede,0xfee0,0xfedf}, // 0x0644
{0xfee1,0xfee2,0xfee4,0xfee3}, // 0x0645
{0xfee5,0xfee6,0xfee8,0xfee7}, // 0x0646
{0xfee9,0xfeea,0xfeec,0xfeeb}, // 0x0647
{0xfeed,0xfeee,0x0000,0x0000}, // 0x0648
{0xfeef,0xfef0,0x0000,0x0000}, // 0x0649
{0xfef1,0xfef2,0xfef4,0xfef3}, // 0x064a
# if 0
{0x0000,0x0000,0x0000,0x0000}, // 0x064b
{0x0000,0x0000,0x0000,0x0000}, // 0x064c
{0x0000,0x0000,0x0000,0x0000}, // 0x064d
{0x0000,0x0000,0x0000,0x0000}, // 0x064e
{0x0000,0x0000,0x0000,0x0000}, // 0x064f
{0x0000,0x0000,0x0000,0x0000}, // 0x0650
{0x0000,0x0000,0x0000,0x0000}, // 0x0651
{0x0000,0x0000,0x0000,0x0000}, // 0x0652
{0x0000,0x0000,0x0000,0x0000}, // 0x0653
{0x0000,0x0000,0x0000,0x0000}, // 0x0654
{0x0000,0x0000,0x0000,0x0000}, // 0x0655
{0x0000,0x0000,0x0000,0x0000}, // 0x0656
{0x0000,0x0000,0x0000,0x0000}, // 0x0657
{0x0000,0x0000,0x0000,0x0000}, // 0x0658
{0x0000,0x0000,0x0000,0x0000}, // 0x0659
{0x0000,0x0000,0x0000,0x0000}, // 0x065a
{0x0000,0x0000,0x0000,0x0000}, // 0x065b
{0x0000,0x0000,0x0000,0x0000}, // 0x065c
{0x0000,0x0000,0x0000,0x0000}, // 0x065d
{0x0000,0x0000,0x0000,0x0000}, // 0x065e
{0x0000,0x0000,0x0000,0x0000}, // 0x065f
{0x0000,0x0000,0x0000,0x0000}, // 0x0660
{0x0000,0x0000,0x0000,0x0000}, // 0x0661
{0x0000,0x0000,0x0000,0x0000}, // 0x0662
{0x0000,0x0000,0x0000,0x0000}, // 0x0663
{0x0000,0x0000,0x0000,0x0000}, // 0x0664
{0x0000,0x0000,0x0000,0x0000}, // 0x0665
{0x0000,0x0000,0x0000,0x0000}, // 0x0666
{0x0000,0x0000,0x0000,0x0000}, // 0x0667
{0x0000,0x0000,0x0000,0x0000}, // 0x0668
{0x0000,0x0000,0x0000,0x0000}, // 0x0669
{0x0000,0x0000,0x0000,0x0000}, // 0x066a
{0x0000,0x0000,0x0000,0x0000}, // 0x066b
{0x0000,0x0000,0x0000,0x0000}, // 0x066c
{0x0000,0x0000,0x0000,0x0000}, // 0x066d
{0x0000,0x0000,0x0000,0x0000}, // 0x066e
{0x0000,0x0000,0x0000,0x0000}, // 0x066f
{0x0000,0x0000,0x0000,0x0000}, // 0x0670
#endif
{0xfb50,0x0000,0x0000,0x0000}, // 0x0671
{0x0672,0x0672,0x0000,0x0000}, // 0x0672
{0x0673,0x0673,0x0000,0x0000}, // 0x0673
{0x0674,0x0000,0x0000,0x0000}, // 0x0674
{0x0675,0x0675,0x0000,0x0000}, // 0x0675
{0x0676,0x0676,0x0000,0x0000}, // 0x0676
{0xfbdd,0x0677,0x0000,0x0000}, // 0x0677
{0x0678,0x0678,0x0678,0x0678}, // 0x0678
{0xfb66,0xfb67,0xfb69,0xfb68}, // 0x0679
{0xfb5e,0xfb5f,0xfb61,0xfb60}, // 0x067a
{0xfb52,0xfb53,0xfb55,0xfb54}, // 0x067b
{0x067c,0x067c,0x067c,0x067c}, // 0x067c
{0x067d,0x067d,0x067d,0x067d}, // 0x067d
{0xfb56,0xfb57,0xfb59,0xfb58}, // 0x067e
{0xfb62,0xfb63,0xfb65,0xfb64}, // 0x067f
{0xfb5a,0xfb5b,0xfb5d,0xfb5c}, // 0x0680
{0x0681,0x0681,0x0681,0x0681}, // 0x0681
{0x0682,0x0682,0x0682,0x0682}, // 0x0682
{0xfb76,0xfb77,0xfb79,0xfb78}, // 0x0683
{0xfb72,0xfb73,0xfb75,0xfb74}, // 0x0684
{0x0685,0x0685,0x0685,0x0685}, // 0x0685
{0xfb7a,0xfb7b,0xfb7d,0xfb7c}, // 0x0686
{0xfb7e,0xfb7f,0xfb81,0xfb80}, // 0x0687
{0xfb88,0xfb89,0x0000,0x0000}, // 0x0688
{0x0689,0x0689,0x0000,0x0000}, // 0x0689
{0x068a,0x068a,0x0000,0x0000}, // 0x068a
{0x068b,0x068b,0x0000,0x0000}, // 0x068b
{0xfb84,0xfb85,0x0000,0x0000}, // 0x068c
{0xfb82,0xfb83,0x0000,0x0000}, // 0x068d
{0xfb86,0xfb87,0x0000,0x0000}, // 0x068e
{0x068f,0x068f,0x0000,0x0000}, // 0x068f
{0x0690,0x0690,0x0000,0x0000}, // 0x0690
{0xfb8c,0xfb8d,0x0000,0x0000}, // 0x0691
{0x0692,0x0692,0x0000,0x0000}, // 0x0692
{0x0693,0x0693,0x0000,0x0000}, // 0x0693
{0x0694,0x0694,0x0000,0x0000}, // 0x0694
{0x0695,0x0695,0x0000,0x0000}, // 0x0695
{0x0695,0x0696,0x0000,0x0000}, // 0x0696
{0x0697,0x0697,0x0000,0x0000}, // 0x0697
{0xfb8a,0xfb8b,0x0000,0x0000}, // 0x0698
{0x0699,0x0699,0x0000,0x0000}, // 0x0699
{0x069a,0x069a,0x069a,0x069a}, // 0x069a
{0x069b,0x069b,0x069b,0x069b}, // 0x069b
{0x069c,0x069c,0x069c,0x069c}, // 0x069c
{0x069d,0x069d,0x069d,0x069d}, // 0x069d
{0x069e,0x069e,0x069e,0x069e}, // 0x069e
{0x069f,0x069f,0x069f,0x069f}, // 0x069f
{0x06a0,0x06a0,0x06a0,0x06a0}, // 0x06a0
{0x06a1,0x06a1,0x06a1,0x06a1}, // 0x06a1
{0x06a2,0x06a2,0x06a2,0x06a2}, // 0x06a2
{0x06a3,0x06a3,0x06a3,0x06a3}, // 0x06a3
{0xfb6a,0xfb6b,0xfb6d,0xfb6c}, // 0x06a4
{0x06a5,0x06a5,0x06a5,0x06a5}, // 0x06a5
{0xfb6e,0xfb6f,0xfb71,0xfb70}, // 0x06a6
{0x06a7,0x06a7,0x06a7,0x06a7}, // 0x06a7
{0x06a8,0x06a8,0x06a8,0x06a8}, // 0x06a8
{0xfb8e,0xfb8f,0xfb91,0xfb90}, // 0x06a9
{0x06aa,0x06aa,0x06aa,0x06aa}, // 0x06aa
{0x06ab,0x06ab,0x06ab,0x06ab}, // 0x06ab
{0x06ac,0x06ac,0x06ac,0x06ac}, // 0x06ac
{0xfbd3,0xfbd4,0xfbd6,0xfbd5}, // 0x06ad
{0x06ae,0x06ae,0x06ae,0x06ae}, // 0x06ae
{0xfb92,0xfb93,0xfb95,0xfb94}, // 0x06af
{0x06b0,0x06b0,0x06b0,0x06b0}, // 0x06b0
{0xfb9a,0xfb9b,0xfb9d,0xfb9c}, // 0x06b1
{0x06b2,0x06b2,0x06b2,0x06b2}, // 0x06b2
{0xfb96,0xfb97,0xfb99,0xfb98}, // 0x06b3
{0x06b4,0x06b4,0x06b4,0x06b4}, // 0x06b4
{0x06b5,0x06b5,0x06b5,0x06b5}, // 0x06b5
{0x06b6,0x06b6,0x06b6,0x06b6}, // 0x06b6
{0x06b7,0x06b7,0x06b7,0x06b7}, // 0x06b7
{0x0000,0x0000,0x0000,0x0000}, // 0x06b8
{0x0000,0x0000,0x0000,0x0000}, // 0x06b9
{0xfb9e,0xfb9f,0x06ba,0x06ba}, // 0x06ba
{0xfba0,0xfba1,0xfba3,0xfba2}, // 0x06bb
{0x06bc,0x06bc,0x06bc,0x06bc}, // 0x06bc
{0x06bd,0x06bd,0x06bd,0x06bd}, // 0x06bd
{0xfbaa,0xfbab,0xfbad,0xfbac}, // 0x06be
{0x0000,0x0000,0x0000,0x0000}, // 0x06bf
{0xfba4,0xfba5,0x0000,0x0000}, // 0x06c0
{0x06c1,0x06c1,0x06c1,0x06c1}, // 0x06c1
{0x06c2,0x06c2,0x0000,0x0000}, // 0x06c2
{0x06c3,0x06c3,0x0000,0x0000}, // 0x06c3
{0x06c4,0x06c4,0x0000,0x0000}, // 0x06c4
{0x06c5,0x06c5,0x0000,0x0000}, // 0x06c5
{0x06c6,0x06c6,0x0000,0x0000}, // 0x06c6
{0x06c7,0x06c7,0x0000,0x0000}, // 0x06c7
{0x06c8,0x06c8,0x0000,0x0000}, // 0x06c8
{0x06c9,0x06c9,0x0000,0x0000}, // 0x06c9
{0x06ca,0x06ca,0x0000,0x0000}, // 0x06ca
{0x06cb,0x06cb,0x0000,0x0000}, // 0x06cb
{0x06cc,0x06cc,0x06cc,0x06cc}, // 0x06cc
{0x06cd,0x06cd,0x0000,0x0000}, // 0x06cd
{0x06ce,0x06ce,0x06ce,0x06ce}, // 0x06ce
{0x0000,0x0000,0x0000,0x0000}, // 0x06cf
{0x06d0,0x06d0,0x06d0,0x06d0}, // 0x06d0
{0x06d1,0x06d1,0x06d1,0x06d1}, // 0x06d1
{0xfbae,0xfbaf,0x0000,0x0000}, // 0x06d2
{0xfbb0,0xfbb1,0x0000,0x0000}, // 0x06d3
{0x0000,0x0000,0x0000,0x0000}, // 0x06d4
{0x06d5,0x0000,0x0000,0x0000} // 0x06d5
};

View File

@ -24,75 +24,168 @@
#include <ctype.h> #include <ctype.h>
#include "file.h" #include "file.h"
#include "lcd.h" #include "lcd.h"
#include "rbunicode.h"
#include "arabjoin.h"
#define _HEB_BUFFER_LENGTH MAX_PATH + LCD_WIDTH/2 + 3 + 2 + 2 //#define _HEB_BUFFER_LENGTH (MAX_PATH + LCD_WIDTH/2 + 3 + 2 + 2) * 2
#define _HEB_BLOCK_TYPE_ENG 1 #define _HEB_BLOCK_TYPE_ENG 1
#define _HEB_BLOCK_TYPE_HEB 0 #define _HEB_BLOCK_TYPE_HEB 0
#define _HEB_ORIENTATION_LTR 1 #define _HEB_ORIENTATION_LTR 1
#define _HEB_ORIENTATION_RTL 0 #define _HEB_ORIENTATION_RTL 0
#define ischar(c) (((((unsigned char) c)>=193) && (((unsigned char) c)<=250)) ? 1 : 0) #define ischar(c) ((c > 0x0589 && c < 0x0700) || (c >= 0xfb50 && c <= 0xfefc) ? 1 : 0)
#define _isblank(c) (((((unsigned char) c)==' ' || ((unsigned char) c)=='\t')) ? 1 : 0) #define _isblank(c) ((c==' ' || c=='\t') ? 1 : 0)
#define _isnewline(c) (((((unsigned char) c)=='\n' || ((unsigned char) c)=='\r')) ? 1 : 0) #define _isnewline(c) ((c=='\n' || c=='\r') ? 1 : 0)
#define XOR(a,b) ((a||b) && !(a&&b)) #define XOR(a,b) ((a||b) && !(a&&b))
bool bidi_support_enabled = false; arab_t * arab_lookup(unsigned short uchar)
unsigned char *bidi_l2v(const char *str, int orientation)
{ {
static unsigned char buf_heb_str[_HEB_BUFFER_LENGTH]; if (uchar >= 0x621 && uchar <= 0x63a)
static unsigned char buf_broken_str[_HEB_BUFFER_LENGTH]; return &(jointable[uchar - 0x621]);
const unsigned char *tmp; if (uchar >= 0x640 && uchar <= 0x64a)
unsigned char *heb_str, *target, *opposite_target, *broken_str; return &(jointable[uchar - 0x621 - 5]);
if (uchar >= 0x671 && uchar <= 0x6d5)
return &(jointable[uchar - 0x621 - 5 - 38]);
if (uchar == 0x200D) /* Support for the zero-width joiner */
return &zwj;
return 0;
}
void arabjoin(unsigned short * stringprt, int length){
bool connected = false;
unsigned short * writeprt = stringprt;
arab_t * prev = 0;
arab_t * cur;
arab_t * ligature = 0;
short uchar;
int i;
for (i = 0; i <= length; i++) {
cur = arab_lookup(uchar = *stringprt++);
/* Skip non-arabic chars */
if (cur == 0) {
if (prev) {
/* Finish the last char */
if (connected) {
*writeprt++ = prev->final;
connected = false;
} else
*writeprt++ = prev->isolated;
prev = 0;
*writeprt++ = uchar;
} else {
*writeprt++ = uchar;
}
continue;
}
/* nothing to do for arabic char if the previous was non-arabic */
if (prev == 0) {
prev = cur;
continue;
}
/* if it's LAM, check for LAM+ALEPH ligatures */
if (prev->isolated == 0xfedd) {
switch (cur->isolated) {
case 0xfe8d:
ligature = &(lamaleph[0]);
break;
case 0xfe87:
ligature = &(lamaleph[1]);
break;
case 0xfe83:
ligature = &(lamaleph[2]);
break;
case 0xfe81:
ligature = &(lamaleph[3]);
}
}
if (ligature) { /* replace the 2 glyphs by their ligature */
prev = ligature;
ligature = 0;
} else {
if (connected) { /* previous char has something connected to it */
if (prev->medial && cur->final) /* Can we connect to it? */
*writeprt++ = prev->medial;
else {
*writeprt++ = prev->final;
connected = false;
}
} else {
if (prev->initial && cur->final) { /* Can we connect to it? */
*writeprt++ = prev->initial;
connected = true;
} else
*writeprt++ = prev->isolated;
}
prev = cur;
}
}
}
unsigned short *bidi_l2v(const unsigned char *str, int orientation)
{
int length = utf8length(str);
static unsigned short utf16_buf[MAX_PATH+1];
static unsigned short bidi_buf[MAX_PATH+1];
unsigned short *heb_str, *target, *tmp; // *broken_str
int block_start, block_end, block_type, block_length, i; int block_start, block_end, block_type, block_length, i;
int block_ended; //long max_chars=0;
long max_chars=0; //int begin, end, char_count, orig_begin;
int begin, end, char_count, orig_begin;
if (!str || !*str) if (!str || !*str)
return (unsigned char *)""; return &(unsigned short){0};
tmp = (unsigned char *)str; //tmp = str;
block_start=block_end=0; target = tmp = utf16_buf;
block_ended=0; while (*str)
str = utf8decode(str, target++);
*target = 0;
heb_str = buf_heb_str; /* properly join any arabic chars */
arabjoin(utf16_buf, length);
block_start=block_end=block_length=0;
heb_str = bidi_buf;
if (orientation) { if (orientation) {
target = heb_str; target = heb_str;
opposite_target = heb_str + strlen(str);
} else { } else {
target = heb_str + strlen(str); target = heb_str + length;
opposite_target = heb_str;
*target = 0; *target = 0;
target--; target--;
} }
block_length=0;
if (ischar(*tmp)) if (ischar(*tmp))
block_type = _HEB_BLOCK_TYPE_HEB; block_type = _HEB_BLOCK_TYPE_HEB;
else else
block_type = _HEB_BLOCK_TYPE_ENG; block_type = _HEB_BLOCK_TYPE_ENG;
do { do {
while((XOR(ischar((int)*(tmp+1)),block_type) while((XOR(ischar(*(tmp+1)),block_type)
|| _isblank((int)*(tmp+1)) || ispunct((int)*(tmp+1)) || _isblank(*(tmp+1)) || ispunct((int)*(tmp+1))
|| (int)*(tmp+1)=='\n') || *(tmp+1)=='\n')
&& block_end<(int)strlen(str)-1) { && block_end < length-1) {
tmp++; tmp++;
block_end++; block_end++;
block_length++; block_length++;
} }
if (block_type != orientation) { if (block_type != orientation) {
while ((_isblank((int)*tmp) || ispunct((int)*tmp)) while ((_isblank(*tmp) || ispunct((int)*tmp))
&& *tmp!='/' && *tmp!='-' && block_end>block_start) { && *tmp!='/' && *tmp!='-' && block_end>block_start) {
tmp--; tmp--;
block_end--; block_end--;
} }
} }
for (i=block_start; i<=block_end; i++) { for (i=block_start; i<=block_end; i++) {
*target = (block_type == orientation) ? *(str+i) : *(str+block_end-i+block_start); *target = (block_type == orientation) ? *(utf16_buf+i) : *(utf16_buf+block_end-i+block_start);
if (block_type!=orientation) { if (block_type!=orientation) {
switch (*target) { switch (*target) {
case '(': case '(':
@ -109,12 +202,15 @@ unsigned char *bidi_l2v(const char *str, int orientation)
} }
block_type = !block_type; block_type = !block_type;
block_start=block_end+1; block_start=block_end+1;
} while(block_end<(int)strlen(str)-1); } while(block_end<length-1);
broken_str = buf_broken_str; *target = 0;
begin=end=strlen(str)-1;
#if 0 /* Is this code really necessary? */
broken_str = utf16_buf;
begin=end=length-1;
target = broken_str; target = broken_str;
while (1) { while (1) {
char_count=0; char_count=0;
while ((!max_chars || char_count<max_chars) && begin>0) { while ((!max_chars || char_count<max_chars) && begin>0) {
@ -147,9 +243,9 @@ unsigned char *bidi_l2v(const char *str, int orientation)
} }
orig_begin=begin; orig_begin=begin;
if (_isblank(heb_str[begin])) { /* if (_isblank(heb_str[begin])) {
heb_str[begin]='\n'; heb_str[begin]='\n';
} } */
/* skip leading newlines */ /* skip leading newlines */
while (begin<=end && _isnewline(heb_str[begin])) { while (begin<=end && _isnewline(heb_str[begin])) {
@ -176,9 +272,7 @@ unsigned char *bidi_l2v(const char *str, int orientation)
end=begin; end=begin;
} }
return broken_str; return broken_str;
#endif
return heb_str;
} }
void set_bidi_support(bool setting)
{
bidi_support_enabled = setting;
}

307
firmware/common/unicode.c Normal file
View File

@ -0,0 +1,307 @@
/* Some conversion functions for handling UTF-8
*
* copyright Marcoen Hirschberg (2004,2005)
*
* I got all the info from:
* http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
* and
* http://en.wikipedia.org/wiki/Unicode
*/
#include <stdio.h>
#include "file.h"
#include "debug.h"
#include "rbunicode.h"
#ifndef O_BINARY
#define O_BINARY 0
#endif
#define NUM_TABLES 5
#define NUM_CODEPAGES 13
static int default_codepage = 0;
static unsigned short codepage_table[MAX_CP_TABLE_SIZE];
static int loaded_cp_table = 0;
static const unsigned char utf8comp[6] =
{
0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
};
static const char *filename[NUM_TABLES] =
{
CODEPAGE_DIR"/iso.cp",
CODEPAGE_DIR"/932.cp", /* SJIS */
CODEPAGE_DIR"/936.cp", /* GB2312 */
CODEPAGE_DIR"/949.cp", /* KSX1001 */
CODEPAGE_DIR"/950.cp" /* BIG5 */
};
static const char cp_2_table[NUM_CODEPAGES] =
{
0, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5
};
/* Load codepage file into memory */
int load_cp_table(int cp)
{
int i=0;
int table = cp_2_table[cp];
int file, tablesize;
unsigned char tmp[2];
if (cp == 0 || table == loaded_cp_table)
return 1;
file = open(filename[table-1], O_RDONLY|O_BINARY);
if (file < 0) {
DEBUGF("Can't open codepage file: %s.cp\n", filename[table-1]);
return 0;
}
tablesize = lseek(file, 0, SEEK_END) / 2;
lseek(file, 0, SEEK_SET);
if (tablesize > MAX_CP_TABLE_SIZE) {
DEBUGF("Invalid codepage file: %s.cp\n", filename[table-1]);
close(file);
return 0;
}
while (i < tablesize) {
if (!read(file, tmp, 2)) {
DEBUGF("Can't read from codepage file: %s.cp\n", filename[table-1]);
loaded_cp_table = 0;
return 0;
}
codepage_table[i++] = (tmp[1] << 8) | tmp[0];
}
loaded_cp_table = table;
close(file);
return 1;
}
/* Encode a UCS value as UTF-8 and return a pointer after this UTF-8 char. */
unsigned char* utf8encode(unsigned long ucs, unsigned char *utf8)
{
int tail = 0;
if (ucs > 0x7F)
while (ucs >> (6*tail + 2))
tail++;
*utf8++ = (ucs >> (6*tail)) | utf8comp[tail];
while (tail--)
*utf8++ = ((ucs >> (6*tail)) & (MASK ^ 0xFF)) | COMP;
return utf8;
}
/* Recode an iso encoded string to UTF-8 */
unsigned char* iso_decode(const unsigned char *iso, unsigned char *utf8,
int cp, int count)
{
unsigned short ucs, tmp;
if (cp == -1) /* use default codepage */
cp = default_codepage;
if (!load_cp_table(cp)) cp = 0;
while (count--) {
if (*iso < 128)
*utf8++ = *iso++;
else {
/* cp tells us which codepage to convert from */
switch (cp) {
case 0x01: /* Greek (ISO-8859-7) */
case 0x02: /* Hebrew (ISO-8859-8) */
case 0x03: /* Russian (CP1251) */
case 0x04: /* Thai (ISO-8859-11) */
case 0x05: /* Arabic (ISO-8859-6) */
case 0x06: /* Turkish (ISO-8859-9) */
case 0x07: /* Latin Extended (ISO-8859-2) */
tmp = ((cp-1)*128) + (*iso++ - 128);
ucs = codepage_table[tmp];
break;
case 0x08: /* Japanese (SJIS) */
if (*iso > 0xA0 && *iso < 0xE0) {
tmp = *iso | 0xA100;
ucs = codepage_table[tmp];
break;
}
case 0x09: /* Simplified Chinese (GB2312) */
case 0x0A: /* Korean (KSX1001) */
case 0x0B: /* Traditional Chinese (BIG5) */
if (count < 1 || !iso[1]) {
ucs = *iso++;
break;
}
/* we assume all cjk strings are written
in big endian order */
tmp = *iso++ << 8;
tmp |= *iso++;
tmp -= 0x8000;
ucs = codepage_table[tmp];
count--;
break;
case 0x0C: /* UTF-8, do nothing */
default:
ucs = *iso++;
break;
}
if (ucs == 0) /* unknown char, assume invalid encoding */
ucs = 0xffff;
utf8 = utf8encode(ucs, utf8);
}
}
return utf8;
}
/* Recode a UTF-16 string with little-endian byte ordering to UTF-8 */
unsigned char* utf16LEdecode(const unsigned char *utf16, unsigned char *utf8, unsigned int count)
{
unsigned long ucs;
while (count != 0) {
if (utf16[1] >= 0xD8 && utf16[1] < 0xE0) { /* Check for a surrogate pair */
ucs = 0x10000 + ((utf16[0] << 10) | ((utf16[1] - 0xD8) << 18) | utf16[2] | ((utf16[3] - 0xDC) << 8));
utf16 += 4;
count -= 2;
} else {
ucs = (utf16[0] | (utf16[1] << 8));
utf16 += 2;
count -= 1;
}
utf8 = utf8encode(ucs, utf8);
}
return utf8;
}
/* Recode a UTF-16 string with big-endian byte ordering to UTF-8 */
unsigned char* utf16BEdecode(const unsigned char *utf16, unsigned char *utf8, unsigned int count)
{
unsigned long ucs;
while (count != 0) {
if (*utf16 >= 0xD8 && *utf16 < 0xE0) { /* Check for a surrogate pair */
ucs = 0x10000 + (((utf16[0] - 0xD8) << 18) | (utf16[1] << 10) | ((utf16[2] - 0xDC) << 8) | utf16[3]);
utf16 += 4;
count -= 2;
} else {
ucs = (utf16[0] << 8) | utf16[1];
utf16 += 2;
count -= 1;
}
utf8 = utf8encode(ucs, utf8);
}
return utf8;
}
/* Recode any UTF-16 string to UTF-8 */
//unsigned char* utf16decode(unsigned const char *utf16, unsigned char *utf8, unsigned int count)
unsigned char* utf16decode(const unsigned char *utf16, unsigned char *utf8, unsigned int count)
{
unsigned long ucs;
ucs = *(utf16++) << 8;
ucs |= *(utf16++);
if (ucs == 0xFEFF) /* Check for BOM */
return utf16BEdecode(utf16, utf8, count-1);
else if (ucs == 0xFFFE)
return utf16LEdecode(utf16, utf8, count-1);
else { /* ADDME: Should default be LE or BE? */
utf16 -= 2;
return utf16BEdecode(utf16, utf8, count);
}
}
/* Return the number of UTF-8 chars in a string */
unsigned long utf8length(const unsigned char *utf8)
{
unsigned long l = 0;
while (*utf8 != 0)
if ((*utf8++ & MASK) != COMP)
l++;
return l;
}
/* Decode 1 UTF-8 char and return a pointer to the next char. */
const unsigned char* utf8decode(const unsigned char *utf8, unsigned short *ucs)
{
unsigned char c = *utf8++;
unsigned long code;
int tail = 0;
if ((c <= 0x7f) || (c >= 0xc2)) {
/* Start of new character. */
if (c < 0x80) { /* U-00000000 - U-0000007F, 1 byte */
code = c;
} else if (c < 0xe0) { /* U-00000080 - U-000007FF, 2 bytes */
tail = 1;
code = c & 0x1f;
} else if (c < 0xf0) { /* U-00000800 - U-0000FFFF, 3 bytes */
tail = 2;
code = c & 0x0f;
} else if (c < 0xf5) { /* U-00010000 - U-001FFFFF, 4 bytes */
tail = 3;
code = c & 0x07;
} else {
/* Invalid size. */
code = 0xffff;
}
while (tail-- && ((c = *utf8++) != 0)) {
if ((c & 0xc0) == 0x80) {
/* Valid continuation character. */
code = (code << 6) | (c & 0x3f);
} else {
/* Invalid continuation char */
code = 0xffff;
utf8--;
break;
}
}
} else {
/* Invalid UTF-8 char */
code = 0xffff;
}
/* currently we don't support chars above U-FFFF */
*ucs = (code < 0x10000) ? code : 0xffff;
return utf8;
}
void set_codepage(int cp)
{
default_codepage = cp;
return;
}
/* seek to a given char in a utf8 string and
return its start position in the string */
int utf8seek(const unsigned char* utf8, int offset)
{
int pos = 0;
while (offset--) {
pos++;
while ((utf8[pos] & MASK) == COMP)
pos++;
}
return pos;
}

View File

@ -28,6 +28,7 @@
#include "system.h" #include "system.h"
#include "timefuncs.h" #include "timefuncs.h"
#include "kernel.h" #include "kernel.h"
#include "rbunicode.h"
#define BYTES2INT16(array,pos) \ #define BYTES2INT16(array,pos) \
(array[pos] | (array[pos+1] << 8 )) (array[pos] | (array[pos+1] << 8 ))
@ -115,74 +116,6 @@
#define FAT_BAD_MARK 0x0ffffff7 #define FAT_BAD_MARK 0x0ffffff7
#define FAT_EOF_MARK 0x0ffffff8 #define FAT_EOF_MARK 0x0ffffff8
/* filename charset conversion table */
static const unsigned char unicode2iso8859_2[] = {
0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x0100 */
0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x0108 */
0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0110 */
0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x0118 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0120 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0128 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0130 */
0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x0138 */
0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x0140 */
0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0148 */
0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x0150 */
0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x0158 */
0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x0160 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x0168 */
0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0170 */
0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x0178 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0180 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0188 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0190 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0198 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01a0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01a8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01b0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01b8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01c0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01c8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01d0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01d8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01e0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01e8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01f0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01f8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0200 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0208 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0210 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0218 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0220 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0228 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0230 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0238 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0240 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0248 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0250 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0258 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0260 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0268 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0270 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0278 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0280 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0288 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0290 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0298 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02a0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02a8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02b0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02b8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0x02c0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02c8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02d0 */
0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0x02d8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02e0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02e8 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02f0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0x02f8 */
};
struct fsinfo { struct fsinfo {
unsigned long freecount; /* last known free cluster count */ unsigned long freecount; /* last known free cluster count */
unsigned long nextfree; /* first cluster to start looking for free unsigned long nextfree; /* first cluster to start looking for free
@ -1106,10 +1039,11 @@ static int write_long_name(struct fat_file* file,
unsigned char* entry; unsigned char* entry;
unsigned int idx = firstentry % DIR_ENTRIES_PER_SECTOR; unsigned int idx = firstentry % DIR_ENTRIES_PER_SECTOR;
unsigned int sector = firstentry / DIR_ENTRIES_PER_SECTOR; unsigned int sector = firstentry / DIR_ENTRIES_PER_SECTOR;
unsigned int i, j=0;
unsigned char chksum = 0; unsigned char chksum = 0;
int nameidx=0, namelen = strlen(name); unsigned int i, j=0;
unsigned int nameidx=0, namelen = utf8length(name);
int rc; int rc;
unsigned short name_utf16[namelen + 1];
LDEBUGF("write_long_name(file:%lx, first:%d, num:%d, name:%s)\n", LDEBUGF("write_long_name(file:%lx, first:%d, num:%d, name:%s)\n",
file->firstcluster, firstentry, numentries, name); file->firstcluster, firstentry, numentries, name);
@ -1132,6 +1066,11 @@ static int write_long_name(struct fat_file* file,
nameidx < (namelen - NAME_BYTES_PER_ENTRY); nameidx < (namelen - NAME_BYTES_PER_ENTRY);
nameidx += NAME_BYTES_PER_ENTRY); nameidx += NAME_BYTES_PER_ENTRY);
/* we need to convert the name first */
/* since it is written in reverse order */
for (i = 0; i <= namelen; i++)
name = utf8decode(name, &name_utf16[i]);
for (i=0; i < numentries; i++) { for (i=0; i < numentries; i++) {
/* new sector? */ /* new sector? */
if ( idx >= DIR_ENTRIES_PER_SECTOR ) { if ( idx >= DIR_ENTRIES_PER_SECTOR ) {
@ -1170,7 +1109,7 @@ static int write_long_name(struct fat_file* file,
memset(entry, 0, DIR_ENTRY_SIZE); memset(entry, 0, DIR_ENTRY_SIZE);
if ( i+1 < numentries ) { if ( i+1 < numentries ) {
/* longname entry */ /* longname entry */
int k, l = nameidx; unsigned int k, l = nameidx;
entry[FATLONG_ORDER] = numentries-i-1; entry[FATLONG_ORDER] = numentries-i-1;
if (i==0) { if (i==0) {
@ -1178,22 +1117,22 @@ static int write_long_name(struct fat_file* file,
entry[FATLONG_ORDER] |= 0x40; entry[FATLONG_ORDER] |= 0x40;
/* pad name with 0xffff */ /* pad name with 0xffff */
for (k=1; k<12; k++) entry[k] = 0xff; for (k=1; k<11; k++) entry[k] = 0xff;
for (k=14; k<26; k++) entry[k] = 0xff; for (k=14; k<26; k++) entry[k] = 0xff;
for (k=28; k<32; k++) entry[k] = 0xff; for (k=28; k<32; k++) entry[k] = 0xff;
}; };
/* set name */ /* set name */
for (k=0; k<5 && l <= namelen; k++) { for (k=0; k<5 && l <= namelen; k++) {
entry[k*2 + 1] = name[l++]; entry[k*2 + 1] = (unsigned char)(name_utf16[l] & 0xff);
entry[k*2 + 2] = 0; entry[k*2 + 2] = (unsigned char)(name_utf16[l++] >> 8);
} }
for (k=0; k<6 && l <= namelen; k++) { for (k=0; k<6 && l <= namelen; k++) {
entry[k*2 + 14] = name[l++]; entry[k*2 + 14] = (unsigned char)(name_utf16[l] & 0xff);
entry[k*2 + 15] = 0; entry[k*2 + 15] = (unsigned char)(name_utf16[l++] >> 8);
} }
for (k=0; k<2 && l <= namelen; k++) { for (k=0; k<2 && l <= namelen; k++) {
entry[k*2 + 28] = name[l++]; entry[k*2 + 28] = (unsigned char)(name_utf16[l] & 0xff);
entry[k*2 + 29] = 0; entry[k*2 + 29] = (unsigned char)(name_utf16[l++] >> 8);
} }
entry[FATDIR_ATTR] = FAT_ATTR_LONG_NAME; entry[FATDIR_ATTR] = FAT_ATTR_LONG_NAME;
@ -1291,7 +1230,7 @@ static int add_dir_entry(struct fat_dir* dir,
/* one dir entry needed for every 13 bytes of filename, /* one dir entry needed for every 13 bytes of filename,
plus one entry for the short name */ plus one entry for the short name */
entries_needed = (strlen(name) + (NAME_BYTES_PER_ENTRY-1)) entries_needed = (utf8length(name) + (NAME_BYTES_PER_ENTRY-1))
/ NAME_BYTES_PER_ENTRY + 1; / NAME_BYTES_PER_ENTRY + 1;
} }
@ -2226,58 +2165,6 @@ int fat_opendir(IF_MV2(int volume,)
return 0; return 0;
} }
/* convert from unicode to a single-byte charset */
static void unicode2iso(const unsigned char* unicode, unsigned char* iso,
int count)
{
int i;
for (i=0; i<count; i++) {
int x = i*2;
switch (unicode[x+1]) {
case 0x01: /* latin extended. convert to ISO 8859-2 */
case 0x02:
iso[i] = unicode2iso8859_2[unicode[x]];
break;
case 0x03: /* greek, convert to ISO 8859-7 */
iso[i] = unicode[x] + 0x30;
break;
/* Sergei says most russians use Win1251, so we will too.
Win1251 differs from ISO 8859-5 by an offset of 0x10. */
case 0x04: /* cyrillic, convert to Win1251 */
switch (unicode[x]) {
case 1:
iso[i] = 168;
break;
case 81:
iso[i] = 184;
break;
default:
iso[i] = unicode[x] + 0xb0; /* 0xa0 for ISO 8859-5 */
break;
}
break;
case 0x05: /* hebrew, convert to ISO 8859-8 */
iso[i] = unicode[x] + 0x10;
break;
case 0x06: /* arabic, convert to ISO 8859-6 */
case 0x0e: /* thai, convert to ISO 8859-11 */
iso[i] = unicode[x] + 0xa0;
break;
default:
iso[i] = unicode[x];
break;
}
}
}
int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry) int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry)
{ {
bool done = false; bool done = false;
@ -2348,7 +2235,8 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry)
/* replace shortname with longname? */ /* replace shortname with longname? */
if ( longs ) { if ( longs ) {
int j,l=0; int j;
unsigned char* utf8 = entry->name;
/* iterate backwards through the dir entries */ /* iterate backwards through the dir entries */
for (j=longs-1; j>=0; j--) { for (j=longs-1; j>=0; j--) {
unsigned char* ptr = cached_buf; unsigned char* ptr = cached_buf;
@ -2370,16 +2258,11 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry)
index &= SECTOR_SIZE-1; index &= SECTOR_SIZE-1;
} }
/* names are stored in unicode, but we utf8 = utf16LEdecode(ptr + index + 1, utf8, 5);
only grab the low byte (iso8859-1). */ utf8 = utf16LEdecode(ptr + index + 14, utf8, 6);
unicode2iso(ptr + index + 1, entry->name + l, 5); utf8 = utf16LEdecode(ptr + index + 28, utf8, 2);
l+= 5;
unicode2iso(ptr + index + 14, entry->name + l, 6);
l+= 6;
unicode2iso(ptr + index + 28, entry->name + l, 2);
l+= 2;
} }
entry->name[l]=0; *utf8 = 0;
} }
done = true; done = true;
sectoridx = 0; sectoridx = 0;

View File

@ -30,6 +30,7 @@
#include "debug.h" #include "debug.h"
#include "system.h" #include "system.h"
#include "font.h" #include "font.h"
#include "rbunicode.h"
#include "bidi.h" #include "bidi.h"
#define SCROLLABLE_LINES 26 #define SCROLLABLE_LINES 26
@ -542,13 +543,13 @@ void lcd_bitmap(const fb_data *src, int x, int y, int width, int height)
/* put a string at a given pixel position, skipping first ofs pixel columns */ /* put a string at a given pixel position, skipping first ofs pixel columns */
static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str) static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
{ {
int ch; unsigned short ch;
unsigned short *ucs;
struct font* pf = font_get(curfont); struct font* pf = font_get(curfont);
if (bidi_support_enabled) ucs = bidi_l2v(str, 1);
str = bidi_l2v(str, 1);
while ((ch = *str++) != '\0' && x < LCD_WIDTH) while ((ch = *ucs++) != 0 && x < LCD_WIDTH)
{ {
int width; int width;
const unsigned char *bits; const unsigned char *bits;
@ -559,7 +560,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
ch -= pf->firstchar; ch -= pf->firstchar;
/* get proportional width and glyph bits */ /* get proportional width and glyph bits */
width = pf->width ? pf->width[ch] : pf->maxwidth; width = font_get_width(pf,ch);
if (ofs > width) if (ofs > width)
{ {
@ -567,8 +568,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
continue; continue;
} }
bits = pf->bits + (pf->offset ? bits = font_get_bits(pf, ch);
pf->offset[ch] : ((pf->height + 7) / 8 * pf->maxwidth * ch));
lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height);
@ -597,7 +597,7 @@ void lcd_puts_style(int x, int y, const unsigned char *str, int style)
return; return;
lcd_getstringsize(str, &w, &h); lcd_getstringsize(str, &w, &h);
xpos = xmargin + x*w / strlen(str); xpos = xmargin + x*w / utf8length(str);
ypos = ymargin + y*h; ypos = ymargin + y*h;
lcd_putsxy(xpos, ypos, str); lcd_putsxy(xpos, ypos, str);
drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID); drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID);
@ -707,7 +707,7 @@ void lcd_puts_scroll_style(int x, int y, const unsigned char *string, int style)
end = strchr(s->line, '\0'); end = strchr(s->line, '\0');
strncpy(end, string, LCD_WIDTH/2); strncpy(end, string, LCD_WIDTH/2);
s->len = strlen(string); s->len = utf8length(string);
s->offset = 0; s->offset = 0;
s->startx = x; s->startx = x;
s->backward = false; s->backward = false;
@ -765,9 +765,11 @@ static void scroll_thread(void)
} }
} }
else { else {
/* scroll forward the whole time */ /* pause at beginning of line */
if (s->offset >= s->width) if (s->offset >= s->width) {
s->offset %= s->width; s->offset = 0;
s->start_tick = current_tick + scroll_delay * 2;
}
} }
lastmode = drawmode; lastmode = drawmode;

View File

@ -29,6 +29,7 @@
#include "debug.h" #include "debug.h"
#include "system.h" #include "system.h"
#include "font.h" #include "font.h"
#include "rbunicode.h"
#include "bidi.h" #include "bidi.h"
/*** definitions ***/ /*** definitions ***/
@ -1091,13 +1092,13 @@ void lcd_remote_bitmap(const unsigned char *src, int x, int y, int width,
/* put a string at a given pixel position, skipping first ofs pixel columns */ /* put a string at a given pixel position, skipping first ofs pixel columns */
static void lcd_remote_putsxyofs(int x, int y, int ofs, const unsigned char *str) static void lcd_remote_putsxyofs(int x, int y, int ofs, const unsigned char *str)
{ {
int ch; unsigned short ch;
unsigned short *ucs;
struct font* pf = font_get(curfont); struct font* pf = font_get(curfont);
if (bidi_support_enabled) ucs = bidi_l2v(str, 1);
str = bidi_l2v(str, 1);
while ((ch = *str++) != '\0' && x < LCD_REMOTE_WIDTH) while ((ch = *ucs++) != 0 && x < LCD_REMOTE_WIDTH)
{ {
int width; int width;
const unsigned char *bits; const unsigned char *bits;
@ -1108,7 +1109,7 @@ static void lcd_remote_putsxyofs(int x, int y, int ofs, const unsigned char *str
ch -= pf->firstchar; ch -= pf->firstchar;
/* get proportional width and glyph bits */ /* get proportional width and glyph bits */
width = pf->width ? pf->width[ch] : pf->maxwidth; width = font_get_width(pf, ch);
if (ofs > width) if (ofs > width)
{ {
@ -1116,8 +1117,7 @@ static void lcd_remote_putsxyofs(int x, int y, int ofs, const unsigned char *str
continue; continue;
} }
bits = pf->bits + (pf->offset ? bits = font_get_bits(pf, ch);
pf->offset[ch] : ((pf->height + 7) / 8 * pf->maxwidth * ch));
lcd_remote_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, lcd_remote_bitmap_part(bits, ofs, 0, width, x, y, width - ofs,
pf->height); pf->height);
@ -1153,7 +1153,7 @@ void lcd_remote_puts_style(int x, int y, const unsigned char *str, int style)
return; return;
lcd_remote_getstringsize(str, &w, &h); lcd_remote_getstringsize(str, &w, &h);
xpos = xmargin + x*w / strlen((char *)str); xpos = xmargin + x*w / utf8length((char *)str);
ypos = ymargin + y*h; ypos = ymargin + y*h;
lcd_remote_putsxy(xpos, ypos, str); lcd_remote_putsxy(xpos, ypos, str);
drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID); drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID);
@ -1256,7 +1256,7 @@ void lcd_remote_puts_scroll_style(int x, int y, const unsigned char *string, int
end = strchr(s->line, '\0'); end = strchr(s->line, '\0');
strncpy(end, (char *)string, LCD_REMOTE_WIDTH/2); strncpy(end, (char *)string, LCD_REMOTE_WIDTH/2);
s->len = strlen((char *)string); s->len = utf8length((char *)string);
s->offset = 0; s->offset = 0;
s->startx = x; s->startx = x;
s->backward = false; s->backward = false;
@ -1323,9 +1323,11 @@ static void scroll_thread(void)
} }
} }
else { else {
/* scroll forward the whole time */ /* pause at beginning of line */
if (s->offset >= s->width) if (s->offset >= s->width) {
s->offset %= s->width; s->offset = 0;
s->start_tick = current_tick + scroll_delay * 2;
}
} }
lastmode = drawmode; lastmode = drawmode;

View File

@ -28,6 +28,7 @@
#include "debug.h" #include "debug.h"
#include "system.h" #include "system.h"
#include "font.h" #include "font.h"
#include "rbunicode.h"
#include "bidi.h" #include "bidi.h"
/*** definitions ***/ /*** definitions ***/
@ -1014,13 +1015,13 @@ void lcd_bitmap(const unsigned char *src, int x, int y, int width, int height)
/* put a string at a given pixel position, skipping first ofs pixel columns */ /* put a string at a given pixel position, skipping first ofs pixel columns */
static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str) static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
{ {
int ch; unsigned short ch;
unsigned short *ucs;
struct font* pf = font_get(curfont); struct font* pf = font_get(curfont);
if (bidi_support_enabled) ucs = bidi_l2v(str, 1);
str = bidi_l2v(str, 1);
while ((ch = *str++) != '\0' && x < LCD_WIDTH) while ((ch = *ucs++) != 0 && x < LCD_WIDTH)
{ {
int width; int width;
const unsigned char *bits; const unsigned char *bits;
@ -1031,7 +1032,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
ch -= pf->firstchar; ch -= pf->firstchar;
/* get proportional width and glyph bits */ /* get proportional width and glyph bits */
width = pf->width ? pf->width[ch] : pf->maxwidth; width = font_get_width(pf,ch);
if (ofs > width) if (ofs > width)
{ {
@ -1039,8 +1040,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
continue; continue;
} }
bits = pf->bits + (pf->offset ? bits = font_get_bits(pf, ch);
pf->offset[ch] : ((pf->height + 7) / 8 * pf->maxwidth * ch));
lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height);
@ -1069,7 +1069,7 @@ void lcd_puts_style(int x, int y, const unsigned char *str, int style)
return; return;
lcd_getstringsize(str, &w, &h); lcd_getstringsize(str, &w, &h);
xpos = xmargin + x*w / strlen((char *)str); xpos = xmargin + x*w / utf8length((char *)str);
ypos = ymargin + y*h; ypos = ymargin + y*h;
lcd_putsxy(xpos, ypos, str); lcd_putsxy(xpos, ypos, str);
drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID); drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID);
@ -1178,7 +1178,7 @@ void lcd_puts_scroll_style(int x, int y, const unsigned char *string, int style)
end = strchr(s->line, '\0'); end = strchr(s->line, '\0');
strncpy(end, (char *)string, LCD_WIDTH/2); strncpy(end, (char *)string, LCD_WIDTH/2);
s->len = strlen((char *)string); s->len = utf8length((char *)string);
s->offset = 0; s->offset = 0;
s->startx = x; s->startx = x;
s->backward = false; s->backward = false;

View File

@ -31,6 +31,7 @@
#include "system.h" #include "system.h"
#include "font.h" #include "font.h"
#include "lcd-player-charset.h" #include "lcd-player-charset.h"
#include "rbunicode.h"
/*** definitions ***/ /*** definitions ***/
@ -323,9 +324,24 @@ static void lcd_puts_cont_scroll(int x, int y, const unsigned char *string)
} }
void lcd_puts(int x, int y, const unsigned char *string) void lcd_puts(int x, int y, const unsigned char *string)
{ {
int i=0;
unsigned short ucs;
const unsigned char *utf8 = string;
unsigned char tmp[12];
while (*utf8 && i<11) {
utf8 = utf8decode(utf8, &ucs);
if (ucs < 256)
tmp[i++] = ucs;
else
tmp[i++] = '?';
}
tmp[i] = 0;
DEBUGF("lcd_puts(%d, %d) -> ", x, y); DEBUGF("lcd_puts(%d, %d) -> ", x, y);
scroll[y].mode=SCROLL_MODE_OFF; scroll[y].mode=SCROLL_MODE_OFF;
return lcd_puts_cont_scroll(x, y, string); return lcd_puts_cont_scroll(x, y, tmp);
} }
void lcd_put_cursor(int x, int y, char cursor_char) void lcd_put_cursor(int x, int y, char cursor_char)
@ -627,14 +643,28 @@ void lcd_bidir_scroll(int percent)
void lcd_puts_scroll(int x, int y, const unsigned char* string ) void lcd_puts_scroll(int x, int y, const unsigned char* string )
{ {
struct scrollinfo* s; struct scrollinfo* s;
int i; int i=0;
unsigned short ucs;
const unsigned char *utf8 = string;
unsigned char tmp[utf8length(string)+1];
while (*utf8) {
utf8 = utf8decode(utf8, &ucs);
if (ucs < 256)
tmp[i++] = ucs;
else
tmp[i++] = '?';
}
tmp[i] = 0;
DEBUGF("lcd_puts_scroll(%d, %d, %s)\n", x, y, string); DEBUGF("lcd_puts_scroll(%d, %d, %s)\n", x, y, string);
s = &scroll[y]; s = &scroll[y];
lcd_puts_cont_scroll(x,y,string); lcd_puts_cont_scroll(x,y,tmp);
s->textlen = strlen(string); s->textlen = strlen(tmp);
if ( s->textlen > 11-x ) { if ( s->textlen > 11-x ) {
s->mode = SCROLL_MODE_RUN; s->mode = SCROLL_MODE_RUN;
@ -649,7 +679,7 @@ void lcd_puts_scroll(int x, int y, const unsigned char* string )
s->jump_scroll_steps=11-x; s->jump_scroll_steps=11-x;
s->jump_scroll=jump_scroll; s->jump_scroll=jump_scroll;
} }
strncpy(s->text,string,sizeof s->text); strncpy(s->text,tmp,sizeof s->text);
s->turn_offset=-1; s->turn_offset=-1;
if (bidir_limit && (s->textlen < ((11-x)*(100+bidir_limit))/100)) { if (bidir_limit && (s->textlen < ((11-x)*(100+bidir_limit))/100)) {
s->turn_offset=s->textlen+x-11; s->turn_offset=s->textlen+x-11;

View File

@ -28,6 +28,7 @@
#include "system.h" #include "system.h"
#include "font.h" #include "font.h"
#include "hwcompat.h" #include "hwcompat.h"
#include "rbunicode.h"
#include "bidi.h" #include "bidi.h"
/*** definitions ***/ /*** definitions ***/
@ -844,13 +845,13 @@ void lcd_bitmap(const unsigned char *src, int x, int y, int width, int height)
/* put a string at a given pixel position, skipping first ofs pixel columns */ /* put a string at a given pixel position, skipping first ofs pixel columns */
static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str) static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
{ {
int ch; unsigned short ch;
unsigned short *ucs;
struct font* pf = font_get(curfont); struct font* pf = font_get(curfont);
if (bidi_support_enabled) ucs = bidi_l2v(str, 1);
str = bidi_l2v(str, 1);
while ((ch = *str++) != '\0' && x < LCD_WIDTH) while ((ch = *ucs++) != 0 && x < LCD_WIDTH)
{ {
int width; int width;
const unsigned char *bits; const unsigned char *bits;
@ -861,7 +862,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
ch -= pf->firstchar; ch -= pf->firstchar;
/* get proportional width and glyph bits */ /* get proportional width and glyph bits */
width = pf->width ? pf->width[ch] : pf->maxwidth; width = font_get_width(pf,ch);
if (ofs > width) if (ofs > width)
{ {
@ -869,8 +870,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str)
continue; continue;
} }
bits = pf->bits + (pf->offset ? bits = font_get_bits(pf, ch);
pf->offset[ch] : ((pf->height + 7) / 8 * pf->maxwidth * ch));
lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height);
@ -898,7 +898,7 @@ void lcd_puts_style(int x, int y, const unsigned char *str, int style)
return; return;
lcd_getstringsize(str, &w, &h); lcd_getstringsize(str, &w, &h);
xpos = xmargin + x*w / strlen(str); xpos = xmargin + x*w / utf8length(str);
ypos = ymargin + y*h; ypos = ymargin + y*h;
lcd_putsxy(xpos, ypos, str); lcd_putsxy(xpos, ypos, str);
drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID); drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID);
@ -1007,7 +1007,7 @@ void lcd_puts_scroll_style(int x, int y, const unsigned char *string, int style)
end = strchr(s->line, '\0'); end = strchr(s->line, '\0');
strncpy(end, string, LCD_WIDTH/2); strncpy(end, string, LCD_WIDTH/2);
s->len = strlen(string); s->len = utf8length(string);
s->offset = 0; s->offset = 0;
s->startx = x; s->startx = x;
s->backward = false; s->backward = false;

View File

@ -17,7 +17,5 @@
* *
****************************************************************************/ ****************************************************************************/
#ifndef BIDI_H #ifndef BIDI_H
extern unsigned char *bidi_l2v(const unsigned char *str, int orientation); extern unsigned short *bidi_l2v(const unsigned char *str, int orientation);
extern bool bidi_support_enabled;
extern void set_bidi_support(bool setting);
#endif #endif

View File

@ -31,10 +31,16 @@
#if LCD_HEIGHT > 64 #if LCD_HEIGHT > 64
#define MAX_FONT_SIZE 10000 #define MAX_FONT_SIZE 10000
#else #else
#define MAX_FONT_SIZE 4000 #define MAX_FONT_SIZE 4000
#endif #endif
#endif #endif
#ifndef FONT_HEADER_SIZE
#define FONT_HEADER_SIZE 36
#endif
#define GLYPH_CACHE_FILE "/.rockbox/.glyphcache"
/* /*
* Fonts are specified by number, and used for display * Fonts are specified by number, and used for display
* of menu information as well as mp3 filename data. * of menu information as well as mp3 filename data.
@ -88,6 +94,7 @@ struct font {
const unsigned short *offset; /* offsets into bitmap data*/ const unsigned short *offset; /* offsets into bitmap data*/
const unsigned char *width; /* character widths or NULL if fixed*/ const unsigned char *width; /* character widths or NULL if fixed*/
int defaultchar; /* default char (not glyph index)*/ int defaultchar; /* default char (not glyph index)*/
long bits_size; /* # bytes of glyph bits*/
}; };
/* font routines*/ /* font routines*/
@ -96,6 +103,10 @@ struct font* font_load(const char *path);
struct font* font_get(int font); struct font* font_get(int font);
void font_reset(void); void font_reset(void);
int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber); int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber);
int font_get_width(struct font* ft, unsigned short ch);
const unsigned char * font_get_bits(struct font* ft, unsigned short ch);
void glyph_cache_save(void);
void glyph_cache_load(void);
#else /* HAVE_LCD_BITMAP */ #else /* HAVE_LCD_BITMAP */

View File

@ -94,7 +94,7 @@ struct mp3entry {
/* these following two fields are used for local buffering */ /* these following two fields are used for local buffering */
char id3v2buf[300]; char id3v2buf[300];
char id3v1buf[3][32]; char id3v1buf[3][92];
/* resume related */ /* resume related */
unsigned long offset; /* bytes played */ unsigned long offset; /* bytes played */

View File

@ -33,6 +33,10 @@
#include "file.h" #include "file.h"
#include "debug.h" #include "debug.h"
#include "panic.h" #include "panic.h"
#include "rbunicode.h"
/* Font cache includes */
#include "font_cache.h"
#include "lru.h"
#ifndef O_BINARY #ifndef O_BINARY
#define O_BINARY 0 #define O_BINARY 0
@ -53,6 +57,16 @@ static unsigned char *freeptr = mbuf;
static unsigned char *fileptr; static unsigned char *fileptr;
static unsigned char *eofptr; static unsigned char *eofptr;
/* Font cache structures */
static struct font_cache font_cache_ui;
static int fnt_file = -1; /* >=0 if font is cached */
unsigned long file_width_offset; /* offset to file width data */
unsigned long file_offset_offset; /* offset to file offset data */
static void cache_create(int maxwidth, int height);
static int long_offset = 0;
static int glyph_file;
/* End Font cache structures */
void font_init(void) void font_init(void)
{ {
memset(&font_ui, 0, sizeof(struct font)); memset(&font_ui, 0, sizeof(struct font));
@ -94,41 +108,12 @@ void font_reset(void)
memset(&font_ui, 0, sizeof(struct font)); memset(&font_ui, 0, sizeof(struct font));
} }
/* read and load font into incore font structure*/ static struct font* font_load_header(struct font *pf)
struct font* font_load(const char *path)
{ {
int fd, filesize; char version[4+1];
unsigned short maxwidth, height, ascent, pad; unsigned short maxwidth, height, ascent, pad;
unsigned long firstchar, defaultchar, size; unsigned long firstchar, defaultchar, size;
unsigned long i, nbits, noffset, nwidth; unsigned long nbits;
char version[4+1];
struct font* pf = &font_ui;
/* open and read entire font file*/
fd = open(path, O_RDONLY|O_BINARY);
if (fd < 0) {
DEBUGF("Can't open font: %s\n", path);
return NULL;
}
font_reset();
/* currently, font loading replaces earlier font allocation*/
freeptr = (unsigned char *)(((int)mbuf + 3) & ~3);
fileptr = freeptr;
filesize = read(fd, fileptr, MAX_FONT_SIZE);
eofptr = fileptr + filesize;
/* no need for multiple font loads currently*/
/*freeptr += filesize;*/
/*freeptr = (unsigned char *)(freeptr + 3) & ~3;*/ /* pad freeptr*/
close(fd);
if (filesize == MAX_FONT_SIZE) {
DEBUGF("Font %s too large: %d\n", path, filesize);
return NULL;
}
/* read magic and version #*/ /* read magic and version #*/
memset(version, 0, sizeof(version)); memset(version, 0, sizeof(version));
@ -163,6 +148,14 @@ struct font* font_load(const char *path)
/* # words of bitmap_t*/ /* # words of bitmap_t*/
if (!readlong(&nbits)) if (!readlong(&nbits))
return NULL; return NULL;
pf->bits_size = nbits;
return pf;
}
/* Load memory font */
struct font* font_load_in_memory(struct font* pf)
{
long i, noffset, nwidth;
/* # longs of offset*/ /* # longs of offset*/
if (!readlong(&noffset)) if (!readlong(&noffset))
@ -174,19 +167,44 @@ struct font* font_load(const char *path)
/* variable font data*/ /* variable font data*/
pf->bits = (unsigned char *)fileptr; pf->bits = (unsigned char *)fileptr;
fileptr += nbits*sizeof(unsigned char); fileptr += pf->bits_size*sizeof(unsigned char);
/* pad to 16 bit boundary*/ if ( pf->bits_size < 0xFFDB )
fileptr = (unsigned char *)(((long)fileptr + 1) & ~1); {
/* pad to 16-bit boundary */
fileptr = (unsigned char *)(((int)fileptr + 1) & ~1);
}
else
{
/* pad to 32-bit boundary*/
fileptr = (unsigned char *)(((int)fileptr + 3) & ~3);
}
if (noffset) { if (noffset)
pf->offset = (unsigned short *)fileptr; {
for (i=0; i<noffset; ++i) if ( pf->bits_size < 0xFFDB )
{ {
unsigned short offset; long_offset = 0;
if (!readshort(&offset)) pf->offset = (unsigned short *)fileptr;
return NULL; for (i=0; i<noffset; ++i)
((unsigned short*)(pf->offset))[i] = (unsigned short)offset; {
unsigned short offset;
if (!readshort(&offset))
return NULL;
((unsigned short*)(pf->offset))[i] = (unsigned short)offset;
}
}
else
{
long_offset = 1;
pf->offset = (unsigned short *)fileptr;
for (i=0; i<noffset; ++i)
{
unsigned long offset;
if (!readlong(&offset))
return NULL;
((unsigned long*)(pf->offset))[i] = (unsigned long)offset;
}
} }
} }
else else
@ -205,6 +223,141 @@ struct font* font_load(const char *path)
return pf; /* success!*/ return pf; /* success!*/
} }
/* Load cached font */
struct font* font_load_cached(struct font* pf)
{
unsigned long noffset, nwidth;
unsigned char* oldfileptr = fileptr;
/* # longs of offset*/
if (!readlong(&noffset))
return NULL;
/* # bytes of width*/
if (!readlong(&nwidth))
return NULL;
/* We are now at the bitmap data, this is fixed at 36.. */
pf->bits = NULL;
/* Calculate offset to offset data */
fileptr += pf->bits_size * sizeof(unsigned char);
if ( pf->bits_size < 0xFFDB )
{
long_offset = 0;
/* pad to 16-bit boundary */
fileptr = (unsigned char *)(((int)fileptr + 1) & ~1);
}
else
{
long_offset = 1;
/* pad to 32-bit boundary*/
fileptr = (unsigned char *)(((int)fileptr + 3) & ~3);
}
if (noffset)
file_offset_offset = (unsigned long)(fileptr - freeptr);
else
file_offset_offset = 0;
/* Calculate offset to widths data */
if ( pf->bits_size < 0xFFDB )
fileptr += noffset * sizeof(unsigned short);
else
fileptr += noffset * sizeof(unsigned long);
if (nwidth)
file_width_offset = (unsigned long)(fileptr - freeptr);
else
file_width_offset = 0;
fileptr = oldfileptr;
/* Create the cache */
cache_create(pf->maxwidth, pf->height);
return pf;
}
/* read and load font into incore font structure*/
struct font* font_load(const char *path)
{
int filesize;
struct font* pf = &font_ui;
/* save loaded glyphs */
glyph_cache_save();
/* Close font file handle */
if (fnt_file >= 0)
close(fnt_file);
/* open and read entire font file*/
fnt_file = open(path, O_RDONLY|O_BINARY);
if (fnt_file < 0) {
DEBUGF("Can't open font: %s\n", path);
return NULL;
}
/* Check file size */
filesize = lseek(fnt_file, 0, SEEK_END);
lseek(fnt_file, 0, SEEK_SET);
font_reset();
/* currently, font loading replaces earlier font allocation*/
freeptr = (unsigned char *)(((int)mbuf + 3) & ~3);
fileptr = freeptr;
if (filesize > MAX_FONT_SIZE)
{
read(fnt_file, fileptr, FONT_HEADER_SIZE);
eofptr = fileptr + FONT_HEADER_SIZE;
if (!font_load_header(pf))
{
DEBUGF("Failed font header load");
return NULL;
}
if (!font_load_cached(pf))
{
DEBUGF("Failed font cache load");
return NULL;
}
glyph_cache_load();
}
else
{
read(fnt_file, fileptr, MAX_FONT_SIZE);
eofptr = fileptr + filesize;
close(fnt_file);
fnt_file = -1;
if (!font_load_header(pf))
{
DEBUGF("Failed font header load");
return NULL;
}
if (!font_load_in_memory(pf))
{
DEBUGF("Failed mem load");
return NULL;
}
}
/* no need for multiple font loads currently*/
/*freeptr += filesize;*/
/*freeptr = (unsigned char *)(freeptr + 3) & ~3;*/ /* pad freeptr*/
return pf; /* success!*/
}
/* /*
* Return a pointer to an incore font structure. * Return a pointer to an incore font structure.
* If the requested font isn't loaded/compiled-in, * If the requested font isn't loaded/compiled-in,
@ -231,17 +384,18 @@ struct font* font_get(int font)
int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber) int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber)
{ {
struct font* pf = font_get(fontnumber); struct font* pf = font_get(fontnumber);
int ch; unsigned short ch;
int width = 0; int width = 0;
while((ch = *str++)) { for (str = utf8decode(str, &ch); ch != 0 ; str = utf8decode(str, &ch))
{
/* check input range*/ /* check input range*/
if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) if (ch < pf->firstchar || ch >= pf->firstchar+pf->size)
ch = pf->defaultchar; ch = pf->defaultchar;
ch -= pf->firstchar; ch -= pf->firstchar;
/* get proportional width and glyph bits*/ /* get proportional width and glyph bits*/
width += pf->width? pf->width[ch]: pf->maxwidth; width += font_get_width(pf,ch);
} }
if ( w ) if ( w )
*w = width; *w = width;
@ -250,6 +404,154 @@ int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber)
return width; return width;
} }
/*
* Reads an entry into cache entry
*/
static void
load_cache_entry(struct font_cache_entry* p, void* callback_data)
{
struct font* pf = callback_data;
unsigned short char_code = p->_char_code;
unsigned char tmp[2];
if (file_width_offset)
{
int width_offset = file_width_offset + char_code;
lseek(fnt_file, width_offset, SEEK_SET);
read(fnt_file, &(p->width), 1);
}
else
{
p->width = pf->maxwidth;
}
long bitmap_offset = 0;
if (file_offset_offset)
{
long offset = file_offset_offset + char_code * (long_offset ? sizeof(long) : sizeof(short));
lseek(fnt_file, offset, SEEK_SET);
read (fnt_file, tmp, 2);
bitmap_offset = tmp[0] | (tmp[1] << 8);
if (long_offset) {
read (fnt_file, tmp, 2);
bitmap_offset |= (tmp[0] << 16) | (tmp[1] << 24);
}
}
else
{
bitmap_offset = ((pf->height + 7) / 8) * p->width * char_code;
}
long file_offset = FONT_HEADER_SIZE + bitmap_offset;
lseek(fnt_file, file_offset, SEEK_SET);
int src_bytes = p->width * ((pf->height + 7) / 8);
read(fnt_file, p->bitmap, src_bytes);
}
/*
* Converts cbuf into a font cache
*/
static void cache_create(int maxwidth, int height)
{
/* maximum size of rotated bitmap */
int bitmap_size = maxwidth * ((height + 7) / 8);
/* Initialise cache */
font_cache_create(&font_cache_ui, mbuf, MAX_FONT_SIZE, bitmap_size);
}
/*
* Returns width of character
*/
int font_get_width(struct font* pf, unsigned short char_code)
{
return (fnt_file >= 0 && pf != &sysfont)?
font_cache_get(&font_cache_ui,char_code,load_cache_entry,pf)->width:
pf->width? pf->width[char_code]: pf->maxwidth;
}
const unsigned char* font_get_bits(struct font* pf, unsigned short char_code)
{
const unsigned char* bits;
if (fnt_file >= 0 && pf != &sysfont)
{
bits =
(unsigned char*)font_cache_get(&font_cache_ui,char_code,load_cache_entry,pf)->bitmap;
}
else
{
bits = pf->bits + (pf->offset?
pf->offset[char_code]:
(((pf->height + 7) / 8) * pf->maxwidth * char_code));
}
return bits;
}
void glyph_file_write(void* data)
{
struct font_cache_entry* p = data;
unsigned char tmp[2];
if (p->_char_code != 0xffff && glyph_file >= 0) {
tmp[0] = p->_char_code >> 8;
tmp[1] = p->_char_code & 0xff;
if (write(glyph_file, tmp, 2) != 2) {
close(glyph_file);
glyph_file = -1;
}
}
return;
}
/* save the char codes of the loaded glyphs to a file */
void glyph_cache_save(void)
{
if (fnt_file >= 0) {
glyph_file = creat(GLYPH_CACHE_FILE, 0);
if (glyph_file < 0) return;
lru_traverse(&font_cache_ui._lru, glyph_file_write);
if (glyph_file >= 0)
close(glyph_file);
}
return;
}
void glyph_cache_load(void)
{
if (fnt_file >= 0) {
int fd;
unsigned char tmp[2];
unsigned short ch;
struct font* pf = &font_ui;
fd = open(GLYPH_CACHE_FILE, O_RDONLY|O_BINARY);
if (fd >= 0) {
while (read(fd, tmp, 2) == 2) {
ch = (tmp[0] << 8) | tmp[1];
font_get_bits(pf, ch);
}
close(fd);
} else {
/* load latin1 chars into cache */
ch = 255 - pf->firstchar;
while (ch--)
font_get_bits(pf, ch);
}
}
return;
}
#endif /* HAVE_LCD_BITMAP */ #endif /* HAVE_LCD_BITMAP */

224
firmware/font_cache.c Normal file
View File

@ -0,0 +1,224 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2003 Tat Tang
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <string.h>
#include "font_cache.h"
#include "debug.h"
/*******************************************************************************
* font_cache_lru_init
******************************************************************************/
void font_cache_lru_init(void* data)
{
struct font_cache_entry* p = data;
p->_char_code = 0xffff; /* assume invalid char */
}
/*******************************************************************************
* font_cache_create
******************************************************************************/
void font_cache_create(
struct font_cache* fcache,
void *buf,
int buf_size,
int bitmap_bytes_size)
{
int font_cache_entry_size =
sizeof(struct font_cache_entry) + bitmap_bytes_size;
/* make sure font cache entries are a multiple of 16 bits */
if (font_cache_entry_size % 2 != 0)
font_cache_entry_size++;
int cache_size = buf_size /
(font_cache_entry_size + LRU_SLOT_OVERHEAD + sizeof(short));
fcache->_size = 1;
fcache->_capacity = cache_size;
/* set up index */
fcache->_index = buf;
/* set up lru list */
unsigned char* lru_buf = buf;
lru_buf += sizeof(short) * cache_size;
lru_create(&fcache->_lru, lru_buf, cache_size, font_cache_entry_size);
/* initialise cache */
lru_traverse(&fcache->_lru, font_cache_lru_init);
short i;
for (i = 0; i < cache_size; i++)
fcache->_index[i] = i; /* small cheat here */
}
/*******************************************************************************
* font_cache_index_of
******************************************************************************/
int font_cache_index_of(
struct font_cache* fcache,
unsigned short char_code)
{
struct font_cache_entry* p;
int left, right, mid, c;
left = 0;
right = fcache->_size - 1;
do
{
mid = (left + right) / 2;
p = lru_data(&fcache->_lru, fcache->_index[mid]);
c = p->_char_code - char_code;
if (c == 0)
return mid;
if (c < 0)
left = mid + 1;
else
right = mid - 1;
}
while (left <= right);
return -1;
}
/*******************************************************************************
* font_cache_insertion_point
******************************************************************************/
int font_cache_insertion_point(
struct font_cache* fcache,
unsigned short char_code)
{
struct font_cache_entry* p;
short *index = fcache->_index;
p = lru_data(&fcache->_lru, index[0]);
if (char_code < p->_char_code)
return -1;
p = lru_data(&fcache->_lru, index[fcache->_capacity - 1]);
if (char_code > p->_char_code)
return fcache->_capacity - 1;
int left, right, mid, c;
left = 0;
right = fcache->_capacity - 1;
do
{
mid = (left + right) / 2;
p = lru_data(&fcache->_lru, index[mid]);
c = char_code - p->_char_code;
if (c >= 0)
{
p = lru_data(&fcache->_lru, index[mid+1]);
int z = char_code - p->_char_code;
if (z < 0)
return mid;
if (z == 0)
return mid + 1;
}
if (c > 0)
left = mid + 1;
else
right = mid - 1;
}
while (left <= right);
/* not found */
return -2;
}
/*******************************************************************************
* font_cache_get
******************************************************************************/
struct font_cache_entry* font_cache_get(
struct font_cache* fcache,
unsigned short char_code,
void (*callback) (struct font_cache_entry* p, void *callback_data),
void *callback_data)
{
int insertion_point = font_cache_insertion_point(fcache, char_code);
if (insertion_point >= 0)
{
short lru_handle = fcache->_index[insertion_point];
struct font_cache_entry* p = lru_data(&fcache->_lru, lru_handle);
if (p->_char_code == char_code)
{
lru_touch(&fcache->_lru, lru_handle);
return lru_data(&fcache->_lru, lru_handle);
}
}
/* not found */
short lru_handle_to_replace = fcache->_lru._head;
struct font_cache_entry* p =
lru_data(&fcache->_lru, lru_handle_to_replace);
int index_to_replace = font_cache_index_of(fcache, p->_char_code);
if (insertion_point < index_to_replace)
{
/* shift memory down */
int dest = insertion_point+2;
int src = insertion_point+1;
int len = index_to_replace - insertion_point - 1;
int desti = dest + len - 1;
int srci = src + len - 1;
int i;
for (i = 0; i < len; i++)
fcache->_index[desti--] = fcache->_index[srci--];
/* add to index */
fcache->_index[insertion_point + 1] = lru_handle_to_replace;
}
else if (insertion_point > index_to_replace)
{
/* shift memory up */
int dest = index_to_replace;
int src = index_to_replace + 1;
int len = insertion_point - index_to_replace;
int i;
for (i=0; i < len; i++)
fcache->_index[dest++] = fcache->_index[src++];
/* add to index */
fcache->_index[insertion_point] = lru_handle_to_replace;
}
/* load new entry into cache */
lru_touch(&fcache->_lru, lru_handle_to_replace);
if (fcache->_size < fcache->_capacity)
fcache->_size++;
p->_char_code = char_code;
callback(p, callback_data);
return p;
}

View File

@ -42,6 +42,7 @@
#include "mp3data.h" #include "mp3data.h"
#include "system.h" #include "system.h"
#include "replaygain.h" #include "replaygain.h"
#include "rbunicode.h"
#define UNSYNC(b0,b1,b2,b3) (((long)(b0 & 0x7F) << (3*7)) | \ #define UNSYNC(b0,b1,b2,b3) (((long)(b0 & 0x7F) << (3*7)) | \
((long)(b1 & 0x7F) << (2*7)) | \ ((long)(b1 & 0x7F) << (2*7)) | \
@ -359,100 +360,83 @@ static const struct tag_resolver taglist[] = {
#define TAGLIST_SIZE ((int)(sizeof(taglist) / sizeof(taglist[0]))) #define TAGLIST_SIZE ((int)(sizeof(taglist) / sizeof(taglist[0])))
/* Checks to see if the passed in string is a 16-bit wide Unicode v2 /* Checks to see if the passed in string is a 16-bit wide Unicode v2
string. If it is, we attempt to convert it to a 8-bit ASCII string string. If it is, we convert it to a UTF-8 string. If it's not unicode,
(for valid 8-bit ASCII characters). If it's not unicode, we leave we convert from the default codepage */
it alone. At some point we should fully support unicode strings */ static int unicode_munge(char* string, char* utf8buf, int *len) {
static int unicode_munge(char* string, int *len) { long tmp;
long tmp; bool le = false;
bool le = false; int i = 0;
int i; char *str = string;
char *str = string; int templen = 0;
char *outstr = string; char* utf8 = utf8buf;
bool bom = false;
int outlen;
if(str[0] > 0x03) { switch (str[0]) {
/* Plain old string */ case 0x00: /* Type 0x00 is ordinary ISO 8859-1 */
return 0; str++;
} (*len)--;
utf8 = iso_decode(str, utf8, -1, *len);
/* Type 0x00 is ordinary ISO 8859-1 */ *utf8 = 0;
if(str[0] == 0x00) { *len = strlen(utf8buf);
int i = --(*len); break;
/* We must move the string to the left */ case 0x01: /* Unicode with or without BOM */
while (i--) { case 0x02:
string[0] = string[1]; (*len)--;
string++; str++;
}
return 0; /* Handle frames with more than one string
} (needed for TXXX frames).*/
do {
tmp = BYTES2INT(0, 0, str[0], str[1]);
/* Unicode with or without BOM */ /* Now check if there is a BOM
if(str[0] == 0x01 || str[0] == 0x02) { (zero-width non-breaking space, 0xfeff)
(*len)--; and if it is in little or big endian format */
str++; if(tmp == 0xfffe) { /* Little endian? */
i = 0; le = true;
str += 2;
/* Handle frames with more than one string (needed for TXXX frames). (*len)-=2;
*/ } else if(tmp == 0xfeff) { /* Big endian? */
do { str += 2;
tmp = BYTES2INT(0, 0, str[0], str[1]); (*len)-=2;
} else
/* Now check if there is a BOM (zero-width non-breaking space, 0xfeff) /* If there is no BOM (which is a specification violation),
and if it is in little or big endian format */ let's try to guess it. If one of the bytes is 0x00, it is
if(tmp == 0xfffe) { /* Little endian? */ probably the most significant one. */
bom = true; if(str[1] == 0)
le = true; le = true;
str += 2;
(*len)-=2;
}
if(tmp == 0xfeff) { /* Big endian? */
bom = true;
str += 2;
(*len)-=2;
}
/* If there is no BOM (which is a specification violation),
let's try to guess it. If one of the bytes is 0x00, it is
probably the most significant one. */
if(!bom) {
if(str[1] == 0)
le = true;
}
outlen = *len / 2;
do { do {
if(le) { if(le)
if(str[1]) utf8 = utf16LEdecode(str, utf8, 1);
outstr[i++] = '.'; else
else utf8 = utf16BEdecode(str, utf8, 1);
outstr[i++] = str[0];
} else {
if(str[0])
outstr[i++] = '.';
else
outstr[i++] = str[1];
}
str += 2;
} while((str[0] || str[1]) && (i < outlen));
str += 2; str+=2;
outstr[i++] = 0; /* Terminate the string */ i += 2;
} while(i < outlen); } while((str[0] || str[1]) && (i < *len));
*len = i - 1; *utf8++ = 0; /* Terminate the string */
templen += (strlen(&utf8buf[templen]) + 1);
str += 2;
i+=2;
} while(i < *len);
*len = templen - 1;
break;
return 0; case 0x03: /* UTF-8 encoded string */
} for(i=0; i < *len; i++)
utf8[i] = str[i+1];
*len = strlen(utf8buf);
break;
/* If we come here, the string was of an unsupported type */ default: /* Plain old string */
*len = 1; utf8 = iso_decode(str, utf8, -1, *len);
outstr[0] = 0; *utf8 = 0;
return -1; *len = strlen(utf8buf);
break;
}
return 0;
} }
/* /*
@ -468,6 +452,7 @@ static bool setid3v1title(int fd, struct mp3entry *entry)
unsigned char buffer[128]; unsigned char buffer[128];
static const char offsets[] = {3, 33, 63, 93, 125, 127}; static const char offsets[] = {3, 33, 63, 93, 125, 127};
int i, j; int i, j;
unsigned char* utf8;
if (-1 == lseek(fd, -128, SEEK_END)) if (-1 == lseek(fd, -128, SEEK_END))
return false; return false;
@ -482,8 +467,8 @@ static bool setid3v1title(int fd, struct mp3entry *entry)
entry->id3version = ID3_VER_1_0; entry->id3version = ID3_VER_1_0;
for (i=0; i < (int)sizeof offsets; i++) { for (i=0; i < (int)sizeof offsets; i++) {
char* ptr = (char *)buffer + offsets[i]; unsigned char* ptr = (unsigned char *)buffer + offsets[i];
if (i<3) { if (i<3) {
/* kill trailing space in strings */ /* kill trailing space in strings */
for (j=29; j && ptr[j]==' '; j--) for (j=29; j && ptr[j]==' '; j--)
@ -492,18 +477,13 @@ static bool setid3v1title(int fd, struct mp3entry *entry)
switch(i) { switch(i) {
case 0: case 0:
strncpy(entry->id3v1buf[2], ptr, 30);
entry->title = entry->id3v1buf[2];
break;
case 1: case 1:
strncpy(entry->id3v1buf[0], ptr, 30);
entry->artist = entry->id3v1buf[0];
break;
case 2: case 2:
strncpy(entry->id3v1buf[1], ptr, 30); /* convert string to utf8 */
entry->album = entry->id3v1buf[1]; utf8 = entry->id3v1buf[i];
utf8 = iso_decode(ptr, utf8, -1, 30);
/* make sure string is terminated */
*utf8 = 0;
break; break;
case 3: case 3:
@ -527,6 +507,10 @@ static bool setid3v1title(int fd, struct mp3entry *entry)
} }
} }
entry->title = entry->id3v1buf[0];
entry->artist = entry->id3v1buf[1];
entry->album = entry->id3v1buf[2];
return true; return true;
} }
@ -556,7 +540,7 @@ static void setid3v2title(int fd, struct mp3entry *entry)
bool global_unsynch = false; bool global_unsynch = false;
bool unsynch = false; bool unsynch = false;
int data_length_ind; int data_length_ind;
int i; int i, j;
int rc; int rc;
global_ff_found = false; global_ff_found = false;
@ -789,7 +773,18 @@ static void setid3v2title(int fd, struct mp3entry *entry)
if(unsynch || (global_unsynch && version >= ID3_VER_2_4)) if(unsynch || (global_unsynch && version >= ID3_VER_2_4))
bytesread = unsynchronize_frame(tag, bytesread); bytesread = unsynchronize_frame(tag, bytesread);
unicode_munge( tag, &bytesread );
/* UTF-8 could potentially be 3 times larger */
/* so we need to create a new buffer */
char utf8buf[(3 * bytesread) + 1];
unicode_munge( tag, utf8buf, &bytesread );
if(bytesread >= buffersize - bufferpos)
bytesread = buffersize - bufferpos - 1;
for (j = 0; j < bytesread; j++)
tag[j] = utf8buf[j];
if (ptag) if (ptag)
*ptag = tag; *ptag = tag;
@ -809,7 +804,7 @@ static void setid3v2title(int fd, struct mp3entry *entry)
break; break;
} }
} }
if( i == TAGLIST_SIZE ) { if( i == TAGLIST_SIZE ) {
/* no tag in tagList was found, or it was a repeat. /* no tag in tagList was found, or it was a repeat.
skip it using the total size */ skip it using the total size */
@ -839,7 +834,7 @@ int getid3v2len(int fd)
{ {
char buf[6]; char buf[6];
int offset; int offset;
/* Make sure file has a ID3 tag */ /* Make sure file has a ID3 tag */
if((-1 == lseek(fd, 0, SEEK_SET)) || if((-1 == lseek(fd, 0, SEEK_SET)) ||
(read(fd, buf, 6) != 6) || (read(fd, buf, 6) != 6) ||
@ -955,7 +950,7 @@ bool mp3info(struct mp3entry *entry, const char *filename, bool v1first)
#if CONFIG_CODEC != SWCODEC #if CONFIG_CODEC != SWCODEC
memset(entry, 0, sizeof(struct mp3entry)); memset(entry, 0, sizeof(struct mp3entry));
#endif #endif
strncpy(entry->path, filename, sizeof(entry->path)); strncpy(entry->path, filename, sizeof(entry->path));
entry->title = NULL; entry->title = NULL;

View File

@ -0,0 +1,48 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2003 Tat Tang
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "lru.h"
/*******************************************************************************
*
******************************************************************************/
struct font_cache
{
struct lru _lru;
int _size;
int _capacity;
short *_index; /* index of lru handles in char_code order */
};
struct font_cache_entry
{
unsigned short _char_code;
unsigned char width;
unsigned char bitmap[1]; /* place holder */
};
/* void (*f) (void*, struct font_cache_entry*); */
/* Create an auto sized font cache from buf */
void font_cache_create(
struct font_cache* fcache, void* buf, int buf_size, int bitmap_bytes_size);
/* Get font cache entry */
struct font_cache_entry* font_cache_get(
struct font_cache* fcache,
unsigned short char_code,
void (*callback) (struct font_cache_entry* p, void *callback_data),
void *callback_data);

46
firmware/include/lru.h Normal file
View File

@ -0,0 +1,46 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2003 Tat Tang
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef LRU_H
#define LRU_H
/*******************************************************************************
* LRU manager
******************************************************************************/
struct lru
{
short _head;
short _tail;
short _size;
short _slot_size;
void *_base;
};
#define LRU_SLOT_OVERHEAD (2 * sizeof(short))
/* Create LRU list with specified size from buf. */
void lru_create(struct lru* pl, void *buf, short size, short data_size);
/* Touch an entry. Moves handle to back of LRU list */
void lru_touch(struct lru* pl, short handle);
/* Data */
void *lru_data(struct lru* pl, short handle);
/* Traverse lru-wise */
void lru_traverse(struct lru* pl, void (*callback)(void* data));
#endif /* LRU_H */

View File

@ -0,0 +1,29 @@
/* Some conversion functions for handling UTF-8
*
* copyright Marcoen Hirschberg (2004,2005)
*
* I got all the info from:
* http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
* and
* http://en.wikipedia.org/wiki/Unicode
*/
#define CODEPAGE_DIR "/.rockbox/codepages"
#define MAX_CP_TABLE_SIZE 32768
#define MASK 0xC0 /* 11000000 */
#define COMP 0x80 /* 10x */
extern int codepage;
/* Encode a UCS value as UTF-8 and return a pointer after this UTF-8 char. */
unsigned char* utf8encode(unsigned long ucs, unsigned char *utf8);
unsigned char* iso_decode(const unsigned char *latin1, unsigned char *utf8, int cp, int count);
unsigned char* utf16LEdecode(const unsigned char *utf16, unsigned char *utf8, unsigned int count);
unsigned char* utf16BEdecode(const unsigned char *utf16, unsigned char *utf8, unsigned int count);
unsigned char* utf16decode(const unsigned char *utf16, unsigned char *utf8, unsigned int count);
unsigned long utf8length(const unsigned char *utf8);
const unsigned char* utf8decode(const unsigned char *utf8, unsigned short *ucs);
void set_codepage(int cp);
int utf8seek(const unsigned char* utf8, int offset);

119
firmware/lru.c Normal file
View File

@ -0,0 +1,119 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2003 Tat Tang
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "lru.h"
struct lru_node
{
short _next;
short _prev;
unsigned char data[1]; /* place holder */
};
#define lru_node_p(pl, x) \
((struct lru_node*)(pl->_base + pl->_slot_size * x))
/*******************************************************************************
* lru_create
******************************************************************************/
void lru_create(struct lru* pl, void *buf, short size, short data_size)
{
pl->_base = (unsigned char*) buf;
pl->_slot_size = data_size + LRU_SLOT_OVERHEAD;
pl->_size = size;
pl->_head = 0;
pl->_tail = pl->_size - 1;
/* Initialise slots */
int i;
for (i=0; i<pl->_size; i++)
{
lru_node_p(pl, i)->_next = i + 1;
lru_node_p(pl, i)->_prev = i - 1;
}
/* Fix up head and tail to form circular buffer */
lru_node_p(pl, 0)->_prev = pl->_tail;
lru_node_p(pl, pl->_tail)->_next = pl->_head;
}
/*******************************************************************************
* lru_traverse
******************************************************************************/
void lru_traverse(struct lru* pl, void (*callback)(void* data))
{
short i;
struct lru_node* slot;
short loc = pl->_head;
for (i = 0; i < pl->_size; i++)
{
slot = lru_node_p(pl, loc);
callback(slot->data);
loc = slot->_next;
}
}
/*******************************************************************************
* lru_touch
******************************************************************************/
void lru_touch(struct lru* pl, short handle)
{
if (handle == pl->_head)
{
pl->_head = lru_node_p(pl, pl->_head)->_next;
pl->_tail = lru_node_p(pl, pl->_tail)->_next;
return;
}
if (handle == pl->_tail)
{
return;
}
/* Remove current node from linked list */
struct lru_node* curr_node = lru_node_p(pl, handle);
struct lru_node* prev_node = lru_node_p(pl, curr_node->_prev);
struct lru_node* next_node = lru_node_p(pl, curr_node->_next);
prev_node->_next = curr_node->_next;
next_node->_prev = curr_node->_prev;
/* insert current node at tail */
struct lru_node* tail_node = lru_node_p(pl, pl->_tail);
short tail_node_next_handle = tail_node->_next; /* Bug fix */
struct lru_node* tail_node_next = lru_node_p(pl, tail_node_next_handle); /* Bug fix */
curr_node->_next = tail_node->_next;
curr_node->_prev = pl->_tail;
tail_node_next->_prev = handle; /* Bug fix */
tail_node->_next = handle;
pl->_tail = handle;
}
/*******************************************************************************
* lru_data
******************************************************************************/
void *lru_data(struct lru* pl, short handle)
{
return lru_node_p(pl, handle)->data;
}

View File

@ -46,6 +46,9 @@
#include "file.h" #include "file.h"
#include "hwcompat.h" #include "hwcompat.h"
#endif /* !SIMULATOR */ #endif /* !SIMULATOR */
#ifdef HAVE_LCD_BITMAP
#include "lcd.h"
#endif
#ifndef SIMULATOR #ifndef SIMULATOR
extern unsigned long mas_version_code; extern unsigned long mas_version_code;
@ -916,6 +919,12 @@ static struct trackdata *add_track_to_tag_list(const char *filename)
} }
track->mempos = audiobuf_write; track->mempos = audiobuf_write;
track->id3.elapsed = 0; track->id3.elapsed = 0;
#ifdef HAVE_LCD_BITMAP
int w, h;
lcd_getstringsize(track->id3.title, &w, &h);
lcd_getstringsize(track->id3.artist, &w, &h);
lcd_getstringsize(track->id3.album, &w, &h);
#endif
track_write_idx = (track_write_idx+1) & MAX_TRACK_ENTRIES_MASK; track_write_idx = (track_write_idx+1) & MAX_TRACK_ENTRIES_MASK;
debug_tags(); debug_tags();

View File

@ -46,6 +46,9 @@
#elif HAVE_TLV320 #elif HAVE_TLV320
#include "tlv320.h" #include "tlv320.h"
#endif #endif
#ifdef HAVE_LCD_BITMAP
#include "font.h"
#endif
#include "logf.h" #include "logf.h"
#include "lcd-remote.h" #include "lcd-remote.h"
@ -378,7 +381,7 @@ static void handle_auto_poweroff(void)
* Inhibit shutdown as long as the charger is plugged in. If it is * Inhibit shutdown as long as the charger is plugged in. If it is
* unplugged, wait for a timeout period and then shut down. * unplugged, wait for a timeout period and then shut down.
*/ */
if(charger_input_state == CHARGER) { if(charger_input_state == CHARGER || audio_stat == AUDIO_STATUS_PLAY) {
last_event_tick = current_tick; last_event_tick = current_tick;
} }
#endif #endif
@ -899,6 +902,9 @@ void shutdown_hw(void)
} }
#endif #endif
audio_stop(); audio_stop();
#ifdef HAVE_LCD_BITMAP
glyph_cache_save();
#endif
ata_flush(); ata_flush();
ata_spindown(1); ata_spindown(1);
while(ata_disk_is_active()) while(ata_disk_is_active())

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ CFLAGS := -O -ansi -g
LDFLAGS := -g LDFLAGS := -g
CLEANALL := scramble descramble iaudio sh2d bmp2rb rdf2binary convbdf \ CLEANALL := scramble descramble iaudio sh2d bmp2rb rdf2binary convbdf \
generate_rocklatin mkboot ipod_fw uclpack generate_rocklatin mkboot ipod_fw codepages uclpack
all: all:
@echo "Run make in your build directory!" @echo "Run make in your build directory!"
@ -41,6 +41,9 @@ ipod_fw: ipod_fw.c
convbdf: convbdf.c convbdf: convbdf.c
$(CC) -g $+ -o $@ $(CC) -g $+ -o $@
codepages: codepages.c
$(CC) -g $+ -o $@
generate_rocklatin: generate_rocklatin.c ../firmware/drivers/lcd-player-charset.c generate_rocklatin: generate_rocklatin.c ../firmware/drivers/lcd-player-charset.c
$(CC) -DHAVE_LCD_CHARCELLS -D__CONFIG_H__ -I../firmware/export $+ -o $@ $(CC) -DHAVE_LCD_CHARCELLS -D__CONFIG_H__ -I../firmware/export $+ -o $@

View File

@ -62,16 +62,26 @@ sub buildzip {
mkdir ".rockbox/langs", 0777; mkdir ".rockbox/langs", 0777;
mkdir ".rockbox/rocks", 0777; mkdir ".rockbox/rocks", 0777;
mkdir ".rockbox/codecs", 0777; mkdir ".rockbox/codecs", 0777;
mkdir ".rockbox/codepages", 0777;
mkdir ".rockbox/wps", 0777; mkdir ".rockbox/wps", 0777;
mkdir ".rockbox/themes", 0777; mkdir ".rockbox/themes", 0777;
my $c = 'find apps -name "*.codec" ! -empty -exec cp {} .rockbox/codecs/ \;'; my $c = 'find apps -name "*.codec" ! -empty -exec cp {} .rockbox/codecs/ \;';
print `$c`; print `$c`;
system("$ROOT/tools/codepages");
my $c = 'find . -name "*.cp" ! -empty -exec mv {} .rockbox/codepages/ \; >/dev/null 2>&1';
print `$c`;
my @call = `find .rockbox/codecs -type f`; my @call = `find .rockbox/codecs -type f`;
if(!$call[0]) { if(!$call[0]) {
# no codec was copied, remove directory again # no codec was copied, remove directory again
rmdir(".rockbox/codecs"); rmdir(".rockbox/codecs");
system("$ROOT/tools/codepages");
my $c = 'find . -name "*.cp" ! -empty -exec mv {} .rockbox/codepages/ \; >/dev/null 2>&1';
print `$c`;
} }
@ -139,44 +149,16 @@ sub buildzip {
my @fonts = grep { /\.bdf$/ && -f "$ROOT/fonts/$_" } readdir(DIR); my @fonts = grep { /\.bdf$/ && -f "$ROOT/fonts/$_" } readdir(DIR);
closedir DIR; closedir DIR;
my $maxfont;
open(SIZE, ">ziptemp");
print SIZE <<STOP
\#include "font.h"
Font Size We Want: MAX_FONT_SIZE
STOP
;
close(SIZE);
my $c="cat ziptemp | gcc $cppdef -I. -I$firmdir/export -E -P -";
# print STDERR "C: $c\n";
open(GETSIZE, "$c|");
while(<GETSIZE>) {
if($_ =~ /^Font Size We Want: (\d*)/) {
$maxfont = $1;
last;
}
}
close(GETSIZE);
unlink("ziptemp");
die "no decent max font size" if ($maxfont < 2000);
for(@fonts) { for(@fonts) {
my $f = $_; my $f = $_;
print "FONT: $f\n" if($verbose); print "FONT: $f\n" if($verbose);
my $o = $f; my $o = $f;
$o =~ s/\.bdf/\.fnt/; $o =~ s/\.bdf/\.fnt/;
my $cmd ="$ROOT/tools/convbdf -s 32 -l 255 -f -o \".rockbox/fonts/$o\" \"$ROOT/fonts/$f\" >/dev/null 2>&1"; my $cmd ="$ROOT/tools/convbdf -f -o \".rockbox/fonts/$o\" \"$ROOT/fonts/$f\" >/dev/null 2>&1";
print "CMD: $cmd\n" if($verbose); print "CMD: $cmd\n" if($verbose);
`$cmd`; `$cmd`;
# no need to add fonts we cannot load anyway
my $fontsize = filesize(".rockbox/fonts/$o");
if($fontsize > $maxfont) {
unlink(".rockbox/fonts/$o");
}
} }
} }

231
tools/codepages.c Normal file
View File

@ -0,0 +1,231 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
*
* Copyright (C) 2005 by Frank Dischner
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "codepages.h"
#define MAX_TABLE_SIZE 32768
static unsigned short iso_table[MAX_TABLE_SIZE];
static const unsigned short iso8859_7_to_uni[] = {
0x2018, 0x2019, 0x00A3, 0x20AC, 0x20AF, 0x00A6, 0x00A7, /* A1-A7 */
0x00A8, 0x00A9, 0x037A, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, /* A8-AF */
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7 /* B0-B7 */
};
static const unsigned short cp1251_to_uni[] = {
0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, /* 80-87 */
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, /* 88-8F */
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 90-97 */
0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, /* 98-9F */
0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* A0-A7 */
0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* A8-AF */
0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* B0-B7 */
0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457 /* B8-BF */
};
static const unsigned short iso8859_2_to_uni[] = {
0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, /* A1-A7 */
0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, /* A8-AF */
0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, /* B0-B7 */
0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, /* B8-BF */
0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* C0-C7 */
0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* C8-CF */
0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* D0-D7 */
0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* D8-DF */
0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* E0-E7 */
0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* E8-EF */
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* F0-F7 */
0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 /* F8-FF */
};
unsigned short iso_decode(unsigned char *latin1, int cp, int count)
{
unsigned short ucs = 0;
/* cp tells us which codepage to convert from */
switch (cp) {
case 0x01: /* Greek (ISO-8859-7) */
while (count--) {
/* first convert to unicode */
if (*latin1 < 0xA1)
ucs = *latin1++;
else if (*latin1 > 0xB7)
ucs = *latin1++ + 0x02D0;
else
ucs = iso8859_7_to_uni[*latin1++ - 0xA1];
}
break;
case 0x02: /* Hebrew (ISO-8859-8) */
while (count--) {
/* first convert to unicode */
if (*latin1 == 0xAA) {
ucs = 0xD7;
latin1++;
} else if (*latin1 == 0xBA) {
ucs = 0xF7;
latin1++;
} else if (*latin1 == 0xDF) {
ucs = 0x2017;
latin1++;
} else if (*latin1 < 0xC0)
ucs = *latin1++;
else
ucs = *latin1++ + 0x04F0;
}
break;
case 0x03: /* Russian (CP1251) */
while (count--) {
/* first convert to unicode */
if (*latin1 < 0x80)
ucs = *latin1++;
else if (*latin1 > 0xBF)
ucs = *latin1++ + 0x0350;
else
ucs = cp1251_to_uni[*latin1++ - 0x80];
}
break;
case 0x04: /* Thai (ISO-8859-11) */
while (count--) {
/* first convert to unicode */
if (*latin1 < 0xA1)
ucs = *latin1++;
else
ucs = *latin1++ + 0x0D60;
}
break;
case 0x05: /* Arabic (ISO-8859-6) */
while (count--) {
/* first convert to unicode */
if (*latin1 < 0xAC || *latin1 == 0xAD)
ucs = *latin1++;
else
ucs = *latin1++ + 0x0560;
}
break;
case 0x06: /* Turkish (ISO-8859-9) */
while (count--) {
/* first convert to unicode */
switch (*latin1) {
case 0xD0:
ucs = 0x011E;
break;
case 0xDD:
ucs = 0x0130;
break;
case 0xDE:
ucs = 0x015E;
break;
case 0xF0:
ucs = 0x011F;
break;
case 0xFD:
ucs = 0x0131;
break;
case 0xFE:
ucs = 0x015F;
break;
default:
ucs = *latin1;
break;
}
latin1++;
}
break;
case 0x07: /* Latin Extended (ISO-8859-2) */
while (count--) {
/* first convert to unicode */
if (*latin1 < 0xA1)
ucs = *latin1++;
else
ucs = iso8859_2_to_uni[*latin1++ - 0xA1];
}
break;
default:
break;
}
return ucs;
}
int writeshort(FILE *f, unsigned short s)
{
putc(s, f);
return putc(s>>8, f) != EOF;
}
int main(void)
{
int i, j;
unsigned char k;
unsigned short uni;
FILE *of;
for (i=0; i < MAX_TABLE_SIZE; i++)
iso_table[i] = 0;
of = fopen("iso.cp", "wb");
if (!of) return 1;
for (i=1; i<8; i++) {
for (j=0; j<128; j++) {
k = (unsigned char)j + 128;
uni = iso_decode(&k, i, 1);
writeshort(of, uni);
}
}
fclose(of);
of = fopen("932.cp", "wb");
if (!of) return 1;
for (i=0; i < MAX_TABLE_SIZE; i++)
writeshort(of, cp932_table[i]);
fclose(of);
of = fopen("936.cp", "wb");
if (!of) return 1;
for (i=0; i < MAX_TABLE_SIZE; i++)
writeshort(of, cp936_table[i]);
fclose(of);
of = fopen("949.cp", "wb");
if (!of) return 1;
for (i=0; i < MAX_TABLE_SIZE; i++)
writeshort(of, cp949_table[i]);
fclose(of);
of = fopen("950.cp", "wb");
if (!of) return 1;
for (i=0; i < MAX_TABLE_SIZE; i++)
writeshort(of, cp950_table[i]);
fclose(of);
return 0;
}

16419
tools/codepages.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -443,6 +443,7 @@ int bdf_read_header(FILE *fp, struct font* pf)
return 0; return 0;
} }
fprintf(stderr, "Header parsed\n");
return 1; return 1;
} }
@ -955,6 +956,7 @@ int gen_c_source(struct font* pf, char *path)
" %s /* offset */\n" " %s /* offset */\n"
" %s\n" " %s\n"
" %d, /* defaultchar */\n" " %d, /* defaultchar */\n"
" %d /* bits_size */\n"
"};\n" "};\n"
"#endif /* HAVE_LCD_BITMAP */\n", "#endif /* HAVE_LCD_BITMAP */\n",
pf->maxwidth, pf->height, pf->maxwidth, pf->height,
@ -963,7 +965,8 @@ int gen_c_source(struct font* pf, char *path)
pf->size, pf->size,
obuf, obuf,
buf, buf,
pf->defaultchar); pf->defaultchar,
pf->bits_size);
return 0; return 0;
} }
@ -1071,12 +1074,29 @@ int gen_fnt_file(struct font* pf, char *path)
ofr += size; ofr += size;
} }
if (ftell(ofp) & 1) if ( pf->bits_size < 0xFFDB )
writebyte(ofp, 0); /* pad to 16-bit boundary*/ {
/* bitmap offset is small enough, use unsigned short for offset */
if (ftell(ofp) & 1)
writebyte(ofp, 0); /* pad to 16-bit boundary*/
}
else
{
/* bitmap offset is large then 64K, use unsigned long for offset */
while (ftell(ofp) & 3)
writebyte(ofp, 0); /* pad to 32-bit boundary*/
}
if (pf->offset) if (pf->offset)
{
for (i=0; i<pf->size; ++i) for (i=0; i<pf->size; ++i)
writeshort(ofp, pf->offrot[i]); {
if ( pf->bits_size < 0xFFDB )
writeshort(ofp, pf->offrot[i]);
else
writelong(ofp, pf->offrot[i]);
}
}
if (pf->width) if (pf->width)
for (i=0; i<pf->size; ++i) for (i=0; i<pf->size; ++i)