问题描述
如何在Quasar框架中将语言设置为路由参数? 当您按下按钮时,我实现了按钮的语言更改。我用过我检测到语言 区域设置:navigator.language.split('-')[0] +如果在我的json lang中没有语言,请使用默认的'en'。但是现在,SEO经理要求我在lang中添加url,以使用什么应用程序(例如:site.com/en/home)。我该怎么做? 我读了这2个博客https://medium.com/hypefactors/add-i18n-and-manage-translations-of-a-vue-js-powered-website-73b4511ca69c 和https://medium.com/i18n-and-l10n-resources-for-developers/the-ultimate-guide-to-vue-localization-with-vue-i18n-bf98b1d40c65 但是找不到我弄错的地方。
这是我的代码route.js:
const routes = [{
path: "/",redirect: locale
},{
path: '/:locale',component: () => import('layouts/MainLayout.vue'),beforeEnter(to,from,next) {
const lang = to.params.lang
console.log(to);
console.log(from);
console.log(next);
if (!['enUS','ru','ua','ge'].includes(lang)) return next('en-us');
if (i18n.locale !== lang) {
i18n.locale = lang
}
return next()
},
并尝试
router.beforeEach((to,next) => {
if (to.params.locale === from.params.locale) {
next('en')
return
}
const {
locale
} = to.params
next('ru')
})
如何更好地控制参数:locale?如何使用“良好实践”来完成此操作,我需要发送到那里,默认情况下为“ zh-cn”和其他语言。默认网站需要以en-us lang开头(如何在Quasar框架中的i18n.js和router.js中发送:locale),但是当SEO创建url链接(广告)时,示例为site.com/ru/或site.com/ ru / home“ ru”-i18n中的参数更改lang。我发现唯一不好的方法:
const currentLocationLang = window.location.href.toString().split('#')[1].split('/')[1];
console.log('currentLocationLang',currentLocationLang);
if (currentLocationLang === 'en-us' || currentLocationLang === 'ru' || currentLocationLang === 'ua' || currentLocationLang === 'ge') {
var lan = currentLocationLang;
console.log(lan);
} else {
var lan = 'en-us';
console.log(lan);
}
const i18n = new VueI18n({
locale: lan,//locale: navigator.language.split('-')[0],fallbackLocale: 'en-us',messages
})
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)