diff --git a/web/public/locales/ab/views/classificationModel.json b/web/public/locales/ab/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/ab/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/ar/views/classificationModel.json b/web/public/locales/ar/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/ar/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/bg/views/classificationModel.json b/web/public/locales/bg/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/bg/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/ca/audio.json b/web/public/locales/ca/audio.json
index 1af579479..27c44b40e 100644
--- a/web/public/locales/ca/audio.json
+++ b/web/public/locales/ca/audio.json
@@ -425,5 +425,79 @@
"radio": "Ràdio",
"pink_noise": "Soroll rosa",
"power_windows": "Finestres elèctriques",
- "artillery_fire": "Foc d'artilleria"
+ "artillery_fire": "Foc d'artilleria",
+ "sodeling": "Cant a la tirolesa",
+ "vibration": "Vibració",
+ "throbbing": "Palpitant",
+ "cacophony": "Cacofonia",
+ "sidetone": "To local",
+ "distortion": "Distorsió",
+ "mains_hum": "brunzit",
+ "noise": "Soroll",
+ "echo": "Echo",
+ "reverberation": "Reverberació",
+ "inside": "Interior",
+ "pulse": "Pols",
+ "outside": "Fora",
+ "chirp_tone": "To de grinyol",
+ "harmonic": "Harmònic",
+ "sine_wave": "Ona sinus",
+ "crunch": "Cruixit",
+ "hum": "Taral·lejar",
+ "plop": "Chof",
+ "clickety_clack": "Clic-Clac",
+ "clicking": "Clicant",
+ "clatter": "Soroll",
+ "chird": "Piular",
+ "liquid": "Líquid",
+ "splash": "Xof",
+ "slosh": "Xip-xap",
+ "boing": "Boing",
+ "zing": "Fiu",
+ "rumble": "Bum-bum",
+ "sizzle": "Xiu-xiu",
+ "whir": "Brrrm",
+ "rustle": "Fru-Fru",
+ "creak": "Clic-clac",
+ "clang": "Clang",
+ "squish": "Xaf",
+ "drip": "Plic-plic",
+ "pour": "Glug-glug",
+ "trickle": "Xiulet",
+ "gush": "Xuuuix",
+ "fill": "Glug-glug",
+ "ding": "Ding",
+ "ping": "Ping",
+ "beep": "Bip",
+ "squeal": "Xiscle",
+ "crumpling": "Arrugant-se",
+ "rub": "Fregar",
+ "scrape": "Raspar",
+ "scratch": "Rasca",
+ "whip": "Fuet",
+ "bouncing": "Rebotant",
+ "breaking": "Trencant",
+ "smash": "Aixafar",
+ "whack": "Cop",
+ "slap": "Bufetada",
+ "bang": "Bang",
+ "basketball_bounce": "Rebot de bàsquet",
+ "chorus_effect": "Efecte de cor",
+ "effects_unit": "Unitat d'Efectes",
+ "electronic_tuner": "Afinador electrònic",
+ "thunk": "Bruix",
+ "thump": "Cop fort",
+ "whoosh": "Xiuxiueig",
+ "arrow": "Fletxa",
+ "sonar": "Sonar",
+ "boiling": "Bullint",
+ "stir": "Remenar",
+ "pump": "Bomba",
+ "spray": "Esprai",
+ "shofar": "Xofar",
+ "crushing": "Aixafament",
+ "change_ringing": "Toc de campanes",
+ "flap": "Cop de peu",
+ "roll": "Rodament",
+ "tearing": "Esquinçat"
}
diff --git a/web/public/locales/ca/components/auth.json b/web/public/locales/ca/components/auth.json
index 6cbe2877c..1ca91ee7a 100644
--- a/web/public/locales/ca/components/auth.json
+++ b/web/public/locales/ca/components/auth.json
@@ -10,6 +10,7 @@
"loginFailed": "Error en l'inici de sessió",
"unknownError": "Error desconegut. Comproveu els registres.",
"webUnknownError": "Error desconegut. Comproveu els registres de la consola."
- }
+ },
+ "firstTimeLogin": "Intentar iniciar sessió per primera vegada? Les credencials s'imprimeixen als registres de Frigate."
}
}
diff --git a/web/public/locales/ca/views/classificationModel.json b/web/public/locales/ca/views/classificationModel.json
new file mode 100644
index 000000000..78897acb4
--- /dev/null
+++ b/web/public/locales/ca/views/classificationModel.json
@@ -0,0 +1,135 @@
+{
+ "documentTitle": "Models de classificació",
+ "button": {
+ "deleteClassificationAttempts": "Suprimeix les imatges de classificació",
+ "renameCategory": "Reanomena la classe",
+ "deleteCategory": "Suprimeix la classe",
+ "deleteImages": "Suprimeix les imatges",
+ "trainModel": "Model de tren"
+ },
+ "toast": {
+ "success": {
+ "deletedCategory": "Classe suprimida",
+ "deletedImage": "Imatges suprimides",
+ "categorizedImage": "Imatge classificada amb èxit",
+ "trainedModel": "Model entrenat amb èxit.",
+ "trainingModel": "S'ha iniciat amb èxit la formació de models."
+ },
+ "error": {
+ "deleteImageFailed": "No s'ha pogut suprimir: {{errorMessage}}",
+ "deleteCategoryFailed": "No s'ha pogut suprimir la classe: {{errorMessage}}",
+ "categorizeFailed": "No s'ha pogut categoritzar la imatge: {{errorMessage}}",
+ "trainingFailed": "No s'ha pogut iniciar l'entrenament del model: {{errorMessage}}"
+ }
+ },
+ "deleteCategory": {
+ "title": "Suprimeix la classe",
+ "desc": "Esteu segur que voleu suprimir la classe {{name}}? Això suprimirà permanentment totes les imatges associades i requerirà tornar a entrenar el model."
+ },
+ "deleteDatasetImages": {
+ "title": "Suprimeix les imatges del conjunt de dades",
+ "desc": "Esteu segur que voleu suprimir {{count}} imatges de {{dataset}}? Aquesta acció no es pot desfer i requerirà tornar a entrenar el model."
+ },
+ "deleteTrainImages": {
+ "title": "Suprimeix les imatges del tren",
+ "desc": "Esteu segur que voleu suprimir {{count}} imatges? Aquesta acció no es pot desfer."
+ },
+ "renameCategory": {
+ "title": "Reanomena la classe",
+ "desc": "Introduïu un nom nou per {{name}}. Se us requerirà que torneu a entrenar el model per al canvi de nom a afectar."
+ },
+ "description": {
+ "invalidName": "Nom no vàlid. Els noms només poden incloure lletres, números, espais, apòstrofs, guions baixos i guions."
+ },
+ "train": {
+ "title": "Classificacions recents",
+ "aria": "Selecciona les classificacions recents"
+ },
+ "categories": "Classes",
+ "createCategory": {
+ "new": "Crea una classe nova"
+ },
+ "categorizeImageAs": "Classifica la imatge com a:",
+ "categorizeImage": "Classifica la imatge",
+ "noModels": {
+ "object": {
+ "title": "No hi ha models de classificació d'objectes",
+ "description": "Crea un model personalitzat per classificar els objectes detectats.",
+ "buttonText": "Crea un model d'objecte"
+ },
+ "state": {
+ "title": "Cap model de classificació d'estat",
+ "description": "Crea un model personalitzat per a monitoritzar i classificar els canvis d'estat en àrees de càmera específiques.",
+ "buttonText": "Crea un model d'estat"
+ }
+ },
+ "wizard": {
+ "title": "Crea una classificació nova",
+ "steps": {
+ "nameAndDefine": "Nom i definició",
+ "stateArea": "Àrea estatal",
+ "chooseExamples": "Trieu exemples"
+ },
+ "step1": {
+ "description": "Els models estatals monitoritzen àrees de càmera fixes per als canvis (p. ex., porta oberta/tancada). Els models d'objectes afegeixen classificacions als objectes detectats (per exemple, animals coneguts, persones de lliurament, etc.).",
+ "name": "Nom",
+ "namePlaceholder": "Introduïu el nom del model...",
+ "type": "Tipus",
+ "typeState": "Estat",
+ "typeObject": "Objecte",
+ "objectLabel": "Etiqueta de l'objecte",
+ "objectLabelPlaceholder": "Selecciona el tipus d'objecte...",
+ "classificationType": "Tipus de classificació",
+ "classificationTypeTip": "Apreneu sobre els tipus de classificació",
+ "classificationTypeDesc": "Les subetiquetes afegeixen text addicional a l'etiqueta de l'objecte (p. ex., 'Person: UPS'). Els atributs són metadades cercables emmagatzemades per separat a les metadades de l'objecte.",
+ "classificationSubLabel": "Subetiqueta",
+ "classificationAttribute": "Atribut",
+ "classes": "Classes",
+ "classesTip": "Aprèn sobre les classes",
+ "classesStateDesc": "Defineix els diferents estats en què pot estar la teva àrea de càmera. Per exemple: \"obert\" i \"tancat\" per a una porta de garatge.",
+ "classesObjectDesc": "Defineix les diferents categories en què classificar els objectes detectats. Per exemple: 'lliuramentpersonpersona', 'resident', 'amenaça' per a la classificació de persones.",
+ "classPlaceholder": "Introduïu el nom de la classe...",
+ "errors": {
+ "nameRequired": "Es requereix el nom del model",
+ "nameLength": "El nom del model ha de tenir 64 caràcters o menys",
+ "nameOnlyNumbers": "El nom del model no pot contenir només números",
+ "classRequired": "Es requereix com a mínim 1 classe",
+ "classesUnique": "Els noms de classe han de ser únics",
+ "stateRequiresTwoClasses": "Els models d'estat requereixen almenys 2 classes",
+ "objectLabelRequired": "Seleccioneu una etiqueta d'objecte",
+ "objectTypeRequired": "Seleccioneu un tipus de classificació"
+ }
+ },
+ "step2": {
+ "description": "Seleccioneu les càmeres i definiu l'àrea a monitoritzar per a cada càmera. El model classificarà l'estat d'aquestes àrees.",
+ "cameras": "Càmeres",
+ "selectCamera": "Selecciona la càmera",
+ "noCameras": "Feu clic a + per a afegir càmeres",
+ "selectCameraPrompt": "Seleccioneu una càmera de la llista per definir la seva àrea de monitoratge"
+ },
+ "step3": {
+ "selectImagesPrompt": "Selecciona totes les imatges amb: {{className}}",
+ "selectImagesDescription": "Feu clic a les imatges per a seleccionar-les. Feu clic a Continua quan hàgiu acabat amb aquesta classe.",
+ "generating": {
+ "title": "S'estan generant imatges de mostra",
+ "description": "Frigate està traient imatges representatives dels vostres enregistraments. Això pot trigar un moment..."
+ },
+ "training": {
+ "title": "Model d'entrenament",
+ "description": "El teu model s'està entrenant en segon pla. Tanqueu aquest diàleg i el vostre model començarà a funcionar tan aviat com s'hagi completat l'entrenament."
+ },
+ "retryGenerate": "Torna a provar la generació",
+ "noImages": "No s'ha generat cap imatge de mostra",
+ "classifying": "Classificació i formació...",
+ "trainingStarted": "L'entrenament s'ha iniciat amb èxit",
+ "errors": {
+ "noCameras": "No s'ha configurat cap càmera",
+ "noObjectLabel": "No s'ha seleccionat cap etiqueta d'objecte",
+ "generateFailed": "No s'han pogut generar exemples: {{error}}",
+ "generationFailed": "Ha fallat la generació. Torneu-ho a provar.",
+ "classifyFailed": "No s'han pogut classificar les imatges: {{error}}"
+ },
+ "generateSuccess": "Imatges de mostra generades amb èxit"
+ }
+ }
+}
diff --git a/web/public/locales/ca/views/events.json b/web/public/locales/ca/views/events.json
index 99d56c1d9..412955efa 100644
--- a/web/public/locales/ca/views/events.json
+++ b/web/public/locales/ca/views/events.json
@@ -36,5 +36,17 @@
"selected_one": "{{count}} seleccionats",
"selected_other": "{{count}} seleccionats",
"suspiciousActivity": "Activitat sospitosa",
- "threateningActivity": "Activitat amenaçadora"
+ "threateningActivity": "Activitat amenaçadora",
+ "detail": {
+ "noDataFound": "No hi ha dades detallades a revisar",
+ "trackedObject_one": "objecte",
+ "aria": "Canvia la vista de detall",
+ "trackedObject_other": "objectes",
+ "noObjectDetailData": "No hi ha dades de detall d'objecte disponibles.",
+ "label": "Detall"
+ },
+ "objectTrack": {
+ "clickToSeek": "Feu clic per cercar aquesta hora",
+ "trackedPoint": "Punt de seguiment"
+ }
}
diff --git a/web/public/locales/ca/views/explore.json b/web/public/locales/ca/views/explore.json
index 3b79a696f..079ed2100 100644
--- a/web/public/locales/ca/views/explore.json
+++ b/web/public/locales/ca/views/explore.json
@@ -206,6 +206,12 @@
"audioTranscription": {
"label": "Transcriu",
"aria": "Demanar una transcripció d'audio"
+ },
+ "showObjectDetails": {
+ "label": "Mostra la ruta de l'objecte"
+ },
+ "hideObjectDetails": {
+ "label": "Amaga la ruta de l'objecte"
}
},
"noTrackedObjects": "No s'han trobat objectes rastrejats",
diff --git a/web/public/locales/ca/views/faceLibrary.json b/web/public/locales/ca/views/faceLibrary.json
index 356691315..f99629bdb 100644
--- a/web/public/locales/ca/views/faceLibrary.json
+++ b/web/public/locales/ca/views/faceLibrary.json
@@ -12,13 +12,13 @@
"collections": "Col·leccions",
"train": {
"empty": "No hi ha intents recents de reconeixement de rostres",
- "title": "Entrenar",
- "aria": "Seleccionar entrenament"
+ "title": "Reconeixements recents",
+ "aria": "Selecciona els reconeixements recents"
},
"description": {
- "addFace": "Guia per a agregar una nova colecció a la biblioteca de rostres.",
+ "addFace": "Afegiu una col·lecció nova a la biblioteca de cares pujant la vostra primera imatge.",
"placeholder": "Introduïu un nom per a aquesta col·lecció",
- "invalidName": "Nom no vàlid. Els noms només poden incloure lletres, números, espais, apòstrofs, guions baixos i guionets."
+ "invalidName": "Nom no vàlid. Els noms només poden incloure lletres, números, espais, apòstrofs, guions baixos i guions."
},
"documentTitle": "Biblioteca de rostres - Frigate",
"uploadFaceImage": {
@@ -54,7 +54,7 @@
"selectImage": "Siusplau, selecciona un fixer d'imatge."
},
"maxSize": "Mida màxima: {{size}}MB",
- "dropInstructions": "Arrastra una imatge aquí, o fes clic per a selccionar-ne una"
+ "dropInstructions": "Arrossegueu i deixeu anar o enganxeu una imatge aquí, o feu clic per seleccionar"
},
"button": {
"uploadImage": "Pujar imatge",
diff --git a/web/public/locales/ca/views/live.json b/web/public/locales/ca/views/live.json
index 51638092c..f98b33d62 100644
--- a/web/public/locales/ca/views/live.json
+++ b/web/public/locales/ca/views/live.json
@@ -86,8 +86,8 @@
"disable": "Amaga estadístiques de la transmissió"
},
"manualRecording": {
- "title": "Gravació sota demanda",
- "tips": "Iniciar un event manual basat en els paràmetres de retenció de gravació per aquesta càmera.",
+ "title": "Sota demanda",
+ "tips": "Baixeu una instantània o inicieu un esdeveniment manual basat en la configuració de retenció d'enregistrament d'aquesta càmera.",
"playInBackground": {
"label": "Reproduir en segon pla",
"desc": "Habilita aquesta opció per a continuar la transmissió quan el reproductor està amagat."
@@ -178,6 +178,8 @@
"downloadStarted": "Inici de baixada d'instantània."
},
"noCameras": {
- "title": "Sense càmeres per configurar"
+ "title": "No s'ha configurat cap càmera",
+ "description": "Comenceu connectant una càmera a Frigate.",
+ "buttonText": "Afegeix una càmera"
}
}
diff --git a/web/public/locales/ca/views/settings.json b/web/public/locales/ca/views/settings.json
index 01d146df8..794b6d759 100644
--- a/web/public/locales/ca/views/settings.json
+++ b/web/public/locales/ca/views/settings.json
@@ -114,7 +114,8 @@
"mustBeAtLeastTwoCharacters": "El nom de la zona ha de contenir com a mínim 2 caràcters.",
"mustNotContainPeriod": "El nom de la zona no pot contenir punts.",
"alreadyExists": "Ja existeix una zona amb aquest nom per a aquesta càmera.",
- "mustNotBeSameWithCamera": "El nom de la zona no pot ser el mateix que el nom de la càmera."
+ "mustNotBeSameWithCamera": "El nom de la zona no pot ser el mateix que el nom de la càmera.",
+ "mustHaveAtLeastOneLetter": "El nom de la zona ha de tenir almenys una lletra."
}
},
"inertia": {
@@ -163,7 +164,7 @@
"name": {
"inputPlaceHolder": "Introduïu un nom…",
"title": "Nom",
- "tips": "El nom ha de tenir almenys 2 caràcters i no pot coincidir amb el nom d'una càmera ni amb el d'una altra zona."
+ "tips": "El nom ha de tenir almenys 2 caràcters, ha de tenir almenys una lletra, i no ha de ser el nom d'una càmera o una altra zona."
},
"label": "Zones",
"desc": {
@@ -749,6 +750,11 @@
"error": {
"min": "S'ha de seleccionar una acció com a mínim."
}
+ },
+ "friendly_name": {
+ "title": "Nom amistós",
+ "placeholder": "Nom o descripció d'aquest disparador",
+ "description": "Un nom opcional amistós o text descriptiu per a aquest activador."
}
}
},
@@ -769,7 +775,11 @@
"title": "Gestió de disparadors",
"desc": "Gestionar els disparadors de {{camera}}. Usa les tipus de miniatures per disparar miniatures similars a l'objecte a seguir seleccionat, i el tipus de descripció per disparar en cas de descripcions similars a l'especificada."
},
- "addTrigger": "Afegir disaprador"
+ "addTrigger": "Afegir disaprador",
+ "semanticSearch": {
+ "desc": "La cerca semàntica ha d'estar activada per a utilitzar els activadors.",
+ "title": "La cerca semàntica està desactivada"
+ }
},
"roles": {
"dialog": {
@@ -836,10 +846,223 @@
"description": "Seguiu els passos de sota per afegir una nova càmera a la instal·lació.",
"steps": {
"nameAndConnection": "Nom i connexió",
- "streamConfiguration": "Configuració de stream"
+ "streamConfiguration": "Configuració de stream",
+ "validationAndTesting": "Validació i proves"
},
"step1": {
- "cameraBrand": "Marca de la càmera"
+ "cameraBrand": "Marca de la càmera",
+ "description": "Introduïu els detalls de la càmera i proveu la connexió.",
+ "cameraName": "Nom de la càmera",
+ "cameraNamePlaceholder": "p. ex., vista general de la porta davantera o de la barra posterior",
+ "host": "Adreça de l'amfitrió/IP",
+ "port": "Port",
+ "username": "Nom d'usuari",
+ "usernamePlaceholder": "Opcional",
+ "password": "Contrasenya",
+ "passwordPlaceholder": "Opcional",
+ "selectTransport": "Selecciona el protocol de transport",
+ "brandInformation": "Informació de marca",
+ "brandUrlFormat": "Per a càmeres amb el format d'URL RTSP com: {{exampleUrl}}",
+ "customUrlPlaceholder": "rtsp://usuari:contrasenya@host:port/ruta",
+ "testConnection": "Prova la connexió",
+ "testSuccess": "Prova de connexió correcta!",
+ "testFailed": "Ha fallat la prova de connexió. Si us plau, comproveu la vostra entrada i torneu-ho a provar.",
+ "streamDetails": "Detalls del flux",
+ "warnings": {
+ "noSnapshot": "No s'ha pogut obtenir una instantània del flux configurat."
+ },
+ "errors": {
+ "brandOrCustomUrlRequired": "Seleccioneu una marca de càmera amb host/IP o trieu 'Altres' amb un URL personalitzat",
+ "nameRequired": "Es requereix el nom de la càmera",
+ "nameLength": "El nom de la càmera ha de tenir 64 caràcters o menys",
+ "invalidCharacters": "El nom de la càmera conté caràcters no vàlids",
+ "nameExists": "El nom de la càmera ja existeix",
+ "brands": {
+ "reolink-rtsp": "No es recomana Reolink RST. Es recomana habilitar HTTP a la configuració de la càmera i reiniciar l'assistent de la càmera."
+ },
+ "customUrlRtspRequired": "Els URL personalitzats han de començar amb \"rtsp://\". Es requereix configuració manual per a fluxos de càmera no RTSP."
+ },
+ "selectBrand": "Seleccioneu la marca de la càmera per a la plantilla d'URL",
+ "customUrl": "URL de flux personalitzat",
+ "docs": {
+ "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras"
+ },
+ "testing": {
+ "probingMetadata": "S'estan provant les metadades de la càmera...",
+ "fetchingSnapshot": "S'està recuperant la instantània de la càmera..."
+ }
+ },
+ "save": {
+ "failure": "SS'ha produït un error en desar {{cameraName}}.",
+ "success": "S'ha desat correctament la càmera nova {{cameraName}}."
+ },
+ "testResultLabels": {
+ "resolution": "Resolució",
+ "video": "Vídeo",
+ "audio": "Àudio",
+ "fps": "FPS"
+ },
+ "commonErrors": {
+ "noUrl": "Proporcioneu un URL de flux vàlid",
+ "testFailed": "Ha fallat la prova de flux: {{error}}"
+ },
+ "step2": {
+ "description": "Configura els rols de flux i afegeix fluxos addicionals per a la càmera.",
+ "streamsTitle": "Fluxos de la càmera",
+ "addStream": "Afegeix un flux",
+ "addAnotherStream": "Afegeix un altre flux",
+ "streamTitle": "Flux {{number}}",
+ "streamUrl": "URL del flux",
+ "url": "URL",
+ "resolution": "Resolució",
+ "selectResolution": "Selecciona la resolució",
+ "quality": "Qualitat",
+ "selectQuality": "Selecciona la qualitat",
+ "roleLabels": {
+ "detect": "Detecció d'objectes",
+ "record": "Enregistrament",
+ "audio": "Àudio"
+ },
+ "testStream": "Prova la connexió",
+ "testSuccess": "Prova de flux amb èxit!",
+ "testFailed": "Ha fallat la prova del flux",
+ "testFailedTitle": "Ha fallat la prova",
+ "connected": "Connectat",
+ "notConnected": "No connectat",
+ "featuresTitle": "Característiques",
+ "go2rtc": "Redueix les connexions a la càmera",
+ "detectRoleWarning": "Almenys un flux ha de tenir el rol de \"detecte\" per continuar.",
+ "rolesPopover": {
+ "title": "Rols de flux",
+ "detect": "Canal principal per a la detecció d'objectes.",
+ "record": "Desa els segments del canal de vídeo basats en la configuració.",
+ "audio": "Canal per a la detecció basada en àudio."
+ },
+ "featuresPopover": {
+ "title": "Característiques del flux",
+ "description": "Utilitzeu el restreaming go2rtc per reduir les connexions a la càmera."
+ },
+ "roles": "Rols",
+ "streamUrlPlaceholder": "rtsp://usuari:contrasenya@host:port/ruta"
+ },
+ "step3": {
+ "none": "Cap",
+ "error": "Error",
+ "saveAndApply": "Desa una càmera nova",
+ "saveError": "Configuració no vàlida. Si us plau, comproveu la configuració.",
+ "issues": {
+ "title": "Validació del flux",
+ "videoCodecGood": "El còdec de vídeo és {{codec}}.",
+ "audioCodecGood": "El còdec d'àudio és {{codec}}.",
+ "noAudioWarning": "No s'ha detectat cap àudio per a aquest flux, els enregistraments no tindran àudio.",
+ "audioCodecRecordError": "El còdec d'àudio AAC és necessari per a suportar l'àudio en els enregistraments.",
+ "audioCodecRequired": "Es requereix un flux d'àudio per admetre la detecció d'àudio.",
+ "restreamingWarning": "Reduir les connexions a la càmera per al flux de registre pot augmentar lleugerament l'ús de la CPU.",
+ "dahua": {
+ "substreamWarning": "El substream 1 està bloquejat a una resolució baixa. Moltes càmeres Dahua / Amcrest / EmpireTech 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."
+ },
+ "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."
+ },
+ "resolutionHigh": "Una resolució de {{resolution}} pot causar un ús més gran dels recursos.",
+ "resolutionLow": "Una resolució de {{resolution}} pot ser massa baixa per a la detecció fiable d'objectes petits."
+ },
+ "description": "Validació i anàlisi final abans de desar la nova càmera. Connecta cada flux abans de desar-lo.",
+ "validationTitle": "Validació del flux",
+ "connectAllStreams": "Connecta tots els fluxos",
+ "reconnectionSuccess": "S'ha reconnectat correctament.",
+ "reconnectionPartial": "Alguns fluxos no s'han pogut tornar a connectar.",
+ "streamUnavailable": "La vista prèvia del flux no està disponible",
+ "reload": "Torna a carregar",
+ "connecting": "Connectant...",
+ "streamTitle": "Flux {{number}}",
+ "valid": "Vàlid",
+ "failed": "Ha fallat",
+ "notTested": "No provat",
+ "connectStream": "Connecta",
+ "connectingStream": "Connectant",
+ "disconnectStream": "Desconnecta",
+ "estimatedBandwidth": "Amplada de banda estimad",
+ "roles": "Rols",
+ "streamValidated": "El flux {{number}} s'ha validat correctament",
+ "streamValidationFailed": "Ha fallat la validació del flux {{number}}"
}
+ },
+ "cameraManagement": {
+ "title": "Gestiona les càmeres",
+ "addCamera": "Afegeix una càmera nova",
+ "editCamera": "Edita la càmera:",
+ "selectCamera": "Selecciona una càmera",
+ "backToSettings": "Torna a la configuració de la càmera",
+ "streams": {
+ "title": "Habilita / Inhabilita les càmeres",
+ "desc": "Inhabilita temporalment una càmera fins que es reiniciï la fragata. La inhabilitació d'una càmera atura completament el processament de Frigate dels fluxos d'aquesta càmera. La detecció, l'enregistrament i la depuració no estaran disponibles.
Nota: això no desactiva les retransmissions de go2rtc."
+ },
+ "cameraConfig": {
+ "add": "Afegeix una càmera",
+ "edit": "Edita la càmera",
+ "description": "Configura la configuració de la càmera, incloses les entrades i els rols de flux.",
+ "name": "Nom de la càmera",
+ "nameRequired": "Es requereix el nom de la càmera",
+ "nameLength": "El nom de la càmera ha de tenir menys de 64 caràcters.",
+ "namePlaceholder": "p. ex., vista general de la porta davantera o de la barra posterior",
+ "enabled": "Habilitat",
+ "ffmpeg": {
+ "inputs": "Fluxos d'entrada",
+ "path": "Camí del flux",
+ "pathRequired": "Es requereix un camí de flux",
+ "pathPlaceholder": "rtsp://...",
+ "rolesRequired": "Es requereix almenys un rol",
+ "rolesUnique": "Cada rol (àudio, detecta, registra) només es pot assignar a un flux",
+ "addInput": "Afegeix un flux d'entrada",
+ "removeInput": "Elimina el flux d'entrada",
+ "inputsRequired": "Es requereix com a mínim un flux d'entrada",
+ "roles": "Rols"
+ },
+ "go2rtcStreams": "go2rtc Fluxos",
+ "streamUrls": "URL de flux",
+ "addUrl": "Afegeix un URL",
+ "addGo2rtcStream": "Afegeix go2rtc flux",
+ "toast": {
+ "success": "La càmera {{cameraName}} s'ha desat correctament"
+ }
+ }
+ },
+ "cameraReview": {
+ "object_descriptions": {
+ "title": "Descripcions d'objectes generadors d'IA",
+ "desc": "Activa/desactiva temporalment les descripcions d'objectes generatius d'IA per a aquesta càmera. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als objectes rastrejats en aquesta càmera."
+ },
+ "review_descriptions": {
+ "title": "Descripcions de la IA generativa",
+ "desc": "Activa/desactiva temporalment les descripcions de revisió de la IA generativa per a aquesta càmera. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als elements de revisió d'aquesta càmera."
+ },
+ "review": {
+ "title": "Revisió",
+ "desc": "Activa/desactiva temporalment les alertes i deteccions d'aquesta càmera fins que es reiniciï Frigate. Si està desactivat, no es generaran nous elements de revisió. ",
+ "alerts": "Alertes. ",
+ "detections": "Deteccions. "
+ },
+ "reviewClassification": {
+ "title": "Revisió de la classificació",
+ "desc": "Frigate categoritza els articles de revisió com Alertes i Deteccions. Per defecte, tots els objectes persona i cotxe es consideren Alertes. Podeu refinar la categorització dels elements de revisió configurant-los les zones requerides.",
+ "noDefinedZones": "No hi ha zones definides per a aquesta càmera.",
+ "selectAlertsZones": "Selecciona zones per a les alertes",
+ "selectDetectionsZones": "Selecció de zones per a les deteccions",
+ "limitDetections": "Limita les deteccions a zones específiques",
+ "toast": {
+ "success": "S'ha desat la configuració de la classificació de la revisió. Reinicia la fragata per aplicar canvis."
+ },
+ "unsavedChanges": "Paràmetres de classificació de revisions sense desar per {{camera}}",
+ "objectAlertsTips": "Totes els objectes {{alertsLabels}} de {{cameraName}} es mostraran com avisos.",
+ "zoneObjectAlertsTips": "Tots els objectes{{alertsLabels}} detectats en {{zone}} de {{cameraName}} es mostraran com a avisos.",
+ "objectDetectionsTips": "Tots els objectes {{detectionsLabels}} que no estiguin categoritzats de {{cameraName}} es mostraran com a Deteccions independentment de la zona on es trobin.",
+ "zoneObjectDetectionsTips": {
+ "text": "Tots els objectes {{detectionsLabels}} no categoritzats a {{zone}} de {{cameraName}} es mostraran com a Deteccions.",
+ "notSelectDetections": "Tots els objectes {{detectionsLabels}} detectats a {{zone}} de{{cameraName}} no categoritzats com a alertes es mostraran com a Deteccions independentment de la zona on es trobin.",
+ "regardlessOfZoneObjectDetectionsTips": "Tots els objectes {{detectionsLabels}} que no estiguin categoritzats de {{cameraName}} es mostraran com a Deteccions independentment de la zona on es trobin."
+ }
+ },
+ "title": "Paràmetres de Revisió de la Càmera"
}
}
diff --git a/web/public/locales/cs/views/classificationModel.json b/web/public/locales/cs/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/cs/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/da/views/classificationModel.json b/web/public/locales/da/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/da/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/de/views/classificationModel.json b/web/public/locales/de/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/de/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/el/views/classificationModel.json b/web/public/locales/el/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/el/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/es/components/auth.json b/web/public/locales/es/components/auth.json
index fde9c5a9f..62d6c8445 100644
--- a/web/public/locales/es/components/auth.json
+++ b/web/public/locales/es/components/auth.json
@@ -10,6 +10,7 @@
"loginFailed": "Error de inicio de sesión"
},
"password": "Contraseña",
- "login": "Iniciar sesión"
+ "login": "Iniciar sesión",
+ "firstTimeLogin": "¿Estás tratando de iniciar sesión por primera vez? Las credenciales están impresas en los registros de Frigate."
}
}
diff --git a/web/public/locales/es/views/classificationModel.json b/web/public/locales/es/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/es/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/es/views/settings.json b/web/public/locales/es/views/settings.json
index e418458b0..9308af481 100644
--- a/web/public/locales/es/views/settings.json
+++ b/web/public/locales/es/views/settings.json
@@ -10,7 +10,9 @@
"general": "Configuración General - Frigate",
"frigatePlus": "Configuración de Frigate+ - Frigate",
"notifications": "Configuración de Notificaciones - Frigate",
- "enrichments": "Configuración de Análisis Avanzado - Frigate"
+ "enrichments": "Configuración de Análisis Avanzado - Frigate",
+ "cameraManagement": "Administrar Cámaras - Frigate",
+ "cameraReview": "Revisar Configuración de Cámaras - Frigate"
},
"menu": {
"cameras": "Configuración de Cámara",
@@ -24,7 +26,8 @@
"notifications": "Notificaciones",
"enrichments": "Análisis avanzado",
"triggers": "Disparadores",
- "roles": "Rols"
+ "roles": "Rols",
+ "cameraManagement": "Administración"
},
"dialog": {
"unsavedChanges": {
diff --git a/web/public/locales/fa/views/classificationModel.json b/web/public/locales/fa/views/classificationModel.json
new file mode 100644
index 000000000..a4bdd37e4
--- /dev/null
+++ b/web/public/locales/fa/views/classificationModel.json
@@ -0,0 +1,22 @@
+{
+ "button": {
+ "deleteClassificationAttempts": "حذف تصاویر طبقه بندی",
+ "renameCategory": "تغییر نام کلاس",
+ "deleteCategory": "حذف کردن کلاس",
+ "deleteImages": "حذف کردن عکس ها",
+ "trainModel": "مدل آموزش"
+ },
+ "toast": {
+ "success": {
+ "deletedCategory": "کلاس حذف شده",
+ "deletedImage": "عکس های حذف شده",
+ "categorizedImage": "تصویر طبقه بندی شده",
+ "trainedModel": "مدل آموزش دیده شده.",
+ "trainingModel": "آموزش دادن مدل با موفقیت شروع شد."
+ },
+ "error": {
+ "deleteImageFailed": "حذف نشد:{{پیغام خطا}}",
+ "deleteCategoryFailed": "کلاس حذف نشد:{{پیغام خطا}}"
+ }
+ }
+}
diff --git a/web/public/locales/fa/views/explore.json b/web/public/locales/fa/views/explore.json
index f98ef706f..8cbff2582 100644
--- a/web/public/locales/fa/views/explore.json
+++ b/web/public/locales/fa/views/explore.json
@@ -1,3 +1,4 @@
{
- "generativeAI": "هوش مصنوعی تولید کننده"
+ "generativeAI": "هوش مصنوعی تولید کننده",
+ "documentTitle": "کاوش کردن - فرایگیت"
}
diff --git a/web/public/locales/fi/views/classificationModel.json b/web/public/locales/fi/views/classificationModel.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/web/public/locales/fi/views/classificationModel.json
@@ -0,0 +1 @@
+{}
diff --git a/web/public/locales/fr/audio.json b/web/public/locales/fr/audio.json
index 8fc23b06e..b34615853 100644
--- a/web/public/locales/fr/audio.json
+++ b/web/public/locales/fr/audio.json
@@ -1,10 +1,10 @@
{
- "speech": "Conversation",
+ "speech": "Parole",
"babbling": "Babillage",
- "yell": "Crier",
+ "yell": "Cri",
"bicycle": "Vélo",
"car": "Voiture",
- "bellow": "Ci-dessous",
+ "bellow": "Beuglement",
"whispering": "Chuchotement",
"laughter": "Rires",
"snicker": "Ricanement",
@@ -13,7 +13,7 @@
"bus": "Bus",
"train": "Train",
"motorcycle": "Moto",
- "whoop": "Cri",
+ "whoop": "Cri strident",
"sigh": "Soupir",
"singing": "Chant",
"choir": "Chorale",
@@ -22,7 +22,7 @@
"mantra": "Mantra",
"child_singing": "Chant d'enfant",
"bird": "Oiseau",
- "cat": "chat",
+ "cat": "Chat",
"synthetic_singing": "Chant synthétique",
"rapping": "Rap",
"horse": "Cheval",
@@ -31,15 +31,15 @@
"whistling": "Sifflement",
"breathing": "Respiration",
"snoring": "Ronflement",
- "gasp": "Souffle",
+ "gasp": "Souffle coupé",
"pant": "halètement",
- "snort": "Reniflement",
+ "snort": "Ébrouement",
"camera": "Caméra",
- "cough": "Toussotement",
+ "cough": "Toux",
"groan": "Gémissement",
"grunt": "Grognement",
- "throat_clearing": "Éclaircissement de la gorge",
- "wheeze": "Respiration bruyante",
+ "throat_clearing": "Raclement de gorge",
+ "wheeze": "Respiration sifflante",
"sneeze": "Éternuement",
"sniff": "Reniflement",
"chewing": "Mastication",
@@ -72,7 +72,7 @@
"burping": "Rots",
"fart": "Pet",
"crowd": "Foule",
- "children_playing": "Enfants en train de jouer",
+ "children_playing": "Jeux d'enfants",
"animal": "Animal",
"bark": "Aboiement",
"pig": "Cochon",
@@ -80,7 +80,7 @@
"chicken": "Poulet",
"turkey": "Dinde",
"duck": "Canard",
- "goose": "Dindon",
+ "goose": "Oie",
"wild_animals": "Animaux Sauvages",
"crow": "Corbeau",
"dogs": "Chiens",
@@ -99,31 +99,31 @@
"vehicle": "Véhicule",
"skateboard": "Skateboard",
"door": "Porte",
- "blender": "Mixer",
- "hair_dryer": "Sèche cheveux",
+ "blender": "Mixeur",
+ "hair_dryer": "Sèche-cheveux",
"toothbrush": "Brosse à dents",
- "sink": "Lavabo",
- "scissors": "Paire de ciseaux",
+ "sink": "Évier",
+ "scissors": "Ciseaux",
"humming": "Bourdonnement",
- "shuffle": "Mélanger",
- "footsteps": "Pas",
+ "shuffle": "Pas traînants",
+ "footsteps": "Bruits de pas",
"hiccup": "Hoquet",
"finger_snapping": "Claquement de doigts",
"clapping": "Claquements",
"applause": "Applaudissements",
"heartbeat": "Battements de coeur",
- "cheering": "Applaudissement",
+ "cheering": "Acclamations",
"electric_shaver": "Rasoir électrique",
"truck": "Camion",
- "run": "Démarrer",
+ "run": "Course",
"biting": "Mordre",
"stomach_rumble": "Gargouillements d'estomac",
"hands": "Mains",
"heart_murmur": "Souffle au cœur",
- "chatter": "Bavarder",
+ "chatter": "Bavardage",
"pets": "Animaux de compagnie",
- "yip": "Ouais",
- "howl": "Hurler",
+ "yip": "Jappement",
+ "howl": "Hurlement",
"growling": "Grondement",
"whimper_dog": "Gémissements de chien",
"purr": "Ronronnements",
@@ -132,8 +132,8 @@
"livestock": "Bétail",
"neigh": "Hennissement",
"quack": "Coin-coin",
- "honk": "Klaxon",
- "roaring_cats": "Feulements",
+ "honk": "Cacardement",
+ "roaring_cats": "Rugissement de félins",
"roar": "Rugissements",
"chirp": "Gazouillis",
"squawk": "Braillement",
@@ -191,7 +191,7 @@
"steelpan": "Pan",
"orchestra": "Orchestre",
"brass_instrument": "Cuivres",
- "french_horn": "Cor français",
+ "french_horn": "Cor d'harmonie",
"trumpet": "Trompette",
"bowed_string_instrument": "Instrument à cordes frottées",
"string_section": "Section des cordes",
@@ -247,7 +247,7 @@
"sad_music": "Musique triste",
"tender_music": "Musique tendre",
"exciting_music": "Musique stimulante",
- "angry_music": "Musique énervée",
+ "angry_music": "Musique agressive",
"scary_music": "Musique effrayante",
"wind": "Vent",
"rustling_leaves": "Bruissements de feuilles",
@@ -277,7 +277,7 @@
"skidding": "Dérapage",
"tire_squeal": "Crissements de pneu",
"car_passing_by": "Passage de voiture",
- "race_car": "Course de voitures",
+ "race_car": "Voiture de course",
"air_brake": "Frein pneumatique",
"air_horn": "Klaxon à air",
"reversing_beeps": "Bips de marche arrière",
@@ -311,7 +311,7 @@
"squeak": "Grincement",
"cupboard_open_or_close": "Ouverture ou fermeture de placard",
"drawer_open_or_close": "Ouverture ou fermeture de tiroir",
- "dishes": "Plats",
+ "dishes": "Bruit de vaisselle",
"cutlery": "Couverts",
"chopping": "Hacher",
"frying": "Friture",
@@ -324,7 +324,7 @@
"zipper": "Fermeture éclair",
"keys_jangling": "Tintements de clés",
"coin": "Pièce de monnaie",
- "shuffling_cards": "Mélange de cartes",
+ "shuffling_cards": "Battement de cartes",
"typing": "Frappe au clavier",
"typewriter": "Machine à écrire",
"writing": "Écriture",
@@ -414,27 +414,27 @@
"idling": "Ralenti",
"radio": "Radio",
"telephone": "Téléphone",
- "bow_wow": "Ouaf ouaf",
+ "bow_wow": "Aboiement",
"hiss": "Sifflement",
"clip_clop": "Clic-clac",
"cattle": "Bétail",
"moo": "Meuglement",
"cowbell": "Clochette",
"oink": "Grouin-grouin",
- "bleat": "Bêler",
+ "bleat": "Bêlement",
"fowl": "Volaille",
"cluck": "Gloussement",
"cock_a_doodle_doo": "Cocorico",
"gobble": "Glouglou",
"chird": "Accord",
- "change_ringing": "Changer la sonnerie",
+ "change_ringing": "Carillon de cloches",
"sodeling": "Sodèle",
"shofar": "Choffar",
"liquid": "Liquide",
- "splash": "Éclabousser",
- "slosh": "Patauger",
- "squish": "Gargouillis",
- "drip": "Goutte",
+ "splash": "Éclaboussure",
+ "slosh": "Clapotis",
+ "squish": "Bruit de pataugeage",
+ "drip": "Goutte à goutte",
"trickle": "Filet",
"gush": "Jet",
"fill": "Remplir",
@@ -446,46 +446,58 @@
"pour": "Verser",
"sonar": "Sonar",
"whoosh": "Whoosh",
- "thump": "Cogner",
- "thunk": "Je pense",
+ "thump": "Coup sourd",
+ "thunk": "Bruit sourd",
"electronic_tuner": "Accordeur électronique",
"effects_unit": "Unité d'effets",
"chorus_effect": "Effet de chœur",
"basketball_bounce": "Rebond de basket-ball",
- "bang": "Claquer",
- "slap": "Gifler",
- "whack": "Battre",
+ "bang": "Détonation",
+ "slap": "Gifle",
+ "whack": "Coup sec",
"smash": "Fracasser",
- "breaking": "Rupture",
- "bouncing": "Rebondir",
+ "breaking": "Bruit de casse",
+ "bouncing": "Rebondissement",
"whip": "Fouet",
- "flap": "Rabat",
- "scratch": "Gratter",
- "scrape": "Gratter",
- "rub": "Frotter",
- "roll": "Rouler",
+ "flap": "Battement",
+ "scratch": "Grattement",
+ "scrape": "Raclement",
+ "rub": "Frottement",
+ "roll": "Roulement",
"crushing": "Écrasement",
"crumpling": "Froissement",
"tearing": "Déchirure",
"beep": "Bip",
"ping": "Ping",
"ding": "Ding",
- "clang": "Bruit",
- "squeal": "Hurler",
+ "clang": "Bruit métallique",
+ "squeal": "Grincement",
"creak": "Craquer",
"rustle": "Bruissement",
"whir": "Vrombissement",
"clatter": "Bruit",
- "sizzle": "Grésiller",
- "clicking": "En cliquant",
+ "sizzle": "Grésillement",
+ "clicking": "Cliquetis",
"clickety_clack": "Clic-clac",
- "rumble": "Gronder",
+ "rumble": "Grondement",
"plop": "Ploc",
"hum": "Hum",
"harmonic": "Harmonique",
"outside": "Extérieur",
"reverberation": "Réverbération",
- "echo": "Echo",
+ "echo": "Écho",
"distortion": "Distorsion",
- "vibration": "Vibration"
+ "vibration": "Vibration",
+ "zing": "Sifflement",
+ "crunch": "Croque",
+ "sine_wave": "Onde sinusoïdale",
+ "chirp_tone": "Gazouillis",
+ "pulse": "Impulsion",
+ "inside": "Intérieur",
+ "noise": "Bruit",
+ "mains_hum": "Bourdonnement du secteur",
+ "sidetone": "Retour de voix",
+ "cacophony": "Cacophonie",
+ "throbbing": "Pulsation",
+ "boing": "Boing"
}
diff --git a/web/public/locales/fr/common.json b/web/public/locales/fr/common.json
index fad8e40fa..b6d5605ea 100644
--- a/web/public/locales/fr/common.json
+++ b/web/public/locales/fr/common.json
@@ -1,6 +1,6 @@
{
"time": {
- "untilForRestart": "Jusqu'au redémarrage de Frigate.",
+ "untilForRestart": "Jusqu'au redémarrage de Frigate",
"untilRestart": "Jusqu'au redémarrage",
"untilForTime": "Jusqu'à {{time}}",
"justNow": "À l'instant",
@@ -25,7 +25,7 @@
"year_one": "{{time}} année",
"year_many": "{{time}} années",
"year_other": "{{time}} années",
- "mo": "{{time}} m",
+ "mo": "{{time}} mois",
"month_one": "{{time}} mois",
"month_many": "{{time}} mois",
"month_other": "{{time}} mois",
@@ -33,7 +33,7 @@
"second_one": "{{time}} seconde",
"second_many": "{{time}} secondes",
"second_other": "{{time}} secondes",
- "m": "{{time}} mn",
+ "m": "{{time}} min",
"hour_one": "{{time}} heure",
"hour_many": "{{time}} heures",
"hour_other": "{{time}} heures",
@@ -65,23 +65,23 @@
},
"formattedTimestampHourMinute": {
"24hour": "HH:mm",
- "12hour": "HH:mm aaa"
+ "12hour": "HH:mm"
},
"formattedTimestampMonthDay": "d MMM",
"formattedTimestampFilename": {
- "12hour": "dd-MM-yy-HH-mm-ss-a",
+ "12hour": "dd-MM-yy-HH-mm-ss",
"24hour": "dd-MM-yy-HH-mm-ss"
},
"formattedTimestampMonthDayHourMinute": {
- "12hour": "d MMM, HH:mm aaa",
+ "12hour": "d MMM, HH:mm",
"24hour": "d MMM, HH:mm"
},
"formattedTimestampHourMinuteSecond": {
"24hour": "HH:mm:ss",
- "12hour": "HH:mm:ss aaa"
+ "12hour": "HH:mm:ss"
},
"formattedTimestampMonthDayYearHourMinute": {
- "12hour": "d MMM yyyy, HH:mm aaa",
+ "12hour": "d MMM yyyy, HH:mm",
"24hour": "d MMM yyyy, HH:mm"
},
"formattedTimestampMonthDayYear": {
@@ -98,16 +98,16 @@
"close": "Fermer",
"copy": "Copier",
"back": "Retour",
- "history": "Historique",
- "pictureInPicture": "Image en incrustation",
+ "history": "Chronologie",
+ "pictureInPicture": "Image dans l'image",
"twoWayTalk": "Conversation bidirectionnelle",
- "off": "Inactif",
- "edit": "Editer",
+ "off": "OFF",
+ "edit": "Modifier",
"copyCoordinates": "Copier les coordonnées",
"delete": "Supprimer",
"yes": "Oui",
"no": "Non",
- "unsuspended": "Reprendre",
+ "unsuspended": "Réactivé",
"play": "Lire",
"unselect": "Désélectionner",
"suspended": "Suspendu",
@@ -120,7 +120,7 @@
"next": "Suivant",
"exitFullscreen": "Sortir du mode plein écran",
"cameraAudio": "Son de la caméra",
- "on": "Actif",
+ "on": "ON",
"export": "Exporter",
"deleteNow": "Supprimer maintenant",
"download": "Télécharger",
@@ -131,7 +131,7 @@
"language": {
"en": "English (Anglais)",
"withSystem": {
- "label": "Utiliser les paramètres système pour la langue"
+ "label": "Utilisez les paramètres système pour la langue"
},
"zhCN": "简体中文 (Chinois simplifié)",
"hi": "हिन्दी (Hindi)",
@@ -163,21 +163,21 @@
"yue": "粵語 (Cantonais)",
"th": "ไทย (Thai)",
"ca": "Català (Catalan)",
- "ptBR": "Português brasileiro (portugais brésilien)",
+ "ptBR": "Português brasileiro (Portugais brésilien)",
"sr": "Српски (Serbe)",
- "sl": "Slovenščina (slovène)",
- "lt": "Lietuvių (lithuanien)",
- "bg": "Български (bulgare)",
- "gl": "Galego (galicien)",
- "id": "Bahasa Indonesia (indonésien)",
- "ur": "اردو (ourdou)"
+ "sl": "Slovenščina (Slovène)",
+ "lt": "Lietuvių (Lithuanien)",
+ "bg": "Български (Bulgare)",
+ "gl": "Galego (Galicien)",
+ "id": "Bahasa Indonesia (Indonésien)",
+ "ur": "اردو (Ourdou)"
},
"appearance": "Apparence",
"darkMode": {
"light": "Clair",
"dark": "Sombre",
"withSystem": {
- "label": "Utiliser les paramètres système pour le mode clair ou sombre"
+ "label": "Utilisez les paramètres système pour le mode clair ou sombre"
},
"label": "Mode sombre"
},
@@ -199,18 +199,18 @@
},
"system": "Système",
"help": "Aide",
- "configurationEditor": "Editeur de configuration",
+ "configurationEditor": "Éditeur de configuration",
"theme": {
"contrast": "Contraste élevé",
"blue": "Bleu",
"green": "Vert",
"nord": "Nord",
"red": "Rouge",
- "default": "Défaut",
+ "default": "Par défaut",
"label": "Thème",
"highcontrast": "Contraste élevé"
},
- "systemMetrics": "Indicateurs systèmes",
+ "systemMetrics": "Métriques du système",
"settings": "Paramètres",
"withSystem": "Système",
"restart": "Redémarrer Frigate",
@@ -224,7 +224,7 @@
"allCameras": "Toutes les caméras",
"title": "Direct"
},
- "uiPlayground": "Gestion de l'interface",
+ "uiPlayground": "Bac à sable de l'interface",
"faceLibrary": "Bibliothèque de visages",
"languages": "Langues"
},
@@ -233,10 +233,10 @@
"title": "Enregistrer",
"error": {
"noMessage": "Echec lors de l'enregistrement des changements de configuration",
- "title": "Echec lors de l'enregistrement des changements de configuration : {{errorMessage}}"
+ "title": "Échec de l'enregistrement des changements de configuration : {{errorMessage}}"
}
},
- "copyUrlToClipboard": "Lien copié dans le presse-papier."
+ "copyUrlToClipboard": "URL copiée dans le presse-papiers"
},
"role": {
"title": "Rôle",
diff --git a/web/public/locales/fr/components/auth.json b/web/public/locales/fr/components/auth.json
index 65e26691b..485e11d03 100644
--- a/web/public/locales/fr/components/auth.json
+++ b/web/public/locales/fr/components/auth.json
@@ -1,15 +1,16 @@
{
"form": {
"password": "Mot de passe",
- "login": "Identifiant",
+ "login": "Connexion",
"user": "Nom d'utilisateur",
"errors": {
"unknownError": "Erreur inconnue. Vérifiez les journaux.",
"webUnknownError": "Erreur inconnue. Vérifiez les journaux de la console.",
- "passwordRequired": "Un mot de passe est requis",
+ "passwordRequired": "Un mot de passe est requis.",
"loginFailed": "Échec de l'authentification",
- "usernameRequired": "Un nom d'utilisateur est requis",
- "rateLimit": "Nombre d'essais dépassé. Réessayez plus tard."
- }
+ "usernameRequired": "Un nom d'utilisateur est requis.",
+ "rateLimit": "Trop de tentatives. Veuillez réessayer plus tard."
+ },
+ "firstTimeLogin": "Première connexion ? Vos identifiants se trouvent dans les journaux de Frigate."
}
}
diff --git a/web/public/locales/fr/components/camera.json b/web/public/locales/fr/components/camera.json
index 8595697bc..e801b4c9f 100644
--- a/web/public/locales/fr/components/camera.json
+++ b/web/public/locales/fr/components/camera.json
@@ -1,38 +1,38 @@
{
"group": {
- "edit": "Éditer le groupe de caméras",
- "label": "Groupe de caméras",
+ "edit": "Modifier le groupe de caméras",
+ "label": "Groupes de caméras",
"add": "Ajouter un groupe de caméras",
"delete": {
"label": "Supprimer le groupe de caméras",
"confirm": {
- "title": "Confirmer la suppression",
+ "title": "Confirmez la suppression",
"desc": "Êtes-vous sûr de vouloir supprimer le groupe de caméras {{name}} ?"
}
},
"name": {
- "placeholder": "Saisissez un nom…",
+ "placeholder": "Saisissez un nom.",
"label": "Nom",
"errorMessage": {
"mustLeastCharacters": "Le nom du groupe de caméras doit comporter au moins 2 caractères.",
"exists": "Le nom du groupe de caméras existe déjà.",
- "nameMustNotPeriod": "Le nom de groupe de caméras ne doit pas contenir de période.",
- "invalid": "Nom de groupe de caméras invalide."
+ "nameMustNotPeriod": "Le nom de groupe de caméras ne doit pas contenir de point.",
+ "invalid": "Nom de groupe de caméras invalide"
}
},
"cameras": {
"label": "Caméras",
- "desc": "Sélectionner les caméras pour ce groupe."
+ "desc": "Sélectionnez les caméras pour ce groupe."
},
"success": "Le groupe de caméras ({{name}}) a été enregistré.",
"icon": "Icône",
"camera": {
"setting": {
- "label": "Paramètres de flux de caméra",
- "title": "Paramètres de flux de {{cameraName}}",
- "audioIsUnavailable": "L'audio n'est pas disponible pour ce flux",
- "audioIsAvailable": "L'audio est disponible pour ce flux",
- "desc": "Modifie les options du flux temps réel pour le tableau de bord de ce groupe de caméras. Ces paramètres sont spécifiques à un périphérique et/ou navigateur.",
+ "label": "Paramètres du flux de la caméra",
+ "title": "Paramètres du flux de {{cameraName}}",
+ "audioIsUnavailable": "L'audio n'est pas disponible pour ce flux.",
+ "audioIsAvailable": "L'audio est disponible pour ce flux.",
+ "desc": "Modifier les options du flux temps réel pour le tableau de bord de ce groupe de caméras. Ces paramètres sont spécifiques à l'appareil ou au navigateur.",
"audio": {
"tips": {
"document": "Lire la documentation ",
@@ -40,32 +40,32 @@
}
},
"streamMethod": {
- "label": "Méthode de streaming",
+ "label": "Méthode de diffusion",
"method": {
"noStreaming": {
- "label": "Pas de diffusion",
- "desc": "Les images provenant de la caméra ne seront mises à jour qu'une fois par minute et il n'y aura pas de diffusion en direct."
+ "label": "Aucune diffusion",
+ "desc": "Les images provenant de la caméra ne seront mises à jour qu'une fois par minute et il n'y aura aucune diffusion en direct."
},
"smartStreaming": {
- "label": "Diffusion intelligente (recommandé)",
- "desc": "La diffusion intelligente mettra à jour les images de la caméra une fois par minute lorsqu'aucune activité n'est détectée afin de conserver la bande-passante et les ressources. Quand une activité est détectée, le flux bascule automatiquement en diffusion temps réel."
+ "label": "Diffusion intelligente (recommandée)",
+ "desc": "La diffusion intelligente mettra à jour les images de la caméra une fois par minute lorsqu'aucune activité n'est détectée afin de conserver la bande passante et les ressources. Quand une activité est détectée, le flux bascule automatiquement en diffusion temps réel."
},
"continuousStreaming": {
"label": "Diffusion en continu",
"desc": {
"title": "L'image de la caméra sera toujours un flux temps réel lorsqu'elle est visible dans le tableau de bord, même si aucune activité n'est détectée.",
- "warning": "La diffusion en continu peut engendrer une bande-passante élevée et des problèmes de performance. A utiliser avec précaution."
+ "warning": "La diffusion en continu peut entraîner une consommation de bande passante élevée et des problèmes de performance. À utiliser avec prudence."
}
}
},
- "placeholder": "Choisissez une méthode de diffusion"
+ "placeholder": "Choisissez une méthode de diffusion."
},
"compatibilityMode": {
"label": "Mode de compatibilité",
- "desc": "Activer cette option uniquement si votre flux temps réel affiche des erreurs chromatiques et a une ligne diagonale sur le côté droit de l'image."
+ "desc": "Activez cette option uniquement si votre flux temps réel affiche des artefacts chromatiques et présente une ligne diagonale sur le côté droit de l'image."
},
"stream": "Flux",
- "placeholder": "Choisissez un flux"
+ "placeholder": "Choisissez un flux."
},
"birdseye": "Birdseye"
}
@@ -80,7 +80,7 @@
"label": "Paramètres",
"hideOptions": "Masquer les options"
},
- "boundingBox": "Boîte de délimitation",
+ "boundingBox": "Cadre englobant",
"zones": "Zones",
"regions": "Régions"
}
diff --git a/web/public/locales/fr/components/dialog.json b/web/public/locales/fr/components/dialog.json
index 9e5d34a79..931dd6779 100644
--- a/web/public/locales/fr/components/dialog.json
+++ b/web/public/locales/fr/components/dialog.json
@@ -2,8 +2,8 @@
"restart": {
"title": "Êtes-vous sûr de vouloir redémarrer Frigate ?",
"restarting": {
- "title": "Frigate redémarre",
- "content": "Actualisation de la page dans {{countdown}} secondes.",
+ "title": "Redémarrage de Frigate en cours",
+ "content": "Cette page sera rechargée dans {{countdown}} secondes.",
"button": "Forcer l'actualisation maintenant"
},
"button": "Redémarrer"
@@ -31,10 +31,10 @@
"submitted": "Soumis"
},
"question": {
- "label": "Confirmez ce libellé pour Frigate+",
- "ask_an": "Est-ce que cet objet est un(e) {{label}} ?",
- "ask_a": "Est-ce que cet objet est un(e) {{label}} ?",
- "ask_full": "Est-ce-que cet objet est un(e) {{translatedLabel}} ?"
+ "label": "Confirmez cette étiquette pour Frigate+.",
+ "ask_an": "Cet objet est-il un(e) {{label}} ?",
+ "ask_a": "Cet objet est-il un(e) {{label}} ?",
+ "ask_full": "Cet objet est-il un(e) {{translatedLabel}} ?"
}
}
},
@@ -61,25 +61,25 @@
"selectOrExport": "Sélectionner ou exporter",
"toast": {
"error": {
- "failed": "Échec du démarrage de l'export : {{error}}",
- "endTimeMustAfterStartTime": "L'heure de fin doit être postérieure à l'heure de début",
- "noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide"
+ "failed": "Échec du démarrage de l'exportation : {{error}}",
+ "endTimeMustAfterStartTime": "L'heure de fin doit être postérieure à l'heure de début.",
+ "noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide."
},
"success": "Exportation démarrée avec succès. Consultez le fichier dans le dossier /exports."
},
"select": "Sélectionner",
"name": {
- "placeholder": "Nommer l'export"
+ "placeholder": "Nommer l'exportation"
},
"export": "Exporter",
"fromTimeline": {
- "saveExport": "Enregistrer l'export",
- "previewExport": "Prévisualiser l'export"
+ "saveExport": "Enregistrer l'exportation",
+ "previewExport": "Aperçu de l'exportation"
}
},
"search": {
"saveSearch": {
- "desc": "Donnez un nom à cette recherche enregistrée.",
+ "desc": "Saisissez un nom à cette recherche enregistrée.",
"label": "Enregistrer la recherche",
"success": "La recherche ({{searchName}}) a été enregistrée.",
"button": {
@@ -88,7 +88,7 @@
}
},
"overwrite": "{{searchName}} existe déjà. L'enregistrement écrasera la recherche existante.",
- "placeholder": "Saisissez un nom pour votre recherche"
+ "placeholder": "Saisissez un nom pour votre recherche."
}
},
"streaming": {
@@ -102,7 +102,7 @@
},
"showStats": {
"label": "Afficher les statistiques du flux",
- "desc": "Activez cette option pour montrer les statistiques de diffusion en incrustation sur le flux vidéo de la caméra."
+ "desc": "Activez cette option pour afficher les statistiques de diffusion en incrustation sur le flux vidéo de la caméra."
},
"debugView": "Affichage de débogage"
},
@@ -111,7 +111,7 @@
"desc": {
"selected": "Êtes-vous sûr(e) de vouloir supprimer toutes les vidéos enregistrées associées à cet élément de la revue d'événements ?
Maintenez la touche Maj enfoncée pour éviter cette boîte de dialogue à l'avenir."
},
- "title": "Confirmer la suppression",
+ "title": "Confirmez la suppression.",
"toast": {
"success": "Les vidéos associées aux éléments de revue d'événements sélectionnés ont été supprimées.",
"error": "Échec de la suppression : {{error}}"
@@ -119,15 +119,15 @@
},
"button": {
"export": "Exporter",
- "markAsReviewed": "Marquer comme passé en revue",
+ "markAsReviewed": "Marquer comme vérifié",
"deleteNow": "Supprimer maintenant",
- "markAsUnreviewed": "Marqué comme non passé en revue"
+ "markAsUnreviewed": "Marquer comme non vérifié"
}
},
"imagePicker": {
- "selectImage": "Sélectionnez une vignette d'objet suivi",
+ "selectImage": "Sélectionnez une vignette d'objet suivi.",
"search": {
- "placeholder": "Chercher par libellé ou sous-libellé..."
+ "placeholder": "Rechercher par étiquette ou sous-étiquette"
},
"noImages": "Aucune vignette trouvée pour cette caméra"
}
diff --git a/web/public/locales/fr/components/filter.json b/web/public/locales/fr/components/filter.json
index 58a03de93..33bb27d82 100644
--- a/web/public/locales/fr/components/filter.json
+++ b/web/public/locales/fr/components/filter.json
@@ -1,13 +1,13 @@
{
"labels": {
- "label": "Libellés",
+ "label": "Étiquettes",
"all": {
- "title": "Tous les libellés",
- "short": "Libellés"
+ "title": "Toutes les étiquettes",
+ "short": "Étiquettes"
},
"count": "{{count}} Étiquettes",
- "count_one": "{{count}} libellé",
- "count_other": "{{count}} libellés"
+ "count_one": "{{count}} étiquette",
+ "count_other": "{{count}} étiquettes"
},
"filter": "Filtre",
"zones": {
@@ -22,16 +22,16 @@
"title": "Toutes les dates",
"short": "Dates"
},
- "selectPreset": "Sélectionnez un préréglage…"
+ "selectPreset": "Sélectionnez un préréglage."
},
"more": "Plus de filtres",
"reset": {
"label": "Réinitialiser les filtres aux valeurs par défaut"
},
- "timeRange": "Plage de temps",
+ "timeRange": "Plage horaire",
"subLabels": {
- "label": "Sous-libellés",
- "all": "Tous les sous-libellés"
+ "label": "Sous-étiquettes",
+ "all": "Toutes les sous-étiquettes"
},
"score": "Score",
"estimatedSpeed": "Vitesse estimée ({{unit}})",
@@ -52,7 +52,7 @@
},
"hasVideoClip": "A un clip vidéo",
"hasSnapshot": "A un instantané",
- "label": "Fonctionnalités"
+ "label": "Caractéristiques"
},
"explore": {
"settings": {
@@ -61,7 +61,7 @@
"title": "Vue par défaut",
"summary": "Résumé",
"unfilteredGrid": "Grille non filtrée",
- "desc": "Lorsqu'aucun filtre n'est sélectionné, affiche un résumé des objets suivis les plus récents par libellé, ou affiche une grille non filtrée."
+ "desc": "Lorsqu'aucun filtre n'est sélectionné, affiche un résumé des objets suivis les plus récents par étiquette, ou affiche une grille non filtrée."
},
"gridColumns": {
"desc": "Sélectionner le nombre de colonnes dans la vue grille.",
@@ -70,7 +70,7 @@
"searchSource": {
"label": "Source de recherche",
"options": {
- "thumbnailImage": "Image de miniature",
+ "thumbnailImage": "Miniature",
"description": "Description"
},
"desc": "Choisissez si vous souhaitez rechercher les miniatures ou les descriptions de vos objets suivis."
@@ -83,7 +83,7 @@
}
},
"review": {
- "showReviewed": "Montrer les éléments passés en revue"
+ "showReviewed": "Afficher les éléments vérifiés"
},
"cameras": {
"label": "Filtre des caméras",
@@ -101,27 +101,27 @@
"title": "Chargement",
"desc": "Lorsque le volet de journalisation est défilé jusqu'en bas, les nouveaux enregistrements s'affichent automatiquement au fur et à mesure qu'ils sont ajoutés."
},
- "label": "Niveau de journalisation du filtre",
- "disableLogStreaming": "Désactiver la diffusion des journaux",
+ "label": "Filtrer par niveau de journal",
+ "disableLogStreaming": "Désactiver le flux des journaux",
"allLogs": "Tous les journaux"
},
"recognizedLicensePlates": {
- "placeholder": "Tapez pour rechercher des plaques d'immatriculation…",
- "noLicensePlatesFound": "Aucune plaque d'immatriculation trouvée.",
+ "placeholder": "Tapez pour rechercher des plaques d'immatriculation.",
+ "noLicensePlatesFound": "Aucune plaque d'immatriculation trouvée",
"loading": "Chargement des plaques d'immatriculation reconnues…",
"title": "Plaques d'immatriculation reconnues",
"loadFailed": "Échec du chargement des plaques d'immatriculation reconnues.",
- "selectPlatesFromList": "Sélectionner une ou plusieurs plaques d'immatriculation dans la liste.",
+ "selectPlatesFromList": "Sélectionnez une ou plusieurs plaques d'immatriculation dans la liste.",
"selectAll": "Tout sélectionner",
- "clearAll": "Tout effacer"
+ "clearAll": "Tout désélectionner"
},
"trackedObjectDelete": {
"title": "Confirmer la suppression",
"toast": {
- "success": "Les objets suivis ont été supprimés avec succès.",
+ "success": "Objets suivis supprimés avec succès.",
"error": "Échec de la suppression des objets suivis : {{errorMessage}}"
},
- "desc": "Supprimer ces objets suivis {{objectLength}} retirera l'instantané, les représentations numériques enregistrées et les entrées du cycle de vie de l'objet associées. Les séquences enregistrées de ces objets suivis dans la vue Historique NE seront PAS supprimées.
Voulez-vous vraiment continuer ?
Maintenez la touche Maj enfoncée pour ignorer cette boîte de dialogue à l'avenir."
+ "desc": "Supprimer ces objets suivis {{objectLength}} retirera l'instantané, les embeddings enregistrés et les entrées du cycle de vie de l'objet associées. Les séquences enregistrées de ces objets suivis dans la vue Chronologie NE seront PAS supprimées.
Voulez-vous vraiment continuer?
Maintenez la touche Maj enfoncée pour ignorer cette boîte de dialogue à l'avenir."
},
"zoneMask": {
"filterBy": "Filtrer par masque de zone"
diff --git a/web/public/locales/fr/components/icons.json b/web/public/locales/fr/components/icons.json
index f713f2f52..fd5f1f8f6 100644
--- a/web/public/locales/fr/components/icons.json
+++ b/web/public/locales/fr/components/icons.json
@@ -1,8 +1,8 @@
{
"iconPicker": {
"search": {
- "placeholder": "Rechercher une icône…"
+ "placeholder": "Rechercher une icône"
},
- "selectIcon": "Sélectionnez une icône"
+ "selectIcon": "Sélectionnez une icône."
}
}
diff --git a/web/public/locales/fr/components/input.json b/web/public/locales/fr/components/input.json
index 36874788e..258ca41bc 100644
--- a/web/public/locales/fr/components/input.json
+++ b/web/public/locales/fr/components/input.json
@@ -3,7 +3,7 @@
"downloadVideo": {
"label": "Télécharger la vidéo",
"toast": {
- "success": "Le téléchargement de la vidéo de votre élément de la revue d'événements a commencé."
+ "success": "Le téléchargement de la vidéo de votre élément de revue d'événements a commencé."
}
}
}
diff --git a/web/public/locales/fr/components/player.json b/web/public/locales/fr/components/player.json
index 7dd7346e5..396da5751 100644
--- a/web/public/locales/fr/components/player.json
+++ b/web/public/locales/fr/components/player.json
@@ -10,8 +10,8 @@
"title": "Flux hors ligne",
"desc": "Aucune image n'a été reçue sur le flux de détection de la caméra {{cameraName}}. Vérifiez le journal d'erreurs."
},
- "livePlayerRequiredIOSVersion": "iOS 17.1 ou une version supérieure est requis pour ce type de flux en direct.",
- "cameraDisabled": "La caméra est désactivée",
+ "livePlayerRequiredIOSVersion": "iOS 17.1 ou une version supérieure est requise pour ce type de flux en direct.",
+ "cameraDisabled": "La caméra est désactivée.",
"stats": {
"streamType": {
"title": "Type de flux :",
diff --git a/web/public/locales/fr/objects.json b/web/public/locales/fr/objects.json
index d959a8e42..4d7941ef9 100644
--- a/web/public/locales/fr/objects.json
+++ b/web/public/locales/fr/objects.json
@@ -9,17 +9,17 @@
"boat": "Bateau",
"traffic_light": "Feu de circulation",
"fire_hydrant": "Bouche d'incendie",
- "street_sign": "Plaque de rue",
+ "street_sign": "Panneau de signalisation",
"parking_meter": "Parcmètre",
"bench": "Banc",
"bird": "Oiseau",
- "cat": "chat",
+ "cat": "Chat",
"stop_sign": "Panneau de stop",
"dog": "Chien",
"horse": "Cheval",
"sheep": "Mouton",
"cow": "Vache",
- "elephant": "Eléphant",
+ "elephant": "Éléphant",
"bear": "Ours",
"zebra": "Zèbre",
"hat": "Chapeau",
@@ -27,8 +27,8 @@
"suitcase": "Valise",
"frisbee": "Frisbee",
"skis": "Skis",
- "snowboard": "Surf des neiges",
- "sports_ball": "Ballon des sports",
+ "snowboard": "Snowboard",
+ "sports_ball": "Ballon de sport",
"kite": "Cerf-volant",
"baseball_bat": "Batte de base-ball",
"umbrella": "Parapluie",
@@ -42,7 +42,7 @@
"baseball_glove": "Gant de baseball",
"skateboard": "Skateboard",
"surfboard": "Planche de surf",
- "tennis_racket": "Raquette de Tennis",
+ "tennis_racket": "Raquette de tennis",
"plate": "Assiette",
"cup": "Tasse",
"banana": "Banane",
@@ -63,7 +63,7 @@
"toaster": "Grille-pain",
"book": "Livre",
"teddy_bear": "Ours en peluche",
- "blender": "Mixer",
+ "blender": "Mixeur",
"toothbrush": "Brosse à dents",
"hair_brush": "Brosse à cheveux",
"vehicle": "Véhicule",
@@ -92,7 +92,7 @@
"refrigerator": "Réfrigérateur",
"bark": "Aboiement",
"oven": "Four",
- "scissors": "Paire de ciseaux",
+ "scissors": "Ciseaux",
"toilet": "Toilettes",
"carrot": "Carotte",
"bed": "Lit",
@@ -100,11 +100,11 @@
"fork": "Fourchette",
"squirrel": "Écureuil",
"microwave": "Micro-ondes",
- "hair_dryer": "Sèche cheveux",
+ "hair_dryer": "Sèche-cheveux",
"bowl": "Bol",
"spoon": "Cuillère",
"sandwich": "Sandwich",
- "sink": "Lavabo",
+ "sink": "Évier",
"broccoli": "Brocoli",
"knife": "Couteau",
"nzpost": "NZPost",
diff --git a/web/public/locales/fr/views/classificationModel.json b/web/public/locales/fr/views/classificationModel.json
new file mode 100644
index 000000000..1e97706e3
--- /dev/null
+++ b/web/public/locales/fr/views/classificationModel.json
@@ -0,0 +1,135 @@
+{
+ "documentTitle": "Modèles de classification",
+ "button": {
+ "deleteClassificationAttempts": "Supprimer les images de classification",
+ "renameCategory": "Renommer la classe",
+ "deleteCategory": "Supprimer la classe",
+ "deleteImages": "Supprimer les images",
+ "trainModel": "Entraîner le modèle"
+ },
+ "toast": {
+ "success": {
+ "deletedCategory": "Classe supprimée",
+ "deletedImage": "Images supprimées",
+ "categorizedImage": "Image classifiée avec succès",
+ "trainedModel": "Modèle entraîné avec succès.",
+ "trainingModel": "Démarrage de l'entraînement du modèle réussi"
+ },
+ "error": {
+ "deleteImageFailed": "Échec de la suppression : {{errorMessage}}",
+ "deleteCategoryFailed": "Échec de la suppression de la classe : {{errorMessage}}",
+ "categorizeFailed": "Échec de la catégorisation de l'image : {{errorMessage}}",
+ "trainingFailed": "Échec du démarrage de l'entraînement du modèle : {{errorMessage}}"
+ }
+ },
+ "deleteCategory": {
+ "title": "Supprimer la classe",
+ "desc": "Êtes-vous sûr de vouloir supprimer la classe {{name}} ? Cette action supprimera définitivement toutes les images associées et nécessitera un réentraînement du modèle."
+ },
+ "deleteDatasetImages": {
+ "title": "Supprimer les images du jeu de données",
+ "desc": "Êtes-vous sûr de vouloir supprimer {{count}} images du jeu de données {{dataset}} ? Cette action est irréversible et nécessitera un réentraînement du modèle."
+ },
+ "deleteTrainImages": {
+ "title": "Supprimer les images d'entraînement",
+ "desc": "Êtes-vous sûr de vouloir supprimer {{count}} images ? Cette action est irréversible."
+ },
+ "renameCategory": {
+ "title": "Renommer la classe",
+ "desc": "Saisissez un nouveau nom pour {{name}}. Vous devrez réentraîner le modèle pour que le changement de nom prenne effet."
+ },
+ "description": {
+ "invalidName": "Nom invalide. Les noms ne peuvent contenir que des lettres, des chiffres, des espaces, des apostrophes, des traits de soulignement et des tirets."
+ },
+ "train": {
+ "title": "Classifications récentes",
+ "aria": "Sélectionner des classifications récentes"
+ },
+ "categories": "Classes",
+ "createCategory": {
+ "new": "Créer une nouvelle classe"
+ },
+ "categorizeImageAs": "Classifier comme :",
+ "categorizeImage": "Classifier l'image",
+ "noModels": {
+ "object": {
+ "title": "Aucun modèle de classification d'objets",
+ "description": "Créer un modèle personnalisé pour classifier les objets détectés",
+ "buttonText": "Créer un modèle d'objets"
+ },
+ "state": {
+ "title": "Aucun modèle de classification d'états",
+ "description": "Créer un modèle personnalisé pour surveiller et classifier les changements d'état dans des zones de caméra spécifiques",
+ "buttonText": "Créer un modèle d'états"
+ }
+ },
+ "wizard": {
+ "title": "Créer une nouvelle classification",
+ "steps": {
+ "nameAndDefine": "Nom et définition",
+ "stateArea": "Zone d'état",
+ "chooseExamples": "Choisir des exemples"
+ },
+ "step1": {
+ "description": "Les modèles d'état surveillent des zones de caméra fixes pour détecter des changements (par ex., porte ouverte/fermée). Les modèles d'objets ajoutent des classifications aux objets détectés (par ex., animaux connus, livreurs, etc.).",
+ "name": "Nom",
+ "namePlaceholder": "Saisissez un nom de modèle.",
+ "type": "Type",
+ "typeState": "État",
+ "typeObject": "Objet",
+ "objectLabel": "Étiquette d'objet",
+ "objectLabelPlaceholder": "Sélectionnez un type d'objet.",
+ "classificationType": "Type de classification",
+ "classificationTypeTip": "En savoir plus sur les types de classification",
+ "classificationTypeDesc": "Les sous-étiquettes ajoutent du texte supplémentaire à l'étiquette d'objet (par ex., « Personne : UPS »). Les attributs sont des métadonnées recherchables stockées séparément dans les métadonnées de l'objet.",
+ "classificationSubLabel": "Sous-étiquette",
+ "classificationAttribute": "Attribut",
+ "classes": "Classes",
+ "classesTip": "En savoir plus sur les classes",
+ "classesStateDesc": "Définissez les différents états que votre zone de caméra peut avoir. Par exemple : « ouvert » et « fermé » pour une porte de garage.",
+ "classesObjectDesc": "Définissez les différentes catégories pour classifier les objets détectés. Par exemple : « livreur », « résident », « inconnu » pour la classification des personnes.",
+ "classPlaceholder": "Saisissez le nom de la classe.",
+ "errors": {
+ "nameRequired": "Le nom du modèle est requis.",
+ "nameLength": "Le nom du modèle ne doit pas dépasser 64 caractères.",
+ "nameOnlyNumbers": "Le nom du modèle ne peut pas contenir uniquement des chiffres.",
+ "classRequired": "Au moins une classe est requise.",
+ "classesUnique": "Les noms de classe doivent être uniques.",
+ "stateRequiresTwoClasses": "Les modèles d'état nécessitent au moins deux classes.",
+ "objectLabelRequired": "Veuillez sélectionner une étiquette d'objet.",
+ "objectTypeRequired": "Veuillez sélectionner un type de classification."
+ }
+ },
+ "step2": {
+ "description": "Sélectionnez les caméras et définissez la zone à surveiller pour chaque caméra. Le modèle classifiera l'état de ces zones.",
+ "cameras": "Caméras",
+ "selectCamera": "Sélectionnez une caméra.",
+ "noCameras": "Cliquez sur + pour ajouter des caméras.",
+ "selectCameraPrompt": "Sélectionnez une caméra dans la liste pour définir sa zone de surveillance."
+ },
+ "step3": {
+ "selectImagesPrompt": "Sélectionner toutes les images contenant : {{className}}",
+ "selectImagesDescription": "Cliquez sur les images pour les sélectionner. Cliquez sur continuer lorsque vous avez terminé avec cette classe.",
+ "generating": {
+ "title": "Génération d'images d'exemple en cours",
+ "description": "Frigate récupère des images représentatives à partir de vos enregistrements. Cela peut prendre un moment..."
+ },
+ "training": {
+ "title": "Entraînement du modèle",
+ "description": "Votre modèle est en cours d'entraînement en arrière-plan. Fermez cette boîte de dialogue. Votre modèle se lancera dès que l'entraînement sera terminé."
+ },
+ "retryGenerate": "Réessayer la génération",
+ "noImages": "Aucune image d'exemple générée",
+ "classifying": "Classification et entraînement en cours...",
+ "trainingStarted": "Entraînement démarré avec succès",
+ "errors": {
+ "noCameras": "Aucune caméra n'est configurée.",
+ "noObjectLabel": "Aucune étiquette d'objet sélectionnée",
+ "generateFailed": "Échec de la génération des exemples : {{error}}",
+ "generationFailed": "Échec de la génération. Veuillez réessayer.",
+ "classifyFailed": "Échec de la classification des images : {{error}}"
+ },
+ "generateSuccess": "Génération des images d'exemple réussie"
+ }
+ }
+}
diff --git a/web/public/locales/fr/views/configEditor.json b/web/public/locales/fr/views/configEditor.json
index ce4c3292e..0ab9b2c40 100644
--- a/web/public/locales/fr/views/configEditor.json
+++ b/web/public/locales/fr/views/configEditor.json
@@ -2,7 +2,7 @@
"configEditor": "Éditeur de configuration",
"documentTitle": "Éditeur de configuration - Frigate",
"copyConfig": "Copier la configuration",
- "saveOnly": "Enregistrer seulement",
+ "saveOnly": "Enregistrer uniquement",
"saveAndRestart": "Enregistrer et redémarrer",
"toast": {
"success": {
diff --git a/web/public/locales/fr/views/events.json b/web/public/locales/fr/views/events.json
index cf4f5e142..3ab930834 100644
--- a/web/public/locales/fr/views/events.json
+++ b/web/public/locales/fr/views/events.json
@@ -2,22 +2,22 @@
"detections": "Détections",
"motion": {
"label": "Mouvement",
- "only": "Mouvement seulement"
+ "only": "Mouvement uniquement"
},
"alerts": "Alertes",
"allCameras": "Toutes les caméras",
"empty": {
- "alert": "Il n'y a aucune alerte à passer en revue",
- "detection": "Il n'y a aucune détection à passer en revue",
+ "alert": "Il n'y a aucune alerte à examiner.",
+ "detection": "Il n'y a aucune détection à examiner.",
"motion": "Aucune donnée de mouvement trouvée"
},
"timeline": "Chronologie",
"events": {
"label": "Événements",
"aria": "Sélectionner les événements",
- "noFoundForTimePeriod": "Aucun événement trouvé pour cette plage de temps."
+ "noFoundForTimePeriod": "Aucun événement n'a été trouvé pour cette plage de temps."
},
- "documentTitle": "Revue d'événements -Frigate",
+ "documentTitle": "Revue d'événements - Frigate",
"recordings": {
"documentTitle": "Enregistrements - Frigate"
},
@@ -25,17 +25,29 @@
"last24Hours": "Dernières 24 heures"
},
"timeline.aria": "Sélectionner une chronologie",
- "markAsReviewed": "Marqué comme passé en revue",
+ "markAsReviewed": "Marquer comme vérifié",
"newReviewItems": {
- "button": "Nouveaux éléments à passer en revue",
+ "button": "Nouveaux éléments à examiner",
"label": "Afficher les nouveaux éléments de la revue d'événements"
},
"camera": "Caméra",
- "markTheseItemsAsReviewed": "Marquer ces éléments comme passés en revue",
+ "markTheseItemsAsReviewed": "Marquer ces éléments comme vérifiés",
"selected": "{{count}} sélectionné(s)",
"selected_other": "{{count}} sélectionné(s)",
"selected_one": "{{count}} sélectionné(s)",
"detected": "détecté",
"suspiciousActivity": "Activité suspecte",
- "threateningActivity": "Activité menaçante"
+ "threateningActivity": "Activité menaçante",
+ "detail": {
+ "noDataFound": "Aucun détail à examiner",
+ "aria": "Activer/désactiver la vue détaillée",
+ "trackedObject_one": "objet",
+ "trackedObject_other": "objets",
+ "noObjectDetailData": "Aucun détail d'objet disponible",
+ "label": "Détail"
+ },
+ "objectTrack": {
+ "trackedPoint": "Point suivi",
+ "clickToSeek": "Cliquez pour atteindre ce moment."
+ }
}
diff --git a/web/public/locales/fr/views/explore.json b/web/public/locales/fr/views/explore.json
index 064a71a37..f05c8186e 100644
--- a/web/public/locales/fr/views/explore.json
+++ b/web/public/locales/fr/views/explore.json
@@ -5,17 +5,17 @@
"title": "L'exploration est indisponible",
"embeddingsReindexing": {
"estimatedTime": "Temps restant estimé :",
- "finishingShortly": "Termine bientôt",
- "context": "L'exploration peut être utilisée une fois la réindexation des représentations numériques des objets suivis terminée.",
+ "finishingShortly": "Bientôt fini",
+ "context": "L'exploration peut être utilisée une fois la réindexation des embeddings des objets suivis terminée.",
"startingUp": "Démarrage…",
"step": {
- "thumbnailsEmbedded": "Miniatures intégrées : ",
- "descriptionsEmbedded": "Descriptions intégrées : ",
+ "thumbnailsEmbedded": "Embeddings des miniatures : ",
+ "descriptionsEmbedded": "Embeddings des descriptions : ",
"trackedObjectsProcessed": "Objets suivis traités : "
}
},
"downloadingModels": {
- "context": "Frigate télécharge les modèles de représentations numériques nécessaires pour prendre en charge la fonctionnalité de recherche sémantique. Cette opération peut prendre plusieurs minutes selon la vitesse de votre connexion réseau.",
+ "context": "Frigate télécharge les modèles d'embeddings nécessaires pour prendre en charge la fonctionnalité de recherche sémantique. Cette opération peut prendre plusieurs minutes selon la vitesse de votre connexion réseau.",
"setup": {
"visionModelFeatureExtractor": "Extracteur de caractéristiques de modèle de vision",
"textTokenizer": "Tokeniseur de texte",
@@ -24,9 +24,9 @@
},
"tips": {
"documentation": "Lire la documentation",
- "context": "Une fois les modèles téléchargés, il est conseillé de réindexer vos objets suivis."
+ "context": "Une fois les modèles téléchargés, il est conseillé de réindexer les embeddings de vos objets suivis."
},
- "error": "Une erreur est survenue. Vérifier les journaux Frigate."
+ "error": "Une erreur est survenue. Vérifiez les journaux Frigate."
}
},
"details": {
@@ -40,34 +40,34 @@
"toast": {
"success": {
"regenerate": "Une nouvelle description a été demandée à {{provider}}. Selon la vitesse de votre fournisseur, la régénération de la nouvelle description peut prendre un certain temps.",
- "updatedSublabel": "Sous-libellé mis à jour avec succès.",
- "updatedLPR": "Plaque d'immatriculation mise à jour avec succès.",
- "audioTranscription": "Requête de la transcription audio réussie."
+ "updatedSublabel": "Sous-étiquette mise à jour avec succès",
+ "updatedLPR": "Plaque d'immatriculation mise à jour avec succès",
+ "audioTranscription": "Transcription audio demandée avec succès"
},
"error": {
"regenerate": "Échec de l'appel de {{provider}} pour une nouvelle description : {{errorMessage}}",
- "updatedSublabelFailed": "Échec de la mise à jour du sous-libellé : {{errorMessage}}",
+ "updatedSublabelFailed": "Échec de la mise à jour de la sous-étiquette : {{errorMessage}}",
"updatedLPRFailed": "Échec de la mise à jour de la plaque d'immatriculation : {{errorMessage}}",
- "audioTranscription": "Échec de la requête de transcription audio : {{errorMessage}}"
+ "audioTranscription": "Échec de la demande de transcription audio : {{errorMessage}}"
}
},
"tips": {
"mismatch_one": "{{count}} objet indisponible a été détecté et intégré dans cet élément de la revue d'événements. Cet objet n'a pas été qualifié comme une alerte ou une détection, ou a déjà été nettoyé / supprimé.",
"mismatch_many": "{{count}} objets indisponibles ont été détectés et intégrés dans cet élément de la revue d'événements. Ces objets n'ont pas été qualifiés comme une alerte ou une détection, ou ont déjà été nettoyés / supprimés.",
"mismatch_other": "{{count}} objets indisponibles ont été détectés et intégrés dans cet élément de la revue d'événements. Ces objets n'ont pas été qualifiés comme une alerte ou une détection, ou ont déjà été nettoyés / supprimés.",
- "hasMissingObjects": "Ajustez votre configuration si vous souhaitez que Frigate enregistre les objets suivis pour les libellés suivants : {{objects}}"
+ "hasMissingObjects": "Ajustez votre configuration si vous souhaitez que Frigate enregistre les objets suivis pour les étiquettes suivantes : {{objects}}"
},
"desc": "Détails de l'élément de la revue d'événements"
},
- "label": "Libellé",
+ "label": "Étiquette",
"editSubLabel": {
- "title": "Modifier le sous-libellé",
- "desc": "Saisissez un nouveau sous-libellé pour {{label}}",
- "descNoLabel": "Entrer un nouveau sous-libellé pour cet objet suivi"
+ "title": "Modifier la sous-étiquette",
+ "desc": "Saisissez une nouvelle sous-étiquette pour {{label}}.",
+ "descNoLabel": "Saisissez une nouvelle sous-étiquette pour cet objet suivi."
},
"topScore": {
"label": "Meilleur score",
- "info": "Le score le plus élevé est le score médian le plus haut pour l'objet suivi ; il peut donc différer du score affiché sur la miniature du résultat de recherche."
+ "info": "Le meilleur score correspond au score médian le plus élevé de l'objet suivi ; il peut donc être différent du score affiché sur la miniature."
},
"objects": "Objets",
"button": {
@@ -86,8 +86,8 @@
"regenerateFromThumbnails": "Générer à nouveau à partir des miniatures",
"editLPR": {
"title": "Modifier la plaque d'immatriculation",
- "desc": "Saisissez une nouvelle valeur de plaque d'immatriculation pour {{label}}",
- "descNoLabel": "Saisir une nouvelle valeur de plaque d'immatriculation pour cet objet suivi"
+ "desc": "Saisissez une nouvelle valeur de plaque d'immatriculation pour {{label}}.",
+ "descNoLabel": "Saisissez une nouvelle valeur de plaque d'immatriculation pour cet objet suivi."
},
"recognizedLicensePlate": "Plaque d'immatriculation reconnue",
"estimatedSpeed": "Vitesse estimée",
@@ -120,8 +120,8 @@
"autoTrackingTips": "Les positions des cadres englobants seront imprécises pour les caméras à suivi automatique.",
"lifecycleItemDesc": {
"visible": "{{label}} détecté",
- "entered_zone": "{{label}} est entré dans {{zones}}",
- "stationary": "{{label}} est devenu stationnaire",
+ "entered_zone": "{{label}} est entré dans {{zones}}.",
+ "stationary": "{{label}} est devenu stationnaire.",
"attribute": {
"other": "{{label}} reconnu comme {{attribute}}",
"faceOrLicense_plate": "{{attribute}} détecté pour {{label}}"
@@ -129,7 +129,7 @@
"gone": "{{label}} parti",
"heard": "{{label}} entendu",
"external": "{{label}} détecté",
- "active": "{{label}} est devenu actif",
+ "active": "{{label}} est devenu actif.",
"header": {
"zones": "Zones",
"area": "Aire",
@@ -139,7 +139,7 @@
"annotationSettings": {
"title": "Paramètres d'annotation",
"showAllZones": {
- "title": "Montrer toutes les zones",
+ "title": "Afficher toutes les zones",
"desc": "Afficher systématiquement les zones sur les images quand des objets y sont entrés"
},
"offset": {
@@ -175,8 +175,8 @@
"label": "Visualiser le cycle de vie de l'objet"
},
"viewInHistory": {
- "label": "Afficher dans l'historique",
- "aria": "Afficher dans l'historique"
+ "label": "Afficher dans la chronologie",
+ "aria": "Afficher dans la chronologie"
},
"downloadVideo": {
"label": "Télécharger la vidéo",
@@ -196,12 +196,18 @@
"audioTranscription": {
"label": "Transcrire",
"aria": "Demander une transcription audio"
+ },
+ "showObjectDetails": {
+ "label": "Afficher le parcours de l'objet"
+ },
+ "hideObjectDetails": {
+ "label": "Cacher le parcours de l'objet"
}
},
"dialog": {
"confirmDelete": {
"title": "Confirmer la suppression",
- "desc": "La suppression de cet objet suivi supprime l'instantané, les représentations numériques enregistrées et les entrées du cycle de vie de l'objet associé. Les images enregistrées de cet objet suivi dans la vue Historique NE seront PAS supprimées.
Êtes-vous sûr de vouloir continuer ?"
+ "desc": "La suppression de cet objet suivi supprime l'instantané, les embeddings enregistrés et les entrées du cycle de vie de l'objet associé. Les images enregistrées de cet objet suivi dans la vue Chronologie NE seront PAS supprimées.
Êtes-vous sûr de vouloir continuer ?"
}
},
"noTrackedObjects": "Aucun objet suivi trouvé",
@@ -223,6 +229,6 @@
"title": "Analyse IA"
},
"concerns": {
- "label": "Préoccupations"
+ "label": "Points de vigilance"
}
}
diff --git a/web/public/locales/fr/views/exports.json b/web/public/locales/fr/views/exports.json
index ff8275a50..4f46ccb1b 100644
--- a/web/public/locales/fr/views/exports.json
+++ b/web/public/locales/fr/views/exports.json
@@ -1,17 +1,17 @@
{
- "documentTitle": "Exporter - Frigate",
+ "documentTitle": "Exportations - Frigate",
"search": "Rechercher",
- "noExports": "Aucun export trouvé",
- "deleteExport": "Supprimer l'export",
+ "noExports": "Aucune exportation trouvée",
+ "deleteExport": "Supprimer l'exportation",
"deleteExport.desc": "Êtes-vous sûr de vouloir supprimer {{exportName}}?",
"editExport": {
- "title": "Renommer l'export",
- "desc": "Saisissez un nouveau nom pour cet export.",
- "saveExport": "Enregistrer l'export"
+ "title": "Renommer l'exportation",
+ "desc": "Saisissez un nouveau nom pour cette exportation.",
+ "saveExport": "Enregistrer l'exportation"
},
"toast": {
"error": {
- "renameExportFailed": "Échec du renommage de l'export : {{errorMessage}}"
+ "renameExportFailed": "Échec du renommage de l'exportation : {{errorMessage}}"
}
}
}
diff --git a/web/public/locales/fr/views/faceLibrary.json b/web/public/locales/fr/views/faceLibrary.json
index 76396660c..cf2adad97 100644
--- a/web/public/locales/fr/views/faceLibrary.json
+++ b/web/public/locales/fr/views/faceLibrary.json
@@ -1,7 +1,7 @@
{
"description": {
- "addFace": "Guide pour ajouter une nouvelle collection à la bibliothèque de visages",
- "placeholder": "Saisissez un nom pour cette collection",
+ "addFace": "Ajoutez une nouvelle collection à la bibliothèque de visages en téléversant votre première image.",
+ "placeholder": "Saisissez un nom pour cette collection.",
"invalidName": "Nom invalide. Les noms ne peuvent contenir que des lettres, des chiffres, des espaces, des apostrophes, des traits de soulignement et des tirets."
},
"details": {
@@ -17,18 +17,18 @@
"documentTitle": "Bibliothèque de visages - Frigate",
"uploadFaceImage": {
"title": "Téléverser l'image du visage",
- "desc": "Téléversez une image pour rechercher des visages et l'inclure dans {{pageToggle}}"
+ "desc": "Téléversez une image pour rechercher des visages et l'inclure dans {{pageToggle}}."
},
"createFaceLibrary": {
"title": "Créer une collection",
"desc": "Créer une nouvelle collection",
"new": "Créer un nouveau visage",
- "nextSteps": "Pour construire une base solide :
cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM ",
"step": "Chemins
Les lignes et les cercles indiqueront les points notables des déplacements de l'objet suivi pendant son cycle de vie.
" }, @@ -641,7 +642,7 @@ "title": "Nouveau mot de passe", "placeholder": "Entrez le nouveau mot de passe", "confirm": { - "placeholder": "Ré-entrez le nouveau mot de passe" + "placeholder": "Ressaisissez le nouveau mot de passe" } }, "usernameIsRequired": "Le nom d'utilisateur est requis", @@ -684,26 +685,26 @@ "title": "Paramètres d'enrichissements", "birdClassification": { "title": "Identification des oiseaux", - "desc": "L'identification des oiseaux est réalisée à l'aide d'un modèle TensorFlow quantifié. Lorsqu'un oiseau est reconnu, son nom commun est automatiquement ajouté comme sous-libellé. Cette information est intégréesà l'interface utilisateur, aux filtres de recherche et aux notifications." + "desc": "L'identification des oiseaux est réalisée à l'aide d'un modèle TensorFlow quantifié. Lorsqu'un oiseau est reconnu, son nom commun est automatiquement ajouté comme sous-étiquette. Cette information est intégrée à l'interface utilisateur, aux filtres de recherche et aux notifications." }, "semanticSearch": { "title": "Recherche sémantique", "readTheDocumentation": "Lire la documentation", "reindexNow": { "label": "Réindexer maintenant", - "desc": "La réindexation va régénérer les représentations numériques pour tous les objets suivis. Ce processus s'exécute en arrière-plan et peut saturer votre processeur et prendre un temps considérable, en fonction du nombre d'objets suivis.", - "confirmTitle": "Confirmez la réindexation", + "desc": "La réindexation va régénérer les embeddings pour tous les objets suivis. Ce processus s'exécute en arrière-plan et peut saturer votre processeur et prendre un temps considérable en fonction du nombre d'objets suivis.", + "confirmTitle": "Confirmez la réindexation.", "confirmButton": "Réindexer", "success": "La réindexation a démarré avec succès.", "alreadyInProgress": "La réindexation est déjà en cours.", "error": "Échec du démarrage de la réindexation : {{errorMessage}}", - "confirmDesc": "Êtes-vous sûr de vouloir réindexer tous les représentations numériques des objets suivis ? Ce processus s'exécutera en arrière-plan, mais il pourrait saturer votre processeur et prendre un temps considérable. Vous pouvez suivre la progression sur la page Explorer." + "confirmDesc": "Êtes-vous sûr de vouloir réindexer tous les embeddings des objets suivis ? Ce processus s'exécutera en arrière-plan, mais il pourrait saturer votre processeur et prendre un temps considérable. Vous pouvez suivre la progression sur la page Explorer." }, "modelSize": { - "desc": "La taille du modèle utilisé pour les représentations numériques de recherche sémantique.", + "desc": "La taille du modèle utilisé pour les embeddings de recherche sémantique", "small": { "title": "petit", - "desc": "Utiliser petit emploie une version quantifiée du modèle qui utilise moins de mémoire et s'exécute plus rapidement sur le processeur avec une différence négligeable dans la qualité des représentations numériques." + "desc": "Utiliser petit emploie une version quantifiée du modèle qui utilise moins de mémoire et s'exécute plus rapidement sur le processeur avec une différence négligeable dans la qualité des embeddings." }, "large": { "title": "grand", @@ -711,7 +712,7 @@ }, "label": "Taille du modèle" }, - "desc": "La recherche sémantique de Frigate vous permet de retrouver les objets suivis dans votre revue d'évènements en utilisant soit l'image elle-même, soit une description textuelle définie par l'utilisateur, soit une description générée automatiquement." + "desc": "La recherche sémantique de Frigate vous permet de retrouver les objets suivis dans votre revue d'événements en utilisant soit l'image elle-même, soit une description textuelle définie par l'utilisateur, soit une description générée automatiquement." }, "unsavedChanges": "Modifications non enregistrées des paramètres d'enrichissements", "faceRecognition": { @@ -719,22 +720,22 @@ "readTheDocumentation": "Lire la documentation", "modelSize": { "label": "Taille du modèle", - "desc": "La taille du modèle utilisé pour la reconnaissance faciale.", + "desc": "La taille du modèle utilisé pour la reconnaissance faciale", "small": { "title": "petit", - "desc": "Utiliser petit emploie un modèle de représentation numérique faciale FaceNet qui s'exécute efficacement sur la plupart des processeurs." + "desc": "Utiliser petit emploie un modèle d'embedding facial FaceNet qui s'exécute efficacement sur la plupart des processeurs." }, "large": { "title": "grand", - "desc": "Utiliser grand emploie un modèle de représentation numérique faciale ArcFace et s'exécutera automatiquement sur le GPU si disponible." + "desc": "Utiliser grand emploie un modèle d'embedding facial ArcFace et s'exécutera automatiquement sur le GPU si disponible." } }, - "desc": "La reconnaissance faciale permet à Frigate d'identifier les individus par leur nom. Dès qu'un visage est reconnu, Frigate associe ce nom comme sous-libellé à l'événement. Ces informations sont ensuite intégrées dans l'interface utilisateur, les options de filtrage et les notifications." + "desc": "La reconnaissance faciale permet à Frigate d'identifier les individus par leur nom. Dès qu'un visage est reconnu, Frigate associe ce nom comme sous-étiquette à l'événement. Ces informations sont ensuite intégrées dans l'interface utilisateur, les options de filtrage et les notifications." }, "licensePlateRecognition": { "title": "Reconnaissance des plaques d'immatriculation", "readTheDocumentation": "Lire la documentation", - "desc": "Frigate identifie les plaques d'immatriculation des véhicules et peut automatiquement insérer les caractères détectés dans le champ recognized_license_plate. Il est également capable d'assigner un nom familier comme sous-libellé aux objets de type \"voiture\". Par exemple, cette fonction est souvent utilisée pour lire les plaques des véhicules empruntant une allée ou une rue." + "desc": "Frigate identifie les plaques d'immatriculation des véhicules et peut automatiquement insérer les caractères détectés dans le champ recognized_license_plate. Il est également capable d'assigner un nom familier comme sous-étiquette aux objets de type \"voiture\". Par exemple, cette fonction est souvent utilisée pour lire les plaques des véhicules empruntant une allée ou une rue." }, "toast": { "error": "Échec de l'enregistrement des modifications de configuration : {{errorMessage}}", @@ -756,7 +757,7 @@ "threshold": "Seuil", "actions": "Actions", "noTriggers": "Aucun déclencheur configuré pour cette caméra.", - "edit": "Éditer", + "edit": "Modifier", "deleteTrigger": "Supprimer le déclencheur", "lastTriggered": "Dernier déclencheur" }, @@ -774,8 +775,8 @@ "desc": "Créer un déclencheur pour la caméra {{camera}}" }, "editTrigger": { - "title": "Éditer le déclencheur", - "desc": "Éditer les paramètres du déclencheur de la caméra {{camera}}" + "title": "Modifier le déclencheur", + "desc": "Modifier les paramètres du déclencheur de la caméra {{camera}}" }, "deleteTrigger": { "title": "Supprimer le déclencheur", @@ -786,7 +787,7 @@ "title": "Nom", "placeholder": "Entrez le nom du déclencheur", "error": { - "minLength": "Le nom soit comporter au moins deux caractères.", + "minLength": "Le nom doit comporter au moins deux caractères.", "invalidCharacters": "Le nom peut contenir uniquement des lettres, des nombres, des tirets bas, et des tirets.", "alreadyExists": "Un déclencheur avec le même nom existe déjà pour cette caméra." } @@ -857,7 +858,7 @@ "cameras": "Caméras", "actions": "Actions", "noRoles": "Aucun rôle personnalisé trouvé.", - "editCameras": "Éditer les caméras", + "editCameras": "Modifier les caméras", "deleteRole": "Supprimer le rôle" }, "toast": { @@ -865,7 +866,7 @@ "createRole": "Rôle {{role}} créé avec succès", "updateCameras": "Caméras mis à jour pour le rôle {{role}}", "deleteRole": "Rôle {{role}} supprimé avec succès", - "userRolesUpdated": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits 'visionnage', et ont accès à toutes les caméras." + "userRolesUpdated": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"observateur\", et ont accès à toutes les caméras." }, "error": { "createRoleFailed": "Échec dans la création du rôle : {{errorMessage}}", @@ -885,7 +886,7 @@ }, "deleteRole": { "title": "Suppression du rôle", - "desc": "Cette action est irréversible. Elle supprimera définitivement le rôle et tous les utilisateurs associés seront affectés au rôle 'visionnage', avec un accès à toutes les caméras.", + "desc": "Cette action est irréversible. Elle supprimera définitivement le rôle et tous les utilisateurs associés seront affectés au rôle \"observateur\", avec un accès à toutes les caméras.", "warn": "Êtes-vous sûr de vouloir supprimer {{role}} ?", "deleting": "En cours de suppression..." }, @@ -915,8 +916,8 @@ "validationAndTesting": "Validation et tests" }, "save": { - "success": "Réussite de l'enregistrement de la nouvelle caméra {{cameraName}}.", - "failure": "Échec lors de l'enregistrement de {{cameraName}}." + "success": "Nouvelle caméra {{cameraName}} enregistrée avec succès", + "failure": "Échec lors de l'enregistrement de {{cameraName}}" }, "testResultLabels": { "resolution": "Résolution", @@ -925,60 +926,65 @@ "fps": "FPS" }, "commonErrors": { - "noUrl": "Saisissez une URL de flux valide s'il vous plait", + "noUrl": "Saisissez une URL de flux valide s'il vous plait.", "testFailed": "Échec du test de flux : {{error}}" }, "step1": { "description": "Saisissez les détails de votre caméra et testez la connexion.", "cameraName": "Nom de la caméra", - "cameraNamePlaceholder": "par exemple, porte-entree ou Apercu Arriere_Cour", + "cameraNamePlaceholder": "par ex., porte_entree ou apercu_cour_arriere", "host": "Hôte / Adresse IP", "port": "Port", "username": "Nom d'utilisateur", "usernamePlaceholder": "Facultatif", "password": "Mot de passe", "passwordPlaceholder": "Facultatif", - "selectTransport": "Sélectionnez le protocole de transport", + "selectTransport": "Sélectionnez le protocole de transport.", "cameraBrand": "Marque de la caméra", - "selectBrand": "Sélectionnez la marque de la caméra pour le modèle de l'URL", + "selectBrand": "Sélectionnez la marque de la caméra pour déterminer la forme de l'URL.", "customUrl": "URL de flux personnalisé", "brandInformation": "Information sur la marque", "brandUrlFormat": "Pour les caméras avec un format d'URL RTSP comme : {{exampleUrl}}", "customUrlPlaceholder": "rtsp://nomutilisateur:motdepasse@hote:port/chemin", "testConnection": "Tester la connexion", "testSuccess": "Test de connexion réussi !", - "testFailed": "Échec du test de connexion. Veuillez vérifier votre saisie et réessayer.", + "testFailed": "Échec du test de connexion. Veuillez vérifier votre saisie et réessayez.", "streamDetails": "Détails du flux", "warnings": { - "noSnapshot": "Impossible de récupérer un instantané à partir du flux configuré." + "noSnapshot": "Impossible de récupérer un instantané à partir du flux configuré" }, "errors": { - "brandOrCustomUrlRequired": "Sélectionnez une marque de caméra avec hôte/IP ou choisissez « Autre » avec une URL personnalisée", - "nameRequired": "Le nom de la caméra est requis", - "nameLength": "Le nom de la caméra doit comporter 64 caractères ou moins", - "invalidCharacters": "Le nom de la caméra contient des caractères non valides", - "nameExists": "Le nom de la caméra existe déjà", + "brandOrCustomUrlRequired": "Sélectionnez une marque de caméra avec hôte/une IP ou choisissez « Autre » avec une URL personnalisée.", + "nameRequired": "Le nom de la caméra est requis.", + "nameLength": "Le nom de la caméra ne doit pas dépasser 64 caractères.", + "invalidCharacters": "Le nom de la caméra contient des caractères invalides.", + "nameExists": "Ce nom de caméra est déjà utilisé.", "brands": { - "reolink-rtsp": "Reolink RTSP n'est pas recommandé. Il est recommandé d'activer le protocole HTTP dans les paramètres de la caméra et de redémarrer l'assistant." - } + "reolink-rtsp": "Le protocole RTSP de Reolink est déconseillé. Activez le protocole HTTP dans les paramètres du firmware de la caméra, puis relancez l'assistant." + }, + "customUrlRtspRequired": "Les URL personnalisées doivent commencer par \"rtsp://\". Une configuration manuelle est requise pour les flux caméra non-RTSP." }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "Vérification des métadonnées de la caméra en cours...", + "fetchingSnapshot": "Récupération de l'instantané de la caméra en cours..." } }, "step2": { - "description": "Configurez les rôles du flux et ajoutez des flux supplémentaires pour votre caméra.", + "description": "Définissez les rôles du flux et ajoutez des flux supplémentaires pour votre caméra.", "streamsTitle": "Flux de caméra", "addStream": "Ajouter un flux", "addAnotherStream": "Ajouter un autre flux", "streamTitle": "Flux {{number}}", "streamUrl": "URL du flux", - "streamUrlPlaceholder": "rtsp://username:password@host:port/path", + "streamUrlPlaceholder": "rtsp://nomutilisateur:motdepasse@hote:port/chemin", "url": "URL", "resolution": "Résolution", - "selectResolution": "Sélectionnez la résolution", + "selectResolution": "Sélectionnez la résolution.", "quality": "Qualité", - "selectQuality": "Sélectionnez la qualité", + "selectQuality": "Sélectionnez la qualité.", "roles": "Rôles", "roleLabels": { "record": "Enregistrement", @@ -986,41 +992,41 @@ "detect": "Détection d'objet" }, "testStream": "Tester la connexion", - "testSuccess": "Test de diffusion réussi !", - "testFailed": "Le test du flux a échoué", + "testSuccess": "Test du flux réussi !", + "testFailed": "Échec du test du flux", "testFailedTitle": "Échec du test", "connected": "Connecté", "notConnected": "Non connecté", "featuresTitle": "Caractéristiques", - "go2rtc": "Réduire les connexions à la caméra", - "detectRoleWarning": "Au moins un flux doit avoir le rôle « détecter » pour continuer.", + "go2rtc": "Réduire le nombre de connexions à la caméra", + "detectRoleWarning": "Pour continuer, au moins un flux doit avoir le rôle \"détection\".", "rolesPopover": { "title": "Rôles du flux", - "detect": "Flux principal pour la détection d'objets.", - "record": "Enregistre des segments du flux vidéo en fonction des paramètres de configuration.", - "audio": "Flux pour la détection basée sur l'audio." + "detect": "Flux principal pour la détection d'objets", + "record": "Enregistre des extraits du flux vidéo en fonction des paramètres de configuration.", + "audio": "Flux pour la détection basée sur l'audio" }, "featuresPopover": { "title": "Fonctionnalités du flux", - "description": "Utilisez le flux go2rtc pour réduire le nombre de connexions à votre caméra." + "description": "Utilisez la rediffusion du flux go2rtc pour réduire le nombre de connexions à votre caméra." } }, "step3": { - "description": "Validation finale et analyse avant d'enregistrer votre nouvelle caméra. Connectez chaque flux avant d'enregistrer.", + "description": "Validation et analyse finales avant l'enregistrement de votre nouvelle caméra. Connectez chaque flux avant d'enregistrer.", "validationTitle": "Validation du flux", "connectAllStreams": "Connecter tous les flux", "reconnectionSuccess": "Reconnexion réussie.", - "reconnectionPartial": "Certains flux n'ont pas pu se reconnecter.", + "reconnectionPartial": "La reconnexion de certains flux a échoué.", "streamUnavailable": "Aperçu du flux indisponible", "reload": "Recharger", - "connecting": "Connexion...", + "connecting": "Connexion en cours...", "streamTitle": "Flux {{number}}", - "failed": "Échoué", + "failed": "Échec", "notTested": "Non testé", "connectStream": "Connecter", - "connectingStream": "Connexion", + "connectingStream": "Connexion en cours", "disconnectStream": "Déconnecter", - "estimatedBandwidth": "Bande passante estimée", + "estimatedBandwidth": "Débit estimé", "roles": "Rôles", "none": "Aucun", "error": "Erreur", @@ -1032,34 +1038,36 @@ "title": "Validation du flux", "videoCodecGood": "Le codec vidéo est {{codec}}.", "audioCodecGood": "Le codec audio est {{codec}}.", - "noAudioWarning": "Aucun audio détecté pour ce flux, les enregistrements n'auront pas d'audio.", - "audioCodecRecordError": "Le codec audio AAC est requis pour prendre en charge l'audio dans les enregistrements.", + "noAudioWarning": "Aucun son n'est détecté sur ce flux, les enregistrements seront donc muets.", + "audioCodecRecordError": "Le codec audio AAC est requis pour la prise en charge du son dans les enregistrements.", "audioCodecRequired": "Un flux audio est requis pour prendre en charge la détection audio.", "restreamingWarning": "La réduction des connexions à la caméra pour le flux d'enregistrement peut augmenter légèrement l'utilisation du processeur.", "dahua": { - "substreamWarning": "Le sous-flux 1 est verrouillé en basse résolution. De nombreuses caméras Dahua / Amcrest / EmpireTech prennent en charge des sous-flux supplémentaires qui doivent être activés dans les paramètres de la caméra. Il est recommandé de vérifier et d'utiliser ces flux s'ils sont disponibles." + "substreamWarning": "Le flux secondaire 1 est limité en basse résolution. De nombreuses caméras (Dahua, Amcrest, EmpireTech...) proposent des flux supplémentaires qu'il suffit d'activer dans leurs propres paramètres. Il est recommandé de vérifier leur disponibilité et de les utiliser." }, "hikvision": { - "substreamWarning": "Le sous-flux 1 est verrouillé en basse résolution. De nombreuses caméras Hikvision prennent en charge des sous-flux supplémentaires qui doivent être activés dans les paramètres de la caméra. Il est recommandé de vérifier et d'utiliser ces flux s'ils sont disponibles." - } + "substreamWarning": "Le flux secondaire 1 est limité en basse résolution. De nombreuses caméras Hikvision proposent des flux supplémentaires qu'il suffit d'activer dans leurs propres paramètres. Il est recommandé de vérifier leur disponibilité et de les utiliser." + }, + "resolutionHigh": "Une résolution de {{resolution}} risque d'augmenter l'utilisation des ressources.", + "resolutionLow": "Une résolution de {{resolution}} risque d'être trop faible pour détecter les petits objets de manière fiable." }, - "valid": "Validation" + "valid": "Valide" } }, "cameraManagement": { "title": "Gérer les caméras", "addCamera": "Ajouter une nouvelle caméra", - "editCamera": "Modifier la caméra:", + "editCamera": "Modifier la caméra :", "selectCamera": "Sélectionnez une caméra", "backToSettings": "Retour aux paramètres de la caméra", "streams": { - "title": "Activer/Désactiver les caméras", - "desc": "Désactivez 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 cette caméra par Frigate. La détection, l'enregistrement et le débogage seront indisponibles.Boxy pohybu
Červené boxy budú prekryté na miestach snímky, kde je práve detekovaný pohyb.
" }, "regions": { - "title": "Regióny" + "title": "Regióny", + "desc": "Zobraziť rámček oblasti záujmu odoslaný do detektora objektov", + "tips": "Oblasti regiónov
Jasnozelené políčka budú prekrývať oblasti záujmu v zábere, ktoré sa odosielajú do detektora objektov.
" + }, + "paths": { + "title": "Cesty", + "desc": "Zobraziť významné body dráhy sledovaného objektu", + "tips": "Cesty
Čiary a kruhy označujú významné body, ktorými sa sledovaný objekt počas svojho životného cyklu pohyboval.
" + }, + "objectShapeFilterDrawing": { + "title": "Výkres filtra tvaru objektu", + "desc": "Nakreslite na obrázok obdĺžnik, aby ste zobrazili podrobnosti o ploche a pomere", + "tips": "Povolením tejto možnosti nakreslíte na obraze kamery obdĺžnik, ktorý zobrazuje jeho plochu a pomer strán. Tieto hodnoty sa potom dajú použiť na nastavenie parametrov filtra tvaru objektu vo vašej konfigurácii.", + "score": "Skóre", + "ratio": "Pomer", + "area": "Oblasť" } }, "cameraWizard": { @@ -510,11 +525,16 @@ "invalidCharacters": "Názov kamery obsahuje neplatné znaky", "nameExists": "Názov kamery už existuje", "brands": { - "reolink-rtsp": "Reolink RTSP sa neodporúča. Odporúča sa povoliť http v nastavení kamery a reštartovať sprievodca kamery." - } + "reolink-rtsp": "Reolink RTSP sa neodporúča. Odporúča sa povoliť HTTP v nastavení kamery a reštartovať sprievodca kamery." + }, + "customUrlRtspRequired": "Vlastné URL musia začať s \"rtsp / \"\". Manuálna konfigurácia je potrebná pre non-RTSP kamerové prúdy." }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "Skúmanie metadát kamery...", + "fetchingSnapshot": "Načítava sa snímka z kamery..." } }, "step2": { @@ -581,7 +601,9 @@ }, "hikvision": { "substreamWarning": "Substream 1 je uzamknutý na nízke rozlíšenie. Mnoho Hikvision kamery podporujú ďalšie podstreamy, ktoré musia byť povolené v nastavení kamery. Odporúča sa skontrolovať a využiť tie prúdy, ak je k dispozícii." - } + }, + "resolutionHigh": "Rozlíšenie {{resolution}} môže spôsobiť zvýšenú spotrebu zdrojov.", + "resolutionLow": "Rozlíšenie {{resolution}} môže byť príliš nízka pre spoľahlivú detekciu malých objektov." }, "description": "Záverečné overenie a analýza pred uložením nového fotoaparátu. Pripojte každý prúd pred uložením.", "validationTitle": "Stream Platnosť", @@ -673,5 +695,21 @@ "success": "Konfigurácia klasifikácie bola uložená. Reštartujte Frigate, aby sa zmeny prejavili." } } + }, + "users": { + "title": "Používatelia", + "management": { + "title": "Správa používateľov", + "desc": "Spravovať používateľské účty tejto inštancie Frigate." + }, + "addUser": "Pridať používateľa", + "updatePassword": "Aktualizovať heslo", + "toast": { + "success": { + "createUser": "Užívateľ {{user}} úspešne vytvorený", + "deleteUser": "Užívateľ {{user}} úspešne odobraný", + "updatePassword": "Heslo úspešne aktualizované." + } + } } } diff --git a/web/public/locales/sl/views/classificationModel.json b/web/public/locales/sl/views/classificationModel.json new file mode 100644 index 000000000..ee664fb3b --- /dev/null +++ b/web/public/locales/sl/views/classificationModel.json @@ -0,0 +1,5 @@ +{ + "description": { + "invalidName": "Neveljavno ime. Ime lahko vsebuje črke, števila, presledke, narekovaje, podčrtaje in pomišljaje." + } +} diff --git a/web/public/locales/sl/views/faceLibrary.json b/web/public/locales/sl/views/faceLibrary.json index 9d5324759..be219cdf1 100644 --- a/web/public/locales/sl/views/faceLibrary.json +++ b/web/public/locales/sl/views/faceLibrary.json @@ -1,6 +1,6 @@ { "description": { - "addFace": "Sprehodite se skozi dodajanje nove zbirke v knjižnico obrazov.", + "addFace": "Dodajanje nove zbirke v knjižnico obrazov z nalaganjem slike", "placeholder": "Vnesite ime za to zbirko", "invalidName": "Neveljavno ime. Ime lahko vsebuje črke, števila, presledke, narekovaje, podčrtaje in pomišljaje." }, @@ -55,7 +55,8 @@ "createFaceLibrary": { "title": "Ustvari Zbirko", "desc": "Ustvari novo zbirko", - "new": "Ustvari Nov Obraz" + "new": "Ustvari Nov Obraz", + "nextSteps": "Za vzpoztavitev trdnih osnov: