zoukankan      html  css  js  c++  java
  • jquery.i18n.properties.js 实现多语言

    引入资源:

    jquery.min.js
    jquery.i18n.properties.js

    jQuery.i18n.properties 是一款轻量级的 jQuery 国际化插件,采用 .properties 文件对 JavaScript 进行国际化。jQuery.i18n.properties 插件根据用户指定的 语言 来解析对应的以”.properties”为后缀的资源文件。

    加载语言资源:jQuery.i18n.properties(settings)

    settings 是配置加载项的

    选项描述类型可选?
    name 资源文件的名称,例如 strings 或 [strings1,strings2],前者代表一个资源文件,后者代表资源文件数组。 String 或 String[]
    path 资源文件所在目录的路径 String
    mode 加载模式:”vars”表示以 JavaScript 变量或函数的形式使用资源文件中的 Key,”map”表示以 Map 的方式使用资源文件中的 Key,”both”表示可以同时使用两种方式。如果资源文件中的 Key 包含 JavaScript 的关键字,则只能采用”map”。默认值是”vars”。 String
    language ISO-639 指定的语言编码(如:”en”表示英文、”zh”表示中文),或同时使用 ISO-639 指定的语言编码和 ISO-3166 指定的国家编码(如:”en_US”,”zh_CN”等)。如果不指定,则采用浏览器报告的语言编码。 String
    cache 指定浏览器是否对资源文件进行缓存,默认为 false。 boolean
    encoding 加载资源文件时使用的编码。默认为 UTF-8。 String
    callback 代码执行完成时运行的回调函数 function
    jQuery.i18n.properties({
        name:'strings',// 资源文件名称
        path:'bundle/',// 资源文件所在目录路径
        mode:'both',// 模式:变量或 Map
        language:'pt_PT',// 对应的语言
        cache:false,
        encoding: 'UTF-8',
        callback: function() {// 回调方法
        }
     });

    实现方法:

    逻辑:定义 lang 变量,判断页面加载成功后,这个变量是否存在?

    如果不存在,则去本地的 localStorage 中获取 i18n 的值。获取到的 lang 值 赋值给 jQuery.i18n.properties 方法中的 language。

    function loadLanguage() {
        let lang;
        if (!lang && !window.__settings) {
          lang = window.localStorage.getItem('i18n')
        }
        jQuery.i18n.properties({// 加载资浏览器语言对应的资源文件
          // name: '', // 资源文件名称
          path: '/ipc/languagePacks/', // 资源文件路径
          language: lang,
          cache: false,
          mode: 'map', // 用Map的方式使用资源文件中的值
          callback: function (setting) { 
            // 加载成功后给 body 设置属性
            $('body').attr('i18n-lang', setting.language)
           // 切换语言
            $(".language-select").val(setting.language)
            if (!window.__settings) {
              // 将 i18n 的值保存在本地
              // window.__settings 是一直不存在的?
              window.localStorage.setItem('i18n', setting.language)
            }
          }
        })
      }
    $(document).ready(function () {
        if (!window.__settings) {
         // 将选择语言的下拉添加到节点中
          $(".language").append(`<select class="language-select">
            <option value="zh_CN" selected>简体中文</option>
            <option value="en" >EN</option> 
          </select>`)
    
          //select change 事件
          $(".language-select").on("change", function () {
          // 选择语言后,将  localStorage 中的 i18n 值替换
            window.localStorage.setItem('i18n', $(this).val())
          // 重新刷新
            window.location.reload(true)
          })
        }
    
       //重新加载语言资源
        loadLanguage()
       //清除
        sessionStorage.clear();
      });

    语言包 languagePacks 中的资源为:

    en.properties
    zh.properties
    properties 中内容是一一对应的
    ...
    
    menu.preview=Live View
    menu.replay=Playback
    menu.picture=Picture
    menu.application=Application
    menu.mixin=Mixed-traffic
    menu.face=Face Recognition
    menu.settings=Configuration
    menu.settings.local=Local
    menu.settings.sys=System Settings 
    menu.settings.sys.base=Basic Information
    menu.settings.sys.auth=Security Authentication
    menu.settings.sys.webuser=User Management
    menu.settings.sys.useronline=Online Users
    menu.settings.sys.service=System Service
    menu.settings.sys.time=Time Settings
    menu.settings.sys.serial=Serial Port Settings
    menu.settings.sys.maintain=Upgrade & Maintenance
    menu.settings.sys.log=Log
    menu.preview=预览
    menu.replay=回放
    menu.picture=图片
    menu.application=应用
    menu.mixin=混行模式
    menu.face=人脸识别
    menu.settings=配置
    menu.settings.local=本地
    menu.settings.sys=系统配置
    menu.settings.sys.base=基本信息
    menu.settings.sys.auth=安全认证
    menu.settings.sys.webuser=用户管理
    menu.settings.sys.useronline=在线用户
    menu.settings.sys.service=系统服务
    menu.settings.sys.time=时间配置
    menu.settings.sys.serial=串口配置
    menu.settings.sys.maintain=升级维护
    menu.settings.sys.log=日志
    
    
  • 相关阅读:
    Spring——AOP
    Spring——事务管理
    分布式和集群的区别
    数据结构——二叉树
    数据结构——队列
    C语言 一维数组叠加为二维数组样例
    C语言一维数组转换为二维数组
    C语言 二维数组复制、清零及打印显示
    C语言 动态创建二维数组
    java byte【】数组与文件读写(增加新功能)
  • 原文地址:https://www.cnblogs.com/baiyygynui/p/13741068.html
Copyright © 2011-2022 走看看