2

フレームワークでローカリゼーションがサポートされている ASP.NET MVC (4) プロジェクトがあります。ブラウザの設定を別の言語に変更すると、フレームワークが適切なリソース ファイルを自動的に選択します。

ただし、knockoutjs を使用しているため、これらのビューでは jQuery 検証にフォールバックします。残念ながら、ローカリゼーションの自動サポートはありません。

私の質問は - すべての MVC リソースと共に自動的に選択されるように、jQuery 検証メッセージをカスタマイズおよびローカライズするためのベスト プラクティスと方法は何ですか?

リソースとメッセージ ID を指定すると、jQuery 検証メッセージはデータ注釈メッセージと同様に動作します。

特に -

  1. デフォルトの「このフィールドは必須です」ではなく、リソースから必要なメッセージjQueryに取得させる方法

  2. ブラウザの言語を変更すると、同じカスタマイズされたメッセージを別の言語で自動的にjQuery に出力させるにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

7

1)デフォルトの「このフィールドは必須です」ではなく、リソースから必要なメッセージをjQueryに取得させる方法。「電子メールを入力してください」などのメッセージが出力されます。

以下は、いつでもメッセージをオーバーライドするために呼び出されます。以下の文字列は変数に置き換えることができます。

jQuery.extend(jQuery.validator.messages, {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date (ISO).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    accept: "Please enter a value with a valid extension.",
    maxlength: jQuery.validator.format("Please enter no more than {0} characters."),
    minlength: jQuery.validator.format("Please enter at least {0} characters."),
    rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."),
    range: jQuery.validator.format("Please enter a value between {0} and {1}."),
    max: jQuery.validator.format("Please enter a value less than or equal to {0}."),
    min: jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});

それ以外の場合は、 内でルールを宣言するときに、より具体的にすることができます.validate()

$(document).ready(function () {

    $('#myform').validate({ // initialize the plugin
        rules: {
            field1: {
                required: true,
                minlength: 5
            }
        },
        messages: {
            field1: {
                required: "custom message for field 1 required",
                minlength: "custom message: {0} chars required"
            }
        }
    });

});

デモ: http://jsfiddle.net/XV3ZR/

プラグインが最初に初期化されたにメッセージを動的に変更するにはメソッドを使用してオーバーライドする必要があります。rules('add')

$('#field1').rules('add', {
    messages: {
        required: "field 1 required",
        minlength: "{0} chars required"
    }
});

デモ 2: http://jsfiddle.net/PJGgE/1/

2) ブラウザの言語を変更すると、jQuery に同じカスタマイズされたメッセージを別の言語で自動的に出力させるにはどうすればよいですか?

「ブラウザの言語を変更する」とはどういう意味かわかりませんが、上記の #1 の方法が唯一の方法です。これらは単なる文字列であり、手動または外部の方法で翻訳する必要があります。

于 2013-03-10T19:26:40.107 に答える
0

クライアントのブラウザ設定(i18nのようなもの)に応じてローカリゼーションを使用して、サーバー上でクライアントスクリプトファイルに渡すことができると思います

于 2013-03-10T19:27:42.193 に答える