前端多语言的切换

前端开发中多语言的切换,可使用js动态替换内容

1、在用户点击切换语言后,把选择的语言版本保存在cookie中

//写入cookie函数
function setCookie(name,value)
{var Days = 30;var exp = new Date();exp.setTime(exp.getTime() + Days*24*60*60*1000);document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}//获取cookie
function getCookie(name)
{var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))return unescape(arr[2]);elsereturn null;
}//setCookie('lan','hk');    繁体中文
//setCookie('lan','cn');    简体中文
//setCookie('lan','en');    英文
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2、在包含静态文本的标签中,添加一个属性:set-lan=”html:name” 
属性值中的html代表内容的位置,name代表要替换的文字的标识 
例如:

<span set-lan="html:name">名字</span>
<input type="text" value="名字" set-lan="val:name" />这些就需要前端工程师在开发过程中添加进去,并且,要切换语言文字的外面都必须要有一个标签包裹,否则无法进行切换;
如:
<span set-lan="html:name"><i class="icon"></i>名字</span>
这样的代码,是无法把“名字”替换成“Name”的,会把“名字”前面的i标签也一起替换掉,如果不想把i标签也替换掉,就要在“名字”外面添加一个标签,改成:
<span><i class="icon"></i><lan set-lan="html:name">名字</lan></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3、定义3个语言的标识+内容的json字符串

var cn = {"name" : "姓名","tel" : "电话","email" : "邮箱",};var hk = {"name" : "姓名","tel" : "電話","email" : "郵箱",};var en = {"name" : "Name","tel" : "Tel","email" : "Email",};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4、遍历带set-lan属性的标签,进行文本替换

$('[set-lan]').each(function(){var me = $(this);var a = me.attr('set-lan').split(':');var p = a[0];   //文字放置位置var m = a[1];   //文字的标识//用户选择语言后保存在cookie中,这里读取cookie中的语言版本var lan = getCookie('lan');//选取语言文字switch(lan){case 'cn':var t = cn[m];  //这里cn[m]中的cn是上面定义的json字符串的变量名,m是json中的键,用此方式读取到json中的值break;case 'en':var t = en[m];break;default:var t = hk[m];}//如果所选语言的json中没有此内容就选取其他语言显示if(t==undefined) t = cn[m];if(t==undefined) t = en[m];if(t==undefined) t = hk[m];if(t==undefined) return true;   //如果还是没有就跳出//文字放置位置有(html,val等,可以自己添加)switch(p){case 'html':me.html(t);break;case 'val':case 'value':me.val(t);break;default:me.html(t);}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

以上是html中的文字替换,但是写在js中的文字怎么办? 
可以定义一个函数,来读取

function get_lan(m)
{//获取文字var lan = getCookie('lan');     //语言版本//选取语言文字switch(lan){case 'cn':var t = cn[m];break;case 'hk':var t = hk[m];break;default:var t = en[m];}//如果所选语言的json中没有此内容就选取其他语言显示if(t==undefined) t = cn[m];if(t==undefined) t = en[m];if(t==undefined) t = hk[m];if(t==undefined) t = m; //如果还是没有就返回他的标识return t;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

那么在js中使用的文字就只要用此函数来读取就可以了 

alert('姓名');
改成
alert(get_lan('name'));
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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

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

相关文章

chatgpt赋能python:Python动画制作指南:从入门到精通

Python动画制作指南&#xff1a;从入门到精通 Python作为一种易学易用的编程语言&#xff0c;在数据分析、机器学习等领域已经得到广泛应用。但是你知道吗&#xff1f;Python还可以用来制作动画&#xff01;本文将为你介绍如何用Python制作动画&#xff0c;从入门到精通&#…

吴恩达和OpenAI的《面向开发者的ChatGPT提示工程》精华笔记

《ChatGPT Prompt Engineering for Developers》 面向开发者的ChatGPT提示工程 shadow 趁着假期&#xff0c;学习了prompt课程&#xff0c;做了一些精简和关键知识点的梳理&#xff0c;分享给大家。 LLM 可完成的任务 包括: 总结&#xff08;如总结用户评论&#xff09; 推断&a…

刚刚,吴恩达 ChatGPT 新课三连发!

你有没有想过&#xff0c;你可以自己构建一个AI系统&#xff0c;或者开发一个使用大语言模型&#xff08;LLM&#xff09;的应用&#xff0c;甚至理解并创建扩散模型&#xff1f;我在吴恩达的三门新课程中找到了答案&#xff0c;这些课程让我看到了AI的无限可能性。 好消息&…

AI大神吴恩达与OpenAI官方合作推出的ChatGPT提示工程课,到底在讲什么?

ChatGPT提示工程课程&#xff0c;吴恩达&OpenAI 概述 本课程将着重介绍指令调优LM的开发最佳实践&#xff0c;以帮助开发人员利用LM技术构建聊天机器人等应用程序。 亮点 &#x1f4da; LM可用于快速构建软件应用程序&#xff0c;API可以使开发人员非常快速地构建。&#x…

吴恩达ChatGPT课程最新中文版,已突破3.2k Star!

Datawhale开源 吴恩达ChatGPT课程系列&#xff0c;中文版 项目背景 一个月前&#xff0c;DeepLearning.ai 创始人吴恩达联合 OpenAI 推出入门大模型学习的经典课程《ChatGPT Prompt Engineering for Developers》&#xff0c;深入浅出地介绍了对于开发者&#xff0c;如何构造 …

【ChatGPT】吴恩达教程笔记(预备篇)

本文概要 众所周知&#xff0c;吴恩达老师与OpenAI联合推出了一门面向开发者的Prompt课程&#xff08;https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers &#xff09;&#xff0c;时隔几天&#xff0c;吴恩达老师发推说已经有超过20万人…

100个python算法超详细讲解:双色球

完整版下载超详细Python算法案例讲解100例.zip-Python文档类资源-CSDN下载 1&#xff0e;问题描述 编写程序模拟福利彩票的双色球开奖过程&#xff0c;由程序产生出6个红色 球和1个蓝色球。 要求&#xff1a; 1&#xff09;每期开出的红色球号码不能重复&#xff0c;但蓝色球可…

软件测试计划包括哪些内容,测试计划如何编写。分享测试计划模板

相信大多数的软件测试工程师都听说过或者简单了解过测试计划&#xff0c;但是你真的知道什么是测试计划么&#xff1f;你真的知道如何编写测试计划么&#xff1f; 大多数人应该是一脸茫然。 百度的结果五花八门&#xff0c;有没有相对规范的标准呢&#xff1f;答案是没有&…

如何编写一份高质量的测试计划

一、为何要编写测试计划&#xff1f; 1.1 编写测试计划的目的 编写测试计划是测试过程中非常有必要的高效手段&#xff0c;测试计划不仅仅能够带来效率的提升&#xff0c;更能从基础上保证测试质量&#xff0c;编写测试计划主要会有以下益处&#xff1a; &#xff08;1&#xf…

软件测试计划怎么写?模板在这呢

目录 第1章 引言 第2章 项目背景 第3章质量目标 第4章 资源需求 第5章 测试策略 第6章 测试计划 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&#xff1a;配套学习资料和视频教学 第1章 引言 1.1目的 简述本计划的目的&#xff0c;旨…

一个程序员的年度计划

1.如何设计2016年的年度计划&#xff1f; 2.SMART原则是什么意思&#xff1f; 3.如何制定学习计划&#xff1f; 这两年&#xff0c;我一直非常感恩&#xff0c;也特别幸运的是2015年我的身体能够好起来&#xff0c;能够有机会回到我最热爱的工作中&#xff0c;所以从年初在医生…

2022卡塔尔世界杯来了,谁是你心中的夺冠热门球队?

2022年卡塔尔世界杯揭幕战将在北京时间11月21日零点上演&#xff0c;卡塔尔世界杯是首次在北半球冬季举行、首次由从未进过世界杯的国家举办的世界杯足球赛。800余名球员正陆续奔赴卡塔尔&#xff0c;在接下来近一个月时间里&#xff0c;他们将为象征足球界最高荣誉的大力神杯展…

基于QT的海康威视网络摄像头的二次开发

、摄像头激活 海康威视官网https://www.hikvision.com/cn/ 首先&#xff0c;在官网的服务支持->工具软件找到HiTools&#xff0c;下载设备网络搜索工具 然后用网线连接电脑和摄像头&#xff0c;并连接上电源&#xff0c;打开设备网络搜索工具&#xff0c;直接设置密码&…

诚迈科技携智达诚远出席高通汽车技术与合作峰会

5月25日至26日&#xff0c;诚迈科技及旗下的智能汽车操作系统及中间件产品提供商智达诚远作为高通生态伙伴&#xff0c;亮相首届“高通汽车技术与合作峰会”&#xff0c;通过产品展示和主题演讲呈现了基于高通骁龙数字底盘的最新智能座舱技术成果&#xff0c;共同展望智能网联汽…

Camera | 11.瑞芯微摄像头采集图像颜色偏绿解决笔记

前言 在实际调试基于瑞芯微平台的camera过程中&#xff0c;发现显示的图片发绿&#xff0c; 现在把调试步骤分享给大家&#xff1a; 1、修改iq文件 sdk中位置&#xff1a; external/camera_engine_rkaiq/iqfiles/isp21/ov13850_ZC-OV13850R2A-V1_Largan-50064B31.xml【现在…

关于北京君正:带ANC的2K网络摄像头用户案例

如果远程办公是您的未来&#xff0c;或者您经常通过视频通话与远方的朋友和亲戚交谈&#xff0c;那么您可以考虑购买网络摄像头以显著改善您的沟通。Anker PowerConf C200是个不错的选择。 Anker PowerConf C200专为个人工作空间而设计&#xff0c;能够以每秒30帧的速度拍摄2K…

我国车载监控市场迎来增速,智能化监管成为主要需求

一、全球车载监控市场趋势 车载监控市场可以按照解决方案、车辆类型和应用场景进行细分。基于该解决方案&#xff0c;市场细分为BSD盲点检测系统、停车辅助系统、车道偏离告警系统、抬头显示设备和全球定位系统。根据车辆类型划分&#xff0c;该市场可分为商用车和乘用车。而根…

可视化网络监控软件OpManager获选″IT运维产品之星”

中国矿业报社的IT基础设施由分布式网络中的服务器和数据中心等组成。网络运营团队每天要监控服务器、网络、虚拟设备、存储系统、数据库、文件和文件夹以及URL等&#xff0c;需要花费大量时间来解决故障问题。这些工作给IT管理部门带来严峻的考验。 OpManager以全面的网络监控…

【中控技术加持荣信化工智能工厂,尽显科技范儿】

随着化工行业智能化浪潮的推进&#xff0c;紧紧围绕着“安全高效、绿色节能”建设目标&#xff0c;内蒙古荣信化工有限公司&#xff08;下简称“荣信化工”&#xff09;率先启动智能工厂建设。目前&#xff0c;该公司智能工厂覆盖的5个层级、36个子项建设全部验收合格&#xff…

图像多功能实时智能处理产品——西安恒景通视觉科技有限公司

公司简介 西安恒景通视觉科技有限公司是一家以互联网为载体&#xff0c;面向全国&#xff0c;提供人工智能与计算机视觉软件综合服务平台的高科技研发公司。公司现有研发人员70余人&#xff0c;具有较强的科研开发能力&#xff0c;特别是在智能图像信息处理软件领域具有独特的…