When creating a multilingual application, one thing that is often overlooked is how to determine what language the user speaks. Most applications follow one of the following strategies.
1) The application already knows the language. With this strategy, information already exists in the database stating what language the user prefers and that language is used for the call.
2) At the beginning of the call, the application asks which language the user prefers. In order to accomplish this, one language (generally the more common one) is set and a recorded prompt is used to play the other language by a native speaker. Therefore both "For English" and "para Español" are played correctly. Some applications will then use DTMF for recognition, while others will recognize speech by approximating the phonemes as close as possible in the grammar.
The first approach will not cover the case where the application makes a mistake about the language. A number of years ago I worked for a consulting firm outside of Detroit on an application that sends surveys for a large automative company. I was the development and release QA for the application and while under pressure one day I made a mistake in the database query that accidentally disregarded the language flag for the surveys sent to Canada. Therefore, most French Canadians received surveys in English and some English Canadians received surveys in French. Obviously, more than a few of them were upset. There are many lessons here - check your work - have a separate QA department, but the one I'm looking for here is don't assume you're always going to get the language right. Even if the application and database work as expected, all it takes is a data entry error.
In the case where you have a good idea what the language should be but it is possible for you to get it wrong, the best approach is to have a DTMF fallback that can change the language. For instance (note for French speakers, please ignore my French mistakes and concentrate on the call flow):
App: What is your last name?
Person: Je ne comprends pas.
App: I'm sorry, I did not understand that. Please say your last name.
Person: Je n'ai aucune idee, de quoi vous parlez.
App: I'm sorry, I still did not understand. Pour français, appelez s'il vous plaît le numéro deux.
App: Quel est votre surnom?
The concerts application in the samples uses this approach. Once the user changes the language, if you have a flag stored in the database you can update it with the correct language for the next time.
Some of you may have more questions on how to recognize phrases in two different languages at the same time. I will discuss this in more depth when I talk about language mixing in a later installment.