开篇
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) 错误提示