Skip to content

Commit ed46674

Browse files
committed
chore(i18n): i18n added
1 parent bed3b23 commit ed46674

9 files changed

+186
-117
lines changed

package.json

+4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@
4343
"@angular/platform-browser": "^15.2.2",
4444
"@angular/platform-browser-dynamic": "^15.2.2",
4545
"@angular/router": "^15.2.2",
46+
"@gilsdav/ngx-translate-router": "^6.1.0",
47+
"@gilsdav/ngx-translate-router-http-loader": "^2.0.0",
48+
"@ngx-translate/core": "^14.0.0",
49+
"@ngx-translate/http-loader": "^7.0.0",
4650
"rxjs": "^7.8.0",
4751
"tslib": "^2.5.0",
4852
"zone.js": "^0.13.0"

projects/ngx-translate-version/package.json

+7-3
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@
1010
"license": "MIT",
1111
"description": "Angular module that provides version to your language files",
1212
"peerDependencies": {
13-
"@angular/common": ">=12",
14-
"@angular/core": ">=12"
13+
"@angular/common": ">=15",
14+
"@angular/core": ">=15",
15+
"@gilsdav/ngx-translate-router-http-loader": ">=2",
16+
"@gilsdav/ngx-translate-router": ">=6",
17+
"@ngx-translate/core": ">=14",
18+
"@ngx-translate/http-loader": ">=7"
1519
},
1620
"publishConfig": {
1721
"registry": "https://registry.npmjs.org"
@@ -29,6 +33,6 @@
2933
"ngx"
3034
],
3135
"engines": {
32-
"node": ">=12"
36+
"node": ">=14"
3337
}
3438
}

projects/ngx-translate-version/src/lib/ngx-repeat.directive.spec.ts

-59
This file was deleted.

projects/ngx-translate-version/src/lib/ngx-repeat.directive.ts

-47
This file was deleted.

projects/ngx-translate-version/src/lib/ngx-repeat.module.ts

-8
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { APP_BASE_HREF, PlatformLocation } from '@angular/common';
2+
import { HttpClient, HttpClientModule } from '@angular/common/http';
3+
import { Inject, ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core';
4+
import { LocalizeParser, LocalizeRouterModule, LocalizeRouterSettings } from '@gilsdav/ngx-translate-router';
5+
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
6+
import { I18N_CONFIG_TOKEN, I18nConfig, defaultI18nConfig } from './ngx-translate-version.utils';
7+
import { localizeLoaderFactory, translateLoaderFactory } from './translate-loaders';
8+
9+
@NgModule({
10+
imports: [
11+
HttpClientModule,
12+
TranslateModule.forRoot({
13+
loader: {
14+
provide: TranslateLoader,
15+
useFactory: translateLoaderFactory,
16+
deps: [HttpClient, PLATFORM_ID, I18N_CONFIG_TOKEN, APP_BASE_HREF]
17+
}
18+
}),
19+
LocalizeRouterModule.forRoot([], {
20+
parser: {
21+
provide: LocalizeParser,
22+
useFactory: localizeLoaderFactory,
23+
deps: [
24+
TranslateService,
25+
Location,
26+
LocalizeRouterSettings,
27+
HttpClient,
28+
PLATFORM_ID,
29+
I18N_CONFIG_TOKEN,
30+
APP_BASE_HREF
31+
]
32+
}
33+
})
34+
],
35+
providers: [
36+
{
37+
provide: APP_BASE_HREF,
38+
useFactory: (platformLocation: PlatformLocation): string => platformLocation.getBaseHrefFromDOM(),
39+
deps: [PlatformLocation]
40+
}
41+
],
42+
exports: [TranslateModule, LocalizeRouterModule]
43+
})
44+
export class NgxTranslateVersionModule {
45+
constructor(
46+
private translate: TranslateService,
47+
@Inject(I18N_CONFIG_TOKEN) private config: I18nConfig = defaultI18nConfig
48+
) {
49+
this.translate.setDefaultLang(this.config.defaultLanguage);
50+
}
51+
52+
public static forRoot(config: Partial<I18nConfig>): ModuleWithProviders<any> {
53+
return {
54+
ngModule: NgxTranslateVersionModule,
55+
providers: [
56+
{
57+
provide: I18N_CONFIG_TOKEN,
58+
useValue: { ...defaultI18nConfig, ...config }
59+
}
60+
]
61+
};
62+
}
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { InjectionToken } from '@angular/core';
2+
3+
export interface I18nConfig {
4+
version: string;
5+
defaultLanguage: string;
6+
}
7+
8+
export const defaultI18nConfig: I18nConfig = {
9+
version: '0.0.0',
10+
defaultLanguage: 'en'
11+
};
12+
13+
export const I18N_CONFIG_TOKEN = new InjectionToken<I18nConfig>('i18n-version');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import { isPlatformBrowser, Location } from '@angular/common';
2+
import { HttpClient } from '@angular/common/http';
3+
import { Routes } from '@angular/router';
4+
import { LocalizeParser, LocalizeRouterSettings } from '@gilsdav/ngx-translate-router';
5+
import { LocalizeRouterHttpLoader } from '@gilsdav/ngx-translate-router-http-loader';
6+
import { TranslateLoader, TranslateService } from '@ngx-translate/core';
7+
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
8+
import { Observable } from 'rxjs';
9+
import { I18nConfig } from './ngx-translate-version.utils';
10+
11+
export class TranslateUniversalLoader implements TranslateLoader {
12+
constructor(private http: HttpClient, private config: I18nConfig, private baseHref: string) {}
13+
14+
public getTranslation(lang: string): Observable<any> {
15+
return this.http.get<any>(`${this.baseHref}assets/i18n/${lang}.json?v=${this.config.version}`);
16+
}
17+
}
18+
19+
export function translateLoaderFactory(
20+
httpClient: HttpClient,
21+
platform: any,
22+
config: I18nConfig,
23+
baseHref: string
24+
): TranslateLoader {
25+
return isPlatformBrowser(platform)
26+
? new TranslateHttpLoader(httpClient, `${baseHref}assets/i18n/`, `.json?v=${config.version}`)
27+
: new TranslateUniversalLoader(httpClient, config, baseHref);
28+
}
29+
30+
export class LocalizeUniversalLoader extends LocalizeParser {
31+
constructor(
32+
translate: TranslateService,
33+
location: Location,
34+
settings: LocalizeRouterSettings,
35+
private http: HttpClient,
36+
private config: I18nConfig,
37+
private baseHref: string
38+
) {
39+
super(translate, location, settings);
40+
}
41+
42+
public load(routes: Routes): Promise<any> {
43+
return new Promise((resolve: any) => {
44+
this.http.get<any>(`${this.baseHref}assets/locales.json?v=${this.config}`).subscribe((data: any) => {
45+
this.locales = data.locales;
46+
this.prefix = data.prefix;
47+
this.init(routes).then(resolve);
48+
});
49+
});
50+
}
51+
}
52+
53+
export function localizeLoaderFactory(
54+
translate: TranslateService,
55+
location: Location,
56+
settings: LocalizeRouterSettings,
57+
http: HttpClient,
58+
platform: any,
59+
config: I18nConfig,
60+
baseHref: string
61+
): LocalizeParser {
62+
return isPlatformBrowser(platform)
63+
? new LocalizeRouterHttpLoader(
64+
translate,
65+
location,
66+
settings,
67+
http,
68+
`${baseHref}assets/locales.json?v=${config.version}`
69+
)
70+
: new LocalizeUniversalLoader(translate, location, settings, http, config, baseHref);
71+
}

yarn.lock

+28
Original file line numberDiff line numberDiff line change
@@ -2033,6 +2033,20 @@
20332033
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
20342034
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
20352035

2036+
"@gilsdav/ngx-translate-router-http-loader@^2.0.0":
2037+
version "2.0.0"
2038+
resolved "https://registry.yarnpkg.com/@gilsdav/ngx-translate-router-http-loader/-/ngx-translate-router-http-loader-2.0.0.tgz#5ea15ca8df225821890f300cc7d7bb7ce7079544"
2039+
integrity sha512-L5EguzAM7CIDrdnKEQw0AjNzmrxbhmUHdzs5R+WS1snBsJykfvjpl6UkPTAH7umt52nUanmO8bxXoRQxYRuBAA==
2040+
dependencies:
2041+
tslib "^2.3.0"
2042+
2043+
"@gilsdav/ngx-translate-router@^6.1.0":
2044+
version "6.1.0"
2045+
resolved "https://registry.yarnpkg.com/@gilsdav/ngx-translate-router/-/ngx-translate-router-6.1.0.tgz#7930df2ce95d6c77eb797ba8cfb2cce66adc5152"
2046+
integrity sha512-SdOzrtNAULkIvH+A2Bt7h4VN5hYWpa5tEzU8rG3otToQ77lm84IsJoTVzOA1KHoRaYjH7hy0MO52qskQ6O7WVA==
2047+
dependencies:
2048+
tslib "^2.3.0"
2049+
20362050
"@humanwhocodes/config-array@^0.11.8":
20372051
version "0.11.8"
20382052
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
@@ -2157,6 +2171,20 @@
21572171
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-15.2.3.tgz#dad395ea10d9c7f58aeac17728a66d589c78e89b"
21582172
integrity sha512-mds3EXzEA6nn6X7gBYv0W6yCTw53EmYGFdyK1ZFl/TPboKrkhn9J5SjSDPEc7UQC3tjVwWnOxgNxkPOBpbQzIw==
21592173

2174+
"@ngx-translate/core@^14.0.0":
2175+
version "14.0.0"
2176+
resolved "https://registry.yarnpkg.com/@ngx-translate/core/-/core-14.0.0.tgz#af421d0e1a28376843f0fed375cd2fae7630a5ff"
2177+
integrity sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==
2178+
dependencies:
2179+
tslib "^2.3.0"
2180+
2181+
"@ngx-translate/http-loader@^7.0.0":
2182+
version "7.0.0"
2183+
resolved "https://registry.yarnpkg.com/@ngx-translate/http-loader/-/http-loader-7.0.0.tgz#905f38d8d13342621516635bf480ff9a4f73e9fc"
2184+
integrity sha512-j+NpXXlcGVdyUNyY/qsJrqqeAdJdizCd+GKh3usXExSqy1aE9866jlAIL+xrfDU4w+LiMoma5pgE4emvFebZmA==
2185+
dependencies:
2186+
tslib "^2.3.0"
2187+
21602188
"@nodelib/[email protected]":
21612189
version "2.1.4"
21622190
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"

0 commit comments

Comments
 (0)