对这一个非常沮丧,因为我可以让它在“Hello World”应用程序上工作但不是我真正的应用程序。这是我配置的方式:
ConfigureServices:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
}).AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
配置:
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("es-ES"),
};
app.UseDefaultFiles();
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
app.UseStaticFiles();
app.UseSession();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Dashboard}/{action=Index}/{id?}");
});
_ViewImports.cshtml(添加taghelpers nuget pkg)
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers.Localization
/views/account/login.产生HTML
@inject IViewLocalizer Localizer
@{
ViewData["Title"] = "Log in";
}
<h1>@Localizer["test"]</h1>
/resources/views/account/login.恩-US.热塑性
“测试” - >“结果”映射
但是当我运行我的网站时,Localizer只显示Key“test”而不是“result”
我错过了某处的配置吗?
只是在手机上看到这个,但在this localization docs page上,我看到:
必须在可能检查请求文化的任何中间件之前配置本地化中间件(例如,app.UseMvcWithDefaultRoute())。
看起来在上面的示例中,您在使用Mvc之前使用请求本地化,这意味着在中间件管道中,文化可能尚未设置。
如果这有帮助,请告诉我。对是否是这种情况感兴趣。