ユーザーのブラウザに基づいてUIのカルチャを自動的に設定するにはどうすればよいですか?私がこれについて見つけたのはGlobalize.culture("pt-BR");
、しかし、それはpt-BR
デフォルトとして設定されており、私はこれをデフォルトで設定したくありません!ユーザーがpt-BRの場合にのみこれを設定したいです!これどうやってするの?バリデーターメソッド、特定のカルチャに設定するにはどうすればよいですか?
2 に答える
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
Webページ(またはマスターページ)からスクリプトを書き出す必要があります。
<script type="text/javascript">
Globalize.culture("<% = CultureInfo.CurrentCulture.ToString() %>");
</script>
それでおしまい。念のために言っておきますが、これはフォーマットに使用する必要があるものなので、CurrentCulture
の代わりに使用しました。CurrentUICulture
翻訳が必要な場合(ローカライズ性を損なうため、この方法では行いません)、オリジナルが必要になりますCurrentUICulture
。