uniapp实现中英文语言切换,快速开发多语言版本!

因为业务需求很多app都是可以多种语言进行切换的,以此来方便用户的使用

做语言的切换一定要开发开始的时候就规划好,不然确实太麻烦了,我是后期开发的语言切换,好多个页面都需要进行修改

  • main.js中引入,注意如果是使用storage进行存储,几个平台是需要单独进行处理的,否则可能导致只能单个平台出现,我测试时是将几个平台的测试界面都打开的,大家写的时候最好也是这样操作,不然写完之后可能都不知道是什么原因导致页面显示不出来,最好是开启H5和手机模拟器,微信端的问题还是很少的

手机端是需要使用plus.storage来进行存储和获取的,H5端使用localStorage进行存储和获取,这个一定要注意,否则很可能不适用
-首先添加语言文件

  • mian.js中引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import VueI18n from ‘vue-i18n’
Vue.use(VueI18n);const i18n = new VueI18n({
// #ifdef MP
locale: ‘zh-CN’, //初始化,保证刷新页面也保留
// #endif
// #ifdef APP-PLUS
locale: plus.storage.getItem(‘locale’) || ‘zh-CN’, //初始化,保证刷新页面也保留
// #endif
// #ifdef H5
locale: localStorage.getItem(‘locale’) || ‘zh-CN’, //初始化,保证刷新页面也保留
// #endif
// 加载语言文件的内容
messages: {
‘zh-CN’: require(‘./locales/zh-CN.js’).lang,
‘en’: require(‘./locales/en.js’).lang
}
})Vue.prototype._i18n = i18n
const app = new Vue({
i18n,
…App
})

  • 语言切换按钮的处理,存储切换后的结果(这部分代码大家可以去插件市场搜索,有相应的插件),在做储存的时候也要记得进行多端的处理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<view class=”model” v-if=”modelStatus”>
<view class=”selectlanguage”>
<view @click=”handove(‘zh-CN’)”>{{$t(‘login.simplified’)}}</view>
<view  @click=”handove(‘en’)”>{{$t(‘login.english’)}} </view>
</view>
</view>
export default {
data() {
return {
modelStatus:false
};
},
onShow(){
uni.setNavigationBarTitle({
title: this.$i18n.messages[this.$i18n.locale].person.settings
});
},
methods:{
selectlang(){
this.modelStatus=!this.modelStatus
},
handove(item){
this.$i18n.locale = item;
// #ifdef APP-PLUS
plus.storage.setItem(‘locale’, item);
// #endif
// #ifdef H5
localStorage.setItem(‘locale’, item);
// #endif
this.modelStatus=!this.modelStatus;
},<style>
.model {
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, 0.6);
position: fixed;
left: 0;
top: 0;
z-index: 100;
}
.selectlanguage{
width:393upx;
height: 400upx;
top:50%;
left: 50%;
transform: translate(-50%,-50%);
position: absolute;
background: #fff;
z-index: 99;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding:50upx 0;
border-radius: 20upx;
}
.selectlanguage view{
height: 100upx;
line-height: 100upx;
color: #EABB76;
}
</style>

 

 

 

  • 页面中的使用
  • 如何修改底部导航栏和头部标题,建议放在onShow()中,网上部分是放在onload()中的,如果是登录前切换好是没问题的,如果你想在任何时候都可以切换的话,放onShow()是不会有什么问题的
1
2
3
4
5
6
7
8
9
10
11
onShow() {
// 修改底部导航
uni.setTabBarItem({
index: 0,
text: this.$i18n.messages[this.$i18n.locale].tabBar.home
});
// 修改头部标题
uni.setNavigationBarTitle({
title: this.$i18n.messages[this.$i18n.locale].tabBar.market
});
},
公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 1009687180

云码库资源网站-专注分享免费源码及教程 » uniapp实现中英文语言切换,快速开发多语言版本!

常见问题FAQ

代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
关于资源售价的说明
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值,软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助,收取费用仅是用来维持本站的日常运营!
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 www.yunmaku.cn 试试。

云码库源码网,由老程序员细心甄别、精心筛选,只为提供优质的资源

网站介绍 联系我们