CultureInfo. CurrentCulture дает мне неправильную культуру

Я пытаюсь получить страну своих клиентов, таким образом, я использую CultureInfo. CurrentCulture. Проблема состоит в том, что, когда мои канадские клиенты используют мой веб-сайт, они обнаруживаются как американец.

Это похоже на CultureInfo. CurrentCulture возвращает страну моего сервера вместо их страны. Таким образом, как я получаю страну своих клиентов?

9
задан thchaver 28 June 2010 в 17:09
поделиться

1 ответ

Я полагаю, что вам нужно написать код для чтения культуры пользователя из входящего запроса браузера, и установить ваш CultureInfo из этого.

Этот товарищ описывает, как они это делают: Установить культуру отображения для текущего потока на наиболее подходящую культуру из входящего объекта Http "request" пользователя.

У него там отличное обсуждение, но вот как он это делает:

В Page_Load они делают такой вызов: UIUtilities.setCulture(Request);

Где вызывается вот что:

/// Set the display culture for the current thread to the most
/// appropriate culture from the user's incoming Http "request" object.
internal static void setCulture(HttpRequest request)
{
    if (request != null)
    {
      if (request.UserLanguages != null)
      {
        if (request.UserLanguages.Length > -1)
        {
          string cultureName = request.UserLanguages[0];
          UIUtilities.setCulture(cultureName);
        }
      }
        // TODO: Set to a (system-wide, or possibly user-specified) default
        // culture if the browser didn't give us any clues.
    }
}

/// Set the display culture for the current thread to a particular named culture.
/// <param name="cultureName">The name of the culture to be set 
/// for the thread</param>
private static void setCulture(string cultureName)
{
    Thread.CurrentThread.CurrentCulture = 
        CultureInfo.CreateSpecificCulture(cultureName);
    Thread.CurrentThread.CurrentUICulture = new
        CultureInfo(cultureName);
}
2
ответ дан 4 December 2019 в 09:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: