@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
61 lines (60 loc) • 2.12 kB
JavaScript
;
"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