2013-01-18 18 views
8

W języku C# używam poniższej metody, aby uzyskać CultureInfo.CultureInfo w JavaScript

System.Globalization.CultureInfo.CurrentCulture.Name // output :en-US 

Czy ktoś może mi powiedzieć, jak mogę uzyskać CultureInfo w JavaScript?

+1

przyjrzeć http://stackoverflow.com/questions/673905/ best-way-to-specify-users-locale-in-browser –

Odpowiedz

9

Bardzo łatwy sposób to czynią go do widzenia, tak:

<script> 
    var cultureInfo = '@System.Globalization.CultureInfo.CurrentCulture.Name'; 
</script> 

to składnia brzytwa, jeśli używasz klasycznego ASP.NET, a następnie użyj:

<script> 
    var cultureInfo = '<%= System.Globalization.CultureInfo.CurrentCulture.Name %>'; 
</script> 
+0

Działa to tylko, jeśli jest to witryna ASP.NET. Nie ma ogólnego sposobu dostępu do CultureInfo z JavaScript. – schlingel

0

To zależy o twoim celu. Jeśli chcesz, aby cała witryna była traktowana jako ta sama kultura co Twój serwer, możesz użyć tylko System.Globalization.CultureInfo.CurrentCulture.Name i usunąć skrót "if-then" w obrębie pierwszego fragmentu kodu. Nie jest to zalecane, jeśli masz globalną witrynę internetową.

zawierać następujący tekst w dolnej części strony:

<input id="currentCulture" type="hidden" value="<%=((Request.UserLanguages != null && Request.UserLanguages.Length > 0) ? new System.Globalization.CultureInfo(Request.UserLanguages.First(), true).Name : System.Globalization.CultureInfo.CurrentCulture.Name) %>" /> 

Teraz można pobierać informacje o kulturę specyficzny dla użytkownika, w JavaScript, używając:

$("#currentCulture").val(); //Jquery 
document.getElementById("currentCulture").value; //Pure javascript 

w kodzie tyłu , wszelkie potrzebne analizy składni, które są wymagane, należy przekazać dostawcy informacji o kulturze do analizowania i funkcji tryparse i Convert.ToDateTime, używając:

CultureInfo info = ((Request.UserLanguages != null && Request.UserLanguages.Length > 0) ? new CultureInfo(Request.UserLanguages.First(), true) : System.Globalization.CultureInfo.CurrentCulture); 

Uwaga: jeśli korzystasz z interfejsu Jquery i domyślnie nie ma kultur (takich jak en-CA lub en-GB), musisz je dodać. Można pobrać kod tutaj:

https://code.google.com/p/dobo/source/browse/trunk/dobo/Kooboo.CMS/Kooboo.CMS.Web/Scripts/jquery-ui-i18n/?r=7

można następnie dołączyć go dynamicznie, wykonując poniższy przykład:

$.datepicker.regional['en-CA'] = { "Name": "en-CA", "closeText": "Close", "prevText": "Prev", "nextText": "Next", "currentText": "Today", "monthNames": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ""], "monthNamesShort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ""], "dayNames": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "dayNamesShort": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "dayNamesMin": ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], "dateFormat": "dd/mm/yy", "firstDay": 0, "isRTL": false }; 
$(".datepick").datepicker($.datepicker.setDefaults($.datepicker.regional[$("#currentCulture").val()])); 
+1

System.Globalization.CultureInfo.Name nie zwraca kultury serwera WWW. W ASP.Net kod strony po stronie działa w kulturze użytkownika końcowego. – flip

Powiązane problemy