diff --git a/web/public/locales/ca/components/dialog.json b/web/public/locales/ca/components/dialog.json index 9e2900d8a..6f527e4df 100644 --- a/web/public/locales/ca/components/dialog.json +++ b/web/public/locales/ca/components/dialog.json @@ -60,15 +60,76 @@ "noVaildTimeSelected": "No s'ha seleccionat un rang de temps vàlid", "failed": "No s'ha pogut inciar l'exportació: {{error}}" }, - "view": "Vista" + "view": "Vista", + "queued": "Exporta a la cua. Mostra el progrés a la pàgina d'exportacions.", + "batchSuccess_one": "S'ha iniciat l'exportació 1. Obrint el cas ara.", + "batchSuccess_many": "S'han iniciat {{count}} exportacions. Obrint el cas ara.", + "batchSuccess_other": "S'han iniciat {{count}} exportacions. Obrint el cas ara.", + "batchPartial": "S'han iniciat {{successful}} de {{total}} exportacions. Càmeres fallides: {{failedCameras}}", + "batchFailed": "No s'han pogut iniciar {{total}} exportacions. Càmeres fallides: {{failedCameras}}", + "batchQueuedSuccess_one": "Exporta a la cua 1. Obrint el cas ara.", + "batchQueuedSuccess_many": "{{count}} exportacions a la cua. Obrint el cas ara.", + "batchQueuedSuccess_other": "{{count}} exportacions a la cua. Obrint el cas ara.", + "batchQueuedPartial": "{{successful}} de {{total}} exportacions a la cua. Càmeres fallides: {{failedCameras}}", + "batchQueueFailed": "No s'han pogut posar a la cua {{total}} exportacions. Càmeres fallides: {{failedCameras}}" }, "fromTimeline": { "saveExport": "Guardar exportació", - "previewExport": "Previsualitzar exportació" + "previewExport": "Previsualitzar exportació", + "queueingExport": "S'està fent la cua de l'exportació...", + "useThisRange": "Utilitza aquest interval" }, "case": { "label": "Cas", - "placeholder": "Selecciona un cas" + "placeholder": "Selecciona un cas", + "newCaseOption": "Crea un cas no", + "newCaseNamePlaceholder": "Nom de cas nou", + "newCaseDescriptionPlaceholder": "Descripció del cas", + "nonAdminHelp": "Es crearà un nou cas per a aquestes exportacions." + }, + "queueing": "S'està fent la cua de l'exportació...", + "tabs": { + "export": "Càmera única", + "multiCamera": "Multicàmera" + }, + "multiCamera": { + "timeRange": "Interval de temps", + "selectFromTimeline": "Selecciona des de la línia de temps", + "cameraSelection": "Càmeres", + "cameraSelectionHelp": "Les càmeres amb objectes rastrejats en aquest interval de temps estan preseleccionades", + "checkingActivity": "Comprovant l'activitat de la càmera...", + "noCameras": "No hi ha càmeres disponibles", + "detectionCount_one": "1 objecte rastrejat", + "detectionCount_many": "{{count}} objectes rastrejats", + "detectionCount_other": "{{count}} objectes rastrejats", + "nameLabel": "Nom de l'exportació", + "namePlaceholder": "Nom base opcional per a aquestes exportacions", + "queueingButton": "S'estan posant a la cua les exportacions...", + "exportButton_one": "Exporta 1 càmera", + "exportButton_many": "Exporta {{count}} càmeres", + "exportButton_other": "Exporta {{count}} càmeres" + }, + "multi": { + "title_one": "Exporta {{count}} ressenyes", + "title_many": "Exporta {{count}} ressenyes", + "title_other": "Exporta {{count}} ressenyes", + "description": "Exporta cada revisió seleccionada. Totes les exportacions s'agruparan en un sol cas.", + "descriptionNoCase": "Exporta cada revisió seleccionada.", + "caseNamePlaceholder": "Exporta la revisió - {{date}}", + "exportButton_one": "Exporta {{count}} ressenyes", + "exportButton_many": "Exporta {{count}} ressenyes", + "exportButton_other": "Exporta {{count}} ressenyes", + "exportingButton": "S'està exportant...", + "toast": { + "started_one": "S'ha iniciat l'exportació 1. Obrint el cas ara.", + "started_many": "S'han iniciat {{count}} exportacions. Obrint el cas ara.", + "started_other": "S'han iniciat {{count}} exportacions. Obrint el cas ara.", + "startedNoCase_one": "S'ha iniciat l'exportació 1.", + "startedNoCase_many": "S'han iniciat {{count}} exportacions.", + "startedNoCase_other": "S'han iniciat {{count}} exportacions.", + "partial": "S'han iniciat {{successful}} de {{total}} exportacions. Ha fallat: {{failedItems}}", + "failed": "No s'han pogut iniciar {{total}} exportacions. Ha fallat: {{failedItems}}" + } } }, "streaming": { @@ -116,6 +177,14 @@ "success": "Els enregistraments de vídeo associats als elements de revisió seleccionats s’han suprimit correctament.", "error": "No s'ha pogut suprimir: {{error}}" } + }, + "shareTimestamp": { + "label": "Comparteix la marca horària", + "title": "Comparteix la marca horària", + "description": "Comparteix un URL amb marca horària de la posició actual del jugador o tria una marca horària personalitzada. Tingueu en compte que aquest no és un URL de compartició pública i només és accessible per als usuaris amb accés a Frigate i aquesta càmera.", + "custom": "Marca horària personalitzada", + "button": "Comparteix l'URL de la marca horària", + "shareTitle": "Marca de temps de revisió de Frigate: {{camera}}" } }, "imagePicker": { diff --git a/web/public/locales/ca/components/player.json b/web/public/locales/ca/components/player.json index 1fed78eff..88be512c9 100644 --- a/web/public/locales/ca/components/player.json +++ b/web/public/locales/ca/components/player.json @@ -32,7 +32,8 @@ "noPreviewFoundFor": "No s'ha trobat cap previsualització per a {{cameraName}}", "submitFrigatePlus": { "title": "Enviar aquesta imatge a Frigate+?", - "submit": "Enviar" + "submit": "Enviar", + "previewError": "No s'ha pogut carregar la vista prèvia de la instantània. És possible que l'enregistrament no estigui disponible en aquest moment." }, "livePlayerRequiredIOSVersion": "Es requereix iOS 17.1 o superior per a aquest tipus de reproducció en directe.", "streamOffline": { diff --git a/web/public/locales/ca/config/global.json b/web/public/locales/ca/config/global.json index d81735a61..0e9161348 100644 --- a/web/public/locales/ca/config/global.json +++ b/web/public/locales/ca/config/global.json @@ -1951,7 +1951,7 @@ }, "roles": { "label": "Rols", - "description": "Funcions genAI (eines, visió, incrustacions); un proveïdor per rol." + "description": "Rols de GenAI (xat, descripcions, incrustacions); un proveïdor per rol." }, "provider_options": { "label": "Opcions del proveïdor", diff --git a/web/public/locales/ca/views/events.json b/web/public/locales/ca/views/events.json index afacccbf9..a0563a991 100644 --- a/web/public/locales/ca/views/events.json +++ b/web/public/locales/ca/views/events.json @@ -27,7 +27,9 @@ }, "documentTitle": "Revisió - Frigate", "recordings": { - "documentTitle": "Enregistraments - Frigate" + "documentTitle": "Enregistraments - Frigate", + "invalidSharedLink": "No s'ha pogut obrir l'enllaç d'enregistrament amb marques de temps a causa d'un error d'anàlisi.", + "invalidSharedCamera": "No s'ha pogut obrir l'enllaç d'enregistrament amb marques de temps a causa d'una càmera desconeguda o no autoritzada." }, "calendarFilter": { "last24Hours": "Últimes 24 hores" diff --git a/web/public/locales/ca/views/explore.json b/web/public/locales/ca/views/explore.json index a923baa95..c9a11a0c4 100644 --- a/web/public/locales/ca/views/explore.json +++ b/web/public/locales/ca/views/explore.json @@ -248,7 +248,7 @@ "dialog": { "confirmDelete": { "title": "Confirmar la supressió", - "desc": "Eliminant aquest objecte seguit borrarà l'snapshot, qualsevol embedding gravat, i qualsevol detall de seguiment. Les imatges gravades d'aquest objecte seguit en l'historial NO seràn eliminades.

Estas segur que vols continuar?" + "desc": "Suprimir aquest objecte rastrejat elimina la instantània, qualsevol incrustació desada, i qualsevol entrada de detalls de seguiment associada. Les imatges gravades d'aquest objecte seguit en l'historial NO seràn eliminades.

Estas segur que vols continuar?" }, "toast": { "error": "S'ha produït un error en suprimir aquest objecte rastrejat: {{errorMessage}}" @@ -289,7 +289,10 @@ "zones": "Zones", "ratio": "Ràtio", "area": "Àrea", - "score": "Puntuació" + "score": "Puntuació", + "computedScore": "Puntuació calculada", + "topScore": "Puntuació superior", + "toggleAdvancedScores": "Commuta les puntuacions avançades" } }, "annotationSettings": { diff --git a/web/public/locales/ca/views/exports.json b/web/public/locales/ca/views/exports.json index ccb5366b5..194d87ae4 100644 --- a/web/public/locales/ca/views/exports.json +++ b/web/public/locales/ca/views/exports.json @@ -14,7 +14,9 @@ "toast": { "error": { "renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}", - "assignCaseFailed": "No s'ha pogut actualitzar l'assignació de cas:{{errorMessage}}" + "assignCaseFailed": "No s'ha pogut actualitzar l'assignació de cas:{{errorMessage}}", + "caseSaveFailed": "No s'ha pogut desar el cas: {{errorMessage}}", + "caseDeleteFailed": "No s'ha pogut suprimir el cas: {{errorMessage}}" } }, "tooltip": { @@ -22,7 +24,8 @@ "downloadVideo": "Baixa el vídeo", "editName": "Edita el nom", "deleteExport": "Suprimeix l'exportació", - "assignToCase": "Afegeix al cas" + "assignToCase": "Afegeix al cas", + "removeFromCase": "Elimina del cas" }, "headings": { "cases": "Casos", @@ -35,5 +38,91 @@ "newCaseOption": "Crea un cas nou", "nameLabel": "Nom del cas", "descriptionLabel": "Descripció" + }, + "toolbar": { + "newCase": "Cas nou", + "addExport": "Afegeix una exportació", + "editCase": "Edita el cas", + "deleteCase": "Suprimeix el cas" + }, + "deleteCase": { + "label": "Suprimeix el cas", + "desc": "Esteu segur que voleu suprimir {{caseName}}?", + "descKeepExports": "Les exportacions continuaran estant disponibles com a exportacions sense categoria.", + "descDeleteExports": "Totes les exportacions en aquest cas s'eliminaran permanentment.", + "deleteExports": "Elimina també les exportacions" + }, + "caseCard": { + "emptyCase": "Encara no hi ha exportacions" + }, + "jobCard": { + "defaultName": "Exportació de {{camera}}", + "queued": "En cua", + "running": "En execució", + "preparing": "Preparant", + "copying": "Copiant", + "encoding": "Codificant", + "encodingRetry": "Codificant (reintent)", + "finalizing": "Finalitzant" + }, + "caseView": { + "noDescription": "Sense descripció", + "createdAt": "{{value}} creat", + "exportCount_one": "1 exportació", + "exportCount_other": "{{count}} exportacions", + "cameraCount_one": "1 càmera", + "cameraCount_other": "{{count}} càmeres", + "showMore": "Mostra'n més", + "showLess": "Mostra menys", + "emptyTitle": "Aquest cas és buit", + "emptyDescription": "Afegeix les exportacions no categoritzades existents per mantenir el cas organitzat.", + "emptyDescriptionNoExports": "Encara no hi ha exportacions sense categoria per afegir." + }, + "caseEditor": { + "createTitle": "Crea un cas", + "editTitle": "Edita el cas", + "namePlaceholder": "Nom del cas", + "descriptionPlaceholder": "Afegeix notes o context per a aquest cas" + }, + "addExportDialog": { + "title": "Afegeix l'exportació a {{caseName}}", + "searchPlaceholder": "Cerca exportacions sense categoria", + "empty": "No hi ha exportacions sense categoria que coincideixin amb aquesta cerca.", + "addButton_one": "Afegeix 1 exportació", + "addButton_other": "Afegeix {{count}} exportacions", + "adding": "S'està afegint..." + }, + "selected_one": "{{count}} seleccionats", + "selected_other": "{{count}} seleccionats", + "bulkActions": { + "addToCase": "Afegeix al cas", + "moveToCase": "Mou al cas", + "removeFromCase": "Elimina del cas", + "delete": "Suprimeix", + "deleteNow": "Suprimeix ara" + }, + "bulkDelete": { + "title": "Suprimeix les exportacions", + "desc_one": "Esteu segur que voleu suprimir {{count}} l'exportació?", + "desc_other": "steu segur que voleu suprimir {{count}} exportacions?" + }, + "bulkRemoveFromCase": { + "title": "Elimina del cas", + "desc_one": "Voleu suprimir {{count}} d'aquest cas?", + "desc_other": "Voleu eliminar {{count}} exportacions d'aquest cas?", + "descKeepExports": "Les exportacions es mouran a sense categoria.", + "descDeleteExports": "Les exportacions s'eliminaran permanentment.", + "deleteExports": "Suprimeix les exportacions" + }, + "bulkToast": { + "success": { + "delete": "Exportacions suprimides amb èxit", + "reassign": "Assignació de cas actualitzada amb èxit", + "remove": "S'han eliminat les exportacions del cas" + }, + "error": { + "deleteFailed": "No s'han pogut suprimir les exportacions: {{errorMessage}}", + "reassignFailed": "No s'ha pogut actualitzar l'assignació de cas: {{errorMessage}}" + } } } diff --git a/web/public/locales/ca/views/faceLibrary.json b/web/public/locales/ca/views/faceLibrary.json index 1cc77f1a6..ea19924ac 100644 --- a/web/public/locales/ca/views/faceLibrary.json +++ b/web/public/locales/ca/views/faceLibrary.json @@ -38,7 +38,7 @@ "uploadFace": "Puja una imatge del rostre", "nextSteps": "Següents passos", "description": { - "uploadFace": "Puja una imatge de {{name}} que mostri el seu rostre de cares. No cal que la imatge estigui retallada només al rostre." + "uploadFace": "Pugeu una imatge de {{name}} que mostra la seva cara des d'un angle frontal. La imatge no necessita ser retallada a la seva cara." } }, "selectFace": "Seleccionar rostre", diff --git a/web/public/locales/ca/views/settings.json b/web/public/locales/ca/views/settings.json index 187132bf8..697b3947a 100644 --- a/web/public/locales/ca/views/settings.json +++ b/web/public/locales/ca/views/settings.json @@ -1280,7 +1280,8 @@ }, "hikvision": { "substreamWarning": "El substream 1 està bloquejat a una resolució baixa. Moltes càmeres Hikvision suporten subfluxos addicionals que han d'estar habilitats a la configuració de la càmera. Es recomana comprovar i utilitzar aquests corrents si estan disponibles." - } + }, + "resolutionUnknown": "La resolució d'aquest flux no s'ha pogut investigar. Això causarà problemes a l'inici. Heu d'establir manualment la resolució de detecció a Configuració o a la configuració." } } }, @@ -1659,7 +1660,16 @@ "empty": "No hi ha etiquetes disponibles", "allNonAlertDetections": "Totes les activitats no alertes s'inclouran com a deteccions." }, - "addCustomLabel": "Afegeix una etiqueta personalitzada..." + "addCustomLabel": "Afegeix una etiqueta personalitzada...", + "genaiModel": { + "placeholder": "Selecciona el model…", + "search": "Cerca models…", + "noModels": "No hi ha models disponibles" + }, + "knownPlates": { + "namePlaceholder": "per exemple. Cotxe de la parella", + "platePlaceholder": "Matricula o regex" + } }, "globalConfig": { "title": "Configuració global", diff --git a/web/public/locales/de/components/dialog.json b/web/public/locales/de/components/dialog.json index e91a68fe4..66aba17a6 100644 --- a/web/public/locales/de/components/dialog.json +++ b/web/public/locales/de/components/dialog.json @@ -64,20 +64,73 @@ "toast": { "error": { "endTimeMustAfterStartTime": "Die Endzeit darf nicht vor der Startzeit liegen", - "failed": "Fehler beim Starten des Exports: {{error}}", + "failed": "Fehler beim Export in die Warteschlange: {{error}}", "noVaildTimeSelected": "Kein gültiger Zeitraum ausgewählt" }, "success": "Export erfolgreich gestartet. Die Datei befindet sich auf der Exportseite.", - "view": "Ansicht" + "view": "Ansicht", + "queued": "Export in Warteschlange gestellt. Fortschritt auf der Exportseite verfolgen.", + "batchSuccess_one": "1 Export gestartet. Öffne den Fall jetzt.", + "batchSuccess_other": "{{count}} Exports gestartet. Öffne den Fall jetzt.", + "batchPartial": "{{successful}} von {{total}} Exporten gestartet. Fehlgeschlagene Kameras: {{failedCameras}}", + "batchFailed": "Fehler beim Starten der {{total}} Exporte. Fehlgeschlagene Kameras: {{failedCameras}}", + "batchQueuedSuccess_one": "1 Export in die Warteschlange gestellt. Fall wird jetzt geöffnet.", + "batchQueuedSuccess_other": "{{count}} Exporte in der Warteschlange. Fall wird jetzt geöffnet.", + "batchQueuedPartial": "{{successful}} von {{total}} Exporten in die Warteschlange gestellt. Fehlerhafte Kameras: {{failedCameras}}", + "batchQueueFailed": "Fehler beim Einreihen von {{total}} Exporten in die Warteschlange. Fehlerhafte Kameras: {{failedCameras}}" }, "fromTimeline": { "saveExport": "Export speichern", - "previewExport": "Exportvorschau" + "previewExport": "Exportvorschau", + "queueingExport": "Export wird in die Warteschlange gestellt...", + "useThisRange": "Nutzen Sie diesen Bereich" }, "export": "Exportieren", "case": { "label": "Fall", - "placeholder": "Einen Fall auswählen" + "placeholder": "Einen Fall auswählen", + "newCaseOption": "Einen neuen Fall erstellen", + "newCaseNamePlaceholder": "Neuer Fallname", + "newCaseDescriptionPlaceholder": "Fall Beschreibung", + "nonAdminHelp": "Für diese Exporte wird ein neuer Fall angelegt." + }, + "queueing": "Export wird in die Warteschlange gestellt...", + "tabs": { + "export": "Einzelne Kamera", + "multiCamera": "Mehrere-Kameras" + }, + "multiCamera": { + "timeRange": "Zeitbereich", + "selectFromTimeline": "Wählen Sie aus der Zeitleiste aus", + "cameraSelection": "Kameras", + "cameraSelectionHelp": "Kameras, die in diesem Zeitbereich Objekte verfolgen, sind vorausgewählt", + "checkingActivity": "Kameraaktivität wird überprüft...", + "noCameras": "keine kamaeras verfügbar", + "detectionCount_one": "1 verfolgtes Objekt", + "detectionCount_other": "{{count}} verfolgtesObjekte", + "nameLabel": "Export Name", + "namePlaceholder": "Optionaler Basisname für diese Exporte", + "queueingButton": "Exporte werden in die Warteschlange gestellt...", + "exportButton_one": "Export 1 Kamera", + "exportButton_other": "xport {{count}} Kameras" + }, + "multi": { + "title_one": "1 Bewertung exportieren", + "title_other": "{{count}} Bewertung exportieren", + "description": "Exportieren Sie jede ausgewählte Rezension. Alle Exporte werden in einem einzigen Fall zusammengefasst.", + "descriptionNoCase": "Jede ausgewählte Bewertung exportieren.", + "caseNamePlaceholder": "Export prüfen - {{date}}", + "exportButton_one": "1 Bewertung exportieren", + "exportButton_other": "{{count}} Bewertung exportieren", + "exportingButton": "Exportieren...", + "toast": { + "started_one": "1 Export gestartet. Fall wird jetzt geöffnet.", + "started_other": "{{count}} Exporte gestartet. Fall wird jetzt geöffnet.", + "startedNoCase_one": "1 Export gestartet.", + "startedNoCase_other": "{{count}} Exports gestartet.", + "partial": "{{successful}} von {{total}} Exporten gestartet. Fehlgeschlagen: {{failedItems}}", + "failed": "Fehler beim Starten der {{total}} Exporte. Fehler: {{failedItems}}" + } } }, "streaming": { diff --git a/web/public/locales/de/config/global.json b/web/public/locales/de/config/global.json index b7758bfea..f284ab038 100644 --- a/web/public/locales/de/config/global.json +++ b/web/public/locales/de/config/global.json @@ -1710,7 +1710,7 @@ }, "roles": { "label": "Rollen", - "description": "GenAI-Rollen (Tools, Vision, Einbettungen); ein Anbieter pro Rolle." + "description": "GenAI-Rollen (Nachrichten, Beschreibung, Einbettungen); ein Anbieter pro Rolle." }, "provider_options": { "label": "Anbieter Optionen", diff --git a/web/public/locales/de/views/explore.json b/web/public/locales/de/views/explore.json index 5ca822d74..2e8a40598 100644 --- a/web/public/locales/de/views/explore.json +++ b/web/public/locales/de/views/explore.json @@ -282,7 +282,10 @@ "zones": "Zonen", "ratio": "Verhältnis", "area": "Bereich", - "score": "Bewertung" + "score": "Bewertung", + "computedScore": "Berechnetes Ergebnis", + "topScore": "Bester Treffer", + "toggleAdvancedScores": "Erweiterte Ergebnisse umschalten" } }, "annotationSettings": { diff --git a/web/public/locales/de/views/exports.json b/web/public/locales/de/views/exports.json index 26d3eae16..da604de91 100644 --- a/web/public/locales/de/views/exports.json +++ b/web/public/locales/de/views/exports.json @@ -14,7 +14,9 @@ "toast": { "error": { "renameExportFailed": "Umbenennen des Exports fehlgeschlagen: {{errorMessage}}", - "assignCaseFailed": "Aktualisierung der Fallzuweisung fehlgeschlagen: {{errorMessage}}" + "assignCaseFailed": "Aktualisierung der Fallzuweisung fehlgeschlagen: {{errorMessage}}", + "caseSaveFailed": "Fehler beim speichern vom Fall: {{errorMessage}}", + "caseDeleteFailed": "Fehler beim löschem vom Fall: {{errorMessage}}" } }, "tooltip": { @@ -22,7 +24,8 @@ "downloadVideo": "Video herunterladen", "editName": "Name ändern", "deleteExport": "Export löschen", - "assignToCase": "Hinzufügen zum Fall" + "assignToCase": "Hinzufügen zum Fall", + "removeFromCase": "Vom Gehäuse entfernen" }, "headings": { "cases": "Fälle", @@ -35,5 +38,91 @@ "newCaseOption": "Neuen Fall erstellen", "nameLabel": "Fallname", "descriptionLabel": "Beschreibung" + }, + "toolbar": { + "newCase": "Neuer Fall", + "addExport": "Zum expotieren hinzufügen", + "editCase": "Fall bearbeiten", + "deleteCase": "Fall löschen" + }, + "deleteCase": { + "label": "Fall löschen", + "desc": "Sind sie sich sicher löschen von{{caseName}}?", + "descKeepExports": "Exporte bleiben als nicht kategorisierte Exporte verfügbar.", + "descDeleteExports": "Alle Exporte werden in diesem Fall endgültig gelöscht.", + "deleteExports": "Exporte auch löschen" + }, + "caseCard": { + "emptyCase": "Noch keine Exporte" + }, + "jobCard": { + "defaultName": "{{camera}} export", + "queued": "In der Warteschlange", + "running": "läuft", + "preparing": "Vorbereitung", + "copying": "kopieren", + "encoding": "Codierung", + "encodingRetry": "Kodierung (Wiederholung)", + "finalizing": "Abschließen" + }, + "caseView": { + "noDescription": "keine Beschreibung", + "createdAt": "Erstellt {{value}}", + "exportCount_one": "1 Export", + "exportCount_other": "{{count}} Exports", + "cameraCount_one": "1 Kamera", + "cameraCount_other": "{{count}} Kameras", + "showMore": "Mehr anzeigen", + "showLess": "Weniger Anzeigen", + "emptyTitle": "Der Fall ist leer", + "emptyDescription": "Fügen Sie vorhandene, nicht kategorisierte Exporte hinzu, um den Fall übersichtlich zu halten.", + "emptyDescriptionNoExports": "Es sind noch keine nicht kategorisierten Exporte zum Hinzufügen verfügbar." + }, + "caseEditor": { + "createTitle": "Fall erstellen", + "editTitle": "Fall bearbeiten", + "namePlaceholder": "Fall Name", + "descriptionPlaceholder": "Fügen Sie Anmerkungen oder Kontext zu diesem Fall hinzu" + }, + "addExportDialog": { + "title": "Export zum {{caseName}} hinzufügen", + "searchPlaceholder": "Suche nach nicht kategorisierten Exporten", + "empty": "Es wurden keine nicht kategorisierten Exporte gefunden, die dieser Suche entsprechen.", + "addButton_one": "1 Export hinzufügen", + "addButton_other": "Fügen Sie {{count}} Exporte hinzu", + "adding": "Hinzufügen..." + }, + "selected_one": "{{count}} ausgewählt", + "selected_other": "{{count}} ausgewählt", + "bulkActions": { + "addToCase": "Zum Fall hinzufügen", + "moveToCase": "Zum Fall wechseln", + "removeFromCase": "Aus dem Fall nehmen", + "delete": "löschen", + "deleteNow": "jetzt löschen" + }, + "bulkDelete": { + "title": "Exporte löschen", + "desc_one": "Möchten Sie den Export {{count}} wirklich löschen?", + "desc_other": "Möchten Sie wirklich {{count}} Exporte löschen?" + }, + "bulkRemoveFromCase": { + "title": "Aus dem Fall nehmen", + "desc_one": "{{count}}-Export aus diesem Fall entfernen?", + "desc_other": "{{count}} Exporte aus diesem Fall entfernen?", + "descKeepExports": "Die Exporte werden in die Kategorie „Nicht kategorisiert“ verschoben.", + "descDeleteExports": "Exporte werden endgültig gelöscht.", + "deleteExports": "Löschen Sie stattdessen Exporte" + }, + "bulkToast": { + "success": { + "delete": "Exporte erfolgreich gelöscht", + "reassign": "Fallzuweisung erfolgreich aktualisiert", + "remove": "Exporte erfolgreich aus dem Fall entfernt" + }, + "error": { + "deleteFailed": "Fehler beim Löschen der Exporte: {{errorMessage}}", + "reassignFailed": "Fehler beim Aktualisieren der Fallzuordnung: {{errorMessage}}" + } } } diff --git a/web/public/locales/de/views/settings.json b/web/public/locales/de/views/settings.json index 81606f16e..522b9c63b 100644 --- a/web/public/locales/de/views/settings.json +++ b/web/public/locales/de/views/settings.json @@ -345,6 +345,10 @@ "zone": "Zone", "motion_mask": "Bewegungsmaske", "object_mask": "Objektmaske" + }, + "revertOverride": { + "title": "Basis Konfiguration wiederherstellen", + "desc": "Dadurch wird die Profilüberschreibung für {{type}}{{name}} aufgehoben und die Grundkonfiguration wiederhergestellt." } }, "speed": { @@ -507,7 +511,8 @@ "title": "Aktiviert", "description": "Ob diese Maske in der Konfigurationsdatei aktiviert ist. Ist sie deaktiviert, kann sie nicht über MQTT aktiviert werden. Deaktivierte Masken werden zur Laufzeit ignoriert." } - } + }, + "addDisabledProfile": "Fügen Sie es zuerst der Basiskonfiguration hinzu und überschreiben Sie es dann im Profil" }, "debug": { "objectShapeFilterDrawing": { @@ -1647,7 +1652,8 @@ "keyDuplicate": "Der Name des Detektors ist bereits vorhanden.", "noSchema": "Es sind keine Detektorschemata verfügbar.", "none": "Es sind keine Detektorinstanzen konfiguriert.", - "add": "Detektor hinzufügen" + "add": "Detektor hinzufügen", + "addCustomKey": "Benutzerdefinierten Schlüssel hinzufügen" }, "record": { "title": "Aufnahmeeinstellungen" @@ -1718,7 +1724,16 @@ "title": "Einstellungen für Zeitstempel" }, "searchPlaceholder": "Suche...", - "addCustomLabel": "Benutzerdefiniertes Etikett hinzufügen..." + "addCustomLabel": "Benutzerdefiniertes Etikett hinzufügen...", + "knownPlates": { + "namePlaceholder": "z.B. das Auto der Frau", + "platePlaceholder": "Kennzeichen oder regulärer Ausdruck" + }, + "genaiModel": { + "placeholder": "Modell auswählen…", + "search": "Modell suchen…", + "noModels": "Keine Modelle verfügbar" + } }, "globalConfig": { "title": "Globale Konfiguration", @@ -1876,6 +1891,10 @@ }, "snapshots": { "detectDisabled": "Die Objekterkennung ist deaktiviert. Es werden keine Momentaufnahmen von verfolgten Objekten erstellt." + }, + "detectors": { + "mixedTypes": "Alle Detektoren müssen von gleichem Typ sein, Entferne bestehende Detektoren um einen anderen Typ zu benutzen.", + "mixedTypesSuggestion": "Alle Detektoren müssen vom gleichem Typ sein. Entferne bestehende oder wähle {{type}}." } } } diff --git a/web/public/locales/el/config/global.json b/web/public/locales/el/config/global.json index 0967ef424..5b60515cb 100644 --- a/web/public/locales/el/config/global.json +++ b/web/public/locales/el/config/global.json @@ -1 +1,14 @@ -{} +{ + "version": { + "label": "Τρέχουσα έκδοση διαμόρφωσης" + }, + "safe_mode": { + "label": "Ασφαλής λειτουργία" + }, + "auth": { + "reset_admin_password": { + "label": "Επανέφερε κωδικού πρόσβασης για τον διαχειριστή admin", + "description": "Άμα είναι αλήθεια, επαναφέρει τον κωδικό πρόσβασης του χρήστη διαχειριστή(admin) κατά την εκκίνηση και εκτύπωση του νέου κωδικού πρόσβασης στα αρχείο καταγραφής(logs)" + } + } +} diff --git a/web/public/locales/es/common.json b/web/public/locales/es/common.json index 49e06c508..8faa18fe7 100644 --- a/web/public/locales/es/common.json +++ b/web/public/locales/es/common.json @@ -195,7 +195,8 @@ "explore": "Explorar", "uiPlayground": "Zona de pruebas de la interfaz de usuario", "faceLibrary": "Biblioteca de rostros", - "classification": "Clasificación" + "classification": "Clasificación", + "profiles": "Perfiles" }, "unit": { "speed": { diff --git a/web/public/locales/es/components/dialog.json b/web/public/locales/es/components/dialog.json index e8f59f05a..848285daf 100644 --- a/web/public/locales/es/components/dialog.json +++ b/web/public/locales/es/components/dialog.json @@ -77,7 +77,11 @@ "saveExport": "Guardar exportación", "previewExport": "Vista previa de la exportación" }, - "selectOrExport": "Seleccionar o exportar" + "selectOrExport": "Seleccionar o exportar", + "case": { + "label": "Caso", + "newCaseDescriptionPlaceholder": "Descripción de caso" + } }, "streaming": { "restreaming": { @@ -124,6 +128,9 @@ "markAsReviewed": "Marcar como revisado", "deleteNow": "Eliminar ahora", "markAsUnreviewed": "Marcar como no revisado" + }, + "shareTimestamp": { + "description": "Comparta una URL con marca de tiempo de la posición actual del reproductor o elija una marca de tiempo personalizada. Tenga en cuenta que esta no es una URL pública para compartir y solo es accesible para los usuarios que tienen acceso a Frigate y a esta cámara." } }, "imagePicker": { diff --git a/web/public/locales/es/components/player.json b/web/public/locales/es/components/player.json index 2a3e4deb1..c277d9a5a 100644 --- a/web/public/locales/es/components/player.json +++ b/web/public/locales/es/components/player.json @@ -3,7 +3,8 @@ "noPreviewFoundFor": "No se encontró vista previa para {{cameraName}}", "submitFrigatePlus": { "submit": "Enviar", - "title": "¿Enviar este fotograma a Frigate+?" + "title": "¿Enviar este fotograma a Frigate+?", + "previewError": "No se pudo cargar la vista previa de la instantánea. Es posible que la grabación no esté disponible en este momento." }, "streamOffline": { "desc": "No se han recibido fotogramas en la transmisión detect de {{cameraName}}, revisa los registros de errores", diff --git a/web/public/locales/es/config/cameras.json b/web/public/locales/es/config/cameras.json index aeb608371..d6a120fdf 100644 --- a/web/public/locales/es/config/cameras.json +++ b/web/public/locales/es/config/cameras.json @@ -42,10 +42,32 @@ "label": "Nombre descriptivo", "description": "Nombre descriptivo de la cámara utilizado en la interfaz de usuario de Frigate" }, - "label": "Configuración de Cámara", + "label": "Configuración de cámara", "onvif": { "profile": { - "label": "Perfil ONVIF" + "label": "Perfil ONVIF", + "description": "Perfil multimedia ONVIF específico que se utilizará para el control PTZ, identificado por token o nombre. Si no se especifica, se selecciona automáticamente el primer perfil con una configuración PTZ válida." + }, + "autotracking": { + "zoom_factor": { + "description": "Controla el nivel de zoom en los objetos rastreados. Los valores más bajos mantienen una mayor parte de la escena a la vista; los valores más altos acercan la imagen, pero pueden provocar la pérdida del rastreo. Valores entre 0.1 y 0.75." + }, + "calibrate_on_startup": { + "description": "Mida la velocidad de los motores PTZ al encenderlos para mejorar la precisión del seguimiento. Frigate actualizará la configuración con los `movement_weights` tras la calibración." + }, + "description": "Realice un seguimiento automático de objetos en movimiento y manténgalos centrados en el encuadre mediante movimientos de cámara PTZ.", + "zooming": { + "description": "Control del comportamiento del zoom: deshabilitado (solo panorámica/inclinación), absoluto (mayor compatibilidad) o relativo (panorámica/inclinación/zoom simultáneos)." + }, + "return_preset": { + "description": "Nombre del preajuste ONVIF configurado en el firmware de la cámara al que regresar una vez finalizado el seguimiento." + }, + "timeout": { + "description": "Espere esta cantidad de segundos después de perder el seguimiento antes de devolver la cámara a la posición preestablecida." + } + }, + "tls_insecure": { + "description": "Omitir la verificación TLS y deshabilitar la autenticación digest para ONVIF (no seguro; usar solo en redes seguras)." } }, "zones": { @@ -83,7 +105,24 @@ "max_area": { "description": "Área máxima del cuadro delimitador (píxeles o porcentaje) permitida para este tipo de objeto. Puede expresarse en píxeles (entero) o como porcentaje (decimal entre 0,000001 y 0,99).", "label": "Área máxima del objeto" - } + }, + "description": "Filtros para aplicar a los objetos dentro de esta zona. Se utilizan para reducir los falsos positivos o restringir qué objetos se consideran presentes en la zona." + }, + "objects": { + "description": "Lista de tipos de objetos (del mapa de etiquetas) que pueden activar esta zona. Puede ser una cadena de texto o una lista de cadenas. Si está vacío, se consideran todos los objetos." + }, + "description": "Las zonas le permiten definir un área específica del fotograma, de modo que pueda determinar si un objeto se encuentra o no dentro de un área determinada.", + "speed_threshold": { + "description": "Velocidad mínima (en unidades del mundo real, si se han configurado distancias) requerida para que un objeto se considere presente en la zona. Se utiliza para los disparadores de zona basados en la velocidad." + }, + "friendly_name": { + "description": "Un nombre fácil de usar para la zona, que se muestra en la interfaz de usuario de Frigate. Si no se especifica, se utilizará una versión formateada del nombre de la zona." + }, + "inertia": { + "description": "Número de fotogramas consecutivos en los que se debe detectar un objeto dentro de la zona antes de considerarlo presente. Ayuda a filtrar las detecciones transitorias." + }, + "loitering_time": { + "description": "Número de segundos que un objeto debe permanecer en la zona para ser considerado como merodeo. Establezca en 0 para desactivar la detección de merodeo." } }, "objects": { @@ -100,7 +139,151 @@ "use_snapshot": { "label": "Usar instantáneas", "description": "Usar instantáneas de objetos en lugar de miniaturas para la generación de descripciones de GenAI." + }, + "send_triggers": { + "after_significant_updates": { + "description": "Envía una solicitud a GenAI tras un número especificado de actualizaciones significativas del objeto rastreado." + }, + "description": "Define cuándo se deben enviar los fotogramas a GenAI (al finalizar, después de las actualizaciones, etc.)." + }, + "required_zones": { + "description": "Zonas en las que deben ubicarse los objetos para ser elegibles para la generación de descripciones con GenAI." } } + }, + "mqtt": { + "label": "MQTT", + "required_zones": { + "description": "Zonas en las que debe entrar un objeto para que se publique una imagen MQTT." + } + }, + "notifications": { + "email": { + "label": "Email de notificacion" + } + }, + "audio_transcription": { + "description": "Configuración para la transcripción de audio en vivo y de voz, utilizada para eventos y subtítulos en tiempo real.", + "enabled": { + "label": "Habilitar transcripción" + } + }, + "motion": { + "skip_motion_threshold": { + "description": "Si se establece en un valor entre 0,0 y 1,0, y más de esta fracción de la imagen cambia en un solo fotograma, el detector no devolverá cuadros de movimiento y se recalibrará inmediatamente. Esto puede ahorrar recursos de CPU y reducir los falsos positivos durante tormentas eléctricas, tempestades, etc., aunque podría pasar por alto eventos reales, como el seguimiento automático de un objeto por parte de una cámara PTZ. La disyuntiva está entre descartar unos cuantos megabytes de grabaciones o revisar un par de clips cortos. Deje este parámetro sin establecer (None) para desactivar esta función." + }, + "lightning_threshold": { + "description": "Umbral para detectar e ignorar breves picos de luz (un valor menor indica mayor sensibilidad; valores entre 0,3 y 1,0). Esto no impide por completo la detección de movimiento; Simplemente provoca que el detector deje de analizar fotogramas adicionales una vez que se supera el umbral. Durante estos eventos aún se realizan grabaciones basadas en el movimiento." + }, + "threshold": { + "description": "Umbral de diferencia de píxeles utilizado por el detector de movimiento; los valores más altos reducen la sensibilidad (rango 1-255)." + } + }, + "lpr": { + "enhancement": { + "description": "Nivel de mejora (0-10) que se aplicará a los recortes de matrículas antes del OCR; los valores más altos no siempre mejoran los resultados, y los niveles superiores a 5 podrían funcionar únicamente con matrículas capturadas de noche, por lo que deben utilizarse con precaución." + }, + "expire_time": { + "description": "Tiempo en segundos tras el cual una matrícula no detectada caduca en el sistema de seguimiento (solo para cámaras LPR dedicadas)." + } + }, + "detect": { + "fps": { + "description": "Fotogramas por segundo deseados para ejecutar la detección; los valores más bajos reducen el uso de la CPU (el valor recomendado es 5; establezca un valor superior —como máximo de 10— únicamente si realiza el seguimiento de objetos que se mueven con extrema rapidez)." + }, + "min_initialized": { + "description": "Número de detecciones consecutivas requeridas antes de crear un objeto rastreado. Auméntelo para reducir las inicializaciones falsas. El valor predeterminado es los FPS divididos por 2." + }, + "height": { + "description": "Altura (en píxeles) de los fotogramas utilizados para la transmisión de detección; déjelo vacío para utilizar la resolución nativa de la transmisión." + }, + "width": { + "description": "Ancho (en píxeles) de los fotogramas utilizados para la transmisión de detección; déjelo vacío para utilizar la resolución nativa de la transmisión." + }, + "stationary": { + "description": "Configuración para detectar y gestionar objetos que permanecen inmóviles durante un periodo de tiempo." + } + }, + "record": { + "motion": { + "description": "Número de días para conservar las grabaciones activadas por movimiento, independientemente de los objetos rastreados. Establézcalo en 0 si solo desea conservar las grabaciones de alertas y detecciones." + }, + "continuous": { + "description": "Número de días para conservar las grabaciones, independientemente de los objetos rastreados o del movimiento. Establézcalo en 0 si solo desea conservar las grabaciones de alertas y detecciones." + }, + "detections": { + "pre_capture": { + "description": "Número de segundos antes del evento de detección que se incluirán en la grabación." + }, + "post_capture": { + "description": "Número de segundos después del evento de detección que se incluirán en la grabación." + } + }, + "alerts": { + "pre_capture": { + "description": "Número de segundos antes del evento de detección que se incluirán en la grabación." + }, + "post_capture": { + "description": "Número de segundos después del evento de detección que se incluirán en la grabación." + } + } + }, + "ui": { + "dashboard": { + "description": "Alterna si esta cámara es visible en toda la interfaz de usuario de Frigate. Desactivar esta opción requerirá editar manualmente la configuración para volver a visualizar esta cámara en la interfaz." + } + }, + "live": { + "height": { + "description": "Altura (en píxeles) para renderizar la transmisión en vivo de jsmpeg en la interfaz web; debe ser <= a la altura de la transmisión de detección." + }, + "description": "Configuraciones utilizadas por la interfaz web para controlar la selección, la resolución y la calidad de transmisiónes en vivo." + }, + "review": { + "description": "Configuraciones que controlan las alertas, las detecciones y los resúmenes de revisión de GenAI utilizados por la interfaz de usuario y el almacenamiento de esta cámara.", + "alerts": { + "required_zones": { + "description": "Zonas en las que debe entrar un objeto para ser considerado una alerta; dejar vacío para permitir cualquier zona." + }, + "labels": { + "description": "Lista de etiquetas de objetos que califican como alertas (por ejemplo: car, person)." + } + }, + "detections": { + "required_zones": { + "description": "Zonas en las que debe entrar un objeto para ser considerado detectado; dejar vacío para permitir cualquier zona." + }, + "description": "Configuración para determinar qué objetos rastreados generan detecciones (no alertas) y cómo se retienen dichas detecciones." + }, + "genai": { + "image_source": { + "description": "Fuente de las imágenes enviadas a GenAI ('preview' o 'recordings'); La opción 'recordings' utiliza fotogramas de mayor calidad, pero requiere más tokens." + }, + "additional_concerns": { + "description": "Una lista de preocupaciones o notas adicionales que GenAI debería tener en cuenta al evaluar la actividad en esta cámara." + }, + "activity_context_prompt": { + "description": "Instrucción personalizada que describe qué constituye y qué no una actividad sospechosa, con el fin de proporcionar contexto para los resúmenes generados por GenAI." + }, + "description": "Controla el uso de IA generativa (GenAI) para la elaboración de descripciones y resúmenes de elementos de revisión.", + "debug_save_thumbnails": { + "description": "Guarde las miniaturas que se envían al proveedor de GenAI para su depuración y revisión." + } + } + }, + "birdseye": { + "description": "Configuración para la vista compuesta Birdseye, que combina las transmisiones de múltiples cámaras en una sola vista." + }, + "ffmpeg": { + "retry_interval": { + "description": "Segundos de espera antes de intentar reconectar la transmisión de una cámara tras un fallo. El valor predeterminado es 10." + }, + "path": { + "description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"5.0\" o \"7.0\")." + }, + "output_args": { + "description": "Argumentos de salida predeterminados utilizados para diferentes roles de FFmpeg, tales como detección y grabación." + }, + "description": "Configuración de FFmpeg, incluyendo la ruta del binario, argumentos, opciones de aceleración por hardware y argumentos de salida por rol." } } diff --git a/web/public/locales/es/config/global.json b/web/public/locales/es/config/global.json index 53cdd0aa6..1fc7df1cc 100644 --- a/web/public/locales/es/config/global.json +++ b/web/public/locales/es/config/global.json @@ -70,11 +70,45 @@ "cookie_secure": { "label": "Flag de cookie segura", "description": "Establece el flag de seguridad en la cookie de autenticación; debe ser 'true' cuando se utilice TLS." + }, + "failed_login_rate_limit": { + "label": "Limite de intento de acceso fallidos" + }, + "session_length": { + "description": "Duración de la sesión en segundos para sesiones de JWT." + }, + "admin_first_time_login": { + "description": "Cuando se establece en true, la interfaz de usuario puede mostrar un enlace de ayuda en la página de inicio de sesión, informando a los usuarios sobre cómo iniciar sesión tras el restablecimiento de la contraseña de administrador. " + }, + "refresh_time": { + "description": "Cuando a una sesión le queden menos de esta cantidad de segundos para expirar, actualícela para restablecer su duración completa." } }, "onvif": { "profile": { - "label": "Perfil ONVIF" + "label": "Perfil ONVIF", + "description": "Perfil multimedia ONVIF específico que se utilizará para el control PTZ, identificado por token o nombre. Si no se especifica, se selecciona automáticamente el primer perfil con una configuración PTZ válida." + }, + "autotracking": { + "zoom_factor": { + "description": "Controla el nivel de zoom en los objetos rastreados. Los valores más bajos mantienen una mayor parte de la escena a la vista; los valores más altos acercan la imagen, pero pueden provocar la pérdida del rastreo. Valores entre 0.1 y 0.75." + }, + "calibrate_on_startup": { + "description": "Mida la velocidad de los motores PTZ al encenderlos para mejorar la precisión del seguimiento. Frigate actualizará la configuración con los `movement_weights` tras la calibración." + }, + "description": "Realice un seguimiento automático de objetos en movimiento y manténgalos centrados en el encuadre mediante movimientos de cámara PTZ.", + "zooming": { + "description": "Control del comportamiento del zoom: deshabilitado (solo panorámica/inclinación), absoluto (mayor compatibilidad) o relativo (panorámica/inclinación/zoom simultáneos)." + }, + "return_preset": { + "description": "Nombre del preajuste ONVIF configurado en el firmware de la cámara al que regresar una vez finalizado el seguimiento." + }, + "timeout": { + "description": "Espere esta cantidad de segundos después de perder el seguimiento antes de devolver la cámara a la posición preestablecida." + } + }, + "tls_insecure": { + "description": "Omitir la verificación TLS y deshabilitar la autenticación digest para ONVIF (no seguro; usar solo en redes seguras)." } }, "objects": { @@ -91,7 +125,19 @@ "use_snapshot": { "label": "Usar instantáneas", "description": "Usar instantáneas de objetos en lugar de miniaturas para la generación de descripciones de GenAI." + }, + "send_triggers": { + "after_significant_updates": { + "description": "Envía una solicitud a GenAI tras un número especificado de actualizaciones significativas del objeto rastreado." + }, + "description": "Define cuándo se deben enviar los fotogramas a GenAI (al finalizar, después de las actualizaciones, etc.)." + }, + "required_zones": { + "description": "Zonas en las que deben ubicarse los objetos para ser elegibles para la generación de descripciones con GenAI." } + }, + "track": { + "description": "Lista de etiquetas de objetos a rastrear para todas las cámaras; puede anularse por cámara." } }, "detectors": { @@ -107,6 +153,310 @@ "api_key": { "label": "Clave de API de DeepStack (si es necesaria)" } + }, + "type": { + "label": "Tipo" + }, + "label": "Detector de hardware", + "cpu": { + "label": "CPU", + "num_threads": { + "label": "Número de hilos para detección" + }, + "description": "Detector TFLite de CPU que ejecuta modelos de TensorFlow Lite en la CPU del host sin aceleración por hardware. No recomendado." + }, + "axengine": { + "label": "Motor AX NPU" + }, + "teflon_tfl": { + "description": "Detector de delegados Teflon para TFLite, que utiliza la biblioteca de delegados Mesa Teflon para acelerar la inferencia en las GPU compatibles." + }, + "synaptics": { + "description": "Detector NPU de Synaptics para modelos en formato .synap, utilizando el Synap SDK en hardware de Synaptics." + }, + "zmq": { + "description": "Detector ZMQ IPC que descarga la inferencia a un proceso externo a través de un punto de conexión IPC de ZeroMQ." + }, + "hailo8l": { + "description": "Detector Hailo-8/Hailo-8L que utiliza modelos HEF y el SDK HailoRT para la inferencia en hardware Hailo." + }, + "onnx": { + "description": "Detector ONNX para ejecutar modelos ONNX; utilizará los backends de aceleración disponibles (CUDA/ROCm/OpenVINO) cuando estén disponibles." + }, + "description": "Configuración para detectores de objetos (backends de CPU, GPU y ONNX) y cualquier ajuste del modelo específico del detector.", + "openvino": { + "description": "Detector OpenVINO para CPU AMD e Intel, GPU Intel y hardware VPU Intel." + }, + "tensorrt": { + "description": "Detector TensorRT para dispositivos Nvidia Jetson que utiliza motores TensorRT serializados para una inferencia acelerada." + }, + "degirum": { + "description": "Detector DeGirum para ejecutar modelos a través de la nube de DeGirum o servicios de inferencia local." + }, + "rknn": { + "description": "Detector RKNN para NPUs de Rockchip; ejecuta modelos compilados para RKNN en hardware de Rockchip." + } + }, + "database": { + "label": "Base de datos", + "description": "Configuración de la base de datos SQLite utilizada por Frigate para almacenar los metadatos de los objetos rastreados y las grabaciones." + }, + "mqtt": { + "label": "MQTT", + "port": { + "label": "Puerto MQTT" + }, + "tls_client_cert": { + "label": "Certificado cliente" + }, + "description": "Configuración para conectar y publicar telemetría, instantáneas y detalles de eventos en un broker MQTT.", + "topic_prefix": { + "description": "Prefijo del tema MQTT para todos los temas de Frigate; debe ser único si se ejecutan múltiples instancias." + }, + "client_id": { + "description": "Identificador de cliente utilizado al conectarse al broker MQTT; debe ser único para cada instancia." + } + }, + "notifications": { + "email": { + "label": "Email de notificacion" + } + }, + "networking": { + "ipv6": { + "label": "Configuración IPV6" + }, + "listen": { + "internal": { + "label": "Puerto interno" + }, + "external": { + "label": "Puerto externo", + "description": "Puerto externo de escucha para Frigate (por defecto 8791)." + }, + "description": "Configuración de los puertos de escucha internos y externos. Esto es para usuarios avanzados. Para la mayoría de los casos de uso, se recomienda modificar la sección de puertos de su configuración de Docker Compose." + } + }, + "proxy": { + "label": "Proxy", + "separator": { + "label": "Carácter de separación" + }, + "default_role": { + "description": "Rol predeterminado asignado a los usuarios autenticados por proxy cuando no se aplica ningún mapeo de roles (administrador o espectador)." + }, + "description": "Configuración para integrar Frigate detrás de un proxy inverso que transmite encabezados de usuario autenticados.", + "header_map": { + "description": "Mapear los encabezados de proxy entrantes a los campos de usuario y rol de Frigate para la autenticación basada en proxy.", + "role": { + "description": "Encabezado que contiene el rol o los grupos del usuario autenticado provenientes del proxy ascendente." + } + } + }, + "telemetry": { + "label": "Telemetria", + "stats": { + "intel_gpu_stats": { + "label": "Estadísticas GPU Intel", + "description": "Habilitar la recopilación de estadísticas de la GPU Intel si hay una GPU Intel presente." + }, + "network_bandwidth": { + "label": "Ancho de banda" + }, + "amd_gpu_stats": { + "label": "Estadísticas GPU Amd", + "description": "Habilitar la recopilación de estadísticas de la GPU AMD si hay una GPU AMD presente." + }, + "intel_gpu_device": { + "description": "Identificador de dispositivo utilizado al tratar las GPU Intel como SR-IOV para corregir las estadísticas de la GPU." + } + }, + "version_check": { + "description": "Habilite una verificación saliente para detectar si hay disponible una versión más reciente de Frigate." + } + }, + "ui": { + "timezone": { + "label": "Uso horario", + "description": "Zona horaria opcional que se mostrará en la interfaz de usuario (si no se especifica, se utilizará la hora local del navegador)." + }, + "unit_system": { + "label": "Unidad de sistema", + "description": "Sistema de unidades para la visualización (métrico o imperial) utilizado en la interfaz de usuario y en MQTT." + } + }, + "audio_transcription": { + "description": "Configuración para la transcripción de audio en vivo y de voz, utilizada para eventos y subtítulos en tiempo real.", + "language": { + "description": "Código de idioma utilizado para la transcripción/traducción (por ejemplo, 'es' para Español). Consulte https://whisper-api.com/docs/languages/ para ver los códigos de idioma compatibles." + }, + "enabled": { + "description": "Habilitar o deshabilitar la transcripción automática de audio para todas las cámaras; puede anularse por cámara." + } + }, + "motion": { + "skip_motion_threshold": { + "description": "Si se establece en un valor entre 0,0 y 1,0, y más de esta fracción de la imagen cambia en un solo fotograma, el detector no devolverá cuadros de movimiento y se recalibrará inmediatamente. Esto puede ahorrar recursos de CPU y reducir los falsos positivos durante tormentas eléctricas, tempestades, etc., aunque podría pasar por alto eventos reales, como el seguimiento automático de un objeto por parte de una cámara PTZ. La disyuntiva está entre descartar unos cuantos megabytes de grabaciones o revisar un par de clips cortos. Deje este parámetro sin establecer (None) para desactivar esta función." + }, + "lightning_threshold": { + "description": "Umbral para detectar e ignorar breves picos de luz (un valor menor indica mayor sensibilidad; valores entre 0,3 y 1,0). Esto no impide por completo la detección de movimiento; Simplemente provoca que el detector deje de analizar fotogramas adicionales una vez que se supera el umbral. Durante estos eventos aún se realizan grabaciones basadas en el movimiento." + }, + "threshold": { + "description": "Umbral de diferencia de píxeles utilizado por el detector de movimiento; los valores más altos reducen la sensibilidad (rango 1-255)." + }, + "enabled": { + "description": "Habilitar o deshabilitar la detección de movimiento para todas las cámaras; puede anularse para cada cámara individualmente." + } + }, + "lpr": { + "enhancement": { + "description": "Nivel de mejora (0-10) que se aplicará a los recortes de matrículas antes del OCR; los valores más altos no siempre mejoran los resultados, y los niveles superiores a 5 podrían funcionar únicamente con matrículas capturadas de noche, por lo que deben utilizarse con precaución." + }, + "expire_time": { + "description": "Tiempo en segundos tras el cual una matrícula no detectada caduca en el sistema de seguimiento (solo para cámaras LPR dedicadas)." + }, + "enabled": { + "description": "Habilitar o deshabilitar el reconocimiento de matrículas para todas las cámaras; puede anularse por cámara." + }, + "min_plate_length": { + "description": "Número mínimo de caracteres que debe contener una matrícula reconocida para ser considerada válida." + } + }, + "detect": { + "fps": { + "description": "Fotogramas por segundo deseados para ejecutar la detección; los valores más bajos reducen el uso de la CPU (el valor recomendado es 5; establezca un valor superior —como máximo de 10— únicamente si realiza el seguimiento de objetos que se mueven con extrema rapidez)." + }, + "min_initialized": { + "description": "Número de detecciones consecutivas requeridas antes de crear un objeto rastreado. Auméntelo para reducir las inicializaciones falsas. El valor predeterminado es los FPS divididos por 2." + }, + "height": { + "description": "Altura (en píxeles) de los fotogramas utilizados para la transmisión de detección; déjelo vacío para utilizar la resolución nativa de la transmisión." + }, + "width": { + "description": "Ancho (en píxeles) de los fotogramas utilizados para la transmisión de detección; déjelo vacío para utilizar la resolución nativa de la transmisión." + }, + "stationary": { + "description": "Configuración para detectar y gestionar objetos que permanecen inmóviles durante un periodo de tiempo." + }, + "enabled": { + "description": "Habilitar o deshabilitar la detección de objetos para todas las cámaras; puede anularse para cada cámara individualmente." + } + }, + "record": { + "motion": { + "description": "Número de días para conservar las grabaciones activadas por movimiento, independientemente de los objetos rastreados. Establézcalo en 0 si solo desea conservar las grabaciones de alertas y detecciones." + }, + "continuous": { + "description": "Número de días para conservar las grabaciones, independientemente de los objetos rastreados o del movimiento. Establézcalo en 0 si solo desea conservar las grabaciones de alertas y detecciones." + }, + "detections": { + "pre_capture": { + "description": "Número de segundos antes del evento de detección que se incluirán en la grabación." + }, + "post_capture": { + "description": "Número de segundos después del evento de detección que se incluirán en la grabación." + } + }, + "alerts": { + "pre_capture": { + "description": "Número de segundos antes del evento de detección que se incluirán en la grabación." + }, + "post_capture": { + "description": "Número de segundos después del evento de detección que se incluirán en la grabación." + } + } + }, + "camera_ui": { + "dashboard": { + "description": "Alterna si esta cámara es visible en toda la interfaz de usuario de Frigate. Desactivar esta opción requerirá editar manualmente la configuración para volver a visualizar esta cámara en la interfaz." + } + }, + "live": { + "description": "Configuración para controlar la resolución y la calidad de la transmisión en vivo de jsmpeg. Esto no afecta a las cámaras retransmitidas que utilizan go2rtc para la visualización en vivo.", + "height": { + "description": "Altura (en píxeles) para renderizar la transmisión en vivo de jsmpeg en la interfaz web; debe ser <= a la altura de la transmisión de detección." + } + }, + "semantic_search": { + "model": { + "description": "El modelo de embeddings a utilizar para la búsqueda semántica (por ejemplo, 'jinav1'), o el nombre de un proveedor de GenAI con el rol de embeddings." + } + }, + "review": { + "alerts": { + "required_zones": { + "description": "Zonas en las que debe entrar un objeto para ser considerado una alerta; dejar vacío para permitir cualquier zona." + }, + "labels": { + "description": "Lista de etiquetas de objetos que califican como alertas (por ejemplo: car, person)." + } + }, + "detections": { + "required_zones": { + "description": "Zonas en las que debe entrar un objeto para ser considerado detectado; dejar vacío para permitir cualquier zona." + }, + "description": "Configuración para determinar qué objetos rastreados generan detecciones (no alertas) y cómo se retienen dichas detecciones." + }, + "genai": { + "image_source": { + "description": "Fuente de las imágenes enviadas a GenAI ('preview' o 'recordings'); La opción 'recordings' utiliza fotogramas de mayor calidad, pero requiere más tokens." + }, + "additional_concerns": { + "description": "Una lista de preocupaciones o notas adicionales que GenAI debería tener en cuenta al evaluar la actividad en esta cámara." + }, + "activity_context_prompt": { + "description": "Instrucción personalizada que describe qué constituye y qué no una actividad sospechosa, con el fin de proporcionar contexto para los resúmenes generados por GenAI." + }, + "description": "Controla el uso de IA generativa (GenAI) para la elaboración de descripciones y resúmenes de elementos de revisión.", + "debug_save_thumbnails": { + "description": "Guarde las miniaturas que se envían al proveedor de GenAI para su depuración y revisión." + } + } + }, + "birdseye": { + "description": "Configuración para la vista compuesta Birdseye, que combina las transmisiones de múltiples cámaras en una sola vista.", + "restream": { + "description": "Retransmita la salida de video de Birdseye como una transmisión en vivo RTSP; al habilitar esta opción, Birdseye se mantendrá en ejecución de forma continua." + }, + "layout": { + "max_cameras": { + "description": "Número máximo de cámaras a mostrar simultáneamente en Birdseye; muestra las cámaras más recientes." + } + } + }, + "ffmpeg": { + "retry_interval": { + "description": "Segundos de espera antes de intentar reconectar la transmisión de una cámara tras un fallo. El valor predeterminado es 10." + }, + "path": { + "description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"5.0\" o \"7.0\")." + }, + "output_args": { + "description": "Argumentos de salida predeterminados utilizados para diferentes roles de FFmpeg, tales como detección y grabación." + }, + "description": "Configuración de FFmpeg, incluyendo la ruta del binario, argumentos, opciones de aceleración por hardware y argumentos de salida por rol." + }, + "go2rtc": { + "description": "Configuración del servicio integrado de retransmisión go2rtc, utilizado para el relevo y la traducción de transmisiones en vivo." + }, + "genai": { + "description": "Configuración para los proveedores integrados de IA generativa (GenAI) utilizados para generar descripciones de objetos y resúmenes de reseñas.", + "api_key": { + "description": "Clave de API requerida por algunos proveedores (también puede configurarse mediante variables de entorno)." + }, + "base_url": { + "description": "URL base para proveedores autoalojados o compatibles (por ejemplo, una instancia de Ollama)." + }, + "model": { + "description": "El modelo del proveedor que se utilizará para generar descripciones o resúmenes." + } + }, + "face_recognition": { + "description": "Configuración para la detección y el reconocimiento facial en todas las cámaras; puede anularse por cámara." + }, + "camera_mqtt": { + "required_zones": { + "description": "Zonas en las que debe entrar un objeto para que se publique una imagen MQTT." } } } diff --git a/web/public/locales/es/config/groups.json b/web/public/locales/es/config/groups.json index d6b2b9d81..a8cb25b46 100644 --- a/web/public/locales/es/config/groups.json +++ b/web/public/locales/es/config/groups.json @@ -59,6 +59,15 @@ "global": { "retention": "Retención global", "events": "Eventos globales" + }, + "cameras": { + "events": "Evento", + "retention": "Retención" + } + }, + "ffmpeg": { + "cameras": { + "cameraFfmpeg": "Argumentos de FFmpeg específicos de la cámara" } } } diff --git a/web/public/locales/es/config/validation.json b/web/public/locales/es/config/validation.json index faf7032f8..b78ae972f 100644 --- a/web/public/locales/es/config/validation.json +++ b/web/public/locales/es/config/validation.json @@ -19,7 +19,8 @@ "ffmpeg": { "inputs": { "rolesUnique": "Cada rol solo puede asignarse a un flujo de entrada.", - "detectRequired": "Al menos un flujo de entrada debe tener asignado el rol 'detect'." + "detectRequired": "Al menos un flujo de entrada debe tener asignado el rol 'detect'.", + "hwaccelDetectOnly": "Solo el flujo de entrada con la función \"detect\" puede definir argumentos de aceleración por hardware." } }, "anyOf": "Debe coincidir con al menos uno de los esquemas permitidos", diff --git a/web/public/locales/es/objects.json b/web/public/locales/es/objects.json index 0fd02208a..fe4d16915 100644 --- a/web/public/locales/es/objects.json +++ b/web/public/locales/es/objects.json @@ -47,7 +47,7 @@ "carrot": "Zanahoria", "hot_dog": "Perrito caliente", "pizza": "Pizza", - "donut": "Donut", + "donut": "Rosquilla", "chair": "Silla", "couch": "Sofá", "potted_plant": "Planta en maceta", diff --git a/web/public/locales/es/views/classificationModel.json b/web/public/locales/es/views/classificationModel.json index ee6fc5ed1..0f5ec539b 100644 --- a/web/public/locales/es/views/classificationModel.json +++ b/web/public/locales/es/views/classificationModel.json @@ -12,12 +12,12 @@ }, "toast": { "success": { - "deletedCategory_one": "Clase Borrada", - "deletedCategory_many": "", - "deletedCategory_other": "", - "deletedImage_one": "Imágenes Borradas", - "deletedImage_many": "", - "deletedImage_other": "", + "deletedCategory_one": "Se eliminó {{count}} clase", + "deletedCategory_many": "Se eliminaron {{count}} clases", + "deletedCategory_other": "Se eliminaron {{count}} clases", + "deletedImage_one": "Se eliminó {{count}} imagen", + "deletedImage_many": "Se eliminaron {{count}} imágenes", + "deletedImage_other": "Se eliminaron {{count}} imágenes", "deletedModel_one": "Borrado con éxito {{count}} modelo", "deletedModel_many": "Borrados con éxito {{count}} modelos", "deletedModel_other": "Borrados con éxito {{count}} modelos", @@ -68,7 +68,7 @@ "details": { "scoreInfo": "La puntuación representa la confianza media de clasificación en todas las detecciones de este objeto.", "unknown": "Desconocido", - "none": "Ninguna" + "none": "Ninguno" }, "categorizeImage": "Clasificar Imagen", "menu": { diff --git a/web/public/locales/es/views/exports.json b/web/public/locales/es/views/exports.json index 1099d45c8..cc2306da0 100644 --- a/web/public/locales/es/views/exports.json +++ b/web/public/locales/es/views/exports.json @@ -22,17 +22,26 @@ "downloadVideo": "Descargar video", "editName": "Editar nombre", "deleteExport": "Eliminar exportación", - "assignToCase": "Añadir al caso" + "assignToCase": "Añadir al caso", + "removeFromCase": "Remover del contenedor" }, "headings": { "cases": "Casos", - "uncategorizedExports": "Exportaciones sin categorizar" + "uncategorizedExports": "Exportaciones sin Categorizar" }, "caseDialog": { "title": "Añadir al caso", "newCaseOption": "Crear nuevo caso", "nameLabel": "Nombre del caso", "description": "Elige un caso existente o crea uno nuevo.", - "selectLabel": "Caso" + "selectLabel": "Caso", + "descriptionLabel": "Descripción" + }, + "toolbar": { + "addExport": "Añadir Exportación" + }, + "deleteCase": { + "label": "Eliminar caso", + "desc": "¿Estás seguro de que quieres eliminar {{caseName}}?" } } diff --git a/web/public/locales/es/views/live.json b/web/public/locales/es/views/live.json index fa473384a..4bc98b5cb 100644 --- a/web/public/locales/es/views/live.json +++ b/web/public/locales/es/views/live.json @@ -17,7 +17,7 @@ "label": "Haz clic en el marco para centrar la cámara", "enable": "Habilitar clic para mover", "disable": "Deshabilitar clic para mover", - "enableWithZoom": "Activar clic para mover / arrastrar para hacer zoom" + "enableWithZoom": "Habilitar clic para mover / arrastrar para aumentar" }, "up": { "label": "Mover la cámara PTZ hacia arriba" diff --git a/web/public/locales/es/views/settings.json b/web/public/locales/es/views/settings.json index c6157a750..075b7131f 100644 --- a/web/public/locales/es/views/settings.json +++ b/web/public/locales/es/views/settings.json @@ -21,7 +21,7 @@ "menu": { "cameras": "Configuración de Cámara", "debug": "Depuración", - "ui": "Interfaz de usuario", + "ui": "Interfaz de Usuario", "classification": "Clasificación", "motionTuner": "Ajuste de movimiento", "masksAndZones": "Máscaras / Zonas", @@ -35,7 +35,22 @@ "cameraReview": "Revisar", "general": "General", "globalConfig": "Configuración Global", - "system": "Sistema" + "system": "Sistema", + "integrations": "Integraciones", + "uiSettings": "Configuración de Interfaz de Usuario", + "profiles": "Perfiles", + "globalDetect": "Detección de Objetos", + "globalRecording": "Grabación", + "globalSnapshots": "Instantáneas", + "globalFfmpeg": "FFmpeg", + "globalMotion": "Detección de Movimiento", + "globalObjects": "Objetos", + "globalReview": "Revisión", + "globalAudioEvents": "Eventos de Audio", + "globalLivePlayback": "Reproducción en Vivo", + "globalTimestampStyle": "Estilo de Marca de Tiempo", + "systemDatabase": "Base de Datos", + "systemAuthentication": "Autenticación" }, "dialog": { "unsavedChanges": { @@ -353,6 +368,9 @@ "allObjects": "Todos los objetos", "toast": { "success": "La zona ({{zoneName}}) ha sido guardada." + }, + "enabled": { + "description": "Indica si esta zona está activa y habilitada en la configuración. Si está deshabilitado, no puede ser habilitado por MQTT. Las zonas deshabilitadas se ignoran durante la ejecución." } }, "toast": { @@ -697,7 +715,7 @@ "cleanCopySnapshots": "clean_copy Instantáneas" }, "desc": "Enviar a Frigate+ requiere que tanto las capturas instantáneas como las capturas clean_copy estén habilitadas en tu configuración.", - "cleanCopyWarning": "Algunas cámaras tienen las instantáneas habilitadas pero tienen la copia limpia desactivada. Necesitas habilitar clean_copy en tu configuración de instantáneas para poder enviar imágenes de estas cámaras a Frigate+." + "cleanCopyWarning": "Algunas cámaras tienen las instantáneas deshabilitadas" }, "modelInfo": { "title": "Información del modelo", @@ -722,7 +740,8 @@ "error": "No se pudieron guardar los cambios en la configuración: {{errorMessage}}" }, "restart_required": "Es necesario reiniciar (se ha cambiado el modelo Frigate+)", - "unsavedChanges": "Cambios en la configuración de Frigate+ no guardados" + "unsavedChanges": "Cambios en la configuración de Frigate+ no guardados", + "description": "Frigate+ es un servicio de suscripción que proporciona acceso a funciones y capacidades adicionales para su instancia de Frigate, incluida la posibilidad de utilizar modelos de detección de objetos personalizados entrenados con sus propios datos. Puede gestionar la configuración de sus modelos de Frigate+ aquí." }, "enrichments": { "title": "Configuración de Enriquecimientos", @@ -1172,7 +1191,8 @@ "backToSettings": "Volver a configuración de la cámara", "streams": { "title": "Habilitar/deshabilitar cámaras", - "desc": "Desactiva temporalmente una cámara hasta que Frigate se reinicie. Desactivar una cámara detiene por completo el procesamiento de las transmisiones de Frigate. La detección, la grabación y la depuración no estarán disponibles.
Nota: Esto no desactiva las retransmisiones de go2rtc." + "desc": "Desactiva temporalmente una cámara hasta que Frigate se reinicie. Desactivar una cámara detiene por completo el procesamiento de las transmisiones de Frigate. La detección, la grabación y la depuración no estarán disponibles.
Nota: Esto no desactiva las retransmisiones de go2rtc.", + "enableDesc": "Deshabilita temporalmente una cámara habilitada hasta que Frigate se reinicie. Deshabilitar una cámara detiene por completo el procesamiento de las transmisiones de esa cámara por parte de Frigate. La detección, la grabación y la depuración no estarán disponibles.
Nota: Esto no deshabilita las retransmisiones de go2rtc." }, "cameraConfig": { "add": "Añadir cámara", @@ -1202,6 +1222,9 @@ "toast": { "success": "Cámara {{cameraName}} guardada correctamente" } + }, + "deleteCameraDialog": { + "description": "Eliminar una cámara borrará permanentemente todas las grabaciones, los objetos rastreados y la configuración de esa cámara. Es posible que sea necesario eliminar manualmente cualquier transmisión go2rtc asociada a esta cámara." } }, "cameraReview": { @@ -1253,12 +1276,133 @@ "maintenance": { "sync": { "verboseDesc": "Escribe una lista completa de archivos huérfanos en el disco para su revisión.", - "verbose": "Detallado" + "verbose": "Detallado", + "desc": "Frigate limpiará periódicamente los archivos multimedia según un cronograma regular, de acuerdo con su configuración de retención. Es normal ver algunos archivos huérfanos mientras Frigate se ejecuta. Utilice esta función para eliminar del disco los archivos multimedia huérfanos que ya no se referencian en la base de datos.", + "forceDesc": "Omitir el umbral de seguridad y completar la sincronización incluso si se eliminara más del 50% de los archivos." + }, + "regionGrid": { + "clearConfirmDesc": "No se recomienda borrar la cuadrícula de la región a menos que haya cambiado recientemente el tamaño del modelo de su detector o la posición física de su cámara y esté experimentando problemas de seguimiento de objetos. La cuadrícula se reconstruirá automáticamente con el tiempo a medida que se realice el seguimiento de los objetos. Es necesario reiniciar Frigate para que los cambios surtan efecto.", + "desc": "La cuadrícula de regiones es una optimización que aprende dónde suelen aparecer los objetos de diferentes tamaños en el campo de visión de cada cámara. Frigate utiliza estos datos para dimensionar de forma eficiente las regiones de detección. La cuadrícula se construye automáticamente a lo largo del tiempo a partir de los datos de los objetos rastreados." } }, "configForm": { "camera": { - "noCameras": "No hay cámaras disponibles" + "noCameras": "No hay cámaras disponibles", + "description": "Estos ajustes se aplican únicamente a esta cámara y anulan los ajustes globales." + }, + "genaiModel": { + "noModels": "No hay modelos disponibles" + }, + "global": { + "description": "Estos ajustes se aplican a todas las cámaras, a menos que se anulen en los ajustes específicos de cada cámara." + } + }, + "globalConfig": { + "title": "Configuración global", + "description": "Configura los ajustes globales que se aplican a todas las cámaras, a menos que se sobrescriban.", + "toast": { + "success": "Ajustes globales guardados con éxito", + "error": "Error al guardar los ajustes globales", + "validationError": "Error de validación" + } + }, + "cameraConfig": { + "title": "Configuración de cámara", + "description": "Configura los ajustes de cámaras individuales. Estos ajustes sobrescriben los valores globales predeterminados.", + "overriddenBadge": "Sobrescrito", + "resetToGlobal": "Restablecer al valor global", + "toast": { + "success": "Ajustes de cámara guardados con éxito", + "error": "Error al guardar los ajustes de cámara" + } + }, + "toast": { + "success": "Ajustes guardados con éxito", + "applied": "Ajustes aplicados con éxito", + "successRestartRequired": "Ajustes guardados con éxito. Reinicia Frigate para aplicar los cambios.", + "error": "Error al guardar los ajustes", + "validationError": "Error de validación: {{message}}", + "resetSuccess": "Restablecido a los valores globales predeterminados", + "resetError": "Error al restablecer los ajustes", + "saveAllSuccess_one": "Se ha guardado {{count}} sección con éxito.", + "saveAllSuccess_many": "Se han guardado las {{count}} secciones con éxito.", + "saveAllSuccess_other": "Se han guardado {{count}} secciones con éxito.", + "saveAllPartial_one": "Se ha guardado {{successCount}} de {{totalCount}} sección. {{failCount}} ha fallado.", + "saveAllPartial_many": "Se han guardado {{successCount}} de {{totalCount}} secciones. {{failCount}} han fallado.", + "saveAllPartial_other": "Se han guardado {{successCount}} de {{totalCount}} secciones. {{failCount}} han fallado.", + "saveAllFailure": "Error al guardar todas las secciones." + }, + "profiles": { + "title": "Perfiles", + "activeProfile": "Perfil activo", + "noActiveProfile": "Sin perfil activo", + "active": "Activo", + "activated": "Perfil '{{profile}}' activado", + "activateFailed": "Error al establecer el perfil", + "deactivated": "Perfil desactivado", + "noProfiles": "No hay perfiles definidos.", + "noOverrides": "Sin sobrescripciones", + "cameraCount_one": "{{count}} cámara", + "cameraCount_many": "{{count}} de cámaras", + "cameraCount_other": "{{count}} cámaras", + "columnCamera": "Cámara", + "columnOverrides": "Sobrescripciones del perfil", + "baseConfig": "Configuración base", + "addProfile": "Añadir perfil", + "newProfile": "Nuevo perfil", + "profileNamePlaceholder": "ej. Armado, Fuera de casa, Modo noche", + "friendlyNameLabel": "Nombre del perfil", + "profileIdLabel": "ID del perfil", + "profileIdDescription": "Identificador interno utilizado en la configuración y automatizaciones", + "nameInvalid": "Solo se permiten letras minúsculas, números y guiones bajos", + "nameDuplicate": "Ya existe un perfil con este nombre", + "error": { + "mustBeAtLeastTwoCharacters": "Debe tener al menos 2 caracteres", + "mustNotContainPeriod": "No debe contener puntos", + "alreadyExists": "Ya existe un perfil con este ID" + }, + "renameProfile": "Renombrar perfil", + "renameSuccess": "Perfil renombrado a '{{profile}}'", + "enabledDescription": "Los perfiles están habilitados. Cree un nuevo perfil a continuación, navegue a una sección de configuración de cámara para realizar sus cambios y guarde para que estos surtan efecto.", + "disabledDescription": "Los perfiles le permiten definir conjuntos con nombre de anulaciones de configuración de la cámara (por ejemplo: armado, fuera, noche) que pueden activarse bajo demanda." + }, + "go2rtcStreams": { + "renameStreamDesc": "Introduce un nuevo nombre para esta transmisión. Cambiar el nombre de una transmisión puede provocar fallos en las cámaras u otras transmisiones que hagan referencia a ella por su nombre.", + "addStreamDesc": "Introduce un nombre para la nueva transmisión. Este nombre se utilizará para hacer referencia a la transmisión en la configuración de su cámara.", + "description": "Gestione las configuraciones de transmisión de go2rtc para la retransmisión de cámaras. Cada transmisión tiene un nombre y una o más URL de origen.", + "deleteStreamConfirm": "¿Está seguro de que desea eliminar la transmisión \"{{streamName}}\"? Las cámaras que hagan referencia a esta transmisión podrían dejar de funcionar." + }, + "configMessages": { + "birdseye": { + "objectsModeDetectDisabled": "Birdseye está configurado en modo 'objects', pero la detección de objetos está desactivada para esta cámara. La cámara no aparecerá en Birdseye." + }, + "lpr": { + "globalDisabled": "El reconocimiento de matrículas no está habilitado a nivel global. Habilítelo en la configuración global para que funcione el reconocimiento de matrículas a nivel de cámara." + }, + "audio": { + "noAudioRole": "Ninguna transmisión tiene definido el rol de audio. Debe habilitar el rol de audio para que funcione la detección de audio." + }, + "faceRecognition": { + "personNotTracked": "El reconocimiento facial requiere que se realice el seguimiento del objeto 'person'. Asegúrese de que 'person' se encuentre en la lista de seguimiento de objetos." + }, + "audioTranscription": { + "audioDetectionDisabled": "La detección de audio no está habilitada para esta cámara. La transcripción de audio requiere que la detección de audio esté activa." + }, + "snapshots": { + "detectDisabled": "La detección de objetos está desactivada. Las instantáneas se generan a partir de los objetos rastreados y no se crearán." + }, + "detectors": { + "mixedTypes": "Todos los detectores deben ser del mismo tipo. Retire los detectores existentes para utilizar un tipo diferente." + }, + "review": { + "detectDisabled": "La detección de objetos está desactivada. Los elementos de revisión requieren objetos detectados para categorizar las alertas y detecciones." + } + }, + "resetToDefaultDescription": "Esto restablecerá todos los ajustes de esta sección a sus valores predeterminados. Esta acción no se puede deshacer.", + "resetToGlobalDescription": "Esto restablecerá la configuración de esta sección a los valores predeterminados globales. Esta acción no se puede deshacer.", + "detectionModel": { + "plusActive": { + "description": "Esta instancia está ejecutando un modelo de Frigate+. Seleccione o cambie su modelo en la configuración de Frigate+." } } } diff --git a/web/public/locales/es/views/system.json b/web/public/locales/es/views/system.json index 6c211a77c..e0a0157a1 100644 --- a/web/public/locales/es/views/system.json +++ b/web/public/locales/es/views/system.json @@ -45,10 +45,17 @@ "reviews": "Revisiones", "face_recognition": "Reconocimiento facial", "camera_activity": "Actividad de cámara", - "classification": "Clasificación" + "classification": "Clasificación", + "system": "Sistema", + "camera": "Cámara", + "all_cameras": "Todas las cámaras", + "cameras_count_one": "{{count}} Cámara", + "cameras_count_other": "{{count}} Cámaras", + "lpr": "Reconocimiento de matriculas" }, "count_other": "{{count}} mensajes", - "count_one": "{{count}} mensaje" + "count_one": "{{count}} mensaje", + "empty": "No se han capturado mensaje aún" } }, "title": "Sistema", @@ -99,7 +106,10 @@ "title": "Aviso de estadísticas Intel GPU", "message": "Estadísticas de GPU no disponibles", "description": "Este es un error conocido en las herramientas de informes de estadísticas de GPU de Intel (intel_gpu_top). El error se produce y muestra repetidamente un uso de GPU del 0 %, incluso cuando la aceleración de hardware y la detección de objetos se ejecutan correctamente en la (i)GPU. No se trata de un error de Frigate. Puede reiniciar el host para solucionar el problema temporalmente y confirmar que la GPU funciona correctamente. Esto no afecta al rendimiento." - } + }, + "npuTemperature": "Temperatura NPU", + "gpuCompute": "Cálculo GPU / Codificación", + "gpuTemperature": "Temperatura GPU" }, "otherProcesses": { "title": "Otros Procesos", @@ -136,7 +146,11 @@ }, "shm": { "title": "Asignación de SHM (memoria compartida)", - "warning": "El tamaño actual de SHM de {{total}}MB es muy pequeño. Aumente al menos a {{min_shm}}MB." + "warning": "El tamaño actual de SHM de {{total}}MB es muy pequeño. Aumente al menos a {{min_shm}}MB.", + "frameLifetime": { + "title": "Tiempo de vida del fotograma", + "description": "Cada cámara tiene espacio en la memoria compartida para {{frames}} cuadros. Si la velocidad de cuadros de la cámara es alta, cada cuadro se guarda aproximadamente {{lifetime}} antes de ser sobreescrito." + } } }, "cameras": { @@ -174,7 +188,8 @@ "cameraDetect": "{{camName}} detectar", "cameraFramesPerSecond": "{{camName}} cuadros por segundo", "cameraDetectionsPerSecond": "{{camName}} detecciones por segundo", - "overallSkippedDetectionsPerSecond": "detecciones omitidas por segundo totales" + "overallSkippedDetectionsPerSecond": "detecciones omitidas por segundo totales", + "cameraGpu": "{{camName}} GPU" }, "toast": { "success": { @@ -183,6 +198,17 @@ "error": { "unableToProbeCamera": "No se pudo sondear la cámara: {{errorMessage}}" } + }, + "connectionQuality": { + "excellent": "Excelente", + "poor": "Debil", + "title": "Calidad de la conexión", + "fps": "Cuadros por segundo", + "expectedFps": "Cuadros por segundo esperados", + "reconnectsLastHour": "Reconexiones (última hora)", + "unusable": "No usable", + "fair": "Normal", + "stallsLastHour": "Bloqueos (última hora)" } }, "lastRefreshed": "Última actualización: ", @@ -221,6 +247,7 @@ "detectIsSlow": "{{detect}} es lento ({{speed}} ms)", "cameraIsOffline": "{{camera}} está desconectada", "detectIsVerySlow": "{{detect}} es muy lento ({{speed}} ms)", - "shmTooLow": "Asignación de /dev/shm ({{total}} MB) debe aumentarse al menos a {{min}} MB." + "shmTooLow": "Asignación de /dev/shm ({{total}} MB) debe aumentarse al menos a {{min}} MB.", + "debugReplayActive": "Sesión de depuración activa" } } diff --git a/web/public/locales/et/audio.json b/web/public/locales/et/audio.json index b0dfec660..541ffa88c 100644 --- a/web/public/locales/et/audio.json +++ b/web/public/locales/et/audio.json @@ -113,5 +113,165 @@ "quack": "Prääksumine", "goose": "Hani", "honk": "Kaagatamine", - "wild_animals": "Metsloomad" + "wild_animals": "Metsloomad", + "roaring_cats": "Möirgavad kassid", + "roar": "Möirgamine", + "chirp": "Sirisemine", + "squawk": "Prääksatamine", + "pigeon": "Tuvi", + "coo": "Kudrutamine", + "crow": "Vares", + "caw": "Kraaksumine", + "owl": "Öökull", + "hoot": "Huikamine", + "flapping_wings": "Tiibade laperdamine", + "buzz": "Sumisemine", + "frog": "Konn", + "croak": "Krooksumine", + "snake": "Madu", + "rattle": "Kõristamine/lõgistamine", + "whale_vocalization": "Vaalaskala häälitsused", + "music": "Muusika", + "musical_instrument": "Pill", + "plucked_string_instrument": "Keelpill", + "guitar": "Kitarr", + "electric_guitar": "Elektrikitarr", + "bass_guitar": "Basskitarr", + "acoustic_guitar": "Akustiline kitarr", + "sitar": "Sitar", + "mandolin": "Mandoliin", + "banjo": "Bändžo", + "zither": "Kannel/tsitter", + "ukulele": "Ukulele", + "piano": "Klaver", + "electric_piano": "Elektriklaver", + "organ": "Orel", + "electronic_organ": "Elektriorel", + "hammond_organ": "Hammond-orel", + "synthesizer": "Süntesaator", + "sampler": "Sämpler", + "harpsichord": "Klavessiin", + "percussion": "Löökriistad", + "drum_kit": "Trummikomplekt", + "bass_drum": "Basstrumm", + "tambourine": "Tamburiin", + "glockenspiel": "Ksülofon", + "vibraphone": "Vibrafon (metalltorudega ksülofon)", + "marimba": "Marimbafon", + "tubular_bells": "Torukellad", + "gong": "Gong", + "orchestra": "Orkester", + "cello": "Tšello", + "pizzicato": "Pizzicato (poogenpilli sõrmega mängimine)", + "violin": "Viiul", + "string_section": "Keelpillid", + "trombone": "Tromboon", + "trumpet": "Trompet", + "french_horn": "Metsasarv", + "brass_instrument": "Puhkpillid", + "double_bass": "Kontrabass", + "wind_instrument": "Puhkpill", + "flute": "Flööt", + "saxophone": "Saksofon", + "clarinet": "Klarnet", + "harp": "Harf", + "bell": "Kellad", + "church_bell": "Kirikukell", + "jingle_bell": "Aisakell", + "bicycle_bell": "Rattakell", + "tuning_fork": "Helihark/kammertoon", + "bagpipes": "Torupillid", + "didgeridoo": "Didžeriduu", + "pop_music": "Popmuusika", + "hip_hop_music": "Hiphop muusika", + "rock_music": "Rokkmuusika", + "beatboxing": "Beatbox", + "heavy_metal": "Hevimuusika", + "punk_rock": "Punkrokk", + "grunge": "Grunge", + "progressive_rock": "Progressiivne rokk", + "rhythm_and_blues": "Rütmibluus", + "soul_music": "Soulmuusika", + "reggae": "Reggae", + "country": "Kantrimuusika", + "funk": "Funkmuusika", + "folk_music": "Rahvamuusika", + "middle_eastern_music": "Lähis-Ida muusika", + "jazz": "Džäss", + "disco": "Disko", + "classical_music": "Klassikaline muusika", + "opera": "Ooper", + "electronic_music": "Elektrooniline muusika", + "house_music": "House-muusika", + "techno": "Tekno", + "dubstep": "Dubstep", + "drum_and_bass": "Drum and Bass", + "electronic_dance_music": "Elektrooniline tantsumuusika", + "music_of_latin_america": "Ladina-Ameerika muusika", + "salsa_music": "Salsa", + "flamenco": "Flamenko", + "blues": "Bluus", + "music_for_children": "Lastemuusika", + "new-age_music": "New Age muusika", + "vocal_music": "Laulmine", + "a_capella": "A Capella", + "music_of_africa": "Aafrika muusika", + "afrobeat": "Afrobeat", + "christian_music": "Kristlik muusika", + "gospel_music": "Gospelmuusika", + "music_of_asia": "Aasia muusika", + "music_of_bollywood": "Bollywoodi muusika", + "ska": "Ska", + "carnatic_music": "Karnataka muusika", + "trance_music": "Trance muusika", + "ambient_music": "Ambient muusika", + "electronica": "Electronica", + "swing_music": "Svingmuusika", + "bluegrass": "Bluegrass", + "psychedelic_rock": "Psühhedeelne rokk", + "rock_and_roll": "Rock'n'roll", + "scratching": "Kriipimine/kraapimine", + "theremin": "Teremin", + "accordion": "Akordion", + "harmonica": "Suupill", + "wind_chime": "Tuulekell", + "chime": "Kelluke", + "traditional_music": "Traditsiooniline muusika", + "independent_music": "Sõltumatu muusika", + "song": "Laul", + "background_music": "Taustamuusika", + "lullaby": "Hällilaul", + "christmas_music": "Jõulumuusika", + "video_game_music": "Videomängude muusika", + "dance_music": "Tantsumuusika", + "wedding_music": "Pulmamuusika", + "happy_music": "Rõõmus muusika", + "sad_music": "Kurb muusika", + "tender_music": "Tundeline muusika", + "angry_music": "Vihane muusika", + "exciting_music": "Põnev muusika", + "scary_music": "Hirmutav muusika", + "wind": "Tuul", + "thunderstorm": "Äikesetorm", + "thunder": "Kõu/äike", + "water": "Vesi", + "rain": "Vihm", + "raindrop": "Vihmapiisk", + "spray": "Pritsimine", + "pump": "Pumpamine", + "stir": "Segamine/nihelemine", + "boiling": "Keemine", + "sonar": "Kajalood", + "arrow": "Nool", + "whoosh": "Vuhh/vuhisemine", + "thump": "Potsatus/mütsatus", + "thunk": "Põmakas", + "doorbell": "Uksekell", + "traffic_noise": "Liiklusmüra", + "rail_transport": "Raudteetransport", + "train_whistle": "Rongivile", + "sailboat": "Purjekas", + "soundtrack_music": "Filmimuusika", + "jingle": "Kõlisemine/tilisemine", + "theme_music": "Tunnusmuusika" } diff --git a/web/public/locales/et/components/filter.json b/web/public/locales/et/components/filter.json index 0df74f6d0..316aeebe2 100644 --- a/web/public/locales/et/components/filter.json +++ b/web/public/locales/et/components/filter.json @@ -4,13 +4,16 @@ "toast": { "error": "Jälgitavate objektide kustutamine ei õnnestunud: {{errorMessage}}", "success": "Jälgitavate objektide kustutamine õnnestus." - } + }, + "title": "Kinnita kustutamine", + "desc": "Nende {{objectLength}} jälgitava objekti kustutamine eemaldab tõmmise salvestuse, kõik seotud salvestatud sissekanded ja kõik seotud objekti elutsükli kirjed. Ajaloo vaates salvestatud videomaterjali nende jälgitavate objektide kohta EI kustutata.

Kas soovid kindlasti jätkata?

Hoia Shift-klahvi all, et seda teateakent tulevikus vahele jätta." }, "cameras": { "all": { "title": "Kõik kaamerad", "short": "Kaamerad" - } + }, + "label": "Kaamerate filter" }, "labels": { "all": { @@ -38,7 +41,8 @@ "defaultView": { "title": "Vaikimisi vaade", "summary": "Kokkuvõte", - "unfilteredGrid": "Filtreerimata ruudustik" + "unfilteredGrid": "Filtreerimata ruudustik", + "desc": "Kui filtreid pole valitud, näita viimaste jälgitud objektide kokkuvõtet sildi kohta või näita filtreerimata ruudustikuvaadet." }, "gridColumns": { "title": "Ruudustiku veerud", @@ -48,16 +52,26 @@ "options": { "thumbnailImage": "Pisipilt", "description": "Kirjeldus" - } + }, + "label": "Otsinguallikas", + "desc": "Vali, kas soovid otsida sinu jälgitavate objektide pisipilte või kirjeldusi." + } + }, + "date": { + "selectDateBy": { + "label": "Vali kuupäev, mille alusel tahad filtreerida" } } }, "logSettings": { "loading": { - "title": "Laadin" + "title": "Laadin", + "desc": "Kui logipaneeli vaade on keritud lõpuni, siis kuvatakse lisanduvad logikirjed automaatselt kohe." }, "disableLogStreaming": "Keela logi voogedastus", - "allLogs": "Kõik logid" + "allLogs": "Kõik logid", + "label": "Logimistase filtri jaoks", + "filterBySeverity": "Kriitilisus filtri jaoks" }, "classes": { "label": "Klassid", @@ -83,6 +97,44 @@ "estimatedSpeed": "Hinnanguline kiirus: ({{unit}})", "features": { "label": "Omadused", - "hasSnapshot": "Leidub hetkvõte" + "hasSnapshot": "Leidub hetkvõte", + "hasVideoClip": "Videoklipp on olemas", + "submittedToFrigatePlus": { + "label": "Saadetud teenusesse Frigate+", + "tips": "Sa pead filtreerima jälgitavaid objekte, millel on tõmmis.

Kui jälgitaval objektil pole tõmmist, siis teda Frigate+ teenusesse saata ei saa." + } + }, + "attributes": { + "label": "Klassifitseerimisatribuudid", + "all": "Kõik atribuudid" + }, + "sort": { + "label": "Järjestus", + "dateAsc": "Kuupäev (kasvavalt)", + "dateDesc": "Kuupäev (kahanevalt)", + "scoreAsc": "Objekti punktiskoor (kasvavalt)", + "scoreDesc": "Objekti punktiskoor (kahanevalt)", + "speedAsc": "Hinnanguline kiirus (kasvavalt)", + "speedDesc": "Hinnanguline kiirus (kahanevalt)", + "relevance": "Teemakohasus" + }, + "review": { + "showReviewed": "Näita ülevaadatuid" + }, + "motion": { + "showMotionOnly": "Näita vaid liikumisega klippe" + }, + "zoneMask": { + "filterBy": "Tsoonimask filtri jaoks" + }, + "recognizedLicensePlates": { + "title": "Tuvastatud sõiduki numbrimärgid", + "loadFailed": "Tuvastatud sõiduki numbrimärkide laadimine ei õnnestunud.", + "loading": "Laadin tuvastatud sõiduki numbrimärke…", + "placeholder": "Sõidukite numbrimärkide otsimiseks kirjuta midagi…", + "noLicensePlatesFound": "Sõidukite numbrimärke ei leidu.", + "selectPlatesFromList": "Vali loendist üks või enam sõiduki numbrimärki.", + "selectAll": "Vali kõik", + "clearAll": "Eemalda kõik" } } diff --git a/web/public/locales/et/components/player.json b/web/public/locales/et/components/player.json index 76d41dd28..bbf77830d 100644 --- a/web/public/locales/et/components/player.json +++ b/web/public/locales/et/components/player.json @@ -4,7 +4,8 @@ "noPreviewFoundFor": "{{cameraName}} kaamera eelvaadet ei leidu", "submitFrigatePlus": { "submit": "Saada", - "title": "Kas saadad selle kaadri Frigate+ teenusesse?" + "title": "Kas saadad selle kaadri Frigate+ teenusesse?", + "previewError": "Hetktõmmise eelvaate laadimine ei õnnestu. Salvestus ei pruugi olla hetkel saadaval." }, "cameraDisabled": "Kaamera on kasutuselt eemaldatud", "stats": { diff --git a/web/public/locales/et/config/cameras.json b/web/public/locales/et/config/cameras.json index c2ff153fa..6c2bc5811 100644 --- a/web/public/locales/et/config/cameras.json +++ b/web/public/locales/et/config/cameras.json @@ -2,5 +2,21 @@ "name": { "label": "Kaamera nimi", "description": "Kaamera nimi on nõutav" + }, + "friendly_name": { + "label": "Sõbralik nimi", + "description": "Frigate UI-s kasutatud kaamerasõbralik nimi" + }, + "enabled": { + "label": "Kasutusel", + "description": "Kasutusel" + }, + "audio": { + "label": "Helisündmused" + }, + "birdseye": { + "mode": { + "label": "Jälgimisrežiim" + } } } diff --git a/web/public/locales/et/config/global.json b/web/public/locales/et/config/global.json index 0967ef424..ab44041b5 100644 --- a/web/public/locales/et/config/global.json +++ b/web/public/locales/et/config/global.json @@ -1 +1,10 @@ -{} +{ + "audio": { + "label": "Helisündmused" + }, + "birdseye": { + "mode": { + "label": "Jälgimisrežiim" + } + } +} diff --git a/web/public/locales/et/config/groups.json b/web/public/locales/et/config/groups.json index 0967ef424..e8c7956b5 100644 --- a/web/public/locales/et/config/groups.json +++ b/web/public/locales/et/config/groups.json @@ -1 +1,73 @@ -{} +{ + "audio": { + "global": { + "detection": "Üldine tuvastamine", + "sensitivity": "Üldine tundlikkus" + }, + "cameras": { + "detection": "Tuvastamine", + "sensitivity": "Tundlikkus" + } + }, + "motion": { + "global": { + "sensitivity": "Üldine tundlikkus", + "algorithm": "Üldine algoritm" + }, + "cameras": { + "sensitivity": "Tundlikkus", + "algorithm": "Algoritm" + } + }, + "snapshots": { + "global": { + "display": "Üldine vaade" + }, + "cameras": { + "display": "Vaade" + } + }, + "timestamp_style": { + "global": { + "appearance": "Üldine välimus" + }, + "cameras": { + "appearance": "Välimus" + } + }, + "detect": { + "global": { + "resolution": "Üldine eraldusvõime", + "tracking": "Üldine jälgimine" + }, + "cameras": { + "resolution": "Eraldusvõime", + "tracking": "Jälgimine" + } + }, + "objects": { + "global": { + "filtering": "Üldine filtreerimine", + "tracking": "Üldine jälgimine" + }, + "cameras": { + "filtering": "Filtreerimine", + "tracking": "Jälgimine" + } + }, + "record": { + "global": { + "retention": "Üldine säilitamine", + "events": "Üldised sündmused" + }, + "cameras": { + "retention": "Säilitamine", + "events": "Sündmused" + } + }, + "ffmpeg": { + "cameras": { + "cameraFfmpeg": "Kaamerakohased FFmpegi argumendid" + } + } +} diff --git a/web/public/locales/et/config/validation.json b/web/public/locales/et/config/validation.json index 0967ef424..ce014359a 100644 --- a/web/public/locales/et/config/validation.json +++ b/web/public/locales/et/config/validation.json @@ -1 +1,32 @@ -{} +{ + "minimum": "Peab olema vähemalt {{limit}}", + "maximum": "Võib olla kuni {{limit}}", + "exclusiveMinimum": "Peab olema suurem, kui {{limit}}", + "exclusiveMaximum": "Peab olema väiksem, kui {{limit}}", + "minLength": "Peab olema vähemalt {{limit}} tähemärk(i) pikk", + "maxLength": "Võib olla kuni {{limit}} tähemärk(i) pikk", + "minItems": "Peab sisaldama vähemalt {{limit}} objekti", + "maxItems": "Võib sisaldada kuni {{limit}} objekti", + "pattern": "Vigane vorming", + "required": "See väli on kohustuslik", + "type": "Vigane väärtuse tüüp", + "enum": "Peab olema üks lubatud väärtustest", + "const": "Väärtus ei vasta eeldatud konstandile", + "uniqueItems": "Kõik väärtused peavad olema unikaalsed", + "format": "Vigane vorming", + "additionalProperties": "Tundmatu omadus pole lubatud", + "oneOf": "Peab vastama täpselt ühele lubatud skeemile", + "anyOf": "Peab vastama vähemalt ühele lubatud skeemile", + "proxy": { + "header_map": { + "roleHeaderRequired": "Kui rollide vastendused on seadistatud, siis rollide päis on nõutav." + } + }, + "ffmpeg": { + "inputs": { + "rolesUnique": "Iga rolli saad määrata ühele sisendvoole.", + "detectRequired": "„Tuvasta“ rollile pead määrama vähemalt ühe sisendvoo.", + "hwaccelDetectOnly": "Vaid „Tuvasta“ rolliga sisendvoog võib määratleda raudvaralise kiirenduse argumente." + } + } +} diff --git a/web/public/locales/et/views/events.json b/web/public/locales/et/views/events.json index 75e4a3d5c..b8f0e3ff6 100644 --- a/web/public/locales/et/views/events.json +++ b/web/public/locales/et/views/events.json @@ -34,7 +34,9 @@ "normalActivity": "Tavaline", "needsReview": "Vajab ülevaatamist", "securityConcern": "Võib olla turvaprobleem", - "timeline": "Ajajoon", + "timeline": { + "label": "Ajajoon" + }, "timeline.aria": "Vali ajajoon", "zoomIn": "Suumi sisse", "zoomOut": "Suumi välja", @@ -53,7 +55,9 @@ }, "documentTitle": "Ülevaatamine - Frigate", "recordings": { - "documentTitle": "Salvestised - Frigate" + "documentTitle": "Salvestised - Frigate", + "invalidSharedLink": "Töötlemisvea tõttu ei õnnestu avada ajatempliga salvestuse linki.", + "invalidSharedCamera": "Tundmatu või volituseta kaamera tõttu ei õnnestu avada ajatempliga salvestuse linki." }, "calendarFilter": { "last24Hours": "Viimased 24 tundi" @@ -61,5 +65,28 @@ "objectTrack": { "clickToSeek": "Klõpsa siia ajapunkti kerimiseks", "trackedPoint": "Jälgitav punkt" + }, + "motionSearch": { + "menuItem": "Liikumise otsing", + "openMenu": "Kaamera valikud" + }, + "motionPreviews": { + "menuItem": "Vaata liikumiste eelvaateid", + "title": "Liikumiste eelvaated: {{camera}}", + "mobileSettingsTitle": "Liikumiste eelvaadete seadistused", + "mobileSettingsDesc": "Kohenda taasesituse kiirust ja heledust ning vali kuupäev, et vaadata läbi ainult liikumist kajastavaid klipid.", + "dim": "Hämarus", + "dimAria": "Muuda hämarust", + "dimDesc": "Kohenda hämarust parandamaks liikumisala nähtavust.", + "speed": "Kiirus", + "speedAria": "Vali eelvaate taasesituse kiirus", + "speedDesc": "Määratle kiirus, millega eelvaate klippe näidatakse.", + "back": "Tagasi", + "empty": "Ühtegi eelvaadet pole saadaval", + "noPreview": "Eelvaade pole saadaval", + "seekAria": "Keri „{{camera}}“ kaamera vaade ajatempli juurde: {{time}}", + "filter": "Filtreeri", + "filterDesc": "Näitamaks ainult liikumisega klippe antud aladel, vali soovitud piirkonnad.", + "filterClear": "Tühjenda" } } diff --git a/web/public/locales/et/views/explore.json b/web/public/locales/et/views/explore.json index 1676f3ccd..b3bdbef57 100644 --- a/web/public/locales/et/views/explore.json +++ b/web/public/locales/et/views/explore.json @@ -36,7 +36,10 @@ "ratio": "Suhtarv", "area": "Ala", "score": "Punktiskoor" - } + }, + "external": "{{label}} on tuvastatud", + "heard": "{{label}} on kuuldud", + "gone": "{{label}} on jäänud" }, "title": "Jälgimise üksikasjad", "noImageFound": "Selle ajatempli kohta ei leidu pilti.", @@ -44,7 +47,8 @@ "carousel": { "previous": "Eelmine slaid", "next": "Järgmine slaid" - } + }, + "count": "{{first}} / {{second}}" }, "documentTitle": "Avasta - Frigate", "generativeAI": "Generatiivne tehisaru", diff --git a/web/public/locales/et/views/faceLibrary.json b/web/public/locales/et/views/faceLibrary.json index 7e47792d4..64e8fb90e 100644 --- a/web/public/locales/et/views/faceLibrary.json +++ b/web/public/locales/et/views/faceLibrary.json @@ -34,6 +34,11 @@ }, "details": { "timestamp": "Ajatampel", - "unknown": "Pole teada" + "unknown": "Pole teada", + "scoreInfo": "Skoor on kõigi nägude hindete kaalutud keskmine, kus kaalukoefitsiendiks on iga pildi näo suurus." + }, + "uploadFaceImage": { + "title": "Laadi näopilt üles", + "desc": "Laadi üles pilt, et otsida sellelt nägusid ja lisada see {{pageToggle}}'i jaoks" } } diff --git a/web/public/locales/et/views/live.json b/web/public/locales/et/views/live.json index 891568c4d..9e968ccbb 100644 --- a/web/public/locales/et/views/live.json +++ b/web/public/locales/et/views/live.json @@ -14,7 +14,9 @@ "autotracking": "Automaatne jälgimine", "recording": "Salvestus" }, - "documentTitle": "Otseülekanne - Frigate", + "documentTitle": { + "default": "Frigate reaalajas" + }, "documentTitle.withCamera": "{{camera}} - Otseülekanne - Frigate", "lowBandwidthMode": "Väikese ribalaiusega režiim", "twoWayTalk": { @@ -30,7 +32,8 @@ "clickMove": { "label": "Kaamerapildi joondamiseks keskele klõpsa kaadris", "enable": "Kasuta klõpsamisega teisaldamist", - "disable": "Ära kasuta klõpsamisega teisaldamist" + "disable": "Ära kasuta klõpsamisega teisaldamist", + "enableWithZoom": "Luba liigutamine klõpsuga / suumimine lohistamisega" }, "left": { "label": "Pööra liigutatavat kaamerat vasakule" @@ -100,11 +103,18 @@ }, "audio": { "available": "Selles voogedastuses on heliriba saadaval", - "unavailable": "Selles voogedastuses pole heliriba saadaval" + "unavailable": "Selles voogedastuses pole heliriba saadaval", + "tips": { + "title": "Heli peab tulema sinu kaamerast ja selle voogedastuse jaoks peab see go2rtc-s olema seadistatud." + } }, "title": "Voogedastus", "lowBandwidth": { - "resetStream": "Lähtesta voogedastus" + "resetStream": "Lähtesta voogedastus", + "tips": "Reaalaja pilt on puhverdamise või voogedastuse vigade tõttu madala ribalaiusega režiimis." + }, + "debug": { + "picker": "Voogedastuse osa valik pole silumisrežiimis saadaval. Silumisvaade kasutab alati voogedastust, millele on määratud tuvastamisroll." } }, "notifications": "Teavitused", @@ -137,7 +147,15 @@ "showStats": { "label": "Näita statistikat", "desc": "Selle eelistuse puhul näidatakse voogedastuse statistikat kaamerapildi peal." - } + }, + "tips": "Laadi alla hetktõmmis või käivita käsitsi sündmus vastavalt selle kaamera salvestiste säilitamise seadistustele.", + "start": "Alusta tellimuspõhist salvestamist", + "started": "Alustasin käsitsi tellitavat salvestamist.", + "failedToStart": "Käsitsi tellitava salvestamise alustamine ei õnnestunud.", + "recordDisabledTips": "Kuna selle kaamera seadistustes on salvestamine keelatud või piiratud, siis salvestatakse ainult pilt.", + "end": "Lõpeta tellimuspõhine salvestamine", + "ended": "Lõpetasin käsitsi tellitava salvestamise.", + "failedToEnd": "Käsitsi tellitava salvestamise lõpetamine ei õnnestunud." }, "noCameras": { "buttonText": "Lisa kaamera", @@ -174,5 +192,8 @@ }, "history": { "label": "Näita varasemat sisu" + }, + "suspend": { + "forTime": "Peatamise aeg: " } } diff --git a/web/public/locales/et/views/search.json b/web/public/locales/et/views/search.json index 52b917d22..6780001fb 100644 --- a/web/public/locales/et/views/search.json +++ b/web/public/locales/et/views/search.json @@ -9,7 +9,8 @@ "clear": "Tühjenda otsing", "save": "Salvesta otsing", "delete": "Kustuta salvestatud otsing", - "filterInformation": "Filtri teave" + "filterInformation": "Filtri teave", + "filterActive": "Filtreid valituna" }, "filter": { "label": { @@ -17,7 +18,23 @@ "cameras": "Kaamerad", "labels": "Sildid", "zones": "Tsoonid", - "sub_labels": "Alamsildid" + "sub_labels": "Alamsildid", + "attributes": "Omadused", + "search_type": "Otsingutüüp", + "time_range": "Ajavahemik", + "before": "Enne", + "after": "Pärast" + }, + "searchType": { + "thumbnail": "Pisipilt", + "description": "Kirjeldus" + }, + "toast": { + "error": { + "beforeDateBeLaterAfter": "„Enne“ kuupäev peab olema varasem, kui „Pärast“ kuupäev.", + "afterDatebeEarlierBefore": "„Pärast“ kuupäev peab olema hilisem, kui „Enne“ kuupäev." + } } - } + }, + "trackedObjectId": "Jälgitava objekti tunnus" } diff --git a/web/public/locales/fr/config/global.json b/web/public/locales/fr/config/global.json index b3dd9d23f..0e632daf7 100644 --- a/web/public/locales/fr/config/global.json +++ b/web/public/locales/fr/config/global.json @@ -77,5 +77,15 @@ "path": { "label": "Chemin vers la base de donnée" } + }, + "genai": { + "provider": { + "label": "Fournisseur" + } + }, + "birdseye": { + "quality": { + "label": "Qualité d'encodage" + } } } diff --git a/web/public/locales/fr/views/settings.json b/web/public/locales/fr/views/settings.json index c9b3ccb87..a6b7a4456 100644 --- a/web/public/locales/fr/views/settings.json +++ b/web/public/locales/fr/views/settings.json @@ -89,7 +89,8 @@ "cameraMqtt": "MQTT de la caméra", "maintenance": "Maintenance", "uiSettings": "Paramètres IU", - "profiles": "Profils" + "profiles": "Profils", + "systemGo2rtcStreams": "Streams go2rtc" }, "dialog": { "unsavedChanges": { @@ -448,6 +449,17 @@ "error": { "mustBeGreaterOrEqualTo": "Le seuil de vitesse doit être supérieur ou égal à 0.1." } + }, + "id": { + "error": { + "mustNotBeEmpty": "L'ID ne doit pas être vide.", + "alreadyExists": "Un masque avec cet ID existe déjà pour cette caméra." + } + }, + "name": { + "error": { + "mustNotBeEmpty": "Le nom ne doit pas être vide." + } } }, "zones": { @@ -572,7 +584,11 @@ }, "restart_required": "Redémarrage requis (masques/zones changés)", "objectMaskLabel": "Masque d'objet {{number}}", - "motionMaskLabel": "Masque de mouvement {{number}}" + "motionMaskLabel": "Masque de mouvement {{number}}", + "disabledInConfig": "Cet objet est désactivé dans le fichier de configuration", + "addDisabledProfile": "Ajouter dans la configuration de base d’abord puis remplacez le dans le profil", + "profileBase": "(base)", + "profileOverride": "(remplacer)" }, "motionDetectionTuner": { "title": "Réglage de la détection de mouvement", @@ -1308,7 +1324,11 @@ "backToSettings": "Retour aux paramètres de la caméra", "streams": { "title": "Activer / désactiver les caméras", - "desc": "Désactive temporairement une caméra jusqu'au redémarrage de Frigate. La désactivation d'une caméra interrompt complètement le traitement des flux de la caméra par Frigate. La détection, l'enregistrement et le débogage deviennent alors indisponibles.
Remarque : cela n'affecte pas les rediffusions des flux go2rtc." + "desc": "Désactive temporairement une caméra jusqu'au redémarrage de Frigate. La désactivation d'une caméra interrompt complètement le traitement des flux de la caméra par Frigate. La détection, l'enregistrement et le débogage deviennent alors indisponibles.
Remarque : cela n'affecte pas les rediffusions des flux go2rtc.", + "enableLabel": "Caméras activées", + "disableLabel": "Caméra désactivées", + "disableDesc": "Activer une caméra qui n'est pas visible dans l'interface et désactivée dans la configuration. Un redémarrage de Frigate est nécessaire après l'activation.", + "enableSuccess": "Activer {{cameraName}} dans la configuration. Redémarrer Frigate pour appliquer les changements." }, "cameraConfig": { "add": "Ajouter une caméra", @@ -1338,6 +1358,25 @@ "toast": { "success": "La caméra {{cameraName}} a été enregistrée avec succès" } + }, + "deleteCamera": "Supprimer la caméra", + "deleteCameraDialog": { + "title": "Supprimer la caméra", + "description": "Supprimer la caméra va supprimer de façon permanente les enregistrements, les objets suivis, et la configuration de la caméra. Tous les streams go2rtc associés à la caméra devront être supprimés manuellement.", + "selectPlaceholder": "Choisir une caméra...", + "confirmTitle": "Êtes-vous sûr?", + "confirmWarning": "Supprimer \n{{cameraName}}\n ne peut être annulé.", + "deleteExports": "Supprimer aussi les exports de cette caméra", + "confirmButton": "Suppression permanente", + "success": "Caméra {{cameraName}} supprimée avec succès", + "error": "Impossible de supprimer la caméra {{cameraName}}" + }, + "profiles": { + "selectLabel": "Choisir un profil", + "description": "Configurer quelles caméras sont activées ou désactivées quand un profil est activé. Les caméras activées avec \"Inherit\" conservent leur statut de base.", + "inherit": "Hériter", + "enabled": "Activé", + "disabled": "Désactivé" } }, "cameraReview": { @@ -1392,6 +1431,9 @@ "value": { "label": "Nouvelle valeur", "reset": "Réinitialiser" + }, + "profile": { + "label": "Profil" } }, "button": { diff --git a/web/public/locales/hu/common.json b/web/public/locales/hu/common.json index 6e5df9f1d..bc25fc97b 100644 --- a/web/public/locales/hu/common.json +++ b/web/public/locales/hu/common.json @@ -178,7 +178,8 @@ "configuration": "Konfiguráció", "systemLogs": "Rendszer naplók", "settings": "Beállítások", - "classification": "Osztályozás" + "classification": "Osztályozás", + "profiles": "Profilok" }, "role": { "viewer": "Néző", diff --git a/web/public/locales/hu/components/player.json b/web/public/locales/hu/components/player.json index 31ee99137..1e420ed30 100644 --- a/web/public/locales/hu/components/player.json +++ b/web/public/locales/hu/components/player.json @@ -3,7 +3,8 @@ "noPreviewFound": "Nincs elérhető előkép", "submitFrigatePlus": { "title": "Elküldi ezt a képet a Frigate+-nak?", - "submit": "Küldés" + "submit": "Küldés", + "previewError": "Nem sikerült betölteni a pillanatkép előnézetét. Előfordulhat, hogy a felvétel jelenleg nem elérhető." }, "noPreviewFoundFor": "Nem található előnézet {{cameraName}}-hoz/-hez/-höz", "livePlayerRequiredIOSVersion": "iOS 17.1 vagy újabb szükséges ehhez az élő adás típushoz.", diff --git a/web/public/locales/hu/config/cameras.json b/web/public/locales/hu/config/cameras.json index e228cd978..db15b1143 100644 --- a/web/public/locales/hu/config/cameras.json +++ b/web/public/locales/hu/config/cameras.json @@ -39,6 +39,26 @@ "description": "A Frigate felhasználói felületén használt, könnyen megjegyezhető kamera név" }, "enabled": { - "label": "Engedélyezve" + "label": "Engedélyezve", + "description": "Engedélyezve" + }, + "audio": { + "label": "Hangesemények", + "description": "Hangalapú eseményérzékelés beállításai ennél a kameránál.", + "enabled": { + "label": "Hangalapú eseményérzékelés engedélyezése", + "description": "A hangalapú eseményérzékelés engedélyezése vagy letiltása ennél a kameránál." + }, + "max_not_heard": { + "description": "Ennyi másodperc után fejeződik be a hangesemény, ha a beállított hangtípus nem észlelhető.", + "label": "Időtúllépés befejezése" + } + }, + "audio_transcription": { + "label": "Hang Feliratozás", + "description": "„Beállítások élő hang és beszéd automatikus szöveggé alakításához, eseményekhez és élő feliratozáshoz.", + "enabled": { + "label": "Hangról szövegre alakítás engedélyezése" + } } } diff --git a/web/public/locales/hu/config/global.json b/web/public/locales/hu/config/global.json index 8a43985e3..0e140dc86 100644 --- a/web/public/locales/hu/config/global.json +++ b/web/public/locales/hu/config/global.json @@ -40,5 +40,37 @@ "environment_vars": { "label": "Környezeti változók", "description": "A Home Assistant OS rendszerben a Frigate folyamat számára beállítandó környezeti változói. A nem HAOS-felhasználóknak helyette a Docker konfigurációját kell használniuk." + }, + "logger": { + "label": "Naplózás", + "description": "Az alapértelmezett naplózási részletességet és a komponensenkénti naplózási szintek felülírását vezérli.", + "default": { + "label": "Naplózási részletesség", + "description": "Alapértelmezett globális naplórészletesség (debug, info, warning, error)." + }, + "logs": { + "label": "Folyamatonkénti naplózási szint", + "description": "Összetevőnkénti naplózási szint felülbírálások az egyes modulok részletességének növeléséhez vagy csökkentéséhez." + } + }, + "audio": { + "label": "Hangesemények", + "enabled": { + "label": "Hangalapú eseményérzékelés engedélyezése" + }, + "max_not_heard": { + "description": "Ennyi másodperc után fejeződik be a hangesemény, ha a beállított hangtípus nem észlelhető.", + "label": "Időtúllépés befejezése" + } + }, + "auth": { + "label": "Azonosítás" + }, + "audio_transcription": { + "label": "Hang Feliratozás", + "description": "„Beállítások élő hang és beszéd automatikus szöveggé alakításához, eseményekhez és élő feliratozáshoz.", + "enabled": { + "label": "Hangról szövegre alakítás engedélyezése" + } } } diff --git a/web/public/locales/hu/config/groups.json b/web/public/locales/hu/config/groups.json index a50d82066..03d650534 100644 --- a/web/public/locales/hu/config/groups.json +++ b/web/public/locales/hu/config/groups.json @@ -16,5 +16,28 @@ "cameras": { "appearance": "Kinézet" } + }, + "motion": { + "global": { + "sensitivity": "Globális érzékenység", + "algorithm": "Globális Algoritmus" + }, + "cameras": { + "sensitivity": "Érzékenység", + "algorithm": "Algoritmus" + } + }, + "detect": { + "global": { + "resolution": "Globális Felbontás" + } + }, + "snapshots": { + "global": { + "display": "Globális kijelző" + }, + "cameras": { + "display": "Kijelző" + } } } diff --git a/web/public/locales/hu/config/validation.json b/web/public/locales/hu/config/validation.json index 7b3ab646b..1c0669330 100644 --- a/web/public/locales/hu/config/validation.json +++ b/web/public/locales/hu/config/validation.json @@ -4,5 +4,12 @@ "exclusiveMinimum": "Nagyobbnak kell lennie, mint {{limit}}", "exclusiveMaximum": "Kevesebbnek kell lennie, mint {{limit}}", "minLength": "Legalább {{limit}} karaktert kell megadni", - "maxLength": "Legfeljebb {{limit}} karakter lehet" + "maxLength": "Legfeljebb {{limit}} karakter lehet", + "minItems": "Legalább {{limit}} elemnek kell lennie", + "maxItems": "Legfeljebb {{limit}} elem lehet", + "pattern": "Érvénytelen formátum", + "required": "Ezt a mezőt kötelező kitölteni", + "type": "Érvénytelen értéktípus", + "enum": "Az engedélyezett értékek közül legalább egy kell legyen", + "const": "Az érték nem egyezik a várt állandóval" } diff --git a/web/public/locales/hu/views/events.json b/web/public/locales/hu/views/events.json index 904a01336..82e7b7202 100644 --- a/web/public/locales/hu/views/events.json +++ b/web/public/locales/hu/views/events.json @@ -15,7 +15,9 @@ "only": "Csak mozgások" }, "allCameras": "Összes kamera", - "timeline": "Idővonal", + "timeline": { + "label": "Idővonal" + }, "detected": "észlelve", "events": { "label": "Események", diff --git a/web/public/locales/hu/views/exports.json b/web/public/locales/hu/views/exports.json index f1880b125..1d157efad 100644 --- a/web/public/locales/hu/views/exports.json +++ b/web/public/locales/hu/views/exports.json @@ -3,7 +3,9 @@ "search": "Keresés", "noExports": "Export nem található", "deleteExport.desc": "Biztos, hogy törölni akarja {{exportName}}-t?", - "deleteExport": "Export törlése", + "deleteExport": { + "label": "Export törlése" + }, "editExport": { "title": "Exportálás átnevezése", "desc": "Adjon meg egy új nevet ennek az exportnak.", diff --git a/web/public/locales/hu/views/live.json b/web/public/locales/hu/views/live.json index b7a5ff967..a24a0e6bb 100644 --- a/web/public/locales/hu/views/live.json +++ b/web/public/locales/hu/views/live.json @@ -3,7 +3,9 @@ "enable": "Kétirányú kommunikáció engedélyezése", "disable": "Kétirányú kommunikáció tiltása" }, - "documentTitle": "Élő - Frigate", + "documentTitle": { + "default": "Élő - Frigate" + }, "lowBandwidthMode": "Alacsony felbontású mód", "documentTitle.withCamera": "{{camera}} - Élő - Frigate", "cameraAudio": { @@ -15,7 +17,8 @@ "clickMove": { "label": "Kattintson a képre a kamera középre igazításához", "enable": "Engedélyezze a kattintást a mozgatáshoz", - "disable": "Kattintással húzás kikapcsolása" + "disable": "Kattintással húzás kikapcsolása", + "enableWithZoom": "Kattintással történő mozgatás és húzással való nagyítás engedélyezése" }, "left": { "label": "PTZ kamera balra mozgatása" diff --git a/web/public/locales/hu/views/settings.json b/web/public/locales/hu/views/settings.json index c8bd38614..858d0913f 100644 --- a/web/public/locales/hu/views/settings.json +++ b/web/public/locales/hu/views/settings.json @@ -12,7 +12,11 @@ "motionTuner": "Mozgás Hangoló - Frigate", "enrichments": "Kiegészítés Beállítások - Frigate", "cameraManagement": "Kamerák kezelése - Frigate", - "cameraReview": "Kamera beállítások áttekintése – Frigate" + "cameraReview": "Kamera beállítások áttekintése – Frigate", + "globalConfig": "Globális Konfiguráció - Frigate", + "cameraConfig": "Kamera Konfiguráció - Frigate", + "maintenance": "Karbantartás - Fregatt", + "profiles": "Profilok - Fregatt" }, "menu": { "ui": "UI", @@ -28,7 +32,24 @@ "triggers": "Triggerek", "roles": "Szerepkörök", "cameraManagement": "Menedzsment", - "cameraReview": "Vizsgálat" + "cameraReview": "Vizsgálat", + "general": "Általános", + "globalConfig": "Globális konfiguráció", + "system": "Rendszer", + "integrations": "Integrációk", + "uiSettings": "UI beállítások", + "profiles": "Profilok", + "globalDetect": "Tárgy felismerés", + "globalRecording": "Felvétel", + "globalSnapshots": "Pillanatképek", + "globalFfmpeg": "FFmpeg", + "globalMotion": "Mozgásérzékelés", + "globalObjects": "Tárgyak", + "globalReview": "Áttekintés", + "globalAudioEvents": "Hangesemények", + "cameraAudioEvents": "Hangesemények", + "cameraAudioTranscription": "Hang Feliratozás", + "integrationAudioTranscription": "Hang Feliratozás" }, "dialog": { "unsavedChanges": { @@ -861,5 +882,11 @@ "streamConfiguration": "Stream beállítások", "validationAndTesting": "Validálás és tesztelés" } + }, + "button": { + "overriddenGlobal": "Felülírt (Globális)", + "overriddenGlobalTooltip": "Ez a kamera felülírja a globális konfigurációs beállításokat ebben a részben", + "overriddenBaseConfig": "Felülírt (Alapbeállítás)", + "overriddenBaseConfigTooltip": "A {{profile}} profil felülírja a konfigurációs beállításokat ebben a részben" } } diff --git a/web/public/locales/hu/views/system.json b/web/public/locales/hu/views/system.json index d99cfbcb3..dd5175af9 100644 --- a/web/public/locales/hu/views/system.json +++ b/web/public/locales/hu/views/system.json @@ -6,7 +6,8 @@ "logs": { "frigate": "Frigate naplók - Frigate", "go2rtc": "Go2RTC naplók - Frigate", - "nginx": "Nginx naplók - Frigate" + "nginx": "Nginx naplók - Frigate", + "websocket": "Üzenet naplók - Frigate" }, "enrichments": "Kiegészítés statisztikák - Frigate" }, @@ -78,7 +79,12 @@ "download": { "label": "Naplók letöltése" }, - "tips": "A naplók a szerverről érkeznek" + "tips": "A naplók a szerverről érkeznek", + "websocket": { + "label": "Üzenetek", + "pause": "Szüneteltetés", + "resume": "Folytatás" + } }, "general": { "title": "Általános", diff --git a/web/public/locales/id/views/settings.json b/web/public/locales/id/views/settings.json index 1a74776d5..43ebb266e 100644 --- a/web/public/locales/id/views/settings.json +++ b/web/public/locales/id/views/settings.json @@ -47,5 +47,21 @@ "desc": "Secara otomatis beralih ke tampilan langsung kamera saat aktivitas terdeteksi. Menonaktifkan opsi ini menyebabkan gambar statis kamera di dasbor langsung hanya diperbarui sekali per menit." } } + }, + "configMessages": { + "audioTranscription": { + "audioDetectionDisabled": "Pendeteksi suara tidak dinyalakan untuk kamera ini. Transkripsi suara memerlukan pendeteksi suara untuk dinyalakan." + }, + "detect": { + "fpsGreaterThanFive": "Pengaturan FPS untuk pendeteksian lebih dari 5 tidak disarankan." + }, + "faceRecognition": { + "globalDisabled": "Pendeteksi muka tidak dinyalakan dalam level global. Nyalakan pendeteksi muka dalam pengaturan global agar per-kamera deteksi muka dapat bekerja.", + "personNotTracked": "Pendeteksi muka memerlukan 'orang' sebagai objek deteksi. Pastikan 'orang' berada dalam hal yang dideteksi." + }, + "lpr": { + "globalDisabled": "Pendeteksian plat nomor tidak dinyalakan dalam pengaturan global. Nyalakan deteksi plat nomor dalam pengaturan global agar fungsi ini dapat bekerja.", + "vehicleNotTracked": "Pendeteksian plat nomor memerlukan 'mobil' atau 'motor' untuk dideteksi." + } } } diff --git a/web/public/locales/it/components/player.json b/web/public/locales/it/components/player.json index 2aee1a781..e8a1f5bbb 100644 --- a/web/public/locales/it/components/player.json +++ b/web/public/locales/it/components/player.json @@ -4,7 +4,8 @@ "noPreviewFoundFor": "Nessuna anteprima trovata per {{cameraName}}", "submitFrigatePlus": { "title": "Vuoi inviare questo fotogramma a Frigate+?", - "submit": "Invia" + "submit": "Invia", + "previewError": "Impossibile caricare l'anteprima dell'istantanea. La registrazione potrebbe non essere disponibile al momento." }, "livePlayerRequiredIOSVersion": "Per questo tipo di trasmissione dal vivo è richiesto iOS 17.1 o versione successiva.", "stats": { @@ -47,5 +48,5 @@ "submitFrigatePlusFailed": "Impossibile inviare il fotogramma a Frigate+" } }, - "cameraDisabled": "La telecamera è disattivata" + "cameraDisabled": "La telecamera è disabilita" } diff --git a/web/public/locales/it/config/cameras.json b/web/public/locales/it/config/cameras.json index 491b69052..4fb6c6a79 100644 --- a/web/public/locales/it/config/cameras.json +++ b/web/public/locales/it/config/cameras.json @@ -20,12 +20,41 @@ "description": "Abilita o disabilita il rilevamento degli eventi audio per questa telecamera." }, "min_volume": { - "label": "Volume minimo" + "label": "Volume minimo", + "description": "È richiesta una soglia minima di volume RMS per eseguire il rilevamento audio; valori inferiori aumentano la sensibilità (ad esempio, 200 alta, 500 media, 1000 bassa)." + }, + "max_not_heard": { + "label": "Fine pausa", + "description": "Numero di secondi senza il tipo di audio configurato prima che l'evento audio termini." + }, + "listen": { + "label": "Tipi di ascolto", + "description": "Elenco dei tipi di eventi audio da rilevare (ad esempio: abbaio, allarme antincendio, urlo, parlato, grido)." + }, + "filters": { + "label": "Filtri audio", + "description": "Impostazioni di filtro per ciascun tipo di audio, come le soglie di confidenza utilizzate per ridurre i falsi positivi." + }, + "enabled_in_config": { + "label": "Stato audio originale", + "description": "Indica se il rilevamento audio era originariamente abilitato nel file di configurazione statico." + }, + "num_threads": { + "label": "Processi di rilevamento", + "description": "Numero di processi da utilizzare per l'elaborazione del rilevamento audio." } }, "ffmpeg": { "path": { "label": "Percorso FFmpeg" } + }, + "audio_transcription": { + "label": "Trascrizione audio", + "description": "Impostazioni per la trascrizione audio in tempo reale e del parlato utilizzata per eventi e sottotitoli in tempo reale.", + "enabled": { + "label": "Abilita la trascrizione", + "description": "Abilita o disabilita la trascrizione manuale degli eventi audio." + } } } diff --git a/web/public/locales/it/config/global.json b/web/public/locales/it/config/global.json index dbd4f3ec6..b8567bfca 100644 --- a/web/public/locales/it/config/global.json +++ b/web/public/locales/it/config/global.json @@ -17,7 +17,28 @@ "label": "Abilita il rilevamento audio" }, "min_volume": { - "label": "Volume minimo" + "label": "Volume minimo", + "description": "È richiesta una soglia minima di volume RMS per eseguire il rilevamento audio; valori inferiori aumentano la sensibilità (ad esempio, 200 alta, 500 media, 1000 bassa)." + }, + "max_not_heard": { + "label": "Fine pausa", + "description": "Numero di secondi senza il tipo di audio configurato prima che l'evento audio termini." + }, + "listen": { + "label": "Tipi di ascolto", + "description": "Elenco dei tipi di eventi audio da rilevare (ad esempio: abbaio, allarme antincendio, urlo, parlato, grido)." + }, + "filters": { + "label": "Filtri audio", + "description": "Impostazioni di filtro per ciascun tipo di audio, come le soglie di confidenza utilizzate per ridurre i falsi positivi." + }, + "enabled_in_config": { + "label": "Stato audio originale", + "description": "Indica se il rilevamento audio era originariamente abilitato nel file di configurazione statico." + }, + "num_threads": { + "label": "Processi di rilevamento", + "description": "Numero di processi da utilizzare per l'elaborazione del rilevamento audio." } }, "logger": { @@ -29,7 +50,8 @@ "logs": { "label": "Livello di registro per processo", "description": "Opzioni di sovrsacrittura del livello di registro per ciascun componente, per aumentare o diminuire il livello di dettaglio dei singoli moduli." - } + }, + "label": "Registro" }, "auth": { "label": "Autenticazione", @@ -41,11 +63,42 @@ "reset_admin_password": { "label": "Reimposta la password di amministratore", "description": "Se la condizione è vera, reimposta la password dell'utente amministratore all'avvio e stampa la nuova password nei registri." + }, + "cookie_name": { + "label": "Nome del cookie JWT", + "description": "Nome del cookie utilizzato per memorizzare il token JWT per l'autenticazione nativa." + }, + "cookie_secure": { + "label": "Attributo dei cookie sicuri", + "description": "Imposta l'attributo 'sicuro' sul cookie di autenticazione; deve essere impostato su 'vero' quando si utilizza TLS." + }, + "session_length": { + "label": "Durata della sessione", + "description": "Durata della sessione in secondi per le sessioni basate su JWT." + }, + "refresh_time": { + "label": "Finestra di aggiornamento della sessione", + "description": "Quando una sessione sta per scadere entro questo numero di secondi, aggiornala per ripristinarne la durata completa." } }, "ffmpeg": { "path": { "label": "Percorso FFmpeg" } + }, + "detectors": { + "cpu": { + "num_threads": { + "label": "Numero di processi di rilevamento", + "description": "Il numero di processi utilizzati per l'inferenza basata sulla CPU." + } + } + }, + "audio_transcription": { + "label": "Trascrizione audio", + "description": "Impostazioni per la trascrizione audio in tempo reale e del parlato utilizzata per eventi e sottotitoli in tempo reale.", + "enabled": { + "label": "Abilita la trascrizione audio" + } } } diff --git a/web/public/locales/it/config/validation.json b/web/public/locales/it/config/validation.json index a37fcd3c7..eaba21cb2 100644 --- a/web/public/locales/it/config/validation.json +++ b/web/public/locales/it/config/validation.json @@ -4,5 +4,29 @@ "exclusiveMinimum": "Deve essere maggiore di {{limit}}", "exclusiveMaximum": "Deve essere minore di {{limit}}", "minLength": "Deve essere almeno {{limit}} carattere(i)", - "maxLength": "Deve essere al massimo {{limit}} carattere(i)" + "maxLength": "Deve essere al massimo {{limit}} carattere(i)", + "minItems": "Deve contenere almeno {{limit}} elementi", + "maxItems": "Deve avere al massimo {{limit}} elementi", + "pattern": "Formato non valido", + "required": "Questo campo è obbligatorio", + "type": "Tipo di valore non valido", + "enum": "Deve essere uno dei valori consentiti", + "const": "Il valore non corrisponde alla costante prevista", + "uniqueItems": "Tutti gli elementi devono essere unici", + "format": "Formato non valido", + "additionalProperties": "Proprietà sconosciuta non consentita", + "oneOf": "Deve corrispondere esattamente a uno degli schemi consentiti", + "anyOf": "Deve corrispondere ad almeno uno degli schemi consentiti", + "proxy": { + "header_map": { + "roleHeaderRequired": "L'intestazione del ruolo è obbligatoria quando si configurano le mappature dei ruoli." + } + }, + "ffmpeg": { + "inputs": { + "rolesUnique": "Ciascun ruolo può essere assegnato a un solo flusso di ingresso.", + "detectRequired": "Ad almeno un flusso di ingresso deve essere assegnato il ruolo di 'rilevamento'.", + "hwaccelDetectOnly": "Solo il flusso di ingresso con il ruolo di rilevamento può definire argomenti di accelerazione hardware." + } + } } diff --git a/web/public/locales/it/views/events.json b/web/public/locales/it/views/events.json index f1a9255f7..a0bc81593 100644 --- a/web/public/locales/it/views/events.json +++ b/web/public/locales/it/views/events.json @@ -22,7 +22,9 @@ "markAsReviewed": "Segna come visto", "documentTitle": "Rivedi - Frigate", "allCameras": "Tutte le camere", - "timeline": "Cronologia", + "timeline": { + "label": "Linea temporale" + }, "timeline.aria": "Seleziona la cronologia", "events": { "label": "Eventi", @@ -30,7 +32,9 @@ "noFoundForTimePeriod": "Nessun evento trovato per questo intervallo." }, "recordings": { - "documentTitle": "Registrazioni - Frigate" + "documentTitle": "Registrazioni - Frigate", + "invalidSharedLink": "Impossibile aprire il collegamento alla registrazione con orario a causa di un errore di analisi.", + "invalidSharedCamera": "Impossibile aprire il collegamento alla registrazione con orario a causa di una telecamera sconosciuta o non autorizzata." }, "calendarFilter": { "last24Hours": "Ultime 24 ore" @@ -44,7 +48,7 @@ "threateningActivity": "Attività minacciosa", "detail": { "noDataFound": "Nessun dato dettagliato da rivedere", - "aria": "Attiva/disattiva la visualizzazione dettagliata", + "aria": "Abilita/disabilita la visualizzazione dettagliata", "trackedObject_one": "{{count}} oggetto", "trackedObject_other": "{{count}} oggetti", "noObjectDetailData": "Non sono disponibili dati dettagliati sull'oggetto.", @@ -64,5 +68,28 @@ "normalActivity": "Normale", "needsReview": "Necessita revisione", "securityConcern": "Rischio per la sicurezza", - "select_all": "Tutti" + "select_all": "Tutti", + "motionSearch": { + "menuItem": "Ricerca movimento", + "openMenu": "Opzioni telecamera" + }, + "motionPreviews": { + "title": "Anteprime di movimento: {{camera}}", + "mobileSettingsTitle": "Impostazioni di anteprima del movimento", + "mobileSettingsDesc": "Regola la velocità di riproduzione e la luminosità, poi scegli una data per rivedere i filmati che mostrano solo il movimento.", + "dim": "Attenua", + "dimAria": "Regola l'intensità della luce", + "dimDesc": "Aumenta l'attenuazione per migliorare la visibilità delle aree in movimento.", + "speed": "Velocità", + "speedAria": "Seleziona la velocità di riproduzione dell'anteprima", + "speedDesc": "Scegli la velocità di riproduzione dei video di anteprima.", + "back": "Indietro", + "empty": "Nessuna anteprima disponibile", + "noPreview": "Anteprima non disponibile", + "seekAria": "Cerca il riproduttore {{camera}} a {{time}}", + "filter": "Filtro", + "filterDesc": "Seleziona le aree per visualizzare solo i video con movimento in quelle regioni.", + "filterClear": "Pulisci", + "menuItem": "Visualizza le anteprime del movimento" + } } diff --git a/web/public/locales/it/views/explore.json b/web/public/locales/it/views/explore.json index 7cb9b4b80..ff7c50c4f 100644 --- a/web/public/locales/it/views/explore.json +++ b/web/public/locales/it/views/explore.json @@ -289,7 +289,10 @@ "zones": "Zone", "ratio": "Rapporto", "area": "Area", - "score": "Punteggio" + "score": "Punteggio", + "computedScore": "Punteggio calcolato", + "topScore": "Punteggio massimo", + "toggleAdvancedScores": "Attiva/disattiva i punteggi avanzati" } }, "annotationSettings": { diff --git a/web/public/locales/it/views/settings.json b/web/public/locales/it/views/settings.json index 38951855e..a36b50391 100644 --- a/web/public/locales/it/views/settings.json +++ b/web/public/locales/it/views/settings.json @@ -12,7 +12,11 @@ "notifications": "Impostazioni di notifiche - Frigate", "enrichments": "Impostazioni di miglioramento - Frigate", "cameraManagement": "Gestisci telecamere - Frigate", - "cameraReview": "Impostazioni revisione telecamera - Frigate" + "cameraReview": "Impostazioni revisione telecamera - Frigate", + "globalConfig": "Configurazione globale - Frigate", + "cameraConfig": "Configurazione telecamera - Frigate", + "maintenance": "Manutenzione - Frigate", + "profiles": "Profili - Frigate" }, "frigatePlus": { "snapshotConfig": { @@ -230,7 +234,7 @@ "desc": "Specifica una velocità minima affinché gli oggetti vengano presi in considerazione in questa zona.", "toast": { "error": { - "pointLengthError": "La stima della velocità è stata disattivata per questa zona. Le zone con stima della velocità devono avere esattamente 4 punti.", + "pointLengthError": "La stima della velocità è stata disabilitata per questa zona. Le zone con stima della velocità devono avere esattamente 4 punti.", "loiteringTimeError": "Le zone con tempi di permanenza superiori a 0 non devono essere utilizzate per la stima della velocità." } }, @@ -390,7 +394,12 @@ "roles": "Ruoli", "cameraManagement": "Gestione", "cameraReview": "Rivedi", - "profiles": "Profili" + "profiles": "Profili", + "general": "Generale", + "globalConfig": "Configurazione globale", + "system": "Sistema", + "integrations": "Integrazioni", + "uiSettings": "Impostazioni interfaccia utente" }, "users": { "dialog": { @@ -511,12 +520,12 @@ "general": { "liveDashboard": { "automaticLiveView": { - "desc": "Passa automaticamente alla visualizzazione dal vivo di una telecamera quando viene rilevata attività. Disattivando questa opzione, le immagini statiche della telecamera nella schermata dal vivo verranno aggiornate solo una volta al minuto.", + "desc": "Passa automaticamente alla visualizzazione dal vivo di una telecamera quando viene rilevata attività. Disabilitando questa opzione, le immagini statiche della telecamera nella schermata dal vivo verranno aggiornate solo una volta al minuto.", "label": "Visualizzazione automatica dal vivo" }, "playAlertVideos": { "label": "Riproduci video di avvisi", - "desc": "Per impostazione predefinita, gli avvisi recenti nella schermata dal vivo vengono riprodotti come brevi video in ciclo. Disattiva questa opzione per visualizzare solo un'immagine statica degli avvisi recenti su questo dispositivo/browser." + "desc": "Per impostazione predefinita, gli avvisi recenti nella schermata dal vivo vengono riprodotti come brevi video in ciclo. Disabilita questa opzione per visualizzare solo un'immagine statica degli avvisi recenti su questo dispositivo/browser." }, "title": "Schermata dal vivo", "displayCameraNames": { @@ -1315,5 +1324,11 @@ "addUrl": "Aggiungi URL", "addGo2rtcStream": "Aggiungi flusso go2rtc" } + }, + "button": { + "overriddenGlobal": "Sovrascritto (Globale)", + "overriddenGlobalTooltip": "Questa telecamera sovrascrive le impostazioni di configurazione globali in questa sezione", + "overriddenBaseConfig": "Sovrascritto (Configurazione di base)", + "overriddenBaseConfigTooltip": "Il profilo {{profile}} sovrascrive le impostazioni di configurazione in questa sezione" } } diff --git a/web/public/locales/it/views/system.json b/web/public/locales/it/views/system.json index 6883fc397..0c54865ba 100644 --- a/web/public/locales/it/views/system.json +++ b/web/public/locales/it/views/system.json @@ -7,7 +7,8 @@ "logs": { "frigate": "Registri Frigate - Frigate", "go2rtc": "Registri Go2RTC - Frigate", - "nginx": "Registri Nginx - Frigate" + "nginx": "Registri Nginx - Frigate", + "websocket": "Registri dei messaggi - Frigate" } }, "logs": { @@ -31,6 +32,33 @@ "label": "Copia negli appunti", "success": "Registri copiati negli appunti", "error": "Impossibile copiare i registri negli appunti" + }, + "websocket": { + "label": "Messaggi", + "pause": "Pausa", + "resume": "Riprendi", + "clear": "Pulisci", + "filter": { + "all": "Tutti gli argomenti", + "topics": "Argomenti", + "events": "Eventi", + "reviews": "Rivisti", + "classification": "Classificazione", + "face_recognition": "Riconoscimento facciale", + "lpr": "Risconoscimento targhe (LPR)", + "camera_activity": "Attività della telecamera", + "system": "Sistema", + "camera": "Telecamera", + "all_cameras": "Tutte le telecamere", + "cameras_count_one": "{{count}} telecamera", + "cameras_count_other": "{{count}} telecamere" + }, + "empty": "Nessun messaggio ancora catturato", + "count_one": "{{count}} messaggio", + "count_other": "{{count}} messaggi", + "expanded": { + "payload": "Carico" + } } }, "general": { @@ -72,7 +100,8 @@ "description": "Si tratta di un problema noto negli strumenti di reportistica delle statistiche GPU di Intel (intel_gpu_top), che si interrompe e restituisce ripetutamente un utilizzo della GPU pari a 0% anche nei casi in cui l'accelerazione hardware e il rilevamento degli oggetti funzionano correttamente sulla (i)GPU. Non si tratta di un problema di Frigate. È possibile riavviare il sistema per risolvere temporaneamente il problema e verificare che la GPU funzioni correttamente. Ciò non influisce sulle prestazioni." }, "gpuTemperature": "Temperatura GPU", - "npuTemperature": "Temperatura NPU" + "npuTemperature": "Temperatura NPU", + "gpuCompute": "Calcolo / Codifica GPU" }, "detector": { "inferenceSpeed": "Velocità inferenza rilevatore", @@ -158,7 +187,8 @@ "cameraFramesPerSecond": "{{camName}} fotogrammi al secondo", "cameraDetectionsPerSecond": "{{camName}} rilevamenti al secondo", "cameraSkippedDetectionsPerSecond": "{{camName}} rilevamenti saltati al secondo", - "cameraFfmpeg": "{{camName}} FFmpeg" + "cameraFfmpeg": "{{camName}} FFmpeg", + "cameraGpu": "GPU {{camName}}" }, "toast": { "success": { @@ -188,7 +218,8 @@ "cameraIsOffline": "{{camera}} è disconnessa", "detectIsSlow": "{{detect}} è lento ({{speed}} ms)", "detectIsVerySlow": "{{detect}} è molto lento ({{speed}} ms)", - "shmTooLow": "L'allocazione /dev/shm ({{total}} MB) dovrebbe essere aumentata almeno a {{min}} MB." + "shmTooLow": "L'allocazione /dev/shm ({{total}} MB) dovrebbe essere aumentata almeno a {{min}} MB.", + "debugReplayActive": "La sessione di riproduzione delle correzioni è attiva" }, "title": "Sistema", "metrics": "Metriche di sistema", @@ -215,7 +246,11 @@ "shm": { "title": "Allocazione SHM (memoria condivisa)", "warning": "La dimensione SHM attuale di {{total}} MB è troppo piccola. Aumentarla ad almeno {{min_shm}} MB.", - "readTheDocumentation": "Leggi la documentazione" + "readTheDocumentation": "Leggi la documentazione", + "frameLifetime": { + "title": "Durata del fotogramma", + "description": "Ogni telecamera dispone di {{frames}} posti per i fotogrammi nella memoria condivisa. Alla frequenza di fotogrammi più elevata della telecamera, ogni fotogramma è disponibile per circa {{lifetime}} secondi prima di essere sovrascritto." + } } }, "lastRefreshed": "Ultimo aggiornamento: " diff --git a/web/public/locales/ja/common.json b/web/public/locales/ja/common.json index 3f04d464f..c0f2f01f2 100644 --- a/web/public/locales/ja/common.json +++ b/web/public/locales/ja/common.json @@ -133,7 +133,7 @@ "unsuspended": "再開", "play": "再生", "unselect": "選択解除", - "export": "書き出し", + "export": "エクスポート", "deleteNow": "今すぐ削除", "next": "次へ", "continue": "続行" @@ -181,7 +181,7 @@ }, "review": "レビュー", "explore": "ブラウズ", - "export": "書き出し", + "export": "エクスポート", "uiPlayground": "UI テスト環境", "faceLibrary": "顔データベース", "user": { diff --git a/web/public/locales/ja/components/dialog.json b/web/public/locales/ja/components/dialog.json index c7f2b0944..108c4104d 100644 --- a/web/public/locales/ja/components/dialog.json +++ b/web/public/locales/ja/components/dialog.json @@ -46,23 +46,32 @@ } }, "name": { - "placeholder": "書き出しに名前を付ける" + "placeholder": "エクスポートに名前を付ける" }, "select": "選択", - "export": "書き出し", - "selectOrExport": "選択または書き出し", + "export": "エクスポート", + "selectOrExport": "選択またはエクスポート", "toast": { - "success": "書き出しを開始しました。出力ページでファイルを確認できます。", + "success": "エクスポートを開始しました。エクスポートページでファイルを確認できます。", "error": { - "failed": "書き出しの開始に失敗しました: {{error}}", + "failed": "エクスポートキューの開始に失敗しました: {{error}}", "endTimeMustAfterStartTime": "終了時間は開始時間より後である必要があります", "noVaildTimeSelected": "有効な時間範囲が選択されていません" }, - "view": "表示" + "view": "表示", + "queued": "エクスポートがキューに追加されました。進捗状況はエクスポートページで確認できます。", + "batchQueuedSuccess_other": "{{count}} 件のエクスポートがキューに登録されました。現在ケースをオープンしています。", + "batchQueuedPartial": "{{total}} 件中 {{successful}} 件のエクスポートがキューに追加されました。失敗したカメラ: {{failedCameras}}", + "batchQueueFailed": "{{total}} 件のエクスポートをキューに追加できませんでした。失敗したカメラ: {{failedCameras}}" }, "fromTimeline": { - "saveExport": "書き出しを保存", - "previewExport": "書き出しをプレビュー" + "saveExport": "エクスポートを保存", + "previewExport": "エクスポートをプレビュー", + "queueingExport": "エクスポートをキューイングしています..." + }, + "queueing": "エクスポートをキューイングしています...", + "multiCamera": { + "queueingButton": "エクスポートをキューイングしています..." } }, "streaming": { @@ -105,7 +114,7 @@ } }, "button": { - "export": "書き出し", + "export": "エクスポート", "markAsReviewed": "レビュー済みにする", "deleteNow": "今すぐ削除", "markAsUnreviewed": "未レビューに戻す" diff --git a/web/public/locales/ja/components/filter.json b/web/public/locales/ja/components/filter.json index bbcc3149d..d98e6b40c 100644 --- a/web/public/locales/ja/components/filter.json +++ b/web/public/locales/ja/components/filter.json @@ -114,7 +114,7 @@ }, "trackedObjectDelete": { "title": "削除の確認", - "desc": "これら {{objectLength}} 件の追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、関連するオブジェクトのライフサイクル項目が削除されます。履歴ビューの録画映像は削除されません

続行してもよろしいですか?

今後このダイアログを表示しない場合は Shift キーを押しながら操作してください。", + "desc": "これら {{objectLength}} 件の追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、関連するオブジェクトのライフサイクル項目が削除されます。履歴ビューの録画映像は削除されません。

続行してもよろしいですか?

今後このダイアログを表示しない場合は Shift キーを押しながら操作してください。", "toast": { "success": "追跡オブジェクトを削除しました。", "error": "追跡オブジェクトの削除に失敗しました: {{errorMessage}}" diff --git a/web/public/locales/ja/views/classificationModel.json b/web/public/locales/ja/views/classificationModel.json index 180135390..10efc1375 100644 --- a/web/public/locales/ja/views/classificationModel.json +++ b/web/public/locales/ja/views/classificationModel.json @@ -12,11 +12,11 @@ }, "toast": { "success": { - "deletedImage_other": "削除された画像", + "deletedImage_other": "{{count}} 件の削除された画像", "categorizedImage": "画像の分類に成功しました", "trainedModel": "モデルを正常に学習させました。", "trainingModel": "モデルのトレーニングを正常に開始しました。", - "deletedCategory_other": "クラスを削除しました", + "deletedCategory_other": "{{count}} 件のクラスを削除しました", "deletedModel_other": "{{count}} 件のモデルを削除しました", "updatedModel": "モデル設定を更新しました", "renamedCategory": "クラス名を {{name}} に変更しました" diff --git a/web/public/locales/ja/views/events.json b/web/public/locales/ja/views/events.json index 544412974..c1fc7c085 100644 --- a/web/public/locales/ja/views/events.json +++ b/web/public/locales/ja/views/events.json @@ -36,8 +36,8 @@ "label": "新しいレビュー項目を表示", "button": "レビューすべき新規項目" }, - "selected_one": "{{count}} 件選択", - "selected_other": "{{count}} 件選択", + "selected_one": "{{count}} 選択済み", + "selected_other": "{{count}} 選択済み", "detected": "検出", "suspiciousActivity": "不審なアクティビティ", "threateningActivity": "脅威となるアクティビティ", diff --git a/web/public/locales/ja/views/explore.json b/web/public/locales/ja/views/explore.json index 35265cc50..2789e800f 100644 --- a/web/public/locales/ja/views/explore.json +++ b/web/public/locales/ja/views/explore.json @@ -224,7 +224,7 @@ "dialog": { "confirmDelete": { "title": "削除の確認", - "desc": "この追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、および関連する追跡詳細項目が削除されます。履歴ビューの録画映像は削除されません

続行してもよろしいですか?" + "desc": "この追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、および関連する追跡詳細項目が削除されます。履歴ビューの録画映像は削除されません。

続行してもよろしいですか?" } }, "noTrackedObjects": "追跡オブジェクトは見つかりませんでした", diff --git a/web/public/locales/ja/views/exports.json b/web/public/locales/ja/views/exports.json index b32c8c62f..767c05a11 100644 --- a/web/public/locales/ja/views/exports.json +++ b/web/public/locales/ja/views/exports.json @@ -1,23 +1,127 @@ { "documentTitle": "エクスポート - Frigate", - "noExports": "書き出しは見つかりません", + "noExports": "エクスポートが見つかりません", "search": "検索", - "deleteExport": "書き出しを削除", + "deleteExport": { + "label": "エクスポートを削除" + }, "deleteExport.desc": "{{exportName}} を削除してもよろしいですか?", "editExport": { - "title": "書き出し名を変更", - "desc": "この書き出しの新しい名前を入力してください。", - "saveExport": "書き出しを保存" + "title": "エクスポート名を変更", + "desc": "このエクスポートの新しい名前を入力してください。", + "saveExport": "エクスポートを保存" }, "toast": { "error": { - "renameExportFailed": "書き出し名の変更に失敗しました: {{errorMessage}}" + "renameExportFailed": "エクスポート名の変更に失敗しました: {{errorMessage}}", + "assignCaseFailed": "ケース割り当ての更新に失敗しました: {{errorMessage}}", + "caseSaveFailed": "ケースの保存に失敗しました: {{errorMessage}}", + "caseDeleteFailed": "ケースの削除に失敗しました: {{errorMessage}}" } }, "tooltip": { "shareExport": "エクスポートを共有", "downloadVideo": "動画をダウンロード", "editName": "名前を編集", - "deleteExport": "エクスポートを削除" + "deleteExport": "エクスポートを削除", + "assignToCase": "ケースに追加", + "removeFromCase": "ケースから削除" + }, + "headings": { + "cases": "ケース", + "uncategorizedExports": "未分類のエクスポート" + }, + "toolbar": { + "newCase": "新しいケース", + "addExport": "エクスポートに追加", + "editCase": "ケースを編集", + "deleteCase": "ケースを削除" + }, + "deleteCase": { + "label": "ケースを削除", + "desc": "本当に {{caseName}} を削除しますか ?", + "descKeepExports": "エクスポートは、分類されていないエクスポートとして引き続き利用可能です。", + "descDeleteExports": "この場合、すべてのエクスポートは完全に削除されます。", + "deleteExports": "エクスポートも削除する" + }, + "caseDialog": { + "title": "ケースに追加", + "description": "既存のケースを選択するか、新しいケースを作成してください。", + "selectLabel": "ケース", + "newCaseOption": "新しいケースを作成", + "nameLabel": "ケース名", + "descriptionLabel": "説明" + }, + "caseCard": { + "emptyCase": "まだエクスポートされていません" + }, + "jobCard": { + "defaultName": "{{camera}} エクスポート", + "queued": "キューに追加しました", + "running": "実行中", + "preparing": "準備中", + "copying": "コピー中", + "encoding": "エンコード中", + "encodingRetry": "エンコード中 (再試行)", + "finalizing": "終了処理中" + }, + "caseView": { + "noDescription": "説明がありません", + "exportCount_one": "1 件のエクスポート", + "exportCount_other": "{{count}} エクスポート", + "cameraCount_other": "{{count}} カメラ", + "showMore": "さらに表示", + "showLess": "表示を減らす", + "emptyTitle": "このケースは空です", + "emptyDescription": "既存の分類されていないエクスポートを追加して、ケースを整理しましょう。", + "emptyDescriptionNoExports": "まだ追加可能な未分類のエクスポートはありません。", + "createdAt": "作成日 {{value}}" + }, + "caseEditor": { + "createTitle": "ケースを作成", + "editTitle": "ケースを編集", + "namePlaceholder": "ケース名", + "descriptionPlaceholder": "このケースに関するメモや背景情報を追加する" + }, + "addExportDialog": { + "title": "{{caseName}} にエクスポートを追加", + "searchPlaceholder": "未分類のエクスポートを検索", + "empty": "この検索条件に一致する未分類のエクスポートはありません。", + "addButton_one": "1 件のエクスポートを追加", + "addButton_other": "{{count}} 件のエクスポートを追加", + "adding": "追加中..." + }, + "selected_one": "{{count}} 選択済み", + "selected_other": "{{count}} 選択済み", + "bulkActions": { + "addToCase": "ケースに追加", + "moveToCase": "ケースに移動", + "removeFromCase": "ケースから削除", + "delete": "削除", + "deleteNow": "今すぐ削除" + }, + "bulkDelete": { + "title": "エクスポートを削除", + "desc_one": "{{count}} 件のエクスポートを削除してもよろしいですか?", + "desc_other": "{{count}} 件のエクスポートを削除してもよろしいですか?" + }, + "bulkRemoveFromCase": { + "title": "ケースから削除", + "desc_one": "このケースから {{count}} 件のエクスポートを削除しますか?", + "desc_other": "このケースから {{count}} 件のエクスポートを削除しますか?", + "descKeepExports": "エクスポートは未分類に移動されます。", + "descDeleteExports": "エクスポートは完全に削除されます。", + "deleteExports": "代わりにエクスポートを削除する" + }, + "bulkToast": { + "success": { + "delete": "エクスポートの削除に成功しました", + "reassign": "ケース割り当ての更新に成功しました", + "remove": "ケースからエクスポートを正常に削除しました" + }, + "error": { + "deleteFailed": "エクスポートの削除に失敗しました: {{errorMessage}}", + "reassignFailed": "ケース割り当ての更新に失敗しました: {{errorMessage}}" + } } } diff --git a/web/public/locales/ja/views/settings.json b/web/public/locales/ja/views/settings.json index 324fec964..5cdcd2b26 100644 --- a/web/public/locales/ja/views/settings.json +++ b/web/public/locales/ja/views/settings.json @@ -244,7 +244,7 @@ } }, "motionMaskLabel": "モーションマスク {{number}}", - "objectMaskLabel": "オブジェクトマスク {{number}}({{label}})", + "objectMaskLabel": "オブジェクトマスク {{number}}", "form": { "zoneName": { "error": { @@ -594,7 +594,7 @@ "admin": "管理者", "adminDesc": "すべての機能にフルアクセス。", "viewer": "閲覧者", - "viewerDesc": "ライブ、レビュー、探索、書き出しに限定。", + "viewerDesc": "ライブ、レビュー、探索、エクスポートに限定。", "customDesc": "特定のカメラアクセスを持つカスタムロール。" } } @@ -725,7 +725,7 @@ "snapshotConfig": { "title": "スナップショット設定", "desc": "Frigate+ への送信には、設定でスナップショットと clean_copy スナップショットの両方を有効にする必要があります。", - "cleanCopyWarning": "一部のカメラではスナップショットは有効ですが、クリーンコピーが無効です。これらのカメラから Frigate+ へ画像を送信するには、スナップショット設定で clean_copy を有効にしてください。", + "cleanCopyWarning": "一部のカメラではスナップショット機能が無効になっています", "table": { "camera": "カメラ", "snapshots": "スナップショット", @@ -1227,5 +1227,12 @@ "success": "レビュー分類の設定を保存しました。変更を適用するには Frigate を再起動してください。" } } + }, + "maintenance": { + "sync": { + "status": { + "queued": "キューに追加済み" + } + } } } diff --git a/web/public/locales/ko/config/cameras.json b/web/public/locales/ko/config/cameras.json index 3f64349db..49822619c 100644 --- a/web/public/locales/ko/config/cameras.json +++ b/web/public/locales/ko/config/cameras.json @@ -3,5 +3,40 @@ "name": { "label": "카메라 이름", "description": "카메라 이름은 필수 항목입니다" + }, + "friendly_name": { + "label": "별칭", + "description": "Frigate UI에서 사용되는 카메라 별칭" + }, + "enabled": { + "label": "활성화됨", + "description": "활성화됨" + }, + "audio": { + "label": "오디오 이벤트", + "description": "이 카메라의 오디오 기반 이벤트 감지 설정입니다.", + "enabled": { + "label": "오디오 감지 활성화", + "description": "이 카메라의 오디오 이벤트 감지를 활성화하거나 비활성화합니다." + }, + "max_not_heard": { + "label": "종료 타임아웃", + "description": "오디오 이벤트가 종료되기 전, 설정된 오디오 유형이 감지되지 않는 시간(초)입니다." + }, + "min_volume": { + "label": "최소 볼륨", + "description": "오디오 감지를 실행하는 데 필요한 최소 RMS 볼륨 임계값으로, 낮을수록 민감도가 높아집니다(예: 200 높음, 500 보통, 1000 낮음)." + }, + "listen": { + "label": "청취 유형", + "description": "감지할 오디오 이벤트 유형 목록입니다(예: bark, fire_alarm, scream, speech, yell)." + }, + "filters": { + "label": "오디오 필터", + "description": "오탐지를 줄이기 위해 사용되는 신뢰도 임계값과 같은 오디오 유형별 필터 설정입니다." + }, + "enabled_in_config": { + "label": "원래 오디오 상태" + } } } diff --git a/web/public/locales/ko/config/global.json b/web/public/locales/ko/config/global.json index f2cdb1059..bfc6d13e2 100644 --- a/web/public/locales/ko/config/global.json +++ b/web/public/locales/ko/config/global.json @@ -4,6 +4,63 @@ "description": "마이그레이션 및 데이터 형식 변경 확인을 위한 현재 설정의 버전 정보(숫자 또는 문자열)입니다." }, "safe_mode": { - "label": "안전 모드" + "label": "안전 모드", + "description": "활성화하면 문제 해결을 위해 기능이 제한된 안전 모드로 Frigate를 시작합니다." + }, + "environment_vars": { + "label": "환경 변수", + "description": "Home Assistant OS에서 Frigate 프로세스에 설정할 환경 변수의 키/값 쌍입니다. HAOS가 아닌 사용자는 대신 Docker 환경 변수 설정을 사용해야 합니다." + }, + "logger": { + "label": "로깅", + "description": "기본 로그 상세 수준 및 구성 요소별 로그 수준 재정의를 제어합니다.", + "default": { + "label": "로그 수준", + "description": "기본 전역 로그 상세 수준(debug, info, warning, error)입니다." + }, + "logs": { + "label": "프로세스별 로그 수준", + "description": "특정 모듈의 상세 수준을 높이거나 낮추기 위한 구성 요소별 로그 수준 재정의입니다." + } + }, + "audio": { + "label": "오디오 이벤트", + "enabled": { + "label": "오디오 감지 활성화" + }, + "max_not_heard": { + "label": "종료 타임아웃", + "description": "오디오 이벤트가 종료되기 전, 설정된 오디오 유형이 감지되지 않는 시간(초)입니다." + }, + "min_volume": { + "label": "최소 볼륨", + "description": "오디오 감지를 실행하는 데 필요한 최소 RMS 볼륨 임계값으로, 낮을수록 민감도가 높아집니다(예: 200 높음, 500 보통, 1000 낮음)." + }, + "listen": { + "label": "청취 유형", + "description": "감지할 오디오 이벤트 유형 목록입니다(예: bark, fire_alarm, scream, speech, yell)." + }, + "filters": { + "label": "오디오 필터", + "description": "오탐지를 줄이기 위해 사용되는 신뢰도 임계값과 같은 오디오 유형별 필터 설정입니다." + }, + "enabled_in_config": { + "label": "원래 오디오 상태" + } + }, + "auth": { + "label": "인증", + "description": "쿠키 및 속도 제한 옵션을 포함한 인증 및 세션 관련 설정입니다.", + "enabled": { + "label": "인증 활성화", + "description": "Frigate UI에 대한 기본 인증을 활성화합니다." + }, + "reset_admin_password": { + "label": "관리자 비밀번호 재설정", + "description": "true로 설정하면 시작 시 관리자 비밀번호를 재설정하고 새 비밀번호를 로그에 출력합니다." + }, + "cookie_name": { + "label": "JWT 쿠키 이름" + } } } diff --git a/web/public/locales/ko/config/groups.json b/web/public/locales/ko/config/groups.json index 78b422e83..4578c83cf 100644 --- a/web/public/locales/ko/config/groups.json +++ b/web/public/locales/ko/config/groups.json @@ -5,7 +5,53 @@ "sensitivity": "전체 민감도" }, "cameras": { - "detection": "감지" + "detection": "감지", + "sensitivity": "민감도" + } + }, + "timestamp_style": { + "global": { + "appearance": "전역 외관" + }, + "cameras": { + "appearance": "외관" + } + }, + "motion": { + "global": { + "sensitivity": "전역 민감도", + "algorithm": "전역 알고리즘" + }, + "cameras": { + "sensitivity": "민감도", + "algorithm": "알고리즘" + } + }, + "snapshots": { + "global": { + "display": "전역 표시" + }, + "cameras": { + "display": "표시" + } + }, + "detect": { + "global": { + "resolution": "전역 해상도", + "tracking": "전역 추적" + }, + "cameras": { + "resolution": "해상도", + "tracking": "추적" + } + }, + "objects": { + "global": { + "tracking": "전역 추적", + "filtering": "전역 필터링" + }, + "cameras": { + "tracking": "추적" } } } diff --git a/web/public/locales/ko/views/classificationModel.json b/web/public/locales/ko/views/classificationModel.json index 227621f10..832c3723f 100644 --- a/web/public/locales/ko/views/classificationModel.json +++ b/web/public/locales/ko/views/classificationModel.json @@ -8,6 +8,28 @@ "button": { "deleteClassificationAttempts": "분류 이미지 삭제", "renameCategory": "클래스 이름 변경", - "deleteCategory": "클래스 삭제" + "deleteCategory": "클래스 삭제", + "deleteImages": "이미지 삭제", + "trainModel": "모델 훈련", + "addClassification": "분류 추가", + "deleteModels": "모델 삭제", + "editModel": "모델 편집" + }, + "tooltip": { + "trainingInProgress": "모델이 현재 학습 중입니다", + "noNewImages": "훈련할 새 이미지가 없습니다. 먼저 데이터셋에서 더 많은 이미지를 분류하세요.", + "noChanges": "마지막 훈련 이후 데이터셋에 변경 사항이 없습니다.", + "modelNotReady": "모델이 훈련 준비가 되지 않았습니다" + }, + "toast": { + "success": { + "deletedModel_other": "{{count}}개 모델을 성공적으로 삭제했습니다", + "categorizedImage": "이미지 분류 성공", + "reclassifiedImage": "이미지 재분류 성공", + "trainedModel": "모델 훈련 완료." + } + }, + "train": { + "titleShort": "최근" } } diff --git a/web/public/locales/ko/views/events.json b/web/public/locales/ko/views/events.json index 971494a81..3e357be85 100644 --- a/web/public/locales/ko/views/events.json +++ b/web/public/locales/ko/views/events.json @@ -9,9 +9,15 @@ "empty": { "alert": "다시 볼 '경보' 영상이 없습니다", "detection": "다시 볼 '대상 감지' 영상이 없습니다", - "motion": "움직임 감지 데이터가 없습니다" + "motion": "움직임 감지 데이터가 없습니다", + "recordingsDisabled": { + "title": "녹화가 활성화되어야 합니다", + "description": "다시 보기 항목은 해당 카메라에서 녹화가 활성화된 경우에만 카메라에 대해 생성할 수 있습니다." + } + }, + "timeline": { + "label": "타임라인" }, - "timeline": "타임라인", "timeline.aria": "타임라인 선택", "events": { "label": "이벤트", @@ -23,7 +29,8 @@ "aria": "상세 보기", "trackedObject_one": "추적 대상", "trackedObject_other": "추적 대상", - "noObjectDetailData": "상세 보기 데이터가 없습니다." + "noObjectDetailData": "상세 보기 데이터가 없습니다.", + "label": "세부 정보" }, "objectTrack": { "trackedPoint": "추적 포인트", @@ -47,5 +54,7 @@ "camera": "카메라", "detected": "감지됨", "suspiciousActivity": "수상한 행동", - "threateningActivity": "위협적인 행동" + "threateningActivity": "위협적인 행동", + "zoomIn": "확대", + "zoomOut": "축소" } diff --git a/web/public/locales/ko/views/explore.json b/web/public/locales/ko/views/explore.json index 513d90d84..5b9c9d587 100644 --- a/web/public/locales/ko/views/explore.json +++ b/web/public/locales/ko/views/explore.json @@ -22,10 +22,18 @@ "visionModelFeatureExtractor": "비전 모델 특징 추출기", "textModel": "Text model", "textTokenizer": "텍스트 토크나이저" - } + }, + "tips": { + "context": "모델이 다운로드된 후 추적 객체의 임베딩을 색인 재구성하는 것이 좋습니다." + }, + "error": "오류가 발생했습니다. Frigate 로그를 확인하세요." } }, "details": { "timestamp": "시간 기록" + }, + "trackedObjectDetails": "추적 객체 세부 정보", + "type": { + "details": "세부 정보" } } diff --git a/web/public/locales/ko/views/exports.json b/web/public/locales/ko/views/exports.json index 94b1a5ab7..588cdd800 100644 --- a/web/public/locales/ko/views/exports.json +++ b/web/public/locales/ko/views/exports.json @@ -2,7 +2,9 @@ "documentTitle": "내보내기 - Frigate", "search": "검색", "noExports": "내보내기가 없습니다", - "deleteExport": "내보내기 삭제", + "deleteExport": { + "label": "내보내기 삭제" + }, "deleteExport.desc": "{{exportName}}을 지우시겠습니까?", "editExport": { "title": "내보내기 이름 변경", @@ -11,10 +13,24 @@ }, "toast": { "error": { - "renameExportFailed": "내보내기 이름 변경에 실패했습니다: {{errorMessage}}" + "renameExportFailed": "내보내기 이름 변경에 실패했습니다: {{errorMessage}}", + "assignCaseFailed": "케이스 할당 업데이트 실패: {{errorMessage}}" } }, "headings": { - "uncategorizedExports": "분류되지 않은 내보내기" + "uncategorizedExports": "분류되지 않은 내보내기", + "cases": "케이스" + }, + "tooltip": { + "shareExport": "내보내기 공유", + "downloadVideo": "동영상 다운로드", + "editName": "이름 편집", + "deleteExport": "내보내기 삭제", + "assignToCase": "케이스에 추가" + }, + "caseDialog": { + "title": "케이스에 추가", + "description": "기존 케이스를 선택하거나 새 케이스를 만드세요.", + "selectLabel": "케이스" } } diff --git a/web/public/locales/ko/views/faceLibrary.json b/web/public/locales/ko/views/faceLibrary.json index a04ac45cc..a99cb3875 100644 --- a/web/public/locales/ko/views/faceLibrary.json +++ b/web/public/locales/ko/views/faceLibrary.json @@ -16,22 +16,28 @@ "selectItem": "{{item}} 선택", "documentTitle": "얼굴 라이브러리 - Frigate", "uploadFaceImage": { - "title": "얼굴 사진 올리기" + "title": "얼굴 사진 올리기", + "desc": "얼굴을 스캔하고 {{pageToggle}}에 포함하기 위해 이미지를 업로드하세요" }, "collections": "모음집", "createFaceLibrary": { "title": "모음집 만들기", "desc": "새로운 모음집 만들기", - "new": "새 얼굴 만들기" + "new": "새 얼굴 만들기", + "nextSteps": "강력한 기반을 구축하려면:
  • 최근 인식 탭을 사용하여 감지된 각 사람의 이미지를 선택하고 학습하세요.
  • 최상의 결과를 위해 정면 이미지에 집중하고, 각도가 있는 얼굴이 촬영된 이미지는 학습에 사용하지 마세요.
  • " }, "steps": { "faceName": "얼굴 이름 입력", "uploadFace": "얼굴 사진 올리기", - "nextSteps": "다음 단계" + "nextSteps": "다음 단계", + "description": { + "uploadFace": "정면을 향한 {{name}}의 얼굴이 보이는 이미지를 업로드하세요. 이미지를 얼굴만 자를 필요는 없습니다." + } }, "train": { - "title": "학습", - "aria": "학습 선택" + "title": "최근 인식", + "aria": "최근 인식 선택", + "titleShort": "최근" }, "selectFace": "얼굴 선택", "deleteFaceLibrary": { diff --git a/web/public/locales/ko/views/live.json b/web/public/locales/ko/views/live.json index 5a825a08f..c2b05d04e 100644 --- a/web/public/locales/ko/views/live.json +++ b/web/public/locales/ko/views/live.json @@ -15,7 +15,8 @@ "clickMove": { "label": "클릭해서 카메라 중앙 배치", "enable": "클릭해서 움직이기 기능 활성화", - "disable": "클릭해서 움직이기 기능 비활성화" + "disable": "클릭해서 움직이기 기능 비활성화", + "enableWithZoom": "클릭하여 이동 / 드래그하여 확대 활성화" }, "left": { "label": "PTZ 카메라 왼쪽으로 이동" diff --git a/web/public/locales/ko/views/search.json b/web/public/locales/ko/views/search.json index b898fb826..efb5c9387 100644 --- a/web/public/locales/ko/views/search.json +++ b/web/public/locales/ko/views/search.json @@ -5,7 +5,24 @@ "clear": "검색 초기화", "save": "검색 저장", "filterInformation": "필터 정보", - "delete": "저장된 검색 삭제" + "delete": "저장된 검색 삭제", + "filterActive": "필터 활성화됨" }, - "searchFor": "{{inputValue}} 검색" + "searchFor": "{{inputValue}} 검색", + "trackedObjectId": "추적 객체 ID", + "filter": { + "label": { + "cameras": "카메라", + "labels": "레이블", + "zones": "구역", + "sub_labels": "하위 레이블", + "attributes": "속성", + "search_type": "검색 유형", + "time_range": "시간 범위", + "before": "이전", + "after": "이후", + "min_score": "최소 점수", + "max_score": "최대 점수" + } + } } diff --git a/web/public/locales/ko/views/settings.json b/web/public/locales/ko/views/settings.json index c17eaa7fd..220cceb8f 100644 --- a/web/public/locales/ko/views/settings.json +++ b/web/public/locales/ko/views/settings.json @@ -29,14 +29,15 @@ "masksAndZones": "마스크와 구역 편집기 - Frigate", "motionTuner": "움직임 감지 조정 - Frigate", "object": "디버그 - Frigate", - "general": "프로필 설정 - Frigate", + "general": "UI 설정 - Frigate", "frigatePlus": "Frigate+ 설정 - Frigate", "notifications": "알림 설정 - Frigate", "cameraManagement": "카메라 관리 - Frigate", "cameraReview": "카메라 다시보기 설정 - Frigate", "globalConfig": "전체 설정 - Frigate", "cameraConfig": "카메라 설정 - Frigate", - "maintenance": "유지 관리 - Frigate" + "maintenance": "유지 관리 - Frigate", + "profiles": "프로필 - Frigate" }, "users": { "table": { @@ -219,5 +220,11 @@ "label": "새 값", "reset": "초기화" } + }, + "button": { + "overriddenGlobal": "전역 재정의됨", + "overriddenGlobalTooltip": "이 카메라는 이 섹션의 전역 설정을 재정의합니다", + "overriddenBaseConfig": "기본 설정 재정의됨", + "overriddenBaseConfigTooltip": "{{profile}} 프로필은 이 섹션의 구성 설정을 재정의합니다" } } diff --git a/web/public/locales/nb-NO/common.json b/web/public/locales/nb-NO/common.json index 921ddc77b..411463881 100644 --- a/web/public/locales/nb-NO/common.json +++ b/web/public/locales/nb-NO/common.json @@ -171,7 +171,7 @@ "configuration": "Konfigurasjon", "systemLogs": "Systemlogger", "settings": "Innstillinger", - "configurationEditor": "Rediger konfigurasjonen", + "configurationEditor": "Rediger konfigurasjonsfil", "languages": "Språk", "language": { "en": "English (Engelsk)", diff --git a/web/public/locales/nb-NO/components/dialog.json b/web/public/locales/nb-NO/components/dialog.json index 6f38ca424..1bb999200 100644 --- a/web/public/locales/nb-NO/components/dialog.json +++ b/web/public/locales/nb-NO/components/dialog.json @@ -59,15 +59,26 @@ "toast": { "success": "Eksport startet. Se filen på eksportsiden.", "error": { - "failed": "Klarte ikke å starte eksport: {{error}}", + "failed": "Kune ikke legge eksport i kø: {{error}}", "noVaildTimeSelected": "Ingen gyldig tidsperiode valgt", "endTimeMustAfterStartTime": "Sluttid må være etter starttid" }, - "view": "Vis" + "view": "Vis", + "queued": "Eksport lagt i kø. Se fremdrift på eksportsiden.", + "batchPartial": "Startet {{successful}} av {{total}} eksporter. Kameraer som feilet: {{failedCameras}}", + "batchFailed": "Kunne ikke starte {{total}} eksporter. Kameraer som feilet: {{failedCameras}}", + "batchQueuedPartial": "La {{successful}} av {{total}} eksporter i kø. Kameraer som feilet: {{failedCameras}}", + "batchQueueFailed": "Kunne ikke legge {{total}} eksporter i kø. Kameraer som feilet: {{failedCameras}}", + "batchSuccess_one": "Startet 1 eksport. Åpner saken nå.", + "batchSuccess_other": "Startet {{count}} eksporter. Åpner saken nå.", + "batchQueuedSuccess_one": "La 1 eksport i kø. Åpner saken nå.", + "batchQueuedSuccess_other": "La {{count}} eksporter i kø. Åpner saken nå." }, "fromTimeline": { "previewExport": "Forhåndsvis eksport", - "saveExport": "Lagre eksport" + "saveExport": "Lagre eksport", + "queueingExport": "Legger eksport i kø...", + "useThisRange": "Bruk dette tidsrommet" }, "name": { "placeholder": "Gi eksporten et navn" @@ -77,7 +88,49 @@ "selectOrExport": "Velg eller eksporter", "case": { "label": "Sak", - "placeholder": "Velg en sak" + "placeholder": "Velg en sak", + "newCaseOption": "Opprett ny sak", + "newCaseNamePlaceholder": "Navn på ny sak", + "newCaseDescriptionPlaceholder": "Saksbeskrivelse", + "nonAdminHelp": "En ny sak vil bli opprettet for disse eksportene." + }, + "queueing": "Legger eksport i kø...", + "tabs": { + "export": "Enkeltkamera", + "multiCamera": "Multikamera" + }, + "multiCamera": { + "timeRange": "Tidsrom", + "selectFromTimeline": "Velg fra tidslinje", + "cameraSelection": "Kameraer", + "cameraSelectionHelp": "Kameraer med sporede objekter i dette tidsrommet er forhåndsvalgt", + "checkingActivity": "Sjekker kameraaktivitet...", + "noCameras": "Ingen kameraer tilgjengelig", + "nameLabel": "Eksportnavn", + "namePlaceholder": "Valgfritt navneprefiks for disse eksportene", + "queueingButton": "Legger eksporter i kø...", + "detectionCount_one": "1 sporet objekt", + "detectionCount_other": "{{count}} sporede objekter", + "exportButton_one": "Eksporter 1 kamera", + "exportButton_other": "Eksporter {{count}} kameraer" + }, + "multi": { + "description": "Eksporter hver valgte inspeksjon. Alle eksporter vil bli gruppert under én sak.", + "descriptionNoCase": "Eksporter hver valgte inspeksjon.", + "caseNamePlaceholder": "Eksport av inspeksjon - {{date}}", + "exportingButton": "Eksporterer...", + "toast": { + "partial": "Startet {{successful}} av {{total}} eksporter. Feilet: {{failedItems}}", + "failed": "Kunne ikke starte {{total}} eksporter. Feilet: {{failedItems}}", + "started_one": "Startet 1 eksport. Åpner saken nå.", + "started_other": "Startet {{count}} eksporter. Åpner saken nå.", + "startedNoCase_one": "Startet 1 eksport.", + "startedNoCase_other": "Startet {{count}} eksporter." + }, + "title_one": "Eksporter 1 inspeksjon", + "title_other": "Eksporter {{count}} inspeksjon", + "exportButton_one": "Eksporter 1 inspeksjon", + "exportButton_other": "Eksporter {{count}} inspeksjon" } }, "streaming": { @@ -125,6 +178,14 @@ "markAsReviewed": "Merk som inspisert", "deleteNow": "Slett nå", "markAsUnreviewed": "Merk som ikke inspisert" + }, + "shareTimestamp": { + "description": "Del en tidsstemplet URL fra avspillerens nåværende posisjon, eller velg et egendefinert tidsstempel. Merk at dette ikke er en offentlig delingslenke, og at den kun er tilgjengelig for brukere med tilgang til Frigate og dette kameraet.", + "custom": "Egendefinert tidsstempel", + "title": "Del tidsstempel", + "label": "Del tidsstempel", + "button": "Del URL med tidsstempel", + "shareTitle": "Tidsstempel for Frigate-inspeksjon: {{camera}}" } }, "imagePicker": { diff --git a/web/public/locales/nb-NO/components/player.json b/web/public/locales/nb-NO/components/player.json index b08459cfc..56fe61e9a 100644 --- a/web/public/locales/nb-NO/components/player.json +++ b/web/public/locales/nb-NO/components/player.json @@ -32,7 +32,8 @@ "noPreviewFoundFor": "Ingen forhåndsvisning funnet for {{cameraName}}", "submitFrigatePlus": { "title": "Send dette bildet til Frigate+?", - "submit": "Send" + "submit": "Send", + "previewError": "Kunne ikke laste forhåndsvisning av stillbilde. Opptaket er kanskje ikke tilgjengelig for øyeblikket." }, "livePlayerRequiredIOSVersion": "iOS 17.1 eller høyere kreves for denne typen direkte-strømming.", "streamOffline": { diff --git a/web/public/locales/nb-NO/config/cameras.json b/web/public/locales/nb-NO/config/cameras.json index ef94b6f35..d2a44f51e 100644 --- a/web/public/locales/nb-NO/config/cameras.json +++ b/web/public/locales/nb-NO/config/cameras.json @@ -840,7 +840,7 @@ "label": "Opprinnelig kamerastatus" }, "friendly_name": { - "description": "Kamerats visningsnavn i Frigate-grensesnittet", + "description": "Kameraets visningsnavn i Frigate-grensesnittet", "label": "Visningsnavn" }, "label": "Kamerakonfigurasjon", diff --git a/web/public/locales/nb-NO/config/global.json b/web/public/locales/nb-NO/config/global.json index d12306320..4c669b31d 100644 --- a/web/public/locales/nb-NO/config/global.json +++ b/web/public/locales/nb-NO/config/global.json @@ -5,7 +5,7 @@ }, "safe_mode": { "label": "Trygg modus", - "description": "Når aktivert, start Frigate i trygg modus med reduserte funksjoner for feilsøking." + "description": "Når aktivert, start Frigate i trygg modus med redusert funksjonalitet for feilsøking." }, "environment_vars": { "label": "Miljøvariabler", @@ -15,7 +15,7 @@ "label": "Logging", "description": "Kontrollerer standard loggdetaljnivå og overstyringer av loggnivå per komponent.", "default": { - "label": "Loggnivå", + "label": "Loggenivå", "description": "Standard globale loggedetaljer (debug, info, warning, error)." }, "logs": { @@ -527,7 +527,7 @@ }, "roles": { "label": "Roller", - "description": "GenAI-roller (verktøy, bildeforståelse/syn, vektorrepresentasjoner); én leverandør per rolle." + "description": "GenAI-roller (chat, beskrivelser, vektorrepresentasjoner); én leverandør per rolle." }, "provider_options": { "label": "Leverandøralternativer", diff --git a/web/public/locales/nb-NO/views/configEditor.json b/web/public/locales/nb-NO/views/configEditor.json index df0cd00a9..2aa6fade0 100644 --- a/web/public/locales/nb-NO/views/configEditor.json +++ b/web/public/locales/nb-NO/views/configEditor.json @@ -1,5 +1,5 @@ { - "documentTitle": "Konfigurasjonseditor - Frigate", + "documentTitle": "Konfigurasjonsfil - Frigate", "toast": { "error": { "savingError": "Feil ved lagring av konfigurasjon" @@ -8,11 +8,11 @@ "copyToClipboard": "Konfigurasjonen ble kopiert til utklippstavlen." } }, - "configEditor": "Konfig-editor", + "configEditor": "Konfigurasjonsfil", "copyConfig": "Kopier konfigurasjonen", "saveAndRestart": "Lagre og omstart", "saveOnly": "Kun lagre", "confirm": "Avslutt uten å lagre?", - "safeConfigEditor": "Konfig-editor (Sikker modus)", + "safeConfigEditor": "Konfigurasjonsfil (Sikker modus)", "safeModeDescription": "Frigate er i sikker modus grunnet en feil i validering av konfigurasjonen." } diff --git a/web/public/locales/nb-NO/views/events.json b/web/public/locales/nb-NO/views/events.json index d1c3b02de..4a46f3f97 100644 --- a/web/public/locales/nb-NO/views/events.json +++ b/web/public/locales/nb-NO/views/events.json @@ -31,7 +31,9 @@ "timeline.aria": "Velg tidslinje", "documentTitle": "Inspeksjon - Frigate", "recordings": { - "documentTitle": "Opptak - Frigate" + "documentTitle": "Opptak - Frigate", + "invalidSharedLink": "Kunne ikke åpne tidsstemplet opptakslenke på grunn av tolkningsfeil.", + "invalidSharedCamera": "Kunne ikke åpne tidsstemplet opptakslenke på grunn av et ukjent eller uautorisert kamera." }, "calendarFilter": { "last24Hours": "Siste 24 timer" @@ -39,7 +41,7 @@ "markAsReviewed": "Merk som inspisert", "markTheseItemsAsReviewed": "Merk disse elementene som inspiserte", "selected_one": "{{count}} valgt", - "selected_other": "{{count}} valgt", + "selected_other": "{{count}} valgte", "detected": "detektert", "suspiciousActivity": "Mistenkelig aktivitet", "threateningActivity": "Truende aktivitet", diff --git a/web/public/locales/nb-NO/views/explore.json b/web/public/locales/nb-NO/views/explore.json index 6aac95d76..1e3b485bf 100644 --- a/web/public/locales/nb-NO/views/explore.json +++ b/web/public/locales/nb-NO/views/explore.json @@ -287,7 +287,10 @@ "zones": "Soner", "ratio": "Sideforhold", "area": "Område", - "score": "Score" + "score": "Score", + "computedScore": "Beregnet score", + "topScore": "Toppscore", + "toggleAdvancedScores": "Vis/skjul avanserte scoringer" } }, "annotationSettings": { diff --git a/web/public/locales/nb-NO/views/exports.json b/web/public/locales/nb-NO/views/exports.json index 481750f5c..d455fd8c5 100644 --- a/web/public/locales/nb-NO/views/exports.json +++ b/web/public/locales/nb-NO/views/exports.json @@ -14,7 +14,9 @@ "toast": { "error": { "renameExportFailed": "Kunne ikke gi nytt navn til eksport: {{errorMessage}}", - "assignCaseFailed": "Kunne ikke oppdatere sakstilknytning: {{errorMessage}}" + "assignCaseFailed": "Kunne ikke oppdatere sakstilknytning: {{errorMessage}}", + "caseSaveFailed": "Kunne ikke lagre sak: {{errorMessage}}", + "caseDeleteFailed": "Kunne ikke slette sak: {{errorMessage}}" } }, "tooltip": { @@ -22,7 +24,8 @@ "downloadVideo": "Last ned video", "editName": "Rediger navn", "deleteExport": "Slett eksport", - "assignToCase": "Legg til i sak" + "assignToCase": "Legg til i sak", + "removeFromCase": "Fjern fra sak" }, "caseDialog": { "nameLabel": "Saksnavn", @@ -35,5 +38,91 @@ "headings": { "cases": "Saker", "uncategorizedExports": "Eksporter uten sak" + }, + "toolbar": { + "newCase": "Ny sak", + "addExport": "Legg til eksport", + "editCase": "Rediger sak", + "deleteCase": "Slett sak" + }, + "deleteCase": { + "label": "Slett sak", + "desc": "Er du sikker på at du vil slette {{caseName}}?", + "descKeepExports": "Eksporter vil fortsatt være tilgjengelige som eksporter uten sak.", + "descDeleteExports": "Alle eksporter i denne saken vil bli slettet permanent.", + "deleteExports": "Slett også eksporter" + }, + "caseCard": { + "emptyCase": "Ingen eksporter ennå" + }, + "jobCard": { + "defaultName": "{{camera}}-eksport", + "queued": "Lagt i kø", + "running": "Kjører", + "preparing": "Forbereder", + "copying": "Kopierer", + "encoding": "Enkoder", + "encodingRetry": "Enkoder (nytt forsøk)", + "finalizing": "Fullfører" + }, + "caseView": { + "noDescription": "Ingen beskrivelse", + "createdAt": "Opprettet {{value}}", + "exportCount_one": "1 eksport", + "exportCount_other": "{{count}} eksporter", + "cameraCount_one": "1 kamera", + "cameraCount_other": "{{count}} kameraer", + "showMore": "Vis mer", + "showLess": "Vis mindre", + "emptyTitle": "Denne saken er tom", + "emptyDescription": "Legg til eksisterende eksporter uten sak for å holde orden i saken.", + "emptyDescriptionNoExports": "Det er ingen ledige eksporter tilgjengelig for å legges til ennå." + }, + "caseEditor": { + "createTitle": "Opprett sak", + "editTitle": "Rediger sak", + "namePlaceholder": "Saksnavn", + "descriptionPlaceholder": "Legg til notater eller kontekst for denne saken" + }, + "addExportDialog": { + "title": "Legg til eksport i {{caseName}}", + "searchPlaceholder": "Søk i eksporter uten sak", + "empty": "Ingen eksporter uten sak samsvarer med søket.", + "addButton_one": "Legg til 1 eksport", + "addButton_other": "Legg til {{count}} eksporter", + "adding": "Legger til..." + }, + "selected_one": "{{count}} valgt", + "selected_other": "{{count}} valgte", + "bulkActions": { + "addToCase": "Legg til i sak", + "moveToCase": "Flytt til sak", + "removeFromCase": "Fjern fra sak", + "delete": "Slett", + "deleteNow": "Slett nå" + }, + "bulkDelete": { + "title": "Slett eksporter", + "desc_one": "Er du sikker på at du vil slette {{count}} eksport?", + "desc_other": "Er du sikker på at du vil slette {{count}} eksporter?" + }, + "bulkRemoveFromCase": { + "title": "Fjern fra sak", + "desc_one": "Fjerne {{count}} eksport fra denne saken?", + "desc_other": "Fjerne {{count}} eksporter fra denne saken?", + "descKeepExports": "Eksporter vil bli flyttet til \"uten sak\".", + "descDeleteExports": "Eksporter vil bli slettet permanent.", + "deleteExports": "Slett eksporter i stedet" + }, + "bulkToast": { + "success": { + "delete": "Eksporter ble slettet", + "reassign": "Sakstilknytning ble oppdatert", + "remove": "Eksporter ble fjernet fra saken" + }, + "error": { + "deleteFailed": "Kunne ikke slette eksporter: {{errorMessage}}", + "reassignFailed": "Kunne ikke oppdatere sakstilknytning: {{errorMessage}}" + } } } diff --git a/web/public/locales/nb-NO/views/settings.json b/web/public/locales/nb-NO/views/settings.json index 3b0f3b4f0..6d907f91e 100644 --- a/web/public/locales/nb-NO/views/settings.json +++ b/web/public/locales/nb-NO/views/settings.json @@ -1630,7 +1630,16 @@ "itemTitle": "Strøm {{index}}" }, "searchPlaceholder": "Søk...", - "showAdvanced": "Vis avanserte innstillinger" + "showAdvanced": "Vis avanserte innstillinger", + "genaiModel": { + "placeholder": "Velg modell…", + "search": "Søk modeller…", + "noModels": "Ingen modeller tilgjengelig" + }, + "knownPlates": { + "platePlaceholder": "Kjennemerke nummer eller regex", + "namePlaceholder": "f.eks konas bil" + } }, "button": { "overriddenBaseConfigTooltip": "{{profile}}-profilen overstyrer konfigurasjonsinnstillinger i denne seksjonen", diff --git a/web/public/locales/nl/views/classificationModel.json b/web/public/locales/nl/views/classificationModel.json index 40a947afc..7d655b134 100644 --- a/web/public/locales/nl/views/classificationModel.json +++ b/web/public/locales/nl/views/classificationModel.json @@ -22,7 +22,8 @@ "deletedModel_one": "{{count}} model succesvol verwijderd", "deletedModel_other": "{{count}} modellen succesvol verwijderd", "updatedModel": "Modelconfiguratie succesvol bijgewerkt", - "renamedCategory": "Klasse succesvol hernoemd naar {{name}}" + "renamedCategory": "Klasse succesvol hernoemd naar {{name}}", + "reclassifiedImage": "Afbeelding succesvol opnieuw geclassificeerd" }, "error": { "deleteImageFailed": "Verwijderen mislukt: {{errorMessage}}", diff --git a/web/public/locales/nl/views/exports.json b/web/public/locales/nl/views/exports.json index ffeda4a9a..e90ebd92f 100644 --- a/web/public/locales/nl/views/exports.json +++ b/web/public/locales/nl/views/exports.json @@ -4,7 +4,8 @@ "toast": { "error": { "renameExportFailed": "Het is niet gelukt om de export te hernoemen: {{errorMessage}}", - "assignCaseFailed": "Kan toewijzing aan dossier niet bijwerken: {{errorMessage}}" + "assignCaseFailed": "Kan toewijzing aan dossier niet bijwerken: {{errorMessage}}", + "caseSaveFailed": "Mislukt om zaak op te slaan: {{errorMessage}}" } }, "editExport": { @@ -22,7 +23,8 @@ "downloadVideo": "Download video", "editName": "Naam bewerken", "deleteExport": "Verwijder export", - "assignToCase": "Toevoegen aan dossier" + "assignToCase": "Toevoegen aan dossier", + "removeFromCase": "Van zaak verwijderen" }, "headings": { "cases": "Gevallen", @@ -35,5 +37,31 @@ "newCaseOption": "Nieuw dossier aanmaken", "nameLabel": "Dossiernaam", "descriptionLabel": "Beschrijving" + }, + "deleteCase": { + "desc": "Weet je zeker dat je {{caseName}} wilt verwijderen?" + }, + "caseCard": { + "emptyCase": "Nog geen exports" + }, + "caseEditor": { + "createTitle": "Zaak aanmaken", + "editTitle": "Zaak wijzigen", + "namePlaceholder": "Zaaknaam", + "descriptionPlaceholder": "Voeg notities of context toe voor deze zaak" + }, + "addExportDialog": { + "title": "Voeg export toe aan {{caseName}}", + "searchPlaceholder": "Zoek ongecategoriseerde exports", + "empty": "Geen niet-gecategoriseerde exports voldoen aan deze zoekopdracht.", + "addButton_one": "Voeg 1 export toe", + "addButton_other": "Voeg {{count}} exports toe", + "adding": "Toevoegen..." + }, + "toolbar": { + "newCase": "Nieuwe zaak", + "addExport": "Export toevoegen", + "editCase": "Wijzig zaak", + "deleteCase": "Verwijder zaak" } } diff --git a/web/public/locales/nl/views/live.json b/web/public/locales/nl/views/live.json index a0b6cce79..198af35fb 100644 --- a/web/public/locales/nl/views/live.json +++ b/web/public/locales/nl/views/live.json @@ -13,7 +13,8 @@ "clickMove": { "label": "Klik in het frame om de camera te centreren", "enable": "Klikken om te bewegen inschakelen", - "disable": "Klikken om te bewegen uitschakelen" + "disable": "Klikken om te bewegen uitschakelen", + "enableWithZoom": "Schakel klikken om te verplaatsen / slepen om te zoomen in" }, "right": { "label": "Beweeg de PTZ-camera naar rechts" diff --git a/web/public/locales/pl/config/groups.json b/web/public/locales/pl/config/groups.json index 0967ef424..1d6d94b34 100644 --- a/web/public/locales/pl/config/groups.json +++ b/web/public/locales/pl/config/groups.json @@ -1 +1,73 @@ -{} +{ + "audio": { + "global": { + "detection": "Ogólne Wykrywanie", + "sensitivity": "Ogólna Czułość" + }, + "cameras": { + "detection": "Wykrywanie", + "sensitivity": "Czułość" + } + }, + "timestamp_style": { + "global": { + "appearance": "Ogólny Wygląd" + }, + "cameras": { + "appearance": "Wygląd" + } + }, + "motion": { + "global": { + "sensitivity": "Ogólna Czułość", + "algorithm": "Ogólny Algorytm" + }, + "cameras": { + "sensitivity": "Czułość", + "algorithm": "Algorytm" + } + }, + "snapshots": { + "global": { + "display": "Ogólne Ustawienia Wyświetlania" + }, + "cameras": { + "display": "Wyświetlanie" + } + }, + "detect": { + "global": { + "resolution": "Ogólna Rozdzielczość", + "tracking": "Ogólne Śledzenie" + }, + "cameras": { + "resolution": "Rozdzielczość", + "tracking": "Śledzenie" + } + }, + "objects": { + "global": { + "tracking": "Ogólne Śledzenie", + "filtering": "Ogólne Filtrowanie" + }, + "cameras": { + "tracking": "Śledzenie", + "filtering": "Filtrowanie" + } + }, + "record": { + "global": { + "retention": "Ogólne Przechowywanie", + "events": "Ogólne Zdarzenia" + }, + "cameras": { + "retention": "Przechowywanie", + "events": "Zdarzenia" + } + }, + "ffmpeg": { + "cameras": { + "cameraFfmpeg": "Argumenty FFmpeg dotyczące konkretnej kamery" + } + } +} diff --git a/web/public/locales/pl/views/explore.json b/web/public/locales/pl/views/explore.json index d18d065b8..3dfe9f509 100644 --- a/web/public/locales/pl/views/explore.json +++ b/web/public/locales/pl/views/explore.json @@ -85,7 +85,8 @@ "attributes": "Atrybuty klasyfikacji", "title": { "label": "Tytuł" - } + }, + "scoreInfo": "Informacje o wyniku" }, "objectLifecycle": { "annotationSettings": { @@ -222,6 +223,13 @@ }, "hideObjectDetails": { "label": "Ukryj ścieżkę obiektu" + }, + "debugReplay": { + "label": "Odtwarzanie debugowania", + "aria": "Wyświetl śledzony obiekt w widoku odtwarzania debugowania" + }, + "more": { + "aria": "Więcej" } }, "trackedObjectsCount_one": "{{count}} śledzony obiekt ", @@ -232,6 +240,9 @@ "confirmDelete": { "desc": "Usunięcie tego śledzonego obiektu usuwa zrzut ekranu, wszelkie zapisane osadzenia i wszystkie powiązane wpisy śledzenia obiektu. Nagrany materiał tego śledzonego obiektu w widoku Historii NIE zostanie usunięty.

    Czy na pewno chcesz kontynuować?", "title": "Potwierdź usunięcie" + }, + "toast": { + "error": "Błąd kasowania śledzonego obiektu: {{errorMessage}}" } }, "fetchingTrackedObjectsFailed": "Błąd pobierania śledzonych obiektów: {{errorMessage}}", @@ -276,7 +287,10 @@ "zones": "Strefy", "area": "Powierzchnia", "score": "Wynik", - "ratio": "Proporcje" + "ratio": "Proporcje", + "toggleAdvancedScores": "Przełącz widok wyników zaawansowanych", + "computedScore": "Obliczony wynik", + "topScore": "Najwyższy wynik" }, "heard": "{{label}} słyszałem" }, diff --git a/web/public/locales/pt-BR/common.json b/web/public/locales/pt-BR/common.json index 632155ddd..f02bdc03e 100644 --- a/web/public/locales/pt-BR/common.json +++ b/web/public/locales/pt-BR/common.json @@ -262,7 +262,8 @@ "setPassword": "Definir Senha" }, "classification": "Classificação", - "chat": "Chat" + "chat": "Chat", + "profiles": "Perfis" }, "toast": { "copyUrlToClipboard": "URL copiada para a área de transferência.", diff --git a/web/public/locales/pt-BR/config/cameras.json b/web/public/locales/pt-BR/config/cameras.json index b065dbb25..48b0de7d7 100644 --- a/web/public/locales/pt-BR/config/cameras.json +++ b/web/public/locales/pt-BR/config/cameras.json @@ -45,6 +45,13 @@ }, "label": "Configuração da Câmera", "audio_transcription": { - "label": "Transcrição de áudio" + "label": "Transcrição de áudio", + "enabled": { + "label": "Habilitar transcrição" + }, + "live_enabled": { + "label": "Transcrição em tempo real" + }, + "description": "Configurações de transcrição de áudio e voz ao vivo para eventos e legendas em tempo real." } } diff --git a/web/public/locales/pt-BR/config/global.json b/web/public/locales/pt-BR/config/global.json index a9cbd3f9c..a503c8ee9 100644 --- a/web/public/locales/pt-BR/config/global.json +++ b/web/public/locales/pt-BR/config/global.json @@ -71,9 +71,19 @@ "session_length": { "label": "Duração da sessão", "description": "Duração da sessão em segundos para sessões baseadas em JWT." + }, + "failed_login_rate_limit": { + "label": "Limites de falha de login" + }, + "refresh_time": { + "label": "Janela de atualização da sessão" } }, "audio_transcription": { - "label": "Transcrição de áudio" + "label": "Transcrição de áudio", + "live_enabled": { + "label": "Transcrição em tempo real" + }, + "description": "Configurações de transcrição de áudio e voz ao vivo para eventos e legendas em tempo real." } } diff --git a/web/public/locales/pt-BR/views/classificationModel.json b/web/public/locales/pt-BR/views/classificationModel.json index afa3fafbb..36f3539a0 100644 --- a/web/public/locales/pt-BR/views/classificationModel.json +++ b/web/public/locales/pt-BR/views/classificationModel.json @@ -15,8 +15,8 @@ "deletedCategory_one": "Classe Apagada", "deletedCategory_many": "", "deletedCategory_other": "", - "deletedImage_one": "Imagens Apagadas", - "deletedImage_many": "", + "deletedImage_one": "Imagen Apagada", + "deletedImage_many": "Imagens Apagadas", "deletedImage_other": "", "categorizedImage": "Imagem Classificada com Sucesso", "trainedModel": "Modelo treinado com sucesso.", @@ -29,14 +29,15 @@ "reclassifiedImage": "Imagem reclassificada com sucesso" }, "error": { - "deleteImageFailed": "Falha ao deletar:{{errorMessage}}", - "deleteCategoryFailed": "Falha ao deletar classe:{{errorMessage}}", + "deleteImageFailed": "Falha ao excluir:{{errorMessage}}", + "deleteCategoryFailed": "Falha ao excluir classe:{{errorMessage}}", "categorizeFailed": "Falha ao categorizar imagem:{{errorMessage}}", "deleteModelFailed": "Falha ao excluir o modelo: {{errorMessage}}", "trainingFailed": "Treinamento do modelo falhou. Verifique os logs do Frigate para mais detalhes.", "trainingFailedToStart": "Falha ao iniciar o treinamento do modelo: {{errorMessage}}", "updateModelFailed": "Falha ao atualizar modelo: {{errorMessage}}", - "renameCategoryFailed": "Falha ao renomear classe: {{errorMessage}}" + "renameCategoryFailed": "Falha ao renomear classe: {{errorMessage}}", + "reclassifyFailed": "Falha ao reclassificar imagem: {{errorMessage}}" } }, "deleteCategory": { diff --git a/web/public/locales/pt-BR/views/exports.json b/web/public/locales/pt-BR/views/exports.json index db100ff0c..83a5c298b 100644 --- a/web/public/locales/pt-BR/views/exports.json +++ b/web/public/locales/pt-BR/views/exports.json @@ -22,7 +22,8 @@ "downloadVideo": "Baixar vídeo", "editName": "Editar nome", "deleteExport": "Apagar exportação", - "assignToCase": "Adicionar ao caso" + "assignToCase": "Adicionar ao caso", + "removeFromCase": "Remover da caixa" }, "headings": { "uncategorizedExports": "Exportações não categorizadas", diff --git a/web/public/locales/pt-BR/views/live.json b/web/public/locales/pt-BR/views/live.json index c2459b640..a1b72767f 100644 --- a/web/public/locales/pt-BR/views/live.json +++ b/web/public/locales/pt-BR/views/live.json @@ -17,7 +17,8 @@ "clickMove": { "label": "Clique no quadro para centralizar a câmera", "enable": "Ativar clique para mover", - "disable": "Desativar clique para mover" + "disable": "Desativar clique para mover", + "enableWithZoom": "Habilitar clicar para mover / arrastar para zoom" }, "left": { "label": "Mova a câmera PTZ para a esquerda" diff --git a/web/public/locales/pt-BR/views/settings.json b/web/public/locales/pt-BR/views/settings.json index 799822774..c937906c4 100644 --- a/web/public/locales/pt-BR/views/settings.json +++ b/web/public/locales/pt-BR/views/settings.json @@ -34,7 +34,15 @@ "general": "Geral", "globalConfig": "Configuração global", "system": "Sistema", - "integrations": "Integrações" + "integrations": "Integrações", + "uiSettings": "Configurações de interface", + "profiles": "Perfis", + "globalDetect": "Detecção de objeto", + "globalRecording": "Gravando", + "globalFfmpeg": "FFmpeg", + "globalMotion": "Detecção de movimento", + "globalObjects": "Objetos", + "globalReview": "Revisar" }, "dialog": { "unsavedChanges": { diff --git a/web/public/locales/pt-BR/views/system.json b/web/public/locales/pt-BR/views/system.json index 922629719..431fd6ba0 100644 --- a/web/public/locales/pt-BR/views/system.json +++ b/web/public/locales/pt-BR/views/system.json @@ -50,8 +50,10 @@ "lpr": "LPR", "camera_activity": "Atividade da câmera", "system": "Sistema", - "camera": "Camera" - } + "camera": "Camera", + "all_cameras": "Todas as cameras" + }, + "empty": "Nenhuma mensagem capturada ainda" } }, "general": { diff --git a/web/public/locales/ro/components/dialog.json b/web/public/locales/ro/components/dialog.json index ec929c023..56dd59dcf 100644 --- a/web/public/locales/ro/components/dialog.json +++ b/web/public/locales/ro/components/dialog.json @@ -59,6 +59,14 @@ "desc": { "selected": "Ești sigur că vrei să ștergi toate videoclipurile înregistrate asociate acestui element de revizuire?

    Ține apăsată tasta Shift pentru a sări peste această confirmare pe viitor." } + }, + "shareTimestamp": { + "label": "Partajează timestamp-ul", + "title": "Partajează timestamp-ul", + "description": "Partajează un URL cu timestamp al poziției actuale din player sau alege un timestamp personalizat. Reține că acesta nu este un URL de partajare publică și este accesibil doar utilizatorilor care au acces la Frigate și la această cameră.", + "custom": "Timestamp personalizat", + "button": "Partajează URL-ul cu timestamp", + "shareTitle": "Timestamp review Frigate: {{camera}}" } }, "export": { @@ -86,19 +94,80 @@ "toast": { "success": "Exportul a început cu succes. Vizualizați fișierul pe pagina de exporturi.", "error": { - "failed": "Eroare la pornirea exportului: {{error}}", + "failed": "Nu s-a putut adăuga exportul în coadă: {{error}}", "endTimeMustAfterStartTime": "Ora de sfârșit trebuie să fie după ora de început", "noVaildTimeSelected": "Nu a fost selectat un interval de timp valid" }, - "view": "Vizualizează" + "view": "Vizualizează", + "queued": "Export pus la coadă. Vezi progresul pe pagina de exporturi.", + "batchSuccess_one": "A început 1 export. Se deschide cazul acum.", + "batchSuccess_few": "Au început {{count}} exporturi. Se deschide cazul acum.", + "batchSuccess_other": "Au început {{count}} de exporturi. Se deschide cazul acum.", + "batchPartial": "Au început {{successful}} din {{total}} exporturi. Camere eșuate: {{failedCameras}}", + "batchFailed": "Eșec la pornirea a {{total}} exporturi. Camere eșuate: {{failedCameras}}", + "batchQueuedSuccess_one": "1 export pus la coadă. Se deschide cazul acum.", + "batchQueuedSuccess_few": "{{count}} exporturi puse la coadă. Se deschide cazul acum.", + "batchQueuedSuccess_other": "{{count}} de exporturi puse la coadă. Se deschide cazul acum.", + "batchQueuedPartial": "S-au pus la coadă {{successful}} din {{total}} exporturi. Camere eșuate: {{failedCameras}}", + "batchQueueFailed": "Eșec la punerea la coadă a {{total}} exporturi. Camere eșuate: {{failedCameras}}" }, "fromTimeline": { "saveExport": "Salvează exportul", - "previewExport": "Previzualizează exportul" + "previewExport": "Previzualizează exportul", + "queueingExport": "Se adaugă exportul la coadă...", + "useThisRange": "Folosește acest interval" }, "case": { "label": "Caz", - "placeholder": "Selectează caz" + "placeholder": "Selectează caz", + "newCaseOption": "Creează un caz nou", + "newCaseNamePlaceholder": "Nume caz nou", + "newCaseDescriptionPlaceholder": "Descrierea cazului", + "nonAdminHelp": "Un caz nou va fi creat pentru aceste exporturi." + }, + "queueing": "Se adaugă exportul la coadă...", + "tabs": { + "export": "O singură cameră", + "multiCamera": "Mai multe camere" + }, + "multiCamera": { + "timeRange": "Interval de timp", + "selectFromTimeline": "Selectează din timeline", + "cameraSelection": "Camere", + "cameraSelectionHelp": "Camerele cu obiecte urmărite în acest interval de timp sunt pre-selectate", + "checkingActivity": "Se verifică activitatea camerei...", + "noCameras": "Nu sunt camere disponibile", + "detectionCount_one": "1 obiect urmărit", + "detectionCount_few": "{{count}} obiecte urmărite", + "detectionCount_other": "{{count}} de obiecte urmărite", + "nameLabel": "Nume export", + "namePlaceholder": "Nume de bază opțional pentru aceste exporturi", + "queueingButton": "Se adaugă exporturile la coadă...", + "exportButton_one": "Exportă 1 cameră", + "exportButton_few": "Exportă {{count}} camere", + "exportButton_other": "Exportă {{count}} de camere" + }, + "multi": { + "title_one": "Exportă 1 recenzie", + "title_few": "Exportă {{count}} recenzii", + "title_other": "Exportă {{count}} de recenzii", + "description": "Exportă fiecare recenzie selectată. Toate exporturile vor fi grupate sub un singur caz.", + "descriptionNoCase": "Exportă fiecare recenzie selectată.", + "caseNamePlaceholder": "Export recenzie - {{date}}", + "exportButton_one": "Exportă 1 recenzie", + "exportButton_few": "Exportă {{count}} recenzii", + "exportButton_other": "Exportă {{count}} de recenzii", + "exportingButton": "Se exportă...", + "toast": { + "started_one": "A început 1 export. Se deschide cazul acum.", + "started_few": "Au început {{count}} exporturi. Se deschide cazul acum.", + "started_other": "Au început {{count}} de exporturi. Se deschide cazul acum.", + "startedNoCase_one": "A început 1 export.", + "startedNoCase_few": "Au început {{count}} exporturi.", + "startedNoCase_other": "Au început {{count}} de exporturi.", + "partial": "Au început {{successful}} din {{total}} exporturi. Au eșuat: {{failedItems}}", + "failed": "Eșec la pornirea a {{total}} exporturi. Au eșuat: {{failedItems}}" + } } }, "streaming": { diff --git a/web/public/locales/ro/components/player.json b/web/public/locales/ro/components/player.json index bbd8ceab8..ebcad44a2 100644 --- a/web/public/locales/ro/components/player.json +++ b/web/public/locales/ro/components/player.json @@ -4,7 +4,8 @@ "noPreviewFoundFor": "Nu există previzualizari pentru {{cameraName}}", "submitFrigatePlus": { "title": "Trimiteti acest cadru catre Frigate+?", - "submit": "Trimite" + "submit": "Trimite", + "previewError": "Nu s-a putut încărca previzualizarea snapshot-ului. S-ar putea ca înregistrarea să nu fie disponibilă în acest moment." }, "livePlayerRequiredIOSVersion": "iOS 17.1 sau mai recent este necesar pentru acest tip de stream live.", "streamOffline": { diff --git a/web/public/locales/ro/config/global.json b/web/public/locales/ro/config/global.json index d07e3bab4..f5613dc37 100644 --- a/web/public/locales/ro/config/global.json +++ b/web/public/locales/ro/config/global.json @@ -2161,7 +2161,7 @@ }, "roles": { "label": "Roluri", - "description": "Roluri GenAI (unelte, viziune, înglobări); un furnizor per rol." + "description": "Roluri GenAI (chat, descrieri, înglobări); un furnizor per rol." }, "provider_options": { "label": "Opțiuni furnizor", diff --git a/web/public/locales/ro/views/events.json b/web/public/locales/ro/views/events.json index 455257a92..5adb14169 100644 --- a/web/public/locales/ro/views/events.json +++ b/web/public/locales/ro/views/events.json @@ -25,7 +25,9 @@ }, "documentTitle": "Revizuieste - Frigate", "recordings": { - "documentTitle": "Inregistrari - frigate" + "documentTitle": "Inregistrari - frigate", + "invalidSharedLink": "Nu s-a putut deschide linkul înregistrării cu timestamp din cauza unei erori de parsare.", + "invalidSharedCamera": "Nu s-a putut deschide linkul înregistrării cu timestamp din cauza unei camere necunoscute sau neautorizate." }, "calendarFilter": { "last24Hours": "Ultimele 24 de ore" @@ -39,7 +41,7 @@ "camera": "Camera foto", "detections": "Detecții", "detected": "detectat", - "selected_one": "{{count}} selectate", + "selected_one": "{{count}} selectat", "selected_other": "{{count}} selectate", "suspiciousActivity": "Activitate suspectă", "threateningActivity": "Activitate amenințătoare", diff --git a/web/public/locales/ro/views/explore.json b/web/public/locales/ro/views/explore.json index 5d4057b0b..4cb9f3c7f 100644 --- a/web/public/locales/ro/views/explore.json +++ b/web/public/locales/ro/views/explore.json @@ -289,7 +289,10 @@ "zones": "Zone", "ratio": "Raport", "area": "Aria", - "score": "Scor" + "score": "Scor", + "computedScore": "Scor calculat", + "topScore": "Cel mai mare scor", + "toggleAdvancedScores": "Comută scorurile avansate" } }, "annotationSettings": { diff --git a/web/public/locales/ro/views/exports.json b/web/public/locales/ro/views/exports.json index 1b1e0b2d8..be984037f 100644 --- a/web/public/locales/ro/views/exports.json +++ b/web/public/locales/ro/views/exports.json @@ -14,7 +14,9 @@ "toast": { "error": { "renameExportFailed": "Redenumirea exportului a eșuat: {{errorMessage}}", - "assignCaseFailed": "Actualizarea atribuirii cazului a eșuat: {{errorMessage}}" + "assignCaseFailed": "Actualizarea atribuirii cazului a eșuat: {{errorMessage}}", + "caseSaveFailed": "Salvarea cazului a eșuat: {{errorMessage}}", + "caseDeleteFailed": "Ștergerea cazului a eșuat: {{errorMessage}}" } }, "tooltip": { @@ -22,7 +24,8 @@ "downloadVideo": "Descarcă video", "editName": "Editează numele", "deleteExport": "Șterge exportul", - "assignToCase": "Adaugă la un caz" + "assignToCase": "Adaugă la un caz", + "removeFromCase": "Elimină din caz" }, "headings": { "cases": "Cazuri", @@ -35,5 +38,91 @@ "newCaseOption": "Creează un caz nou", "nameLabel": "Numele cazului", "descriptionLabel": "Descriere" + }, + "toolbar": { + "newCase": "Caz nou", + "addExport": "Adaugă export", + "editCase": "Editează cazul", + "deleteCase": "Șterge cazul" + }, + "deleteCase": { + "label": "Șterge cazul", + "desc": "Sigur vrei să ștergi {{caseName}}?", + "descKeepExports": "Exporturile vor rămâne disponibile ca exporturi necategorizate.", + "descDeleteExports": "Toate exporturile din acest caz vor fi șterse definitiv.", + "deleteExports": "Șterge și exporturile" + }, + "caseCard": { + "emptyCase": "Niciun export încă" + }, + "jobCard": { + "defaultName": "Export {{camera}}", + "queued": "În așteptare", + "running": "În rulare", + "preparing": "Pregătire", + "copying": "Copiere", + "encoding": "Codare", + "encodingRetry": "Codare (reîncercare)", + "finalizing": "Finalizare" + }, + "caseView": { + "noDescription": "Fără descriere", + "createdAt": "Creat {{value}}", + "exportCount_one": "1 export", + "exportCount_other": "{{count}} exporturi", + "cameraCount_one": "1 cameră", + "cameraCount_other": "{{count}} camere", + "showMore": "Afișează mai mult", + "showLess": "Afișează mai puțin", + "emptyTitle": "Acest caz este gol", + "emptyDescription": "Adaugă exporturile necategorizate existente pentru a menține cazul organizat.", + "emptyDescriptionNoExports": "Nu există încă exporturi necategorizate disponibile pentru a fi adăugate." + }, + "caseEditor": { + "createTitle": "Creează caz", + "editTitle": "Editează cazul", + "namePlaceholder": "Nume caz", + "descriptionPlaceholder": "Adaugă note sau context pentru acest caz" + }, + "addExportDialog": { + "title": "Adaugă export la {{caseName}}", + "searchPlaceholder": "Caută exporturi necategorizate", + "empty": "Niciun export necategorizat nu se potrivește cu această căutare.", + "addButton_one": "Adaugă 1 export", + "addButton_other": "Adaugă {{count}} exporturi", + "adding": "Se adaugă..." + }, + "selected_one": "{{count}} selectat", + "selected_other": "{{count}} selectate", + "bulkActions": { + "addToCase": "Adaugă la caz", + "moveToCase": "Mută la caz", + "removeFromCase": "Elimină din caz", + "delete": "Șterge", + "deleteNow": "Șterge acum" + }, + "bulkDelete": { + "title": "Șterge exporturile", + "desc_one": "Sigur vrei să ștergi {{count}} export?", + "desc_other": "Sigur vrei să ștergi {{count}} exporturi?" + }, + "bulkRemoveFromCase": { + "title": "Elimină din caz", + "desc_one": "Elimini {{count}} export din acest caz?", + "desc_other": "Elimini {{count}} exporturi din acest caz?", + "descKeepExports": "Exporturile vor fi mutate la necategorizate.", + "descDeleteExports": "Exporturile vor fi șterse definitiv.", + "deleteExports": "Șterge exporturile în schimb" + }, + "bulkToast": { + "success": { + "delete": "Exporturile au fost șterse cu succes", + "reassign": "Alocarea cazului a fost actualizată cu succes", + "remove": "Exporturile au fost eliminate din caz cu succes" + }, + "error": { + "deleteFailed": "Ștergerea exporturilor a eșuat: {{errorMessage}}", + "reassignFailed": "Actualizarea alocării cazului a eșuat: {{errorMessage}}" + } } } diff --git a/web/public/locales/ro/views/settings.json b/web/public/locales/ro/views/settings.json index 632f6137e..153b64953 100644 --- a/web/public/locales/ro/views/settings.json +++ b/web/public/locales/ro/views/settings.json @@ -1661,7 +1661,16 @@ "empty": "Nicio etichetă disponibilă", "allNonAlertDetections": "Toată activitatea fără alertă va fi inclusă ca detecții." }, - "addCustomLabel": "Adaugă etichetă personalizată..." + "addCustomLabel": "Adaugă etichetă personalizată...", + "genaiModel": { + "placeholder": "Selectează modelul…", + "search": "Caută modele…", + "noModels": "Niciun model disponibil" + }, + "knownPlates": { + "namePlaceholder": "ex. Mașina soției", + "platePlaceholder": "Număr plăcuță sau regex" + } }, "globalConfig": { "title": "Configurare Globală", diff --git a/web/public/locales/ru/common.json b/web/public/locales/ru/common.json index 54e214855..db9390ed8 100644 --- a/web/public/locales/ru/common.json +++ b/web/public/locales/ru/common.json @@ -260,7 +260,8 @@ "setPassword": "Установить пароль" }, "appearance": "Внешний вид", - "classification": "Распознование" + "classification": "Распознование", + "profiles": "Профили" }, "pagination": { "label": "пагинация", diff --git a/web/public/locales/ru/components/dialog.json b/web/public/locales/ru/components/dialog.json index b935670c2..562e8bc08 100644 --- a/web/public/locales/ru/components/dialog.json +++ b/web/public/locales/ru/components/dialog.json @@ -6,7 +6,8 @@ "title": "Frigate перезапускается", "content": "Эта страница перезагрузится через {{countdown}} сек.", "button": "Принудительная перезагрузка" - } + }, + "description": "Это перезагрузки перезагрузит Frigate." }, "explore": { "plus": { @@ -76,6 +77,10 @@ "fromTimeline": { "saveExport": "Сохранить экспорт", "previewExport": "Предпросмотр экспорта" + }, + "case": { + "label": "Случай", + "placeholder": "Выберите случай" } }, "streaming": { diff --git a/web/public/locales/ru/config/global.json b/web/public/locales/ru/config/global.json index 5e7de1ab3..64b495811 100644 --- a/web/public/locales/ru/config/global.json +++ b/web/public/locales/ru/config/global.json @@ -83,5 +83,59 @@ "label": "Конфигурация стационарных объектов", "description": "Настройки для обнаружения и управления объектами, которые остаются неподвижными в течение определенного периода времени." } + }, + "version": { + "label": "Текущая версия конфигурации", + "description": "Число или строка версии текущей конфигурации, которая может использоваться для определения миграций или форматирования изменений." + }, + "safe_mode": { + "label": "Безопасный режим", + "description": "Когда включено, Frigate запустится в безопасном режиме с ограниченными функциями для поиска неисправностей." + }, + "environment_vars": { + "label": "Переменные окружения", + "description": "Пары ключ/значения для переменных окружения которые необходимо задать для процесса Frigate в Home Assistant OS. Пользователи, которые не исползуют HAOS должны испольовать переменные окружения в Docker." + }, + "logger": { + "label": "Логирование", + "description": "Управляет уровнем логирования по умолчанию и переопределением уровня для каждого компонента.", + "default": { + "label": "Уровень логирования", + "description": "Стандартный глобальный уровень логирования (debug, info, warning, error)." + }, + "logs": { + "label": "Уровень логирования для каждого процесса" + } + }, + "auth": { + "label": "Аутентификация", + "description": "Настройки аутентификации и сеанса, включая параметры cookie и ограничения скорости.", + "enabled": { + "label": "Включить аутентификацию", + "description": "Включить встроенную аутентификацию для интерфейса Frigate." + }, + "reset_admin_password": { + "label": "Сбросить пароль администратора", + "description": "Если выбрано, сбросить пароль администратора при запуске и отобразить новый пароль в логе." + }, + "cookie_name": { + "label": "Имя куки JWT", + "description": "Имя куки, используемого для хранения JWT токена для стандартной аутенфикации." + }, + "cookie_secure": { + "label": "Флаг \"безопасный куки\"", + "description": "Устанавливает флаг \"secure\" на куки аутенфикации; должно быть включено когда используется TLS." + }, + "session_length": { + "label": "Длинна сессии", + "description": "Длина сессии в секундах для JWT сессий." + }, + "refresh_time": { + "label": "Окно обновления сессии", + "description": "Когда сессия в стольки секундах от истечения, обновить её обратно к полной длительности." + }, + "failed_login_rate_limit": { + "label": "Лимит неудавшихся попыток логина" + } } } diff --git a/web/public/locales/ru/config/groups.json b/web/public/locales/ru/config/groups.json index 0967ef424..d69c49582 100644 --- a/web/public/locales/ru/config/groups.json +++ b/web/public/locales/ru/config/groups.json @@ -1 +1,64 @@ -{} +{ + "audio": { + "global": { + "sensitivity": "Общая чувствительность" + }, + "cameras": { + "detection": "Обнаружение", + "sensitivity": "Чувствительность" + } + }, + "timestamp_style": { + "global": { + "appearance": "Глобальный вид" + }, + "cameras": { + "appearance": "Вид" + } + }, + "motion": { + "global": { + "sensitivity": "Глобальная чувствительность", + "algorithm": "Глобальный алгоритм" + }, + "cameras": { + "sensitivity": "Чувствительность", + "algorithm": "Алгоритм" + } + }, + "detect": { + "global": { + "resolution": "Глобальное разрешение", + "tracking": "Глобальное отслеживание" + }, + "cameras": { + "resolution": "Разрешение", + "tracking": "Отслеживание" + } + }, + "objects": { + "global": { + "tracking": "Глобальное отслеживание", + "filtering": "Глобальная фильтрация" + }, + "cameras": { + "tracking": "Отслеживание", + "filtering": "Фильтрация" + } + }, + "record": { + "global": { + "retention": "Глобальное сохранение данных", + "events": "Глобальные события" + }, + "cameras": { + "retention": "Сохранение данных", + "events": "События" + } + }, + "ffmpeg": { + "cameras": { + "cameraFfmpeg": "Аргументы FFmpeg для этой камеры" + } + } +} diff --git a/web/public/locales/ru/config/validation.json b/web/public/locales/ru/config/validation.json index 0967ef424..1d16abf7a 100644 --- a/web/public/locales/ru/config/validation.json +++ b/web/public/locales/ru/config/validation.json @@ -1 +1,31 @@ -{} +{ + "maximum": "Должно быть максимум {{limit}}", + "exclusiveMinimum": "Должно быть больше {{limit}}", + "exclusiveMaximum": "Должно быть не более {{limit}}", + "minLength": "Должно быть не менее {{limit}} символов", + "maxLength": "Должно быть не более {{limit}} символов", + "minItems": "Должно быть не менее {{limit}} значений", + "maxItems": "Должно быть не более {{limit}} значений", + "pattern": "Неправильный формат", + "required": "Это поле обязательно", + "type": "Неправильный тип значения", + "enum": "Должно быть одним из списка разрешенных значений", + "const": "Значение не совпадает с ожидаемой константой", + "uniqueItems": "Все значения должны быть уникальны", + "format": "Неправильный формат", + "additionalProperties": "Неизвестное значение недопустимо", + "oneOf": "Должно совпадать только с одной из разрешенных схем", + "anyOf": "Должно совпадать как минимум с одной из разрешенных схем", + "proxy": { + "header_map": { + "roleHeaderRequired": "Заголовок роли требуется когда маппинги ролей настроены." + } + }, + "ffmpeg": { + "inputs": { + "rolesUnique": "Каждой роли может быть назначен только один входной поток.", + "detectRequired": "Как минимум один входной поток должен быть назначен роли 'detect'.", + "hwaccelDetectOnly": "Только входной поток с ролью detect может настраивать аппаратное ускорение." + } + } +} diff --git a/web/public/locales/ru/views/classificationModel.json b/web/public/locales/ru/views/classificationModel.json index 6dbe7a4b1..121391296 100644 --- a/web/public/locales/ru/views/classificationModel.json +++ b/web/public/locales/ru/views/classificationModel.json @@ -18,11 +18,11 @@ "toast": { "success": { "deletedCategory_one": "Класс удалён", - "deletedCategory_few": "", - "deletedCategory_many": "", + "deletedCategory_few": "Класса удалено", + "deletedCategory_many": "Классов удалено", "deletedImage_one": "Изображения удалены", - "deletedImage_few": "", - "deletedImage_many": "", + "deletedImage_few": "Изображения удалено", + "deletedImage_many": "Изображений удалено", "deletedModel_one": "Успешно удалена {{count}} модель", "deletedModel_few": "Успешно удалены {{count}} модели", "deletedModel_many": "Успешно удалены {{count}} моделей", @@ -30,7 +30,8 @@ "trainedModel": "Модель успешно обучена.", "trainingModel": "Обучение модели успешно запущено.", "updatedModel": "Конфигурация модели успешно обновлена", - "renamedCategory": "Класс успешно переименован в {{name}}" + "renamedCategory": "Класс успешно переименован в {{name}}", + "reclassifiedImage": "Изображение успешно переклассифцировано" }, "error": { "deleteImageFailed": "Не удалось удалить: {{errorMessage}}", diff --git a/web/public/locales/ru/views/events.json b/web/public/locales/ru/views/events.json index a506ea452..20fa143ae 100644 --- a/web/public/locales/ru/views/events.json +++ b/web/public/locales/ru/views/events.json @@ -16,7 +16,9 @@ "description": "Элементы обзора могут быть созданы для камеры только в том случае, если запись включена для этой камеры." } }, - "timeline": "Таймлайн", + "timeline": { + "label": "Хронология" + }, "timeline.aria": "Выбор таймлайна", "events": { "label": "События", diff --git a/web/public/locales/ru/views/exports.json b/web/public/locales/ru/views/exports.json index c14a578ca..70f8753b6 100644 --- a/web/public/locales/ru/views/exports.json +++ b/web/public/locales/ru/views/exports.json @@ -2,7 +2,9 @@ "documentTitle": "Экспорт - Frigate", "search": "Поиск", "noExports": "Не найдено файлов экспорта", - "deleteExport": "Удалить экспорт", + "deleteExport": { + "label": "Удалить экспорт" + }, "deleteExport.desc": "Вы уверены, что хотите удалить {{exportName}}?", "editExport": { "title": "Переименовать экспорт", @@ -11,13 +13,27 @@ }, "toast": { "error": { - "renameExportFailed": "Не удалось переименовать экспорт: {{errorMessage}}" + "renameExportFailed": "Не удалось переименовать экспорт: {{errorMessage}}", + "assignCaseFailed": "Не удалось обновить назначение случая: {{errorMessage}}" } }, "tooltip": { "shareExport": "Поделиться экспортом", "downloadVideo": "Скачать видео", "editName": "Изменить название", - "deleteExport": "Удалить экспорт" + "deleteExport": "Удалить экспорт", + "assignToCase": "Добавить в случай" + }, + "headings": { + "cases": "Случаи", + "uncategorizedExports": "Некатегоризированные экспорты" + }, + "caseDialog": { + "title": "Добавить в случай", + "description": "Выберите существующий случай или создайте новый.", + "selectLabel": "Случай", + "newCaseOption": "Создать новый случай", + "nameLabel": "Название случая", + "descriptionLabel": "Описание" } } diff --git a/web/public/locales/ru/views/faceLibrary.json b/web/public/locales/ru/views/faceLibrary.json index 90aa901d1..d3950b3a9 100644 --- a/web/public/locales/ru/views/faceLibrary.json +++ b/web/public/locales/ru/views/faceLibrary.json @@ -13,7 +13,8 @@ "description": { "placeholder": "Введите название коллекции", "addFace": "Добавьте новую коллекцию в библиотеку лиц, загрузив свое первое изображение.", - "invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчёркивания и дефисы." + "invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчёркивания и дефисы.", + "nameCannotContainHash": "Имя не может содержать #." }, "createFaceLibrary": { "desc": "Создание новой коллекции", diff --git a/web/public/locales/ru/views/live.json b/web/public/locales/ru/views/live.json index 3cf017a94..437a44af6 100644 --- a/web/public/locales/ru/views/live.json +++ b/web/public/locales/ru/views/live.json @@ -1,5 +1,7 @@ { - "documentTitle": "Прямой эфир - Frigate", + "documentTitle": { + "default": "Прямой эфир - Frigate" + }, "documentTitle.withCamera": "{{camera}} - Прямой эфир - Frigate", "lowBandwidthMode": "Экономичный режим", "twoWayTalk": { @@ -15,7 +17,8 @@ "clickMove": { "label": "Кликните в кадре для центрирования камеры", "enable": "Включить перемещение по клику", - "disable": "Отключить перемещение по клику" + "disable": "Отключить перемещение по клику", + "enableWithZoom": "Включить \"клик для перемещения / перетащить для масштабирования\"" }, "left": { "label": "Переместить PTZ-камеру влево" diff --git a/web/public/locales/ru/views/settings.json b/web/public/locales/ru/views/settings.json index 504c51178..8eb69ecc4 100644 --- a/web/public/locales/ru/views/settings.json +++ b/web/public/locales/ru/views/settings.json @@ -12,7 +12,11 @@ "notifications": "Настройки уведомлений - Frigate", "enrichments": "Настройки обогащения - Frigate", "cameraManagement": "Управление камерами - Frigate", - "cameraReview": "Настройки просмотра камеры - Frigate" + "cameraReview": "Настройки просмотра камеры - Frigate", + "globalConfig": "Глобальная конфигурация - Frigate", + "cameraConfig": "Настройки камеры - Frigate", + "maintenance": "Обслуживание - Frigate", + "profiles": "Профили - Frigate" }, "menu": { "cameras": "Настройки камеры", @@ -28,7 +32,14 @@ "triggers": "Триггеры", "cameraManagement": "Управление", "cameraReview": "Обзор", - "roles": "Роли" + "roles": "Роли", + "general": "Общее", + "globalConfig": "Глобальная конфигурация", + "system": "Система", + "integrations": "Интеграции", + "uiSettings": "Настройки интерфейса", + "profiles": "Профили", + "globalDetect": "Обнаружение объектов" }, "dialog": { "unsavedChanges": { @@ -1258,5 +1269,11 @@ "success": "Конфигурация классификации обзора была сохранена. Перезапустите Frigate для применения изменений." } } + }, + "button": { + "overriddenGlobal": "Перезаписано (глобально)", + "overriddenGlobalTooltip": "Эта камера перезаписывает глобальные настройки в этой секции", + "overriddenBaseConfig": "Перезаписано (базовые настройки)", + "overriddenBaseConfigTooltip": "Перезаписи настроек профиля {{profile}} в этой секции" } } diff --git a/web/public/locales/ru/views/system.json b/web/public/locales/ru/views/system.json index 031713632..887678a20 100644 --- a/web/public/locales/ru/views/system.json +++ b/web/public/locales/ru/views/system.json @@ -7,7 +7,8 @@ "logs": { "frigate": "Логи Frigate - Frigate", "go2rtc": "Логи Go2RTC - Frigate", - "nginx": "Логи Nginx - Frigate" + "nginx": "Логи Nginx - Frigate", + "websocket": "Логи сообщений - Frigate" } }, "title": "Система", @@ -33,6 +34,27 @@ "fetchingLogsFailed": "Ошибка получения логов: {{errorMessage}}", "whileStreamingLogs": "Ошибка при потоковой передаче логов: {{errorMessage}}" } + }, + "websocket": { + "label": "Сообщения", + "pause": "Пауза", + "resume": "Продолжить", + "clear": "Очистить", + "filter": { + "all": "Все топики", + "topics": "Топики", + "events": "События", + "classification": "Классификация", + "face_recognition": "Распознавание лиц", + "lpr": "Распознавание номерных знаков", + "camera_activity": "Активность камеры", + "system": "Система", + "camera": "Камера", + "all_cameras": "Все камеры", + "cameras_count_one": "{{count}} камера", + "cameras_count_other": "{{count}} камеры" + }, + "empty": "Сообщения ещё не были получены" } }, "general": { diff --git a/web/public/locales/tr/common.json b/web/public/locales/tr/common.json index 2a97d8d0f..08b415ced 100644 --- a/web/public/locales/tr/common.json +++ b/web/public/locales/tr/common.json @@ -123,7 +123,19 @@ "twoWayTalk": "Çift Yönlü Ses", "close": "Kapat", "delete": "Sil", - "continue": "Devam Et" + "continue": "Devam Et", + "add": "Ekle", + "applying": "Uygulanıyor…", + "undo": "Geri al", + "copiedToClipboard": "Panoya kopyaladı", + "modified": "Değiştirilmiş", + "overridden": "Üstüne yazılmış", + "resetToGlobal": "Genele sıfırla", + "resetToDefault": "Varsayılana sıfırla", + "saveAll": "Hepsini Kaydet", + "savingAll": "Hepsi Kaydediliyor…", + "undoAll": "Hepsini Geri Al", + "retry": "Yeniden dene" }, "menu": { "systemLogs": "Sistem günlükleri", @@ -179,7 +191,8 @@ "bg": "Български (Bulgarca)", "gl": "Galego (Galiçyaca)", "id": "Bahasa Indonesia (Endonezce)", - "ur": "اردو (Urduca)" + "ur": "اردو (Urduca)", + "hr": "Hrvatski (Hırvatça)" }, "withSystem": "Sistem", "theme": { @@ -225,7 +238,10 @@ "faceLibrary": "Yüz Veritabanı", "systemMetrics": "Sistem metrikleri", "uiPlayground": "UI Deneme Alanı", - "classification": "Sınıflandırma" + "classification": "Sınıflandırma", + "profiles": "Profiller", + "actions": "Eylemler", + "chat": "Sohbet" }, "label": { "back": "Geri", @@ -283,7 +299,8 @@ "error": { "noMessage": "Yapılandırma değişiklikleri kaydedilemedi", "title": "Yapılandırma değişiklikleri kaydedilemedi: {{errorMessage}}" - } + }, + "success": "Yapılandırma değişiklikleri kaydedildi." } }, "selectItem": "{{item}} seçin", @@ -305,5 +322,7 @@ }, "information": { "pixels": "{{area}}px" - } + }, + "no_items": "Öge bulunmuyor", + "validation_errors": "Doğrulama Hataları" } diff --git a/web/public/locales/tr/components/dialog.json b/web/public/locales/tr/components/dialog.json index 35fe45170..19cf03c62 100644 --- a/web/public/locales/tr/components/dialog.json +++ b/web/public/locales/tr/components/dialog.json @@ -6,7 +6,8 @@ "content": "Bu sayfa {{countdown}} saniye sonra yeniden yüklenecektir.", "title": "Frigate Yeniden Başlatılıyor", "button": "Şimdi Yeniden Yükle" - } + }, + "description": "Bu Frigate'i kısa süreliğine yeniden başlayana kadar durduracak." }, "explore": { "plus": { @@ -65,7 +66,11 @@ "endTimeMustAfterStartTime": "Bitiş zamanı başlangıç zamanından sonra olmalıdır", "noVaildTimeSelected": "Geçerli bir zaman aralığı seçilmedi" }, - "view": "Görüntüle" + "view": "Görüntüle", + "queued": "Dışa aktarımlar kuyruğa alındı. İlerlemeyi dışa aktarım sayfasından görebilirsiniz.", + "batchSuccess_one": "1 Adet dışa aktarım başlatıldı. Durum açılıyor.", + "batchSuccess_other": "{{count}} Adet dışa aktarım başlatıldı. Durum açılıyor.", + "batchPartial": "{{total}} üzerinden {{successful}} adet dışa aktarım başlatıldı. Başarısız: {{failedCameras}}" }, "fromTimeline": { "saveExport": "Dışa Aktarımı Kaydet", @@ -73,6 +78,52 @@ }, "name": { "placeholder": "Dışa Aktarımı Adlandırın" + }, + "case": { + "newCaseOption": "Yeni durum oluştur", + "newCaseNamePlaceholder": "Yeni durum ismi", + "newCaseDescriptionPlaceholder": "Durum açıklaması", + "label": "Durum", + "nonAdminHelp": "Bu dışa aktarımlar için yeni durumlar oluşturulacak.", + "placeholder": "Durum seç" + }, + "queueing": "Dışa aktarımlar kuyruğa alınıyor...", + "tabs": { + "export": "Tek Kamera", + "multiCamera": "Çoklu Kamera" + }, + "multiCamera": { + "timeRange": "Zaman Aralığı", + "selectFromTimeline": "Zaman çizelgesinden seç", + "cameraSelection": "Kameralar", + "cameraSelectionHelp": "Bu zaman aralığında ki obje takibi olan kameralar önceden seçildi", + "checkingActivity": "Kamera faliyeti kontrol ediliyor...", + "noCameras": "Kamera mevcut değil", + "detectionCount_one": "1 adet takip edilen obje", + "detectionCount_other": "{{count}} adet takip edilen obje", + "nameLabel": "Dışa aktarım ismi", + "namePlaceholder": "Dışa aktarım için opsiyonel temel isim", + "queueingButton": "Dışa aktarımlar kuyruğa alınıyor...", + "exportButton_one": "1 Adet Kamera Dışarı Aktarıldı", + "exportButton_other": "{{count}} Adet Kamera Dışarı Aktarıldı" + }, + "multi": { + "title_one": "1 Adet Değerlendirme Dışarı Aktarıldı", + "title_other": "{{count}} Adet Değerlendirme Dışarı Aktarıldı", + "description": "Seçilmiş değerlendirmeleri tek tek dışa aktarın. Bütün dışa aktarımlar tek bir durum altında toplanacak.", + "descriptionNoCase": "Seçilmiş değerlendirmeleri tek tek dışa aktar.", + "caseNamePlaceholder": "Değerlendirme dışa aktarımı - {{date}}", + "exportButton_one": "1 Adet Değerlendirme'yi dışa akatar", + "exportButton_other": "{{count}} Adet Değerlendirme'yi dışa akatar", + "exportingButton": "Dışa aktarılıyor...", + "toast": { + "started_one": "1 Adet dışa aktarın başladı. Durum açılıyor.", + "started_other": "{{count}} Adet dışa aktarın başladı. Durum açılıyor.", + "startedNoCase_one": "1 Adet dışa aktarım başladı.", + "startedNoCase_other": "{{count}} Adet dışa aktarım başladı.", + "partial": "{{total}} üzerinden {{successful}} dışa aktarıldı. Başarısız: {{failedItems}}", + "failed": "{{total}} Adet dışa aktarım başarısız oldu. Başarısız: {{failedItems}}" + } } }, "streaming": { diff --git a/web/public/locales/tr/components/player.json b/web/public/locales/tr/components/player.json index 6a7950369..953094469 100644 --- a/web/public/locales/tr/components/player.json +++ b/web/public/locales/tr/components/player.json @@ -46,6 +46,7 @@ "livePlayerRequiredIOSVersion": "Bu canlı yayın türü için iOS 17.1 veya daha yeni sürüm gereklidir.", "submitFrigatePlus": { "title": "Bu kare Frigate+'ya gönderilsin mi?", - "submit": "Gönder" + "submit": "Gönder", + "previewError": "Önizleme şuan aktif edilemiyor. Kayıt şuan mevcut olmayabilir." } } diff --git a/web/public/locales/tr/config/cameras.json b/web/public/locales/tr/config/cameras.json index 7bc693e87..9ee3e0442 100644 --- a/web/public/locales/tr/config/cameras.json +++ b/web/public/locales/tr/config/cameras.json @@ -1,5 +1,18 @@ { "name": { - "label": "Kamera ismi" - } + "label": "Kamera adı", + "description": "Kamera adı gereklidir" + }, + "friendly_name": { + "label": "Kolay ad", + "description": "Frigate arayüzünde kullanılacak kolay ad" + }, + "enabled": { + "label": "Etkin", + "description": "Etkin" + }, + "audio": { + "label": "Ses olayları" + }, + "label": "Kamera Konfigürasyonu" } diff --git a/web/public/locales/tr/config/global.json b/web/public/locales/tr/config/global.json index 4b4308cb3..e86122ead 100644 --- a/web/public/locales/tr/config/global.json +++ b/web/public/locales/tr/config/global.json @@ -1,8 +1,19 @@ { "safe_mode": { - "label": "Güvenli mod" + "label": "Güvenli mod", + "description": "Etkinleştirildiğinde, Firagate'i sorun girderme için kısıtlı özelliklere sahip güvenli modda başlat." }, "environment_vars": { "label": "Ortam değişkenleri" + }, + "audio": { + "label": "Ses olayları" + }, + "version": { + "label": "Mevcut konfigürasyon versiyonu", + "description": "Taşıma veya biçimlendirme değişikliklerini tespit etmeye yardımcı olmak için etkin konfigürasyonun sayısal veya metin tabanlı sürümü." + }, + "logger": { + "label": "Kayıt" } } diff --git a/web/public/locales/tr/config/groups.json b/web/public/locales/tr/config/groups.json index 0967ef424..c6e643d6b 100644 --- a/web/public/locales/tr/config/groups.json +++ b/web/public/locales/tr/config/groups.json @@ -1 +1,71 @@ -{} +{ + "audio": { + "global": { + "detection": "Genel Tespit", + "sensitivity": "Genel Hassasiyet" + }, + "cameras": { + "detection": "Tespit", + "sensitivity": "Hassasiyet" + } + }, + "timestamp_style": { + "global": { + "appearance": "Genel Görünüm" + }, + "cameras": { + "appearance": "Görünüm" + } + }, + "detect": { + "cameras": { + "resolution": "Çözünürlük", + "tracking": "Takip" + }, + "global": { + "resolution": "Genel Çözünürlük", + "tracking": "Genel Takip" + } + }, + "objects": { + "global": { + "tracking": "Genel Takip", + "filtering": "Genel Filtreleme" + }, + "cameras": { + "tracking": "Takip", + "filtering": "Filtreleme" + } + }, + "record": { + "global": { + "events": "Genel Etkinlikler" + }, + "cameras": { + "events": "Etkinlikler" + } + }, + "ffmpeg": { + "cameras": { + "cameraFfmpeg": "Kamera özel FFmpeg argümanları" + } + }, + "motion": { + "global": { + "sensitivity": "Genel Hassasiyet", + "algorithm": "Genel Algoritma" + }, + "cameras": { + "sensitivity": "Hassasiyet", + "algorithm": "Algoritma" + } + }, + "snapshots": { + "global": { + "display": "Genel Görüntü" + }, + "cameras": { + "display": "Görüntü" + } + } +} diff --git a/web/public/locales/tr/config/validation.json b/web/public/locales/tr/config/validation.json index 73b68c515..aaac6f566 100644 --- a/web/public/locales/tr/config/validation.json +++ b/web/public/locales/tr/config/validation.json @@ -2,5 +2,7 @@ "minimum": "En az {{limit}} olmalı", "maximum": "En fazla {{limit}} olmalı", "exclusiveMinimum": "{{limit}}’den büyük olmalı", - "exclusiveMaximum": "{{limit}}’den küçük olmalı" + "exclusiveMaximum": "{{limit}}’den küçük olmalı", + "minLength": "En az {{limit}} karakter olmalı", + "maxLength": "En fazla {{limit}} karakter olmalı" } diff --git a/web/public/locales/tr/views/exports.json b/web/public/locales/tr/views/exports.json index 0c8fec129..d6ee3ebfe 100644 --- a/web/public/locales/tr/views/exports.json +++ b/web/public/locales/tr/views/exports.json @@ -1,7 +1,9 @@ { "search": "Arama", "documentTitle": "Dışa Aktar - Frigate", - "deleteExport": "Dışa Aktarımı Sil", + "deleteExport": { + "label": "Dışa Aktarımı Sil" + }, "deleteExport.desc": "{{exportName}} adlı dışa aktarımı silmek istediğinize emin misiniz?", "editExport": { "saveExport": "Dışa Aktarımı Kaydet", @@ -19,5 +21,9 @@ "downloadVideo": "Videoyu İndir", "editName": "İsmi Düzenle", "deleteExport": "Dışa Aktarmayı Sil" + }, + "headings": { + "uncategorizedExports": "Kategorize Edilmemiş Dışa Aktarım", + "cases": "Durumlar" } } diff --git a/web/public/locales/tr/views/settings.json b/web/public/locales/tr/views/settings.json index 3d419144f..72cc56ef8 100644 --- a/web/public/locales/tr/views/settings.json +++ b/web/public/locales/tr/views/settings.json @@ -28,7 +28,8 @@ "triggers": "Tetikler", "cameraManagement": "Yönetim", "cameraReview": "İncele", - "roles": "Roller" + "roles": "Roller", + "profiles": "Profiller" }, "general": { "title": "Kullanıcı Arayüzü Ayarları", diff --git a/web/public/locales/zh-CN/common.json b/web/public/locales/zh-CN/common.json index e9337cfc7..f5edd2e6d 100644 --- a/web/public/locales/zh-CN/common.json +++ b/web/public/locales/zh-CN/common.json @@ -290,7 +290,7 @@ "title": "权限组", "admin": "管理员", "viewer": "成员", - "desc": "管理员可以完全访问Frigate界面上所有功能。成员则仅能查看摄像头、核查项和历史录像。" + "desc": "管理员可以完全访问 Frigate 界面上所有功能。成员则仅能查看摄像头、核查项和历史录像。" }, "accessDenied": { "documentTitle": "没有权限 - Frigate", diff --git a/web/public/locales/zh-CN/components/dialog.json b/web/public/locales/zh-CN/components/dialog.json index d2013adcd..c65fecac0 100644 --- a/web/public/locales/zh-CN/components/dialog.json +++ b/web/public/locales/zh-CN/components/dialog.json @@ -74,7 +74,41 @@ }, "case": { "label": "合集", - "placeholder": "选择合集" + "placeholder": "选择合集", + "newCaseOption": "创建新合集", + "newCaseNamePlaceholder": "新合集名称", + "newCaseDescriptionPlaceholder": "合集描述", + "nonAdminHelp": "将为这些导出文件创建一个新的合集。" + }, + "queueing": "正在加入导出队列…", + "tabs": { + "export": "单个摄像头", + "multiCamera": "多个摄像头" + }, + "multiCamera": { + "timeRange": "时间范围", + "selectFromTimeline": "从时间线选择", + "cameraSelection": "摄像头", + "cameraSelectionHelp": "在此时间范围内具有追踪目标的摄像头会被预先选中", + "checkingActivity": "正在检查摄像头活动…", + "noCameras": "没有可用的摄像头", + "detectionCount_other": "{{count}} 个追踪目标", + "nameLabel": "导出名称", + "namePlaceholder": "这些导出文件的可选基础名称", + "queueingButton": "正在加入导出队列…", + "exportButton_other": "导出 {{count}} 个摄像头" + }, + "multi": { + "title_other": "导出 {{count}} 个核查", + "description": "导出每个选定的核查项。所有导出文件将归入同一个合集。", + "descriptionNoCase": "导出每个选定的核查项。", + "caseNamePlaceholder": "核查导出 - {{date}}", + "exportButton_other": "导出 {{count}} 个核查", + "exportingButton": "导出中…", + "toast": { + "started_other": "已开始 {{count}} 个导出。正在打开合集。", + "startedNoCase_other": "已开始 {{count}} 个导出。" + } } }, "streaming": { diff --git a/web/public/locales/zh-CN/components/player.json b/web/public/locales/zh-CN/components/player.json index 0336c32a1..6cee6952b 100644 --- a/web/public/locales/zh-CN/components/player.json +++ b/web/public/locales/zh-CN/components/player.json @@ -4,7 +4,8 @@ "noPreviewFoundFor": "没有在 {{cameraName}} 下找到预览", "submitFrigatePlus": { "title": "提交此帧到 Frigate+?", - "submit": "提交" + "submit": "提交", + "previewError": "无法加载快照预览。该录制当前可能不可用。" }, "livePlayerRequiredIOSVersion": "此直播流类型需要 iOS 17.1 或更高版本。", "streamOffline": { diff --git a/web/public/locales/zh-CN/config/cameras.json b/web/public/locales/zh-CN/config/cameras.json index aa627f549..d70c1ebf8 100644 --- a/web/public/locales/zh-CN/config/cameras.json +++ b/web/public/locales/zh-CN/config/cameras.json @@ -127,7 +127,7 @@ }, "classifier": { "label": "开启视觉分类器", - "description": "使用视觉分类器,即使检测框有轻微抖动,也能准确判断物体是真的静止。" + "description": "使用视觉分类器,即使检测框有轻微抖动,也能准确判断物体是否为静止。" } }, "annotation_offset": { @@ -275,13 +275,13 @@ }, "height": { "label": "实时监控高度", - "description": "在 Web UI 中渲染 jsmpeg 实时监控流的高度(像素);必须小于等于检测流高度。" + "description": "在网页页面中渲染 jsmpeg 实时监控流的高度(像素);必须小于等于检测流高度。" }, "quality": { "label": "实时监控质量", "description": "jsmpeg 流的编码质量(1 最高,31 最低)。" }, - "description": "用于控制实时流选择、分辨率和质量的 Web UI 设置。" + "description": "用于控制实时流选择、分辨率和质量的网页页面设置。" }, "motion": { "label": "画面变动检测", @@ -388,19 +388,19 @@ "label": "原始遮罩" }, "genai": { - "label": "GenAI 目标配置", - "description": "用于描述追踪目标和发送帧进行生成的 GenAI 选项。", + "label": "生成式 AI 目标配置", + "description": "用于发送画面给生成式 AI 进行生成和描述追踪目标的选项。", "enabled": { - "label": "开启 GenAI", - "description": "默认启用 GenAI 生成追踪目标的描述。" + "label": "开启生成式 AI", + "description": "默认开启生成式 AI 生成追踪目标的描述。" }, "use_snapshot": { "label": "使用快照", - "description": "使用目标快照而不是缩略图进行 GenAI 描述生成。" + "description": "使用目标快照而不是缩略图给生成式 AI 进行描述生成。" }, "prompt": { "label": "字幕提示", - "description": "使用 GenAI 生成描述时使用的默认提示模板。" + "description": "使用生成式 AI 生成描述时使用的默认提示模板。" }, "object_prompts": { "label": "目标提示", @@ -520,7 +520,7 @@ }, "preview": { "label": "预览配置", - "description": "控制 UI 中显示的录像预览质量的设置。", + "description": "控制界面中显示的录像预览质量的设置。", "quality": { "label": "预览质量", "description": "预览质量级别(very_low、low、medium、high、very_high)。" @@ -622,7 +622,7 @@ "description": "描述什么是和什么不是可疑活动的自定义提示,为 GenAI 摘要提供上下文。" } }, - "description": "控制此摄像头的警报、检测和 GenAI 核查摘要的设置,用于 UI 和存储。" + "description": "控制此摄像头的警报、检测和生成式 AI 核查总结的设置,这些设置会被界面与存储功能使用。" }, "snapshots": { "label": "快照", @@ -841,15 +841,15 @@ } }, "ui": { - "label": "摄像头 UI", - "description": "此摄像头在 UI 中的显示顺序和可见性。顺序影响默认仪表板。如需更精细的控制,请使用摄像头组。", + "label": "摄像头页面", + "description": "此摄像头在页面中的显示顺序和可见性。显示顺序仅影响默认仪表板。如需更精细的控制,请使用“摄像头组”。", "order": { "label": "UI 顺序", - "description": "用于在 UI 中排序摄像头的数值顺序(默认仪表板和列表);数值越大出现越晚。" + "description": "用于在页面中排序摄像头的顺序(只会影响默认仪表板和列表);数值越大则在越后面。" }, "dashboard": { "label": "在 UI 中显示", - "description": "切换此摄像头在 Frigate UI 的所有位置是否可见。禁用此项将需要手动编辑配置才能在 UI 中再次查看此摄像头。" + "description": "切换此摄像头在 Frigate 页面的所有位置是否可见。禁用此项将需要手动编辑配置才能在页面中再次查看此摄像头。" } }, "best_image_timeout": { @@ -862,7 +862,7 @@ }, "webui_url": { "label": "摄像头 URL", - "description": "从系统页面直接访问摄像头的 URL" + "description": "从系统页面直接访问摄像头管理后台的 URL" }, "zones": { "label": "区域", diff --git a/web/public/locales/zh-CN/config/global.json b/web/public/locales/zh-CN/config/global.json index b14f4acbf..ff9fba19d 100644 --- a/web/public/locales/zh-CN/config/global.json +++ b/web/public/locales/zh-CN/config/global.json @@ -231,7 +231,7 @@ }, "classifier": { "label": "开启视觉分类器", - "description": "使用视觉分类器,即使检测框有轻微抖动,也能准确判断物体是真的静止。" + "description": "使用视觉分类器,即使检测框有轻微抖动,也能准确判断物体是否为静止。" } }, "annotation_offset": { @@ -536,7 +536,7 @@ "description": "Frigate Web 端点(端口 8971)的 TLS 设置。", "enabled": { "label": "开启 TLS", - "description": "为 Frigate 的 Web 页面和 API 的端口开启 TLS 加密。" + "description": "为 Frigate 的网页页面和 API 的端口开启 TLS 加密。" } }, "ui": { @@ -1474,7 +1474,7 @@ }, "roles": { "label": "功能", - "description": "生成式 AI 功能(工具、视觉、嵌入);每个功能单独一个提供商。" + "description": "生成式 AI 功能(对话、描述、嵌入);每个功能单独一个提供商。" }, "provider_options": { "label": "提供商选项", @@ -1494,7 +1494,7 @@ }, "height": { "label": "实时监控高度", - "description": "在 Web UI 中渲染 jsmpeg 实时监控流的高度(像素);必须小于等于检测流高度。" + "description": "在网页页面中渲染 jsmpeg 实时监控流的高度(像素);必须小于等于检测流高度。" }, "quality": { "label": "实时监控质量", @@ -1606,19 +1606,19 @@ "label": "原始遮罩" }, "genai": { - "label": "GenAI 目标配置", - "description": "用于描述追踪目标和发送帧进行生成的 GenAI 选项。", + "label": "生成式 AI 目标配置", + "description": "用于发送画面给生成式 AI 进行生成和描述追踪目标的选项。", "enabled": { - "label": "开启 GenAI", - "description": "默认启用 GenAI 生成追踪目标的描述。" + "label": "开启生成式 AI", + "description": "默认开启生成式 AI 生成追踪目标的描述。" }, "use_snapshot": { "label": "使用快照", - "description": "使用目标快照而不是缩略图进行 GenAI 描述生成。" + "description": "使用目标快照而不是缩略图给生成式 AI 进行描述生成。" }, "prompt": { "label": "字幕提示", - "description": "使用 GenAI 生成描述时使用的默认提示模板。" + "description": "使用生成式 AI 生成描述时使用的默认提示模板。" }, "object_prompts": { "label": "目标提示", @@ -1739,7 +1739,7 @@ }, "preview": { "label": "预览配置", - "description": "控制 UI 中显示的录像预览质量的设置。", + "description": "控制界面中显示的录像预览质量的设置。", "quality": { "label": "预览质量", "description": "预览质量级别(very_low、low、medium、high、very_high)。" @@ -2114,18 +2114,18 @@ }, "camera_groups": { "label": "摄像头分组", - "description": "用于在 UI 中组织摄像头的命名摄像头分组配置。", + "description": "用于在页面中组织摄像头的命名摄像头分组配置。", "cameras": { "label": "摄像头列表", "description": "此分组中包含的摄像头名称数组。" }, "icon": { "label": "分组图标", - "description": "在 UI 中代表摄像头分组的图标。" + "description": "在页面中代表摄像头分组的图标。" }, "order": { "label": "排序顺序", - "description": "用于在 UI 中对摄像头分组进行排序的数字顺序;数值越大越靠后。" + "description": "用于在页面中对摄像头分组进行排序的数字顺序;数值越大越靠后。" } }, "camera_mqtt": { @@ -2161,15 +2161,15 @@ } }, "camera_ui": { - "label": "摄像头 UI", - "description": "此摄像头在 UI 中的显示顺序和可见性。顺序影响默认仪表板。如需更精细的控制,请使用摄像头分组。", + "label": "摄像头页面", + "description": "此摄像头在页面中的显示顺序和可见性。显示顺序仅影响默认仪表板。如需更精细的控制,请使用“摄像头组”。", "order": { "label": "UI 顺序", - "description": "用于在 UI 中对摄像头进行排序的数字顺序(默认仪表板和列表);数值越大越靠后。" + "description": "用于在页面中排序摄像头的顺序(只会影响默认仪表板和列表);数值越大则在越后面。" }, "dashboard": { "label": "在 UI 中显示", - "description": "切换此摄像头在 Frigate UI 中是否可见。禁用后需要手动编辑配置才能再次在 UI 中查看此摄像头。" + "description": "切换此摄像头在 Frigate 页面中是否可见。禁用后需要手动编辑配置才能再次在页面中查看此摄像头。" } }, "onvif": { diff --git a/web/public/locales/zh-CN/views/events.json b/web/public/locales/zh-CN/views/events.json index f02a83907..6035051c8 100644 --- a/web/public/locales/zh-CN/views/events.json +++ b/web/public/locales/zh-CN/views/events.json @@ -26,7 +26,9 @@ }, "documentTitle": "核查 - Frigate", "recordings": { - "documentTitle": "回放 - Frigate" + "documentTitle": "回放 - Frigate", + "invalidSharedLink": "由于解析错误,无法打开带时间戳的录制链接。", + "invalidSharedCamera": "由于摄像头未知或未获授权,无法打开带时间戳的录制链接。" }, "calendarFilter": { "last24Hours": "过去24小时" diff --git a/web/public/locales/zh-CN/views/exports.json b/web/public/locales/zh-CN/views/exports.json index b57b1a1c6..11ee3b8a7 100644 --- a/web/public/locales/zh-CN/views/exports.json +++ b/web/public/locales/zh-CN/views/exports.json @@ -14,7 +14,9 @@ "toast": { "error": { "renameExportFailed": "重命名导出失败:{{errorMessage}}", - "assignCaseFailed": "更新合集分配失败:{{errorMessage}}" + "assignCaseFailed": "更新合集分配失败:{{errorMessage}}", + "caseSaveFailed": "保存合集失败:{{errorMessage}}", + "caseDeleteFailed": "删除合集失败:{{errorMessage}}" } }, "tooltip": { @@ -22,7 +24,8 @@ "downloadVideo": "下载视频", "editName": "编辑名称", "deleteExport": "删除导出", - "assignToCase": "加入合集" + "assignToCase": "加入合集", + "removeFromCase": "从合集中移除" }, "headings": { "uncategorizedExports": "未分类导出项", @@ -35,5 +38,21 @@ "selectLabel": "合集", "newCaseOption": "创建新合集", "descriptionLabel": "描述" + }, + "toolbar": { + "newCase": "新合集", + "addExport": "新导出", + "editCase": "编辑合集", + "deleteCase": "删除合集" + }, + "deleteCase": { + "label": "删除合集", + "desc": "你确定要删除 {{caseName}} 吗?", + "descKeepExports": "导出文件将继续保留为未分类导出。", + "descDeleteExports": "此合集中的所有导出项都将被永久删除。", + "deleteExports": "同时删除导出文件" + }, + "caseCard": { + "emptyCase": "暂无导出文件" } } diff --git a/web/public/locales/zh-CN/views/settings.json b/web/public/locales/zh-CN/views/settings.json index 55190e53b..42ac0b8ff 100644 --- a/web/public/locales/zh-CN/views/settings.json +++ b/web/public/locales/zh-CN/views/settings.json @@ -84,7 +84,7 @@ "cameraLpr": "车牌识别", "cameraMqttConfig": "MQTT", "cameraOnvif": "ONVIF", - "cameraUi": "摄像头管理页面", + "cameraUi": "摄像头页面", "cameraTimestampStyle": "时间戳样式", "cameraMqtt": "摄像头 MQTT", "mediaSync": "媒体同步", @@ -358,7 +358,8 @@ "object_mask": "目标遮罩" }, "revertOverride": { - "title": "恢复为默认配置" + "title": "恢复为默认配置", + "desc": "这将移除针对 {{type}} {{name}} 的配置覆盖,并恢复为基础配置。" } }, "speed": { @@ -1113,7 +1114,7 @@ "noSnapshot": "无法从配置的视频流中获取快照。" }, "errors": { - "brandOrCustomUrlRequired": "请选择摄像头品牌并配置主机/IP地址,或选择“其他”后手动配置视频流地址", + "brandOrCustomUrlRequired": "请选择摄像头品牌并配置主机/ IP 地址,或选择“其他”后手动配置视频流地址", "nameRequired": "摄像头名称为必填项", "nameLength": "摄像头名称要少于64个字符", "invalidCharacters": "摄像头名称内有不允许使用的字符", @@ -1121,7 +1122,7 @@ "brands": { "reolink-rtsp": "不建议使用萤石 RTSP 协议。建议在摄像头设置中启用 HTTP 协议,并重新运行摄像头添加向导。" }, - "customUrlRtspRequired": "自定义URL必须以“rtsp://”开头;对于非 RTSP 协议的摄像头流,需手动添加至配置文件。" + "customUrlRtspRequired": "自定义 URL 必须以“rtsp://”开头;对于非 RTSP 协议的摄像头流,需手动添加至配置文件。" }, "docs": { "reolink": "https://docs.frigate-cn.video/configuration/camera_specific.html#reolink-cameras" @@ -1138,7 +1139,7 @@ "detectionMethodDescription": "如果摄像头支持 ONVIF 协议,将使用该协议探测摄像头,以自动获取摄像头视频流地址;若不支持,也可手动选择摄像头品牌来使用预设地址。如需输入自定义RTSP地址,请选择“手动选择”并选择“其他”选项。", "onvifPortDescription": "对于支持ONVIF协议的摄像头,该端口通常为80或8080。", "useDigestAuth": "使用摘要认证", - "useDigestAuthDescription": "为ONVIF协议启用HTTP摘要认证。部分摄像头可能需要专用的 ONVIF 用户名/密码,而非默认的admin账户。" + "useDigestAuthDescription": "为 ONVIF 协议启用 HTTP 摘要认证。部分摄像头可能需要专用的 ONVIF 用户名/密码,而非默认的 admin 账户。" }, "step2": { "description": "将根据你选择的检测方式,将会自动查找摄像头可用流配置,或进行手动配置。", @@ -1161,7 +1162,7 @@ }, "testStream": "测试连接", "testSuccess": "视频流测试成功!", - "testFailed": "视频流测试失败", + "testFailed": "连接测试失败,请检查您的输入后重试。", "testFailedTitle": "测试失败", "connected": "已连接", "notConnected": "未连接", @@ -1493,7 +1494,7 @@ "tls": "TLS", "proxy": "代理", "go2rtc": "go2rtc", - "ffmpeg": "FFmpeg", + "ffmpeg": "FFmpeg 编解码", "detectors": "检测器", "genai": "生成式 AI", "face_recognition": "人脸识别", @@ -1519,7 +1520,7 @@ "remove": "移除" }, "roleMap": { - "empty": "未配置角色映射。", + "empty": "未配置权限组映射", "addMapping": "添加角色映射", "roleLabel": "角色", "groupsLabel": "用户组", @@ -1655,7 +1656,12 @@ "summary": "已选择 {{count}} 个标签", "empty": "暂无可用标签" }, - "addCustomLabel": "添加自定义标签…" + "addCustomLabel": "添加自定义标签…", + "genaiModel": { + "placeholder": "选择模型…", + "search": "搜索模型…", + "noModels": "暂无模型" + } }, "cameraConfig": { "title": "摄像头配置", @@ -1721,7 +1727,7 @@ "desc": "区域网格是一种优化功能,它会学习不同大小的目标通常出现在每个摄像头视野中的位置。Frigate 利用这些数据来高效地确定检测区域的大小。该网格会根据追踪目标数据自动构建。", "clear": "清除区域网格", "clearConfirmTitle": "清除区域网格", - "clearConfirmDesc": "除非您最近更改了检测器模型大小或摄像头的物理位置,并且遇到了目标追踪问题,否则不建议清除区域网格。网格会随着目标的追踪自动重建。更改需要重启 Frigate 才能生效。", + "clearConfirmDesc": "除非你最近更改了检测器模型大小或摄像头的物理位置,并且遇到了目标追踪问题,否则不建议清除区域网格。网格会随着目标的追踪自动重建。更改需要重启 Frigate 才能生效。", "clearSuccess": "区域网格清除成功", "clearError": "清除区域网格失败", "restartRequired": "需要重启以使区域网格更改生效" @@ -1795,7 +1801,7 @@ "deleteSection": "删除节点覆盖", "deleteSectionConfirm": "是否要移除摄像机 {{camera}} 上针对配置文件 {{profile}} 的 {{section}} 覆盖设置?", "deleteSectionSuccess": "已移除 {{profile}} 的 {{section}} 覆盖设置", - "enableSwitch": "开启配置文件", + "enableSwitch": "开启配置模板", "enabledDescription": "配置文件功能已启用。请在下方创建新的配置文件,进入摄像头配置页面进行修改并保存,修改即可生效。", "disabledDescription": "配置文件功能可以让你创建一组带名称的摄像头自定义参数(比如布防、离家、夜间模式),并随时切换启用。" }, @@ -1884,7 +1890,8 @@ "detectDisabled": "目标检测已禁用。快照是根据追踪到的目标生成的,因此将不会创建快照。" }, "detectors": { - "mixedTypes": "所有检测器必须为同一类型。若要更换为其他类型,请先移除现有的检测器。" + "mixedTypes": "所有检测器必须为同一类型。若要更换为其他类型,请先移除现有的检测器。", + "mixedTypesSuggestion": "所有检测器必须使用相同类型。请移除现有检测器,或选择 {{type}}。" } } }