Javascript культура всегда en-us - PullRequest
3 голосов
/ 09 июня 2010

Я не уверен, правильно ли я понимаю этот код или правильно его использую, но у меня сложилось впечатление, что на веб-сайте ASP.NET 2.0 AJAX я мог запустить javascript, например:

var c = Sys.CultureInfo.CurrentCulture

, и это даст мне настройки языка / языка, которые пользователь указал в своем браузере во время посещения. Однако, для меня это всегда возвращается «en-US» независимо от того, какой язык я выбираю в Firefox или IE.

Этот серверный код однако:

string[] languages = HttpContext.Current.Request.UserLanguages;

if (languages == null || languages.Length == 0)
   return null;

try
{
   string language = languages[0].ToLowerInvariant().Trim();
   return CultureInfo.CreateSpecificCulture(language);
}
catch (ArgumentException)
{
    return null;
}

возвращает язык, который я сейчас установил. Но мне нужно сделать это на стороне клиента, потому что мне нужно проанализировать строку в datetime и выполнить некоторые проверки перед отправкой, и строка может быть ММ / ДД / ГГГГ или ДД / ММ / ГГГГ, или чем-то подобным.

Чего мне не хватает?

EDIT: Хорошо, я наткнулся на эту библиотеку http://www.datejs.com/. Выглядит довольно мило, и в ней есть ниндзя, так что я уже почти продан. Но в их документе я заметил, что вам нужно включить один из языковых js-файлов для включения. Я полагаю, что вам придется принять такое решение на стороне сервера и создать правильный тег включения сценария, который заставил меня задуматься. Я должен делать это с ASP.NET AJAX? то есть проверка серверной культуры (которая работает) и установка Sys.CultureInfo.CurrentCulture в js на основании этого? Я надеялся, что он просто автоматически получит его из клиентской части браузера.

Ответы [ 3 ]

1 голос
/ 09 июня 2010

Значение Sys.CultureInfo.CurrentCulture основано на значении, которое отправлено с сервера.Чтобы сервер отправил правильное значение обратно клиенту, необходимо установить для свойства EnableScriptGlobalization значение true для объекта ScriptManager (по умолчанию это значение false).

0 голосов
/ 09 июня 2010

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

0 голосов
/ 09 июня 2010

TMK, браузер не передает никакой информации о часовом поясе серверу в первом запросе. Вы должны сделать это с помощью Javascript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...