feat(i18n): auto-detect browser language + in-form language switcher

pull/639/head
Bob Develop 2 weeks ago
parent d99365138d
commit 0e9ac8cded

@ -505,7 +505,7 @@
:key="currentField.uuid" :key="currentField.uuid"
v-model="values[currentField.uuid]" v-model="values[currentField.uuid]"
:field="currentField" :field="currentField"
:locale="language?.toLowerCase() || browserLanguage" :locale="selectedLanguage"
:show-field-names="showFieldNames" :show-field-names="showFieldNames"
:verified-value="phoneVerifiedValues[currentField.uuid]" :verified-value="phoneVerifiedValues[currentField.uuid]"
:default-value="submitter.phone" :default-value="submitter.phone"
@ -542,7 +542,7 @@
v-else-if="currentField.type === 'verification'" v-else-if="currentField.type === 'verification'"
ref="currentStep" ref="currentStep"
:key="currentField.uuid" :key="currentField.uuid"
:locale="language?.toLowerCase() || browserLanguage" :locale="selectedLanguage"
:submitter="submitter" :submitter="submitter"
:empty-value-required-step="emptyValueRequiredStep" :empty-value-required-step="emptyValueRequiredStep"
:field="currentField" :field="currentField"
@ -998,6 +998,7 @@ export default {
return { return {
isCompleted: false, isCompleted: false,
isInvite: false, isInvite: false,
selectedLanguage: (this.language || '').toLowerCase() || (navigator.language || navigator.userLanguage || 'en').split('-')[0],
isFormVisible: this.expand !== false, isFormVisible: this.expand !== false,
showFillAllRequiredFields: false, showFillAllRequiredFields: false,
currentStep: 0, currentStep: 0,
@ -1096,6 +1097,9 @@ export default {
browserLanguage () { browserLanguage () {
return (navigator.language || navigator.userLanguage || 'en').split('-')[0] return (navigator.language || navigator.userLanguage || 'en').split('-')[0]
}, },
availableLanguages () {
return Object.keys(i18n)
},
queryParams () { queryParams () {
return new URLSearchParams(window.location.search) return new URLSearchParams(window.location.search)
}, },
@ -1334,7 +1338,7 @@ export default {
}, },
methods: { methods: {
t (key) { t (key) {
return this.i18n[key] || i18n[this.language?.toLowerCase()]?.[key] || i18n[this.browserLanguage]?.[key] || i18n.en[key] || key return this.i18n[key] || i18n[this.selectedLanguage]?.[key] || i18n.en[key] || key
}, },
onOrientationChange (event) { onOrientationChange (event) {
this.orientation = event.target.type this.orientation = event.target.type
@ -1717,4 +1721,18 @@ export default {
} }
} }
} }
</script>
} else {
this.$nextTick(() => {
const root = this.$root.$el.parentNode.getRootNode()
const completedEl = root.getElementById('form_completed')
if (completedEl) {
completedEl.focus()
}
})
}
}
}
}
</script> </script>

Loading…
Cancel
Save