2013-01-18 17 views
8

在c#中我使用下面的方法來獲取CultureInfo。JavaScript中的CultureInfo

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

任何一個可以告訴我,我怎樣才能在JavaScript中的CultureInfo?

+1

看看http://stackoverflow.com/questions/673905/您可以在這裏獲取代碼最好的方式來確定用戶區域內的瀏覽器 –

回答

9

非常簡單的方法是將其渲染成認爲,像這樣的:

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

這是剃刀語法,如果使用傳統的asp.net,然後使用:

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

這隻適用於如果這是一個ASP.NET網站。沒有通用的方式從JavaScript訪問CultureInfo。 – schlingel

0

這取決於在你的目標上。如果您希望將整個網站視爲與服務器相同的文化,則只能使用System.Globalization.CultureInfo.CurrentCulture.Name,並在第一個代碼段中刪除if-then速記。如果您擁有全球網站,這不可取。

包括在你的頁面底部的以下內容:

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

現在,您可以檢索特定於用戶的文化信息,您在JavaScript中,使用:

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

在後面的代碼,您需要的任何日期時間解析,將文化信息提供者傳遞到解析和tryparse以及Convert.ToDateTime函數,方法如下:

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

注意:如果您使用JQuery UI並且默認不包含文化(如en-CA或en-GB),則必須添加它們。按照下面的示例動態

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

然後,您可以包括它:

$.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不返回Web服務器的區域性。在ASP.Net中,頁面的服務器端代碼運行在最終用戶的文化中。 – flip