10赞
428
当前位置:  开发笔记 > 编程语言 > 正文

使用jquery.i18n.properties.js实现js国际化

前两天接到一个任务,把之前的做过的一个系统实现国际化,之前的系统用的是Spring框架,国际化还是比较简单的。但是有一些提示是写在js文件里面的,搜了一些,发现一个js国际化的框架

前两天接到一个任务,把之前的做过的一个系统实现国际化,之前的系统用的是Spring框架,国际化还是比较简单的。但是有一些提示是写在js文件里面的,搜了一些,发现一个js国际化的框架jquery.i18n.properties.js,用了一些还是比较方便的。

首先引入js文件,这个框架是依赖jquery的,所以jquery也要先引入,由于项目用了requireJs,所以在main文件里引入一下就可以了

require.config({
    baseUrl: contextPath + "/js",
    paths: {
        jquery: ‘util/jquery-1.9.1‘,
        jqueryi18n: ‘util/jquery.i18n.properties‘
    },
    shim: {
        ‘jquery‘: {
            exports: ‘$‘
        },
        ‘jqueryi18n‘: {
            deps: [ "jquery" ],
            exports: ‘jqueryi18n‘
        }
    }
});

其次在资源文件目录下建立一个文件夹放properties文件

技术分享

由于系统可以手动切换语言,所以把语言设置写道COOKIE里面,

var setLanguageCOOKIE = function (language) {
    var d = new Date();
    d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.COOKIE = "language=" + escape(language) + "; " + expires + "; path=/";
};

调用jquery.i18n.properties.js的$.i18n.properties()方法。如果COOKIE里有语言的设置就用COOKIE里的,如果没有就用浏览器的语言。

var lan = navigator.language || navigator.userLanguage;
var arrStr = document.COOKIE.split("; ");
for (var i = 0; i < arrStr.length; i++) {
    var temp = arrStr[i].split("=");
    if (temp[0] == ‘language‘) {
        lan = unescape(temp[1]);
    }
}
$.i18n.properties({
    name: ‘message‘,
    path: contextPath + ‘/i18n/‘,
    mode: ‘map‘,
    language: lan
});

用Spring的记得把i18n这个资源目录加到配置文件里面

使用COOKIELocaleResolver来读取COOKIE的值,配置一下COOKIEName


    

在message_en.properties和message_zh.properties里面写入key:site.success

site.success=Success!

site.success=成功!

以上这些配置好了之后就可以使用了,调用$.i18n.prop(key)来显示不同语言的提示

alert($.i18n.prop(‘site.success‘));

英文环境下:

技术分享

中文环境下:

技术分享


使用jquery.i18n.properties.js实现js国际化


推荐阅读
  • 函数一、函数是什么定义:函数是指一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需要调用函数名即可。C中的函数叫function,java中的函数叫method, ... [详细]
  • Python用了这么多年,总结出超实用的功能和特点
    在使用Python这么久,时不时就会发现了一些过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。本篇文章总结出你应该了解的Python功能特色,希望大家在学习过程中, ... [详细]
  • ContactsAcore进程,在内存较少和开机进程过多的情况下会常常被ActivityManagerKill掉。导致Sim卡联系人开机后未导入或者仅仅导入一部分,造成联系人丢失的 ... [详细]
  • 1.ip地址:(门牌号)在网络中每台计算机都必须有一个的IP地址;32位,4个字节,常用点分十进制的格式表示,例如:192.168.1.100127.0.0.1是固定ip地址,代表 ... [详细]
  • 08动作系统(二)使用即时动作
    前一篇文章大致理解了动作系统的结构,今天先学习一个简单的即时动作如何使用。首先使用配置好的环境创建一个项目DemoActionInstant命令:python create_pr ... [详细]
  • 平滑滚动角度2
    如何解决《平滑滚动角度2》经验,为你挑选了3个好方法。 ... [详细]
  • 开发笔记:一览js模块化:从CommonJS到ES6 ... [详细]
  • CentOS系统安装FTP服务
    安装FTP这样就会安装好了,下来我们要改一些FTP文件![]进入vsftpd.conf里面允许匿名访问改目录创建wy用户和密码![]给wy写入读取权限关闭防火墙关闭selinux重 ... [详细]
  • ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging
    常用的诊断中间件:UseDeveloperExceptionPageUseStatusCodePages:返回400~600的状态码UseExceptionHandler自定义异常 ... [详细]
  • 转载请注明出处:王亟亟的大牛之路5号的时候把自己的老版工具类贴了出来,然后今天上午又加了一点内容进去,然后也是简单的几个Button跑下,看看效果。 新增了两个类,一个手机信息类, ... [详细]
  • ASP.NET 本地化 (localization)
    简要:.NET支持Windows和Web应用程序的全球化和本地化。要使应用程序全球化,可以使用System.Globalization命名空间中的类&# ... [详细]
  • 第一章:1.时间估算。2.“抽签”优化3.AntsPoj1852的思考过程第二章:1.next_permutation函数2.栈内存和堆内存——关于内存抽象。 *3.BestCow ... [详细]
  • 无法拆分文件并发送然后加入服务器我正在使用ajaxjavascript从客户端上传文件,我在块中和服务器中分割,当收到所有块时我加入它们。但问题是即使原始文件和上传的文件大小相同但 ... [详细]
  • macbook数据迁移可以中断吗macbook数据迁移是可以中断的。正常迁移一半取消,直接进行第二次迁移就可以。有关硬盘数据的备份及电脑间数据相互拷贝的问题一般可用以下两种方法:1 ... [详细]
  • 如何解决《如何从目录树构建树形图?》经验,为你挑选了1个好方法。 ... [详细]
author-avatar
雨天是最美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有