//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也能跟着语言切换?**
页面是那种品字型结构,右上角切换语言,里面的子路由页面切换

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