Использование локализации представлений в ASP.NET Core

Я хочу использовать локализацию в приложении ASP.NET Core, которое использует Areas.

У меня есть частичное представление Areas\Admin\Views\People\GetPeopleStatistics.cshtml

В этом я хочу использовать локализацию:

...
@inject IViewLocalizer Localizer

<h3>@Localizer["People Statistics"]:</h3>
...

Для этого я создал файл ресурсов: Resources\Admin\Views\People\GetPeopleStatistics.en.resx

У меня есть следующая конфигурация в Startup.cs:

services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });
        services.AddMvc()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, opts => { opts.ResourcesPath = "Resources"; })
            .AddDataAnnotationsLocalization();
        services.AddAutoMapper();

        services.Configure<RequestLocalizationOptions>(
            opts =>
            {
                var supportedCultures = new List<CultureInfo>
                {
                    new CultureInfo("en"),
                    new CultureInfo("de")
                };

                opts.DefaultRequestCulture = new RequestCulture("en");
                // Formatting numbers, dates, etc.
                opts.SupportedCultures = supportedCultures;
                // UI strings that we have localized.
                opts.SupportedUICultures = supportedCultures;
            });

К сожалению, это не работает. Приложение не отображает значение из файла ресурсов.

Я использую файлы cookie для хранения культуры:

    [HttpPost]
    public async Task SetLanguage(string culture)
    {
        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
            new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
        );
    }

Я также получаю следующую ошибку в Visual Studio:

Custom tool PublicResXFileCodeGenerator failed to produce an output for input file 'Resources\Admin\Views\People\GetPeopleStatistics.en.resx' but did not log a specific error. WebApplication  D:\SVN Repositories\SRMS\trunk\PresentationLayer\WebApplication\Resources\Admin\Views\People\GetPeopleStatistics.en.resx    1   

Что я делаю неправильно? Как я могу настроить это?


person Alexander    schedule 09.05.2017    source источник


Ответы (1)


Вы можете попробовать следующее: щелкните правой кнопкой мыши свое решение и выполните «чистое решение». Это решило для меня проблему, когда локализация не работала, и я был на 100% уверен, что все настроено правильно.

person David De Jaeger    schedule 27.05.2018