2016-04-11 151 views
0

我有一个简单的JavaScript文件,负责翻译页面。因此,如果用户想要在例如英语,他点击它,页面翻译自己。除非用户转到其他页面,否则一切都很好。在页面间共享变量

现在我的JavaScript再次被重新载入,并且默认的语言被踢进了。哪一个是不可取的 - 我想让我的JavaScript记住用户指定的语言。

这里是我的JavaScript代码,以显示我在做什么

//translations 
var language = "en"; 
$(function() { 
    translatePage(); 

    $("#PageLanguages li").on("click", function (attr) { 
     var selLang = $(this).data("language"); 
     if (selLang) { 
      language = selLang; 
     } 

     translatePage(); 
    }); 

    function translatePage() { 
     $.ajax({ 
      url: 'languages.xml', 
      success: function (xml) { 
       $(xml).find('translation').each(function() { 
        var id = $(this).attr('id'); 
        var text = $(this).find(language).text(); 
        $("#" + id).text(text); 
       }); 
      }, 
      error: function (err) { 
       var x = err; 
      } 
     }); 
    }; 
}); 

正如你所看到的,我存储的语言(在一个用户指定)在顶部我language变量。

当我希望网站在所有页面之间共享一个变量时(例如在这种情况下),我需要做什么?

+5

在Cookie或localstorage中存储语言变量 – uzaif

+0

或服务器端在数据库中。有很多方法可以实现你想要的。 –

回答

1

有几种方法你可以去这样做。但我只列出三个。如果你想在JavaScript的方法(这依赖于JavaScript使能/浏览器支持):

var language = localStorage.getItem("language") || ""; 

if(language !== "") 
{ 
    // Set the language for content in here 
} 
else 
{ 
    // Store the language in LocalStorage here. 
    localStorage.setItem("language", "en-us"); 
} 

或者,你可以存储这样的东西在你的数据库(服务器端),但我会建议对存储这些东西在你自己的数据库中,除非你确实需要确保在你需要时价值会存在。

另一个选择是当他们点击超链接或按钮时,将诸如language=en-us之类的内容附加到您的查询字符串中。然后,您可以在下一页使用JavaScript或服务器端语言从查询字符串中获取这些数据。

3

我在这里的建议是基于浏览器的,使用与现代浏览器

localStorage.setItem('language', 'eng'); 

// Retrieve the object from storage 
var retrievedLanguage = localStorage.getItem('language'); 

console.log(retrievedLanguage); /// prints eng 
2

本地存储如果目标浏览器的HTML5标准,尝试本地存储:

//set data 
localStorage.setItem("language", language); 

// get data 
var language = localStorage.getItem("language"); 

将可用于所有页面。

1

有不同的方法来保持所有页面中的语言变量。

1)使用URL本身前的语言字符串: https://www.paypal.com/AR/webapps /下MPP /家

2)呼叫服务器知道的语言。由uzaif

4)指定的饼干

3)店铺使用localStorage的