UNPKG

translate-maker

Version:

Lightweight translation module. Internationalize your great project.

61 lines (49 loc) 1.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = plural; var _find = _interopRequireDefault(require("lodash/find")); var _getPlural = _interopRequireDefault(require("../utils/getPlural")); function getValue(data, key, defaultValue) { const items = data || []; const option = (0, _find.default)(items, item => item.key === key); return option ? option.value : defaultValue; } function plural(value, part, attrs, metadata, ...args) { const { locale } = this.getOptions(); const numberValue = Number(value); const currentPlural = (0, _getPlural.default)(locale, 'en'); const pluralValue = currentPlural(numberValue); const offset = getValue(metadata, 'offset', 0); const smartValue = offset ? numberValue - offset : value; // try to find exact value const exactKey = `=${numberValue}`; let option = null; let defaultOption = null; const exactOption = (0, _find.default)(args, arg => { if (arg.type !== 'pair') { return false; } const 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