12

ユーザーのブラウザに基づいてUIのカルチャを自動的に設定するにはどうすればよいですか?私がこれについて見つけたのはGlobalize.culture("pt-BR");、しかし、それはpt-BRデフォルトとして設定されており、私はこれをデフォルトで設定したくありません!ユーザーがpt-BRの場合にのみこれを設定したいです!これどうやってするの?バリデーターメソッド、特定のカルチャに設定するにはどうすればよいですか?

4

2 に答える 2

20

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これは、数値入力を正しく処理するために調整する方法の例です。

かみそりビューパーツX()のショートカットですnew HtmlString()

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

jQuery部分(最小および最大のカスタムメソッド)

$.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:の入力値とen-US:の入力値を10 000,00正しく評価します。10,000.00

于 2012-11-25T12:25:40.847 に答える
1

Webページ(またはマスターページ)からスクリプトを書き出す必要があります。

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

それでおしまい。念のために言っておきますが、これはフォーマットに使用する必要があるものなので、CurrentCultureの代わりに使用しました。CurrentUICulture翻訳が必要な場合(ローカライズ性を損なうため、この方法では行いません)、オリジナルが必要になりますCurrentUICulture

于 2012-11-25T20:00:40.897 に答える