教你如何在uniapp中实现中英文切换

说明

最近使用uniapp做了个APP,由于客户是巴西的,所以使用中文已经满足不了客户需求了,本打算直接使用英文开发算了,老板非要做成可以中英文切换的,没办法只能开干。

具体实现步骤

  • 1.安装插件:首先,需要安装用于管理多语言的插件。我们可以选择 vue-i18n插件,它是一款比较流行的国际化插件,重要的是它可以在uniApp 中使用。直接在终端中执行以下命令即可:

    npm install vue-i18n

安装成功我们可以看到项目下多了个node_modules目录,里面有vue-i18n插件了。

  • 2.创建两个js文件zh.jsen.js,用户保存翻译的中英文内容,这也没办法,这样自己翻译的比较准确。我这里是放到了common/util目录下,这需要你自己看放哪里合适了。
zh.js实例如下:
arduino 复制代码
export default {
	common:{
		switch:'切换语言',
		setting:'设置中心',
		back:'返回',
		account:'账号',
		login:'登录',
		password:'密码'
	}
}
en.js实例如下:
arduino 复制代码
export default {
	common:{
		switch:'Switch language',
		setting:'Setting',
		back:'Back',
		account:'Account',
		login:'Login',
		password:'Password'
	}
}
  • 3.在入口文件main.js中初始化 vue-i18n 插件,并配置多语言支持,即加入以下代码:
javascript 复制代码
import VueI18n from 'vue-i18n'
import zh from './common/util/zh.js'
import en from './common/util/en.js'

Vue.use(VueI18n)

const i18n = new VueI18n({
  locale: 'en', // 默认语言为英文
  messages: {
    en,
    zh
  }
})

在最后挂载到app的地方加入上面定义的i18n

php 复制代码
new Vue({ 
    i18n, 
    // 其他配置... 
    }).$mount('#app')
  • 4.下面就是在设置页面做个切换语言的功能了,我在个人中心的设置页面写了一下样式:
  • [注] 代码逻辑很简单,就是写了个语言切换样式,切换时触发checkChange事件,从而达到切换语言的目的,代码如下:
xml 复制代码
<template>
	<view>
		<scroll-view scroll-y class="page">
			<cu-custom bgColor="bg-gradual-pink" :isBack="true">
				<block slot="backText">{{$t('common.back')}}</block>
				<block slot="content">{{$t('common.setting')}}</block>
				<!-- <view slot="right"  @tap="rightClick">编辑</view> -->
			</cu-custom>
			<uni-section :title="$t('common.switch')" type="line">
				<view class="uni-px-5 uni-pb-5">
					<uni-data-checkbox v-model="lang" :localdata="items" @change="checkChange"></uni-data-checkbox>
				</view>
			</uni-section>
		</scroll-view>
	</view>
</template>

<script>
	import api from '@/api/api.js'
	export default {
		data() {
			return {
				items: [{
						value: 'en',
						text: 'English'
					},
					{
						value: 'zh',
						text: '中文简体'
					}
				],
				lang: 'en'
			};
		},
		onLoad() {},
		methods: {
			checkChange: function(evt) {
				this.$i18n.locale = evt.detail.value;
			},
		}
	}
</script>
  • 5.从上面代码我们可以看出,在组件模板中使用$t方法获取对应的语言文本:
xml 复制代码
<template>
  <view>
    <text>{{ $t('common.switch') }}</text> <!-- 使用 $t 方法获取对应语言的文本 -->
  </view>
</template>
  • 6.如果是js中需要设置多语言,我们可以使用this.$t()方式获取对应的语言文本,如:
kotlin 复制代码
this.loginText = this.$t('common.login')
  • 7.到此我们需要的功能基本就实现了,剩下的就是需要翻译什么往js里面写,需要的地方获取就行,来看下效果:

总结

好了,通过以上步骤我们已经知道怎么实现多语言切换了,如果需要增加其他语言,我们可以继续增加js语言翻译文件,按照上面的方法引入即可;这种方式跟我之前用elementUI做的后台语言切换实现方式一模一样,可见平时多积累,后面再碰到相同的问题就很容易解决了。

相关推荐
耶啵奶膘13 分钟前
uniapp-是否删除
linux·前端·uni-app
cs_dn_Jie2 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic3 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿3 小时前
webWorker基本用法
前端·javascript·vue.js
customer084 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
getaxiosluo5 小时前
react jsx基本语法,脚手架,父子传参,refs等详解
前端·vue.js·react.js·前端框架·hook·jsx
理想不理想v5 小时前
vue种ref跟reactive的区别?
前端·javascript·vue.js·webpack·前端框架·node.js·ecmascript
栈老师不回家6 小时前
Vue 计算属性和监听器
前端·javascript·vue.js
前端啊龙6 小时前
用vue3封装丶高仿element-plus里面的日期联级选择器,日期选择器
前端·javascript·vue.js
断墨先生6 小时前
uniapp—android原生插件开发(3Android真机调试)
android·uni-app