I want to get language data for i18n from database. I use session storage for save data then get data from API. But i18n created before session storage get data from database. How can I create session storage before create i18n?
Asked
Active
Viewed 1,112 times
1 Answers
0
I used the mounted() hook in the main App.js file to query (javascript) session storage. Like this:
mounted () {
// see if we have a user in Session Storage
// yes? commit it to store
if (sessionStorage.getItem('username') && sessionStorage.getItem('userId') && sessionStorage.getItem('permission') && sessionStorage.getItem('userKey')) {
let obj = {
username: sessionStorage.getItem('username'),
userId: sessionStorage.getItem('userId'),
permission: sessionStorage.getItem('permission'),
key: sessionStorage.getItem('userKey')
}
this.$store.commit('setUser', obj)
// no? commit default 'Guest' user
} else {
this.$store.commit('setUserToGuest')
}
}
That's not an actual SESSION store, so it has to be set in javascript as well. When I get back from a user login http request, I set the variables like this:
loginCheck () {
api.user.login(this.username1, this.password1).then((response) => {
if (response.data.login.pass > 0) {
// set session . . .
sessionStorage.setItem('username', response.data.login.username)
sessionStorage.setItem('userId', response.data.login.id)
sessionStorage.setItem('permission', response.data.login.permission)
sessionStorage.setItem('userKey', response.data.login.user_key)
// set the store
let obj = {
userId: response.data.login.id,
username: response.data.login.username,
permission: response.data.login.permission,
key: response.data.login.user_key
}
this.$store.commit('setUser', obj)
} else {
// set session . . .
sessionStorage.setItem('username', 'Guest')
sessionStorage.setItem('userId', 0)
sessionStorage.setItem('permission', 0)
sessionStorage.setItem('userKey', 0)
this.$store.commit('setUserToGuest')
}
})
}

Bill Dickson
- 66
- 6
-
I have a a database language. I try get data from it then i set them in sessionStrorage. Then i call sessionStorage in vue-i18n, the firstime i access my wep app although i see in sessionStorage has database but when i console.log it return for me a null. I click refresh everthing is ok. I don't understand why it return null although i call it in beforeCreate() function. – PinPolygons Dec 05 '19 at 09:09
-
I don't know if this helps, but use chrome developers tools Application tab to get a real time look at the state of your Session Storage. – Bill Dickson Dec 05 '19 at 19:38
-
i think this problem is Asynchronous. How can i call function then use Vue-i18n? – PinPolygons Dec 06 '19 at 02:16