Skip to content

Commit 53b3d72

Browse files
committed
Add language switch
1 parent 3ccf4fc commit 53b3d72

24 files changed

+426
-67
lines changed

package-lock.json

Lines changed: 108 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@
4444
"@angular/common": "~11.1.0",
4545
"@angular/compiler": "~11.1.0",
4646
"@angular/core": "~11.1.0",
47+
"@angular/forms": "^11.1.0",
4748
"@angular/platform-browser": "~11.1.0",
4849
"@angular/platform-browser-dynamic": "~11.1.0",
4950
"@angular/router": "~11.1.0",
51+
"@ngneat/hot-toast": "^3.4.3",
52+
"@ngx-translate/core": "^13.0.0",
53+
"@ngx-translate/http-loader": "^6.0.0",
5054
"ngx-elements-router": "^0.1.3",
5155
"rxjs": "~6.6.0",
5256
"tslib": "^2.0.0",
Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
11
import { NgModule } from '@angular/core';
22
import { Routes, RouterModule } from '@angular/router';
3-
import { LoadBundleGuard } from 'ngx-elements-router';
4-
import { PlatformMainPageComponent } from './platform-main-page.component';
5-
import { PlatformChildPageComponent } from './platform-child-page.component';
3+
import { BookingModule } from '../booking/booking.module';
4+
import { BookingComponent } from '../booking/booking/booking.component';
5+
import { JourneySelectionComponent } from '../journey/journey-selection/journey-selection.component';
6+
import { JourneyModule } from '../journey/journey.module';
67

78
const routes: Routes = [
89
{
910
path: '',
1011
pathMatch: 'full',
11-
component: PlatformMainPageComponent,
12+
component: JourneySelectionComponent,
1213
},
1314
{
14-
path: 'child',
15-
component: PlatformChildPageComponent,
16-
},
17-
{
18-
path: 'micro-frontend',
19-
canActivate: [LoadBundleGuard],
20-
data: {
21-
bundleUrl: 'http://localhost:4201/main-es2015.js',
22-
},
23-
loadChildren: () =>
24-
import('./micro-frontend-host/micro-frontend-host.module').then(
25-
(m) => m.MicroFrontendHostModule
26-
),
15+
path: 'bookings/journey/:journeyId',
16+
component: BookingComponent,
2717
},
2818
];
2919

3020
@NgModule({
31-
imports: [RouterModule.forRoot(routes)],
21+
imports: [RouterModule.forRoot(routes), JourneyModule, BookingModule],
3222
exports: [RouterModule],
3323
})
3424
export class AppRoutingModule {}

projects/train-platform/src/app/app.component.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ import { Component } from '@angular/core';
33
@Component({
44
selector: 'app-root',
55
template: `
6-
<h1>The platform</h1>
7-
<a routerLink="/">/</a>
8-
<a routerLink="/child">/child</a>
9-
<a routerLink="/micro-frontend">/micro-frontend</a>
10-
<a routerLink="/micro-frontend/child">/micro-frontend/child</a>
6+
<app-navbar></app-navbar>
117
<router-outlet></router-outlet>
128
`,
139
})

projects/train-platform/src/app/app.module.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,32 @@ import { NgModule } from '@angular/core';
33

44
import { AppRoutingModule } from './app-routing.module';
55
import { AppComponent } from './app.component';
6-
import { PlatformMainPageComponent } from './platform-main-page.component';
7-
import { PlatformChildPageComponent } from './platform-child-page.component';
6+
import { NavbarComponent } from './navbar/navbar.component';
7+
import { HttpClient, HttpClientModule } from '@angular/common/http';
8+
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
9+
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
10+
import { FormsModule } from '@angular/forms';
11+
12+
export function createTranslateLoader(http: HttpClient): TranslateHttpLoader {
13+
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
14+
}
815

916
@NgModule({
10-
declarations: [
11-
AppComponent,
12-
PlatformMainPageComponent,
13-
PlatformChildPageComponent,
17+
declarations: [AppComponent, NavbarComponent],
18+
imports: [
19+
BrowserModule,
20+
AppRoutingModule,
21+
HttpClientModule,
22+
TranslateModule.forRoot({
23+
defaultLanguage: 'en',
24+
loader: {
25+
provide: TranslateLoader,
26+
useFactory: createTranslateLoader,
27+
deps: [HttpClient],
28+
},
29+
}),
30+
FormsModule,
1431
],
15-
imports: [BrowserModule, AppRoutingModule],
1632
providers: [],
1733
bootstrap: [AppComponent],
1834
})
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
nav {
2+
height: 40px;
3+
width: 100%;
4+
background-color: aqua;
5+
display: flex;
6+
flex-direction: row;
7+
justify-content: space-between;
8+
}
9+
10+
ul {
11+
list-style: none;
12+
padding: 0;
13+
margin: 0;
14+
display: flex;
15+
flex-direction: row;
16+
flex-wrap: nowrap;
17+
}
18+
19+
li {
20+
line-height: 40px;
21+
vertical-align: middle;
22+
padding-left: 10px;
23+
padding-right: 10px;
24+
}
25+
26+
.page-options {
27+
display: flex;
28+
flex-direction: row;
29+
gap: 4px;
30+
line-height: 40px;
31+
}
32+
33+
label {
34+
margin-right: 10px;
35+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<nav>
2+
<ul>
3+
<li>
4+
<a routerLink="/">{{ "navbar.home" | translate }}</a>
5+
</li>
6+
</ul>
7+
<div class="page-options">
8+
<div>
9+
<label>{{ "navbar.language.text" | translate }}</label>
10+
<select [ngModel]="language" (ngModelChange)="updateLanguage($event)">
11+
<option value="en">{{ "navbar.language.en" | translate }}</option>
12+
<option value="de">{{ "navbar.language.de" | translate }}</option>
13+
</select>
14+
</div>
15+
</div>
16+
</nav>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Component } from '@angular/core';
2+
import { TranslateService } from '@ngx-translate/core';
3+
4+
@Component({
5+
selector: 'app-navbar',
6+
templateUrl: './navbar.component.html',
7+
styleUrls: ['./navbar.component.css'],
8+
})
9+
export class NavbarComponent {
10+
language: 'en' | 'de' = 'en';
11+
12+
constructor(private translateService: TranslateService) {}
13+
14+
updateLanguage(lang: 'en' | 'de'): void {
15+
this.language = lang;
16+
this.translateService.use(lang);
17+
}
18+
}

projects/train-platform/src/app/platform-child-page.component.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

projects/train-platform/src/app/platform-main-page.component.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)