UNPKG

67.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-translate-core.js","sources":["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"],"sourcesContent":["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"],"names":[],"mappings":"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"}
\No newline at end of file