[intlify] Not found '' key in 'zh' locale messages.

因爲我使用的這個key對應的value是一個數組,而普通的key對應的value的值是String卻使用

由 vue i18n v9的遷移後的$t()無法獲取數組、對象 得到原因,t()在setup是不允許識別出字符串以外的value值,

原來進行轉化識別,打開Chome進行代碼調試i18n

點開源碼查看

function wrapWithDeps(fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) {
        trackReactivityValues(); // track reactive dependency
        // NOTE: experimental !!
        let ret;
        {
            ret = fn(_context);
        }
        if (shared.isNumber(ret) && ret === coreBase.NOT_REOSLVED) {
            const [key, arg2] = argumentParser();
            return __root && _fallbackRoot
                ? fallbackSuccess(__root)
                : fallbackFail(key);
        }
        else if (successCondition(ret)) {
            return ret;
        }
        else {
            /* istanbul ignore next */
            throw createI18nError(14 /* UNEXPECTED_RETURN_TYPE */);
        }
    }
    // t
    function t(...args) {
        return wrapWithDeps(context => coreBase.translate(context, ...args), () => coreBase.parseTranslateArgs(...args), 'translate', root => root.t(...args), key => key, val => shared.isString(val));
    }

點開 coreBase.translate的方法進行查看具體爲什麼沒找到key

 

原因是返回值只接受字符串或者數字,而我們要求的是數組,所以找不到!!!!!

 

查看還要其他全局的方法

const globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'];

t是獲取value爲字符串

rt爲獲取value爲json的格式的數組

d爲獲取value爲日期的數據

n爲獲取value爲數字的數據
tm爲獲取value包含所有類型的數據
   function t(...args) {
        return wrapWithDeps(context => coreBase.translate(context, ...args), () => coreBase.parseTranslateArgs(...args), 'translate', root => root.t(...args), key => key, val => shared.isString(val));
    }
    // rt
    function rt(...args) {
        const [arg1, arg2, arg3] = args;
        if (arg3 && !shared.isObject(arg3)) {
            throw createI18nError(15 /* INVALID_ARGUMENT */);
        }
        return t(...[arg1, arg2, shared.assign({ resolvedMessage: true }, arg3 || {})]);
    }
    // d
    function d(...args) {
        return wrapWithDeps(context => coreBase.datetime(context, ...args), () => coreBase.parseDateTimeArgs(...args), 'datetime format', root => root.d(...args), () => coreBase.MISSING_RESOLVE_VALUE, val => shared.isString(val));
    }
    // n
    function n(...args) {
        return wrapWithDeps(context => coreBase.number(context, ...args), () => coreBase.parseNumberArgs(...args), 'number format', root => root.n(...args), () => coreBase.MISSING_RESOLVE_VALUE, val => shared.isString(val));
    }
   // tm
    function tm(key) {
        const messages = resolveMessages(key);
        // prettier-ignore
        return messages != null
            ? messages
            : __root
                ? __root.tm(key) || {}
                : {};
    }
 

 

最後在setup裏面引入

 setup(props, ctx) {
    const {t,tm } = useI18n()
    const value=tm('localkey')  //localkey 爲具體要查詢的key
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章