Files
myeasycms-v2/packages/i18n/src/client-provider.tsx
Giancarlo Buomprisco 7ebff31475 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
2026-03-24 13:40:38 +08:00

47 lines
1.1 KiB
TypeScript

'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>
);
}