2013-01-18 33 views
8

Trong C# tôi sử dụng phương pháp dưới đây để lấy CultureInfo.CultureInfo trong JavaScript

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

Bất kỳ ai có thể cho tôi biết làm cách nào để có được CultureInfo trong JavaScript?

+1

hãy nhìn vào http://stackoverflow.com/questions/673905/ best-way-to-defined-users-locale-trong-trình duyệt –

Trả lời

9

cách Rất dễ dàng là để làm cho nó vào xem, như thế này:

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

này được cú pháp dao cạo, nếu bạn sử dụng asp.net cổ điển, sau đó sử dụng:

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

Điều này chỉ hoạt động nếu đây là một trang web ASP.NET. Không có cách chung để truy cập CultureInfo từ JavaScript. – schlingel

0

Nó phụ thuộc về mục tiêu của bạn. Nếu bạn muốn toàn bộ trang web được coi là văn hóa giống như máy chủ của bạn, bạn chỉ có thể sử dụng System.Globalization.CultureInfo.CurrentCulture.Name và loại bỏ tốc ký if-then trong đoạn mã đầu tiên. Điều này không được khuyến khích nếu bạn có một trang web toàn cầu.

Bao gồm những điều sau ở dưới cùng của trang của bạn:

<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) %>" /> 

Bây giờ bạn có thể lấy các thông tin văn hóa cụ thể cho người sử dụng, trong javascript của bạn, sử dụng:

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

Trong code của bạn đằng sau , bất kỳ phân tích datetime nào bạn yêu cầu, vượt qua trong nhà cung cấp thông tin văn hóa để phân tích cú pháp và hàm tryparse và Convert.ToDateTime bằng cách sử dụng bên dưới:

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

Lưu ý: nếu bạn sử dụng giao diện người dùng Jquery và có văn hóa không được bao gồm theo mặc định (chẳng hạn như en-CA hoặc en-GB), bạn sẽ phải thêm chúng. Bạn có thể lấy mã ở đây:

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

Sau đó bạn có thể bao gồm nó tự động bằng cách làm theo các ví dụ dưới đây:

$.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 không trả về văn hóa của máy chủ web. Trong ASP.Net, mã phía máy chủ của trang chạy trong nền văn hóa của người dùng cuối. – flip

Các vấn đề liên quan