UNPKG

70 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@ngx-translate/core/lib/translate.loader.ts","ng://@ngx-translate/core/lib/missing-translation-handler.ts","ng://@ngx-translate/core/lib/util.ts","ng://@ngx-translate/core/lib/translate.parser.ts","ng://@ngx-translate/core/lib/translate.compiler.ts","ng://@ngx-translate/core/lib/translate.store.ts","ng://@ngx-translate/core/lib/translate.service.ts","ng://@ngx-translate/core/lib/translate.directive.ts","ng://@ngx-translate/core/lib/translate.pipe.ts","ng://@ngx-translate/core/public_api.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__values","o","m","Symbol","iterator","next","value","done","TranslateFakeLoader","_super","getTranslation","lang","of","Injectable","TranslateLoader","FakeMissingTranslationHandler","handle","params","key","equals","o1","o2","keySet","t1","isArray","isDefined","isObject","item","TranslateDefaultParser","_this","templateMatcher","interpolate","expr","interpolateString","interpolateFunction","getValue","target","keys","split","shift","undefined","fn","replace","substring","r","TranslateParser","TranslateFakeCompiler","compile","compileTranslations","translations","TranslateCompiler","TranslateStore","currentLang","defaultLang","langs","onTranslationChange","EventEmitter","onLangChange","onDefaultLangChange","USE_STORE","InjectionToken","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","store","currentLoader","compiler","parser","missingTranslationHandler","useDefaultLang","isolate","extend","defaultLanguage","pending","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","setDefaultLang","defineProperty","_defaultLang","_currentLang","retrieveTranslations","pipe","take","subscribe","res","changeDefaultLang","getDefaultLang","use","changeLang","loadingTranslations","shareReplay","map","updateLangs","error","err","setTranslation","shouldMerge","mergeDeep","source","output","forEach","_a","_b","emit","getLangs","addLangs","indexOf","push","getParsedResult","interpolateParams","result_1","observables","key_1","key_1_1","k","isObservable","sources","forkJoin","arr","obj","index","translateService","get","Error","concatMap","getStreamOnTranslationChange","concat","defer","switchMap","event","stream","instant","obj_1","set","reloadLang","resetLang","getBrowserLang","window","navigator","browserLang","languages","language","browserLanguage","userLanguage","getBrowserCultureLang","browserCultureLang","MissingTranslationHandler","Inject","args","TranslateDirective","element","_ref","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","currentParams","ngAfterViewChecked","forceUpdate","nodes","nativeElement","childNodes","setContent","node","nodeType","lastKey","lookupKey","content","getContent","trimmedContent","trim","currentValue","originalContent","updateValue","lastParams","onTranslation","markForCheck","textContent","data","ngOnDestroy","unsubscribe","Directive","selector","ElementRef","ChangeDetectorRef","Input","TranslatePipe","translate","transform","query","_i","validArgs","JSON","parse","e","SyntaxError","_dispose","Pipe","name","pure","TranslateModule","forRoot","config","ngModule","providers","loader","provide","useClass","useValue","forChild","NgModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n 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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {Injectable} from \"@angular/core\";\nimport {Observable, of} from \"rxjs\";\n\nexport abstract class TranslateLoader {\n abstract getTranslation(lang: string): Observable<any>;\n}\n\n/**\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\n */\n@Injectable()\nexport class TranslateFakeLoader extends TranslateLoader {\n getTranslation(lang: string): Observable<any> {\n return of({});\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {TranslateService} from \"./translate.service\";\n\nexport interface MissingTranslationHandlerParams {\n /**\n * the key that's missing in translation files\n */\n key: string;\n\n /**\n * an instance of the service that was unable to translate the key.\n */\n translateService: TranslateService;\n\n /**\n * interpolation params that were passed along for translating the given key.\n */\n interpolateParams?: Object;\n}\n\nexport abstract class MissingTranslationHandler {\n /**\n * A function that handles missing translations.\n *\n * @param params context for resolving a missing translation\n * @returns a value or an observable\n * If it returns a value, then this value is used.\n * If it return an observable, the value returned by this observable will be used (except if the method was \"instant\").\n * If it doesn't return then the key will be used as a value\n */\n abstract handle(params: MissingTranslationHandlerParams): any;\n}\n\n/**\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\n */\n@Injectable()\nexport class FakeMissingTranslationHandler implements MissingTranslationHandler {\n handle(params: MissingTranslationHandlerParams): string {\n return params.key;\n }\n}\n","/* tslint:disable */\n/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `equals`.\n *\n * @param o1 Object or value to compare.\n * @param o2 Object or value to compare.\n * @returns true if arguments are equal.\n */\nexport function equals(o1: any, o2: any): boolean {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n let t1 = typeof o1, t2 = typeof o2, length: number, key: any, keySet: any;\n if (t1 == t2 && t1 == 'object') {\n if (Array.isArray(o1)) {\n if (!Array.isArray(o2)) return false;\n if ((length = o1.length) == o2.length) {\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key])) return false;\n }\n return true;\n }\n } else {\n if (Array.isArray(o2)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in o1) {\n if (!equals(o1[key], o2[key])) {\n return false;\n }\n keySet[key] = true;\n }\n for (key in o2) {\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n}\n/* tslint:enable */\n\nexport function isDefined(value: any): boolean {\n return typeof value !== 'undefined' && value !== null;\n}\n\nexport function isObject(item: any): boolean {\n return (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target: any, source: any): any {\n let output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key: any) => {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, {[key]: source[key]});\n } else {\n output[key] = mergeDeep(target[key], source[key]);\n }\n } else {\n Object.assign(output, {[key]: source[key]});\n }\n });\n }\n return output;\n}\n","import {Injectable} from \"@angular/core\";\nimport {isDefined} from \"./util\";\n\nexport abstract class TranslateParser {\n /**\n * Interpolates a string to replace parameters\n * \"This is a {{ key }}\" ==> \"This is a value\", with params = { key: \"value\" }\n * @param expr\n * @param params\n */\n abstract interpolate(expr: string | Function, params?: any): string;\n\n /**\n * Gets a value from an object by composed key\n * parser.getValue({ key1: { keyA: 'valueI' }}, 'key1.keyA') ==> 'valueI'\n * @param target\n * @param key\n */\n abstract getValue(target: any, key: string): any\n}\n\n@Injectable()\nexport class TranslateDefaultParser extends TranslateParser {\n templateMatcher: RegExp = /{{\\s?([^{}\\s]*)\\s?}}/g;\n\n public interpolate(expr: string | Function, params?: any): string {\n let result: string;\n\n if (typeof expr === 'string') {\n result = this.interpolateString(expr, params);\n } else if (typeof expr === 'function') {\n result = this.interpolateFunction(expr, params);\n } else {\n // this should not happen, but an unrelated TranslateService test depends on it\n result = expr as string;\n }\n\n return result;\n }\n\n getValue(target: any, key: string): any {\n let keys = typeof key === 'string' ? key.split('.') : [key];\n key = '';\n do {\n key += keys.shift();\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\n target = target[key];\n key = '';\n } else if (!keys.length) {\n target = undefined;\n } else {\n key += '.';\n }\n } while (keys.length);\n\n return target;\n }\n\n private interpolateFunction(fn: Function, params?: any) {\n return fn(params);\n }\n\n private interpolateString(expr: string, params?: any) {\n if (!params) {\n return expr;\n }\n\n return expr.replace(this.templateMatcher, (substring: string, b: string) => {\n let r = this.getValue(params, b);\n return isDefined(r) ? r : substring;\n });\n }\n}\n","import {Injectable} from \"@angular/core\";\n\nexport abstract class TranslateCompiler {\n abstract compile(value: string, lang: string): string | Function;\n\n abstract compileTranslations(translations: any, lang: string): any;\n}\n\n/**\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\n */\n@Injectable()\nexport class TranslateFakeCompiler extends TranslateCompiler {\n compile(value: string, lang: string): string | Function {\n return value;\n }\n\n compileTranslations(translations: any, lang: string): any {\n return translations;\n }\n}\n","import {EventEmitter} from \"@angular/core\";\nimport {DefaultLangChangeEvent, LangChangeEvent, TranslationChangeEvent} from \"./translate.service\";\n\nexport class TranslateStore {\n /**\n * The default lang to fallback when translations are missing on the current lang\n */\n public defaultLang: string;\n\n /**\n * The lang currently used\n */\n public currentLang: string = this.defaultLang;\n\n /**\n * a list of translations per lang\n */\n public translations: any = {};\n\n /**\n * an array of langs\n */\n public langs: Array<string> = [];\n\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n public onTranslationChange: EventEmitter<TranslationChangeEvent> = new EventEmitter<TranslationChangeEvent>();\n\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n public onLangChange: EventEmitter<LangChangeEvent> = new EventEmitter<LangChangeEvent>();\n\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n public onDefaultLangChange: EventEmitter<DefaultLangChangeEvent> = new EventEmitter<DefaultLangChangeEvent>();\n}\n","import {EventEmitter, Inject, Injectable, InjectionToken} from \"@angular/core\";\nimport {concat, forkJoin, isObservable, Observable, of, defer} from \"rxjs\";\nimport {concatMap, map, shareReplay, switchMap, take} from \"rxjs/operators\";\nimport {MissingTranslationHandler, MissingTranslationHandlerParams} from \"./missing-translation-handler\";\nimport {TranslateCompiler} from \"./translate.compiler\";\nimport {TranslateLoader} from \"./translate.loader\";\nimport {TranslateParser} from \"./translate.parser\";\n\nimport {TranslateStore} from \"./translate.store\";\nimport {isDefined, mergeDeep} from \"./util\";\n\nexport const USE_STORE = new InjectionToken<string>('USE_STORE');\nexport const USE_DEFAULT_LANG = new InjectionToken<string>('USE_DEFAULT_LANG');\nexport const DEFAULT_LANGUAGE = new InjectionToken<string>('DEFAULT_LANGUAGE');\nexport const USE_EXTEND = new InjectionToken<string>('USE_EXTEND');\n\nexport interface TranslationChangeEvent {\n translations: any;\n lang: string;\n}\n\nexport interface LangChangeEvent {\n lang: string;\n translations: any;\n}\n\nexport interface DefaultLangChangeEvent {\n lang: string;\n translations: any;\n}\n\ndeclare interface Window {\n navigator: any;\n}\n\ndeclare const window: Window;\n\n@Injectable()\nexport class TranslateService {\n private loadingTranslations: Observable<any>;\n private pending: boolean = false;\n private _onTranslationChange: EventEmitter<TranslationChangeEvent> = new EventEmitter<TranslationChangeEvent>();\n private _onLangChange: EventEmitter<LangChangeEvent> = new EventEmitter<LangChangeEvent>();\n private _onDefaultLangChange: EventEmitter<DefaultLangChangeEvent> = new EventEmitter<DefaultLangChangeEvent>();\n private _defaultLang: string;\n private _currentLang: string;\n private _langs: Array<string> = [];\n private _translations: any = {};\n private _translationRequests: any = {};\n\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n get onTranslationChange(): EventEmitter<TranslationChangeEvent> {\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\n }\n\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n get onLangChange(): EventEmitter<LangChangeEvent> {\n return this.isolate ? this._onLangChange : this.store.onLangChange;\n }\n\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n get onDefaultLangChange() {\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\n }\n\n /**\n * The default lang to fallback when translations are missing on the current lang\n */\n get defaultLang(): string {\n return this.isolate ? this._defaultLang : this.store.defaultLang;\n }\n\n set defaultLang(defaultLang: string) {\n if (this.isolate) {\n this._defaultLang = defaultLang;\n } else {\n this.store.defaultLang = defaultLang;\n }\n }\n\n /**\n * The lang currently used\n */\n get currentLang(): string {\n return this.isolate ? this._currentLang : this.store.currentLang;\n }\n\n set currentLang(currentLang: string) {\n if (this.isolate) {\n this._currentLang = currentLang;\n } else {\n this.store.currentLang = currentLang;\n }\n }\n\n /**\n * an array of langs\n */\n get langs(): string[] {\n return this.isolate ? this._langs : this.store.langs;\n }\n\n set langs(langs: string[]) {\n if (this.isolate) {\n this._langs = langs;\n } else {\n this.store.langs = langs;\n }\n }\n\n /**\n * a list of translations per lang\n */\n get translations(): any {\n return this.isolate ? this._translations : this.store.translations;\n }\n\n set translations(translations: any) {\n if (this.isolate) {\n this._translations = translations;\n } else {\n this.store.translations = translations;\n }\n }\n\n /**\n *\n * @param store an instance of the store (that is supposed to be unique)\n * @param currentLoader An instance of the loader currently used\n * @param compiler An instance of the compiler currently used\n * @param parser An instance of the parser currently used\n * @param missingTranslationHandler A handler for missing translations.\n * @param useDefaultLang whether we should use default language translation when current language translation is missing.\n * @param isolate whether this service should use the store or not\n * @param extend To make a child module extend (and use) translations from parent modules.\n * @param defaultLanguage Set the default language using configuration\n */\n constructor(public store: TranslateStore,\n public currentLoader: TranslateLoader,\n public compiler: TranslateCompiler,\n public parser: TranslateParser,\n public missingTranslationHandler: MissingTranslationHandler,\n @Inject(USE_DEFAULT_LANG) private useDefaultLang: boolean = true,\n @Inject(USE_STORE) private isolate: boolean = false,\n @Inject(USE_EXTEND) private extend: boolean = false,\n @Inject(DEFAULT_LANGUAGE) defaultLanguage: string) {\n /** set the default language from configuration */\n if (defaultLanguage) {\n this.setDefaultLang(defaultLanguage);\n }\n }\n\n /**\n * Sets the default language to use as a fallback\n */\n public setDefaultLang(lang: string): void {\n if (lang === this.defaultLang) {\n return;\n }\n\n let pending: Observable<any> = this.retrieveTranslations(lang);\n\n if (typeof pending !== \"undefined\") {\n // on init set the defaultLang immediately\n if (this.defaultLang == null) {\n this.defaultLang = lang;\n }\n\n pending.pipe(take(1))\n .subscribe((res: any) => {\n this.changeDefaultLang(lang);\n });\n } else { // we already have this language\n this.changeDefaultLang(lang);\n }\n }\n\n /**\n * Gets the default language used\n */\n public getDefaultLang(): string {\n return this.defaultLang;\n }\n\n /**\n * Changes the lang currently used\n */\n public use(lang: string): Observable<any> {\n // don't change the language if the language given is already selected\n if (lang === this.currentLang) {\n return of(this.translations[lang]);\n }\n\n let pending: Observable<any> = this.retrieveTranslations(lang);\n\n if (typeof pending !== \"undefined\") {\n // on init set the currentLang immediately\n if (!this.currentLang) {\n this.currentLang = lang;\n }\n\n pending.pipe(take(1))\n .subscribe((res: any) => {\n this.changeLang(lang);\n });\n\n return pending;\n } else { // we have this language, return an Observable\n this.changeLang(lang);\n\n return of(this.translations[lang]);\n }\n }\n\n /**\n * Retrieves the given translations\n */\n private retrieveTranslations(lang: string): Observable<any> {\n let pending: Observable<any>;\n\n // if this language is unavailable or extend is true, ask for it\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\n pending = this._translationRequests[lang];\n }\n\n return pending;\n }\n\n /**\n * Gets an object of translations for a given language with the current loader\n * and passes it through the compiler\n */\n public getTranslation(lang: string): Observable<any> {\n this.pending = true;\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(\n shareReplay(1),\n take(1),\n );\n\n this.loadingTranslations = loadingTranslations.pipe(\n map((res: Object) => this.compiler.compileTranslations(res, lang)),\n shareReplay(1),\n take(1),\n );\n\n this.loadingTranslations\n .subscribe({\n next: (res: Object) => {\n this.translations[lang] = this.extend && this.translations[lang] ? { ...res, ...this.translations[lang] } : res;\n this.updateLangs();\n this.pending = false;\n },\n error: (err: any) => {\n this.pending = false;\n }\n });\n\n return loadingTranslations;\n }\n\n /**\n * Manually sets an object of translations for a given language\n * after passing it through the compiler\n */\n public setTranslation(lang: string, translations: Object, shouldMerge: boolean = false): void {\n translations = this.compiler.compileTranslations(translations, lang);\n if ((shouldMerge || this.extend) && this.translations[lang]) {\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\n } else {\n this.translations[lang] = translations;\n }\n this.updateLangs();\n this.onTranslationChange.emit({lang: lang, translations: this.translations[lang]});\n }\n\n /**\n * Returns an array of currently available langs\n */\n public getLangs(): Array<string> {\n return this.langs;\n }\n\n /**\n * Add available langs\n */\n public addLangs(langs: Array<string>): void {\n langs.forEach((lang: string) => {\n if (this.langs.indexOf(lang) === -1) {\n this.langs.push(lang);\n }\n });\n }\n\n /**\n * Update the list of available langs\n */\n private updateLangs(): void {\n this.addLangs(Object.keys(this.translations));\n }\n\n /**\n * Returns the parsed result of the translations\n */\n public getParsedResult(translations: any, key: any, interpolateParams?: Object): any {\n let res: string | Observable<string>;\n\n if (key instanceof Array) {\n let result: any = {},\n observables: boolean = false;\n for (let k of key) {\n result[k] = this.getParsedResult(translations, k, interpolateParams);\n if (isObservable(result[k])) {\n observables = true;\n }\n }\n if (observables) {\n const sources = key.map(k => isObservable(result[k]) ? result[k] : of(result[k] as string));\n return forkJoin(sources).pipe(\n map((arr: Array<string>) => {\n let obj: any = {};\n arr.forEach((value: string, index: number) => {\n obj[key[index]] = value;\n });\n return obj;\n })\n );\n }\n return result;\n }\n\n if (translations) {\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\n }\n\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\n }\n\n if (typeof res === \"undefined\") {\n let params: MissingTranslationHandlerParams = {key, translateService: this};\n if (typeof interpolateParams !== 'undefined') {\n params.interpolateParams = interpolateParams;\n }\n res = this.missingTranslationHandler.handle(params);\n }\n\n return typeof res !== \"undefined\" ? res : key;\n }\n\n /**\n * Gets the translated value of a key (or an array of keys)\n * @returns the translated key, or an object of translated keys\n */\n public get(key: string | Array<string>, interpolateParams?: Object): Observable<string | any> {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n // check if we are loading a new translation to use\n if (this.pending) {\n return this.loadingTranslations.pipe(\n concatMap((res: any) => {\n res = this.getParsedResult(res, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }),\n );\n } else {\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }\n }\n\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the translation changes.\n * @returns A stream of the translated key, or an object of translated keys\n */\n public getStreamOnTranslationChange(key: string | Array<string>, interpolateParams?: Object): Observable<string | any> {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n\n return concat(\n defer(() => this.get(key, interpolateParams)),\n this.onTranslationChange.pipe(\n switchMap((event: TranslationChangeEvent) => {\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n if (typeof res.subscribe === 'function') {\n return res;\n } else {\n return of(res);\n }\n })\n )\n );\n }\n\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the language changes.\n * @returns A stream of the translated key, or an object of translated keys\n */\n public stream(key: string | Array<string>, interpolateParams?: Object): Observable<string | any> {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n\n return concat(\n defer(() => this.get(key, interpolateParams)),\n this.onLangChange.pipe(\n switchMap((event: LangChangeEvent) => {\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n })\n ));\n }\n\n /**\n * Returns a translation instantly from the internal state of loaded translation.\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\n */\n public instant(key: string | Array<string>, interpolateParams?: Object): string | any {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n if (isObservable(res)) {\n if (key instanceof Array) {\n let obj: any = {};\n key.forEach((value: string, index: number) => {\n obj[key[index]] = key[index];\n });\n return obj;\n }\n return key;\n } else {\n return res;\n }\n }\n\n /**\n * Sets the translated value of a key, after compiling it\n */\n public set(key: string, value: string, lang: string = this.currentLang): void {\n this.translations[lang][key] = this.compiler.compile(value, lang);\n this.updateLangs();\n this.onTranslationChange.emit({lang: lang, translations: this.translations[lang]});\n }\n\n /**\n * Changes the current lang\n */\n private changeLang(lang: string): void {\n this.currentLang = lang;\n this.onLangChange.emit({lang: lang, translations: this.translations[lang]});\n\n // if there is no default lang, use the one that we just set\n if (this.defaultLang == null) {\n this.changeDefaultLang(lang);\n }\n }\n\n /**\n * Changes the default lang\n */\n private changeDefaultLang(lang: string): void {\n this.defaultLang = lang;\n this.onDefaultLangChange.emit({lang: lang, translations: this.translations[lang]});\n }\n\n /**\n * Allows to reload the lang file from the file\n */\n public reloadLang(lang: string): Observable<any> {\n this.resetLang(lang);\n return this.getTranslation(lang);\n }\n\n /**\n * Deletes inner translation\n */\n public resetLang(lang: string): void {\n this._translationRequests[lang] = undefined;\n this.translations[lang] = undefined;\n }\n\n /**\n * Returns the language code name from the browser, e.g. \"de\"\n */\n public getBrowserLang(): string {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n\n let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null;\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n\n if (typeof browserLang === 'undefined') {\n return undefined\n }\n\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0];\n }\n\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0];\n }\n\n return browserLang;\n }\n\n /**\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\n */\n public getBrowserCultureLang(): string {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n\n let browserCultureLang: any = window.navigator.languages ? window.navigator.languages[0] : null;\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n\n return browserCultureLang;\n }\n}\n","import {AfterViewChecked, ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy} from '@angular/core';\nimport {Subscription, isObservable} from 'rxjs';\nimport {DefaultLangChangeEvent, LangChangeEvent, TranslateService, TranslationChangeEvent} from './translate.service';\nimport {equals, isDefined} from './util';\n\n@Directive({\n selector: '[translate],[ngx-translate]'\n})\nexport class TranslateDirective implements AfterViewChecked, OnDestroy {\n key: string;\n lastParams: any;\n currentParams: any;\n onLangChangeSub: Subscription;\n onDefaultLangChangeSub: Subscription;\n onTranslationChangeSub: Subscription;\n\n @Input() set translate(key: string) {\n if (key) {\n this.key = key;\n this.checkNodes();\n }\n }\n\n @Input() set translateParams(params: any) {\n if (!equals(this.currentParams, params)) {\n this.currentParams = params;\n this.checkNodes(true);\n }\n }\n\n constructor(private translateService: TranslateService, private element: ElementRef, private _ref: ChangeDetectorRef) {\n // subscribe to onTranslationChange event, in case the translations of the current lang change\n if (!this.onTranslationChangeSub) {\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((event: TranslationChangeEvent) => {\n if (event.lang === this.translateService.currentLang) {\n this.checkNodes(true, event.translations);\n }\n });\n }\n\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChangeSub) {\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {\n this.checkNodes(true, event.translations);\n });\n }\n\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((event: DefaultLangChangeEvent) => {\n this.checkNodes(true);\n });\n }\n }\n\n ngAfterViewChecked() {\n this.checkNodes();\n }\n\n checkNodes(forceUpdate = false, translations?: any) {\n let nodes: NodeList = this.element.nativeElement.childNodes;\n // if the element is empty\n if (!nodes.length) {\n // we add the key as content\n this.setContent(this.element.nativeElement, this.key);\n nodes = this.element.nativeElement.childNodes;\n }\n for (let i = 0; i < nodes.length; ++i) {\n let node: any = nodes[i];\n if (node.nodeType === 3) { // node type 3 is a text node\n let key: string;\n if (forceUpdate) {\n node.lastKey = null;\n }\n if(isDefined(node.lookupKey)) {\n key = node.lookupKey;\n } else if (this.key) {\n key = this.key;\n } else {\n let content = this.getContent(node);\n let trimmedContent = content.trim();\n if (trimmedContent.length) {\n node.lookupKey = trimmedContent;\n // we want to use the content as a key, not the translation value\n if (content !== node.currentValue) {\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n } else if (node.originalContent) { // the content seems ok, but the lang has changed\n // the current content is the translation, not the key, use the last real content as key\n key = node.originalContent.trim();\n } else if (content !== node.currentValue) {\n // we want to use the content as a key, not the translation value\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n }\n }\n this.updateValue(key, node, translations);\n }\n }\n }\n\n updateValue(key: string, node: any, translations: any) {\n if (key) {\n if (node.lastKey === key && this.lastParams === this.currentParams) {\n return;\n }\n\n this.lastParams = this.currentParams;\n\n let onTranslation = (res: string) => {\n if (res !== key) {\n node.lastKey = key;\n }\n if (!node.originalContent) {\n node.originalContent = this.getContent(node);\n }\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\n // we replace in the original content to preserve spaces that we might have trimmed\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\n this._ref.markForCheck();\n };\n\n if (isDefined(translations)) {\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\n if (isObservable(res)) {\n res.subscribe(onTranslation);\n } else {\n onTranslation(res);\n }\n } else {\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\n }\n }\n }\n\n getContent(node: any): string {\n return isDefined(node.textContent) ? node.textContent : node.data;\n }\n\n setContent(node: any, content: string): void {\n if (isDefined(node.textContent)) {\n node.textContent = content;\n } else {\n node.data = content;\n }\n }\n\n ngOnDestroy() {\n if (this.onLangChangeSub) {\n this.onLangChangeSub.unsubscribe();\n }\n\n if (this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub.unsubscribe();\n }\n\n if (this.onTranslationChangeSub) {\n this.onTranslationChangeSub.unsubscribe();\n }\n }\n}\n","import {ChangeDetectorRef, EventEmitter, Injectable, OnDestroy, Pipe, PipeTransform} from '@angular/core';\nimport {isObservable} from 'rxjs';\nimport {DefaultLangChangeEvent, LangChangeEvent, TranslateService, TranslationChangeEvent} from './translate.service';\nimport {equals, isDefined} from './util';\nimport { Subscription } from 'rxjs';\n\n@Injectable()\n@Pipe({\n name: 'translate',\n pure: false // required to update the value when the promise is resolved\n})\nexport class TranslatePipe implements PipeTransform, OnDestroy {\n value: string = '';\n lastKey: string;\n lastParams: any[];\n onTranslationChange: Subscription;\n onLangChange: Subscription;\n onDefaultLangChange: Subscription;\n\n constructor(private translate: TranslateService, private _ref: ChangeDetectorRef) {\n }\n\n updateValue(key: string, interpolateParams?: Object, translations?: any): void {\n let onTranslation = (res: string) => {\n this.value = res !== undefined ? res : key;\n this.lastKey = key;\n this._ref.markForCheck();\n };\n if (translations) {\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\n if (isObservable(res.subscribe)) {\n res.subscribe(onTranslation);\n } else {\n onTranslation(res);\n }\n }\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\n }\n\n transform(query: string, ...args: any[]): any {\n if (!query || !query.length) {\n return query;\n }\n\n // if we ask another time for the same key, return the last value\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n return this.value;\n }\n\n let interpolateParams: Object;\n if (isDefined(args[0]) && args.length) {\n if (typeof args[0] === 'string' && args[0].length) {\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n let validArgs: string = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n try {\n interpolateParams = JSON.parse(validArgs);\n } catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n } else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n interpolateParams = args[0];\n }\n }\n\n // store the query, in case it changes\n this.lastKey = query;\n\n // store the params, in case they change\n this.lastParams = args;\n\n // set the value\n this.updateValue(query, interpolateParams);\n\n // if there is a subscription to onLangChange, clean it\n this._dispose();\n\n // subscribe to onTranslationChange event, in case the translations change\n if (!this.onTranslationChange) {\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((event: TranslationChangeEvent) => {\n if (this.lastKey && event.lang === this.translate.currentLang) {\n this.lastKey = null;\n this.updateValue(query, interpolateParams, event.translations);\n }\n });\n }\n\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChange) {\n this.onLangChange = this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams, event.translations);\n }\n });\n }\n\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChange) {\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe(() => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams);\n }\n });\n }\n\n return this.value;\n }\n\n /**\n * Clean any existing subscription to change events\n */\n private _dispose(): void {\n if (typeof this.onTranslationChange !== 'undefined') {\n this.onTranslationChange.unsubscribe();\n this.onTranslationChange = undefined;\n }\n if (typeof this.onLangChange !== 'undefined') {\n this.onLangChange.unsubscribe();\n this.onLangChange = undefined;\n }\n if (typeof this.onDefaultLangChange !== 'undefined') {\n this.onDefaultLangChange.unsubscribe();\n this.onDefaultLangChange = undefined;\n }\n }\n\n ngOnDestroy(): void {\n this._dispose();\n }\n}\n","import {NgModule, ModuleWithProviders, Provider} from \"@angular/core\";\nimport {TranslateLoader, TranslateFakeLoader} from \"./lib/translate.loader\";\nimport {MissingTranslationHandler, FakeMissingTranslationHandler} from \"./lib/missing-translation-handler\";\nimport {TranslateParser, TranslateDefaultParser} from \"./lib/translate.parser\";\nimport {TranslateCompiler, TranslateFakeCompiler} from \"./lib/translate.compiler\";\nimport {TranslateDirective} from \"./lib/translate.directive\";\nimport {TranslatePipe} from \"./lib/translate.pipe\";\nimport {TranslateStore} from \"./lib/translate.store\";\nimport {USE_DEFAULT_LANG, DEFAULT_LANGUAGE, USE_STORE, TranslateService, USE_EXTEND} from \"./lib/translate.service\";\n\nexport * from \"./lib/translate.loader\";\nexport * from \"./lib/translate.service\";\nexport * from \"./lib/missing-translation-handler\";\nexport * from \"./lib/translate.parser\";\nexport * from \"./lib/translate.compiler\";\nexport * from \"./lib/translate.directive\";\nexport * from \"./lib/translate.pipe\";\nexport * from \"./lib/translate.store\";\n\nexport interface TranslateModuleConfig {\n loader?: Provider;\n compiler?: Provider;\n parser?: Provider;\n missingTranslationHandler?: Provider;\n // isolate the service instance, only works for lazy loaded modules or components with the \"providers\" property\n isolate?: boolean;\n // extends translations for a given language instead of ignoring them if present\n extend?: boolean;\n useDefaultLang?: boolean;\n defaultLanguage?: string;\n}\n\n@NgModule({\n declarations: [\n TranslatePipe,\n TranslateDirective\n ],\n exports: [\n TranslatePipe,\n TranslateDirective\n ]\n})\nexport class TranslateModule {\n /**\n * Use this method in your root module to provide the TranslateService\n */\n static forRoot(config: TranslateModuleConfig = {}): ModuleWithProviders<TranslateModule> {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || {provide: TranslateLoader, useClass: TranslateFakeLoader},\n config.compiler || {provide: TranslateCompiler, useClass: TranslateFakeCompiler},\n config.parser || {provide: TranslateParser, useClass: TranslateDefaultParser},\n config.missingTranslationHandler || {provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler},\n TranslateStore,\n {provide: USE_STORE, useValue: config.isolate},\n {provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang},\n {provide: USE_EXTEND, useValue: config.extend},\n {provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage},\n TranslateService\n ]\n };\n }\n\n /**\n * Use this method in your other (non root) modules to import the directive/pipe\n */\n static forChild(config: TranslateModuleConfig = {}): ModuleWithProviders<TranslateModule> {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || {provide: TranslateLoader, useClass: TranslateFakeLoader},\n config.compiler || {provide: TranslateCompiler, useClass: TranslateFakeCompiler},\n config.parser || {provide: TranslateParser, useClass: TranslateDefaultParser},\n config.missingTranslationHandler || {provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler},\n {provide: USE_STORE, useValue: config.isolate},\n {provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang},\n {provide: USE_EXTEND, useValue: config.extend},\n {provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage},\n TranslateService\n ]\n };\n }\n}\n"]}
\No newline at end of file