From 92fde6444b96372a9752eae674696ca71dc5dbc4 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Sun, 22 Jul 2018 17:46:00 +0200 Subject: [PATCH] Fix #386: Autoselect best language based on browser configuration --- changes/changelog.d/386.enhancement | 1 + front/src/App.vue | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 changes/changelog.d/386.enhancement diff --git a/changes/changelog.d/386.enhancement b/changes/changelog.d/386.enhancement new file mode 100644 index 0000000000..6ac08116c4 --- /dev/null +++ b/changes/changelog.d/386.enhancement @@ -0,0 +1 @@ +Autoselect best language based on browser configuration (#386) diff --git a/front/src/App.vue b/front/src/App.vue index 1fd000c92a..58ed698aa9 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -93,6 +93,8 @@ import axios from 'axios' import _ from 'lodash' import {mapState} from 'vuex' +import translations from '@/translations' + import Sidebar from '@/components/Sidebar' import Raven from '@/components/Raven' import ServiceMessages from '@/components/ServiceMessages' @@ -115,6 +117,7 @@ export default { }, created () { let self = this + this.autodetectLanguage() setInterval(() => { // used to redraw ago dates every minute self.$store.commit('ui/computeLastDate') @@ -138,6 +141,21 @@ export default { if (confirm) { this.$store.commit('instance/instanceUrl', null) } + }, + autodetectLanguage () { + let userLanguage = navigator.language || navigator.userLanguage + let available = _.keys(translations) + let matching = available.filter((a) => { + return userLanguage.replace('-', '_') === a + }) + let almostMatching = available.filter((a) => { + return userLanguage.replace('-', '_').split('_')[0] === a.split('_')[0] + }) + if (matching.length > 0) { + this.$language.current = matching[0] + } else if (almostMatching.length > 0) { + this.$language.current = almostMatching[0] + } } }, computed: { -- GitLab