Я хочу использовать локализацию в приложении 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
Что я делаю неправильно? Как я могу настроить это?