我正在使用两种语言运行Wordpress Multisite安装:希伯来语和英语 我有一个名为 Geo IP 的插件,它可以帮助我根据用户的IP国家重定向用户。
但实际上我还需要更多 我想保存用户选择的最后一种语言。
示例:
如果用户用英语关闭我网站的标签,我希望当他回来时,他会得到英语。反之亦然希伯来语。
我不是专业开发人员,但我认为cookie可以是一个解决方案,如果可能的话,我希望解决方案在JS中。
更新:我制作的代码! WDYT家伙?
function get_language {
var myLang = getcookie ('language');
if ( myLang == 'hebrew') {
window.location = "http://zeek.me/he/";
}
else if ( myLang == 'english') {
window.location = "http://zeek.me";
}
else {
window.location = "http://zeek.me";
}
}
function set_language(lang) {
var setLang = setcookie ('language', lang, 30);
var englishClick = document.getElementById('#english_lang');
var hebrewClick = document.getElementById('#hebrew_lang');
englishClick.addEventListener('click', function() {
set_language('english');
})
hebrewClick.addEventListener('click', function() {
set_language('hebrew');
})
}
你们怎么想? 任何解决方案?
谢谢,
西蒙
答案 0 :(得分:3)
如果你想要一个使用Javascript的解决方案,你应该考虑localStorage。如果你想知道选定的语言服务器端,Cookies很不错,但如果你只需要本地,那么localStorage就更好了(原因如下)。
要设置localStorage项目,请使用
localStorage.setItem(key, value);
然后查看该值,请使用
localStorage.getItem(key);
localStorage与cookies相比有一些优势。其中一些是:
答案 1 :(得分:1)
听起来非常基本,饼干就是你想要的。你可以坚持使用JavaScript,或使用PHP cookies。您选择了javascript解决方案。
您需要一些功能才能完成这项工作。以下是一些示例,但这些不是正常工作的代码。您需要编辑它们才能进行语言切换。
function init_language() {
// this function called when no language has been defined yet
var lang = getcookie( 'language' );
if ( lang == 'hebrew' ) hebrew_pls();
}
function switch_language() {
// When the user takes action to change language, ie, clicks a flag icon
if ( selected_language == 'hebrew' ) hebrew_pls();
}
function hebrew_pls() {
set_language('hebrew'); // aka, whatever you want to do
setcookie( 'language', 'hebrew', 30 ); // remember the language for 30 days
}
以下是我一直使用的Cookie功能。它基于" How do I create and read a value from cookie?"。我修改了这些,所以它们更容易使用。如果你不喜欢我的修改,网上有很多替代品。不幸的是,JavaScript没有一种简单的方法来存储cookie(没有第三方插件/脚本)。
/*
setCookie( name, value, days, [path = "/"] )
Sets a cookie, expires after "days" have passed
getCookie( name, default )
Gets the value of a cookie, or returns "default". Note: Does not set the cookie to default.
*/
function setCookie(c_name, value, exdays, path) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : ("; expires=" + exdate.toUTCString()));
document.cookie = c_name + "=" + c_value + ((path == null) ? "; path=/" : "; path=" + path);
}
function getCookie(c_name, c_default) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
if (typeof c_default != 'undefined') return c_default;
return false;
}