前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-国际化,本地化,多语言应用

ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-国际化,本地化,多语言应用

作者头像
用户1149182
发布2021-01-29 11:12:02
7010
发布2021-01-29 11:12:02
举报

开篇

早年写过一篇多语言的应用 : 本地化(多语言) 讲述了如何创建多语言的资源文件,并利用资源文件来获得页面和请求的语言属性 本次补充这篇文章,的原因是在实际项目中,有多种需要多语言的情况 比如:日志要根据当前语言显示 而有些情景比较复杂,我们可能的key是提取自数据中,或者说一些错误的提示和模型界面字段的显示 下面我们回顾和新增一些实际应用

1.多语言使用

多语言基础使用,请跳转开篇早年写的连接中 本地化(多语言)

多语言使用的命名空间是 using System.Threading;

所以在后端.cs页面或者前端视图,你都必须引用 System.Threading

2.获得当前多语言的名称

代码语言:javascript
复制
string info = System.Threading.Thread.CurrentThread.CurrentCulture.Name;

可获得资源文件的语言名称 en-US / zh-CN / zh-TW

3.改变当前请求的语言

比如用户请求的时语言是zh-CN,即中文,通过下面3行代码可设置改变当前的请求语言

代码语言:javascript
复制
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;

示例代码

代码语言:javascript
复制
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是属性,使用使用非常简单

代码语言:javascript
复制
string value1 = Resource.Key00001;
string value2 = Resource.Key00002;

4.使用场景一

举个栗子:

比如我要写段日志:其中 姓名 与电话是变量

张三成功创建了一条客户信息,客户名称:李四,客户电话:13800138000

那么你可以使用格式化的方式来填充显示的内容,日志中,只要存储值就可

代码语言:javascript
复制
string.Format(Resource.Key0001, "李四", "138XXXXXXXX");

5.通过Key反射出值

如果你不喜欢上面的情景,那么可以使用下面一个方法,将key和值一起存到数据库

举个例子:表数据- Key00002:张三

那么可以资管管理器提取Key来反射

代码语言:javascript
复制
ResourceManager resMan = new ResourceManager(typeof(Resource));
string val = resMan.GetString("Key000002");

6.MVC中模型属性的注解

注解主要用于2个地方

  • 1.模型验证中的错误提示
  • 2.DisplayFor 界面显示

我们来看一个例子:

4个key中前面2个是错误提示

那么我们的模型就是这么做

代码语言:javascript
复制
[Display(Name = "Key00003", ResourceType = typeof(Resource))]
[Required(ErrorMessageResourceType = typeof(Resource), ErrorMessageResourceName = "Key00001")]
 public string Name { get; set; }

那么将获得一个非空通过翻译的提示和一个前端显示翻译的处理,这个MVC的支持还是最简单完美的

代码语言:javascript
复制
@Html.LabelFor(model => model.Name)
获得字段
@Html.ValidationMessageFor(model => model.Name)
错误提示

最后

如果你的系统有很多国家在使用,或者说一个系统有很多不同地区的人在使用 那么这篇文章的知识点非常实用,因为通过处理 可以使一些原本在数据库的数据的固定通用部分也能得到完美的翻译

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开篇
    • 1.多语言使用
      • 2.获得当前多语言的名称
        • 3.改变当前请求的语言
          • 3.使用方式
            • 4.使用场景一
              • 5.通过Key反射出值
                • 6.MVC中模型属性的注解
                • 最后
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档