2012-11-25 37 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

相关问题