refs #1138 Fix translations
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details

oggui/translations
Alvaro Puente Mella 2024-11-19 12:34:52 +01:00
parent a7472027e6
commit 3dd127d46f
16 changed files with 209 additions and 259 deletions

View File

@ -10,63 +10,6 @@
<textarea matInput formControlName="notes" placeholder="Ingresa tus notas aquí"></textarea>
</mat-form-field>
<<<<<<< Updated upstream
<mat-form-field appearance="fill" class="full-width">
<mat-label>Selecciona Comandos</mat-label>
<mat-select formControlName="commandGroup" (selectionChange)="onCommandGroupChange()">
<mat-option *ngFor="let group of availableCommandGroups" [value]="group.uuid">
{{ group.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="taskForm.get('commandGroup')?.invalid">Este campo es obligatorio</mat-error>
</mat-form-field>
<mat-form-field appearance="fill" class="full-width">
<mat-label>Selecciona Comandos Individuales (Opcional)</mat-label>
<mat-select formControlName="extraCommands" multiple>
<mat-option *ngFor="let command of availableIndividualCommands" [value]="command.uuid">
{{ command.name }}
</mat-option>
</mat-select>
</mat-form-field>
<h3 class="section-title">Fecha y hora de ejecución</h3>
<mat-divider></mat-divider>
<mat-form-field appearance="fill" class="full-width">
<mat-label>Fecha de Ejecución</mat-label>
<input matInput [matDatepicker]="picker" formControlName="date" placeholder="Selecciona una fecha">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
<mat-error *ngIf="taskForm.get('date')?.invalid">Este campo es obligatorio</mat-error>
</mat-form-field>
<mat-form-field appearance="fill" class="full-width">
<mat-label>Hora de Ejecución</mat-label>
<input matInput type="time" formControlName="time" placeholder="Selecciona una hora">
<mat-error *ngIf="taskForm.get('time')?.invalid">Este campo es obligatorio</mat-error>
</mat-form-field>
<h3 class="section-title">Selecciona destino</h3>
<mat-divider></mat-divider>
<mat-form-field appearance="fill" class="full-width">
<mat-label>Selecciona Unidad Organizacional</mat-label>
<mat-select formControlName="organizationalUnit" (selectionChange)="onOrganizationalUnitChange()">
<mat-option *ngFor="let unit of availableOrganizationalUnits" [value]="unit['@id']">
{{ unit.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="taskForm.get('organizationalUnit')?.invalid">Este campo es obligatorio</mat-error>
</mat-form-field>
<mat-form-field appearance="fill" class="full-width">
<mat-label>Selecciona aula</mat-label>
<mat-select formControlName="selectedChild" (selectionChange)="onChildChange()">
<mat-option *ngFor="let child of selectedUnitChildren" [value]="child['@id']">
{{ child.name }}
</mat-option>
</mat-select>
</mat-form-field>
=======
<h3 class="section-title">{{ 'informationSectionTitle' | translate }}</h3>
<mat-divider></mat-divider>
<mat-form-field appearance="fill" class="full-width">
@ -147,7 +90,6 @@
<div class="button-container">
<button mat-raised-button color="primary" (click)="saveTask()">{{ 'buttonSave' | translate }}</button>
</div>
>>>>>>> Stashed changes
<mat-form-field appearance="fill" class="full-width">
<mat-label>Selecciona Clientes</mat-label>

View File

@ -188,11 +188,8 @@ mat-spinner {
}
.result-card.small-card {
width: 100%;
max-width: 180px;
height: 100%;
padding: 10px;
margin: 10px 10px 10px 10px;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
display: flex;
@ -200,31 +197,34 @@ mat-spinner {
justify-content: space-between;
}
.result-card {
&.card-og-live {
background-color: #4caf50; /* Verde */
color: white;
}
&.card-busy {
background-color: #f44336; /* Naranja */
color: white;
}
&.card-windows {
background-color: #2196f3; /* Azul */
color: white;
}
&.card-linux {
background-color: #9c27b0; /* Púrpura */
color: white;
}
&.card-macos {
background-color: #ff9800; /* Rojo */
color: white;
}
&.card-off {
background-color: #9e9e9e; /* Gris */
color: white;
}
.result-card.card-og-live {
background-color: #4caf50; /* Verde */
color: white;
}
.result-card.card-busy {
background-color: #f44336; /* Naranja */
color: white;
}
.result-card.card-windows {
background-color: #2196f3; /* Azul */
color: white;
}
.result-card.card-linux {
background-color: #9c27b0; /* Púrpura */
color: white;
}
.result-card.card-macos {
background-color: #ff9800; /* Rojo */
color: white;
}
.result-card.card-off {
background-color: #9e9e9e; /* Gris */
color: white;
}
.result-title {
@ -324,3 +324,41 @@ mat-card {
.result-list {
height: auto;
}
.result-card {
display: flex;
flex-direction: column;
height: 100%;
}
.card-content-wrapper {
display: flex;
flex-direction: row;
align-items: flex-start;
flex-wrap: wrap;
}
.result-checkbox {
flex: 0 0 auto;
}
.text-content {
flex: 1 1 auto;
min-width: 0;
}
.result-title,
.result-content {
margin: 0;
}
.result-content p {
margin: 0;
}
@media (max-width: 600px) {
.card-content-wrapper {
flex-direction: column;
align-items: stretch;
}
}

View File

@ -62,33 +62,45 @@
<div class="results" joyrideStep="resultsStep" text="Aquí verás los resultados de tu búsqueda filtrada.">
<ng-container *ngIf="filteredResults && filteredResults.length > 0; else noResults">
<ng-container *ngIf="viewMode === 'grid'">
<mat-grid-list cols="8" rowHeight="1:1">
<mat-grid-list cols="8" rowHeight="1:1" >
<mat-grid-tile *ngFor="let result of filteredResults">
<mat-card
class="result-card small-card"
[ngClass]="{
'card-og-live': result.status === 'og-live',
'card-busy': result.status === 'busy',
'card-windows': result.status === 'windows' || result.status === 'windows-session',
'card-linux': result.status === 'linux' || result.status === 'linux-session',
'card-macos': result.status === 'macos',
'card-off': result.status === 'off'
}">
<mat-checkbox
[checked]="isSelected(result.name)"
(change)="onCheckboxChange($event, result.name, result['@id'])"
class="result-checkbox">
</mat-checkbox>
<mat-card-title class="result-title">{{ result.name }}</mat-card-title>
<mat-card-content class="result-content">
<p class="result-type">{{ result.type !== 'client' ? result.type : '' }}</p>
<p class="result-ip" *ngIf="result.type === 'client'">{{ result.ip }}</p>
<p class="result-mac" *ngIf="result.type === 'client'">{{ result.mac }}</p>
<p class="result-status" *ngIf="result.type === 'client'">{{ result.status }}</p>
<p *ngIf="result.type !== 'client'" class="result-internal-units">{{ 'internalUnits' | translate }}: {{ result.children.length }}</p>
<p *ngIf="result.type !== 'client'" class="result-clients">{{ 'clients' | translate }}: {{ result.clients.length }}</p>
</mat-card-content>
</mat-card>
class="result-card small-card"
[ngClass]="{
'card-og-live': result.status === 'og-live',
'card-busy': result.status === 'busy',
'card-windows': result.status === 'windows' || result.status === 'windows-session',
'card-linux': result.status === 'linux' || result.status === 'linux-session',
'card-macos': result.status === 'macos',
'card-off': result.status === 'off'
}"
matTooltip="{{ result.status }}"
>
<div class="card-content-wrapper">
<mat-checkbox
[checked]="isSelected(result.name)"
(change)="onCheckboxChange($event, result.name, result['@id'])"
class="result-checkbox"
>
</mat-checkbox>
<div class="text-content">
<mat-card-title class="result-title">{{ result.name }}</mat-card-title>
<mat-card-content class="result-content">
<p class="result-type">{{ result.type !== 'client' ? result.type : '' }}</p>
<p class="result-ip" *ngIf="result.type === 'client'">{{ result.ip }}</p>
<p class="result-mac" *ngIf="result.type === 'client'">{{ result.mac }}</p>
<p class="result-status" *ngIf="result.type === 'client'">{{ result.status }}</p>
<p *ngIf="result.type !== 'client'" class="result-internal-units">
{{ 'internalUnits' | translate }}: {{ result.children.length }}
</p>
<p *ngIf="result.type !== 'client'" class="result-clients">
{{ 'clients' | translate }}: {{ result.clients.length }}
</p>
</mat-card-content>
</div>
</div>
</mat-card>
</mat-grid-tile>
</mat-grid-list>
</ng-container>
@ -109,7 +121,7 @@
</div>
</ng-container>
<div class="paginator-container" joyrideStep="paginationStep" text="Usa el paginador para navegar entre los resultados.">
<div class="paginator-container">
<mat-paginator [length]="length" [pageSize]="itemsPerPage" [pageIndex]="page" [pageSizeOptions]="pageSizeOptions" (page)="onPageChange($event)">
</mat-paginator>
</div>

View File

@ -485,8 +485,7 @@ export class AdvancedSearchComponent {
'saveFiltersStep',
'sendActionStep',
'addPxeStep',
'resultsStep',
'paginationStep'
'resultsStep'
],
showPrevButton: true,
themeColor: '#3f51b5'

View File

@ -2,16 +2,16 @@
<button mat-icon-button color="primary" (click)="iniciarTour()">
<mat-icon>help</mat-icon>
</button>
<h2 class="title" i18n="@@adminImagesTitle" joyrideStep="title3Step" text="En esta pantalla se podran administrar todos los clientes del sistema sin jerarquias.">{{ 'adminImagesTitle' | translate }}</h2>
<h2 class="title" i18n="@@adminImagesTitle" joyrideStep="clientTabtitleStep" text="En esta pantalla se podran administrar todos los clientes del sistema sin jerarquias.">{{ 'adminImagesTitle' | translate }}</h2>
<div class="images-button-row">
<button mat-flat-button color="primary" (click)="resetFilters()" joyrideStep="resetFiltersStep" text="Reinicia los filtros aplicados para mostrar todos los clientes.">{{ 'resetFiltersButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="addClient($event)" joyrideStep="addClientStep" text="Añade un nuevo cliente a la lista.">{{ 'addClientButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="resetFilters()" joyrideStep="clientTabResetFiltersStep" text="Reinicia los filtros aplicados para mostrar todos los clientes.">{{ 'resetFiltersButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="addClient($event)" joyrideStep="clientTabaddClientStep" text="Añade un nuevo cliente a la lista.">{{ 'addClientButton' | translate }}</button>
</div>
</div>
<mat-divider class="divider"></mat-divider>
<div class="search-container" joyrideStep="searchContainerStep" text="Filtra los clientes por nombre, IP, MAC o unidad organizativa.">
<div class="search-container" joyrideStep="clientTabsearchContainerStep" text="Filtra los clientes por nombre, IP, MAC o unidad organizativa.">
<mat-form-field appearance="fill" class="search-string">
<mat-label i18n="@@searchLabel">{{ 'searchClientNameLabel' | translate }}</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['name']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
@ -48,7 +48,7 @@
</div>
<div *ngIf="loading">
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8" joyrideStep="tableStep" text="Lista de clientes filtrados por tus criterios de búsqueda.">
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8" joyrideStep="clientTabtableStep" text="Lista de clientes filtrados por tus criterios de búsqueda.">
<ng-container *ngFor="let column of columns" [matColumnDef]="column.columnDef">
<th mat-header-cell *matHeaderCellDef> {{ column.header }} </th>
<td mat-cell *matCellDef="let client" >
@ -79,7 +79,7 @@
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef i18n="@@columnActions" style="text-align: center;">{{ 'columnActions' | translate }}</th>
<td mat-cell *matCellDef="let client" style="text-align: center;" joyrideStep="actionsStep" text="Acciones disponibles para cada cliente, como ver, editar o eliminar.">
<td mat-cell *matCellDef="let client" style="text-align: center;" joyrideStep="clientTabactionsStep" text="Acciones disponibles para cada cliente, como ver, editar o eliminar.">
<button *ngIf="!syncStatus" mat-icon-button color="primary" (click)="getStatus(client)"><mat-icon>sync</mat-icon></button>
<button *ngIf="syncStatus" mat-icon-button color="primary"><mat-spinner diameter="24"></mat-spinner></button>
<button mat-icon-button color="info" (click)="handleClientClick($event, client)"><mat-icon i18n="@@deleteElementTooltip">visibility</mat-icon></button>
@ -94,7 +94,7 @@
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<div class="paginator-container" joyrideStep="paginationStep" text="Navega entre las páginas de resultados utilizando el paginador.">
<div class="paginator-container" joyrideStep="clientTabpaginationStep" text="Navega entre las páginas de resultados utilizando el paginador.">
<mat-paginator [length]="length"
[pageSize]="itemsPerPage"
[pageIndex]="page"

View File

@ -196,13 +196,13 @@ export class ClientTabViewComponent {
iniciarTour(): void {
this.joyrideService.startTour({
steps: [
'title3Step',
'resetFiltersStep',
'addClientStep',
'searchContainerStep',
'tableStep',
'actionsStep',
'paginationStep'
'clientTabtitleStep',
'clientTabResetFiltersStep',
'clientTabaddClientStep',
'clientTabsearchContainerStep',
'clientTabtableStep',
'clientTabactionsStep',
'clientTabpaginationStep'
],
showPrevButton: true,
themeColor: '#3f51b5'

View File

@ -194,14 +194,8 @@ mat-spinner {
.result-card {
width: 100%;
max-width: 250px;
<<<<<<< HEAD
height: 250px;
}
=======
height: 250px;
}
>>>>>>> develop
.paginator-container {
display: flex;
justify-content: center;

View File

@ -4,8 +4,8 @@
<button mat-icon-button color="primary" (click)="iniciarTour()">
<mat-icon>help</mat-icon>
</button>
<h2 class="title" joyrideStep="titleStep" text="{{ 'titleStepText' | translate }}">{{ 'adminGroupsTitle' | translate }}</h2>
<div class="groups-button-row" joyrideStep="addStep" text="{{ 'addStepText' | translate }}">
<h2 class="title" joyrideStep="groupsTitleStepText" text="{{ 'groupsTitleStepText' | translate }}">{{ 'adminGroupsTitle' | translate }}</h2>
<div class="groups-button-row" joyrideStep="addStep" text="{{ 'groupsAddStepText' | translate }}">
<button mat-flat-button color="primary" (click)="addOU($event)" matTooltip="{{ 'newOrganizationalUnitTooltip' | translate }}" matTooltipShowDelay="1000">{{ 'newOrganizationalUnitButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="addClient($event)" matTooltipShowDelay="1000">{{ 'newClientButton' | translate }}</button>
<button mat-raised-button (click)="openBottomSheet()" joyrideStep="keyStep" text="{{ 'keyStepText' | translate }}" matTooltipShowDelay="1000">{{ 'legendButton' | translate }}</button>

View File

@ -453,7 +453,7 @@ export class GroupsComponent implements OnInit {
iniciarTour(): void {
this.joyrideService.startTour({
steps: ['titleStep', 'addStep', 'keyStep', 'unitStep', 'elementsStep', 'tabsStep'],
steps: ['groupsTitleStepText', 'addStep', 'keyStep', 'unitStep', 'elementsStep', 'tabsStep'],
showPrevButton: true,
themeColor: '#3f51b5'
});

View File

@ -77,9 +77,6 @@
{{ unit.description }}
</mat-option>
</mat-select>
<<<<<<< HEAD
<mat-error>{{ 'hardwareProfileError' | translate }}</mat-error>
=======
</mat-form-field>
<mat-form-field class="form-field">
@ -89,7 +86,6 @@
{{ repository.name }}
</mat-option>
</mat-select>
>>>>>>> develop
</mat-form-field>
</form>

View File

@ -1,8 +1,4 @@
<<<<<<< HEAD
<h2 mat-dialog-title>{{ 'addImageTitle' | translate }}</h2>
=======
<h2 mat-dialog-title>{{ imageId ? 'Editar' : 'Crear' }} imagen</h2>
>>>>>>> develop
<mat-dialog-content class="dialog-content">
<form [formGroup]="imageForm" (ngSubmit)="saveImage()" class="image-form">
@ -12,9 +8,6 @@
</mat-form-field>
<mat-form-field appearance="fill" class="form-field">
<<<<<<< Updated upstream
<mat-label>Descripción</mat-label>
=======
<mat-label>{{ 'repositoryLabel' | translate }}</mat-label>
<mat-select formControlName="imageRepository" required>
<mat-option *ngFor="let imageRepository of repositories" [value]="imageRepository['@id']">
@ -25,7 +18,6 @@
<mat-form-field appearance="fill" class="form-field">
<mat-label>{{ 'descriptionLabel' | translate }}</mat-label>
>>>>>>> Stashed changes
<input matInput formControlName="description" name="description">
</mat-form-field>
@ -35,13 +27,8 @@
</mat-form-field>
<mat-form-field appearance="fill" class="form-field">
<<<<<<< HEAD
<mat-label>{{ 'softwareProfileLabel' | translate }}</mat-label>
<mat-select formControlName="softwareProfile" required>
=======
<mat-label>Perfil de software</mat-label>
<mat-select formControlName="softwareProfile">
>>>>>>> develop
<mat-option *ngFor="let profile of softwareProfiles" [value]="profile['@id']">
{{ profile.description }}
</mat-option>

View File

@ -1,11 +1,5 @@
<div class="header-container">
<<<<<<< Updated upstream
<h2 class="title">Administrar imágenes</h2>
<div class="images-button-row">
<button mat-flat-button color="primary" (click)="addImage()">Añadir imagen</button>
</div>
=======
<button mat-icon-button color="primary" (click)="iniciarTour()">
<mat-icon>help</mat-icon>
</button>
@ -14,7 +8,6 @@
<button mat-flat-button color="primary" (click)="addImage()">
{{ 'addImageButton' | translate }}
</button>
>>>>>>> Stashed changes
</div>
</div>
@ -28,8 +21,6 @@
</mat-form-field>
</div>
<<<<<<< HEAD
<<<<<<< Updated upstream
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container *ngFor="let column of columns" [matColumnDef]="column.columnDef">
<th mat-header-cell *matHeaderCellDef> {{ column.header }} </th>
@ -44,7 +35,6 @@
</ng-container>
</td>
</ng-container>
=======
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8" joyrideStep="imagesTable" text="Esta tabla muestra las imágenes disponibles.">
<ng-container *ngFor="let column of columns" [matColumnDef]="column.columnDef">
<th mat-header-cell *matHeaderCellDef> {{ column.header }} </th>
@ -59,8 +49,6 @@
</ng-container>
</td>
</ng-container>
>>>>>>> c168c87fc9ebcc4b5cf9a68effa16bdb2a848e00
>>>>>>> develop
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef i18n="@@columnActions" style="text-align: center;" joyrideStep="actionsHeader" text="Acciones disponibles para cada imagen.">Acciones</th>
@ -85,7 +73,6 @@
(page)="onPageChange($event)">
</mat-paginator>
</div>
=======
<div class="search-container">
<mat-form-field appearance="fill" class="search-string">
<mat-label>{{ 'searchLabel' | translate }}</mat-label>
@ -133,4 +120,3 @@
(page)="onPageChange($event)">
</mat-paginator>
</div>
>>>>>>> Stashed changes

View File

@ -1,8 +1,4 @@
<<<<<<< Updated upstream
<h2 mat-dialog-title>{{ isEditMode ? 'Editar' : 'Añadir' }} plantilla </h2>
=======
<h2 mat-dialog-title>{{ isEditMode ? ('editTemplateTitle' | translate) : ('addTemplateTitle' | translate) }}</h2>
>>>>>>> Stashed changes
<mat-dialog-content>
<div class="spacing-container">
@ -26,13 +22,6 @@
</div>
</mat-dialog-content>
<<<<<<< Updated upstream
<mat-dialog-actions align="end">
<button mat-button type="button" (click)="onCancel()">Cancelar</button>
<button mat-raised-button color="primary" type="submit" (click)="onSave()" [disabled]="!templateForm.valid">
{{ isEditMode ? 'Actualizar' : 'Crear' }}
</button>
=======
<mat-dialog-actions>
<div class="actions-container">
<button mat-flat-button color="accent" [matMenuTriggerFor]="templateMenu">
@ -50,5 +39,4 @@
</button>
</div>
</div>
>>>>>>> Stashed changes
</mat-dialog-actions>

View File

@ -4,15 +4,10 @@ import {DatePipe} from "@angular/common";
import {MatDialog} from "@angular/material/dialog";
import {HttpClient} from "@angular/common/http";
import {ToastrService} from "ngx-toastr";
import {CreateImageComponent} from "../images/create-image/create-image.component";
import {DeleteModalComponent} from "../../shared/delete_modal/delete-modal/delete-modal.component";
<<<<<<< HEAD
import { CreateRepositoryComponent } from './create-repository/create-repository.component';
import { JoyrideService } from 'ngx-joyride';
=======
import {CreateRepositoryComponent} from "./create-repository/create-repository.component";
import { Router } from '@angular/router';
>>>>>>> develop
@Component({
selector: 'app-repositories',
@ -58,11 +53,8 @@ export class RepositoriesComponent {
public dialog: MatDialog,
private http: HttpClient,
private toastService: ToastrService,
<<<<<<< HEAD
private joyrideService: JoyrideService
=======
private joyrideService: JoyrideService,
private router: Router
>>>>>>> develop
) {}
ngOnInit(): void {

View File

@ -19,6 +19,8 @@
"labelOrganizationalUnit": "Organizational Unit",
"buttonCancel": "Cancel",
"buttonAdd": "Add",
"addButton": "Add",
"addClientDialogTitle": "Add Client",
"dialogTitleEditUser": "Edit User",
"labelCurrentPassword": "Current password",
"labelNewPassword": "New password",
@ -36,13 +38,15 @@
"checkboxOrgOperator": "Organizational Unit Operator",
"checkboxOrgMinimal": "Minimal Organizational Unit",
"checkboxUserRole": "User",
"titleStepText": "On this screen, you can manage the calendars of remote teams connected to the UDS service.",
"groupsTitleStepText": "On this screen, you can manage the main organizational units (Faculties, Classrooms, Classroom Groups, and clients).",
"titleStepText": "On this screen, you can manage the calendars of remote teams connected to the UDS service",
"groupsAddStepText": "Click to add a new organizational unit or client.",
"adminCalendarsTitle": "Manage calendars",
"addButtonStepText": "Click here to add a new calendar.",
"addCalendar": "Add calendar",
"searchStepText": "Use this search bar to filter existing calendars.",
"searchCalendarLabel": "Search calendar name",
"tableStepText": "Here you can see the existing calendars with their features and configurations.",
"tableStepText": "Here are the existing calendars with their characteristics and settings.",
"actionsStepText": "Access the available actions for each calendar here.",
"editCalendar": "Edit calendar",
"remoteAvailability": "Remote availability?",
@ -52,7 +56,7 @@
"endTime": "End time",
"endTimePlaceholder": "Select end time",
"reasonLabel": "Reason",
"reasonPlaceholder": "Reason for exception",
"reasonPlaceholder": "Reason for the exception",
"startDate": "Start date",
"endDate": "End date",
"buttonSave": "Save",
@ -60,7 +64,7 @@
"addCommandGroupStepText": "Click to add a new command group.",
"addCommandGroup": "Add Command Group",
"searchGroupNameLabel": "Search group name",
"loadingStepText": "Wait while command groups are loading.",
"loadingStepText": "Wait while the command groups are loading.",
"viewCommands": "View commands",
"paginationStepText": "Navigate between command group pages using the paginator.",
"commandGroupDetailsTitle": "Command Group Details",
@ -91,12 +95,12 @@
"statusColumn": "Status",
"enabled": "Enabled",
"disabled": "Disabled",
"adminCommandsTitle": "Command and Procedure Traces",
"resetFiltersStepText": "Click to reset filters and see all traces.",
"adminCommandsTitle": "Command and procedure traces",
"resetFiltersStepText": "Click to reset the applied filters and see all traces.",
"resetFilters": "Reset filters",
"clientSelectStepText": "Select a client to view associated traces.",
"clientSelectStepText": "Select a client to see the associated traces.",
"selectClientPlaceholder": "Select a client",
"commandSelectStepText": "Select a command to view specific traces for that command.",
"commandSelectStepText": "Select a command to see the specific traces of that command.",
"selectCommandPlaceholder": "Select a command",
"taskDetailsTitle": "Task Details",
"taskId": "Task ID",
@ -112,15 +116,15 @@
"informationSectionTitle": "Information",
"informationLabel": "Information",
"notesPlaceholder": "Enter your notes here",
"commandSelectionSectionTitle": "Command Selection",
"commandSelectionSectionTitle": "Command selection",
"selectCommandsLabel": "Select Commands",
"requiredFieldError": "This field is required",
"executionDateTimeSectionTitle": "Execution Date and Time",
"executionDateTimeSectionTitle": "Execution date and time",
"executionDateLabel": "Execution Date",
"selectDatePlaceholder": "Select a date",
"executionTimeLabel": "Execution Time",
"selectTimePlaceholder": "Select a time",
"destinationSelectionSectionTitle": "Select Destination",
"destinationSelectionSectionTitle": "Select destination",
"selectOrganizationalUnitLabel": "Select Organizational Unit",
"selectClassroomLabel": "Select Classroom",
"selectAllClients": "Select all",
@ -144,17 +148,18 @@
"commandScriptPlaceholder": "Command script",
"readOnlyLabel": "Read only",
"enabledLabel": "Enabled",
"cancelButton": "Cancel",
"generalTabLabel": "General",
"tabsStepText": "Use the tabs to access different options for viewing and searching organizational units and clients.",
"adminGroupsTitle": "Manage Groups",
"newOrganizationalUnitTooltip": "Open modal to create organizational units of any type (Center, Classroom, Group of classrooms, or Group of clients)",
"tabsStepText": "Use the tabs to access different viewing and search options for organizational units and clients.",
"adminGroupsTitle": "Manage groups",
"newOrganizationalUnitTooltip": "Open modal to create organizational units of any type (Center, Classroom, Classroom Group, or Client Group)",
"newOrganizationalUnitButton": "New Organizational Unit",
"newClientButton": "New Client",
"keyStepText": "The legend will show you the types of organizational units and their corresponding icons.",
"keyStepText": "The legend will show you the types of organizational units and their corresponding icons",
"legendButton": "Legend",
"unitStepText": "This section shows the organizational units of type 'Center'.",
"unitStepText": "This is the section where 'Center' type organizational units will be displayed",
"organizationalUnitTitle": "Centers",
"elementsStepText": "This section allows you to view internal units of the selected center and navigate through them.",
"elementsStepText": "This is the section to view internal units of the selected center and navigate through them.",
"internalElementsTitle": "Internal elements",
"noInternalElementsMessage": "No internal elements",
"viewTreeTooltip": "View unit as a tree",
@ -167,17 +172,17 @@
"deleteElementTooltip": "Delete this element",
"deleteElementMenu": "Delete element",
"executeCommandTooltip": "Execute command on this element",
"advancedSearchTabLabel": "Advanced Search",
"advancedSearchTabLabel": "Advanced search",
"clientsTabLabel": "Clients",
"organizationalUnitsTabLabel": "Organizational Units",
"viewTreeTitle": "View Organizational Unit Tree",
"organizationalUnitsTabLabel": "Organizational units",
"viewTreeTitle": "View organizational unit tree",
"toggleNodeAriaLabel": "Toggle node",
"closeButton": "Close",
"orgUnitPropertiesTitle": "Organizational Unit Properties",
"generalDataTab": "General Data",
"orgUnitPropertiesTitle": "Organizational unit properties",
"generalDataTab": "General data",
"propertyHeader": "Property",
"valueHeader": "Value",
"classroomNetworkPropertiesTab": "Classroom and Network Properties",
"classroomNetworkPropertiesTab": "Classroom and network properties",
"editOrgUnitTitle": "Edit Organizational Unit",
"generalStepLabel": "General",
"typeLabel": "Type",
@ -192,12 +197,12 @@
"associatedCalendarLabel": "Associated Calendar",
"backButton": "Back",
"additionalInfoStepLabel": "Additional Information",
"networkSettingsStepLabel": "Network Configuration",
"proxyUrlLabel": "Proxy Server URL",
"dnsIpLabel": "DNS Server IP",
"netmaskLabel": "Network Mask",
"networkSettingsStepLabel": "Network Settings",
"proxyUrlLabel": "Proxy server URL",
"dnsIpLabel": "DNS server IP",
"netmaskLabel": "Netmask",
"routerLabel": "Router",
"ntpIpLabel": "NTP Server IP",
"ntpIpLabel": "NTP server IP",
"p2pModeLabel": "P2P Mode",
"p2pTimeLabel": "P2P Time",
"mcastIpLabel": "Multicast IP",
@ -210,14 +215,14 @@
"validationToggle": "Validation",
"submitButton": "Add",
"addOrgUnitTitle": "Add Organizational Unit",
"createOrgUnitparentLabel": "Parent Organizational Unit",
"createOrgUnitparentLabel": "Parent organizational unit",
"noParentOption": "--",
"nextServerLabel": "NextServer",
"bootFileNameLabel": "bootFileName",
"orgUnitTitle": "Organizational Unit",
"classroomGroupsTitle": "Classroom Groups",
"orgUnitTitle": "Organizational unit",
"classroomGroupsTitle": "Classroom groups",
"classroomTitle": "Classroom",
"clientGroupsTitle": "Client Groups",
"clientGroupsTitle": "Client groups",
"clientTitle": "Client",
"executeCommandOrGroupTitle": "Execute Command or Command Group",
"selectCommandLabel": "Select Command",
@ -227,46 +232,47 @@
"organizationalUnitLabel": "Parent",
"ogLiveLabel": "OgLive",
"serialNumberLabel": "Serial Number",
"netifaceLabel": "Network Interface",
"netDriverLabel": "Network Driver",
"netifaceLabel": "Network interface",
"netDriverLabel": "Network driver",
"macLabel": "MAC",
"macError": "Invalid MAC format. Valid example: 00:11:22:33:44:55",
"ipLabel": "IP Address",
"ipError": "Invalid IP address format. Valid example: 127.0.0.1",
"templateLabel": "PXE Template",
"digitalBoard": "Digital Board",
"digitalBoard": "Digital board",
"projectorAlt": "Projector",
"clientAlt": "Client",
"saveDispositionButton": "Save Disposition",
"saveDispositionButton": "Save disposition",
"actionsModalTitle": "Actions",
"adminOuTitle": "Manage Organizational Units",
"resetFiltersButton": "Reset Filters",
"adminOuTitle": "Manage organizational units",
"resetFiltersButton": "Reset filters",
"addOUButton": "Add OU",
"searchLabelOu": "Search OU name",
"typeLabel": "Type",
"macHint": "Example: 00:11:22:33:44:55",
"ipHint": "Example: 123.1.1.1",
"allOption": "All",
"centerOption": "Center",
"classroomsGroupOption": "Classroom Groups",
"classroomOption": "Classroom",
"clientsGroupOption": "PC Groups",
"roomMapOption": "Classroom Layout",
"clientDetailsTitle": "Client Details",
"roomMapOption": "Classroom map",
"clientDetailsTitle": "Client details",
"commandsButton": "Commands",
"networkPropertiesTab": "Network Properties",
"networkPropertiesTab": "Network properties",
"disksPartitionsTitle": "Disks/Partitions",
"diskTitle": "Disk",
"diskUsedLabel": "Used",
"diskTotalLabel": "Total",
"diskImageAssistantTitle": "Disk Image Assistant",
"diskImageAssistantTitle": "Disk image assistant",
"partitionColumn": "Partition",
"isoImageColumn": "ISO Image",
"ogliveColumn": "OgLive",
"selectImageOption": "Select Image",
"selectImageOption": "Select image",
"selectOgLiveOption": "Select OgLive",
"saveAssociationsButton": "Save Associations",
"partitionAssistantTitle": "Partitioning Assistant",
"partitionAssistantTitle": "Partition assistant",
"diskSizeLabel": "Size",
"partitionTypeColumn": "Partition Type",
"partitionTypeColumn": "Partition type",
"partitionSizeColumn": "Size (MB)",
"usageColumn": "Usage (%)",
"formatColumn": "Format",
@ -274,63 +280,65 @@
"linuxOption": "LINUX",
"cacheOption": "CACHE",
"deleteButton": "Delete",
"searchTitle": "Advanced Search",
"searchTitle": "Advanced search",
"selectFilterLabel": "Select filter",
"gridViewButton": "Grid",
"listViewButton": "List",
"selectOptionLabel": "Select an option",
"namePlaceholder": "Organizational Unit",
"namePlaceholder": "Organizational unit",
"selectAllButton": "Select/Deselect All",
"saveFiltersButton": "Save Filters",
"sendFiltersButton": "Send Action",
"addPxeButton": "Add PXE file",
"internalUnits": "Internal Units",
"internalUnits": "Internal units",
"noResultsMessage": "No results to display.",
"imagesTitle": "Manage Images",
"addImageButton": "Add Image",
"imagesTitle": "Manage images",
"addImageButton": "Add image",
"searchNameDescription": "Search images by name to quickly find a specific image.",
"searchDefaultDescription": "Filter images to show only default or non-default images.",
"searchDefaultLabel": "Default Image",
"searchDefaultLabel": "Default image",
"searchInstalledDescription": "Filter images to show only those installed on the OgBoot server.",
"searchInstalledLabel": "Installed on OgBoot Server",
"searchInstalledLabel": "Installed on OgBoot server",
"tableDescription": "Here is the list of available images to manage.",
"actionsColumnHeader": "Actions",
"viewIcon": "visibility",
"editIcon": "edit",
"installOption": "Install",
"uninstallOption": "Uninstall",
"setDefaultOption": "Set as Default Image",
"setDefaultOption": "Set as default image",
"paginationDescription": "Navigate between image pages using the paginator.",
"detailsTitle": "Details of {{ name }}",
"editTemplateTitle": "Edit Template",
"addTemplateTitle": "Add Template",
"editTemplateTitle": "Edit template",
"addTemplateTitle": "Add template",
"templateNameLabel": "Template Name",
"templateNamePlaceholder": "Enter the template name",
"templateContentPlaceholder": "Enter the template content",
"loadTemplateModelButton": "Load Template Model",
"diskModel": "Disk Boot",
"loadTemplateModelButton": "Load model template",
"diskModel": "Disk boot",
"createButton": "Create",
"manageClientsTitle": "Manage Clients",
"manageClientsTitle": "Manage clients",
"syncIcon": "sync",
"addClientsTitle": "Add clients to {{ subnetName }}",
"selectedClientsTitle": "Selected Clients:",
"selectedClientsTitle": "Selected clients:",
"editClientTitle": "Edit Client",
"addClientTitle": "Add Client",
"advancedNetbootTitle": "Advanced Netboot",
"advancedNetbootTitle": "Advanced netboot",
"selectUnitLabel": "Select Organizational Unit",
"loadingUnitsOption": "Loading units...",
"selectClassLabel": "Select classroom",
"applyToAllLabel": "Select template to apply to all clients",
"saveButtonLabel": "Save",
"tableDescription": "Manage Netboot templates for each client in this table.",
"idColumnHeader": "Id",
"nameColumnHeader": "Name",
"templateColumnHeader": "Template",
"pxeImageTitle": "OgBoot Server Information",
"pxeImageTitle": "Information on ogBoot server",
"serverInfoDescription": "Access information and synchronization options on the OgBoot server.",
"syncDatabaseButton": "Sync Database",
"syncDatabaseButton": "Sync database",
"viewInfoButton": "View Information",
"adminImagesDescription": "From here you can manage the images configured on the OgBoot server.",
"searchNameDescription": "Search images by name to quickly find a specific image.",
"actionsDescription": "Manage each image with options to view, edit, delete, and more."
"actionsDescription": "Manage each image with options to view, edit, delete, and more.",
"addClientButton": "Add client",
"searchClientNameLabel": "Search client name",
"searchIPLabel": "Search IP",
"searchMACLabel": "Search MAC"
}

View File

@ -19,6 +19,8 @@
"labelOrganizationalUnit": "Unidad organizativa",
"buttonCancel": "Cancelar",
"buttonAdd": "Añadir",
"addButton": "Añadir",
"addClientDialogTitle": "Añadir Cliente",
"dialogTitleEditUser": "Editar Usuario",
"labelCurrentPassword": "Contraseña actual",
"labelNewPassword": "Nueva contraseña",
@ -36,7 +38,9 @@
"checkboxOrgOperator": "Operador de Unidad Organizativa",
"checkboxOrgMinimal": "Unidad Organizativa Mínima",
"checkboxUserRole": "Usuario",
"groupsTitleStepText": "En esta pantalla, puedes gestionar las principales unidades organizativas (Facultades, Aulas, Grupos de Aulas y clientes).",
"titleStepText": "En esta pantalla, puedes gestionar los calendarios de los equipos remotos conectados con el servicio UDS",
"groupsAddStepText": "Haz clic para añadir una nueva unidad organizativa o un cliente.",
"adminCalendarsTitle": "Administrar calendarios",
"addButtonStepText": "Haz clic aquí para añadir un nuevo calendario.",
"addCalendar": "Añadir calendario",
@ -144,6 +148,7 @@
"commandScriptPlaceholder": "Script del comando",
"readOnlyLabel": "Solo lectura",
"enabledLabel": "Habilitado",
"cancelButton": "cancelar",
"generalTabLabel": "General",
"tabsStepText": "Utiliza las pestañás para acceder a las diferentes opciones de visualización y busqueda de unidades organizativas y clientes.",
"adminGroupsTitle": "Administrar grupos",
@ -243,7 +248,8 @@
"resetFiltersButton": "Reiniciar filtros",
"addOUButton": "Añadir OU",
"searchLabelOu": "Buscar nombre de OU",
"typeLabel": "Tipo",
"macHint": "Ejemplo: 00:11:22:33:44:55",
"ipHint": "Ejemplo: 123.1.1.1",
"allOption": "Todos",
"centerOption": "Centro",
"classroomsGroupOption": "Grupos de aulas",
@ -322,7 +328,6 @@
"selectClassLabel": "Selecciona aula",
"applyToAllLabel": "Seleccione plantilla para aplicar a todos los clientes",
"saveButtonLabel": "Guardar",
"tableDescription": "Administra las plantillas de Netboot para cada cliente en esta tabla.",
"idColumnHeader": "Id",
"nameColumnHeader": "Nombre",
"templateColumnHeader": "Plantilla",
@ -331,6 +336,9 @@
"syncDatabaseButton": "Sincronizar base de datos",
"viewInfoButton": "Ver Información",
"adminImagesDescription": "Desde aquí puedes gestionar las imágenes configuradas en el servidor OgBoot.",
"searchNameDescription": "Busca imágenes por nombre para encontrar rápidamente una imagen específica.",
"actionsDescription": "Administra cada imagen con opciones para ver, editar, eliminar y más."
"actionsDescription": "Administra cada imagen con opciones para ver, editar, eliminar y más.",
"addClientButton": "Añadir cliente",
"searchClientNameLabel": "Buscar nombre de cliente",
"searchIPLabel": "Buscar IP",
"searchMACLabel": "Buscar MAC"
}