diff --git a/ui/src/locales/ar/containerComponents.json b/ui/src/locales/ar/containerComponents.json index c6409c55..3e4c24a9 100644 --- a/ui/src/locales/ar/containerComponents.json +++ b/ui/src/locales/ar/containerComponents.json @@ -187,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Ungrouped", @@ -262,7 +267,8 @@ "filterKind": "Kind: {value}", "filterHiddenPinned": "Hidden: Pinned", "filtersLabel": "Filters", - "filteredContainers": "Filtered to {count} container | Filtered to {count} containers" + "filteredContainers": "Filtered to {count} container | Filtered to {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Paused", @@ -300,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggested", - "tooltip": "Best stable semver tag available — consider pinning" + "tooltip": "Best stable semver tag available — consider pinning", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Security blocked", diff --git a/ui/src/locales/ar/containersView.json b/ui/src/locales/ar/containersView.json index a0ffee1f..ecfaf167 100644 --- a/ui/src/locales/ar/containersView.json +++ b/ui/src/locales/ar/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Updated {count} containers", "batchPartialNoGroup": "Updated {succeeded} of {total} containers; {failed} failed", "batchFailedNoGroup": "Failed to update {count} containers", - "unknownGroup": "unknown group" + "unknownGroup": "unknown group", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry error", diff --git a/ui/src/locales/ar/dashboardView.json b/ui/src/locales/ar/dashboardView.json index 2b821a6a..3425608a 100644 --- a/ui/src/locales/ar/dashboardView.json +++ b/ui/src/locales/ar/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates Available", + "widgetAria": "Updates Available widget", "updateAll": "Update all", "noUpdates": "No updates available", "releaseNotes": "Release notes", diff --git a/ui/src/locales/ar/listViews.json b/ui/src/locales/ar/listViews.json index b010ddb0..51cb1812 100644 --- a/ui/src/locales/ar/listViews.json +++ b/ui/src/locales/ar/listViews.json @@ -75,6 +75,32 @@ "clear": "Clear", "allNotificationTriggers": "All notification triggers", "noTriggers": "No triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "On", "rule": "Rule", @@ -140,6 +166,15 @@ "medium": "Medium", "low": "Low" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Update", "viewInContainers": "View in Containers", "viewAllInContainers": "View all in Containers", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Refreshing registry details...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "No hosts match your filters", "justNow": "Just now", "never": "Never", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Address", diff --git a/ui/src/locales/ar/notificationOutboxView.json b/ui/src/locales/ar/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/ar/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/de/common.json b/ui/src/locales/de/common.json index 0a272bf8..cec85bc9 100644 --- a/ui/src/locales/de/common.json +++ b/ui/src/locales/de/common.json @@ -1,6 +1,6 @@ { "common": { - "loading": "Wird geladen...", + "loading": "Wird geladen…", "back": "Zurück", "cancel": "Abbrechen", "save": "Speichern", diff --git a/ui/src/locales/de/containerComponents.json b/ui/src/locales/de/containerComponents.json index 3c2f941b..e318a96b 100644 --- a/ui/src/locales/de/containerComponents.json +++ b/ui/src/locales/de/containerComponents.json @@ -102,6 +102,7 @@ "version": "Version", "currentLabel": "Aktuell:", "latestLabel": "Neueste:", + "digestLabel": "Digest:", "upToDate": "Aktuell", "tagFilters": "Tag-Filter", "includeLabel": "Einschließen:", @@ -153,12 +154,12 @@ "statusQueued": "In Warteschlange", "statusScanning": "Scan läuft", "statusUpdating": "Aktualisiert", - "statusPulling": "Pull läuft...", - "statusScanningPhase": "Scan läuft...", - "statusGeneratingSbom": "SBOM wird erstellt...", - "statusHealthChecking": "Healthcheck läuft...", - "statusFinalizing": "Wird abgeschlossen...", - "statusRollingBack": "Rollback läuft...", + "statusPulling": "Pull läuft…", + "statusScanningPhase": "Scan läuft…", + "statusGeneratingSbom": "SBOM wird erstellt…", + "statusHealthChecking": "Healthcheck läuft…", + "statusFinalizing": "Wird abgeschlossen…", + "statusRollingBack": "Rollback läuft…", "lastUpdateFailed": "Letztes Update fehlgeschlagen: {reason}", "stopAction": "Stoppen", "startAction": "Starten", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Nicht gruppiert", @@ -261,7 +267,8 @@ "filterKind": "Typ: {value}", "filterHiddenPinned": "Ausgeblendet: Gepinnt", "filtersLabel": "Filter", - "filteredContainers": "Auf {count} Container gefiltert | Auf {count} Container gefiltert" + "filteredContainers": "Auf {count} Container gefiltert | Auf {count} Container gefiltert", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Pausiert", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Vorgeschlagen", - "tooltip": "Bester verfügbarer stabiler Semver-Tag - Pinning erwägen" + "tooltip": "Bester verfügbarer stabiler Semver-Tag - Pinning erwägen", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Durch Sicherheit blockiert", diff --git a/ui/src/locales/de/containerLogs.json b/ui/src/locales/de/containerLogs.json index a9f60fd1..08e215a4 100644 --- a/ui/src/locales/de/containerLogs.json +++ b/ui/src/locales/de/containerLogs.json @@ -2,7 +2,7 @@ "containerLogs": { "backTooltip": "Zurück zu Containern", "title": "Container-Logs", - "loading": "Container wird geladen...", + "loading": "Container wird geladen…", "notFound": "Container \"{name}\" nicht gefunden", "loadFailed": "Containerinformationen konnten nicht geladen werden" } diff --git a/ui/src/locales/de/containersView.json b/ui/src/locales/de/containersView.json index 40051a55..2e1992c7 100644 --- a/ui/src/locales/de/containersView.json +++ b/ui/src/locales/de/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "{count} Container aktualisiert", "batchPartialNoGroup": "{succeeded} von {total} Containern aktualisiert; {failed} fehlgeschlagen", "batchFailedNoGroup": "{count} Container konnten nicht aktualisiert werden", - "unknownGroup": "unbekannte Gruppe" + "unknownGroup": "unbekannte Gruppe", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry-Fehler", diff --git a/ui/src/locales/de/dashboardView.json b/ui/src/locales/de/dashboardView.json index 1eb6e38e..f9c20eb1 100644 --- a/ui/src/locales/de/dashboardView.json +++ b/ui/src/locales/de/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates verfügbar", + "widgetAria": "Updates Available widget", "updateAll": "Alle aktualisieren", "noUpdates": "Keine Updates verfügbar", "releaseNotes": "Release Notes", diff --git a/ui/src/locales/de/listViews.json b/ui/src/locales/de/listViews.json index b8475508..f0729b2b 100644 --- a/ui/src/locales/de/listViews.json +++ b/ui/src/locales/de/listViews.json @@ -75,6 +75,32 @@ "clear": "Löschen", "allNotificationTriggers": "Alle Benachrichtigungstrigger", "noTriggers": "Keine Trigger", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Bei", "rule": "Regel", @@ -140,6 +166,15 @@ "medium": "Mittel", "low": "Niedrig" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Aktualisieren", "viewInContainers": "In Containern anzeigen", "viewAllInContainers": "Alle in Containern anzeigen", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Registry-Details werden aktualisiert...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "Keine Hosts passen zu deinen Filtern", "justNow": "Gerade eben", "never": "Nie", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Adresse", @@ -311,7 +355,7 @@ "containersWatched": "{count} Container beobachtet" }, "badge": { - "maint": "Wart." + "maint": "Wart" }, "detail": { "cron": "Cron", diff --git a/ui/src/locales/de/notificationOutboxView.json b/ui/src/locales/de/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/de/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/es/common.json b/ui/src/locales/es/common.json index 5e098b6a..a8e911f8 100644 --- a/ui/src/locales/es/common.json +++ b/ui/src/locales/es/common.json @@ -1,6 +1,6 @@ { "common": { - "loading": "Cargando...", + "loading": "Cargando…", "back": "Atrás", "cancel": "Cancelar", "save": "Guardar", diff --git a/ui/src/locales/es/containerComponents.json b/ui/src/locales/es/containerComponents.json index 77a0da8d..7232ca6e 100644 --- a/ui/src/locales/es/containerComponents.json +++ b/ui/src/locales/es/containerComponents.json @@ -102,6 +102,7 @@ "version": "Versión", "currentLabel": "Actual:", "latestLabel": "Última:", + "digestLabel": "Digest:", "upToDate": "Actualizado", "tagFilters": "Filtros de tags", "includeLabel": "Incluir:", @@ -153,12 +154,12 @@ "statusQueued": "En cola", "statusScanning": "Escaneando", "statusUpdating": "Actualizando", - "statusPulling": "Descargando...", - "statusScanningPhase": "Escaneando...", - "statusGeneratingSbom": "Generando SBOM...", - "statusHealthChecking": "Comprobando salud...", - "statusFinalizing": "Finalizando...", - "statusRollingBack": "Haciendo rollback...", + "statusPulling": "Descargando…", + "statusScanningPhase": "Escaneando…", + "statusGeneratingSbom": "Generando SBOM…", + "statusHealthChecking": "Comprobando salud…", + "statusFinalizing": "Finalizando…", + "statusRollingBack": "Haciendo rollback…", "lastUpdateFailed": "Última actualización fallida: {reason}", "stopAction": "Detener", "startAction": "Iniciar", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Sin agrupar", @@ -261,7 +267,8 @@ "filterKind": "Tipo: {value}", "filterHiddenPinned": "Oculto: fijados", "filtersLabel": "Filtros", - "filteredContainers": "Filtrado a {count} contenedor | Filtrado a {count} contenedores" + "filteredContainers": "Filtrado a {count} contenedor | Filtrado a {count} contenedores", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Pausado", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Sugerido", - "tooltip": "Mejor tag semver estable disponible - considera fijarlo" + "tooltip": "Mejor tag semver estable disponible - considera fijarlo", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Bloqueado por seguridad", diff --git a/ui/src/locales/es/containerLogs.json b/ui/src/locales/es/containerLogs.json index ba12b8cf..1cb38eca 100644 --- a/ui/src/locales/es/containerLogs.json +++ b/ui/src/locales/es/containerLogs.json @@ -2,7 +2,7 @@ "containerLogs": { "backTooltip": "Volver a contenedores", "title": "Registros del contenedor", - "loading": "Cargando contenedor...", + "loading": "Cargando contenedor…", "notFound": "Contenedor \"{name}\" no encontrado", "loadFailed": "No se pudo cargar la información del contenedor" } diff --git a/ui/src/locales/es/containersView.json b/ui/src/locales/es/containersView.json index 12941106..af7b90c3 100644 --- a/ui/src/locales/es/containersView.json +++ b/ui/src/locales/es/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Actualizados {count} contenedores", "batchPartialNoGroup": "Actualizados {succeeded} de {total} contenedores; {failed} fallidos", "batchFailedNoGroup": "No se pudieron actualizar {count} contenedores", - "unknownGroup": "grupo desconocido" + "unknownGroup": "grupo desconocido", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Error de registro", diff --git a/ui/src/locales/es/dashboardView.json b/ui/src/locales/es/dashboardView.json index c863515b..fe37e5d4 100644 --- a/ui/src/locales/es/dashboardView.json +++ b/ui/src/locales/es/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Actualizaciones disponibles", + "widgetAria": "Updates Available widget", "updateAll": "Actualizar todo", "noUpdates": "No hay actualizaciones disponibles", "releaseNotes": "Notas de versión", diff --git a/ui/src/locales/es/listViews.json b/ui/src/locales/es/listViews.json index 3796971d..76fe2603 100644 --- a/ui/src/locales/es/listViews.json +++ b/ui/src/locales/es/listViews.json @@ -75,6 +75,32 @@ "clear": "Limpiar", "allNotificationTriggers": "Todos los triggers de notificación", "noTriggers": "Sin triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "En", "rule": "Regla", @@ -140,6 +166,15 @@ "medium": "Media", "low": "Baja" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Actualizar", "viewInContainers": "Ver en Contenedores", "viewAllInContainers": "Ver todo en Contenedores", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Estado" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Actualizando detalles del registro...", "status": "Estado", @@ -226,6 +266,10 @@ "emptyFiltered": "Ningún host coincide con tus filtros", "justNow": "Ahora mismo", "never": "Nunca", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Dirección", @@ -311,7 +355,7 @@ "containersWatched": "{count} contenedores vigilados" }, "badge": { - "maint": "Mant." + "maint": "Mant" }, "detail": { "cron": "Cron", diff --git a/ui/src/locales/es/notificationOutboxView.json b/ui/src/locales/es/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/es/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/fr/appShell.json b/ui/src/locales/fr/appShell.json index 0c0de6a5..173c63c0 100644 --- a/ui/src/locales/fr/appShell.json +++ b/ui/src/locales/fr/appShell.json @@ -14,8 +14,8 @@ "regexToggle": ".* Regex", "showMatchesOnly": "Afficher seulement les correspondances", "showingMatchesOnly": "Correspondances seulement", - "prev": "Préc.", - "next": "Suiv." + "prev": "Préc", + "next": "Suiv" }, "search": { "placeholder": "Rechercher dans les logs", diff --git a/ui/src/locales/fr/common.json b/ui/src/locales/fr/common.json index a34bdc97..da0bfe03 100644 --- a/ui/src/locales/fr/common.json +++ b/ui/src/locales/fr/common.json @@ -1,6 +1,6 @@ { "common": { - "loading": "Chargement...", + "loading": "Chargement…", "back": "Retour", "cancel": "Annuler", "save": "Enregistrer", diff --git a/ui/src/locales/fr/containerComponents.json b/ui/src/locales/fr/containerComponents.json index 5a519770..d8e43eea 100644 --- a/ui/src/locales/fr/containerComponents.json +++ b/ui/src/locales/fr/containerComponents.json @@ -102,6 +102,7 @@ "version": "Version", "currentLabel": "Actuel :", "latestLabel": "Dernier :", + "digestLabel": "Digest:", "upToDate": "À jour", "tagFilters": "Filtres de tag", "includeLabel": "Inclure :", @@ -153,12 +154,12 @@ "statusQueued": "En file", "statusScanning": "Scan", "statusUpdating": "Mise à jour", - "statusPulling": "Pull en cours...", - "statusScanningPhase": "Scan en cours...", - "statusGeneratingSbom": "Génération du SBOM...", - "statusHealthChecking": "Healthcheck...", - "statusFinalizing": "Finalisation...", - "statusRollingBack": "Rollback en cours...", + "statusPulling": "Pull en cours…", + "statusScanningPhase": "Scan en cours…", + "statusGeneratingSbom": "Génération du SBOM…", + "statusHealthChecking": "Healthcheck…", + "statusFinalizing": "Finalisation…", + "statusRollingBack": "Rollback en cours…", "lastUpdateFailed": "Dernière mise à jour échouée : {reason}", "stopAction": "Arrêter", "startAction": "Démarrer", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Non groupé", @@ -261,7 +267,8 @@ "filterKind": "Type : {value}", "filterHiddenPinned": "Masqués : épinglés", "filtersLabel": "Filtres", - "filteredContainers": "Filtré à {count} conteneur | Filtré à {count} conteneurs" + "filteredContainers": "Filtré à {count} conteneur | Filtré à {count} conteneurs", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "En pause", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggéré", - "tooltip": "Meilleur tag semver stable disponible - envisagez de l'épingler" + "tooltip": "Meilleur tag semver stable disponible - envisagez de l'épingler", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Bloqué par sécurité", diff --git a/ui/src/locales/fr/containerLogs.json b/ui/src/locales/fr/containerLogs.json index c51f108e..34b792d0 100644 --- a/ui/src/locales/fr/containerLogs.json +++ b/ui/src/locales/fr/containerLogs.json @@ -2,7 +2,7 @@ "containerLogs": { "backTooltip": "Retour aux conteneurs", "title": "Logs du conteneur", - "loading": "Chargement du conteneur...", + "loading": "Chargement du conteneur…", "notFound": "Conteneur \"{name}\" introuvable", "loadFailed": "Impossible de charger les informations du conteneur" } diff --git a/ui/src/locales/fr/containersView.json b/ui/src/locales/fr/containersView.json index 483135f5..338edbbf 100644 --- a/ui/src/locales/fr/containersView.json +++ b/ui/src/locales/fr/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "{count} conteneurs mis à jour", "batchPartialNoGroup": "{succeeded} sur {total} conteneurs mis à jour ; {failed} en échec", "batchFailedNoGroup": "Impossible de mettre à jour {count} conteneurs", - "unknownGroup": "groupe inconnu" + "unknownGroup": "groupe inconnu", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Erreur registry", diff --git a/ui/src/locales/fr/dashboardView.json b/ui/src/locales/fr/dashboardView.json index 81c1dddf..ea5f2c7a 100644 --- a/ui/src/locales/fr/dashboardView.json +++ b/ui/src/locales/fr/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Mises à jour disponibles", + "widgetAria": "Updates Available widget", "updateAll": "Tout mettre à jour", "noUpdates": "Aucune mise à jour disponible", "releaseNotes": "Notes de version", @@ -65,7 +66,7 @@ "resourceUsage": { "title": "Utilisation des ressources", "totalUsage": "Utilisation totale ({watched} surveillés)", - "cpu": "CPU moy.", + "cpu": "CPU moy", "memory": "Mémoire", "topCpu": "Top CPU", "topMemory": "Top mémoire", diff --git a/ui/src/locales/fr/listViews.json b/ui/src/locales/fr/listViews.json index 05422f8b..a2d775eb 100644 --- a/ui/src/locales/fr/listViews.json +++ b/ui/src/locales/fr/listViews.json @@ -75,6 +75,32 @@ "clear": "Effacer", "allNotificationTriggers": "Tous les triggers de notification", "noTriggers": "Aucun trigger", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Sur", "rule": "Règle", @@ -140,6 +166,15 @@ "medium": "Moyenne", "low": "Faible" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Mettre à jour", "viewInContainers": "Voir dans Conteneurs", "viewAllInContainers": "Tout voir dans Conteneurs", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "État" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Actualisation des détails de registry...", "status": "État", @@ -226,6 +266,10 @@ "emptyFiltered": "Aucun hôte ne correspond à vos filtres", "justNow": "À l'instant", "never": "Jamais", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Hôte", "address": "Adresse", @@ -311,7 +355,7 @@ "containersWatched": "{count} conteneurs surveillés" }, "badge": { - "maint": "Maint." + "maint": "Maint" }, "detail": { "cron": "Cron", diff --git a/ui/src/locales/fr/notificationOutboxView.json b/ui/src/locales/fr/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/fr/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/it/common.json b/ui/src/locales/it/common.json index 79d2b397..f6b6cd8b 100644 --- a/ui/src/locales/it/common.json +++ b/ui/src/locales/it/common.json @@ -1,6 +1,6 @@ { "common": { - "loading": "Caricamento...", + "loading": "Caricamento…", "back": "Indietro", "cancel": "Annulla", "save": "Salva", diff --git a/ui/src/locales/it/containerComponents.json b/ui/src/locales/it/containerComponents.json index 97d21704..95d3aac3 100644 --- a/ui/src/locales/it/containerComponents.json +++ b/ui/src/locales/it/containerComponents.json @@ -102,6 +102,7 @@ "version": "Versione", "currentLabel": "Corrente:", "latestLabel": "Ultima:", + "digestLabel": "Digest:", "upToDate": "Aggiornato", "tagFilters": "Filtri tag", "includeLabel": "Includi:", @@ -153,12 +154,12 @@ "statusQueued": "In coda", "statusScanning": "Scansione", "statusUpdating": "Aggiornamento", - "statusPulling": "Pull in corso...", - "statusScanningPhase": "Scansione...", - "statusGeneratingSbom": "Generazione SBOM...", - "statusHealthChecking": "Healthcheck...", - "statusFinalizing": "Finalizzazione...", - "statusRollingBack": "Rollback in corso...", + "statusPulling": "Pull in corso…", + "statusScanningPhase": "Scansione…", + "statusGeneratingSbom": "Generazione SBOM…", + "statusHealthChecking": "Healthcheck…", + "statusFinalizing": "Finalizzazione…", + "statusRollingBack": "Rollback in corso…", "lastUpdateFailed": "Ultimo aggiornamento non riuscito: {reason}", "stopAction": "Arresta", "startAction": "Avvia", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Non raggruppati", @@ -261,7 +267,8 @@ "filterKind": "Tipo: {value}", "filterHiddenPinned": "Nascosti: bloccati", "filtersLabel": "Filtri", - "filteredContainers": "Filtrato a {count} container | Filtrati a {count} container" + "filteredContainers": "Filtrato a {count} container | Filtrati a {count} container", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "In pausa", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggerito", - "tooltip": "Miglior tag semver stabile disponibile - valuta il pin" + "tooltip": "Miglior tag semver stabile disponibile - valuta il pin", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Bloccato da sicurezza", diff --git a/ui/src/locales/it/containerLogs.json b/ui/src/locales/it/containerLogs.json index e0a37b65..25c6ab08 100644 --- a/ui/src/locales/it/containerLogs.json +++ b/ui/src/locales/it/containerLogs.json @@ -2,7 +2,7 @@ "containerLogs": { "backTooltip": "Torna ai container", "title": "Log container", - "loading": "Caricamento container...", + "loading": "Caricamento container…", "notFound": "Container \"{name}\" non trovato", "loadFailed": "Impossibile caricare le informazioni del container" } diff --git a/ui/src/locales/it/containersView.json b/ui/src/locales/it/containersView.json index 7ec23e95..f69e0d71 100644 --- a/ui/src/locales/it/containersView.json +++ b/ui/src/locales/it/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Aggiornati {count} container", "batchPartialNoGroup": "Aggiornati {succeeded} di {total} container; {failed} non riusciti", "batchFailedNoGroup": "Impossibile aggiornare {count} container", - "unknownGroup": "gruppo sconosciuto" + "unknownGroup": "gruppo sconosciuto", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Errore registry", diff --git a/ui/src/locales/it/dashboardView.json b/ui/src/locales/it/dashboardView.json index 324eaeed..dd6f2604 100644 --- a/ui/src/locales/it/dashboardView.json +++ b/ui/src/locales/it/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Aggiornamenti disponibili", + "widgetAria": "Updates Available widget", "updateAll": "Aggiorna tutto", "noUpdates": "Nessun aggiornamento disponibile", "releaseNotes": "Note di rilascio", diff --git a/ui/src/locales/it/listViews.json b/ui/src/locales/it/listViews.json index 64d158f0..697a96ae 100644 --- a/ui/src/locales/it/listViews.json +++ b/ui/src/locales/it/listViews.json @@ -75,6 +75,32 @@ "clear": "Cancella", "allNotificationTriggers": "Tutti i trigger notifiche", "noTriggers": "Nessun trigger", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Su", "rule": "Regola", @@ -140,6 +166,15 @@ "medium": "Media", "low": "Bassa" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Aggiorna", "viewInContainers": "Vedi in Container", "viewAllInContainers": "Vedi tutto in Container", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Stato" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Aggiornamento dettagli registry...", "status": "Stato", @@ -226,6 +266,10 @@ "emptyFiltered": "Nessun host corrisponde ai filtri", "justNow": "Ora", "never": "Mai", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Indirizzo", @@ -311,7 +355,7 @@ "containersWatched": "{count} container monitorati" }, "badge": { - "maint": "Manut." + "maint": "Manut" }, "detail": { "cron": "Cron", diff --git a/ui/src/locales/it/notificationOutboxView.json b/ui/src/locales/it/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/it/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/ja/containerComponents.json b/ui/src/locales/ja/containerComponents.json index 277f8a5c..ccc0d33c 100644 --- a/ui/src/locales/ja/containerComponents.json +++ b/ui/src/locales/ja/containerComponents.json @@ -187,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Ungrouped", @@ -262,7 +267,8 @@ "filterKind": "Kind: {value}", "filterHiddenPinned": "Hidden: Pinned", "filtersLabel": "Filters", - "filteredContainers": "Filtered to {count} container | Filtered to {count} containers" + "filteredContainers": "Filtered to {count} container | Filtered to {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Paused", @@ -300,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggested", - "tooltip": "Best stable semver tag available — consider pinning" + "tooltip": "Best stable semver tag available — consider pinning", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Security blocked", diff --git a/ui/src/locales/ja/containersView.json b/ui/src/locales/ja/containersView.json index 3288bfad..22b542fb 100644 --- a/ui/src/locales/ja/containersView.json +++ b/ui/src/locales/ja/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Updated {count} containers", "batchPartialNoGroup": "Updated {succeeded} of {total} containers; {failed} failed", "batchFailedNoGroup": "Failed to update {count} containers", - "unknownGroup": "unknown group" + "unknownGroup": "unknown group", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry error", diff --git a/ui/src/locales/ja/dashboardView.json b/ui/src/locales/ja/dashboardView.json index 8f059143..7c6036e8 100644 --- a/ui/src/locales/ja/dashboardView.json +++ b/ui/src/locales/ja/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates Available", + "widgetAria": "Updates Available widget", "updateAll": "Update all", "noUpdates": "No updates available", "releaseNotes": "Release notes", diff --git a/ui/src/locales/ja/listViews.json b/ui/src/locales/ja/listViews.json index 885eb7a8..d5006b37 100644 --- a/ui/src/locales/ja/listViews.json +++ b/ui/src/locales/ja/listViews.json @@ -75,6 +75,32 @@ "clear": "Clear", "allNotificationTriggers": "All notification triggers", "noTriggers": "No triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "On", "rule": "Rule", @@ -140,6 +166,15 @@ "medium": "Medium", "low": "Low" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Update", "viewInContainers": "View in Containers", "viewAllInContainers": "View all in Containers", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Refreshing registry details...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "No hosts match your filters", "justNow": "Just now", "never": "Never", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Address", diff --git a/ui/src/locales/ja/notificationOutboxView.json b/ui/src/locales/ja/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/ja/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/ko/containerComponents.json b/ui/src/locales/ko/containerComponents.json index 8aaf0b00..af7a6da2 100644 --- a/ui/src/locales/ko/containerComponents.json +++ b/ui/src/locales/ko/containerComponents.json @@ -187,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Ungrouped", @@ -262,7 +267,8 @@ "filterKind": "Kind: {value}", "filterHiddenPinned": "Hidden: Pinned", "filtersLabel": "Filters", - "filteredContainers": "Filtered to {count} container | Filtered to {count} containers" + "filteredContainers": "Filtered to {count} container | Filtered to {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Paused", @@ -300,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggested", - "tooltip": "Best stable semver tag available — consider pinning" + "tooltip": "Best stable semver tag available — consider pinning", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Security blocked", diff --git a/ui/src/locales/ko/containersView.json b/ui/src/locales/ko/containersView.json index a964f018..1c53028f 100644 --- a/ui/src/locales/ko/containersView.json +++ b/ui/src/locales/ko/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Updated {count} containers", "batchPartialNoGroup": "Updated {succeeded} of {total} containers; {failed} failed", "batchFailedNoGroup": "Failed to update {count} containers", - "unknownGroup": "unknown group" + "unknownGroup": "unknown group", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry error", diff --git a/ui/src/locales/ko/dashboardView.json b/ui/src/locales/ko/dashboardView.json index 89d7e95e..25e8bce1 100644 --- a/ui/src/locales/ko/dashboardView.json +++ b/ui/src/locales/ko/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates Available", + "widgetAria": "Updates Available widget", "updateAll": "Update all", "noUpdates": "No updates available", "releaseNotes": "Release notes", diff --git a/ui/src/locales/ko/listViews.json b/ui/src/locales/ko/listViews.json index 19f343b3..57ec568d 100644 --- a/ui/src/locales/ko/listViews.json +++ b/ui/src/locales/ko/listViews.json @@ -75,6 +75,32 @@ "clear": "Clear", "allNotificationTriggers": "All notification triggers", "noTriggers": "No triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "On", "rule": "Rule", @@ -140,6 +166,15 @@ "medium": "Medium", "low": "Low" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Update", "viewInContainers": "View in Containers", "viewAllInContainers": "View all in Containers", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Refreshing registry details...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "No hosts match your filters", "justNow": "Just now", "never": "Never", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Address", diff --git a/ui/src/locales/ko/notificationOutboxView.json b/ui/src/locales/ko/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/ko/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/nl/appShell.json b/ui/src/locales/nl/appShell.json index 08f089b8..776386a0 100644 --- a/ui/src/locales/nl/appShell.json +++ b/ui/src/locales/nl/appShell.json @@ -97,9 +97,9 @@ "refreshing": "Zoekindex vernieuwen...", "noMatches": "Geen overeenkomsten voor \"{query}\".", "hint": "Typ om te zoeken naar pagina's, containers, agenten, triggers, watchers en instellingen.", - "prefixScopeHint": "Voorvoegselbereik actief; gebruik", + "prefixScopeHint": "Voorvoegselbereik actief; gebruik ", "typeHint": "Typ", - "useTab": "om de reikwijdte te veranderen", + "useTab": " om de reikwijdte te veranderen", "moveHint": "bewegen", "openHint": "geopend" }, diff --git a/ui/src/locales/nl/containerComponents.json b/ui/src/locales/nl/containerComponents.json index 4b7772de..c1ad61b4 100644 --- a/ui/src/locales/nl/containerComponents.json +++ b/ui/src/locales/nl/containerComponents.json @@ -102,6 +102,7 @@ "version": "Versie", "currentLabel": "Huidig:", "latestLabel": "Nieuwste:", + "digestLabel": "Digest:", "upToDate": "Up-to-date", "tagFilters": "Tagfilters", "includeLabel": "Inclusief:", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Niet gegroepeerd", @@ -261,7 +267,8 @@ "filterKind": "Soort: {value}", "filterHiddenPinned": "Verborgen: vastgezet", "filtersLabel": "Filters", - "filteredContainers": "Gefilterd naar {count} container | Gefilterd op {count} containers" + "filteredContainers": "Gefilterd naar {count} container | Gefilterd op {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Gepauzeerd", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Voorgesteld", - "tooltip": "Beste stabiele semver-tag die beschikbaar is – overweeg vastzetten" + "tooltip": "Beste stabiele semver-tag die beschikbaar is – overweeg vastzetten", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Beveiliging geblokkeerd", diff --git a/ui/src/locales/nl/containersView.json b/ui/src/locales/nl/containersView.json index 27fd0add..e1e5934b 100644 --- a/ui/src/locales/nl/containersView.json +++ b/ui/src/locales/nl/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "{count} containers bijgewerkt", "batchPartialNoGroup": "{succeeded} van {total} containers bijgewerkt; {failed} is mislukt", "batchFailedNoGroup": "Kan {count} containers niet updaten", - "unknownGroup": "onbekende groep" + "unknownGroup": "onbekende groep", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registerfout", diff --git a/ui/src/locales/nl/dashboardView.json b/ui/src/locales/nl/dashboardView.json index 07d382d9..dd7c7f1f 100644 --- a/ui/src/locales/nl/dashboardView.json +++ b/ui/src/locales/nl/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates beschikbaar", + "widgetAria": "Updates Available widget", "updateAll": "Alles bijwerken", "noUpdates": "Geen updates beschikbaar", "releaseNotes": "Release-opmerkingen", diff --git a/ui/src/locales/nl/listViews.json b/ui/src/locales/nl/listViews.json index a5c57586..97ae346c 100644 --- a/ui/src/locales/nl/listViews.json +++ b/ui/src/locales/nl/listViews.json @@ -75,6 +75,32 @@ "clear": "Wissen", "allNotificationTriggers": "Alle meldingen worden geactiveerd", "noTriggers": "Geen triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Aan", "rule": "Regel", @@ -140,6 +166,15 @@ "medium": "Middelmatig", "low": "Laag" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Bijwerken", "viewInContainers": "Bekijken in containers", "viewAllInContainers": "Bekijk alles in Containers", @@ -211,6 +246,11 @@ "auth": "Authenticatie", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Registergegevens vernieuwen...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "Er zijn geen hosts die overeenkomen met uw filters", "justNow": "Zojuist", "never": "Nooit", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Gastheer", "address": "Adres", diff --git a/ui/src/locales/nl/notificationOutboxView.json b/ui/src/locales/nl/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/nl/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/pl/appShell.json b/ui/src/locales/pl/appShell.json index 69a7a6f6..1800fc76 100644 --- a/ui/src/locales/pl/appShell.json +++ b/ui/src/locales/pl/appShell.json @@ -97,9 +97,9 @@ "refreshing": "Odświeżanie indeksu wyszukiwania...", "noMatches": "Brak dopasowań dla „{query}”.", "hint": "Wpisz, aby przeszukać strony, kontenery, agentów, wyzwalacze, obserwatorów i ustawienia.", - "prefixScopeHint": "Zakres prefiksu aktywny; używać", + "prefixScopeHint": "Zakres prefiksu aktywny; używać ", "typeHint": "Wpisz", - "useTab": "zmienić zakres", + "useTab": " zmienić zakres", "moveHint": "ruszaj się", "openHint": "otwarte" }, diff --git a/ui/src/locales/pl/containerComponents.json b/ui/src/locales/pl/containerComponents.json index 7f4b29f1..0379eb5b 100644 --- a/ui/src/locales/pl/containerComponents.json +++ b/ui/src/locales/pl/containerComponents.json @@ -102,6 +102,7 @@ "version": "Wersja", "currentLabel": "Aktualne:", "latestLabel": "Najnowsze:", + "digestLabel": "Digest:", "upToDate": "Aktualne", "tagFilters": "Filtry tagów", "includeLabel": "Uwzględnij:", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Rozgrupowane", @@ -261,7 +267,8 @@ "filterKind": "Rodzaj: {value}", "filterHiddenPinned": "Ukryty: przypięty", "filtersLabel": "Filtry", - "filteredContainers": "Filtrowano do kontenera {count} | Filtrowane do kontenerów {count}" + "filteredContainers": "Filtrowano do kontenera {count} | Filtrowane do kontenerów {count}", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Wstrzymano", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Sugerowane", - "tooltip": "Najlepszy dostępny stabilny tag semver — rozważ przypięcie" + "tooltip": "Najlepszy dostępny stabilny tag semver — rozważ przypięcie", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Zabezpieczenia zablokowane", diff --git a/ui/src/locales/pl/containerLogs.json b/ui/src/locales/pl/containerLogs.json index 4087d29e..1a8c0390 100644 --- a/ui/src/locales/pl/containerLogs.json +++ b/ui/src/locales/pl/containerLogs.json @@ -3,7 +3,7 @@ "backTooltip": "Wracając do kontenerów", "title": "Dzienniki kontenerów", "loading": "Ładowanie kontenera…", - "notFound": "Nie znaleziono kontenera „{name}”.", + "notFound": "Nie znaleziono kontenera „{name}”", "loadFailed": "Nie udało się załadować informacji o kontenerze" } } diff --git a/ui/src/locales/pl/containersView.json b/ui/src/locales/pl/containersView.json index eec50d6b..41eaa3ce 100644 --- a/ui/src/locales/pl/containersView.json +++ b/ui/src/locales/pl/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Zaktualizowano kontenery {count}", "batchPartialNoGroup": "Zaktualizowano {succeeded} z kontenerów {total}; {failed} nie powiodło się", "batchFailedNoGroup": "Nie udało się zaktualizować kontenerów {count}", - "unknownGroup": "nieznana grupa" + "unknownGroup": "nieznana grupa", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Błąd rejestru", diff --git a/ui/src/locales/pl/dashboardView.json b/ui/src/locales/pl/dashboardView.json index 490bc0c6..a85225c4 100644 --- a/ui/src/locales/pl/dashboardView.json +++ b/ui/src/locales/pl/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Dostępne aktualizacje", + "widgetAria": "Updates Available widget", "updateAll": "Zaktualizuj wszystko", "noUpdates": "Brak dostępnych aktualizacji", "releaseNotes": "Informacje o wydaniu", diff --git a/ui/src/locales/pl/listViews.json b/ui/src/locales/pl/listViews.json index 8ebc1bbe..ba5b08ab 100644 --- a/ui/src/locales/pl/listViews.json +++ b/ui/src/locales/pl/listViews.json @@ -75,6 +75,32 @@ "clear": "Wyczyść", "allNotificationTriggers": "Wszystkie wyzwalacze powiadomień", "noTriggers": "Żadnych wyzwalaczy", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Włączone", "rule": "Reguła", @@ -140,6 +166,15 @@ "medium": "Średni", "low": "Niski" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Zaktualizuj", "viewInContainers": "Zobacz w kontenerach", "viewAllInContainers": "Zobacz wszystko w Kontenery", @@ -211,6 +246,11 @@ "auth": "Uwierzytelnianie", "status": "Stan" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Odświeżanie szczegółów rejestru...", "status": "Stan", @@ -226,6 +266,10 @@ "emptyFiltered": "Żaden host nie pasuje do Twoich filtrów", "justNow": "Właśnie teraz", "never": "Nigdy", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Gospodarz", "address": "Adres", diff --git a/ui/src/locales/pl/notificationOutboxView.json b/ui/src/locales/pl/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/pl/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/pt-BR/appShell.json b/ui/src/locales/pt-BR/appShell.json index 62b1c8c1..ee550466 100644 --- a/ui/src/locales/pt-BR/appShell.json +++ b/ui/src/locales/pt-BR/appShell.json @@ -14,8 +14,8 @@ "regexToggle": ".* Regex", "showMatchesOnly": "Mostrar apenas correspondências", "showingMatchesOnly": "Mostrando apenas correspondências", - "prev": "Ant.", - "next": "Próx." + "prev": "Ant", + "next": "Próx" }, "search": { "placeholder": "Buscar logs", diff --git a/ui/src/locales/pt-BR/common.json b/ui/src/locales/pt-BR/common.json index f366af10..9c0c8cc8 100644 --- a/ui/src/locales/pt-BR/common.json +++ b/ui/src/locales/pt-BR/common.json @@ -1,6 +1,6 @@ { "common": { - "loading": "Carregando...", + "loading": "Carregando…", "back": "Voltar", "cancel": "Cancelar", "save": "Salvar", diff --git a/ui/src/locales/pt-BR/containerComponents.json b/ui/src/locales/pt-BR/containerComponents.json index 54018079..da1b503c 100644 --- a/ui/src/locales/pt-BR/containerComponents.json +++ b/ui/src/locales/pt-BR/containerComponents.json @@ -102,6 +102,7 @@ "version": "Versão", "currentLabel": "Atual:", "latestLabel": "Mais recente:", + "digestLabel": "Digest:", "upToDate": "Atualizado", "tagFilters": "Filtros de tag", "includeLabel": "Incluir:", @@ -153,12 +154,12 @@ "statusQueued": "Na fila", "statusScanning": "Escaneando", "statusUpdating": "Atualizando", - "statusPulling": "Pull em andamento...", - "statusScanningPhase": "Escaneando...", - "statusGeneratingSbom": "Gerando SBOM...", - "statusHealthChecking": "Healthcheck...", - "statusFinalizing": "Finalizando...", - "statusRollingBack": "Fazendo rollback...", + "statusPulling": "Pull em andamento…", + "statusScanningPhase": "Escaneando…", + "statusGeneratingSbom": "Gerando SBOM…", + "statusHealthChecking": "Healthcheck…", + "statusFinalizing": "Finalizando…", + "statusRollingBack": "Fazendo rollback…", "lastUpdateFailed": "Última atualização falhou: {reason}", "stopAction": "Parar", "startAction": "Iniciar", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Sem grupo", @@ -261,7 +267,8 @@ "filterKind": "Tipo: {value}", "filterHiddenPinned": "Ocultos: fixados", "filtersLabel": "Filtros", - "filteredContainers": "Filtrado para {count} contêiner | Filtrado para {count} contêineres" + "filteredContainers": "Filtrado para {count} contêiner | Filtrado para {count} contêineres", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Pausado", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Sugerida", - "tooltip": "Melhor tag semver estável disponível - considere fixar" + "tooltip": "Melhor tag semver estável disponível - considere fixar", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Bloqueado por segurança", diff --git a/ui/src/locales/pt-BR/containerLogs.json b/ui/src/locales/pt-BR/containerLogs.json index eefc3286..3f8bd7f7 100644 --- a/ui/src/locales/pt-BR/containerLogs.json +++ b/ui/src/locales/pt-BR/containerLogs.json @@ -2,7 +2,7 @@ "containerLogs": { "backTooltip": "Voltar para contêineres", "title": "Logs do contêiner", - "loading": "Carregando contêiner...", + "loading": "Carregando contêiner…", "notFound": "Contêiner \"{name}\" não encontrado", "loadFailed": "Falha ao carregar informações do contêiner" } diff --git a/ui/src/locales/pt-BR/containersView.json b/ui/src/locales/pt-BR/containersView.json index 4d825aaa..061e7105 100644 --- a/ui/src/locales/pt-BR/containersView.json +++ b/ui/src/locales/pt-BR/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "{count} contêineres atualizados", "batchPartialNoGroup": "{succeeded} de {total} contêineres atualizados; {failed} falharam", "batchFailedNoGroup": "Falha ao atualizar {count} contêineres", - "unknownGroup": "grupo desconhecido" + "unknownGroup": "grupo desconhecido", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Erro de registry", diff --git a/ui/src/locales/pt-BR/dashboardView.json b/ui/src/locales/pt-BR/dashboardView.json index 33c1589b..cde57477 100644 --- a/ui/src/locales/pt-BR/dashboardView.json +++ b/ui/src/locales/pt-BR/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Atualizações disponíveis", + "widgetAria": "Updates Available widget", "updateAll": "Atualizar todos", "noUpdates": "Nenhuma atualização disponível", "releaseNotes": "Notas da versão", diff --git a/ui/src/locales/pt-BR/listViews.json b/ui/src/locales/pt-BR/listViews.json index 961797cb..1177ed4e 100644 --- a/ui/src/locales/pt-BR/listViews.json +++ b/ui/src/locales/pt-BR/listViews.json @@ -75,6 +75,32 @@ "clear": "Limpar", "allNotificationTriggers": "Todos os triggers de notificação", "noTriggers": "Sem triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Em", "rule": "Regra", @@ -140,6 +166,15 @@ "medium": "Média", "low": "Baixa" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Atualizar", "viewInContainers": "Ver em Contêineres", "viewAllInContainers": "Ver tudo em Contêineres", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Atualizando detalhes do registry...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "Nenhum host corresponde aos filtros", "justNow": "Agora", "never": "Nunca", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Endereço", @@ -311,7 +355,7 @@ "containersWatched": "{count} contêineres monitorados" }, "badge": { - "maint": "Manut." + "maint": "Manut" }, "detail": { "cron": "Cron", diff --git a/ui/src/locales/pt-BR/notificationOutboxView.json b/ui/src/locales/pt-BR/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/pt-BR/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/ru/containerComponents.json b/ui/src/locales/ru/containerComponents.json index af84d573..e0328402 100644 --- a/ui/src/locales/ru/containerComponents.json +++ b/ui/src/locales/ru/containerComponents.json @@ -187,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Ungrouped", @@ -262,7 +267,8 @@ "filterKind": "Kind: {value}", "filterHiddenPinned": "Hidden: Pinned", "filtersLabel": "Filters", - "filteredContainers": "Filtered to {count} container | Filtered to {count} containers" + "filteredContainers": "Filtered to {count} container | Filtered to {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Paused", @@ -300,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggested", - "tooltip": "Best stable semver tag available — consider pinning" + "tooltip": "Best stable semver tag available — consider pinning", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Security blocked", diff --git a/ui/src/locales/ru/containersView.json b/ui/src/locales/ru/containersView.json index 3e59ec3e..1d945745 100644 --- a/ui/src/locales/ru/containersView.json +++ b/ui/src/locales/ru/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Updated {count} containers", "batchPartialNoGroup": "Updated {succeeded} of {total} containers; {failed} failed", "batchFailedNoGroup": "Failed to update {count} containers", - "unknownGroup": "unknown group" + "unknownGroup": "unknown group", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry error", diff --git a/ui/src/locales/ru/dashboardView.json b/ui/src/locales/ru/dashboardView.json index 35bf2094..16dcb65f 100644 --- a/ui/src/locales/ru/dashboardView.json +++ b/ui/src/locales/ru/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates Available", + "widgetAria": "Updates Available widget", "updateAll": "Update all", "noUpdates": "No updates available", "releaseNotes": "Release notes", diff --git a/ui/src/locales/ru/listViews.json b/ui/src/locales/ru/listViews.json index 63007f43..a49c8f84 100644 --- a/ui/src/locales/ru/listViews.json +++ b/ui/src/locales/ru/listViews.json @@ -75,6 +75,32 @@ "clear": "Clear", "allNotificationTriggers": "All notification triggers", "noTriggers": "No triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "On", "rule": "Rule", @@ -140,6 +166,15 @@ "medium": "Medium", "low": "Low" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Update", "viewInContainers": "View in Containers", "viewAllInContainers": "View all in Containers", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Refreshing registry details...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "No hosts match your filters", "justNow": "Just now", "never": "Never", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Address", diff --git a/ui/src/locales/ru/notificationOutboxView.json b/ui/src/locales/ru/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/ru/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/tr/appShell.json b/ui/src/locales/tr/appShell.json index 5478dd58..3fcc95ae 100644 --- a/ui/src/locales/tr/appShell.json +++ b/ui/src/locales/tr/appShell.json @@ -97,9 +97,9 @@ "refreshing": "Arama dizini yenileniyor...", "noMatches": "\"{query}\" için eşleşme yok.", "hint": "Sayfaları, kapsayıcıları, aracıları, tetikleyicileri, izleyicileri ve ayarları aramak için yazın.", - "prefixScopeHint": "Önek kapsamı etkin; kullanmak", + "prefixScopeHint": "Önek kapsamı etkin; kullanmak ", "typeHint": "Tür", - "useTab": "kapsamı değiştirmek", + "useTab": " kapsamı değiştirmek", "moveHint": "hareket etmek", "openHint": "açık" }, diff --git a/ui/src/locales/tr/containerComponents.json b/ui/src/locales/tr/containerComponents.json index 0a4f2d58..f4a104d7 100644 --- a/ui/src/locales/tr/containerComponents.json +++ b/ui/src/locales/tr/containerComponents.json @@ -12,7 +12,7 @@ "skipThisUpdate": "Bu Güncellemeyi Atla", "snooze1d": "1 gün ertele", "snooze7d": "7 gün ertele", - "snoozeUntil": "Şu tarihe kadar ertele:", + "snoozeUntil": "Şu tarihe kadar ertele", "unsnooze": "Ertelemeyi kaldır", "maturityGroup": "Vade", "allowNewMature": "Yeni + olgun olanlara izin ver", @@ -102,6 +102,7 @@ "version": "Sürüm", "currentLabel": "Güncel:", "latestLabel": "En son:", + "digestLabel": "Digest:", "upToDate": "güncel", "tagFilters": "Etiket Filtreleri", "includeLabel": "Dahil et:", @@ -186,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Gruplandırılmamış", @@ -261,7 +267,8 @@ "filterKind": "Tür: {value}", "filterHiddenPinned": "Gizli: Sabitlendi", "filtersLabel": "Filtreler", - "filteredContainers": "{count} kapsayıcısına filtre uygulandı | {count} kapsayıcılara filtrelendi" + "filteredContainers": "{count} kapsayıcısına filtre uygulandı | {count} kapsayıcılara filtrelendi", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Duraklatıldı", @@ -299,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Önerilen", - "tooltip": "Mevcut en iyi kararlı semver etiketi — sabitlemeyi düşünün" + "tooltip": "Mevcut en iyi kararlı semver etiketi — sabitlemeyi düşünün", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Güvenlik engellendi", diff --git a/ui/src/locales/tr/containersView.json b/ui/src/locales/tr/containersView.json index 8bca30db..c2d81e34 100644 --- a/ui/src/locales/tr/containersView.json +++ b/ui/src/locales/tr/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "{count} kapsayıcıları güncellendi", "batchPartialNoGroup": "{succeeded} / {total} kapsayıcı güncellendi; {failed} başarısız oldu", "batchFailedNoGroup": "{count} kapsayıcıları güncellenemedi", - "unknownGroup": "bilinmeyen grup" + "unknownGroup": "bilinmeyen grup", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Kayıt defteri hatası", diff --git a/ui/src/locales/tr/dashboardView.json b/ui/src/locales/tr/dashboardView.json index cbc4fcfc..77e8ea3f 100644 --- a/ui/src/locales/tr/dashboardView.json +++ b/ui/src/locales/tr/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Güncellemeler Mevcut", + "widgetAria": "Updates Available widget", "updateAll": "Tümünü güncelle", "noUpdates": "Güncelleme yok", "releaseNotes": "Sürüm notları", diff --git a/ui/src/locales/tr/listViews.json b/ui/src/locales/tr/listViews.json index 0ddb1e11..2fb7ccbc 100644 --- a/ui/src/locales/tr/listViews.json +++ b/ui/src/locales/tr/listViews.json @@ -75,6 +75,32 @@ "clear": "Temizle", "allNotificationTriggers": "Tüm bildirim tetikleyicileri", "noTriggers": "Tetikleyici yok", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "Açık", "rule": "Kural", @@ -140,6 +166,15 @@ "medium": "Orta", "low": "Düşük" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Güncelle", "viewInContainers": "Kapsayıcılarda Görüntüle", "viewAllInContainers": "Tümünü Container'larda görüntüle", @@ -211,6 +246,11 @@ "auth": "Kimlik doğrulama", "status": "Durum" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Kayıt defteri ayrıntıları yenileniyor...", "status": "Durum", @@ -226,6 +266,10 @@ "emptyFiltered": "Filtrelerinizle eşleşen ana makine yok", "justNow": "Az önce", "never": "Asla", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Sunucu", "address": "Adres", diff --git a/ui/src/locales/tr/notificationOutboxView.json b/ui/src/locales/tr/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/tr/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/uk/containerComponents.json b/ui/src/locales/uk/containerComponents.json index 459a625b..9b270248 100644 --- a/ui/src/locales/uk/containerComponents.json +++ b/ui/src/locales/uk/containerComponents.json @@ -187,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Ungrouped", @@ -262,7 +267,8 @@ "filterKind": "Kind: {value}", "filterHiddenPinned": "Hidden: Pinned", "filtersLabel": "Filters", - "filteredContainers": "Filtered to {count} container | Filtered to {count} containers" + "filteredContainers": "Filtered to {count} container | Filtered to {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Paused", @@ -300,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggested", - "tooltip": "Best stable semver tag available — consider pinning" + "tooltip": "Best stable semver tag available — consider pinning", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Security blocked", diff --git a/ui/src/locales/uk/containersView.json b/ui/src/locales/uk/containersView.json index 0319617e..3fce57b7 100644 --- a/ui/src/locales/uk/containersView.json +++ b/ui/src/locales/uk/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Updated {count} containers", "batchPartialNoGroup": "Updated {succeeded} of {total} containers; {failed} failed", "batchFailedNoGroup": "Failed to update {count} containers", - "unknownGroup": "unknown group" + "unknownGroup": "unknown group", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry error", diff --git a/ui/src/locales/uk/dashboardView.json b/ui/src/locales/uk/dashboardView.json index 97de9bbe..e4ec5f45 100644 --- a/ui/src/locales/uk/dashboardView.json +++ b/ui/src/locales/uk/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates Available", + "widgetAria": "Updates Available widget", "updateAll": "Update all", "noUpdates": "No updates available", "releaseNotes": "Release notes", diff --git a/ui/src/locales/uk/listViews.json b/ui/src/locales/uk/listViews.json index ab9f299f..7c455446 100644 --- a/ui/src/locales/uk/listViews.json +++ b/ui/src/locales/uk/listViews.json @@ -75,6 +75,32 @@ "clear": "Clear", "allNotificationTriggers": "All notification triggers", "noTriggers": "No triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "On", "rule": "Rule", @@ -140,6 +166,15 @@ "medium": "Medium", "low": "Low" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Update", "viewInContainers": "View in Containers", "viewAllInContainers": "View all in Containers", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Refreshing registry details...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "No hosts match your filters", "justNow": "Just now", "never": "Never", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Address", diff --git a/ui/src/locales/uk/notificationOutboxView.json b/ui/src/locales/uk/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/uk/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/vi/containerComponents.json b/ui/src/locales/vi/containerComponents.json index 4492ae37..583a8ef0 100644 --- a/ui/src/locales/vi/containerComponents.json +++ b/ui/src/locales/vi/containerComponents.json @@ -187,7 +187,12 @@ "registryErrorRateLimited": "Rate limited", "registryErrorAuth": "Auth failed", "registryErrorNotFound": "Not found", - "registryErrorCheckFailed": "Check failed" + "registryErrorCheckFailed": "Check failed", + "blockedTag": "Blocked: {tag}", + "blockedTagWithCriticals": "Blocked: {tag} ({count} critical CVE)", + "blockedTagWithCriticalsCVEs": "Blocked: {tag} ({count} critical CVEs)", + "manualUpdateOnly": "Manual update only", + "manualUpdateOnlyWithMessage": "Manual update only — {message}" }, "groupHeader": { "ungrouped": "Ungrouped", @@ -262,7 +267,8 @@ "filterKind": "Kind: {value}", "filterHiddenPinned": "Hidden: Pinned", "filtersLabel": "Filters", - "filteredContainers": "Filtered to {count} container | Filtered to {count} containers" + "filteredContainers": "Filtered to {count} container | Filtered to {count} containers", + "clearContainerIdFilter": "Clear container ID filter" }, "stats": { "paused": "Paused", @@ -300,7 +306,8 @@ }, "suggestedTag": { "badgeText": "Suggested", - "tooltip": "Best stable semver tag available — consider pinning" + "tooltip": "Best stable semver tag available — consider pinning", + "tooltipWithTag": "Suggested: {tag}\n{hint}" }, "eligibilityBadges": { "securityBlocked": "Security blocked", diff --git a/ui/src/locales/vi/containersView.json b/ui/src/locales/vi/containersView.json index cba98ada..4d5dfca5 100644 --- a/ui/src/locales/vi/containersView.json +++ b/ui/src/locales/vi/containersView.json @@ -15,7 +15,14 @@ "batchUpdatedNoGroup": "Updated {count} containers", "batchPartialNoGroup": "Updated {succeeded} of {total} containers; {failed} failed", "batchFailedNoGroup": "Failed to update {count} containers", - "unknownGroup": "unknown group" + "unknownGroup": "unknown group", + "updateStarted": "Update started: {name}", + "forceUpdateStarted": "Force update started: {name}", + "alreadyUpToDate": "Already up to date: {name}", + "queuedUpdateSingle": "Queued update for {count} container", + "queuedUpdateMultiple": "Queued updates for {count} containers", + "countAlreadyUpToDateSingle": "{count} container already up to date", + "countAlreadyUpToDateMultiple": "{count} containers already up to date" }, "registryError": { "generic": "Registry error", diff --git a/ui/src/locales/vi/dashboardView.json b/ui/src/locales/vi/dashboardView.json index 050a7aa0..6c4f0558 100644 --- a/ui/src/locales/vi/dashboardView.json +++ b/ui/src/locales/vi/dashboardView.json @@ -38,6 +38,7 @@ }, "recentUpdates": { "title": "Updates Available", + "widgetAria": "Updates Available widget", "updateAll": "Update all", "noUpdates": "No updates available", "releaseNotes": "Release notes", diff --git a/ui/src/locales/vi/listViews.json b/ui/src/locales/vi/listViews.json index eae10864..18f2b976 100644 --- a/ui/src/locales/vi/listViews.json +++ b/ui/src/locales/vi/listViews.json @@ -75,6 +75,32 @@ "clear": "Clear", "allNotificationTriggers": "All notification triggers", "noTriggers": "No triggers", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "On", "rule": "Rule", @@ -140,6 +166,15 @@ "medium": "Medium", "low": "Low" }, + "deltaTooltips": { + "fixedSingle": "Update fixes {count} vulnerability", + "fixedMultiple": "Update fixes {count} vulnerabilities", + "newSingle": "Update introduces {count} new vulnerability", + "newMultiple": "Update introduces {count} new vulnerabilities", + "both": "Update: {fixed} fixed, {new} new" + }, + "updateOneOfButton": "Update one of {count} containers", + "updateThisContainerButton": "Update this container", "update": "Update", "viewInContainers": "View in Containers", "viewAllInContainers": "View all in Containers", @@ -211,6 +246,11 @@ "auth": "Auth", "status": "Status" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "Refreshing registry details...", "status": "Status", @@ -226,6 +266,10 @@ "emptyFiltered": "No hosts match your filters", "justNow": "Just now", "never": "Never", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "Host", "address": "Address", diff --git a/ui/src/locales/vi/notificationOutboxView.json b/ui/src/locales/vi/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/vi/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/zh-CN/containerComponents.json b/ui/src/locales/zh-CN/containerComponents.json index 01387723..75d1bd8f 100644 --- a/ui/src/locales/zh-CN/containerComponents.json +++ b/ui/src/locales/zh-CN/containerComponents.json @@ -102,6 +102,7 @@ "version": "版本", "currentLabel": "当前:", "latestLabel": "最新:", + "digestLabel": "Digest:", "upToDate": "已是最新", "tagFilters": "标签筛选", "includeLabel": "包含:", @@ -257,7 +258,7 @@ "recheckTooltip": "重新检查更新", "columnsHeader": "列", "narrowViewportSuffix": "(窄视图)", - "autoHiddenBadgeTooltip": "因窗口宽度不足,自动隐藏了 ({count}) 列。请拉宽窗口,或隐藏其他列以腾出空间。", + "autoHiddenBadgeTooltip": "因窗口宽度不足,自动隐藏了 {count} 列。请拉宽窗口,或隐藏其他列以腾出空间。", "filterSearch": "搜索:{value}", "filterStatus": "状态:{value}", "filterBouncer": "Bouncer:{value}", diff --git a/ui/src/locales/zh-CN/listViews.json b/ui/src/locales/zh-CN/listViews.json index 5bafb74e..8c12994d 100644 --- a/ui/src/locales/zh-CN/listViews.json +++ b/ui/src/locales/zh-CN/listViews.json @@ -75,6 +75,32 @@ "clear": "清除", "allNotificationTriggers": "所有通知触发器", "noTriggers": "无触发器", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "开启", "rule": "规则", @@ -220,6 +246,11 @@ "auth": "认证", "status": "状态" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { "refreshing": "正在刷新仓库详情...", "status": "状态", @@ -235,6 +266,10 @@ "emptyFiltered": "没有主机匹配您的筛选条件", "justNow": "刚刚", "never": "从未", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "主机", "address": "地址", diff --git a/ui/src/locales/zh-CN/notificationOutboxView.json b/ui/src/locales/zh-CN/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/zh-CN/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/zh-TW/agentsView.json b/ui/src/locales/zh-TW/agentsView.json index 2fba6ea4..df8d1a62 100644 --- a/ui/src/locales/zh-TW/agentsView.json +++ b/ui/src/locales/zh-TW/agentsView.json @@ -1,8 +1,8 @@ { "agentsView": { "list": { - "loading": "正在載入代理...", - "filterPlaceholder": "按名稱篩選...", + "loading": "正在載入代理……", + "filterPlaceholder": "按名稱篩選……", "clearFilter": "清除", "emptyFiltered": "沒有代理匹配您的篩選條件", "toggleColumns": "切換列", @@ -55,7 +55,7 @@ "tail100": "最近 100 條", "tail500": "最近 500 條", "tail1000": "最近 1000 條", - "componentPlaceholder": "按組件篩選...", + "componentPlaceholder": "按組件篩選……", "apply": "應用", "reset": "重設", "refresh": "重新整理", diff --git a/ui/src/locales/zh-TW/appShell.json b/ui/src/locales/zh-TW/appShell.json index 76cda58a..2e2cec34 100644 --- a/ui/src/locales/zh-TW/appShell.json +++ b/ui/src/locales/zh-TW/appShell.json @@ -36,7 +36,7 @@ "tooltip": "通知", "header": "通知", "clear": "清除", - "loading": "載入中...", + "loading": "載入中……", "empty": "暫無通知", "markAllRead": "全部標記為已讀", "openAuditLog": "開啟稽核日誌", @@ -92,12 +92,12 @@ }, "search": { "ariaLabel": "搜尋", - "placeholder": "跳轉到頁面、容器、代理、觸發器...", + "placeholder": "跳轉到頁面、容器、代理、觸發器……", "shown": "顯示 {count} 條", - "refreshing": "正在重新整理搜尋索引...", + "refreshing": "正在重新整理搜尋索引……", "noMatches": "沒有找到 \"{query}\" 的匹配項。", "hint": "輸入以搜尋頁面、容器、代理、觸發器、監視器和設定。", - "prefixScopeHint": "前置詞作用域已啟動", + "prefixScopeHint": "前置詞作用域已啟動 ", "typeHint": "輸入", "useTab": " 以更改作用域", "moveHint": "移動", @@ -106,8 +106,8 @@ "connection": { "lostTitle": "連線遺失", "applyingUpdateTitle": "正在應用更新", - "lostMessage": "伺服器無法存取。正在等待其重新上線...", - "restartingMessage": "Drydock 正在重新啟動{opId}。服務恢復後將重新連線...", + "lostMessage": "伺服器無法存取。正在等待其重新上線……", + "restartingMessage": "Drydock 正在重新啟動{opId}。服務恢復後將重新連線……", "reconnecting": "重新連線中", "restartingService": "重啟服務中" } diff --git a/ui/src/locales/zh-TW/authView.json b/ui/src/locales/zh-TW/authView.json index 54ea7269..0ccb2522 100644 --- a/ui/src/locales/zh-TW/authView.json +++ b/ui/src/locales/zh-TW/authView.json @@ -1,11 +1,11 @@ { "authView": { - "loadingProviders": "正在載入身份驗證提供者...", + "loadingProviders": "正在載入身份驗證提供者……", "loadError": "無法載入身份驗證提供者", - "filterPlaceholder": "按名稱篩選...", + "filterPlaceholder": "按名稱篩選……", "clearFilter": "清除", "emptyFiltered": "沒有匹配篩選條件的提供者", - "detailRefreshing": "正在重新整理身份驗證詳情...", + "detailRefreshing": "正在重新整理身份驗證詳情……", "detailLoadError": "無法載入最新的身份驗證詳情", "noConfig": "無配置屬性", "columns": { diff --git a/ui/src/locales/zh-TW/common.json b/ui/src/locales/zh-TW/common.json index 81e1bba4..2d4fc789 100644 --- a/ui/src/locales/zh-TW/common.json +++ b/ui/src/locales/zh-TW/common.json @@ -1,6 +1,6 @@ { "common": { - "loading": "載入中...", + "loading": "載入中…", "back": "返回", "cancel": "取消", "save": "儲存", diff --git a/ui/src/locales/zh-TW/configView.json b/ui/src/locales/zh-TW/configView.json index 698f19f1..365f888a 100644 --- a/ui/src/locales/zh-TW/configView.json +++ b/ui/src/locales/zh-TW/configView.json @@ -52,7 +52,7 @@ "debugDump": { "label": "診斷偵錯轉儲", "description": "下載用於故障排除的執行時狀態精簡 JSON 快照", - "preparing": "準備中...", + "preparing": "準備中……", "download": "下載偵錯轉儲" } }, @@ -132,7 +132,7 @@ } }, "logs": { - "loading": "正在載入日誌...", + "loading": "正在載入日誌……", "emptyMessage": "當前篩選條件下沒有日誌條目。", "toolbar": { "live": "即時", diff --git a/ui/src/locales/zh-TW/containerComponents.json b/ui/src/locales/zh-TW/containerComponents.json index 3186168e..204bfdee 100644 --- a/ui/src/locales/zh-TW/containerComponents.json +++ b/ui/src/locales/zh-TW/containerComponents.json @@ -3,7 +3,7 @@ "fullPageActions": { "updateWorkflow": "更新工作流程", "actionsGroup": "操作", - "previewing": "預覽中...", + "previewing": "預覽中……", "previewUpdate": "預覽更新", "forceUpdate": "強制更新", "updateNow": "立即更新", @@ -31,7 +31,7 @@ "noActivePolicy": "無活動更新策略。", "removeSkip": "移除跳過", "previewSection": "預覽", - "generatingPreview": "正在產生預覽...", + "generatingPreview": "正在產生預覽……", "currentLabel": "目前:", "newLabel": "新:", "updateKindLabel": "更新類型:", @@ -45,19 +45,19 @@ "patchPreviewLabel": "修補程式預覽:", "previewEmptyState": "執行預覽以檢查計劃的更新操作。", "associatedTriggers": "關聯的觸發器", - "loadingTriggers": "正在載入觸發器...", - "runningButton": "執行中...", + "loadingTriggers": "正在載入觸發器……", + "runningButton": "執行中……", "runButton": "執行", "noTriggersAssociated": "此容器沒有關聯的觸發器", "backupsRollback": "備份與回滾", - "rollingBack": "回滾中...", + "rollingBack": "回滾中……", "rollbackLatest": "回滾到最新", - "loadingBackups": "正在載入備份...", - "rollingButton": "回滾中...", + "loadingBackups": "正在載入備份……", + "rollingButton": "回滾中……", "useButton": "使用", "noBackupsAvailable": "暫無備份可用", "updateOperationHistory": "更新操作歷史", - "loadingOperationHistory": "正在載入操作歷史...", + "loadingOperationHistory": "正在載入操作歷史……", "phaseLabel": "階段:", "versionLabel": "版本:", "rollbackReasonLabel": "回滾原因:", @@ -102,6 +102,7 @@ "version": "版本", "currentLabel": "目前:", "latestLabel": "最新:", + "digestLabel": "Digest:", "upToDate": "已是最新", "tagFilters": "標籤篩選", "includeLabel": "包含:", @@ -123,18 +124,18 @@ "window": "視窗", "interval": "間隔", "security": "安全", - "refreshing": "重新整理中...", + "refreshing": "重新整理中……", "refresh": "重新整理", - "loadingVulnerabilityData": "正在載入漏洞資料...", + "loadingVulnerabilityData": "正在載入漏洞資料……", "critical": "嚴重", "high": "高", "medium": "中", "low": "低", "total": "總計", "noVulnerabilities": "此容器未報告任何漏洞。", - "loadingSbom": "正在載入 SBOM...", + "loadingSbom": "正在載入 SBOM……", "refreshSbom": "重新整理 SBOM", - "loadingSbomDocument": "正在載入 SBOM 文件...", + "loadingSbomDocument": "正在載入 SBOM 文件……", "formatLabel": "格式:", "componentsLabel": "組件:", "generatedLabel": "產生時間:", @@ -227,8 +228,8 @@ "imageAge": "映像檔存在時間" }, "listContent": { - "loadingContainers": "正在載入容器...", - "searchPlaceholder": "搜尋名稱或映像檔...", + "loadingContainers": "正在載入容器……", + "searchPlaceholder": "搜尋名稱或映像檔……", "allStatuses": "所有狀態", "running": "執行中", "stopped": "已停止", @@ -275,7 +276,7 @@ "heartbeatActive": "心跳活動中", "resume": "恢復", "pause": "暫停", - "loadingStats": "正在載入容器統計資訊...", + "loadingStats": "正在載入容器統計資訊……", "noDataYet": "統計流尚未產生資料。", "cpu": "CPU", "memory": "記憶體", @@ -287,7 +288,7 @@ "confirmTagChange": "更新 {name}?這將把映像檔標籤從 :{currentTag} 更改為 :{newTag}{kind}。", "confirmDigestChange": "更新 {name}?:{currentTag} 有更新的建置版本可用(摘要變更)。", "confirmLatest": "立即更新 {name}?這將應用最新發現的映像檔。", - "updating": "更新中...", + "updating": "更新中……", "update": "更新" }, "floatingTag": { diff --git a/ui/src/locales/zh-TW/containerLogs.json b/ui/src/locales/zh-TW/containerLogs.json index d6b2b3c3..93345077 100644 --- a/ui/src/locales/zh-TW/containerLogs.json +++ b/ui/src/locales/zh-TW/containerLogs.json @@ -2,7 +2,7 @@ "containerLogs": { "backTooltip": "返回容器列表", "title": "容器日誌", - "loading": "正在載入容器...", + "loading": "正在載入容器…", "notFound": "未找到容器 \"{name}\"", "loadFailed": "無法載入容器資訊" } diff --git a/ui/src/locales/zh-TW/dashboardView.json b/ui/src/locales/zh-TW/dashboardView.json index f9e45eea..4c119ca7 100644 --- a/ui/src/locales/zh-TW/dashboardView.json +++ b/ui/src/locales/zh-TW/dashboardView.json @@ -1,6 +1,6 @@ { "dashboardView": { - "loading": "正在載入儀表板...", + "loading": "正在載入儀表板……", "loadFailed": "無法載入儀表板", "dragToReorder": "拖動以重新排序", "viewAll": "檢視全部 →", diff --git a/ui/src/locales/zh-TW/listViews.json b/ui/src/locales/zh-TW/listViews.json index 6165dc82..6f281cb2 100644 --- a/ui/src/locales/zh-TW/listViews.json +++ b/ui/src/locales/zh-TW/listViews.json @@ -1,9 +1,9 @@ { "auditView": { - "loadingAuditLog": "正在載入稽核日誌...", + "loadingAuditLog": "正在載入稽核日誌……", "loadError": "無法載入稽核日誌", - "filterPlaceholder": "按目標或事件篩選...", - "containerFilterPlaceholder": "容器名稱...", + "filterPlaceholder": "按目標或事件篩選……", + "containerFilterPlaceholder": "容器名稱……", "allEvents": "所有事件", "eventsSelected": "已選擇 {count} 個事件", "clear": "清除", @@ -69,12 +69,38 @@ } }, "notificationsView": { - "loadingRules": "正在載入通知規則...", + "loadingRules": "正在載入通知規則……", "loadError": "無法載入通知規則", - "filterPlaceholder": "按名稱、描述或觸發器篩選...", + "filterPlaceholder": "按名稱、描述或觸發器篩選……", "clear": "清除", "allNotificationTriggers": "所有通知觸發器", "noTriggers": "無觸發器", + "rules": { + "update-available": { + "name": "Update Available", + "description": "When a container has a new version" + }, + "update-applied": { + "name": "Update Applied", + "description": "After a container is successfully updated" + }, + "update-failed": { + "name": "Update Failed", + "description": "When an update fails or is rolled back" + }, + "security-alert": { + "name": "Security Alert", + "description": "Critical/High vulnerability detected" + }, + "agent-disconnect": { + "name": "Agent Disconnected", + "description": "When a remote agent loses connection" + }, + "agent-reconnect": { + "name": "Agent Reconnected", + "description": "When a remote agent reconnects after losing connection" + } + }, "columns": { "on": "開啟", "rule": "規則", @@ -92,7 +118,7 @@ "triggersPageLink": "觸發器頁面", "helpTextImplicitAll": "留空將此事件發送到所有通知觸發器。選擇任何觸發器會將此規則轉為允許清單。", "helpTextExplicit": "只有選定的觸發器會接收此事件。留空會抑制此事件對所有觸發器的通知。", - "saving": "儲存中...", + "saving": "儲存中……", "saveChanges": "儲存變更", "reset": "重設", "enabled": "已啟用", @@ -100,9 +126,9 @@ } }, "securityView": { - "loadingVulnerabilityData": "正在載入漏洞資料...", + "loadingVulnerabilityData": "正在載入漏洞資料……", "scanNow": "立即掃描", - "scanning": "掃描中...", + "scanning": "掃描中……", "scanAllAriaLabel": "掃描所有容器", "scanAllContainers": "掃描所有容器的漏洞", "checkingScanner": "正在檢查掃描器可用性", @@ -158,8 +184,8 @@ }, "sbom": { "label": "SBOM", - "loading": "正在載入 SBOM 文件...", - "loadingButton": "載入中...", + "loading": "正在載入 SBOM 文件……", + "loadingButton": "載入中……", "refresh": "重新整理", "hide": "隱藏", "view": "檢視", @@ -201,9 +227,9 @@ } }, "registriesView": { - "loadingRegistries": "正在載入倉庫...", + "loadingRegistries": "正在載入倉庫……", "loadError": "無法載入倉庫", - "filterPlaceholder": "按名稱或類型篩選...", + "filterPlaceholder": "按名稱或類型篩選……", "clear": "清除", "emptyFiltered": "沒有倉庫匹配您的篩選條件", "columns": { @@ -220,21 +246,30 @@ "auth": "認證", "status": "狀態" }, + "status": { + "connected": "Connected", + "error": "Error", + "unknown": "Unknown" + }, "detail": { - "refreshing": "正在重新整理倉庫詳情...", + "refreshing": "正在重新整理倉庫詳情……", "status": "狀態", "authentication": "認證", "url": "URL" } }, "serversView": { - "loadingServerData": "正在載入伺服器資料...", + "loadingServerData": "正在載入伺服器資料……", "loadError": "無法載入伺服器資料", - "filterPlaceholder": "按名稱或地址篩選...", + "filterPlaceholder": "按名稱或地址篩選……", "clear": "清除", "emptyFiltered": "沒有主機匹配您的篩選條件", "justNow": "剛剛", "never": "從未", + "status": { + "connected": "Connected", + "disconnected": "Disconnected" + }, "columns": { "host": "主機", "address": "地址", @@ -261,9 +296,9 @@ } }, "triggersView": { - "loadingTriggers": "正在載入觸發器...", + "loadingTriggers": "正在載入觸發器……", "loadError": "無法載入觸發器", - "filterPlaceholder": "按名稱篩選...", + "filterPlaceholder": "按名稱篩選……", "clear": "清除", "emptyFiltered": "沒有觸發器匹配您的篩選條件", "columns": { @@ -276,7 +311,7 @@ "inactive": "不活躍" }, "test": { - "testing": "測試中...", + "testing": "測試中……", "sent": "已發送!", "failed": "失敗", "test": "測試", @@ -288,7 +323,7 @@ }, "detail": { "status": "狀態", - "refreshing": "正在重新整理觸發器詳情...", + "refreshing": "正在重新整理觸發器詳情……", "noConfig": "無配置屬性" }, "list": { @@ -296,9 +331,9 @@ } }, "watchersView": { - "loadingWatchers": "正在載入監視器...", + "loadingWatchers": "正在載入監視器……", "loadError": "無法載入監視器", - "filterPlaceholder": "按名稱篩選...", + "filterPlaceholder": "按名稱篩選……", "clear": "清除", "emptyFiltered": "沒有監視器匹配您的篩選條件", "columns": { @@ -329,7 +364,7 @@ "schedule": "計劃", "nextRun": "下次執行", "viewContainers": "檢視容器", - "refreshing": "正在重新整理監視器詳情..." + "refreshing": "正在重新整理監視器詳情……" } } } diff --git a/ui/src/locales/zh-TW/loginView.json b/ui/src/locales/zh-TW/loginView.json index 5e656498..1655b63a 100644 --- a/ui/src/locales/zh-TW/loginView.json +++ b/ui/src/locales/zh-TW/loginView.json @@ -11,7 +11,7 @@ }, "submit": { "signIn": "登入", - "signingIn": "登入中..." + "signingIn": "登入中……" }, "separator": "或使用以下方式繼續", "rememberMe": "記住我", @@ -27,7 +27,7 @@ }, "connectionLost": { "title": "連線遺失", - "body": "伺服器無法存取。正在等待其重新上線...", + "body": "伺服器無法存取。正在等待其重新上線……", "reconnecting": "重新連線中" } } diff --git a/ui/src/locales/zh-TW/notificationOutboxView.json b/ui/src/locales/zh-TW/notificationOutboxView.json new file mode 100644 index 00000000..dda39feb --- /dev/null +++ b/ui/src/locales/zh-TW/notificationOutboxView.json @@ -0,0 +1,39 @@ +{ + "notificationOutboxView": { + "heading": "Outbox", + "refresh": "Refresh", + "loading": "Loading outbox entries…", + "tabs": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "columns": { + "event": "Event", + "trigger": "Trigger", + "attempts": "Attempts", + "lastError": "Last error", + "created": "Created" + }, + "actions": { + "retry": "Retry", + "discard": "Discard" + }, + "status": { + "dead-letter": "Dead-letter", + "pending": "Pending", + "delivered": "Delivered" + }, + "empty": { + "dead-letter": "No dead-letter entries", + "pending": "No pending entries", + "delivered": "No delivered entries" + }, + "toast": { + "requeued": "Requeued: {name}", + "discarded": "Discarded: {name}", + "retryFailed": "Failed to retry {name}", + "discardFailed": "Failed to discard {name}" + } + } +} diff --git a/ui/src/locales/zh-TW/sharedComponents.json b/ui/src/locales/zh-TW/sharedComponents.json index f64bf847..b3eb810d 100644 --- a/ui/src/locales/zh-TW/sharedComponents.json +++ b/ui/src/locales/zh-TW/sharedComponents.json @@ -35,13 +35,13 @@ }, "logViewer": { "emptyMessage": "未找到日誌條目。", - "loadingMessage": "正在載入日誌..." + "loadingMessage": "正在載入日誌……" }, "scanProgressBanner": { - "scanning": "正在掃描 {done}/{total} 個容器..." + "scanning": "正在掃描 {done}/{total} 個容器……" }, "scanProgressText": { - "scanning": "正在掃描 {done}/{total}..." + "scanning": "正在掃描 {done}/{total}……" }, "securityEmptyState": { "noDataTitle": "暫無漏洞資料",