views:

57

answers:

2

I am playing with the Android TTS engine. I am trying to set it to speak in Spanish from Mexico, rather than from Spain.

I have tried several combination's of language code / country code but I have not been able to get anything by Spanish from Spain. Here is my code currently

loc = new Locale("es", "MEX");
myTts.setLanguage(loc);
say("Hello");

I have also tried ("es","US"), ("es","LA"), ("spa","US"), ("spa","MEX") with every combination that I can think of it is showing me this in the log:

TtsEngine::setLanguage found matching language(spa) but not matching country(MEX).

loaded es-ES successfully

I can exit my app and open up the TTS Service Extended. If I set the language to either Spanish[es] or Spanish-Latin America. Either way when I hit 'listen to preview' I get "Hola" which is expected. But from my application I get "Heyyo" instead of "Hola". Can anyone see what I am doing incorrectly to set my language?

A: 

I've not used TTS on Android yet so I don't know whether this is relevant, but the Locale constructor expects a 2-letter country code and the ISO country code for Mexico is MX.

Dan Dyer
A: 

It is a bit confusing if it wants the 2 letter or 3 letter country codes. The Locale documentation says 2 letter, thus it would be sp-MX, but the TTS doc shows an example with 3 letter codes, thus spa-MEX would be the correct.

What device/sdk version are you using? If neither work, it might be because your device does not support spanish-mexico. The first section of the TTS doc shows how to go about checking for the languge specific resources, and downloading them if they aren't present.

Mayra
I have tested on Nexus One running 2.2, and Mytouch running 1.6. The app is built to SDK version 1.6. I just tried with both 2 and 3 letter codes same results still.
Tim
Did you try downloading the language specific resources?
Mayra