Глобализация ASP.NET — отображение дат
-
08-07-2019 - |
Вопрос
Доброе утро,
Извиняюсь за вопрос новичка.Я только начинаю работу с настройками интернационализации ASP.NET.
Справочная информация:
У меня есть веб-сайт, на котором отображается <table>
HTML-объект.В этом <table>
HTML-объект, у меня есть столбец, в котором отображаются даты.Мой сервер находится в США, эти даты отображаются как MM/DD/YYYY
.Многие из моих пользователей подключаются к этой веб-странице через Excel, через интерфейс Данные -> Импорт внешних данных -> Импорт веб-запроса.Мои пользователи по большей части находятся в США, поэтому эти даты правильно отображаются на их экранах Excel.
Теперь мне нужно заставить веб-страницу работать для пользователей из Великобритании.Как есть, они загружают даты как MM/DD/YYYY
, что делает их таблицы непригодными для использования, поскольку их региональные настройки установлены на DD/MM/YYYY
.
Мой вопрос:
Как мне сделать так, чтобы веб-сервер понимал, что входящий запрос имеет en-GB
культурная установка?Я мог бы придумать свой собственный обходной путь, но уверен, что я не первый программист, который столкнулся с этим.Как с этим справляются профессионалы?Я ищу решение, которое было бы относительно простым и быстрым в установке, но я не хочу просто собирать воедино какой-то дерьмовый кусок моей собственной логики, которого я буду бояться через 6 месяцев.
Большое спасибо заранее, -alan.
Решение
Пара моментов:
Элементу <globalization> также необходим атрибут Culture="auto".Атрибут uiCulture влияет на язык, используемый для получения ресурсов.Атрибут культуры влияет на культуру, используемую для форматирования чисел и дат.
Как отмечено в эта статья MSDN, не рекомендуется полагаться исключительно на настройки браузера при определении культуры пользовательского интерфейса страницы.Пользователи часто используют браузеры, не настроенные по их предпочтениям (например, в интернет-кафе).Вы должны предоставить пользователям возможность явно выбирать язык или язык и культуру (имя CultureInfo) для страницы.
Другие советы
Если хотите, вы можете разрешить браузеру автоматически устанавливать культуру пользовательского интерфейса, открыв файл web.config, например:
<configuration>
<system.web>
<globalization uiCulture="auto" />
...
И тогда культура, установленная браузером, будет автоматически установлена в вашем приложении.Это означает, что если у вас есть значения даты и времени, отображаемые в платформе, они будут отформатированы в соответствии с культурой пользовательского интерфейса текущего потока.
Это также поможет, если вы используете валюту и/или локализованный текст (однако вам необходимо предоставить локализованные ресурсы для каждой культуры, которую вы поддерживаете).
Вы также можете принять параметр строки запроса для переопределения настроек культуры.
Инициализация культуры должна идти в методе Page.InitializeCulture.
protected override void InitializeCulture ( )
{
Thread.CurrentThread.CurrentCulture
= Thread.CurrentThread.CurrentUICulture
= Request.QueryString [ "culture" ] != null ? new CultureInfo ( Request.QueryString [ "culture" ] ) : CultureInfo.InvariantCulture;
//base.InitializeCulture ( );
}
Использование: http://tempuri.org/page.aspx?culture=en -GB р>