*** Lang v2 cleanup (FS#6574) ***

1) Introduces apps/features.txt that controls which strings are included 
for each target based on defines.
2) .lng and .voice files are now target specific and the format versions 
of both these file types have been bumped, which means that new voice 
files are needed. 
3) Use the 'features' mechanism to exclude strings for targets that 
didn't use them.
4) Delete unused and deprecated and duplicated strings, sort strings in 
english.lang

Some string IDs were changed so translations will be slightly worse than 
before.



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14198 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Nils Wallménius 2007-08-05 19:19:39 +00:00
parent e70f7f4ca8
commit b311367481
36 changed files with 7276 additions and 7217 deletions

View File

@ -90,6 +90,8 @@ $(DEPFILE): $(BITMAPLIBS)
dep: $(DEPFILE)
features: $(OBJDIR)/features
build-codecs:
$(SILENT)$(MAKE) -C codecs/lib OBJDIR=$(OBJDIR)/codecs/lib
$(SILENT)$(MAKE) -C codecs OBJDIR=$(OBJDIR)/codecs
@ -195,9 +197,22 @@ $(BUILDDIR)/rombox.iriver: $(OBJDIR)/rombox.bin
include $(TOOLSDIR)/make.inc
$(OBJDIR)/lang.o: lang/$(LANGUAGE).lang
@mkdir -p $(dir $@)
$(call PRINTS,GENLANG)perl -s $(TOOLSDIR)/genlang -p=$(BUILDDIR)/lang -t=$(ARCHOS) $<
# apps/features.txt is a file that (is preprocessed and) lists named features
# based on defines in the config-*.h files. The named features will be passed
# to genlang and thus (translated) phrases can be used based on those names.
# button.h is included for the HAS_BUTTON_HOLD define.
#
$(OBJDIR)/features: features.txt
$(SILENT)cat $< | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) \
$(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -imacros "config.h" -imacros "button.h" - | \
grep -v "^\#" | grep -v "^$$" > $@; \
echo "" >/dev/null
$(OBJDIR)/lang.o: lang/$(LANGUAGE).lang $(OBJDIR)/features
$(SILENT)mkdir -p `dirname $@`
$(SILENT)for f in `cat $(OBJDIR)/features`; do feat="$$feat:$$f" ; done; \
perl -s $(TOOLSDIR)/genlang -p=$(BUILDDIR)/lang -t=$(ARCHOS):$$feat $<
$(call PRINTS,CC lang.c)$(CC) $(CFLAGS) -c $(BUILDDIR)/lang.c -o $@
clean:

View File

@ -141,7 +141,7 @@ static int get_action_worker(int context, int timeout,
{
last_button = BUTTON_NONE;
keys_locked = false;
gui_syncsplash(HZ/2, str(LANG_KEYLOCK_OFF_PLAYER));
gui_syncsplash(HZ/2, str(LANG_KEYLOCK_OFF));
return ACTION_REDRAW;
}
else
@ -150,7 +150,7 @@ static int get_action_worker(int context, int timeout,
#endif
{
if ((button&BUTTON_REL))
gui_syncsplash(HZ/2, str(LANG_KEYLOCK_ON_PLAYER));
gui_syncsplash(HZ/2, str(LANG_KEYLOCK_ON));
return ACTION_REDRAW;
}
}
@ -189,7 +189,7 @@ static int get_action_worker(int context, int timeout,
{
unlock_combo = button;
keys_locked = true;
gui_syncsplash(HZ/2, str(LANG_KEYLOCK_ON_PLAYER));
gui_syncsplash(HZ/2, str(LANG_KEYLOCK_ON));
button_clear_queue();
return ACTION_REDRAW;

View File

@ -190,7 +190,7 @@ bool bookmark_autobookmark(void)
struct text_message message={(char **)lines, 1};
#else
unsigned char *lines[]={str(LANG_AUTO_BOOKMARK_QUERY),
str(LANG_RESUME_CONFIRM_PLAYER)};
str(LANG_CONFIRM_WITH_BUTTON)};
struct text_message message={(char **)lines, 2};
#endif
#if LCD_DEPTH > 1
@ -819,7 +819,7 @@ static void say_bookmark(const char* bookmark,
talk_number(bookmark_id + 1, true);
talk_id(VOICE_BOOKMARK_SELECT_INDEX_TEXT, true);
talk_number(resume_index + 1, true);
talk_id(VOICE_BOOKMARK_SELECT_TIME_TEXT, true);
talk_id(LANG_TIME, true);
if (ms / 60000)
talk_value(ms / 60000, UNIT_MIN, true);
talk_value((ms % 60000) / 1000, UNIT_SEC, true);

159
apps/features.txt Normal file
View File

@ -0,0 +1,159 @@
/* This file controls which strings are included when rockbox is built and
when the .lng and .voice files are built. That means that a change in this
file will break compatiblity with older .lng and .voice files and that those
version numbers should be updated. It also means that changing defines in
the various config*.h files could also break back compatiblity */
#if defined(HAVE_AGC)
agc
#endif
#if defined(HAVE_RTC_ALARM)
alarm
#endif
#if defined(HAVE_BACKLIGHT_BRIGHTNESS)
backlight_brightness
#endif
#if defined(HAVE_BACKLIGHT_PWM_FADING)
backlight_fade
#endif
#if BATTERY_TYPES_COUNT > 1
battery_types
#endif
#if defined(HAVE_DIRCACHE)
dircache
#endif
#if defined(HAVE_FLASH_STORAGE)
flash_storage
#endif
#if defined(HAVE_HEADPHONE_DETECTION)
headphone_detection
#endif
#if defined(HAS_BUTTON_HOLD)
hold_button
#endif
#if defined(HAVE_LCD_BITMAP)
lcd_bitmap
#endif
#if defined(HAVE_LCD_CHARCELLS)
lcd_charcell
#endif
#if LCD_DEPTH > 1
lcd_non-mono
#endif
#if defined(HAVE_LCD_COLOR)
lcd_color
#endif
#if defined(HAVE_LCD_FLIP)
lcd_flip
#endif
#if defined(HAVE_LCD_INVERT) || defined(HAVE_REMOTE_LCD)
lcd_invert
#endif
#if defined(HAVE_LCD_SLEEP)
lcd_sleep
#endif
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
masf
#endif
#if (CONFIG_CODEC == MAS3507D)
masd
#endif
#if defined(HAVE_PITCHSCREEN)
pitchscreen
#endif
#if defined(HAVE_MULTIVOLUME)
multivolume
#endif
#if defined(HAVE_QUICKSCREEN)
quickscreen
#endif
#if defined(CONFIG_TUNER)
radio
#endif
#if (CONFIG_KEYPAD == RECORDER_PAD)
recorder_pad
#if defined(CONFIG_TUNER)
radio_screen_button_bar
#endif
#endif
#if defined(HAVE_RECORDING)
recording
#if CONFIG_CODEC == SWCODEC
recording_swcodec
#else
recording_hwcodec
#endif
#endif
#if defined(HAVE_REMOTE_LCD)
remote
#endif
#if defined(HAVE_REMOTE_LCD_TICKING)
remote_ticking
#endif
#if CONFIG_RTC
rtc
#endif
#if defined(HAVE_SCROLLWHEEL)
scrollwheel
#endif
#if defined(SIMULATOR)
sim
#endif
#if defined(ARCHOS_RECORDER) || defined(ARCHOS_PLAYER)
soft_shutdown
#endif
#if defined(HAVE_SPDIF_POWER)
spdif_power
#endif
#if CONFIG_CODEC == SWCODEC
swcodec
#else
hwcodec
#endif
#if defined(HAVE_TAGCACHE)
tagcache
#endif
#if defined(HAVE_TC_RAMCACHE)
tc_ramcache
#endif
#if CONFIG_CHARGING || defined(SIMULATOR)
charging
#if defined(HAVE_USB_POWER) || defined(SIMULATOR)
usb_charging
#endif
#endif

View File

@ -101,7 +101,7 @@ const struct filetype inbuilt_filetypes[] = {
{ "kbd", FILE_ATTR_KBD, Icon_Keyboard, VOICE_EXT_KBD },
#endif
{ "bmark",FILE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK },
{ "cue", FILE_ATTR_CUE, Icon_Bookmark, LANG_CUESHEET },
{ "cue", FILE_ATTR_CUE, Icon_Bookmark, VOICE_EXT_CUESHEET },
#ifdef BOOTFILE_EXT
{ BOOTFILE_EXT, FILE_ATTR_MOD, Icon_Firmware, VOICE_EXT_AJZ },
#endif /* #ifndef SIMULATOR */

View File

@ -294,7 +294,7 @@ bool gui_wps_display(void)
#ifdef HAVE_LCD_BITMAP
gui_syncstatusbar_draw(&statusbars, true);
#endif
gui_syncsplash(HZ, str(LANG_END_PLAYLIST_RECORDER));
gui_syncsplash(HZ, str(LANG_END_PLAYLIST));
return true;
}
else
@ -440,17 +440,10 @@ void display_keylock_text(bool locked)
FOR_NB_SCREENS(i)
gui_wps[i].display->stop_scroll();
#ifdef HAVE_LCD_CHARCELLS
if(locked)
s = str(LANG_KEYLOCK_ON_PLAYER);
s = str(LANG_KEYLOCK_ON);
else
s = str(LANG_KEYLOCK_OFF_PLAYER);
#else
if(locked)
s = str(LANG_KEYLOCK_ON_RECORDER);
else
s = str(LANG_KEYLOCK_OFF_RECORDER);
#endif
s = str(LANG_KEYLOCK_OFF);
gui_syncsplash(HZ, s);
}

View File

@ -409,7 +409,7 @@ bool option_screen(struct settings_list *setting,
}
}
if (show_cancel)
gui_syncsplash(HZ/2, str(LANG_MENU_SETTING_CANCEL));
gui_syncsplash(HZ/2, str(LANG_CANCEL));
done = true;
}
else if (action == ACTION_STD_OK)

View File

@ -74,8 +74,10 @@ static void gui_yesno_draw(struct gui_yesno * yn)
{
if(nb_lines+line_shift+3<=display->nb_lines)
nb_lines++;
display->puts(0, nb_lines+line_shift, str(LANG_CONFIRM_WITH_PLAY_RECORDER));
display->puts(0, nb_lines+line_shift+1, str(LANG_CANCEL_WITH_ANY_RECORDER));
display->puts(0, nb_lines+line_shift, str(LANG_CONFIRM_WITH_BUTTON));
#ifdef HAVE_LCD_BITMAP
display->puts(0, nb_lines+line_shift+1, str(LANG_CANCEL_WITH_ANY));
#endif
}
gui_textarea_update(display);
}

File diff suppressed because it is too large Load Diff

View File

@ -45,14 +45,15 @@ int lang_load(const char *filename)
int fsize;
int fd = open(filename, O_RDONLY);
int retcode=0;
unsigned char lang_header[2];
unsigned char lang_header[3];
if(fd == -1)
return 1;
fsize = filesize(fd) - 2;
if(fsize <= MAX_LANGUAGE_SIZE) {
read(fd, lang_header, 2);
read(fd, lang_header, 3);
if((lang_header[0] == LANGUAGE_COOKIE) &&
(lang_header[1] == LANGUAGE_VERSION)) {
(lang_header[1] == LANGUAGE_VERSION) &&
(lang_header[2] == TARGET_ID)) {
read(fd, language_buffer, MAX_LANGUAGE_SIZE);
unsigned char *ptr = language_buffer;
int id;

View File

@ -22,7 +22,7 @@
/* both these must match the two initial bytes in the binary lang file */
#define LANGUAGE_COOKIE 0x1a
#define LANGUAGE_VERSION 0x03
#define LANGUAGE_VERSION 0x04
/* Initialize language array with the builtin strings */
void lang_init(void);

View File

@ -151,7 +151,7 @@ static int init_dircache(bool preinit)
{
/* This will be in default language, settings are not
applied yet. Not really any easy way to fix that. */
gui_syncsplash(0, str(LANG_DIRCACHE_BUILDING));
gui_syncsplash(0, str(LANG_SCANNING_DISK));
clear = true;
}
@ -169,7 +169,7 @@ static int init_dircache(bool preinit)
{
if (global_status.dircache_size <= 0)
{
gui_syncsplash(0, str(LANG_DIRCACHE_BUILDING));
gui_syncsplash(0, str(LANG_SCANNING_DISK));
clear = true;
}
result = dircache_build(global_status.dircache_size);

View File

@ -281,8 +281,8 @@ static int draw_eq_slider(struct screen * screen, int x, int y,
#if NB_SCREENS > 1
if (screen->screen_type == SCREEN_REMOTE) {
if (mode == GAIN) {
screen->putsxy(current_x, y + 2, str(LANG_EQUALIZER_BAND_GAIN));
screen->getstringsize(str(LANG_EQUALIZER_BAND_GAIN), &w, &h);
screen->putsxy(current_x, y + 2, str(LANG_GAIN));
screen->getstringsize(str(LANG_GAIN), &w, &h);
} else if (mode == CUTOFF) {
screen->putsxy(current_x, y + 2, str(LANG_EQUALIZER_BAND_CUTOFF));
screen->getstringsize(str(LANG_EQUALIZER_BAND_CUTOFF), &w, &h);
@ -454,7 +454,7 @@ bool eq_menu_graphical(void)
voice_unit = UNIT_DB;
snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE),
str(LANG_SYSFONT_EQUALIZER_BAND_GAIN));
str(LANG_SYSFONT_GAIN));
screens[SCREEN_MAIN].putsxy(2, y, buf);
} else if (mode == CUTOFF) {
@ -596,7 +596,7 @@ static bool eq_save_preset(void)
break;
}
else {
gui_syncsplash(HZ, str(LANG_MENU_SETTING_CANCEL));
gui_syncsplash(HZ, str(LANG_CANCEL));
return false;
}
}

View File

@ -67,12 +67,12 @@ int browse_folder(void *param)
static int reset_settings(void)
{
unsigned char *lines[]={str(LANG_RESET_ASK_RECORDER)};
unsigned char *lines[]={str(LANG_RESET_ASK)};
unsigned char *yes_lines[]={
str(LANG_RESET_DONE_SETTING),
str(LANG_SETTINGS),
str(LANG_RESET_DONE_CLEAR)
};
unsigned char *no_lines[]={yes_lines[0], str(LANG_RESET_DONE_CANCEL)};
unsigned char *no_lines[]={yes_lines[0], str(LANG_CANCEL)};
struct text_message message={(char **)lines, 1};
struct text_message yes_message={(char **)yes_lines, 2};
struct text_message no_message={(char **)no_lines, 2};
@ -186,9 +186,11 @@ static bool show_info(void)
talk_value(battery_level(), UNIT_PERCENT, true);
#if CONFIG_CHARGING >= CHARGING_MONITOR
if (charge_state == CHARGING)
talk_id(LANG_BATTERY_CHARGE, true);
talk_id(LANG_BATTERY_CHARGE, true);
#if CONFIG_CHARGING == CHARGING_CONTROL
else if (charge_state == TOPOFF)
talk_id(LANG_BATTERY_TOPOFF_CHARGE, true);
#endif
else if (charge_state == TRICKLE)
talk_id(LANG_BATTERY_TRICKLE_CHARGE, true);
#endif
@ -252,13 +254,9 @@ static bool show_info(void)
int integer = buflen / 1000;
int decimal = buflen % 1000;
#ifdef HAVE_LCD_CHARCELLS
snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT_PLAYER),
snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT),
integer, decimal);
#else
snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT_RECORDER),
integer, decimal);
#endif
FOR_NB_SCREENS(i)
screens[i].puts_scroll(0, y, (unsigned char *)s);
y++;
@ -341,7 +339,7 @@ static bool show_info(void)
#ifndef SIMULATOR
case ACTION_STD_OK:
gui_syncsplash(0, str(LANG_DIRCACHE_BUILDING));
gui_syncsplash(0, str(LANG_SCANNING_DISK));
fat_recalc_free(IF_MV(0));
#ifdef HAVE_MULTIVOLUME
if (fat_ismounted(1))
@ -359,7 +357,7 @@ static bool show_info(void)
}
return false;
}
MENUITEM_FUNCTION(show_info_item, 0, ID2P(LANG_INFO_MENU),
MENUITEM_FUNCTION(show_info_item, 0, ID2P(LANG_ROCKBOX_INFO),
(menu_function)show_info, NULL, NULL, Icon_NOICON);
@ -406,7 +404,7 @@ MENUITEM_FUNCTION(simulate_usb_item, 0, ID2P(LANG_USB),
(menu_function)simulate_usb, NULL, NULL, Icon_NOICON);
#endif
MAKE_MENU(info_menu, ID2P(LANG_INFO), 0, Icon_Questionmark,
MAKE_MENU(info_menu, ID2P(LANG_SYSTEM), 0, Icon_Questionmark,
&show_info_item, &show_credits_item, &show_runtime_item,
&sleep_timer_call, &debug_menu_item
#ifdef SIMULATOR
@ -440,7 +438,7 @@ int mainmenu_callback(int action,const struct menu_item_ex *this_item)
#else
#define mainmenu_callback NULL
#endif
MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS_MENU), mainmenu_callback,
MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback,
Icon_Submenu_Entered,
&sound_settings,
&settings_menu_item, &manage_settings, &browse_themes,

View File

@ -167,7 +167,7 @@ MENUITEM_SETTING(cuesheet, &global_settings.cuesheet, cuesheet_callback);
MENUITEM_SETTING(unplug_mode, &global_settings.unplug_mode, NULL);
MENUITEM_SETTING(unplug_rw, &global_settings.unplug_rw, NULL);
MENUITEM_SETTING(unplug_autoresume, &global_settings.unplug_autoresume, NULL);
MAKE_MENU(unplug_menu, ID2P(LANG_UNPLUG), 0, Icon_NOICON,
MAKE_MENU(unplug_menu, ID2P(LANG_HEADPHONE_UNPLUG), 0, Icon_NOICON,
&unplug_mode, &unplug_rw, &unplug_autoresume);
#endif

View File

@ -75,10 +75,10 @@ MENUITEM_FUNCTION(catalog, 0, ID2P(LANG_CATALOG),
MENUITEM_SETTING(recursive_dir_insert, &global_settings.recursive_dir_insert, NULL);
MENUITEM_SETTING(warn_on_erase, &global_settings.warnon_erase_dynplaylist, NULL);
MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLIST_MENU), NULL,
MAKE_MENU(playlist_settings, ID2P(LANG_PLAYLISTS), NULL,
Icon_Playlist,
&recursive_dir_insert, &warn_on_erase);
MAKE_MENU(playlist_options, ID2P(LANG_PLAYLIST_MENU), NULL,
MAKE_MENU(playlist_options, ID2P(LANG_PLAYLISTS), NULL,
Icon_Playlist,
&create_playlist_item, &view_playlist, &save_playlist, &catalog);

View File

@ -76,7 +76,7 @@ static int recsource_func(void)
HAVE_MIC_REC_([AUDIO_SRC_MIC]
= { STR(LANG_RECORDING_SRC_MIC) },)
HAVE_LINE_REC_([AUDIO_SRC_LINEIN]
= { STR(LANG_RECORDING_SRC_LINE) },)
= { STR(LANG_LINE_IN) },)
HAVE_SPDIF_REC_([AUDIO_SRC_SPDIF]
= { STR(LANG_RECORDING_SRC_DIGITAL) },)
HAVE_FMRADIO_REC_([AUDIO_SRC_FMRADIO]
@ -217,7 +217,7 @@ static int recchannels_func(void)
[CHN_MODE_MONO] = { STR(LANG_CHANNEL_MONO) }
};
#if CONFIG_CODEC == MAS3587F
return set_option(str(LANG_RECORDING_CHANNELS),
return set_option(str(LANG_CHANNELS),
&global_settings.rec_channels, INT,
names, CHN_NUM_MODES, NULL );
#endif /* CONFIG_CODEC == MAS3587F */
@ -245,7 +245,7 @@ static int recchannels_func(void)
make_options_from_indexes(names, table, n_opts, opts);
ret = set_option(str(LANG_RECORDING_CHANNELS), &rec_channels,
ret = set_option(str(LANG_CHANNELS), &rec_channels,
INT, opts, n_opts, NULL );
if (!ret)
@ -254,7 +254,7 @@ static int recchannels_func(void)
return ret;
#endif /* CONFIG_CODEC == SWCODEC */
}
MENUITEM_FUNCTION(recchannels, 0, ID2P(LANG_RECORDING_CHANNELS),
MENUITEM_FUNCTION(recchannels, 0, ID2P(LANG_CHANNELS),
recchannels_func, NULL, NULL, Icon_Menu_setting);
#if CONFIG_CODEC == SWCODEC
@ -438,7 +438,7 @@ bool rectrigger(void)
static const unsigned char *trigger_modes[] = {
ID2P(LANG_OFF),
ID2P(LANG_RECORD_TRIG_NOREARM),
ID2P(LANG_RECORD_TRIG_REARM)
ID2P(LANG_REPEAT)
};
#define PRERECORD_TIMES_COUNT 31
@ -452,18 +452,18 @@ bool rectrigger(void)
#define TRIGGER_TYPE_COUNT 3
static const unsigned char *trigger_types[] = {
ID2P(LANG_RECORD_TRIGGER_STOP),
ID2P(LANG_RECORD_TRIGGER_PAUSE),
ID2P(LANG_PAUSE),
ID2P(LANG_RECORD_TRIGGER_NEWFILESTP),
};
static const unsigned char *option_name[] = {
[TRIGGER_MODE] = ID2P(LANG_RECORD_TRIGGER_MODE),
[TRIGGER_MODE] = ID2P(LANG_RECORD_TRIGGER),
[TRIGGER_TYPE] = ID2P(LANG_RECORD_TRIGGER_TYPE),
[PRERECORD_TIME] = ID2P(LANG_RECORD_PRERECORD_TIME),
[START_THRESHOLD] = ID2P(LANG_RECORD_START_THRESHOLD),
[START_DURATION] = ID2P(LANG_RECORD_MIN_DURATION),
[START_DURATION] = ID2P(LANG_MIN_DURATION),
[STOP_THRESHOLD] = ID2P(LANG_RECORD_STOP_THRESHOLD),
[STOP_POSTREC] = ID2P(LANG_RECORD_STOP_POSTREC),
[STOP_POSTREC] = ID2P(LANG_MIN_DURATION),
[STOP_GAP] = ID2P(LANG_RECORD_STOP_GAP)
};
@ -637,7 +637,7 @@ bool rectrigger(void)
switch (button) {
case ACTION_STD_CANCEL:
gui_syncsplash(50, str(LANG_MENU_SETTING_CANCEL));
gui_syncsplash(50, str(LANG_CANCEL));
global_settings.rec_start_thres = old_start_thres;
global_settings.rec_start_duration = old_start_duration;
global_settings.rec_prerecord_time = old_prerecord_time;

View File

@ -228,7 +228,7 @@ static int timedate_set(void)
tm.tm_year = YEAR-1900;
}
result = (int)set_time_screen(str(LANG_TIME), &tm);
result = (int)set_time_screen(str(LANG_SET_TIME), &tm);
if(tm.tm_year != -1) {
set_time(&tm);
@ -236,7 +236,7 @@ static int timedate_set(void)
return result;
}
MENUITEM_FUNCTION(time_set, 0, ID2P(LANG_TIME),
MENUITEM_FUNCTION(time_set, 0, ID2P(LANG_SET_TIME),
timedate_set, NULL, NULL, Icon_NOICON);
MENUITEM_SETTING(timeformat, &global_settings.timeformat, NULL);
MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), 0, Icon_NOICON, &time_set, &timeformat);

View File

@ -295,7 +295,7 @@ MENUITEM_FUNCTION(playlist_save_item, 0, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST),
save_playlist, NULL, NULL, Icon_Playlist);
MENUITEM_FUNCTION(reshuffle_item, 0, ID2P(LANG_SHUFFLE_PLAYLIST),
shuffle_playlist, NULL, NULL, Icon_Playlist);
MAKE_ONPLAYMENU( wps_playlist_menu, ID2P(LANG_PLAYLIST_MENU),
MAKE_ONPLAYMENU( wps_playlist_menu, ID2P(LANG_PLAYLIST),
NULL, Icon_Playlist,
&playlist_viewer_item, &search_playlist_item,
&playlist_save_item, &reshuffle_item
@ -373,7 +373,7 @@ MENUITEM_FUNCTION(view_playlist_item, 0, ID2P(LANG_VIEW),
view_playlist, NULL,
treeplaylist_callback, Icon_Playlist);
MAKE_ONPLAYMENU( tree_playlist_menu, ID2P(LANG_PLAYLIST_MENU),
MAKE_ONPLAYMENU( tree_playlist_menu, ID2P(LANG_PLAYLIST),
treeplaylist_callback, Icon_Playlist,
/* view */
@ -502,7 +502,7 @@ static int remove_dir(char* dirname, int len)
#endif
if(ACTION_STD_CANCEL == get_action(CONTEXT_STD,TIMEOUT_NOBLOCK))
{
gui_syncsplash(HZ, str(LANG_MENU_SETTING_CANCEL));
gui_syncsplash(HZ, str(LANG_CANCEL));
result = -1;
break;
}
@ -1032,6 +1032,7 @@ MENUITEM_FUNCTION(view_cue_item, 0, ID2P(LANG_BROWSE_CUESHEET),
/* CONTEXT_WPS items */
MENUITEM_FUNCTION(browse_id3_item, 0, ID2P(LANG_MENU_SHOW_ID3_INFO),
browse_id3, NULL, NULL, Icon_NOICON);
/* NOTE: the LANG_MENU_SET_RATING string has been removed from english.lang */
#ifdef HAVE_PITCHSCREEN
MENUITEM_FUNCTION(pitch_screen_item, 0, ID2P(LANG_PITCH),
pitch_screen, NULL, NULL, Icon_Audio);

View File

@ -484,7 +484,7 @@ static int add_indices_to_playlist(struct playlist_info* playlist,
lcd_setmargins(0, 0);
#endif
gui_syncsplash(0, str(LANG_PLAYLIST_LOAD));
gui_syncsplash(0, str(LANG_WAIT));
if (!buffer)
{
@ -1668,13 +1668,7 @@ static void display_playlist_count(int count, const unsigned char *fmt)
lcd_setmargins(0, 0);
#endif
gui_syncsplash(0, fmt, count,
#if CONFIG_KEYPAD == PLAYER_PAD
str(LANG_STOP_ABORT)
#else
str(LANG_OFF_ABORT)
#endif
);
gui_syncsplash(0, fmt, count, str(LANG_OFF_ABORT));
}
/*
@ -1997,12 +1991,7 @@ int playlist_resume(void)
{
gui_syncsplash(0, str(LANG_LOADING_PERCENT),
(total_read+count)*100/control_file_size,
#if CONFIG_KEYPAD == PLAYER_PAD
str(LANG_STOP_ABORT)
#else
str(LANG_OFF_ABORT)
#endif
);
str(LANG_OFF_ABORT));
if (action_userabort(TIMEOUT_NOBLOCK))
{
/* FIXME:

View File

@ -320,12 +320,7 @@ static int display_playlists(char* playlist, bool view)
static void display_insert_count(int count)
{
gui_syncsplash(0, str(LANG_PLAYLIST_INSERT_COUNT), count,
#if CONFIG_KEYPAD == PLAYER_PAD
str(LANG_STOP_ABORT)
#else
str(LANG_OFF_ABORT)
#endif
);
str(LANG_OFF_ABORT));
}
/* Add specified track into playlist. Callback from directory insert */

View File

@ -430,7 +430,7 @@ static int onplay_menu(int index)
int result, ret = 0;
struct playlist_entry * current_track=
playlist_buffer_get_track(&viewer.buffer, index);
MENUITEM_STRINGLIST(menu_items, ID2P(LANG_PLAYLIST_MENU), NULL,
MENUITEM_STRINGLIST(menu_items, ID2P(LANG_PLAYLIST), NULL,
ID2P(LANG_REMOVE), ID2P(LANG_MOVE),
ID2P(LANG_CATALOG_ADD_TO), ID2P(LANG_CATALOG_ADD_TO_NEW));
bool current = (current_track->index == viewer.current_playing_track);
@ -569,7 +569,7 @@ bool playlist_viewer_ex(char* filename)
&playlist_callback_icons:NULL);
gui_synclist_set_nb_items(&playlist_lists, viewer.num_tracks);
gui_synclist_select_item(&playlist_lists, viewer.selected_track);
gui_synclist_set_title(&playlist_lists, str(LANG_PLAYLIST_MENU), Icon_Playlist);
gui_synclist_set_title(&playlist_lists, str(LANG_PLAYLIST), Icon_Playlist);
gui_synclist_draw(&playlist_lists);
while (!exit)
{
@ -577,7 +577,7 @@ bool playlist_viewer_ex(char* filename)
if (global_status.resume_index == -1)
{
/* Play has stopped */
gui_syncsplash(HZ, str(LANG_END_PLAYLIST_RECORDER));
gui_syncsplash(HZ, str(LANG_END_PLAYLIST));
goto exit;
}
@ -635,8 +635,8 @@ bool playlist_viewer_ex(char* filename)
ret_val = playlist_move(viewer.playlist, viewer.move_track,
current_track->index);
if (ret_val < 0)
gui_syncsplash(HZ, str(LANG_MOVE_FAILED));
gui_syncsplash(HZ, (unsigned char *)"%s %s",
str(LANG_MOVE), str(LANG_FAILED));
update_playlist(true);
viewer.move_track = -1;
}
@ -749,12 +749,7 @@ bool search_playlist(void)
for (i=0;(i<playlist_count)&&(found_indicies_count<MAX_PLAYLIST_ENTRIES);i++)
{
gui_syncsplash(0, str(LANG_PLAYLIST_SEARCH_MSG),found_indicies_count,
#if CONFIG_KEYPAD == PLAYER_PAD
str(LANG_STOP_ABORT)
#else
str(LANG_OFF_ABORT)
#endif
);
str(LANG_OFF_ABORT));
if (action_userabort(TIMEOUT_NOBLOCK))
{
if (!found_indicies_count)

View File

@ -496,7 +496,7 @@ int radio_screen(void)
#ifdef HAS_BUTTONBAR
gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU),
str(LANG_FM_BUTTONBAR_PRESETS), str(LANG_FM_BUTTONBAR_RECORD));
str(LANG_PRESET), str(LANG_FM_BUTTONBAR_RECORD));
#endif
#ifndef HAVE_NOISY_IDLE_MODE
@ -680,7 +680,7 @@ int radio_screen(void)
}
#ifdef HAS_BUTTONBAR
gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU),
str(LANG_FM_BUTTONBAR_PRESETS),
str(LANG_PRESET),
str(LANG_FM_BUTTONBAR_RECORD));
#endif
update_screen = true;
@ -713,7 +713,7 @@ int radio_screen(void)
#ifdef HAS_BUTTONBAR
gui_buttonbar_set(&buttonbar,
str(LANG_BUTTONBAR_MENU),
str(LANG_FM_BUTTONBAR_PRESETS),
str(LANG_PRESET),
str(LANG_FM_BUTTONBAR_RECORD));
#endif
update_screen = true;
@ -858,8 +858,8 @@ int radio_screen(void)
FOR_NB_SCREENS(i)
screens[i].puts_scroll(0, top_of_screen + 2, buf);
snprintf(buf, 128, "%s %s", str(LANG_FM_TUNE_MODE),
radio_mode ? str(LANG_RADIO_PRESET_MODE) :
snprintf(buf, 128, "%s %s", str(LANG_MODE),
radio_mode ? str(LANG_PRESET) :
str(LANG_RADIO_SCAN_MODE));
FOR_NB_SCREENS(i)
screens[i].puts_scroll(0, top_of_screen + 3, buf);
@ -1223,7 +1223,7 @@ int radio_preset_callback(int action, const struct menu_item_ex *this_item)
return action;
(void)this_item;
}
MAKE_MENU(handle_radio_preset_menu, ID2P(LANG_FM_BUTTONBAR_PRESETS),
MAKE_MENU(handle_radio_preset_menu, ID2P(LANG_PRESET),
radio_preset_callback, Icon_NOICON, &radio_edit_preset_item,
&radio_delete_preset_item);
/* present a list of preset stations */
@ -1255,7 +1255,7 @@ static int handle_radio_presets(void)
gui_buttonbar_draw(&buttonbar);
#endif
gui_synclist_init(&lists, presets_get_name, NULL, false, 1);
gui_synclist_set_title(&lists, str(LANG_FM_BUTTONBAR_PRESETS), NOICON);
gui_synclist_set_title(&lists, str(LANG_PRESET), NOICON);
gui_synclist_set_icon_callback(&lists, NULL);
gui_synclist_set_nb_items(&lists, num_presets);
gui_synclist_select_item(&lists, curr_preset<0 ? 0 : curr_preset);
@ -1318,8 +1318,8 @@ char* get_mode_text(int selected_item, void * data, char *buffer)
{
(void)selected_item;
(void)data;
snprintf(buffer, MAX_PATH, "%s %s", str(LANG_FM_TUNE_MODE),
radio_mode ? str(LANG_RADIO_PRESET_MODE) :
snprintf(buffer, MAX_PATH, "%s %s", str(LANG_MODE),
radio_mode ? str(LANG_PRESET) :
str(LANG_RADIO_SCAN_MODE));
return buffer;
}
@ -1455,7 +1455,7 @@ static int fm_recording_settings(void)
#endif /* HAVE_RECORDING */
#ifdef FM_RECORDING_SCREEN
MENUITEM_FUNCTION(recscreen_item, 0, ID2P(LANG_RECORDING_MENU),
MENUITEM_FUNCTION(recscreen_item, 0, ID2P(LANG_RECORDING),
fm_recording_screen, NULL, NULL, Icon_Recording);
#endif
#ifdef FM_RECORDING_SETTINGS
@ -1463,7 +1463,7 @@ MENUITEM_FUNCTION(recsettings_item, 0, ID2P(LANG_RECORDING_SETTINGS),
fm_recording_settings, NULL, NULL, Icon_Recording);
#endif
#ifndef FM_PRESET
MENUITEM_FUNCTION(radio_presets_item, 0, ID2P(LANG_FM_BUTTONBAR_PRESETS),
MENUITEM_FUNCTION(radio_presets_item, 0, ID2P(LANG_PRESET),
handle_radio_presets, NULL, NULL, Icon_NOICON);
#endif
#ifndef FM_PRESET_ADD

View File

@ -1529,7 +1529,7 @@ bool recording_screen(bool no_source)
if(global_settings.rec_source == AUDIO_SRC_MIC)
{
/* Draw MIC recording gain */
snprintf(buf, sizeof(buf), "%s:%s", str(LANG_SYSFONT_RECORDING_GAIN),
snprintf(buf, sizeof(buf), "%s:%s", str(LANG_SYSFONT_GAIN),
fmt_gain(SOUND_MIC_GAIN,
global_settings.rec_mic_gain,
buf2, sizeof(buf2)));
@ -1921,12 +1921,12 @@ static bool f2_rec_screen(void)
FOR_NB_SCREENS(i)
{
screens[i].getstringsize(str(LANG_SYSFONT_RECORDING_CHANNELS), &w, &h);
screens[i].getstringsize(str(LANG_SYSFONT_CHANNELS), &w, &h);
screens[i].putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2,
str(LANG_SYSFONT_RECORDING_CHANNELS));
screens[i].getstringsize(str(LANG_SYSFONT_F2_MODE), &w, &h);
str(LANG_SYSFONT_CHANNELS));
screens[i].getstringsize(str(LANG_SYSFONT_MODE), &w, &h);
screens[i].putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h,
str(LANG_SYSFONT_F2_MODE));
str(LANG_SYSFONT_MODE));
screens[i].getstringsize(ptr, &w, &h);
screens[i].putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, ptr);
screens[i].mono_bitmap(bitmap_icons_7x8[Icon_FastForward],
@ -1999,7 +1999,7 @@ static bool f3_rec_screen(void)
char *src_str[] =
{
str(LANG_SYSFONT_RECORDING_SRC_MIC),
str(LANG_SYSFONT_RECORDING_SRC_LINE),
str(LANG_SYSFONT_LINE_IN),
str(LANG_SYSFONT_RECORDING_SRC_DIGITAL)
};
struct audio_recording_options rec_options;

View File

@ -315,14 +315,14 @@ char *get_wps_item_name(int selected_item, void * data, char *buffer)
MENUITEM_RETURNVALUE_DYNTEXT(wps_item, GO_TO_WPS, NULL, get_wps_item_name,
NULL, Icon_Playback_menu);
#ifdef HAVE_RECORDING
MENUITEM_RETURNVALUE(rec, ID2P(LANG_RECORDING_MENU), GO_TO_RECSCREEN,
MENUITEM_RETURNVALUE(rec, ID2P(LANG_RECORDING), GO_TO_RECSCREEN,
NULL, Icon_Recording);
#endif
#if CONFIG_TUNER
MENUITEM_RETURNVALUE(fm, ID2P(LANG_FM_RADIO), GO_TO_FM,
item_callback, Icon_Radio_screen);
#endif
MENUITEM_RETURNVALUE(menu_, ID2P(LANG_SETTINGS_MENU), GO_TO_MAINMENU,
MENUITEM_RETURNVALUE(menu_, ID2P(LANG_SETTINGS), GO_TO_MAINMENU,
NULL, Icon_Submenu_Entered);
MENUITEM_RETURNVALUE(bookmarks, ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS),
GO_TO_RECENTBMARKS, item_callback,

View File

@ -398,7 +398,7 @@ static void pitch_screen_draw(struct screen *display, int pitch, int pitch_mode)
if (display->nb_lines < 4) /* very small screen, just show the pitch value */
{
w = snprintf((char *)buf, sizeof(buf), "%s: %d.%d%%",str(LANG_SYSFONT_PITCH),
w = snprintf((char *)buf, sizeof(buf), "%s: %d.%d%%",str(LANG_PITCH),
pitch / 10, pitch % 10 );
display->putsxy((display->width-(w*display->char_width))/2,
display->nb_lines/2,buf);
@ -408,9 +408,9 @@ static void pitch_screen_draw(struct screen *display, int pitch, int pitch_mode)
/* UP: Pitch Up */
if (pitch_mode == PITCH_MODE_ABSOLUTE) {
ptr = str(LANG_SYSFONT_PITCH_UP);
ptr = str(LANG_PITCH_UP);
} else {
ptr = str(LANG_SYSFONT_PITCH_UP_SEMITONE);
ptr = str(LANG_PITCH_UP_SEMITONE);
}
display->getstringsize(ptr,&w,&h);
display->putsxy((display->width-w)/2, 0, ptr);
@ -419,9 +419,9 @@ static void pitch_screen_draw(struct screen *display, int pitch, int pitch_mode)
/* DOWN: Pitch Down */
if (pitch_mode == PITCH_MODE_ABSOLUTE) {
ptr = str(LANG_SYSFONT_PITCH_DOWN);
ptr = str(LANG_PITCH_DOWN);
} else {
ptr = str(LANG_SYSFONT_PITCH_DOWN_SEMITONE);
ptr = str(LANG_PITCH_DOWN_SEMITONE);
}
display->getstringsize(ptr,&w,&h);
display->putsxy((display->width-w)/2, display->height - h, ptr);
@ -443,7 +443,7 @@ static void pitch_screen_draw(struct screen *display, int pitch, int pitch_mode)
w+1, (display->height-h)/2, 7, 8);
/* "Pitch" */
snprintf((char *)buf, sizeof(buf), str(LANG_SYSFONT_PITCH));
snprintf((char *)buf, sizeof(buf), str(LANG_PITCH));
display->getstringsize(buf,&w,&h);
display->putsxy((display->width-w)/2, (display->height/2)-h, buf);
/* "XX.X%" */
@ -654,14 +654,14 @@ bool quick_screen_quick(int button_enter)
[1]={ STR(LANG_SYSFONT_ON) }
};
static const struct opt_items bottom_items[] = {
[SHOW_ALL]={ STR(LANG_SYSFONT_FILTER_ALL) },
[SHOW_ALL]={ STR(LANG_SYSFONT_ALL) },
[SHOW_SUPPORTED]={ STR(LANG_SYSFONT_FILTER_SUPPORTED) },
[SHOW_MUSIC]={ STR(LANG_SYSFONT_FILTER_MUSIC) },
[SHOW_PLAYLIST]={ STR(LANG_SYSFONT_FILTER_PLAYLIST) },
};
static const struct opt_items right_items[] = {
[REPEAT_OFF]={ STR(LANG_SYSFONT_OFF) },
[REPEAT_ALL]={ STR(LANG_SYSFONT_REPEAT_ALL) },
[REPEAT_ALL]={ STR(LANG_SYSFONT_ALL) },
[REPEAT_ONE]={ STR(LANG_SYSFONT_REPEAT_ONE) },
[REPEAT_SHUFFLE]={ STR(LANG_SYSFONT_SHUFFLE) },
#ifdef AB_REPEAT_ENABLE
@ -1014,7 +1014,7 @@ bool set_time_screen(const char* title, struct tm *tm)
/* print help text */
if (screens[s].nb_lines > 4)
screens[s].puts(0, 4, str(LANG_TIME_SET));
screens[s].puts(0, 4, str(LANG_TIME_SET_BUTTON));
if (screens[s].nb_lines > 5)
screens[s].puts(0, 5, str(LANG_TIME_REVERT));
screens[s].update();

View File

@ -536,11 +536,11 @@ int settings_save( void )
{
screens[i].clear_display();
#ifdef HAVE_LCD_CHARCELLS
screens[i].puts(0, 0, str(LANG_SETTINGS_SAVE_PLAYER));
screens[i].puts(0, 1, str(LANG_SETTINGS_BATTERY_PLAYER));
screens[i].puts(0, 0, str(LANG_SETTINGS_SAVE_FAILED));
screens[i].puts(0, 1, str(LANG_SETTINGS_PARTITION));
#else
screens[i].puts(4, 2, str(LANG_SETTINGS_SAVE_RECORDER));
screens[i].puts(2, 4, str(LANG_SETTINGS_BATTERY_RECORDER));
screens[i].puts(4, 2, str(LANG_SETTINGS_SAVE_FAILED));
screens[i].puts(2, 4, str(LANG_SETTINGS_PARTITION));
screens[i].update();
#endif
}
@ -575,7 +575,7 @@ bool settings_save_config(int options)
break;
}
else {
gui_syncsplash(HZ, str(LANG_MENU_SETTING_CANCEL));
gui_syncsplash(HZ, str(LANG_CANCEL));
return false;
}
}

View File

@ -387,8 +387,8 @@ const struct settings_list settings[] = {
OFFON_SETTING(0, superbass, LANG_SUPERBASS, false, "superbass", set_superbass),
#endif
CHOICE_SETTING(0,channel_config,LANG_CHANNEL,0,"channels",
"stereo,mono,custom,mono left,mono right,karaoke",
CHOICE_SETTING(0,channel_config,LANG_CHANNEL_CONFIGURATION,0,"channels",
"stereo,mono,custom,mono left,mono right,karaoke",
sound_set_channels,
6, ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO),
ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT),
@ -412,7 +412,7 @@ const struct settings_list settings[] = {
#else
4,
#endif
ID2P(LANG_OFF), ID2P(LANG_REPEAT_ALL), ID2P(LANG_REPEAT_ONE), ID2P(LANG_SHUFFLE)
ID2P(LANG_OFF), ID2P(LANG_ALL), ID2P(LANG_REPEAT_ONE), ID2P(LANG_SHUFFLE)
#ifdef AB_REPEAT_ENABLE
,ID2P(LANG_REPEAT_AB)
#endif
@ -440,9 +440,13 @@ const struct settings_list settings[] = {
#endif
#endif /* HAVE_BACKLIGHT */
#ifdef HAVE_LCD_BITMAP
#ifdef HAVE_LCD_INVERT
BOOL_SETTING(0, invert, LANG_INVERT, false ,"invert", off_on,
LANG_INVERT_LCD_INVERSE, LANG_INVERT_LCD_NORMAL, lcd_set_invert_display),
LANG_INVERT_LCD_INVERSE, LANG_NORMAL, lcd_set_invert_display),
#endif
#ifdef HAVE_LCD_FLIP
OFFON_SETTING(0,flip_display, LANG_FLIP_DISPLAY, false,"flip display", NULL),
#endif
/* display */
BOOL_SETTING(F_TEMPVAR, invert_cursor, LANG_INVERT_CURSOR, true ,"invert cursor", off_on,
LANG_INVERT_CURSOR_BAR, LANG_INVERT_CURSOR_POINTER, NULL),
@ -458,9 +462,11 @@ const struct settings_list settings[] = {
CHOICE_SETTING(0, battery_display, LANG_BATTERY_DISPLAY, 0,
"battery display", graphic_numeric, NULL, 2,
ID2P(LANG_DISPLAY_GRAPHIC), ID2P(LANG_DISPLAY_NUMERIC)),
#if CONFIG_RTC
CHOICE_SETTING(0, timeformat, LANG_TIMEFORMAT, 0,
"time format", "24hour,12hour", NULL, 2,
ID2P(LANG_24_HOUR_CLOCK), ID2P(LANG_12_HOUR_CLOCK)),
#endif
#endif /* HAVE_LCD_BITMAP */
OFFON_SETTING(0,show_icons, LANG_SHOW_ICONS ,true,"show icons", NULL),
/* system */
@ -515,7 +521,7 @@ const struct settings_list settings[] = {
"remote contrast", UNIT_INT, MIN_REMOTE_CONTRAST_SETTING,
MAX_REMOTE_CONTRAST_SETTING, 1, NULL, NULL, lcd_remote_set_contrast),
BOOL_SETTING(0, remote_invert, LANG_INVERT, false ,"remote invert", off_on,
LANG_INVERT_LCD_INVERSE, LANG_INVERT_LCD_NORMAL, lcd_remote_set_invert_display),
LANG_INVERT_LCD_INVERSE, LANG_NORMAL, lcd_remote_set_invert_display),
OFFON_SETTING(0,remote_flip_display, LANG_FLIP_DISPLAY,
false,"remote flip display", NULL),
INT_SETTING_W_CFGVALS(F_FLIPLIST, remote_backlight_timeout, LANG_BACKLIGHT, 6,
@ -640,8 +646,8 @@ const struct settings_list settings[] = {
#endif /* HAVE_FLASH_STORAGE */
/* browser */
CHOICE_SETTING(0, dirfilter, LANG_FILTER, SHOW_SUPPORTED, "show files",
"all,supported,music,playlists", NULL, 4, ID2P(LANG_FILTER_ALL),
ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC), ID2P(LANG_FILTER_PLAYLIST)),
"all,supported,music,playlists", NULL, 4, ID2P(LANG_ALL),
ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC), ID2P(LANG_PLAYLISTS)),
OFFON_SETTING(0,sort_case,LANG_SORT_CASE,false,"sort case",NULL),
OFFON_SETTING(0,browse_current,LANG_FOLLOW,false,"follow playlist",NULL),
OFFON_SETTING(0,playlist_viewer_icons,LANG_SHOW_ICONS,true,
@ -653,17 +659,17 @@ const struct settings_list settings[] = {
ID2P(LANG_DISPLAY_TRACK_NAME_ONLY), ID2P(LANG_DISPLAY_FULL_PATH)),
CHOICE_SETTING(0, recursive_dir_insert, LANG_RECURSE_DIRECTORY , RECURSE_OFF,
"recursive directory insert", off_on_ask, NULL , 3 ,
ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_RESUME_SETTING_ASK)),
ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_ASK)),
/* bookmarks */
CHOICE_SETTING(0, autocreatebookmark, LANG_BOOKMARK_SETTINGS_AUTOCREATE,
BOOKMARK_NO, "autocreate bookmarks",
"off,on,ask,recent only - on,recent only - ask", NULL, 5,
ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES),
ID2P(LANG_RESUME_SETTING_ASK), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES),
ID2P(LANG_ASK), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES),
ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK)),
CHOICE_SETTING(0, autoloadbookmark, LANG_BOOKMARK_SETTINGS_AUTOLOAD,
BOOKMARK_NO, "autoload bookmarks", off_on_ask, NULL, 3,
ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), ID2P(LANG_RESUME_SETTING_ASK)),
ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), ID2P(LANG_ASK)),
CHOICE_SETTING(0, usemrb, LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS,
BOOKMARK_NO, "use most-recent-bookmarks", "off,on,unique only", NULL, 3,
ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES),
@ -764,14 +770,14 @@ const struct settings_list settings[] = {
TALK_ID(512, UNIT_MB), TALK_ID(650, UNIT_MB), TALK_ID(700, UNIT_MB),
TALK_ID(1024, UNIT_MB), TALK_ID(1536, UNIT_MB), TALK_ID(1792, UNIT_MB)),
{F_T_INT|F_RECSETTING, &global_settings.rec_channels,
LANG_RECORDING_CHANNELS, INT(0),
LANG_CHANNELS, INT(0),
"rec channels","stereo,mono",UNUSED},
CHOICE_SETTING(F_RECSETTING, rec_split_type, LANG_SPLIT_TYPE, 0 ,
"rec split type", "Split, Stop", NULL, 2,
ID2P(LANG_START_NEW_FILE), ID2P(LANG_STOP_RECORDING)),
CHOICE_SETTING(F_RECSETTING, rec_split_method, LANG_SPLIT_MEASURE, 0 ,
"rec split method", "Time,Filesize", NULL, 2,
ID2P(LANG_REC_TIME), ID2P(LANG_REC_SIZE)),
ID2P(LANG_TIME), ID2P(LANG_REC_SIZE)),
{F_T_INT|F_RECSETTING, &global_settings.rec_source,
LANG_RECORDING_SOURCE, INT(0),
"rec source",
@ -790,13 +796,10 @@ const struct settings_list settings[] = {
CHOICE_SETTING(F_RECSETTING, cliplight, LANG_CLIP_LIGHT, 0 ,
"cliplight", "off,main,both,remote", NULL,
#ifdef HAVE_REMOTE_LCD
4,
4, ID2P(LANG_OFF), ID2P(LANG_MAIN_UNIT), ID2P(LANG_REMOTE_MAIN),
ID2P(LANG_REMOTE_UNIT)
#else
2,
#endif
ID2P(LANG_OFF), ID2P(LANG_MAIN_UNIT)
#ifdef HAVE_REMOTE_LCD
, ID2P(LANG_REMOTE_MAIN), ID2P(LANG_REMOTE_UNIT)
2, ID2P(LANG_OFF), ID2P(LANG_ON)
#endif
),
{F_T_INT|F_RECSETTING,&global_settings.cliplight,LANG_CLIP_LIGHT,INT(0),
@ -804,7 +807,7 @@ const struct settings_list settings[] = {
#endif
#ifdef DEFAULT_REC_MIC_GAIN
{F_T_INT|F_RECSETTING,&global_settings.rec_mic_gain,
LANG_RECORDING_GAIN,INT(DEFAULT_REC_MIC_GAIN),
LANG_GAIN,INT(DEFAULT_REC_MIC_GAIN),
"rec mic gain",NULL,UNUSED},
#endif /* DEFAULT_REC_MIC_GAIN */
#ifdef DEFAULT_REC_LEFT_GAIN
@ -855,16 +858,16 @@ const struct settings_list settings[] = {
LANG_RECORD_STOP_THRESHOLD,INT(-45),
"trigger stop threshold",NULL,UNUSED},
{F_T_INT|F_RECSETTING,&global_settings.rec_start_duration,
LANG_RECORD_MIN_DURATION,INT(0),
LANG_MIN_DURATION,INT(0),
"trigger start duration",trig_durations_conf,UNUSED},
{F_T_INT|F_RECSETTING,&global_settings.rec_stop_postrec,
LANG_RECORD_STOP_POSTREC,INT(2),
LANG_MIN_DURATION,INT(2),
"trigger stop postrec",trig_durations_conf,UNUSED},
{F_T_INT|F_RECSETTING,&global_settings.rec_stop_gap,
LANG_RECORD_STOP_GAP,INT(1),
"trigger min gap",trig_durations_conf,UNUSED},
{F_T_INT|F_RECSETTING,&global_settings.rec_trigger_mode,
LANG_RECORD_TRIGGER_MODE,INT(0),
LANG_RECORD_TRIGGER,INT(0),
"trigger mode","off,once,repeat",UNUSED},
#endif /* HAVE_RECORDING */
@ -961,19 +964,19 @@ const struct settings_list settings[] = {
UNIT_INT, EQ_Q_MIN, EQ_Q_MAX, EQ_Q_STEP,
eq_q_format, NULL, NULL),
/* -240..240 (or -24db to +24db) */
INT_SETTING(0, eq_band0_gain, LANG_EQUALIZER_BAND_GAIN, 0, "eq band 0 gain",
INT_SETTING(0, eq_band0_gain, LANG_GAIN, 0, "eq band 0 gain",
UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP,
eq_gain_format, NULL, NULL),
INT_SETTING(0, eq_band1_gain, LANG_EQUALIZER_BAND_GAIN, 0, "eq band 1 gain",
INT_SETTING(0, eq_band1_gain, LANG_GAIN, 0, "eq band 1 gain",
UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP,
eq_gain_format, NULL, NULL),
INT_SETTING(0, eq_band2_gain, LANG_EQUALIZER_BAND_GAIN, 0, "eq band 2 gain",
INT_SETTING(0, eq_band2_gain, LANG_GAIN, 0, "eq band 2 gain",
UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP,
eq_gain_format, NULL, NULL),
INT_SETTING(0, eq_band3_gain, LANG_EQUALIZER_BAND_GAIN, 0, "eq band 3 gain",
INT_SETTING(0, eq_band3_gain, LANG_GAIN, 0, "eq band 3 gain",
UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP,
eq_gain_format, NULL, NULL),
INT_SETTING(0, eq_band4_gain, LANG_EQUALIZER_BAND_GAIN, 0, "eq band 4 gain",
INT_SETTING(0, eq_band4_gain, LANG_GAIN, 0, "eq band 4 gain",
UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX, EQ_GAIN_STEP,
eq_gain_format, NULL, NULL),
@ -993,9 +996,10 @@ const struct settings_list settings[] = {
OFFON_SETTING(0,tagcache_autoupdate,
LANG_TAGCACHE_AUTOUPDATE,false,"tagcache_autoupdate",NULL),
#endif
#ifdef HAVE_LCD_BITMAP
CHOICE_SETTING(0, default_codepage, LANG_DEFAULT_CODEPAGE, 0,
"default codepage", /* The order must match with that in unicode.c */
"default codepage",
#ifdef HAVE_LCD_BITMAP
/* The order must match with that in unicode.c */
"iso8859-1,iso8859-7,iso8859-8,cp1251,iso8859-11,cp1256,"
"iso8859-9,iso8859-2,sjis,gb2312,ksx1001,big5,utf-8",
set_codepage, 13,
@ -1007,15 +1011,13 @@ const struct settings_list settings[] = {
ID2P(LANG_CODEPAGE_KOREAN), ID2P(LANG_CODEPAGE_TRADITIONAL),
ID2P(LANG_CODEPAGE_UTF8)),
#else /* !HAVE_LCD_BITMAP */
CHOICE_SETTING(0, default_codepage, LANG_DEFAULT_CODEPAGE, 0,
"default codepage", /* The order must match with that in unicode.c */
/* The order must match with that in unicode.c */
"iso8859-1,iso8859-7,cp1251,iso8859-9,iso8859-2,utf-8",
set_codepage, 6,
ID2P(LANG_CODEPAGE_LATIN1), ID2P(LANG_CODEPAGE_GREEK),
ID2P(LANG_CODEPAGE_CYRILLIC), ID2P(LANG_CODEPAGE_TURKISH),
ID2P(LANG_CODEPAGE_LATIN_EXTENDED), ID2P(LANG_CODEPAGE_UTF8)),
#endif
OFFON_SETTING(0,warnon_erase_dynplaylist,
LANG_WARN_ERASEDYNPLAYLIST_MENU,false,
"warn when erasing dynamic playlist",NULL),
@ -1025,7 +1027,7 @@ const struct settings_list settings[] = {
CHOICE_SETTING(0, backlight_on_button_hold,
LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, "backlight on button hold",
"normal,off,on", backlight_set_on_button_hold, 3,
ID2P(LANG_BACKLIGHT_ON_BUTTON_HOLD_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
#endif
#ifdef HAVE_LCD_SLEEP
@ -1047,7 +1049,7 @@ const struct settings_list settings[] = {
"eq hardware band 0 cutoff", "80Hz,105Hz,135Hz,175Hz", NULL, 4,
TALK_ID(80, UNIT_HERTZ), TALK_ID(105, UNIT_HERTZ),
TALK_ID(135, UNIT_HERTZ), TALK_ID(175, UNIT_HERTZ)),
INT_SETTING(0, eq_hw_band0_gain, LANG_EQUALIZER_BAND_GAIN, 0,
INT_SETTING(0, eq_hw_band0_gain, LANG_GAIN, 0,
"eq hardware band 0 gain", UNIT_DB, EQ_HW_GAIN_MIN,
EQ_HW_GAIN_MAX, EQ_HW_GAIN_STEP, eq_hw_gain_format, NULL, NULL),
@ -1059,7 +1061,7 @@ const struct settings_list settings[] = {
"eq hardware band 1 bandwidth", "narrow,wide", NULL, 2,
ID2P(LANG_EQUALIZER_HARDWARE_BANDWIDTH_NARROW),
ID2P(LANG_EQUALIZER_HARDWARE_BANDWIDTH_WIDE)),
INT_SETTING(0, eq_hw_band1_gain, LANG_EQUALIZER_BAND_GAIN, 0,
INT_SETTING(0, eq_hw_band1_gain, LANG_GAIN, 0,
"eq hardware band 1 gain", UNIT_DB, EQ_HW_GAIN_MIN,
EQ_HW_GAIN_MAX, EQ_HW_GAIN_STEP, eq_hw_gain_format, NULL, NULL),
@ -1071,7 +1073,7 @@ const struct settings_list settings[] = {
"eq hardware band 2 bandwidth", "narrow,wide", NULL, 2,
ID2P(LANG_EQUALIZER_HARDWARE_BANDWIDTH_NARROW),
ID2P(LANG_EQUALIZER_HARDWARE_BANDWIDTH_WIDE)),
INT_SETTING(0, eq_hw_band2_gain, LANG_EQUALIZER_BAND_GAIN, 0,
INT_SETTING(0, eq_hw_band2_gain, LANG_GAIN, 0,
"eq hardware band 2 gain", UNIT_DB, EQ_HW_GAIN_MIN,
EQ_HW_GAIN_MAX, EQ_HW_GAIN_STEP, eq_hw_gain_format, NULL, NULL),
@ -1083,7 +1085,7 @@ const struct settings_list settings[] = {
"eq hardware band 3 bandwidth", "narrow,wide", NULL, 2,
ID2P(LANG_EQUALIZER_HARDWARE_BANDWIDTH_NARROW),
ID2P(LANG_EQUALIZER_HARDWARE_BANDWIDTH_WIDE)),
INT_SETTING(0, eq_hw_band3_gain, LANG_EQUALIZER_BAND_GAIN, 0,
INT_SETTING(0, eq_hw_band3_gain, LANG_GAIN, 0,
"eq hardware band 3 gain", UNIT_DB, EQ_HW_GAIN_MIN,
EQ_HW_GAIN_MAX, EQ_HW_GAIN_STEP, eq_hw_gain_format, NULL, NULL),
@ -1091,7 +1093,7 @@ const struct settings_list settings[] = {
"eq hardware band 4 cutoff", "5.3kHz,6.9kHz,9kHz,11.7kHz", NULL, 4,
TALK_ID(5300, UNIT_HERTZ), TALK_ID(6900, UNIT_HERTZ),
TALK_ID(9000, UNIT_HERTZ), TALK_ID(11700, UNIT_HERTZ)),
INT_SETTING(0, eq_hw_band4_gain, LANG_EQUALIZER_BAND_GAIN, 0,
INT_SETTING(0, eq_hw_band4_gain, LANG_GAIN, 0,
"eq hardware band 4 gain", UNIT_DB, EQ_HW_GAIN_MIN,
EQ_HW_GAIN_MAX, EQ_HW_GAIN_STEP, eq_hw_gain_format, NULL, NULL),
#endif
@ -1100,7 +1102,7 @@ const struct settings_list settings[] = {
"hold_lr_for_scroll_in_list",NULL),
CHOICE_SETTING(0, show_path_in_browser, LANG_SHOW_PATH, SHOW_PATH_OFF,
"show path in browser", "off,current directory,full path", NULL, 3,
ID2P(LANG_OFF), ID2P(LANG_SHOW_PATH_CURRENT), ID2P(LANG_SHOW_PATH_FULL)),
ID2P(LANG_OFF), ID2P(LANG_SHOW_PATH_CURRENT), ID2P(LANG_DISPLAY_FULL_PATH)),
#ifdef HAVE_AGC
{F_T_INT,&global_settings.rec_agc_preset_mic,LANG_RECORD_AGC_PRESET,INT(1),
@ -1120,16 +1122,16 @@ const struct settings_list settings[] = {
CHOICE_SETTING(0, remote_backlight_on_button_hold,
LANG_BACKLIGHT_ON_BUTTON_HOLD, 0, "remote backlight on button hold",
"normal,off,on", remote_backlight_set_on_button_hold, 3,
ID2P(LANG_BACKLIGHT_ON_BUTTON_HOLD_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
ID2P(LANG_NORMAL), ID2P(LANG_OFF), ID2P(LANG_ON)),
#endif
#endif
#ifdef HAVE_HEADPHONE_DETECTION
CHOICE_SETTING(0, unplug_mode, LANG_UNPLUG, 0,
CHOICE_SETTING(0, unplug_mode, LANG_HEADPHONE_UNPLUG, 0,
"pause on headphone unplug", "off,pause,pause and resume", NULL, 3,
ID2P(LANG_OFF), ID2P(LANG_PAUSE), ID2P(LANG_UNPLUG_RESUME)),
INT_SETTING(0, unplug_rw, LANG_UNPLUG_RW, 0, "rewind duration on pause",
ID2P(LANG_OFF), ID2P(LANG_PAUSE), ID2P(LANG_HEADPHONE_UNPLUG_RESUME)),
INT_SETTING(0, unplug_rw, LANG_HEADPHONE_UNPLUG_RW, 0, "rewind duration on pause",
UNIT_SEC, 0, 15, 1, NULL, NULL,NULL) ,
OFFON_SETTING(0,unplug_autoresume,LANG_UNPLUG_DISABLE_AUTORESUME,false,
OFFON_SETTING(0,unplug_autoresume,LANG_HEADPHONE_UNPLUG_RESUME,false,
"disable autoresume if phones not present",NULL),
#endif
#if CONFIG_TUNER
@ -1192,7 +1194,7 @@ const struct settings_list settings[] = {
#endif
ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU),
ID2P(LANG_DIR_BROWSER), ID2P(LANG_TAGCACHE),
ID2P(LANG_RESUME_PLAYBACK), ID2P(LANG_SETTINGS_MENU),
ID2P(LANG_RESUME_PLAYBACK), ID2P(LANG_SETTINGS),
#ifdef HAVE_RECORDING
ID2P(LANG_RECORDING),
#endif

View File

@ -916,12 +916,7 @@ static bool show_search_progress(bool init, int count)
if (current_tick - last_tick > HZ/4)
{
gui_syncsplash(0, str(LANG_PLAYLIST_SEARCH_MSG), count,
#if CONFIG_KEYPAD == PLAYER_PAD
str(LANG_STOP_ABORT)
#else
str(LANG_OFF_ABORT)
#endif
);
str(LANG_OFF_ABORT));
if (action_userabort(TIMEOUT_NOBLOCK))
return false;
last_tick = current_tick;
@ -1604,7 +1599,7 @@ bool tagtree_insert_selection_playlist(int position, bool queue)
}
if (tc->filesindir <= 0)
gui_syncsplash(HZ, str(LANG_END_PLAYLIST_PLAYER));
gui_syncsplash(HZ, str(LANG_END_PLAYLIST));
else
{
logf("insert_all_playlist");

View File

@ -95,6 +95,7 @@ struct clip_entry /* one entry of the index table */
struct voicefile /* file format of our voice file */
{
int version; /* version of the voicefile */
int target_id; /* the rockbox target the file was made for */
int table; /* offset to index table, (=header size) */
int id1_max; /* number of "normal" clips contained in above index */
int id2_max; /* number of "voice only" clips contained in above index */
@ -197,6 +198,11 @@ static void load_voicefile(void)
{
p_voicefile = (struct voicefile*)audiobuf;
if (p_voicefile->target_id != TARGET_ID)
{
logf("Incompatible voice file (wrong target)");
goto load_err;
}
#if CONFIG_CODEC != SWCODEC
/* MASCODEC: now use audiobuf for voice then thumbnail */
p_thumbnail = audiobuf + file_size;

View File

@ -1330,10 +1330,10 @@ void tree_restore(void)
FOR_NB_SCREENS(i)
{
screens[i].putsxy((LCD_WIDTH/2) -
((strlen(str(LANG_DIRCACHE_BUILDING)) *
((strlen(str(LANG_SCANNING_DISK)) *
screens[i].char_width)/2),
LCD_HEIGHT-screens[i].char_height*3,
str(LANG_DIRCACHE_BUILDING));
str(LANG_SCANNING_DISK));
gui_textarea_update(&screens[i]);
}

View File

@ -37,6 +37,12 @@ while(1) {
shift @ARGV;
shift @ARGV;
}
elsif($ARGV[0] eq "-i") {
# The target id name as used in TARGET_ID in the root makefile
$target_id=$ARGV[1];
shift @ARGV;
shift @ARGV;
}
elsif($ARGV[0] eq "-o") {
$output=$ARGV[1];
shift @ARGV;
@ -158,8 +164,8 @@ sub buildlangs {
for(@files) {
my $output = $_;
$output =~ s/(.*)\.lang/$1.lng/;
print "$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -b=$outputlang/$output $dir/$_\n" if($verbose);
system ("$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -b=$outputlang/$output $dir/$_ >/dev/null 2>&1");
print "$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -i=$target_id -b=$outputlang/$output $dir/$_\n" if($verbose);
system ("$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -i=$target_id -b=$outputlang/$output $dir/$_ >/dev/null 2>&1");
}
}

19
tools/configure vendored
View File

@ -1717,10 +1717,13 @@ clean:
\$(SILENT)rm -rf rockbox.zip TAGS @APPS@ firmware comsim sim lang.[ch]\
manual *.pdf *.a credits.raw @OUTPUT@ bitmaps pluginbitmaps \
@ARCHOSROM@ @FLASHFILE@ UI256.bmp rockbox-full.zip \
html txt rockbox-manual*.zip sysfont.h rockbox-info.txt
html txt rockbox-manual*.zip sysfont.h rockbox-info.txt \
voicefontids
voice: tools
\$(TOOLSDIR)/genvoice.sh \$(ROOTDIR) \$(LANGUAGE) \$(ARCHOS) voicesettings.sh
\$(SILENT)\$(MAKE) -C \$(APPSDIR) OBJDIR=\$(BUILDDIR)/@APPS@ features
\$(SILENT)for f in \`cat \$(BUILDDIR)/@APPS@/features\`; do feat="\$\$feat:\$\$f" ; done ; \\
\$(TOOLSDIR)/genvoice.sh \$(ROOTDIR) \$(LANGUAGE) \$(ARCHOS)\$\$feat \$(TARGET_ID) voicesettings.sh
tools:
\$(SILENT)\$(MAKE) -C \$(TOOLSDIR) CC=\$(HOSTCC) @TOOLSET@
@ -1736,20 +1739,24 @@ fontzip:
\$(SILENT)\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\" -r "\$(ROOTDIR)" -f 1 -o rockbox-fonts.zip \$(TARGET) \$(BINARY)
zip:
\$(SILENT)\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\" -r "\$(ROOTDIR)" \$(TARGET) \$(BINARY)
\$(SILENT)for f in \`cat \$(BUILDDIR)/@APPS@/features\`; do feat="\$\$feat:\$\$f" ; done ; \\
\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\$\$feat\" -i \"\$(TARGET_ID)\" -r "\$(ROOTDIR)" \$(TARGET) \$(BINARY)
mapzip:
\$(SILENT)find . -name "*.map" | xargs zip rockbox-maps.zip
fullzip:
\$(SILENT)\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\" -r "\$(ROOTDIR)" -f 2 -o rockbox-full.zip \$(TARGET) \$(BINARY)
\$(SILENT)for f in \`cat \$(BUILDDIR)/@APPS@/features\`; do feat="\$\$feat:\$\$f" ; done; \\
\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\$\$feat\" -i \"\$(TARGET_ID)\" -r "\$(ROOTDIR)" -f 2 -o rockbox-full.zip \$(TARGET) \$(BINARY)
7zip:
\$(SILENT)\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\" -o "rockbox.7z" -z "7za a" -r "\$(ROOTDIR)" \$(TARGET) \$(BINARY)
\$(SILENT)for f in \`cat \$(BUILDDIR)/@APPS@/features\`; do feat="\$\$feat:\$\$f" ; done; \\
\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\$\$feat\" -i \"\$(TARGET_ID)\" -o "rockbox.7z" -z "7za a" -r "\$(ROOTDIR)" \$(TARGET) \$(BINARY)
tar:
\$(SILENT)rm -f rockbox.tar
\$(SILENT)\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\" -o "rockbox.tar" -z "tar --no-recursion -uf" -r "\$(ROOTDIR)" \$(TARGET) \$(BINARY)
\$(SILENT)for f in \`cat \$(BUILDDIR)/@APPS@/features\`; do feat="\$\$feat:\$\$f" ; done; \\
\$(TOOLSDIR)/buildzip.pl \$(VERBOSEOPT) -t \"\$(ARCHOS)\$\$feat\" -i \"\$(TARGET_ID)\" -o "rockbox.tar" -z "tar --no-recursion -uf" -r "\$(ROOTDIR)" \$(TARGET) \$(BINARY)
bzip2: tar
\$(SILENT)bzip2 -f9 rockbox.tar

View File

@ -11,7 +11,7 @@
#
# binary version for the binary lang file
my $langversion = 3; # 3 was the latest one used in the v1 format
my $langversion = 4; # 3 was the latest one used in the v1 format
# A note for future users and readers: The original v1 language system allowed
# the build to create and use a different language than english built-in. We
@ -28,8 +28,8 @@ Usage: genlang [options] <langv2 file>
Make the tool create a [prefix].c and [prefix].h file.
-b=<outfile>
Make the tool create a binary language (.lng) file namaed [outfile].
The use of this option requires that you also use -e.
Make the tool create a binary language (.lng) file named [outfile].
The use of this option requires that you also use -e, -t and -i.
-u
Update language file. Given the translated file and the most recent english
@ -48,6 +48,9 @@ Usage: genlang [options] <langv2 file>
separated with colons. This will make genlang to use all the specified
strings when searching for a matching phrase.
-i=<target id>
The target id number, needed for -b.
-o
Voice mode output. Outputs all id: and voice: lines for the given target!
@ -88,11 +91,18 @@ if(!$check) {
print "Please use at least one of -p, -u, -o and -b\n";
exit;
}
if(($binary || $update || $voiceout) && !$english) {
print "Please use -e too when you use -b, -o or -u\n";
exit;
}
my $target_id = $i;
if($binary && !$target_id) {
print "Please specify a target id number (with -i)!\n";
exit;
}
my $target = $t;
if(!$target && !$update) {
print "Please specify a target (with -t)!\n";
@ -586,7 +596,7 @@ elsif($binary) {
open(OUTF, ">$binary") or die "Can't create $binary";
binmode OUTF;
printf OUTF ("\x1a%c", $langversion); # magic lang file header
printf OUTF ("\x1a%c%c", $langversion, $target_id); # magic lang file header
# loop over the target phrases
for $i (1 .. $idcount) {

View File

@ -34,13 +34,17 @@ TTS_ENGINE=festival
ENCODER=lame
# Where to save temporary files
TEMPDIR=/tmp
# List of IDs to send to voicefont
VOICEFONTIDS=voicefontids
###################
# End of settings #
###################
TARGET_ID="$4"
createvoicefile() {
$VOICEFONT "$LANG_FILE" "$TEMPDIR/" "./$RLANG.voice"
$GENLANG -e=$ENGLISH -o -t=$TARGET $LANG_FILE > $VOICEFONTIDS
$VOICEFONT "$VOICEFONTIDS" "$TARGET_ID" "$TEMPDIR/" "./$RLANG.voice"
}
deletefiles() {
@ -106,7 +110,7 @@ generateclips() {
}
if [ -z "$3" ]; then
echo "Usage: $0 rockboxdirectory language target [settingsfile]";
echo "Usage: $0 rockboxdirectory language target targetid [settingsfile]";
exit 32
else
if [ ! -d "$1" ] || [ ! -f "$1/tools/genlang" ]; then
@ -117,12 +121,12 @@ else
echo "Error: $2 is not a valid language"
exit 34
fi
if [ ! -z "$4" ]; then
if [ -f "$4" ]; then
if [ ! -z "$5" ]; then
if [ -f "$5" ]; then
# Read settings from file
source "$4"
source "$5"
else
echo "Error: $4 does not exist"
echo "Error: $5 does not exist"
exit 36
fi
fi

View File

@ -90,10 +90,10 @@ int main (int argc, char** argv)
if (argc < 2)
{
printf("Makes a Rockbox voicefont from a collection of mp3 clips.\n");
printf("Usage: voicefont <language file> <mp3 path> <output file>\n");
printf("Usage: voicefont <string id list file> <target id> <mp3 path> <output file>\n");
printf("\n");
printf("Example: \n");
printf("voicefont english.lang voice\\ voicefont.bin\n");
printf("voicefont voicefontids.txt 2 voice\\ voicefont.bin\n");
return -1;
}
@ -123,10 +123,10 @@ int main (int argc, char** argv)
}
fclose(pFile);
pFile = fopen(argv[3], "wb");
pFile = fopen(argv[4], "wb");
if (pFile == NULL)
{
printf("Error opening output file %s\n", argv[3]);
printf("Error opening output file %s\n", argv[4]);
return -2;
}
fseek(pFile, 16 + count*8, SEEK_SET); /* space for header */
@ -137,8 +137,8 @@ int main (int argc, char** argv)
count_voiceonly++;
pos[i] = ftell(pFile);
sprintf(mp3filename1, "%s%s.mp3", argv[2], names[i]);
sprintf(mp3filename2, "%s%s.wav.mp3", argv[2], names[i]);
sprintf(mp3filename1, "%s%s.mp3", argv[3], names[i]);
sprintf(mp3filename2, "%s%s.wav.mp3", argv[3], names[i]);
mp3filename = mp3filename1;
pMp3File = fopen(mp3filename, "rb");
if (pMp3File == NULL)
@ -168,18 +168,23 @@ int main (int argc, char** argv)
/* Create the file format: */
/* 1st 32 bit value in the file is the version number */
value = SWAP4(200); /* 2.00 */
value = SWAP4(300); /* 3.00 */
fwrite(&value, sizeof(value), 1, pFile);
/* 2nd 32 bit value in the file is the header size (= 1st table position) */
value = SWAP4(16); /* 16 bytes: for version, header size, number1, number2 */
/* 2nd 32 bit value in the file is the id number for the target
we made the voce file for */
value = SWAP4(atoi(argv[2]));
fwrite(&value, sizeof(value), 1, pFile);
/* 3rd 32 bit value in the file is the number of clips in 1st table */
/* 3rd 32 bit value in the file is the header size (= 1st table position) */
value = SWAP4(20); /* 20 bytes: for version, target id, header size, number1, number2 */
fwrite(&value, sizeof(value), 1, pFile);
/* 4th 32 bit value in the file is the number of clips in 1st table */
value = SWAP4(count-count_voiceonly);
fwrite(&value, sizeof(value), 1, pFile);
/* 4th bit value in the file is the number of clips in 2nd table */
/* 5th bit value in the file is the number of clips in 2nd table */
value = SWAP4(count_voiceonly);
fwrite(&value, sizeof(value), 1, pFile);