Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP Core 2.0本地化程序找不到资源文件_C#_Asp.net Core_Localization - Fatal编程技术网

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

C# ASP Core 2.0本地化程序找不到资源文件,c#,asp.net-core,localization,C#,Asp.net Core,Localization,我有一个asp核心应用程序,我正在尝试本地化。我马上就去 在startup.cs-ConfigureServices中: services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(opts => { opts.Resources

我有一个asp核心应用程序,我正在尝试本地化。我马上就去

在startup.cs-ConfigureServices中:

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

        services.AddMvc()
            .AddViewLocalization(opts => 
                { opts.ResourcesPath = "Resources"; })
            .AddDataAnnotationsLocalization();
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
    });
我的资源文件是有序的。以
fr
为例(对于
HomeController
Home
操作):
{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>
可能需要

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

services.AddMvc()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)  // <<< looks like intellisense failed you here...
    .AddDataAnnotationsLocalization();
services.AddLocalization(options=>options.ResourcesPath=“Resources”);
services.AddMvc()

.AddViewLocation(LanguageViewLocationExpanderFormat.Suffix)/我遇到了相同的错误,在我的例子中,在转到项目设置并将程序集名称更改为与默认命名空间完全相同的值后,该错误得到了解决。(我的程序集名称是
,而我的默认命名空间设置为
)。在内部,LocalizerFactory似乎创建了基于程序集名称查找资源的路径。如果资源的命名空间不是以程序集名称开头,则将找不到它们

我认为问题在于你正在直接为应用程序设置受支持的区域性。并且支持的区域性未作为服务配置的一部分注册。因此它找不到文化。
首先在ConfigureServices中注册所需的区域性。然后在“配置”中访问这些区域性以将其设置为应用程序。见以下代码:

public void配置服务(IServiceCollection服务)
{
//删除了其他配置
AddLocalization(opts=>{opts.ResourcesPath=“Resources”;});
//在这里注册文化
服务。配置(
选项=>
{
var supportedCultures=新列表
{
新文化信息(“en GB”),
新文化信息(“美国”),
新文化资讯(“fr”),
};
opts.DefaultRequestCulture=新的RequestCulture(“en-US”);
opts.SupportedCultures=SupportedCultures;
opts.supporteduccultures=支持的文化;
});
services.AddMvc()
//其他注册
}
公共无效配置(IApplicationBuilder应用程序,
IHostingEnvironment(环境)
{
//在此处访问已注册的区域性并将其设置为应用程序
app.UseRequestLocalization(app.ApplicationServices.GetService().Value);
app.UseMvc();

}
这不适用于使用不同视图的情况吗?即
home.en.cshtml
。在我的例子中,我想使用一个视图(
home.cshtml
)和多个资源文件(
Views.home.home.resx
),这为我解决了这个问题,谢谢。Microsoft至少应该给我们一个选项,为本地化设置一个基本命名空间路径,以覆盖此行为。谢谢,这让我有好几个小时的时间都很紧张。我的下一个解决办法是雇一个牧师来驱除我的密码。
services.AddLocalization(options => options.ResourcesPath = "Resources");

    services.AddMvc()
        .AddViewLocalization(opts => 
            { opts.ResourcesPath = "Resources"; })
        .AddDataAnnotationsLocalization();
services.AddLocalization(options => options.ResourcesPath = "Resources");

services.AddMvc()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)  // <<< looks like intellisense failed you here...
    .AddDataAnnotationsLocalization();