UNPKG

ng2-translate

Version:

An implementation of angular translate for Angular 2

1,121 lines (1,057 loc) 133 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("@angular/core"), require("@angular/http"), require("rxjs/Observable"), require("rxjs/add/observable/of"), require("rxjs/add/operator/map"), require("rxjs/add/operator/merge"), require("rxjs/add/operator/share"), require("rxjs/add/operator/take"), require("rxjs/add/operator/toArray")); else if(typeof define === 'function' && define.amd) define(["@angular/core", "@angular/http", "rxjs/Observable", "rxjs/add/observable/of", "rxjs/add/operator/map", "rxjs/add/operator/merge", "rxjs/add/operator/share", "rxjs/add/operator/take", "rxjs/add/operator/toArray"], factory); else if(typeof exports === 'object') exports["ng2-translate"] = factory(require("@angular/core"), require("@angular/http"), require("rxjs/Observable"), require("rxjs/add/observable/of"), require("rxjs/add/operator/map"), require("rxjs/add/operator/merge"), require("rxjs/add/operator/share"), require("rxjs/add/operator/take"), require("rxjs/add/operator/toArray")); else root["ng2-translate"] = factory(root["@angular/core"], root["@angular/http"], root["rxjs/Observable"], root["rxjs/add/observable/of"], root["rxjs/add/operator/map"], root["rxjs/add/operator/merge"], root["rxjs/add/operator/share"], root["rxjs/add/operator/take"], root["rxjs/add/operator/toArray"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_9__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_11__, __WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_13__, __WEBPACK_EXTERNAL_MODULE_14__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // identity function for calling harmory imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmory exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 15); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_0__; /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_observable_of__ = __webpack_require__(9); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_observable_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_rxjs_add_observable_of__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_share__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_share___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_share__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rxjs_add_operator_map__ = __webpack_require__(10); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rxjs_add_operator_map___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_rxjs_add_operator_map__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_rxjs_add_operator_merge__ = __webpack_require__(11); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_rxjs_add_operator_merge___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_rxjs_add_operator_merge__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_rxjs_add_operator_toArray__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_rxjs_add_operator_toArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_rxjs_add_operator_toArray__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_rxjs_add_operator_take__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_rxjs_add_operator_take___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_rxjs_add_operator_take__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__translate_parser__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__util__ = __webpack_require__(2); /* harmony export (binding) */ __webpack_require__.d(exports, "d", function() { return MissingTranslationHandler; }); /* harmony export (binding) */ __webpack_require__.d(exports, "c", function() { return TranslateLoader; }); /* harmony export (binding) */ __webpack_require__.d(exports, "b", function() { return TranslateStaticLoader; }); /* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return TranslateService; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var MissingTranslationHandler = (function () { function MissingTranslationHandler() { } return MissingTranslationHandler; }()); var TranslateLoader = (function () { function TranslateLoader() { } return TranslateLoader; }()); var TranslateStaticLoader = (function () { function TranslateStaticLoader(http, prefix, suffix) { if (prefix === void 0) { prefix = "i18n"; } if (suffix === void 0) { suffix = ".json"; } this.http = http; this.prefix = prefix; this.suffix = suffix; } /** * Gets the translations from the server * @param lang * @returns {any} */ TranslateStaticLoader.prototype.getTranslation = function (lang) { return this.http.get(this.prefix + "/" + lang + this.suffix) .map(function (res) { return res.json(); }); }; return TranslateStaticLoader; }()); var TranslateService = (function () { /** * * @param currentLoader An instance of the loader currently used * @param parser An instance of the parser currently used * @param missingTranslationHandler A handler for missing translations. */ function TranslateService(currentLoader, parser, missingTranslationHandler) { this.currentLoader = currentLoader; this.parser = parser; this.missingTranslationHandler = missingTranslationHandler; /** * The lang currently used */ this.currentLang = this.defaultLang; /** * An EventEmitter to listen to translation change events * onTranslationChange.subscribe((params: TranslationChangeEvent) => { * // do something * }); * @type {EventEmitter<TranslationChangeEvent>} */ this.onTranslationChange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); /** * An EventEmitter to listen to lang change events * onLangChange.subscribe((params: LangChangeEvent) => { * // do something * }); * @type {EventEmitter<LangChangeEvent>} */ this.onLangChange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); /** * An EventEmitter to listen to default lang change events * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => { * // do something * }); * @type {EventEmitter<DefaultLangChangeEvent>} */ this.onDefaultLangChange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); this.translations = {}; this.langs = []; } /** * Sets the default language to use as a fallback * @param lang */ TranslateService.prototype.setDefaultLang = function (lang) { var _this = this; if (lang === this.defaultLang) { return; } var pending = this.retrieveTranslations(lang); if (typeof pending !== "undefined") { // on init set the defaultLang immediately if (!this.defaultLang) { this.defaultLang = lang; } pending.take(1) .subscribe(function (res) { _this.changeDefaultLang(lang); }); } else { this.changeDefaultLang(lang); } }; /** * Gets the default language used * @returns string */ TranslateService.prototype.getDefaultLang = function () { return this.defaultLang; }; /** * Changes the lang currently used * @param lang * @returns {Observable<*>} */ TranslateService.prototype.use = function (lang) { var _this = this; var pending = this.retrieveTranslations(lang); if (typeof pending !== "undefined") { // on init set the currentLang immediately if (!this.currentLang) { this.currentLang = lang; } pending.take(1) .subscribe(function (res) { _this.changeLang(lang); }); return pending; } else { this.changeLang(lang); return __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"].of(this.translations[lang]); } }; /** * Retrieves the given translations * @param lang * @returns {Observable<*>} */ TranslateService.prototype.retrieveTranslations = function (lang) { var pending; // if this language is unavailable, ask for it if (typeof this.translations[lang] === "undefined") { pending = this.getTranslation(lang); } return pending; }; /** * Gets an object of translations for a given language with the current loader * @param lang * @returns {Observable<*>} */ TranslateService.prototype.getTranslation = function (lang) { var _this = this; this.pending = this.currentLoader.getTranslation(lang).share(); this.pending.take(1) .subscribe(function (res) { _this.translations[lang] = res; _this.updateLangs(); _this.pending = undefined; }, function (err) { _this.pending = undefined; }); return this.pending; }; /** * Manually sets an object of translations for a given language * @param lang * @param translations * @param shouldMerge */ TranslateService.prototype.setTranslation = function (lang, translations, shouldMerge) { if (shouldMerge === void 0) { shouldMerge = false; } if (shouldMerge && this.translations[lang]) { Object.assign(this.translations[lang], translations); } else { this.translations[lang] = translations; } this.updateLangs(); this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] }); }; /** * Returns an array of currently available langs * @returns {any} */ TranslateService.prototype.getLangs = function () { return this.langs; }; /** * @param langs * Add available langs */ TranslateService.prototype.addLangs = function (langs) { var _this = this; langs.forEach(function (lang) { if (_this.langs.indexOf(lang) === -1) { _this.langs.push(lang); } }); }; /** * Update the list of available langs */ TranslateService.prototype.updateLangs = function () { this.addLangs(Object.keys(this.translations)); }; /** * Returns the parsed result of the translations * @param translations * @param key * @param interpolateParams * @returns {any} */ TranslateService.prototype.getParsedResult = function (translations, key, interpolateParams) { var res; if (key instanceof Array) { var result = {}, observables = false; for (var _i = 0, key_1 = key; _i < key_1.length; _i++) { var k = key_1[_i]; result[k] = this.getParsedResult(translations, k, interpolateParams); if (typeof result[k].subscribe === "function") { observables = true; } } if (observables) { var mergedObs = void 0; for (var _a = 0, key_2 = key; _a < key_2.length; _a++) { var k = key_2[_a]; var obs = typeof result[k].subscribe === "function" ? result[k] : __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"].of(result[k]); if (typeof mergedObs === "undefined") { mergedObs = obs; } else { mergedObs = mergedObs.merge(obs); } } return mergedObs.toArray().map(function (arr) { var obj = {}; arr.forEach(function (value, index) { obj[key[index]] = value; }); return obj; }); } return result; } if (translations) { res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams); } if (typeof res === "undefined" && this.defaultLang && this.defaultLang !== this.currentLang) { res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams); } if (!res && this.missingTranslationHandler) { var params = { key: key, translateService: this }; if (typeof interpolateParams !== 'undefined') { params.interpolateParams = interpolateParams; } res = this.missingTranslationHandler.handle(params); } return typeof res !== "undefined" ? res : key; }; /** * Gets the translated value of a key (or an array of keys) * @param key * @param interpolateParams * @returns {any} the translated key, or an object of translated keys */ TranslateService.prototype.get = function (key, interpolateParams) { var _this = this; if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_9__util__["a" /* isDefined */])(key) || !key.length) { throw new Error("Parameter \"key\" required"); } // check if we are loading a new translation to use if (this.pending) { return __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"].create(function (observer) { var onComplete = function (res) { observer.next(res); observer.complete(); }; var onError = function (err) { observer.error(err); }; _this.pending.subscribe(function (res) { res = _this.getParsedResult(res, key, interpolateParams); if (typeof res.subscribe === "function") { res.subscribe(onComplete, onError); } else { onComplete(res); } }, onError); }); } else { var res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams); if (typeof res.subscribe === "function") { return res; } else { return __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"].of(res); } } }; /** * Returns a translation instantly from the internal state of loaded translation. * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling. * @param key * @param interpolateParams * @returns {string} */ TranslateService.prototype.instant = function (key, interpolateParams) { if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_9__util__["a" /* isDefined */])(key) || !key.length) { throw new Error("Parameter \"key\" required"); } var res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams); if (typeof res.subscribe !== "undefined") { if (key instanceof Array) { var obj_1 = {}; key.forEach(function (value, index) { obj_1[key[index]] = key[index]; }); return obj_1; } return key; } else { return res; } }; /** * Sets the translated value of a key * @param key * @param value * @param lang */ TranslateService.prototype.set = function (key, value, lang) { if (lang === void 0) { lang = this.currentLang; } this.translations[lang][key] = value; this.updateLangs(); this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] }); }; /** * Changes the current lang * @param lang */ TranslateService.prototype.changeLang = function (lang) { this.currentLang = lang; this.onLangChange.emit({ lang: lang, translations: this.translations[lang] }); // if there is no default lang, use the one that we just set if (!this.defaultLang) { this.changeDefaultLang(lang); } }; /** * Changes the default lang * @param lang */ TranslateService.prototype.changeDefaultLang = function (lang) { this.defaultLang = lang; this.onDefaultLangChange.emit({ lang: lang, translations: this.translations[lang] }); }; /** * Allows to reload the lang file from the file * @param lang * @returns {Observable<any>} */ TranslateService.prototype.reloadLang = function (lang) { this.resetLang(lang); return this.getTranslation(lang); }; /** * Deletes inner translation * @param lang */ TranslateService.prototype.resetLang = function (lang) { this.translations[lang] = undefined; }; /** * Returns the language code name from the browser, e.g. "de" * * @returns string */ TranslateService.prototype.getBrowserLang = function () { if (typeof window === 'undefined' || typeof window.navigator === 'undefined') { return undefined; } var browserLang = window.navigator.languages ? window.navigator.languages[0] : null; browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage; if (browserLang.indexOf('-') !== -1) { browserLang = browserLang.split('-')[0]; } if (browserLang.indexOf('_') !== -1) { browserLang = browserLang.split('_')[0]; } return browserLang; }; /** * Returns the culture language code name from the browser, e.g. "de-DE" * * @returns string */ TranslateService.prototype.getBrowserCultureLang = function () { if (typeof window === 'undefined' || typeof window.navigator === 'undefined') { return undefined; } var browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null; browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage; return browserCultureLang; }; TranslateService = __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])(), __param(2, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Optional"])()), __metadata('design:paramtypes', [TranslateLoader, __WEBPACK_IMPORTED_MODULE_8__translate_parser__["a" /* TranslateParser */], MissingTranslationHandler]) ], TranslateService); return TranslateService; }()); /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { "use strict"; /* harmony export (immutable) */ exports["b"] = equals; /* harmony export (immutable) */ exports["a"] = isDefined; /* tslint:disable */ /** * @name equals * * @description * Determines if two objects or two values are equivalent. * * Two objects or values are considered equivalent if at least one of the following is true: * * * Both objects or values pass `===` comparison. * * Both objects or values are of the same type and all of their properties are equal by * comparing them with `equals`. * * @param {*} o1 Object or value to compare. * @param {*} o2 Object or value to compare. * @returns {boolean} True if arguments are equal. */ function equals(o1, o2) { if (o1 === o2) return true; if (o1 === null || o2 === null) return false; if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN var t1 = typeof o1, t2 = typeof o2, length, key, keySet; if (t1 == t2 && t1 == 'object') { if (Array.isArray(o1)) { if (!Array.isArray(o2)) return false; if ((length = o1.length) == o2.length) { for (key = 0; key < length; key++) { if (!equals(o1[key], o2[key])) return false; } return true; } } else { if (Array.isArray(o2)) { return false; } keySet = Object.create(null); for (key in o1) { if (!equals(o1[key], o2[key])) { return false; } keySet[key] = true; } for (key in o2) { if (!(key in keySet) && typeof o2[key] !== 'undefined') { return false; } } return true; } } return false; } /* tslint:enable */ function isDefined(value) { return typeof value !== 'undefined' && value !== null; } /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(2); /* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return TranslateParser; }); /* harmony export (binding) */ __webpack_require__.d(exports, "b", function() { return DefaultTranslateParser; }); var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var TranslateParser = (function () { function TranslateParser() { } return TranslateParser; }()); var DefaultTranslateParser = (function (_super) { __extends(DefaultTranslateParser, _super); function DefaultTranslateParser() { _super.apply(this, arguments); this.templateMatcher = /{{\s?([^{}\s]*)\s?}}/g; } DefaultTranslateParser.prototype.interpolate = function (expr, params) { var _this = this; if (typeof expr !== 'string' || !params) { return expr; } return expr.replace(this.templateMatcher, function (substring, b) { var r = _this.getValue(params, b); return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isDefined */])(r) ? r : substring; }); }; DefaultTranslateParser.prototype.getValue = function (target, key) { var keys = key.split('.'); key = ''; do { key += keys.shift(); if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isDefined */])(target) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isDefined */])(target[key]) && (typeof target[key] === 'object' || !keys.length)) { target = target[key]; key = ''; } else if (!keys.length) { target = undefined; } else { key += '.'; } } while (keys.length); return target; }; DefaultTranslateParser = __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])(), __metadata('design:paramtypes', []) ], DefaultTranslateParser); return DefaultTranslateParser; }(TranslateParser)); /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__translate_service__ = __webpack_require__(1); /* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return TranslateDirective; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var TranslateDirective = (function () { function TranslateDirective(translateService, element) { var _this = this; this.translateService = translateService; this.element = element; // subscribe to onTranslationChange event, in case the translations of the current lang change if (!this.onTranslationChangeSub) { this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe(function (event) { if (event.lang === _this.translateService.currentLang) { _this.checkNodes(true, event.translations); } }); } // subscribe to onLangChange event, in case the language changes if (!this.onLangChangeSub) { this.onLangChangeSub = this.translateService.onLangChange.subscribe(function (event) { _this.checkNodes(true, event.translations); }); } // subscribe to onDefaultLangChange event, in case the default language changes if (!this.onDefaultLangChangeSub) { this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe(function (event) { _this.checkNodes(true); }); } } Object.defineProperty(TranslateDirective.prototype, "translate", { set: function (key) { if (key) { this.key = key; this.checkNodes(); } }, enumerable: true, configurable: true }); TranslateDirective.prototype.ngAfterViewChecked = function () { this.checkNodes(); }; TranslateDirective.prototype.checkNodes = function (forceUpdate, translations) { if (forceUpdate === void 0) { forceUpdate = false; } var nodes = this.element.nativeElement.childNodes; for (var i = 0; i < nodes.length; ++i) { var node = nodes[i]; if (node.nodeType === 3) { var key = void 0; if (this.key) { key = this.key; } else { var content = node.textContent.trim(); if (content.length) { // we want to use the content as a key, not the translation value if (content !== node.currentValue) { key = content; // the content was changed from the user, we'll use it as a reference if needed node.originalContent = node.textContent; } else if (node.originalContent && forceUpdate) { node.lastKey = null; // the current content is the translation, not the key, use the last real content as key key = node.originalContent.trim(); } } } this.updateValue(key, node, translations); } } }; TranslateDirective.prototype.updateValue = function (key, node, translations) { var _this = this; if (key) { var interpolateParams = this.translateParams; if (node.lastKey === key && this.lastParams === interpolateParams) { return; } this.lastParams = interpolateParams; var onTranslation = function (res) { if (res !== key) { node.lastKey = key; } if (!node.originalContent) { node.originalContent = node.textContent; } node.currentValue = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isDefined */])(res) ? res : (node.originalContent || key); // we replace in the original content to preserve spaces that we might have trimmed node.textContent = _this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue); }; if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util__["a" /* isDefined */])(translations)) { var res = this.translateService.getParsedResult(translations, key, interpolateParams); if (typeof res.subscribe === "function") { res.subscribe(onTranslation); } else { onTranslation(res); } } else { this.translateService.get(key, interpolateParams).subscribe(onTranslation); } } }; TranslateDirective.prototype.ngOnDestroy = function () { if (this.onLangChangeSub) { this.onLangChangeSub.unsubscribe(); } if (this.onDefaultLangChangeSub) { this.onDefaultLangChangeSub.unsubscribe(); } if (this.onTranslationChangeSub) { this.onTranslationChangeSub.unsubscribe(); } }; __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), __metadata('design:type', String), __metadata('design:paramtypes', [String]) ], TranslateDirective.prototype, "translate", null); __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), __metadata('design:type', Object) ], TranslateDirective.prototype, "translateParams", void 0); TranslateDirective = __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Directive"])({ selector: '[translate],[ng2-translate]' }), __metadata('design:paramtypes', [__WEBPACK_IMPORTED_MODULE_2__translate_service__["a" /* TranslateService */], __WEBPACK_IMPORTED_MODULE_0__angular_core__["ElementRef"]]) ], TranslateDirective); return TranslateDirective; }()); /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__translate_service__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2); /* harmony export (binding) */ __webpack_require__.d(exports, "a", function() { return TranslatePipe; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var TranslatePipe = (function () { function TranslatePipe(translate, _ref) { this.translate = translate; this._ref = _ref; this.value = ''; } TranslatePipe.prototype.updateValue = function (key, interpolateParams, translations) { var _this = this; var onTranslation = function (res) { _this.value = res !== undefined ? res : key; _this.lastKey = key; _this._ref.markForCheck(); }; if (translations) { var res = this.translate.getParsedResult(translations, key, interpolateParams); if (typeof res.subscribe === 'function') { res.subscribe(onTranslation); } else { onTranslation(res); } } this.translate.get(key, interpolateParams).subscribe(onTranslation); }; TranslatePipe.prototype.transform = function (query) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (!query || query.length === 0) { return query; } // if we ask another time for the same key, return the last value if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__["b" /* equals */])(query, this.lastKey) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__["b" /* equals */])(args, this.lastParams)) { return this.value; } var interpolateParams; if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__["a" /* isDefined */])(args[0]) && args.length) { if (typeof args[0] === 'string' && args[0].length) { // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'} // which is why we might need to change it to real JSON objects such as {"n":1} or {"n":"v"} var validArgs = args[0] .replace(/(\')?([a-zA-Z0-9_]+)(\')?(\s)?:/g, '"$2":') .replace(/:(\s)?(\')(.*?)(\')/g, ':"$3"'); try { interpolateParams = JSON.parse(validArgs); } catch (e) { throw new SyntaxError("Wrong parameter in TranslatePipe. Expected a valid Object, received: " + args[0]); } } else if (typeof args[0] === 'object' && !Array.isArray(args[0])) { interpolateParams = args[0]; } } // store the query, in case it changes this.lastKey = query; // store the params, in case they change this.lastParams = args; // set the value this.updateValue(query, interpolateParams); // if there is a subscription to onLangChange, clean it this._dispose(); // subscribe to onTranslationChange event, in case the translations change if (!this.onTranslationChange) { this.onTranslationChange = this.translate.onTranslationChange.subscribe(function (event) { if (_this.lastKey && event.lang === _this.translate.currentLang) { _this.lastKey = null; _this.updateValue(query, interpolateParams, event.translations); } }); } // subscribe to onLangChange event, in case the language changes if (!this.onLangChange) { this.onLangChange = this.translate.onLangChange.subscribe(function (event) { if (_this.lastKey) { _this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated _this.updateValue(query, interpolateParams, event.translations); } }); } // subscribe to onDefaultLangChange event, in case the default language changes if (!this.onDefaultLangChange) { this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe(function () { if (_this.lastKey) { _this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated _this.updateValue(query, interpolateParams); } }); } return this.value; }; /** * Clean any existing subscription to change events * @private */ TranslatePipe.prototype._dispose = function () { if (typeof this.onTranslationChange !== 'undefined') { this.onTranslationChange.unsubscribe(); this.onTranslationChange = undefined; } if (typeof this.onLangChange !== 'undefined') { this.onLangChange.unsubscribe(); this.onLangChange = undefined; } if (typeof this.onDefaultLangChange !== 'undefined') { this.onDefaultLangChange.unsubscribe(); this.onDefaultLangChange = undefined; } }; TranslatePipe.prototype.ngOnDestroy = function () { this._dispose(); }; TranslatePipe = __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])(), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Pipe"])({ name: 'translate', pure: false // required to update the value when the promise is resolved }), __metadata('design:paramtypes', [__WEBPACK_IMPORTED_MODULE_1__translate_service__["a" /* TranslateService */], __WEBPACK_IMPORTED_MODULE_0__angular_core__["ChangeDetectorRef"]]) ], TranslatePipe); return TranslatePipe; }()); /***/ }, /* 6 */ /***/ function(module, exports, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__angular_http__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_translate_pipe__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_translate_parser__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_translate_service__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_translate_directive__ = __webpack_require__(4); /* harmony export (immutable) */ exports["a"] = translateLoaderFactory; /* harmony export (binding) */ __webpack_require__.d(exports, "b", function() { return TranslateModule; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "c", function() { return __WEBPACK_IMPORTED_MODULE_2__src_translate_pipe__["a"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "d", function() { return __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["d"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "e", function() { return __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["c"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "f", function() { return __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["b"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "g", function() { return __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["a"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "h", function() { return __WEBPACK_IMPORTED_MODULE_3__src_translate_parser__["a"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "i", function() { return __WEBPACK_IMPORTED_MODULE_3__src_translate_parser__["b"]; }); /* harmony namespace reexport (by used) */ __webpack_require__.d(exports, "j", function() { return __WEBPACK_IMPORTED_MODULE_5__src_translate_directive__["a"]; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; function translateLoaderFactory(http) { return new __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["b" /* TranslateStaticLoader */](http); } var TranslateModule = (function () { function TranslateModule() { } TranslateModule.forRoot = function (providedLoader) { if (providedLoader === void 0) { providedLoader = { provide: __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["c" /* TranslateLoader */], useFactory: translateLoaderFactory, deps: [__WEBPACK_IMPORTED_MODULE_1__angular_http__["Http"]] }; } return { ngModule: TranslateModule, providers: [ providedLoader, __WEBPACK_IMPORTED_MODULE_4__src_translate_service__["a" /* TranslateService */], { provide: __WEBPACK_IMPORTED_MODULE_3__src_translate_parser__["a" /* TranslateParser */], useClass: __WEBPACK_IMPORTED_MODULE_3__src_translate_parser__["b" /* DefaultTranslateParser */] } ] }; }; TranslateModule = __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["NgModule"])({ imports: [__WEBPACK_IMPORTED_MODULE_1__angular_http__["HttpModule"]], declarations: [ __WEBPACK_IMPORTED_MODULE_2__src_translate_pipe__["a" /* TranslatePipe */], __WEBPACK_IMPORTED_MODULE_5__src_translate_directive__["a" /* TranslateDirective */] ], exports: [ __WEBPACK_IMPORTED_MODULE_1__angular_http__["HttpModule"], __WEBPACK_IMPORTED_MODULE_2__src_translate_pipe__["a" /* TranslatePipe */], __WEBPACK_IMPORTED_MODULE_5__src_translate_directive__["a" /* TranslateDirective */] ] }), __metadata('design:paramtypes', []) ], TranslateModule); return TranslateModule; }()); /***/ }, /* 7 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_7__; /***/ }, /* 8 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_8__; /***/ }, /* 9 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_9__; /***/ }, /* 10 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_10__; /***/ }, /* 11 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_11__; /***/ }, /* 12 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_12__; /***/ }, /* 13 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_13__; /***/ }, /* 14 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_14__; /***/ }, /* 15 */ /***/ function(modul