如何在不刷新网站的情况下更改 JQuery 验证消息

How change JQuery Validation Message without refreshing website

我正在使用 jQuery 从这里验证:https://jqueryvalidation.org。目前,我准备了两种类型的消息。他们正在冒出来。当我在 web 变量上更改语言时,带有消息的全局变量也在改变,但验证器中的消息不会。刷新网站后验证器的语言发生变化。如何在不刷新网站的情况下实时更改它?

HTML 不需要,因为一切都发生在 JS 文件中。 这是一个改变对象中值的函数。 JS:

function setLang(lang) {
    (lang) ? lang: "pol";

    if (lang == "pol") {
        Messages = {
            formFirstnameRequired: 'Pole imie jest wymagane!',
            formLastnameRequired: 'Pole nazwisko jest wymangane!',
            formEmailRequired: 'Pole email jest wymagane!',
            formTitleRequired: 'Pole Tytuł jest wymagane!',
            formMessageRequired: 'Pole wiadomość jest wymagane!',
        }
    } else if (lang == "eng") {
        Messages = {
            formFirstnameRequired: 'Field firstname is required!',
            formLastnameRequired: 'Field lastname is required!',
            formEmailRequired: 'Field email is required!',
            formTitleRequired: 'Field title is required!',
            formMessageRequired: 'Field message is required!',
        }
    }
}

我还使用此 cookie 来管理此表单验证的语言:

if (getCookie("lang") == null) {
        document.cookie = 'lang=pol';
    }

    setLang(getCookie("lang"));

    $(".nav").on("click", "#polLang", (event) => {
        document.cookie = 'lang=pol';
        setLang(getCookie("lang"));
    });

    $(".nav").on("click", "#engLang", (event) => {
        document.cookie = 'lang=eng';
        setLang(getCookie("lang"));
    });

这里我有验证 JS:

 $("#contactForm").validate({
        rules: {
            "formFirstname": {
                required: true,
            },
            "formLastname": {
                required: true,
            },
            "formEmail": {
                required: true,
            },
            "formTitle": {
                required: true,
            },
            "formMessage": {
                required: true,
            }
        },
        messages: {
            "formFirstname": {
                required: Messages.formFirstnameRequired,
                string: true
            },
            "formLastname": {
                required: Messages.formLastnameRequired,
                string: true
            },
            "formEmail": {
                required: Messages.formEmailRequired,
                email: true,
            },
            "formTitle": {
                required: Messages.formTitleRequired,
                string: true
            },
            "formMessage": {
                required: Messages.formMessageRequired,
                string: true
            }
        },
        onfocusout: false,
        errorPlacement: function(error) {
            toastr.error(error);
        },
        submitHandler: function(form) {
            toastr.success('success')
            return false;
        },
        invalidHandler: function() {
            return;
        }
    });

Jquery 验证器消息是静态的。如果你想动态更新它们,你可以创建一个函数,它将 return 一个新的消息。 像这样:

"formFirstname": {
            required: function getFormFirstname() { return Messages.formFirstnameRequired },
            string: true
        },