UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

61 lines (60 loc) 2.12 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useTranslation; var _react = require("react"); var _Context = _interopRequireDefault(require("../../../shared/Context.js")); var _useTranslation = _interopRequireDefault(require("../../../shared/useTranslation.js")); var _componentHelper = require("../../../shared/component-helper.js"); var _defaults = require("../../../shared/defaults.js"); var _index = _interopRequireDefault(require("../constants/locales/index.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } let baseCache = null; function useTranslation(messagesOrArgs) { const { locale, translation: globalTranslation } = (0, _react.useContext)(_Context.default); const { messages, fallbackLocale } = (0, _react.useMemo)(() => { const arg = messagesOrArgs; if ((0, _componentHelper.isObject)(messagesOrArgs) && ('messages' in messagesOrArgs || 'fallbackLocale' in messagesOrArgs)) { return { messages: arg?.messages, fallbackLocale: arg?.fallbackLocale }; } return { messages: messagesOrArgs, fallbackLocale: _defaults.LOCALE }; }, [messagesOrArgs]); let translationLocale = locale; if (locale.startsWith('en-') && !Object.keys(_index.default).some(l => l === locale)) { translationLocale = 'en-GB'; } const base = (0, _react.useMemo)(() => { const localeKey = translationLocale || _defaults.LOCALE; if (baseCache && baseCache.globalTranslation === globalTranslation && baseCache.locale === localeKey) { return baseCache.result; } const result = (0, _componentHelper.extendDeep)({}, _index.default[localeKey] || _index.default[_defaults.LOCALE], globalTranslation); baseCache = { globalTranslation, locale: localeKey, result }; return result; }, [globalTranslation, translationLocale]); return (0, _useTranslation.default)({ messages, fallbackLocale, base, warnLabel: 'Form.useTranslation' }); } //# sourceMappingURL=useTranslation.js.map