uniapp制作语言包切换

// 第一步引入 vue-i18n 插件
npm i vue-i18n

// 第二步在根目录上创建lang文件夹 并在lang文件夹里 创建 index.js 以及自己需要定义的 各国语言的js文件

// 例如:  en.js fr.js zh.js


// 第三步 将自定义语言包 导出到index.js内

en:
export default {
    index: {
		search: 'search goods',
		hotList: 'hotList',
		classify: 'goods category',
		favorite: 'my favorite',
		poster: 'Poster',
		myteam:'Team',
		group: 'group activities',
		industry: 'information',
		recommend: 'recommend commodities',
		more: 'more',
		allGroup: 'All group',
	},
}

fr:
export default {
	// 首页
	index: {
		search: 'Rechercher des produits',
		hotList: 'Graphiques populaires',
		classify: 'Catégorie de produit',
		favorite: 'Articles de collection',
		poster: 'Poster',
		myteam:'Team',
		group: 'Activités de groupe',
		industry: 'Activités de groupe',
		recommend: 'Des indicateurs complets recommandent des produits',
		more: 'plus',
		allGroup: 'Alle',
	},
}

变量名一定要一致

// 第四步 在index.js中引入自定义语言包 以及插件
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import customZH from './zh.js' // 自定义中文包
import customEn from './en.js' // 自定义英文包
import customFr from './fr.js' // 自定义法语包
Vue.use(VueI18n)// 完成全局注册

// 第五步 创建VueI18n实例对象 并导出

export default new VueI18n ({
    
	locale: uni.getStorageSync('language') || 'en', // locale为当前显示的语言 en对应的是messages 中 自己起的名字
      运用逻辑或 先从本地中取你存储的语言标识 如果取到了 就显示你要切换的 如果没有取到就显示 默认的 en

	messages: { // 将自定义语言包导入 VueI18n实例对象
		zh: {
			...customZH
		},
		en: {
			...customEn
		},
		fr: {
			...customFr
		}
	}
})

// 第六步 在main.js 中 引入index.js
import i18n from './lang' // 默认会找当前 lang文件夹下的 index.js

// #ifdef H5 || APP-PLUS
Vue.prototype.$i18n = i18n // 挂载到全局方法中 方便调用里面的locale
// #endif
// 小程序的话不能挂载全局 

// 第七步 在main.js中将导入的i18n 注入vue实例中
const app = new Vue({
	i18n,
    ...App
})

// 第八步 切换语言
  点击切换语言按钮 将type传进来 type例如: en fr zh
changeLang(type) {
    this.$i18n.locale = type // 手动将locale 赋值为想要切换的语言

    将type存起来 存到language下 与lang文件夹下 index.js中 locale中取得保持一致
    uni.setStorageSync('language',type) // 持久化操作
}


// 页面中使用示例
通过 $t('index.search') 就可以拿到 en文件中的 search goods 或者 fr文件中的 Rechercher des produits

例如: <view class="btn" @click="search"> {{$t('index.search')}} </view>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于uniapp的tabbar多语言切换,可以通过以下步骤实现: 1. 在项目中创建一个语言包文件夹,例如lang,用于存放不同语言的翻译文件。 2. 在每个语言包文件夹中创建一个对应*** 在需要进行多语言切换的页面中,引入语言包文件,并在data中定义一个变量用于存放当前语言。 4. 在tabbar组件中,使用v-for循环遍历tabbar列表,并使用{{}}语法绑定tabbar的文本内容,将文本内容替换为从语言包中获取的***", "mine": "我的" } 2. lang文件夹中的en-US.json文件内容: { "home": "Home", "mine": "Mine" } 3. 在需要进行多语言切换的页面中,引入语言包文件,并在data中定义一个变量用于存放当前语言。 <template> <view> <view>{{ $t('home') }}</view> <view>{{ $t('mine') }}</view> <tabbar :list="tabbarList"></tabbar> </view> </template> <script***/en-US.json' export default { data() { return { *** icon: 'home' }, { text: 'mine', icon: 'mine' } ] } }, computed: { $t() { const langObj =*** return (key) => langObj[this.lang][key] } } } </script> 4. 在tabbar组件中,使用v-for循环遍历tabbar列表,并使用{{}}语法绑定tabbar的文本内容,将文本内容替换为从语言包中获取的翻译内容。 <template> <view> <view>{{ $t('home') }}</view> <view>{{ $t('mine') }}</view> <tabbar :list="tabbarList"></tabbar> </view> </template> <script***/en-US.json' export default { data() { return { *** icon: 'home' }, { text: 'mine', icon: 'mine' } ] } }, computed: { $t() { const langObj =*** return (key) => langObj[this.lang][key] } } } </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值