鍍金池/ 問答/Java  HTML/ iview 國際化切換時,如何讓表單驗證文字也跟著切換?

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('翻譯對象')翻譯好再傳入,這會導(dǎo)致國際化切換的時候,文字都切換了,但是表單驗證里面的check提示還是中文
嘗試過先跳轉(zhuǎn)到一個空頁面,再跳回來刷新,但是這樣非常麻煩,參數(shù)query和parmas也比較長

 如何在這個js里面直接翻譯回調(diào)出去呢?(要放在外部引入,公共驗證),或者簡單說,**如何讓表單里面的check也能跟著語言切換?**
 頁面是那種品字型結(jié)構(gòu),右上角切換語言,里面的子路由頁面切換

圖片描述

回答
編輯回答
避風(fēng)港

你把validate相關(guān)的data,放置在computed中就可以更新了

2017年9月2日 02:36
編輯回答
有點壞

你的想法比較大。不過是實現(xiàn)不了的,因為這些表單上的文字,如:姓名/郵箱/性別等等這些,每個人項目或每個頁面都不一樣。怎么可能國際化呢!要想這些都翻譯過來,就必須根據(jù)自己的實際情況去配置。配置方式很多種,JSON格式!其他固定當然是可以翻譯了。如日期的1到12月 星期一到星期天等等 這些每個輪子固定的

2018年9月14日 12:24