Browse Source

Test and fix Java to IANA language code mapping.

master
Reece H. Dunn 10 years ago
parent
commit
6576742917

+ 8
- 0
android/eSpeakTests/src/com/reecedunn/espeak/test/SpeechSynthesisTest.java View File

assertThat(synth.getBufferSizeInBytes(), is(22050)); assertThat(synth.getBufferSizeInBytes(), is(22050));
} }


public void testJavaToIanaLanguageCode()
{
for (VoiceData.Voice data : VoiceData.voices)
{
assertThat(SpeechSynthesis.getIanaLanguageCode(data.javaLanguage), is(data.ianaLanguage));
}
}

public void testAddedVoices() public void testAddedVoices()
{ {
getVoices(); // Ensure that the voice data has been populated. getVoices(); // Ensure that the voice data has been populated.

+ 11
- 12
android/src/com/reecedunn/espeak/SpeechSynthesis.java View File

final DisplayMetrics metrics = context.getResources().getDisplayMetrics(); final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
final Configuration config = context.getResources().getConfiguration(); final Configuration config = context.getResources().getConfiguration();


final String language = getIanaLocaleCode(locale.getLanguage(), mJavaToIanaLanguageCode);
final String language = getIanaLanguageCode(locale.getLanguage());
final String country = getIanaLocaleCode(locale.getCountry(), mJavaToIanaCountryCode); final String country = getIanaLocaleCode(locale.getCountry(), mJavaToIanaCountryCode);
config.locale = new Locale(language, country, locale.getVariant()); config.locale = new Locale(language, country, locale.getVariant());


void onSynthDataComplete(); void onSynthDataComplete();
} }


public static String getIanaLanguageCode(String code) {
return getIanaLocaleCode(code, mJavaToIanaLanguageCode);
}

private static String getIanaLocaleCode(String code, final Map<String, String> javaToIana) { private static String getIanaLocaleCode(String code, final Map<String, String> javaToIana) {
final String iana = javaToIana.get(code); final String iana = javaToIana.get(code);
if (iana != null) { if (iana != null) {
private static final Map<String, String> mJavaToIanaCountryCode = new HashMap<String, String>(); private static final Map<String, String> mJavaToIanaCountryCode = new HashMap<String, String>();
static { static {
mJavaToIanaLanguageCode.put("afr", "af"); mJavaToIanaLanguageCode.put("afr", "af");
mJavaToIanaLanguageCode.put("aka", "ak");
mJavaToIanaLanguageCode.put("amh", "am"); mJavaToIanaLanguageCode.put("amh", "am");
mJavaToIanaLanguageCode.put("arg", "an"); mJavaToIanaLanguageCode.put("arg", "an");
mJavaToIanaLanguageCode.put("asm", "as");
mJavaToIanaLanguageCode.put("aze", "az"); mJavaToIanaLanguageCode.put("aze", "az");
mJavaToIanaLanguageCode.put("bul", "bg"); mJavaToIanaLanguageCode.put("bul", "bg");
mJavaToIanaLanguageCode.put("ben", "bn");
mJavaToIanaLanguageCode.put("bos", "bs"); mJavaToIanaLanguageCode.put("bos", "bs");
mJavaToIanaLanguageCode.put("cat", "ca"); mJavaToIanaLanguageCode.put("cat", "ca");
mJavaToIanaLanguageCode.put("ces", "cs"); mJavaToIanaLanguageCode.put("ces", "cs");
mJavaToIanaLanguageCode.put("cym", "cy"); mJavaToIanaLanguageCode.put("cym", "cy");
mJavaToIanaLanguageCode.put("dan", "da"); mJavaToIanaLanguageCode.put("dan", "da");
mJavaToIanaLanguageCode.put("deu", "de"); mJavaToIanaLanguageCode.put("deu", "de");
mJavaToIanaLanguageCode.put("div", "dv");
mJavaToIanaLanguageCode.put("ell", "el"); mJavaToIanaLanguageCode.put("ell", "el");
mJavaToIanaLanguageCode.put("eng", "en"); mJavaToIanaLanguageCode.put("eng", "en");
mJavaToIanaLanguageCode.put("epo", "eo"); mJavaToIanaLanguageCode.put("epo", "eo");
mJavaToIanaLanguageCode.put("spa", "es"); mJavaToIanaLanguageCode.put("spa", "es");
mJavaToIanaLanguageCode.put("est", "et"); mJavaToIanaLanguageCode.put("est", "et");
mJavaToIanaLanguageCode.put("eus", "eu");
mJavaToIanaLanguageCode.put("fas", "fa"); mJavaToIanaLanguageCode.put("fas", "fa");
mJavaToIanaLanguageCode.put("fin", "fi"); mJavaToIanaLanguageCode.put("fin", "fi");
mJavaToIanaLanguageCode.put("fra", "fr"); mJavaToIanaLanguageCode.put("fra", "fr");
mJavaToIanaLanguageCode.put("gla", "gd");
mJavaToIanaLanguageCode.put("gle", "ga"); mJavaToIanaLanguageCode.put("gle", "ga");
mJavaToIanaLanguageCode.put("gla", "gd");
mJavaToIanaLanguageCode.put("guj", "gu");
mJavaToIanaLanguageCode.put("hin", "hi"); mJavaToIanaLanguageCode.put("hin", "hi");
mJavaToIanaLanguageCode.put("hrv", "hr"); mJavaToIanaLanguageCode.put("hrv", "hr");
mJavaToIanaLanguageCode.put("hat", "ht");
mJavaToIanaLanguageCode.put("hun", "hu"); mJavaToIanaLanguageCode.put("hun", "hu");
mJavaToIanaLanguageCode.put("hye", "hy"); mJavaToIanaLanguageCode.put("hye", "hy");
mJavaToIanaLanguageCode.put("ina", "ia"); mJavaToIanaLanguageCode.put("ina", "ia");
mJavaToIanaLanguageCode.put("isl", "is"); mJavaToIanaLanguageCode.put("isl", "is");
mJavaToIanaLanguageCode.put("ita", "it"); mJavaToIanaLanguageCode.put("ita", "it");
mJavaToIanaLanguageCode.put("kat", "ka"); mJavaToIanaLanguageCode.put("kat", "ka");
mJavaToIanaLanguageCode.put("kaz", "kk");
mJavaToIanaLanguageCode.put("kal", "kl"); mJavaToIanaLanguageCode.put("kal", "kl");
mJavaToIanaLanguageCode.put("kan", "kn"); mJavaToIanaLanguageCode.put("kan", "kn");
mJavaToIanaLanguageCode.put("kor", "ko"); mJavaToIanaLanguageCode.put("kor", "ko");
mJavaToIanaLanguageCode.put("lav", "lv"); mJavaToIanaLanguageCode.put("lav", "lv");
mJavaToIanaLanguageCode.put("mkd", "mk"); mJavaToIanaLanguageCode.put("mkd", "mk");
mJavaToIanaLanguageCode.put("mal", "ml"); mJavaToIanaLanguageCode.put("mal", "ml");
mJavaToIanaLanguageCode.put("mlt", "mt");
mJavaToIanaLanguageCode.put("msa", "ms");
mJavaToIanaLanguageCode.put("nep", "ne"); mJavaToIanaLanguageCode.put("nep", "ne");
mJavaToIanaLanguageCode.put("nld", "nl"); mJavaToIanaLanguageCode.put("nld", "nl");
mJavaToIanaLanguageCode.put("nor", "no"); mJavaToIanaLanguageCode.put("nor", "no");
mJavaToIanaLanguageCode.put("por", "pt"); mJavaToIanaLanguageCode.put("por", "pt");
mJavaToIanaLanguageCode.put("ron", "ro"); mJavaToIanaLanguageCode.put("ron", "ro");
mJavaToIanaLanguageCode.put("rus", "ru"); mJavaToIanaLanguageCode.put("rus", "ru");
mJavaToIanaLanguageCode.put("kin", "rw");
mJavaToIanaLanguageCode.put("sin", "si"); mJavaToIanaLanguageCode.put("sin", "si");
mJavaToIanaLanguageCode.put("slk", "sk"); mJavaToIanaLanguageCode.put("slk", "sk");
mJavaToIanaLanguageCode.put("slv", "sl"); mJavaToIanaLanguageCode.put("slv", "sl");
mJavaToIanaLanguageCode.put("swa", "sw"); mJavaToIanaLanguageCode.put("swa", "sw");
mJavaToIanaLanguageCode.put("tam", "ta"); mJavaToIanaLanguageCode.put("tam", "ta");
mJavaToIanaLanguageCode.put("tel", "te"); mJavaToIanaLanguageCode.put("tel", "te");
mJavaToIanaLanguageCode.put("tsn", "tn");
mJavaToIanaLanguageCode.put("tur", "tr"); mJavaToIanaLanguageCode.put("tur", "tr");
mJavaToIanaLanguageCode.put("tat", "tt");
mJavaToIanaLanguageCode.put("urd", "ur"); mJavaToIanaLanguageCode.put("urd", "ur");
mJavaToIanaLanguageCode.put("vie", "vi"); mJavaToIanaLanguageCode.put("vie", "vi");
mJavaToIanaLanguageCode.put("wol", "wo");
mJavaToIanaLanguageCode.put("zho", "zh"); mJavaToIanaLanguageCode.put("zho", "zh");
mJavaToIanaLanguageCode.put("yue", "zh");


mJavaToIanaCountryCode.put("JAM", "JM"); mJavaToIanaCountryCode.put("JAM", "JM");
mJavaToIanaCountryCode.put("MEX", "MX"); mJavaToIanaCountryCode.put("MEX", "MX");

Loading…
Cancel
Save