UNPKG

ngx-translate-cache

Version:

ngx-translate extension to facilitate language cache.

1 lines 10.4 kB
{"version":3,"file":"ngx-translate-cache.mjs","sources":["../../../projects/ngx-translate-cache/src/lib/ngx-translate-cache.service.ts","../../../projects/ngx-translate-cache/src/lib/ngx-translate-cache.module.ts","../../../projects/ngx-translate-cache/src/public-api.ts","../../../projects/ngx-translate-cache/src/ngx-translate-cache.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { TranslateService, TranslationChangeEvent } from '@ngx-translate/core';\n\nexport type CacheMechanismType = 'LocalStorage' | 'Cookie';\nexport namespace CacheMechanism {\n export const LocalStorage: CacheMechanismType = 'LocalStorage';\n export const Cookie: CacheMechanismType = 'Cookie';\n}\n\nexport const CACHE_NAME = new InjectionToken<string>('CACHE_NAME');\nexport const CACHE_MECHANISM = new InjectionToken<string>('CACHE_MECHANISM');\nexport const COOKIE_EXPIRY = new InjectionToken<string>('COOKIE_EXPIRY');\nexport const COOKIE_ATTRIBUTES = new InjectionToken<string>('COOKIE_ATTRIBUTES');\n\nexport interface TranslateCacheConfig {\n cacheService: Provider;\n cacheName?: string;\n cacheMechanism?: CacheMechanismType;\n cookieExpiry?: number;\n cookieAttributes?: string;\n}\n\nconst DEFAULT_CACHE_NAME = 'lang';\nconst DEFAULT_CACHE_MECHANISM = CacheMechanism.LocalStorage;\nconst DEFAULT_COOKIE_EXPIRY = 720;\n\n@Injectable()\nexport class TranslateCacheSettings {\n constructor(@Inject(CACHE_NAME) public cacheName: string = DEFAULT_CACHE_NAME,\n @Inject(CACHE_MECHANISM) public cacheMechanism: string = DEFAULT_CACHE_MECHANISM,\n @Inject(COOKIE_EXPIRY) public cookieExpiry: number = DEFAULT_COOKIE_EXPIRY,\n @Inject(COOKIE_ATTRIBUTES) public cookieAttributes: string) {}\n}\n\n/* Not injectable */\nexport class TranslateCacheService {\n constructor(private translateService: TranslateService,\n private translateCacheSettings: TranslateCacheSettings) {}\n\n public init(): void {\n this.translateService.onLangChange\n .subscribe((event: TranslationChangeEvent) => {\n if (this.translateCacheSettings.cacheMechanism === CacheMechanism.LocalStorage) {\n return this.cacheWithLocalStorage(event.lang);\n }\n\n if (this.translateCacheSettings.cacheMechanism === CacheMechanism.Cookie) {\n return this.cacheWithCookies(event.lang);\n }\n });\n\n const currentLang = this.getCachedLanguage() || this.translateService.getBrowserLang();\n\n if (currentLang) { this.translateService.use(currentLang); }\n }\n\n public getCachedLanguage(): string {\n if (this.translateCacheSettings.cacheMechanism === CacheMechanism.LocalStorage) {\n return this.cacheWithLocalStorage();\n }\n\n if (this.translateCacheSettings.cacheMechanism === CacheMechanism.Cookie) {\n return this.cacheWithCookies();\n }\n }\n\n private cacheWithLocalStorage(value?: string): string {\n if (typeof window === 'undefined' || typeof window.localStorage === 'undefined') { return; }\n\n try {\n if (value) { window.localStorage.setItem(this.translateCacheSettings.cacheName, value); return; }\n\n return window.localStorage.getItem(this.translateCacheSettings.cacheName);\n } catch (e) { return; }\n }\n\n private cacheWithCookies(value?: string): string {\n if (typeof document === 'undefined' || typeof document.cookie === 'undefined') { return; }\n\n try {\n const name = encodeURIComponent(this.translateCacheSettings.cacheName);\n\n if (value) {\n let cookieString = `${name}=${encodeURIComponent(value)}`;\n\n if (this.translateCacheSettings.cookieExpiry >= 0) {\n const date: Date = new Date();\n\n date.setTime(date.getTime() + this.translateCacheSettings.cookieExpiry * 3600000);\n cookieString += `;expires=${date.toUTCString()}`;\n }\n\n if (this.translateCacheSettings.cookieAttributes) {\n cookieString += ';' + this.translateCacheSettings.cookieAttributes;\n }\n\n document.cookie = cookieString;\n\n return;\n }\n const regexp = new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\n const result = regexp.exec(document.cookie);\n\n return decodeURIComponent(result[1]);\n } catch (e) { return; }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateCacheConfig, CACHE_NAME, CACHE_MECHANISM, COOKIE_EXPIRY,\n COOKIE_ATTRIBUTES, TranslateCacheSettings } from './ngx-translate-cache.service';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [],\n exports: []\n})\nexport class TranslateCacheModule {\n static forRoot(config: TranslateCacheConfig): ModuleWithProviders<TranslateCacheModule> {\n return {\n ngModule: TranslateCacheModule,\n providers: [\n { provide: CACHE_NAME, useValue: config.cacheName },\n { provide: CACHE_MECHANISM, useValue: config.cacheMechanism },\n { provide: COOKIE_EXPIRY, useValue: config.cookieExpiry },\n { provide: COOKIE_ATTRIBUTES, useValue: config.cookieAttributes },\n TranslateCacheSettings,\n config.cacheService,\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-translate-cache\n */\n\nexport * from './lib/ngx-translate-cache.service';\nexport * from './lib/ngx-translate-cache.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}