2

サイトでASP.NET AJAX コントロールを使用しており、ScriptManager で次の設定を有効にしています。

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

ブラウザの言語をたとえばフランス語に切り替えると、 __cultureInfoというページに豊富な JavaScript オブジェクトがレンダリングされます。このオブジェクトには、日付ピッカーを初期化し、日付文字列を適切にフォーマットするために必要なすべての機能が含まれています。

ただし、ロケールが米国英語の場合、__cultureInfoオブジェクトは表示されません。

ASP.NET AJAX にこの JavaScript 変数/オブジェクトをすべてのロケールでレンダリングさせる方法はありますか? 米国英語を特殊なケースにすることなく、すべてのロケール対応コントロールを初期化したいと考えています。

4

1 に答える 1

0

Microsoft は Invarient カルチャを 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;
}
于 2013-05-02T23:50:22.937 に答える