diff --git a/static/src/app/common/user-interface/list-filter/list-filter.component.html b/static/src/app/common/user-interface/list-filter/list-filter.component.html index a304f9e..ece1414 100644 --- a/static/src/app/common/user-interface/list-filter/list-filter.component.html +++ b/static/src/app/common/user-interface/list-filter/list-filter.component.html @@ -6,7 +6,7 @@ diff --git a/static/src/app/pub/public.routing.ts b/static/src/app/pub/public.routing.ts index d1c7fd2..4c53f89 100644 --- a/static/src/app/pub/public.routing.ts +++ b/static/src/app/pub/public.routing.ts @@ -6,7 +6,6 @@ import {DecorationPanelComponent} from './decoration-overview/decoration-panel/d import {RankPanelComponent} from './rank-overview/rank-panel/rank-panel.component'; import {UserListSheetComponent} from './user-list-sheet/user-list-sheet.component'; import {PublicComponent} from './public.component'; -import {StatisticComponent} from '../statistic/stats.component'; export const publicRoutes: Routes = [ { diff --git a/static/src/app/squads/edit-squad/edit-squad.component.html b/static/src/app/squads/edit-squad/edit-squad.component.html index 2f5b7a7..c21d840 100644 --- a/static/src/app/squads/edit-squad/edit-squad.component.html +++ b/static/src/app/squads/edit-squad/edit-squad.component.html @@ -1,44 +1,43 @@
-

Squad editieren

-

Neues Squad hinzufügen

+

{{'squad.submit.edit.headline' | translate}}

+

{{'squad.submit.new.headline' | translate}}

- + - - +
- + - +
- + - +
- + - Bild muss im PNG Format vorliegen + {{'squad.submit.error.logo.type' | translate}} @@ -47,7 +46,7 @@ diff --git a/static/src/app/squads/edit-squad/edit-squad.component.ts b/static/src/app/squads/edit-squad/edit-squad.component.ts index fb5a049..9542769 100644 --- a/static/src/app/squads/edit-squad/edit-squad.component.ts +++ b/static/src/app/squads/edit-squad/edit-squad.component.ts @@ -7,6 +7,7 @@ import {Subscription} from 'rxjs/Subscription'; import {Fraction} from '../../utils/fraction.enum'; import {SnackBarService} from '../../services/user-interface/snack-bar/snack-bar.service'; import {Message} from '../../i18n/de.messages'; +import {TranslateService} from '@ngx-translate/core'; @Component({ @@ -34,7 +35,8 @@ export class EditSquadComponent implements OnInit, OnDestroy { constructor(private route: ActivatedRoute, private router: Router, private squadService: SquadService, - private snackBarService: SnackBarService) { + private snackBarService: SnackBarService, + private translate: TranslateService) { } ngOnInit() { @@ -73,7 +75,12 @@ export class EditSquadComponent implements OnInit, OnDestroy { this.router.navigate(['..'], {relativeTo: this.route}); }); } else { - return window.alert(`Bild ist ein Pflichtfeld`); + this.translate.get('squad.submit.field.logo').subscribe((fieldNameLogfile) => { + this.translate.get('public.error.message.required', + {fieldName: fieldNameLogfile}).subscribe((message) => { + return window.alert(message); + }) + }); } } else { if (this.fileList) { @@ -95,12 +102,4 @@ export class EditSquadComponent implements OnInit, OnDestroy { this.router.navigate([this.squad._id ? '../..' : '..'], {relativeTo: this.route}); return false; } - - canDeactivate(): boolean { - if (this.saved || !this.form.dirty) { - return true; - } - return window.confirm(`Ihr Formular besitzt ungespeicherte Änderungen, möchten Sie die Seite wirklich verlassen?`); - } - } diff --git a/static/src/app/squads/squad-list/squad-item.component.html b/static/src/app/squads/squad-list/squad-item.component.html index 579b30b..a32bafd 100644 --- a/static/src/app/squads/squad-list/squad-item.component.html +++ b/static/src/app/squads/squad-list/squad-item.component.html @@ -12,7 +12,9 @@
- +
diff --git a/static/src/app/squads/squad-list/squad-list.component.html b/static/src/app/squads/squad-list/squad-list.component.html index 875cc9d..5639924 100644 --- a/static/src/app/squads/squad-list/squad-list.component.html +++ b/static/src/app/squads/squad-list/squad-list.component.html @@ -2,7 +2,7 @@ diff --git a/static/src/app/squads/squad.component.html b/static/src/app/squads/squad.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/static/src/app/squads/squad.component.html @@ -0,0 +1 @@ + diff --git a/static/src/app/squads/squad.component.scss b/static/src/app/squads/squad.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/static/src/app/squads/squad.component.ts b/static/src/app/squads/squad.component.ts new file mode 100644 index 0000000..dc5ce0e --- /dev/null +++ b/static/src/app/squads/squad.component.ts @@ -0,0 +1,14 @@ +import {Component} from '@angular/core'; +import {TranslateService} from '@ngx-translate/core'; + +@Component({ + selector: 'cc-squad-root', + templateUrl: './squad.component.html', + styleUrls: ['./squad.component.scss'] +}) +export class SquadComponent { + + constructor(private translate: TranslateService) { + this.translate.setDefaultLang('de'); + } +} diff --git a/static/src/app/squads/squads.module.ts b/static/src/app/squads/squads.module.ts index 1d0daca..9a3c92e 100644 --- a/static/src/app/squads/squads.module.ts +++ b/static/src/app/squads/squads.module.ts @@ -4,11 +4,36 @@ import {SharedModule} from '../shared.module'; import {squadRouterModule, squadsRoutingComponents} from './squads.routing'; import {SquadStore} from '../services/stores/squad.store'; import {SquadService} from '../services/army-management/squad.service'; +import {HttpClient} from '@angular/common/http'; +import {TranslateHttpLoader} from '@ngx-translate/http-loader'; +import {TranslateLoader, TranslateModule} from '@ngx-translate/core'; + +export function createTranslateLoader(http: HttpClient) { + return new TranslateHttpLoader(http, './assets/i18n/squad/', '.json'); +} @NgModule({ declarations: squadsRoutingComponents, - imports: [CommonModule, SharedModule, squadRouterModule], - providers: [SquadStore, SquadService] + + imports: [ + CommonModule, + SharedModule, + squadRouterModule, + + TranslateModule.forChild({ + loader: { + provide: TranslateLoader, + useFactory: (createTranslateLoader), + deps: [HttpClient] + }, + isolate: true + }) + ], + + providers: [ + SquadStore, + SquadService + ] }) export class SquadsModule { static routes = squadRouterModule; diff --git a/static/src/app/squads/squads.routing.ts b/static/src/app/squads/squads.routing.ts index b1dadb7..d1fba24 100644 --- a/static/src/app/squads/squads.routing.ts +++ b/static/src/app/squads/squads.routing.ts @@ -3,8 +3,13 @@ import {SquadListComponent} from './squad-list/squad-list.component'; import {EditSquadComponent} from './edit-squad/edit-squad.component'; import {ModuleWithProviders} from '@angular/core'; import {SquadItemComponent} from './squad-list/squad-item.component'; +import {SquadComponent} from './squad.component'; export const squadsRoutes: Routes = [ + { + path: '', + component: SquadComponent + }, { path: '', component: SquadListComponent, @@ -19,9 +24,10 @@ export const squadsRoutes: Routes = [ path: 'edit/:id', component: EditSquadComponent, outlet: 'right' - }]; + } +]; export const squadRouterModule: ModuleWithProviders = RouterModule.forChild(squadsRoutes); -export const squadsRoutingComponents = [SquadItemComponent, SquadListComponent, EditSquadComponent]; +export const squadsRoutingComponents = [SquadComponent, SquadItemComponent, SquadListComponent, EditSquadComponent]; diff --git a/static/src/app/statistic/war/war-submit/war-submit.component.html b/static/src/app/statistic/war/war-submit/war-submit.component.html index 1a577de..0edd8ad 100644 --- a/static/src/app/statistic/war/war-submit/war-submit.component.html +++ b/static/src/app/statistic/war/war-submit/war-submit.component.html @@ -26,11 +26,11 @@
- + - Logfile muss im Format RPT, LOG oder TXT vorliegen + {{'stats.war.submit.error.file.format' | translate}}
diff --git a/static/src/app/statistic/war/war-submit/war-submit.component.ts b/static/src/app/statistic/war/war-submit/war-submit.component.ts index 96e818e..6dc009a 100644 --- a/static/src/app/statistic/war/war-submit/war-submit.component.ts +++ b/static/src/app/statistic/war/war-submit/war-submit.component.ts @@ -8,6 +8,7 @@ import {SnackBarService} from '../../../services/user-interface/snack-bar/snack- import {SpinnerService} from '../../../services/user-interface/spinner/spinner.service'; import {Subscription} from 'rxjs'; import {Fraction} from '../../../utils/fraction.enum'; +import {TranslateService} from '@ngx-translate/core'; @Component({ @@ -38,6 +39,7 @@ export class WarSubmitComponent { private warService: WarService, private snackBarService: SnackBarService, private spinnerService: SpinnerService, + private translate: TranslateService, public campaignService: CampaignService) { this.subscription = this.route.params .map(params => params['id']) @@ -61,7 +63,12 @@ export class WarSubmitComponent { saveWar() { if (!this.fileList) { - return window.alert(`Logfile ist ein Pflichtfeld`); + this.translate.get('stats.war.submit.logfile').subscribe((fieldNameLogfile) => { + this.translate.get('public.error.message.required', + {fieldName: fieldNameLogfile}).subscribe((message) => { + return window.alert(message); + }) + }) } const file: File = this.fileList[0]; this.loading = true; diff --git a/static/src/assets/i18n/app/de.json b/static/src/assets/i18n/app/de.json index 6648b74..611c456 100644 --- a/static/src/assets/i18n/app/de.json +++ b/static/src/assets/i18n/app/de.json @@ -1,4 +1,13 @@ { + "public.error.headline": "Oops, diese Seite kennen wir nicht...", + "public.error.message.required": "{{fieldName}} ist ein Pflichtfeld", + "public.error.message.min.length": "{{fieldName}} muss mindestens {{boundary}} Zeichen enthalten", + "public.error.message.max.length": "{{fieldName}} darf maximal {{boundary}} Zeichen enthalten", + "public.error.message.email": "Bitte geben Sie eine gültige E-Mail Adresse an", + "public.error.message.no.user": "Der eingetragene Benutzer existiert nicht.", + "public.error.message.default": "{{fieldName}} ist nicht valide", + "public.common.search.button": "Suchen", + "navigation.top.board": "Zum Forum", "navigation.top.overview": "Armeeübersicht", "navigation.top.ranks": "Ränge", @@ -33,13 +42,5 @@ "public.army.headline": "Übersicht über alle Spieler, Squads und Armeen", "public army.squad.members": "Mitglieder:", - "public.army.members": "Armeemitglieder:", - "public.error.headline": "Oops, diese Seite kennen wir nicht...", - - "public.error.message.required": "{{fieldName}} ist ein Pflichtfeld", - "public.error.message.min.length": "{{fieldName}} muss mindestens {{boundary}} Zeichen enthalten", - "public.error.message.max.length": "{{fieldName}} darf maximal {{boundary}} Zeichen enthalten", - "public.error.message.email": "Bitte geben Sie eine gültige E-Mail Adresse an", - "public.error.message.no.user": "Der eingetragene Benutzer existiert nicht.", - "public.error.message.default": "{{fieldName}} ist nicht valide" + "public.army.members": "Armeemitglieder:" } diff --git a/static/src/assets/i18n/squad/de.json b/static/src/assets/i18n/squad/de.json new file mode 100644 index 0000000..dd76273 --- /dev/null +++ b/static/src/assets/i18n/squad/de.json @@ -0,0 +1,22 @@ +{ + "public.error.headline": "Oops, diese Seite kennen wir nicht...", + "public.error.message.required": "{{fieldName}} ist ein Pflichtfeld", + "public.error.message.min.length": "{{fieldName}} muss mindestens {{boundary}} Zeichen enthalten", + "public.error.message.max.length": "{{fieldName}} darf maximal {{boundary}} Zeichen enthalten", + "public.error.message.email": "Bitte geben Sie eine gültige E-Mail Adresse an", + "public.error.message.no.user": "Der eingetragene Benutzer existiert nicht.", + "public.error.message.default": "{{fieldName}} ist nicht valide", + "public.common.search.button": "Suchen", + + "squad.list.tooltip.delete": "Löschen", + "squad.list.tooltip.new": "Neues Squad hinzufügen", + "squad.submit.new.headline": "Neues Squad hinzufügen", + "squad.submit.edit.headline": "Squad bearbeiten", + "squad.submit.field.name": "Name", + "squad.submit.field.fraction": "Fraktion", + "squad.submit.field.sort": "Sortierung", + "squad.submit.field.logo": "Logo", + "squad.submit.error.logo.type": "Bild muss im PNG Format vorliegen", + "squad.submit.button.submit": "Bestätigen", + "squad.submit.button.cancel": "Abbrechen" +} diff --git a/static/src/assets/i18n/squad/en.json b/static/src/assets/i18n/squad/en.json new file mode 100644 index 0000000..0db3279 --- /dev/null +++ b/static/src/assets/i18n/squad/en.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/static/src/assets/i18n/statistics/de.json b/static/src/assets/i18n/statistics/de.json index 738cce9..beae2a7 100644 --- a/static/src/assets/i18n/statistics/de.json +++ b/static/src/assets/i18n/statistics/de.json @@ -63,10 +63,12 @@ "stats.war.submit.headline.edit": "Schlacht bearbeiten", "stats.war.submit.title": "Titel", "stats.war.submit.campaign": "Kampagne", + "stats.war.submit.logfile": "Logfile", "stats.war.submit.points": "Punkte", "stats.war.submit.final.budget": "Endbudget", "stats.war.submit.button.submit": "Bestätigen", "stats.war.submit.button.cancel": "Abbrechen", + "stats.war.submit.error.file.format": "Logfile muss im Format RPT, LOG oder TXT vorliegen", "stats.campaign.submit.headline.new": "Neue Kampagne hinzufügen", "stats.campaign.submit.headline.edit": "Kampagne editieren", @@ -79,5 +81,6 @@ "public.error.message.max.length": "{{fieldName}} darf maximal {{boundary}} Zeichen enthalten", "public.error.message.email": "Bitte geben Sie eine gültige E-Mail Adresse an", "public.error.message.no.user": "Der eingetragene Benutzer existiert nicht.", - "public.error.message.default": "{{fieldName}} ist nicht valide" + "public.error.message.default": "{{fieldName}} ist nicht valide", + "public.common.search.button": "Suchen" }