【发布时间】:2018-08-12 10:25:55
【问题描述】:
我有一个使用资源本地化的 ASP.NET Core MVC 应用程序。它目前仅支持一种文化(fa-IR),我希望基于这种文化处理所有本地化。在 ASP.NET Core 1.1 中我没有任何问题,但是在从 ASP.NET Core 1.1 迁移到 2.1 之后,我看到每个 HTTP 请求的这个警告:
AcceptLanguageHeaderRequestCultureProvider 返回以下不受支持的文化“en-US, en, fa”。
这是我的启动:
public class Startup
{
protected CultureInfo DefaultCultureInfo { get; private set; } = new CultureInfo("fa-IR");
public void ConfigureServices(IServiceCollection services)
{
CultureInfo.DefaultThreadCurrentCulture = DefaultCultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = DefaultCultureInfo;
services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
services.AddMemoryCache();
services.AddSession();
services.AddMvc()
.AddDataAnnotationsLocalization()
.AddViewLocalization()
.AddControllersAsServices()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[] { new CultureInfo("fa-IR"), new CultureInfo("en-US") };
options.DefaultRequestCulture = new RequestCulture("fa-IR", "fa-IR");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context =>
{
return new ProviderCultureResult("fa-IR");
}));
});
}
public void Configure(IApplicationBuilder app)
{
var supportedCultures = new[] { DefaultCultureInfo };
app.UseRequestLocalization(new RequestLocalizationOptions()
{
DefaultRequestCulture = new RequestCulture(DefaultCultureInfo),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures,
FallBackToParentCultures = true,
FallBackToParentUICultures = true,
});
app.UseSession();
app.UseMvc();
app.UseCookiePolicy();
}
}
事实上这只是一个警告,我的应用程序运行良好,但我的日志文件被这个警告填满了,所以我正在寻找一种方法让 MVC 知道我想要什么。
[编辑]:我添加了 CustomRequestCultureProvider 但没有效果,并且在该行中放置断点后意识到该行没有被命中。
[Edit2]:正如 user2429841 建议的那样,我在supportedCultures 中添加了“fa”,警告消失了,但我的资源文件(名为x.fa-IR.resx)不再被拾取。有什么方法可以对 MVC 说,如果你有某种文化,就把它当作另一种文化吗?
【问题讨论】:
标签: c# asp.net-core localization asp.net-core-2.0