首先在 Startup 的 ConfigureServices 中添加 AddLocalization 与 AddViewLocalization 以及配置 RequestLocalizationOptions (这里假设使用英文与中文):

public void ConfigureServices(IServiceCollection services)

{

services.AddLocalization(options => options.ResourcesPath = "Resources");

services.AddMvc()

.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);

services.Configure<RequestLocalizationOptions>(

opts =>

{

var supportedCultures = new List<CultureInfo>

{

new CultureInfo("en-US"),

new CultureInfo("zh-CN")

};

opts.SupportedCultures = supportedCultures;

opts.SupportedUICultures = supportedCultures;

});

}

在 Startup 的 Configure() 方法中应用 RequestLocalizationOptions :

var requestLocalizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value;
app.UseRequestLocalization(requestLocalizationOptions);

然后在 _Layout.cshtml 视图中通过 IViewLocalizer 接口以多语言的方式显示页面标题的后缀:

@using Microsoft.AspNetCore.Mvc.Localization

@inject IViewLocalizer Localizer

<!DOCTYPE html>

<html>

<head>

<title>@ViewData["Title"] - @Localizer["SiteTitle"]</title>

</head>

<body>

</body>

</html>

接着在 ASP.NET Core Web 项目中创建 Resources 文件夹,在其中分别添加 Views.Shared._Layout.en-Us.resx 与 Views.Shared._Layout.zh-CN.resx 文件, Views.Shared._Layout.resx 文件,并添加 "SiteTitle" 所对应的语句文字:

1)Views.Shared._Layout.en-Us.resx

2)Views.Shared._Layout.zh-CN.resx

这时运行 ASP.NET Core 站点,就会根据浏览器的语言设置(Accept-Language header)、或者 culture 查询参数、或者 .AspNetCore.Culture Cookie 值显示对应语言的文字:

需要注意的地方:千万不要添加不带语言名称的 Views.Shared._Layout.en-Us.resx ,不然添加代码语言名称的 .resx 文件时会遇到  "Custom tool ResXFileCodeGenerator failed to produce an output for input file ... but did not log a specific error." 问。

一定要看的参考文档:Globalization and localization

原文地址:http://www.cnblogs.com/dudu/p/7449375.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

体验 ASP.NET Core 中的多语言支持(Localization)相关推荐

  1. 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持

    HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable ...

  2. .ASP NET Core中缓存问题案例

    本篇博客中,我将描述一个关于会话状态(Session State)的问题, 这个问题我已经被询问了好几次了. 问题的场景 创建一个新的ASP.NET Core应用程序 一个用户在会话状态中设置了一个字 ...

  3. ASP.NET Core 中的 User Agent 识别及搜索引擎爬虫鉴定方法

    User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. 百度百科 在 ...

  4. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

  5. ASP.NET Core中的内存缓存

    ASP.NET Core中的内存中缓存 让我们看看如何通过缓存优化ASP.NET Core应用程序性能 我相信,在我们的工作中,每个人都收到来自客户的请求或来自我们应用程序用户的反馈,以提高响应速度. ...

  6. 【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务

    在我的上一篇文章<在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度>,我展示了如何使用ASP.NET Core创建Quartz.NET托管服务并使用它来按计 ...

  7. Asp.Net Core 中IdentityServer4 授权流程及刷新Token

    一.前言 上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享IdentityServer4的授权 ...

  8. Asp.Net Core 中IdentityServer4 授权中心之应用实战

    一.前言 查阅了大多数相关资料,搜索到的IdentityServer4 的应用文章大多是比较简单并且多是翻译官网的文档编写的,我这里在 Asp.Net Core 中IdentityServer4 的应 ...

  9. 为什么我的会话状态在ASP.NET Core中不工作了?

    原文:Why isn't my session state working in ASP.NET Core? Session state, GDPR, and non-essential cookie ...

最新文章

  1. 致那些对人生还迷茫的年轻朋友
  2. Nature Methods:快速准确的微生物来源追溯工具FEAST
  3. BZOJ4890 洛谷3761:[TJOI2017]城市——题解
  4. 电子商务系统的设计与实现(十二):技术选型
  5. hibernate小记
  6. json 反序列化 父子类型_Jaskson精讲第7篇-类继承关系下的JSON序列化与反序列化JsonTypeInfo...
  7. mac下用scp命令实现本地文件与服务器Linux文件之间的相互传输
  8. linkedin上看到的CRM团队信息
  9. java 枚举工厂_在Java中使用枚举工厂,最佳做法?
  10. Linux防火墙设置IP端口白名单
  11. python请求模块requests的session不能保存cookies的情况
  12. Linux系统入门学习
  13. No.476 数字的补数
  14. 刷穿剑指offer-Day11-链表I 基础介绍
  15. 看好699指纹手机暴露任泉的商业野心
  16. java7java8 集合中对象的某一个字段分组
  17. 计算机专业的大学生必考证书,大学必考8大证书计算机
  18. 华为社招嵌入式软件面试_华为嵌入式软件开发面试经验
  19. 查询同网段ip使用情况
  20. 用html制作双色球代码,Html5 canvas 绘制彩票走势图

热门文章

  1. 重复数据删除:块级技术VS.字节级技术
  2. Redhat 5.1 install PHP 5.3.6
  3. 【软件周刊】D语言卷土重来,Vue.js 应获 1024 个赞,小薇可以一键启动了
  4. Spring学习笔记十二---泛型依赖注入
  5. C++ const 关键字使用
  6. JDK5.0新特性--可变参数
  7. 动态更改屏幕方向LANDSCAPE与PORTRAIT 转
  8. BeetleX服务网关授权配置
  9. Visual Studio的奇淫技巧,你知道多少?
  10. Quartz - 作业调度框架-插件化开发