Cristalab

Sites multi lenguajes con XML en ActionScript 3.0

   Foros de discusión -> Tips, ¡Envía tus trucos aquí!
Mensaje Autor
Mensaje Publicado: Sab Feb 16, 2008 5:47 pm     Citar   firefox 
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>


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

Héroes Premio_Secretos SWAT
clabLevel: 3117 Genero:Masculino
Lima - Perú
11 Tutoriales
6 Tips

MP Web     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Dom Feb 17, 2008 4:52 am     Citar   msie 
Buen Tip sin duda ! Bien por ti, y por adriesp...
Thumbs up

No Soy M@U !
Invitado






        
Volver arriba
Mensaje Publicado: Dom Feb 17, 2008 8:57 pm     Citar   firefox 
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 Genero:Masculino
Salamanca

1 Tips

MP       MSN Messenger  
Volver arriba
Mensaje Publicado: Dom Feb 17, 2008 11:26 pm     Citar   firefox 
Buen Tip Elder, muy útil esta clase Thumbs up
 _________________

MY : Blog | Facebook | Twitter | Pownce | Jaiku | Last.fm | Flickr.

Zguillez
BOFH

Bastard Operators From Hell Héroes Premio_Secretos
clabLevel: 4084 Genero:Masculino
BCN
3 Tutoriales
40 Tips
1 Ejemplos

MP Email Web     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Lun Feb 18, 2008 10:37 am     Citar   firefox 
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 miau

Gracias elder! Guiño
 _________________
http://llops.com/blog
[experimentos y artículos entorno a la plataforma flash y as3]

llops


clabLevel: 258 Genero:Masculino
Barcelona

1 Tips

MP Web         
Volver arriba
Mensaje Publicado: Lun Feb 18, 2008 10:43 am     Citar   firefox 
Es estupendo, estupendo, si señor!!!

Sonrisa
 _________________
Test de 8 colores

Sisco
SWAT Team

SWAT
clabLevel: 3028
Catalunya
6 Tutoriales
4 Tips

MP Web         
Volver arriba
Mensaje Publicado: Lun Feb 18, 2008 2:04 pm     Citar   firefox 
Shock, por dios, cuantas barbaridades me habria ahorrado esto hace un par de meses atras

muy buena esa elder.. !! Thumbs up


salu2 miau

Joris_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Feb 18, 2008 5:28 pm     Citar   firefox 
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
Mensaje Publicado: Lun Feb 18, 2008 8:12 pm     Citar   firefox 
:Pbien man la isite con esa clase me salvas Riendo

EnRiQuE_blog
Invitado






        
Volver arriba
Mensaje Publicado: Lun Feb 18, 2008 8:13 pm     Citar   firefox 
:O

EnRiQuE_blog
Invitado






        
Volver arriba
Mensaje Publicado: Mar Feb 19, 2008 3:27 am     Citar   firefox 
Esta herramienta si que nos será muy útil a todos la vamos a probar. Gracias

Edna Rheiner_blog
Invitado






        
Volver arriba
Mensaje Publicado: Mar Feb 19, 2008 5:03 pm     Citar   firefox 
Porque en formato xliff?
 _________________
Mi humilde opinión
Gabriel Castañaza Molina (gcm)

gcm


clabLevel: 191


1 Tips

MP     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Mie Feb 20, 2008 7:31 am     Citar   firefox 
Genial elder, será muy útil. U_U
 _________________
Blog
Twitter
Bleend.net

Bleend

Héroes
clabLevel: 2009 Genero:Masculino
I-fail-at-life Bleend Networks Incorporated central offices
1 Tutoriales
5 Tips

MP Email Web     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Jue Feb 28, 2008 3:55 pm     Citar   firefox 
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
Responder al tema    Foros de discusión -> Tips, ¡Envía tus trucos aquí! Todas las horas son GMT
Página 1 de 1

Respuesta Rapida
Nick: 

  Citar el ultimo mensaje
Adjuntar tu firma

Mostrar mensajes de anteriores:
  

 


Cristalab BloodBerry Style © 2006 Cristalab
Powered by phpBB © 2001, 2002 phpBB Group