получить cultureinfo с кодом страны - PullRequest
2 голосов
/ 11 октября 2009

Я пытаюсь получить CultureInfo с кодом страны. Я использую hostip.info для получения кода страны.

Например, «http://api.hostip.info/?ip=207.46.197.32&position=true" возвращает мне« США »для кода страны или http://api.hostip.info/?ip=82.151.131.196&position=true возвращает« TR ».

Если бы я мог иметь "en-US", "tr-TR", это легко, но я не могу иметь эти названия культур. У меня есть коды стран.

Так есть ли способ получить CultureInfo с кодами стран или у вас есть предложения по получению CultureInfo с IP-адресом?

Ответы [ 4 ]

2 голосов
/ 15 апреля 2010

Если запрос сделан браузером, поле «Accept-Language» в заголовке HTTP-запроса перечислит желаемую культуру (ы). Конечно, это не от IP, но это может быть решением, если у вас есть заголовки HTTP-запроса.

например.,

Accept-Language: en-us, en

1 голос
/ 04 февраля 2011

Официальные общедоступные стандарты являются наиболее лучшим источником для использования. См. «CLDR - хранилище данных Unicode Common Locale» в http://cldr.unicode.org/.

Файлы данных доступны для скачивания. Интересная документация и рекомендации имеются.

1 голос
/ 11 октября 2009

Я не уверен, что вы можете сделать это на практике.

Если у вас есть Швейцария, Канада или Индия в качестве кода страны, какой язык вы бы хотели?

0 голосов
/ 21 декабря 2011

Я столкнулся с той же проблемой, потому что я получил код страны из сторонней библиотеки локализации IP. Итак, вот мое решение.

Сначала я пытаюсь получить информацию о культуре по коду страны. Если это не удается, я извлекаю всю информацию о культуре, а затем ищу ту, которая содержит название страны (также возможно, если код страны (США) содержится в поле CultureInfo.Name (en-US))

ci = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => c.EnglishName.Contains(loc.countryName)).FirstOrDefault();

Если в стране более одной культуры, я следовал подходу, предложенному Дугом Домени

...