ASP.NET Core WebAPI实现本地化(单资源文件)
 更新时间:2020年06月04日 09:47:12   作者:HueiFeng  

这篇文章主要介绍了ASP.NET Core WebAPI实现本地化(单资源文件),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Startup ConfigureServices 注册本地化所需要的服务AddLocalization和 Configure<RequestLocalizationOptions>

public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization();
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo(“en-us”),
new CultureInfo(“zh-cn”)
};

options.DefaultRequestCulture = new RequestCulture(culture: “en-us”, uiCulture: “en-us”);
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new IRequestCultureProvider[] { new RouteDataRequestCultureProvider { IndexOfCulture = 1, IndexofUiCulture = 1 } };
});
services.Configure<RouteOptions>(options =>
{
options.ConstraintMap.Add(“culture”, typeof(LanguageRouteConstraint));
});
services.AddControllers();
}

在Startup.cs类的Configure 方法中添加请求本地化中间件。

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

RequestCultureProvider 它使用简单的委托来确定当前的本地化区域性,当然我们还可以通过RequestCultureProvider自定义源的请求区域信息比如说配置文件或者数据库都是可以的.或者说我们可以选用默认的一些方式让我们去获取到当前区域.
ASP.NET Core 本地化默认向我们提供了四个方式,可用于确定正在执行的请求的当前区域性:

QueryStringRequestCultureProvider
CookieRequestCultureProvider
AcceptLanguageHeaderRequestCultureProvider
CustomRequestCultureProvider

如下所示我将通过路由的方式,去确定当前区域

public class RouteDataRequestCultureProvider : RequestCultureProvider
{
public int IndexOfCulture;
public int IndexofUiCulture;

public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
if (httpContext == null)
throw new ArgumentNullException(nameof(httpContext));
string uiCulture;

string culture = uiCulture = httpContext.Request.Path.Value.Split(‘/’)[IndexOfCulture];

var providerResultCulture = new ProviderCultureResult(culture, uiCulture);

return Task.FromResult(providerResultCulture);
}
}

通过如下代码片段实现IRouteConstraint对路由做相应的约束

public class LanguageRouteConstraint : IRouteConstraint
{
public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
{

if (!values.ContainsKey(“culture”))
return false;

var culture = values[“culture”].ToString();
return culture == “en-us” || culture == “zh-cn”;
}
}

添加区域资源文件

注入IStringLocalizer<T>,StringLocalizer将通过传递的共享资源(T)的值映射到资源文件,然后将本地化根据字符串的名称从资源文件返回响应的值

[Route(“{culture:culture}/[controller]”)]
[ApiController]
public class HomeController : ControllerBase
{
private readonly IStringLocalizer<Resource> localizer;
public HomeController(IStringLocalizer<Resource> localizer)
{
this.localizer = localizer;
}
public string Get()
{
return localizer[“Home”];
}
}

如下图所示

Reference
github.com/hueifeng/BlogSample/tree/master/src/LocalizationSingleResx
到此这篇关于ASP.NET Core WebAPI实现本地化(单资源文件)的文章就介绍到这了,更多相关ASP.NET Core WebAPI本地化内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!

您可能感兴趣的文章:ASP.NET Core3.1 Ocelot负载均衡的实现ASP.NET Core3.1 Ocelot认证的实现ASP.NET Core3.1 Ocelot路由的实现Asp.Net Core 调用第三方Open API查询物流数据的示例ASP.NET Core WebApi版本控制的实现详解如何在ASP.NET Core Web API中以三种方式返回数据asp.net core webapi文件上传功能的实现详解ASP.NET Core Web Api之JWT刷新Token在IIS上部署ASP.NET Core Web API的方法步骤ASP.NET Core3.x API版本控制的实现Asp.Net Core使用swagger生成api文档的完整步骤ASP.NET Core Api网关Ocelot的使用初探

ASP.NET
Core
WebAPI
本地化

相关文章
微信服务器中下载文件到本地的实例代码这篇文章主要介绍了微信服务器中下载文件到本地的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 2018-08-08
Devexpress中Gridcontrol查找分组本文通过实例代码给大家介绍了Devexpress中Gridcontrol查找分组的方法,非常不错,具有一定的参考价诶接价值,需要的朋友一起看看吧 2018-08-08
让GridView只更新某些特定的数据的方法我又不希望所有的数据都可以修改,只希望修改某些特定的列,用下面的方法即可 2008-10-10
.Net MVC网站中配置文件的读写这篇文章主要为大家详细介绍了.Net MVC 网站中配置文件的读写,感兴趣的小伙伴们可以参考一下 2016-08-08
.net 单点登录的设计与实践本篇文章主要介绍了解析.net 单点登录实践,具有一定的参考价值,有需要的可以了解一下。
2016-11-11
ASP.NET Eval进行数据绑定的方法ASP.NET Eval在数据绑定方面的应用是众所周知的,不过技术在发展,当ASP.NET Eval 1.1变成ASP.NET Eval 2.0的时候,在操作的时候会有什么变化呢? 2013-04-04
.Net 实现图片缩略图上传通用方法这篇文章主要介绍了.Net 实现图片缩略图上传通用方法,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 2018-08-08
Asp.net控制Tomcat启动关闭的实现方法近日有个项目客户要求能自己配置相关权限。由于历史原因这个项目采用的是公司以前的权限系统 2012-01-01
ASP.NET 缓存分析和实践浅析提高运行效率说到ASP.NET缓存,那就是:尽早缓存;经常缓存您应该在应用程序的每一层都实现缓存。 2010-02-02
WPF下YUV播放的D3D解决方案这篇文章主要介绍了WPF下YUV播放的D3D解决方案,需要的朋友可以参考下 2017-04-04

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。