【已解决】TypeError: _ctx.$t is not a function when using $t in child component

项目使用的工具及版本

    "vue": "^3.2.13",

    "vue-i18n": "^9.2.2",

问题背景:前几天在做一个登录的小demo,然后因为没有怎么理解代码就跟着敲,然后运行的时候浏览器控制台就报错:TypeError:_ctx.$t is not a function when using $t in child component,如下图:

 然后我就百度了一下i18n是什么?

i18n 全称 Internationalization,也就是国际化的意思,因为单词太长,所以中间的 18 个字母被缩写为 18,再加上开头和结尾的字母,就组成了 i18n。然后JavaScript i18n API 可以帮助我们对网站进行多语言翻译,让它们可以轻松适应使用不同语言用户的需求。

主要解决思路:

1.在项目根目录的src创建i18n.js文件

import { createI18n } from "vue-i18n";

const i18n = createI18n({
  legacy: false,
  locale: "ja",
  globalInjection: true,
  messages: {
    en: {
      message: {
        language: "English",
        greeting: "Hello !"
      }
    },
    ar: {
      message: {
        language: "العربية",
        greeting: "السلام عليكم"
      }
    },
    es: {
      message: {
        language: "Español",
        greeting: "Hola !"
      }
    }
  }
});
export default i18n;

2.在mian.js中引入并挂载上

...
/* “...” :表示前面省略的代码*/

//引入
import Vue I18n from "./i18n"
...

//将VueI18n挂载上app
app.use(store).use(router).use(VueI18n).mount('#app')

 最后大家就可以成功的使用i18n这个api了。如果我的思路对大家有用的话,大家可以点点赞。先在这里表示感谢了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值