Vue3多语言实现

1.首先安装i18n 

npm install vue-i18n

2.在项目下创建lang目录并创建en.ts,i18n1.ts,zh.ts

en.ts 

export default {
    message: {
     home: 'home',
     appTitle:'aa 3D Smart Measure'
    },    
    Menus: {
      Measuer: 'Measure',
 
     },
     GlueMeasure: {
      Title: 'Camera 3D Glue Measure',
 
     }
  }

zh.ts

export default {
    message: {
     home: 'home',
     appTitle:'aa 3D智能测量'
    },    
    Menus: {
      Measuer: '测量',
 
     }, 
     GlueMeasure: {
      Title: '3D相机 涂胶测量',
 
     }
  }

i18n1.ts

import { createI18n } from "vue-i18n";
import en from './en'
import zh from './zh';
 
const i18n = createI18n({
  locale:localStorage.getItem('language') || 'zh', // 默认是中文
  fallbackLocale: 'zh',
  globalInjection:true,//全局配置$t
  legacy:false,
  messages:{en,zh}// 需要做国际化的语种
 
})
 
export default i18n 

3.在main.ts中配置

import i18n from './lang/i18n1'

app.use(i18n)

4.在标签中使用 {{ $t('message.appTitle') }}

			<el-text class="mx-1" type="info">
				<span style="color: white;font-size: xx-large;">{{ $t('message.appTitle') }}</span>
			</el-text>

5.在代码中使用方法 t("Menus.Measuer")

<script setup lang="ts">
import { computed } from 'vue';
import { useSidebarStore } from '../store/sidebar';
import { useRoute } from 'vue-router';
import i18n from '../lang/i18n1';

const t = i18n.global.t

const items = [
	{
		icon: 'CameraFilled',
		index: '1',
		title: t("Menus.Measuer"), 
		permiss: '4',
		subs: [
			{
				index: '/SystemLog',
				title: 'Log',
				permiss: '17',
			},

6.实现语言切换

				<el-dropdown class="user-name" trigger="click" @command="LanguageCommand">
					<span class="el-dropdown-link">
						{{ CurrentLanguage }}
						<el-icon class="el-icon--right">
							<arrow-down />
						</el-icon>
					</span>
					<template #dropdown>
						<el-dropdown-menu> 
							<el-dropdown-item command="zh">中文</el-dropdown-item>
							<el-dropdown-item divided command="en">English</el-dropdown-item> 
						</el-dropdown-menu> 
					</template>
				</el-dropdown>

const LanguageCommand = (command: string) => {
	console.log(command)
	localStorage.removeItem('language')
	localStorage.setItem('language', command)
	window.location.reload()

	switch (command) {
		case 'zh':
			CurrentLanguage.value = "中文"

			break;
		case 'en':
			CurrentLanguage.value = "English"
			break;
	}
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flowable是一个开源的工作流引擎,它提供了一套完整的工作流解决方案。Flowable支持多语言的功能,包括在Vue.js中使用多语言。 在Vue.js中使用多语言,可以使用Vue I18n库来实现Vue I18n是Vue.js的国际化插件,它可以帮助我们在应用程序中实现语言支持。 以下是一个使用Flowable和Vue I18n实现语言的示例: 1. 首先,安装Vue I18n库: ```shell npm install vue-i18n ``` 2. 在main.js文件中引入Vue I18n和Flowable的语言包: ```javascript import Vue from 'vue'; import App from './App.vue'; import VueI18n from 'vue-i18n'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; Vue.config.productionTip = false; Vue.use(VueI18n); Vue.use(Antd); // 引入Flowable的语言包 import en from 'flowable-ui-modeler/dist/i18n/en.json'; import zh from 'flowable-ui-modeler/dist/i18n/zh.json'; const messages = { en: { // 将Flowable的语言包合并到en语言中 ...en, // 自定义的其他语言项 // ... }, zh: { // 将Flowable的语言包合并到zh语言中 ...zh, // 自定义的其他语言项 // ... } }; const i18n = new VueI18n({ locale: 'en', // 默认语言 messages }); new Vue({ i18n, render: h => h(App) }).$mount('#app'); ``` 3. 在App.vue组件中使用多语言: ```vue <template> <div> <h1>{{ $t('flowable.title') }}</h1> <p>{{ $t('flowable.description') }}</p> <!-- 其他组件内容 --> </div> </template> <script> export default { // ... }; </script> ``` 在上述示例中,我们首先引入了Vue I18n和Flowable的语言包。然后,我们定义了一个messages对象,其中包含了Flowable的语言包和自定义的其他语言项。接下来,我们创建了一个VueI18n实例,并将其传递给Vue根实例中。最后,在App.vue组件中,我们使用`$t`方法来获取对应的多语言文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值