jquery.i18n.properties前端国际化解决方案“填坑日记”
、jquery.i18n.properties通用解决方案关于jquery.i18n.properties的使用网上资料很多比较完整的使用可以参考 这篇 有比较详细的使用说明。这里博主简单概述下过程。回到顶部1、需要引用的js文件先在你的项目文件里面添加如下目录结构首先页面引用的js文件如下script src~/Scripts/jquery-1.9.1.min.js/script script src~/Content/i18n/jquery.i18n.properties.js/script script src~/Content/i18n/language.extensions.js/script其中jquery-1.9.1.min.js和jquery.i18n.properties.js文件是开源组件直接去网上找到即可jquery.i18n.properties.jsjquery.js第三个文件language.extensions.js是我们自定义的js文件如果你将国际化的代码直接写在html页面里面这个文件就是不用的。回到顶部2、html文件和国际化组件的初始化这里直接引用上面示例文章里面的代码首先需要一个切换中英文的标签比如是一个selectselect idlanguage option valuezh-CN中文简体/option option valueenEnglish/option /select然后是一些查看效果的html标签div input typesearch classi18n-input selectnamesearchPlaceholder selectattrplaceholder /div最后就是我们需要封装的language.extensions.js文件的内容了里面做了以下几件事初始化页面的时候去当前域的cookie里面取当前浏览器保存语言的cookie根据取到的当前语言版本去初始化国际化组件然后初始化select组件的选中值注册select组件的change事件根据当前选中的语言更新cookie里面的语言信息然后刷新页面。这个文件的内容这里就不展示了可以参考上面的使用示例文章回到顶部3、资源文件准备根据上面的目录可以看出我们打算将不同的语言的资源文件放到不同语言的文件夹里面这里暂时不分文件所有的语言资源放到一个文件common.properties里面比如内容如下en/common.propertiessearchPlaceholderPlease input serach information signOutLogin Out stationStation partnoPart No descriptionDescription queryQuery pleaseSelectPlease Select addAdd editEdit deleteDeletezh-CN/common.propertiessearchPlaceholder请输入关键字 signOut退出 station站点 partno零件号 description描述 query查询 pleaseSelect请选择 add新增 edit编辑 delete删除貌似大功告成当你down源码直接在google浏览器里面运行的时候你会发现一个跨域的问题。要求你在一种webServer里面去访问.properties文件这个问题你只需要使用任何一种webserver运行即可比如IIS、Apache、Node的web服务器等。博主的代码是在Visual Studio里面跑的所以是基于IIS的当你把代码搬到VS里面跑的时候第一个问题来了。回到顶部二、坑一配置IIS对.properties文件的支持如果本文仅仅是上面的内容是没啥意义的。接下来才是本文要介绍的重点将上述代码直接搬到VS里面运行的时候你会发现第一个问题为什么这里会请求三个properties文件因为jquery.i18n.properties.js组件支持三种类型的命名方式这点很多文章都有介绍组件代码运行的时候会去请求三种规则的properties文件只要找到任何一种规则的文件都可以读取到里面的内容。按照博主上文给出的文件目录根据这个目录那我们通过http://localhost:12770/Content/i18n/zh-CN/common.properties这个url应该能访问到zh-CN/common.properties这个文件可实际情况确实这样对于这种IIS报错404的问题C#程序员肯定是不陌生的无非就两个原因url不正确这个目录下面确实没有找到这个资源文件文件的类型iis默认不支持直接拒绝请求排除了第一个原因那么只可能是第二个原因引起的了。那么我们如何处理呢在网上搜索半天资料找到一种解决方案这样确实能绕过IIS的文件名验证但是改源码不是一个好的解决方案博主有一千个理由来说明改源码的弊端。这种方式肯定不是一个最好的解决方案于是博主决定另辟蹊径。还记得当初博主学习less的时候iis默认也是不支持.less文件的于是我们在web.config里面加了如下一些配置这绝对属于同类型的问题加这个配置是显式告诉IIS我们系统里面某种后缀的文件需要哪种Processer处理器或处理组件去处理受此启发那么我们这里的.properties文件的404问题是不是也可以通过此种方式解决如果需要通过这种思路去解决首要问题是需要找到.properties文件的mimeType博主思考既然是在js里面调用这个.properties文件那么我们是否可以使用JavaScript的处理机制来处理.properties文件呢考虑到上面那种将所有.properties替换成.js的处理方式似乎.properties和.js有很多相似之处于是我们加上如下一条配置得到结果试验成功就是这么简单。当然如果发布到IIS可能需要在IIS的MIME类型里面添加.properties这种类型的映射。好了这个问题就这么愉快的解决了。如果你的WebServer不是基于IIS的可能没有这个问题但我想思路或许相通供参考回到顶部三、坑二使用html的data属性初始化国际化内容一般情况下我们标签里面的内容如果要做国际化需要使用 $(#id).text($.i18n.prop(proName)); 来给标签赋值现在问题来了我们开发一个界面有很多地方都需要去做国际化我们总不能这样每一个页面每一个标签通过这种方式去赋值吧这样工作量不是一点大于是乎博主想有没有一种比较好的通用的解决方案去给这些需要做国际化的标签统一赋值呢。html的data属性似乎是一个不错的选择它具有可读性强、可维护性强、兼容jquery的data()方法等优点。比如我们修改国际化组件的方法如下jQuery.i18n.properties({ name: common, path: /Content/i18n/ i18nLanguage /, //资源文件路径 mode: map, //用Map的方式使用资源文件中的值 language: i18nLanguage, callback: function () {//加载成功后设置显示内容 console.log(i18n赋值中...); try { //初始化页面元素 $([data-i18n-placeholder]).each(function () { $(this).attr(placeholder, $.i18n.prop($(this).data(i18n-placeholder))); }); $([data-i18n-text]).each(function () { //如果text里面还有html需要过滤掉 var html $(this).html(); var reg /(.*)/; if (reg.test(html)) { var htmlValue reg.exec(html)[0]; $(this).html(htmlValue $.i18n.prop($(this).data(i18n-text))); } else { $(this).text($.i18n.prop($(this).data(i18n-text))); } }); $([data-i18n-value]).each(function () { $(this).val($.i18n.prop($(this).data(i18n-value))); }); } catch(ex){ } console.log(i18n写入完毕); } });通过data属性获取标签然后对每个标签通过对应的data-i18n-属性进行国际化赋值即可这里暂时定义了三种类型data-i18n-placeholder、data-i18n-text、data-i18n-value的属性如果有其他需求可以增加其他类型。然后看下我们html页面的使用input classtypeahead typetext idmenu_search>四、坑三第三方组件的国际化一对于第三方组件我们自定义的代码里面的中文要做国际化我只需要使用$.i18n.prop(key)即可比如bootstrapTable{ field: AuditEventType, title: 业务类型, width: 12% }直接使用{ field: AuditEventType, title: $.i18n.prop(bllType), width: 12% }即可。这个解决思路很简单没啥好说的可是有一些第三方组件自己有国际化的功能初始化的时候需要指定国际化的类型形如$(.date).datetimepicker({ format: YYYY-MM-DD,//日期格式化只显示日期 locale: zh-CN //中文化 });目前想到的解决方案就是根据cookie里面存储的当前语言来显式赋值//获取cookie里面的语言 var userLanguage getlanguageCookie(userLanguage); $(.date).datetimepicker({ format: YYYY-MM-DD,//日期格式化只显示日期 locale: userLanguage zh-CN?zh-CN:en-US //国际化

相关新闻

8051单片机+Proteus仿真SHT11温湿度采集完整工程(含C51源码、.hex烧录文件与RS485扩展文档)

8051单片机+Proteus仿真SHT11温湿度采集完整工程(含C51源码、.hex烧录文件与RS485扩展文档)

本文还有配套的精品资源,点击获取 简介:一套开箱即用的8051温湿度采集仿真开发包,基于SHT11数字传感器,完整集成Keil C51工程与Proteus电路图(湿度控制.DSN)。内含带中文注释的核心驱动文件SHT-OWNI-1.3…

2026/7/2 23:39:51 阅读更多 →
Wagtail CMS安全实战:从漏洞扫描到自动化防护的完整指南

Wagtail CMS安全实战:从漏洞扫描到自动化防护的完整指南

1. 项目概述:为什么Wagtail也需要安全扫描?如果你正在使用Wagtail构建内容管理系统,或者负责维护一个基于Wagtail的网站,你可能会觉得它已经足够安全了。毕竟,作为一个基于Django的现代化CMS,Wagtail在开发…

2026/7/2 23:39:51 阅读更多 →
CLONEit 评测以及如何使用CLONEit 轻松传输数据

CLONEit 评测以及如何使用CLONEit 轻松传输数据

如今,手机间传输工具比以往任何时候都更受欢迎,尤其是在升级新设备时。虽然有很多方法可以实现这一点,但 CLONEit 凭借其简单高效而脱颖而出,成为备受欢迎的选择。然而,与任何工具一样,它也有其优缺点。在本…

2026/7/2 23:35:49 阅读更多 →

最新新闻

Unlock-Music:3种方式解锁加密音乐,让音乐真正属于你

Unlock-Music:3种方式解锁加密音乐,让音乐真正属于你

Unlock-Music:3种方式解锁加密音乐,让音乐真正属于你 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地…

2026/7/3 0:42:07 阅读更多 →
GPTs商业化落地首周数据报告:TOP10盈利模型曝光,其中2个已获OpenAI官方推荐(附转化漏斗SOP)

GPTs商业化落地首周数据报告:TOP10盈利模型曝光,其中2个已获OpenAI官方推荐(附转化漏斗SOP)

更多请点击: https://kaifayun.com 第一章:GPTs商业化落地的底层逻辑与趋势洞察 GPTs(Generative Pre-trained Transformers)的商业化并非简单地将大模型API接入业务系统,而是围绕“场景闭环—数据飞轮—价值可度量”…

2026/7/3 0:38:06 阅读更多 →
AI绘画赋能软件测试:基于Stable Diffusion的UI用例视觉化实践

AI绘画赋能软件测试:基于Stable Diffusion的UI用例视觉化实践

1. 项目概述:当AI绘画遇上软件测试最近在搞一个挺有意思的尝试,把“云容笔谈东方红颜影像生成系统”这套专门画古风美人的AI,用到了软件测试的自动化流程里,核心目标是让它自动生成UI测试用例图。乍一听可能觉得有点跨界&#xff…

2026/7/3 0:38:06 阅读更多 →
8个Illustrator自动化脚本终极指南:彻底告别重复性设计工作

8个Illustrator自动化脚本终极指南:彻底告别重复性设计工作

8个Illustrator自动化脚本终极指南:彻底告别重复性设计工作 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts Adobe Illustrator是设计师日常工作的核心工具,但…

2026/7/3 0:30:04 阅读更多 →
清单来了:2026年最值得信赖的专业AI论文工具

清单来了:2026年最值得信赖的专业AI论文工具

2026年AI论文写作工具已从“基础生成”升级为具备全流程支持与学术合规能力的专业平台,核心评价维度包括文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规等。本次测评覆盖6款主流工具,涵盖中英文、全流程与专项功能、免费与付费场景&#xff0c…

2026/7/3 0:28:04 阅读更多 →
PIC18F67K40与IS31FL3731驱动LED矩阵开发指南

PIC18F67K40与IS31FL3731驱动LED矩阵开发指南

1. IS31FL3731与PIC18F67K40的硬件协同架构IS31FL3731是一款专为LED矩阵设计的驱动芯片,采用I2C接口控制,内置144个恒流驱动通道。其核心特性包括:支持169(144像素)单色LED矩阵8位PWM调光(256级亮度&#x…

2026/7/3 0:28:04 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻