mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-02 14:04:27 +00:00
cleanup: refactor checking for _^_ to function SwitchLanguage()
This commit is contained in:
@@ -46,6 +46,7 @@
|
||||
#include "translateword.h"
|
||||
|
||||
static void CombineFlag(Translator *tr, WORD_TAB *wtab, char *word, int *flags, unsigned char *p, char *word_phonemes);
|
||||
static void SwitchLanguage(char *word, char *word_phonemes);
|
||||
|
||||
Translator *translator = NULL; // the main translator
|
||||
Translator *translator2 = NULL; // secondary translator for certain words
|
||||
@@ -391,28 +392,13 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
|
||||
p = (unsigned char *)word_phonemes;
|
||||
if (word_flags & FLAG_PHONEMES) {
|
||||
// The input is in phoneme mnemonics, not language text
|
||||
int c1;
|
||||
char lang_name[12];
|
||||
|
||||
if (memcmp(word, "_^_", 3) == 0) {
|
||||
// switch languages
|
||||
word += 3;
|
||||
for (ix = 0;;) {
|
||||
c1 = *word++;
|
||||
if ((c1 == ' ') || (c1 == 0))
|
||||
break;
|
||||
lang_name[ix++] = tolower(c1);
|
||||
}
|
||||
lang_name[ix] = 0;
|
||||
|
||||
if ((ix = LookupPhonemeTable(lang_name)) > 0) {
|
||||
SelectPhonemeTable(ix);
|
||||
word_phonemes[0] = phonSWITCH;
|
||||
word_phonemes[1] = ix;
|
||||
word_phonemes[2] = 0;
|
||||
}
|
||||
} else
|
||||
SwitchLanguage(word, word_phonemes);
|
||||
} else {
|
||||
EncodePhonemes(word, word_phonemes, &bad_phoneme);
|
||||
}
|
||||
|
||||
flags = FLAG_FOUND;
|
||||
} else {
|
||||
int c2;
|
||||
@@ -1711,7 +1697,6 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void CombineFlag(Translator *tr, WORD_TAB *wtab, char *word, int *flags, unsigned char *p, char *word_phonemes) {
|
||||
// combine a preposition with the following word
|
||||
|
||||
@@ -1775,6 +1760,29 @@ static void CombineFlag(Translator *tr, WORD_TAB *wtab, char *word, int *flags,
|
||||
}
|
||||
}
|
||||
|
||||
static void SwitchLanguage(char *word, char *word_phonemes) {
|
||||
char lang_name[12];
|
||||
int ix;
|
||||
int c1;
|
||||
|
||||
word += 3;
|
||||
|
||||
for (ix = 0;;) {
|
||||
c1 = *word++;
|
||||
if ((c1 == ' ') || (c1 == 0))
|
||||
break;
|
||||
lang_name[ix++] = tolower(c1);
|
||||
}
|
||||
lang_name[ix] = 0;
|
||||
|
||||
if ((ix = LookupPhonemeTable(lang_name)) > 0) {
|
||||
SelectPhonemeTable(ix);
|
||||
word_phonemes[0] = phonSWITCH;
|
||||
word_phonemes[1] = ix;
|
||||
word_phonemes[2] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void InitText(int control)
|
||||
{
|
||||
count_sentences = 0;
|
||||
|
||||
Reference in New Issue
Block a user