Ajout des traductions

This commit is contained in:
Sébastien André
2021-05-31 11:26:54 +02:00
parent 0833930135
commit 03cf10e69c
17 changed files with 251 additions and 61 deletions

View File

@@ -1,7 +1,6 @@
import { Component, OnInit } from "@angular/core";
import { Router } from "@angular/router";
import { TranslateService } from "@ngx-translate/core";
import { forkJoin, Observable } from 'rxjs';
import { User } from "../models/user";
import { CacheApiKey } from "../models/cache-api-key.enum";
@@ -10,10 +9,6 @@ import { AuthenticationService } from "../services/authentication.service";
import { ServiceComm } from "../services/service-comm.service";
import { ConfigurationHelper } from "../services/configuration-helper";
import { ServiceCacheApi } from "../services/service-cache-api.service";
import { AircraftService } from "../services/aircraft.service";
import { GearService } from "../services/gear.service";
import { JumpTypeService } from "../services/jump-type.service";
import { DropzoneService } from "../services/dropzone.service";
@Component({
selector: "app-root",
@@ -68,5 +63,7 @@ export class AppComponent implements OnInit {
this.currentUser.language = event.value;
this.authenticationService.currentUserValue = this.currentUser;
this.selectedLanguageFlag = event.value;
this.serviceComm.ForceTranslateTitle();
}
}

View File

@@ -27,10 +27,12 @@ export class DefaultComponent implements OnInit {
this.authenticationService.alwaysLogin();
this.putToCacheRefDatas().subscribe(() => { console.log("Push to cache the referentiel datas"); });
this.translateService.get("Home").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
this.updateTitle();
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
}
private putToCacheRefDatas(): Observable<any[]> {
@@ -41,4 +43,10 @@ export class DefaultComponent implements OnInit {
return forkJoin([aircraftResp, jumpTypeResp, dzResp, gearResp]);
}
private updateTitle() {
this.translateService.get("Default_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,20 +1,20 @@
<div class="content">
<div *ngIf="dataSourceTable != null else loading">
<button mat-raised-button color="accent" (click)="openDialogToAdd()" *ngIf="isUserAdmin == true">Add a aircraft</button>
<button mat-raised-button color="accent" (click)="openDialogToAdd()" *ngIf="isUserAdmin == true">{{ 'List_Aircrafts_Add' | translate }}</button>
<table mat-table [dataSource]="dataSourceTable">
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef>ID</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Aircrafts_Header_Id' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.id}}</td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef>Name</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Aircrafts_Header_Name' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.name}}</td>
</ng-container>
<ng-container matColumnDef="imageData">
<th mat-header-cell *matHeaderCellDef>Image</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Aircrafts_Header_Image' | translate }}</th>
<td mat-cell *matCellDef="let element"><img src="{{element.imageData}}" alt="No image" style="width: 128px;"></td>
</ng-container>

View File

@@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core';
import { AircraftService } from '../../services/aircraft.service';
import { ServiceComm } from '../../services/service-comm.service';
@@ -25,7 +26,8 @@ export class ListOfAircraftsComponent implements OnInit {
constructor(private serviceApi: AircraftService,
private serviceComm: ServiceComm,
private authenticationService: AuthenticationService,
public dialog: MatDialog) {
public dialog: MatDialog,
private translateService: TranslateService) {
this.isUserAdmin = this.authenticationService.currentUserValue.roles === "admin";
}
@@ -36,7 +38,13 @@ export class ListOfAircraftsComponent implements OnInit {
this.getListOfAircrafts();
}
});
this.serviceComm.UpdatedComponentTitle('List of aircrafts');
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.getListOfAircrafts();
}
@@ -54,4 +62,10 @@ export class ListOfAircraftsComponent implements OnInit {
openDialogToAdd() {
this.dialog.open(NewAircraftComponent);
}
private updateTitle() {
this.translateService.get("ListAircrafts_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,10 +1,10 @@
<div class="content">
<div *ngIf="dataSourceTable != null else loading">
<button mat-raised-button color="accent" (click)="openDialogToAdd()" *ngIf="isUserAdmin == true">Add a drop zone</button>
<button mat-raised-button color="accent" (click)="openDialogToAdd()" *ngIf="isUserAdmin == true">{{ 'List_Dz_Add' | translate }}</button>
<mat-form-field>
<mat-label>Filter</mat-label>
<input matInput (keyup)="applyFilter($event)" placeholder="Filter on the name or address of center" #input>
<mat-label>{{ 'List_Dz_Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event)" placeholder="{{ 'List_Dz_Filter_PlaceHolder' | translate }}" #input>
</mat-form-field>
<table mat-table [dataSource]="dataSourceTable">
@@ -15,7 +15,6 @@
(click)="removeToFavorite(element)" color="primary" style="cursor: pointer;">favorite</mat-icon>
<mat-icon aria-hidden="false" aria-label="Not favorite" *ngIf="element.isFavorite === false"
(click)="setToFavorite(element)" style="cursor: pointer;">favorite_border</mat-icon>
<a href='http://{{element.website}}' target="_blank">
<mat-icon aria-hidden="false" aria-label="URL to the DZ website" style="color: white;">link</mat-icon>
</a>
@@ -30,26 +29,26 @@
</ng-container>
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef>ID</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Dz_Header_ID' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.id}}</td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef>Name</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Dz_Header_Name' | translate }}</th>
<td mat-cell *matCellDef="let element">
<span class="spanWithBreakWord" [innerHTML]="element.name"></span>
</td>
</ng-container>
<ng-container matColumnDef="address">
<th mat-header-cell *matHeaderCellDef>Address</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Dz_Header_Address' | translate }}</th>
<td mat-cell *matCellDef="let element">
<span class="spanWithBreakWord" [innerHTML]="element.address"></span>
</td>
</ng-container>
<ng-container matColumnDef="type">
<th mat-header-cell *matHeaderCellDef>Type</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Dz_Header_Type' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.type}}</td>
</ng-container>

View File

@@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core';
import { AddAction } from '../../models/add-action.enum';
import { DropZoneResp } from '../../models/dropzone';
@@ -30,7 +31,8 @@ export class ListOfDzsComponent implements OnInit {
constructor(private serviceApi: DropzoneService,
private serviceComm: ServiceComm,
private authenticationService: AuthenticationService,
public dialog: MatDialog) {
public dialog: MatDialog,
private translateService: TranslateService) {
this.isUserAdmin = this.authenticationService.currentUserValue.roles === "admin";
}
@@ -41,7 +43,13 @@ export class ListOfDzsComponent implements OnInit {
this.getListOfDropZones();
}
});
this.serviceComm.UpdatedComponentTitle('List of DZs');
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.getListOfDropZones();
}
@@ -88,4 +96,10 @@ export class ListOfDzsComponent implements OnInit {
const filterValue = (event.target as HTMLInputElement).value;
this.dataSourceTable.filter = filterValue.trim().toLowerCase();
}
private updateTitle() {
this.translateService.get("ListDz_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,40 +1,40 @@
<div class="content">
<div *ngIf="dataSourceTable != null else loading">
<button mat-raised-button color="accent" (click)="openDialogToAdd()">Add a gear</button>
<button mat-raised-button color="accent" (click)="openDialogToAdd()">{{ 'List_Gears_Add' | translate }}</button>
<table mat-table [dataSource]="dataSourceTable">
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef>ID</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Gears_Header_Id' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.id}}</td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef style="min-width: 130px;">Name</th>
<th mat-header-cell *matHeaderCellDef style="min-width: 130px;">{{ 'List_Gears_Header_Name' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.name}}</td>
</ng-container>
<ng-container matColumnDef="manufacturer">
<th mat-header-cell *matHeaderCellDef>Manufacturer</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Gears_Header_Manufacturer' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.manufacturer}}</td>
</ng-container>
<ng-container matColumnDef="maxSize">
<th mat-header-cell *matHeaderCellDef style="min-width: 90px;">Canopy size</th>
<th mat-header-cell *matHeaderCellDef style="min-width: 90px;">{{ 'List_Gears_Header_CanopySize' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.minSize}} - {{element.maxSize}}</td>
</ng-container>
<ng-container matColumnDef="aad">
<th mat-header-cell *matHeaderCellDef>AAD system</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Gears_Header_Aad' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.aad}}</td>
</ng-container>
<ng-container matColumnDef="mainCanopy">
<th mat-header-cell *matHeaderCellDef>Main canopy</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Gears_Header_Main' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.mainCanopy}}</td>
</ng-container>
<ng-container matColumnDef="reserveCanopy">
<th mat-header-cell *matHeaderCellDef>Reserve canopy</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Gears_Header_Reserve' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.reserveCanopy}}</td>
</ng-container>

View File

@@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild } from "@angular/core";
import { MatPaginator } from "@angular/material/paginator";
import { MatTableDataSource } from "@angular/material/table";
import { MatDialog } from "@angular/material/dialog";
import { TranslateService } from '@ngx-translate/core';
import { GearService } from "../../services/gear.service";
import { ServiceComm } from "../../services/service-comm.service";
@@ -29,7 +30,8 @@ export class ListOfGearsComponent implements OnInit {
constructor(private serviceApi: GearService,
private serviceComm: ServiceComm,
public dialog: MatDialog) {}
public dialog: MatDialog,
private translateService: TranslateService) {}
ngOnInit() {
this.serviceComm.refreshRequest.subscribe(action => {
@@ -38,7 +40,13 @@ export class ListOfGearsComponent implements OnInit {
this.getListOfGears();
}
});
this.serviceComm.UpdatedComponentTitle("List of gears");
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.getListOfGears();
}
@@ -60,4 +68,10 @@ export class ListOfGearsComponent implements OnInit {
width: "600px"
});
}
private updateTitle() {
this.translateService.get("ListGears_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,15 +1,15 @@
<div class="content">
<div *ngIf="dataSourceTable != null else loading">
<button mat-raised-button color="accent" (click)="openDialogToAdd()" *ngIf="isUserAdmin == true">Add a jump type</button>
<button mat-raised-button color="accent" (click)="openDialogToAdd()" *ngIf="isUserAdmin == true">{{ 'List_JumpType_Add' | translate }}</button>
<table mat-table [dataSource]="dataSourceTable">
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef>ID</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_JumpType_Header_Id' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.id}}</td>
</ng-container>
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef>Name</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_JumpType_Header_Name' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.name}}</td>
</ng-container>

View File

@@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild } from "@angular/core";
import { MatPaginator } from "@angular/material/paginator";
import { MatTableDataSource } from "@angular/material/table";
import { MatDialog } from "@angular/material/dialog";
import { TranslateService } from '@ngx-translate/core';
import { AddAction } from "../../models/add-action.enum";
import { JumpTypeResp } from "../../models/jumpType";
@@ -25,7 +26,8 @@ export class ListOfJumpTypesComponent implements OnInit {
constructor(private serviceApi: JumpTypeService,
private serviceComm: ServiceComm,
private authenticationService: AuthenticationService,
public dialog: MatDialog) {
public dialog: MatDialog,
private translateService: TranslateService) {
this.isUserAdmin = this.authenticationService.currentUserValue.roles === "admin";
}
@@ -36,7 +38,13 @@ export class ListOfJumpTypesComponent implements OnInit {
this.getListOfJumpTypes();
}
});
this.serviceComm.UpdatedComponentTitle("List of jump types");
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.getListOfJumpTypes();
}
@@ -54,4 +62,10 @@ export class ListOfJumpTypesComponent implements OnInit {
openDialogToAdd() {
this.dialog.open(NewJumpTypeComponent);
}
private updateTitle() {
this.translateService.get("ListJumpTypes_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,6 +1,6 @@
<div class="content">
<div>
<button mat-raised-button color="accent" [routerLink]="['/newjump']" [routerLinkActive]="['active']" skipLocationChange>Add jumps</button>
<button mat-raised-button color="accent" [routerLink]="['/newjump']" [routerLinkActive]="['active']" skipLocationChange>{{ 'List_Jump_Add' | translate }}</button>
</div>
<div *ngIf="dataSourceTable != null else loading">
<table mat-table [dataSource]="dataSourceTable">
@@ -15,42 +15,42 @@
</ng-container>
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef style="min-width: 70px;">Num</th>
<th mat-header-cell *matHeaderCellDef style="min-width: 70px;">{{ 'List_Jump_Header_Num' | translate }}</th>
<td mat-cell *matCellDef="let element; let i = index">
{{ resultsLength - ( (dataSourceTable.paginator.pageIndex * dataSourceTable.paginator.pageSize ) + i ) }}
</td>
</ng-container>
<ng-container matColumnDef="jumpDate">
<th mat-header-cell *matHeaderCellDef>Date</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Jump_Header_Date' | translate }}</th>
<td mat-cell *matCellDef="let element">
<span class="smallSpanWithBreakWord" [innerHTML]="element.jumpDate | date: 'yyyy-MM-dd'"></span>
</td>
</ng-container>
<ng-container matColumnDef="jumpType">
<th mat-header-cell *matHeaderCellDef style="min-width: 100px;">Jump Type</th>
<th mat-header-cell *matHeaderCellDef style="min-width: 100px;">{{ 'List_Jump_Header_JumpType' | translate }}</th>
<td mat-cell *matCellDef="let element">
<span class="smallSpanWithBreakWord" [innerHTML]="element.jumpType.name"></span>
</td>
</ng-container>
<ng-container matColumnDef="aircraft">
<th mat-header-cell *matHeaderCellDef style="min-width: 110px;">Aircraft</th>
<th mat-header-cell *matHeaderCellDef style="min-width: 110px;">{{ 'List_Jump_Header_Aircraft' | translate }}</th>
<td mat-cell *matCellDef="let element">
<span class="smallSpanWithBreakWord" [innerHTML]="element.aircraft.name"></span>
</td>
</ng-container>
<ng-container matColumnDef="dropZone">
<th mat-header-cell *matHeaderCellDef>Drop Zone</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Jump_Header_Dz' | translate }}</th>
<td mat-cell *matCellDef="let element">
<span class="spanWithBreakWord" [innerHTML]="element.dropZone.name"></span>
</td>
</ng-container>
<ng-container matColumnDef="gear">
<th mat-header-cell *matHeaderCellDef>Gear</th>
<th mat-header-cell *matHeaderCellDef>{{ 'List_Jump_Header_Id' | translate }}</th>
<td mat-cell *matCellDef="let element">{{element.gear.name}}</td>
</ng-container>

View File

@@ -2,7 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { MatDialog } from "@angular/material/dialog";
import { Observable } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
import { AddAction } from '../../models/add-action.enum';
import { Jump } from '../../models/jump';
@@ -31,7 +31,8 @@ export class ListOfJumpsComponent implements OnInit {
constructor(private serviceApi: JumpService,
private serviceComm: ServiceComm,
public dialog: MatDialog) { }
public dialog: MatDialog,
private translateService: TranslateService) { }
ngOnInit() {
this.serviceComm.refreshRequest.subscribe(action => {
@@ -40,7 +41,13 @@ export class ListOfJumpsComponent implements OnInit {
this.getListOfJumps();
}
});
this.serviceComm.UpdatedComponentTitle('List of jumps');
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.getListOfJumps();
}
@@ -79,4 +86,10 @@ export class ListOfJumpsComponent implements OnInit {
this.serviceApi.DeleteJump(item);
}
private updateTitle() {
this.translateService.get("ListJumps_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,6 +1,7 @@
import { Component, OnInit } from "@angular/core";
import { formatDate } from '@angular/common';
import { DateAdapter, MAT_DATE_FORMATS, NativeDateAdapter } from "@angular/material/core";
import { TranslateService } from '@ngx-translate/core';
import { JumpTypeResp } from "../../models/jumpType";
import { AircraftResp } from "../../models/aircraft";
@@ -68,14 +69,19 @@ export class NewJumpComponent implements OnInit {
private serviceAircraft: AircraftService,
private serviceDropzone: DropzoneService,
private serviceGear: GearService,
private dateService: DateService) {}
private dateService: DateService,
private translateService: TranslateService) {}
ngOnInit() {
this.serviceComm.UpdatedComponentTitle("Add a new jump");
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.pendingAddRequest = false;
this.initForm();
this.getListOfJumpTypes();
}
@@ -213,4 +219,10 @@ export class NewJumpComponent implements OnInit {
this.selectedDz = undefined;
this.onChangeDz('');
}
private updateTitle() {
this.translateService.get("NewJump_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -1,6 +1,8 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table';
import { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';
import { TranslateService } from '@ngx-translate/core';
import { ServiceComm } from '../../services/service-comm.service';
import { StatsService } from '../../services/stats.service';
import { StatsByDzResp, StatsByAircraftResp, StatsByGearResp,
@@ -31,10 +33,16 @@ export class SummaryComponent implements OnInit {
@ViewChild(MatTabGroup) tabGroup: MatTabGroup;
constructor(private serviceApi: StatsService,
private serviceComm: ServiceComm) { }
private serviceComm: ServiceComm,
private translateService: TranslateService) { }
ngOnInit() {
this.serviceComm.UpdatedComponentTitle('Summary');
this.serviceComm.forceTranslateTitle.subscribe((data)=> {
if (data === true){
this.updateTitle();
}
});
this.updateTitle();
this.serviceApi.getSimpleSummary()
.subscribe(data => {
@@ -114,4 +122,10 @@ export class SummaryComponent implements OnInit {
break;
}
}
private updateTitle() {
this.translateService.get("Summary_Title").subscribe(
data => { this.serviceComm.UpdatedComponentTitle(data); }
);
}
}

View File

@@ -29,6 +29,14 @@
"LoginCreateUser_BtnLogin" : "Create user and login",
"Default_Title" : "Home",
"ListDz_Title" : "List of DZs",
"Summary_Title" : "Summary",
"NewJump_Title" : "New jumps",
"ListJumps_Title" : "List of jumps",
"ListJumpTypes_Title" : "List of jump types",
"ListGears_Title" : "List of gears",
"ListAircrafts_Title" : "List of aircrafts",
"App_Footer" : "Web software to log your skydive jumps - v",
"App_Nav_Summary" : "Summary",
"App_Nav_Jumps" : "List of jumps",
@@ -37,5 +45,39 @@
"App_Nav_Aircrafts" : "List of aircrafts",
"App_Nav_JumpTypes" : "List of jump types",
"App_Nav_Gears" : "List of gears",
"App_Nav_Logout" : "Logout"
"App_Nav_Logout" : "Logout",
"List_Aircrafts_Add" : "Add a aircraft",
"List_Aircrafts_Header_Id" : "ID",
"List_Aircrafts_Header_Name" : "Name",
"List_Aircrafts_Header_Image" : "Image",
"List_Gears_Add" : "Add a gear",
"List_Gears_Header_Id" : "ID",
"List_Gears_Header_Name" : "Name",
"List_Gears_Header_Manufacturer" : "Manufacturer",
"List_Gears_Header_CanopySize" : "Canopy size",
"List_Gears_Header_Aad" : "AAD system",
"List_Gears_Header_Main" : "Main canopy",
"List_Gears_Header_Reserve" : "Reserve canopy",
"List_JumpType_Add" : "Add a jump type",
"List_JumpType_Header_Id" : "ID",
"List_JumpType_Header_Name" : "Name",
"List_Jump_Add" : "Add jumps",
"List_Jump_Header_Num" : "Num",
"List_Jump_Header_Date" : "Date",
"List_Jump_Header_JumpType" : "Jump Type",
"List_Jump_Header_Aircraft" : "Aircraft",
"List_Jump_Header_Dz" : "Drop Zone",
"List_Jump_Header_Gear" : "Gear",
"List_Dz_Add" : "Add a drop zone",
"List_Dz_Header_ID" : "ID",
"List_Dz_Header_Name" : "Name",
"List_Dz_Header_Address" : "Address",
"List_Dz_Header_Type" : "Type",
"List_Dz_Filter" : "Filter",
"List_Dz_Filter_PlaceHolder" : "Filter on the name or address of center"
}

View File

@@ -29,13 +29,55 @@
"LoginCreateUser_BtnLogin" : "Créer et se connecter",
"Default_Title" : "Accueil",
"ListDz_Title" : "Liste des centres de parachutisme",
"Summary_Title" : "Récapitulatif",
"NewJump_Title" : "Nouveaux sauts",
"ListJumps_Title" : "Liste des sauts",
"ListJumpTypes_Title" : "Liste des types de saut",
"ListGears_Title" : "Liste des pièges",
"ListAircrafts_Title" : "Liste des avions",
"App_Footer" : "Application pour enregistrer ses sauts de parachutisme - v",
"App_Nav_Summary" : "Résumé",
"App_Nav_Summary" : "Récapitulatif",
"App_Nav_Jumps" : "Les sauts",
"App_Nav_NewJump" : "Ajouter un saut",
"App_Nav_Dzs" : "Centre de parachutisme",
"App_Nav_Aircrafts" : "Avions",
"App_Nav_JumpTypes" : "Type de saut",
"App_Nav_Gears" : "Pièges",
"App_Nav_Logout" : "Se Déconneter"
"App_Nav_Logout" : "Se déconnecter",
"List_Aircrafts_Add" : "Ajouter un avion",
"List_Aircrafts_Header_Id" : "ID",
"List_Aircrafts_Header_Name" : "Nom",
"List_Aircrafts_Header_Image" : "Image",
"List_Gears_Add" : "Ajouter un piège",
"List_Gears_Header_Id" : "ID",
"List_Gears_Header_Name" : "Nom",
"List_Gears_Header_Manufacturer" : "Fabriquant",
"List_Gears_Header_CanopySize" : "Taille de voile",
"List_Gears_Header_Aad" : "Système de sécurité",
"List_Gears_Header_Main" : "Principale",
"List_Gears_Header_Reserve" : "Réserve",
"List_JumpType_Add" : "Ajouter un type de saut",
"List_JumpType_Header_Id" : "ID",
"List_JumpType_Header_Name" : "Nom",
"List_Jump_Add" : "Ajouter des sauts",
"List_Jump_Header_Num" : "Numéro",
"List_Jump_Header_Date" : "Date",
"List_Jump_Header_JumpType" : "Type de saut",
"List_Jump_Header_Aircraft" : "Avion",
"List_Jump_Header_Dz" : "Centre",
"List_Jump_Header_Gear" : "Piège",
"List_Dz_Add" : "Ajouter un centre de parachutisme",
"List_Dz_Header_ID" : "ID",
"List_Dz_Header_Name" : "Nom",
"List_Dz_Header_Address" : "Adresse",
"List_Dz_Header_Type" : "Type",
"List_Dz_Filter" : "Filtrer",
"List_Dz_Filter_PlaceHolder" : "Filtrer sur le nom ou l'adresse du centre"
}

View File

@@ -10,13 +10,20 @@ export class ServiceComm {
private refreshRequestSource = new BehaviorSubject<AddAction>(AddAction.None);
public refreshRequest = this.refreshRequestSource.asObservable();
private forceTranslateTitleSource = new BehaviorSubject<boolean>(false);
public forceTranslateTitle = this.forceTranslateTitleSource.asObservable();
constructor() { }
UpdatedComponentTitle(title: string) {
public UpdatedComponentTitle(title: string) {
this.componentTitleSource.next(title);
}
RefreshData(refreshAfter: AddAction) {
public RefreshData(refreshAfter: AddAction) {
this.refreshRequestSource.next(refreshAfter);
}
public ForceTranslateTitle() {
this.forceTranslateTitleSource.next(true);
}
}