Vue3轻量版国际化插件

🔥️ vue-next-i18n

Gzip Size

Vue3轻量版国际化插件

🌈 开始

首先你需要先安装vue-next-i18n

使用 npm

npm install vue-next-i18n

使用 yarn

yarn add vue-next-i18n

🚀 用法

通过 app.use() 方法注册插件

// 1. Ready translated locale messages
// The structure of the locale message is the hierarchical object structure with each locale as the top property
const messages = {
  en: {
    message: {
      hello: 'hello world'
    }
  },
  zhCHS: {
    message: {
      hello: '你好 世界'
    }
  },
  ja: {
    message: {
      hello: 'こんにちは、世界'
    }
  }
}

// 2. 初始化i18n实例
import { createApp } from 'vue';
import { createI18n } from 'vue-next-i18n';

const i18n = createI18n({
  locale: 'zhCHS', // 设置多语言
  messages, // 多语言文件
  localeKeys:['zhCHS','zhCHT','en'] // 用于数组形象获取多语言时的顺序,默认顺序: ['zhCHS','zhCHT','en']
})


// 3. 创建Vue根实例
const app = createApp({
  // set something options
  // ...
})

// 4. 注册i18n实例
app.use(i18n)

// 5. 挂载
app.mount('#app')

// OK了

HTML

<div id="app">
  <p>{{ $t("message.hello") }}</p>
</div>


<!-- Output the following: -->
<div id="#app">
  <p>你好 世界</p>
</div>

🚌 Composition API

import { useI18n } from 'vue-next-i18n'

export default {
  setup() {
    const i18n = useI18n()
    const { currentLocale, changeLocale } = i18n
    return {
      currentLocale,
      changeLocale
    }
  }
}

📦 例子

基础

const messages = {
  en: {
    message: {
      hello: 'hello world'
    }
  },
  zhCHS: {
    message: {
      hello: '你好 世界'
    }
  },
  ja: {
    message: {
      hello: 'こんにちは、世界'
    }
  }
}

<div id="app">
  <p>{{ $t("message.hello") }}</p>
</div>

支持传入函数

const messages = {
  en: {
    message: {
      hello: (val) =>  `hello world ${val}`
    }
  },
  zhCHS: {
    message: {
      hello: (val) =>  `你好 世界 ${val}`
    }
  },
  ja: {
    message: {
      hello: (val) =>  `こんにちは、世界 ${val}`
    }
  }
}

<div id="app">
  <p>{{ $t("message.hello",'hahaha') }}</p>
</div>

使用数组形式

The array order depends on the localeKeys, default value is ['zhCHS','zhCHT','en']

// example localeKeys: ['zhCHS','en','ja']

<div id="app">
  <p>{{ $t(['你好 世界','hello world','こんにちは、世界']) }}</p>
</div>

支持组件内i18n选项多语言配置

export default {
  i18n:{
    en: {
      message: {
        hello: 'hello world'
      }
    },
    zhCHS: {
      message: {
        hello: '你好 世界'
      }
    },
    ja: {
      message: {
        hello: 'こんにちは、世界'
      }
    } 
  },
  setup(){
    // code...
  }
}

<div id="app">
  <p>{{ $t('message.hello') }}</p>
</div>

📜 Changelog

Details changes for each release are documented in the CHANGELOG.md.

📄 License

MIT License © 2022 Aaron Lam

posted @ 2022-02-17 23:29  Aaronlamz  阅读(18)  评论(0编辑  收藏  举报