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 的手风琴加树结构做菜单导航 有园友抱怨原来菜单非常难看,但是基于原有树形无限级别的设计,没有办法只能已树形展示 先来看原来的效果 改变后的效果,当然我已经做好了 ...
随机推荐
- Java 方法内联
什么是Java 方法内联? 我们先来看看普遍的内联函数含义.在维基百科中解释为: 内联函数:在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函 ...
- SPI机制剖析——基于DriverManager+ServiceLoader的源码分析
我的上一篇博客类加载器与双亲委派中提到,SPI机制是一种上级类加载器调用下级类加载器的情形,因此会打破类加载的双亲委派模型.为了深入理解其中的细节,本博客详细剖析一下SPI机制,并以JDBC为例,基于 ...
- python字符串、列表通过值找索引/键
python透过"值"找字符串和列表中的索引和键. 1 #!usr/bin/env python3 2 #-*- coding=utf-8 -*- 3 4 ''' 5 python ...
- iOS 14 YYAnimatedImageView加载图片失败处理
1.问题出在YYAnimatedImageView源码一个方法中 - (void)displayLayer:(CALayer *)layer { if (_curFrame) { layer.cont ...
- 01. Consul 入门
简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册 ...
- 一次失败的java Box居中尝试
效果如下: 通过Box的应该虽然实现了居中,但是页面相当丑!且不能插入JTextField等文本框,总的来说相当失败!!! import javax.swing.Box; import javax.s ...
- sql语句查询,limit与order by 同时出现,应该order by在前面
eg:select orderid,status,createtime from orders where appid = :appId and userid = :userId order by c ...
- Java学习日报7.31
package bank;import java.util.*;public class Bank { private Scanner sc=new Scanner(System.in); priva ...
- APP逆向案例---x会app
步骤一 抓个包 其中m_d,m_e为加密参数 步骤二(已经看了是360加固我们脱壳一下) # Author: hluwa <hluwa888@gmail.com> # HomePage: ...
- LeapMotion控制器 java语言开发笔记--(LeapMotion控制器简介)
(1)LeapMotion系统识别和追踪手,手指,以及根手指类似的工具,这个设备运行在一个极小的范围,这个范围拥有个高精度,高跟踪频率可以记录离散的点,手势,和动作. (2)LeapMotion控制器 ...