Accept-Language与多语言网站应用

news/2024/5/10 15:11:01/文章来源:https://blog.csdn.net/thlzjfefe/article/details/105412856

Accept-Language

我们能从请求头中获取到浏览器愿意接收的语言类型

 

let http = require('http');
http.createServer(function(req,res){res.end(req.headers['accept-language']);
}).listen(8080);<<< 输出
zh-CN,zh;q=0.9

其中多种语言之间用,隔开,而每种语言又可用;分隔,分隔的前面为该种语言的简称,后面为其权重(优先级)。

image

 

langPackage/语言包

一般支持多语言的网站,其服务器都存储了多种语言包。当客户端向其请求时,服务器会查看请求头看一看客户端所愿意支持的语言,然后在自己的语言包中进行查找。客户端给的接收清单中包含每一种语言的权重,服务器会返回客户端它有的且客户端相对更喜欢的那一种。如果服务器所存储的语言包和客户端给的清单匹配不上,那么一般来说会使用服务器所预置的默认语言包。

语言包示例

 

let langPack = {"zh":{title:'哈啰 世界!'},"en":{title:"hello world!"}
}

封装 getLang

该方法能自动识别客户端愿意接收的语言类型,然后从服务器所储存的多种语言包中选择一种最合适的来返回数据。

最终使用效果像这样

 

getLang(req,'title')

设计思路

将accept-language解析成一个数组,并按照权重进行排序

首先需要对accept-language进行解析,将其解析成一个个对象。每个对象代表一种语言,它有两个属性:

  • langType:语言的类型

  • q:语言的权重
    帮助我们筛选出客户端相对较喜欢的那一种语言

接着将每个对象放在一个数组中,按照权重从大到小排列。

选择语言类型

然后依次将数组成员的langType和服务器中所储存的语言包进行匹配,直到匹配成功或遍历结束,如果遍历结束时仍没有匹配成功则按照服务器的默认的语言类型来返回数据。

返回索要的数据

最后我们选择了一种语言,我们可以通过getLang方法的第二个参数来决定从这个语言包中拿什么数据。

源码

 

function getLang(req,dataKey){let langPack = {'zh':{data:'哈啰 世界!'},'en':{data:'hello world!'}};//-------------------------------------------------let acceptLanguage = req.headers['accept-language'],langs = acceptLanguage.split(','),langType = 'en';// 将accept-language解析成一个数组,并按照权重进行排序langs = langs.map(function(lang){let [langType,langQ] = lang.split(';');let q = langQ?parseFloat(langQ.split('=')[1]):1;lang = {langType,q};return lang;}).sort((a,b)=>b.q-a.q);// 选择语言类型for(let i=0;i<langs.length;++i){let curType = langs[i].langType;if(langPack[curType]){langType = curType;break;}}// 返回索要的数据return langPack[langType][dataKey];
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_792246.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端页面有那个html还是jsp(扩展ajax对seo的影响)

2019独角兽企业重金招聘Python工程师标准>>> html&#xff1a;前端页面给普通用户看的&#xff0c;访问速度要快&#xff0c;能做到前后端分离 使用html&#xff0c;比如是登录注册功能&#xff0c;我们提交的表单数据从servlet回来的数据不能直接放到html中显示。我…

《时代》评出50个最酷网站 25个网站非上不可

从2003年开始&#xff0c;《时代》周刊每年都会评选出一系列最受欢迎的网站&#xff0c;在这些网站身上我们不难看出互联网的变革与发展&#xff0c;同时清楚的认识到什么样的网站能够引领潮流。北京时间7月10日&#xff0c;美国《时代》周刊近日公布了2007年50个最受欢迎的网站…

19款网站常见多图片自动轮播banner源码

收集到的,希望能对大家有用 19款网站常见多图片自动轮播banner源码http://bbs.blueidea.com/thread-2729702-1-1.html点击图片进入下载页 点击文字查看效果演示韩国滚动图片banner17(仿三维空间前后替换)韩国滚动图片banner16(左右滚动)韩国滚动图片banner15(定时滚动)韩国滚动…

asp.net printbodyhtml.innerhtml 该内容不是文本_杭州诠网科技解析优化要如何避免网站内容的雷同?...

原标题&#xff1a;杭州诠网科技解析优化要如何避免网站内容的雷同&#xff1f;现在很多企业网站都是同一套网站代码做出来的&#xff0c;如果一套代码用的人多了&#xff0c;那么势必会导致网上很多雷同的网站&#xff0c;那么企业要如何避免网站内容重复呢&#xff0c;如何做…

网站能正常登陆但是点进去出现404错误_虚拟主机迁移网站教程如何操作?虚拟主机迁移网站难吗?...

虚拟主机迁移网站教程如何操作&#xff1f;虚拟主机迁移网站难吗&#xff1f;虚拟主机是现在很多企业网站建设的优先选择&#xff0c;因为虚机主机建站的成本是比较小的&#xff0c;也能满足企业网站的日常需要。但是总有一些站长租用的虚拟主机会出现各种问题&#xff0c;导致…

健康世界官方网站绿色健康知识门户网站源码-www.jiankangshijie.com

健康世界官方网站绿色健康知识门户网站源码 数据量&#xff1a;37000条左右 在线演示&#xff1a;健康世界官方网站 http://www.jiankangshijie.com 程序大小&#xff1a;495M 模板&#xff1a;DIVCSS 地址&#xff1a;http://www.bbscms.net/html/cmsmb/dedecms/20111231/4506…

php8网站,PHP8新特性解读(开发代码实例演示)

“本文主要内容为解读PHP8.0的主要新特性”PHP8新特性前言PHP8在2020年11月26日正式发布&#xff0c;又一个里程碑到来。根据官网的信息目前已经发布到了8.0.2版本&#xff0c;但目前许多的项目还是保持在5.6版本&#xff0c;旧的不去新的不来&#xff0c;如有实际需要该升级升…

网盘网站需要多大的服务器,一个网站服务器需要多大内存

一个网站服务器需要多大内存 内容精选换一换使用华为云备案系统时&#xff0c;全国互联网安全管理服务平台会有一些限制条件&#xff0c;具体限制条件请参见表1。一个网站可以绑定多个域名。注册多个不同的域名&#xff0c;并且将这些域名绑定到同一个网站上&#xff0c;可以让…

10个帮程序员减压放松的网站

同学们工作之余&#xff0c;不妨放下微博跟朋友圈&#xff0c;来这10个网站感受一下看着就醉了的情境&#xff1a;「念完往上一推音乐键&#xff0c;我往后一靠&#xff0c;潮乎乎的软皮耳机里头&#xff0c;音乐排山倒海。」今天推荐的网站&#xff0c;利用代入感强的图片与音…

抓取网站中的视频

最近想从别人家的网站宣传片上提取一些素材&#xff0c;借鉴一下。之前也没有弄过&#xff0c;但是我的思路就是从网页的缓存中查找播放完后缓存的视频。然后失败了。然后又想到了网页打开源代码&#xff0c;然后查找到网页源代码饮用的视频的路径&#xff0c;然后找到视频。然…

个人网站上线

网址&#xff1a; http://cross.withiter.com/ 花了2周业余时间&#xff0c;终于可以上线了。网站用的最简单的JSP Servlet MongoDB开发的。很简洁。贴几张截图吧&#xff1a; 转载于:https://www.cnblogs.com/snake-hand/p/3188397.html

win7安装IIS及将网站发布到IIS上

1. WIN7安装IIS: 控制面板----程序和功能-----打开或关闭windows功能&#xff0c;如图 展开Internet信息服务&#xff0c;按照下图方式进行选择&#xff0c;然后单击“确定”&#xff0c;等待几分钟就安装好了 2. 注册IIS 因为我们是先安装的VS&#xff0c;后安装的IIS&#x…

WordPress 3.8 中文正式版下载 - 建站与学习首选!全球最流行的开源PHP博客网站程序...

转载自&#xff1a;http://www.iplaysoft.com/wordpress.html 话说虽然我一直都在网站底部写着本站基于 WordPress 构建&#xff0c;但时常还是有人问我网站是用什么程序建的&#xff0c;还真有点无语。看到 WP 又有新版本发布&#xff0c;那就顺势发篇文推荐下它吧。 WordPres…

在IIS6,7中部署ASP.NET网站

查看web.config文件 ASP.NET网站与一般的桌面程序不同&#xff0c;不是拷贝过来就能运行的&#xff08;数据库连接除外&#xff09;。 要想运行它&#xff0c;通常需要一些配置过程。但是&#xff0c;我们到底需要配置什么呢&#xff1f;答案是&#xff1a;查看web.config web.…

【网站太慢怎么破?】从原理到分析到解决

#客户原创#【网站太慢怎么破&#xff1f;】从原理到分析到解决&#xff0c;前端和服务器角度优化网站全攻略~~http://weibo.com/1644971875/BkcBNm4sj &#xff08;这个绝对重磅推荐啊&#xff01;&#xff09; 转载于:https://www.cnblogs.com/aliyunblogs/p/3939170.html

各大招聘网站信息实时查询浏览

最近听得较多的跳槽、面试之类的&#xff0c;相信很多园友也开始蠢蠢欲动了&#xff0c;有的甚至早已经开始了。最近我也在琢磨着换工作的事。说得俗套点&#xff0c;人在外面不就为了那么点工资么。现在找工作大部分都是通过在网上投简历&#xff0c;然后等电话 通知面试的。然…

纯CSS一分钟让网站拥有暗黑模式切换功能

本文字数&#xff1a;6784字 预计阅读时间&#xff1a;17分钟 前言 暗黑模式这个概念最早起源于MacOS系统的Mojave&#xff0c;提供浅色主题和深色主题两种皮肤供用户选择&#xff0c;深色主题就是我们常说的暗黑模式。为了眼睛健康&#xff0c;笔者在手机、平板和电脑上都选择…

30个让人兴奋的视差滚动(Parallax Scrolling)效果网站--转

视差滚动&#xff08;Parallax Scrolling&#xff09;是指让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来非常出色的视觉体验。作为今年网页设计的热点趋势&#xff0c;越来越多的网站应用了这项技术。今天这篇文章就与大家分享30个视差滚动效果的…

前端通用SEO技术优化指南

本文字数&#xff1a;2585字预计阅读时间&#xff1a;8分钟背景近期团队开发的新产品的官网上线了&#xff0c;随之而来的问题就是如何让网站更快更好的传播出去。当然SEO就是最常见的手段之一&#xff0c;对官网的SEO工作有利于产品的网络传播和分享。有的团队会有专人负责SEO…

Windows Server 2008 R2服务器在IIS上添加网站

1、安装网站之前&#xff0c;我们先需要确定aspx模块是否安装成功&#xff0c;在管理工具下找到IIS管理器&#xff0c;在IIS管理器下找到应用程序池&#xff0c;单击右键选择添加应用程序池&#xff0c;即可弹出相关的弹出框。 我们看到.NET Framework版本中看到有2.0和4.0版本…