2017-06-11 18 views
3

マイクロソフトのブログに記載されているようにローカライズを設定しましたが、既定の言語は常に英語です。これは、私のStartup.csがローカリゼーションに関してどのように見えるかです。ASP .NETコアの既定の言語は常に英語です

services.Configure<RequestLocalizationOptions>(options => 
     { 
      options.DefaultRequestCulture = new RequestCulture("ar", "ar"); 
      options.SupportedCultures = supportedCultures; 
      options.SupportedUICultures = supportedCultures; 
     }); 
     services.AddLocalization(options => 
     { 
      options.ResourcesPath = "Resources"; 
     }); 


     services.AddMvc() 
     .AddViewLocalization() 
     .AddDataAnnotationsLocalization(); 

設定方法は::ConfigureServices方法で

CultureInfo[] supportedCultures = new[] 
      { 
       new CultureInfo("ar"), 
       new CultureInfo("en") 
      }; 

 app.UseRequestLocalization(new RequestLocalizationOptions() 
     { 
      DefaultRequestCulture = new RequestCulture("ar"), 
      SupportedCultures = supportedCultures, 
      SupportedUICultures = supportedCultures 
     }); 

感謝:)あなたが設定されている

+3

app.UseRequestLocalization();を使用'、' AcceptLanguageHeaderRequestCultureProvider')は要求文化を決定することができます。私の推測では、あなたのブラウザは "英語"に設定されています。 – tmg

+0

興味深いことに、あなたの洞察に感謝します。それを無効にする方法はありますか? – HishamGarout

+1

'RequestCultureProviders'から' QueryStringRequestCultureProvider'を削除できます – tmg

答えて

5

の "アラビア" DefaultRequestCultureしかしDefaultRequestCultureとしてなした場合に使用されています組み込みプロバイダーの要求文化を決定することができます。デフォルトのプロバイダは、次のとおりです。

  1. QueryStringRequestCultureProvider
  2. CookieRequestCultureProvider
  3. AcceptLanguageHeaderRequestCultureProvider

はほとんどの文化は、ブラウザが送信されたAccept-Language HTTPヘッダーから決定されます。

DefaultRequestCultureにフォールバックするには、AcceptLanguageHeaderRequestCultureProviderを削除する必要があります。これを行うには、RequestCultureProvidersのリストをRequestLocalizationOptionsに上書きし、他の2つのプロバイダのみを使用します。 Startup.csで:

public void ConfigureServices(IServiceCollection services) 
{ 
    CultureInfo[] supportedCultures = new[] 
    { 
     new CultureInfo("ar"), 
     new CultureInfo("en") 
    }; 

    services.Configure<RequestLocalizationOptions>(options => 
    { 
     options.DefaultRequestCulture = new RequestCulture("ar"); 
     options.SupportedCultures = supportedCultures; 
     options.SupportedUICultures = supportedCultures; 
     options.RequestCultureProviders = new List<IRequestCultureProvider> 
     { 
      new QueryStringRequestCultureProvider(), 
      new CookieRequestCultureProvider() 
     }; 
    }); 
} 

Configure方法でちょうどあなたがDefaultRequestCulture` `として "アラビア" に設定されているが、プロバイダーのいずれも(` QueryStringRequestCultureProvider`、 `CookieRequestCultureProvider場合` DefaultRequestCulture`が使用されているapp.UseMvc();

関連する問題