根据浏览器接受语言自动设置uiCulture

时间:2012-11-25 11:45:34

标签: asp.net-mvc globalization

如何根据用户的浏览器自动设置ui的文化? 我发现的所有内容都是Globalize.culture("pt-BR");但它将pt-BR设置为默认值,我不希望默认设置此项!如果用户是pt-BR,我只想设置这个! 我怎样才能做到这一点?验证方法,如何为特定文化设置它们?

2 个答案:

答案 0 :(得分:19)

在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" />

扩展jQuery validator的文化设置和数字输入

注意:我绝对不是jQuery和全球化技术方面的专家。这是我如何调整validator以正确处理任何数字输入

的示例

razor查看部件X()new HtmlString())的快捷方式

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

jQuery部分(min和max的自定义方法)

$.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-CZ 的输入值:10 000,00以及 en-US 10,000.00。< / p>

答案 1 :(得分:1)

您需要从网页(或母版页)中写出脚本:

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

就是这样。请注意,我使用的是CurrentCulture而不是CurrentUICulture,因为这是您应该用于格式化的内容。如果您需要翻译(我不会这样做,因为它会损害本地化),您将需要原始的CurrentUICulture