2012-11-25 87 views
12

如何根據用戶瀏覽器自動設置ui文化? 所有我發現這個是Globalize.culture("pt-BR");但它設置pt-BR作爲默認,我不想默認設置此!我只想設置這個,如果用戶是PT - BR! 我該怎麼做?而驗證方法,我怎樣才能將它們設置爲特定的文化?根據瀏覽器接受語言自動設置uiCulture

回答

18

在ASP.NET MVC中,web.config是正確的地方。有一個快速總結,第一個片段顯示,如何可能是pt-BR文化被迫

<globalization 
    enableClientBasedCulture="false" 
    uiCulture="pt-BR" 
    culture="pt-BR" /> 

如果應用程序已準備好接受來自客戶端(瀏覽器)的文化,設置應該

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto" 
    culture="auto" /> 

以上設置將在客戶端瀏覽器中選擇一個語言(如在我的情況下爲cs-CZ)。如果沒有定義,則會使用系統設置。 最後的片斷顯示,如何讓客戶端設置發送意文化,但如果沒有語言是預先選定的,覆蓋系統與其他一些默認值PT-BR

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto:pt-BR" 
    culture="auto:pt-BR" /> 

設置擴展:爲jQueryvalidator和數字輸入

注區域性設置:我絕對不是在jQuery和全球化技術方面的專家。這就是例子,我該怎麼辦調整validator正確處理任何數字輸入

Razor視圖部分X()new HtmlString()快捷方式)

var defaultThousandSeprator = "@X(culture.NumberFormat.NumberGroupSeparator)"; 
var defaultDecimalSeprator = "@X(culture.NumberFormat.NumberDecimalSeparator)"; 

jQuery的部分(最小和最大的自定義方法)

$.validator.addMethod("min", function (value, element, param) 
{ 
    var num = value.replace(RegExp(" ", "g"), "") // remove spaces 
      .replace(RegExp('\\' + defaultThousandSeprator, "g"), "") // thousand separator 
      .replace(RegExp("\\" + defaultDecimalSeprator, "g"), "."); // fix decimals 
    return this.optional(element) || num >= param; 
}); 
$.validator.addMethod("max", function (value, element, param) 
{ 
    var num = value.replace(RegExp(" ", "g"), "") // remove spaces 
      .replace(RegExp('\\' + defaultThousandSeprator, "g"), "") // thousands 
      .replace(RegExp("\\" + defaultDecimalSeprator, "g"), "."); // decimals 
    return this.optional(element) || num <= param; 
}); 

然後jQuery.validator計算輸入值CS-CZ10 000,00正確以及en-US10,000.00

+0

但在jQuery驗證器中改變這種doest'n影響(驗證保持不變),所以我需要用Globalize.js改變文化。 – MuriloKunze

+0

好的,我不知道Globalize.js。爲了處理JS的東西,我使用了動態生成的JS變量,例如:'var defaultCulture =「@(CultureInfo.CurrentCulture.Name)」';然後擴展JS組件,比如'$ .datepicker.regional [defaultCulture || ''];'。但我的回答是解釋如何允許使用客戶文化,就像你問的那樣......可能有默認設置,但是如果提供了客戶端重寫 –

+0

是的,謝謝。但我需要知道如何使用全球化和驗證。 – MuriloKunze

1

你需要寫出從網頁(或母版頁)的腳本:

<script type="text/javascript"> 
    Globalize.culture("<% = CultureInfo.CurrentCulture.ToString() %>"); 
</script> 

就是這樣。請注意,我使用CurrentCulture而不是CurrentUICulture,因爲這應該用於格式化。如果你需要翻譯(我不會這樣做,因爲它會傷害localizability),你需要你的原始CurrentUICulture

相關問題