2011-08-27 93 views
0

我正在尝试为我的网站添加一点语言更改器。我希望使用cookie保存语言。将语言更改器添加到Cookies

如何修改此代码以实现此目标?

<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> 
+0

您确定要使用Cookie吗? HTML5的新[localStorage](https://developer.mozilla.org/en/dom/storage#localStorage)将使工作变得更容易。 另外,您正在使用链接将它们重定向到翻译的页面。如果他们已经在http://foo.bar/?lang=en上,并且他们点击了西班牙语链接,它会将他们带到http://foo.bar/?lang=en?lang=es尽可能我可以告诉。 –

回答

0

听起来就像您使用的是MooTools。考虑使用MooTools cookie functionality

将这个大功告成在你的链接点击事件处理程序切换语言时:

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

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

当你想读取cookie,或者在页面加载(或任何事件你like):

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

那么,一个问题仍然不能保存实际的语言。 – Shawn31313

+0

你是什么意思,“不保存”? 'Cookie.write'保存值。它将该选项保存到cookie中。你的意思是它不会自动选择以前选择的语言吗?如果是这样的话,请参阅我的第二个代码片段:“阅读cookie ....无论您喜欢哪个事件”。根据此设置您的HTML元素。 –

+0

当我点击西班牙语,然后刷新。语言回到英语。 ES也需要它。 – Shawn31313