i18n调用自己参数_I18N的前后端实现
所需工具:
1、Vue https://cn.vuejs.org/
2、Vue-I18N https://www.npmjs.com/package/vue-i18n
PS:这种方法由于使用到了Vue,所以部分Vue使用教程就不说了,请参考其他文章。
前期设置
1、构建两个JSON语言字典,如果就中英文切换就分别构建 string_en.json 和string_zh.json,格式如下:
2、读取前一步骤创建的字典,并构造VueI18n元素
//获取本地语言包
//异步获取会没有response,需要暂时关闭异步
$.ajaxSettings.async = false;var dictions ={
en: $.getJSON('/Scripts/i18n/languages/string_en.json').responseJSON,
zh: $.getJSON('/Scripts/i18n/languages/string_zh.json').responseJSON
}
$.ajaxSettings.async= true;//如果当前Cookie中没有语言记录,默认为中文
if ($.cookie('language') == null) {
$.cookie('language','zh', { expires: 7, path: '/'});
language= "zh";
}else{
language=$.cookie('language');
}
i18n= newVueI18n({
locale: language,//设置语言
messages: dictions, //设置字典
})
可以看到我们会根据名为“language”的cookie来获取、设置当前语言类型。
PS:原理上,javascript是所有IO都是非阻塞式的,所以我这边需要将getJson关闭异步,不知道有没有更优化的,希望指出。
3、将构造号的VueI18n元素绑定到Vue中,构造Vue元素。
vm = newVue({
i18n: i18n,
data() {return{
ReloadFlag:true}
}}).$mount('#app_vue');
PS:2/3步骤中构造的vm和i18n都需要设置为全局变量,这样子后续js文件可以使用到
4、设置语言切换方法
i18n.locale = (i18n.locale == "en" ? "zh" : "en");
$.cookie(parameter.language, i18n.locale, { expires:7, path: '/'});
location.reload();
通过步骤2可以看到,我们语言类型是通过cookie来控制的,那么我们只需要切换cookie并刷新页面即可
页面构建
页面构建可以分为以下几类:
1、静态内容
如果是页面静态内容需要做I18N,这只需要将原本内容替换成以下格式即可
原本页面:
条
修改页面
{{$t("Units.Strip")}}
其中的Unite.Strip就是我们一开始设置的语言字典中的内容
2、元素属性
如果我们要修改页面中的元素属性,例如placeholder属性,则需要进行以下修改
原本页面
修改界面
3、js中使用
如果需要在json中使用,例如alert输出,则进行以下替换
原本页面
alert("你好")
修改页面
alter( i18n.messages[i18n.locale].SweetAlert['Hello'])
4、bootstrap-table语言
引用以下语言包即可
/**
* Bootstrap Table Chinese translation
* Author: Zhixin Wen*/$(function() {
$.fn.bootstrapTable.locales[i18n.locale]={
formatLoadingMessage:function() {if (i18n.locale == "zh")return '正在努力地加载数据中,请稍候……';else
return 'Loading, please wait...';
},
formatRecordsPerPage:function(pageNumber) {if (i18n.locale == "zh")return '每页显示 ' + pageNumber + ' 条记录';else
return pageNumber + ' rows per page';
},
formatShowingRows:function(pageFrom, pageTo, totalRows) {if (i18n.locale == "zh")return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录';else
return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' rows';
},
formatSearch:function() {if (i18n.locale == "zh")return '搜索';else
return 'Search';
},
formatNoMatches:function() {if (i18n.locale == "zh")return '没有找到匹配的记录';else
return 'No matching records found';
},
formatPaginationSwitch:function() {if (i18n.locale == "zh")return '隐藏/显示分页';else
return 'Hide/Show pagination';
},
formatRefresh:function() {if (i18n.locale == "zh")return '刷新';else
return 'Refresh';
},
formatToggle:function() {if (i18n.locale == "zh")return '切换';else
return 'Toggle';
},
formatColumns:function() {if (i18n.locale == "zh")return '列';else
return 'Columns';
},
formatExport:function() {if (i18n.locale == "zh")return '导出数据';else
return 'Export data';
},
formatClearFilters:function() {if (i18n.locale == "zh")return '清空过滤';else
return 'Clear filters';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales[i18n.locale]);
});
使用要点/常见错误
1、Vue挂载节点内部不可以有style和scripts标签
2、Vue构造的js和页面的js引用顺序,确保Vue的构造js优先调用
PS:我想写.net core
i18n调用自己参数_I18N的前后端实现相关推荐
- i18n调用自己参数_i18n国际化的例子
这个可以点击菜单进行中英文切换,每次切换就可以改变sessionStorage.languge,进行改变i18n的参数lang的值,然后重新调用下就可以了. 工程结构: i18n--| |---css ...
- i18n调用自己参数_Spring Boot :I18N
什么是 I18N I18N 是 "国际化" 的简称,对于程序来说,在不修改内部代码的情况下,根据不同语言及地区显示相应的界面 Spring Boot 结合 I18N 1. Spri ...
- 前后端部署在两台服务器 服务器配置要求_漫谈前后端分离
前言--浅谈前后端 在我的脑海中一提到前端和后端,基本上第一个出现的区别点就是:后端是跟数据库跟服务器打交道的,前端是跟浏览器打交道的.似乎没有什么问题,大家都这么认为的.当然这没有什么错,我们一直以 ...
- 前后端分离架构,超全面详解~
此文通俗易懂,全面讲解前后端分离架构核心思想与作用,对学习微服务.开发企业项目大有裨益,建议收藏细品,好好领悟!~ 一.简介 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomc ...
- Servlet实现简单的前后端交互
Servlet实现简单的前后端交互 首先前后端交互是啥呢? 在我的理解中大概是这样的: 简单的讲就是数据的交换 接下来我们来看看应该要怎么实现这个简单的交互: 1.首先我们前端先不写静态页面,直接在u ...
- postman调用webservice接口_【分享】关于接口对前后端和测试的意义
1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...
- postman调用webservice接口_接口对前后端和测试的意义
1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...
- pc网站调用微服务器,【微服务】前后端分离-跨域问题和解决方案
跨域问题存在的原因 跨域问题的根本原因:因为浏览器收到同源策略的限制,当前域名的js只能读取同域下的窗口属性.什么叫做同源策略?就是不同的域名, 不同端口, 不同的协议不允许共享资源的,保障浏览器安全 ...
- uniapp简单搞定支付传统的开发支付需要前后端做很多工作,各种参数的处理,签名,秘钥的验证校验等,尤其是涉及到多种不同的平台支付,更是繁琐;而且以往的支付是由后端主导的,如果后端是个菜鸡,那么做这
uniapp简单搞定支付 传统的开发支付需要前后端做很多工作,各种参数的处理,签名,秘钥的验证校验等,尤其是涉及到多种不同的平台支付,更是繁琐:而且以往的支付是由后端主导的,如果后端是个菜鸡,那么做这 ...
最新文章
- vivo U1正式亮相
- sprintf-%s的用法
- api权限管理系统与前后端分离实践
- 使用计算机画画需要什么软件,专业电脑绘画用的是什么工具?
- Android Studio 无法浏览插件市场
- 主板有电无法启动_电脑无法开机?这篇文章让你省下几百修理费
- python 遗传算法_Python实现遗传算法的代码
- 岁月温柔-15 妈妈三天不吃饭再次住院
- 时隔三月,再次向你推荐这款公文排版插件
- CTF--Do you like xml
- 上海不行 java 地址识别 省、市、区,包括直辖市
- python入门学习随记(十二)
- 2012-11-26四六级词汇#9317;-----…
- ST-Link资料02_ST-Link固件介绍,及固件命名规则
- div设置滚动条和滚动条属性
- 亲子关系-《亲子关系全面技巧》书中的精髓:学会正确处理亲子关系的技巧,与孩子建立良好的关系。
- Spring框架—③依赖注入DI、Bean作用域及自动装配
- 利用 Python-user-agents 解析 User_Agent
- 卡西欧计算机使用方法,卡西欧计算器使用教程
- 疫情使我被迫在家朋友选择躺平,我选择了学习软件测试