0

这个问题是基于我之前在 stackoverflow上的问题,我想根据语言选择更改href链接。

多亏了这里的帮助,它现在做了它应该做的事情。

(function ($) {

$(function(){
var select = $('#language-selection');

var options = select.children('#other-languages');
select.attr('style', '-moz-user-select:none;-webkit-user-select:none;');
options.css({
display:'none'
});

select.click(function() {
if(options.css('display') == 'none') {
/* options.css({display:'block'}); */
options.slideToggle('fast');
} else {
/* options.css({display:'none'}); */
options.slideToggle('fast');
}
});

});

})(jQuery);


    var current = "English"
$("[data-lang]").on("click", function() {
    var lang = $(this).data("lang");

    $(".clickButton").prop("href", function(i, href) {
        return href.replace(current, lang);
    });


$('#language-selection > #current-language > img').attr('src' , $(this).find('img').attr("src"));

$('#language-selection > #current-language > img').attr('alt' , lang);
$('#language-selection > #current-language > img').attr('title' , lang);


$("#language-selection > #current-language").contents().each(function() {
    if(this.nodeType == 3)

             this.nodeValue = this.nodeValue.replace(current, lang);

});



current = lang;

});

我的问题是:当点击一个因语言选择而改变的链接并单击浏览器后退按钮时,它当然会返回到默认语言设置。

有没有一种简单的方法可以“保存”语言设置,使其不会切换回默认设置?

谢谢你。

4

1 回答 1

0

我的解决方案是在用户更改值时将其存储在 localStorage 中:

var lang = $(this).data("lang");
localStorage['lang'] = lang;

当你加载一个页面时,你可以做

var lang = localStorage['lang'] || defaultLanguage;

因此,您不必在 URL 中传递所选语言,它会保存在用户的计算机上。

顺便说一句,为了与各种 i18N 工具兼容,我更喜欢使用规范化的语言代码,即“en”而不是“English”。

于 2012-10-25T12:06:27.150 回答