keywordsSharedObject()
En este tutorial, presenta dos formas de crear un menú de selección de idioma, usando SharedObjecty System.capabilities.language.
sharedObject
Como sabrás, al igual que con JavaScript se pueden almacenar variables en coockies, con actionScript disponemos del objeto sharedObjectque puede almacenar datos en nuestro disco duro crando un archivo de texto con la extensión .sol.
En este caso, usaremos sharedObjectpara almacenar en el disco duro un valor que forzará a que una página web se abra en el idioma que el usuario seleccionó la última vez.
System.capabilities.language
La propiedad languagede la clase System.capabilitiesserá la que determine el lenguaje por defecto la primera vez que el usuario visita el sitio.
Por ejemplo si escribes en un documento flash:
Actionscript:
-
trace(System.capabilities.language)
-
// -- devuelve 'es' si el lenguaje del sistema es el español
-
// -- devuelve 'en' si el lenguaje del sistema es el ingles, etc.
Para este ejemplo, he pensado en un menú con tres idiomas (español, francés e Inglés) de forma que si System.capabilities.languagedetecta otro idioma que no sea español 'es' o francés 'fr' el idioma será inglés 'en'.
Al principio he mencionado que habia ideado dos sistemas, en realidad es uno pero con dos comportamientos ligeramente distintos:
Sistema 1, mostrar siempre los tres botones de idioma
Aunque siempre se mostrará un mensaje de bienvenida en el idioma por defecto (el que marque el sistema en la primera visita o el seleccionado por el ususario en su última visita), siempre se dispondrá de la posibilidad de seleccionar otro idioma,
Actionscript:
-
Stage.scaleMode = "noscale";
-
// -- botones selección idioma
-
import mx.controls.Button;
-
createClassObject(Button, "es_btn", 1, {label:"Bienvenido", _x:100, _y:100});
-
createClassObject(Button, "fr_btn", 2, {label:"Bienvenue", _x:210, _y:100});
-
createClassObject(Button, "en_btn", 3, {label:"Wellcome", _x:320, _y:100});
-
// -- almacenar idioma en sharedObject
-
var setLanguage = function (lang) {
-
idioma_so.data.idioma = lang;
-
idioma_so.flush();
-
};
-
// -- saludar
-
var saludar = function (idioma) {
-
switch (idioma) {
-
case "es" :
-
trace("Bienvenido");
-
break;
-
case "fr" :
-
trace("Bienvenue");
-
break;
-
default :
-
trace("Wellcome");
-
}
-
};
-
// -- crea un sharedObject para almacenar el idioma seleccionado
-
// -- si ya está creado lo abre
-
var idioma_so = SharedObject.getLocal("idioma");
-
// --
-
if (idioma_so.data.idioma == null) {
-
// -- 1 detecta el lenguaje del sistema
-
// -- 2 primera visita, se saludo en el idioma del sistema
-
var lenguajeSystem = System.capabilities.language;
-
saludar(lenguajeSystem);
-
} else {
-
// -- saluda según el idioma establecido en sharedObject
-
saludar(idioma_so.data.idioma);
-
}
-
// -- seleccionar idioma y entrar
-
// -- 1. almacena el idioma en sharedObject según botón pulsado
-
// -- 2. abrir la página según idioma
-
myButtonListener = new Object();
-
myButtonListener.click = function(evt) {
-
switch (evt.target) {
-
case es_btn :
-
setLanguage("es");
-
// -- entrar en la página en español
-
break;
-
case fr_btn :
-
setLanguage("fr");
-
// -- entrar en la página en francés
-
break;
-
default :
-
setLanguage("en");
-
// -- entrar en la página en inglés
-
}
-
};
-
es_btn.addEventListener("click", myButtonListener);
-
fr_btn.addEventListener("click", myButtonListener);
-
en_btn.addEventListener("click", myButtonListener);
Sistema 2, mostrar un único botón (tras la primera visita)
En la primera visita, se muestra el idioma establecido por el sistema, en posteriores visitas, solo se mostrará un botón en el idoma seleccionado en la última visita del usuario.
Actionscript:
-
Stage.scaleMode = "noscale";
-
// -- botones selección idioma
-
var createMenuLanguage = function (langButon) {
-
import mx.controls.Button;
-
switch (langButon) {
-
case "es" :
-
createClassObject(Button, "es_btn", 1, {label:"Bienvenido", _x:100, _y:100});
-
break;
-
case "fr" :
-
createClassObject(Button, "fr_btn", 2, {label:"Bienvenue", _x:100, _y:100});
-
break;
-
case "en" :
-
createClassObject(Button, "en_btn", 3, {label:"Wellcome", _x:100, _y:100});
-
break;
-
default :
-
createClassObject(Button, "es_btn", 1, {label:"Bienvenido", _x:100, _y:100});
-
createClassObject(Button, "fr_btn", 2, {label:"Bienvenue", _x:210, _y:100});
-
createClassObject(Button, "en_btn", 3, {label:"Wellcome", _x:320, _y:100});
-
}
-
};
-
// -- almacenar idioma en sharedObject
-
var setLanguage = function (lang) {
-
idioma_so.data.idioma = lang;
-
idioma_so.flush();
-
};
-
// -- saludar
-
var saludar = function (idioma) {
-
switch (idioma) {
-
case "es" :
-
trace("Bienvenido");
-
break;
-
case "fr" :
-
trace("Bienvenue");
-
break;
-
default :
-
trace("Wellcome");
-
}
-
};
-
// -- crea un sharedObject para almacenar el idioma seleccionado
-
// -- si ya está creado lo abre
-
var idioma_so = SharedObject.getLocal("idioma");
-
// --
-
if (idioma_so.data.idioma == null) {
-
// -- 1 detecta el lenguaje del sistema
-
// -- 2 primera visita, se saludo en el idioma del sistema
-
// -- 3 se presenta el menú de selección de lenguaje en varios idiomas
-
var lenguajeSystem = System.capabilities.language;
-
saludar(lenguajeSystem);
-
createMenuLanguage();
-
} else {
-
// -- saluda según el idioma establecido en sharedObject
-
// -- se presenta botón en idoma almacenado en sharedObject
-
saludar(idioma_so.data.idioma);
-
createMenuLanguage(idioma_so.data.idioma);
-
}
-
// -- seleccionar idioma y entrar
-
// -- 1. almacena el idioma en sharedObject según botón pulsado
-
// -- 2. abrir la página según idioma
-
myButtonListener = new Object();
-
myButtonListener.click = function(evt) {
-
switch (evt.target) {
-
case es_btn :
-
setLanguage("es");
-
// -- entrar en la página en español
-
break;
-
case fr_btn :
-
setLanguage("fr");
-
// -- entrar en la página en francés
-
break;
-
default :
-
setLanguage("en");
-
// -- entrar en la página en inglés
-
}
-
};
-
es_btn.addEventListener("click", myButtonListener);
-
fr_btn.addEventListener("click", myButtonListener);
-
en_btn.addEventListener("click", myButtonListener);
Idiomas.zip se ha descargado 380 veces.