Although applications can be written to run on any supported locale, there are differences in the way that CCXML, VoiceXML, and Java applications are internationalized.
In VoiceXML, resources referenced by URIs are not subject to changes in the current locale, but built-in resources (such as built-in grammars) are. You should associate a locale with the document rather than with the execution environment (by using the <vxml> xml:lang attribute) to ensure that the correct built-in resources are used.
In CCXML, resources referenced by URIs are not subject to changes in the current locale. There is no mechanism for associating a locale with the document rather than with the execution environment. CCXML can be written in any supported code page. There is a charset attribute for the <script> element that allows the CCXML script to indicate the code page of an ECMA script to be fetched.
Java applications can be completely language-independent if the locale is not specified on any individual voice segment objects within the application. To make the application speak a specific language, simply set the default locale of the node to that language. You could have several voice response nodes, each running the same applications in a different language. Provided that voice segments for the locale are available they are played to the caller in that language.
Instead of using the node default locale, you could specify a default locale for each application, and have applications speaking different languages running in the same node. You can have several AppName configuration entries for the same Java class, each specifying a different application name and a different locale.
Thus, the current locale provides full internationalization for your Java applications, provided that each language is installed on the voice response node.