提交 347c1e48 编写于 作者: DCloud_JSON's avatar DCloud_JSON

新增,支持配置是否开启i18n多语言国际化。 配置文件:

上级 cd9a8bf7
...@@ -43,31 +43,6 @@ ...@@ -43,31 +43,6 @@
}); });
}*/ }*/
// #endif // #endif
let initLanguageAfter = () => {
console.log('作用于多语言国际化功能,这里获取语言包lang/en.js、lang/zh-Hans.js的tabbar中配置的值更新当前应用的底部tabbar,如果你不需要多语言国际化。直接删除App.vue页面的47-55行即可');
//底部tabbar更新
this.$t('tabbar').split(',').forEach((text, index) => {
uni.setTabBarItem({
index,
text,
complete: e => {
// console.log("e: " + JSON.stringify(e));
}
})
})
//更新 uni-starter.config
//agreements
let agreementsTitle = this.$t('agreementsTitle').split(',')
let agreements = getApp().globalData.config.about.agreements agreements[0].title = agreementsTitle[0] agreements[1].title = agreementsTitle[1] getApp().globalData.config.about.agreements = agreements
}
setTimeout(()=>{
initLanguageAfter()
},1000)
uni.$on('changeLanguage', e => {
console.log('changeLanguage',e);
initLanguageAfter(e)
})
}, },
onShow: function() { onShow: function() {
console.log('App Show') console.log('App Show')
......
...@@ -61,19 +61,36 @@ uni-starter + uniCloud admin,提供了用户端和管理端的基础模板, ...@@ -61,19 +61,36 @@ uni-starter + uniCloud admin,提供了用户端和管理端的基础模板,
你只需要在项目根目录的框架配置文件:`uni-starter.config.js``router`->`needLogin``login`中配置完整的路由名称即可: 你只需要在项目根目录的框架配置文件:`uni-starter.config.js``router`->`needLogin``login`中配置完整的路由名称即可:
```js ```js
"router": { "router": {
//needLogin:配置强制需要登陆的页面,在打开这些页面之前会自动检查(前端校验)uni_id_token的值是否有效,如果无效会自动跳转到登陆页面 /*名词解释:“强制登陆页”
"needLogin": [ 在打开定义的需强制登陆的页面之前会自动检查(前端校验)uni_id_token的值是否有效,
"/pages/ucenter/userinfo/userinfo", 如果无效会自动跳转到登陆页面
"/uni_modules/uni-news-favorite/pages/uni-news-favorite/list", 两种模式:
"/uni_modules/uni-feedback/pages/uni-feedback/add" 1.needLogin:黑名单模式。枚举游客不可访问的页面。
], 2.visitor:白名单模式。枚举游客可访问的页面。
/* * 注意:黑名单与白名单模式二选一 */
login:配置登陆类型与优先级 //needLogin:配置强制需要登陆的页面,在打开这些页面之前会自动检查(前端校验)uni_id_token的值是否有效,如果无效会自动跳转到登陆页面
未列举到的,或设备环境不支持的选项,将被隐藏。如果你需要在不同平台有不同的配置,直接用条件编译即可 // "needLogin" : [
根据数组的第0项,决定登录方式的第一优先级。 // {pattern:/^\/pages\/list.*/}, //支持正则表达式
详情下文:2.登录配置详解 // "/uni_modules/uni-news-favorite/pages/uni-news-favorite/list",
*/ // "/uni_modules/uni-feedback/pages/uni-feedback/add"
"login": ["username","smsCode","univerify", "weixin", "apple"], // ],
"visitor" : [
"/",//注意入口页必须直接写 "/"
{"pattern":/^\/pages\/list.*/}, //支持正则表达式
{"pattern":/^\/pages\/ucenter\/login-page.*/},
"/pages/common/webview/webview",
"/pages/grid/grid",
"/pages/ucenter/ucenter",
"/pages/ucenter/guestbook/guestbook",
"/pages/ucenter/about/about",
"/pages/ucenter/settings/settings"
],
/*
login:配置登陆类型与优先级
未列举到的,或设备环境不支持的选项,将被隐藏。如果你需要在不同平台有不同的配置,直接用条件编译即可
根据数组的第0项,决定登录方式的第一优先级。
*/
"login": ["username","univerify","weixin", "smsCode", "apple"]
} }
``` ```
...@@ -366,6 +383,10 @@ module.exports = { ...@@ -366,6 +383,10 @@ module.exports = {
"marketId":{ "marketId":{
"ios":"id1417078253", "ios":"id1417078253",
"android":"123456" "android":"123456"
},
//配置多语言国际化。i18n为英文单词 internationalization的首末字符i和n,18为中间的字符数 是“国际化”的简称
"i18n":{
"enable":false //默认启用,国际化。如果你不想使用国际化相关功能,请改为false
} }
} }
``` ```
...@@ -462,7 +483,6 @@ uni-starter ...@@ -462,7 +483,6 @@ uni-starter
1. 判断当前用户是否拥有某角色`uniIDHasRole` 演示页面:`/pages/grid/grid` [API文档详情:](https://uniapp.dcloud.io/api/global?id=uniidhasrole) 1. 判断当前用户是否拥有某角色`uniIDHasRole` 演示页面:`/pages/grid/grid` [API文档详情:](https://uniapp.dcloud.io/api/global?id=uniidhasrole)
2. 指纹解锁、人脸解锁 演示页面:`/pages/ucenter/settings/settings` [API文档详情:](https://uniapp.dcloud.io/api/system/authentication) 2. 指纹解锁、人脸解锁 演示页面:`/pages/ucenter/settings/settings` [API文档详情:](https://uniapp.dcloud.io/api/system/authentication)
### 注意事项 ### 注意事项
1. 真机运行需要制作自定义基座,制作后选择运行到自定义基座 1. 真机运行需要制作自定义基座,制作后选择运行到自定义基座
2. 苹果登录的图标,需要满足苹果应用市场的审核规范请勿随便修改;如需修改请先阅读:[Sign in with Apple Button](https://appleid.apple.com/signinwithapple/button) 2. 苹果登录的图标,需要满足苹果应用市场的审核规范请勿随便修改;如需修改请先阅读:[Sign in with Apple Button](https://appleid.apple.com/signinwithapple/button)
......
## 1.1.15(2021-10-02)
新增,支持配置是否开启i18n多语言国际化。
配置文件:`uni-starter.config.js`
`
"i18n":{
"enable":true //默认启用,国际化。如果你不想使用国际化相关功能,请改为false
}
`
## 1.1.14(2021-09-30) ## 1.1.14(2021-09-30)
1. 通过微信小程序登陆自动保存`sessionKey``uni-id-users` 1. 通过微信小程序登陆自动保存`sessionKey``uni-id-users`
2. 我的-设置-个人资料 点击绑定手机号码,完善账号信息支持以下三种策略: 2. 我的-设置-个人资料 点击绑定手机号码,完善账号信息支持以下三种策略:
......
import langEn from './en' import langEn from './en'
import zhHans from './zh-Hans' import zhHans from './zh-Hans'
const messages = { import uniStarterConfig from '../uni-starter.config.js'
'en': langEn, const {i18n:{enable:i18nEnable} }= uniStarterConfig
'zh-Hans': zhHans const messages = {
'en': langEn,
'zh-Hans': zhHans
} }
let currentLang = uni.getStorageSync('CURRENT_LANG') let currentLang
if(i18nEnable){
currentLang = uni.getStorageSync('CURRENT_LANG')
}else{
currentLang = "zh-Hans"
}
console.log(uni.getStorageSync('CURRENT_LANG'),currentLang);
if (!currentLang) { if (!currentLang) {
if(uni.getLocale){ if (uni.getLocale) {
console.log('获取应用语言:',uni.getLocale() ); console.log('获取应用语言:', uni.getLocale());
let language = 'zh-Hans' let language = 'en'
if(uni.getLocale() != 'zh-Hans'){ if (uni.getLocale() != 'en') {
language = 'en' language = 'zh-Hans'
} }
uni.setStorageSync('CURRENT_LANG', language) uni.setStorageSync('CURRENT_LANG', language)
currentLang = language currentLang = language
}else{ } else {
uni.getSystemInfo({ uni.getSystemInfo({
success: function (res) { success: function(res) {
console.log('获取设备信息:',res); console.log('获取设备信息:', res);
let language = 'zh-Hans' let language = 'zh-Hans'
if(res.language == 'en'){ if (res.language == 'en') {
language = 'en' language = 'en'
} }
uni.setStorageSync('CURRENT_LANG', language) uni.setStorageSync('CURRENT_LANG', language)
currentLang = language currentLang = language
}, },
fail: (err) => { fail: (err) => {
console.error(err) console.error(err)
} }
}) })
} }
} }
let i18nConfig = { let i18nConfig = {
locale: currentLang, // set locale locale: currentLang, // set locale
messages // set locale messages messages // set locale messages
} }
// #ifdef VUE2 // #ifdef VUE2
import Vue from 'vue' import Vue from 'vue'
import VueI18n from 'vue-i18n' import VueI18n from 'vue-i18n'
Vue.use(VueI18n) Vue.use(VueI18n)
const i18n = new VueI18n(i18nConfig) const i18n = new VueI18n(i18nConfig)
// #endif // #endif
// #ifdef VUE3
import {
createI18n
} from 'vue-i18n'
const i18n = createI18n(i18nConfig)
// #endif
export default i18n
// #ifdef VUE3
import {createI18n} from 'vue-i18n'
const i18n = createI18n(i18nConfig)
// #endif
export default i18n if(i18nEnable){
\ No newline at end of file console.log(1);
let initLanguageAfter = () => {
//获得定义的文字
console.log($i18n('tabbar').split(','));
function $i18n(e){
return i18n.messages[i18n.locale][e]
}
setTimeout(function(){
//底部tabbar更新
$i18n('tabbar').split(',').forEach((text, index) => {
console.log(text);
uni.setTabBarItem({
index,
text,
complete: e => {
console.log("e: " + JSON.stringify(e));
}
})
})
},1)
//更新 uni-starter.config
//agreements
let agreementsTitle = $i18n('agreementsTitle').split(',')
let agreements = uniStarterConfig.about.agreements
agreements[0].title = agreementsTitle[0]
agreements[1].title = agreementsTitle[1]
uniStarterConfig.about.agreements = agreements
}
initLanguageAfter()
uni.$on('changeLanguage', e => {
console.log('changeLanguage', e);
initLanguageAfter(e)
})
}
\ No newline at end of file
{ {
"id": "uni-starter", "id": "uni-starter",
"displayName": "uni-starter", "displayName": "uni-starter",
"version": "1.1.14", "version": "1.1.15",
"description": "云端一体应用快速开发基本项目模版", "description": "云端一体应用快速开发基本项目模版",
"keywords": [ "keywords": [
"login", "login",
......
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
console.log('refresh'); console.log('refresh');
}, },
onqueryerror(e) { onqueryerror(e) {
console.log(e); console.error(e);
} }
}, },
onPullDownRefresh() { onPullDownRefresh() {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<uni-list-item v-if="supportMode.includes('fingerPrint')" :title="$t('settings.fingerPrint')" @click.native="startSoterAuthentication('fingerPrint')" link></uni-list-item> <uni-list-item v-if="supportMode.includes('fingerPrint')" :title="$t('settings.fingerPrint')" @click.native="startSoterAuthentication('fingerPrint')" link></uni-list-item>
<uni-list-item v-if="supportMode.includes('facial')" :title="$t('settings.facial')" @click="startSoterAuthentication('facial')" link></uni-list-item> <uni-list-item v-if="supportMode.includes('facial')" :title="$t('settings.facial')" @click="startSoterAuthentication('facial')" link></uni-list-item>
<!-- #endif --> <!-- #endif -->
<uni-list-item :title="$t('settings.changeLanguage')" @click="changeLanguage" :rightText="currentLanguage" link></uni-list-item> <uni-list-item v-if="i18nEnable" :title="$t('settings.changeLanguage')" @click="changeLanguage" :rightText="currentLanguage" link></uni-list-item>
</uni-list> </uni-list>
<uni-list class="mt10" :border="false"> <uni-list class="mt10" :border="false">
...@@ -49,7 +49,10 @@ ...@@ -49,7 +49,10 @@
...mapGetters({ ...mapGetters({
'userInfo': 'user/info', 'userInfo': 'user/info',
'hasLogin': 'user/hasLogin', 'hasLogin': 'user/hasLogin',
}) }),
i18nEnable(){
return getApp().globalData.config.i18n.enable
}
}, },
onLoad() { onLoad() {
this.currentLanguage = uni.getStorageSync('CURRENT_LANG') == "en"?'English':'简体中文' this.currentLanguage = uni.getStorageSync('CURRENT_LANG') == "en"?'English':'简体中文'
......
...@@ -63,12 +63,12 @@ export default { ...@@ -63,12 +63,12 @@ export default {
"slogan": "云端一体应用快速开发模版", "slogan": "云端一体应用快速开发模版",
//政策协议 //政策协议
"agreements": [{ "agreements": [{
// "title": "为了多语言国际化请在 lang/en.js 和 lang/zh-Hans.js中配置", "title": "用户服务协议", //如果开启了多语言国际化,本配置将失效。请在 lang/en.js 和 lang/zh-Hans.js中配置
"url": "请填写用户服务协议链接" //对应的网络链接 "url": "请填写用户服务协议链接" //对应的网络链接
}, },
{ {
// "title": "为了多语言国际化请在 lang/en.js 和 lang/zh-Hans.js中配置", "title": "隐私政策", //如果开启了多语言国际化,本配置将失效。请在 lang/en.js 和 lang/zh-Hans.js中配置
"url": "请填写隐私政策链接" "url": "请填写隐私政策链接" //对应的网络链接
} }
], ],
//应用的链接,用于分享到第三方平台和生成关于我们页的二维码 //应用的链接,用于分享到第三方平台和生成关于我们页的二维码
...@@ -84,5 +84,9 @@ export default { ...@@ -84,5 +84,9 @@ export default {
"marketId":{ "marketId":{
"ios":"id1417078253", "ios":"id1417078253",
"android":"123456" "android":"123456"
},
//配置多语言国际化。i18n为英文单词 internationalization的首末字符i和n,18为中间的字符数 是“国际化”的简称
"i18n":{
"enable":true //默认启用,国际化。如果你不想使用国际化相关功能,请改为false
} }
} }
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
import { import {
validator validator
} from '../../js_sdk/validator/opendb-feedback.js'; } from '../../js_sdk/validator/opendb-feedback.js';
console.log(validator);
const db = uniCloud.database(); const db = uniCloud.database();
const dbCollectionName = 'opendb-feedback'; const dbCollectionName = 'opendb-feedback';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册