美文网首页
2023-08-16

2023-08-16

作者: 缘有言故 | 来源:发表于2023-08-15 19:03 被阅读0次

工作日记:vue2.7如何使用vue-i18n

> 版本:

> vue:2.7.0

> vue-i18n:8.28.2

## 一、下载

```javascript

npm i vue-i18n@8.28.2

```

## 二、新建

新建一个文件,例如:lang,项目结构如下:

![在这里插入图片描述](https://img-blog.csdnimg.cn/62feddfbb78f4fb89c3d379177bfcd41.png)

index.js:

```javascript

import Vue from 'vue'

import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

import zh from './zh'

import tw from './tw'

import en from './en'

import vn from './vn'

import ru from './ru'

const messages = {

    'zh': zh,

    'tw': tw,

    'en': en,

    'vn': vn,

    'ru': ru

}

const i18n = new VueI18n({

    locale: 'zh',

    fallbackLocale: 'zh-CN',

    messages,

})

export default i18n

```

设置语言内容,例如:zh.js / en.js

zh.js:

```javascript

export default {

    setting: {

        setting: '设置',

        ...

    }

}

```

en.js:

```javascript

export default {

    setting: {

        setting: 'setting',

        ...

    }

}

```

....

## 三、在main.js引入

```javascript

import i18n from '@/lang'

new Vue({

  router,

  pinia,

  i18n,

  render: h => h(App)

}).$mount('#app')

```

## 四、在html中使用

在html标签中使用

```html

<NavBar :title="$t('setting.setting')"  bg-color="#FDDEF3"/>

```

在html文本中使用

```html

<p>{{$t('setting.setting')}}</p>

```

## 五、在js中使用

```javascript

this.$t('setting.setting')

```

但是因为vue.2.7,setup中不可以直接使用this的,所以需要自行封装一个useI18n

### 5.1 新建一个vueApi.js

```javascript

import { getCurrentInstance } from 'vue'

// 访问i18n

export const useI18n = () => {

    const vm = getCurrentInstance()

    if (!vm) throw new Error('must be called in setup')

    return vm.proxy.$i18n

}

```

### 5.2 使用

可以愉快的使用composition api 啦

引入:

```javascript

import { useI18n } from '@/utils/vueApi'

const i18n = useI18n()

```

## 六、切换语言

```html

<button @click="changeLanguage('zh')">中文</button>

<button @click="changeLanguage('en')">英文</button>

...

```

```javascript

const changeLanguage = (e) => {

  i18n.locale = e

}

```

相关文章

  • 2023-08-16

    昨天又忘记更新了,复活卡再救我一命。嘿嘿。 今天得早点更新,这样不会忘记了。 计划已经完成两项了,后面会稍微空闲几...

网友评论

      本文标题:2023-08-16

      本文链接:https://www.haomeiwen.com/subject/qmghmdtx.html