ASP.NET Core IViewLocalizer 不提取我的字典查找值

smu*_*agh 5 asp.net-core asp.net-core-localization

对此感到非常沮丧,因为我可以让它在“Hello World”应用程序上运行,但不能在我真正的应用程序上运行。这是我的配置方式:

配置服务:

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();
Run Code Online (Sandbox Code Playgroud)

配置:

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?}");
});
Run Code Online (Sandbox Code Playgroud)

_ViewImports.cshtml(添加了 taghelpers nuget pkg)

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers.Localization
Run Code Online (Sandbox Code Playgroud)

/Views/Account/Login.cshtml

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

<h1>@Localizer["test"]</h1>
Run Code Online (Sandbox Code Playgroud)

/Resources/Views/Account/Login.en-US.resx

“测试”->“结果”映射

但是当我运行我的网站时,Localizer 只显示密钥“测试”而不是“结果”

我在某处缺少配置吗?

smu*_*agh 4

如果您的程序集名称!=默认命名空间,这似乎是一个问题。让它们匹配并且事情按预期进行。

来自文档

如果目标类的命名空间与程序集名称不同,您将需要完整的类型名称。