导入jquery.i18n.js文件

jquery-i18n-properties
文件目录结构
在这里插入图片描述

准备翻译文件

通过阅读源码可知,翻译一种语言至多需要三个propoties文件

js_zh_CN.properties示例

# test
test = dom测试
testJs = js测试
placeholder1 = placeholder测试

js_en_US.properties示例:

test = domTset
testJs = jsTset
placeholder1 = placeholderTest

注册jquery.i18n方法以及直接翻译html元素,以及通过js方法翻译动态文本

<div id="testJs"&gt;</div&gt;
<span class="i18n" i18nName="test"&gt;</span&gt;
<input placeholder="" value="" inputPlaceholder="placeholder1">

class=“i18n” 是js获取需要翻译的dom节点判断标识,i18nName=”test”是要翻译的字典名称,同理inputPlaceholder也是要翻译的字典名称

/**
 * 获取浏览器语言类型
 * @return {string} 浏览器国家语言
 */
 var getNavLanguage = function() {
    var navLanguage = navigator.language || navigator.userLanguage;
    return navLanguage.substr(0, 2);
}

/**
 * 'zh-CN' 中文简体
 * 'zh-HK' 中文香港
 * 'zh-TW' 中文繁体
 * 'zh'    中文
 */
var zhArray = ['zh','zh-CN','zh-HK','zh-TW'] //展示简体中文的语言

/**
 * 设置语言类型默认为中文
 */
var i18nLanguage = "zh-CN";
/*
设置一下网站支持的语言种类
 */
var webLanguage = ['zh-CN', 'en_US', 'id'];
/**
 * 执行页面i18n方法
 * @return
 */
var execI18n = function() {
	// 获取浏览器语言
	var navLanguage = getNavLanguage();
	if(navLanguage) {
		var charSize = $.inArray(navLanguage, zhArray);
		//判断是否是中文范围,是的话就展示简体中文。
		if(charSize > -1) {
            navLanguage = 'zh_CN'
		}else if(navLanguage === 'id'){ // 印度尼西亚文
            navLanguage = 'id';
        }else{
            // 除了上述两种语言,均翻译成英文
            navLanguage = 'en_US';
        };
		i18nLanguage = navLanguage;
	} else {
		console.log("not navigator");
		return false;
	}
	/* 需要引入 i18n 文件*/
	if($.i18n == undefined) {
		return false;
	};
	/*
	这里需要进行i18n的翻译
	 */
	// 获取源文件地址头
	if (!window.location.origin) {
		window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
	}
	$.i18n.properties({
		name: "js", //资源文件名称
		path: window.location.origin + '/public/utils/lib/i18n/', //资源文件路径
		mode: 'map', //用Map方式使用源文件中的值
		language: navLanguage,
		callback: function() { 
		    //加载成功后设置显示内容用于直接翻译html文件内的静态文本
			var insertEle = $(".i18n");
			insertEle.each(function() {
				var i18nName = $(this).attr('i18nName');
				// 根据i18n元素的 i18nName 获取内容写入
				if(i18nName) {
					$(this).html($.i18n.prop(i18nName));
				};
			});
			// 用于翻译input里的value
			var insertInputEle = $(".i18n-input");
			insertInputEle.each(function() {
				var selectAttr = $(this).attr('selectattr');
				if(!selectAttr) {
					selectAttr = "value";
				};
				$(this).attr(selectAttr, $.i18n.prop($(this).attr('i18nName')));
			});
			// 用于翻译inputtextarea里的placeholder文本
            var oPlaceholder = $('input[placeholder], textarea[placeholder]');
			oPlaceholder.each(function() {
				var inputPlaceholder = $(this).attr('inputPlaceholder');
				if(inputPlaceholder) {
					$(this).attr('placeholder', $.i18n.prop(inputPlaceholder));
				};
			});
		}
	});
};

/**
 * 单独获取prop
 * 用于在js文件中通过i18nT方法翻译动态文本
 * @return
 */
var i18nT = function(i18nName) {
	var contrastValue = "";
	/* 需要引入 i18n 文件*/
	if($.i18n == undefined) {
		return false;
	};
	if(i18nName) {
		try {
			contrastValue = $.i18n.prop(i18nName);
		} catch(err) {
			contrastValue = i18nName
		};
	};
	return contrastValue
}

    <script src="./utils/lib/jquery.i18n.js"></script>
    <script src="./utils/lib/language.js></script>
  1. 页面加载完毕后需要调用 execI18n() 方法初始化整个翻译模块
  2. 在需要js动态翻译文本的地方,只需要调用 i18nT(dicName) 方法即可($(“#testJs”).text(i18nT(‘testJs’)))

原文地址:https://blog.csdn.net/qq_35517283/article/details/128580570

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24066.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注