Глобализация ASP.NET Отображение дат

Доброе утро,

Извиняюсь за вопрос новичка. Я только начинаю работать с настройками интернационализации ASP.NET.

Справочная информация:

У меня есть веб-сайт, на котором отображается объект <table> HTML. В этом HTML-объекте <table> у меня есть столбец, в котором отображаются даты. Мой сервер находится в США, эти даты отображаются как MM/DD/YYYY. Многие из моих пользователей подключаются к этой веб-странице через Excel через интерфейс Данные -> Импорт внешних данных -> Импорт веб-запроса. Мои пользователи, по большей части, находятся в США, поэтому эти даты правильно отображаются на их экранах Excel.

Теперь мне нужно, чтобы веб-страница работала для пользователей из Великобритании. В нынешнем виде они загружают даты как MM/DD/YYYY, что делает их электронные таблицы непригодными для использования, поскольку их региональные настройки установлены на DD/MM/YYYY.

Мой вопрос:

Как сделать так, чтобы веб-сервер понимал, что входящий запрос имеет настройку культуры en-GB? Я мог бы разработать свой собственный небольшой обходной путь, но я уверен, что я не первый программист, столкнувшийся с этим. Как профессионалы справляются с этим? Я ищу решение, которое было бы относительно простым и быстрым в установке, но я не хочу просто собрать какой-то дрянной глючный кусок моей собственной логики, которого я буду бояться через 6 месяцев.

Заранее большое спасибо, -Алан.


person AlanR    schedule 19.11.2008    source источник
comment
Это i18n, а не i13n. Кто-нибудь может изменить этот тег?   -  person Ryan Rinaldi    schedule 19.11.2008


Ответы (3)


Несколько моментов:

  • Элемент ‹globalization› также нуждается в атрибуте culture="auto". Атрибут uiCulture влияет на язык, используемый для получения ресурсов. Атрибут культуры влияет на культуру, используемую для форматирования чисел и дат.

  • Как отмечено в этой статье MSDN, не рекомендуется полагаться исключительно на настройки браузера, чтобы определить культуру пользовательского интерфейса для страницы. Пользователи часто используют браузеры, не соответствующие их предпочтениям (например, в интернет-кафе). Вы должны предоставить пользователям метод явного выбора языка или языка и региональных параметров (имя CultureInfo) для страницы.

person Joe    schedule 19.11.2008
comment
Вот и все! Спасибо. Я не смог заставить работать web.config, но с вашим первым комментарием все заработало. Таким образом, мне не нужно писать код. Огромное спасибо. - person AlanR; 19.11.2008

Вы можете разрешить браузеру автоматически устанавливать культуру пользовательского интерфейса, если хотите, открыв файл web.config, например так:

<configuration>
   <system.web>    
       <globalization uiCulture="auto" />
       ...

И тогда культура, установленная браузером, будет автоматически установлена ​​в вашем приложении. Это означает, что когда у вас есть значения даты/времени отображения фреймворка, они будут отформатированы в соответствии с культурой пользовательского интерфейса текущего потока.

Это также поможет, если вы используете валюту и/или локализованный текст (однако вы должны предоставить локализованные ресурсы для каждой культуры, которую вы поддерживаете).

person Ben Scheirman    schedule 19.11.2008

Вы также можете принять параметр строки запроса для переопределения настроек культуры.

Инициализация культуры должна выполняться в методе 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< /а>

person baretta    schedule 19.11.2008
comment
На самом деле эта веб-страница вызывается из надстройки Excel. Я бы не хотел много заниматься с определением региональных настроек машины из VBA :). - person AlanR; 19.11.2008
comment
Тем не менее, очень хороший момент, когда я должен инициализировать культуру. - person AlanR; 19.11.2008