C# 视图本地化

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

我正在尝试本地化我的ASP.NET核心应用程序。我想使用ViewLocalizer和
@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);
    }