"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getGettextBuilder = getGettextBuilder; require("core-js/modules/es.regexp.exec.js"); require("core-js/modules/es.string.replace.js"); require("core-js/modules/es.object.define-property.js"); require("core-js/modules/es.object.to-string.js"); require("core-js/modules/es.regexp.to-string.js"); var _nodeGettext = _interopRequireDefault(require("node-gettext")); var _ = require("."); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } var GettextBuilder = /*#__PURE__*/function () { function GettextBuilder() { _classCallCheck(this, GettextBuilder); this.translations = {}; this.debug = false; } _createClass(GettextBuilder, [{ key: "setLanguage", value: function setLanguage(language) { this.locale = language; return this; } }, { key: "detectLocale", value: function detectLocale() { return this.setLanguage((0, _.getLanguage)().replace('-', '_')); } }, { key: "addTranslation", value: function addTranslation(language, data) { this.translations[language] = data; return this; } }, { key: "enableDebugMode", value: function enableDebugMode() { this.debug = true; return this; } }, { key: "build", value: function build() { return new GettextWrapper(this.locale || 'en', this.translations, this.debug); } }]); return GettextBuilder; }(); var GettextWrapper = /*#__PURE__*/function () { function GettextWrapper(locale, data, debug) { _classCallCheck(this, GettextWrapper); this.gt = new _nodeGettext.default({ debug: debug, sourceLocale: 'en' }); for (var key in data) { this.gt.addTranslations(key, 'messages', data[key]); } this.gt.setLocale(locale); } _createClass(GettextWrapper, [{ key: "subtitudePlaceholders", value: function subtitudePlaceholders(translated, vars) { return translated.replace(/{([^{}]*)}/g, function (a, b) { var r = vars[b]; if (typeof r === 'string' || typeof r === 'number') { return r.toString(); } else { return a; } }); } }, { key: "gettext", value: function gettext(original) { var placeholders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return this.subtitudePlaceholders(this.gt.gettext(original), placeholders); } }, { key: "ngettext", value: function ngettext(singular, plural, count) { var placeholders = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; return this.subtitudePlaceholders(this.gt.ngettext(singular, plural, count).replace(/%n/g, count.toString()), placeholders); } }]); return GettextWrapper; }(); function getGettextBuilder() { return new GettextBuilder(); } //# sourceMappingURL=gettext.js.map