使用 showAllMessages() 时,敲除验证不使用本地化设置

KnockOut Validation not using localization settings when using showAllMessages()

我正在使用 KnockOut Validation 来验证表单客户端。除了当我调用方法 showAllMessages(true) 时,一切都运行良好,它以英语显示所有消息,忽略语言环境设置。我的代码如下所示:

<asp:ScriptManager ID="ScriptManagerMaster" runat="server">
    <Scripts>
        <asp:ScriptReference Path="js/jquery-2.1.4.min.js"/>
        <asp:ScriptReference Path="js/bootstrap.min.js" />
        <asp:ScriptReference Path="js/knockout-3.3.0.js" />
        <asp:ScriptReference Path="js/knockout.validation.js"/>
        <asp:ScriptReference Path="js/es-ES.js"/>
        <asp:ScriptReference Path="js/App/_run.js"/>
        <asp:ScriptReference Path="js/App/App.DataModel.js"/>
        <asp:ScriptReference Path="js/App/App.ViewModel.js"/>
    </Scripts>
</asp:ScriptManager>

ko.validation.locale("es-es");
ko.validation.init({
    registerExtenders: true,
    messagesOnModified: true,
    insertMessages: true,
    parseInputAttributes: true,
    errorElementClass: "has-error",
    errorMessageClass: "help-block",
    decorateInputElement: true
}, true);

self.saveUser = function () {
    var errors = ko.validation.group(self, { deep: true });
    if (errors().length === 0) {
        var user = ko.toJSON(self);
        dataModel.putUser(user)
            .done(function(result) {
                alert("Se guardó el usuario");
            })
            .fail(self.onUserCreationError);
    } else {
        errors.showAllMessages(true);
    }
}

当我执行 saveUser() 时,它验证正确,但所有错误消息看起来像“This field is required”而不是“Este campo es requerido”,因为我使用的是 es-es 语言环境

在这种情况下,如何让它使用语言环境?

我查看了 ko.validation.js 文件,发现这些消息直接在文件中,响应没有引用 locale.js 消息。一个快速的解决方法是手动将这些消息从英语更改为 locale.js 或执行以下操作:

kv.rules = {};
kv.rules['required'] = {
    validator: function (val, required) {
        var testVal;

        if (val === undefined || val === null) {
            return !required;
        }

        testVal = val;
        if (typeof (val) === 'string') {
            if (String.prototype.trim) {
                testVal = val.trim();
            }
            else {
                testVal = val.replace(/^\s+|\s+$/g, '');


    }
    }

    if (!required) {// if they passed: { required: false }, then don't require this
        return true;
    }

    return ((testVal + '').length > 0);
},
message: 'Este campo es obligatorio.'
};