i18n: Adding new languages: Part 1 (#1882)

Co-authored-by: Jose Alberto Hernandez <alberto@blue-daemon.local>
This commit is contained in:
José Alberto Hernández
2023-10-22 20:18:05 -06:00
committed by GitHub
co-authored by Jose Alberto Hernandez
parent c7fe21e74a
commit 408f004450
432 changed files with 38051 additions and 44613 deletions
@@ -9,93 +9,93 @@
<div #userFormRef fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Username' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Username' | translate}}</mat-label>
<input matInput required formControlName="username">
<mat-error *ngIf="userForm.controls.username.hasError('required')">
{{ 'labels.inputs.Username' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Username' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Email' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Email' | translate}}</mat-label>
<input matInput [required]="userForm.controls.sendPasswordToEmail.value" formControlName="email">
<mat-error *ngIf="userForm.controls.email.hasError('email')">
{{ 'labels.inputs.Email' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.invalid' | translate }}</strong>
{{'labels.inputs.Email' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.invalid' | translate}}</strong>
</mat-error>
<mat-error *ngIf="userForm.controls.email.hasError('required')">
{{ 'labels.inputs.Email' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Email' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.First Name' | translate }}</mat-label>
<mat-label>{{'labels.inputs.First Name' | translate}}</mat-label>
<input matInput required formControlName="firstname">
<mat-error *ngIf="userForm.controls.firstname.hasError('pattern')">
{{ 'labels.inputs.First Name' | translate }} <strong>{{ "labels.commons.cannot begin with a special character or number" | translate }}</strong>
{{'labels.inputs.First Name' | translate}} <strong>{{"labels.commons.cannot begin with a special character or number" | translate}}</strong>
</mat-error>
<mat-error *ngIf="userForm.controls.firstname.hasError('required')">
{{ 'labels.inputs.First Name' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.First Name' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Last Name' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Last Name' | translate}}</mat-label>
<input matInput required formControlName="lastname">
<mat-error *ngIf="userForm.controls.lastname.hasError('pattern')">
{{ 'labels.inputs.Last Name' | translate }} <strong>{{ "labels.commons.cannot begin with a special character or number" | translate }}</strong>
{{'labels.inputs.Last Name' | translate}} <strong>{{"labels.commons.cannot begin with a special character or number" | translate}}</strong>
</mat-error>
<mat-error *ngIf="userForm.controls.lastname.hasError('required')">
{{ 'labels.inputs.Last Name' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Last Name' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<div fxFlex="48%" class="password-never-expires-wrapper">
<mat-checkbox labelPosition="before" formControlName="passwordNeverExpires" >
{{ 'labels.inputs.Override password expiry policy' | translate }}
{{'labels.inputs.Override password expiry policy' | translate}}
</mat-checkbox>
</div>
<div fxFlex="48%" class="send-password-to-email-wrapper">
<mat-checkbox labelPosition="before" formControlName="sendPasswordToEmail">
{{ 'labels.inputs.Override password expiry policy' | translate }}
{{'labels.inputs.Override password expiry policy' | translate}}
</mat-checkbox>
</div>
<mat-form-field fxFlex="48%" *ngIf="!userForm.controls.sendPasswordToEmail.value">
<mat-label>{{ 'labels.inputs.Password' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Password' | translate}}</mat-label>
<input matInput required type="password" formControlName="password">
<mat-error *ngIf="userForm.controls.password.hasError('required')">
{{ 'labels.inputs.Password' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Password' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="!userForm.controls.sendPasswordToEmail.value">
<mat-label>{{ 'labels.inputs.Repeat Password' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Repeat Password' | translate}}</mat-label>
<input matInput required type="password" formControlName="repeatPassword">
<mat-error *ngIf="userForm.controls.repeatPassword.hasError('required')">
{{ 'labels.inputs.Password' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Password' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<p fxFlex="98%" class="reset-password-error" *ngIf="userForm.errors?.passwordsDoNotMatch &&
(!userForm.controls.password.hasError('required') && !userForm.controls.repeatPassword.hasError('required'))">
{{ 'labels.inputs.Passwords' | translate }} <strong>{{ "labels.commons.do not match' | translate }}</strong>
{{'labels.inputs.Passwords' | translate}} <strong>{{"labels.commons.do not match' | translate}}</strong>
</p>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Office' | translate}}</mat-label>
<mat-select required formControlName="officeId">
<mat-option *ngFor="let office of officesData" [value]="office.id">
{{ office.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="userForm.controls.officeId.hasError('required')">
{{ 'labels.inputs.Office' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Office' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Staff' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Staff' | translate}}</mat-label>
<mat-select formControlName="staffId">
<mat-option *ngFor="let staff of staffData" [value]="staff.id">
{{ staff.displayName }}
@@ -104,14 +104,14 @@
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Roles' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Roles' | translate}}</mat-label>
<mat-select required formControlName="roles" multiple>
<mat-option *ngFor="let role of rolesData" [value]="role.id">
{{ role.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="userForm.controls.roles.hasError('required')">
{{ "labels.commons.At least one role" | translate }} <strong>{{ "labels.commons.must be selected" | translate }}</strong>
{{"labels.commons.At least one role" | translate}} <strong>{{"labels.commons.must be selected" | translate}}</strong>
</mat-error>
</mat-form-field>
@@ -120,8 +120,8 @@
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate }}</button>
<button mat-raised-button color="primary" [disabled]="!userForm.valid">{{ 'labels.buttons.Submit' | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!userForm.valid">{{'labels.buttons.Submit' | translate}}</button>
</mat-card-actions>
</form>
@@ -131,13 +131,13 @@
</div>
<ng-template #templateUserFormRef let-popover="popover">
<h2>{{ 'labels.heading.Create User' | translate }}</h2>
<p class="mw400">{{ 'labels.text.Filling Details' | translate }}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141740/Users" target="_blank">{{ 'labels.inputs.Users' | translate }}</a></p>
<h2>{{'labels.heading.Create User' | translate}}</h2>
<p class="mw400">{{'labels.text.Filling Details' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67141740/Users" target="_blank">{{'labels.inputs.Users' | translate}}</a></p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{ 'labels.buttons.Close' | translate }}</button>
<button mat-raised-button color="primary" (click)="popover.close()">{{ 'labels.buttons.Create User' | translate }}</button>
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{ 'labels.buttons.Back' | translate }}</button>
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{ 'labels.buttons.Next' | translate }}</button>
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close()">{{'labels.buttons.Create User' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</button>
</div>
</ng-template>
@@ -9,66 +9,66 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Username' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Username' | translate}}</mat-label>
<input matInput required formControlName="username"/>
<mat-error *ngIf="editUserForm.controls.username.hasError('required')">
{{ 'labels.inputs.Username' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Username' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Email' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Email' | translate}}</mat-label>
<input matInput required formControlName="email">
<mat-error *ngIf="editUserForm.controls.email.hasError('email')">
{{ 'labels.inputs.Email' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.invalid' | translate }}</strong>
{{'labels.inputs.Email' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.invalid' | translate}}</strong>
</mat-error>
<mat-error *ngIf="editUserForm.controls.email.hasError('required')">
{{ 'labels.inputs.Email' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Email' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.First Name' | translate }}</mat-label>
<mat-label>{{'labels.inputs.First Name' | translate}}</mat-label>
<input matInput required formControlName="firstname"/>
<mat-error *ngIf="editUserForm.controls.firstname.hasError('pattern')">
{{ 'labels.inputs.First Name' | translate }} <strong>{{ "labels.commons.cannot begin with a special character or number" | translate }}</strong>
{{'labels.inputs.First Name' | translate}} <strong>{{"labels.commons.cannot begin with a special character or number" | translate}}</strong>
</mat-error>
<mat-error *ngIf="editUserForm.controls.firstname.hasError('required')">
{{ 'labels.inputs.First Name' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.First Name' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Last Name' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Last Name' | translate}}</mat-label>
<input matInput required formControlName="lastname"/>
<mat-error *ngIf="editUserForm.controls.lastname.hasError('pattern')">
{{ 'labels.inputs.Last Name' | translate }} <strong>{{ "labels.commons.cannot begin with a special character or number" | translate }}</strong>
{{'labels.inputs.Last Name' | translate}} <strong>{{"labels.commons.cannot begin with a special character or number" | translate}}</strong>
</mat-error>
<mat-error *ngIf="editUserForm.controls.lastname.hasError('required')">
{{ 'labels.inputs.Last Name' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Last Name' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<div class="password-never-expires-wrapper" fxFlex="48%">
<mat-checkbox labelPosition="before" formControlName="passwordNeverExpires" >
{{ 'labels.inputs.Override password expiry policy' | translate }}
{{'labels.inputs.Override password expiry policy' | translate}}
</mat-checkbox>
</div>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Office' | translate}}</mat-label>
<mat-select required formControlName="officeId" (selectionChange)="officeChanged($event.value)">
<mat-option *ngFor="let office of officesData" [value]="office.id">
{{ office.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="editUserForm.controls.officeId.hasError('required')">
{{ 'labels.inputs.Office' | translate }} {{ "labels.commons.is" | translate }} <strong>{{ "labels.commons.required" | translate }}</strong>
{{'labels.inputs.Office' | translate}} {{"labels.commons.is" | translate}} <strong>{{"labels.commons.required" | translate}}</strong>
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Staff' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Staff' | translate}}</mat-label>
<mat-select formControlName="staffId">
<mat-option *ngFor="let staff of staffData" [value]="staff.id">
{{ staff.displayName }}
@@ -77,14 +77,14 @@
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-label>{{ 'labels.inputs.Roles' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Roles' | translate}}</mat-label>
<mat-select required formControlName="roles" multiple>
<mat-option *ngFor="let role of rolesData" [value]="role.id">
{{ role.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="editUserForm.controls.roles.hasError('required')">
{{ "labels.commons.At least one role" | translate }} <strong>{{ "labels.commons.must be selected" | translate }}</strong>
{{"labels.commons.At least one role" | translate}} <strong>{{"labels.commons.must be selected" | translate}}</strong>
</mat-error>
</mat-form-field>
@@ -93,8 +93,8 @@
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate }}</button>
<button mat-raised-button color="primary" [disabled]="!editUserForm.valid">{{ 'labels.buttons.Submit' | translate }}</button>
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
<button mat-raised-button color="primary" [disabled]="!editUserForm.valid">{{'labels.buttons.Submit' | translate}}</button>
</mat-card-actions>
</form>
+4 -7
View File
@@ -5,9 +5,6 @@ import { Routes, RouterModule } from '@angular/router';
/** Routing Imports */
import { Route } from '../core/route/route.service';
/** Translation Imports */
import { extract } from '../core/i18n/i18n.service';
/** Custom Components */
import { UsersComponent } from './users.component';
import { CreateUserComponent } from './create-user/create-user.component';
@@ -24,7 +21,7 @@ const routes: Routes = [
Route.withShell([
{
path: 'appusers',
data: { title: extract('Users'), breadcrumb: 'Users' },
data: { title: 'Users', breadcrumb: 'Users' },
children: [
{
path: '',
@@ -36,14 +33,14 @@ const routes: Routes = [
{
path: 'create',
component: CreateUserComponent,
data: { title: extract('Create User'), breadcrumb: 'Create User' },
data: { title: 'Create User', breadcrumb: 'Create User' },
resolve: {
usersTemplate: UsersTemplateResolver
}
},
{
path: ':id',
data: { title: extract('View User'), routeParamBreadcrumb: 'id' },
data: { title: 'View User', routeParamBreadcrumb: 'id' },
children: [
{
path: '',
@@ -55,7 +52,7 @@ const routes: Routes = [
{
path: 'edit',
component: EditUserComponent,
data: { title: extract('Edit User'), breadcrumb: 'Edit', routeResolveBreadcrumb: false },
data: { title: 'Edit User', breadcrumb: 'Edit', routeResolveBreadcrumb: false },
resolve: {
user: UserResolver,
usersTemplate: UsersTemplateResolver
+6 -6
View File
@@ -2,7 +2,7 @@
<div #buttonCreateUser class="in-block">
<button mat-raised-button color="primary" [routerLink]="['create']">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Create User' | translate }}
{{'labels.buttons.Create User' | translate}}
</button>
</div>
</div>
@@ -11,7 +11,7 @@
<div #filter fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)">
</mat-form-field>
</div>
@@ -21,22 +21,22 @@
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="firstname">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.First Name' | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.First Name' | translate}} </th>
<td mat-cell *matCellDef="let user"> {{ user.firstname }} </td>
</ng-container>
<ng-container matColumnDef="lastname">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Last Name' | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Last Name' | translate}} </th>
<td mat-cell *matCellDef="let user"> {{ user.lastname }} </td>
</ng-container>
<ng-container matColumnDef="email">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Email' | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Email' | translate}} </th>
<td mat-cell *matCellDef="let user"> {{ user.email }} </td>
</ng-container>
<ng-container matColumnDef="officeName">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Office' | translate }} </th>
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Office' | translate}} </th>
<td mat-cell *matCellDef="let user"> {{ user.officeName }} </td>
</ng-container>
@@ -1,15 +1,15 @@
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
<button mat-raised-button color="primary" [routerLink]="['edit']">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
{{'labels.buttons.Edit' | translate}}
</button>
<button mat-raised-button color="warn" (click)="delete()">
<fa-icon icon="trash" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Delete' | translate }}
{{'labels.buttons.Delete' | translate}}
</button>
<button mat-raised-button color="primary" (click)="changeUserPassword()">
<fa-icon icon="cog" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Change Password' | translate }}
{{'labels.buttons.Change Password' | translate}}
</button>
</div>
@@ -22,7 +22,7 @@
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
{{ 'labels.inputs.Login Name' | translate }}
{{'labels.inputs.Login Name' | translate}}
</div>
<div fxFlex="50%">
@@ -30,7 +30,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'labels.inputs.First Name' | translate }}
{{'labels.inputs.First Name' | translate}}
</div>
<div fxFlex="50%">
@@ -38,7 +38,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'labels.inputs.Last Name' | translate }}
{{'labels.inputs.Last Name' | translate}}
</div>
<div fxFlex="50%">
@@ -47,7 +47,7 @@
<div fxFlex="50%" class="mat-body-strong" *ngIf="userData.email">
{{ 'labels.inputs.Email' | translate }}
{{'labels.inputs.Email' | translate}}
</div>
<div fxFlex="50%" *ngIf="userData.email">
@@ -55,7 +55,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'labels.inputs.Office' | translate }}
{{'labels.inputs.Office' | translate}}
</div>
<div fxFlex="50%">
@@ -63,7 +63,7 @@
</div>
<div fxFlex="50%" class="mat-body-strong">
{{ 'labels.inputs.Roles' | translate }}
{{'labels.inputs.Roles' | translate}}
</div>
<div fxFlex="50%">
@@ -75,7 +75,7 @@
</div>
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{ 'Back' | translate }}</button>
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">{{ 'Back' | translate}}</button>
</div>
</mat-card-content>