Files
ims/lib/i18n/context.tsx
T

25 lines
632 B
TypeScript

'use client'
import { createContext, useContext } from 'react'
import type en from '../../messages/en.json'
export type Messages = typeof en
const I18nContext = createContext<Messages | null>(null)
export function I18nProvider({
messages,
children,
}: {
messages: Messages
children: React.ReactNode
}) {
return <I18nContext.Provider value={messages}>{children}</I18nContext.Provider>
}
export function useTranslations<K extends keyof Messages>(namespace: K): Messages[K] {
const ctx = useContext(I18nContext)
if (!ctx) throw new Error('useTranslations must be used inside I18nProvider')
return ctx[namespace]
}