UNPKG

react-i18nify

Version:

Simple i18n translation and localization components and helpers for React.

74 lines (55 loc) 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replace = exports.fetchTranslation = void 0; var _react = _interopRequireDefault(require("react")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var replace = function replace(translation, replacements) { if (typeof translation === 'string') { var result = translation; Object.keys(replacements).forEach(function (replacement) { var _replacements$replace; result = result.split("%{".concat(replacement, "}")).join((_replacements$replace = replacements[replacement]) !== null && _replacements$replace !== void 0 ? _replacements$replace : ''); }); return result; } if ( /*#__PURE__*/_react.default.isValidElement(translation)) { return translation; } if (_typeof(translation) === 'object') { var _result = {}; Object.keys(translation).forEach(function (translationKey) { _result[translationKey] = replace(translation[translationKey], replacements); }); return _result; } return null; }; exports.replace = replace; var fetchTranslation = function fetchTranslation(translations, key) { var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var _index = key.indexOf('.'); if (typeof translations === 'undefined') { throw new Error('not found'); } if (_index > -1) { return fetchTranslation(translations[key.substring(0, _index)], key.substr(_index + 1), count); } if (count !== null) { if (translations["".concat(key, "_").concat(count)]) { // when key = 'items_3' if count is 3 return translations["".concat(key, "_").concat(count)]; } if (count !== 1 && translations["".concat(key, "_plural")]) { // when count is not simply singular, return _plural return translations["".concat(key, "_plural")]; } } if (translations[key] != null) { return translations[key]; } throw new Error('not found'); }; exports.fetchTranslation = fetchTranslation;