使用jquery实现中英文切换

2 篇文章 0 订阅

中英文切换有很多种方式,现在就基于jquery的一种方式,使用的是:jquery.i18n.js 

1,首先先引入jquery文件

2,然后新建文件jquery.i18n.js 

(function ($) {
  $.fn.extend({
    i18n: function (options) {
      var defaults = {
        lang: "",
        defaultLang: "",
        filePath: "./i18n/",
        filePrefix: "i18n_",
        fileSuffix: "",
        forever: true,
        callback: function () {},
      };

      function getCookie(name) {
        var arr = document.cookie.split("; ");
        for (var i = 0; i < arr.length; i++) {
          var arr1 = arr[i].split("=");
          if (arr1[0] == name) {
            return arr1[1];
          }
        }
        return "";
      }

      function setCookie(name, value, myDay) {
        var oDate = new Date();
        oDate.setDate(oDate.getDate() + myDay);
        document.cookie = name + "=" + value + "; expires=" + oDate;
      }

      var options = $.extend(defaults, options);

      if (getCookie("i18n_lang") != "" && getCookie("i18n_lang") != "undefined" && getCookie("i18n_lang") != null) {
        defaults.defaultLang = getCookie("i18n_lang");
      } else if (options.lang == "" && defaults.defaultLang == "") {
        throw "defaultLang must not be null !";
      }

      if (options.lang != null && options.lang != "") {
        if (options.forever) {
          setCookie("i18n_lang", options.lang);
        } else {
          $.removeCookie("i18n_lang");
        }
      } else {
        options.lang = defaults.defaultLang;
      }

      var i = this;
      $.getJSON(options.filePath + options.filePrefix + options.lang + options.fileSuffix + ".json", function (data) {
        var i18nLang = {};
        if (data != null) {
          i18nLang = data;
        }

        $(i).each(function (i) {
          var i18nOnly = $(this).attr("i18n-only");
          if ($(this).val() != null && $(this).val() != "") {
            if (i18nOnly == null || i18nOnly == undefined || i18nOnly == "" || i18nOnly == "value") {
              $(this).val(i18nLang[$(this).attr("i18n")]);
            }
          }
          if ($(this).html() != null && $(this).html() != "") {
            if (i18nOnly == null || i18nOnly == undefined || i18nOnly == "" || i18nOnly == "html") {
              $(this).html(i18nLang[$(this).attr("i18n")]);
            }
          }
          if ($(this).attr("placeholder") != null && $(this).attr("placeholder") != "") {
            if (i18nOnly == null || i18nOnly == undefined || i18nOnly == "" || i18nOnly == "placeholder") {
              $(this).attr("placeholder", i18nLang[$(this).attr("i18n")]);
            }
          }
        });
        options.callback();
      });
    },
  });
})(jQuery);

注意filePath: "./i18n/",是json文件的路径

3.新建i18n文件夹,里面就是需要转换的字段,i18n_cn.json:

i18n_en.json:

4.在html中编辑内容:

<div class="login-header">
   <div class="switch" style="margin:0 0 20px 0">
      <select class="trans-en" style="border:none;outline:none;border-radius: 3px;width: 100px;padding-left: 10px;">
        <option value="中文">中文</option>
        <option value="English">English</option>
      </select>
    </div>
    <span class="welcome_text" i18n="welcomeIn">欢迎登入</span>
</div>

在需要中英文切换的地方加上i18n属性就行

5.通过下拉选择切换:

/*默认语言*/
$(document).ready(function() {
	var defaultLang='cn';
	function getLang(){
		if (document.cookie.indexOf('grycan.cn.bLang') != -1) {
			var arrCookie = document.cookie.split(';')
			for (let i = 0; i < arrCookie.length; i++) {
				var arr = arrCookie[i].split('=');
				if ('grycan.cn.bLang' == arr[0].trim()) {
					defaultLang = arr[1];
					languageSelect(defaultLang);
					if (defaultLang == 'en') {
						$('.trans-en').val('English')
					} else if(defaultLang == 'cn') {
						$('.trans-en').val('中文')
					}
					break;
				}
			}
		}
	}
	getLang();
	/*调用语言包*/
	function languageSelect(defaultLang) {
		$("[i18n]").i18n({
			defaultLang: defaultLang,
			filePath: "./i18n/",
			filePrefix: "i18n_",
			fileSuffix: "",
			forever: true,
			callback: function(res) {
				
			}
		});
	}
	languageSelect(defaultLang)
	// 设置cookie
	function setLang(name,value,path){
		var Days = 30; 
		var exp = new Date(); 
		exp.setTime(exp.getTime() + Days*24*60*60*1000); 
		var paths = ";path=" + path;
		document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString() +paths;
	}
	$('.trans-en').change(function(){
		var condition = $(this).val();
		if(condition == 'English'){
			defaultLang = 'en';
			setLang('grycan.cn.bLang','en','/');
            window.localStorage.setItem('langType','en')
		}else if(condition == '中文'){
			defaultLang = 'cn';
			setLang('grycan.cn.bLang','cn','/');
            window.localStorage.setItem('langType','zh')
		}
		getLang();
		// document.location.reload(true);
	})
})
// end

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值