2012-01-16 16 views
18

が、私は次の属性の組み合わせは、グローバル化のセクションで使用されている事例をたくさん見ています:例えば、uiCultureは=「auto」を文化=「auto」を、enableClientBasedCulture =「true」を:Web.configのenableClientBasedCulture属性はまったく機能しますか?ウェブを検索

<globalization uiCulture="auto" culture="auto" requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="true"/> 

ドキュメントは言う:

EnableClientBasedCultureプロパティが有効になっているhttp://msdn.microsoft.com/en-us/library/system.web.configuration.globalizationsection.enableclientbasedculture(v=VS.90).aspx、文化 UICultureプロパティがのAcceptLanguageヘッダーフィールドに、クライアントのブラウザから送信された 値をベースとしています。 AcceptLanguageヘッダー の値を特定のカルチャにマップできない場合は、Cultureおよび UICultureの値が使用されます。デフォルト値はfalseです。文化のために

とuiCulture属性、「オート」はASP.NETが現在のブラウザで指定された最初の言語 にUIの文化と文化を設定しているためにhttp://msdn.microsoft.com/en-us/library/bz9tc508(v=VS.90).aspx

を意味することになっています設定では、UICultureと を自動的に設定します。または、この値を auto:culture_info_nameに設定することもできます。culture_info_nameはカルチャ名です。 のカルチャ名のリストについては、CultureInfoを参照してください。 @ PageディレクティブまたはWeb.configファイルでこの設定を にすることができます。

ブラウザがAcceptLanguageヘッダーフィールドの値に無効な、またはカルチャ名を送信しないとします。 enableClientBasedCulture = "true"であるため、アプリケーションサーバーはAcceptLanguageヘッダーフィールドにあるものを使用しようとしますが、無効なカルチャ名を使用すると失敗し、culture = "auto"およびuiCulture = "auto自動/自動設定自体が無効なデータを使用するのに失敗します。

ここで、サーバーに有効なカルチャ名(例: "de-DE"。 enableClientBasedCulture = "true"なので、アプリケーションサーバーはAcceptLanguageヘッダーフィールドの値を使用するように依頼されますが、cultureおよびuiCultureは "auto"に設定されているため、これらの値はいずれにしても使用されます。

私の最初の質問はです:auto/autoとtrueを組み合わせる際のポイントは何ですか?私の考えは、culture = "auto"かつuiCulture = "auto"の場合、enableClientBasedCulture = "true"を使用すると冗長になります。私自身のテストでは、auto/autoはenableClientBasedCulture属性と組み合わせた場合と同じように単独でも動作することが示されていますが、Web上の多くの例でauto/auto/trueの組み合わせが提案されているのを見ています。何かを見過ごした。

私は、自動/自動設定なしでenableClientBasedCulture = "true"を使用しようとしました。

<globalization requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="true"/> 

これはまったく動作していないようです。 enableClientBasedCulture = "true"は、これらのプロパティをAcceptLanguageヘッダーフィールド値のプロパティに設定することになっているにもかかわらず、クライアントにはサーバーのcultureおよびuiCulture設定が強制的に与えられているようです。

次に、enableClientBasedCultureとcultureとuiCultureの特定のカルチャを組み合わせてみました。この場合

<globalization uiCulture="da-DK" culture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="true"/> 

、クライアントのブラウザに関係なく、その言語設定の、「DA-DK」を使用することを余儀なくされました。

http://msdn.microsoft.com/en-us/library/hy4kkhe0(v=VS.90).aspxを見て、私はenableClientBasedCultureのためにこれを参照してください。

この属性は、この時点で使用されていません。

.NET Reflectorを使用して、すべての.NET 3.5 Frameworkアセンブリを逆コンパイルし、enabledClientBasedCultureを検索しました。 System.Web.Configuration \ GlobalizationSectionに値を読み取り、それをプロパティで利用できるようにするコードがいくつか見つかりましたが、それ以外は何もしません。

Hosting \ HostingEnvironmentでは、CultureとuiCultureの値をGlobalizationSectionパラメータから取得するSetCulturesという名前のメソッドが見つかりましたが、enableClientBasedCulture属性を使用するコードはまだ見つかりません。

私の2番目の質問はです:enableClientBasedCulture属性は実際にどこでも使用されていますか?その場合、テストプログラムを構成して、効果があることを自分自身で証明する方法を教えてください。

答えて

5

あなたがしようとする場合があります:

<globalization uiCulture="auto:da-DK" culture="auto:da-DK" requestEncoding="utf-8" responseEncoding="utf-8" /> 

私は、これが最初のAcceptLanguageヘッダーから文化を使用すると信じていた場合に、指定デフォルトで使用可能な、他のフォールバック。

+1

はい、問題は1)auto/auto/trueの値を持つ3つの属性をすべて含む目的は何ですか、2)enableClientBasedCulture属性は何にでも使用されています。 例には、enableClientBasedCulture属性の使用例は含まれていません。 –

+1

@Joergen:enableClientBasedCultureのグローバル化>要素状態の<のドキュメント: "この属性は現時点では使用されていません" - http://msdn.microsoft.com/en-us/library/hy4kkhe0(v=VS) .100).aspxだから私はそれがあなたの経験に合っていると思われるものに現在使われていないと結論づけます。 – Joe

+0

はい、あなたが見たように、私は3にリンクしました。5のバージョンの私の質問では、それは私がソースコードで見ているかどうかを確認しますが、GlobalizationSectionクラスのドキュメントでは、このプロパティは効果がないはずはありません。このプロパティは、さまざまなブログ投稿とインストール手順に記載されています。そのため、私は同じことをする前にいくつかの難しい事実を探しています。私が誰かがこの設定を使用することについて自分の考えを変えるのを見た唯一の場所は、http://www.devexpress.com/Support/Center/p/B150103.aspxですが、「古い」発言以外の詳細はありません。 –

7

MSDNには、enableClientBasedCultureは使用されていません。

"enableClientBasedCulture - この属性は現在使用されていません。"

0

独自のAccept-Lang検出を実装し、それに応じて提供する文化に切り替える必要があります。

.NETは「自動マジック」切り替えをサポートしていません。

enableClientBasedCultureは何もしません。

カルチャをautoに設定しても何も行われません。両方に "auto:en"を設定し、ブラウザの言語からデンマーク語を削除すると、デフォルトではデンマーク語になります。

Good Luck。

関連する問題