Next.js Supabase V3 (#463)
Version 3 of the kit: - Radix UI replaced with Base UI (using the Shadcn UI patterns) - next-intl replaces react-i18next - enhanceAction deprecated; usage moved to next-safe-action - main layout now wrapped with [locale] path segment - Teams only mode - Layout updates - Zod v4 - Next.js 16.2 - Typescript 6 - All other dependencies updated - Removed deprecated Edge CSRF - Dynamic Github Action runner
This commit is contained in:
committed by
GitHub
parent
4912e402a3
commit
7ebff31475
46
packages/i18n/src/client-provider.tsx
Normal file
46
packages/i18n/src/client-provider.tsx
Normal file
@@ -0,0 +1,46 @@
|
||||
'use client';
|
||||
|
||||
import type { ReactNode } from 'react';
|
||||
|
||||
import type { AbstractIntlMessages } from 'next-intl';
|
||||
import { NextIntlClientProvider } from 'next-intl';
|
||||
|
||||
const isDevelopment = process.env.NODE_ENV === 'development';
|
||||
|
||||
interface I18nClientProviderProps {
|
||||
locale: string;
|
||||
messages: AbstractIntlMessages;
|
||||
children: ReactNode;
|
||||
timeZone?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Client-side provider for next-intl.
|
||||
* Wraps the application and provides translation context to all client components.
|
||||
*/
|
||||
export function I18nClientProvider({
|
||||
locale,
|
||||
messages,
|
||||
timeZone = 'UTC',
|
||||
children,
|
||||
}: I18nClientProviderProps) {
|
||||
return (
|
||||
<NextIntlClientProvider
|
||||
locale={locale}
|
||||
messages={messages}
|
||||
timeZone={timeZone}
|
||||
getMessageFallback={(info) => {
|
||||
// simply fallback to the key as is
|
||||
return info.key;
|
||||
}}
|
||||
onError={(error) => {
|
||||
if (isDevelopment) {
|
||||
// Missing translations are expected and should only log an error
|
||||
console.warn(`[Dev Only] i18n error: ${error.message}`);
|
||||
}
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</NextIntlClientProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user