26 lines
687 B
JavaScript
26 lines
687 B
JavaScript
import React, { createContext, useContext } from 'react'
|
|
|
|
const TranslationContext = createContext({ messages: {}, locale: 'en' })
|
|
|
|
export function NextIntlClientProvider({ locale, messages, children, timeZone }) {
|
|
return React.createElement(
|
|
TranslationContext.Provider,
|
|
{ value: { locale: locale || 'en', messages: messages || {} } },
|
|
children
|
|
)
|
|
}
|
|
|
|
export function useTranslations(namespace) {
|
|
const { messages } = useContext(TranslationContext)
|
|
return function t(key) {
|
|
const ns = messages?.[namespace]
|
|
if (!ns) return key
|
|
return ns[key] ?? key
|
|
}
|
|
}
|
|
|
|
export function useLocale() {
|
|
const { locale } = useContext(TranslationContext)
|
|
return locale
|
|
}
|