UNPKG

react-i18next

Version:

Internationalization for react done right. Using the i18next i18n ecosystem.

58 lines (57 loc) • 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IcuTransWithoutContext = IcuTransWithoutContext; var _react = _interopRequireDefault(require("react")); var _utils = require("./utils.js"); var _i18nInstance = require("./i18nInstance.js"); var _index = require("./IcuTransUtils/index.js"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function IcuTransWithoutContext({ i18nKey, defaultTranslation, content, ns, values = {}, i18n: i18nFromProps, t: tFromProps }) { const i18n = i18nFromProps || (0, _i18nInstance.getI18n)(); if (!i18n) { (0, _utils.warnOnce)(i18n, 'NO_I18NEXT_INSTANCE', `IcuTrans: You need to pass in an i18next instance using i18nextReactModule`, { i18nKey }); return _react.default.createElement(_react.default.Fragment, {}, defaultTranslation); } const t = tFromProps || i18n.t?.bind(i18n) || (k => k); let namespaces = ns || t.ns || i18n.options?.defaultNS; namespaces = (0, _utils.isString)(namespaces) ? [namespaces] : namespaces || ['translation']; const mergedValues = { ...i18n.options?.interpolation?.defaultVariables, ...values }; const formatPlugin = (0, _utils.getFormatPlugin)(i18n); const escapeValues = formatPlugin ? !formatPlugin.options?.escapeVariables : i18n.options?.interpolation?.escapeValue === false; const translation = t(i18nKey || defaultTranslation, { defaultValue: defaultTranslation, ...(escapeValues && formatPlugin ? (0, _utils.escapeStringValues)(mergedValues) : mergedValues), ...(escapeValues && !formatPlugin && { interpolation: { escapeValue: true } }), ns: namespaces }); try { const rendered = (0, _index.renderTranslation)(translation, content); return _react.default.createElement(_react.default.Fragment, {}, ...rendered); } catch (error) { (0, _utils.warn)(i18n, 'ICU_TRANS_RENDER_ERROR', `IcuTrans component error for key "${i18nKey}": ${error.message}`, { i18nKey, error }); return _react.default.createElement(_react.default.Fragment, {}, translation); } } IcuTransWithoutContext.displayName = 'IcuTransWithoutContext';