Comunidad de diseño web y desarrollo en internet online

Idioma del navegador en AC3

Citar            
MensajeEscrito el 17 Abr 2008 10:03 am
Buenas a todos!!!

He estado buscando pero no encuentro la manera de acceder a la información de los headers html del navegador por ActionScript3.
La cuestión es que necesito el lenguaje del navegador para poder mostrar la información de una pagina en diversos lenguajes.

Ya que estamos, cuando estaba aprendiendo a manejarme en ac3 (alguna vez se deja de aprender?) encontré una pagina que explicaba como trabajar con archivos de distintos idiomas de una manera cómoda. Por ahora había pensado en varios archivos XML con las traducciones, algo tipo Struts, pero si hay alguna manera mejor siempre se puede intentar...

Muchas gracias.

Por Deschain

20 de clabLevel



Genero:Masculino  

España

firefox
Citar            
MensajeEscrito el 17 Abr 2008 08:10 pm
Flash no lo pilla de los headers del HTML sino del sistema operativo, y lo accedes via Capabilites.language (clase estática que reemplaza a System.capabilities de AS2)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Abr 2008 02:20 pm
Muchas gracias por contestar. También me vale esta información, aunque como es una aplicación web prefería el idioma del navegador.

El caso es que este dato lo quería para cargar un idioma u otro (obvio) y buscando por cristalab he encontrado lo siguiente http://www.cristalab.com/foros/t52576.html que era lo que estaba buscando, pero casi prefiero currármelo por mi mismo. He decidido diseñar mi propio xml y clase que lo maneje. El problema es que los campos de una base de datos son muy crípticos y no son validos para la mayoría de los usuarios. La estructura de la tabla sería la siguiente:

Código :

<table name='tabla1'>
   <field name='campo1'>
      <traduccion>Lo que quiera decir en cada idioma</traduccion>
      <descripcion>Una pequeña descripción de la utilidad del campo</descripcion>
   </field>
</table>


Y la clase que maneja el idioma seria bastante sencilla utilizando XMLlist. Seria tan sencillo como crear dos métodos: getTraduccion() y getDescription(). Se les pasa nombre de tabla y campo y te devuelven la información del XML.

¿Que os parece esta solución?

Si queréis, cuando la codifique publico el código...

Por Deschain

20 de clabLevel



Genero:Masculino  

España

firefox
Citar            
MensajeEscrito el 21 Abr 2008 09:24 am
Suena bien. Ya nos contarás

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Abr 2008 11:48 pm
Bueno, la parte del idioma lleva unos días acabada...

El caso, como comentaba tenemos en diferentes archivos XML la traducción y la descripción de los campos de una base de datos de esta forma...

Código :

<tables>
  <table name='tabla1'>
    <field name='campo1'>
      <translation>Tradución del campo1 o lo que quieras que aparezca en vez del nombre del campo</translation>
      <description>Descripción del campo o lo que quieras</description>
    </field>
    <field name='campo2'>
    ...
  </table>
  <table name='tabla2'>
  ...
  </table>
</tables>

Cada archivo debería de ser nombrado con la especificación ISO 639-1 de cada idioma, y siempre deberemos tener al menos el archivo del lenguaje por defecto.

El código de la clase seria el siguiente...

Código :

public class language
   {
      
      //Default languaje
      private var defaultLang:String = 'es';
      //Path where you can find all the XML files
      private var langPath:String = './lang/'
      //System language
      private var lang:String;
      //XML file
      private var xmlData:XML;
      
      //Constructor of the class
      public function language()
      {   
         lang = Capabilities.language;
         this.loadLanguage(langPath+lang+'.xml');
      }
      
      //Load de system language
      public function loadLanguage(url: String):void{
         var loader:URLLoader = new URLLoader();
         loader.addEventListener(Event.COMPLETE,loadXML);
         loader.addEventListener(IOErrorEvent.IO_ERROR,loadXMLError);
         loader.dataFormat = URLLoaderDataFormat.TEXT;
         loader.load(new URLRequest(url));
      }
      
      //Gets the traduccion of one determinate table and one determinate field
      public function getTraduction(table:String, field:String):String{
         var cadena:String;
         for each (var tables:XML in xmlData.elements()) {
               if(tables.@name == table){
                     for each(var fields:XML in tables.elements()){
                        if(fields.@name == field){
                           for each(var element:XML in fields.elements('translation')){
                              cadena = element.toString();
                           }                           
                        }
                     } 
               }
          }
          return cadena;
      }
      
      //Gets the description of one determinate table and one determinate field
      public function getDesciption(table:String, field:String):String{
         var cadena:String;
         for each (var tables:XML in xmlData.elements()) {
               if(tables.@name == table){
                     for each(var fields:XML in tables.elements()){
                        if(fields.@name == field){
                           for each(var element:XML in fields.elements('description')){
                              cadena = element.toString();
                           }                           
                        }
                     } 
               }
          }
          return cadena;
      }
      
      
      //Loads the XML file into one XML object
      private function loadXML(event: Event):void{
         this.xmlData = new XML(event.target.data);
      }
      
      //If can not find the system language charges de default language
      private function loadXMLError(event: Event):void{
         Alert.show('Language '+ this.lang +' not suported.\nWill charge default language '+defaultLang);
         this.loadLanguage(this.langPath+this.defaultLang+'.xml');
      }
   }
}


Las funciones que obtienen la información del XML son un poco "toscas" las tengo que depurar porque creo que hay una manera más cómoda.

¿Alguna sugerencia?

Por Deschain

20 de clabLevel



Genero:Masculino  

España

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.