10

クライアントの国を取得しようとしているので、CultureInfo.CurrentCulture を使用します。問題は、カナダの顧客が私の Web サイトを使用すると、アメリカ人として表示されることです。

CultureInfo.CurrentCulture が自分の国ではなくサーバーの国を返しているようです。では、どうすればクライアントの国を取得できますか?

4

3 に答える 3

18

web.config ファイルでculture属性を設定するだけです。auto

<system.web>
    <globalization culture="auto" />
<system.web>

CurrentCultureこれにより、 がクライアントのカルチャに自動的に設定されます。

ローカライズされたリソースを使用している場合にuiCultureも設定できます。auto

于 2010-09-25T15:12:40.997 に答える
2

着信ブラウザのリクエストからユーザーのカルチャを読み取るコードを記述し、そこから CultureInfo を設定する必要があると思います。

このフェローは、彼らがどのようにそれを行うかを説明しています: 現在のスレッドの表示カルチャを、ユーザーの着信 Http "要求" オブジェクトからの最も適切なカルチャに設定します。

彼はそこで素晴らしい議論をしていますが、これは基本的に彼のやり方です:

ではPage_Load、次の呼び出しを行います。UIUtilities.setCulture(Request);

これが呼び出される場所は次のとおりです。

/// Set the display culture for the current thread to the most
/// appropriate culture from the user's incoming Http "request" object.
internal static void setCulture(HttpRequest request)
{
    if (request != null)
    {
      if (request.UserLanguages != null)
      {
        if (request.UserLanguages.Length > -1)
        {
          string cultureName = request.UserLanguages[0];
          UIUtilities.setCulture(cultureName);
        }
      }
        // TODO: Set to a (system-wide, or possibly user-specified) default
        // culture if the browser didn't give us any clues.
    }
}

/// Set the display culture for the current thread to a particular named culture.
/// <param name="cultureName">The name of the culture to be set 
/// for the thread</param>
private static void setCulture(string cultureName)
{
    Thread.CurrentThread.CurrentCulture = 
        CultureInfo.CreateSpecificCulture(cultureName);
    Thread.CurrentThread.CurrentUICulture = new
        CultureInfo(cultureName);
}
于 2010-06-28T17:25:07.070 に答える