Вопрос

Доброе утро,

Извиняюсь за вопрос новичка.Я только начинаю работу с настройками интернационализации 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top