ASP.NET Globalization - Отображение дат - PullRequest
1 голос
/ 19 ноября 2008

Доброе утро,

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

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

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

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

Мой вопрос:

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

Большое спасибо заранее, -Alan.

Ответы [ 3 ]

2 голосов
/ 19 ноября 2008

Пара баллов:

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

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

2 голосов
/ 19 ноября 2008

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

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

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

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

1 голос
/ 19 ноября 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

...