jquery.i18n.properties.js使用及seo优化

news2024/11/18 13:33:32

使用方法

具体使用方法可以参考jquery.i18n.properties的使用讲解与实例 这篇博客,这里仅简单示例
1、下载 jquery.i18n.properties.js文件,地址: jquery.i18n.properties.js
2、设创建语言properties文件,如:strings_en.properties
文件结构: key:value 结构
如下:

Home = Home
Service Features = Service Features
Download link = Download link
About Us = About Us

3、在html中使用

<p data-locale="About Us"></p> 
<!-- 其中data-locale的值就是你在properties文件中设置的key -->

4、切换语言

$.i18n.properties({
    name: 'strings', //默认使用的properties文件名
    path: 'i18n',//properties文件所处相对路径
    mode: 'map',
    //mode  加载模式
    //“vars”表示以javascript变量和函数的形式使用文件中的key,
    //“map”表示以Map的方式使用文件中的key,
    //“both”表示可以同时使用两种方式。
    //如果资源文件中的key包含javascript中的关键字,只能使用map。默认值是vars。
    cache: true,//是否缓存,默认false,false标识每次都加载新的properties文件
    async:true,//是否异步(这是一个坑,后面会讲)
    language: 'en',
    //language :当前需要使用的properties文件名,如果你的文件名为strings_en.properties的话,就en,源码会帮你平凑成strings_en.properties,即上面的name+language+.properties,所以命名需要注意一下
    callback: function () {//回调,帮你把页面上的带有data-locale属性的标签内容替换
      $("[data-locale]").each(function () {
          $(this).html($.i18n.prop($(this).data("locale")));
      });
    }
});

踩过的坑

1、一次性加载全部的properties语言文件

如果直接使用这个js库的话,那么每次页面渲染都会直接加载所有的语言properties文件,导致页面渲染速度变慢,卡顿
可以在jquery.i18n.properties.js源码中找到下图所示代码片,删除空框中的代码
在这里插入图片描述
使得代码仅加载 $.i18n.properties方法中的name默认文件,相当于language没用了

 $.i18n.properties({
            name: 'strings_en',
            path: 'i18n',
            mode: 'map',
            cache: true,
            async:true,
            language: lang,
            callback: function () {
                 $("[data-locale]").each(function () {
                    $(this).html($.i18n.prop($(this).data("locale")));
                });
            }
        });

2、Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/.

即使用了已弃用的 API,一般seo报这种错误,基本是你使用了同步的异步请求,这样会阻塞页面渲染,浏览器非常不推荐这样做。
然而我检查了所有我自己写的js文件后,并没有发现有同步的请求,于是就去找引入的外部js,就发现jquery.i18n.properties.js这个文件中,存在async这个属性,默认是false,即默认同步,而源码中也可以看出在这里插入图片描述
所以我们在切换语言的时候,设置async为true

 $.i18n.properties({
            name: 'strings_en',
            path: 'i18n',
            mode: 'map',
            cache: true,
            async:true,
            language: lang,
            callback: function () {
                 $("[data-locale]").each(function () {
                    $(this).html($.i18n.prop($(this).data("locale")));
                });
            }
        });

但是设置完成了之后,发现页面上切换不了语言了,查看控制台发现,语言文件是加载了,就是没有作用到页面上去。经过排查,发现是callback这里没有起作用。于是去查看源码,找到几处i18n返回callback的地方
在这里插入图片描述
在这里插入图片描述
当async为true时,起作用的是第二处的代码块,而由于我们在上一步已经更改了源码,使得language属性不起作用,所以我们还需要更改第二处代码
将代码更改为:

 if (settings.async) {
   if (settings.callback) {
       settings.callback();
   }
}

问题就解决了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue2-org-tree 树型结构的使用

vue2-org-tree 用于创建和显示组织结构树状图&#xff0c;帮助开发者轻松地可视化组织结构&#xff0c;例如公司的层级、部门之间的关系、团队成员等。其主要功能有&#xff1a;自定义节点、可折叠节点、支持拖放、搜索、导航等功能。 这里我们主要使用 vue2-org-tree 进行多次…

苹果平板可以用别的电容笔吗?电容笔和Apple pencil区别

和苹果原装的Pencil相比&#xff0c;这种平替的电容笔并没具备重力压感&#xff0c;只有一种倾斜的压感功能。如果你不经常用来作画&#xff0c;一支普通的电容笔就足够了。不管是用来记笔记&#xff0c;还是用来解决一些数学问题&#xff0c;都能用得上。再说了&#xff0c;即…

ui设计师简历自我评价的范文(合集)

ui设计师简历自我评价的范文篇一 本人毕业于艺术设计专业&#xff0c;具有较高的艺术素养&#xff0c;平时注重设计理论知识的积累&#xff0c;并将理论应用到作品中。了解当下设计的流行趋势&#xff0c;设计注重细节、重视用户体验&#xff0c;对色彩搭配有着浓厚的兴趣&…

Python学习之逻辑中的循环有哪些?

1. for循环 for 循环用于迭代 (遍历)一个序列&#xff0c;例如列表、元组、字符串或字典中的元素。 通常使用 for 循环来遍历可迭代对象中的元素&#xff0c;并对每个元素执行相同的操作。 示例: for item in iterable: # 执行操作2.while循环 -while循环用于在满足某个条件…

新能源车企们在“金九银十”的热潮里改了“策略”?

9月&#xff0c;各大新能源车企销量拉锯战落下帷幕&#xff0c;比亚迪稳坐冠军之位&#xff0c;9月累计销量达286903辆&#xff0c;环比增长18.8%&#xff1b;特斯拉仍旧位列第二&#xff0c;9月销量74073辆&#xff0c;环比增长14.5%&#xff1b;吉利汽车“超车”广汽埃安霸榜…

idea热加载,JRebel 插件是目前最好用的热加载插件,它支持 IDEA Ultimate 旗舰版、Community 社区版

1.如何安装 ① 点击 https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions 地址&#xff0c;下载 2022.4.1 版本。如下图所示&#xff1a; ② 打开 [Preference -> Plugins] 菜单&#xff0c;点击「Install Plugin from Disk…」按钮&#xff0c;选择刚下…

哈希(开放寻址法)代码模板

//开放寻址法 //数组长度一般要开到题目数据范围的2~3倍 #include<iostream> #include<cstring> using namespace std; //null代表无穷大 //最大和最小 //0x3f3f3f3f 1061109567&#xff0c;0xc0c0c0c0 -1061109568 const int N 2e5 3, null 0x3f3f3f3f;//取质…

需要影视解说配音的看过来,用它就对了

近年来&#xff0c;随着影视、动画等领域的快速发展&#xff0c;声音设计和配音成为了影片制作中不可或缺的一环。然而&#xff0c;并非每个人都拥有天赋般的配音技巧。面对这一困境&#xff0c;幸运的是&#xff0c;现在市面上有很多简单免费好用的配音软件&#xff0c;今天就…

gcc编译器和gdb调试工具

gcc编译器 GCC&#xff08;GNU Compiler Collection&#xff09;是一套由GNU计划开发的自由软件编译器集合&#xff0c;它支持多种编程语言&#xff0c;包括C、C、Objective-C、Fortran、Ada和Go等。GCC 是一个功能强大、稳定可靠的编译器&#xff0c;被广泛应用于各种操作系统…

【KOS】安装卸载软件

环境 系统&#xff1a;银河麒麟&#xff08;KOS&#xff09;V10&#xff08;SP1&#xff09;2303 问题 银河麒麟&#xff08;KylinOS&#xff09;原是在“863计划”和国家核高基科技重大专项支持下&#xff0c;国防科技大学研发的操作系统&#xff0c; 后由国防科技大学将品牌…

IDM注册方式

新建一个bat文件&#xff0c;取名IAS_0.8.cmd&#xff0c; 在github上获取脚本内容&#xff0c;地址&#xff1a; https://raw.githubusercontent.com/lstprjct/IDM-Activation-Script/main/IAS_0.8.cmd 也可以直接复制以下内容到IAS_0.8.cmd文件&#xff1a; setlocal Dis…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术深度应用

以地下水数值模拟软件GMS操作为主要授课内容&#xff0c;在教学中强调模块化教学&#xff0c;分为前期数据收集与处理&#xff1b;三维地质结构建模&#xff1b;地下水流动模型构建&#xff1b;地下水溶质运移模型构建和反应性溶质运移构建5个模块&#xff1b;采用全流程模式将…

从0-1,使用腾讯OCR进行身份证识别

目录 1.申请腾讯OCR权限 2.代码思路 3.Postman测试​ 1.申请腾讯OCR权限 获取 secretId 和 secretKey&#xff0c;见上文从0到1&#xff0c;申请cos服务器并上传图片到cos文件服务器-CSDN博客https://blog.csdn.net/m0_55627541/article/details/133902798 2.代码思路 入参…

文字智能适配背景

文字智能适配背景 只需要在文字中加上mix-blend-mode属性即可完成 h1 {height: 30px;text-align: center;color: #fff;font-size: 3em;transition: 0.5s;mix-blend-mode: difference; }

CTF/AWD竞赛标准参考书+实战指南

随着网络安全问题日益凸显&#xff0c;国家对网络安全人才的需求持续增长&#xff0c;其中&#xff0c;网络安全竞赛在国家以及企业的人才培养和选拔中扮演着至关重要的角色。 在数字化时代&#xff0c;企业为了应对日益增长的攻击威胁&#xff0c;一般都在大量部署安全产品、…

【经验分享】如何构建openGauss开发编译提交一体化环境

前文 本文适合对openGauss源代码有好奇心的爱好者&#xff0c;那么一个友好的openGauss源代码环境应该是怎么样的。openGauss的开发环境是如何设置的&#xff1f;openGauss的编译环境是如何构建的&#xff1f;如何向openGauss提交代码&#xff0c;笔者集合官方和几位博主实践提…

SpringFramewrok (1)

1、框架的概念与理解 在现实生活中&#xff0c;框架可以比喻为我们搭建房子的框架。 在框架的基础上&#xff0c;我们可以专注于我们自己的工作&#xff0c;而不用在意这些底层工作如何实现。 框架的优点包括以下几点&#xff1a; 1. 提高开发效率&#xff1a;框架提供了许多…

【C++11】 智能指针

一、为什么需要智能指针&#xff1f; 下面我们先分析一下下面这段程序有没有什么内存方面的问题&#xff1f; int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; }void f() {pair<string, string>* …

Linux编译内核添加Bcache模块

由于Bcache是在linux kernel 3.10之后才加入的&#xff0c;所以要使用Bcache&#xff0c;首先必须确保内核版本至少是3.10或及以上&#xff0c;可以使用uname -a查看内核版本 [rootceph01 ~]# uname -a Linux ceph01 4.18.0-305.3.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC…

打桩机液压系统比例阀放大板

打桩机液压系统主要由液压油箱、液压泵、液压马达、各种阀门、管道、油缸、活塞等组成。 打桩机液压系统以液压油为工作介质&#xff0c;利用液压油的压力能来驱动执行机构完成所需的各种动作。打桩机液压系统采用液体进行驱动&#xff0c;可以使打桩机在开启时迅速达到理想工…