iview 国际化切换时,如何让表单验证文字也跟着切换?
//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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你的想法比较大。不过是实现不了的,因为这些表单上的文字,如:姓名/邮箱/性别等等这些,每个人项目或每个页面都不一样。怎么可能国际化呢!要想这些都翻译过来,就必须根据自己的实际情况去配置。配置方式很多种,JSON格式!其他固定当然是可以翻译了。如日期的1到12月 星期一到星期天等等 这些每个轮子固定的
你把validate相关的data,放置在computed中就可以更新了
切换的时候校验都会自动校验,提示语都会显示出来,这个怎么处理呢?