续接上面两篇文章,第一篇文章是uniapp实现多语言切换,第二篇文章是i8n在js中的使用,由于我的菜单是在js文件中,所以我切换的时候除了菜单不实现效果,别的页面都可以实现,本篇文章主要是针对于怎么动态修改js文件,使之实现效果。
下述代码是我做切换时的操作,可以看到i18n.locale = "zh_CN"
是我从js中导入过来的,这里我也修改了语言,打印中也能看到,但是最主要的问题的是,js文件不是像vue文件那样动态刷新的,我在js文件中的多语言在第一次加载时就已经固定了,后续修改的话不会对js中的文件产生影响。
这里我想到刷新vue页面,但是没实现效果,我尝试使用//us = newus;
来进行重赋值也没实现效果,百度搜了一下说是因为导出的us是只读属性,不可做修改。
if(this.dataFrom.titleId == 1){
this._i18n.locale = "zh_CN"
i18n.locale = "zh_CN"
console.log('1',i18n.locale)
let newus={
data:[
{
title:i18n.tc('work.kongtuoruku'),
icon:"/static/maike/PDAruku.png",
description:i18n.tc('work.kongtuoruku'),
useCount:1000,
page:'PdaEmptyTraryImport'
},
{
title:i18n.tc('work.kongtuochuku'),
icon:"/static/maike/PDAchuku.png",
description:i18n.tc('work.kongtuochuku'),
useCount:1000,
page:'PdaEmptyTraryExport'
},
{
title:i18n.tc('work.konglongruku'),
icon:"/static/maike/trayImport.png",
description:i18n.tc('work.konglongruku'),
useCount:1000,
page:'StandardEmptyImport'
},
{
title:i18n.tc('work.konglongchuku'),
icon:"/static/maike/trayExport.png",
description:i18n.tc('work.konglongchuku'),
useCount:1000,
page:'StandardEmptyExport'
},
{
title:i18n.tc('work.chengpinruku'),
icon:"/static/maike/PDAMaruku.png",
description:i18n.tc('work.chengpinruku'),
useCount:1000,
page:'PdaMaterialImport'
},
{
title:i18n.tc('work.zhijianhuikuzupan'),
icon:"/static/maike/PDArukuBCP.png",
description:i18n.tc('work.zhijianhuikuzupan'),
useCount:1000,
page:'PdaMaterialImportCopy'
},
{
title:i18n.tc('work.zupanxiangqing'),
icon:"/static/maike/detail.png",
description:i18n.tc('work.zupanxiangqing'),
useCount:1000,
page:'UnitloadDetail'
},
{
title:i18n.tc('work.chakankucun'),
icon:"/static/maike/checkStock.png",
description:i18n.tc('work.chakankucun'),
useCount:1000,
page:'QueryInventory'
},
{
title:i18n.tc('work.tuopanpizhong'),
icon:"/static/maike/uncoiling.png",
description:i18n.tc('work.tuopanpizhong'),
useCount:1000,
page:'PalletTareMaintenance'
},
{
title:i18n.tc('work.zhidinghuoweichuku'),
icon:"/static/maike/PDAzhuanyun.png",
description:i18n.tc('work.zhidinghuoweichuku'),
useCount:1000,
page:'SpecifyTheLocationOut'
},
{
title:i18n.tc('work.banchengpinruku'),
icon:"/static/maike/PDAMaruku.png",
description:i18n.tc('work.banchengpinruku'),
useCount:1000,
page:'PdaImportSX'
},
{
title:i18n.tc('work.sanjianruku'),
icon:"/static/maike/PDAMaruku.png",
description:i18n.tc('work.sanjianruku'),
useCount:1000,
page:'pdaPartsIn'
}
]
};
console.log('11',newus)
myJsLibrary.us = newus
//us = newus;
}
然后我无意中看到一条导入语句,是全导出的import * as myJsLibrary from '@/common/util/work.js';
,这里的话我是尝试使用了一下,然后通过用myJsLibrary 点出来这个属性用来重赋值,事实证明这个办法是可行的。