forked from len0rd/rockbox
Voice UI searches for <mylanguage>.voice, no hard-coded "english.voice" any more. We can localize the voice now.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4471 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
4af9331ed2
commit
6e77d1fe39
3 changed files with 27 additions and 3 deletions
|
@ -587,6 +587,7 @@ void settings_apply(void)
|
|||
snprintf(buf, sizeof buf, ROCKBOX_DIR LANG_DIR "/%s.lng",
|
||||
global_settings.lang_file);
|
||||
lang_load(buf);
|
||||
talk_init(); /* use voice of same language */
|
||||
}
|
||||
|
||||
set_car_adapter_mode(global_settings.car_adapter_mode);
|
||||
|
@ -974,7 +975,10 @@ bool settings_load_config(char* file)
|
|||
}
|
||||
else if (!strcasecmp(name, "lang")) {
|
||||
if (!lang_load(value))
|
||||
{
|
||||
set_file(value, global_settings.lang_file, MAX_FILENAME);
|
||||
talk_init(); /* use voice of same language */
|
||||
}
|
||||
}
|
||||
else if (!strcasecmp(name, "bidir limit"))
|
||||
set_cfg_int(&global_settings.bidir_limit, value, 0, 200);
|
||||
|
|
25
apps/talk.c
25
apps/talk.c
|
@ -26,6 +26,7 @@
|
|||
#include "file.h"
|
||||
#include "buffer.h"
|
||||
#include "system.h"
|
||||
#include "settings.h"
|
||||
#include "mp3_playback.h"
|
||||
#include "mpeg.h"
|
||||
#include "lang.h"
|
||||
|
@ -36,7 +37,6 @@ extern void bitswap(unsigned char *data, int length); /* no header for this */
|
|||
/***************** Constants *****************/
|
||||
|
||||
#define QUEUE_SIZE 50
|
||||
const char* voicefont_file = "/.rockbox/langs/english.voice";
|
||||
const char* dir_thumbnail_name = ".dirname.mp3";
|
||||
|
||||
|
||||
|
@ -84,10 +84,29 @@ static int load_voicefont(void);
|
|||
static void mp3_callback(unsigned char** start, int* size);
|
||||
static int shutup(void);
|
||||
static int queue_clip(unsigned char* buf, int size, bool enqueue);
|
||||
static int open_voicefile(void);
|
||||
|
||||
|
||||
/***************** Private implementation *****************/
|
||||
|
||||
static int open_voicefile(void)
|
||||
{
|
||||
char buf[64];
|
||||
char* p_lang = "english"; /* default */
|
||||
|
||||
if ( global_settings.lang_file[0] &&
|
||||
global_settings.lang_file[0] != 0xff )
|
||||
{ /* try to open the voice file of the selected language */
|
||||
p_lang = global_settings.lang_file;
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), ROCKBOX_DIR LANG_DIR "/%s.voice", p_lang);
|
||||
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int load_voicefont(void)
|
||||
{
|
||||
int fd;
|
||||
|
@ -95,7 +114,7 @@ static int load_voicefont(void)
|
|||
|
||||
p_voicefont = NULL; /* indicate no voicefont if we fail below */
|
||||
|
||||
fd = open(voicefont_file, O_RDONLY);
|
||||
fd = open_voicefile();
|
||||
if (fd < 0) /* failed to open */
|
||||
{
|
||||
p_voicefont = NULL; /* indicate no voicefont */
|
||||
|
@ -253,7 +272,7 @@ void talk_init(void)
|
|||
{
|
||||
int fd;
|
||||
|
||||
fd = open(voicefont_file, O_RDONLY);
|
||||
fd = open_voicefile();
|
||||
if (fd >= 0) /* success */
|
||||
{
|
||||
close(fd);
|
||||
|
|
|
@ -1176,6 +1176,7 @@ static bool dirbrowse(char *root, int *dirfilter)
|
|||
if(!lang_load(buf)) {
|
||||
set_file(buf, global_settings.lang_file,
|
||||
MAX_FILENAME);
|
||||
talk_init(); /* use voice of same language */
|
||||
splash(HZ, true, str(LANG_LANGUAGE_LOADED));
|
||||
restore = true;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue