web国际化,使用accept-language+cookie自动选择语言跳转页面!

如果是多语言网站,在用户请求访问的时候,服务器根据用户通过浏览器发送的请求中的accept-language 值进行判断,自动返回用户默认的首选语言页面。

简单的说就是如果你浏览器默认选择语言是zh-cn,那么在请求访问某个多语言版本的网站的时候就返回zh-cn版本的网站页面。

列出一些常见的语言标识标签 ,zh-cn(中文简体)/zh-hk(香港繁体)/zh-tw(台湾繁体) 、 en-us(美式英语)/en-ie(爱尔兰英语)

语言标识标签格式:例如 zh-cn  ‘ - ’ 符号前边的zh 表示语言的种类-中文,后边的cn表示使用区域  大陆。

用户可能同时设置多种语言环境,这时浏览器发送请求的时候,accept-language会带上所有的语言类型,语言类型有一个权值,服务器会根据权值的大小来优先显示。

zh-CN,zh-TW;q=0.8,zh-HK;q=0.6,zh-MO;q=0.4,zh-SG;q=0.2  ,我同时设置了这么多语言类型 zh-cn默认的q值为1 既最大 后边依次是zh-tw q=0.8

这里的q值不是固定的,是根据用户添加语言类型的先后顺序排列的。

当我把zh-tw上移到第一位的时候,zh-tw的q值就为1.

由于浏览器的默认首选语言类型这个是用户可以自定义的,但是我们也不可能去要求那些浏览者去设定自己浏览器的语言类型,这个时候只用accept-language 判断也不能绝对的显示用户想使用的语言类型。

使用cookie ,以根据用户的喜欢显示语言类型,好处是在用户浏览器语言类型不是他想使用的时候,可以根据用户的cookie信息判断要选取的语言类型。

简单的解决办法就是利用Accept-Language+Cookie综合判断


让我们看看Facebook的实际效果吧,首先设置下Chrome的首选语言为日语


访问Facebook,首页默认显示日语,手工选择右下的中文(简体)后再次访问就会自动跳转中文页面


查询Facebook的Cookie可以看到增加了一个locale=zh_CN的字段


回过头来看看淘宝首页的逻辑判断需要在Nginx服务器上写一个简单的判断


OK,大功告成…这个配置目前针对港澳台的服务器生效,如果想看看实际效果欢迎绑定以下Hosts访问

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值