From 62fd63e41fe10fba843a40fb08191f5944f2b2fc Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 24 May 2022 08:21:03 +0530 Subject: [PATCH] fix(i18n): fix language mismatch in exported pdf --- client/pages/[username]/[slug]/index.tsx | 8 ++++++++ client/pages/r/[shortId].tsx | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/client/pages/[username]/[slug]/index.tsx b/client/pages/[username]/[slug]/index.tsx index 9e2e8c7d..dd105366 100644 --- a/client/pages/[username]/[slug]/index.tsx +++ b/client/pages/[username]/[slug]/index.tsx @@ -59,6 +59,14 @@ const Preview: NextPage = ({ username, slug, resume: initialData }) => { } }, [dispatch, initialData]); + useEffect(() => { + if (!isEmpty(resume) && router.locale !== resume.metadata.locale) { + const { pathname, asPath, query } = router; + + router.push({ pathname, query }, asPath, { locale: resume.metadata.locale }); + } + }, [resume, router]); + useQuery(`resume/${username}/${slug}`, () => fetchResumeByIdentifier({ username, slug }), { initialData, retry: false, diff --git a/client/pages/r/[shortId].tsx b/client/pages/r/[shortId].tsx index 65749f51..99027d0e 100644 --- a/client/pages/r/[shortId].tsx +++ b/client/pages/r/[shortId].tsx @@ -7,6 +7,7 @@ import get from 'lodash/get'; import isEmpty from 'lodash/isEmpty'; import { GetServerSideProps, NextPage } from 'next'; import Link from 'next/link'; +import { useRouter } from 'next/router'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; import { useEffect } from 'react'; import toast from 'react-hot-toast'; @@ -35,6 +36,8 @@ export const getServerSideProps: GetServerSideProps = async ({ query, loc }; const Preview: NextPage = ({ shortId }) => { + const router = useRouter(); + const dispatch = useAppDispatch(); const { data: resume } = useQuery(`resume/${shortId}`, () => fetchResumeByShortId({ shortId }), { @@ -52,6 +55,14 @@ const Preview: NextPage = ({ shortId }) => { if (resume) dispatch(setResume(resume)); }, [resume, dispatch]); + useEffect(() => { + if (resume && !isEmpty(resume) && router.locale !== resume.metadata.locale) { + const { pathname, asPath, query } = router; + + router.push({ pathname, query }, asPath, { locale: resume.metadata.locale }); + } + }, [resume, router]); + if (!resume || isEmpty(resume)) return null; const layout: string[][][] = get(resume, 'metadata.layout', []);