.NET CORE 多语言实现方案
根据市场需求,基于.NET CORE平台开发的RoadFlow工作流平台需要实现多语言版本。经过方案讨论和比对,决定采用.NET自带的本地化功能来实现多语言。话不多说,直接上实现方式。
首先修改Startup.cs

在public void ConfigureServices(IServiceCollection services)方法中加入:
//设置语言包文件夹名称
services.AddLocalization(o =>
{
o.ResourcesPath = "Language";
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1).AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
这里指定语言包所在目录,相对于项目根目录下。从上图中看到项目根目录下有一个Language文件夹。
在public void Configure(IApplicationBuilder app, IHostingEnvironment env)方法中加入:
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("zh-CN"),
new CultureInfo("zh"),
new CultureInfo("en-US")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
//这里指定默认语言包
DefaultRequestCulture = new RequestCulture("zh-CN"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
到这里启动文件就设置好了。
在根目录下新建Language目录,用于存放语言包

语言包下的目录结构和MVC对应,控制器对应控制器,视图对应视图。
目录下新建资源文件:

CORE加载资源文件的方式有三种:URL,Cookie,请求头。我们这里采用Cookie。所以在打开首页的时候写了一个Cookie:
Response.Cookies.Append(".AspNetCore.Culture", "c=en-US|uic=en-US");
.AspNetCore.Culture为Cookie key。接下来就可以开始使用语言包了。 控制器中使用:

在控制器中加入:
private readonly IStringLocalizer<HomeController> _localizer;
public HomeController(IStringLocalizer<HomeController> localizer)
{
_localizer = localizer;
}
接下来在使用语言的地方:

_localizer["资源文件中定义的名称"]就可以读取到相应的语言了。
在视图中使用:

视图顶部引用:
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
在要使用语言的地方就可以使用了:

Localizer["Welcome"]
.NET CORE 多语言实现方案的更多相关文章
- C# .net 语言加密方案
C# .net 语言加密方案 方案背景 当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码.桌面应用程序的 winform .Unity3d 的逻辑脚本都在使用.C# .net ...
- ASP.NET Core多语言 (转载)
ASP.NET Core中提供了一些本地化服务和中间件,可将网站本地化为不同的语言文化.ASP.NET Core中我们可以使用Microsoft.AspNetCore.Localization库来实现 ...
- .NET Core多语言
ASP.NET Core中提供了一些本地化服务和中间件,可将网站本地化为不同的语言文化. ASP.NET Core中我们可以使用Microsoft.AspNetCore.Localization库来实 ...
- net core微服务构建方案
随着Net core升级,基本趋于完善了,很多都可以使用core开发了.已经有的Net framework就不说了,说实话,关注少了. 今天说说微服务方案,在之前说几句废话,core还在升级改造,AP ...
- Android原生多语言切换方案,兼容Android10
前言 一个应用若需要国际化,至少需要支持中文和英语这两种语言,而同时随着谷歌的系统的更新,安卓系统可以设置当前语言的首选语言.因此,本文立足于此,多语言的切换方案为:App固定的文字内容,跟随系统,中 ...
- 华为联运游戏或应用审核驳回:HMS Core升级提示语言类型错误
问题描述 最近项目组应用集成华为的HMS Core SDK相关能力后,发布地区选择中国大陆,提交审核,华为审核驳回:在低于2.5.3版本的华为移动服务手机上启动时或调出支付时拉起升级提示为英文,正确的 ...
- vs 2019 社区版 .net core 5.0 之 .net core ef 迁移问题方案
问题一:Add-Migration 时出现 此类问题一般都是模型类主键标识问题增加KEY即可解决 报错: The entity type 'xxxx' requires a primary key t ...
- .net core in Docker 部署方案(随笔)
前一段时间由于项目需要 .net core 在docker下的部署,途中也遇到很多坑,看了各同行的博客觉得多多少少还是有些问题,原本不想写此篇文章,由于好友最近公司也需要部署,硬是要求,于是花了些时间 ...
- SeaweedFS在.net core下的实践方案(续一)
前言 我们之前已经完成了SeaweedFS在.net core下的使用了,但是说实话,还是不够,于是,我的目光盯住了IApplicationBuilder的扩展方法UseStaticFiles 这个可 ...
随机推荐
- 零元学Expression Blend 4 - Chapter 7 什麽?影片不再是印象中的方框框!!!看Blend 4如何把影片镶入字里
原文:零元学Expression Blend 4 - Chapter 7 什麽?影片不再是印象中的方框框!!!看Blend 4如何把影片镶入字里 本章将教大家如何在Blend 4里新增Media El ...
- HtmlAgilityPack开发
官方网站: http://html-agility-pack.net/ Nuget安装: Install-Package HtmlAgilityPack C# HTML Parser Examples ...
- CROSS JOIN
原文:CROSS JOIN 最近在讲到T-SQL查询的Join部分时,一下子没有想起来CROSS JOIN的用法,因为其实平常也确实基本不用到.特意找了一个例子,以供参考 CROSS JOIN又称为笛 ...
- Delphi 10.2的 更新说明,所有官方资料:新特征和Bugfix列表,所有工具开发说明
TMS东京版控件更新情况http://www.tmssoftware.com/site/radstudio10_2tokyo.asp RAD Studio 10.2 更新说明http://blog.q ...
- Tomcat Java SSL
转自 - http://blog.csdn.net/szzt_lingpeng/article/details/51247980 转载自:http://my.oschina.net/cimu/blog ...
- Windows Phone8.1系统新特性
Windows Phone 8.1 beta SDK已经为大家透露了不少WP8.1系统的新特性,不过这些新特性还不能保证在最终的消费者版本中都有所体现,毕竟它还仅是SDK版本.日前,国外媒体WPCen ...
- 用shell做简单的分布式计算
# 分布式计算小试 # .首先获取本机host,作为实际计算时分区hash的种子 # .以*.*.*.44为主节点,*.*.*.///43为从节点 hash=`cat /root/data/host. ...
- Zookeeper详解-基础(二)
在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.我们将在本章中讨论以下主题: Architecture(架构) Hierarchical namespace(层次命名 ...
- 视频直播技术之iOS端推流
随着网络基础建设的发展和资费的下降,在这个内容消费升级的时代,文字.图片无法满足人们对视觉的需求,因此视频直播应运而生.承载了实时性Real-Time和交互性的直播云服务是直播覆盖各行各业的新动力.网 ...
- NET中级开发工程师职责要求
NET中级开发工程师岗位职责1.熟练掌握 WebApi, ASP.NET MVC, Entity Framework,.NET CORE等技术,精通JQuery.Vue.Bootstrap等前端开发框 ...