@juice-js/localize 1.0.0-alpha.11 → 1.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/juice-js-localize.mjs +40 -49
- package/fesm2022/juice-js-localize.mjs.map +1 -1
- package/package.json +5 -6
- package/types/juice-js-localize.d.ts +97 -0
- package/esm2022/juice-js-localize.mjs +0 -5
- package/esm2022/lib/culture.component.mjs +0 -54
- package/esm2022/lib/localize.config.mjs +0 -9
- package/esm2022/lib/localize.module.mjs +0 -54
- package/esm2022/lib/localize.service.mjs +0 -43
- package/esm2022/lib/translate.api-loader.mjs +0 -15
- package/esm2022/lib/translate.missing-handler.mjs +0 -58
- package/esm2022/lib/url-helper.mjs +0 -35
- package/esm2022/public-api.mjs +0 -11
- package/index.d.ts +0 -5
- package/lib/culture.component.d.ts +0 -18
- package/lib/localize.config.d.ts +0 -12
- package/lib/localize.module.d.ts +0 -15
- package/lib/localize.service.d.ts +0 -18
- package/lib/translate.api-loader.d.ts +0 -13
- package/lib/translate.missing-handler.d.ts +0 -18
- package/lib/url-helper.d.ts +0 -12
- package/public-api.d.ts +0 -5
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1$2 from '@ngx-translate/core';
|
|
4
4
|
import { Observable, timer } from 'rxjs';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
|
-
import {
|
|
6
|
+
import { provideHttpClient, withXhr, withInterceptorsFromDi } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@angular/router';
|
|
8
8
|
import * as i5 from '@angular/material/select';
|
|
9
9
|
import { MatSelectModule } from '@angular/material/select';
|
|
10
|
-
import * as i6 from '@angular/
|
|
11
|
-
import { MatOptionModule } from '@angular/material/core';
|
|
12
|
-
import * as i7 from '@angular/common';
|
|
13
|
-
import { CommonModule } from '@angular/common';
|
|
14
|
-
import * as i8 from '@angular/forms';
|
|
10
|
+
import * as i6 from '@angular/forms';
|
|
15
11
|
import { FormsModule } from '@angular/forms';
|
|
12
|
+
import { CommonModule } from '@angular/common';
|
|
13
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
16
14
|
|
|
17
15
|
class LocalizeConfig {
|
|
18
16
|
constructor() {
|
|
@@ -51,15 +49,15 @@ class LocalizeService {
|
|
|
51
49
|
var apiUrl = `${this.options.localizeApi}/${scope}/${appName}`;
|
|
52
50
|
return this.http.post(apiUrl, data);
|
|
53
51
|
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
55
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LocalizeService, deps: [{ token: i1.HttpClient }, { token: LocalizeConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LocalizeService, providedIn: 'root' }); }
|
|
56
54
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LocalizeService, decorators: [{
|
|
58
56
|
type: Injectable,
|
|
59
57
|
args: [{
|
|
60
58
|
providedIn: 'root'
|
|
61
59
|
}]
|
|
62
|
-
}], ctorParameters:
|
|
60
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: LocalizeConfig }] });
|
|
63
61
|
|
|
64
62
|
class UrlHelper {
|
|
65
63
|
constructor(router) {
|
|
@@ -72,7 +70,9 @@ class UrlHelper {
|
|
|
72
70
|
});
|
|
73
71
|
}
|
|
74
72
|
getCurrentUrl() {
|
|
75
|
-
|
|
73
|
+
// Router.url can be undefined before the first navigation (Angular v20+);
|
|
74
|
+
// coalesce to an empty string so downstream string ops stay safe.
|
|
75
|
+
return this.router.url ?? '';
|
|
76
76
|
}
|
|
77
77
|
trimSlash(url) {
|
|
78
78
|
if (url.startsWith('/')) {
|
|
@@ -83,15 +83,15 @@ class UrlHelper {
|
|
|
83
83
|
}
|
|
84
84
|
return url;
|
|
85
85
|
}
|
|
86
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
87
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UrlHelper, deps: [{ token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
87
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UrlHelper, providedIn: 'root' }); }
|
|
88
88
|
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UrlHelper, decorators: [{
|
|
90
90
|
type: Injectable,
|
|
91
91
|
args: [{
|
|
92
92
|
providedIn: 'root'
|
|
93
93
|
}]
|
|
94
|
-
}], ctorParameters:
|
|
94
|
+
}], ctorParameters: () => [{ type: i1$1.Router }] });
|
|
95
95
|
|
|
96
96
|
class CultureComponent {
|
|
97
97
|
constructor(translate, localize, router, urlHelper) {
|
|
@@ -105,8 +105,8 @@ class CultureComponent {
|
|
|
105
105
|
});
|
|
106
106
|
let storedCulture = localStorage.getItem('culture');
|
|
107
107
|
console.debug("stored culture", storedCulture);
|
|
108
|
-
this.culture = storedCulture ? storedCulture : this.translate.
|
|
109
|
-
if (this.culture != this.translate.
|
|
108
|
+
this.culture = storedCulture ? storedCulture : (this.translate.getFallbackLang() ?? '');
|
|
109
|
+
if (this.culture != this.translate.getCurrentLang()) {
|
|
110
110
|
localStorage.setItem('culture', this.culture);
|
|
111
111
|
}
|
|
112
112
|
this.router.events.subscribe((event) => {
|
|
@@ -117,7 +117,7 @@ class CultureComponent {
|
|
|
117
117
|
}
|
|
118
118
|
loadTranslation() {
|
|
119
119
|
this.translate.use(this.culture);
|
|
120
|
-
if (this.culture != this.translate.
|
|
120
|
+
if (this.culture != this.translate.getFallbackLang()) {
|
|
121
121
|
console.debug("loading Translation", this.culture, this.urlHelper.page);
|
|
122
122
|
this.localize.fetch(this.culture, this.urlHelper.page).subscribe((data) => {
|
|
123
123
|
console.debug("loaded Translation", data);
|
|
@@ -129,13 +129,13 @@ class CultureComponent {
|
|
|
129
129
|
localStorage.setItem('culture', this.culture);
|
|
130
130
|
this.loadTranslation();
|
|
131
131
|
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CultureComponent, deps: [{ token: i1$2.TranslateService }, { token: LocalizeService }, { token: i1$1.Router }, { token: UrlHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CultureComponent, isStandalone: false, selector: "juice-culture-select", ngImport: i0, template: "<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n @for (culture of Cultures; track culture) {\n <mat-option [value]=\"culture.key\">\n {{culture.displayName}}\n </mat-option>\n }\n</mat-select>", dependencies: [{ kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CultureComponent, decorators: [{
|
|
136
136
|
type: Component,
|
|
137
|
-
args: [{ selector: 'juice-culture-select', template: "<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n
|
|
138
|
-
}], ctorParameters:
|
|
137
|
+
args: [{ selector: 'juice-culture-select', changeDetection: ChangeDetectionStrategy.Eager, standalone: false, template: "<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n @for (culture of Cultures; track culture) {\n <mat-option [value]=\"culture.key\">\n {{culture.displayName}}\n </mat-option>\n }\n</mat-select>" }]
|
|
138
|
+
}], ctorParameters: () => [{ type: i1$2.TranslateService }, { type: LocalizeService }, { type: i1$1.Router }, { type: UrlHelper }] });
|
|
139
139
|
|
|
140
140
|
class LocalizeModule {
|
|
141
141
|
static forRoot(config) {
|
|
@@ -150,35 +150,27 @@ class LocalizeModule {
|
|
|
150
150
|
]
|
|
151
151
|
};
|
|
152
152
|
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
154
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
155
|
-
MatSelectModule,
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LocalizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
154
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.6", ngImport: i0, type: LocalizeModule, declarations: [CultureComponent], imports: [MatSelectModule,
|
|
156
155
|
MatOptionModule,
|
|
157
156
|
CommonModule,
|
|
158
157
|
FormsModule], exports: [CultureComponent] }); }
|
|
159
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
160
|
-
MatSelectModule,
|
|
158
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LocalizeModule, providers: [provideHttpClient(withXhr(), withInterceptorsFromDi())], imports: [MatSelectModule,
|
|
161
159
|
MatOptionModule,
|
|
162
160
|
CommonModule,
|
|
163
161
|
FormsModule] }); }
|
|
164
162
|
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LocalizeModule, decorators: [{
|
|
166
164
|
type: NgModule,
|
|
167
|
-
args: [{
|
|
168
|
-
declarations: [
|
|
165
|
+
args: [{ declarations: [
|
|
169
166
|
CultureComponent,
|
|
170
167
|
],
|
|
171
|
-
imports: [
|
|
172
|
-
HttpClientModule,
|
|
173
|
-
MatSelectModule,
|
|
174
|
-
MatOptionModule,
|
|
175
|
-
CommonModule,
|
|
176
|
-
FormsModule
|
|
177
|
-
],
|
|
178
168
|
exports: [
|
|
179
169
|
CultureComponent
|
|
180
|
-
]
|
|
181
|
-
|
|
170
|
+
], imports: [MatSelectModule,
|
|
171
|
+
MatOptionModule,
|
|
172
|
+
CommonModule,
|
|
173
|
+
FormsModule], providers: [provideHttpClient(withXhr(), withInterceptorsFromDi())] }]
|
|
182
174
|
}] });
|
|
183
175
|
|
|
184
176
|
class SubmitMissingTranslationHandler {
|
|
@@ -190,9 +182,9 @@ class SubmitMissingTranslationHandler {
|
|
|
190
182
|
this.lastUpdate = new Date();
|
|
191
183
|
}
|
|
192
184
|
handle(params) {
|
|
193
|
-
if (this.keys.indexOf(params.key) < 0 && params.translateService.
|
|
194
|
-
&& params.translateService.
|
|
195
|
-
console.debug("missing translation", params.translateService.
|
|
185
|
+
if (this.keys.indexOf(params.key) < 0 && params.translateService.getCurrentLang() != null
|
|
186
|
+
&& params.translateService.getCurrentLang() != params.translateService.getFallbackLang()) {
|
|
187
|
+
console.debug("missing translation", params.translateService.getCurrentLang(), params.key);
|
|
196
188
|
this.keys.push(params.key);
|
|
197
189
|
timer(500).subscribe(() => this.checkForSubmit());
|
|
198
190
|
}
|
|
@@ -226,12 +218,12 @@ class SubmitMissingTranslationHandler {
|
|
|
226
218
|
});
|
|
227
219
|
}
|
|
228
220
|
}
|
|
229
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
230
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SubmitMissingTranslationHandler, deps: [{ token: LocalizeService }, { token: LocalizeConfig }, { token: UrlHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
222
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SubmitMissingTranslationHandler }); }
|
|
231
223
|
}
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: SubmitMissingTranslationHandler, decorators: [{
|
|
233
225
|
type: Injectable
|
|
234
|
-
}], ctorParameters:
|
|
226
|
+
}], ctorParameters: () => [{ type: LocalizeService }, { type: LocalizeConfig }, { type: UrlHelper }] });
|
|
235
227
|
|
|
236
228
|
class ScopedTranslateApiLoader {
|
|
237
229
|
constructor(service, urlHelper) {
|
|
@@ -244,7 +236,6 @@ class ScopedTranslateApiLoader {
|
|
|
244
236
|
getTranslation(lang) {
|
|
245
237
|
console.log("loading translation", lang, this.urlHelper.page);
|
|
246
238
|
return this.service.fetch(lang, this.urlHelper.page);
|
|
247
|
-
;
|
|
248
239
|
}
|
|
249
240
|
}
|
|
250
241
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"juice-js-localize.mjs","sources":["../../../../projects/juice-js/localize/src/lib/localize.config.ts","../../../../projects/juice-js/localize/src/lib/localize.service.ts","../../../../projects/juice-js/localize/src/lib/url-helper.ts","../../../../projects/juice-js/localize/src/lib/culture.component.ts","../../../../projects/juice-js/localize/src/lib/culture.component.html","../../../../projects/juice-js/localize/src/lib/localize.module.ts","../../../../projects/juice-js/localize/src/lib/translate.missing-handler.ts","../../../../projects/juice-js/localize/src/lib/translate.api-loader.ts","../../../../projects/juice-js/localize/src/public-api.ts","../../../../projects/juice-js/localize/src/juice-js-localize.ts"],"sourcesContent":["export class LocalizeConfig{\n submitMissing: boolean = false;\n appName: string = ''; // used for submit missing translation\n localizeApi: string = '';\n cultureApi: string = '';\n}\nexport interface ILocalizeConfig{\n submitMissing?: boolean;\n appName?: string;\n localizeApi: string;\n cultureApi: string;\n}","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { LocalizeConfig } from './localize.config';\nimport { Observable } from 'rxjs';\n\nexport interface CultureInfo{\n key: string,\n displayName: string,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizeService {\n\n constructor(private http:HttpClient, private options: LocalizeConfig) { }\n\n fetchCultures() {\n if(!this.options.cultureApi) return new Observable<CultureInfo[]>(function subscribe(observer) {});\n return this.http.get<CultureInfo[]>(this.options.cultureApi);\n }\n\n fetch(lang: string, page: string) {\n if(!this.options.localizeApi) return new Observable<Object>(function subscribe(observer) {});\n let scope = page.replace(/\\//g, '.');\n var apiUrl = `${this.options.localizeApi}/${lang}/${scope}`;\n \n return this.http.get(apiUrl);\n }\n\n submit(page: string, appName: string, data: any) {\n if(this.options.submitMissing == false || !this.options.localizeApi) {\n return new Observable(function subscribe(observer) {\n observer.next(data);\n observer.complete();\n });\n }\n let scope = page.replace(/\\//g, '.');\n var apiUrl = `${this.options.localizeApi}/${scope}/${appName}`;\n \n return this.http.post(apiUrl, data);\n }\n}\n","\nimport {Injectable} from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UrlHelper {\n url!: string;\n page!: string;\n\n constructor(private router: Router) {\n this.url = this.getCurrentUrl();\n this.page = this.trimSlash(this.url.split('?')[0]);\n this.router.events.subscribe((event) => {\n this.url = this.getCurrentUrl();\n this.page = this.trimSlash(this.url.split('?')[0]);\n });\n }\n\n getCurrentUrl(): string {\n return this.router.url;\n }\n\n trimSlash(url: string): string {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n if (url.endsWith('/')) {\n url = url.substring(0, url.length - 1);\n }\n return url;\n }\n}","import { Component } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CultureInfo, LocalizeService } from './localize.service';\nimport { Router } from '@angular/router';\nimport { UrlHelper } from './url-helper';\n\n@Component({\n selector: 'juice-culture-select',\n templateUrl: './culture.component.html',\n styles: [\n ]\n})\nexport class CultureComponent {\n Cultures: CultureInfo[] = [];\n culture!: string;\n constructor(private translate: TranslateService, \n private localize: LocalizeService,\n private router: Router,\n private urlHelper: UrlHelper) {\n\n this.localize.fetchCultures().subscribe(cultures => {\n this.Cultures = cultures;\n });\n\n let storedCulture = localStorage.getItem('culture');\n console.debug(\"stored culture\", storedCulture);\n this.culture = storedCulture ? storedCulture: this.translate.defaultLang;\n if(this.culture != this.translate.currentLang){\n localStorage.setItem('culture', this.culture);\n }\n \n this.router.events.subscribe((event) => {\n if(event.constructor.name == \"NavigationEnd\"){\n this.loadTranslation();\n }\n });\n }\n\n loadTranslation(){\n this.translate.use(this.culture);\n\n if(this.culture != this.translate.defaultLang){\n console.debug(\"loading Translation\", this.culture, this.urlHelper.page);\n\n this.localize.fetch(this.culture, this.urlHelper.page).subscribe((data) => {\n console.debug(\"loaded Translation\", data);\n this.translate.setTranslation(this.culture, data);\n });\n }\n }\n\n changeCulture(){\n localStorage.setItem('culture', this.culture);\n this.loadTranslation();\n }\n}\n","<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n <mat-option *ngFor=\"let culture of Cultures\" [value]=\"culture.key\">\n {{culture.displayName}}\n </mat-option>\n</mat-select>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CultureComponent } from './culture.component';\nimport { LocalizeConfig, ILocalizeConfig } from './localize.config';\nimport { LocalizeService } from './localize.service';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [\n CultureComponent,\n ],\n imports: [\n HttpClientModule,\n MatSelectModule,\n MatOptionModule,\n CommonModule,\n FormsModule\n ],\n exports: [\n CultureComponent\n ]\n})\nexport class LocalizeModule {\n public static forRoot(config: ILocalizeConfig): ModuleWithProviders<LocalizeModule> {\n\n return {\n ngModule: LocalizeModule,\n providers: [\n LocalizeService,\n {\n provide: LocalizeConfig,\n useValue: config\n }\n ]\n };\n }\n }\n","import {Injectable} from \"@angular/core\";\nimport {MissingTranslationHandler, MissingTranslationHandlerParams} from \"@ngx-translate/core\";\nimport { timer } from \"rxjs\";\nimport { LocalizeService } from \"./localize.service\";\nimport { UrlHelper } from \"./url-helper\";\nimport { LocalizeConfig } from \"./localize.config\";\n\n\n@Injectable()\nexport class SubmitMissingTranslationHandler implements MissingTranslationHandler {\n\n keys: Array<string> = [];\n lastUpdate: Date = new Date();\n constructor(private service: LocalizeService, \n private options: LocalizeConfig,\n private urlHeper: UrlHelper) {\n }\n\n handle(params: MissingTranslationHandlerParams): string {\n if(this.keys.indexOf(params.key) < 0 && params.translateService.currentLang != undefined\n && params.translateService.currentLang != params.translateService.defaultLang\n ){\n console.debug(\"missing translation\", params.translateService.currentLang, params.key);\n this.keys.push(params.key);\n timer(500).subscribe(()=>this.checkForSubmit());\n }\n return params.key;\n }\n\n checkForSubmit(){\n if(!this.lastUpdate || new Date().getTime() - this.lastUpdate.getTime()>500){\n this.lastUpdate = new Date();\n this.submit();\n }\n }\n submit(){\n if(this.keys.length > 0){\n let keys = this.keys;\n this.keys = [];\n var appName = this.options.appName;\n var page = this.urlHeper.page;\n \n this.service.submit(page, appName, keys)\n .subscribe({\n next: (data) => {\n console.debug(\"submited missing translation\", data);\n },\n error: (error) => {\n if(error.error && error.error == \"Not supported by server configuration\"){\n console.debug(error.error);\n }else{\n console.error(\"error submiting missing translation\", error);\n }\n }\n });\n }\n }\n}","import {TranslateLoader} from \"@ngx-translate/core\";\nimport {Observable, map} from 'rxjs';\nimport { UrlHelper } from \"./url-helper\";\nimport { LocalizeService } from \"./localize.service\";\n\nexport class ScopedTranslateApiLoader implements TranslateLoader {\n constructor(private service: LocalizeService, \n private urlHelper: UrlHelper\n ) {\n\n }\n\n /**\n * Gets the translations from the server\n */\n public getTranslation(lang: string): Observable<Object> {\n console.log(\"loading translation\", lang, this.urlHelper.page);\n return this.service.fetch(lang, this.urlHelper.page);;\n }\n\n}","/*\n * Public API Surface of localize\n */\n\n// export * from './lib/localize.service';\nexport * from './lib/culture.component';\nexport * from './lib/localize.module';\nexport * from './lib/localize.config';\nexport * from './lib/translate.missing-handler';\nexport * from './lib/translate.api-loader';\n// export * from './lib/url-helper';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.LocalizeConfig","i1","i2.LocalizeService","i3","i4.UrlHelper","i1.LocalizeService","i3.UrlHelper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"juice-js-localize.mjs","sources":["../../../../projects/juice-js/localize/src/lib/localize.config.ts","../../../../projects/juice-js/localize/src/lib/localize.service.ts","../../../../projects/juice-js/localize/src/lib/url-helper.ts","../../../../projects/juice-js/localize/src/lib/culture.component.ts","../../../../projects/juice-js/localize/src/lib/culture.component.html","../../../../projects/juice-js/localize/src/lib/localize.module.ts","../../../../projects/juice-js/localize/src/lib/translate.missing-handler.ts","../../../../projects/juice-js/localize/src/lib/translate.api-loader.ts","../../../../projects/juice-js/localize/src/public-api.ts","../../../../projects/juice-js/localize/src/juice-js-localize.ts"],"sourcesContent":["export class LocalizeConfig{\n submitMissing: boolean = false;\n appName: string = ''; // used for submit missing translation\n localizeApi: string = '';\n cultureApi: string = '';\n}\nexport interface ILocalizeConfig{\n submitMissing?: boolean;\n appName?: string;\n localizeApi: string;\n cultureApi: string;\n}","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { LocalizeConfig } from './localize.config';\nimport { Observable } from 'rxjs';\n\nexport interface CultureInfo{\n key: string,\n displayName: string,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizeService {\n\n constructor(private http:HttpClient, private options: LocalizeConfig) { }\n\n fetchCultures() {\n if(!this.options.cultureApi) return new Observable<CultureInfo[]>(function subscribe(observer) {});\n return this.http.get<CultureInfo[]>(this.options.cultureApi);\n }\n\n fetch(lang: string, page: string) {\n if(!this.options.localizeApi) return new Observable<Object>(function subscribe(observer) {});\n let scope = page.replace(/\\//g, '.');\n var apiUrl = `${this.options.localizeApi}/${lang}/${scope}`;\n \n return this.http.get(apiUrl);\n }\n\n submit(page: string, appName: string, data: any) {\n if(this.options.submitMissing == false || !this.options.localizeApi) {\n return new Observable(function subscribe(observer) {\n observer.next(data);\n observer.complete();\n });\n }\n let scope = page.replace(/\\//g, '.');\n var apiUrl = `${this.options.localizeApi}/${scope}/${appName}`;\n \n return this.http.post(apiUrl, data);\n }\n}\n","\nimport {Injectable} from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UrlHelper {\n url!: string;\n page!: string;\n\n constructor(private router: Router) {\n this.url = this.getCurrentUrl();\n this.page = this.trimSlash(this.url.split('?')[0]);\n this.router.events.subscribe((event) => {\n this.url = this.getCurrentUrl();\n this.page = this.trimSlash(this.url.split('?')[0]);\n });\n }\n\n getCurrentUrl(): string {\n // Router.url can be undefined before the first navigation (Angular v20+);\n // coalesce to an empty string so downstream string ops stay safe.\n return this.router.url ?? '';\n }\n\n trimSlash(url: string): string {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n if (url.endsWith('/')) {\n url = url.substring(0, url.length - 1);\n }\n return url;\n }\n}","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\nimport { CultureInfo, LocalizeService } from './localize.service';\nimport { Router } from '@angular/router';\nimport { UrlHelper } from './url-helper';\n\n@Component({\n selector: 'juice-culture-select',\n templateUrl: './culture.component.html',\n styles: [],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CultureComponent {\n Cultures: CultureInfo[] = [];\n culture!: string;\n constructor(private translate: TranslateService, \n private localize: LocalizeService,\n private router: Router,\n private urlHelper: UrlHelper) {\n\n this.localize.fetchCultures().subscribe(cultures => {\n this.Cultures = cultures;\n });\n\n let storedCulture = localStorage.getItem('culture');\n console.debug(\"stored culture\", storedCulture);\n this.culture = storedCulture ? storedCulture: (this.translate.getFallbackLang() ?? '');\n if(this.culture != this.translate.getCurrentLang()){\n localStorage.setItem('culture', this.culture);\n }\n \n this.router.events.subscribe((event) => {\n if(event.constructor.name == \"NavigationEnd\"){\n this.loadTranslation();\n }\n });\n }\n\n loadTranslation(){\n this.translate.use(this.culture);\n\n if(this.culture != this.translate.getFallbackLang()){\n console.debug(\"loading Translation\", this.culture, this.urlHelper.page);\n\n this.localize.fetch(this.culture, this.urlHelper.page).subscribe((data) => {\n console.debug(\"loaded Translation\", data);\n this.translate.setTranslation(this.culture, data as TranslationObject);\n });\n }\n }\n\n changeCulture(){\n localStorage.setItem('culture', this.culture);\n this.loadTranslation();\n }\n}\n","<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n @for (culture of Cultures; track culture) {\n <mat-option [value]=\"culture.key\">\n {{culture.displayName}}\n </mat-option>\n }\n</mat-select>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi, withXhr } from '@angular/common/http';\nimport { CultureComponent } from './culture.component';\nimport { LocalizeConfig, ILocalizeConfig } from './localize.config';\nimport { LocalizeService } from './localize.service';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({ declarations: [\n CultureComponent,\n ],\n exports: [\n CultureComponent\n ], imports: [MatSelectModule,\n MatOptionModule,\n CommonModule,\n FormsModule], providers: [provideHttpClient(withXhr(), withInterceptorsFromDi())] })\nexport class LocalizeModule {\n public static forRoot(config: ILocalizeConfig): ModuleWithProviders<LocalizeModule> {\n\n return {\n ngModule: LocalizeModule,\n providers: [\n LocalizeService,\n {\n provide: LocalizeConfig,\n useValue: config\n }\n ]\n };\n }\n }\n","import {Injectable} from \"@angular/core\";\nimport {MissingTranslationHandler, MissingTranslationHandlerParams} from \"@ngx-translate/core\";\nimport { timer } from \"rxjs\";\nimport { LocalizeService } from \"./localize.service\";\nimport { UrlHelper } from \"./url-helper\";\nimport { LocalizeConfig } from \"./localize.config\";\n\n\n@Injectable()\nexport class SubmitMissingTranslationHandler implements MissingTranslationHandler {\n\n keys: Array<string> = [];\n lastUpdate: Date = new Date();\n constructor(private service: LocalizeService, \n private options: LocalizeConfig,\n private urlHeper: UrlHelper) {\n }\n\n handle(params: MissingTranslationHandlerParams): string {\n if(this.keys.indexOf(params.key) < 0 && params.translateService.getCurrentLang() != null\n && params.translateService.getCurrentLang() != params.translateService.getFallbackLang()\n ){\n console.debug(\"missing translation\", params.translateService.getCurrentLang(), params.key);\n this.keys.push(params.key);\n timer(500).subscribe(()=>this.checkForSubmit());\n }\n return params.key;\n }\n\n checkForSubmit(){\n if(!this.lastUpdate || new Date().getTime() - this.lastUpdate.getTime()>500){\n this.lastUpdate = new Date();\n this.submit();\n }\n }\n submit(){\n if(this.keys.length > 0){\n let keys = this.keys;\n this.keys = [];\n var appName = this.options.appName;\n var page = this.urlHeper.page;\n \n this.service.submit(page, appName, keys)\n .subscribe({\n next: (data) => {\n console.debug(\"submited missing translation\", data);\n },\n error: (error) => {\n if(error.error && error.error == \"Not supported by server configuration\"){\n console.debug(error.error);\n }else{\n console.error(\"error submiting missing translation\", error);\n }\n }\n });\n }\n }\n}","import {TranslateLoader, TranslationObject} from \"@ngx-translate/core\";\nimport {Observable} from 'rxjs';\nimport { UrlHelper } from \"./url-helper\";\nimport { LocalizeService } from \"./localize.service\";\n\nexport class ScopedTranslateApiLoader implements TranslateLoader {\n constructor(private service: LocalizeService,\n private urlHelper: UrlHelper\n ) {\n\n }\n\n /**\n * Gets the translations from the server\n */\n public getTranslation(lang: string): Observable<TranslationObject> {\n console.log(\"loading translation\", lang, this.urlHelper.page);\n return this.service.fetch(lang, this.urlHelper.page) as Observable<TranslationObject>;\n }\n\n}","/*\n * Public API Surface of localize\n */\n\n// export * from './lib/localize.service';\nexport * from './lib/culture.component';\nexport * from './lib/localize.module';\nexport * from './lib/localize.config';\nexport * from './lib/translate.missing-handler';\nexport * from './lib/translate.api-loader';\n// export * from './lib/url-helper';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.LocalizeConfig","i1","i2.LocalizeService","i3","i4.UrlHelper","i1.LocalizeService","i3.UrlHelper"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juice-js/localize",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.13",
|
|
4
4
|
"description": "Localize your Angular app with remote translations",
|
|
5
5
|
"author": "jack@creatorflow.io",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,16 +22,15 @@
|
|
|
22
22
|
},
|
|
23
23
|
"sideEffects": false,
|
|
24
24
|
"module": "fesm2022/juice-js-localize.mjs",
|
|
25
|
-
"typings": "
|
|
25
|
+
"typings": "types/juice-js-localize.d.ts",
|
|
26
26
|
"exports": {
|
|
27
27
|
"./package.json": {
|
|
28
28
|
"default": "./package.json"
|
|
29
29
|
},
|
|
30
30
|
".": {
|
|
31
|
-
"types": "./
|
|
32
|
-
"esm2022": "./esm2022/juice-js-localize.mjs",
|
|
33
|
-
"esm": "./esm2022/juice-js-localize.mjs",
|
|
31
|
+
"types": "./types/juice-js-localize.d.ts",
|
|
34
32
|
"default": "./fesm2022/juice-js-localize.mjs"
|
|
35
33
|
}
|
|
36
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"type": "module"
|
|
37
36
|
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { TranslateService, MissingTranslationHandler, MissingTranslationHandlerParams, TranslateLoader, TranslationObject } from '@ngx-translate/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from '@angular/core';
|
|
5
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
6
|
+
import { Router } from '@angular/router';
|
|
7
|
+
import * as i2 from '@angular/material/select';
|
|
8
|
+
import * as i3 from '@angular/material/core';
|
|
9
|
+
import * as i4 from '@angular/common';
|
|
10
|
+
import * as i5 from '@angular/forms';
|
|
11
|
+
|
|
12
|
+
declare class LocalizeConfig {
|
|
13
|
+
submitMissing: boolean;
|
|
14
|
+
appName: string;
|
|
15
|
+
localizeApi: string;
|
|
16
|
+
cultureApi: string;
|
|
17
|
+
}
|
|
18
|
+
interface ILocalizeConfig {
|
|
19
|
+
submitMissing?: boolean;
|
|
20
|
+
appName?: string;
|
|
21
|
+
localizeApi: string;
|
|
22
|
+
cultureApi: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface CultureInfo {
|
|
26
|
+
key: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
}
|
|
29
|
+
declare class LocalizeService {
|
|
30
|
+
private http;
|
|
31
|
+
private options;
|
|
32
|
+
constructor(http: HttpClient, options: LocalizeConfig);
|
|
33
|
+
fetchCultures(): Observable<CultureInfo[]>;
|
|
34
|
+
fetch(lang: string, page: string): Observable<Object>;
|
|
35
|
+
submit(page: string, appName: string, data: any): Observable<unknown>;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizeService, never>;
|
|
37
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LocalizeService>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class UrlHelper {
|
|
41
|
+
private router;
|
|
42
|
+
url: string;
|
|
43
|
+
page: string;
|
|
44
|
+
constructor(router: Router);
|
|
45
|
+
getCurrentUrl(): string;
|
|
46
|
+
trimSlash(url: string): string;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UrlHelper, never>;
|
|
48
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<UrlHelper>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
declare class CultureComponent {
|
|
52
|
+
private translate;
|
|
53
|
+
private localize;
|
|
54
|
+
private router;
|
|
55
|
+
private urlHelper;
|
|
56
|
+
Cultures: CultureInfo[];
|
|
57
|
+
culture: string;
|
|
58
|
+
constructor(translate: TranslateService, localize: LocalizeService, router: Router, urlHelper: UrlHelper);
|
|
59
|
+
loadTranslation(): void;
|
|
60
|
+
changeCulture(): void;
|
|
61
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CultureComponent, never>;
|
|
62
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CultureComponent, "juice-culture-select", never, {}, {}, never, never, false, never>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
declare class LocalizeModule {
|
|
66
|
+
static forRoot(config: ILocalizeConfig): ModuleWithProviders<LocalizeModule>;
|
|
67
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizeModule, never>;
|
|
68
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<LocalizeModule, [typeof CultureComponent], [typeof i2.MatSelectModule, typeof i3.MatOptionModule, typeof i4.CommonModule, typeof i5.FormsModule], [typeof CultureComponent]>;
|
|
69
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<LocalizeModule>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
declare class SubmitMissingTranslationHandler implements MissingTranslationHandler {
|
|
73
|
+
private service;
|
|
74
|
+
private options;
|
|
75
|
+
private urlHeper;
|
|
76
|
+
keys: Array<string>;
|
|
77
|
+
lastUpdate: Date;
|
|
78
|
+
constructor(service: LocalizeService, options: LocalizeConfig, urlHeper: UrlHelper);
|
|
79
|
+
handle(params: MissingTranslationHandlerParams): string;
|
|
80
|
+
checkForSubmit(): void;
|
|
81
|
+
submit(): void;
|
|
82
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SubmitMissingTranslationHandler, never>;
|
|
83
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SubmitMissingTranslationHandler>;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
declare class ScopedTranslateApiLoader implements TranslateLoader {
|
|
87
|
+
private service;
|
|
88
|
+
private urlHelper;
|
|
89
|
+
constructor(service: LocalizeService, urlHelper: UrlHelper);
|
|
90
|
+
/**
|
|
91
|
+
* Gets the translations from the server
|
|
92
|
+
*/
|
|
93
|
+
getTranslation(lang: string): Observable<TranslationObject>;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export { CultureComponent, LocalizeConfig, LocalizeModule, ScopedTranslateApiLoader, SubmitMissingTranslationHandler };
|
|
97
|
+
export type { ILocalizeConfig };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVpY2UtanMtbG9jYWxpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9qdWljZS1qcy9sb2NhbGl6ZS9zcmMvanVpY2UtanMtbG9jYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@ngx-translate/core";
|
|
4
|
-
import * as i2 from "./localize.service";
|
|
5
|
-
import * as i3 from "@angular/router";
|
|
6
|
-
import * as i4 from "./url-helper";
|
|
7
|
-
import * as i5 from "@angular/material/select";
|
|
8
|
-
import * as i6 from "@angular/material/core";
|
|
9
|
-
import * as i7 from "@angular/common";
|
|
10
|
-
import * as i8 from "@angular/forms";
|
|
11
|
-
export class CultureComponent {
|
|
12
|
-
constructor(translate, localize, router, urlHelper) {
|
|
13
|
-
this.translate = translate;
|
|
14
|
-
this.localize = localize;
|
|
15
|
-
this.router = router;
|
|
16
|
-
this.urlHelper = urlHelper;
|
|
17
|
-
this.Cultures = [];
|
|
18
|
-
this.localize.fetchCultures().subscribe(cultures => {
|
|
19
|
-
this.Cultures = cultures;
|
|
20
|
-
});
|
|
21
|
-
let storedCulture = localStorage.getItem('culture');
|
|
22
|
-
console.debug("stored culture", storedCulture);
|
|
23
|
-
this.culture = storedCulture ? storedCulture : this.translate.defaultLang;
|
|
24
|
-
if (this.culture != this.translate.currentLang) {
|
|
25
|
-
localStorage.setItem('culture', this.culture);
|
|
26
|
-
}
|
|
27
|
-
this.router.events.subscribe((event) => {
|
|
28
|
-
if (event.constructor.name == "NavigationEnd") {
|
|
29
|
-
this.loadTranslation();
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
loadTranslation() {
|
|
34
|
-
this.translate.use(this.culture);
|
|
35
|
-
if (this.culture != this.translate.defaultLang) {
|
|
36
|
-
console.debug("loading Translation", this.culture, this.urlHelper.page);
|
|
37
|
-
this.localize.fetch(this.culture, this.urlHelper.page).subscribe((data) => {
|
|
38
|
-
console.debug("loaded Translation", data);
|
|
39
|
-
this.translate.setTranslation(this.culture, data);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
changeCulture() {
|
|
44
|
-
localStorage.setItem('culture', this.culture);
|
|
45
|
-
this.loadTranslation();
|
|
46
|
-
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CultureComponent, deps: [{ token: i1.TranslateService }, { token: i2.LocalizeService }, { token: i3.Router }, { token: i4.UrlHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CultureComponent, selector: "juice-culture-select", ngImport: i0, template: "<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n <mat-option *ngFor=\"let culture of Cultures\" [value]=\"culture.key\">\n {{culture.displayName}}\n </mat-option>\n</mat-select>", dependencies: [{ kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CultureComponent, decorators: [{
|
|
51
|
-
type: Component,
|
|
52
|
-
args: [{ selector: 'juice-culture-select', template: "<mat-select [style.width.px]=\"180\" [style.margin-left.px]=\"40\" [(ngModel)]=\"culture\" (ngModelChange)=\"changeCulture()\">\n <mat-option *ngFor=\"let culture of Cultures\" [value]=\"culture.key\">\n {{culture.displayName}}\n </mat-option>\n</mat-select>" }]
|
|
53
|
-
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.LocalizeService }, { type: i3.Router }, { type: i4.UrlHelper }]; } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VsdHVyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9qdWljZS1qcy9sb2NhbGl6ZS9zcmMvbGliL2N1bHR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvanVpY2UtanMvbG9jYWxpemUvc3JjL2xpYi9jdWx0dXJlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFZMUMsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFvQixTQUEyQixFQUNyQyxRQUF5QixFQUN6QixNQUFjLEVBQ2QsU0FBb0I7UUFIVixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUw5QixhQUFRLEdBQWtCLEVBQUUsQ0FBQztRQU8zQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUN6RSxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUM7WUFDNUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckMsSUFBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxlQUFlLEVBQUM7Z0JBQzNDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakMsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFDO1lBQzVDLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDeEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBMUNVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLDREQ1o3QiwrUUFJYTs7NEZEUUEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ3VsdHVyZUluZm8sIExvY2FsaXplU2VydmljZSB9IGZyb20gJy4vbG9jYWxpemUuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXJsSGVscGVyIH0gZnJvbSAnLi91cmwtaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnanVpY2UtY3VsdHVyZS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VsdHVyZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIEN1bHR1cmVDb21wb25lbnQge1xuICBDdWx0dXJlczogQ3VsdHVyZUluZm9bXSA9IFtdO1xuICBjdWx0dXJlITogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgXG4gICAgcHJpdmF0ZSBsb2NhbGl6ZTogTG9jYWxpemVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB1cmxIZWxwZXI6IFVybEhlbHBlcikge1xuXG4gICAgdGhpcy5sb2NhbGl6ZS5mZXRjaEN1bHR1cmVzKCkuc3Vic2NyaWJlKGN1bHR1cmVzID0+IHtcbiAgICAgIHRoaXMuQ3VsdHVyZXMgPSBjdWx0dXJlcztcbiAgICB9KTtcblxuICAgIGxldCBzdG9yZWRDdWx0dXJlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1bHR1cmUnKTtcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJzdG9yZWQgY3VsdHVyZVwiLCBzdG9yZWRDdWx0dXJlKTtcbiAgICAgIHRoaXMuY3VsdHVyZSA9IHN0b3JlZEN1bHR1cmUgPyBzdG9yZWRDdWx0dXJlOiB0aGlzLnRyYW5zbGF0ZS5kZWZhdWx0TGFuZztcbiAgICAgIGlmKHRoaXMuY3VsdHVyZSAhPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZyl7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjdWx0dXJlJywgdGhpcy5jdWx0dXJlKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYoZXZlbnQuY29uc3RydWN0b3IubmFtZSA9PSBcIk5hdmlnYXRpb25FbmRcIil7XG4gICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBsb2FkVHJhbnNsYXRpb24oKXtcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UodGhpcy5jdWx0dXJlKTtcblxuICAgIGlmKHRoaXMuY3VsdHVyZSAhPSB0aGlzLnRyYW5zbGF0ZS5kZWZhdWx0TGFuZyl7XG4gICAgICBjb25zb2xlLmRlYnVnKFwibG9hZGluZyBUcmFuc2xhdGlvblwiLCB0aGlzLmN1bHR1cmUsIHRoaXMudXJsSGVscGVyLnBhZ2UpO1xuXG4gICAgICB0aGlzLmxvY2FsaXplLmZldGNoKHRoaXMuY3VsdHVyZSwgdGhpcy51cmxIZWxwZXIucGFnZSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoXCJsb2FkZWQgVHJhbnNsYXRpb25cIiwgZGF0YSk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnNldFRyYW5zbGF0aW9uKHRoaXMuY3VsdHVyZSwgZGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VDdWx0dXJlKCl7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2N1bHR1cmUnLCB0aGlzLmN1bHR1cmUpO1xuICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKCk7XG4gIH1cbn1cbiIsIjxtYXQtc2VsZWN0IFtzdHlsZS53aWR0aC5weF09XCIxODBcIiBbc3R5bGUubWFyZ2luLWxlZnQucHhdPVwiNDBcIiBbKG5nTW9kZWwpXT1cImN1bHR1cmVcIiAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VDdWx0dXJlKClcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY3VsdHVyZSBvZiBDdWx0dXJlc1wiIFt2YWx1ZV09XCJjdWx0dXJlLmtleVwiPlxuICAgICAge3tjdWx0dXJlLmRpc3BsYXlOYW1lfX1cbiAgICA8L21hdC1vcHRpb24+XG48L21hdC1zZWxlY3Q+Il19
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export class LocalizeConfig {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.submitMissing = false;
|
|
4
|
-
this.appName = ''; // used for submit missing translation
|
|
5
|
-
this.localizeApi = '';
|
|
6
|
-
this.cultureApi = '';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvanVpY2UtanMvbG9jYWxpemUvc3JjL2xpYi9sb2NhbGl6ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFDSSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixZQUFPLEdBQVcsRUFBRSxDQUFDLENBQUMsc0NBQXNDO1FBQzVELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIExvY2FsaXplQ29uZmlne1xuICAgIHN1Ym1pdE1pc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJzsgLy8gdXNlZCBmb3Igc3VibWl0IG1pc3NpbmcgdHJhbnNsYXRpb25cbiAgICBsb2NhbGl6ZUFwaTogc3RyaW5nID0gJyc7XG4gICAgY3VsdHVyZUFwaTogc3RyaW5nID0gJyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElMb2NhbGl6ZUNvbmZpZ3tcbiAgICBzdWJtaXRNaXNzaW5nPzogYm9vbGVhbjtcbiAgICBhcHBOYW1lPzogc3RyaW5nO1xuICAgIGxvY2FsaXplQXBpOiBzdHJpbmc7XG4gICAgY3VsdHVyZUFwaTogc3RyaW5nO1xufSJdfQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
4
|
-
import { CultureComponent } from './culture.component';
|
|
5
|
-
import { LocalizeConfig } from './localize.config';
|
|
6
|
-
import { LocalizeService } from './localize.service';
|
|
7
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
8
|
-
import { MatOptionModule } from '@angular/material/core';
|
|
9
|
-
import { FormsModule } from '@angular/forms';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class LocalizeModule {
|
|
12
|
-
static forRoot(config) {
|
|
13
|
-
return {
|
|
14
|
-
ngModule: LocalizeModule,
|
|
15
|
-
providers: [
|
|
16
|
-
LocalizeService,
|
|
17
|
-
{
|
|
18
|
-
provide: LocalizeConfig,
|
|
19
|
-
useValue: config
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: LocalizeModule, declarations: [CultureComponent], imports: [HttpClientModule,
|
|
26
|
-
MatSelectModule,
|
|
27
|
-
MatOptionModule,
|
|
28
|
-
CommonModule,
|
|
29
|
-
FormsModule], exports: [CultureComponent] }); }
|
|
30
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizeModule, imports: [HttpClientModule,
|
|
31
|
-
MatSelectModule,
|
|
32
|
-
MatOptionModule,
|
|
33
|
-
CommonModule,
|
|
34
|
-
FormsModule] }); }
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizeModule, decorators: [{
|
|
37
|
-
type: NgModule,
|
|
38
|
-
args: [{
|
|
39
|
-
declarations: [
|
|
40
|
-
CultureComponent,
|
|
41
|
-
],
|
|
42
|
-
imports: [
|
|
43
|
-
HttpClientModule,
|
|
44
|
-
MatSelectModule,
|
|
45
|
-
MatOptionModule,
|
|
46
|
-
CommonModule,
|
|
47
|
-
FormsModule
|
|
48
|
-
],
|
|
49
|
-
exports: [
|
|
50
|
-
CultureComponent
|
|
51
|
-
]
|
|
52
|
-
}]
|
|
53
|
-
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvanVpY2UtanMvbG9jYWxpemUvc3JjL2xpYi9sb2NhbGl6ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0sbUJBQW1CLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWlCN0MsTUFBTSxPQUFPLGNBQWM7SUFDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUF1QjtRQUUzQyxPQUFPO1lBQ0gsUUFBUSxFQUFFLGNBQWM7WUFDeEIsU0FBUyxFQUFFO2dCQUNQLGVBQWU7Z0JBQ2Y7b0JBQ0ksT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLFFBQVEsRUFBRSxNQUFNO2lCQUNuQjthQUNKO1NBQ0osQ0FBQztJQUNKLENBQUM7K0dBYlUsY0FBYztnSEFBZCxjQUFjLGlCQWJ2QixnQkFBZ0IsYUFHaEIsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixlQUFlO1lBQ2YsWUFBWTtZQUNaLFdBQVcsYUFHWCxnQkFBZ0I7Z0hBR1AsY0FBYyxZQVZ2QixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGVBQWU7WUFDZixZQUFZO1lBQ1osV0FBVzs7NEZBTUYsY0FBYztrQkFmMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7cUJBQ2pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ3VsdHVyZUNvbXBvbmVudCB9IGZyb20gJy4vY3VsdHVyZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9jYWxpemVDb25maWcsIElMb2NhbGl6ZUNvbmZpZyB9IGZyb20gJy4vbG9jYWxpemUuY29uZmlnJztcbmltcG9ydCB7IExvY2FsaXplU2VydmljZSB9IGZyb20gJy4vbG9jYWxpemUuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ3VsdHVyZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEN1bHR1cmVDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZU1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IElMb2NhbGl6ZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TG9jYWxpemVNb2R1bGU+IHtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG5nTW9kdWxlOiBMb2NhbGl6ZU1vZHVsZSxcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICBMb2NhbGl6ZVNlcnZpY2UsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTG9jYWxpemVDb25maWcsXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcbiAgfVxuIH1cbiJdfQ==
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common/http";
|
|
5
|
-
import * as i2 from "./localize.config";
|
|
6
|
-
export class LocalizeService {
|
|
7
|
-
constructor(http, options) {
|
|
8
|
-
this.http = http;
|
|
9
|
-
this.options = options;
|
|
10
|
-
}
|
|
11
|
-
fetchCultures() {
|
|
12
|
-
if (!this.options.cultureApi)
|
|
13
|
-
return new Observable(function subscribe(observer) { });
|
|
14
|
-
return this.http.get(this.options.cultureApi);
|
|
15
|
-
}
|
|
16
|
-
fetch(lang, page) {
|
|
17
|
-
if (!this.options.localizeApi)
|
|
18
|
-
return new Observable(function subscribe(observer) { });
|
|
19
|
-
let scope = page.replace(/\//g, '.');
|
|
20
|
-
var apiUrl = `${this.options.localizeApi}/${lang}/${scope}`;
|
|
21
|
-
return this.http.get(apiUrl);
|
|
22
|
-
}
|
|
23
|
-
submit(page, appName, data) {
|
|
24
|
-
if (this.options.submitMissing == false || !this.options.localizeApi) {
|
|
25
|
-
return new Observable(function subscribe(observer) {
|
|
26
|
-
observer.next(data);
|
|
27
|
-
observer.complete();
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
let scope = page.replace(/\//g, '.');
|
|
31
|
-
var apiUrl = `${this.options.localizeApi}/${scope}/${appName}`;
|
|
32
|
-
return this.http.post(apiUrl, data);
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizeService, deps: [{ token: i1.HttpClient }, { token: i2.LocalizeConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizeService, providedIn: 'root' }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizeService, decorators: [{
|
|
38
|
-
type: Injectable,
|
|
39
|
-
args: [{
|
|
40
|
-
providedIn: 'root'
|
|
41
|
-
}]
|
|
42
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LocalizeConfig }]; } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2p1aWNlLWpzL2xvY2FsaXplL3NyYy9saWIvbG9jYWxpemUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFVbEMsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsSUFBZSxFQUFVLE9BQXVCO1FBQWhELFNBQUksR0FBSixJQUFJLENBQVc7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUFJLENBQUM7SUFFekUsYUFBYTtRQUNYLElBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksVUFBVSxDQUFnQixTQUFTLFNBQVMsQ0FBQyxRQUFRLElBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxJQUFZO1FBQzlCLElBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksVUFBVSxDQUFTLFNBQVMsU0FBUyxDQUFDLFFBQVEsSUFBRyxDQUFDLENBQUMsQ0FBQztRQUM3RixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUU1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxJQUFTO1FBQzdDLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDbkUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxRQUFRO2dCQUM3QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRS9ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBNUJVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IExvY2FsaXplQ29uZmlnIH0gZnJvbSAnLi9sb2NhbGl6ZS5jb25maWcnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1bHR1cmVJbmZve1xuICBrZXk6IHN0cmluZyxcbiAgZGlzcGxheU5hbWU6IHN0cmluZyxcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemVTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6SHR0cENsaWVudCwgcHJpdmF0ZSBvcHRpb25zOiBMb2NhbGl6ZUNvbmZpZykgeyB9XG5cbiAgZmV0Y2hDdWx0dXJlcygpIHtcbiAgICBpZighdGhpcy5vcHRpb25zLmN1bHR1cmVBcGkpIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxDdWx0dXJlSW5mb1tdPihmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHt9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDdWx0dXJlSW5mb1tdPih0aGlzLm9wdGlvbnMuY3VsdHVyZUFwaSk7XG4gIH1cblxuICBmZXRjaChsYW5nOiBzdHJpbmcsIHBhZ2U6IHN0cmluZykge1xuICAgIGlmKCF0aGlzLm9wdGlvbnMubG9jYWxpemVBcGkpIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxPYmplY3Q+KGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge30pO1xuICAgIGxldCBzY29wZSA9IHBhZ2UucmVwbGFjZSgvXFwvL2csICcuJyk7XG4gICAgdmFyIGFwaVVybCA9IGAke3RoaXMub3B0aW9ucy5sb2NhbGl6ZUFwaX0vJHtsYW5nfS8ke3Njb3BlfWA7XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYXBpVXJsKTtcbiAgfVxuXG4gIHN1Ym1pdChwYWdlOiBzdHJpbmcsIGFwcE5hbWU6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgaWYodGhpcy5vcHRpb25zLnN1Ym1pdE1pc3NpbmcgPT0gZmFsc2UgfHwgIXRoaXMub3B0aW9ucy5sb2NhbGl6ZUFwaSkge1xuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoZGF0YSk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgc2NvcGUgPSBwYWdlLnJlcGxhY2UoL1xcLy9nLCAnLicpO1xuICAgIHZhciBhcGlVcmwgPSBgJHt0aGlzLm9wdGlvbnMubG9jYWxpemVBcGl9LyR7c2NvcGV9LyR7YXBwTmFtZX1gO1xuICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlVcmwsIGRhdGEpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export class ScopedTranslateApiLoader {
|
|
2
|
-
constructor(service, urlHelper) {
|
|
3
|
-
this.service = service;
|
|
4
|
-
this.urlHelper = urlHelper;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Gets the translations from the server
|
|
8
|
-
*/
|
|
9
|
-
getTranslation(lang) {
|
|
10
|
-
console.log("loading translation", lang, this.urlHelper.page);
|
|
11
|
-
return this.service.fetch(lang, this.urlHelper.page);
|
|
12
|
-
;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmFwaS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9qdWljZS1qcy9sb2NhbGl6ZS9zcmMvbGliL3RyYW5zbGF0ZS5hcGktbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBb0IsT0FBd0IsRUFDbEMsU0FBb0I7UUFEVixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFXO0lBRzVCLENBQUM7SUFFSDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxJQUFZO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDeEQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVMb2FkZXJ9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQge09ic2VydmFibGUsIG1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVcmxIZWxwZXIgfSBmcm9tIFwiLi91cmwtaGVscGVyXCI7XG5pbXBvcnQgeyBMb2NhbGl6ZVNlcnZpY2UgfSBmcm9tIFwiLi9sb2NhbGl6ZS5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTY29wZWRUcmFuc2xhdGVBcGlMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IExvY2FsaXplU2VydmljZSwgXG4gICAgcHJpdmF0ZSB1cmxIZWxwZXI6IFVybEhlbHBlclxuICAgICkge1xuXG4gICAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSB0aGUgc2VydmVyXG4gICAqL1xuICBwdWJsaWMgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcbiAgICBjb25zb2xlLmxvZyhcImxvYWRpbmcgdHJhbnNsYXRpb25cIiwgbGFuZywgdGhpcy51cmxIZWxwZXIucGFnZSk7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5mZXRjaChsYW5nLCB0aGlzLnVybEhlbHBlci5wYWdlKTs7XG4gIH1cblxufSJdfQ==
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { timer } from "rxjs";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./localize.service";
|
|
5
|
-
import * as i2 from "./localize.config";
|
|
6
|
-
import * as i3 from "./url-helper";
|
|
7
|
-
export class SubmitMissingTranslationHandler {
|
|
8
|
-
constructor(service, options, urlHeper) {
|
|
9
|
-
this.service = service;
|
|
10
|
-
this.options = options;
|
|
11
|
-
this.urlHeper = urlHeper;
|
|
12
|
-
this.keys = [];
|
|
13
|
-
this.lastUpdate = new Date();
|
|
14
|
-
}
|
|
15
|
-
handle(params) {
|
|
16
|
-
if (this.keys.indexOf(params.key) < 0 && params.translateService.currentLang != undefined
|
|
17
|
-
&& params.translateService.currentLang != params.translateService.defaultLang) {
|
|
18
|
-
console.debug("missing translation", params.translateService.currentLang, params.key);
|
|
19
|
-
this.keys.push(params.key);
|
|
20
|
-
timer(500).subscribe(() => this.checkForSubmit());
|
|
21
|
-
}
|
|
22
|
-
return params.key;
|
|
23
|
-
}
|
|
24
|
-
checkForSubmit() {
|
|
25
|
-
if (!this.lastUpdate || new Date().getTime() - this.lastUpdate.getTime() > 500) {
|
|
26
|
-
this.lastUpdate = new Date();
|
|
27
|
-
this.submit();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
submit() {
|
|
31
|
-
if (this.keys.length > 0) {
|
|
32
|
-
let keys = this.keys;
|
|
33
|
-
this.keys = [];
|
|
34
|
-
var appName = this.options.appName;
|
|
35
|
-
var page = this.urlHeper.page;
|
|
36
|
-
this.service.submit(page, appName, keys)
|
|
37
|
-
.subscribe({
|
|
38
|
-
next: (data) => {
|
|
39
|
-
console.debug("submited missing translation", data);
|
|
40
|
-
},
|
|
41
|
-
error: (error) => {
|
|
42
|
-
if (error.error && error.error == "Not supported by server configuration") {
|
|
43
|
-
console.debug(error.error);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
console.error("error submiting missing translation", error);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitMissingTranslationHandler, deps: [{ token: i1.LocalizeService }, { token: i2.LocalizeConfig }, { token: i3.UrlHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitMissingTranslationHandler }); }
|
|
54
|
-
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitMissingTranslationHandler, decorators: [{
|
|
56
|
-
type: Injectable
|
|
57
|
-
}], ctorParameters: function () { return [{ type: i1.LocalizeService }, { type: i2.LocalizeConfig }, { type: i3.UrlHelper }]; } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLm1pc3NpbmctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2p1aWNlLWpzL2xvY2FsaXplL3NyYy9saWIvdHJhbnNsYXRlLm1pc3NpbmctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzdCLE1BQU0sT0FBTywrQkFBK0I7SUFJMUMsWUFBb0IsT0FBd0IsRUFDbEMsT0FBdUIsRUFDdkIsUUFBbUI7UUFGVCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBSjdCLFNBQUksR0FBa0IsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBSTlCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBdUM7UUFDNUMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksU0FBUztlQUNuRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQzlFO1lBQ0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFFLEVBQUUsQ0FBQSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBQyxHQUFHLEVBQUM7WUFDMUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUNELE1BQU07UUFDSixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN0QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDbkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFFOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7aUJBQ3JDLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLElBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLHVDQUF1QyxFQUFDO3dCQUN2RSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDNUI7eUJBQUk7d0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDN0Q7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQzsrR0EvQ1UsK0JBQStCO21IQUEvQiwrQkFBK0I7OzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge01pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsIE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXJQYXJhbXN9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyB0aW1lciB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6ZVNlcnZpY2UgfSBmcm9tIFwiLi9sb2NhbGl6ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBVcmxIZWxwZXIgfSBmcm9tIFwiLi91cmwtaGVscGVyXCI7XG5pbXBvcnQgeyBMb2NhbGl6ZUNvbmZpZyB9IGZyb20gXCIuL2xvY2FsaXplLmNvbmZpZ1wiO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdWJtaXRNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyIGltcGxlbWVudHMgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciB7XG5cbiAga2V5czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBsYXN0VXBkYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBMb2NhbGl6ZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgb3B0aW9uczogTG9jYWxpemVDb25maWcsXG4gICAgcHJpdmF0ZSB1cmxIZXBlcjogVXJsSGVscGVyKSB7XG4gIH1cblxuICBoYW5kbGUocGFyYW1zOiBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyUGFyYW1zKTogc3RyaW5nIHtcbiAgICBpZih0aGlzLmtleXMuaW5kZXhPZihwYXJhbXMua2V5KSA8IDAgJiYgcGFyYW1zLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgIT0gdW5kZWZpbmVkXG4gICAgICAmJiBwYXJhbXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyAhPSBwYXJhbXMudHJhbnNsYXRlU2VydmljZS5kZWZhdWx0TGFuZ1xuICAgICl7XG4gICAgICBjb25zb2xlLmRlYnVnKFwibWlzc2luZyB0cmFuc2xhdGlvblwiLCBwYXJhbXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZywgcGFyYW1zLmtleSk7XG4gICAgICB0aGlzLmtleXMucHVzaChwYXJhbXMua2V5KTtcbiAgICAgIHRpbWVyKDUwMCkuc3Vic2NyaWJlKCgpPT50aGlzLmNoZWNrRm9yU3VibWl0KCkpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zLmtleTtcbiAgfVxuXG4gIGNoZWNrRm9yU3VibWl0KCl7XG4gICAgaWYoIXRoaXMubGFzdFVwZGF0ZSB8fCBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMubGFzdFVwZGF0ZS5nZXRUaW1lKCk+NTAwKXtcbiAgICAgIHRoaXMubGFzdFVwZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cbiAgfVxuICBzdWJtaXQoKXtcbiAgICBpZih0aGlzLmtleXMubGVuZ3RoID4gMCl7XG4gICAgICBsZXQga2V5cyA9IHRoaXMua2V5cztcbiAgICAgIHRoaXMua2V5cyA9IFtdO1xuICAgICAgdmFyIGFwcE5hbWUgPSB0aGlzLm9wdGlvbnMuYXBwTmFtZTtcbiAgICAgIHZhciBwYWdlID0gdGhpcy51cmxIZXBlci5wYWdlO1xuICAgICAgXG4gICAgICB0aGlzLnNlcnZpY2Uuc3VibWl0KHBhZ2UsIGFwcE5hbWUsIGtleXMpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJzdWJtaXRlZCBtaXNzaW5nIHRyYW5zbGF0aW9uXCIsIGRhdGEpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYoZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IgPT0gXCJOb3Qgc3VwcG9ydGVkIGJ5IHNlcnZlciBjb25maWd1cmF0aW9uXCIpe1xuICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGVycm9yLmVycm9yKTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3Igc3VibWl0aW5nIG1pc3NpbmcgdHJhbnNsYXRpb25cIiwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59Il19
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/router";
|
|
4
|
-
export class UrlHelper {
|
|
5
|
-
constructor(router) {
|
|
6
|
-
this.router = router;
|
|
7
|
-
this.url = this.getCurrentUrl();
|
|
8
|
-
this.page = this.trimSlash(this.url.split('?')[0]);
|
|
9
|
-
this.router.events.subscribe((event) => {
|
|
10
|
-
this.url = this.getCurrentUrl();
|
|
11
|
-
this.page = this.trimSlash(this.url.split('?')[0]);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
getCurrentUrl() {
|
|
15
|
-
return this.router.url;
|
|
16
|
-
}
|
|
17
|
-
trimSlash(url) {
|
|
18
|
-
if (url.startsWith('/')) {
|
|
19
|
-
url = url.substring(1);
|
|
20
|
-
}
|
|
21
|
-
if (url.endsWith('/')) {
|
|
22
|
-
url = url.substring(0, url.length - 1);
|
|
23
|
-
}
|
|
24
|
-
return url;
|
|
25
|
-
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UrlHelper, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
27
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UrlHelper, providedIn: 'root' }); }
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UrlHelper, decorators: [{
|
|
30
|
-
type: Injectable,
|
|
31
|
-
args: [{
|
|
32
|
-
providedIn: 'root'
|
|
33
|
-
}]
|
|
34
|
-
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2p1aWNlLWpzL2xvY2FsaXplL3NyYy9saWIvdXJsLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFNekMsTUFBTSxPQUFPLFNBQVM7SUFJcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzsrR0F6QlUsU0FBUzttSEFBVCxTQUFTLGNBRlIsTUFBTTs7NEZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXJsSGVscGVyIHtcbiAgdXJsITogc3RyaW5nO1xuICBwYWdlITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLnVybCA9IHRoaXMuZ2V0Q3VycmVudFVybCgpO1xuICAgIHRoaXMucGFnZSA9IHRoaXMudHJpbVNsYXNoKHRoaXMudXJsLnNwbGl0KCc/JylbMF0pO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLnVybCA9IHRoaXMuZ2V0Q3VycmVudFVybCgpO1xuICAgICAgdGhpcy5wYWdlID0gdGhpcy50cmltU2xhc2godGhpcy51cmwuc3BsaXQoJz8nKVswXSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDdXJyZW50VXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcbiAgfVxuXG4gIHRyaW1TbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuICAgIGlmICh1cmwuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCB1cmwubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cbn0iXX0=
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of localize
|
|
3
|
-
*/
|
|
4
|
-
// export * from './lib/localize.service';
|
|
5
|
-
export * from './lib/culture.component';
|
|
6
|
-
export * from './lib/localize.module';
|
|
7
|
-
export * from './lib/localize.config';
|
|
8
|
-
export * from './lib/translate.missing-handler';
|
|
9
|
-
export * from './lib/translate.api-loader';
|
|
10
|
-
// export * from './lib/url-helper';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2p1aWNlLWpzL2xvY2FsaXplL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsMENBQTBDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxvY2FsaXplXG4gKi9cblxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxpemUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdWx0dXJlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbGl6ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWxpemUuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0ZS5taXNzaW5nLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRlLmFwaS1sb2FkZXInO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdXJsLWhlbHBlcic7Il19
|
package/index.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
2
|
-
import { CultureInfo, LocalizeService } from './localize.service';
|
|
3
|
-
import { Router } from '@angular/router';
|
|
4
|
-
import { UrlHelper } from './url-helper';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class CultureComponent {
|
|
7
|
-
private translate;
|
|
8
|
-
private localize;
|
|
9
|
-
private router;
|
|
10
|
-
private urlHelper;
|
|
11
|
-
Cultures: CultureInfo[];
|
|
12
|
-
culture: string;
|
|
13
|
-
constructor(translate: TranslateService, localize: LocalizeService, router: Router, urlHelper: UrlHelper);
|
|
14
|
-
loadTranslation(): void;
|
|
15
|
-
changeCulture(): void;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CultureComponent, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CultureComponent, "juice-culture-select", never, {}, {}, never, never, false, never>;
|
|
18
|
-
}
|
package/lib/localize.config.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class LocalizeConfig {
|
|
2
|
-
submitMissing: boolean;
|
|
3
|
-
appName: string;
|
|
4
|
-
localizeApi: string;
|
|
5
|
-
cultureApi: string;
|
|
6
|
-
}
|
|
7
|
-
export interface ILocalizeConfig {
|
|
8
|
-
submitMissing?: boolean;
|
|
9
|
-
appName?: string;
|
|
10
|
-
localizeApi: string;
|
|
11
|
-
cultureApi: string;
|
|
12
|
-
}
|
package/lib/localize.module.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import { ILocalizeConfig } from './localize.config';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./culture.component";
|
|
5
|
-
import * as i2 from "@angular/common/http";
|
|
6
|
-
import * as i3 from "@angular/material/select";
|
|
7
|
-
import * as i4 from "@angular/material/core";
|
|
8
|
-
import * as i5 from "@angular/common";
|
|
9
|
-
import * as i6 from "@angular/forms";
|
|
10
|
-
export declare class LocalizeModule {
|
|
11
|
-
static forRoot(config: ILocalizeConfig): ModuleWithProviders<LocalizeModule>;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizeModule, never>;
|
|
13
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<LocalizeModule, [typeof i1.CultureComponent], [typeof i2.HttpClientModule, typeof i3.MatSelectModule, typeof i4.MatOptionModule, typeof i5.CommonModule, typeof i6.FormsModule], [typeof i1.CultureComponent]>;
|
|
14
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<LocalizeModule>;
|
|
15
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { LocalizeConfig } from './localize.config';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export interface CultureInfo {
|
|
6
|
-
key: string;
|
|
7
|
-
displayName: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class LocalizeService {
|
|
10
|
-
private http;
|
|
11
|
-
private options;
|
|
12
|
-
constructor(http: HttpClient, options: LocalizeConfig);
|
|
13
|
-
fetchCultures(): Observable<CultureInfo[]>;
|
|
14
|
-
fetch(lang: string, page: string): Observable<Object>;
|
|
15
|
-
submit(page: string, appName: string, data: any): Observable<unknown>;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizeService, never>;
|
|
17
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<LocalizeService>;
|
|
18
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { TranslateLoader } from "@ngx-translate/core";
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { UrlHelper } from "./url-helper";
|
|
4
|
-
import { LocalizeService } from "./localize.service";
|
|
5
|
-
export declare class ScopedTranslateApiLoader implements TranslateLoader {
|
|
6
|
-
private service;
|
|
7
|
-
private urlHelper;
|
|
8
|
-
constructor(service: LocalizeService, urlHelper: UrlHelper);
|
|
9
|
-
/**
|
|
10
|
-
* Gets the translations from the server
|
|
11
|
-
*/
|
|
12
|
-
getTranslation(lang: string): Observable<Object>;
|
|
13
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { MissingTranslationHandler, MissingTranslationHandlerParams } from "@ngx-translate/core";
|
|
2
|
-
import { LocalizeService } from "./localize.service";
|
|
3
|
-
import { UrlHelper } from "./url-helper";
|
|
4
|
-
import { LocalizeConfig } from "./localize.config";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class SubmitMissingTranslationHandler implements MissingTranslationHandler {
|
|
7
|
-
private service;
|
|
8
|
-
private options;
|
|
9
|
-
private urlHeper;
|
|
10
|
-
keys: Array<string>;
|
|
11
|
-
lastUpdate: Date;
|
|
12
|
-
constructor(service: LocalizeService, options: LocalizeConfig, urlHeper: UrlHelper);
|
|
13
|
-
handle(params: MissingTranslationHandlerParams): string;
|
|
14
|
-
checkForSubmit(): void;
|
|
15
|
-
submit(): void;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SubmitMissingTranslationHandler, never>;
|
|
17
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SubmitMissingTranslationHandler>;
|
|
18
|
-
}
|
package/lib/url-helper.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Router } from "@angular/router";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class UrlHelper {
|
|
4
|
-
private router;
|
|
5
|
-
url: string;
|
|
6
|
-
page: string;
|
|
7
|
-
constructor(router: Router);
|
|
8
|
-
getCurrentUrl(): string;
|
|
9
|
-
trimSlash(url: string): string;
|
|
10
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<UrlHelper, never>;
|
|
11
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<UrlHelper>;
|
|
12
|
-
}
|