ASP Core 2.0 本地化程序找不到资源文件

Mat*_*art 2 c# localization asp.net-core

我有一个想要本地化的 asp 核心应用程序。我会马上进入。

在 startup.cs - ConfigureServices 中:

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

        services.AddMvc()
            .AddViewLocalization(opts => 
                { opts.ResourcesPath = "Resources"; })
            .AddDataAnnotationsLocalization();
Run Code Online (Sandbox Code Playgroud)

startup.cs - 配置:

   var supportedCultures = new[]
    {
        new CultureInfo("en"),
        new CultureInfo("fr"),
    };

    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("en"),
        // Formatting numbers, dates, etc.
        SupportedCultures = supportedCultures,
        // UI strings that we have localized.
        SupportedUICultures = supportedCultures
    });
Run Code Online (Sandbox Code Playgroud)

我的资源文件是有序的。以fr(for HomeController, Homeaction)为例: {root}/Resources/Views/Home/Home.fr.resx

这是一个不起作用的视图:

@using Microsoft.AspNetCore.Mvc.Localization

@inject IViewLocalizer Localizer

@{
    ViewData["Title"] = @Localizer["test"];
}

<div class="row">
    <div class="col-lg-6">
        <div class="panel panel-default">
            <div class="panel-heading">My Toolboxes</div>
            <div class="panel-body">
            </div>
        </div>
    </div>
    <div class="col-lg-6">
        <div class="panel panel-default">
            <div class="panel-heading">Notices</div>
            <div class="panel-body">
                Lorem ipsum dolor sit amet, consectetur adipiscing elit.
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Title 永远是“测试”,应该是“essai”。

当我检查时Localizer["test"]IsResourceNotFound= true

我 100% 确定 chrome 正在请求fr语言环境:

GET /Home/Home HTTP/1.1
Host: localhost:62677
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: fr,en-US;q=0.9,en;q=0.8
Run Code Online (Sandbox Code Playgroud)

Ren*_*ené 6

我遇到了同样的错误,在我的情况下,它在转到项目设置并将程序集名称更改为与Default namespace完全相同的值后解决了。(我的程序集名称一直是<MyProjectName>我的默认命名空间设置为<MyCompany.MyProjectName>)。LocalizerFactory 似乎在内部创建了根据程序集名称查找资源的路径。如果资源的命名空间不以程序集名称开头,则不会找到它们。