在今日的需求中需要利用 i18n 这个框架来实现前端的国家化操作,下图是实现效果:

点击选择框实现网页上语言的切换:

下面开始实现过程:

所需工具:
    - jquery-3.3.1.js 下载地址:jquery
    - jquery.i18n.properties.js jquery.i18n.properties.js
    搭建项目目录如下:

其中:language.js 为自定义的 js 文件,用于实现页面逻辑,strings_en_US.properties
    和 strings_en_ZH.properties文件为语言文件。
    首先我们在 index.html 中写上一定的测试页面代码,如下所示:

<!doctype html>  
<head>  
 <meta charset="UTF-8">  
 <meta name="viewport"  
  content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">  
 <meta http-equiv="X-UA-Compatible" content="ie=edge">  
 <title>国际化样例</title>  
</head>  
<body>  
 
<form>  
     <select class="lan_select">  
         <option class="lan_zh">中文</option>  
         <option class="lan_en">英文</option>  
     </select>
 </form>  
 
<label class="username"><!--用户名:--></label><input type="text">  
<label class="password"><!--密码:--></label><input type="password">  
 
<script type="application/javascript" src="JS/jquery-3.3.1.js"></script>  
<script type="application/javascript" src="JS/jquery.i18n.properties.js"></script>  
<script type="application/javascript" src="JS/language.js"></script>  
 
</body>  
</html>

下面我们在两个语言中分别定义需要显示的文字:
        strings_en_ZH.properties文件:

username=用户名:  
        password=密码:
        lan_zh=中文  
        lan_en=英文
           
        strings_en_US.properties 文件:

username=User Name:  
        password=Password:  
        lan_zh=Chinese  
        lan_en=English

最后我们在 language.js 中实现点击事件和切换方法,代码如下:

var LANGUAGE_Index = "zh_CN"; //标识语言  
 
jQuery(document).ready(function () {  
    // alert("页面加载时调用的方法");  
 
  LANGUAGE_Index = jQuery.i18n.normaliseLanguageCode({}); //获取浏览器的语言  
  loadProperties(LANGUAGE_Index);  
});  
 
 
$(".lan_select").change(function () {  
 
 
    if (($(".lan_select").val() === "英文") || ($(".lan_select").val() === "English")) {  
        LANGUAGE_Index = "en_US";  
  } else {  
        LANGUAGE_Index = "zh_CN";  
  }  
 
    loadProperties(LANGUAGE_Index);  
 
});  
 
 
function loadProperties(type) {  
    jQuery.i18n.properties({  
        name: 'strings', // 资源文件名称  
        path: 'Languages/', // 资源文件所在目录路径  
        mode: 'map', // 模式:变量或 Map  
        language: type, // 对应的语言  
        cache: false,  
        encoding: 'UTF-8',  
        callback: function () { // 回调方法  
            $('.lan_zh').html($.i18n.prop('lan_zh'));  
            $('.lan_en').html($.i18n.prop('lan_en'));  
            $('.username').html($.i18n.prop('username'));  
            $('.password').html($.i18n.prop('password'));  
        }  
    });  
}
---------------------
作者:Charles_Sir
来源:CSDN
原文:https://blog.csdn.net/kmonarch/article/details/82892389
版权声明:本文为博主原创文章,转载请附上博文链接!

i18n实现前端国际化(实例)的更多相关文章

  1. 【转】i18n实现前端国际化(实例)

    源地址:https://www.jianshu.com/p/ea93efef5155 i18n实现前端国际化(实例) 0.1442018.08.27 16:25:10字数 246阅读 10563 在今 ...

  2. jquery.i18n.properties前端国际化解决方案“填坑日记”

    但现在的情况是老的项目并没有使用这类架构.说起国际化,博主几年前就做过,在MVC里面实现国际化有通用的解决方案,主要就是通过资源文件的方式定义多语言.最初接到这个任务,并没有太多顾虑,毕竟这种东西有很 ...

  3. 前端系列——jquery.i18n.properties前端国际化解决方案“填坑日记”

    前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...

  4. jquery.i18n.properties前端国际化方案

    如果新项目要做系统国际化, 时下热门的任何一种技术选型都有成熟的方案,比如: vue + vue-i18n angular + angular-translate react + react-intl ...

  5. 【转】jQuery之前端国际化jQuery.i18n.properties

    jQuery之前端国际化jQuery.i18n.properties 基于jQuery.i18n.properties 实现前端页面的资源国际化 jquery-i18n-properties

  6. Web前端国际化之jQuery.i18n.properties

    Web前端国际化之jQuery.i18n.properties jQuery.i18n.properties介绍 国际化是如今Web应用程序开发过程中的重要一环,jQuery.i18n.propert ...

  7. 前端系列——jquery前端国际化解决方案“填坑日记”

    前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...

  8. layui前端框架实例(修复官网数据接口异常问题)

    layui前端框架实例,官网的实例会提示数据接口异常,已修复. 主要是修改数据表格,做一个可以用的实例,可以选中,编辑,删除等. gitee地址:https://gitee.com/pingg2019 ...

  9. jQuery之前端国际化jQuery.i18n.properties

    jQuery.i18n.properties是一款轻量级的jQuery国际化插件,能实现Web前端的国际化. 国际化英文单词为:Internationalization,又称i18n,"i& ...

随机推荐

  1. Python3 图像识别(二)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 以图搜图的使用已经非常广泛了,我现在来介绍一下简单的以图搜图的相关算法及其实践. 一.感知hash算法 感知哈希算 ...

  2. ios retainCount

    retainCount Important: Typically there should be no reason to explicitly ask an object what its reta ...

  3. DOM操作和jQuery实现选项移动操作

    DOM: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  4. 用树莓派和DS18B20做个汽车温度记录仪[原创]

    用树莓派和DS18B20做个汽车温度记录仪[原创] 很想知道夏日阳光暴晒下,汽车内的最高温度以及温度的变化情况.觉得用树莓派和DS18B20来实现应该很简单,于是就尝试捣鼓了一下,半天时间就搞定了,写 ...

  5. # 20155224 实验五 Java网络编程及安全

    20155224 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 没有Linux基础的同学建议先学习<Li ...

  6. 20155322 2017-2018-1 《信息安全系统设计》第五周 MyBash实现

    #20155322 2017-2018-1<信息安全系统设计>第五周 MyBash实现 [博客目录] 实现要求 相关知识 bash fork exec wait 相关问题 fork返回两次 ...

  7. treegrid -表格树异步加载

    问题: 机构维护时,前端框架用的是easyui,如果同步全加载会出现页面延迟严重,影响用户体验 解决: 机构逐层加载,点击后加载 逐层加载会出现一个问题:子节点只有点击后才能加载子集 所以开始为叶子节 ...

  8. zedboard学习(1)OLED驱动显示图像

    1. 干点啥?驱动一下上面的屏吧 2. 找个代码研究一下,cat命令用于读取文件(普通文件或设备文件)的内容并进行输出.据说板子已经做好OLED的驱动了,驱动映射为/dev/zed_oled,所以直接 ...

  9. 视觉SLAM中的深度估计问题

    一.研究背景 视觉SLAM需要获取世界坐标系中点的深度. 世界坐标系到像素坐标系的转换为(深度即Z): 深度的获取一共分两种方式: a)主动式 RGB-D相机按照原理又分为结构光测距.ToF相机 To ...

  10. Keil出错解决方法

    1.安装KEIL5后创建工程后出现这个报错 解决方法:打开下图目录的文件. Keil.STM32F1xx_DFP.pdsc文件是只读文件,必须将只读属性取消. 如下图所示,注释掉红色圆圈的哪一行,保存 ...