| Mensaje |
Autor |
Publicado: Sab Feb 16, 2008 5:47 pm |
Citar |
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.xmlCó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>
donde realmente lo unico q importa es:
Código : <trans-unit resname="NOMBRE"> <source>nombre</source> </trans-unit> En resname colocamos el identificador que nos dirá la traducción en todos los XML, en este caso (español) "nombre"
Con eso podemos tener varios idiomas en distintos XML. Ahora pasamos al ActionScript.
Necesitamos importar la clase:
Código : import fl.lang.Locale; Luego agregamos los idiomas que utilizaremos en nuestro archivo, en mi ejemplo pongo 3 idiomas
Código : Locale.addXMLPath("es", "lang/es.xml"); Locale.addXMLPath("en", "lang/en.xml"); Locale.addXMLPath("fr", "lang/fr.xml"); inicializo la clase y cargo el idioma por defecto y muestro la data en un método
Código : Locale.initialize(); Locale.setDefaultLang("es"); Locale.setLoadCallback(init); y eso es todo, solo mostramos la data así:
Código : private function init(event:Boolean):void { nombre.text = Locale.loadString("NOMBRE"); telefono.text = Locale.loadString("TELEFONO"); } Para cambiar de idioma es:
Código : Locale.loadLanguageXML("fr");
El código completo aquí: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 } }
Los archivos aquí |
|
|
eldervaz
SWAT Team

clabLevel: 3117 
Lima - Perú
11 Tutoriales
6 Tips
|
|
Volver arriba |
 |
Publicado: Dom Feb 17, 2008 4:52 am |
Citar |
Buen Tip sin duda ! Bien por ti, y por adriesp...  |
|
|
No Soy M@U !
Invitado
|
|
Volver arriba |
 |
Publicado: Dom Feb 17, 2008 8:57 pm |
Citar |
Muy bien explicado. Yo encontré esta clase recientemente y la estoy usando para una web. Te facilita mucho el trabajo y añadir nuevos idiomas es trivial. Saludos |
|
|
adriesp
clabLevel: 78 
Salamanca
1 Tips
|
| MP |
|
|
Volver arriba |
 |
Publicado: Dom Feb 17, 2008 11:26 pm |
Citar |
|
Zguillez
BOFH

clabLevel: 4084 
BCN
3 Tutoriales
40 Tips
1 Ejemplos
|
|
Volver arriba |
 |
Publicado: Lun Feb 18, 2008 10:37 am |
Citar |
Nunca le había prestado atención a esa clase, pero parece que facilita bastante la tarea para trabajar con idiomas, que dicho sea de paso, es un coñazo
Gracias elder!  |
_________________ http://llops.com/blog [experimentos y artículos entorno a la plataforma flash y as3] |
|
llops

clabLevel: 258 
Barcelona
1 Tips
|
|
Volver arriba |
 |
Publicado: Lun Feb 18, 2008 10:43 am |
Citar |
|
Sisco
SWAT Team

clabLevel: 3028
Catalunya
6 Tutoriales
4 Tips
|
|
Volver arriba |
 |
Publicado: Lun Feb 18, 2008 2:04 pm |
Citar |
, por dios, cuantas barbaridades me habria ahorrado esto hace un par de meses atras
muy buena esa elder.. !! 
salu2  |
|
|
Joris_blog
Invitado
|
|
Volver arriba |
 |
Publicado: Lun Feb 18, 2008 5:28 pm |
Citar |
bravisimoooo, no tengo palabras para describir mi admiración, es genial, este tip va para mi carpeta de "importantísimos".
Una vez mas, gracias eldervaz. |
|
|
Señor Oz_blog
Invitado
|
|
Volver arriba |
 |
Publicado: Lun Feb 18, 2008 8:12 pm |
Citar |
:Pbien man la isite con esa clase me salvas  |
|
|
EnRiQuE_blog
Invitado
|
|
Volver arriba |
 |
Publicado: Lun Feb 18, 2008 8:13 pm |
Citar |
|
EnRiQuE_blog
Invitado
|
|
Volver arriba |
 |
Publicado: Mar Feb 19, 2008 3:27 am |
Citar |
| Esta herramienta si que nos será muy útil a todos la vamos a probar. Gracias |
|
|
Edna Rheiner_blog
Invitado
|
|
Volver arriba |
 |
Publicado: Mar Feb 19, 2008 5:03 pm |
Citar |
| Porque en formato xliff? |
_________________ Mi humilde opinión Gabriel Castañaza Molina (gcm) |
|
gcm

clabLevel: 191
1 Tips
|
| MP |
|
|
Volver arriba |
 |
Publicado: Mie Feb 20, 2008 7:31 am |
Citar |
|
Bleend

clabLevel: 2009 
I-fail-at-life Bleend Networks Incorporated central offices
1 Tutoriales
5 Tips
|
|
Volver arriba |
 |
Publicado: Jue Feb 28, 2008 3:55 pm |
Citar |
Muy buen Tip
Pero de donde sale la clase fl? cuando hago import en mi biblioteca de clases, fl no aparece? |
|
|
dgl
Invitado
|
|
Volver arriba |
 |
 |