无法使用ASP.NET 5进行基本本地化
发布时间:2020-12-16 06:39:39 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试本地化我的ASP.NET 5 / MVC 6(RC1)项目.不幸的是官方文档仍然缺失所以我的实验主要基于 this和 this博客文章. 这就是我所做的:在Configure(Startup.cs)中我有 app.UseRequestLocalization(new RequestLocalizationOptions{ RequestCultureProvide
我正在尝试本地化我的ASP.NET 5 / MVC 6(RC1)项目.不幸的是官方文档仍然缺失所以我的实验主要基于
this和
this博客文章.
这就是我所做的:在Configure(Startup.cs)中我有 app.UseRequestLocalization(new RequestLocalizationOptions { RequestCultureProviders = new List<IRequestCultureProvider> { new CustomRequestCultureProvider(httpContext => Task.FromResult(new ProviderCultureResult("de-CH"))),new AcceptLanguageHeaderRequestCultureProvider() } },new RequestCulture("en-US")); 请注意,我的RequestCultureProviders列表中的第一个条目始终返回de-CH文化.所以我希望AcceptLanguageHeaderRequestCultureProvider以及默认的RequestCulture(en-US)没有影响力. 但是,当我看到 HttpContext.Features.Get<IRequestCultureFeature>().RequestCulture.Culture.Name; 在一些控制器动作中,它的值是en-US而不是预期的de-CH. 然后我尝试将配置中的默认RequestCulture从en-US更改为de-DE,现在我查看 HttpContext.Features.Get<IRequestCultureFeature>().RequestCulture.Culture.Name; 在我的控制器动作中,它具有de-DE值. 所以问题是:为什么ASP.NET会回归到默认文化而不是使用我的CustomRequestCultureProvider提供的文化de-CH? 解决方法
您似乎还必须在支持的文化列表中包含“de-CH”.例如,以下命令返回“de-CH”作为文化,但如果我注释掉设置SupportedCultures的行,则显示“en-US”.在MVC应用程序中,您可能还必须设置SupportedUICultures.
public void Configure(IApplicationBuilder app) { app.UseIISPlatformHandler(); var requestLocalizationOptions = new RequestLocalizationOptions { SupportedCultures = new List<CultureInfo> { new CultureInfo("en-US"),new CultureInfo("de-CH") },RequestCultureProviders = new List<IRequestCultureProvider> { new CustomRequestCultureProvider(httpContext => Task.FromResult(new ProviderCultureResult("de-CH"))),new AcceptLanguageHeaderRequestCultureProvider() } }; app.UseRequestLocalization(requestLocalizationOptions,new RequestCulture("en-US")); app.Run(async (context) => { var envName = context.Features.Get<IRequestCultureFeature>().RequestCulture.Culture.Name; await context.Response.WriteAsync("Hello World! " + envName); }); } SupportedCultures属性的描述表示值为null表示支持所有区域性,并且null是默认值,但测试另有说明,source: /// <summary> /// The cultures supported by the application. The <see cref="RequestLocalizationMiddleware"/> will only set /// the current request culture to an entry in this list. /// Defaults to <see cref="CultureInfo.CurrentCulture"/>. /// </summary> public IList<CultureInfo> SupportedCultures { get; set; } = new List<CultureInfo> { CultureInfo.CurrentCulture }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-web-api – ASP.NET Web API HTTP删除405方法不允许
- asp.net – Visual Studio不识别新类
- asp.net-mvc – 使用数据注释进行自定义验证
- asp.net – 使用DataPager而不检索每个请求的所有行
- asp.net – HTML源代码中的大型viewstate
- ASP.NET - 将 ASP.NET 用作高性能文件下载器
- asp.net – 在运行时获取IIS绑定
- asp.net – Crystal Report Viewer控件未加载报表中的图像
- 对象Equals相等性比较的通用实现
- iis-7 – IIS重置会强制缓存项目重新发送吗?
推荐文章
站长推荐
热点阅读