From 53cb079127a1ba3636d1a816b2a18250a05e7cbc Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:28 +0100 Subject: [PATCH 01/43] Added translation using Weblate (Galician) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/gl/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/gl/views/classificationModel.json diff --git a/web/public/locales/gl/views/classificationModel.json b/web/public/locales/gl/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/gl/views/classificationModel.json @@ -0,0 +1 @@ +{} From da85ae2e458e5a39f048a6a08ee70c61a26f3106 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:29 +0100 Subject: [PATCH 02/43] Added translation using Weblate (Turkish) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/tr/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/tr/views/classificationModel.json diff --git a/web/public/locales/tr/views/classificationModel.json b/web/public/locales/tr/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/tr/views/classificationModel.json @@ -0,0 +1 @@ +{} From 620de054189f4f5d924fd0dfdecc07ed77c7af36 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:30 +0100 Subject: [PATCH 03/43] Translated using Weblate (Lithuanian) Currently translated at 39.0% (34 of 87 strings) Translated using Weblate (Lithuanian) Currently translated at 77.4% (453 of 585 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Lithuanian) Currently translated at 85.2% (427 of 501 strings) Added translation using Weblate (Lithuanian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: MaBeniu Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/lt/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/lt/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/lt/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/lt/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/lt/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/lt/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/lt/ Translation: Frigate NVR/audio Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/lt/audio.json | 2 +- web/public/locales/lt/components/auth.json | 3 +- .../locales/lt/views/classificationModel.json | 64 +++++++++++++++++++ web/public/locales/lt/views/events.json | 10 +-- web/public/locales/lt/views/faceLibrary.json | 10 +-- web/public/locales/lt/views/live.json | 14 ++-- web/public/locales/lt/views/settings.json | 4 +- 7 files changed, 90 insertions(+), 17 deletions(-) create mode 100644 web/public/locales/lt/views/classificationModel.json diff --git a/web/public/locales/lt/audio.json b/web/public/locales/lt/audio.json index a1b599904..2e8d481ce 100644 --- a/web/public/locales/lt/audio.json +++ b/web/public/locales/lt/audio.json @@ -366,7 +366,7 @@ "busy_signal": "Užimtas Signalas", "dial_tone": "Numerio Rinkimo Tonas", "telephone_dialing": "Telefono Rinkimas", - "ringtone": "Skambutis", + "ringtone": "Skambėjimo Tonas", "telephone_bell_ringing": "Skamba Telefonas", "alarm": "Signalizacija", "computer_keyboard": "Kopiuterio Klaviatūra", diff --git a/web/public/locales/lt/components/auth.json b/web/public/locales/lt/components/auth.json index 7b3737040..3ba7d103b 100644 --- a/web/public/locales/lt/components/auth.json +++ b/web/public/locales/lt/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "Prisijungti nepavyko", "unknownError": "Nežinoma klaida. Patikrinkite įrašus.", "webUnknownError": "Nežinoma klaida. Patikrinkite konsolės įrašus." - } + }, + "firstTimeLogin": "Bandote prisijungti pirmą kartą? Prisijungimo informaciją rasite Frigate loguose." } } diff --git a/web/public/locales/lt/views/classificationModel.json b/web/public/locales/lt/views/classificationModel.json new file mode 100644 index 000000000..f797f69d0 --- /dev/null +++ b/web/public/locales/lt/views/classificationModel.json @@ -0,0 +1,64 @@ +{ + "documentTitle": "Klasifikavimo Modeliai", + "button": { + "deleteClassificationAttempts": "Trinti Klasisifikavimo Nuotraukas", + "renameCategory": "Pervadinti Klasę", + "deleteCategory": "Trinti Klasę", + "deleteImages": "Trinti Nuotraukas", + "trainModel": "Treniruoti Modelį" + }, + "toast": { + "success": { + "deletedCategory": "Ištrinta Klasę", + "deletedImage": "Ištrinti Nuotraukas", + "categorizedImage": "Sekmingai Klasifikuotas Nuotrauka", + "trainedModel": "Modelis sėkmingai apmokytas.", + "trainingModel": "Sėkmingai pradėtas modelio apmokymas." + }, + "error": { + "deleteImageFailed": "Nepavyko ištrinti:{{errorMessage}}", + "deleteCategoryFailed": "Nepavyko ištrinti klasės:{{errorMessage}}", + "categorizeFailed": "Nepavyko kategorizuoti nuotraukos:{{errorMessage}}", + "trainingFailed": "Nepavyko pradėti modelio apmokymo:{{errorMessage}}" + } + }, + "deleteCategory": { + "title": "Trinti Klasę", + "desc": "Esate įsitikinę, norite ištrinti klasę {{name}}? Tai negrįžtamai ištrins visas susijusias nuotraukas ir reikės iš naujo apmokinti modelį." + }, + "deleteDatasetImages": { + "title": "Ištrinti Imties Nuotraukas", + "desc": "Esate įsitikinę norite ištrinti {{count}} nautraukas iš {{dataset}}? Šis veiksmas negrįžtamas ir reikės iš naujo apmokinti modelį." + }, + "deleteTrainImages": { + "title": "Ištrinti Apmokymo Nuotraukas", + "desc": "Ar esate įsitikinę, kad norite ištrinti {{count}} nuotraukas? Šis veiksmas negrįžtamas." + }, + "renameCategory": { + "title": "Pervadinti Klasę", + "desc": "Įveskite naują vardą vietoje {{name}}. Jums reikės iš naujo apmokinti modelį, kad vardas įsigaliotų." + }, + "description": { + "invalidName": "Netinkamas vardas. Vardas gali būti sudarytas tik iš raidžiū, skaičių, tarpų, apostrofų, pabraukimų ar brūkšnelių." + }, + "train": { + "title": "Pastarosios Klasifikacijos", + "aria": "Pasirinkti Pastarasias Klasifikacijas" + }, + "categories": "Klasės", + "createCategory": { + "new": "Sukurti Naują Klasę" + }, + "categorizeImageAs": "Klasifikuoti Nuotrauką Kaip:", + "categorizeImage": "Klasifikuoti Nuotrauką", + "noModels": { + "object": { + "title": "Nėra Objektų Klasifikavimo Modelių", + "description": "Sukurti individualų modelį ištrintų objektų klasifikavimui.", + "buttonText": "Sukurti Objekto Modelį" + }, + "state": { + "title": "Nėra Būklės Klasifikavimo Modelių" + } + } +} diff --git a/web/public/locales/lt/views/events.json b/web/public/locales/lt/views/events.json index 36fbc37d4..bd4ab2895 100644 --- a/web/public/locales/lt/views/events.json +++ b/web/public/locales/lt/views/events.json @@ -40,11 +40,13 @@ "detail": { "noDataFound": "Peržiūrai informacijos nėra", "aria": "Perjungti į detalų vaizdą", - "trackedObject_one": "sekami objektas", - "trackedObject_other": "sekami objektai", - "noObjectDetailData": "Nėra objekto detalių duomenų." + "trackedObject_one": "objektas", + "trackedObject_other": "objektai", + "noObjectDetailData": "Nėra objekto detalių duomenų.", + "label": "Detalės" }, "objectTrack": { - "trackedPoint": "Susektas taškas" + "trackedPoint": "Susektas taškas", + "clickToSeek": "Spustelkite perkelti į šį laiką" } } diff --git a/web/public/locales/lt/views/faceLibrary.json b/web/public/locales/lt/views/faceLibrary.json index 8b05a52a2..721e119ce 100644 --- a/web/public/locales/lt/views/faceLibrary.json +++ b/web/public/locales/lt/views/faceLibrary.json @@ -1,8 +1,8 @@ { "description": { - "addFace": "Apžiūrėkite naujų kolekcijų pridėjimą prie Veidų Bibliotekos.", + "addFace": "Pridėkite naują kolekciją į Veidų Kolekciją įkeldami savo pirmą nuotrauką.", "placeholder": "Įveskite pavadinimą šiai kolekcijai", - "invalidName": "Netinkamas vardas. Vardai gali turėti tik raides, numerius, tarpus, apostrofus, pabraukimus ir brukšnelius." + "invalidName": "Netinkamas vardas. Vardas gali būti sudarytas tik iš raidžiū, skaičių, tarpų, apostrofų, pabraukimų ar brūkšnelių." }, "details": { "person": "Žmogus", @@ -45,7 +45,7 @@ } }, "createFaceLibrary": { - "nextSteps": "Kad sukurtumėte stiprų pagrindą:
  • Naudokite Apmokymų skirtuką pasirinkti ir paveikslėliais apmokyti kiekvieną aptiktą asmenį.
  • Norint pasiekti geriausią režultatą, susitelkite prie nuotraukų iš priekio; Venkite naudoti veidų nuotraukas kampu pasuktu veidu.
  • ", + "nextSteps": "Kad sukurtumėte stiprų pagrindą:
  • Naudokite Pastarieji Atpažinimai skirtuką pasirinkti ir paveikslėliais apmokyti kiekvieną aptiktą asmenį.
  • Norint pasiekti geriausią režultatą, susitelkite prie nuotraukų iš priekio; Venkite naudoti veidų nuotraukas kampu pasuktu veidu.
  • ", "title": "Sukurti Kolekciją", "desc": "Sukurti naują kolekciją", "new": "Sukurti Naują Veidą" @@ -69,8 +69,8 @@ } }, "train": { - "title": "Traukinys", - "aria": "Pasirinkti traukinį", + "title": "Pastarieji Atpažinimai", + "aria": "Pasirinkti pastaruosius atpažinimus", "empty": "Pastaruoju metu nebuvo atliktas veidų atpažinimas" }, "selectFace": "Pasirinkti Veidą", diff --git a/web/public/locales/lt/views/live.json b/web/public/locales/lt/views/live.json index 91046606b..06f1577f5 100644 --- a/web/public/locales/lt/views/live.json +++ b/web/public/locales/lt/views/live.json @@ -100,8 +100,8 @@ "disable": "Paslėpti Transliacijos Stats" }, "manualRecording": { - "title": "Įrašymai pagal poreikį", - "tips": "Kurti manualaus saugojimo nustatymus pagal įvykius iš šios kameros.", + "title": "Pagal-Poreikį", + "tips": "Atsisiųsti momentinę nuotrauką arba kurti manualaus saugojimo nustatymus pagal įvykius iš šios kameros.", "playInBackground": { "label": "Paleisti fone", "desc": "Įjungti šią funkciją kad transliaciją išliktų net paslėpus grotuvą." @@ -170,8 +170,14 @@ "exitEdit": "Išeiti Iš Redagavimo" }, "noCameras": { - "title": "Sukonfiguruotų Kamerų Nėra", - "description": "Pradėti nuo kameros prijungimo.", + "title": "Nėra Sukonfiguruotų Kamerų", + "description": "Pradėti nuo kameros prijungimo pire Frigate.", "buttonText": "Pridėti Kamerą" + }, + "snapshot": { + "takeSnapshot": "Atsisiųsti momentinį kadrą", + "noVideoSource": "Momentinei nuotraukai nėra prieinamo video šaltinio.", + "captureFailed": "Nepavyko užfiksuoti kadro.", + "downloadStarted": "Momentinės nuotraukos atsisiuntimas pradėtas." } } diff --git a/web/public/locales/lt/views/settings.json b/web/public/locales/lt/views/settings.json index 2a5f62d9e..199f818ea 100644 --- a/web/public/locales/lt/views/settings.json +++ b/web/public/locales/lt/views/settings.json @@ -234,7 +234,7 @@ "name": { "title": "Pavadinimas", "inputPlaceHolder": "Įveskite pavadinimą …", - "tips": "Pavadinimas privalo būti bent 2 simboliai ir negali būti toks pat kaip kita kamera ar zona." + "tips": "Pavadinimas privalo būti bent 2 simboliai, privalo turėti bent vieną raidę ir negali būti toks pat kaip kita kamera ar zona." }, "inertia": { "title": "Inercija", @@ -852,7 +852,7 @@ "testFailed": "Transliacijos testas nepavyko: {{error}}" }, "step1": { - "description": "Įveskite savo kameros informaciją ir testuokite prisijungimą", + "description": "Įveskite savo kameros informaciją ir testuokite prisijungimą.", "cameraName": "Kameros Pavadinimas", "cameraNamePlaceholder": "pvz., priekines_durys arba Galinio Kiemo Vaizdas", "host": "Host/IP Adresas", From b02e44244d9ac10ce8503d43fd7bee917512a1df Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:31 +0100 Subject: [PATCH 04/43] Added translation using Weblate (Thai) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/th/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/th/views/classificationModel.json diff --git a/web/public/locales/th/views/classificationModel.json b/web/public/locales/th/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/th/views/classificationModel.json @@ -0,0 +1 @@ +{} From 97e54615ce693a849f6edc1ddc8b4247bd896ab8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:32 +0100 Subject: [PATCH 05/43] Added translation using Weblate (Tamil) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/ta/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/ta/views/classificationModel.json diff --git a/web/public/locales/ta/views/classificationModel.json b/web/public/locales/ta/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/ta/views/classificationModel.json @@ -0,0 +1 @@ +{} From b59d1d2050ed73ccaed896507ef219ee45035c66 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:33 +0100 Subject: [PATCH 06/43] Translated using Weblate (Portuguese (Brazil)) Currently translated at 10.3% (9 of 87 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (51 of 51 strings) Added translation using Weblate (Portuguese (Brazil)) Translated using Weblate (Portuguese (Brazil)) Currently translated at 78.6% (460 of 585 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 98.8% (89 of 90 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: Marcelo Popper Costa Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/pt-BR/components/auth.json | 3 ++- web/public/locales/pt-BR/views/faceLibrary.json | 8 ++++---- web/public/locales/pt-BR/views/live.json | 4 ++-- web/public/locales/pt-BR/views/settings.json | 7 ++++++- .../pt_BR/views/classificationModel.json | 17 +++++++++++++++++ 5 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 web/public/locales/pt_BR/views/classificationModel.json diff --git a/web/public/locales/pt-BR/components/auth.json b/web/public/locales/pt-BR/components/auth.json index 7172acaae..27775812f 100644 --- a/web/public/locales/pt-BR/components/auth.json +++ b/web/public/locales/pt-BR/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "Falha no Login", "unknownError": "Erro desconhecido. Checar registros.", "webUnknownError": "Erro desconhecido. Verifique os logs do console." - } + }, + "firstTimeLogin": "Fazendo login pela primeira vez? As credenciais estão escritas nos logs do Frigate." } } diff --git a/web/public/locales/pt-BR/views/faceLibrary.json b/web/public/locales/pt-BR/views/faceLibrary.json index 72f18039c..ee3ccde38 100644 --- a/web/public/locales/pt-BR/views/faceLibrary.json +++ b/web/public/locales/pt-BR/views/faceLibrary.json @@ -33,7 +33,7 @@ "new": "Criar Novo Rosto", "title": "Criar Coleção", "desc": "Criar uma nova coleção", - "nextSteps": "Para construir uma base forte:
  • Use a aba Teinar para selecionar e treinar em imagens para cada pessoa detectada.
  • Foque em imagens retas para melhores resultados; evite treinar imagens que capturam rostos em um ângulo.
  • " + "nextSteps": "Para construir uma base forte:
  • Use a aba Reconhecimentos Recentes para selecionar e treinar em imagens para cada pessoa detectada.
  • Foque em imagens retas para melhores resultados; evite treinar imagens que capturam rostos em um ângulo.
  • " }, "deleteFaceAttempts": { "title": "Apagar Rostos", @@ -58,7 +58,7 @@ }, "description": { "placeholder": "Informe um nome para esta coleção", - "addFace": "Passo a Passo para adicionar uma nova coleção a Biblioteca Facial.", + "addFace": "Adicione uma nova coleção à Biblioteca Facial subindo a sua primeira imagem.", "invalidName": "Nome inválido. Nomes podem incluir apenas letras, números, espaços, apóstrofos, sublinhados e hífenes." }, "documentTitle": "Biblioteca de rostos - Frigate", @@ -68,8 +68,8 @@ }, "collections": "Coleções", "train": { - "title": "Treinar", - "aria": "Selecionar treinar", + "title": "Reconhecimentos Recentes", + "aria": "Selecionar reconhecimentos recentes", "empty": "Não há tentativas recentes de reconhecimento facial" }, "selectFace": "Selecionar Rosto", diff --git a/web/public/locales/pt-BR/views/live.json b/web/public/locales/pt-BR/views/live.json index ff078f204..ef6a2516b 100644 --- a/web/public/locales/pt-BR/views/live.json +++ b/web/public/locales/pt-BR/views/live.json @@ -87,7 +87,7 @@ }, "manualRecording": { "title": "Sob Demanda", - "tips": "Inicie um evento manual baseado nas configurações de retenção de gravação dessa câmera.", + "tips": "Baixe uma captura de tela instantânea ou Inicie um evento manual baseado nas configurações de retenção de gravação dessa câmera.", "playInBackground": { "label": "Reproduzir em segundo plano", "desc": "Habilite essa opção para continuar transmitindo quando o reprodutor estiver oculto." @@ -173,7 +173,7 @@ }, "noCameras": { "title": "Nenhuma Câmera Configurada", - "description": "Inicie conectando uma câmera.", + "description": "Inicie conectando uma câmera ao Frigate", "buttonText": "Adicionar Câmera" }, "snapshot": { diff --git a/web/public/locales/pt-BR/views/settings.json b/web/public/locales/pt-BR/views/settings.json index 3ad0887ce..291538097 100644 --- a/web/public/locales/pt-BR/views/settings.json +++ b/web/public/locales/pt-BR/views/settings.json @@ -889,7 +889,12 @@ }, "errors": { "brandOrCustomUrlRequired": "Selecione a marca da câmera com o host/IP or selecione 'Outro' com uma URL customizada", - "nameRequired": "Nome para a câmera requerido" + "nameRequired": "Nome para a câmera requerido", + "nameLength": "O nome da câmera deve ter 64 caracteres ou menos" + }, + "testing": { + "probingMetadata": "Inferindo o metadata da câmera...", + "fetchingSnapshot": "Buscando a captura de imagem da câmera..." } } } diff --git a/web/public/locales/pt_BR/views/classificationModel.json b/web/public/locales/pt_BR/views/classificationModel.json new file mode 100644 index 000000000..e9487f0aa --- /dev/null +++ b/web/public/locales/pt_BR/views/classificationModel.json @@ -0,0 +1,17 @@ +{ + "documentTitle": "Modelos de Classificação", + "button": { + "deleteClassificationAttempts": "Apagar Imagens de Classificação", + "renameCategory": "Renomear Classe", + "deleteCategory": "Apagar Classe", + "deleteImages": "Apagar Imagens", + "trainModel": "Treinar Modelo" + }, + "toast": { + "success": { + "deletedCategory": "Classe Apagada", + "deletedImage": "Imagens Apagadas", + "categorizedImage": "Imagem Classificada com Sucesso" + } + } +} From ec97cbc23b68f9ff700c598072cdf1879efce3b4 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:34 +0100 Subject: [PATCH 07/43] Added translation using Weblate (German) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/de/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/de/views/classificationModel.json 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 @@ +{} From 7575fb2dde023bfd20f43dd3a1d45063fee9b306 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:35 +0100 Subject: [PATCH 08/43] Added translation using Weblate (Danish) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/da/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/da/views/classificationModel.json 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 @@ +{} From cc7bcc3ef0b39c43eb9190bf8717a53684d0d685 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:36 +0100 Subject: [PATCH 09/43] Added translation using Weblate (Greek) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/el/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/el/views/classificationModel.json 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 @@ +{} From 517bfcbbca26ca6a84a62b02aec4b852bd9094dd Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:37 +0100 Subject: [PATCH 10/43] Added translation using Weblate (Russian) Translated using Weblate (Russian) Currently translated at 75.9% (442 of 582 strings) Translated using Weblate (Russian) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (Russian) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Russian) Currently translated at 100.0% (199 of 199 strings) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: internetson Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ru/ Translation: Frigate NVR/common Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-events Translation: Frigate NVR/views-settings --- web/public/locales/ru/common.json | 16 +++- web/public/locales/ru/components/auth.json | 3 +- .../locales/ru/views/classificationModel.json | 1 + web/public/locales/ru/views/events.json | 13 ++- web/public/locales/ru/views/settings.json | 95 ++++++++++++++++++- 5 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 web/public/locales/ru/views/classificationModel.json diff --git a/web/public/locales/ru/common.json b/web/public/locales/ru/common.json index ee4a0df10..8b15aed2a 100644 --- a/web/public/locales/ru/common.json +++ b/web/public/locales/ru/common.json @@ -89,7 +89,7 @@ "24hour": "d MMM, yyyy" } }, - "selectItem": "Выбор {{item}}", + "selectItem": "Выбрать {{item}}", "button": { "apply": "Применить", "done": "Готово", @@ -138,6 +138,14 @@ "length": { "meters": "метры", "feet": "футы" + }, + "data": { + "kbps": "кБ/с", + "mbps": "МБ/с", + "gbps": "ГБ/с", + "kbph": "кБ/час", + "mbph": "МБ/час", + "gbph": "ГБ/час" } }, "menu": { @@ -280,6 +288,8 @@ "viewer": "Наблюдатель", "desc": "Администраторы имеют полный доступ ко всем функциям в интерфейсе Frigate. Наблюдатели ограничены просмотром камер, элементов просмотра и архивных записей." }, - "selectItem": "Выбрать {{item}}", - "readTheDocumentation": "Читать документацию" + "readTheDocumentation": "Читать документацию", + "information": { + "pixels": "{{area}}px" + } } diff --git a/web/public/locales/ru/components/auth.json b/web/public/locales/ru/components/auth.json index b227af835..17b983914 100644 --- a/web/public/locales/ru/components/auth.json +++ b/web/public/locales/ru/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "Ошибка входа", "unknownError": "Неизвестная ошибка. Проверьте логи.", "webUnknownError": "Неизвестная ошибка. Проверьте логи консоли." - } + }, + "firstTimeLogin": "Пытаетесь войти в систему впервые? Учетные данные указаны в логах Frigate." } } diff --git a/web/public/locales/ru/views/classificationModel.json b/web/public/locales/ru/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/ru/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/ru/views/events.json b/web/public/locales/ru/views/events.json index 3104cac40..c3e095eb0 100644 --- a/web/public/locales/ru/views/events.json +++ b/web/public/locales/ru/views/events.json @@ -37,5 +37,16 @@ "selected_other": "{{count}} выбрано", "detected": "обнаружен", "suspiciousActivity": "Подозрительная активность", - "threateningActivity": "Угрожающая активность" + "threateningActivity": "Угрожающая активность", + "detail": { + "noDataFound": "Нет данных для просмотра", + "aria": "Переключить подробный режим просмотра", + "trackedObject_one": "отслеживаемый объект", + "trackedObject_other": "отслеживаемые объекты", + "noObjectDetailData": "Данные о деталях объекта недоступны." + }, + "objectTrack": { + "trackedPoint": "Отслеживаемая точка", + "clickToSeek": "Перейти к этому моменту" + } } diff --git a/web/public/locales/ru/views/settings.json b/web/public/locales/ru/views/settings.json index efffd0003..73a302ccd 100644 --- a/web/public/locales/ru/views/settings.json +++ b/web/public/locales/ru/views/settings.json @@ -10,7 +10,9 @@ "classification": "Настройки распознавания - Frigate", "object": "Отладка - Frigate", "notifications": "Настройки уведомлений - Frigate", - "enrichments": "Настройки обогащения - Frigate" + "enrichments": "Настройки обогащения - Frigate", + "cameraManagement": "Управление камерами - Frigate", + "cameraReview": "Настройки просмотра камеры - Frigate" }, "menu": { "cameras": "Настройки камеры", @@ -23,7 +25,10 @@ "ui": "Интерфейс", "classification": "Распознавание", "enrichments": "Обогащения", - "triggers": "Триггеры" + "triggers": "Триггеры", + "cameraManagement": "Управление", + "cameraReview": "Обзор", + "roles": "Роли" }, "dialog": { "unsavedChanges": { @@ -401,7 +406,7 @@ "name": { "title": "Название", "inputPlaceHolder": "Введите название…", - "tips": "Название должно содержать не менее 2 символов и не совпадать с названием камеры или другой зоны." + "tips": "Имя должно содержать не менее 2 символов, включать хотя бы одну букву и не совпадать с названием камеры или другой зоны." }, "inertia": { "title": "Инерция", @@ -839,5 +844,89 @@ "title": "Семантический поиск выключен", "desc": "Для использования триггеров необходимо включить семантический поиск." } + }, + "cameraWizard": { + "title": "Добавить камеру", + "description": "Следуйте инструкциям ниже, чтобы добавить новую камеру в вашу установку Frigate.", + "steps": { + "nameAndConnection": "Имя и подключение", + "streamConfiguration": "Конфигурация потока", + "validationAndTesting": "Проверка и тестирование" + }, + "save": { + "success": "Новая камера {{cameraName}} успешно сохранена.", + "failure": "Ошибка при сохранении {{cameraName}}." + }, + "testResultLabels": { + "resolution": "Разрешение", + "video": "Видео", + "audio": "Аудио", + "fps": "Кадры в секунду (FPS)" + }, + "commonErrors": { + "noUrl": "Пожалуйста, укажите корректный URL потока", + "testFailed": "Тест потока не удался: {{error}}" + }, + "step1": { + "description": "Введите данные камеры и проверьте подключение.", + "cameraName": "Имя камеры", + "cameraNamePlaceholder": "Например, front_door или Обзор заднего двора", + "host": "Хост/IP-адрес", + "port": "Порт", + "username": "Имя пользователя", + "usernamePlaceholder": "Необязательно", + "password": "Пароль", + "passwordPlaceholder": "Необязательно", + "selectTransport": "Выберите транспортный протокол", + "cameraBrand": "Бренд камеры", + "selectBrand": "Выберите бренд камеры для шаблона URL", + "customUrl": "Пользовательский URL потока", + "brandInformation": "Информация о бренде", + "brandUrlFormat": "Для камер с форматом RTSP-URL вида: {{exampleUrl}}", + "customUrlPlaceholder": "rtsp://имя_пользователя:пароль@хост:порт/путь", + "testConnection": "Проверить соединение", + "testSuccess": "Соединение успешно установлено!", + "testFailed": "Проверка соединения не удалась. Проверьте введённые данные и попробуйте снова.", + "streamDetails": "Детали потока", + "warnings": { + "noSnapshot": "Не удалось получить снимок из настроенного потока." + }, + "errors": { + "brandOrCustomUrlRequired": "Выберите бренд камеры с указанием хоста/IP или выберите \"Другое\" и укажите пользовательский URL", + "nameRequired": "Необходимо указать имя камеры", + "nameLength": "Имя камеры должно содержать не более 64 символов", + "invalidCharacters": "Имя камеры содержит недопустимые символы", + "nameExists": "Имя камеры уже используется", + "brands": { + "reolink-rtsp": "RTSP от Reolink не рекомендуется. Включите HTTP в настройках камеры и перезапустите мастер настройки камеры." + } + }, + "docs": { + "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + } + }, + "step2": { + "description": "Настройте роли потоков и добавьте дополнительные потоки для вашей камеры.", + "streamsTitle": "Потоки камеры", + "addStream": "Добавить поток", + "addAnotherStream": "Добавить ещё один поток", + "streamTitle": "Поток {{number}}", + "streamUrl": "URL потока", + "streamUrlPlaceholder": "rtsp://имя_пользователя:пароль@хост:порт/путь", + "url": "URL", + "resolution": "Разрешение", + "selectResolution": "Выберите разрешение", + "quality": "Качество", + "selectQuality": "Выберите качество", + "roles": "Роли", + "roleLabels": { + "detect": "Обнаружение объектов", + "record": "Запись", + "audio": "Аудио" + }, + "testStream": "Проверить соединение", + "testSuccess": "Тест потока выполнен успешно!", + "testFailed": "Тест потока не пройден" + } } } From e785f765bd5d714da6bb99a64def2441b32c89f4 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:38 +0100 Subject: [PATCH 11/43] Added translation using Weblate (Romanian) Translated using Weblate (Romanian) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: lukasig Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/ro/components/auth.json | 3 ++- web/public/locales/ro/views/classificationModel.json | 1 + web/public/locales/ro/views/faceLibrary.json | 6 +++--- web/public/locales/ro/views/settings.json | 4 +++- 4 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 web/public/locales/ro/views/classificationModel.json diff --git a/web/public/locales/ro/components/auth.json b/web/public/locales/ro/components/auth.json index 4fa303853..cc3b5923b 100644 --- a/web/public/locales/ro/components/auth.json +++ b/web/public/locales/ro/components/auth.json @@ -10,6 +10,7 @@ "webUnknownError": "Eroare necunoscuta. Verifica logurile din consola.", "usernameRequired": "Utilizatorul este necesar", "unknownError": "Eroare necunoscuta. Verifica logurile." - } + }, + "firstTimeLogin": "Încercați să vă conectați pentru prima dată? Datele de autentificare sunt tipărite în jurnalele Frigate." } } diff --git a/web/public/locales/ro/views/classificationModel.json b/web/public/locales/ro/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/ro/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/ro/views/faceLibrary.json b/web/public/locales/ro/views/faceLibrary.json index 3cff5a739..b530c3077 100644 --- a/web/public/locales/ro/views/faceLibrary.json +++ b/web/public/locales/ro/views/faceLibrary.json @@ -20,15 +20,15 @@ "createFaceLibrary": { "desc": "Creează o colecție nouă", "title": "Creează colecție", - "nextSteps": "Pentru a construi o bază solidă:
  • Folosește fila „antrenare” pentru a selecta și antrena pe imagini pentru fiecare persoană detectată.
  • Concentrează-te pe imagini frontale pentru cele mai bune rezultate; evită imaginile de antrenament care surprind fețe din unghiuri laterale.
  • ", + "nextSteps": "Pentru a construi o bază solidă:
  • Folosește fila „Recunoașteri Recente” pentru a selecta și antrena pe imagini pentru fiecare persoană detectată.
  • Concentrează-te pe imagini frontale pentru cele mai bune rezultate; evită imaginile de antrenament care surprind fețe din unghiuri laterale.
  • ", "new": "Crează o față nouă" }, "collections": "Colecții", "documentTitle": "Bibliotecă fețe - Frigate", "train": { "empty": "Nu există încercări recente de recunoaștere facială", - "title": "Antrenează", - "aria": "Selectează antrenarea" + "title": "Recunoașteri Recente", + "aria": "Selectează Recunoașteri Recente" }, "steps": { "description": { diff --git a/web/public/locales/ro/views/settings.json b/web/public/locales/ro/views/settings.json index eaa669e78..84e12d348 100644 --- a/web/public/locales/ro/views/settings.json +++ b/web/public/locales/ro/views/settings.json @@ -979,7 +979,9 @@ }, "hikvision": { "substreamWarning": "Substream-ul 1 este blocat la o rezoluție scăzută. Multe camere Hikvision suportă substream-uri suplimentare care trebuie să fie activate în setările camerei. Este recomandat să verifici și să utilizezi acele strem-uri, dacă sunt disponibile." - } + }, + "resolutionHigh": "O rezoluție de {{resolution}} poate cauza o utilizare crescută a resurselor.", + "resolutionLow": "O rezoluție de {{resolution}} poate fi prea mică pentru detectarea fiabilă a obiectelor mici." } } }, From 19618c2a9da2e62497bd3d50292c7631605042fa Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:39 +0100 Subject: [PATCH 12/43] Added translation using Weblate (Bulgarian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/bg/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/bg/views/classificationModel.json 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 @@ +{} From 60ccbedb2044fb6209733701124376786cebee8b Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:40 +0100 Subject: [PATCH 13/43] Added translation using Weblate (Ukrainian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translated using Weblate (Ukrainian) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (584 of 584 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: Максим Горпиніч Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/uk/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-events Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/uk/components/auth.json | 3 ++- .../locales/uk/views/classificationModel.json | 1 + web/public/locales/uk/views/events.json | 7 ++++--- web/public/locales/uk/views/faceLibrary.json | 6 +++--- web/public/locales/uk/views/settings.json | 13 ++++++++++--- 5 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 web/public/locales/uk/views/classificationModel.json diff --git a/web/public/locales/uk/components/auth.json b/web/public/locales/uk/components/auth.json index 07eaca4e3..4c9f7e282 100644 --- a/web/public/locales/uk/components/auth.json +++ b/web/public/locales/uk/components/auth.json @@ -10,6 +10,7 @@ }, "user": "Iм'я користувача", "password": "Пароль", - "login": "Логiн" + "login": "Логiн", + "firstTimeLogin": "Намагаєтеся вперше увійти? Облікові дані надруковані в журналах Frigate." } } diff --git a/web/public/locales/uk/views/classificationModel.json b/web/public/locales/uk/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/uk/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/uk/views/events.json b/web/public/locales/uk/views/events.json index 6c90d5ed9..7aa18b604 100644 --- a/web/public/locales/uk/views/events.json +++ b/web/public/locales/uk/views/events.json @@ -40,9 +40,10 @@ "detail": { "noDataFound": "Немає детальних даних для перегляду", "aria": "Перемикання детального перегляду", - "trackedObject_one": "відстежуваний об'єкт", - "trackedObject_other": "відстежувані об'єкти", - "noObjectDetailData": "Детальні дані про об'єкт недоступні." + "trackedObject_one": "об'єкт", + "trackedObject_other": "об'єкти", + "noObjectDetailData": "Детальні дані про об'єкт недоступні.", + "label": "Деталь" }, "objectTrack": { "trackedPoint": "Відстежувана Точка", diff --git a/web/public/locales/uk/views/faceLibrary.json b/web/public/locales/uk/views/faceLibrary.json index bf1f867a2..855b41fd3 100644 --- a/web/public/locales/uk/views/faceLibrary.json +++ b/web/public/locales/uk/views/faceLibrary.json @@ -83,11 +83,11 @@ "title": "Створити колекцію", "desc": "Створити нову колекцію", "new": "Створити нове обличчя", - "nextSteps": "Щоб створити міцну основу:
  • Використовуйте вкладку «Навчання», щоб вибрати та навчити зображення для кожної виявленої особи.
  • Для найкращих результатів зосередьтеся на зображеннях, спрямованих прямо в обличчя; уникайте навчальних зображень, які фіксують обличчя під кутом.
  • " + "nextSteps": "Щоб створити міцну основу:
  • Використовуйте вкладку «Недавні розпізнавання», щоб вибрати та навчити систему розпізнавати зображення для кожної виявленої особи.
  • Для досягнення найкращих результатів зосередьтеся на прямих зображеннях; уникайте навчання зображень, на яких обличчя зняті під кутом.
  • " }, "train": { - "title": "Поїзд", - "aria": "Виберіть поїзд", + "title": "Нещодавні визнання", + "aria": "Виберіть нещодавні визнання", "empty": "Немає останніх спроб розпізнавання обличчя" }, "collections": "Колекції", diff --git a/web/public/locales/uk/views/settings.json b/web/public/locales/uk/views/settings.json index a053b90a7..7884bfbc6 100644 --- a/web/public/locales/uk/views/settings.json +++ b/web/public/locales/uk/views/settings.json @@ -959,11 +959,16 @@ "invalidCharacters": "Назва камери містить недійсні символи", "nameExists": "Назва камери вже існує", "brands": { - "reolink-rtsp": "Не рекомендується використовувати Reolink RTSP. Рекомендується ввімкнути http у налаштуваннях камери та перезапустити майстер налаштувань камери." - } + "reolink-rtsp": "Не рекомендується використовувати Reolink RTSP. Увімкніть HTTP у налаштуваннях прошивки камери та перезапустіть майстер." + }, + "customUrlRtspRequired": "Користувацькі URL-адреси мають починатися з \"rtsp://\". Для потоків з камер, що не підтримують RTSP, потрібне ручне налаштування." }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "Зондування метаданих камери...", + "fetchingSnapshot": "Отримання знімка камери..." } }, "step2": { @@ -1042,7 +1047,9 @@ }, "hikvision": { "substreamWarning": "Підпотік 1 заблокований на низькій роздільній здатності. Багато камер Hikvision підтримують додаткові підпотоки, які потрібно ввімкнути в налаштуваннях камери. Рекомендується перевірити та використовувати ці потоки, якщо вони доступні." - } + }, + "resolutionHigh": "Роздільна здатність {{resolution}} може призвести до збільшення використання ресурсів.", + "resolutionLow": "Роздільна здатність {{resolution}} може бути занадто низькою для надійного виявлення малих об'єктів." } } }, From b950041306e103a78bb190b277cce61079d26c3d Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:42 +0100 Subject: [PATCH 14/43] Added translation using Weblate (Japanese) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/ja/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/ja/views/classificationModel.json diff --git a/web/public/locales/ja/views/classificationModel.json b/web/public/locales/ja/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/ja/views/classificationModel.json @@ -0,0 +1 @@ +{} From e1159125e14420aacd2c08755714fc084bba3ece Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:42 +0100 Subject: [PATCH 15/43] Translated using Weblate (Catalan) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (87 of 87 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (585 of 585 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (34 of 34 strings) Added translation using Weblate (Catalan) Translated using Weblate (Catalan) Currently translated at 100.0% (585 of 585 strings) Translated using Weblate (Catalan) Currently translated at 99.2% (497 of 501 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (Catalan) Currently translated at 93.0% (466 of 501 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (580 of 580 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Catalan) Currently translated at 89.8% (450 of 501 strings) Translated using Weblate (Catalan) Currently translated at 97.0% (563 of 580 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (Catalan) Currently translated at 98.3% (59 of 60 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (Catalan) Currently translated at 85.2% (427 of 501 strings) Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com> Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/ Translation: Frigate NVR/audio Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/ca/audio.json | 76 +++++- web/public/locales/ca/components/auth.json | 3 +- .../locales/ca/views/classificationModel.json | 135 ++++++++++ web/public/locales/ca/views/events.json | 14 +- web/public/locales/ca/views/explore.json | 6 + web/public/locales/ca/views/faceLibrary.json | 10 +- web/public/locales/ca/views/live.json | 8 +- web/public/locales/ca/views/settings.json | 233 +++++++++++++++++- 8 files changed, 469 insertions(+), 16 deletions(-) create mode 100644 web/public/locales/ca/views/classificationModel.json 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" } } From 730478ce17faea2fe526ba820aea8c38cc97aff6 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:44 +0100 Subject: [PATCH 16/43] Added translation using Weblate (Czech) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/cs/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/cs/views/classificationModel.json 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 @@ +{} From 4b559bec4e25230f95434fa5fa90ffd809a0e926 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:45 +0100 Subject: [PATCH 17/43] Added translation using Weblate (Portuguese) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/pt/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/pt/views/classificationModel.json diff --git a/web/public/locales/pt/views/classificationModel.json b/web/public/locales/pt/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/pt/views/classificationModel.json @@ -0,0 +1 @@ +{} From 4f4c508e26167a2b0d1baed8d4eae49cb39b9982 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:46 +0100 Subject: [PATCH 18/43] Added translation using Weblate (Vietnamese) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/vi/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/vi/views/classificationModel.json diff --git a/web/public/locales/vi/views/classificationModel.json b/web/public/locales/vi/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/vi/views/classificationModel.json @@ -0,0 +1 @@ +{} From f763eb77fe931e15e04d75939ed6b2c8bde37a82 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:47 +0100 Subject: [PATCH 19/43] Added translation using Weblate (Croatian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/hr/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/hr/views/classificationModel.json diff --git a/web/public/locales/hr/views/classificationModel.json b/web/public/locales/hr/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/hr/views/classificationModel.json @@ -0,0 +1 @@ +{} From cd2d9e8ebea8a44b7955b9b25d7e80f3709a2c52 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:48 +0100 Subject: [PATCH 20/43] Added translation using Weblate (Hungarian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/hu/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/hu/views/classificationModel.json diff --git a/web/public/locales/hu/views/classificationModel.json b/web/public/locales/hu/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/hu/views/classificationModel.json @@ -0,0 +1 @@ +{} From 8a83e4cb7916eb2b50cce0622a2f30d79f028774 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:49 +0100 Subject: [PATCH 21/43] Added translation using Weblate (Hindi) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/hi/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/hi/views/classificationModel.json diff --git a/web/public/locales/hi/views/classificationModel.json b/web/public/locales/hi/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/hi/views/classificationModel.json @@ -0,0 +1 @@ +{} From 6b00da347c4ed0dd67c3a527ee45558deeba3992 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:50 +0100 Subject: [PATCH 22/43] Added translation using Weblate (Hebrew) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/he/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/he/views/classificationModel.json diff --git a/web/public/locales/he/views/classificationModel.json b/web/public/locales/he/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/he/views/classificationModel.json @@ -0,0 +1 @@ +{} From 0ffe51e4c15dfa43df5018417ff4639047adfe92 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:51 +0100 Subject: [PATCH 23/43] Added translation using Weblate (Polish) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/pl/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/pl/views/classificationModel.json diff --git a/web/public/locales/pl/views/classificationModel.json b/web/public/locales/pl/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/pl/views/classificationModel.json @@ -0,0 +1 @@ +{} From b5779eae239da1ef7e4f9c0844dc9e930a39f8fd Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:52 +0100 Subject: [PATCH 24/43] Added translation using Weblate (Italian) Translated using Weblate (Italian) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (Italian) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (Italian) Currently translated at 100.0% (585 of 585 strings) Translated using Weblate (Italian) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Italian) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Italian) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Italian) Currently translated at 100.0% (580 of 580 strings) Translated using Weblate (Italian) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (Italian) Currently translated at 100.0% (501 of 501 strings) Co-authored-by: Gringo Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/it/ Translation: Frigate NVR/audio Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/it/audio.json | 68 ++++++++++++++++++- web/public/locales/it/components/auth.json | 3 +- .../locales/it/views/classificationModel.json | 1 + web/public/locales/it/views/events.json | 7 +- web/public/locales/it/views/explore.json | 6 ++ web/public/locales/it/views/faceLibrary.json | 6 +- web/public/locales/it/views/live.json | 2 +- web/public/locales/it/views/settings.json | 18 +++-- 8 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 web/public/locales/it/views/classificationModel.json diff --git a/web/public/locales/it/audio.json b/web/public/locales/it/audio.json index d973819c9..caf48582b 100644 --- a/web/public/locales/it/audio.json +++ b/web/public/locales/it/audio.json @@ -433,5 +433,71 @@ "shofar": "Shofar", "liquid": "Liquido", "splash": "Schizzo", - "slosh": "Sciabordio" + "slosh": "Sciabordio", + "squish": "Schiacciare", + "drip": "Gocciolare", + "pour": "Versare", + "trickle": "Gocciolare", + "gush": "Sgorgare", + "fill": "Riempire", + "spray": "Spruzzare", + "pump": "Pompare", + "stir": "Mescolare", + "boiling": "Ebollizione", + "sonar": "Sonar", + "arrow": "Freccia", + "whoosh": "Sibilo", + "thump": "Tonfo", + "thunk": "Tonfo", + "electronic_tuner": "Accordatore elettronico", + "effects_unit": "Unità degli effetti", + "chorus_effect": "Effetto coro", + "basketball_bounce": "Rimbalzo di basket", + "bang": "Botto", + "slap": "Schiaffo", + "whack": "Colpo", + "smash": "Distruggere", + "breaking": "Rottura", + "bouncing": "Rimbalzo", + "whip": "Frusta", + "flap": "Patta", + "scratch": "Graffio", + "scrape": "Graffio", + "rub": "Strofinio", + "roll": "Rotolio", + "crushing": "Schiacciamento", + "crumpling": "Accartocciamento", + "tearing": "Strappo", + "beep": "Segnale acustico", + "ping": "Segnale", + "ding": "Bip", + "clang": "Fragore", + "squeal": "Strillo", + "creak": "Scricchiolio", + "rustle": "Fruscio", + "whir": "Ronzio", + "clatter": "Rumore", + "sizzle": "Sfrigolio", + "clicking": "Cliccando", + "clickety_clack": "Clic-clac", + "rumble": "Rombo", + "plop": "Tonfo", + "hum": "Ronzio", + "zing": "Brio", + "boing": "Balzo", + "crunch": "Scricchiolio", + "sine_wave": "Onda sinusoidale", + "harmonic": "Armonica", + "chirp_tone": "Tono di cinguettio", + "pulse": "Impulso", + "inside": "Dentro", + "outside": "Fuori", + "reverberation": "Riverbero", + "echo": "Eco", + "noise": "Rumore", + "mains_hum": "Ronzio di rete", + "distortion": "Distorsione", + "sidetone": "Effetto laterale", + "cacophony": "Cacofonia", + "throbbing": "Palpitante" } diff --git a/web/public/locales/it/components/auth.json b/web/public/locales/it/components/auth.json index bb6e2200d..f74387766 100644 --- a/web/public/locales/it/components/auth.json +++ b/web/public/locales/it/components/auth.json @@ -10,6 +10,7 @@ "unknownError": "Errore sconosciuto. Controlla i registri.", "webUnknownError": "Errore sconosciuto. Controlla i registri della console.", "loginFailed": "Accesso non riuscito" - } + }, + "firstTimeLogin": "Stai cercando di accedere per la prima volta? Le credenziali sono scritte nei registri di Frigate." } } diff --git a/web/public/locales/it/views/classificationModel.json b/web/public/locales/it/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/it/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/it/views/events.json b/web/public/locales/it/views/events.json index a47dd9916..938ab60d2 100644 --- a/web/public/locales/it/views/events.json +++ b/web/public/locales/it/views/events.json @@ -41,9 +41,10 @@ "detail": { "noDataFound": "Nessun dato dettagliato da rivedere", "aria": "Attiva/disattiva la visualizzazione dettagliata", - "trackedObject_one": "oggetto tracciato", - "trackedObject_other": "oggetti tracciati", - "noObjectDetailData": "Non sono disponibili dati dettagliati sull'oggetto." + "trackedObject_one": "oggetto", + "trackedObject_other": "oggetti", + "noObjectDetailData": "Non sono disponibili dati dettagliati sull'oggetto.", + "label": "Dettaglio" }, "objectTrack": { "trackedPoint": "Punto tracciato", diff --git a/web/public/locales/it/views/explore.json b/web/public/locales/it/views/explore.json index a440e0281..3fb2e39e0 100644 --- a/web/public/locales/it/views/explore.json +++ b/web/public/locales/it/views/explore.json @@ -195,6 +195,12 @@ "audioTranscription": { "label": "Trascrivere", "aria": "Richiedi la trascrizione audio" + }, + "showObjectDetails": { + "label": "Mostra il percorso dell'oggetto" + }, + "hideObjectDetails": { + "label": "Nascondi il percorso dell'oggetto" } }, "dialog": { diff --git a/web/public/locales/it/views/faceLibrary.json b/web/public/locales/it/views/faceLibrary.json index 47d946dc6..8d2a48899 100644 --- a/web/public/locales/it/views/faceLibrary.json +++ b/web/public/locales/it/views/faceLibrary.json @@ -16,8 +16,8 @@ "unknown": "Sconosciuto" }, "train": { - "title": "Addestra", - "aria": "Seleziona addestramento", + "title": "Riconoscimenti recenti", + "aria": "Seleziona i riconoscimenti recenti", "empty": "Non ci sono recenti tentativi di riconoscimento facciale" }, "button": { @@ -63,7 +63,7 @@ }, "createFaceLibrary": { "title": "Crea raccolta", - "nextSteps": "Per costruire una base solida:
  • Usa la scheda Addestra per selezionare e addestrare le immagini per ogni persona rilevata.
  • Concentrati sulle immagini dritte per ottenere risultati migliori; evita di addestrare immagini che catturano i volti da un'angolazione.
  • ", + "nextSteps": "Per costruire una base solida:
  • Usa la scheda \"Riconoscimenti recenti\" per selezionare e addestrare le immagini per ogni persona rilevata.
  • Concentrati sulle immagini dritte per ottenere risultati migliori; evita di addestrare immagini che catturano i volti da un'angolazione.
  • ", "desc": "Crea una nuova raccolta", "new": "Crea nuovo volto" }, diff --git a/web/public/locales/it/views/live.json b/web/public/locales/it/views/live.json index 6a2c847a4..774c151e8 100644 --- a/web/public/locales/it/views/live.json +++ b/web/public/locales/it/views/live.json @@ -174,7 +174,7 @@ "noCameras": { "buttonText": "Aggiungi telecamera", "title": "Nessuna telecamera configurata", - "description": "Per iniziare, collega una telecamera." + "description": "Per iniziare, collega una telecamera a Frigate." }, "snapshot": { "takeSnapshot": "Scarica l'istantanea attuale", diff --git a/web/public/locales/it/views/settings.json b/web/public/locales/it/views/settings.json index d0ff5d450..f3b102adc 100644 --- a/web/public/locales/it/views/settings.json +++ b/web/public/locales/it/views/settings.json @@ -155,7 +155,8 @@ "mustNotBeSameWithCamera": "Il nome della zona non deve essere uguale al nome della telecamera.", "mustBeAtLeastTwoCharacters": "Il nome della zona deve essere composto da almeno 2 caratteri.", "alreadyExists": "Per questa telecamera esiste già una zona con questo nome.", - "mustNotContainPeriod": "Il nome della zona non deve contenere punti." + "mustNotContainPeriod": "Il nome della zona non deve contenere punti.", + "mustHaveAtLeastOneLetter": "Il nome della zona deve contenere almeno una lettera." } }, "distance": { @@ -238,7 +239,7 @@ "name": { "inputPlaceHolder": "Inserisci un nome…", "title": "Nome", - "tips": "Il nome deve essere composto da almeno 2 caratteri e non deve essere il nome di una telecamera o di un'altra zona." + "tips": "Il nome deve essere composto da almeno 2 caratteri, contenere almeno una lettera e non deve essere il nome di una telecamera o di un'altra zona." }, "clickDrawPolygon": "Fai clic per disegnare un poligono sull'immagine.", "point_one": "{{count}} punto", @@ -980,7 +981,9 @@ }, "hikvision": { "substreamWarning": "Il flusso 1 è bloccato a bassa risoluzione. Molte telecamere Hikvision supportano flussi aggiuntivi che devono essere abilitati nelle impostazioni della telecamera. Si consiglia di controllare e utilizzare tali flussi, se disponibili." - } + }, + "resolutionHigh": "Una risoluzione di {{resolution}} potrebbe causare un aumento dell'utilizzo delle risorse.", + "resolutionLow": "Una risoluzione di {{resolution}} potrebbe essere troppo bassa per un rilevamento affidabile di oggetti di piccole dimensioni." } }, "title": "Aggiungi telecamera", @@ -1035,11 +1038,16 @@ "invalidCharacters": "Il nome della telecamera contiene caratteri non validi", "nameExists": "Il nome della telecamera esiste già", "brands": { - "reolink-rtsp": "Reolink RTSP non è consigliato. Si consiglia di abilitare http nelle impostazioni della telecamera e riavviare la procedura guidata." - } + "reolink-rtsp": "Reolink RTSP non è consigliato. Abilita HTTP nelle impostazioni del firmware della telecamera e riavvia la procedura guidata." + }, + "customUrlRtspRequired": "Gli URL personalizzati devono iniziare con \"rtsp://\". Per i flussi di telecamere non RTSP è richiesta la configurazione manuale." }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "Analisi dei metadati della telecamera in corso...", + "fetchingSnapshot": "Recupero istantanea della telecamera in corso..." } }, "step2": { From 81946c36217aeaf986a6654daab8532545052e81 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:53 +0100 Subject: [PATCH 25/43] Added translation using Weblate (Arabic) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/ar/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/ar/views/classificationModel.json 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 @@ +{} From 70e77272b5e30c16e74360d59f109ddb50e5bebb Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:54 +0100 Subject: [PATCH 26/43] Added translation using Weblate (Indonesian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/id/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/id/views/classificationModel.json diff --git a/web/public/locales/id/views/classificationModel.json b/web/public/locales/id/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/id/views/classificationModel.json @@ -0,0 +1 @@ +{} From 8015e8e74f3ae16fc3dc202a2223a80131f29229 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:55 +0100 Subject: [PATCH 27/43] Translated using Weblate (Dutch) Currently translated at 100.0% (87 of 87 strings) Added translation using Weblate (Dutch) Translated using Weblate (Dutch) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (584 of 584 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (122 of 122 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (118 of 118 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (501 of 501 strings) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com> Co-authored-by: Patrick Co-authored-by: kheno Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nl/ Translation: Frigate NVR/audio Translation: Frigate NVR/components-auth Translation: Frigate NVR/objects Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/nl/audio.json | 4 +- web/public/locales/nl/components/auth.json | 3 +- web/public/locales/nl/objects.json | 2 +- .../locales/nl/views/classificationModel.json | 135 ++++++++++++++++++ web/public/locales/nl/views/events.json | 7 +- web/public/locales/nl/views/explore.json | 8 +- web/public/locales/nl/views/faceLibrary.json | 8 +- web/public/locales/nl/views/live.json | 2 +- web/public/locales/nl/views/settings.json | 13 +- 9 files changed, 166 insertions(+), 16 deletions(-) create mode 100644 web/public/locales/nl/views/classificationModel.json diff --git a/web/public/locales/nl/audio.json b/web/public/locales/nl/audio.json index 6e5767a5b..59268c7ef 100644 --- a/web/public/locales/nl/audio.json +++ b/web/public/locales/nl/audio.json @@ -16,7 +16,7 @@ "snoring": "Snurken", "gasp": "Snakken naar adem", "pant": "Hijgen", - "snort": "Snorren", + "snort": "Snuiven", "sneeze": "Niezen", "shuffle": "Schudden", "footsteps": "Voetstappen", @@ -495,7 +495,7 @@ "echo": "Echo", "noise": "Lawaai", "mains_hum": "Netstroomgezoe", - "distortion": "Distortion", + "distortion": "Vervorming", "sidetone": "Zijtoon", "cacophony": "Kakofonie", "throbbing": "Bonzend", diff --git a/web/public/locales/nl/components/auth.json b/web/public/locales/nl/components/auth.json index 78ae8e55e..14fb57adf 100644 --- a/web/public/locales/nl/components/auth.json +++ b/web/public/locales/nl/components/auth.json @@ -10,6 +10,7 @@ "unknownError": "Onbekende fout. Bekijk de logs.", "webUnknownError": "Onbekende fout. Controleer consolelogboeken." }, - "user": "Gebruikersnaam" + "user": "Gebruikersnaam", + "firstTimeLogin": "Probeer je voor het eerst in te loggen? De inloggegevens staan vermeld in de Frigate-logs." } } diff --git a/web/public/locales/nl/objects.json b/web/public/locales/nl/objects.json index a0b21657b..1fc914a77 100644 --- a/web/public/locales/nl/objects.json +++ b/web/public/locales/nl/objects.json @@ -14,7 +14,7 @@ "traffic_light": "Verkeerslicht", "street_sign": "Verkeersbord", "stop_sign": "Stopbord", - "parking_meter": "Parkeer Meter", + "parking_meter": "Parkeermeter", "bench": "Bankje", "cow": "Koe", "giraffe": "Giraffe", diff --git a/web/public/locales/nl/views/classificationModel.json b/web/public/locales/nl/views/classificationModel.json new file mode 100644 index 000000000..eeac5b0f3 --- /dev/null +++ b/web/public/locales/nl/views/classificationModel.json @@ -0,0 +1,135 @@ +{ + "documentTitle": "Classificatiemodellen", + "button": { + "deleteClassificationAttempts": "Classificatieafbeeldingen verwijderen", + "renameCategory": "Klasse hernoemen", + "deleteCategory": "Klasse verwijderen", + "deleteImages": "Afbeeldingen verwijderen", + "trainModel": "Model trainen" + }, + "toast": { + "success": { + "deletedCategory": "Verwijderde klasse", + "deletedImage": "Verwijderde afbeeldingen", + "categorizedImage": "Succesvol geclassificeerde afbeelding", + "trainedModel": "Succesvol getraind model.", + "trainingModel": "Modeltraining succesvol gestart." + }, + "error": { + "deleteImageFailed": "Verwijderen mislukt: {{errorMessage}}", + "deleteCategoryFailed": "Het verwijderen van de klasse is mislukt: {{errorMessage}}", + "categorizeFailed": "Afbeelding categoriseren mislukt: {{errorMessage}}", + "trainingFailed": "Het starten van de modeltraining is mislukt: {{errorMessage}}" + } + }, + "deleteCategory": { + "title": "Klasse verwijderen", + "desc": "Weet je zeker dat je de klasse {{name}} wilt verwijderen? Hiermee worden alle bijbehorende afbeeldingen permanent verwijderd en moet het model opnieuw worden getraind." + }, + "deleteDatasetImages": { + "title": "Datasetafbeeldingen verwijderen", + "desc": "Weet u zeker dat u {{count}} afbeeldingen uit {{dataset}} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt en vereist een hertraining van het model." + }, + "deleteTrainImages": { + "title": "Trainingsafbeeldingen verwijderen", + "desc": "Weet je zeker dat je {{count}} afbeeldingen wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." + }, + "renameCategory": { + "title": "Klasse hernoemen", + "desc": "Voer een nieuwe naam in voor {{name}}. U moet het model opnieuw trainen om de naamswijziging door te voeren." + }, + "description": { + "invalidName": "Ongeldige naam. Namen mogen alleen letters, cijfers, spaties, apostroffen, underscores en koppeltekens bevatten." + }, + "train": { + "title": "Recente classificaties", + "aria": "Selecteer recente classificaties" + }, + "categories": "Klassen", + "createCategory": { + "new": "Nieuwe klasse maken" + }, + "categorizeImageAs": "Afbeelding classificeren als:", + "categorizeImage": "Afbeelding classificeren", + "noModels": { + "object": { + "title": "Geen objectclassificatiemodellen", + "description": "Maak een aangepast model om gedetecteerde objecten te classificeren.", + "buttonText": "Objectmodel maken" + }, + "state": { + "title": "Geen State-classificatiemodellen beschikbaar", + "description": "Maak een aangepast model om statuswijzigingen in specifieke cameragebieden te monitoren en te classificeren.", + "buttonText": "Maak een toestandsmodel" + } + }, + "wizard": { + "title": "Nieuwe classificatie maken", + "steps": { + "nameAndDefine": "Naam & definiëren", + "stateArea": "Staatsgebied", + "chooseExamples": "Voorbeelden kiezen" + }, + "step1": { + "description": "Toestandsmodellen houden vaste cameragebieden in de gaten op veranderingen (bijv. deur open/dicht). Objectmodellen voegen classificaties toe aan gedetecteerde objecten (bijv. bekende dieren, bezorgers, enz.).", + "name": "Naam", + "namePlaceholder": "Voer modelnaam in...", + "type": "Type", + "typeState": "Staat", + "typeObject": "Object", + "objectLabel": "Objectlabel", + "objectLabelPlaceholder": "Selecteer objecttype...", + "classificationType": "Classificatietype", + "classificationTypeTip": "Leer meer over classificatietypen", + "classificationTypeDesc": "Sublabels voegen extra tekst toe aan het objectlabel (bijv. ‘Persoon: UPS’). Attributen zijn doorzoekbare metadata die apart in de objectmetadata worden opgeslagen.", + "classificationSubLabel": "Sublabel", + "classificationAttribute": "Attribuut", + "classes": "Klassen", + "classesTip": "Meer over klassen leren", + "classesStateDesc": "Definieer de verschillende toestanden waarin het cameragebied zich kan bevinden. Bijvoorbeeld: ‘open’ en ‘dicht’ voor een garagedeur.", + "classesObjectDesc": "Definieer de verschillende categorieën om gedetecteerde objecten in te classificeren. Bijvoorbeeld: ‘bezorger’, ‘bewoner’, ‘vreemdeling’ voor persoonsclassificatie.", + "classPlaceholder": "Voer klassenaam in...", + "errors": { + "nameRequired": "Modelnaam is vereist", + "nameLength": "De modelnaam mag maximaal 64 tekens lang zijn", + "nameOnlyNumbers": "Modelnaam mag niet alleen uit cijfers bestaan", + "classRequired": "Minimaal 1 klasse is vereist", + "classesUnique": "Klassennamen moeten uniek zijn", + "stateRequiresTwoClasses": "Toestandsmodellen vereisen minimaal 2 klassen", + "objectLabelRequired": "Selecteer een objectlabel", + "objectTypeRequired": "Selecteer een classificatietype" + } + }, + "step2": { + "description": "Selecteer camera’s en definieer voor elke camera het te monitoren gebied. Het model zal de toestand van deze gebieden classificeren.", + "cameras": "Camera's", + "selectCamera": "Selecteer camera", + "noCameras": "Klik op + om camera’s toe te voegen", + "selectCameraPrompt": "Selecteer een camera uit de lijst om het te monitoren gebied te definiëren" + }, + "step3": { + "selectImagesPrompt": "Selecteer alle afbeeldingen met: {{className}}", + "selectImagesDescription": "Klik op afbeeldingen om ze te selecteren. Klik op Doorgaan wanneer je klaar bent met deze klasse.", + "generating": { + "title": "Voorbeeldafbeeldingen genereren", + "description": "Frigate haalt representatieve afbeeldingen uit je opnames. Dit kan even duren..." + }, + "training": { + "title": "Model trainen", + "description": "Je model wordt op de achtergrond getraind. Sluit dit venster, en je model zal starten zodra de training is voltooid." + }, + "retryGenerate": "Generatie opnieuw proberen", + "noImages": "Geen voorbeeldafbeeldingen gegenereerd", + "classifying": "Classificeren en trainen...", + "trainingStarted": "Training succesvol gestart", + "errors": { + "noCameras": "Geen camera’s geconfigureerd", + "noObjectLabel": "Geen objectlabel geselecteerd", + "generateFailed": "Genereren van voorbeelden mislukt: {{error}}", + "generationFailed": "Generatie mislukt. Probeer het opnieuw.", + "classifyFailed": "Afbeeldingen classificeren mislukt: {{error}}" + }, + "generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen" + } + } +} diff --git a/web/public/locales/nl/views/events.json b/web/public/locales/nl/views/events.json index f765df9f0..2f39f5815 100644 --- a/web/public/locales/nl/views/events.json +++ b/web/public/locales/nl/views/events.json @@ -40,9 +40,10 @@ "detail": { "noDataFound": "Geen gedetailleerde gegevens om te beoordelen", "aria": "Detailweergave in- of uitschakelen", - "trackedObject_one": "gevolgd object", - "trackedObject_other": "gevolgde objecten", - "noObjectDetailData": "Geen objectdetails beschikbaar." + "trackedObject_one": "object", + "trackedObject_other": "objecten", + "noObjectDetailData": "Geen objectdetails beschikbaar.", + "label": "Detail" }, "objectTrack": { "trackedPoint": "Gevolgd punt", diff --git a/web/public/locales/nl/views/explore.json b/web/public/locales/nl/views/explore.json index a7a8f41e4..d15ed8f9d 100644 --- a/web/public/locales/nl/views/explore.json +++ b/web/public/locales/nl/views/explore.json @@ -154,7 +154,7 @@ }, "recognizedLicensePlate": "Erkende kentekenplaat", "snapshotScore": { - "label": "Snapshot scoren" + "label": "Snapshot score" }, "score": { "label": "Score" @@ -195,6 +195,12 @@ "audioTranscription": { "label": "Transcriberen", "aria": "Audiotranscriptie aanvragen" + }, + "showObjectDetails": { + "label": "Objectpad weergeven" + }, + "hideObjectDetails": { + "label": "Verberg objectpad" } }, "noTrackedObjects": "Geen gevolgde objecten gevonden", diff --git a/web/public/locales/nl/views/faceLibrary.json b/web/public/locales/nl/views/faceLibrary.json index 7fb7faa52..11b8fbd27 100644 --- a/web/public/locales/nl/views/faceLibrary.json +++ b/web/public/locales/nl/views/faceLibrary.json @@ -13,12 +13,12 @@ "documentTitle": "Gezichtsbibliotheek - Frigate", "description": { "placeholder": "Voer een naam in voor deze verzameling", - "addFace": "Doorloop het toevoegen van een nieuwe collectie aan de gezichtenbibliotheek.", + "addFace": "Voeg een nieuwe collectie toe aan de gezichtenbibliotheek door je eerste afbeelding te uploaden.", "invalidName": "Ongeldige naam. Namen mogen alleen letters, cijfers, spaties, apostroffen, underscores en koppeltekens bevatten." }, "train": { - "title": "Train", - "aria": "Selecteer trainen", + "title": "Recente herkenningen", + "aria": "Selecteer recente herkenningen", "empty": "Er zijn geen recente pogingen tot gezichtsherkenning" }, "selectFace": "Selecteer gezicht", @@ -56,7 +56,7 @@ "title": "Collectie maken", "desc": "Een nieuwe collectie maken", "new": "Creëer een nieuw gezicht", - "nextSteps": "Om een sterke basis op te bouwen:
  • Gebruik het tabblad Trainen om per gedetecteerd persoon afbeeldingen te selecteren en te trainen.
  • Richt je op frontale afbeeldingen voor het beste resultaat; vermijd trainingsbeelden waarop gezichten vanuit een hoek te zien zijn.
  • " + "nextSteps": "Om een sterke basis op te bouwen:
  • Gebruik het tabblad ‘Recente herkenningen’ om afbeeldingen te selecteren en te trainen voor elke gedetecteerde persoon.
  • Richt je op afbeeldingen die recht van voren genomen zijn voor de beste resultaten, vermijd trainingsafbeeldingen waarop gezichten onder een hoek te zien zijn.
  • " }, "button": { "addFace": "Gezicht toevoegen", diff --git a/web/public/locales/nl/views/live.json b/web/public/locales/nl/views/live.json index 4aa51d544..66f14f678 100644 --- a/web/public/locales/nl/views/live.json +++ b/web/public/locales/nl/views/live.json @@ -179,7 +179,7 @@ }, "noCameras": { "title": "Geen camera’s ingesteld", - "description": "Begin door een camera te verbinden.", + "description": "Begin door een camera te verbinden met Frigate.", "buttonText": "Camera toevoegen" } } diff --git a/web/public/locales/nl/views/settings.json b/web/public/locales/nl/views/settings.json index 3887b8550..84c100b6e 100644 --- a/web/public/locales/nl/views/settings.json +++ b/web/public/locales/nl/views/settings.json @@ -957,11 +957,16 @@ "invalidCharacters": "Cameranaam bevat ongeldige tekens", "nameExists": "Cameranaam bestaat al", "brands": { - "reolink-rtsp": "Reolink RTSP wordt niet aanbevolen. Het is raadzaam om http in te schakelen in de camera-instellingen en de camerawizard opnieuw te starten." - } + "reolink-rtsp": "Reolink RTSP wordt niet aanbevolen. Schakel HTTP in via de firmware-instellingen van de camera en start de wizard opnieuw." + }, + "customUrlRtspRequired": "Aangepaste URL’s moeten beginnen met “rtsp://”. Handmatige configuratie is vereist voor camera­streams die geen RTSP gebruiken." }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "Camerametadata wordt onderzocht...", + "fetchingSnapshot": "Camerasnapshot ophalen..." } }, "step2": { @@ -1040,7 +1045,9 @@ }, "hikvision": { "substreamWarning": "Substream 1 is beperkt tot een lage resolutie. Veel Hikvision-camera’s ondersteunen extra substreams die in de instellingen van de camera ingeschakeld moeten worden. Het wordt aanbevolen deze streams te controleren en te gebruiken indien beschikbaar." - } + }, + "resolutionHigh": "Een resolutie van {{resolution}} kan leiden tot een verhoogd gebruik van systeembronnen.", + "resolutionLow": "Een resolutie van {{resolution}} kan te laag zijn voor betrouwbare detectie van kleine objecten." } } }, From 2cae46765487d6db2d656929dc80de201c3537ba Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:57 +0100 Subject: [PATCH 28/43] Added translation using Weblate (Spanish) Translated using Weblate (Spanish) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Spanish) Currently translated at 72.1% (420 of 582 strings) Co-authored-by: Hosted Weblate Co-authored-by: Israel Cabrera Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/es/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-settings --- web/public/locales/es/components/auth.json | 3 ++- web/public/locales/es/views/classificationModel.json | 1 + web/public/locales/es/views/settings.json | 7 +++++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 web/public/locales/es/views/classificationModel.json 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": { From 3807fbef709ee3ee7e673a9baab17faf797e7083 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:58 +0100 Subject: [PATCH 29/43] Translated using Weblate (French) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (French) Currently translated at 100.0% (585 of 585 strings) Translated using Weblate (French) Currently translated at 100.0% (6 of 6 strings) Translated using Weblate (French) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (French) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (French) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (French) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (French) Currently translated at 100.0% (199 of 199 strings) Translated using Weblate (French) Currently translated at 100.0% (87 of 87 strings) Translated using Weblate (French) Currently translated at 100.0% (585 of 585 strings) Translated using Weblate (French) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (French) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (French) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (French) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (French) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (French) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (French) Currently translated at 100.0% (2 of 2 strings) Translated using Weblate (French) Currently translated at 100.0% (53 of 53 strings) Translated using Weblate (French) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (French) Currently translated at 100.0% (46 of 46 strings) Translated using Weblate (French) Currently translated at 100.0% (199 of 199 strings) Translated using Weblate (French) Currently translated at 100.0% (87 of 87 strings) Added translation using Weblate (French) Translated using Weblate (French) Currently translated at 100.0% (118 of 118 strings) Translated using Weblate (French) Currently translated at 100.0% (585 of 585 strings) Translated using Weblate (French) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (French) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (French) Currently translated at 100.0% (199 of 199 strings) Translated using Weblate (French) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (French) Currently translated at 100.0% (48 of 48 strings) Translated using Weblate (French) Currently translated at 100.0% (6 of 6 strings) Translated using Weblate (French) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (French) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (French) Currently translated at 100.0% (9 of 9 strings) Translated using Weblate (French) Currently translated at 100.0% (122 of 122 strings) Translated using Weblate (French) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (French) Currently translated at 100.0% (72 of 72 strings) Translated using Weblate (French) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (French) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (French) Currently translated at 100.0% (2 of 2 strings) Translated using Weblate (French) Currently translated at 100.0% (53 of 53 strings) Translated using Weblate (French) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (French) Currently translated at 100.0% (46 of 46 strings) Translated using Weblate (French) Currently translated at 100.0% (118 of 118 strings) Translated using Weblate (French) Currently translated at 100.0% (199 of 199 strings) Translated using Weblate (French) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (French) Currently translated at 100.0% (584 of 584 strings) Translated using Weblate (French) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (French) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (French) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (French) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (French) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (French) Currently translated at 100.0% (580 of 580 strings) Translated using Weblate (French) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (French) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (French) Currently translated at 100.0% (580 of 580 strings) Translated using Weblate (French) Currently translated at 100.0% (580 of 580 strings) Translated using Weblate (French) Currently translated at 98.8% (89 of 90 strings) Translated using Weblate (French) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (French) Currently translated at 100.0% (33 of 33 strings) Translated using Weblate (French) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (French) Currently translated at 100.0% (501 of 501 strings) Co-authored-by: Apocoloquintose Co-authored-by: Hosted Weblate Co-authored-by: Pascal Courtonne Co-authored-by: Yanom1212 Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fr/ Translation: Frigate NVR/audio Translation: Frigate NVR/common Translation: Frigate NVR/components-auth Translation: Frigate NVR/components-camera Translation: Frigate NVR/components-dialog Translation: Frigate NVR/components-filter Translation: Frigate NVR/components-icons Translation: Frigate NVR/components-input Translation: Frigate NVR/components-player Translation: Frigate NVR/objects Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-configeditor Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-exports Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-recording Translation: Frigate NVR/views-search Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/fr/audio.json | 124 ++++++----- web/public/locales/fr/common.json | 58 ++--- web/public/locales/fr/components/auth.json | 11 +- web/public/locales/fr/components/camera.json | 44 ++-- web/public/locales/fr/components/dialog.json | 40 ++-- web/public/locales/fr/components/filter.json | 42 ++-- web/public/locales/fr/components/icons.json | 4 +- web/public/locales/fr/components/input.json | 2 +- web/public/locales/fr/components/player.json | 4 +- web/public/locales/fr/objects.json | 20 +- .../locales/fr/views/classificationModel.json | 135 ++++++++++++ web/public/locales/fr/views/configEditor.json | 2 +- web/public/locales/fr/views/events.json | 30 ++- web/public/locales/fr/views/explore.json | 62 +++--- web/public/locales/fr/views/exports.json | 14 +- web/public/locales/fr/views/faceLibrary.json | 44 ++-- web/public/locales/fr/views/live.json | 62 +++--- web/public/locales/fr/views/recording.json | 6 +- web/public/locales/fr/views/search.json | 20 +- web/public/locales/fr/views/settings.json | 200 +++++++++--------- web/public/locales/fr/views/system.json | 36 ++-- 21 files changed, 567 insertions(+), 393 deletions(-) create mode 100644 web/public/locales/fr/views/classificationModel.json 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 :
  • Utilisez l'onglet Entraîner pour sélectionner et entraîner des images pour chaque personne détectée.
  • Privilégiez les images de face pour de meilleurs résultats ; évitez d'utiliser des images d'entraînement où les visages sont capturés de biais.
  • " + "nextSteps": "Pour construire une base solide :
  • Utilisez l'onglet Reconnaissances récentes pour sélectionner et entraîner des images pour chaque personne détectée.
  • Privilégiez les images de face pour de meilleurs résultats ; évitez d'entraîner le modèle avec des images où les visages sont de biais.
  • " }, "train": { - "title": "Entraîner", - "aria": "Sélectionner entraîner", - "empty": "Il n'y a pas de tentatives récentes de reconnaissance faciale" + "title": "Reconnaissances récentes", + "aria": "Sélectionnez des reconnaissances récentes.", + "empty": "Il n'y a pas de tentatives récentes de reconnaissance faciale." }, "selectFace": "Sélectionner un visage", "button": { @@ -41,12 +41,12 @@ }, "selectItem": "Sélectionner {{item}}", "deleteFaceLibrary": { - "title": "Supprimer un nom", - "desc": "Etes-vous certain de vouloir supprimer la collection {{name}} ? Cette action supprimera définitivement tous les visages associés." + "title": "Supprimer le nom", + "desc": "Êtes-vous certain de vouloir supprimer la collection {{name}} ? Cette action supprimera définitivement tous les visages associés." }, "imageEntry": { - "dropActive": "Déposez l'image ici…", - "dropInstructions": "Glissez-déposez ou coller une image ici, ou cliquez pour la sélectionner", + "dropActive": "Déposez l'image ici.", + "dropInstructions": "Glissez-déposez ou collez une image ici, ou cliquez pour la sélectionner.", "maxSize": "Taille max : {{size}}Mo", "validation": { "selectImage": "Veuillez sélectionner un fichier image." @@ -58,30 +58,30 @@ "deletedName_one": "{{count}} visage a été supprimé avec succès.", "deletedName_many": "{{count}} visages ont été supprimés avec succès.", "deletedName_other": "{{count}} visages ont été supprimés avec succès.", - "uploadedImage": "Image téléversée avec succès.", + "uploadedImage": "Image téléversée avec succès", "addFaceLibrary": "{{name}} a été ajouté avec succès à la bibliothèque de visages !", - "updatedFaceScore": "Score du visage mis à jour avec succès.", + "updatedFaceScore": "Score du visage mis à jour avec succès", "deletedFace_one": "{{count}} visage a été supprimé avec succès.", "deletedFace_many": "{{count}} visages ont été supprimés avec succès.", "deletedFace_other": "{{count}} visages ont été supprimés avec succès.", - "trainedFace": "Visage entraîné avec succès.", - "renamedFace": "Visage renommé avec succés en {{name}}" + "trainedFace": "Visage entraîné avec succès", + "renamedFace": "Visage renommé avec succès en {{name}}" }, "error": { "uploadingImageFailed": "Échec du téléversement de l'image : {{errorMessage}}", "deleteFaceFailed": "Échec de la suppression : {{errorMessage}}", - "trainFailed": "Échec de l'entrainement : {{errorMessage}}", + "trainFailed": "Échec de l'entraînement : {{errorMessage}}", "updateFaceScoreFailed": "Échec de la mise à jour du score du visage : {{errorMessage}}", - "addFaceLibraryFailed": "Échec du nommage du visage : {{errorMessage}}", + "addFaceLibraryFailed": "Échec de l'attribution du nom au visage : {{errorMessage}}", "deleteNameFailed": "Échec de la suppression du nom : {{errorMessage}}", - "renameFaceFailed": "Échec du renommage du visage : {{errorMessage}}" + "renameFaceFailed": "Échec du changement de nom du visage : {{errorMessage}}" } }, "trainFaceAs": "Entraîner le visage comme :", - "trainFace": "Entraîner un visage", + "trainFace": "Entraîner le visage", "steps": { "uploadFace": "Téléverser une image de visage", - "faceName": "Entrer un nom pour le visage", + "faceName": "Saisissez le nom du visage.", "nextSteps": "Prochaines étapes", "description": { "uploadFace": "Téléversez une image de {{name}} qui montre son visage de face. L'image n'a pas besoin d'être recadrée pour ne montrer que son visage." @@ -89,7 +89,7 @@ }, "renameFace": { "title": "Renommer le visage", - "desc": "Saisissez un nouveau nom pour {{name}}" + "desc": "Saisissez un nouveau nom pour {{name}}." }, "collections": "Collections", "deleteFaceAttempts": { @@ -98,6 +98,6 @@ "desc_many": "Êtes-vous sûr de vouloir supprimer {{count}} visages ? Cette action est irréversible.", "desc_other": "Êtes-vous sûr de vouloir supprimer {{count}} visages ? Cette action est irréversible." }, - "nofaces": "Pas de visage disponible", + "nofaces": "Aucun visage disponible", "pixels": "{{area}} pixels" } diff --git a/web/public/locales/fr/views/live.json b/web/public/locales/fr/views/live.json index 2f08493ac..f80208df5 100644 --- a/web/public/locales/fr/views/live.json +++ b/web/public/locales/fr/views/live.json @@ -1,6 +1,6 @@ { "documentTitle": "Direct - Frigate", - "lowBandwidthMode": "Mode faible bande-passante", + "lowBandwidthMode": "Mode bande passante faible", "documentTitle.withCamera": "{{camera}} - Direct - Frigate", "twoWayTalk": { "disable": "Désactiver la conversation bidirectionnelle", @@ -14,17 +14,17 @@ "move": { "clickMove": { "label": "Cliquez dans le cadre pour centrer la caméra", - "enable": "Activer le click pour déplacer", - "disable": "Désactiver le click pour déplacer" + "enable": "Activer le clic pour déplacer", + "disable": "Désactiver le clic pour déplacer" }, "left": { - "label": "Déplacer la caméra PTZ sur la gauche" + "label": "Déplacer la caméra PTZ vers la gauche" }, "up": { "label": "Déplacer la caméra PTZ vers le haut" }, "right": { - "label": "Déplacer la caméra PTZ sur la droite" + "label": "Déplacer la caméra PTZ vers la droite" }, "down": { "label": "Déplacer la caméra PTZ vers le bas" @@ -32,15 +32,15 @@ }, "zoom": { "in": { - "label": "Zoomer avant de la caméra PTZ" + "label": "Zoom avant sur la caméra PTZ" }, "out": { - "label": "Zoom arrière de la caméra PTZ" + "label": "Zoom arrière sur la caméra PTZ" } }, "frame": { "center": { - "label": "Cliquez dans le cadre pour centrer la caméra PTZ" + "label": "Cliquez dans le cadre pour centrer la caméra PTZ." } }, "presets": "Paramètres prédéfinis pour les caméras PTZ", @@ -79,50 +79,50 @@ }, "manualRecording": { "playInBackground": { - "label": "Jouer en arrière plan", - "desc": "Activer cette option pour continuer à streamer lorsque le lecteur est masqué." + "label": "Jouer en arrière-plan", + "desc": "Activez cette option pour continuer à diffuser lorsque le lecteur est masqué." }, "showStats": { "label": "Afficher les statistiques", - "desc": "Activer cette option pour afficher les statistiques de flux en surimpression sur le flux de la caméra." + "desc": "Activez cette option pour afficher les statistiques de flux en surimpression sur le flux de la caméra." }, "debugView": "Vue de débogage", "start": "Démarrer l'enregistrement à la demande", - "failedToStart": "Echec du démarrage de l'enregistrement à la demande manuel.", + "failedToStart": "Échec du démarrage de l'enregistrement manuel à la demande", "end": "Terminer l'enregistrement à la demande", - "ended": "Enregistrement à la demande terminé.", - "failedToEnd": "Impossible de terminer l'enregistrement manuel à la demande.", - "started": "Enregistrement à la demande démarré.", + "ended": "Enregistrement manuel à la demande terminé", + "failedToEnd": "Impossible de terminer l'enregistrement manuel à la demande", + "started": "Enregistrement manuel à la demande démarré", "recordDisabledTips": "Puisque l'enregistrement est désactivé ou restreint dans la configuration de cette caméra, seul un instantané sera enregistré.", "title": "À la demande", - "tips": "Téléchargez un instantané immédiat ou démarrez un événement manuel en fonction des paramètres de conservation d'enregistrement de cette caméra." + "tips": "Téléchargez un instantané ou lancez un événement manuel en fonction des paramètres de conservation d'enregistrement de cette caméra." }, - "streamingSettings": "Paramètres de streaming", + "streamingSettings": "Paramètres de diffusion", "notifications": "Notifications", "suspend": { "forTime": "Mettre en pause pour : " }, "stream": { "audio": { - "available": "Audio disponible pour ce flux", + "available": "L'audio est disponible pour ce flux", "tips": { "documentation": "Lire la documentation ", - "title": "L'audio doit être capté par votre caméra et configuré dans go2rtc pour ce flux." + "title": "L'audio doit provenir de votre caméra et configuré dans go2rtc pour ce flux." }, - "unavailable": "Audio non disponible pour ce flux" + "unavailable": "L'audio n'est pas disponible pour ce flux" }, "twoWayTalk": { - "tips": "Votre périphérique doit supporter la fonctionnalité et WebRTC doit être configuré pour supporter la conversation bidirectionnelle.", + "tips": "Votre appareil doit prendre en charge la fonctionnalité de conversation bidirectionnelle et WebRTC doit être configuré pour la supporter.", "tips.documentation": "Lire la documention ", "available": "Conversation bidirectionnelle disponible pour ce flux", "unavailable": "Conversation bidirectionnelle non disponible pour ce flux" }, "lowBandwidth": { - "tips": "La vue temps réel est en mode faible bande passante à cause d'erreurs de cache ou de flux.", + "tips": "La vue temps réel est en mode bande passante faible à cause de problèmes de mise en mémoire tampon ou d'erreurs de flux.", "resetStream": "Réinitialiser le flux" }, "playInBackground": { - "tips": "Activer cette option pour continuer le streaming lorsque le lecteur est masqué.", + "tips": "Activez cette option pour continuer la diffusion lorsque le lecteur est masqué.", "label": "Jouer en arrière plan" }, "title": "Flux", @@ -141,7 +141,7 @@ "transcription": "Transcription audio" }, "history": { - "label": "Afficher l'historique de capture" + "label": "Afficher les vidéos archivées" }, "effectiveRetainMode": { "modes": { @@ -165,21 +165,21 @@ "group": { "label": "Modifier le groupe de caméras" }, - "exitEdit": "Quitter l'édition" + "exitEdit": "Quitter le mode édition" }, "transcription": { "enable": "Activer la transcription audio en direct", "disable": "Désactiver la transcription audio en direct" }, "noCameras": { - "title": "Aucune caméra configurée", - "description": "Pour commencer, connectez une caméra.", + "title": "Aucune caméra n'est configurée", + "description": "Pour commencer, connectez une caméra à Frigate.", "buttonText": "Ajouter une caméra" }, "snapshot": { - "takeSnapshot": "Télécharger un instantané immédiat", - "noVideoSource": "Aucune source disponible pour un instantané.", - "captureFailed": "Échec de la capture d'instantané.", - "downloadStarted": "Démarrage du téléchargement de l'instantané." + "takeSnapshot": "Télécharger un instantané", + "noVideoSource": "Aucune source vidéo disponible pour un instantané", + "captureFailed": "Échec de la capture d'instantané", + "downloadStarted": "Démarrage du téléchargement de l'instantané" } } diff --git a/web/public/locales/fr/views/recording.json b/web/public/locales/fr/views/recording.json index f04812f4c..8d3cb3522 100644 --- a/web/public/locales/fr/views/recording.json +++ b/web/public/locales/fr/views/recording.json @@ -1,12 +1,12 @@ { - "export": "Exporter", + "export": "Exportations", "calendar": "Calendrier", "filter": "Filtre", "filters": "Filtres", "toast": { "error": { - "noValidTimeSelected": "Pas de période valide sélectionnée", - "endTimeMustAfterStartTime": "L'heure de fin doit être après l'heure de début" + "noValidTimeSelected": "Aucune plage horaire valide sélectionnée", + "endTimeMustAfterStartTime": "L'heure de fin doit être postérieure à l'heure de début." } } } diff --git a/web/public/locales/fr/views/search.json b/web/public/locales/fr/views/search.json index b656ab889..f24c1b15c 100644 --- a/web/public/locales/fr/views/search.json +++ b/web/public/locales/fr/views/search.json @@ -1,7 +1,7 @@ { "savedSearches": "Recherches enregistrées", "search": "Rechercher", - "searchFor": "Chercher {{inputValue}}", + "searchFor": "Rechercher {{inputValue}}", "button": { "clear": "Effacer la recherche", "filterInformation": "Filtrer les informations", @@ -13,17 +13,17 @@ "filter": { "label": { "zones": "Zones", - "sub_labels": "Sous-libellés", + "sub_labels": "Sous-étiquettes", "search_type": "Type de recherche", - "time_range": "Plage de temps", - "labels": "Libellés", + "time_range": "Plage horaire", + "labels": "Étiquettes", "cameras": "Caméras", "after": "Après", "before": "Avant", - "min_speed": "Vitesse minimum", - "max_speed": "Vitesse maximum", + "min_speed": "Vitesse minimale", + "max_speed": "Vitesse maximale", "min_score": "Score minimum", - "recognized_license_plate": "Plaques d'immatriculation reconnues", + "recognized_license_plate": "Plaque d'immatriculation reconnue", "has_clip": "Contient un clip", "has_snapshot": "Contient un instantané", "max_score": "Score maximum" @@ -38,7 +38,7 @@ "afterDatebeEarlierBefore": "La date « après » doit être antérieure à la date « avant ».", "minScoreMustBeLessOrEqualMaxScore": "Le « min_score » doit être inférieur ou égal au « max_score ».", "maxScoreMustBeGreaterOrEqualMinScore": "Le « max_score » doit être supérieur ou égal au « min_score ».", - "minSpeedMustBeLessOrEqualMaxSpeed": "La « vitesse_min » doit être inférieure ou égale à la « vitesse_max ».", + "minSpeedMustBeLessOrEqualMaxSpeed": "La vitesse minimale doit être inférieure ou égale à la vitesse maximale.", "maxSpeedMustBeGreaterOrEqualMinSpeed": "La « vitesse maximale » doit être supérieure ou égale à la « vitesse minimale »." } }, @@ -54,10 +54,10 @@ "example": "Exemple: cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM ", "step": "
    • Saisissez un nom de filtre suivi de deux points (par exemple, «cameras:»).
    • Sélectionnez une valeur parmi les suggestions ou saisissez la vôtre.
    • Utilisez plusieurs filtres en les ajoutant les uns après les autres, en laissant un espace entre eux.
    • Les filtres de date (avant: et après:) utilisent le format {{DateFormat}}.
    • Le filtre de plage horaire utilise le format {{exampleTime}}.
    • Supprimez les filtres en cliquant sur le «x» à côté d'eux.
    ", "step1": "Saisissez un nom de clé de filtre suivi de deux points (par exemple, \"cameras:\").", - "step2": "Sélectionnez une valeur pour la suggestion ou saisissez la vôtre.", + "step2": "Sélectionnez une valeur parmi les suggestions ou saisissez la vôtre.", "step3": "Utilisez plusieurs filtres en les ajoutant les uns après les autres avec un espace entre eux.", "step5": "Le filtre de plage horaire utilise le format {{exampleTime}}.", - "step6": "Supprimez les filtres en cliquant sur le ' x' à côté d'eux.", + "step6": "Supprimez les filtres en cliquant sur le \"x\" à côté d'eux.", "step4": "Filtres de dates (avant : et après :) utilisez le format {{DateFormat}}.", "exampleLabel": "Exemple :" } diff --git a/web/public/locales/fr/views/settings.json b/web/public/locales/fr/views/settings.json index 39fc32934..16fcc3230 100644 --- a/web/public/locales/fr/views/settings.json +++ b/web/public/locales/fr/views/settings.json @@ -4,7 +4,7 @@ "authentication": "Paramètres d'authentification - Frigate", "camera": "Paramètres des caméras - Frigate", "classification": "Paramètres de classification - Frigate", - "motionTuner": "Réglages du mouvement - Frigate", + "motionTuner": "Réglage de la détection de mouvement - Frigate", "general": "Paramètres généraux - Frigate", "masksAndZones": "Éditeur de masques et de zones - Frigate", "object": "Débogage - Frigate", @@ -18,7 +18,7 @@ "ui": "Interface utilisateur", "classification": "Classification", "masksAndZones": "Masques / Zones", - "motionTuner": "Réglages du mouvement", + "motionTuner": "Réglage de la détection de mouvement", "debug": "Débogage", "cameras": "Paramètres des caméras", "users": "Utilisateurs", @@ -28,7 +28,7 @@ "triggers": "Déclencheurs", "roles": "Rôles", "cameraManagement": "Gestion", - "cameraReview": "Revue" + "cameraReview": "Revue d'événements" }, "dialog": { "unsavedChanges": { @@ -49,7 +49,7 @@ "desc": "Basculez automatiquement vers la vue en direct d'une caméra lorsqu'une activité est détectée. La désactivation de cette option limite la mise à jour des images statiques de la caméra sur le tableau de bord en direct à une fois par minute seulement." }, "playAlertVideos": { - "label": "Lire les vidéos d'alertes", + "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." } }, @@ -67,13 +67,13 @@ "title": "Visionneuse d'enregistrements", "defaultPlaybackRate": { "label": "Vitesse de lecture par défaut", - "desc": "Vitesse de lecture par défaut pour la lecture des enregistrements." + "desc": "Vitesse de lecture par défaut pour la lecture des enregistrements" } }, "calendar": { "firstWeekday": { "label": "Premier jour de la semaine", - "desc": "Le jour du début de semaine du calendrier de la revue d'évènements.", + "desc": "Le jour du début de semaine du calendrier de la revue d'événements", "sunday": "Dimanche", "monday": "Lundi" }, @@ -132,7 +132,7 @@ }, "cameras": { "title": "Caméras", - "noCameras": "Aucune caméra disponible", + "noCameras": "Aucune caméra n'est disponible", "desc": "Sélectionnez les caméras pour lesquelles activer les notifications." }, "deviceSpecific": "Paramètres spécifiques de l'appareil", @@ -172,7 +172,7 @@ "supportedDetectors": "Détecteurs pris en charge", "loading": "Chargement des informations du modèle…", "title": "Informations sur le modèle", - "trainDate": "Date d'entrainement", + "trainDate": "Date d'entraînement", "error": "Échec du chargement des informations du modèle", "availableModels": "Modèles disponibles", "dimensions": "Dimensions", @@ -332,7 +332,8 @@ "mustNotBeSameWithCamera": "Le nom de la zone ne doit pas être le même que le nom de la caméra.", "mustNotContainPeriod": "Le nom de la zone ne doit pas contenir de points.", "hasIllegalCharacter": "Le nom de la zone contient des caractères interdits.", - "alreadyExists": "Une zone portant ce nom existe déjà pour cette caméra." + "alreadyExists": "Une zone portant ce nom existe déjà pour cette caméra.", + "mustHaveAtLeastOneLetter": "Le nom de la zone doit comporter au moins une lettre." } }, "distance": { @@ -356,7 +357,7 @@ }, "snapPoints": { "true": "Points d'accrochage", - "false": "Ne cassez pas les points" + "false": "Ne pas aligner les points" } }, "loiteringTime": { @@ -371,7 +372,7 @@ }, "speed": { "error": { - "mustBeGreaterOrEqualTo": "Le seuil de vitesse soit être égal ou supérieur à 0.1." + "mustBeGreaterOrEqualTo": "Le seuil de vitesse doit être égal ou supérieur à 0.1." } } }, @@ -386,11 +387,11 @@ "name": { "title": "Nom", "inputPlaceHolder": "Entrer un nom…", - "tips": "Le nom doit comporter au moins 2 caractères et ne doit pas être le nom d'une caméra ou d'une autre zone." + "tips": "Le nom doit comporter au moins 2 caractères, dont une lettre, et ne doit pas être le nom d'une caméra ou d'une autre zone." }, "loiteringTime": { "desc": "Définit une durée minimale en secondes pendant laquelle l'objet doit rester dans la zone pour qu'elle s'active. Par défaut : 0", - "title": "Temps de latence" + "title": "Temps de maraudage" }, "speedEstimation": { "title": "Estimation de la vitesse", @@ -529,7 +530,7 @@ "title": "Cadres de délimitation", "colors": { "label": "Couleurs du cadre de délimitation d'un objet", - "info": "
  • Au démarrage, différentes couleurs seront attribuées à chaque libellé d'objet
  • Une fine ligne bleu foncé indique que l'objet n'est pas détecté à ce moment précis
  • Une fine ligne grise indique que l'objet est détecté comme étant stationnaire
  • Une ligne épaisse indique que l'objet fait l'objet d'un suivi automatique (lorsqu'il est activé)
  • " + "info": "
  • Au démarrage, différentes couleurs seront attribuées à chaque étiquette d'objet
  • Une fine ligne bleu foncé indique que l'objet n'est pas détecté à ce moment précis
  • Une fine ligne grise indique que l'objet est détecté comme étant stationnaire
  • Une ligne épaisse indique que l'objet fait l'objet d'un suivi automatique (lorsqu'il est activé)
  • " }, "desc": "Afficher les cadres de délimitation autour des objets suivis" }, @@ -569,7 +570,7 @@ "detectorDesc": "Frigate utilise vos détecteurs ({{detectors}}) pour détecter les objets dans le flux vidéo de votre caméra.", "desc": "La vue de débogage affiche en temps réel les objets suivis et leurs statistiques. La liste des objets affiche un résumé différé des objets détectés.", "paths": { - "title": "Chemins", + "title": "Trajets", "desc": "Montrer les points notables du chemin de l'objet suivi", "tips": "

    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.
    Remarque : Ceci ne désactive pas les rediffusions go2rtc." + "title": "Activer / désactiver les caméras", + "desc": "Désactive temporairement une caméra jusqu'au redémarrage de Frigate. La désactivation d'une caméra interrompt complètement le traitement des flux de la caméra par Frigate. La détection, l'enregistrement et le débogage deviennent alors indisponibles.
    Remarque : cela n'affecte pas les rediffusions des flux go2rtc." }, "cameraConfig": { "add": "Ajouter une caméra", "edit": "Modifier la caméra", - "description": "Configurez les paramètres de la caméra, y compris les entrées de flux et les rôles.", + "description": "Configurez les paramètres de la caméra, notamment les flux entrants et les rôles.", "name": "Nom de la caméra", "nameRequired": "Le nom de la caméra est requis", "nameLength": "Le nom de la caméra doit comporter moins de 64 caractères.", @@ -1078,7 +1086,7 @@ "inputsRequired": "Au moins un flux d'entrée est requis" }, "go2rtcStreams": "Flux go2rtc", - "streamUrls": "URLs des flux", + "streamUrls": "URL des flux", "addUrl": "Ajouter une URL", "addGo2rtcStream": "Ajouter un flux go2rtc", "toast": { @@ -1087,39 +1095,39 @@ } }, "cameraReview": { - "title": "Paramètres d'examen de la caméra", + "title": "Paramètres des évènements de la caméra", "object_descriptions": { - "title": "Descriptions d'objets IA génératives", - "desc": "Activez/désactivez temporairement les descriptions d'objets générées par l'IA pour cette caméra. Si elles sont désactivées, les descriptions générées par l'IA ne seront pas demandées pour les objets suivis par cette caméra." + "title": "Descriptions d'objets par l'IA générative", + "desc": "Active ou désactive temporairement les descriptions d'objets générées par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA n'est générée pour les objets suivis sur cette caméra." }, "review_descriptions": { - "title": "Descriptions des évaluations de l'IA générative", - "desc": "Activez/désactivez temporairement les descriptions d'évaluation génératrices par l'IA pour cette caméra. Si elles sont désactivées, les descriptions générées par l'IA ne seront pas demandées pour les éléments d'évaluation de cette caméra." + "title": "Descriptions des évènements par l'IA générative", + "desc": "Active ou désactive temporairement les descriptions par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA ne sera générée pour les événements de cette caméra." }, "review": { - "title": "Revoir", - "desc": "Activez/désactivez temporairement les alertes et les détections pour cette caméra jusqu'au redémarrage de Frigate. Une fois désactivée, aucun nouvel élément d'analyse ne sera généré. ", + "title": "Revue d'évènements", + "desc": "Active ou désactive temporairement les alertes et les détections pour cette caméra jusqu'au redémarrage de Frigate. Lorsque cette option est désactivée, aucun nouvel événement n'est généré. ", "alerts": "Alertes. ", "detections": "Détections. " }, "reviewClassification": { - "title": "Classement des avis", - "desc": "Frigate catégorise les éléments d'évaluation en alertes et détections. Par défaut, tous les objets personne et voiture sont considérés comme des alertes. Vous pouvez affiner la catégorisation de vos éléments d'évaluation en configurant les zones requises.", + "title": "Classification des évènements", + "desc": "Frigate classe les événements en deux catégories : \"Alertes\" et \"Détections\". Par défaut, les objets de type personne et voiture sont considérés comme des \"Alertes\". Vous pouvez affiner cette classification en définissant des zones spécifiques pour chaque objet.", "noDefinedZones": "Aucune zone n'est définie pour cette caméra.", - "objectAlertsTips": "Tous les objets {{alertsLabels}} sur {{cameraName}} seront affichés sous forme d'alertes.", - "zoneObjectAlertsTips": "Tous les objets {{alertsLabels}} détectés dans {{zone}} sur {{cameraName}} seront affichés sous forme d'alertes.", - "objectDetectionsTips": "Tous les objets {{detectionsLabels}} non classés sur {{cameraName}} seront affichés comme détections, quelle que soit la zone dans laquelle ils se trouvent.", + "objectAlertsTips": "Sur la caméra {{cameraName}}, tous les objets {{alertsLabels}} apparaîtront en tant qu'\"Alertes\".", + "zoneObjectAlertsTips": "Sur la caméra {{cameraName}}, tous les objets {{alertsLabels}} détectés dans la zone {{zone}} apparaîtront en tant qu'\"Alertes\".", + "objectDetectionsTips": "Sur la caméra {{cameraName}}, tous les objets {{detectionsLabels}} non catégorisés apparaîtront en tant que \"Détections\", peu importe leur zone.", "zoneObjectDetectionsTips": { - "text": "Tous les objets {{detectionsLabels}} non classés dans {{zone}} sur {{cameraName}} seront affichés comme détections.", - "notSelectDetections": "Tous les objets {{detectionsLabels}} détectés dans {{zone}} sur {{cameraName}} non classés comme alertes seront affichés comme détections, quelle que soit la zone dans laquelle ils se trouvent.", - "regardlessOfZoneObjectDetectionsTips": "Tous les objets {{detectionsLabels}} non classés sur {{cameraName}} seront affichés comme détections, quelle que soit la zone dans laquelle ils se trouvent." + "text": "Sur la caméra {{cameraName}}, tous les objets {{detectionsLabels}} non catégorisés dans la zone {{zone}} apparaîtront en tant que \"Détections\".", + "notSelectDetections": "Sur la caméra {{cameraName}}, tous les objets {{detectionsLabels}} détectés dans la zone {{zone}} qui ne sont pas catégorisés comme \"Alertes\" apparaîtront en tant que \"Détections\", et ce, quelle que soit leur zone.", + "regardlessOfZoneObjectDetectionsTips": "Sur la caméra {{cameraName}}, tous les objets {{detectionsLabels}} non catégorisés apparaîtront en tant que \"Détections\", peu importe leur zone." }, - "unsavedChanges": "Paramètres de classification des avis non enregistrés pour {{camera}}", + "unsavedChanges": "Paramètres de classification des évènements non enregistrés pour {{camera}}", "selectAlertsZones": "Sélectionnez les zones pour les alertes", "selectDetectionsZones": "Sélectionner les zones pour les détections", "limitDetections": "Limiter les détections à des zones spécifiques", "toast": { - "success": "La configuration de la classification a été enregistrée. Redémarrez Frigate pour appliquer les modifications." + "success": "La configuration de la classification des évènements a été enregistrée. Redémarrez Frigate pour appliquer les modifications." } } } diff --git a/web/public/locales/fr/views/system.json b/web/public/locales/fr/views/system.json index cf9c1699e..5f23ef02e 100644 --- a/web/public/locales/fr/views/system.json +++ b/web/public/locales/fr/views/system.json @@ -3,7 +3,7 @@ "storage": "Statistiques de stockage - Frigate", "cameras": "Statistiques des caméras - Frigate", "general": "Statistiques générales - Frigate", - "enrichments": "Statistiques d'enrichissements - Frigate", + "enrichments": "Statistiques d'enrichissement - Frigate", "logs": { "frigate": "Journaux de Frigate - Frigate", "nginx": "Journaux Nginx - Frigate", @@ -19,7 +19,7 @@ "copy": { "label": "Copier dans le presse-papiers", "success": "Journaux copiés vers le presse-papiers", - "error": "Échec du copiage des journaux dans le presse-papiers" + "error": "Échec de la copie des journaux dans le presse-papiers" }, "type": { "label": "Type", @@ -27,7 +27,7 @@ "tag": "Balise", "message": "Message" }, - "tips": "Les logs sont diffusés en continu depuis le serveur", + "tips": "Les journaux sont diffusés en continu depuis le serveur", "toast": { "error": { "fetchingLogsFailed": "Erreur lors de la récupération des logs : {{errorMessage}}", @@ -40,15 +40,15 @@ "detector": { "title": "Détecteurs", "inferenceSpeed": "Vitesse d'inférence du détecteur", - "cpuUsage": "Utilisation processeur du détecteur", - "memoryUsage": "Utilisation mémoire du détecteur", + "cpuUsage": "Utilisation du processeur par le détecteur", + "memoryUsage": "Utilisation de la mémoire par le détecteur", "temperature": "Température du détecteur", "cpuUsageInformation": "Utilisation du processeur pour préparer les données avant et après leur passage dans les modèles de détection. Cette valeur ne mesure pas les calculs d'inférence, même si un GPU ou un autre accélérateur est utilisé." }, "hardwareInfo": { - "title": "Info matériel", - "gpuUsage": "Utilisation carte graphique", - "gpuMemory": "Mémoire carte graphique", + "title": "Informations sur le matériel", + "gpuUsage": "Utilisation du GPU", + "gpuMemory": "Mémoire du GPU", "gpuEncoder": "Encodeur carte graphique", "gpuDecoder": "Décodeur carte graphique", "gpuInfo": { @@ -66,21 +66,21 @@ "driver": "Pilote : {{driver}}" }, "copyInfo": { - "label": "Information de copie du GPU" + "label": "Copier les informations du GPU" }, "toast": { - "success": "Informations GPU copiées dans le presse-papier" + "success": "Informations GPU copiées dans le presse-papiers" }, "closeInfo": { - "label": "Information de fermeture du GPU" + "label": "Fermer les informations du GPU" } }, "npuUsage": "Utilisation NPU", "npuMemory": "Mémoire NPU" }, "otherProcesses": { - "title": "Autres tâches", - "processCpuUsage": "Utilisation processeur des tâches", + "title": "Autres processus", + "processCpuUsage": "Utilisation processeur par les processus", "processMemoryUsage": "Utilisation mémoire des tâches" } }, @@ -106,13 +106,13 @@ "overview": "Vue d'ensemble", "shm": { "title": "Allocation de mémoire partagée SHM", - "warning": "La taille actuelle de la SHM de {{total}} Mo est trop faible. Augmentez la au moins à {{min_shm}} Mo." + "warning": "La taille actuelle de la SHM de {{total}} Mo est trop faible. Augmentez-la au moins à {{min_shm}} Mo." } }, "cameras": { "title": "Caméras", "info": { - "cameraProbeInfo": "{{camera}} Information récupérée depuis la caméra", + "cameraProbeInfo": "Informations de la sonde pour {{camera}}", "fetching": "En cours de récupération des données de la caméra", "stream": "Flux {{idx}}", "fps": "Images par seconde :", @@ -126,7 +126,7 @@ "error": "Erreur : {{error}}", "codec": "Codec :", "video": "Vidéo :", - "aspectRatio": "ratio d'aspect" + "aspectRatio": "rapport d'aspect" }, "framesAndDetections": "Images / Détections", "label": { @@ -160,7 +160,7 @@ "ffmpegHighCpuUsage": "{{camera}} a un taux élevé d'utilisation processeur par FFmpeg ({{ffmpegAvg}}%)", "detectHighCpuUsage": "{{camera}} a un taux élevé d'utilisation processeur ({{detectAvg}}%)", "healthy": "Le système est sain", - "reindexingEmbeddings": "Réindexation des représentations numériques ({{processed}}% complété)", + "reindexingEmbeddings": "Réindexation des embeddings ({{processed}}% complété)", "cameraIsOffline": "{{camera}} est hors ligne", "detectIsSlow": "{{detect}} est lent ({{speed}} ms)", "detectIsVerySlow": "{{detect}} est très lent ({{speed}} ms)", @@ -172,7 +172,7 @@ "embeddings": { "face_embedding_speed": "Vitesse de capture des données complémentaires de visage", "text_embedding_speed": "Vitesse de capture des données complémentaire de texte", - "image_embedding_speed": "Vitesse de capture des données complémentaires à l'image", + "image_embedding_speed": "Vitesse d'embedding d'image", "plate_recognition_speed": "Vitesse de reconnaissance des plaques d'immatriculation", "face_recognition_speed": "Vitesse de reconnaissance faciale", "plate_recognition": "Reconnaissance de plaques d'immatriculation", From be0267ba9c7cd61750315434bafd50964893c35f Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:41:59 +0100 Subject: [PATCH 30/43] Added translation using Weblate (Swedish) Translated using Weblate (Swedish) Currently translated at 100.0% (51 of 51 strings) Translated using Weblate (Swedish) Currently translated at 99.1% (123 of 124 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: Daniel Nylander Co-authored-by: Hosted Weblate Co-authored-by: Kristian Johansson Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sv/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sv/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sv/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sv/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary --- web/public/locales/sv/components/auth.json | 3 ++- web/public/locales/sv/views/classificationModel.json | 1 + web/public/locales/sv/views/events.json | 7 ++++--- web/public/locales/sv/views/explore.json | 3 +++ web/public/locales/sv/views/faceLibrary.json | 6 +++--- 5 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 web/public/locales/sv/views/classificationModel.json diff --git a/web/public/locales/sv/components/auth.json b/web/public/locales/sv/components/auth.json index 8581ffe94..1fcf9092c 100644 --- a/web/public/locales/sv/components/auth.json +++ b/web/public/locales/sv/components/auth.json @@ -10,6 +10,7 @@ "unknownError": "Okänt fel. Kontrollera loggarna.", "webUnknownError": "Okänt fel. Kontrollera konsol loggarna.", "rateLimit": "Överskriden anropsgräns. Försök igen senare." - } + }, + "firstTimeLogin": "Försöker du logga in för första gången? Inloggningsuppgifterna finns angivna i Frigate-loggarna." } } diff --git a/web/public/locales/sv/views/classificationModel.json b/web/public/locales/sv/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/sv/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/sv/views/events.json b/web/public/locales/sv/views/events.json index 5dbdfd8b4..6ba446f38 100644 --- a/web/public/locales/sv/views/events.json +++ b/web/public/locales/sv/views/events.json @@ -40,9 +40,10 @@ "detail": { "noDataFound": "Inga detaljerade data att granska", "aria": "Växla detaljvy", - "trackedObject_one": "spårat objekt", - "trackedObject_other": "spårade objekt", - "noObjectDetailData": "Inga objektdetaljdata tillgängliga." + "trackedObject_one": "objekt", + "trackedObject_other": "objekt", + "noObjectDetailData": "Inga objektdetaljdata tillgängliga.", + "label": "Detalj" }, "objectTrack": { "trackedPoint": "Spårad punkt", diff --git a/web/public/locales/sv/views/explore.json b/web/public/locales/sv/views/explore.json index d4f3db8f9..86c786bca 100644 --- a/web/public/locales/sv/views/explore.json +++ b/web/public/locales/sv/views/explore.json @@ -196,6 +196,9 @@ }, "deleteTrackedObject": { "label": "Ta bort det här spårade objektet" + }, + "showObjectDetails": { + "label": "Visa objektets plats" } }, "dialog": { diff --git a/web/public/locales/sv/views/faceLibrary.json b/web/public/locales/sv/views/faceLibrary.json index 4e52c7d12..ae3330037 100644 --- a/web/public/locales/sv/views/faceLibrary.json +++ b/web/public/locales/sv/views/faceLibrary.json @@ -26,12 +26,12 @@ "createFaceLibrary": { "title": "Skapa samling", "desc": "Skapa ny samling", - "nextSteps": "För att bygga en stark grund:
  • Använd fliken Träna för att välja och träna på bilder för varje upptäckt person.
  • Fokusera på raka bilder för bästa resultat; undvik träningsbilder som fångar ansikten i vinkel.
  • ", + "nextSteps": "För att bygga en stark grund:
  • Använd fliken Senaste Igenkänningar för att välja och träna bilder för varje detekterad person.
  • Fokusera på raka bilder för bästa resultat; undvik att träna bilder som fångar ansikten i en vinkel.
  • ", "new": "Skapa nytt ansikte" }, "train": { - "title": "Träna", - "aria": "Välj träna", + "title": "Senaste Igenkänningar", + "aria": "Välj senaste igenkänningar", "empty": "Det finns inga ny försök till ansiktsigenkänning" }, "uploadFaceImage": { From eab4d410e010678005539e8340f5bcd09bc7aae2 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:00 +0100 Subject: [PATCH 31/43] Translated using Weblate (Persian) Currently translated at 13.7% (12 of 87 strings) Translated using Weblate (Persian) Currently translated at 1.6% (2 of 124 strings) Added translation using Weblate (Persian) Co-authored-by: Amir Hossein Omidi Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fa/ Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore --- .../locales/fa/views/classificationModel.json | 22 +++++++++++++++++++ web/public/locales/fa/views/explore.json | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 web/public/locales/fa/views/classificationModel.json 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": "کاوش کردن - فرایگیت" } From c0a75dd0946652c32920443784a806ec84edc3e8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:01 +0100 Subject: [PATCH 32/43] Added translation using Weblate (Finnish) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/fi/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/fi/views/classificationModel.json 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 @@ +{} From 8138d4a6b1e62a4d7c4d9e26a4971582adc7b4f9 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:02 +0100 Subject: [PATCH 33/43] Added translation using Weblate (Serbian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/sr/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/sr/views/classificationModel.json diff --git a/web/public/locales/sr/views/classificationModel.json b/web/public/locales/sr/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/sr/views/classificationModel.json @@ -0,0 +1 @@ +{} From b051c626c34d9f137ed8b815038abf8b018a036b Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:03 +0100 Subject: [PATCH 34/43] Added translation using Weblate (Korean) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/ko/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/ko/views/classificationModel.json diff --git a/web/public/locales/ko/views/classificationModel.json b/web/public/locales/ko/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/ko/views/classificationModel.json @@ -0,0 +1 @@ +{} From 11123299bc72fa43074b960a79d9ff0d1cd35e72 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:04 +0100 Subject: [PATCH 35/43] Translated using Weblate (Slovak) Currently translated at 65.2% (382 of 585 strings) Translated using Weblate (Slovak) Currently translated at 76.8% (385 of 501 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (87 of 87 strings) Translated using Weblate (Slovak) Currently translated at 62.7% (367 of 585 strings) Translated using Weblate (Slovak) Currently translated at 73.8% (370 of 501 strings) Translated using Weblate (Slovak) Currently translated at 83.9% (73 of 87 strings) Translated using Weblate (Slovak) Currently translated at 96.0% (49 of 51 strings) Added translation using Weblate (Slovak) Translated using Weblate (Slovak) Currently translated at 62.0% (363 of 585 strings) Translated using Weblate (Slovak) Currently translated at 99.1% (123 of 124 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (90 of 90 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (34 of 34 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Slovak) Currently translated at 98.0% (50 of 51 strings) Translated using Weblate (Slovak) Currently translated at 72.8% (365 of 501 strings) Co-authored-by: Hosted Weblate Co-authored-by: Jakub K Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/ Translation: Frigate NVR/audio Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/sk/audio.json | 35 ++++- web/public/locales/sk/components/auth.json | 3 +- .../locales/sk/views/classificationModel.json | 135 ++++++++++++++++++ web/public/locales/sk/views/events.json | 7 +- web/public/locales/sk/views/explore.json | 6 + web/public/locales/sk/views/faceLibrary.json | 6 +- web/public/locales/sk/views/live.json | 4 +- web/public/locales/sk/views/settings.json | 46 +++++- 8 files changed, 228 insertions(+), 14 deletions(-) create mode 100644 web/public/locales/sk/views/classificationModel.json diff --git a/web/public/locales/sk/audio.json b/web/public/locales/sk/audio.json index 498533736..1fc5ea0c4 100644 --- a/web/public/locales/sk/audio.json +++ b/web/public/locales/sk/audio.json @@ -350,5 +350,38 @@ "frying": "Vyprážanie", "microwave_oven": "Mikrovnka", "water_tap": "Vodovodný kohútik", - "bathtub": "Vaňa" + "bathtub": "Vaňa", + "toilet_flush": "Splachovanie toalety", + "electric_toothbrush": "Elektrická zubná kefka", + "vacuum_cleaner": "Vysávač", + "zipper": "Zips", + "keys_jangling": "Klepanie kľúčov", + "coin": "Mince", + "electric_shaver": "Elektrický holiaci strojček", + "typing": "Písanie", + "typewriter": "Písací stroj", + "computer_keyboard": "Počítačový kľúč", + "writing": "Písanie", + "alarm": "Alarm", + "telephone": "Telefón", + "telephone_bell_ringing": "Zvonenie telefónu", + "ringtone": "Vyzváňací tón", + "telephone_dialing": "Telefonické vytáčanie", + "dial_tone": "Vytáčací tón", + "busy_signal": "Zaneprázdnený signál", + "alarm_clock": "Budík", + "siren": "Siréna", + "civil_defense_siren": "Siréna civilnej obrany", + "buzzer": "Bzučiak", + "smoke_detector": "Detektor dymu", + "fire_alarm": "Požiarny Alarm", + "foghorn": "Hmlovka", + "whistle": "Zapískať", + "steam_whistle": "Parná píšťalka", + "mechanisms": "Mechanizmy", + "ratchet": "Račňa", + "tick": "Ťik", + "tick-tock": "Tik-tok", + "gears": "Ozubené kolesá", + "pulleys": "Kladky" } diff --git a/web/public/locales/sk/components/auth.json b/web/public/locales/sk/components/auth.json index a59f7d0a5..5d44c93c7 100644 --- a/web/public/locales/sk/components/auth.json +++ b/web/public/locales/sk/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "Prihlásenie zlyhalo", "unknownError": "Neznáma chyba. Skontrolujte protokoly.", "webUnknownError": "Neznáma chyba. Skontrolujte protokoly konzoly." - } + }, + "firstTimeLogin": "Snažíte sa prihlásiť prvýkrát? Prihlasovacie údaje sú vytlačené v protokoloch Frigate." } } diff --git a/web/public/locales/sk/views/classificationModel.json b/web/public/locales/sk/views/classificationModel.json new file mode 100644 index 000000000..900c1a1ae --- /dev/null +++ b/web/public/locales/sk/views/classificationModel.json @@ -0,0 +1,135 @@ +{ + "documentTitle": "Klasifikačné modely", + "button": { + "deleteClassificationAttempts": "Odstrániť obrázky klasifikácie", + "renameCategory": "Premenovať triedu", + "deleteCategory": "Odstrániť triedu", + "deleteImages": "Odstrániť obrázky", + "trainModel": "Model vlaku" + }, + "toast": { + "success": { + "deletedCategory": "Vymazaná trieda", + "deletedImage": "Vymazané obrázky", + "categorizedImage": "Obrázok bol úspešne klasifikovaný", + "trainedModel": "Úspešne vyškolený model.", + "trainingModel": "Úspešne spustený modelový tréning." + }, + "error": { + "deleteImageFailed": "Nepodarilo sa odstrániť: {{errorMessage}}", + "deleteCategoryFailed": "Nepodarilo sa odstrániť triedu: {{errorMessage}}", + "categorizeFailed": "Nepodarilo sa kategorizovať obrázok: {{errorMessage}}", + "trainingFailed": "Nepodarilo sa spustiť trénovanie modelu: {{errorMessage}}" + } + }, + "deleteCategory": { + "title": "Odstrániť triedu", + "desc": "Naozaj chcete odstrániť triedu {{name}}? Týmto sa natrvalo odstránia všetky súvisiace obrázky a bude potrebné pretrénovať model." + }, + "deleteDatasetImages": { + "title": "Odstrániť obrázky množiny údajov", + "desc": "Naozaj chcete odstrániť {{count}} obrázkov z {{dataset}}? Túto akciu nie je možné vrátiť späť a bude si vyžadovať pretrénovanie modelu." + }, + "deleteTrainImages": { + "title": "Odstrániť obrázky vlakov", + "desc": "Naozaj chcete odstrániť {{count}} obrázkov? Túto akciu nie je možné vrátiť späť." + }, + "renameCategory": { + "title": "Premenovať triedu", + "desc": "Zadajte nový názov pre {{name}}. Budete musieť model pretrénovať, aby sa zmena názvu prejavila." + }, + "description": { + "invalidName": "Neplatné meno. Mená môžu obsahovať iba písmená, čísla, medzery, apostrofy, podčiarkovníky a spojovníky." + }, + "train": { + "title": "Posledné klasifikácie", + "aria": "Vyberte Nedávne Klasifikácie" + }, + "categories": "Triedy", + "createCategory": { + "new": "Vytvorenie novej triedy" + }, + "categorizeImageAs": "Klasifikovať obrázok ako:", + "categorizeImage": "Klasifikovať obrázok", + "noModels": { + "object": { + "title": "Žiadne modely klasifikácie objektov", + "description": "Vytvorte si vlastný model na klasifikáciu detekovaných objektov.", + "buttonText": "Vytvorte objektový model" + }, + "state": { + "title": "Žiadne modely klasifikácie štátov", + "description": "Vytvorte si vlastný model na monitorovanie a klasifikáciu zmien stavu v špecifických oblastiach kamery.", + "buttonText": "Vytvorte model stavu" + } + }, + "wizard": { + "title": "Vytvorte novú klasifikáciu", + "steps": { + "nameAndDefine": "Názov a definícia", + "stateArea": "Štátna oblasť", + "chooseExamples": "Vyberte Príklady" + }, + "step1": { + "description": "Stavové modely monitorujú oblasti pevných kamier a sledujú zmeny (napr. otvorenie/zatvorenie dverí). Objektové modely pridávajú klasifikácie k detekovaným objektom (napr. známe zvieratá, doručovatelia atď.).", + "name": "Meno", + "namePlaceholder": "Zadajte názov modelu...", + "type": "Typ", + "typeState": "štátu", + "typeObject": "Objekt", + "objectLabel": "Označenie objektu", + "objectLabelPlaceholder": "Vyberte typ objektu...", + "classificationType": "Typ klasifikácie", + "classificationTypeTip": "Získajte informácie o typoch klasifikácie", + "classificationTypeDesc": "Podznačky pridávajú k označeniu objektu ďalší text (napr. „Osoba: UPS“). Atribúty sú vyhľadávateľné metadáta uložené samostatne v metadátach objektu.", + "classificationSubLabel": "Podštítky", + "classificationAttribute": "Atribút", + "classes": "Triedy", + "classesTip": "Naučte sa o triedach", + "classesStateDesc": "Definujte rôzne stavy, v ktorých sa môže nachádzať oblasť kamery. Napríklad: „otvorené“ a „zatvorené“ pre garážovú bránu.", + "classesObjectDesc": "Definujte rôzne kategórie, do ktorých sa majú detekované objekty klasifikovať. Napríklad: „doručovateľ/doručovateľka“, „obyvateľ/obyvateľka“, „cudzinec/cudzinec“ pre klasifikáciu osôb.", + "classPlaceholder": "Zadajte názov triedy...", + "errors": { + "nameRequired": "Vyžaduje sa názov modelu", + "nameLength": "Názov modelu musí mať 64 znakov alebo menej", + "nameOnlyNumbers": "Názov modelu nemôže obsahovať iba čísla", + "classRequired": "Vyžaduje sa aspoň 1 kurz", + "classesUnique": "Názvy tried musia byť jedinečné", + "stateRequiresTwoClasses": "Modely štátov vyžadujú aspoň 2 triedy", + "objectLabelRequired": "Vyberte označenie objektu", + "objectTypeRequired": "Vyberte typ klasifikácie" + } + }, + "step2": { + "description": "Vyberte kamery a definujte oblasť, ktorú chcete pre každú kameru monitorovať. Model klasifikuje stav týchto oblastí.", + "cameras": "Kamery", + "selectCamera": "Vyberte kameru", + "noCameras": "Kliknite + na pridanie kamier", + "selectCameraPrompt": "Vyberte kameru zo zoznamu a definujte jej oblasť monitorovania" + }, + "step3": { + "selectImagesPrompt": "Vybrať všetky obrázky s: {{className}}", + "selectImagesDescription": "Kliknite na obrázky a vyberte ich. Po dokončení tejto hodiny kliknite na tlačidlo Pokračovať.", + "generating": { + "title": "Generovanie vzorových obrázkov", + "description": "Frigate načítava reprezentatívne obrázky z vašich nahrávok. Môže to chvíľu trvať..." + }, + "training": { + "title": "Tréningový model", + "description": "Váš model sa trénuje na pozadí. Zatvorte toto dialógové okno a váš model sa spustí hneď po dokončení trénovania." + }, + "retryGenerate": "Opakovať generovanie", + "noImages": "Nevygenerovali sa žiadne vzorové obrázky", + "classifying": "Klasifikácia a tréning...", + "trainingStarted": "Školenie začalo úspešne", + "errors": { + "noCameras": "Nie sú nakonfigurované žiadne kamery", + "noObjectLabel": "Nie je vybratý žiadny štítok objektu", + "generateFailed": "Nepodarilo sa vygenerovať príklady: {{error}}", + "generationFailed": "Generovanie zlyhalo. Skúste to znova.", + "classifyFailed": "Nepodarilo sa klasifikovať obrázky: {{error}}" + }, + "generateSuccess": "Vzorové obrázky boli úspešne vygenerované" + } + } +} diff --git a/web/public/locales/sk/views/events.json b/web/public/locales/sk/views/events.json index ce03226e5..72d25d0b2 100644 --- a/web/public/locales/sk/views/events.json +++ b/web/public/locales/sk/views/events.json @@ -40,9 +40,10 @@ "detail": { "noDataFound": "Žiadne podrobné údaje na kontrolu", "aria": "Prepnúť zobrazenie detailov", - "trackedObject_one": "sledovaný objekt", - "trackedObject_other": "sledované objekty", - "noObjectDetailData": "Nie sú k dispozícii žiadne podrobné údaje o objekte." + "trackedObject_one": "objekt", + "trackedObject_other": "objekty", + "noObjectDetailData": "Nie sú k dispozícii žiadne podrobné údaje o objekte.", + "label": "Detail" }, "objectTrack": { "trackedPoint": "Sledovaný bod", diff --git a/web/public/locales/sk/views/explore.json b/web/public/locales/sk/views/explore.json index afb1f590d..b597c3868 100644 --- a/web/public/locales/sk/views/explore.json +++ b/web/public/locales/sk/views/explore.json @@ -197,6 +197,12 @@ }, "deleteTrackedObject": { "label": "Odstrániť tento sledovaný objekt" + }, + "showObjectDetails": { + "label": "Zobraziť cestu objektu" + }, + "hideObjectDetails": { + "label": "Skryť cestu objektu" } }, "dialog": { diff --git a/web/public/locales/sk/views/faceLibrary.json b/web/public/locales/sk/views/faceLibrary.json index 591ea7d63..7604d0024 100644 --- a/web/public/locales/sk/views/faceLibrary.json +++ b/web/public/locales/sk/views/faceLibrary.json @@ -1,7 +1,7 @@ { "description": { "addFace": "Sprievodca pridáním novej kolekcie do Knižnice tvárí.", - "invalidName": "Neplatný názov. Názov može obsahovať iba písmená, čísla, medzery, apostrofy, podtržníky a pomlčky.", + "invalidName": "Neplatné meno. Mená môžu obsahovať iba písmená, čísla, medzery, apostrofy, podčiarkovníky a spojovníky.", "placeholder": "Zadajte názov pre túto kolekciu" }, "details": { @@ -34,8 +34,8 @@ } }, "train": { - "title": "Trénovať", - "aria": "Vybrať tréning", + "title": "Nedávne uznania", + "aria": "Vyberte posledné rozpoznania", "empty": "Neexistujú žiadne predchádzajúce pokusy o rozpoznávanie tváre" }, "selectItem": "Vyberte {{item}}", diff --git a/web/public/locales/sk/views/live.json b/web/public/locales/sk/views/live.json index 2dae18c32..fcc9df06d 100644 --- a/web/public/locales/sk/views/live.json +++ b/web/public/locales/sk/views/live.json @@ -170,8 +170,8 @@ "exitEdit": "Ukončiť úpravy" }, "noCameras": { - "title": "Nie sú nastavené žiadne kamery", - "description": "Začnite pripojením kamery.", + "title": "Nie sú konfigurované žiadne kamery", + "description": "Začnite tým, že pripojíte kameru do Frigate.", "buttonText": "Pridať kameru" }, "snapshot": { diff --git a/web/public/locales/sk/views/settings.json b/web/public/locales/sk/views/settings.json index ede8752b2..d339aa9ae 100644 --- a/web/public/locales/sk/views/settings.json +++ b/web/public/locales/sk/views/settings.json @@ -454,7 +454,22 @@ "tips": "

    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é." + } + } } } From be7f2685713becea42594cde4312b3b79257e266 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:05 +0100 Subject: [PATCH 36/43] Translated using Weblate (Slovenian) Currently translated at 19.1% (112 of 585 strings) Translated using Weblate (Slovenian) Currently translated at 1.1% (1 of 87 strings) Translated using Weblate (Slovenian) Currently translated at 16.7% (98 of 585 strings) Translated using Weblate (Slovenian) Currently translated at 100.0% (51 of 51 strings) Added translation using Weblate (Slovenian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: tadythefish Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sl/ Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- .../locales/sl/views/classificationModel.json | 5 ++ web/public/locales/sl/views/faceLibrary.json | 11 +++-- web/public/locales/sl/views/settings.json | 48 +++++++++++++++++-- 3 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 web/public/locales/sl/views/classificationModel.json 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:
  • V zavihku Nedavne prepoznave izberi in uporabi slike za učenje vsake zaznane osebe.
  • Za najboljše rezultate se osredotoči na slike, kjer je obraz obrnjen naravnost; izogibaj se slikam, na katerih so obrazi posneti pod kotom.
  • " }, "steps": { "faceName": "Vnesi Ime Obraza", @@ -66,8 +67,8 @@ } }, "train": { - "title": "Vlak", - "aria": "Izberite treniranje", + "title": "Nedavne prepoznave", + "aria": "Izberite nedavne prepoznave", "empty": "Ni nedavnih poskusov prepoznavanja obrazov" }, "selectItem": "Izberi {{item}}", @@ -93,7 +94,7 @@ "selectImage": "Izberite slikovno datoteko." }, "dropActive": "Sliko spustite tukaj…", - "dropInstructions": "Povlecite in spustite sliko sem ali kliknite za izbiro", + "dropInstructions": "Povlecite in spustite ali prilepite sliko sem ali kliknite za izbiro", "maxSize": "Največja velikost: {{size}}MB" }, "nofaces": "Noben obraz ni na voljo", diff --git a/web/public/locales/sl/views/settings.json b/web/public/locales/sl/views/settings.json index 14bdefc28..37859e89e 100644 --- a/web/public/locales/sl/views/settings.json +++ b/web/public/locales/sl/views/settings.json @@ -9,7 +9,9 @@ "general": "Splošne Nastavitve - Frigate", "frigatePlus": "Frigate+ Nastavitve - Frigate", "enrichments": "Nastavitve Obogatitev - Frigate", - "motionTuner": "Nastavitev gibanja - Frigate" + "motionTuner": "Nastavitev gibanja - Frigate", + "cameraManagement": "Upravljaj kamere - Frigate", + "cameraReview": "Nastavitve pregleda kamer – Frigate" }, "menu": { "ui": "Uporabniški vmesnik", @@ -21,7 +23,10 @@ "notifications": "Obvestila", "frigateplus": "Frigate+", "motionTuner": "Nastavitev Gibanja", - "triggers": "Prožilniki" + "triggers": "Prožilniki", + "cameraManagement": "Upravljanje", + "cameraReview": "Pregled", + "roles": "Vloge" }, "masksAndZones": { "zones": { @@ -86,7 +91,7 @@ "calendar": { "title": "Koledar", "firstWeekday": { - "label": "Prvi Delovni Dan", + "label": "Prvi dan v tednu", "desc": "Dan, na katerega se začnejo tedni v koledarju za preglede.", "sunday": "Nedelja", "monday": "Ponedeljek" @@ -203,5 +208,42 @@ "nameInvalid": "Ime kamere mora vsebovati samo črke, številke, podčrtaje ali vezaje", "namePlaceholder": "npr. vhodna_vrata" } + }, + "cameraWizard": { + "title": "Dodaj kamero", + "description": "Sledi spodnjim korakom, da dodaš novo kamero v svojo namestitev Frigate.", + "steps": { + "nameAndConnection": "Ime & Zbirka", + "streamConfiguration": "Konfiguracija pretoka", + "validationAndTesting": "Uverjanje in testiranje" + }, + "save": { + "success": "Kamera {{cameraName}} je bila uspešno shranjena.", + "failure": "Napaka pri shranjevanju {{cameraName}}." + }, + "testResultLabels": { + "resolution": "Resolucija", + "video": "Video", + "audio": "Zvok", + "fps": "FPS" + }, + "commonErrors": { + "noUrl": "Prosimo, vnesite veljaven URL pretoka", + "testFailed": "Preizkus pretoka ni uspel: {{error}}" + }, + "step1": { + "description": "Vnesite podatke vaše kamere in preizkusite povezavo.", + "cameraName": "Ime kamere", + "cameraNamePlaceholder": "npr. sprednja_vrata ali Pregled zadnjega dvorišča", + "host": "Gostitelj/IP naslov", + "port": "Vrata", + "username": "Uporabniško ime", + "usernamePlaceholder": "Opcijsko", + "password": "Geslo", + "passwordPlaceholder": "Opcijsko", + "selectTransport": "Izberi transportni protokol", + "cameraBrand": "Znamka kamere", + "selectBrand": "Izberi znamko kamere za predlogo URL-ja" + } } } From 10838cd3e34594a39a3d48678dbe9de58bfd5f4c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:06 +0100 Subject: [PATCH 37/43] Added translation using Weblate (Urdu) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/ur/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/ur/views/classificationModel.json diff --git a/web/public/locales/ur/views/classificationModel.json b/web/public/locales/ur/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/ur/views/classificationModel.json @@ -0,0 +1 @@ +{} From dfc5a7ab567d791053e0959c9cf9d5a913f0948e Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:07 +0100 Subject: [PATCH 38/43] Added translation using Weblate (Chinese (Traditional Han script)) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 12.1% (71 of 585 strings) Co-authored-by: Hosted Weblate Co-authored-by: Ladybug.H Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hant/ Translation: Frigate NVR/views-settings --- .../locales/zh-Hant/views/settings.json | 45 +++++++++++++++++-- .../zh_Hant/views/classificationModel.json | 1 + 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 web/public/locales/zh_Hant/views/classificationModel.json diff --git a/web/public/locales/zh-Hant/views/settings.json b/web/public/locales/zh-Hant/views/settings.json index 5574bf0f0..90e8c3f63 100644 --- a/web/public/locales/zh-Hant/views/settings.json +++ b/web/public/locales/zh-Hant/views/settings.json @@ -9,7 +9,9 @@ "notifications": "通知設定 - Frigate", "masksAndZones": "遮罩與區域編輯器 - Frigate", "motionTuner": "移動偵測調教器 - Frigate", - "object": "除錯 - Frigate" + "object": "除錯 - Frigate", + "cameraManagement": "管理鏡頭 - Frigate", + "cameraReview": "相機預覽設置 - Frigate" }, "menu": { "ui": "使用者介面", @@ -21,7 +23,9 @@ "users": "使用者", "notifications": "通知", "frigateplus": "Frigate+", - "triggers": "觸發" + "triggers": "觸發", + "cameraManagement": "管理", + "cameraReview": "預覽" }, "dialog": { "unsavedChanges": { @@ -85,6 +89,41 @@ }, "enrichments": { "title": "強化設定", - "unsavedChanges": "尚未儲存的強化設定變更" + "unsavedChanges": "尚未儲存的強化設定變更", + "semanticSearch": { + "modelSize": { + "label": "模型大小", + "small": { + "title": "小" + } + } + }, + "faceRecognition": { + "title": "人臉識別" + } + }, + "cameraWizard": { + "title": "新增相機", + "testResultLabels": { + "resolution": "解析度", + "video": "影像", + "audio": "語音" + }, + "commonErrors": { + "testFailed": "串流測試失敗: {{error}}" + }, + "step1": { + "description": "輸入相機詳細資訊並測試連線。", + "cameraName": "相機名稱", + "cameraNamePlaceholder": "例: 前門 / 後院", + "host": "主機/IP 位置", + "port": "埠", + "username": "用戶名稱", + "usernamePlaceholder": "選填", + "password": "密碼", + "passwordPlaceholder": "選填", + "selectTransport": "選擇協議", + "cameraBrand": "相機品牌" + } } } diff --git a/web/public/locales/zh_Hant/views/classificationModel.json b/web/public/locales/zh_Hant/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/zh_Hant/views/classificationModel.json @@ -0,0 +1 @@ +{} From c5edf3e9fa4def41295d2b639689be0939c3bade Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:09 +0100 Subject: [PATCH 39/43] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (87 of 87 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 97.0% (33 of 34 strings) Added translation using Weblate (Chinese (Simplified Han script)) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (584 of 584 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: GuoQing Liu <842607283@qq.com> Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/zh-CN/components/auth.json | 3 +- web/public/locales/zh-CN/views/events.json | 7 +- web/public/locales/zh-CN/views/explore.json | 6 + .../locales/zh-CN/views/faceLibrary.json | 6 +- web/public/locales/zh-CN/views/settings.json | 13 +- .../zh-Hans/views/classificationModel.json | 135 ++++++++++++++++++ 6 files changed, 160 insertions(+), 10 deletions(-) create mode 100644 web/public/locales/zh-Hans/views/classificationModel.json diff --git a/web/public/locales/zh-CN/components/auth.json b/web/public/locales/zh-CN/components/auth.json index 015fa0ba8..dbfc34994 100644 --- a/web/public/locales/zh-CN/components/auth.json +++ b/web/public/locales/zh-CN/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "登录失败", "unknownError": "未知错误,请检查日志。", "webUnknownError": "未知错误,请检查控制台日志。" - } + }, + "firstTimeLogin": "首次尝试登录?请从 Frigate 日志中查找生成的登录密码等信息。" } } diff --git a/web/public/locales/zh-CN/views/events.json b/web/public/locales/zh-CN/views/events.json index 89f1fade9..a598e68ba 100644 --- a/web/public/locales/zh-CN/views/events.json +++ b/web/public/locales/zh-CN/views/events.json @@ -41,9 +41,10 @@ "detail": { "noDataFound": "没有可供核查的详细数据", "aria": "切换详细视图", - "trackedObject_one": "追踪目标", - "trackedObject_other": "追踪目标", - "noObjectDetailData": "没有目标详细信息。" + "trackedObject_one": "目标或物体", + "trackedObject_other": "目标或物体", + "noObjectDetailData": "没有目标详细信息。", + "label": "详细信息" }, "objectTrack": { "trackedPoint": "追踪点", diff --git a/web/public/locales/zh-CN/views/explore.json b/web/public/locales/zh-CN/views/explore.json index 7e2c46e4d..f2c03175f 100644 --- a/web/public/locales/zh-CN/views/explore.json +++ b/web/public/locales/zh-CN/views/explore.json @@ -194,6 +194,12 @@ "audioTranscription": { "label": "转录", "aria": "请求音频转录" + }, + "showObjectDetails": { + "label": "显示目标轨迹" + }, + "hideObjectDetails": { + "label": "隐藏目标轨迹" } }, "dialog": { diff --git a/web/public/locales/zh-CN/views/faceLibrary.json b/web/public/locales/zh-CN/views/faceLibrary.json index d2420ae25..d43b1c366 100644 --- a/web/public/locales/zh-CN/views/faceLibrary.json +++ b/web/public/locales/zh-CN/views/faceLibrary.json @@ -23,11 +23,11 @@ "title": "创建特征库", "desc": "创建一个新的特征库", "new": "新建人脸", - "nextSteps": "建议按以下步骤建立可靠的特征库:
  • 使用训练选项卡为每个检测到的人员选择并训练图像
  • 优先使用正脸图像以获得最佳效果,尽可能避免使用侧脸图像进行训练
  • " + "nextSteps": "建议按以下步骤建立可靠的特征库:
  • 使用近期识别记录选项卡为每个检测到的人员选择并训练图像
  • 优先使用正脸图像以获得最佳效果,尽可能避免使用侧脸图像进行训练
  • " }, "train": { - "title": "训练", - "aria": "选择训练", + "title": "近期识别记录", + "aria": "选择近期识别记录", "empty": "近期未检测到人脸识别操作" }, "selectItem": "选择 {{item}}", diff --git a/web/public/locales/zh-CN/views/settings.json b/web/public/locales/zh-CN/views/settings.json index e8b496405..3ab98107b 100644 --- a/web/public/locales/zh-CN/views/settings.json +++ b/web/public/locales/zh-CN/views/settings.json @@ -954,11 +954,16 @@ "invalidCharacters": "摄像头名称内有不允许使用的字符", "nameExists": "该摄像头名称已存在", "brands": { - "reolink-rtsp": "不建议使用萤石RTSP协议。建议在摄像头设置中启用HTTP协议,并重新执行摄像头向导。" - } + "reolink-rtsp": "不建议使用萤石 RTSP 协议。建议在摄像头设置中启用 HTTP 协议,并重新运行摄像头添加向导。" + }, + "customUrlRtspRequired": "自定义URL必须以“rtsp://”开头;对于非 RTSP 协议的摄像头流,需手动添加至配置文件。" }, "docs": { "reolink": "https://docs.frigate-cn.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "正在获取摄像头基本数据……", + "fetchingSnapshot": "正在获取摄像头快照……" } }, "step2": { @@ -1037,7 +1042,9 @@ }, "hikvision": { "substreamWarning": "子码流1被锁定为低分辨率。多数海康威视的摄像头支持额外的子码流,但需要在摄像头设置中手动开启。如果可以,建议检查并使用这些子码流。" - } + }, + "resolutionHigh": "使用 {{resolution}} 分辨率可能会导致占用更多的系统资源。", + "resolutionLow": "使用 {{resolution}} 分辨率可能过低,难以检测较小的物体。" } } }, diff --git a/web/public/locales/zh-Hans/views/classificationModel.json b/web/public/locales/zh-Hans/views/classificationModel.json new file mode 100644 index 000000000..1714168fc --- /dev/null +++ b/web/public/locales/zh-Hans/views/classificationModel.json @@ -0,0 +1,135 @@ +{ + "documentTitle": "分类模型", + "button": { + "deleteClassificationAttempts": "删除分类图片", + "renameCategory": "重命名类别", + "deleteCategory": "删除类别", + "deleteImages": "删除图片", + "trainModel": "训练模型" + }, + "toast": { + "success": { + "deletedCategory": "删除类别", + "deletedImage": "删除图片", + "categorizedImage": "成功分类图片", + "trainedModel": "训练模型成功。", + "trainingModel": "已开始训练模型。" + }, + "error": { + "deleteImageFailed": "删除失败:{{errorMessage}}", + "deleteCategoryFailed": "删除类别失败:{{errorMessage}}", + "categorizeFailed": "图片分类失败:{{errorMessage}}", + "trainingFailed": "开始训练模型失败:{{errorMessage}}" + } + }, + "deleteCategory": { + "title": "删除类别", + "desc": "确定要删除类别 {{name}} 吗?此操作将永久删除所有关联的图片,并需要重新训练模型。" + }, + "deleteDatasetImages": { + "title": "删除图片数据集", + "desc": "确定要从 {{dataset}} 中删除 {{count}} 张图片吗?此操作无法撤销,并将需要重新训练模型。" + }, + "deleteTrainImages": { + "title": "删除训练的图片", + "desc": "确定要删除 {{count}} 张图片吗?此操作无法撤销。" + }, + "renameCategory": { + "title": "重命名类别", + "desc": "请输入 {{name}} 的新名称。名称变更后需要重新训练模型。" + }, + "description": { + "invalidName": "名称无效。名称只能包含字母、数字、空格、撇号、下划线和连字符。" + }, + "train": { + "title": "最近分类记录", + "aria": "选择最近分类记录" + }, + "categories": "类别", + "createCategory": { + "new": "创建新类别" + }, + "categorizeImageAs": "图片分类为:", + "categorizeImage": "图片分类", + "noModels": { + "object": { + "title": "未创建目标/物体分类模型", + "description": "创建自定义模型以分类检测到的目标。", + "buttonText": "创建目标/物体模型" + }, + "state": { + "title": "尚未创建状态分类模型", + "description": "创建自定义模型以监控并分类摄像头特定区域的状态变化。", + "buttonText": "创建状态模型" + } + }, + "wizard": { + "title": "创建新分类", + "steps": { + "nameAndDefine": "名称与定义", + "stateArea": "状态区域", + "chooseExamples": "选择范例" + }, + "step1": { + "description": "状态模型用于监控摄像头固定区域的状态变化(例如门是否开启或关闭)。目标/物体模型用于为检测到的目标添加分类标签(例如区分宠物、快递员等)。", + "name": "名称", + "namePlaceholder": "请输入模型名称……", + "type": "类型", + "typeState": "状态", + "typeObject": "目标/物体", + "objectLabel": "目标/物体标签", + "objectLabelPlaceholder": "请选择目标类型……", + "classificationType": "分类方式", + "classificationTypeTip": "了解分类方式", + "classificationTypeDesc": "子标签会为目标标签添加附加文本(例如:“人员:美团”)。属性是可搜索的元数据,独立存储在对象的元信息中。", + "classificationSubLabel": "子标签", + "classificationAttribute": "属性", + "classes": "类别", + "classesTip": "了解类别", + "classesStateDesc": "定义摄像头区域内可能出现的不同状态。例如:车库门的“开启”和“关闭”。", + "classesObjectDesc": "定义用于分类检测目标的不同类别。例如:人员分类中的“快递员”、“居民”、“陌生人”。", + "classPlaceholder": "请输入分类名称……", + "errors": { + "nameRequired": "模型名称为必填项", + "nameLength": "模型名称长度不能超过 64 个字符", + "nameOnlyNumbers": "模型名称不能仅包含数字", + "classRequired": "至少需要一个类别", + "classesUnique": "类别名称必须唯一", + "stateRequiresTwoClasses": "状态模型至少需要两个类别", + "objectLabelRequired": "请选择一个目标标签", + "objectTypeRequired": "请选择一个目标标签" + } + }, + "step2": { + "description": "选择摄像头,并为摄像头定义要监控的区域。模型将对这些区域的状态进行分类。", + "cameras": "摄像头", + "selectCamera": "选择摄像头", + "noCameras": "点击 + 符号添加摄像头", + "selectCameraPrompt": "从列表中选择一个摄像头以定义其检测区域" + }, + "step3": { + "selectImagesPrompt": "选择所有属于 {{className}} 的图片", + "selectImagesDescription": "点击图像进行选择,完成该类别后点击“继续”。", + "generating": { + "title": "正在生成样本图片", + "description": "Frigate 正在从录像中提取代表性图片。这可能需要一些时间……" + }, + "training": { + "title": "正在训练模型", + "description": "系统正在后台训练模型。你可以关闭此对话框,训练完成后模型将自动开始运行。" + }, + "retryGenerate": "重新生成", + "noImages": "未生成样本图像", + "classifying": "正在分类与训练……", + "trainingStarted": "已开始模型训练", + "errors": { + "noCameras": "未配置摄像头", + "noObjectLabel": "未选择目标标签", + "generateFailed": "示例生成失败:{{error}}", + "generationFailed": "生成失败,请重试。", + "classifyFailed": "图片分类失败:{{error}}" + }, + "generateSuccess": "样本图片生成成功" + } + } +} From 0811288997ab409f7e799a83963339994545157b Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:10 +0100 Subject: [PATCH 40/43] Added translation using Weblate (Abkhazian) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/ab/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/ab/views/classificationModel.json 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 @@ +{} From 7ce2cc9bf325c4fdc41d3994b6f2993c341b8a76 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:11 +0100 Subject: [PATCH 41/43] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (10 of 10 strings) Added translation using Weblate (Norwegian Bokmål) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Co-authored-by: OverTheHillsAndFarAway Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/nb_NO/ Translation: Frigate NVR/components-auth --- web/public/locales/nb-NO/components/auth.json | 3 ++- web/public/locales/nb_NO/views/classificationModel.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 web/public/locales/nb_NO/views/classificationModel.json diff --git a/web/public/locales/nb-NO/components/auth.json b/web/public/locales/nb-NO/components/auth.json index caf6a2ca6..c59cd4eb8 100644 --- a/web/public/locales/nb-NO/components/auth.json +++ b/web/public/locales/nb-NO/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "Innlogging mislyktes", "unknownError": "Ukjent feil. Sjekk loggene.", "webUnknownError": "Ukjent feil. Sjekk konsoll-loggene." - } + }, + "firstTimeLogin": "Prøver du å logge inn for første gang? Påloggingsinformasjonen er skrevet ut i Frigate-loggene." } } diff --git a/web/public/locales/nb_NO/views/classificationModel.json b/web/public/locales/nb_NO/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/nb_NO/views/classificationModel.json @@ -0,0 +1 @@ +{} From d28c4f0acfaf5275560d3608d8af34020675eb8a Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:12 +0100 Subject: [PATCH 42/43] Added translation using Weblate (Persian (Old)) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/peo/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/peo/views/classificationModel.json diff --git a/web/public/locales/peo/views/classificationModel.json b/web/public/locales/peo/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/peo/views/classificationModel.json @@ -0,0 +1 @@ +{} From bdf0ae33c13539aa30fa0fe3f97a4f8e345f7c62 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 26 Oct 2025 14:42:13 +0100 Subject: [PATCH 43/43] Added translation using Weblate (Cantonese (Traditional Han script)) Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on --- web/public/locales/yue_Hant/views/classificationModel.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/locales/yue_Hant/views/classificationModel.json diff --git a/web/public/locales/yue_Hant/views/classificationModel.json b/web/public/locales/yue_Hant/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/yue_Hant/views/classificationModel.json @@ -0,0 +1 @@ +{}