iview 国际化切换时,如何让表单验证文字也跟着切换?

发布于 2022-09-06 07:45:29 字数 1506 浏览 34 评论 0

//validate.js
const format = function() {
    if(arguments.length == 0)
        return null;
    let str = arguments[0];
    for(let i = 1; i < arguments.length; i++) {
        let re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}

const validate = {
    min(rule, value, callback) {
        value < rule.min ? callback(new Error(format(rule.msg,rule.min))) : callback();
    },
    max(rule, value, callback) {
        value > rule.max ? callback(new Error(format(rule.msg,rule.max))) : callback();
    },
}


//使用
modify.vue
                name: [{
                        required: true,
                        message: 'The name cannot be empty',
                    },
                    {
                        min: 10,
                        msg: this.$t('validate.min'),
                        validator: validate.min
                    },
                    {
                        max: 100,
                        msg: this.$t('validate.max'),
                        validator: validate.max,
                    },
                ],
使用国际化的时候,都是使用  $t('翻译对象')翻译好再传入,这会导致国际化切换的时候,文字都切换了,但是表单验证里面的check提示还是中文
尝试过先跳转到一个空页面,再跳回来刷新,但是这样非常麻烦,参数query和parmas也比较长

 如何在这个js里面直接翻译回调出去呢?(要放在外部引入,公共验证),或者简单说,**如何让表单里面的check也能跟着语言切换?**
 页面是那种品字型结构,右上角切换语言,里面的子路由页面切换

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撩动你心 2022-09-13 07:45:29

你的想法比较大。不过是实现不了的,因为这些表单上的文字,如:姓名/邮箱/性别等等这些,每个人项目或每个页面都不一样。怎么可能国际化呢!要想这些都翻译过来,就必须根据自己的实际情况去配置。配置方式很多种,JSON格式!其他固定当然是可以翻译了。如日期的1到12月 星期一到星期天等等 这些每个轮子固定的

萌酱 2022-09-13 07:45:29

你把validate相关的data,放置在computed中就可以更新了

荒岛晴空 2022-09-13 07:45:29

切换的时候校验都会自动校验,提示语都会显示出来,这个怎么处理呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文