C# 视图本地化
我正在尝试本地化我的ASP.NET核心应用程序。我想使用ViewLocalizer和C# 视图本地化,c#,localization,asp.net-core-mvc,C#,Localization,Asp.net Core Mvc,我正在尝试本地化我的ASP.NET核心应用程序。我想使用ViewLocalizer和@Localizer[“Teststring”]对视图进行本地化。 在我的Startup.cs中,我执行以下操作: public void ConfigureServices(IServiceCollection services) { services.AddLocalization(); services.AddMvc() .AddV
@Localizer[“Teststring”]
对视图进行本地化。
在我的Startup.cs中,我执行以下操作:
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization();
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("es"),
new CultureInfo("de"),
new CultureInfo("fr"),
};
options.DefaultRequestCulture = new RequestCulture(culture: "en", uiCulture: "en");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
例如,德语版Home/Index的我的资源文件名为Views.Home.Index.de.resx
。
遗憾的是,语言的选择并没有改变字符串,我也不知道自己做错了什么。已正确调用setlanguage方法。发现问题。我缺少本地化.aspnetcore.taghelpers包。没有错误消息告诉我,也没有教程您的
resx
文件在哪里?您是否设置了ResourcesPath
属性?它位于Resources文件夹中。我还尝试替换services.AddLocalization()代码>带有services.AddLocalization(选项=>options.ResourcesPath=“Resources”)代码>
[HttpPost]
public IActionResult SetLanguage(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
return LocalRedirect(returnUrl);
}