0

ASP.NET Core 1では発生しなかった奇妙な問題に遭遇しました。何らかの理由でIndex.es.cshtmlを使用するとビューが正しく検出されますが、Localizer["Home"]Index.cshtml翻訳されません。言語ごとのビューを複製することは本当に理想的ではありません。ビューはローカライズされていますがリソースが見つかりません

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

    services.AddLocalization(options => options.ResourcesPath = "Resources"); 

    services.Configure<RequestLocalizationOptions>(options => 
    { 
     options.DefaultRequestCulture = new RequestCulture("en"); 
     options.SupportedCultures = supportedCultures; 
     options.SupportedUICultures = supportedCultures; 
    }); 

    services.AddMvc() 
     .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, options => options.ResourcesPath = "Resources") 
     .AddDataAnnotationsLocalization(); 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
    app.UseRequestLocalization(); 
    app.UseStaticFiles(); 
    app.UseMvcWithDefaultRoute(); 
} 

閲覧パス:

~/Views/Home/Index.cshtml 

リソースのパスは:文化を正しくesに設定されているので

~/Resources/Views/Home/Index.es.resx 
Home => Inicio 

だから、私はこれが動作することを期待したい:

@inject IViewLocalizer Localizer 
@{ 
    ViewData["Title"] = Localizer["Home"]; 
} 

答えて

0

きれいに見えるプロジェクトを再構築して問題を解決しました。私はこの最終的な構成が動作します:

services.AddLocalization(options => options.ResourcesPath = "Resources"); 

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


services.Configure<RequestLocalizationOptions>(options => 
{ 
    var supportedCultures = new[] { new CultureInfo("en"), new CultureInfo("es") }; 

    options.DefaultRequestCulture = new RequestCulture(culture: "en", uiCulture: "en"); 
    options.SupportedCultures = supportedCultures; 
    options.SupportedUICultures = supportedCultures; 
}); 
関連する問題