vue3 i18n 未定义语言环境
我正在尝试做一个多语言项目,但是问题是 重定向
返回未定义的
。有什么方法可以解决此问题吗? 尽管我做了所有的努力,但它仍然说不确定,当我在地址栏中键入lang
参数时,它行不通。固定en.json
工作
https://vue-i18n.intlify。 dev/installation.html
app.js
import {createApp} from 'vue';
import App from './App.vue'
import i18n from './i18n';
import WebsiteRouter from './Website/router';
axios.defaults.withCredentials = true;
createApp(App)
.use(WebsiteRouter)
.use(i18n)
.mount("#app");
/router/index.js
import {createRouter, createWebHistory} from 'vue-router'
import i18n from "../../i18n";
import routes from './routes'
const router = createRouter({
history: createWebHistory(),
routes
})
router.beforeEach((to, from, next) => {
let language = to.params.lang;
if (!language) {
language = 'en'
}
i18n.locale = language
next()
})
export default router;
doutes.js
import i18n from "../../i18n";
export default [
{
path: '/',
redirect: `/${i18n.locale}`
},
{
path: '/:lang',
component: {
render (c) { return c('router-view') }
},
children: [
{
path: '/',
name: 'home',
component: () => import('../Views/Home.vue'),
},
{
path: '/about',
name: 'about',
component: () => import('../Views/About.vue'),
},
{
path: '/contact',
name: 'contact',
component: () => import('../Views/Contact.vue'),
}
]
}
];
i am trying to do a multilingual project, but the problem isredirect
returns undefined
. is there any way to fix this?
Despite all my efforts, it still says undefined and it doesn't work when I type the lang
parameter in the address bar. fixed en.json
working
https://vue-i18n.intlify.dev/installation.html
app.js
import {createApp} from 'vue';
import App from './App.vue'
import i18n from './i18n';
import WebsiteRouter from './Website/router';
axios.defaults.withCredentials = true;
createApp(App)
.use(WebsiteRouter)
.use(i18n)
.mount("#app");
/router/index.js
import {createRouter, createWebHistory} from 'vue-router'
import i18n from "../../i18n";
import routes from './routes'
const router = createRouter({
history: createWebHistory(),
routes
})
router.beforeEach((to, from, next) => {
let language = to.params.lang;
if (!language) {
language = 'en'
}
i18n.locale = language
next()
})
export default router;
routes.js
import i18n from "../../i18n";
export default [
{
path: '/',
redirect: `/${i18n.locale}`
},
{
path: '/:lang',
component: {
render (c) { return c('router-view') }
},
children: [
{
path: '/',
name: 'home',
component: () => import('../Views/Home.vue'),
},
{
path: '/about',
name: 'about',
component: () => import('../Views/About.vue'),
},
{
path: '/contact',
name: 'contact',
component: () => import('../Views/Contact.vue'),
}
]
}
];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试用于
重定向
。
的
ROUTES.JS
中
Try to use
for the redirect in routes.js
You may also try to replace:
to:
in you router.beforeEach
Cheers :)