如何为 ASP.NET 5 应用程序设置语言环境?

How do I set the locale for an ASP.NET 5 application?

我正在尝试全面覆盖 ASP.NET 5 网络应用程序的主机语言环境。大多数解决方案都引用 <globalization/> web.config 元素,但这是特定于 IIS 的,似乎不适合新的 ASP.NET 模型。

我试过了:

app.Use(next => context => {
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-AU");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-AU");
    return next(context);
});

这被执行了,但这似乎对请求没有任何影响(可能是由于管道中的大量 Tasking?)有没有更好的方法来完成这个?

尚未为 ASP.NET 5 准备好本地化,但您可以查看 Damian Edwards's github

上的内容

更新 2015 年 7 月 21 日星期二
★ 本地化将在 beta6See de the roadmap

更新 2015 年 12 月 27 日

本地化现已可用,我们在 aspnet/Localization

中有示例

问题出在异步控制器上。您应该将默认区域性设置为所有线程:

app.Use(next => context => {
    CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-AU");
    CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-AU");

    return next(context);
});

您实际上可以将这些行放在 Configure 方法的顶部:

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-AU");
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-AU");