diff --git a/components/header.js b/components/header.js index 2377f044..ee9c4a6a 100644 --- a/components/header.js +++ b/components/header.js @@ -112,9 +112,11 @@ const Header = (props) => { .join("&") : ""; - router.push(router.pathname + queryString, undefined, { - locale: switchLocale, - }); + // router.push(router.pathname + queryString, undefined, { + // locale: switchLocale, + // }); + + router.push(router.asPath, router.asPath, { locale: switchLocale }); }; return ( diff --git a/i18n.js b/i18n.js index 4515ae36..047546f3 100644 --- a/i18n.js +++ b/i18n.js @@ -1,6 +1,7 @@ module.exports = { "locales": ["en", "cy"], "defaultLocale": "en", + "localeDetection": false, "domains": [ { "domain": process.env.I18N_DOMAIN, diff --git a/pages/api/auth/[...nextauth].js b/pages/api/auth/[...nextauth].js index c52977ff..11a76b83 100644 --- a/pages/api/auth/[...nextauth].js +++ b/pages/api/auth/[...nextauth].js @@ -89,12 +89,25 @@ const authOptions = (locale, req, res) => { "verification url API: " + url + "\n", "============================================================\n" ); + const baseDomain = `${protocol}//${host}`; + const emailAddress = email; + const prefLang = await getPreferredLanguage(emailAddress); + + const registeredPrefLanguage = + prefLang.value.length > 0 + ? prefLang.value[0].pinswg_preferredlanguage === + 846040000 + ? "cy" + : "en" + : "en"; + + const effectiveLocale = registeredPrefLanguage ?? locale; let newURL = - locale == "cy" - ? process.env.CY_API_ROOT + + effectiveLocale == "cy" + ? baseDomain + "/api/auth/callback/email?callbackUrl=" + - encodeURIComponent(process.env.CY_API_ROOT) + + encodeURIComponent(baseDomain + "/cy") + "&token=" + searchParams.get("token") + "&email=" +