fix french homepage
Build & Deploy / Build & Push Docker Image (push) Failing after 49s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m6s
Test / Marketplace Unit Tests (push) Has been cancelled
Test / Admin Unit Tests (push) Has been cancelled
Test / Dashboard Unit Tests (push) Has been cancelled
Test / API Integration Tests (push) Has been cancelled
Build & Deploy / Build & Push Docker Image (push) Failing after 49s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m6s
Test / Marketplace Unit Tests (push) Has been cancelled
Test / Admin Unit Tests (push) Has been cancelled
Test / Dashboard Unit Tests (push) Has been cancelled
Test / API Integration Tests (push) Has been cancelled
This commit is contained in:
@@ -46,16 +46,6 @@ const nextConfig: NextConfig = {
|
||||
destination: '/dashboard/:path*',
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: '/sign-in',
|
||||
destination: '/en/sign-in',
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: '/forgot-password',
|
||||
destination: '/en/forgot-password',
|
||||
permanent: false,
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 836 KiB |
@@ -1,6 +1,7 @@
|
||||
'use client';
|
||||
|
||||
import { localizedPath, locales, type Locale } from '@/lib/localization/config';
|
||||
import { persistLocale } from '@/lib/localization/client';
|
||||
import { persistTheme, themePreferenceEvent } from '@/lib/theme/client';
|
||||
import { type ThemePreference } from '@/lib/theme/config';
|
||||
import Image from 'next/image';
|
||||
@@ -62,6 +63,7 @@ export function AuthHeader({ locale, themePreference: initialPref }: Props) {
|
||||
|
||||
const switchLocale = (next: Locale) => {
|
||||
setLocaleOpen(false);
|
||||
persistLocale(next);
|
||||
const segments = pathname.split('/').filter(Boolean);
|
||||
if (segments.length >= 2) segments[1] = next;
|
||||
router.push('/' + segments.join('/'));
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { SiteHeader } from './SiteHeader';
|
||||
import { AuthHeader } from './AuthHeader';
|
||||
import { routeIdFromPathname } from '@/lib/localization/config';
|
||||
import type { ShellMessages } from '@/lib/localization/messages';
|
||||
import type { Locale } from '@/lib/localization/config';
|
||||
import type { ThemePreference } from '@/lib/theme/config';
|
||||
@@ -15,7 +16,8 @@ interface Props {
|
||||
|
||||
export function HeaderRouter({ locale, messages, themePreference }: Props) {
|
||||
const pathname = usePathname();
|
||||
const isAuth = pathname.endsWith('/sign-in') || pathname.endsWith('/forgot-password');
|
||||
const routeId = routeIdFromPathname(pathname);
|
||||
const isAuth = routeId === 'sign-in' || routeId === 'forgot-password';
|
||||
|
||||
if (isAuth) {
|
||||
return <AuthHeader locale={locale} themePreference={themePreference} />;
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
color: var(--text-primary);
|
||||
font-weight: 650;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.navigation a {
|
||||
|
||||
@@ -44,6 +44,19 @@ export function proxy(request: NextRequest): NextResponse {
|
||||
return applySecurityHeaders(response, csp);
|
||||
}
|
||||
|
||||
// Redirect locale-less paths (e.g. /sign-in → /en/sign-in), but not /dashboard, /admin, or files
|
||||
const firstSegment = request.nextUrl.pathname.split('/')[1];
|
||||
const isFile = /\.\w+$/.test(request.nextUrl.pathname);
|
||||
if (firstSegment && !isFile && !isLocale(firstSegment) && firstSegment !== 'dashboard' && firstSegment !== 'admin') {
|
||||
const cookieLocale = request.cookies.get(localeCookie)?.value;
|
||||
const locale = isLocale(cookieLocale)
|
||||
? cookieLocale
|
||||
: localeFromAcceptLanguage(request.headers.get('accept-language')) || defaultLocale;
|
||||
const destination = request.nextUrl.clone();
|
||||
destination.pathname = `/${locale}${request.nextUrl.pathname}`;
|
||||
return applySecurityHeaders(NextResponse.redirect(destination), csp);
|
||||
}
|
||||
|
||||
const response = NextResponse.next({ request: { headers: requestHeaders } });
|
||||
const explicitLocale = request.nextUrl.pathname.split('/')[1];
|
||||
if (isLocale(explicitLocale)) {
|
||||
|
||||
Reference in New Issue
Block a user