实现方案
uni.getLocale()
获取当前设置的语言
使用 vue i18n 实现组件的国际化。
小程序端 tabbar 的国际化无法使用 i18n ,需要自定义 tarbar 组件。
系统国际化功能
在哪里设置 app 语言?
两种方案
1、.获取APP系统默认语言
1.引入国际化包
npm install vue-i18n --save-dev
2.创建语言文件
// 目录结构
common
├── lang 国际化词条,多语言文件
│ ├── en-US.js -英文词条
│ └── zh-CN.js -中文词条
//内容结构
export default {
login: {
title: 'Login',
placeholderAccount: 'Enter Account',
placeholderPassword: 'Enter Password',
autoLogin: 'Auto Login',
loginButton: 'Login',
logoutButton: 'Logout',
forget: 'Forget Password',
reg: 'Resister Account',
noLogin: 'No Login'
},
home: {
title: 'Home'
}
}
export default {
login: {
title: '登录',
placeholderAccount: '请输入账号',
placeholderPassword: '请输入密码',
autoLogin: '自动登录',
loginButton: '登录',
logoutButton: '退出登录',
forget: '忘记密码',
reg: '注册账号',
noLogin: '未登录'
},
home: {
title: '消息'
}
}
3.引入语言文件并初始化
// Vue i18n 国际化
import VueI18n from 'vue-i18n';
Vue.use(VueI18n);
// i18n 部分的配置,引入语言包,注意路径
import lang_zh_CN from '@/common/lang/zh_CN.js';
import lang_en_US from '@/common/lang/en_US.js';
const i18n = new VueI18n({
// 默认语言
locale: 'zh_CN',
// 引入语言文件
messages: {
'zh_CN': lang_zh_CN,
'en_US': lang_en_US,
}
});
4.页面展示国际化文件
5.动态切换国际化词条
// 在vue生命周期内调用
this.$i18n.locale = 'en_US'; //en_US为new VueI18n中messages 的key