HTML界面多语言切换
我在做个人网站时考虑到多语言转换的问题,最后在JS文件中将所有文字数据储存然后设置HTML中的class与key属性来达到多语言效果。当然,还有一个别的方法,就是所有有文字内容的div都用不同语言写一遍然后加上相应的class,再利用CSS隐藏或显现相应的内容。本文只介绍第一种方法。(对制作个人网站感兴趣的可以查看我的前一篇博客《利用GitHub Pages和Bootstrap创建个人网站》。)
首先附上一个JSFiddle的效果展示链接:https://jsfiddle.net/20zo4wg8/4/,
能看Youtube的可以看这个教程视频:https://www.youtube.com/watch?v=Tjt_u_OSh40,
HTML
你需要将所有想要翻译的模块部分的class中加上lang,然后自定义key。还需要有设置语言的按钮,class中添加translate,id用相应的代号。
<button class="translate" id="en">English</button>
<button class="translate" id="zh">Chinese</button> <ul>
<li class="lang" key="HOME"></li>
<li class="lang" key="ABOUT"></li>
<li class="lang" key="CONTACT"></li>
</ul>
JS
以下操作会自动检测浏览器设置的语言,首次访问时会使用该语言(该例子中只有英语或中文),如果浏览器设置的语言不是英语或中文,则默认为英语,然后会保存网页的语言在浏览器中,这样下次用户再访问你的网站时就会显示之前退出时设置的语言。
var arrLang = {
"en": {
"HOME": "Home",
"ABOUT": "About Us",
"CONTACT": "Contact Us",
},
"zh": {
"HOME": "首页",
"ABOUT": "关于我们",
"CONTACT": "联络我们",
}
}; // The default language is English
var lang = "en";
// Check for localStorage support
if('localStorage' in window){
var lang = localStorage.getItem('lang') || navigator.language.slice(0, 2);
if (!Object.keys(arrLang).includes(lang)) lang = 'en';
} $(document).ready(function() {
$(".lang").each(function(index, element) {
$(this).text(arrLang[lang][$(this).attr("key")]);
});
}); // get/set the selected language
$(".translate").click(function() {
var lang = $(this).attr("id"); // update localStorage key
if('localStorage' in window){
localStorage.setItem('lang', lang);
console.log( localStorage.getItem('lang') );
} $(".lang").each(function(index, element) {
$(this).text(arrLang[lang][$(this).attr("key")]);
});
});
因为JS文件中用到了jQuery,所以你需要下载它(http://jquery.com/download/)然后在HTML中引入,或者直接在HTML文件中添加以下代码。
<script src="jquery-3.3.1.min.js"></script>
其中的3.3.1为目前最新版本,你可以自行修改为最新版本号。
HTML界面多语言切换的更多相关文章
- c#: 界面多语言动态切换简单实现
终于有空整理下多语言实现思路.查阅已有方案,有用不同resx文件的,有每个控件动态设置的,有用反射去整的,颇为繁琐. 结合项目中实现方法,并做简化,实现通用的多语言切换方案,以做备忘. 它支持语言自定 ...
- Android app应用多语言切换功能实现
最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...
- QT实现多语言切换
功能需求: 网盘客户端要能够实现多国语言的切换,第一版要支持中.英文的切换.在实现过程中感觉QT对多国语言的支持还是很不错的,制作多语言包很方便,切换的逻辑也很简单.下面就来看一下QT中如何制作多语言 ...
- 在使用Qt5.8完成程序动态语言切换时遇到的问题
因为之前了解过一些Qt国际化的东西,所以在写程序的时候需要显示给用户的字符都使用了 tr(" ")的形式,然后使用 Qt Linguist得到相应的 qm(Qt message)文 ...
- 【大话QT之十四】QT实现多语言切换
功能需求: 网盘client要可以实现多国语言的切换,第一版要支持中.英文的切换. 在实现过程中感觉QT对多国语言的支持还是非常不错的.制作多语言包非常方便.切换的逻辑也非常easy. 以下就来看一下 ...
- 【winfrom-多语言】实现多语言切换:使用资源文件
使用资源文件实现多语言切换. 1. 新建一个Form,名为FrmMain. 在界面添加一个MenuStrip和一个Button. 并设置好控件的文本和位置.(Language=(Default)) 2 ...
- Delphi XE2 之 FireMonkey 入门(18) - TLang(多语言切换的实现)
一个小小的 TLang 类, 实现多语言切换, 挺好的. 它的工作思路是: 1.首先通过 AddLang('语言代码') 添加语言类别, 如: AddLang('en').AddLang('cn'). ...
- Android原生多语言切换方案,兼容Android10
前言 一个应用若需要国际化,至少需要支持中文和英语这两种语言,而同时随着谷歌的系统的更新,安卓系统可以设置当前语言的首选语言.因此,本文立足于此,多语言的切换方案为:App固定的文字内容,跟随系统,中 ...
- DataGrid 列头实现国际化语言切换
<DataGrid> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" Width= ...
随机推荐
- 从零学习Fluter(六):Flutter仿boss直聘v1.0重构
今天继续学习flutter,觉得这个优秀的东西,许多方面还需要完善,作为一个后来者,要多向别人学习.俗话说,“学无先后,达者为师”.今天呢,我又重新把flutter_boss这个项目代码 从头到脚看了 ...
- mssql sqlserver with cte表达式(递归)找出最顶值的方法分享
摘要: 下文通过递归的方式找出最顶级部门的方法分享,如下所示: 实验环境:sql server 2008 R2 下文通过cte-with表达式实现递归,获取一个公司的顶级部门,如下所示 例:部门表 c ...
- Java集合框架体系JCF
Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...
- mysql 导出数据报错: row must be in range 0-65535
数据导出时,出现错误: 一脸懵逼,百度了下,是导出数量有格式有限制.一开始导出为excel表格式,后改为文本格式,不会报错.
- vs code使用Git
做一夜的搬运工:https://www.cnblogs.com/richard1015/p/8336429.html
- 数据库MySQL和Redis实践
1.关于数据库设计的那些事 2.MySQL 3.Redis
- openstack安装过程报错
问题一 .执行启动neutron服务报错[root@localhost ~]# systemctl start neutron-server.service Job for neutron-serve ...
- docker企业实战视频教程
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...
- MyBatis 3源码解析(四)
四.MyBatis 查询实现 Employee empById = mapper.getEmpById(1); 首先会调用MapperProxy的invoke方法 @Override public O ...
- monkeyrunner简介
monkeyrunner简介 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Py ...