因爲我使用的這個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爲日期的數據
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));
}
最後在setup裏面引入
setup(props, ctx) {
const {t,tm } = useI18n()
const value=tm('localkey') //localkey 爲具體要查詢的key
}