在Cookie中保存用户的最后一种语言偏好
Save last language preference of the user in a Cookie
我正在运行Wordpress多站点安装,使用两种语言:希伯来语和英语。
我有一个名为Geo IP的插件,可以帮助我根据他们的IP国家重定向用户。
但实际上我需要更多。
我想保存用户最后选择的语言。
的例子:
如果一个用户关闭了我网站上的英语选项卡,我希望当他回来的时候,他会得到英语。对于希伯来语,反之亦然。
我不是一个专业的开发人员,但我认为一个cookie可以是一个解决方案,我希望解决方案是在JS如果可能的话。
更新:我做的代码!
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');
})
}
你们觉得呢?有办法吗?
谢谢,西蒙
如果您想要Javascript的解决方案,您应该考虑localStorage。如果你想知道所选择的服务器端语言,cookie是不错的选择,但如果你只需要本地语言,localStorage是更好的选择(原因如下)。
设置localStorage项,使用
localStorage.setItem(key, value);
,然后使用
查看值localStorage.getItem(key);
与cookie相比,localStorage有一些优点。其中一些是:
- cookie包含在每个HTTP请求中,因此有时不必要地一遍又一遍地传输相同的数据,从而减慢您的网站速度
- cookie包含在每个HTTP请求中,因此在互联网上发送未加密的数据
- Cookies被限制在大约4kb的数据
听起来很基本,饼干是你想要的。你可以坚持使用javascript,或者使用php cookie。您选择了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函数。它基于"我如何从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;
}
相关文章:
- 将日期字符串转换为另一种语言
- 是否有一种功能齐全的范式语言可以转换为JavaScript
- javascript如何成为一种同步语言并在浏览器和node.js环境中异步运行
- 为什么微软开发了一种名为Typescript的新语言,而不是创建C#到Javascript的转换程序
- 当使用Google Chrome(V8)时,Javascript是否可以被视为一种解释语言
- 当区域设置设置为另一种语言时,如何从 momentjs 对象获取英语值
- 有没有一种类似于Razor的模板语言用于纯Javascript应用程序
- 有没有一种方法可以在没有服务器端语言的情况下完成http头请求并获得时间
- Javascript不再是一种脚本语言
- 如何在javascript regexp中创建类似/d+/的东西,但使用另一种语言的数字
- 一种编程语言可以同时是客户端和服务器端吗
- 有没有一种方法可以将所有语言添加到优化的RequireJS项目中
- 在Cookie中保存用户的最后一种语言偏好
- Vim:我需要手动解析一种语言,如果我'我试图在导航
- 如果一种语言没有“位对位”;比较,我如何模拟它
- 使用Jison创建/翻译简单的脚本到另一种语言
- 数字字符转换成另一种语言的数字
- 自定义Css为每一种语言- Qtranslate X
- 我想在母版页上有一个西班牙语/英语链接,它会带你到另一种语言的当前页面,而不是'home'页
- 在 RubyMine 中嵌入一种语言中的另一种语言