ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-国际化,本地化,多语言应用
开篇
早年写过一篇多语言的应用 : 本地化(多语言) 讲述了如何创建多语言的资源文件,并利用资源文件来获得页面和请求的语言属性
本次补充这篇文章,的原因是在实际项目中,有多种需要多语言的情况
比如:日志要根据当前语言显示
而有些情景比较复杂,我们可能的key是提取自数据中,或者说一些错误的提示和模型界面字段的显示
下面我们回顾和新增一些实际应用
1.多语言使用
多语言基础使用,请跳转开篇早年写的连接中 本地化(多语言)
多语言使用的命名空间是 using System.Threading;
所以在后端.cs页面或者前端视图,你都必须引用 System.Threading
2.获得当前多语言的名称
string info = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
可获得资源文件的语言名称 en-US / zh-CN / zh-TW

3.改变当前请求的语言
比如用户请求的时语言是zh-CN,即中文,通过下面3行代码可设置改变当前的请求语言
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
示例代码
public ActionResult Create(string name)
{
int a=1; CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture; return View(Resource.创建成功);
}
不使用时候,返回:创建成功 使用时返回:Insert Succeed
3.使用方式

由于资源文件的后端代码也是一个类,Key是属性,使用使用非常简单
string value1 = Resource.Key00001;
string value2 = Resource.Key00002;
4.使用场景一
举个栗子:
比如我要写段日志:其中 姓名 与电话是变量
张三成功创建了一条客户信息,客户名称:李四,客户电话:13800138000

那么你可以使用格式化的方式来填充显示的内容,日志中,只要存储值就可
string.Format(Resource.Key0001, "李四", "138XXXXXXXX");
5.通过Key反射出值
如果你不喜欢上面的情景,那么可以使用下面一个方法,将key和值一起存到数据库
举个例子:表数据- Key00002:张三
那么可以资管管理器提取Key来反射
ResourceManager resMan = new ResourceManager(typeof(Resource));
string val = resMan.GetString("Key000002");
6.MVC中模型属性的注解
注解主要用于2个地方
- 1.模型验证中的错误提示
 - 2.DisplayFor 界面显示
 
我们来看一个例子:

4个key中前面2个是错误提示
那么我们的模型就是这么做
[Display(Name = "Key00003", ResourceType = typeof(Resource))]
[Required(ErrorMessageResourceType = typeof(Resource), ErrorMessageResourceName = "Key00001")]
public string Name { get; set; }
那么将获得一个非空通过翻译的提示和一个前端显示翻译的处理,这个MVC的支持还是最简单完美的
@Html.LabelFor(model => model.Name)
获得字段
@Html.ValidationMessageFor(model => model.Name)
错误提示
最后
如果你的系统有很多国家在使用,或者说一个系统有很多不同地区的人在使用
那么这篇文章的知识点非常实用,因为通过处理
可以使一些原本在数据库的数据的固定通用部分也能得到完美的翻译
ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-国际化,本地化,多语言应用的更多相关文章
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)
		
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 任务调度系统界面 http: ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
		
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试
		
1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Unity是为了使用我们后台的BLL和DAL层 2:ASP.NET MVC5+EF6+Easy ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(转)
		
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 日程管理 http://ww ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级
		
系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
		
系列目录 前言:这是对本文系统一次重要的革新,很久就想要重构数据访问层了,数据访问层重复代码太多.主要集中增删该查每个模块都有,所以本次是为封装相同接口方法 如果你想了解怎么重构普通的接口DAL层请查 ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(34)-文章发布系统①-简要分析
		
系列目录 最新比较闲,为了学习下Android的开发构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与,虽然有点没有目的的学习,但还是了解了Andro ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控
		
系列目录 先补充一个平面化登陆页面代码,自己更换喜欢的颜色背景 @using Apps.Common; @{ Layout = null; } <!DOCTYPE html> <ht ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox
		
系列目录 https://yunpan.cn/cZVeSJ33XSHKZ 访问密码 0fc2 今天整合lightbox插件Fancybox1.3.4,发现1.3.4版本太老了.而目前easyui 1 ...
 - ASP.NET MVC5+EF6+EasyUI 后台管理系统(38)-Easyui-accordion+tree漂亮的菜单导航
		
系列目录 本节主要知识点是easyui 的手风琴加树结构做菜单导航 有园友抱怨原来菜单非常难看,但是基于原有树形无限级别的设计,没有办法只能已树形展示 先来看原来的效果 改变后的效果,当然我已经做好了 ...
 
随机推荐
- Docker跑项目中常见的中间件
			
声明: 本章只作为记录 前端时间跑项目,发现每次都需要启动大量的中间件.在Windows 上启动特别麻烦 就想着写篇文章总结一下,把所有的 中间件全放服务器上启动 ,下次 直接复制黏贴命令就好了. 例 ...
 - 任务队列--nodejs
			
很多项目可能都会涉及到任务队列来进行任务处理和维护的,那么需要使用到redis或者第三方库(使用redis)来实现任务队列,甚至需要控制并发量,但是对于saas部署来说使用redis可能会比较麻烦和成 ...
 - Azure Databricks 第一篇:创建工作区、集群和Notebook
			
Azure Databricks是一个可扩展的数据分析平台,基于Apache Spark.Azure Databricks 工作区(Workspace)是一个交互式的环境,工作区把对象(noteboo ...
 - .net core 3.1 过滤器(Filter) 与中间件与AOP面向切面 与拦截器及其应用
			
Filter(过滤器) 总共有五种,Authorization Filter,Resource Filter,Exception Filter,Action Filter,Result Filter ...
 - 解决Vue-router 报NavigationDuplicated的三种方法
			
控制台会报[NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicate ...
 - MySQL性能优化,MySQL索引优化,order by优化,explain优化
			
前言 今天我们来讲讲如何优化MySQL的性能,主要从索引方面优化.下期文章讲讲MySQL慢查询日志,我们是依据慢查询日志来判断哪条SQL语句有问题,然后在进行优化,敬请期待MySQL慢查询日志篇 建表 ...
 - 单细胞分析实录(1): 认识Cell Hashing
			
这是一个新系列 差不多是一年以前,我定导后没多久,接手了读研后的第一个课题.合作方是医院,和我对接的是一名博一的医学生,最开始两边的老师很排斥常规的单细胞文章思路,即各大类细胞分群.注释.描述,所以起 ...
 - 一个坑,bootstrap selectpicker 重置下拉列表时遇到的问题
			
需求是这样的:点击右侧三个按钮中的任意一个,如果执行成功,左侧的版本信息就需要重新获取列表.挺简单的需求,但是遇到了一个坑, 在使用$('#id').html('')清空下拉选项并且重新赋值的时候,始 ...
 - .NET 云原生架构师训练营(模块二 基础巩固 MongoDB 聚合)--学习笔记
			
2.5.5 MongoDB -- 聚合 排序 索引类型 创建索引 排序 // 升序 db.getCollection('author').find({}).sort({"age": ...
 - Lambda获取类属性的名字
			
using System; using System.ComponentModel; using System.Linq.Expressions; using System.Reflection; p ...