Я пытаюсь локализовать проект ASP.NET 5/MVC 6 (RC1). К сожалению, официальная документация по-прежнему отсутствует, поэтому я основывал свои эксперименты главным образом на сообщениях this и this.Не удается получить базовую локализацию для работы с ASP.NET 5
Вот что я сделал: В Configure
(Startup.cs) У меня есть
app.UseRequestLocalization(new RequestLocalizationOptions
{
RequestCultureProviders = new List<IRequestCultureProvider>
{
new CustomRequestCultureProvider(httpContext => Task.FromResult(new ProviderCultureResult("de-CH"))),
new AcceptLanguageHeaderRequestCultureProvider()
}
}, new RequestCulture("en-US"));
Обратите внимание, что первая запись в моем списке RequestCultureProviders
всегда возвращает de-CH
культуру. Поэтому я ожидал бы, что AcceptLanguageHeaderRequestCultureProvider
, а также по умолчанию RequestCulture
(en-US
) не влияют.
Однако, когда я смотрю на
HttpContext.Features.Get<IRequestCultureFeature>().RequestCulture.Culture.Name;
в некоторых действий контроллера, его значение en-US
и не ожидается de-CH
.
Затем я попытался изменить значение по умолчанию RequestCulture
в Configure
от en-US
до de-DE
и теперь, когда я смотрю на
HttpContext.Features.Get<IRequestCultureFeature>().RequestCulture.Culture.Name;
в моем действии контроллера, он имеет значение de-DE
.
Так что вопрос: Почему ASP.NET возвратиться к культуре по умолчанию, вместо того, чтобы использовать культуру de-CH
предоставленную моей CustomRequestCultureProvider
?