Как следует из заголовка, я хочу отформатировать даты в моем приложении ASP.NET Core, чтобы они форматировались для региона посетителя.
Например, в моей модели представления я сейчас определяю свою дату следующим образом;
[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]
public DateTime OpenDate { get; set; }
Как настроить приложение для использования локальных предпочтений посетителей?
Я попытался включить локализацию в моем файле запуска, поместив следующее перед использованием Mvc ();
app.UseRequestLocalization();
Затем в моем контроллере я попробовал следующее, но значение browserCulture всегда ПУСТО, если я не отредактирую свой файл запуска и не настрою культуру по умолчанию.
var locale = Request.HttpContext.Features.Get<IRequestCultureFeature>();
var browserCulture = locale.RequestCulture.UICulture.ToString();
Я определяю культуру по умолчанию с помощью;
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("en-GB");
});
Я использовал Chrome, чтобы проверить, что мой браузер передает заголовок Accept-Language, и я могу подтвердить, что это так. Используя плагин Chrome, я также изменил свойство Accept-Language, чтобы оно отличалось от настройки культуры по умолчанию в приложении, т. Е. En-US, но это также не учитывается.
Что мне не хватает?
----- РАЗРЕШЕНИЕ -----
Как и предполагалось, мне нужно было настроить культуры, которые будет поддерживать приложение. Я изменил конфигурацию локализации в ConfigureServices в моем файле запуска следующим образом:
// Setup supported cultures
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr"),
new CultureInfo("en-GB"),
new CultureInfo("zh-TW")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("en-GB");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});