UNPKG

translate-maker

Version:

Lightweight translation module. Internationalize your great project.

66 lines (51 loc) 1.89 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = plural; var _find = _interopRequireDefault(require("lodash/find")); var _getPlural = _interopRequireDefault(require("../utils/getPlural")); function getValue(data, key, defaultValue) { var items = data || []; var option = (0, _find.default)(items, function (item) { return item.key === key; }); return option ? option.value : defaultValue; } function plural(value, part, attrs, metadata) { var _this$getOptions = this.getOptions(), locale = _this$getOptions.locale; var numberValue = Number(value); var currentPlural = (0, _getPlural.default)(locale, 'en'); var pluralValue = currentPlural(numberValue); var offset = getValue(metadata, 'offset', 0); var smartValue = offset ? numberValue - offset : value; // try to find exact value var exactKey = "=" + numberValue; var option = null; var defaultOption = null; for (var _len = arguments.length, args = new Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) { args[_key - 4] = arguments[_key]; } var exactOption = (0, _find.default)(args, function (arg) { if (arg.type !== 'pair') { return false; } var key = typeof arg.key === 'string' ? arg.key.toLowerCase() : arg.key; if (!key || key === 'other') { defaultOption = arg; } else if (key === exactKey) { return true; } else if (key === pluralValue) { option = arg; } return undefined; }); if (exactOption) { return this.buildText(exactOption.value, attrs, smartValue); } else if (option) { return this.buildText(option.value, attrs, smartValue); } else if (defaultOption) { return this.buildText(defaultOption.value, attrs, smartValue); } return undefined; } //# sourceMappingURL=plural.js.map