See #161: can now persist language in local storage

environments/review-front-161-yeeda1/deployments/20
Eliot Berriot 2018-06-30 12:05:52 +02:00
rodzic 869b6c4fe9
commit 8926d93040
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: DD6965E2476E5C27
4 zmienionych plików z 36 dodań i 9 usunięć

Wyświetl plik

@ -57,6 +57,18 @@
<translate>The funkwhale logo was kindly designed and provided by Francis Gading.</translate>
</p>
</div>
<div class="three wide column">
<h4 v-translate class="ui header">Options</h4>
<div class="ui form">
<div class="ui field">
<label>{{ $gettext('Change language') }}</label>
<select class="ui dropdown" v-model="$language.current">
<option v-for="(language, key) in $language.available" :value="key">{{ language }}</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
@ -144,6 +156,9 @@ export default {
'$store.state.instance.instanceUrl' () {
this.$store.dispatch('instance/fetchSettings')
this.fetchNodeInfo()
},
'$language.current' (newValue) {
this.$store.commit('ui/currentLanguage', newValue)
}
}
}

Wyświetl plik

@ -32,16 +32,20 @@ window.$ = window.jQuery = require('jquery')
// require('./semantic/semantic.css')
require('semantic-ui-css/semantic.js')
require('masonry-layout')
let availableLanguages = (function () {
let l = {}
locales.locales.forEach(c => {
l[c.code] = c.label
})
return l
})()
let defaultLanguage = 'en_US'
if (availableLanguages[store.state.ui.currentLanguage]) {
defaultLanguage = store.state.ui.currentLanguage
}
Vue.use(GetTextPlugin, {
availableLanguages: (function () {
let l = {}
locales.locales.forEach(c => {
l[c.code] = c.label
})
return l
})(),
defaultLanguage: 'en_US',
availableLanguages: availableLanguages,
defaultLanguage: defaultLanguage,
languageVmMixin: {
computed: {
currentKebabCase: function () {

Wyświetl plik

@ -36,6 +36,10 @@ export default new Vuex.Store({
key: 'instance',
paths: ['instance.events', 'instance.instanceUrl']
}),
createPersistedState({
key: 'ui',
paths: ['ui.currentLanguage']
}),
createPersistedState({
key: 'radios',
paths: ['radios'],

Wyświetl plik

@ -3,6 +3,7 @@ import axios from 'axios'
export default {
namespaced: true,
state: {
currentLanguage: 'en_US',
lastDate: new Date(),
maxMessages: 100,
messageDisplayDuration: 10000,
@ -13,6 +14,9 @@ export default {
}
},
mutations: {
currentLanguage: (state, value) => {
state.currentLanguage = value
},
computeLastDate: (state) => {
state.lastDate = new Date()
},