cleanup: refactor checking for _^_ to function SwitchLanguage()

This commit is contained in:
Juho Hiltunen
2022-10-23 12:14:59 +03:00
parent bdf8d0690b
commit 139eef57d2
+28 -20
View File
@@ -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;