Я считаю, что вам нужно написать код , чтобы прочитать культуру пользователя из входящего запроса браузера и установить из этого CultureInfo.
This fellow describes how they do it: Установите культуру отображения текущей нити на наиболее подходящую культуру из входящего в запрос объекта Http-запроса.
Он имеет отличную дискуссию там, но это в основном, как он это делает:
В 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);
}
На правильных строках, но обратите внимание, что заголовок Accept-Language, отправленный браузером, необязательно является предпочтительным языком пользователя. Я в Европе и имею американскую версию Windows, поэтому мой IE8 отправляет в США. Также обратите внимание, что имя в заголовке accept-language не может быть допустимым именем .NET-культуры, поэтому вызов CreateSpecificCulture должен быть заключен в try/catch. – Joe
нет удача. Я все еще получаю en-us в тестировании – thchaver
Что вы получаете от Request.UserLanguages? То есть, вы уверены, на каком языке ваш браузер запрашивает? – DOK