首页IT科技vue3生命周期(vue3中使用vue-i18n(ts中使用$t, vue3不用this))

vue3生命周期(vue3中使用vue-i18n(ts中使用$t, vue3不用this))

时间2025-06-19 22:57:50分类IT科技浏览6391
导读:vue项目里多语言工具一直用的vue-i18n。...

vue项目里多语言工具一直用的vue-i18n               。

以前用的 vue2               ,也没啥大问题                      ,就是配置好之后用t(“你的属性名               ”)就行       ,现在用vue3其实本来也没太大变化                      。

但是配置完之后               ,在html中用$t()没有问题                       ,显示文案什么的一切正常       。而在ts中使用$t()方法报错       ,后来才发现是我没有设置全局的$t()方法               。

记录一下在vue3中使用vue-i18n的方法:

安装vue-18n 配置 应用 挂载全局方法$t以方便在ts中使用(本次记录的重点)

由于1.2.3.好多人写过了       ,我就简单的写一下                       ,本次记录的重点是4               ,因为我发现网上好多博客都只写了$t在html中的使用       ,但是大都没提到在ts中也可能用到                       。

安装 npm install vue-i18n@next 或 yarn add vue-i18n@next 在 src 目录下新建 lang 并新建 index.ts 文件 import App from @/App.vue import { createApp } from vue import { createI18n } from vue-i18n import enLocale from ./en/index; import zhLocale from ./zh/index; const messages = { zh: zhLocale, cn: zhLocale, en: enLocale, us: enLocale, } const localLang = navigator.language.split(-)[0]; const storageLang = window.localStorage.getItem(locale)?.split(")[1].split(")[0].toLocaleLowerCase() || en; const c = (storageLang.toLocaleLowerCase() !== zh && storageLang.toLocaleLowerCase() !== en) ? en : storageLang; const i18n = createI18n({ globalInjection: true, //全局生效$t locale: c || localLang || en, messages, legacy: false, }) const app = createApp(App) app.use(i18n)

上图中两个语言包的index.ts中的内容自己根据语言需要写:

export default { nNation: Country/Region, pleaseInput: Account, } 在ts中使用全局方法$t import { getCurrentInstance } from "vue"; const { appContext : { config: { globalProperties } } } = getCurrentInstance(); // 这里可以根据需要写个hook console.log(globalProperties.$t(pleaseSelectNation))

在html中的使用就比较正常了:

<span>{{ $t("nation") }}</span>

其实本文算是新手记录一下对于globalProperties的使用                      ,希望对您有所帮助       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python for循环else(python else在循环语句执行的情况) 可以赚佣金的购物平台(哪些网站可以赚佣金-0佣金!这个电商平台已获1200万美元的A轮融资)