0

Я использую проверку KnockOut для проверки формы ClientSide. Все работает отлично, за исключением случаев, когда я вызываю метод showAllMessages(true), он отображает все сообщения на английском языке, игнорируя настройки локали. Мой код выглядит следующим образом:Проверка KnockOut не использует настройки локализации при использовании showAllMessages()

<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 локаль

Как я могу использовать этот язык в этом случае?

ответ

0

Я пошел через файл 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.' 
}; 
Смежные вопросы