Advertisement

前端国际化i18n客户端实现

阅读量:

前端国际化i18n客户端实现——jquery.i18n.properties国际化客户端实例

一、引入文件包

下载i18n :
https://github.com/jquery-i18n-properties/jquery-i18n-properties

将下载文件到项目中
前端国际化i18n
此处bundle文件下的.properties文件是需要自定义国际化内容的;每个文件的文件名字定义需遵循规则:Messages为资源文件的名称(此名称可自定义),后续新增语言都由Messages开头;下划线 “_” 连接的为语言编码;

引入项目中需要先引入jquery文件
i18n客户端实现

二、代码中初始化国际化

html代码中使用data-i18n属性,i18n可自定义

复制代码
       <span data-i18n="lang_back"></span>

       <input type="text" data-i18n-placeholder="lang_input_placeholder">

编辑 .properties 文件,中文与英文两个文件需对应,如下:
Messages_zh_CN.properties 文件

复制代码
    lang_back = 返回

    lang_input_placeholder = 输入内容

Messages_en.properties 文件

复制代码
    lang_back = Back

    lang_input_placeholder = input content

初始化代码

复制代码
    $.i18n.properties({  
    	name: 'Messages',  //资源名称  
    	path: './dist/i18n/bundle/', //资源文件路径  
    	mode: 'map',  //用Map的方式使用资源文件中的值
    	language: 'en', //对应设置的语言
    	async:true, //异步获取,默认为true,可以不设置
    	callback: function() {
    		try {
    			//初始化页面元素   设置input中placeholder属性
    			$('[data-i18n-placeholder]').each(function () {
    				$(this).attr('placeholder', $.i18n.prop($(this).data('i18n-placeholder')));
    			});
    			//设置代码中对应内容
    			$("[data-i18n]").each(function(){
    				$(this).html($.i18n.prop($(this).data("i18n")));
    			});
    		}catch(err){
    			console.log(err);
    		}
    	}
    });

三、遇到的问题

  1. bundle文件夹中的Message.propertises文件为中转文件,此文件必须存在,内容可为空;
  2. bundle文件夹中的语言文件内容必须做对应,即在项目文件的代码存在属性 “lang_i18n” 对应值,必须在语言文件中都存在;
  3. 代码文件都编辑好后,在pc端无环境下运行会报错;解决方案:将文件放置在服务器环境中运行;移动端代码将代码在移动端设备上运行;

四、补充——获取设备当前使用的语言

直接上代码

复制代码
    //获取设备浏览器当前语言

    var getLanguagetype = function(){
    	if(navigator.appName == "Netscape"){
    		var navLanguage = navigator.language;
    		return navLanguage;
    	}
    	return false;
    }
    
    var langtype = getLanguagetype();  //此处可根据 langtype 获取当前终端设备的语言类型
总结:刚开始学习,查了不少blog,但都不是自己需要的,以上是通过自己实践,并能很好的运行在自己项目中;希望看到本blog的你,能给你以参考,抱拳!

全部评论 (0)

还没有任何评论哟~