From e937fc0f1a28a3fc6167818cb76a3198d73a8593 Mon Sep 17 00:00:00 2001 From: zuofenghua <11100776@bbktel.com> Date: Fri, 23 Oct 2020 19:44:04 +0800 Subject: [PATCH] fix: fix switch language error #103 --- .../theme-default/components/NavBarLinks.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/client/theme-default/components/NavBarLinks.ts b/src/client/theme-default/components/NavBarLinks.ts index d34b8c4..413aab4 100644 --- a/src/client/theme-default/components/NavBarLinks.ts +++ b/src/client/theme-default/components/NavBarLinks.ts @@ -3,6 +3,7 @@ import { useSiteData, useSiteDataByRoute, useRoute } from 'vitepress' import NavBarLink from './NavBarLink.vue' import NavDropdownLink from './NavDropdownLink.vue' import { DefaultTheme } from '../config' +import { inBrowser } from '/@app/utils' const platforms = ['GitHub', 'GitLab', 'Bitbucket'].map( (platform) => [platform, new RegExp(platform, 'i')] as const @@ -52,19 +53,28 @@ export default { return null } + // handle site base + const siteBase = inBrowser ? siteData.value.base : '/' + const siteBaseWithoutSuffix = siteBase.endsWith('/') + ? siteBase.slice(0, -1) + : siteBase + // remove site base in browser env + const routerPath = route.path.slice(siteBaseWithoutSuffix.length) + const currentLangBase = localeKeys.find((v) => { if (v === '/') { return false } - return route.path.startsWith(v) + return routerPath.startsWith(v) }) const currentContentPath = currentLangBase - ? route.path.substring(currentLangBase.length - 1) - : route.path + ? routerPath.substring(currentLangBase.length - 1) + : routerPath const candidates = localeKeys.map((v) => { + const localePath = v.endsWith('/') ? v.slice(0, -1) : v return { text: locales[v].label || locales[v].lang, - link: `${v}${currentContentPath}` + link: `${localePath}${currentContentPath}` } })