language implementation MERMS
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
const loaders = {
|
||||
en: () => import('../messages/en.json'),
|
||||
fr: () => import('../messages/fr.json'),
|
||||
es: () => import('../messages/es.json'),
|
||||
}
|
||||
|
||||
export async function getMessages(locale) {
|
||||
const load = loaders[locale] || loaders.en
|
||||
const mod = await load()
|
||||
return mod.default
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user