UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

44 lines (43 loc) 1.44 kB
"use client"; import { useMemo, useContext } from 'react'; import SharedContext from "../../../shared/Context.js"; import sharedUseTranslation from "../../../shared/useTranslation.js"; import { extendDeep, isObject } from "../../../shared/component-helper.js"; import { LOCALE } from "../../../shared/defaults.js"; import formsLocales from "../constants/locales/index.js"; export default function useTranslation(messagesOrArgs) { const { locale, translation: globalTranslation } = useContext(SharedContext); const { messages, fallbackLocale } = useMemo(() => { const arg = messagesOrArgs; if (isObject(messagesOrArgs) && ('messages' in messagesOrArgs || 'fallbackLocale' in messagesOrArgs)) { return { messages: arg?.messages, fallbackLocale: arg?.fallbackLocale }; } return { messages: messagesOrArgs, fallbackLocale: LOCALE }; }, [messagesOrArgs]); let translationLocale = locale; if (locale.startsWith('en-') && !Object.keys(formsLocales).some(l => l === locale)) { translationLocale = 'en-GB'; } const base = useMemo(() => { return extendDeep({}, formsLocales[translationLocale] || formsLocales[LOCALE], globalTranslation); }, [globalTranslation, translationLocale]); return sharedUseTranslation({ messages, fallbackLocale, base, warnLabel: 'Form.useTranslation' }); } //# sourceMappingURL=useTranslation.js.map