Automatically detect user language after initial installation

首次安装后自动判断用户语言
This commit is contained in:
Physton
2023-06-28 17:47:13 +08:00
parent f94901315c
commit c7f83832e7
4 changed files with 45 additions and 3 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -461,6 +461,19 @@ export default {
if (findLang) {
this.languageCode = data.languageCode
this.$forceUpdate()
this.gradioAPI.setData('languageCode', this.languageCode)
}
} else {
let browserLang = navigator.language || navigator.userLanguage || ''
if (browserLang) {
for (let key in this.languages) {
if (common.isSameLang(this.languages[key].code, browserLang)) {
this.languageCode = this.languages[key].code
this.$forceUpdate()
this.gradioAPI.setData('languageCode', this.languageCode)
break
}
}
}
}
this.canOneTranslate = common.canOneTranslate(this.languageCode)

View File

@@ -198,6 +198,25 @@ export default {
return 1
},
/**
* 是否是同一种语言
* @param code1 {string}
* @param code2 {string}
*/
isSameLang(code1, code2) {
if (code1 === code2) return true
let code1Lower = code1.toLowerCase()
let code2Lower = code2.toLowerCase()
if (code1Lower === code2Lower) return true
code1 = code1.replace('-', '_')
code2 = code2.replace('-', '_')
if (code1 === code2) return true
code1 = code1.split('_')[0]
code2 = code2.split('_')[0]
if (code1 === code2) return true
return false
},
/**
* 获取语言
* @param key {string}
@@ -510,10 +529,20 @@ export default {
parent2.insertBefore(ele1, next2)
},
/**
* 插入元素
* @param newNode {Element}
* @param referenceNode {Element}
*/
insertBefore(newNode, referenceNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode);
},
/**
* 插入元素
* @param newNode {Element}
* @param referenceNode {Element}
*/
insertAfter(newNode, referenceNode) {
if (referenceNode.nextSibling) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);