fix(seo): pass lang as a prop to Header/LanguageSwitcher instead of useParams
Since the vite-react-ssg migration replaced the dynamic /:lang route param with literal /fr and /en routes, useParams().lang always returned undefined here, breaking the header brand link (linked to /undefined/) and silently breaking the language switcher (always resolved otherLang to 'fr').
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
import { Link, useParams } from 'react-router-dom';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { LanguageSwitcher } from './LanguageSwitcher.jsx';
|
||||
import { ThemeToggle } from './ThemeToggle.jsx';
|
||||
|
||||
export function Header({ theme, onToggleTheme }) {
|
||||
const { lang } = useParams();
|
||||
export function Header({ lang, theme, onToggleTheme }) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
@@ -13,7 +12,7 @@ export function Header({ theme, onToggleTheme }) {
|
||||
{t('brand')}
|
||||
</Link>
|
||||
<div className="site-header-controls">
|
||||
<LanguageSwitcher />
|
||||
<LanguageSwitcher lang={lang} />
|
||||
<ThemeToggle
|
||||
theme={theme}
|
||||
onToggle={onToggleTheme}
|
||||
|
||||
@@ -17,7 +17,7 @@ export function LangLayout({ lang }) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Header theme={theme} onToggleTheme={toggleTheme} />
|
||||
<Header lang={lang} theme={theme} onToggleTheme={toggleTheme} />
|
||||
<main>
|
||||
<Outlet />
|
||||
</main>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Link, useParams } from 'react-router-dom';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export function LanguageSwitcher() {
|
||||
const { lang } = useParams();
|
||||
export function LanguageSwitcher({ lang }) {
|
||||
const { t } = useTranslation();
|
||||
const otherLang = lang === 'fr' ? 'en' : 'fr';
|
||||
const label = otherLang === 'en' ? t('nav.switchToEnglish') : t('nav.switchToFrench');
|
||||
|
||||
Reference in New Issue
Block a user