У меня есть файл locale.js
, который отвечает за определение языкового стандарта пользователя. Вот оно:
import store from '@/vuex/index'
let locale
const defaultLocale = 'en_US'
if (store.getters['auth/authenticated']) {
locale = store.getters['auth/currentUser'].locale || defaultLocale
} else {
if (localStorage.getItem('locale')) {
locale = localStorage.getItem('locale')
} else {
locale = defaultLocale
}
}
export default locale
Также у меня есть файл i18n.js
, который отвечает за создание экземпляра i18n
, который я использую при запуске приложения.
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import locale from '@/services/locale'
Vue.use(VueI18n)
const fallbackLocale = 'en_US'
let i18n = new VueI18n({
locale,
fallbackLocale,
})
i18n.setLocaleMessage('ru_RU', require('@/lang/ru_RU.json'))
i18n.setLocaleMessage('en_US', require('@/lang/en_US.json'))
export { i18n }
Теперь я думаю, что было бы удобнее иметь URL-адреса с префиксом локали, например /en/profile
или /ru/profile
. Таким образом, я могу поделиться ссылкой с локалью, которая была бы уже установлена.
Не уверен, как это сделать, хотя. Делать все маршруты дочерними и ставить /:locale?
не очень удобно, потому что маршрутизатор еще не инициализирован (я пропускаю экземпляры i18n
и router
одновременно при запуске экземпляра корневого приложения).
Как мне достичь этого, какой будет наилучший подход?