Я реализую веб-сайт, пользователи которого могут переключать выбор языка. Таким образом, выбранное языковое предпочтение отправляется в API с параметром lang.
- Если язык установлен на английский
/api/test?lang=ru
- Если язык установлен на тайский
/api/test?lang=th
Я сохранил язык в локальном хранилище и управлении состоянием Vuex.
Поскольку параметр ?lang необходим для отправки в каждом запросе, я решил использовать параметр lang в качестве параметра по умолчанию axios.
мутации.js
let mutations = {
UPDATE_LANGUAGE_PREFERENCE(state, language) {
if (language.toLowerCase() === ENGLISH_LANGUAGE_CODE) {
state.languagePreference = ENGLISH_LANGUAGE_CODE;
} else {
state.languagePreference = THAI_LANGUAGE_CODE;
}
Vue.prototype.$http = axios
let languagePreference = store.getters.languagePreference
if (!languagePreference) {
languagePreference = LANGUAGE_PREFERENCE
}
Vue.prototype.$http.interceptors.request.use((config) => {
config.params = config.params || {}
config.params['lang'] = languagePreference
return config
})
},
}
Делая это, теперь он отправляет исходный язык по умолчанию на каждый запрос. Но это не отражает изменений, когда пользователь переключает язык
NavbarComponent.vue
<script>
...
methods: {
updateLanguagePreference() {
if (!this.isThai) {
this.$store.dispatch('updateLanguagePreference', THAI_LANGUAGE_CODE)
} else {
this.$store.dispatch('updateLanguagePreference', ENGLISH_LANGUAGE_CODE)
}
axios.get('/test', {
})
}
},
...
</script>
axios
в мутациях? - person sugars   schedule 24.08.2020lang
всякий раз, когда пользователь изменяетlang
- person Lizesh Shakya   schedule 24.08.2020