尝试搭建 Vue3+nuxt3+typescript+vuex+i18n+axios+element plus+...(四) 之 i18n 国际化

vue-i18n在vue3中的引用方法是:

// import { useI18n } from "vue-i18n";

// const { t } = useI18n();

{{ $t("message.account.accountPlaceholder1") }}

便可以使用 ,

在nuxt中,需要把i18n的配置文件,放到plugins目录下面:

plugins 目录下, 新建i18n.js

在nuxt.config.js中配置


  plugins: ["@/plugins/i18n.js"],

需要使用  defineNuxtPlugin  方式引入, 至于原理, 也。。。。

也可以按照网上的 配置文件,简化 

import { defineNuxtPlugin } from "~~/.nuxt/imports";
// import ElementPlus from "element-plus";
import { createI18n } from "vue-i18n";
import zhcnLocale from "element-plus/lib/locale/lang/zh-cn";
import enLocale from "element-plus/lib/locale/lang/en";
import zhtwLocale from "element-plus/lib/locale/lang/zh-tw";
import { useStore } from "@/store/index";

import nextZhcn from "@/i18n/lang/zh-cn";
import nextEn from "@/i18n/lang/en";
import nextZhtw from "@/i18n/lang/zh-tw";

import pagesLoginZhcn from "@/i18n/pages/login/zh-cn";
import pagesLoginEn from "@/i18n/pages/login/en";
import pagesLoginZhtw from "@/i18n/pages/login/zh-tw";
import pagesFormI18nZhcn from "@/i18n/pages/formI18n/zh-cn";
import pagesFormI18nEn from "@/i18n/pages/formI18n/en";
import pagesFormI18nZhtw from "@/i18n/pages/formI18n/zh-tw";

// 定义语言国际化内容
/**
 * 说明:
 * /src/i18n/lang 下的 ts 为框架的国际化内容
 * /src/i18n/pages 下的 ts 为各界面的国际化内容
 */
const messages = {
  [zhcnLocale.name]: {
    ...zhcnLocale,
    message: {
      ...nextZhcn,
      ...pagesLoginZhcn,
      ...pagesFormI18nZhcn,
    },
  },
  [enLocale.name]: {
    ...enLocale,
    message: {
      ...nextEn,
      ...pagesLoginEn,
      ...pagesFormI18nEn,
    },
  },
  [zhtwLocale.name]: {
    ...zhtwLocale,
    message: {
      ...nextZhtw,
      ...pagesLoginZhtw,
      ...pagesFormI18nZhtw,
    },
  },
};

// 导出语言国际化
// export const i18n = createI18n({
//   locale: store.state.themeConfig.themeConfig.globalI18n,
//   fallbackLocale: zhcnLocale.name,
//   messages,
// });
const store = useStore();

export default defineNuxtPlugin((nuxtApp) => {
  const i18n = createI18n({
    locale: store.state.themeConfig.themeConfig.globalI18n,
    fallbackLocale: zhcnLocale.name,
    messages,
  });
  // nuxtApp.vueApp.use(ElementPlus, { i18n: i18n.global.t });
  nuxtApp.vueApp.use(i18n);
});

// export default ({ app, store }) => {
//   app.i18n = createI18n({
//     locale: store.state.themeConfig.themeConfig.globalI18n,
//     fallbackLocale: zhcnLocale.name,
//     messages,
//   });
// };

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值