什么是多语言?阅读原文我们平时访问一些文档类网站的时候,经常可以看到页面右上角有一个下拉框,可以选择当前页面支持的语言,可以将整个网页的内容切换到选择后选择的语言。这是项目中的Multilingual,可以根据浏览器请求发送的语言类型在服务端设置多语言,也可以在请求服务端时返回多种语言,根据权重和浏览器支持情况选择渲染。功能描述本文中,我们通过客户端向服务端发送请求,告诉服务端客户端支持的语言和权重,服务端根据语言类型和返回语言包并返回对应语言的内容客户端发送的重量。在这个过程中,客户端需要使用请求头Accept-Language向服务端发送请求,在value中设置语言类型和权重,usedbetweenlanguages,separated,usebetweenlanguages和weights;分隔,权重用q表示,与值用=分隔,如果权重值为1,可以省略(最大值),值的格式为zh-CN,zh;q=0.7,en;q=0.8,fr;q=0.1。服务器响应时,应该通过响应头告诉浏览器返回的内容是什么语言。响应头为Content-Language,取值格式为zh-CN,en。多种语言用,隔开。server的实现//文件:server.jsconsthttp=require("http");constquerystring=require("querystring");//语言包letlanguagesPackage={"zh-CN":"Hello",en:"Hello",fr:"Bonjour"};//默认语言为英文languagesPackage.defaultLanguage="en";//创建服务器constserver=http.createServer((req,res)=>{//获取请求头中的语言和权重letlanguages=req.headers["accept-language"];//如果客户端设置了语言if(languages){//解析出的语言是[{name:'zh-CN',q:1},{name:'en',q:'0.8'}]formatletlans=languages.split(",").map(lang=>{let[name,q=1]=Object.keys(querystring.parse(lang.tirm(),";q="));return{name,q};}).sort((a,b)=>b.q-a.q);//并按权重倒序排序//循环检测languagesPackage是否有客户端语言for(leti=0;i
