2017-11-20 10 views
2

私は現在、多言語ASP.NET Core 2.0 Webサイトを開発中です。 私はofficial documantionを読んで、GitHubで提供されたexampleを調べました。ASP.NET Core 2.0の翻訳は常に英語で行われます

以下

プロジェクトのフォルダ構造である:私はローカライザーを呼び出す(例えば、Home/Indexのために)私の見解では

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddDbContext<ApplicationDbContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 

     services.AddIdentity<ApplicationUser, IdentityRole>() 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders(); 

     // Add application services. 
     services.AddTransient<IEmailSender, EmailSender>(); 

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

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

     // Configure supported cultures and localization options 
     services.Configure<RequestLocalizationOptions>(options => 
     { 
      var supportedCultures = new[] 
      { 
       new CultureInfo("nl"), 
       //new CultureInfo("en") 
      }; 

      // State what the default culture for your application is. This will be used if no specific culture 
      // can be determined for a given request. 
      options.DefaultRequestCulture = new RequestCulture(culture: "nl", uiCulture: "nl"); 

      // You must explicitly state which cultures your application supports. 
      // These are the cultures the app supports for formatting numbers, dates, etc. 
      options.SupportedCultures = supportedCultures; 

      // These are the cultures the app supports for UI strings, i.e. we have localized resources for. 
      options.SupportedUICultures = supportedCultures; 
     }); 
    } 

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     //use the configured localization options for each request. 
     var localizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>(); 
     app.UseRequestLocalization(localizationOptions.Value); 

     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
      app.UseBrowserLink(); 
      app.UseDatabaseErrorPage(); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 
     } 


     app.UseStaticFiles(); 

     app.UseAuthentication(); 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
    } 

enter image description here

は私のStartup.csからコードをつかん<h1>@Localizer["Welcome"]</h1>。鍵WelcomeIndex.nl.resxファイルに存在しますが、残念ながらそれはオランダ語に翻訳されていません。

URLを?culture=nlで呼び出して明示的に文化を変更しようとしましたが、ブラウザ言語をオランダ語に変更しましたが、どちらもその仕事をしませんでした。

何か不足していますか?私Home/Index.cshtmlファイルの下

EDIT

@{ 
    ViewData["Title"] = "Home Page"; 
} 

<h1>@Localizer["Welcome"]</h1> 

注入は_ViewImports.cshtmlファイルで行われます。

@using Microsoft.AspNetCore.Mvc.Localization 
@inject IViewLocalizer Localizer 
+0

ことができます:

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

をし、パラメータのない単純な呼び出しでConfigure()機能にapp.UseRequsestLocalizationにお電話を置き換えますあなたの意見を見せる?あなたは@inject IViewLocalizer Localizerを注入しましたか?利用可能なリソースファイルですか? – Tester

+0

私のビューを追加しました。あなたが見ることができるように、それは静かで簡単です。リソースファイルは、ソリューションエクスプローラのスクリーンショットにあるように、 'Translations/Views/Home/Index.nl.resx'の下にあります。 – user2810895

答えて

0

this answerにTMGによって記載された技術を試してみてください。

これはあなたのConfigureServices()関数に次のコードを追加しなければならないことを意味します。あなたは

app.UseRequestLocalization(); 
関連する問題