diff --git a/CHANGELOG.md b/CHANGELOG.md index 46cb2d8..7924f85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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/.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 diff --git a/Jenkins/Jenkinsfile-deb-pkg b/Jenkins/Jenkinsfile-deb-pkg index ad33e30..6bc7418 100644 --- a/Jenkins/Jenkinsfile-deb-pkg +++ b/Jenkins/Jenkinsfile-deb-pkg @@ -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') diff --git a/ogWebconsole/src/app/app.module.ts b/ogWebconsole/src/app/app.module.ts index d6191ac..0af94eb 100644 --- a/ogWebconsole/src/app/app.module.ts +++ b/ogWebconsole/src/app/app.module.ts @@ -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 ], diff --git a/ogWebconsole/src/app/components/admin/import-legacy/import-legacy.component.ts b/ogWebconsole/src/app/components/admin/import-legacy/import-legacy.component.ts index a34747a..acdc40e 100644 --- a/ogWebconsole/src/app/components/admin/import-legacy/import-legacy.component.ts +++ b/ogWebconsole/src/app/components/admin/import-legacy/import-legacy.component.ts @@ -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) => { diff --git a/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.html b/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.html index 3e91d23..b44e5f0 100644 --- a/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.html +++ b/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.html @@ -42,15 +42,13 @@ -
-
-

{{ 'ogbootLogs' | translate }}

-

{{ 'realTimeOgbootLogs' | translate }}

-
-
- -
+
+ +
} diff --git a/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.ts b/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.ts index 6a1082b..8abd633 100644 --- a/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.ts +++ b/ogWebconsole/src/app/components/global-status/ogboot-status/ogboot-status.component.ts @@ -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 : ''; diff --git a/ogWebconsole/src/app/components/global-status/ogcore-status/ogcore-status.component.html b/ogWebconsole/src/app/components/global-status/ogcore-status/ogcore-status.component.html index d051185..f7358c6 100644 --- a/ogWebconsole/src/app/components/global-status/ogcore-status/ogcore-status.component.html +++ b/ogWebconsole/src/app/components/global-status/ogcore-status/ogcore-status.component.html @@ -1,14 +1,12 @@
-
-
-

{{ 'ogcoreLogs' | translate }}

-

{{ 'realTimeOgcoreLogs' | translate }}

-
-
- -
+
+ +
diff --git a/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.html b/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.html index 38bf92b..d344c9b 100644 --- a/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.html +++ b/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.html @@ -42,15 +42,13 @@
-
-
-

{{ 'dhcpLogs' | translate }}

-

{{ 'realTimeDhcpLogs' | translate }}

-
-
- -
+
+ +
} diff --git a/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.ts b/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.ts index c15f1a5..9ab253f 100644 --- a/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.ts +++ b/ogWebconsole/src/app/components/global-status/ogdhcp-status/ogdhcp-status.component.ts @@ -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 : ''; diff --git a/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.html b/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.html index d35736d..a0fae1e 100644 --- a/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.html +++ b/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.html @@ -49,16 +49,13 @@ -
-
-

Datos del repositorio: {{ getSelectedRepositoryName() }}

-

{{ 'specificRepoInfo' | translate }}

-
-
- -
+
+ +
} diff --git a/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.ts b/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.ts index 32b9bfb..6f06dce 100644 --- a/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.ts +++ b/ogWebconsole/src/app/components/global-status/ogrepository-status/ogrepository-status.component.ts @@ -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 : ''; diff --git a/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.css b/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.css new file mode 100644 index 0000000..01ac002 --- /dev/null +++ b/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.css @@ -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; +} \ No newline at end of file diff --git a/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.html b/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.html new file mode 100644 index 0000000..d1145ee --- /dev/null +++ b/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.html @@ -0,0 +1,59 @@ +
+
+

{{ title | translate }}

+

{{ 'realTimeLogs' | translate }}

+
+ + + +
+
+
+ + +
+
+ + LIVE +
+
+ + @if (loadingDiskLogs && !diskLogsContent) { +
+ +
+ } + + @if (errorDiskLogs) { +
+ error_outline +

{{ errorDiskLogs }}

+ +
+ } + +
{{ diskLogsContent }}
+
+
+ + +
+ @if (oglogUrl) { + + } @else { +
+ info_outline +

oglog no está disponible o no se ha configurado la URL.

+
+ } +
+
+
+
diff --git a/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.ts b/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.ts new file mode 100644 index 0000000..9053dd4 --- /dev/null +++ b/ogWebconsole/src/app/components/global-status/status-logs/status-logs.component.ts @@ -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) {} + } + } +} diff --git a/ogWebconsole/src/locale/cat.json b/ogWebconsole/src/locale/cat.json index 4f45d79..973cc78 100644 --- a/ogWebconsole/src/locale/cat.json +++ b/ogWebconsole/src/locale/cat.json @@ -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 # Escriu el teu script aquí echo 'Iniciant script...' # 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 @.", "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)" -} \ No newline at end of file + "youWantToPropagateTheParametersOf": "Vols propagar els paràmetres de xarxa (ogLive, repositori, menú, plantilla PXE, perfil de maquinari) a tots els clients d'aquesta unitat organitzativa?" +} diff --git a/ogWebconsole/src/locale/en.json b/ogWebconsole/src/locale/en.json index 11ce961..a1f3b36 100644 --- a/ogWebconsole/src/locale/en.json +++ b/ogWebconsole/src/locale/en.json @@ -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)" -} \ No newline at end of file + "youWantToPropagateTheParametersOf": "Do you want to propagate the network parameters (ogLive, repository, menu, PXE template, hardware profile) to all clients in this organizational unit?" +} diff --git a/ogWebconsole/src/locale/es.json b/ogWebconsole/src/locale/es.json index ffd8fe7..f77a672 100644 --- a/ogWebconsole/src/locale/es.json +++ b/ogWebconsole/src/locale/es.json @@ -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)" -} \ No newline at end of file + "youWantToPropagateTheParametersOf": "¿Desea propagar los parámetros de red (ogLive, repositorio, menú, plantilla PXE, perfil de hardware) a todos los clientes de esta unidad organizativa?" +}