ASP.NET AJAX不为en-US语言环境呈现__cultureInfo JS对象

时间:2012-06-03 22:59:05

标签: asp.net ajax localization cultureinfo scriptmanager

我在我的网站上使用 ASP.NET AJAX控件,并在ScriptManager上启用了以下设置:

scriptManager.EnableScriptGlobalization = true;
scriptManager.EnableScriptLocalization = true;

当我将浏览器语言切换为法语时,我会在名为 __ cultureInfo 的页面上呈现一个丰富的JavaScript对象,其中包含初始化日期选择器和正确格式化所需的所有好东西日期字符串。

但是,当语言环境为美国英语时,不会呈现 __ cultureInfo 对象。

有没有办法强制ASP.NET AJAX为所有区域设置呈现此JavaScript变量/对象?我想初始化我所有的区域设置感知控件,而不必使用特殊情况下的美国英语。

1 个答案:

答案 0 :(得分:0)

Microsoft将Invariant文化克隆到en-US,因此即使未加载cultureInfo,您也应该拥有 Sys.CultureInfo.CurrentCulture

所需的一切。
switch(typeof(cultureInfo)) {
case "string":
    // this is true when the server is 3.5
    cultureInfo = window.eval("(" + cultureInfo + ")");
    // allow fallthrough to object
case "object":
    this.CurrentCulture = this._parse(cultureInfo);
    delete __cultureInfo;
    break;
default:
    cultureInfo = clone(invariant);
    // fix up the differences
    cultureInfo.name = "en-US";
    cultureInfo.numberFormat.CurrencySymbol = "$";
    var dtf = cultureInfo.dateTimeFormat;
    dtf.FullDatePattern = "dddd, MMMM dd, yyyy h:mm:ss tt";
    dtf.LongDatePattern = "dddd, MMMM dd, yyyy";
    dtf.LongTimePattern = "h:mm:ss tt";
    dtf.ShortDatePattern = "M/d/yyyy";
    dtf.ShortTimePattern = "h:mm tt";
    dtf.YearMonthPattern = "MMMM, yyyy";
    this.CurrentCulture = this._parse(cultureInfo);
    break;
}