项目环境:vue3 + ts + element plus + i18n
vue3 ts i18n用法
1 在vue3+ts中,如.<标签>{{ $t('login.title') }}</标签>
<div class="title">{{ $t('login.title') }}</div>
2 在<script setup>...</script>中
2.1 普通用法(最常见的)
- a.引入:vue-i18n(请注意:是引入的vue-i18,并且通过useI18n解构),并且解构{t}。
- b.使用:直接使用t("")方法,如:t('login.form.fields.userName')
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { t } = useI18n() // 解构出t方法// 随便定义一个变量
let message:string = t('login.form.fields.userName')...
<script>
2.2 在普通.ts文件,或者.js文件中使用
在普通文件中,你就不能使用上述方法引入了。你必须引入本地文件中的i18n。具体如下:
//common.ts文件中。...
import i18n from '@/lang/index' //我本地的i18n实例
let _t: any = i18n.global//公共配置
export let common: any = {site: {title: _t.t('system.global.companyName')//站点名称},}
...
这个时候,你的国际化就设置完毕了。
但是你一切换的时候,必须要重新刷下页面才行,否则普通js\ts中的内容无法切换,我尝试了很多种方法都不行。如果有大神知道为什么,可以讨论下哈!