返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET Core WebAPI实现本地化(单资源文件)
  • 468
分享到

ASP.NET Core WebAPI实现本地化(单资源文件)

本地化webapicoreASPnetASP.NET源文件 2022-06-07 21:06:29 468人浏览 八月长安
摘要

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

在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

https://GitHub.com/hueifeng/BlogSample/tree/master/src/LocalizationSingleResx

到此这篇关于ASP.net core webapi实现本地化(单资源文件)的文章就介绍到这了,更多相关ASP.Net Core WEBAPI本地化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文章:asp.net Core自定义本地化教程之从文本文件读取本地化字符串


--结束END--

本文标题: ASP.NET Core WebAPI实现本地化(单资源文件)

本文链接: https://lsjlt.com/news/30768.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ASP.NET Core WebAPI实现本地化(单资源文件)
    在Startup ConfigureServices 注册本地化所需要的服务AddLocalization和 Configure<RequestLocalizationO...
    99+
    2022-06-07
    本地化 webapi core ASP net ASP.NET 源文件
  • asp.net core webapi文件上传功能的实现
    最近开发一个新项目,使用了asp.net core 2.0,采用webapi开发后台,postgresql为数据库。最先来的问题就是上传文件的问题。 POST文件的一些坑 使用...
    99+
    2022-06-07
    net ASP.NET webapi core ASP
  • ASP.NET Core中间件初始化的实现
    目录前言  自定义的方式 Use方式 基于约定的方式 实现IMiddleware的方式 源码探究 Use扩展方法 UseMiddleware 总结 前言  ...
    99+
    2024-04-02
  • ASP.NET实现Web网站本地化
    1、重写InitializeCulture方法。 在Global.asax中的Application_BeginRequest获取或设置语言,每次页面的请求都首先运行这个方法,然后再...
    99+
    2024-04-02
  • ASP.NET MVC实现本地化和全球化
    在开发多语言网站时,我们可以为某种语言创建一个资源文件,根据浏览器所设置的不同语言偏好,让运行时选择具体使用哪个资源文件。资源文件在生成程序集的时候被嵌入到程序集。 本篇体验,在AS...
    99+
    2022-11-13
    ASP.NET MVC 本地化 全球化
  • ASP.NET Core中间件初始化的实现方法
    小编给大家分享一下ASP.NET Core中间件初始化的实现方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言  在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景,...
    99+
    2023-06-15
  • ASP.NET如何实现Web网站本地化
    本文小编为大家详细介绍“ASP.NET如何实现Web网站本地化”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.NET如何实现Web网站本地化”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、重写Initi...
    99+
    2023-07-02
  • ASP.NET Core实现动态获取文件并下载
    ASP.NET Core 中,可以在静态目录添加文件,直接访问就可以下载。但是这种方法可能不安全,也不够灵活。 我们可以在 Controller 控制器中 添加 一个 Action,...
    99+
    2024-04-02
  • Vue如何下载本地静态资源static文件夹
    目录下载本地静态资源static文件夹下载静态文件方法下载下载本地static静态文件的踩坑下载本地静态资源static文件夹 下载静态文件方法 <a href="/stat...
    99+
    2024-04-02
  • .Net Core使用Logger实现log写入本地文件系统
    .net core 自带一个基础的logger框架Microsoft.Extensions.Logging。 微软默认实现了Microsoft.Extensions.Log...
    99+
    2024-04-02
  • 使用ASP.NET Core怎么实现文件响应压缩
    使用ASP.NET Core怎么实现文件响应压缩?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。误区1:未使用 Brotil 压缩  几乎不需要任何额外的代价,Br...
    99+
    2023-06-15
  • ASP.NET Core中怎么实现文件上传与下载
    这篇文章给大家介绍ASP.NET Core中怎么实现文件上传与下载,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.使用模型绑定上传文件(官方例子)官方机器翻译的地址:https://docs.microsoft.co...
    99+
    2023-06-19
  • SpringBoot上传文件并配置本地资源映射来访问文件的实例代码
    1.准备工作 1、新建一个SpringBoot项目加上web依赖, 所有依赖 <dependency> <groupId>org.springframe...
    99+
    2024-04-02
  • .Net Core如何使用Logger实现log写入本地文件系统
    这篇“.Net Core如何使用Logger实现log写入本地文件系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2023-07-02
  • Android实现文件资源管理器雏形
    本文实例为大家分享了Android文件资源管理器雏形的实现代码,供大家参考,具体内容如下 学习Android,应该在掌握单个知识点之后,把多个知识点串联起来实现一些有一定代码量的小项...
    99+
    2024-04-02
  • Android怎么实现文件资源管理器
    这篇“Android怎么实现文件资源管理器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android怎么实现文件资源管理器...
    99+
    2023-06-29
  • ASP.NET MVC使用JSAjaxFileUploader插件实现单文件上传
    先看效果: 上传文件显示进度条: 停止上传按钮和关闭缩略图按钮: 限制上传文件的类型: 限制上传文件的尺寸: 上传成功后显示缩略图、文件名以及回传信息: 点击界面上的删除按...
    99+
    2024-04-02
  • Android 修改现有ROM资源文件如何实现
    Android 修改现有ROM资源文件 一,准备工作 1.一台开发手机。     我推荐最好用G7,也是就HTC Desire那款(是不是有些...
    99+
    2022-06-06
    源文件 rom Android
  • Golang嵌入资源文件实现步骤详解
    目录文本文件图片文件镜像文件前端应用文件编译打包Go文档中展示了多种方式实现外部资源嵌入,包括文本文件、图片、ios文件等: 文本文件 package main import _ "...
    99+
    2023-01-09
    Go嵌入资源文件 Go嵌入资源
  • Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
    微软面向 Dev 开发频道发布了第一个 Windows 11 Insider Preview 版本,即 Build 22000.51! 微软表示,随着我们在未来几个月内完成产品的定型,我们将与你一起验证这一体验。在这个早...
    99+
    2023-05-23
    Win11 22000.51 资源管理器 菜单
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作