我有一个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 以 locale 为前缀会更方便,比如/en/profile
or /ru/profile
。这样我就可以与已经设置的语言环境共享一个链接。
不知道如何做到这一点。将所有路由设置为子路由并放置/:locale?
并不方便,因为路由器尚未初始化(我在初始化根应用程序实例时同时传递i18n
和router
实例)。
我怎样才能做到这一点,最好的方法是什么?