Merge pull request 'feat(oggui): visor de logs de disco en tiempo real para componentes de estado global' (#94) from devel into main
testing/ogGui-multibranch/pipeline/head There was a failure building this commit Details
oggui-debian-package/pipeline/head This commit looks good Details

Reviewed-on: #94
pull/97/head
Nicolas Arenas 2026-05-18 15:50:41 +02:00
commit 2b08510e12
17 changed files with 704 additions and 265 deletions

View File

@ -1,5 +1,25 @@
# Changelog
## [1.7.0] - 2026-05-14
### Added
- Visor de logs de disco en las páginas de estado de ogcore, ogboot, ogdhcp
y ogrepository: muestra entries del journal en tiempo real sin necesidad
de oglog/OpenSearch, con polling cada 5 segundos y modo live/pausa
- Soporte de múltiples `SYSLOG_IDENTIFIER` por componente: ogdhcp incluye
kea, ogrepository incluye samba, ogboot incluye tftpd-hpa
- Host basado en IP del servidor seleccionado para lectura del fichero de
journal remoto (`/var/log/journal/remote/<IP>.journal`)
### Changed
- `StatusLogsComponent`: `@Input() identifier` reemplazado por
`@Input() identifiers: string[]`; respuesta parseada como array de entries
JSON estructurados con formato `[timestamp] IDENTIFIER: mensaje`
## [1.6.1] - 2026-05-14
### Improved
- Modificada recepcion de mensajes de mercure durante la importación
## [1.6.0] - 2026-05-08
### Added
- Añadida opción en Administración para importar una base de datos OG 1.1 en la nueva version. Permite subir fichero .sql o .zip o usar parametros de conexión a la base de datos de OG 1.1

View File

@ -61,6 +61,19 @@ pipeline {
}
}
stage('Generate Changelog (Devel)') {
when {
branch 'devel'
}
steps {
script {
def devName = params.DEV_NAME ? params.DEV_NAME : env.DEFAULT_DEV_NAME
def devEmail = params.DEV_EMAIL ? params.DEV_EMAIL : env.DEFAULT_DEV_EMAIL
generateDebianChangelog(env.BUILD_DIR, devName, devEmail, "devel")
}
}
}
stage('Build') {
steps {
@ -97,20 +110,38 @@ pipeline {
}
}
}
stage ('Publish to Debian Repository (Devel)') {
when {
branch 'devel'
}
agent { label 'debian-repo' }
steps {
script {
def versionPattern = "-${env.BUILD_NUMBER}~devel"
publicarEnAptly('/var/tmp/opengnsys/debian-repo/oggui', 'devel', versionPattern)
}
}
}
}
post {
success {
script {
// Solo lanzar cuando el build sea exitoso y en la rama main
if (env.BRANCH_NAME == 'main') {
build job: 'Aptly publish nightly repository',
wait: false,
parameters: [
string(name: 'TRIGGERED_BY', value: "${env.JOB_NAME}-${env.BUILD_NUMBER}")
]
build job: 'Aptly publish nightly repository',
wait: false,
parameters: [
string(name: 'TRIGGERED_BY', value: "${env.JOB_NAME}-${env.BUILD_NUMBER}")
]
}
if (env.BRANCH_NAME == 'devel') {
build job: 'Aptly publish develop repository',
wait: false,
parameters: [
string(name: 'TRIGGERED_BY', value: "${env.JOB_NAME}-${env.BUILD_NUMBER}")
]
}
}
}
always {
notifyBuildStatus('opengnsys@qindel.com')

View File

@ -201,6 +201,7 @@ import { OgcoreStatusComponent } from './components/global-status/ogcore-status/
import { GlobalOgbootStatusComponent } from './components/global-status/ogboot-status/ogboot-status.component';
import { OgrepositoryStatusComponent } from './components/global-status/ogrepository-status/ogrepository-status.component';
import { OgdhcpStatusComponent } from './components/global-status/ogdhcp-status/ogdhcp-status.component';
import { StatusLogsComponent } from './components/global-status/status-logs/status-logs.component';
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './locale/', '.json');
}
@ -344,6 +345,7 @@ registerLocaleData(localeEs, 'es-ES');
GlobalOgbootStatusComponent,
OgrepositoryStatusComponent,
OgdhcpStatusComponent,
StatusLogsComponent,
ImportLegacyComponent,
PageNotFoundComponent
],

View File

@ -1,4 +1,4 @@
import { Component } from '@angular/core';
import { Component, NgZone, ChangeDetectorRef } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { MatSnackBar } from '@angular/material/snack-bar';
@ -23,7 +23,9 @@ export class ImportLegacyComponent {
private http: HttpClient,
private snackBar: MatSnackBar,
private translate: TranslateService,
private configService: ConfigService
private configService: ConfigService,
private ngZone: NgZone,
private cdr: ChangeDetectorRef
) {
this.dbForm = this.fb.group({
legacyHost: ['', Validators.required],
@ -58,23 +60,27 @@ export class ImportLegacyComponent {
const eventSource = new EventSource(url.toString());
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'migration_progress') {
this.outputLog = data.output;
}
else if (data.type === 'migration_result') {
this.isLoading = false;
this.migrationStatus = data.status;
this.outputLog = data.output;
this.ngZone.run(() => {
const data = JSON.parse(event.data);
if (data.status === 'success') {
this.snackBar.open(this.translate.instant('migrationSuccess'), 'OK', { duration: 5000 });
} else {
this.snackBar.open(this.translate.instant('migrationError'), 'OK', { duration: 5000 });
if (data.type === 'migration_progress') {
this.outputLog = data.output;
this.cdr.detectChanges();
}
else if (data.type === 'migration_result') {
this.isLoading = false;
this.migrationStatus = data.status;
this.outputLog = data.output;
this.cdr.detectChanges();
if (data.status === 'success') {
this.snackBar.open(this.translate.instant('migrationSuccess'), 'OK', { duration: 5000 });
} else {
this.snackBar.open(this.translate.instant('migrationError'), 'OK', { duration: 5000 });
}
eventSource.close();
}
eventSource.close();
}
});
};
eventSource.onerror = (err) => {

View File

@ -42,15 +42,13 @@
</div>
</div>
<div class="logs-section" id="ogboot-logs-section">
<div class="logs-header">
<h3>{{ 'ogbootLogs' | translate }}</h3>
<p>{{ 'realTimeOgbootLogs' | translate }}</p>
</div>
<div class="logs-container">
<iframe [src]="getBootServerIframeUrl()" width="100%" height="800" frameborder="0" class="ogboot-logs-iframe">
</iframe>
</div>
<div id="ogboot-logs-section">
<app-status-logs
[title]="'ogbootLogs'"
[identifiers]="['ogboot', 'tftpd-hpa']"
[host]="getSelectedBootServerIp()"
[oglogUrl]="getBootServerIframeUrl()">
</app-status-logs>
</div>
</div>
}

View File

@ -101,6 +101,11 @@ export class GlobalOgbootStatusComponent implements OnInit {
}
}
getSelectedBootServerIp(): string {
const s = this.bootServers.find(s => s.uuid === this.selectedBootServerUuid);
return s ? s.ip : '';
}
getSelectedBootServerName(): string {
const selectedBootServer = this.bootServers.find(server => server.uuid === this.selectedBootServerUuid);
return selectedBootServer ? selectedBootServer.name : '';

View File

@ -1,14 +1,12 @@
<div class="section-content">
<div class="tab-content">
<div class="logs-section" id="ogcore-logs-section">
<div class="logs-header">
<h3>{{ 'ogcoreLogs' | translate }}</h3>
<p>{{ 'realTimeOgcoreLogs' | translate }}</p>
</div>
<div class="logs-container">
<iframe [src]="getOgCoreIframeUrl()" width="100%" height="800" frameborder="0" class="ogcore-logs-iframe">
</iframe>
</div>
<div id="ogcore-logs-section">
<app-status-logs
[title]="'ogcoreLogs'"
[identifiers]="['ogcore']"
[host]="''"
[oglogUrl]="getOgCoreIframeUrl()">
</app-status-logs>
</div>
</div>
</div>

View File

@ -42,15 +42,13 @@
</div>
</div>
<div class="logs-section" id="dhcp-logs-section">
<div class="logs-header">
<h3>{{ 'dhcpLogs' | translate }}</h3>
<p>{{ 'realTimeDhcpLogs' | translate }}</p>
</div>
<div class="logs-container">
<iframe [src]="getDhcpIframeUrl()" width="100%" height="800" frameborder="0" class="dhcp-logs-iframe">
</iframe>
</div>
<div id="dhcp-logs-section">
<app-status-logs
[title]="'dhcpLogs'"
[identifiers]="['ogdhcp', 'kea-dhcp4', 'kea-ctrl-agent', 'DhcpLFC']"
[host]="getSelectedDhcpIp()"
[oglogUrl]="getDhcpIframeUrl()">
</app-status-logs>
</div>
</div>
}

View File

@ -104,6 +104,11 @@ export class OgdhcpStatusComponent implements OnInit {
}
}
getSelectedDhcpIp(): string {
const d = this.dhcps.find(d => d.uuid === this.selectedDhcpUuid);
return d ? d.ip : '';
}
getSelectedDhcpName(): string {
const selectedDhcp = this.dhcps.find(dhcp => dhcp.uuid === this.selectedDhcpUuid);
return selectedDhcp ? selectedDhcp.name : '';

View File

@ -49,16 +49,13 @@
</div>
</div>
<div class="repository-logs-section" id="repository-logs-section">
<div class="logs-header">
<h3>Datos del repositorio: {{ getSelectedRepositoryName() }}</h3>
<p>{{ 'specificRepoInfo' | translate }}</p>
</div>
<div class="logs-container">
<iframe [src]="getRepositoryIframeUrl()" width="100%" height="600" frameborder="0"
class="repository-logs-iframe">
</iframe>
</div>
<div id="repository-logs-section">
<app-status-logs
[title]="'ogrepositoryLogs'"
[identifiers]="['ogrepo-api', 'ogrepo-api_DEBUG', '(smbd)', '(nmbd)']"
[host]="getSelectedRepositoryIp()"
[oglogUrl]="getRepositoryIframeUrl()">
</app-status-logs>
</div>
</div>
}

View File

@ -103,6 +103,11 @@ export class OgrepositoryStatusComponent implements OnInit {
}
}
getSelectedRepositoryIp(): string {
const r = this.repositories.find(r => r.uuid === this.selectedRepositoryUuid);
return r ? r.ip : '';
}
getSelectedRepositoryName(): string {
const selectedRepo = this.repositories.find(repo => repo.uuid === this.selectedRepositoryUuid);
return selectedRepo ? selectedRepo.name : '';

View File

@ -0,0 +1,165 @@
.logs-section {
background-color: var(--surface-card, #ffffff);
border-radius: 12px;
padding: 16px;
margin-top: 16px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
.logs-header {
margin-bottom: 12px;
}
.logs-header h3 {
font-size: 1.1rem;
font-weight: 600;
margin: 0;
color: var(--text-primary, #111827);
}
.logs-header p {
font-size: 0.8rem;
color: var(--text-secondary, #6b7280);
margin: 2px 0 0;
}
.logs-tabs {
margin-top: 8px;
}
.logs-container {
position: relative;
background-color: #0d1117;
border-radius: 8px;
margin-top: 8px;
display: flex;
flex-direction: column;
}
.tab-actions-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 4px 12px;
background: rgba(255, 255, 255, 0.05);
border-top-left-radius: 8px;
border-top-right-radius: 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.header-actions {
display: flex;
gap: 4px;
}
.header-actions button {
color: rgba(255, 255, 255, 0.7) !important;
}
.header-actions button:hover:not([disabled]) {
color: white !important;
background: rgba(255, 255, 255, 0.1);
}
.header-actions button[disabled] {
color: rgba(255, 255, 255, 0.2) !important;
}
.header-actions button[color="warn"] {
color: #ff4081 !important;
}
.live-badge {
display: flex;
align-items: center;
gap: 6px;
font-size: 0.7rem;
font-weight: 700;
color: #ff4081;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.live-dot {
width: 6px;
height: 6px;
background-color: #ff4081;
border-radius: 50%;
animation: pulse 2s infinite;
}
.log-viewer {
margin: 0;
padding: 12px;
color: #e6edf3;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.8rem;
line-height: 1.4;
overflow-y: auto;
max-height: 50vh;
white-space: pre-wrap;
word-break: break-all;
}
@keyframes pulse {
0% {
transform: scale(0.95);
box-shadow: 0 0 0 0 rgba(255, 64, 129, 0.7);
}
70% {
transform: scale(1);
box-shadow: 0 0 0 8px rgba(255, 64, 129, 0);
}
100% {
transform: scale(0.95);
box-shadow: 0 0 0 0 rgba(255, 64, 129, 0);
}
}
.loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(13, 17, 23, 0.7);
z-index: 10;
}
.error-message {
padding: 32px;
text-align: center;
color: #f85149;
}
.error-message mat-icon {
font-size: 48px;
width: 48px;
height: 48px;
margin-bottom: 16px;
}
.logs-iframe {
border-radius: 8px;
}
.no-oglog {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 64px;
color: #8b949e;
}
.no-oglog mat-icon {
font-size: 48px;
width: 48px;
height: 48px;
margin-bottom: 16px;
}

View File

@ -0,0 +1,59 @@
<div class="logs-section">
<div class="logs-header">
<h3>{{ title | translate }}</h3>
<p>{{ 'realTimeLogs' | translate }}</p>
</div>
<mat-tab-group class="logs-tabs" animationDuration="0ms" (selectedTabChange)="onTabChange($event)">
<mat-tab [label]="'diskLogs' | translate">
<div class="logs-container disk-logs">
<div class="tab-actions-header">
<div class="header-actions">
<button mat-icon-button
(click)="toggleLive()"
[matTooltip]="(isLive ? 'diskLogsStopLive' : 'diskLogsStartLive') | translate"
[color]="isLive ? 'warn' : ''">
<mat-icon>{{ isLive ? 'pause_circle' : 'play_circle' }}</mat-icon>
</button>
<button mat-icon-button (click)="refreshLogs()" [matTooltip]="'buttonUpdateData' | translate" [disabled]="isLive">
<mat-icon>refresh</mat-icon>
</button>
</div>
<div *ngIf="isLive" class="live-badge">
<span class="live-dot"></span>
LIVE
</div>
</div>
@if (loadingDiskLogs && !diskLogsContent) {
<div class="loading-overlay">
<mat-spinner diameter="40"></mat-spinner>
</div>
}
@if (errorDiskLogs) {
<div class="error-message">
<mat-icon>error_outline</mat-icon>
<p>{{ errorDiskLogs }}</p>
<button mat-button (click)="loadDiskLogs()">{{ 'buttonRetry' | translate }}</button>
</div>
}
<pre #logContent class="log-viewer">{{ diskLogsContent }}</pre>
</div>
</mat-tab>
<mat-tab [label]="'oglogLogs' | translate">
<div class="logs-container oglog-logs">
@if (oglogUrl) {
<iframe [src]="oglogUrl" width="100%" height="600" frameborder="0" class="logs-iframe"></iframe>
} @else {
<div class="no-oglog">
<mat-icon>info_outline</mat-icon>
<p>oglog no está disponible o no se ha configurado la URL.</p>
</div>
}
</div>
</mat-tab>
</mat-tab-group>
</div>

View File

@ -0,0 +1,139 @@
import { Component, Input, OnInit, OnDestroy, inject, ViewChild, ElementRef, AfterViewChecked } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { SafeResourceUrl } from '@angular/platform-browser';
import { ConfigService } from '@services/config.service';
import { TranslateService } from '@ngx-translate/core';
import { MatTabChangeEvent } from '@angular/material/tabs';
interface JournalEntry {
MESSAGE: string;
SYSLOG_IDENTIFIER?: string;
_HOSTNAME?: string;
__REALTIME_TIMESTAMP?: string;
PRIORITY?: string;
}
@Component({
selector: 'app-status-logs',
templateUrl: './status-logs.component.html',
styleUrl: './status-logs.component.css'
})
export class StatusLogsComponent implements OnInit, OnDestroy, AfterViewChecked {
@ViewChild('logContent') private logContainer!: ElementRef;
@Input() identifiers: string[] = [];
@Input() host: string = '';
@Input() oglogUrl: SafeResourceUrl | null = null;
@Input() title: string = '';
public translate = inject(TranslateService);
diskLogsContent: string = '';
loadingDiskLogs: boolean = false;
errorDiskLogs: string | null = null;
isLive: boolean = true;
private pollInterval: any;
private readonly POLL_INTERVAL_MS = 5000;
constructor(
private http: HttpClient,
private configService: ConfigService
) {}
ngOnInit(): void {
this.loadDiskLogs();
if (this.isLive) {
this.startPolling();
}
}
ngAfterViewChecked() {
this.scrollToBottom();
}
toggleLive(): void {
this.isLive = !this.isLive;
if (this.isLive) {
this.loadDiskLogs();
this.startPolling();
} else {
this.stopPolling();
}
}
onTabChange(event: MatTabChangeEvent): void {
if (event.index === 0) {
if (this.isLive) {
this.loadDiskLogs();
this.startPolling();
}
} else {
this.stopPolling();
}
}
ngOnDestroy(): void {
this.stopPolling();
}
loadDiskLogs(): void {
if (!this.identifiers.length) return;
if (!this.isLive) {
this.loadingDiskLogs = true;
}
const idParam = this.identifiers.join(',');
const hostParam = this.host ? `&host=${encodeURIComponent(this.host)}` : '';
const url = `${this.configService.apiUrl}/opengnsys/system/disk-logs?SYSLOG_IDENTIFIER=${encodeURIComponent(idParam)}${hostParam}&lines=200`;
this.http.get<{ entries: JournalEntry[] }>(url).subscribe({
next: (response) => {
this.diskLogsContent = this.formatEntries(response.entries || []);
this.loadingDiskLogs = false;
this.errorDiskLogs = null;
},
error: () => {
this.errorDiskLogs = 'Error al cargar logs de disco';
this.loadingDiskLogs = false;
}
});
}
private formatEntries(entries: JournalEntry[]): string {
return entries.map(entry => {
const ts = entry.__REALTIME_TIMESTAMP
? new Date(parseInt(entry.__REALTIME_TIMESTAMP, 10) / 1000).toISOString().replace('T', ' ').substring(0, 23)
: ' ';
const id = entry.SYSLOG_IDENTIFIER ?? '';
return `[${ts}] ${id}: ${entry.MESSAGE ?? ''}`;
}).join('\n');
}
private startPolling(): void {
this.stopPolling();
this.pollInterval = setInterval(() => {
if (this.isLive) {
this.loadDiskLogs();
}
}, this.POLL_INTERVAL_MS);
}
private stopPolling(): void {
if (this.pollInterval) {
clearInterval(this.pollInterval);
this.pollInterval = null;
}
}
refreshLogs(): void {
this.loadDiskLogs();
}
private scrollToBottom(): void {
if (this.isLive && this.logContainer) {
try {
this.logContainer.nativeElement.scrollTop = this.logContainer.nativeElement.scrollHeight;
} catch (err) {}
}
}
}

View File

@ -1,5 +1,5 @@
{
"actionAddedSuccess": "Acció afegida amb èxit",
"actionAddedSuccess": "Acció afegida correctament",
"actions": "Accions",
"actionsDescription": "Administra cada imatge amb opcions per veure, editar, eliminar i més.",
"actionsStepText": "Accedeix a les accions disponibles per a cada calendari aquí.",
@ -37,8 +37,8 @@
"addRepositoryStepText": "Fes clic per afegir un nou repositori.",
"addRole": "Afegir rol",
"addRule": "Afegir regla",
"addSoftware": "Afegir software",
"addSoftwareProfile": "Afegir perfil de software",
"addSoftware": "Afegir programari",
"addSoftwareProfile": "Afegir perfil de programari",
"addTask": "Afegir Tasca",
"addTaskStepText": "Fes clic per afegir una nova tasca.",
"addTemplateButtonDescription": "Afegir plantilla PXE",
@ -58,7 +58,7 @@
"adminPxeDescription": "Des d'aquí pots gestionar les plantilles PXE del servidor.",
"adminPxeTitle": "Administrar fitxers PXE",
"adminRolesTitle": "Administrar Rols",
"adminSoftwareProfiles": "Administrar perfils de software",
"adminSoftwareProfiles": "Administrar perfils de programari",
"adminUsersTitle": "Administrar usuaris",
"advancedNetbootDescription": "Des d'aquí pots configurar el netboot avançat dels clients.",
"advancedNetbootTitle": "Netboot avançat",
@ -80,12 +80,12 @@
"assistantStep3": "A l'assistent, selecciona \"Encuar\" per afegir l'acció a una tasca programada",
"associatedComputersHaveBeenDetected": "S'han detectat ordinadors associats a un altre servidor d'arrencada. Vols moure'ls al servidor actual? (Si ho rebutges, només s'actualitzaran els ordinadors que ja pertanyen al servidor actual)",
"autoDiscoverySync": "Sincronització Autodescobriment",
"autoRefresh": "Auto-actualitzar",
"autoRefresh": "Actualitzar automàticament",
"availableCommandsTitle": "Comandaments Disponibles",
"back": "Enrere",
"backToCategories": "Tornar a categories",
"backupFileNameHint": "Nom del fitxer de còpia de seguretat (ha d'acabar en .tar.gz, .zip o .tar)",
"backupStartedSuccessfully": "Còpia de seguretat iniciada amb èxit",
"backupStartedSuccessfully": "Còpia de seguretat iniciada correctament",
"bashScriptBoilerplate": "#!/bin/bash&#10;# Escriu el teu script aquí&#10;echo 'Iniciant script...'&#10;&#10;# Els teus comandaments aquí",
"basicActions": "Accions Bàsiques",
"boardToggle": "Pissarra",
@ -93,11 +93,11 @@
"bootConfiguration": "Configuració d'arrencada",
"bootFileName": "Nom del fitxer d'arrencada",
"bootServer": "Servidor Boot",
"bootServerAddedSuccessfully": "Servidor Boot afegit amb èxit",
"bootServerAddedSuccessfully": "Servidor Boot afegit correctament",
"bootServers": "Servidors Boot",
"bootServerStatus": "Estat del servidor d'arrencada actualitzat amb èxit",
"bootServerSuccessfullyUpdated": "Servidor Boot actualitzat amb èxit",
"branchCreatedSuccessfully": "Branca creada amb èxit",
"bootServerStatus": "Estat del servidor d'arrencada actualitzat correctament",
"bootServerSuccessfullyUpdated": "Servidor Boot actualitzat correctament",
"branchCreatedSuccessfully": "Branca creada correctament",
"branchExampleHint": "Exemple: feature-nova-funcionalitat, hotfix-bug-123, release-v2.0",
"branchNameInvalid": "El nom de la branca només pot contenir lletres, números, punts, guions i guions baixos",
"branchNameRequired": "El nom de la branca és obligatori",
@ -105,7 +105,7 @@
"busyEquipments": "Equips Ocupats",
"buttonAccept": "Acceptar",
"buttonAdd": "Afegir",
"buttonApplyChanges": "Previsualitzar",
"buttonApplyChanges": "Aplicar Canvis",
"buttonCancel": "Cancel·lar",
"buttonCancelEdit": "Cancel·lar Edició",
"buttonCancelEn": "Cancel·lar",
@ -163,16 +163,16 @@
"buttonViewInfo": "Veure Informació",
"buttonViewLogs": "Veure registres",
"buttonYes": "Sí",
"cacheClearRequest": "Petició d'esborrament de cache d'imatge enviada amb èxit",
"cacheImageToUpdateIs": "La imatge en cache a actualitzar és:",
"cacheClearRequest": "Petició d'esborrament de memòria cau d'imatge enviada correctament",
"cacheImageToUpdateIs": "La imatge en memòria cau a actualitzar és:",
"cacheOption": "CACHE",
"calendarCreatedSuccessfully": "Calendari creat amb èxit",
"calendarDeletedSuccessfully": "Calendari eliminat amb èxit",
"calendarRuleCreatedSuccessfully": "Regla de calendari creada amb èxit",
"calendarRuleUpdatedSuccessfully": "Regla de calendari actualitzada amb èxit",
"calendarCreatedSuccessfully": "Calendari creat correctament",
"calendarDeletedSuccessfully": "Calendari eliminat correctament",
"calendarRuleCreatedSuccessfully": "Regla de calendari creada correctament",
"calendarRuleUpdatedSuccessfully": "Regla de calendari actualitzada correctament",
"calendars": "Calendaris",
"calendarsSynchronizedCorrectly": "Calendaris sincronitzats amb èxit",
"calendarUpdatedSuccessfully": "Calendari actualitzat amb èxit",
"calendarsSynchronizedCorrectly": "Calendaris sincronitzats correctament",
"calendarUpdatedSuccessfully": "Calendari actualitzat correctament",
"cancelAllDisplayedActions": "Cancel·lar totes les accions mostrades",
"cancelImageTransmission": "Cancel·lar transmissió d'imatge",
"cancelled": "Cancel·lat",
@ -183,10 +183,10 @@
"cannotConnectRepo": "No s'ha pogut connectar amb el repositori seleccionat",
"canonicalName": "Nom canònic",
"canonicalNameFormatHint": "Nom canònic. En minúscula i sense espais",
"canOnlyBeMarkedAs": "Només es poden marcar com a reeixides les traces en progrés",
"canOnlyBeMarkedAs": "Només es poden marcar com a completades les traces en progrés",
"cantAccess1": "No es pot accedir als registres: MAC del client no disponible",
"capacityWarning": "L'aforament no pot ser",
"cardView": "Vista targetes",
"cardView": "Vista de targetes",
"catCustomScript": "Script personalitzat",
"catCustomScriptDesc": "Executar un script nou o desat",
"catImageOps": "Operacions d'imatge",
@ -217,12 +217,12 @@
"clickStatsToFilter": "Fes clic a les targetes d'estadístiques per filtrar les traces",
"client": "Client",
"clientBusy": "Client ocupat",
"clientCreatedSuccessfully": "Client creat amb èxit",
"clientCreatedSuccessfully": "Client creat correctament",
"clientDetailsTitle": "Dades de",
"clientDisconnected": "Client desconnectat",
"clientGroupsTitle": "Grups de clients",
"clientInitializing": "Client inicialitzant",
"clientLeaseRemovedSuccessfully": "Concessió del client eliminada amb èxit",
"clientLeaseRemovedSuccessfully": "Concessió del client eliminada correctament",
"clientLinux": "Client Linux",
"clientLinuxSession": "Client amb sessió Linux",
"clientList": "Llista de clients",
@ -231,7 +231,6 @@
"clientListExecuteScript": "Llistat de clients on s'executarà l'script seleccionat",
"clientListPartition": "Llistat de clients on es realitzarà el particionat",
"clientLogs": "Registres de client",
"diskLogs": "Registres de disc",
"clientMacOS": "Client MacOS",
"clientOff": "Client apagat",
"clientOgLive": "Client OGLive",
@ -239,31 +238,31 @@
"clientSelectStepText": "Selecciona un client per veure les traces associades.",
"clientsPerPage": "Clients per pàgina",
"clientsPerPageHint": "Nombre de clients mostrats per pàgina al llistat",
"clientSuccessfullyRemovedFromThe": "Client eliminat de la xarxa amb èxit",
"clientSuccessfullyRemovedFromThe": "Client eliminat de la xarxa correctament",
"clientsViewStepText": "Visualització dels clients de la unitat organitzativa seleccionada",
"clientUpdatedSuccessfully": "Client actualitzat amb èxit",
"clientUpdatedSuccessfully": "Client actualitzat correctament",
"clientWindows": "Client Windows",
"clientWindowsSession": "Client amb sessió Windows",
"code": "Codi",
"colaAcciones": "Cua d'accions",
"collapseAll": "Contraure tot",
"command": "Comandament",
"commandAddedSuccessfully": "Comandament afegit amb èxit",
"commandAddedSuccessfully": "Comandament afegit correctament",
"commandColumn": "Comandament",
"commandComments": "Comentaris del comandament",
"commandDescription": "Descripció del comandament",
"commandDetailsTitle": "Detalls del Comandament",
"commandEditedSuccessfully": "Comandament editat amb èxit",
"commandExecutedSuccessfully": "Comandament executat amb èxit",
"commandEditedSuccessfully": "Comandament editat correctament",
"commandExecutedSuccessfully": "Comandament executat correctament",
"commandGroupColumn": "Grup de Comandaments",
"commandGroupCreatedWith": "Grup de comandaments creat amb èxit",
"commandGroupCreatedWith": "Grup de comandaments creat correctament",
"commandGroupDetailsTitle": "Detalls del Grup de Comandaments",
"commandGroupRemovedWith": "Grup de comandaments eliminat amb èxit",
"commandGroupUpdatedWith": "Grup de comandaments actualitzat amb amb èxit",
"commandGroupRemovedWith": "Grup de comandaments eliminat correctament",
"commandGroupUpdatedWith": "Grup de comandaments actualitzat amb correctament",
"commandList": "Llista de comandaments",
"commandNamePlaceholder": "Nom del comandament",
"commandNameTitle": "Nom del Comandament",
"commandRemovedSuccessfully": "Comandament eliminat amb èxit",
"commandRemovedSuccessfully": "Comandament eliminat correctament",
"commands": "Comandaments",
"commandScriptPlaceholder": "Script del comandament",
"commandSelectionSectionTitle": "Selecció de comandaments",
@ -277,7 +276,7 @@
"commitIdCopiedToClipboard": "ID del Commit copiat al porta-retalls",
"commitMessage": "Missatge del commit",
"commitSelection": "Selecció de commit",
"completedSuccessfully": "Completat amb èxit",
"completedSuccessfully": "Completat correctament",
"computerGroups": "Grups de PCs",
"computersAlreadyExistedHierarchy": "Els següents ordinadors ja existien prèviament a la jerarquia (en altres aules o Unitats). Només s'ha actualitzat la seva dependència de subxarxa, però no s'han mogut de la seva ubicació actual.",
"configurationTitle": "Configuració",
@ -300,8 +299,8 @@
"createCommandTitle": "Crear Comandament",
"createdBy": "Creat per",
"createdInRepository": "Creat al repositori",
"createdSuccessfully": "Creat amb èxit",
"createHardwareWorks": "¡Creació de hardware en funcionament!",
"createdSuccessfully": "Creat correctament",
"createHardwareWorks": "¡Creació de maquinari en funcionament!",
"createImage": "Creant imatge",
"createNewGitRepo": "Crear nou repositori d'imatges git",
"createNewRepoOs": "Crear nou repositori / SO",
@ -312,15 +311,16 @@
"createTask": "Crear Tasca",
"creatingAuxiliaryFiles": "Creant fitxers auxiliars",
"creationDate": "Data de creació",
"csvFileExportedSuccessfully": "Fitxer CSV exportat amb èxit",
"csvFileExportedSuccessfully": "Fitxer CSV exportat correctament",
"currentPartitionState": "Estat actual de particions",
"currentUsage": "Ús actual",
"customer": "Client",
"customRepeat": "Repetició personalitzada",
"dataSuccessfullyLoadedData": "Dades carregades, les dades estan llestes per enviar-se amb èxit.",
"dataUpdatedCorrectly": "Dades actualitzades amb èxit",
"dataSuccessfullyLoadedData": "Dades carregades, les dades estan llestes per enviar-se correctament.",
"dataUpdatedCorrectly": "Dades actualitzades correctament",
"dateFormatPlaceholder": "DD/MM/AAAA",
"daysOfTheWeek": "Dies de la setmana",
"dbLabel": "Nom de la BD",
"default20": "Per defecte (20)",
"defaultImage": "Imatge per defecte",
"defaultTemplate": "Plantilla per defecte",
@ -336,7 +336,7 @@
"deleteTrace": "Eliminar traça",
"deletionResults": "Resultats d'Eliminació",
"deployImage": "Desplegar imatge",
"deployRequestSentCorrectly": "Petició de desplegament enviada amb èxit",
"deployRequestSentCorrectly": "Petició de desplegament enviada correctament",
"destinationBranch": "Branca de destinació",
"destinationBranchNameLabel": "Nom de la branca de destinació",
"destinationSelectionSectionTitle": "Selecciona destinació",
@ -344,15 +344,15 @@
"detailsTitle": "Detalls de {{ name }}",
"detectedParameters": "Paràmetres detectats",
"dhcp": "DHCP",
"dhcpHostExample": "Exemple: host bbaa-it1-11 { hardware ethernet a0:48:1c:8a:f1:5b; fixed-address 172.17.69.11; };",
"dhcpLeasesRemovedSuccessfully": "Concessió(ons) DHCP eliminada(es) amb èxit",
"dhcpHostExample": "Exemple: host bbaa-it1-11 { maquinari ethernet a0:48:1c:8a:f1:5b; fixed-address 172.17.69.11; };",
"dhcpLeasesRemovedSuccessfully": "Concessió(ons) DHCP eliminada(es) correctament",
"dhcpLogs": "Registres de DHCP",
"dhcpServerAddedSuccessfully": "Servidor DHCP afegit amb èxit",
"dhcpServerAddedSuccessfully": "Servidor DHCP afegit correctament",
"dhcpServerFetchingError": "Error en obtenir el servidor dhcp:",
"dhcpServerId": "Id Servidor DHCP",
"dhcpServers": "Servidors DHCP",
"dhcpServerUpdatedSuccessfully": "Servidor DHCP actualitzat amb èxit",
"dhcpStatusUpdatedSuccessfully": "Estat del dhcp actualitzat amb èxit",
"dhcpServerUpdatedSuccessfully": "Servidor DHCP actualitzat correctament",
"dhcpStatusUpdatedSuccessfully": "Estat del dhcp actualitzat correctament",
"dialogTitleAddRole": "Afegir Rol",
"dialogTitleAddUser": "Afegir Usuari",
"dialogTitleEditUser": "Editar usuari",
@ -361,6 +361,9 @@
"directClientsToggleTooltip": "Mostrar només els equips directament assignats al node seleccionat (sense descendents)",
"disabled": "Deshabilitat",
"diskImageAssistantTitle": "Assistent d'imatges en disc",
"diskLogs": "Registres de disc",
"diskLogsStartLive": "Activar mode en temps real",
"diskLogsStopLive": "Aturar mode en temps real",
"diskModel": "Arrencada per disc",
"diskUsage": "Ús de Disc",
"diskUsageDescription": "Aquí es mostra l'ús de disc del servidor.",
@ -376,7 +379,7 @@
"editClientTitle": "Editar Client",
"editCommandGroup": "Editar grup de comandaments",
"editCommandTitle": "Editar Comandament",
"editedAndParametersPropagatedSuccessfully": "Editat i paràmetres propagats amb èxit",
"editedAndParametersPropagatedSuccessfully": "Editat i paràmetres propagats correctament",
"editedCommand": "Comandament editat",
"editEnvVarsTitle": "Editar Variables d'Entorn",
"editImageTitle": "Editar imatge",
@ -407,14 +410,14 @@
"enterOrder": "Introdueix l'ordre",
"enterParameters": "Ingressi els paràmetres",
"enterScript": "Ingressi l'script",
"environmentVariablesSavedCorrectly": "Variables d'entorn desades amb èxit.",
"environmentVariablesSavedCorrectly": "Variables d'entorn desades correctament.",
"error401RedirectToLogin": "Error 401, redirigint a la pàgina d'inici de sessió",
"errorAddingImage": "Error en afegir la imatge",
"errorAddingMenu": "Error en afegir el menú",
"errorAddingOperatingSystem": "Error en afegir el sistema operatiu",
"errorAddingRole": "Error en afegir el rol",
"errorAddingRole1": "Error en afegir el rol:",
"errorAddingSoftware": "Error en afegir el software",
"errorAddingSoftware": "Error en afegir el programari",
"errorCancelingActions": "Error en cancel·lar les accions",
"errorCancelingActions1": "Error en cancel·lar les accions:",
"errorCancelingInprogressTrace": "Error en cancel·lar la traça en progrés:",
@ -464,8 +467,8 @@
"errorFetchingDownloads": "Error en obtenir les descàrregues:",
"errorFetchingFilters": "Error en obtenir els filtres",
"errorFetchingFilters1": "Error en obtenir els filtres:",
"errorFetchingHardwareProfileDetails": "Error en obtenir els detalls del perfil de hardware:",
"errorFetchingHardwareProfiles": "Error en obtenir els perfils de hardware:",
"errorFetchingHardwareProfileDetails": "Error en obtenir els detalls del perfil de maquinari:",
"errorFetchingHardwareProfiles": "Error en obtenir els perfils de maquinari:",
"errorFetchingImageRepositories": "Error en obtenir els repositoris d'imatges",
"errorFetchingImages": "Error en obtenir les imatges",
"errorFetchingMenus": "Error en obtenir els menús",
@ -489,9 +492,9 @@
"errorFetchingUserGroups": "Error en obtenir els grups d'usuaris",
"errorGettingClients": "Error en obtenir els clients PXE:",
"errorGettingClients1": "Error en obtenir els clients de la unitat organitzativa:",
"errorGettingDetails": "Error en obtenir els detalls del perfil de hardware",
"errorGettingDetails": "Error en obtenir els detalls del perfil de maquinari",
"errorGettingPartitions": "Error en obtenir les particions:",
"errorGettingProfiles": "Error en obtenir els perfils de software",
"errorGettingProfiles": "Error en obtenir els perfils de programari",
"errorGettingRepositories": "Error en obtenir els repositoris d'imatges",
"errorGettingStatus": "Error en obtenir l'estat del servidor",
"errorInTheRequest": "Error en la petició d'exportació d'imatge",
@ -530,7 +533,7 @@
"errorLoadingTasks": "Error en carregar les tasques existents",
"errorLoadingTemplates": "Error en carregar les plantilles",
"errorLoadingUnits": "Error en carregar les unitats organitzatives",
"errorMarkingTraceAsSuccess": "Error en marcar la traça com a reeixida:",
"errorMarkingTraceAsSuccess": "Error en marcar la traça com a completada:",
"errorPasswordMismatch": "Les contrasenyes no coincideixen",
"errorPreviewingMenuTemplate": "Error en previsualitzar la plantilla del menú",
"errorSavingVariables": "Error en desar les variables d'entorn:",
@ -547,13 +550,13 @@
"errorWhenDeletingLeases": "Error en eliminar les concessions DHCP",
"errorWhenDeletingMenu": "Error en eliminar el menú:",
"errorWhenEditingImage": "Error en editar la imatge",
"errorWhenEditingTheSoftware": "Error en editar el software",
"errorWhenEditingTheSoftware": "Error en editar el programari",
"errorWhenExecutingCommand": "Error en executar el comandament:",
"errorWhenFilteringUnits": "Error en filtrar les unitats organitzatives",
"errorWhenMakingPost": "Error en realitzar petició POST:",
"errorWhenMakingPut": "Error en realitzar petició PUT:",
"errorWhenMakingTheRequest": "Error en realitzar la petició de backup d'imatge",
"errorWhenMarkingTheTrace": "Error en marcar la traça com a reeixida",
"errorWhenMarkingTheTrace": "Error en marcar la traça com a completada",
"errorWhenPropagatingParameters": "Error en propagar paràmetres:",
"errorWhenRunningScript": "Error en executar l'script",
"errorWhenSynchronizingOgliveImages": "Error en sincronitzar imatges ogLive: temps d'espera esgotat",
@ -575,10 +578,10 @@
"login": "Iniciar sessió",
"createImage": "Crear imatge",
"deployImage": "Desplegar imatge",
"deleteImageCache": "Esborrar imatge de cache",
"deleteImageCache": "Esborrar imatge de la memòria cau",
"partition": "Particionar i formatar",
"softwareInventory": "Inventari de software",
"hardwareInventory": "Inventari de hardware",
"softwareInventory": "Inventari de programari",
"hardwareInventory": "Inventari de maquinari",
"runScript": "Executar script",
"refresh": "Refrescar",
"deleteLease": "Eliminar concessió DHCP"
@ -617,7 +620,7 @@
"fetchingUsersError": "Error en obtenir els usuaris",
"fileCreationRequest": "Petició de creació de fitxers auxiliars enviada",
"fileNameRequired": "El nom del fitxer és obligatori",
"fileSuccessfullyUploadedData": "Fitxer carregat, les dades estan llestes per enviar-se amb èxit.",
"fileSuccessfullyUploadedData": "Fitxer carregat, les dades estan llestes per enviar-se correctament.",
"fileSystem": "Sistema de fitxers",
"fileSystemAlt": "Sistema de fitxers",
"filterByType": "Filtrar per tipus",
@ -631,6 +634,8 @@
"formIsInvalid": "El formulari és invàlid",
"forRemotePcOnDays": "per a Remote PC els dies:",
"forReservationFrom": "per a reserva des del",
"fromRemoteDb": "Des de base de dades remota",
"fromSqlFile": "Des de fitxer SQL",
"fullDeployment": "Desplegament complet",
"fullsum": "Suma total",
"generalDataTab": "Dades generals",
@ -650,19 +655,20 @@
"gridViewButton": "Quadrícula",
"group": "Grup",
"groupId": "ID del Grup",
"groupOfCommandsExecutedSuccessfully": "Grup de comandaments executat amb èxit",
"groupOfCommandsExecutedSuccessfully": "Grup de comandaments executat correctament",
"groups": "Grups",
"groupsAddStepText": "Fes clic per afegir una nova unitat organitzativa o un client.",
"groupsTitleStepText": "En aquesta pantalla, pots gestionar les principals unitats organitzatives (Facultats, Aules, Grups d'Aules i clients).",
"groupView": "Vista de Grups",
"hardware": "Hardware",
"hardwareDeletedSuccessfully": "Hardware eliminat correctament",
"hardwareDeletingError": "Error eliminant hardware",
"hardwareInventorySuccessfullyUpdated": "Inventari de hardware actualitzat correctament",
"hardware": "Maquinari",
"hardwareDeletedSuccessfully": "Maquinari eliminat correctament",
"hardwareDeletingError": "Error eliminant maquinari",
"hardwareInventorySuccessfullyUpdated": "Inventari de maquinari actualitzat correctament",
"hardwareTypes": "Tipus",
"hasNotBeenLoaded": "No s'ha carregat la informació del client",
"helpTitle": "Ajuda",
"hideAdvanced": "Ocultar avançats",
"hostLabel": "Host de la base de dades",
"id1": "Id",
"ignitionRequestSentCorrectly": "Petició d'encesa enviada correctament",
"imageAddedSuccessfully": "Imatge afegida correctament",
@ -681,12 +687,15 @@
"imageRenamedCorrectly": "Imatge reanomenada correctament",
"images": "Imatges",
"imagesTitle": "Administrar imatges",
"imageSuccessfullyDeleted": "Imatge eliminada amb èxit",
"imageSuccessfullyDeleted": "Imatge eliminada correctament",
"imageTransferInfo": ". Es transferirà la imatge a la resta de repositoris en el cas que no existeixi prèviament.",
"imageType": "Tipus d'imatge",
"imageUpdatedSuccessfully": "Imatge actualitzada amb èxit",
"imageUpdatedSuccessfully": "Imatge actualitzada correctament",
"importButton": "Importar",
"importedClientsZero": "Clients importats:",
"importImageButton": "Importar imatge",
"importLegacyDbDesc": "Migra les dades d'una instal·lació OpenGnsys 1.1 a la versió 3.0",
"importLegacyDbTitle": "Importar des d'OG 1.1",
"inactive": "Inactiu",
"inactiveOption": "No instal·lada",
"includedCommandGroups": "Grups de Comandaments Inclosos",
@ -708,7 +717,7 @@
"ipHint": "Exemple: 123.1.1.1",
"ipIsRequired": "La IP és obligatòria",
"isoImageColumn": "Imatge ISO",
"itemRemovedSuccessfully": "Element eliminat amb èxit.",
"itemRemovedSuccessfully": "Element eliminat correctament.",
"jwtDecodingError": "Error en descodificar JWT",
"kernelLabel": "Etiqueta del kernel",
"keyStepText": "La llegenda et mostrarà els tipus d'unitats organitzatives i els seus icones corresponents",
@ -770,7 +779,7 @@
"labelGlobalImage": "Imatge Global",
"labelGoBackToServers": "Tornar a servidors",
"labelGroupName": "Nom del Grup",
"labelHardwareProfile": "Perfil de Hardware",
"labelHardwareProfile": "Perfil de Maquinari",
"labelId": "ID",
"labelImage": "Imatge",
"labelImageName": "Nom de la imatge",
@ -880,7 +889,7 @@
"labelServices": "Serveis",
"labelSizeMb": "Mida (MB)",
"labelSizePercentage": "Mida (%)",
"labelSoftwareName": "Nom del software",
"labelSoftwareName": "Nom del programari",
"labelSpeed": "Velocitat",
"labelState": "Estat",
"labelStates": "Estats",
@ -916,7 +925,7 @@
"Legend": "Llegenda",
"limpiarAcciones": "Netejar accions",
"linuxOption": "LINUX",
"listViewButton": "Vista Llista",
"listViewButton": "Vista de llista",
"loadingDots": "Carregant...",
"loadingGitInfo": "Carregant informació de Git...",
"loadingStepText": "Espera mentre es carreguen els grups de comandaments.",
@ -933,30 +942,34 @@
"manageAssetsPath": "Gestionar Recursos: public/assets/",
"manageClientsTitle": "Gestionar clients",
"manageEnvVars": "Gestionar variables d'entorn",
"manageHardware": "Administrar Hardware",
"manageHardwareProfiles": "Administrar perfils de hardware",
"manageHardwareTypes": "Administrar tipus de hardware",
"manageHardware": "Administrar Maquinari",
"manageHardwareProfiles": "Administrar perfils de maquinari",
"manageHardwareTypes": "Administrar tipus de maquinari",
"manageImages": "Gestionar imatges",
"manageServer": "Gestionar servidor",
"manageSoftware": "Administrar Software",
"manageSoftware": "Administrar Programari",
"manageTaskSchedules": "Gestionar programacions de tasques en",
"manageTasksTitle": "Administrar Tasques",
"manageUserRoles": "Gestionar rols d'usuari",
"manageUsersAndRolesDesc": "Gestió d'usuaris i rols de l'aplicació",
"markAsSuccessful": "Marcar com a reeixida",
"markAsSuccessful": "Marcar com a completada",
"markClientInstruction": "Pots marcar o desmarcar un client fent clic a l'àrea de l'ordinador.",
"markClientModelInstruction": "Pots marcar o desmarcar un client fent clic a l'àrea de l'ordinador. A més, selecciona amb \"Model\" l'equip que actuarà com a model.",
"markClientModelInstruction2": "Pots marcar o desmarcar un client fent clic a l'àrea de l'ordinador. A més, selecciona amb \"Model\" l'equip que actuarà com a model.",
"markTraceAsSuccessful": "Marcar Traça com a Reeixida",
"markTraceAsSuccessful": "Marcar Traça com a Completada",
"maxClients": "Màx. Clients",
"maxWaitTime": "Temps màx. espera",
"menuAddedSuccessfully": "Menú afegit amb èxit",
"menuAddedSuccessfully": "Menú afegit correctament",
"menuConfiguration": "Configuració del menú",
"menuEditedCorrectly": "Menú editat amb èxit",
"menuEditedCorrectly": "Menú editat correctament",
"menuError": "Error del menú",
"menuName": "Nom de menú",
"menus": "Menús",
"menuSuccessfullyRemoved": "Menú eliminat amb èxit",
"menuSuccessfullyRemoved": "Menú eliminat correctament",
"migrationError": "Error durant la migració",
"migrationInProgress": "Migració en curs...",
"migrationSuccess": "Migració completada correctament",
"migrationWaitWarning": "Aquest procés pot trigar diversos minuts. Pots navegar per altres pestanyes o recarregar la pàgina; la migració continuarà en segon pla.",
"monolithicImage": "Imatges monolítiques",
"monolithicImageStep": "Imatge monolítica",
"monolithicImageStepText": "Aquesta opció permet visualitzar les imatges monolítiques disponibles al servidor.",
@ -967,8 +980,8 @@
"name": "Nom",
"nameLabel": "Etiqueta de nom",
"nameRequired": "El nom és obligatori",
"networkConfigurationAddedSuccessfully": "Configuració de xarxa afegida amb èxit",
"networkConfigurationUpdatedSuccessfully": "Configuració de xarxa actualitzada amb èxit",
"networkConfigurationAddedSuccessfully": "Configuració de xarxa afegida correctament",
"networkConfigurationUpdatedSuccessfully": "Configuració de xarxa actualitzada correctament",
"networkPropertiesTab": "Propietats de xarxa",
"networkSubnetsSyncedSuccess": "La xarxa i les subxarxes han estat sincronitzades o importades correctament.",
"newAction": "Nova Acció",
@ -1001,8 +1014,9 @@
"noDisksAvailable": "No hi ha discs disponibles",
"noFilesInDirectory": "No hi ha fitxers en aquest directori",
"noGitInfoForPartition": "No s'ha trobat informació de Git per a aquesta partició",
"noHardwareAssociatedToProfile": "No hi ha hardware associat a aquest perfil",
"noHardwareAssociatedToProfile": "No hi ha maquinari associat a aquest perfil",
"noInternalElementsMessage": "No hi ha elements interns",
"noLogsAvailable": "noLogsAvailable",
"noOgLivesInServer": "No hi ha OgLives en aquest servidor",
"noOneHasBeenSelected": "No s'ha seleccionat cap disc.",
"noOrganizationalUnitsTooltip": "Debeu crear almenys una unitat organitzativa abans d'afegir clients",
@ -1025,8 +1039,8 @@
"notValidDataFound": "No s'han trobat dades vàlides",
"ntfsOption": "NTFS",
"numberOfRules": "Nº de regles",
"offline": "Offline",
"offlineEquipments": "Equips Offline",
"offline": "Fora de línia",
"offlineEquipments": "Equips Fora de línia",
"ogbootLogs": "Logs d'OgBoot",
"ogbootServer": "Servidor OgBoot",
"ogbootServers": "Servidors OgBoot",
@ -1034,16 +1048,18 @@
"ogcoreLogs": "Logs d'OgCore",
"ogCoreServer": "Servidor OgCore",
"ogLive": "ogLive",
"ogLiveDeletedSuccessfully": "OG Live eliminat amb èxit",
"ogLiveDeletedSuccessfully": "OG Live eliminat correctament",
"ogLiveModel": "ogLiveModel",
"oglivesDescription": "Aquí es mostren els OgLive instal·lats al servidor.",
"ogLiveTitle": "OG Live",
"oglogLogs": "Registres d'oglog",
"ogRepoServerStatus": "Estat del Servidor OgRepository",
"online": "Online",
"onlineEquipments": "Equips Online",
"ogrepositoryLogs": "Registres d'OgRepository",
"online": "En línia",
"onlineEquipments": "Equips En línia",
"onlySubnets": "Només Subxarxes",
"onlyTracesCanBeCanceled": "Només es poden cancel·lar traces pendents o en execució",
"onlyUpdateCache": "Només actualitzar cache",
"onlyUpdateCache": "Només actualitzar memòria cau",
"opengnsys": "Opengnsys",
"opengnsysWebConsole": "Consola web d'administració d'Opengnsys",
"openInGrafana": "Obrir a Grafana",
@ -1075,12 +1091,13 @@
"partitionDistribution": "Distribució de Particions",
"partitions": "Particions",
"partitionSelection": "Selecció de partició",
"partitionsSuccessfullyCreatedForThe": "Particions creades per al disc seleccionat amb èxit.",
"partitionsSuccessfullyCreatedForThe": "Particions creades per al disc seleccionat correctament.",
"partitionsTab": "Pestanya particions",
"partitionTitle": "Assistent de particionat",
"partitionType": "Tipus de partició",
"partitionTypeColumn": "Tipus partició",
"passwordChangedSuccessfully": "Contrasenya canviada amb èxit",
"passLabel": "Contrasenya (opcional)",
"passwordChangedSuccessfully": "Contrasenya canviada correctament",
"pending": "Pendent",
"pendingOption": "Instal·lant",
"pendingToExecute": "Pendent d'executar",
@ -1094,13 +1111,13 @@
"placeholderSearchClientName": "Buscar nom del client",
"placeholderSearchCommitMessage": "Buscar per missatge del commit",
"placeholderSearchCommits": "Buscar commits",
"placeholderSearchHardwareName": "Buscar nom de hardware",
"placeholderSearchHardwareName": "Buscar nom de maquinari",
"placeholderSearchMac": "Buscar Mac",
"placeholderSearchMenuName": "Buscar nom de menú",
"placeholderSearchNetmask": "Buscar netmask",
"placeholderSearchOsName": "Buscar nom de sistema operatiu",
"placeholderSearchProfileName": "Buscar nom de perfil",
"placeholderSearchSoftwareName": "Buscar nom de software",
"placeholderSearchSoftwareName": "Buscar nom de programari",
"placeholderSearchSubnetName": "Buscar nom de la subxarxa",
"placeholderTftpServer": "Ex: Servidor Principal TFTP",
"pleaseCheckTheFields": "Si us plau, revisa els camps del formulari",
@ -1114,9 +1131,9 @@
"preparingDeploymentRequest": "Preparant petició de desplegament",
"preSelectedInfo": "Els clients han estat pre-seleccionats des del component de desplegament d'imatges.",
"procedimientosCliente": "Històric accions",
"programmingCreatedCorrectly": "Programación creada amb èxit",
"programmingRemovedCorrectly": "Programació eliminada amb èxit",
"programmingUpdatedCorrectly": "Programació actualitzada amb èxit",
"programmingCreatedCorrectly": "Programación creada correctament",
"programmingRemovedCorrectly": "Programació eliminada correctament",
"programmingUpdatedCorrectly": "Programació actualitzada correctament",
"projectorAlt": "Proyector",
"propagateParameters": "Propagar paràmetres",
"propertyHeader": "Propietat",
@ -1126,9 +1143,9 @@
"pxePort": "Port PXE",
"pxePortTftp": "Port PXE (TFTP)",
"pxeTemplate": "Plantilla",
"pxeTemplateCreatedSuccessfully": "Plantilla PXE creada amb èxit",
"pxeTemplateCreatedSuccessfully": "Plantilla PXE creada correctament",
"pxeTemplates": "Plantilles PXE",
"pxeTemplateUpdatedSuccessfully": "Plantilla PXE actualitzada amb èxit",
"pxeTemplateUpdatedSuccessfully": "Plantilla PXE actualitzada correctament",
"queueActions": "Encuar accions",
"queueActionsForFailedPcs": "Vols que s'encuin les accions per als PCs que no es pugui executar?",
"RamUsage": "Ús de RAM",
@ -1141,22 +1158,22 @@
"reasonPlaceholder": "Raó per a l'excepció",
"rebootDevice": "Reiniciar Equip",
"recoverImageFromTrash": "Recuperar imatge de la paperera",
"refreshmentRequestSentCorrectly": "Petició de refresc enviada amb èxit",
"refreshmentRequestSentCorrectly": "Petició de refresc enviada correctament",
"remoteAccess": "Disponible accés remot",
"remoteAvailability": "Marcar com a disponible per a Remote PC",
"remotePath": "Ruta remota",
"remotePc": "Remote Pc",
"remotePcLabel": "PC remot",
"remotePcCalendarRuleInfo": "(Els dies i hores seleccionats es marcaran com a aula no disponible per a remote pc.)",
"remotePcLabel": "PC remot",
"remotePcStatusAvailable": "Disponible per a Remote PC",
"remotePcStatusUnavailable": "No disponible per a Remote PC",
"removedSuccessfully": "Eliminat amb èxit",
"removedSuccessfully": "Eliminat correctament",
"renameImage": "Reanomenar imatge",
"repetition": "Repetició",
"repositories": "Repositoris",
"repository": "Repositori",
"repositoryAddedSuccessfully": "Repositori afegit amb èxit",
"repositoryDeletedSuccessfully": "Repositori eliminat amb èxit",
"repositoryAddedSuccessfully": "Repositori afegit correctament",
"repositoryDeletedSuccessfully": "Repositori eliminat correctament",
"repositoryInformation": "Informació del Repositori",
"repositoryName": "Nom",
"repositoryNotFound": "Repositori no trobat",
@ -1181,9 +1198,9 @@
"resolution800x600x24": "800×600 (24-bit - 16M colors)",
"resolution800x600x8": "800×600 (8-bit - 256 colors)",
"resolutionError": "La resolució és requerida",
"roleAddedSuccessfully": "Rol afegit amb èxit",
"roleDeletedSuccessfully": "Rol eliminat amb èxit",
"roleUpdatedSuccessfully": "Rol actualitzat amb èxit",
"roleAddedSuccessfully": "Rol afegit correctament",
"roleDeletedSuccessfully": "Rol eliminat correctament",
"roleUpdatedSuccessfully": "Rol actualitzat correctament",
"roomMap": "Plànol d'aula",
"route": "Ruta",
"rulesHeader": "Regles",
@ -1206,12 +1223,12 @@
"scriptConfiguration": "Configuració de script",
"scriptCopiedToClipboard": "Script copiat al porta-retalls",
"scriptEditorTitle": "Editor de Script",
"scriptExecutedSuccessfully": "Script executat amb èxit",
"scriptExecutedSuccessfully": "Script executat correctament",
"scriptParameterHint": "Si se selecciona aquesta opció els paràmetres s'han d'indicar a l'script amb el símbol &#64;.",
"scriptParameters": "Paràmetres de l'script",
"scriptPreview": "Vista prèvia de l'script",
"scriptSavedSuccessfully": "Script desat amb èxit",
"scriptSuccessfullyAddedTo": "Script afegit amb èxit a la tasca",
"scriptSavedSuccessfully": "Script desat correctament",
"scriptSuccessfullyAddedTo": "Script afegit correctament a la tasca",
"search": "Cercar",
"searchClient": "Cercar client",
"searchDefaultDescription": "Filtra les imatges per mostrar només les imatges per defecte o no per defecte.",
@ -1251,7 +1268,7 @@
"selectGitRepoOs": "Seleccionar repositori git / SO",
"selectGitRepository": "Seleccionar repositori Git",
"selectImagePrompt": "Seleccioni imatge",
"selectImageToDeleteFromCache": "Seleccionar imatge per eliminar de la cache",
"selectImageToDeleteFromCache": "Seleccionar imatge per eliminar de la memòria cau",
"selectImageToUpdate": "Seleccionar imatge per actualitzar",
"selectImageToUpdateHint": "Selecciona la imatge existent que vols actualitzar.",
"selectNewDestinationRepo": "Seleccioni nou repositori destí",
@ -1267,7 +1284,7 @@
"selectRepoToView": "Tria un repositori de la llista per veure el seu estat detallat.",
"selectScriptToRun": "Seleccioni script a executar",
"selectScriptToView": "Tria un script desat de la llista per veure el seu contingut i configurar paràmetres.",
"selectSoftwareToAdd": "Seleccioni software per afegir",
"selectSoftwareToAdd": "Seleccioni programari per afegir",
"selectTask": "Seleccioni una tasca",
"selectTemplateDescription": "Seleccioni plantilla",
"selectTemplateLabel": "Seleccionar Plantilla",
@ -1280,29 +1297,30 @@
"serverInfoTitle": "Informació del servidor",
"serverIp": "Ip servidor",
"serverLogs": "Logs del servidor",
"serverSubnetSynchronization": "Sincronització de subxarxes de servidors DHCP reeixida",
"serverSuccessfullyDeleted": "Servidor eliminat amb èxit",
"serverSubnetSynchronization": "Sincronització de subxarxes de servidors DHCP completada correctament",
"serverSuccessfullyDeleted": "Servidor eliminat correctament",
"servicesStatusDescription": "Aquí es mostra l'estat dels serveis del servidor.",
"setDefaultOption": "Canviar a imatge per defecte",
"showAdvanced": "Mostrar avançats",
"showDetailsWorks": "¡Mostrar detalls funciona!",
"showingResults": "Mostrant {{from}} a {{to}} de {{total}} resultats",
"shutdownDevice": "Apagar Equip",
"shutdownRequestSentCorrectly": "Petició d'apagat enviada amb èxit",
"software": "Software",
"softwareAddedSuccessfully": "Software afegit amb èxit",
"softwareDeletedSuccessfully": "Software eliminat amb èxit",
"softwareDescription": "Descripció del software",
"softwareFetchingError": "Error en obtenir el software:",
"shutdownRequestSentCorrectly": "Petició d'apagat enviada correctament",
"software": "Programari",
"softwareAddedSuccessfully": "Programari afegit correctament",
"softwareDeletedSuccessfully": "Programari eliminat correctament",
"softwareDescription": "Descripció del programari",
"softwareFetchingError": "Error en obtenir el programari:",
"softwareList": "Llistat",
"softwareNameLabel": "Nom del software",
"softwareProfile": "Perfil de software",
"softwareNameLabel": "Nom del programari",
"softwareProfile": "Perfil de programari",
"softwareProfiles": "Perfils",
"soimage": "SO/Imatge",
"sortBy": "Ordenar per",
"sourceBranch": "Branca origen",
"sourcePartitionInfo": "Informació de Partició d'origen",
"specificRepoInfo": "Informació específica del repositori seleccionat",
"sqlFileLabel": "Fitxer (.sql/.zip)",
"sshPort": "Port SSH",
"sshPortLower": "Port ssh",
"sshPortRequired": "El port SSH és obligatori",
@ -1327,30 +1345,30 @@
"statusUnavailable": "No disponible",
"subnet": "Subxarxa",
"subnetIpRequired": "La ip de la subxarxa és obligatòria.",
"subnetLeasesRemoved": "Concessions de la subxarxa eliminades amb èxit",
"subnetLeasesRemoved": "Concessions de la subxarxa eliminades correctament",
"subnetNameLabel": "Nom de la subxarxa",
"subnetNameRequired": "El nom de la subxarxa és obligatori.",
"subnetNetmaskRequired": "El netmask de la subxarxa és obligatori.",
"subnets": "Subxarxes",
"subnetSuccessfullyDeleted": "Subxarxa eliminada correctament",
"subnetSynchronizedWithServer": "Subxarxa sincronitzada amb servidor",
"success": "Reeixit",
"successful": "reeixit",
"success": "Correcte",
"successful": "correcte",
"successfullyCreated": "Creat correctament",
"successfullyCreatedRepository": "Repositori creat correctament",
"successfullyEdited": "Editat correctament",
"successfullyEditedImage": "Imatge editada correctament",
"successfullyEditedRepository": "Repositori editat correctament",
"successfullyEditedSoftware": "Software editat correctament",
"successfullyEditedSoftware": "Programari editat correctament",
"successfullyScheduledTask": "Tasca programada correctament",
"successfullyUpdatedRepositoryStatus": "Estat del repositori actualitzat correctament",
"successfullyUpdatedSoftwareInventory": "Inventari de software actualitzat correctament",
"successfullyUpdatedSoftwareInventory": "Inventari de programari actualitzat correctament",
"successfulPxeTemplateSynchronization": "Sincronització de plantilles Pxe completada",
"sW": "SO",
"syncAll": "Sincronitzar tot",
"syncDatabase": "Sincronitzar base de dades",
"synchronizationCompleted": "Sincronització completada",
"synchronizationCompletedSuccessfully": "Sincronització completada amb èxit",
"synchronizationCompletedSuccessfully": "Sincronització completada correctament",
"synchronizationError": "Error en sincronitzar",
"synchronizationWithOglivesCompleted": "Sincronització amb ogLives completada",
"synchronized": "Sincronitzat",
@ -1364,7 +1382,7 @@
"tableDescription": "Aquí es mostra la llista d'imatges disponibles per administrar.",
"tableStepText": "Aquí es mostren els calendaris existents amb les seves característiques i configuracions.",
"tabsStepText": "Utilitza les pestanyes per accedir a les diferents opcions de visualització i cerca d'unitats organitzatives i clients.",
"tagCreatedSuccessfully": "Etiqueta creada amb èxit",
"tagCreatedSuccessfully": "Etiqueta creada correctament",
"tagDescriptionHint": "Descripció de l'etiqueta (ex: \"Release estable de la versió 1.0\")",
"tagDescriptionLabel": "Descripció de l'etiqueta",
"tagExampleHint": "Exemple: v1.0.0, release-2024-01, hotfix-bug-123",
@ -1374,15 +1392,15 @@
"taskActionsSequentialHint": "Les accions s'executen en ordre seqüencial. Si una acció falla, les següents es cancel·len automàticament.",
"taskActionsTitle": "Accions de la tasca",
"taskCanceledSuccessfully": "Tasca cancel·lada correctament",
"taskCreatedSuccessfully": "Tasca creada amb èxit",
"taskDeletedSuccessfully": "Tasca eliminada amb èxit",
"taskCreatedSuccessfully": "Tasca creada correctament",
"taskDeletedSuccessfully": "Tasca eliminada correctament",
"taskDetailsTitle": "Detalls de la Tasca",
"taskId": "ID de la Tasca",
"taskName": "Nom de la tasca",
"tasks": "Tasques",
"taskSchedule": "Programació de Tasca",
"taskScheduleCreatedWith": "Programació de tasca creada amb èxit",
"taskUpdatedSuccessfully": "Tasca actualitzada amb èxit",
"taskScheduleCreatedWith": "Programació de tasca creada correctament",
"taskUpdatedSuccessfully": "Tasca actualitzada correctament",
"templateContent": "Contingut de la plantilla PXE",
"templateContentError": "Error en el contingut de la plantilla",
"templateContentPlaceholder": "Introdueix el contingut de la plantilla",
@ -1412,21 +1430,21 @@
"TOOLTIP_DHCP_SERVERS": "Gestionar i registrar servidors DHCP",
"TOOLTIP_DHCP_STATUS": "Estat actual del servei DHCP",
"TOOLTIP_GROUPS": "Gestionar grups d'usuaris",
"TOOLTIP_HARDWARE": "Gestionar configuracions de hardware",
"TOOLTIP_HARDWARE_LIST": "Veure llista de hardware disponible",
"TOOLTIP_HARDWARE_PROFILES": "Gestionar perfils de hardware",
"TOOLTIP_HARDWARE_TYPES": "Gestionar tipus de hardware",
"TOOLTIP_HARDWARE": "Gestionar configuracions de maquinari",
"TOOLTIP_HARDWARE_LIST": "Veure llista de maquinari disponible",
"TOOLTIP_HARDWARE_PROFILES": "Gestionar perfils de maquinari",
"TOOLTIP_HARDWARE_TYPES": "Gestionar tipus de maquinari",
"TOOLTIP_IMAGES": "Gestionar imatges del sistema",
"TOOLTIP_MENUS": "Gestió de menús (opció deshabilitada)",
"TOOLTIP_OPERATIVE_SYSTEMS": "Configurar sistemes operatius",
"TOOLTIP_PXE_BOOT_FILES": "Configurar fitxers d'arrencada PXE",
"TOOLTIP_PXE_IMAGES": "Veure imatges disponibles per arrencada PXE",
"TOOLTIP_PXE_TEMPLATES": "Gestionar plantillas d'arrencada PXE",
"TOOLTIP_REPOSITORIES": "Veure i gestionar repositoris de software",
"TOOLTIP_REPOSITORIES": "Veure i gestionar repositoris de programari",
"TOOLTIP_SEARCH": "Funció de cerca (opció deshabilitada)",
"TOOLTIP_SOFTWARE": "Administrar configuracions de software",
"TOOLTIP_SOFTWARE_LIST": "Veure llista de software disponible",
"TOOLTIP_SOFTWARE_PROFILES": "Gestionar perfils de software",
"TOOLTIP_SOFTWARE": "Administrar configuracions de programari",
"TOOLTIP_SOFTWARE_LIST": "Veure llista de programari disponible",
"TOOLTIP_SOFTWARE_PROFILES": "Gestionar perfils de programari",
"TOOLTIP_SUBNETS": "Gestionar i crear subxarxes",
"TOOLTIP_TASKS": "Veure i gestionar tasques programades",
"TOOLTIP_TRACE_LOGS": "Veure l'historial d'execució de traces",
@ -1435,7 +1453,7 @@
"totalTraces": "Total de traces",
"traceCanceledSuccessfully": "Traça cancel·lada correctament",
"traceLogs": "Logs de traces",
"traceMarkedAsSuccessfulCorrectly": "Traça marcada com a reeixida correctament",
"traceMarkedAsSuccessfulCorrectly": "Traça marcada com a completada correctament",
"tracesInfoStepText": "Aquí pots consultar informació detallada de la traça en concret.",
"tracesProgressStepText": "Aquí pots veure l'estat d'execució actualitzat en temps real.",
"tracesTitleStepText": "En aquesta pantalla, pots veure les traces d'execució de cada client, amb el seu id, comandament, estat en temps real, data i accions a realitzar.",
@ -1450,12 +1468,13 @@
"unrecognizedActionType": "Tipus d'acció no reconegut",
"unsupportedAction": "Acció no suportada:",
"untilThe": "fins al",
"updateCacheRestorePartition": "Actualitza cache i restaura partició",
"updateCacheRestorePartition": "Actualitza memòria cau i restaura partició",
"updatedClient": "¡Client actualitzat!",
"updatedData": "Dades actualitzades",
"updatedTaskScheduleWith": "Programació de tasca actualitzada amb èxit",
"updatedTaskScheduleWith": "Programació de tasca actualitzada correctament",
"updateRequestSent": "Petició d'actualització enviada",
"uploadMenuFileHint": "Pugi el fitxer que s'usarà com a menú",
"uploadSqlOrZip": "Puja el fitxer .sql o comprimit en zip (.zip)",
"urlFormatError": "Format d'URL invàlid.",
"usageColumn": "Ús (%)",
"use": "Ús",
@ -1463,6 +1482,7 @@
"userAddedSuccessfully": "Usuari afegit correctament",
"userDeletedSuccessfully": "Usuari eliminat correctament",
"userEditedSuccessfully": "Usuari editat correctament",
"userLabel": "Usuari",
"userName": "Nom d'Usuari",
"validationToggle": "Validació",
"valueFor": "Valor per a",
@ -1476,7 +1496,7 @@
"viewCommitInGit": "Veure commit en Git",
"viewExternalInfo": "Veure Info Externa",
"viewFailedTraces": "Veure traces fallides",
"viewHardwareCollection": "Veure col·lecció de hardware",
"viewHardwareCollection": "Veure col·lecció de maquinari",
"viewIcon": "Icona de visibilitat",
"viewInfoStepText": "Accedeix a informació i opcions a l'API d'OgBoot.",
"viewInProgressTraces": "Veure traces en progrés",
@ -1486,7 +1506,7 @@
"viewPendingTraces": "Veure traces pendents",
"viewSentTraces": "Veure traces enviades",
"viewSubnets": "Veure Subxarxes",
"viewSuccessfulTraces": "Veure traces reeixides",
"viewSuccessfulTraces": "Veure traces completades correctament",
"viewTodayTraces": "Veure traces d'avui",
"viewTreeMenu": "Veure organigrama",
"viewTreeTitle": "Visualitzar arbre unitat Organizativa",
@ -1494,7 +1514,7 @@
"viewType": "Tipus de vista",
"viewUnitMenu": "Veure dades",
"viewUnitTooltip": "Veure detalls de la unitat organitzativa",
"vistalista": "Vista Llista",
"vistalista": "Vista de llista",
"vistatarjeta": "Vista Targeta",
"welcomeTitle": "Benvingut a la consola d'administració d'OpenGnsys",
"welcomeUser": "Benvingut {{username}}",
@ -1524,20 +1544,5 @@
"youMustSelectAtLeastOne1": "Has de seleccionar almenys un dia de la setmana",
"youMustSelectAtLeastOne2": "Has de seleccionar almenys un mes",
"youMustSpecifyStartDate": "Has d'especificar data d'inici i data de fi",
"youWantToPropagateTheParametersOf": "Vols propagar els paràmetres de xarxa (ogLive, repositori, menú, plantilla PXE, perfil de hardware) a tots els clients d'aquesta unitat organitzativa?",
"importLegacyDbTitle": "Importar des d'OG 1.1",
"importLegacyDbDesc": "Migra les dades d'una instal·lació OpenGnsys 1.1 a la versió 3.0",
"fromSqlFile": "Des de fitxer SQL",
"fromRemoteDb": "Des de Base de Dades remota",
"importButton": "Importar",
"sqlFileLabel": "Fitxer (.sql/.zip)",
"hostLabel": "Host de la Base de Dades",
"userLabel": "Usuari",
"passLabel": "Contrasenya (Opcional)",
"dbLabel": "Nom de la BD",
"migrationInProgress": "Migració en curs...",
"migrationWaitWarning": "Aquest procés pot trigar uns minuts. Pots navegar per altres pestanyes o recarregar la pàgina; la migració continuarà en segon pla.",
"migrationSuccess": "Migració completada amb èxit",
"migrationError": "Error durant la migració",
"uploadSqlOrZip": "Puja el fitxer .sql o comprimit en zip (.zip)"
}
"youWantToPropagateTheParametersOf": "Vols propagar els paràmetres de xarxa (ogLive, repositori, menú, plantilla PXE, perfil de maquinari) a tots els clients d'aquesta unitat organitzativa?"
}

View File

@ -231,9 +231,6 @@
"clientListExecuteScript": "List of clients where the selected script will be executed",
"clientListPartition": "List of clients where partitioning will be performed",
"clientLogs": "Client Logs",
"diskLogs": "Disk Logs",
"diskLogsStartLive": "Enable real-time mode",
"diskLogsStopLive": "Stop real-time mode",
"clientMacOS": "MacOS client",
"clientOff": "Client off",
"clientOgLive": "OGLive client",
@ -323,6 +320,7 @@
"dataUpdatedCorrectly": "Data updated successfully",
"dateFormatPlaceholder": "MM/DD/YYYY",
"daysOfTheWeek": "Days of the week",
"dbLabel": "Database Name",
"default20": "Default (20)",
"defaultImage": "Default image",
"defaultTemplate": "Default template",
@ -363,6 +361,9 @@
"directClientsToggleTooltip": "Show only equipment directly assigned to the selected node (no descendants)",
"disabled": "Disabled",
"diskImageAssistantTitle": "Disk image assistant",
"diskLogs": "Disk Logs",
"diskLogsStartLive": "Enable real-time mode",
"diskLogsStopLive": "Stop real-time mode",
"diskModel": "Disk boot",
"diskUsage": "Disk Usage",
"diskUsageDescription": "Here is the disk usage of the server.",
@ -633,6 +634,8 @@
"formIsInvalid": "Form is invalid",
"forRemotePcOnDays": "for Remote PC on days:",
"forReservationFrom": "for reservation from",
"fromRemoteDb": "From Remote Database",
"fromSqlFile": "From SQL File",
"fullDeployment": "Full deployment",
"fullsum": "Fullsum",
"generalDataTab": "General data",
@ -665,6 +668,7 @@
"hasNotBeenLoaded": "Client information has not been loaded",
"helpTitle": "Help",
"hideAdvanced": "Hide advanced",
"hostLabel": "Database Host",
"id1": "Id",
"ignitionRequestSentCorrectly": "Ignition request sent successfully",
"imageAddedSuccessfully": "Image added successfully",
@ -687,8 +691,11 @@
"imageTransferInfo": ". The image will be transferred to the rest of the repositories if it does not already exist.",
"imageType": "Image type",
"imageUpdatedSuccessfully": "Image updated successfully",
"importButton": "Import",
"importedClientsZero": "Imported clients:",
"importImageButton": "Import image",
"importLegacyDbDesc": "Migrates data from an OpenGnsys 1.1 installation to version 3.0",
"importLegacyDbTitle": "Import from OG 1.1",
"inactive": "Inactive",
"inactiveOption": "Uninstalled",
"includedCommandGroups": "Included Command Groups",
@ -959,6 +966,10 @@
"menuName": "Menu name",
"menus": "Menus",
"menuSuccessfullyRemoved": "Menu removed successfully",
"migrationError": "Error during migration",
"migrationInProgress": "Migration in progress...",
"migrationSuccess": "Migration completed successfully",
"migrationWaitWarning": "This process can take several minutes. You can navigate to other tabs or reload the page; the migration will continue in the background.",
"monolithicImage": "Monolithic image",
"monolithicImageStep": "Monolithic image",
"monolithicImageStepText": "On this screen you can manage monolithic images.",
@ -1005,6 +1016,7 @@
"noGitInfoForPartition": "No Git information found for this partition",
"noHardwareAssociatedToProfile": "There is no hardware associated with this profile",
"noInternalElementsMessage": "No internal elements",
"noLogsAvailable": "noLogsAvailable",
"noOgLivesInServer": "There are no OgLives on this server",
"noOneHasBeenSelected": "No disk has been selected.",
"noOrganizationalUnitsTooltip": "You must create at least one organizational unit before adding clients",
@ -1040,7 +1052,9 @@
"ogLiveModel": "ogLiveModel",
"oglivesDescription": "Here are the OgLives installed on the server.",
"ogLiveTitle": "OG Live",
"oglogLogs": "oglog Logs",
"ogRepoServerStatus": "OgRepository Server Status",
"ogrepositoryLogs": "OgRepository Logs",
"online": "Online",
"onlineEquipments": "Online Equipment",
"onlySubnets": "Only Subnets",
@ -1082,6 +1096,7 @@
"partitionTitle": "Partitions assistant",
"partitionType": "Partition type",
"partitionTypeColumn": "Partition type",
"passLabel": "Password (Optional)",
"passwordChangedSuccessfully": "Password changed successfully",
"pending": "Pending",
"pendingOption": "Pending",
@ -1148,8 +1163,8 @@
"remoteAvailability": "Check availability to RemotePC",
"remotePath": "Remote path",
"remotePc": "Remote Pc",
"remotePcLabel": "Remote PC",
"remotePcCalendarRuleInfo": "(The selected days and hours will be marked as unavailable for remote pc.)",
"remotePcLabel": "Remote PC",
"remotePcStatusAvailable": "Remote PC status available",
"remotePcStatusUnavailable": "Remote PC status unavailable",
"removedSuccessfully": "Deleted successfully",
@ -1305,6 +1320,7 @@
"sourceBranch": "Source branch",
"sourcePartitionInfo": "Source Partition Information",
"specificRepoInfo": "Specific information of the selected repository",
"sqlFileLabel": "File (.sql/.zip)",
"sshPort": "SSH Port",
"sshPortLower": "SSH port",
"sshPortRequired": "SSH port is required",
@ -1458,6 +1474,7 @@
"updatedTaskScheduleWith": "Task schedule updated successfully",
"updateRequestSent": "Update request sent",
"uploadMenuFileHint": "Upload the file that will be used as the menu",
"uploadSqlOrZip": "Upload the .sql file or compressed in zip (.zip)",
"urlFormatError": "Invalid URL format.",
"usageColumn": "Usage (%)",
"use": "Use",
@ -1465,6 +1482,7 @@
"userAddedSuccessfully": "User added successfully",
"userDeletedSuccessfully": "User deleted successfully",
"userEditedSuccessfully": "User edited successfully",
"userLabel": "Username",
"userName": "User name",
"validationToggle": "Validation",
"valueFor": "Value for",
@ -1526,20 +1544,5 @@
"youMustSelectAtLeastOne1": "You must select at least one day of the week",
"youMustSelectAtLeastOne2": "You must select at least one month",
"youMustSpecifyStartDate": "You must specify start date and end date",
"youWantToPropagateTheParametersOf": "Do you want to propagate the network parameters (ogLive, repository, menu, PXE template, hardware profile) to all clients in this organizational unit?",
"importLegacyDbTitle": "Import from OG 1.1",
"importLegacyDbDesc": "Migrates data from an OpenGnsys 1.1 installation to version 3.0",
"fromSqlFile": "From SQL File",
"fromRemoteDb": "From Remote Database",
"importButton": "Import",
"sqlFileLabel": "File (.sql/.zip)",
"hostLabel": "Database Host",
"userLabel": "Username",
"passLabel": "Password (Optional)",
"dbLabel": "Database Name",
"migrationInProgress": "Migration in progress...",
"migrationWaitWarning": "This process can take several minutes. You can navigate to other tabs or reload the page; the migration will continue in the background.",
"migrationSuccess": "Migration completed successfully",
"migrationError": "Error during migration",
"uploadSqlOrZip": "Upload the .sql file or compressed in zip (.zip)"
}
"youWantToPropagateTheParametersOf": "Do you want to propagate the network parameters (ogLive, repository, menu, PXE template, hardware profile) to all clients in this organizational unit?"
}

View File

@ -231,9 +231,6 @@
"clientListExecuteScript": "Listado de clientes donde se ejecutara el script seleccionado",
"clientListPartition": "Listado de clientes donde se realizará el particionado",
"clientLogs": "Logs de cliente",
"diskLogs": "Logs de disco",
"diskLogsStartLive": "Activar modo en tiempo real",
"diskLogsStopLive": "Detener modo en tiempo real",
"clientMacOS": "Cliente MacOS",
"clientOff": "Cliente apagado",
"clientOgLive": "Cliente OGLive",
@ -323,6 +320,7 @@
"dataUpdatedCorrectly": "Datos actualizados con éxito",
"dateFormatPlaceholder": "DD/MM/YYYY",
"daysOfTheWeek": "Días de la semana",
"dbLabel": "Nombre de la BD",
"default20": "Por defecto (20)",
"defaultImage": "Imagen por defecto",
"defaultTemplate": "Plantilla por defecto",
@ -363,6 +361,9 @@
"directClientsToggleTooltip": "Mostrar solo los equipos directamente asignados al nodo seleccionado (sin descendientes)",
"disabled": "Deshabilitado",
"diskImageAssistantTitle": "Asistente de imágenes en disco",
"diskLogs": "Logs de disco",
"diskLogsStartLive": "Activar modo en tiempo real",
"diskLogsStopLive": "Detener modo en tiempo real",
"diskModel": "Arranque por disco",
"diskUsage": "Uso de Disco",
"diskUsageDescription": "Aquí se muestra el uso de disco del servidor.",
@ -633,6 +634,8 @@
"formIsInvalid": "El formulario es inválido",
"forRemotePcOnDays": "para Remote PC los días:",
"forReservationFrom": "para reserva desde el",
"fromRemoteDb": "Desde Base de Datos remota",
"fromSqlFile": "Desde fichero SQL",
"fullDeployment": "Despliegue completo",
"fullsum": "Suma total",
"generalDataTab": "Datos generales",
@ -665,6 +668,7 @@
"hasNotBeenLoaded": "No se ha cargado la información del cliente",
"helpTitle": "Ayuda",
"hideAdvanced": "Ocultar avanzados",
"hostLabel": "Host de la Base de Datos",
"id1": "Id",
"ignitionRequestSentCorrectly": "Petición de encendido enviada correctamente",
"imageAddedSuccessfully": "Imagen añadida correctamente",
@ -687,8 +691,11 @@
"imageTransferInfo": ". Se transferirá la imagen al resto de repositorios en el caso de que no exista previamente.",
"imageType": "Tipo de imagen",
"imageUpdatedSuccessfully": "Imagen actualizada con éxito",
"importButton": "Importar",
"importedClientsZero": "Clientes importados:",
"importImageButton": "Importar imagen",
"importLegacyDbDesc": "Migra los datos de una instalación OpenGnsys 1.1 a la versión 3.0",
"importLegacyDbTitle": "Importar desde OG 1.1",
"inactive": "Inactivo",
"inactiveOption": "No instalada",
"includedCommandGroups": "Grupos de Comandos Incluidos",
@ -959,6 +966,10 @@
"menuName": "Nombre de menú",
"menus": "Menús",
"menuSuccessfullyRemoved": "Menú eliminado con éxito",
"migrationError": "Error durante la migración",
"migrationInProgress": "Migración en curso...",
"migrationSuccess": "Migración completada con éxito",
"migrationWaitWarning": "Este proceso puede tardar varios minutos. Puedes navegar por otras pestañas o recargar la página; la migración continuará en segundo plano.",
"monolithicImage": "Imagenes monolíticas",
"monolithicImageStep": "Imagen monolítica",
"monolithicImageStepText": "Esta opción permite visualizar las imágenes monolíticas disponibles en el servidor.",
@ -1005,6 +1016,7 @@
"noGitInfoForPartition": "No se encontró información de Git para esta partición",
"noHardwareAssociatedToProfile": "No hay hardware asociado a este perfil",
"noInternalElementsMessage": "No hay elementos internos",
"noLogsAvailable": "noLogsAvailable",
"noOgLivesInServer": "No hay OgLives en este servidor",
"noOneHasBeenSelected": "No se ha seleccionado ningún disco.",
"noOrganizationalUnitsTooltip": "Debe crear al menos una unidad organizativa antes de añadir clientes",
@ -1040,7 +1052,9 @@
"ogLiveModel": "ogLiveModel",
"oglivesDescription": "Aquí se muestran los OgLive instalados en el servidor.",
"ogLiveTitle": "OG Live",
"oglogLogs": "Logs de oglog",
"ogRepoServerStatus": "Estado del Servidor OgRepository",
"ogrepositoryLogs": "Logs de OgRepository",
"online": "Online",
"onlineEquipments": "Equipos Online",
"onlySubnets": "Solo Subredes",
@ -1082,6 +1096,7 @@
"partitionTitle": "Asistente de particionado",
"partitionType": "Tipo de partición",
"partitionTypeColumn": "Tipo partición",
"passLabel": "Contraseña (Opcional)",
"passwordChangedSuccessfully": "Contraseña cambiada con éxito",
"pending": "Pendiente",
"pendingOption": "Instalando",
@ -1148,8 +1163,8 @@
"remoteAvailability": "Marcar como disponible para Remote PC",
"remotePath": "Ruta remota",
"remotePc": "Remote Pc",
"remotePcLabel": "PC remoto",
"remotePcCalendarRuleInfo": "(Los dias y horas seleccionados se marcarán como aula no disponible para remote pc.)",
"remotePcLabel": "PC remoto",
"remotePcStatusAvailable": "Disponible para Remote PC",
"remotePcStatusUnavailable": "No disponible para Remote PC",
"removedSuccessfully": "Eliminado con éxito",
@ -1305,6 +1320,7 @@
"sourceBranch": "Rama origen",
"sourcePartitionInfo": "Información de Partición de origen",
"specificRepoInfo": "Información específica del repositorio seleccionado",
"sqlFileLabel": "Fichero (.sql/.zip)",
"sshPort": "Puerto SSH",
"sshPortLower": "Puerto ssh",
"sshPortRequired": "El puerto SSH es obligatorio",
@ -1458,6 +1474,7 @@
"updatedTaskScheduleWith": "Programación de tarea actualizada con éxito",
"updateRequestSent": "Petición de actualización enviada",
"uploadMenuFileHint": "Suba el fichero que se usará como menú",
"uploadSqlOrZip": "Sube el fichero .sql o comprimido en zip (.zip)",
"urlFormatError": "Formato de URL inválido.",
"usageColumn": "Uso (%)",
"use": "Uso",
@ -1465,6 +1482,7 @@
"userAddedSuccessfully": "Usuario añadido correctamente",
"userDeletedSuccessfully": "Usuario eliminado correctamente",
"userEditedSuccessfully": "Usuario editado correctamente",
"userLabel": "Usuario",
"userName": "Nombre de Usuario",
"validationToggle": "Validación",
"valueFor": "Valor para",
@ -1526,20 +1544,5 @@
"youMustSelectAtLeastOne1": "Debe seleccionar al menos un día de la semana",
"youMustSelectAtLeastOne2": "Debe seleccionar al menos un mes",
"youMustSpecifyStartDate": "Debe especificar fecha de inicio y fecha de fin",
"youWantToPropagateTheParametersOf": "¿Desea propagar los parámetros de red (ogLive, repositorio, menú, plantilla PXE, perfil de hardware) a todos los clientes de esta unidad organizativa?",
"importLegacyDbTitle": "Importar desde OG 1.1",
"importLegacyDbDesc": "Migra los datos de una instalación OpenGnsys 1.1 a la versión 3.0",
"fromSqlFile": "Desde fichero SQL",
"fromRemoteDb": "Desde Base de Datos remota",
"importButton": "Importar",
"sqlFileLabel": "Fichero (.sql/.zip)",
"hostLabel": "Host de la Base de Datos",
"userLabel": "Usuario",
"passLabel": "Contraseña (Opcional)",
"dbLabel": "Nombre de la BD",
"migrationInProgress": "Migración en curso...",
"migrationWaitWarning": "Este proceso puede tardar varios minutos. Puedes navegar por otras pestañas o recargar la página; la migración continuará en segundo plano.",
"migrationSuccess": "Migración completada con éxito",
"migrationError": "Error durante la migración",
"uploadSqlOrZip": "Sube el fichero .sql o comprimido en zip (.zip)"
}
"youWantToPropagateTheParametersOf": "¿Desea propagar los parámetros de red (ogLive, repositorio, menú, plantilla PXE, perfil de hardware) a todos los clientes de esta unidad organizativa?"
}