vue和uniapp国际化以及任意地方设置语言类型

10 篇文章 0 订阅

系列文章目录

最近要在项目里面使用国际化,一来就来三个语言(中文,英语,印尼),赶紧百度一番,下面是项目里面完整使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


依赖安装

npm install vue-i18n --save-dev

或者复制下面代码


提示:以下是本篇文章正文内容,下面案例可供参考

一、新建配置文件(static目录下面新建lang文件 如下)

lang 目录示例
在这里插入图片描述

  • . vue-i18n.js 是直接复制的vue-i18n代码,这里使用npm 下载是一样的没有任何影响
  • en_US.js 为英语语言配置
  • id_ID.js 为印尼语言配置
  • zh_CN.js 为中文配置
  • index.js 为国际的一些配置

二、配置多语言

zh_CN en_US id_ID 三个文件 其实是相同的配置只是语言不一样

分别在 zh_CN en_US id_ID 文件种写入相同的对象,但是值不一样 其实类似与JSON的配置语言

zh_CN.js

export default {
    index: {
        Loading: '加载中',
		loginOk: '登录成功',
		operate: '操作成功',
		errMsg: '获取数据出错',
		errOperate: '操作失败',
    },
}

en_US.js

export default {
    index: {
        Loading: 'Loading',
		loginOk: 'Login successful',
		operate: 'Operation successful',
		errMsg: 'Error getting data',
		errOperate: 'operation failed',
    },
}

id_ID.js

export default {
    index: {
    Loading: 'Memuat',
    loginOk: 'Login berhasil',
    operate: 'Operasi Berhasil',
    errMsg: 'Kesalahan mendapatkan data',
    errOperate: 'operasi gagal',
    },
}

1 多语言的配置 index.js里面

  1. 导入 zh_CN.js
  2. 导入en_US.js
  3. 导入 id_ID.js
  4. 导入 vue-i18n
  5. 导入 vue
import en  from './en_US.js'
import cn from './zh_CN.js'
import idn from './id_ID.js'
import Vue from 'vue'
import {setStorage,getStorage} from '../../utlis/uni.public.js'  // 自定义函数
import VueI18n from 'vue-i18n'

获取系统语言

unipp

uni.getSystemInfo({
		success: function(res) {
			
		}
	})

js 获取系统语言

navigator.language

设置系统语言

  1. 获取系统语言
  2. 设置系统语言,没有就设置默认中文
let cur_lang = 'cn';
// system_info 为uniapp的系统对象 里面的 language为系统语言
// vue 中使用 navigator.language 即可
switch (system_info.language) {
	case 'en':
		cur_lang = 'en'
		break;
	case 'cn':
		cur_lang = 'cn'
		break;
	case 'idn':
		cur_lang = 'idn'
		break;

}

const i18n = new VueI18n({
	locale: cur_lang || 'cn', // 默认选择的语言
	// 这里到 导入我们自己的语言类型,分别对应的Key
	messages: {
		'en': en,
		'cn': cn,
		'idn': idn
	}
})

整个index.js 代码

import en  from './en_US.js'
import cn from './zh_CN.js'
import idn from './id_ID.js'
import Vue from 'vue'
import {setStorage,getStorage} from '../../utlis/uni.public.js'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const system_info = getStorage('system_info')
if (!system_info) {
	// 获取设备信息
	uni.getSystemInfo({
		success: function(res) {
			setStorage('system_info', res);
		}
	})
}

let cur_lang = 'cn';
switch (system_info.language) {
	case 'en':
		cur_lang = 'en'
		break;
	case 'cn':
		cur_lang = 'cn'
		break;
	case 'idn':
		cur_lang = 'idn'
		break;
}
const i18n = new VueI18n({
	locale: cur_lang || 'cn',
	messages: {
		'en': en,
		'cn': cn,
		'idn': idn
	}
})

export default i18n

在mian.js 导入,并且挂载到 vue 的原型上面

import i18n from './static/lang/index'  // 注意路径
Vue.prototype._i18n = i18n

为什么要挂载到原型?
因为页面一修改语言类型就会使用自动触发 i18n 去修改值

页面使用的四种方式

一在 computed 计算属性使用
computed: {
			i18n() {
				return this.$t('index')
			},
		},
页面使用

因为计算属性在里面返回的我我们这个页面需要的多语言数据,所以我们可以直接使用

<view class="text-area">
			<text class="title">{{i18n.title}}</text>
</view>
二页面直接使用 $t() 方法
<view class="text-area">
			<text class="title">{{$t('index').title}}</text>
</view>
在data 中定义
export default {
  data() {
    return {
      index: this.$t('index'),
      }
     }
   }
 <view>{{ index.title}}</view>

注意比如第一次登录了,第二次进来不需要登录,那么第二次返回登录页面多语言不生效


四在其他js文件使用多语言

比如我们要在公共封装的请求js 文件使用多语言

引入我们自己配置的多语言的index.js

import i18ns from '../static/lang/index'  // 注意自己路径

//使用
i18ns.t('index').title

注意:如果按照main.js 那样应用过来使用 t ( x x ) . x x 是 没 有 效 果 的 , 也 不 能 在 其 他 j s 文 件 中 使 用 t h i s . t(xx).xx 是没有效果的,也不能在其他js文件中使用 this. t(xx).xxjs使this.t(xx).xx 来获取,因为在其他文件中的this 不是vue的,但是,不要在引用一次vue 再来用this.$(xxx).xx 是无效的

任意地方设置语言类型

因为我们在 main.js 把il8n挂载到原型的,所以我们在vue 任意地方都可使用

this._i18n.locale = xxx
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Vue 是一个用于构建用户界面的渐进式 JavaScript 框架,它主要用于开发单页面应用程序 (SPA)。Vue 提供了一种简单、灵活且高效的方式来构建交互式的 Web 界面。 UniApp 是一个基于 Vue.js 的跨平台开发框架,它可以同时使用 Vue 的语法和 API 来开发多个平台的应用程序,包括小程序、H5、App 等。UniApp 提供了一套统一的开发语法和组件库,可以在不同平台上共享代码和逻辑,大大提高了开发效率。 使用 VueUniApp 开发项目有以下优势: 1. 统一开发语法和组件库:使用 VueUniApp,你可以通过一套统一的语法和组件库来开发不同平台的应用程序,避免了学习多个框架或语言的繁琐。 2. 跨平台支持:UniApp 支持多个平台,包括微信小程序、支付宝小程序、H5 网页、App 等。你可以使用相同的代码和逻辑来开发不同平台的应用,减少了重复工作。 3. 高效开发:VueUniApp 都提供了丰富的工具和生态系统,使得开发更加高效。你可以使用 Vue 的响应式数据绑定、组件化开发等特性,快速构建复杂的应用程序。 4. 自定义扩展:由于基于 Vue,你可以使用 Vue 的插件和库来扩展 UniApp 的功能。Vue 生态系统非常丰富,有大量的插件和库可供选择,可以满足各种开发需求。 总而言之,使用 VueUniApp 可以让你更加方便地开发跨平台的应用程序,提高开发效率并节省开发成本。同时,你可以借助 VueUniApp 的强大功能和生态系统来构建出功能丰富的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值