diff --git a/web/public/locales/fr/common.json b/web/public/locales/fr/common.json index a9fe31ada..3cf25e977 100644 --- a/web/public/locales/fr/common.json +++ b/web/public/locales/fr/common.json @@ -301,6 +301,7 @@ }, "list": { "two": "{{0}} et {{1}}", - "many": "{{items}}, et {{last}}" + "many": "{{items}}, et {{last}}", + "separatorWithSpace": ", " } } diff --git a/web/public/locales/fr/views/classificationModel.json b/web/public/locales/fr/views/classificationModel.json index 53f0464a7..7d7d93ba3 100644 --- a/web/public/locales/fr/views/classificationModel.json +++ b/web/public/locales/fr/views/classificationModel.json @@ -5,7 +5,10 @@ "renameCategory": "Renommer la classe", "deleteCategory": "Supprimer la classe", "deleteImages": "Supprimer les images", - "trainModel": "Entraîner le modèle" + "trainModel": "Entraîner le modèle", + "addClassification": "Ajouter une classification", + "deleteModels": "Supprimer les modèles", + "editModel": "Modifier le modèle" }, "toast": { "success": { @@ -13,13 +16,19 @@ "deletedImage": "Images supprimées", "categorizedImage": "Image classifiée avec succès", "trainedModel": "Modèle entraîné avec succès.", - "trainingModel": "L'entraînement du modèle a démarré avec succès." + "trainingModel": "L'entraînement du modèle a démarré avec succès.", + "deletedModel_one": "{{count}} modèle supprimé avec succès", + "deletedModel_many": "{{count}} modèles supprimés avec succès", + "deletedModel_other": "{{count}} modèles supprimés avec succès", + "updatedModel": "Configuration du modèle mise à jour avec succès" }, "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}}" + "trainingFailed": "Échec du démarrage de l'entraînement du modèle : {{errorMessage}}", + "deleteModelFailed": "Impossible de supprimer le modèle : {{errorMessage}}", + "updateModelFailed": "Impossible de mettre à jour le modèle : {{errorMessage}}" } }, "deleteCategory": { @@ -43,7 +52,8 @@ }, "train": { "title": "Classifications récentes", - "aria": "Sélectionner des classifications récentes" + "aria": "Sélectionner des classifications récentes", + "titleShort": "Récent" }, "categories": "Classes", "createCategory": { @@ -98,7 +108,8 @@ "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." - } + }, + "states": "États" }, "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.", @@ -131,5 +142,23 @@ }, "generateSuccess": "Génération des images d'exemple réussie" } + }, + "deleteModel": { + "title": "Supprimer le modèle de classification", + "single": "Voulez-vous vraiment supprimer {{name}} ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible.", + "desc": "Voulez-vous vraiment supprimer {{count}} modèle(s) ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible." + }, + "menu": { + "objects": "Objets", + "states": "États" + }, + "details": { + "scoreInfo": "Le score représente la moyenne de la confiance de classification pour toutes les détections de cet objet." + }, + "edit": { + "title": "Modifier le modèle de classification", + "descriptionState": "Modifier les classes pour ce modèle de classification d'état. Les modifications nécessiteront un réentraînement du modèle.", + "descriptionObject": "Modifier le type d'objet et le type de classification pour ce modèle de classification d'objet", + "stateClassesInfo": "Note : La modification des classes d'état nécessite un réentraînement du modèle avec les classes mises à jour." } } diff --git a/web/public/locales/fr/views/events.json b/web/public/locales/fr/views/events.json index eb6be7bc0..c32ffec3c 100644 --- a/web/public/locales/fr/views/events.json +++ b/web/public/locales/fr/views/events.json @@ -44,10 +44,17 @@ "trackedObject_one": "objet", "trackedObject_other": "objets", "noObjectDetailData": "Aucun détail d'objet disponible", - "label": "Détail" + "label": "Détail", + "settings": "Paramètres de la vue Détail", + "alwaysExpandActive": { + "title": "Toujours développer l'élément actif", + "desc": "Toujours développer les détails de l'objet de l'événement actif si disponibles" + } }, "objectTrack": { "trackedPoint": "Point suivi", "clickToSeek": "Cliquez pour atteindre ce moment." - } + }, + "zoomIn": "Zoom avant", + "zoomOut": "Zoom arrière" } diff --git a/web/public/locales/fr/views/explore.json b/web/public/locales/fr/views/explore.json index 267f3d622..015d7560b 100644 --- a/web/public/locales/fr/views/explore.json +++ b/web/public/locales/fr/views/explore.json @@ -109,7 +109,8 @@ "details": "détails", "video": "vidéo", "object_lifecycle": "cycle de vie de l'objet", - "snapshot": "instantané" + "snapshot": "instantané", + "thumbnail": "Miniature" }, "objectLifecycle": { "title": "Cycle de vie de l'objet", @@ -240,7 +241,7 @@ "noImageFound": "Aucune image trouvée pour cet horodatage", "createObjectMask": "Créer un masque d'objet", "adjustAnnotationSettings": "Ajuster les paramètres d'annotation", - "scrollViewTips": "Défilez pour voir les moments significatifs du cycle de vie de cet objet.", + "scrollViewTips": "Cliquez pour voir les moments significatifs du cycle de vie de cet objet.", "autoTrackingTips": "Les positions des cadres de détection seront imprécises pour les caméras à suivi automatique.", "count": "{{first}} sur {{second}}", "trackedPoint": "Point suivi", @@ -264,7 +265,7 @@ }, "annotationSettings": { "offset": { - "desc": "Ces données proviennent du flux de détection de votre caméra mais sont superposées aux images du flux d'enregistrement. Il est peu probable que les deux flux soient parfaitement synchronisés. Par conséquent, le cadre de détection et l'enregistrement ne seront pas parfaitement alignés. Cependant, le champ annotation_offset peut être utilisé pour corriger cela.", + "desc": "Ces données proviennent du flux de détection de votre caméra, mais elles sont superposées aux images du flux d'enregistrement. Il est peu probable que les deux flux soient parfaitement synchronisés. Par conséquent, le cadre de délimitation et la vidéo ne s'aligneront pas parfaitement. Vous pouvez utiliser ce paramètre pour décaler les annotations vers l'avant ou vers l'arrière dans le temps afin de mieux les aligner avec la vidéo enregistrée.", "millisecondsToOffset": "Millisecondes de décalage pour les annotations de détection. Par défaut : 0", "tips": "ASTUCE : Imaginez une séquence d'événement avec une personne marchant de gauche à droite. Si le cadre de détection sur la chronologie de l'événement est constamment à gauche de la personne, la valeur doit être diminuée. De même, si une personne marche de gauche à droite et que le cadre de détection est constamment devant la personne, la valeur doit être augmentée.", "toast": { diff --git a/web/public/locales/fr/views/settings.json b/web/public/locales/fr/views/settings.json index a0e5fe98c..61202dc6f 100644 --- a/web/public/locales/fr/views/settings.json +++ b/web/public/locales/fr/views/settings.json @@ -51,6 +51,10 @@ "playAlertVideos": { "label": "Lire les vidéos d'alerte", "desc": "Par défaut, les alertes récentes du tableau de bord en direct sont diffusées sous forme de petites vidéos en boucle. Désactivez cette option pour afficher uniquement une image statique des alertes récentes sur cet appareil/navigateur." + }, + "displayCameraNames": { + "label": "Toujours afficher les noms des caméras", + "desc": "Toujours afficher les noms des caméras dans une puce sur le tableau de bord de la vue en direct multi-caméras" } }, "storedLayouts": { @@ -767,7 +771,9 @@ }, "actions": { "alert": "Marquer comme alerte", - "notification": "Envoyer une notification" + "notification": "Envoyer une notification", + "sub_label": "Ajouter une sous-étiquette", + "attribute": "Ajouter un attribut" }, "dialog": { "createTrigger": { @@ -822,7 +828,7 @@ }, "actions": { "title": "Actions", - "desc": "Par défaut, Frigate publie un message MQTT à chaque déclenchement. Sélectionnez une action complémentaire à exécuter lors de ce déclenchement.", + "desc": "Par défaut, Frigate envoie un message MQTT pour tous les déclencheurs. Les sous-étiquettes ajoutent le nom du déclencheur à l'étiquette de l'objet. Les attributs sont des métadonnées recherchables stockées séparément dans les métadonnées de l'objet suivi.", "error": { "min": "Au moins une action doit être sélectionnée." } @@ -887,7 +893,9 @@ "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 \"Observateur\", et ont accès à toutes les caméras." + "userRolesUpdated_one": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"Observateur\", et ont accès à toutes les caméras.", + "userRolesUpdated_many": "", + "userRolesUpdated_other": "" }, "error": { "createRoleFailed": "Échec dans la création du rôle : {{errorMessage}}", @@ -1072,7 +1080,9 @@ "resolutionHigh": "La résolution {{resolution}} risque d'augmenter l'utilisation des ressources.", "resolutionLow": "La résolution {{resolution}} risque d'être trop faible pour détecter les petits objets de manière fiable." }, - "valid": "Valide" + "valid": "Valide", + "ffmpegModule": "Utiliser le mode de compatibilité du flux", + "ffmpegModuleDescription": "Si le flux ne se charge pas après plusieurs tentatives, essayez d'activer cette option. Lorsqu'elle est activée, Frigate utilisera le module ffmpeg avec go2rtc. Cela peut offrir une meilleure compatibilité avec certains flux de caméra." } }, "cameraManagement": {