vue

Vue-I18n

Posted by page on December 14, 2022

Vue-I18n

官方文档 中文文档

安装

npm i vue-i18n -S

实例

// src/i18n/index.js
const i18n = new VueI18n({
  locale: "zh",
  legacy: false, // 关闭使用传统API,CompositionAPI
  // 未匹配时回退语言
  fallbackLocale: "zh",
  // 是否在回退到 fallbackLocale 或 root 时取消警告
  silentFallbackWarn: true,
  messages: {
    zh: { test: "测试" },
    hk: { test: "測試" },
  },
});
export default i18n;

全局使用

// main.js
import { createApp } from "vue";
import i18n from "@/i18n";

const app = createApp(App);
app.use(i18n);

局部使用

创建实例

import { useI18n } from "vue-i18n";

export default () => {
  const { t, messages } = useI18n({
    messages: {
      zh: {
        title: "标题",
      },
      hk: {
        title: "標題",
      },
    },
  });
  return { t, messages };
};

组件使用

<script setup>
  import useI18nModulefrom "@/i18n/hooks/useI18nModule";
  const { t } = useI18nModule();
</script>

格式化

const messages = {
  zh: {
    totalWord: "总计:{total}",
    rankWord: "第一名:{0},第二名:{1},第三名:{2}",
    tip: "请注意:您的余额不足<span>{num}</span>元",
  },
};

<div>{{ $t("totalWord", { total: 32 }) }}</div>
<div>{{ $t("rankWord",  ["Jack", "Mike", "Jenny"]) }}</div>
<div v-html="$t(tip, { num: 100 })"></div>

更改语言

import i18n from "@/i18n";

// 更改整个应用程序语言
i18n.global.locale.value = "zh";
// 更改i18n实例语言
i18n.locale.value = "zh";