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

oggui/translations
Alvaro Puente Mella 2024-11-18 12:37:52 +01:00
parent 555357f52c
commit 0cde34aedb
7 changed files with 369 additions and 317 deletions

View File

@ -7,4 +7,7 @@ import { Component } from '@angular/core';
})
export class AppComponent {
title = 'ogWebconsole';
ngOnInit() {
localStorage.setItem('language', 'es');
}
}

View File

@ -1,14 +1,9 @@
<<<<<<< Updated upstream
<h2 class="title" i18n="@@searchTitle">Búsqueda avanzada</h2>
=======
<div class="header-container">
<h2 class="title">{{ 'searchTitle' | translate }}</h2>
<button mat-icon-button color="primary" (click)="iniciarTour()">
<mat-icon>help</mat-icon>
</button>
</div>
>>>>>>> Stashed changes
<div class="container">
<div class="header" joyrideStep="filterSelectionStep" text="Selecciona entre los filtros guardados para ajustar los resultados de la búsqueda.">
<mat-form-field>
@ -47,14 +42,6 @@
<input matInput placeholder="{{ 'namePlaceholder' | translate }}" (input)="applyFilter()" [(ngModel)]="filterName">
</mat-form-field>
<<<<<<< Updated upstream
<button mat-raised-button color="primary" (click)="toggleSelectAll()">Seleccionar/Deseleccionar Todos</button>
<button mat-raised-button color="primary" (click)="saveFilters()" i18n="@@saveFiltersButton">Guardar Filtros</button>
<button mat-raised-button color="accent" (click)="sendActions()" i18n="@@sendFiltersButton" [disabled]="selectedElements.length === 0">Enviar Acción</button>
<button mat-flat-button color="primary" [disabled]="selectedElements.length === 0" (click)="onPxeBootFile()">Añadir fichero PXE</button>
=======
<button mat-raised-button color="primary" (click)="toggleSelectAll()">
{{ 'selectAllButton' | translate }}
</button>
@ -67,7 +54,6 @@
<button mat-flat-button color="primary" [disabled]="selectedElements.length === 0" (click)="onPxeBootFile()">
{{ 'addPxeButton' | translate }}
</button>
>>>>>>> Stashed changes
</div>
<div class="results" joyrideStep="resultsStep" text="Aquí verás los resultados de tu búsqueda filtrada.">

View File

@ -1,145 +1,48 @@
<<<<<<< Updated upstream
<div class="header-container">
<h2 class="title" i18n="@@adminImagesTitle">Administrar clientes</h2>
<div class="images-button-row">
<button mat-flat-button color="primary" (click)="resetFilters()">Reiniciar filtros</button>
<button mat-flat-button color="primary" (click)="addClient($event)">Añadir cliente</button>
</div>
</div>
<mat-divider class="divider"></mat-divider>
<div class="search-container">
<mat-form-field appearance="fill" class="search-string">
<mat-label i18n="@@searchLabel">Buscar nombre de cliente</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['name']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint i18n="@@searchHint">Pulsar 'enter' para buscar</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-string">
<mat-label i18n="@@searchLabel">Buscar IP</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['ip']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint i18n="@@searchHint">Pulsar 'enter' para buscar</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-string">
<mat-label i18n="@@searchLabel">Buscar MAC</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['mac']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint i18n="@@searchHint">Pulsar 'enter' para buscar</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-select">
<mat-label i18n="@@organizational-unit-label">U. Organizativa</mat-label>
<mat-select [(ngModel)]="filters['organizationalUnit.id']" (selectionChange)="search()">
<mat-option *ngFor="let unit of organizationalUnits" [value]="unit.id" >
{{ unit.name }}
</mat-option>
</mat-select>
</mat-form-field>
=======
<div class="header-container">
<button mat-icon-button color="primary" (click)="iniciarTour()">
<mat-icon>help</mat-icon>
</button>
<h2 class="title">{{ 'adminImagesTitle' | translate }}</h2>
<h2 class="title" i18n="@@adminImagesTitle" joyrideStep="title3Step" 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()">{{ 'resetFiltersButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="addClient($event)">{{ 'addClientButton' | translate }}</button>
<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>
</div>
</div>
<mat-divider class="divider"></mat-divider>
<div class="search-container">
<div class="search-container" joyrideStep="searchContainerStep" text="Filtra los clientes por nombre, IP, MAC o unidad organizativa.">
<mat-form-field appearance="fill" class="search-string">
<mat-label>{{ 'searchClientNameLabel' | translate }}</mat-label>
<input matInput placeholder="{{ 'searchPlaceholder' | translate }}" [(ngModel)]="filters['name']" (keyup.enter)="search()">
<mat-label i18n="@@searchLabel">{{ 'searchClientNameLabel' | translate }}</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['name']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint>{{ 'searchHint' | translate }}</mat-hint>
<mat-hint i18n="@@searchHint">{{ 'searchHint' | translate }}</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-string">
<mat-label>{{ 'searchIPLabel' | translate }}</mat-label>
<input matInput placeholder="{{ 'searchPlaceholder' | translate }}" [(ngModel)]="filters['ip']" (keyup.enter)="search()">
<mat-label i18n="@@searchLabel">{{ 'searchIPLabel' | translate }}</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['ip']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint>{{ 'searchHint' | translate }}</mat-hint>
<mat-hint i18n="@@searchHint">{{ 'searchHint' | translate }}</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-string">
<mat-label>{{ 'searchMACLabel' | translate }}</mat-label>
<input matInput placeholder="{{ 'searchPlaceholder' | translate }}" [(ngModel)]="filters['mac']" (keyup.enter)="search()">
<mat-label i18n="@@searchLabel">{{ 'searchMACLabel' | translate }}</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['mac']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint>{{ 'searchHint' | translate }}</mat-hint>
<mat-hint i18n="@@searchHint">{{ 'searchHint' | translate }}</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-select">
<mat-label>{{ 'organizationalUnitLabel' | translate }}</mat-label>
<mat-form-field appearance="fill" class="search-select" >
<mat-label i18n="@@organizational-unit-label">{{ 'organizationalUnitLabel' | translate }}</mat-label>
<mat-select [(ngModel)]="filters['organizationalUnit.id']" (selectionChange)="search()">
<mat-option *ngFor="let unit of organizationalUnits" [value]="unit.id">
<mat-option *ngFor="let unit of organizationalUnits" [value]="unit.id" >
{{ unit.name }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div *ngIf="loading" class="loading-container">
<mat-spinner></mat-spinner>
</div>
<div *ngIf="!loading">
<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 | translate }}</th>
<td mat-cell *matCellDef="let client">
<ng-container *ngIf="column.columnDef === 'name'">
<div class="client-info">
<div class="client-name">{{ client.name }}</div>
<div class="client-ip">{{ client.ip }}</div>
<div class="client-mac">{{ client.mac }}</div>
</div>
</ng-container>
<ng-container *ngIf="column.columnDef === 'status'">
<mat-chip>{{ client.status | translate }}</mat-chip>
</ng-container>
<ng-container *ngIf="column.columnDef !== 'status' && column.columnDef !== 'name'">
{{ column.cell(client) }}
</ng-container>
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>{{ 'columnActions' | translate }}</th>
<td mat-cell *matCellDef="let client" style="text-align: center;">
<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>visibility</mat-icon>
</button>
<button mat-icon-button color="primary" (click)="onEditClick($event, client.uuid)">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button color="warn" (click)="onDeleteClick($event, client)">
<mat-icon>delete</mat-icon>
</button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<div class="paginator-container">
<mat-paginator [length]="length"
[pageSize]="itemsPerPage"
[pageIndex]="page"
[pageSizeOptions]="pageSizeOptions"
(page)="onPageChange($event)">
</mat-paginator>
>>>>>>> Stashed changes
</div>
<div *ngIf="!loading" class="loading-container">
<mat-spinner></mat-spinner>
</div>
@ -157,7 +60,16 @@
</div>
</ng-container>
<ng-container *ngIf="column.columnDef === 'status'">
<mat-chip>{{ client.status }}</mat-chip>
<mat-chip [ngClass]="{
'chip-og-live': client.status === 'og-live',
'chip-busy': client.status === 'busy',
'chip-windows': client.status === 'windows' || client.status === 'windows-session',
'chip-linux': client.status === 'linux' || client.status === 'linux-session',
'chip-macos': client.status === 'macos',
'chip-off': client.status === 'off'
}">
{{ client.status }}
</mat-chip>
</ng-container>
<ng-container *ngIf="column.columnDef !== 'status' && column.columnDef !== 'name'">
{{ column.cell(client) }}
@ -166,7 +78,7 @@
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef i18n="@@columnActions" style="text-align: center;">Acciones</th>
<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.">
<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>

View File

@ -2,25 +2,26 @@
<button mat-icon-button color="primary" (click)="iniciarTour()">
<mat-icon>help</mat-icon>
</button>
<h2 class="title">{{ 'adminOuTitle' | translate }}</h2>
<h2 class="title" i18n="@@adminImagesTitle" joyrideStep="titleS4tep" text="Gestiona las unidades organizativas desde esta pantalla.">{{ 'resetFiltersButton' | translate }}</h2>
<div class="button-row">
<button mat-flat-button color="primary" (click)="resetFilters()">{{ 'resetFiltersButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="addOrganizationalUnit($event)">{{ 'addOUButton' | translate }}</button>
<button mat-flat-button color="primary" (click)="resetFilters()" joyrideStep="resetFiltersStep" text="Reinicia los filtros aplicados para mostrar todas las unidades organizativas.">Reiniciar filtros</button>
<button mat-flat-button color="primary" (click)="addOrganizationalUnit($event)" joyrideStep="addOUStep" text="Añade una nueva unidad organizativa.">{{ 'addOUButton' | translate }}</button>
</div>
</div>
<mat-divider class="divider"></mat-divider>
<div class="search-container">
<div class="search-container" joyrideStep="searchContainerStep" text="Filtra las unidades organizativas por nombre o tipo.">
<mat-form-field appearance="fill" class="search-string">
<mat-label>{{ 'searchLabelOu' | translate }}</mat-label>
<input matInput placeholder="{{ 'searchPlaceholder' | translate }}" [(ngModel)]="filters['name']" (keyup.enter)="search()">
<mat-label i18n="@@searchLabel">{{ 'searchLabelOu' | translate }}</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="filters['name']" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint>{{ 'searchHint' | translate }}</mat-hint>
<mat-hint i18n="@@searchHint">{{ 'searchHint' | translate }}</mat-hint>
</mat-form-field>
<mat-form-field appearance="fill" class="search-boolean">
<mat-label>{{ 'typeLabel' | translate }}</mat-label>
<mat-select [(ngModel)]="filters['type']" (selectionChange)="search()">
<mat-label i18n="@@searchLabel">{{ 'typeLabel' | translate }}</mat-label>
<mat-select [(ngModel)]="filters['type']" (selectionChange)="search()" placeholder="Seleccionar opción">
<mat-option [value]="''">{{ 'allOption' | translate }}</mat-option>
<mat-option [value]="'organizational-unit'">{{ 'centerOption' | translate }}</mat-option>
<mat-option [value]="'classrooms-group'">{{ 'classroomsGroupOption' | translate }}</mat-option>
@ -30,56 +31,38 @@
</mat-form-field>
</div>
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8" joyrideStep="tableStep" text="Aquí se muestran las unidades organizativas según los filtros aplicados.">
<ng-container *ngFor="let column of columns" [matColumnDef]="column.columnDef">
<th mat-header-cell *matHeaderCellDef> {{ column.header | translate }} </th>
<th mat-header-cell *matHeaderCellDef> {{ column.header }} </th>
<td mat-cell *matCellDef="let ou">
<ng-container *ngIf="column.columnDef !== 'available' && column.columnDef !== 'type'">
{{ column.cell(ou) }}
</ng-container>
<ng-container *ngIf="column.columnDef === 'available'">
<mat-chip *ngIf="ou.available" class="mat-chip-success">
<mat-icon class="calendar-ico">event_available</mat-icon>
</mat-chip>
<mat-chip *ngIf="!ou.available" class="mat-chip-error">
<mat-icon class="calendar-ico">event_busy</mat-icon>
</mat-chip>
<mat-chip *ngIf="ou.available" class="mat-chip-success"><mat-icon class="calendar-ico">event_available</mat-icon></mat-chip>
<mat-chip *ngIf="!ou.available" class="mat-chip-error"><mat-icon class="calendar-ico">event_busy</mat-icon></mat-chip>
</ng-container>
<ng-container *ngIf="column.columnDef === 'type'">
<mat-chip>{{ ou.type | translate }}</mat-chip>
<mat-chip>{{ ou.type }}</mat-chip>
</ng-container>
</td>
</ng-container>
<ng-container matColumnDef="actions">
<<<<<<< Updated upstream
<th mat-header-cell *matHeaderCellDef i18n="@@columnActions" style="text-align: center;">Acciones</th>
<th mat-header-cell *matHeaderCellDef i18n="@@columnActions" style="text-align: center;">{{ 'columnActions' | translate }}</th>
<td mat-cell *matCellDef="let ou" style="text-align: center;" joyrideStep="actionsStep" text="Usa estas opciones para ver, editar o eliminar una unidad organizativa.">
<button mat-icon-button color="info" (click)="onShowClick($event, ou)"><mat-icon i18n="@@deleteElementTooltip">visibility</mat-icon></button>
<button mat-icon-button color="primary" (click)="onEditClick($event, ou.uuid)" i18n="@@editImage"><mat-icon>edit</mat-icon></button>
<button mat-icon-button color="warn" (click)="onDeleteClick($event, ou)"><mat-icon>delete</mat-icon></button>
=======
<th mat-header-cell *matHeaderCellDef>{{ 'columnActions' | translate }}</th>
<td mat-cell *matCellDef="let ou">
<button mat-icon-button color="info" (click)="onShowClick($event, ou)">
<mat-icon>visibility</mat-icon>
</button>
<button mat-icon-button color="primary" (click)="onEditClick($event, ou.uuid)">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button color="warn" (click)="onDeleteClick($event, ou)">
<mat-icon>delete</mat-icon>
</button>
>>>>>>> Stashed changes
<button mat-icon-button color="info" [matMenuTriggerFor]="menu">
<mat-icon>menu</mat-icon>
</button>
<mat-menu #menu="matMenu">
<button mat-menu-item [disabled]="ou.type !== 'classroom'" (click)="roomMap(ou)">
{{ 'roomMapOption' | translate }}
<span i18n="@@viewTreeMenu"> {{ 'roomMapOption' | translate }}</span>
</button>
<button mat-menu-item [disabled]="ou.type !== 'organizational-unit'" (click)="onTreeClick(ou)">
{{ 'viewTreeMenu' | translate }}
<span i18n="@@viewTreeMenu">{{ 'viewTreeMenu' | translate }}</span>
</button>
</mat-menu>
</td>
@ -88,11 +71,8 @@
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<<<<<<< Updated upstream
=======
>>>>>>> Stashed changes
<div class="paginator-container">
<div class="paginator-container" joyrideStep="paginationStep" text="Navega entre las páginas de unidades organizativas con el paginador.">
<mat-paginator [length]="length"
[pageSize]="itemsPerPage"
[pageIndex]="page"

View File

@ -29,10 +29,6 @@ export class LoginComponent {
this.translateService.use(savedLanguage);
}
ngOnInit() {
this.changeLanguage('es');
}
onLogin() {
this.errorMessage = '';
this.isLoading = true;

View File

@ -6,9 +6,9 @@
"loginError": "Login error: {{error}}",
"labelUsers": "Users",
"labelRoles": "Roles",
"adminImagesTitle": "Manage Users",
"addUser": "Add Users",
"searchLabel": "Search Username",
"adminImagesTitle": "Manage clients",
"addUser": "Add users",
"searchLabel": "Search image name",
"searchPlaceholder": "Search",
"searchHint": "Press 'enter' to search",
"columnActions": "Actions",
@ -20,14 +20,14 @@
"buttonCancel": "Cancel",
"buttonAdd": "Add",
"dialogTitleEditUser": "Edit User",
"labelCurrentPassword": "Current Password",
"labelNewPassword": "New Password",
"labelRepeatPassword": "Repeat Password",
"labelCurrentPassword": "Current password",
"labelNewPassword": "New password",
"labelRepeatPassword": "Repeat password",
"errorPasswordMismatch": "Passwords do not match",
"buttonEdit": "Edit",
"adminRolesTitle": "Manage Roles",
"addRole": "Add Role",
"searchRoleLabel": "Search Role Name",
"addRole": "Add role",
"searchRoleLabel": "Search role name",
"dialogTitleAddRole": "Add Role",
"labelRoleName": "Name",
"sectionTitlePermissions": "Permissions:",
@ -36,12 +36,301 @@
"checkboxOrgOperator": "Organizational Unit Operator",
"checkboxOrgMinimal": "Minimal Organizational Unit",
"checkboxUserRole": "User",
"titleStepText": "On this screen, you can manage the calendars of remote teams connected with the UDS service",
"adminCalendarsTitle": "Manage Calendars",
"titleStepText": "On this screen, you can manage the calendars of remote teams connected to the UDS service.",
"adminCalendarsTitle": "Manage calendars",
"addButtonStepText": "Click here to add a new calendar.",
"addCalendar": "Add Calendar",
"addCalendar": "Add calendar",
"searchStepText": "Use this search bar to filter existing calendars.",
"searchCalendarLabel": "Search Calendar Name",
"tableStepText": "Here are the existing calendars with their characteristics and settings.",
"actionsStepText": "Access the available actions for each calendar here."
"searchCalendarLabel": "Search calendar name",
"tableStepText": "Here you can see the existing calendars with their features and configurations.",
"actionsStepText": "Access the available actions for each calendar here.",
"editCalendar": "Edit calendar",
"remoteAvailability": "Remote availability?",
"selectWeekDays": "Select the days of the week",
"startTime": "Start time",
"startTimePlaceholder": "Select start time",
"endTime": "End time",
"endTimePlaceholder": "Select end time",
"reasonLabel": "Reason",
"reasonPlaceholder": "Reason for exception",
"startDate": "Start date",
"endDate": "End date",
"buttonSave": "Save",
"adminCommandGroupsTitle": "Manage Command Groups",
"addCommandGroupStepText": "Click to add a new command group.",
"addCommandGroup": "Add Command Group",
"searchGroupNameLabel": "Search group name",
"loadingStepText": "Wait while command groups are loading.",
"viewCommands": "View commands",
"paginationStepText": "Navigate between command group pages using the paginator.",
"commandGroupDetailsTitle": "Command Group Details",
"createdBy": "Created by",
"groupId": "Group ID",
"creationDate": "Creation Date",
"includedCommands": "Included Commands",
"nameColumn": "Name",
"selectClients": "Select clients:",
"clientsLabel": "Clients",
"selectAtLeastOneClient": "You must select at least one client.",
"execute": "Execute",
"scheduleExecution": "Schedule Execution",
"editCommandGroup": "Edit command group",
"createCommandGroup": "Create command group",
"groupNameLabel": "Group Name",
"enabledToggle": "Enabled",
"availableCommandsTitle": "Available Commands",
"selectedCommandsTitle": "Selected Commands",
"manageTasksTitle": "Manage Tasks",
"addTaskStepText": "Click to add a new task.",
"addTask": "Add Task",
"searchTaskLabel": "Search task",
"idColumn": "Id",
"infoColumn": "Info",
"createdByColumn": "Created by",
"executionDateColumn": "Execution Date",
"statusColumn": "Status",
"enabled": "Enabled",
"disabled": "Disabled",
"adminCommandsTitle": "Command and Procedure Traces",
"resetFiltersStepText": "Click to reset filters and see all traces.",
"resetFilters": "Reset filters",
"clientSelectStepText": "Select a client to view associated traces.",
"selectClientPlaceholder": "Select a client",
"commandSelectStepText": "Select a command to view specific traces for that command.",
"selectCommandPlaceholder": "Select a command",
"taskDetailsTitle": "Task Details",
"taskId": "Task ID",
"status": "Status",
"notes": "Notes",
"includedCommandGroups": "Included Command Groups",
"commandGroupColumn": "Command Group",
"commandsToExecute": "Commands to execute",
"group": "Group",
"commandColumn": "Command",
"editTask": "Edit Task",
"createTask": "Create Task",
"informationSectionTitle": "Information",
"informationLabel": "Information",
"notesPlaceholder": "Enter your notes here",
"commandSelectionSectionTitle": "Command Selection",
"selectCommandsLabel": "Select Commands",
"requiredFieldError": "This field is required",
"executionDateTimeSectionTitle": "Execution Date and Time",
"executionDateLabel": "Execution Date",
"selectDatePlaceholder": "Select a date",
"executionTimeLabel": "Execution Time",
"selectTimePlaceholder": "Select a time",
"destinationSelectionSectionTitle": "Select Destination",
"selectOrganizationalUnitLabel": "Select Organizational Unit",
"selectClassroomLabel": "Select Classroom",
"selectAllClients": "Select all",
"addCommand": "Add Command",
"searchCommandLabel": "Search command name",
"executeCommandTitle": "Execute Command",
"subOrganizationalUnitLabel": "Sub-organizational Unit",
"noClientsAvailable": "No clients available",
"buttonExecute": "Execute",
"commandDetailsTitle": "Command Details",
"nameLabel": "Name",
"commentsLabel": "Comments",
"createdByLabel": "Created by",
"creationDateLabel": "Creation Date",
"scriptLabel": "Script",
"selectClientsTitle": "Select clients:",
"selectAtLeastOneClientError": "You must select at least one client.",
"editCommandTitle": "Edit Command",
"createCommandTitle": "Create Command",
"commandNamePlaceholder": "Command name",
"commandScriptPlaceholder": "Command script",
"readOnlyLabel": "Read only",
"enabledLabel": "Enabled",
"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)",
"newOrganizationalUnitButton": "New Organizational Unit",
"newClientButton": "New Client",
"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'.",
"organizationalUnitTitle": "Centers",
"elementsStepText": "This section allows you 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",
"viewTreeMenu": "View organizational chart",
"editUnitTooltip": "Edit this organizational unit",
"viewUnitTooltip": "View organizational unit details",
"viewUnitMenu": "View data",
"addInternalUnitTooltip": "Create a new internal organizational unit",
"addClientTooltip": "Register a client in this organizational unit",
"deleteElementTooltip": "Delete this element",
"deleteElementMenu": "Delete element",
"executeCommandTooltip": "Execute command on this element",
"advancedSearchTabLabel": "Advanced Search",
"clientsTabLabel": "Clients",
"organizationalUnitsTabLabel": "Organizational Units",
"viewTreeTitle": "View Organizational Unit Tree",
"toggleNodeAriaLabel": "Toggle node",
"closeButton": "Close",
"orgUnitPropertiesTitle": "Organizational Unit Properties",
"generalDataTab": "General Data",
"propertyHeader": "Property",
"valueHeader": "Value",
"classroomNetworkPropertiesTab": "Classroom and Network Properties",
"editOrgUnitTitle": "Edit Organizational Unit",
"generalStepLabel": "General",
"typeLabel": "Type",
"editOrgUnitParentLabel": "Parent",
"descriptionLabel": "Description",
"nextButton": "Next",
"classroomInfoStepLabel": "Classroom Information",
"locationLabel": "Location",
"projectorToggle": "Projector",
"boardToggle": "Board",
"capacityLabel": "Capacity",
"associatedCalendarLabel": "Associated Calendar",
"backButton": "Back",
"additionalInfoStepLabel": "Additional Information",
"networkSettingsStepLabel": "Network Configuration",
"proxyUrlLabel": "Proxy Server URL",
"dnsIpLabel": "DNS Server IP",
"netmaskLabel": "Network Mask",
"routerLabel": "Router",
"ntpIpLabel": "NTP Server IP",
"p2pModeLabel": "P2P Mode",
"p2pTimeLabel": "P2P Time",
"mcastIpLabel": "Multicast IP",
"mcastSpeedLabel": "Multicast Speed",
"mcastPortLabel": "Multicast Port",
"mcastModeLabel": "Multicast Mode",
"menuUrlLabel": "Menu URL",
"hardwareProfileLabel": "Hardware Profile",
"urlFormatError": "Invalid URL format.",
"validationToggle": "Validation",
"submitButton": "Add",
"addOrgUnitTitle": "Add Organizational Unit",
"createOrgUnitparentLabel": "Parent Organizational Unit",
"noParentOption": "--",
"nextServerLabel": "NextServer",
"bootFileNameLabel": "bootFileName",
"orgUnitTitle": "Organizational Unit",
"classroomGroupsTitle": "Classroom Groups",
"classroomTitle": "Classroom",
"clientGroupsTitle": "Client Groups",
"clientTitle": "Client",
"executeCommandOrGroupTitle": "Execute Command or Command Group",
"selectCommandLabel": "Select Command",
"selectCommandGroupLabel": "Select Command Group",
"noClientsMessage": "No clients available",
"editClientDialogTitle": "Edit Client",
"organizationalUnitLabel": "Parent",
"ogLiveLabel": "OgLive",
"serialNumberLabel": "Serial Number",
"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",
"projectorAlt": "Projector",
"clientAlt": "Client",
"saveDispositionButton": "Save Disposition",
"actionsModalTitle": "Actions",
"adminOuTitle": "Manage Organizational Units",
"resetFiltersButton": "Reset Filters",
"addOUButton": "Add OU",
"searchLabelOu": "Search OU name",
"typeLabel": "Type",
"allOption": "All",
"centerOption": "Center",
"classroomsGroupOption": "Classroom Groups",
"classroomOption": "Classroom",
"clientsGroupOption": "PC Groups",
"roomMapOption": "Classroom Layout",
"clientDetailsTitle": "Client Details",
"commandsButton": "Commands",
"networkPropertiesTab": "Network Properties",
"disksPartitionsTitle": "Disks/Partitions",
"diskTitle": "Disk",
"diskUsedLabel": "Used",
"diskTotalLabel": "Total",
"diskImageAssistantTitle": "Disk Image Assistant",
"partitionColumn": "Partition",
"isoImageColumn": "ISO Image",
"ogliveColumn": "OgLive",
"selectImageOption": "Select Image",
"selectOgLiveOption": "Select OgLive",
"saveAssociationsButton": "Save Associations",
"partitionAssistantTitle": "Partitioning Assistant",
"diskSizeLabel": "Size",
"partitionTypeColumn": "Partition Type",
"partitionSizeColumn": "Size (MB)",
"usageColumn": "Usage (%)",
"formatColumn": "Format",
"ntfsOption": "NTFS",
"linuxOption": "LINUX",
"cacheOption": "CACHE",
"deleteButton": "Delete",
"searchTitle": "Advanced Search",
"selectFilterLabel": "Select filter",
"gridViewButton": "Grid",
"listViewButton": "List",
"selectOptionLabel": "Select an option",
"namePlaceholder": "Organizational Unit",
"selectAllButton": "Select/Deselect All",
"saveFiltersButton": "Save Filters",
"sendFiltersButton": "Send Action",
"addPxeButton": "Add PXE file",
"internalUnits": "Internal Units",
"noResultsMessage": "No results to display.",
"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",
"searchInstalledDescription": "Filter images to show only those installed on the 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",
"paginationDescription": "Navigate between image pages using the paginator.",
"detailsTitle": "Details of {{ name }}",
"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",
"createButton": "Create",
"manageClientsTitle": "Manage Clients",
"syncIcon": "sync",
"addClientsTitle": "Add clients to {{ subnetName }}",
"selectedClientsTitle": "Selected Clients:",
"editClientTitle": "Edit Client",
"addClientTitle": "Add Client",
"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",
"serverInfoDescription": "Access information and synchronization options on the OgBoot server.",
"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."
}

View File

@ -6,9 +6,9 @@
"loginError": "Login error: {{error}}",
"labelUsers": "Usuarios",
"labelRoles": "Roles",
"adminImagesTitle": "Administrar usuarios",
"adminImagesTitle": "Administrar clientes",
"addUser": "Añadir usuarios",
"searchLabel": "Buscar nombre de usuario",
"searchLabel": "Buscar nombre de imagen",
"searchPlaceholder": "Búsqueda",
"searchHint": "Pulsar 'enter' para buscar",
"columnActions": "Acciones",
@ -249,29 +249,15 @@
"classroomsGroupOption": "Grupos de aulas",
"classroomOption": "Aula",
"clientsGroupOption": "Grupos de PCs",
"columnActions": "Acciones",
"roomMapOption": "Plano de aula",
"viewTreeMenu": "Ver organigrama",
"adminImagesTitle": "Administrar clientes",
"resetFiltersButton": "Reiniciar filtros",
"addClientButton": "Añadir cliente",
"searchClientNameLabel": "Buscar nombre de cliente",
"searchIPLabel": "Buscar IP",
"searchMACLabel": "Buscar MAC",
"organizationalUnitLabel": "U. Organizativa",
"searchPlaceholder": "Búsqueda",
"searchHint": "Pulsar 'enter' para buscar",
"columnActions": "Acciones",
"clientDetailsTitle": "Datos de cliente",
"commandsButton": "Comandos",
"generalDataTab": "Datos generales",
"networkPropertiesTab": "Propiedades de red",
"disksPartitionsTitle": "Discos/Particiones",
"diskTitle": "Disco",
"diskUsedLabel": "Usado",
"diskTotalLabel": "Total",
"diskImageAssistantTitle": "Asistente de imágenes en disco",
"diskLabel": "Disco",
"partitionColumn": "Partición",
"isoImageColumn": "Imagen ISO",
"ogliveColumn": "OgLive",
@ -279,15 +265,11 @@
"selectOgLiveOption": "Seleccionar OgLive",
"saveAssociationsButton": "Guardar Asociaciones",
"partitionAssistantTitle": "Asistente de particionado",
"saveButton": "Guardar",
"diskLabel": "Disco",
"diskSizeLabel": "Tamaño",
"partitionColumn": "Partición",
"partitionTypeColumn": "Tipo partición",
"partitionSizeColumn": "Tamaño (MB)",
"usageColumn": "Uso (%)",
"formatColumn": "Formatear",
"deleteColumn": "Eliminar",
"ntfsOption": "NTFS",
"linuxOption": "LINUX",
"cacheOption": "CACHE",
@ -297,154 +279,58 @@
"gridViewButton": "Cuadrícula",
"listViewButton": "Lista",
"selectOptionLabel": "Selecciona una opción",
"organizationalUnitsOption": "Unidades organizativas",
"clientsOption": "Clientes",
"nameLabel": "Nombre",
"namePlaceholder": "Unidad organizativa",
"selectAllButton": "Seleccionar/Deseleccionar Todos",
"saveFiltersButton": "Guardar Filtros",
"sendFiltersButton": "Enviar Acción",
"addPxeButton": "Añadir fichero PXE",
"internalUnits": "Unidades internas",
"clients": "Clientes",
"noResultsMessage": "No hay resultados para mostrar.",
"imagesTitle": "Administrar imágenes",
"addImageButton": "Añadir imagen",
"searchLabel": "Buscar nombre de imagen",
"searchPlaceholder": "Búsqueda",
"searchHint": "Pulsar 'enter' para buscar",
"columnActions": "Acciones",
"editButtonIcon": "edit",
"deleteButtonIcon": "delete",
"addImageTitle": "Añadir nueva imagen",
"imageNameLabel": "Nombre de la imagen",
"repositoryLabel": "Repositorio",
"descriptionLabel": "Descripción",
"commentsLabel": "Comentarios",
"softwareProfileLabel": "Perfil de software",
"remotePcLabel": "Remote Pc",
"cancelButton": "Cancelar",
"saveButton": "Guardar",
"ogBootServerStatus": "OgBoot Server Status",
"diskUsageDescription": "Visualize the server's disk usage.",
"diskUsageTitle": "Disk Usage",
"totalLabel": "Total",
"usedLabel": "Used",
"availableLabel": "Available",
"freeLabel": "Free",
"servicesStatusDescription": "View the status of critical server services.",
"servicesTitle": "Services",
"oglivesDescription": "Check the details of installed OgLives on the server.",
"installedOglivesTitle": "Installed OgLives",
"idLabel": "ID",
"kernelLabel": "Kernel",
"architectureLabel": "Architecture",
"revisionLabel": "Revision",
"serverInfoDescription": "Accede a información y opciones de sincronización en el servidor OgBoot.",
"serverInfoTitle": "Información en servidor ogBoot",
"syncDatabaseButton": "Sincronizar base de datos",
"viewInfoButton": "Ver Información",
"adminPxeDescription": "Desde aquí puedes gestionar las plantillas PXE configuradas en el servidor OgBoot.",
"adminPxeTitle": "Administrar plantillas PXE",
"addTemplateButtonDescription": "Haz clic para añadir una nueva plantilla PXE.",
"addTemplateButton": "Añadir plantilla PXE",
"searchNameDescription": "Busca plantillas PXE por nombre para localizar rápidamente una plantilla específica.",
"searchLabel": "Buscar nombre de plantilla",
"searchPlaceholder": "Búsqueda",
"searchHint": "Pulsar 'enter' para buscar",
"searchSyncDescription": "Filtra para ver solo las plantillas creadas en el servidor OgBoot.",
"createdInOgbootLabel": "Creada en ogBoot",
"selectOptionPlaceholder": "Seleccionar opción",
"allOption": "Todos",
"yesOption": "Sí",
"noOption": "No",
"tableDescription": "Aquí se muestra la lista de plantillas PXE disponibles para administrar.",
"actionsColumn": "Acciones",
"createServerButton": "Crear en servidor OgBoot",
"addClientButton": "Añadir cliente",
"deleteButton": "Eliminar",
"paginationDescription": "Navega entre las páginas de plantillas PXE usando el paginador.",
"searchNameDescription": "Busca imágenes por nombre para encontrar rápidamente una imagen específica.",
"searchDefaultDescription": "Filtra las imágenes para mostrar solo las imágenes por defecto o no por defecto.",
"searchDefaultLabel": "Imagen por defecto",
"searchInstalledDescription": "Filtra las imágenes para mostrar solo las instaladas en el servidor OgBoot.",
"searchInstalledLabel": "Instalado servidor OgBoot",
"tableDescription": "Aquí se muestra la lista de imágenes disponibles para administrar.",
"actionsColumnHeader": "Acciones",
"viewIcon": "visibility",
"editIcon": "edit",
"installOption": "Instalar",
"uninstallOption": "Desinstalar",
"setDefaultOption": "Cambiar a imagen por defecto",
"paginationDescription": "Navega entre las páginas de imágenes usando el paginador.",
"detailsTitle": "Detalles de {{ name }}",
"editTemplateTitle": "Editar plantilla",
"addTemplateTitle": "Añadir plantilla",
"templateNameLabel": "Nombre de la Plantilla",
"templateNamePlaceholder": "Introduce el nombre de la plantilla",
"templateNameError": "El nombre de la plantilla es requerido.",
"templateContentLabel": "Contenido de la Plantilla",
"templateContentPlaceholder": "Introduce el contenido de la plantilla",
"templateContentError": "El contenido de la plantilla es requerido.",
"loadTemplateModelButton": "Cargar plantilla modelo",
"ogLiveModel": "ogLive",
"diskModel": "Arranque por disco",
"cancelButton": "Cancelar",
"updateButton": "Actualizar",
"createButton": "Crear",
"manageClientsTitle": "Gestionar clientes",
"viewIcon": "visibility",
"syncIcon": "sync",
"deleteIcon": "delete",
"addClientsTitle": "Añade clientes a {{ subnetName }}",
"selectClientPlaceholder": "Seleccione un cliente",
"selectedClientsTitle": "Clientes seleccionados:",
"deleteIcon": "delete",
"cancelButton": "Cancelar",
"addButton": "Añadir",
"editClientTitle": "Editar Cliente",
"addClientTitle": "Añadir Cliente",
"selectPxeTemplateLabel": "Seleccione una plantilla PXE",
"cancelButton": "Cancelar",
"saveButton": "Guardar",
"addButton": "Añadir",
"advancedNetbootTitle": "Netboot avanzado",
"advancedNetbootDescription": "Esta sección permite la asignación masiva de plantillas de arranque a clientes.",
"advancedNetbootTitle": "Netboot avanzado",
"selectUnitLabel": "Selecciona Unidad Organizacional",
"selectUnitDescription": "Selecciona la Unidad Organizacional para listar las aulas disponibles.",
"loadingUnitsOption": "Cargando unidades...",
"requiredFieldError": "Este campo es obligatorio",
"selectClassLabel": "Selecciona aula",
"selectClassDescription": "Selecciona el aula para configurar las plantillas en sus dispositivos.",
"noClassesOption": "No hay aulas disponibles",
"applyToAllLabel": "Seleccione plantilla para aplicar a todos los clientes",
"applyToAllDescription": "Selecciona una plantilla para aplicarla a todos los clientes de esta aula.",
"saveButtonLabel": "Guardar",
"saveButtonDescription": "Haz clic para guardar la configuración actual de plantillas.",
"tableDescription": "Administra las plantillas de Netboot para cada cliente en esta tabla.",
"idColumnHeader": "Id",
"nameColumnHeader": "Nombre",
"templateColumnHeader": "Plantilla",
"selectTemplateLabel": "Seleccione una plantilla",
"selectTemplateDescription": "Selecciona una plantilla específica para cada cliente.",
"noTemplateOption": "Ninguna",
"pxeImageTitle": "Información en servidor ogBoot",
"serverInfoDescription": "Accede a información y opciones de sincronización en el servidor OgBoot.",
"serverInfoTitle": "Información en servidor OgBoot",
"syncDatabaseButton": "Sincronizar base de datos",
"viewInfoButton": "Ver Información",
"adminImagesDescription": "Desde aquí puedes gestionar las imágenes configuradas en el servidor OgBoot.",
"adminImagesTitle": "Administrar imágenes",
"addImageButtonDescription": "Haz clic para añadir una nueva imagen.",
"addImageButton": "Añadir imagen",
"searchNameDescription": "Busca imágenes por nombre para encontrar rápidamente una imagen específica.",
"searchLabel": "Buscar nombre de imagen",
"searchPlaceholder": "Búsqueda",
"searchHint": "Pulsar 'enter' para buscar",
"searchDefaultDescription": "Filtra las imágenes para mostrar solo las imágenes por defecto o no por defecto.",
"searchDefaultLabel": "Imagen por defecto",
"selectOptionPlaceholder": "Seleccionar opción",
"allOption": "Todos",
"yesOption": "Sí",
"noOption": "No",
"searchInstalledDescription": "Filtra las imágenes para mostrar solo las instaladas en el servidor OgBoot.",
"searchInstalledLabel": "Instalado servidor OgBoot",
"tableDescription": "Aquí se muestra la lista de imágenes disponibles para administrar.",
"actionsColumnHeader": "Acciones",
"actionsDescription": "Administra cada imagen con opciones para ver, editar, eliminar y más.",
"viewIcon": "visibility",
"editIcon": "edit",
"deleteIcon": "delete",
"installOption": "Instalar",
"uninstallOption": "Desinstalar",
"setDefaultOption": "Cambiar a imagen por defecto",
"paginationDescription": "Navega entre las páginas de imágenes usando el paginador."
"actionsDescription": "Administra cada imagen con opciones para ver, editar, eliminar y más."
}