From a3e7f8f4fb71a616f54779493a74cfb1a90302fa Mon Sep 17 00:00:00 2001 From: Yusuke Fujiki Date: Thu, 8 Aug 2019 09:10:37 +0900 Subject: [PATCH 1/2] Set original path for redirect url --- src/wrap-page.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wrap-page.js b/src/wrap-page.js index 9a280b7..918b99f 100644 --- a/src/wrap-page.js +++ b/src/wrap-page.js @@ -43,7 +43,7 @@ export default ({ element, props }) => { const { pageContext, location } = props const { intl } = pageContext - const { language, languages, redirect, routed } = intl + const { language, languages, redirect, routed, originalPath } = intl if (typeof window !== "undefined") { window.___gatsbyIntl = intl @@ -52,7 +52,7 @@ export default ({ element, props }) => { const isRedirect = redirect && !routed if (isRedirect) { - const { pathname, search } = location + const { search } = location // Skip build, Browsers only if (typeof window !== "undefined") { @@ -68,7 +68,7 @@ export default ({ element, props }) => { } const queryParams = search || "" - const newUrl = withPrefix(`/${detected}${pathname}${queryParams}`) + const newUrl = withPrefix(`/${detected}${originalPath}${queryParams}`) window.localStorage.setItem("gatsby-intl-language", detected) window.location.replace(newUrl) } From 20bd538e56082f48ed4318a137dad525f56bb8e4 Mon Sep 17 00:00:00 2001 From: Yusuke Fujiki Date: Thu, 8 Aug 2019 10:33:59 +0900 Subject: [PATCH 2/2] Fix changeLocale with prefix path --- src/link.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/link.js b/src/link.js index 6a5fd75..93197ac 100644 --- a/src/link.js +++ b/src/link.js @@ -55,6 +55,15 @@ export const changeLocale = (language, to) => { } const { routed } = window.___gatsbyIntl + const removePrefix = pathname => { + const base = + typeof __BASE_PATH__ !== `undefined` ? __BASE_PATH__ : __PATH_PREFIX__ + if (base && pathname.indexOf(base) === 0) { + pathname = pathname.slice(base.length) + } + return pathname + } + const removeLocalePart = pathname => { if (!routed) { return pathname @@ -63,7 +72,8 @@ export const changeLocale = (language, to) => { return pathname.substring(i) } - const pathname = to || removeLocalePart(window.location.pathname) + const pathname = + to || removeLocalePart(removePrefix(window.location.pathname)) // TODO: check slash const link = `/${language}${pathname}${window.location.search}` localStorage.setItem("gatsby-intl-language", language)