私は現在、多言語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?}");
});
}
:
は私のStartup.csからコードをつかん<h1>@Localizer["Welcome"]</h1>
。鍵Welcome
はIndex.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
ことができます:
をし、パラメータのない単純な呼び出しで
Configure()
機能にapp.UseRequsestLocalization
にお電話を置き換えますあなたの意見を見せる?あなたは@inject IViewLocalizer Localizerを注入しましたか?利用可能なリソースファイルですか? – Tester私のビューを追加しました。あなたが見ることができるように、それは静かで簡単です。リソースファイルは、ソリューションエクスプローラのスクリーンショットにあるように、 'Translations/Views/Home/Index.nl.resx'の下にあります。 – user2810895