Knockout.js KnockoutJS实时验证本地化

Knockout.js KnockoutJS实时验证本地化,knockout.js,knockout-validation,Knockout.js,Knockout Validation,我正在尝试本地化KnockoutJS验证插件,但我需要能够在不同语言之间动态切换。有一家商店,但已经有2年多的历史了(而且仍然营业) 我只是想在加载所有内容后切换验证消息的语言。下面是一个例子(可以在小提琴上看到:) 我注意到在敲除代码中,错误的getter方法总是返回第一个本地化错误字符串。如何“重新初始化”错误字符串 从KnockoutJS第736行: var errorMsgAccessor = function () { if (!config.messagesOnModifie

我正在尝试本地化KnockoutJS验证插件,但我需要能够在不同语言之间动态切换。有一家商店,但已经有2年多的历史了(而且仍然营业)

我只是想在加载所有内容后切换验证消息的语言。下面是一个例子(可以在小提琴上看到:)

我注意到在敲除代码中,错误的getter方法总是返回第一个本地化错误字符串。如何“重新初始化”错误字符串

从KnockoutJS第736行:

var errorMsgAccessor = function () {
    if (!config.messagesOnModified || isModified) {
        return isValid ? null : obsv.error; <<<< obsv.error is always the first error message
    } else {
        return null;
    }
};
var errorMsgAccessor=函数(){
如果(!config.messagesOnModified | | isModified){

return isValid?null:obsv.error;您的代码将更新本地化,但新消息仅在下一次更新时有效

将switchLanguage替换为以下内容:

this.switchLanguage = function() {
    // If I localize later, nothing is changed.
    ko.validation.localize({required: 'eh... sorta?'});
    for (var prop in this)
        if (ko.isObservable(this[prop]) && typeof(this[prop].valueHasMutated) === 'function')
            this[prop].valueHasMutated();        
};

我不太确定问题出在哪里。这里似乎有问题:。单击“验证”您会看到“此字段是必需的”。然后键入一些内容以删除消息。然后单击“切换语言”,如果删除文本,您会看到“呃…排序?”这是一个很好的决定。我想我要做的是在切换语言时以编程方式清除错误(然后重新验证),或者在按下“切换语言”按钮时切换错误字符串。你救了我的命,我真的很困惑,这个答案没有那么多投票权,它应该像火箭天空一样被投票。
var errorMsgAccessor = function () {
    if (!config.messagesOnModified || isModified) {
        return isValid ? null : obsv.error; <<<< obsv.error is always the first error message
    } else {
        return null;
    }
};
this.switchLanguage = function() {
    // If I localize later, nothing is changed.
    ko.validation.localize({required: 'eh... sorta?'});
    for (var prop in this)
        if (ko.isObservable(this[prop]) && typeof(this[prop].valueHasMutated) === 'function')
            this[prop].valueHasMutated();        
};