i18n 国际化

# i18n 国际化

# 国际化

组件内部默认使用中文,若希望使用其他语言,则需要进行多语言设置。以英文为例,在 main.js 中:

// 完整引入 Aui组件库
import Vue from 'vue'
import Aui from '@agree/aui-web' // 路径根据main.js文件的具体位置导入aui-web.js文件
import locale from '@agree/aui-web/locale/lang/en' // 路径根据main.js文件的具体位置引入语言文件

Vue.use(Aui, { locale })

# 兼容 vue-i18n@5.x

组件库 兼容 vue-i18n@5.x (opens new window),搭配使用能更方便地实现多语言切换。

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Aui from '@agree/aui-web'
import zhLocale from '@agree/aui-web/locale/lang/zh-CN'
import enLocale from '@agree/aui-web/locale/lang/en'

Vue.use(VueI18n)
Vue.use(Aui)

Vue.config.lang = 'zh-cn'
Vue.locale('zh-cn', zhLocale)
Vue.locale('en', enLocale)



// 组件内部切换语言
import Vue from 'vue';
// Vue.locale('zh-cn');
Vue.locale('en');

# 兼容其他 i18n 插件

如果不使用 vue-i18n@5.x,而是用其他的 i18n 插件,组件库 将无法兼容,但是可以自定义组件库的 i18n 的处理方法。

import Vue from 'vue'
import Aui from '@agree/aui-web'
import enLocale from '@agree/aui-web/locale/lang/en'
import zhLocale from '@agree/aui-web/locale/lang/zh-CN'

Vue.use(Aui, {
  i18n: function (path, options) {
    // ...
  }
})

# 兼容 vue-i18n@6.x

默认不支持 6.x 的 vue-i18n,你需要手动处理。

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Aui from '@agree/aui-web'
import enLocale from '@agree/aui-web/locale/lang/en'
import zhLocale from '@agree/aui-web/locale/lang/zh-CN'

Vue.use(VueI18n)

const messages = {
  en: {
    ...enLocale // 或者用 Object.assign({ message: 'hello' }, enLocale)
  },
  zh: {
    ...zhLocale // 或者用 Object.assign({ message: '你好' }, zhLocale)
  }
}
// Create VueI18n instance with options
const i18n = new VueI18n({
  locale: 'en', // set locale
  messages, // set locale messages
})

Vue.use(Aui, {
  i18n: (key, value) => i18n.t(key, value)
})

new Vue({ i18n }).$mount('#app')


// 组件内部切换语言
// this.$i18n.locale = 'zh';
this.$i18n.locale = 'en';

目前 组件库 内置了以下语言:

  • 简体中文(zh-CN)
  • 英语(en)
  • 繁体中文(zh-TW)

Last Updated: 2022/4/15 下午5:07:24