Me bastó ver este tip de ActionScript 2 para ponerme a investigar sobre como hacer un site o una app (application) que soporte varios lenguajes sin tener que hacer un FLA por cada uno de ellos. Entonces sólo era ver la Clase fl.lang.Locale, que en realidad es muy simple y fácil de usar.
Para eso lo primero que tenemos son varios archivos XML con los textos traducidos, uno por idioma en formato XLIFF en UTF-8 (no olvides guardarlos en este formato). Además pueden encontrar más información en la documentación de Adobe
en.xml
Código :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN" "http://www.oasis-open.org/committees/xliff/documents/xliff.dtd" > <xliff version="1.0" lang="es"> <file datatype="plaintext"> <header></header> <body> <trans-unit resname="NOMBRE"> <source>nombre</source> </trans-unit> <trans-unit resname="TELEFONO"> <source>telefóno</source> </trans-unit> </body> </file> </xliff>
Código :
<trans-unit resname="NOMBRE"> <source>nombre</source> </trans-unit>
Código :
import fl.lang.Locale;
Código :
Locale.addXMLPath("es", "lang/es.xml");
Locale.addXMLPath("en", "lang/en.xml");
Locale.addXMLPath("fr", "lang/fr.xml");Código :
Locale.initialize();
Locale.setDefaultLang("es");
Locale.setLoadCallback(init);Código :
private function init(event:Boolean):void {
nombre.text = Locale.loadString("NOMBRE");
telefono.text = Locale.loadString("TELEFONO");
}Código :
package {
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.text.TextField
import fl.lang.Locale;
public class CambiarIdioma extends MovieClip{
public function CambiarIdioma() {
//cargo los xml
Locale.addXMLPath("es", "lang/es.xml");
Locale.addXMLPath("en", "lang/en.xml");
Locale.addXMLPath("fr", "lang/fr.xml");
//inicializo
Locale.initialize();
//cargo el idioma por defecto
Locale.setDefaultLang("es");
Locale.setLoadCallback(init);
//agrego mis listener a mis botones
btn_en.addEventListener(MouseEvent.CLICK, cambiar);
btn_es.addEventListener(MouseEvent.CLICK, cambiar);
btn_fr.addEventListener(MouseEvent.CLICK, cambiar);
}
private function init(event:Boolean):void {
nombre.text = Locale.loadString("NOMBRE");
telefono.text = Locale.loadString("TELEFONO");
}
private function cambiar(event:MouseEvent):void {
var miIdioma:String;
switch (event.target.name) {
case "btn_es":
miIdioma = "es";
break;
case "btn_en":
miIdioma = "en";
break;
case "btn_fr":
miIdioma = "fr";
break;
}
//actualizó el idioma
Locale.loadLanguageXML(miIdioma);
}
//fin de clase
}
}
Francisco-blog :