最近公司的官网需要做国际化,提出的需求是要实现中英文切换,所以我选择i18n 这个插件
1、先下载i18n 插件
https://github.com/jquery-i18n-properties/jquery-i18n-properties
![](https://img.haomeiwen.com/i18307239/887dbc27d70b9f06.png)
我们这里只需要把 jquery.i18n.properties.js 文件拷贝到我们的项目中即可。
2、项目结构
js文件夹:在项目中引入jQuery,因为是基于JQuery的,和刚刚下载的 jquery.i18n.properties.js
![](https://img.haomeiwen.com/i18307239/78d3b196e77b5422.png)
3 、新建一个语言包文件夹
![](https://img.haomeiwen.com/i18307239/e48a640e1215d28c.png)
1、文件夹名是自己取的名字(lang),随便取什么都行,但是后面引入时,要一致。
2、在文件夹下面手动新建你所需要的语言包,我这边是中文和英文。(注意:文件名要规范,文件名_国家代号.properties。例如:strings_en.properties)
![](https://img.haomeiwen.com/i18307239/42f14af722b3a031.png)
![](https://img.haomeiwen.com/i18307239/358c1f18d4596974.png)
4、代码
<html lang="en">
<head>
<meta charset="UTF-8">
<title>国际化</title>
<script src="./js/jquery-3.4.1.js"></script>
<script src="./js/jquery.i18n.properties.js"></script>
</head>
<body>
<button id='btn' data-locale="BtnChange">切换语言</button>
<div>
<p data-locale="Login">登录</p>
<p data-locale="UserName">用户名:</p>
<p data-locale="Password">密码:</p>
</div>
<script type="text/javascript">
isEng = true
btn.onclick = function () {
if (!isEng) {
loadProperties('en');
} else {
loadProperties('zh');
}
isEng = !isEng
}
function loadProperties(lang) {
$.i18n.properties({
name: 'strings', //资源文件名称 , 命名格式: 文件名_国家代号.properties
path: 'lang/', //资源文件路径,注意这里路径是你属性文件的所在文件夹,可以自定义。
mode: 'map', //用 Map 的方式使用资源文件中的值
language: lang, //这就是国家代号 name+language刚好组成属性文件名:strings+zh -> strings_zh.properties
callback: function () {
$("[data-locale]").each(function () {
console.log($(this).data("locale"));
$(this).html($.i18n.prop($(this).data("locale")));
});
}
});
}
loadProperties('en');//调用
</script>
</body>
</html>
5、demo的下载地址
链接:https://pan.baidu.com/s/1rQ3mwQhw84rIIM5-_G_sOA
提取码:bozt
6、项目过程中遇到的bug
1、切换中英文会遇到跨域问题
![](https://img.haomeiwen.com/i18307239/9a253678e3f47e4f.png)
项目上线了就自然没有跨域
调试过程可以使用vscode 的Open with Live server 打开项目
![](https://img.haomeiwen.com/i18307239/03e7d6ad4a7dc6f5.png)
![](https://img.haomeiwen.com/i18307239/44576d745204503c.png)
出现这样的情况多半是引入的路径不正确
![](https://img.haomeiwen.com/i18307239/1ce893c9c289bf12.png)
网友评论