加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.NET Core MVC RequestLocalization忽略DefaultRequestCulture

发布时间:2020-12-16 06:50:45 所属栏目:asp.Net 来源:网络整理
导读:我通过以下方法为es-ES实现了具有单个MVC视图的RequestLocalization(注意:此代码仅压缩到最相关的部分): Startup.cs public void ConfigureServices(IServiceCollection services){ services.AddViewLocalization(LanguageViewLocationExpanderFormat.Suff
我通过以下方法为es-ES实现了具有单个MVC视图的RequestLocalization(注意:此代码仅压缩到最相关的部分):

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix,opts =>
                                     {
                                         opts.ResourcesPath = "Resources";
                                     });
}


public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
{
     var english = "en-US";
     var englishRequestCulture = new RequestCulture(culture: english,uiCulture: english);
     var supportedCultures = new List<CultureInfo>
                         {
                             new CultureInfo("en-US"),new CultureInfo("es-ES")
                         };

     var options = new RequestLocalizationOptions
            {
                DefaultRequestCulture = englishRequestCulture,SupportedCultures = supportedCultures,SupportedUICultures = supportedCultures
            };

     app.UseRequestLocalization(options);
     app.UseMvc();
}

当将culture = en-US或culture = es-ES作为查询字符串参数传递时,这非常有效.我的期望是,当没有提供文化时,默认文化应该是en-US.但是,当我不提供culture参数时,我的视图默认为es-ES.我已确认所有其他本地化提供商也默认为en-US.

我还应该注意到,我尝试通过ConfigureServices()进行本地化,但是根本无法使其正常运行:

services.Configure<RequestLocalizationOptions>(
             options =>
             {
                 var supportedCultures = new List<CultureInfo>
                     {
                         new CultureInfo("en-US"),new CultureInfo("es-ES")
                     };

                 options.DefaultRequestCulture = new RequestCulture(culture: "en-US",uiCulture: "en-US");
                 options.SupportedCultures = supportedCultures;
                 options.SupportedUICultures = supportedCultures;
             });

解决方法

我自己也有同样的问题.看看你的HTTP请求!它们是否包含设置为es-ES(或任何内容)的Accept-Language标头?然后你的本地化中间件工作正常.三个默认的RequestCultureProviders之一,即AcceptLanguageHeaderRequestCultureProvider,尝试通过执行您所做的操作来确定文化 – 查找Accept-Language标头.

所以不,正如您和之前的回答所建议的那样,本地化中间件不会忽略DefaultRequestCulture.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读