Agregar cookies al cambiador de idioma

Estoy intentando agregar un pequeño cambiador de idioma para mi sitio. Me gustaría que guardara el idioma usando cookies.

¿Cómo se puede modificar este código para lograr este objetivo?

<script src="https://www.google.com/jsapi?key=ABQIAAAAMt9YZQaG_wbfmb2826e_wBTPUDO5TVHJS-HZdrhJpqnB5yZcfRQFObTd1-bPphEIY11228Z78VhA6A"></script>
    <script src="http://davidwalsh.name/dw-content/mootools-1.3.js"></script>
    <script>
        // Set the original/default language
        var lang = "en";
        var currentClass = "currentLang";

        // Load the language lib
        google.load("language",1);

        // When the DOM is ready....
        window.addEvent("domready",function(){
            // Retrieve the DIV to be translated.
            var translateDiv = document.id("languageBlock");
            // Define a function to switch from the currentlanguage to another
            var callback = function(result) {
                if(result.translation) {
                    translateDiv.set("html",result.translation);
                }
            };
            // Add a click listener to update the DIV
            $$("#languages a").addEvent("click",function(e) {
                // Stop the event
                if(e) e.stop();
                // Get the "to" language
                var toLang = this.get("rel");
                // Set the translation into motion
                google.language.translate(translateDiv.get("html"),lang,toLang,callback);
                // Set the new language
                lang = toLang;
                // Add class to current
                this.getSiblings().removeClass(currentClass);
                this.addClass(currentClass);
            });
        });

    </script>

<div id="languages"><p>
        <a href="?lang=en" rel="en">English</a> / <a href="?lang=es" rel="es">Spanish</a> 
    </p></div>

    <div id="languageBlock">
        <p>Lights go out and I can't be saved <br />
        Tides that I tried to swim against  <br />
        Brought me down upon my knees  <br />
        Oh I beg, I beg and plead </p>

        <p>Singin', come out if things aren't said  <br />
        Shoot an apple off my head  <br />
        And a, trouble that can't be named  <br />
        Tigers waitin' to be tamed </p>

        <p>Singing, yooooooooooooo ohhhhhh  <br />
        Yoooooooooooo ohhhhhh </p>

        <p>Home, home, where I wanted to go <br /> 
        Home, home, where I wanted to go  <br />
        Home, home, where I wanted to go  <br />
        Home, home, where I wanted to go</p>
    </div>

preguntado el 27 de agosto de 11 a las 15:08

¿Estás seguro de que quieres utilizar cookies? HTML5 es nuevo almacenamiento local haría el trabajo mucho más fácil. Además, está utilizando enlaces para redirigirlos a una página traducida. Si ya están en foo.bar/?lang=en y hacían clic en el enlace en español, los llevaría a foo.bar/?lang=en?lang=es Por lo que yo puedo decir. -

1 Respuestas

Parece que estás usando MooTools. Considere usar el Funcionalidad de cookies de MooTools:

Coloque esto cuando haya terminado de cambiar el idioma en su controlador de eventos de clic de enlace:

// Add class to current
this.getSiblings().removeClass(currentClass);
this.addClass(currentClass);

//now set the cookie
var myCookie = Cookie.write('userLang', toLang);

Cuando desee leer la cookie, tal vez al cargar la página (o cualquier evento que desee):

alert('This user has their language set to: ' + Cookie.read('userLang'));

Respondido 27 ago 11, 19:08

Bueno, un problema es que todavía no guarda el idioma real. - Shawn31313

¿Qué quieres decir con "no salva"? Cookie.write guarda el valor. Guarda esa elección en la cookie. ¿Quiere decir que no elige automáticamente el idioma elegido previamente? Si ese es el caso, vea mi segundo fragmento de código: "lea la cookie ... el evento que desee". Establezca sus elementos HTML basados ​​en esto. - p.campbell

Cuando hago clic en español y luego actualizo. El idioma ha vuelto al inglés. Yo también lo necesito permanecer ES. - Shawn31313

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.