我正在尝试强制本地化为瑞典语 (sv-SE)。一切都在本地运行,但部署到 Azure 后,验证错误始终以英语显示。
这是我在 Startup.cs 中的配置。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddLocalization();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
...
RequestLocalizationOptions localizationOptions = new RequestLocalizationOptions
{
SupportedCultures = new List<CultureInfo> { new CultureInfo("sv-SE") },
SupportedUICultures = new List<CultureInfo> { new CultureInfo("sv-SE") }
};
app.UseRequestLocalization(localizationOptions, new RequestCulture("sv-SE"));
...
}
渲染 View 时,我可以看到 UI-Culture 和 Culture 在本地和 Azure 上都正确设置为 sv-SE。
发布到 Azure 时是否必须包含某些内容、本地化资源或其他内容?
我使用的是最新版本的 ASP.NET Core (RC1)。
最佳答案
基于this article ,首先需要将 RequestLocalizationMiddleware 设置为服务
services.Configure<RequestLocalizationOptions>(
opts =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("sv-SE")
};
opts.DefaultRequestCulture = new RequestCulture("sv-SE");
// Formatting numbers, dates, etc.
opts.SupportedCultures = supportedCultures;
// UI strings that we have localized.
opts.SupportedUICultures = supportedCultures;
});
这还不够,还应该包括应用程序管道:
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
var options =
app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
关于c# - Azure 上的 ASP.NET Core 本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36126327/