Здесь есть два вопроса:
- Как правильно локализовать веб-приложение и
- Как использовать собственную культуру?
ASP.NET Core и ASP.NET предлагают свои собственные функции глобализации и локализации, которые работают на нескольких уровнях (приложение, страница, запрос). Вам следует проверить Глобализация и локализация в ASP.NET Core , чтобы понять, как эти функции работают в ASP.NET Core. Как и все остальное, услуги предоставляются через промежуточное ПО.
Об этом тоже есть много постов в блоге. Я выбрал это из-за названия Интернационализация - ASP.NET Core: от 0 до избыточного . Это объясняет то же самое, что и документы, в более сжатой форме.
Для вашего конкретного вопроса все, что нужно, это установить культуру для каждого запроса. Это можно сделать с помощью метода локализации промежуточного программного обеспечения UseRequestLocalization .
В Configure(IApplicationBuilder, IWebHostEnvironment)
файла Startup.cs, прямо перед app.UseStaticFiles()
, вы можете добавить вызов к UseRequestLocalization
, чтобы указать культуры:
var supportedCultures = new[]
{
new CultureInfo("ru-RU"),
};
app.UseRequestLocalization(new RequestLocalizationOptions{
DefaultRequestCulture = new RequestCulture("ru-RU"),
SupportedCultures=supportedCultures,
SupportedUICultures=supportedCultures
});
Я выбрал ru-RU
, потому что он использует точку для разделителя даты. Ввод
@DateTime.Today.ToString()
на странице Razor это производит
25.06.2019 0:00:00
Вы также можете передать свою собственную культуру UseRequestLocalization
. Используя эту пользовательскую культуру:
var culture = CultureInfo.CreateSpecificCulture("en-US");
var dateformat = new DateTimeFormatInfo {
ShortDatePattern = "MM/dd/yyyy",
LongDatePattern = "MM/dd/yyyy hh:mm:ss tt"
};
culture.DateTimeFormat = dateformat;
var supportedCultures = new[]
{
culture
};
app.UseRequestLocalization(new RequestLocalizationOptions{
DefaultRequestCulture = new RequestCulture(culture),
SupportedCultures=supportedCultures,
SupportedUICultures=supportedCultures
});
Производит:
06/25/2019 00:00:00