当前位置:  开发笔记 > 后端 > 正文

无法使用ASP.NET 5进行基本本地化

如何解决《无法使用ASP.NET5进行基本本地化》经验,为你挑选了1个好方法。

我正在尝试本地化我的ASP.NET 5/MVC 6(RC1)项目.不幸的是官方文档仍然缺失,所以我的实验主要基于这个和这个博客文章.

这是我做的:在Configure(Startup.cs)我有

app.UseRequestLocalization(new RequestLocalizationOptions
{
    RequestCultureProviders = new List
    {
        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().RequestCulture.Culture.Name;

在一些控制器动作中,它的值是en-US而不是预期的de-CH.

然后我试图更改默认RequestCultureConfigureen-USde-DE现在,当我看着

HttpContext.Features.Get().RequestCulture.Culture.Name;

在我的控制器动作中,它具有值de-DE.

所以问题是:为什么ASP.NET会回归到默认文化而不是使用de-CH我提供的文化CustomRequestCultureProvider



1> Jeff Ogata..:

您似乎还必须在支持的文化列表中包含"de-CH".例如,以下内容返回"de-CH"作为文化,但如果我注释掉行设置SupportedCultures,则显示"en-US".在MVC应用程序中,您可能还必须进行设置SupportedUICultures.

public void Configure(IApplicationBuilder app)
{
    app.UseIISPlatformHandler();

    var requestLocalizationOptions = new RequestLocalizationOptions
    {
        SupportedCultures = new List
        {
            new CultureInfo("en-US"),
            new CultureInfo("de-CH")
        },
        RequestCultureProviders = new List
        {
            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().RequestCulture.Culture.Name;

        await context.Response.WriteAsync("Hello World! " + envName);
    });
}

SupportedCultures属性的描述表示值null表示支持所有文化,这null是默认值,但测试表明不然,源代码如下:

/// 
/// The cultures supported by the application. The  will only set
/// the current request culture to an entry in this list.
/// Defaults to .
/// 
public IList SupportedCultures { get; set; } = new List { CultureInfo.CurrentCulture };

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有