From a0366baa9c73fd8a7c0bb3f37908b2251502315c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:41 +0200 Subject: [PATCH 01/21] Translated using Weblate (Turkish) Currently translated at 88.1% (89 of 101 strings) Co-authored-by: Hosted Weblate Co-authored-by: Turhan Munis Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/tr/ Translation: Frigate NVR/components-dialog --- web/public/locales/tr/components/dialog.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/public/locales/tr/components/dialog.json b/web/public/locales/tr/components/dialog.json index 19cf03c621..f2c8face04 100644 --- a/web/public/locales/tr/components/dialog.json +++ b/web/public/locales/tr/components/dialog.json @@ -74,7 +74,8 @@ }, "fromTimeline": { "saveExport": "Dışa Aktarımı Kaydet", - "previewExport": "Dışa Aktarımı Önizle" + "previewExport": "Dışa Aktarımı Önizle", + "useThisRange": "Use This Range" }, "name": { "placeholder": "Dışa Aktarımı Adlandırın" From 28269a512dd2b39a812f2802caa9fdab5e95f67c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:42 +0200 Subject: [PATCH 02/21] Translated using Weblate (Portuguese (Brazil)) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 99.5% (238 of 239 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 80.1% (81 of 101 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (47 of 47 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.6% (499 of 501 strings) Translated using Weblate (Portuguese (Brazil)) Currently translated at 98.3% (234 of 238 strings) Co-authored-by: AmilcarNetto Co-authored-by: Geraldo Fensterseifer Júnior Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/ Translation: Frigate NVR/audio Translation: Frigate NVR/common Translation: Frigate NVR/components-camera Translation: Frigate NVR/components-dialog --- web/public/locales/pt-BR/audio.json | 70 ++++++++++++++++++- web/public/locales/pt-BR/common.json | 19 +++-- .../locales/pt-BR/components/camera.json | 3 +- .../locales/pt-BR/components/dialog.json | 40 ++++++++++- 4 files changed, 125 insertions(+), 7 deletions(-) diff --git a/web/public/locales/pt-BR/audio.json b/web/public/locales/pt-BR/audio.json index b36f099021..552a135650 100644 --- a/web/public/locales/pt-BR/audio.json +++ b/web/public/locales/pt-BR/audio.json @@ -429,5 +429,73 @@ "noise": "Ruído", "distortion": "Distorção", "cacophony": "Cacofonia", - "vibration": "Vibração" + "vibration": "Vibração", + "change_ringing": "Mudar Toque", + "shofar": "Berrante", + "liquid": "Líquido", + "splash": "Respingar", + "slosh": "Respingo", + "squish": "Esmagar", + "drip": "Pingar", + "pour": "Derramar", + "trickle": "Gotejar", + "gush": "Jorrar", + "fill": "Preencher", + "spray": "Borrifar", + "pump": "Bombear", + "stir": "Mexer", + "boiling": "Fervendo", + "sonar": "Sonar", + "arrow": "Flecha", + "whoosh": "Uau", + "thump": "Baque", + "thunk": "Tombo", + "electronic_tuner": "Afinador Eletrônico", + "effects_unit": "Unidade de Efeitos", + "chorus_effect": "Efeito Coro", + "basketball_bounce": "Quique da bola", + "bang": "Batida", + "slap": "Tapa", + "whack": "Bater", + "smash": "Esmagar", + "breaking": "Quebrando", + "bouncing": "Quicando", + "whip": "Chicote", + "flap": "Aba", + "scratch": "Arranhão", + "scrape": "Raspagem", + "rub": "Esfregar", + "roll": "Rolar", + "crushing": "Esmagamento", + "crumpling": "Amarrotar", + "tearing": "Rasgando", + "beep": "Bip", + "ping": "Pingo", + "ding": "Campainha", + "clang": "Estridente", + "squeal": "Guincho", + "creak": "Ranger", + "rustle": "Farfalhar", + "whir": "Zumbir", + "clatter": "Barulho", + "sizzle": "Chiado", + "clicking": "Clicando", + "clickety_clack": "Tique-taque", + "rumble": "Estrondo", + "plop": "Ploft", + "hum": "Zumbir", + "zing": "Zangando", + "boing": "Poin", + "crunch": "Mastigar", + "sine_wave": "Onda Senoidal", + "harmonic": "Harmonica", + "chirp_tone": "Som Agudo", + "pulse": "Pulso", + "inside": "Dentro", + "outside": "Fora", + "reverberation": "Reverberação", + "echo": "Eco", + "mains_hum": "Zumbido Elétrico", + "sidetone": "Retorno de Voz", + "throbbing": "Latejante" } diff --git a/web/public/locales/pt-BR/common.json b/web/public/locales/pt-BR/common.json index f02bdc03e2..b2ebe49c28 100644 --- a/web/public/locales/pt-BR/common.json +++ b/web/public/locales/pt-BR/common.json @@ -158,7 +158,9 @@ "resetToDefault": "Redefinir para o Padrão", "saveAll": "Salvar Tudo", "savingAll": "Salvando Tudo…", - "undoAll": "Desfazer Tudo" + "undoAll": "Desfazer Tudo", + "applying": "Aplicando…", + "retry": "Tente novamente" }, "menu": { "system": "Sistema", @@ -207,7 +209,8 @@ "gl": "Galego (Galego)", "id": "Bahasa Indonesia (Indonésio)", "ur": "اردو (Urdu)", - "hr": "Hrvatski (Croata)" + "hr": "Hrvatski (Croata)", + "bs": "Bosanski (Bósnio)" }, "systemLogs": "Logs de sistema", "settings": "Configurações", @@ -263,7 +266,9 @@ }, "classification": "Classificação", "chat": "Chat", - "profiles": "Perfis" + "profiles": "Perfis", + "actions": "Ações", + "features": "Funcionalidades" }, "toast": { "copyUrlToClipboard": "URL copiada para a área de transferência.", @@ -272,7 +277,8 @@ "error": { "title": "Falha ao salvar as alterações de configuração: {{errorMessage}}", "noMessage": "Falha ao salvar as alterações de configuração" - } + }, + "success": "Alterações salvas com sucesso." } }, "role": { @@ -315,5 +321,10 @@ "field": { "optional": "Opcional", "internalID": "O ID interno que o Frigate usa na configuração e banco de dados" + }, + "no_items": "Sem itens", + "validation_errors": "Erros de validação", + "credentialField": { + "savedPlaceholder": "Salvo - deixar em branco para manter a atual" } } diff --git a/web/public/locales/pt-BR/components/camera.json b/web/public/locales/pt-BR/components/camera.json index 03ee52b587..f82636861d 100644 --- a/web/public/locales/pt-BR/components/camera.json +++ b/web/public/locales/pt-BR/components/camera.json @@ -82,6 +82,7 @@ "motion": "Movimento", "regions": "Regiões", "boundingBox": "Caixa Delimitadora", - "timestamp": "Timestamp" + "timestamp": "Timestamp", + "paths": "Caminhos" } } diff --git a/web/public/locales/pt-BR/components/dialog.json b/web/public/locales/pt-BR/components/dialog.json index 5ce4c631bd..788fe118d7 100644 --- a/web/public/locales/pt-BR/components/dialog.json +++ b/web/public/locales/pt-BR/components/dialog.json @@ -68,7 +68,45 @@ }, "case": { "label": "Caso", - "placeholder": "Selecione um caso" + "placeholder": "Selecione um caso", + "newCaseOption": "Criar novo caso de uso", + "newCaseNamePlaceholder": "Novo caso de uso", + "newCaseDescriptionPlaceholder": "Descrição do caso de uso", + "nonAdminHelp": "Um novo caso de uso será criado para estas exportações." + }, + "queueing": "Exportação na fila...", + "tabs": { + "export": "Câmera única", + "multiCamera": "Multi-Câmera" + }, + "multiCamera": { + "timeRange": "Intervalo de tempo", + "selectFromTimeline": "Selecione do intervale de tempo", + "cameraSelection": "Câmeras", + "cameraSelectionHelp": "Câmeras com objetos localizados neste intervalo de tempo estão pré-selecionados", + "checkingActivity": "Verificando se a câmera está ativa...", + "noCameras": "Sem câmeras disponíveis", + "detectionCount_one": "Objeto localizado", + "detectionCount_many": "{{count}} objetos localizados", + "detectionCount_other": "{{count}} objetos localizados", + "nameLabel": "Nome do arquivo exportado", + "namePlaceholder": "Padrão de nome para exportação", + "queueingButton": "Exportações na fila...", + "exportButton_one": "Exportar câmera", + "exportButton_many": "Exportar {{count}} câmeras", + "exportButton_other": "Exportar {{count}} câmeras" + }, + "multi": { + "title_one": "Exportar análise", + "title_many": "Exportar {{count}} análises", + "title_other": "Exportar {{count}} análises", + "description": "Exportar cada análise selecionada. Todas as exportações serão agrupadas em um único caso.", + "descriptionNoCase": "Exportar cada análise selecionada.", + "caseNamePlaceholder": "Exportar análise - {{date}}", + "exportButton_one": "Exportar análise", + "exportButton_many": "Exportar {{count}} análises", + "exportButton_other": "Exportar {{count}} análises", + "exportingButton": "Exportando..." } }, "streaming": { From 605adb06778df202cc4fd2ebe500c428a0f65a4a Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:43 +0200 Subject: [PATCH 03/21] Translated using Weblate (German) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (German) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (German) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (German) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (German) Currently translated at 100.0% (473 of 473 strings) Translated using Weblate (German) Currently translated at 99.5% (1178 of 1183 strings) Co-authored-by: Hosted Weblate Co-authored-by: Sebastian Sie Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/de/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/de/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/de/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/de/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/de/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/de/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-settings --- web/public/locales/de/common.json | 5 +- web/public/locales/de/config/cameras.json | 2 +- web/public/locales/de/config/global.json | 37 +++++++- web/public/locales/de/config/validation.json | 3 + web/public/locales/de/views/chat.json | 8 ++ web/public/locales/de/views/settings.json | 94 +++++++++++++++++--- 6 files changed, 136 insertions(+), 13 deletions(-) diff --git a/web/public/locales/de/common.json b/web/public/locales/de/common.json index c1ed6020b8..5d5f92270f 100644 --- a/web/public/locales/de/common.json +++ b/web/public/locales/de/common.json @@ -326,5 +326,8 @@ "separatorWithSpace": ", " }, "no_items": "Keine Artikel", - "validation_errors": "Validierungsfehler" + "validation_errors": "Validierungsfehler", + "credentialField": { + "savedPlaceholder": "Gespeichert – leer lassen, um den aktuellen Stand beizubehalten" + } } diff --git a/web/public/locales/de/config/cameras.json b/web/public/locales/de/config/cameras.json index 126295932d..6f42be4c62 100644 --- a/web/public/locales/de/config/cameras.json +++ b/web/public/locales/de/config/cameras.json @@ -9,7 +9,7 @@ "description": "Aktiviert" }, "audio": { - "label": "Audioerkennung", + "label": "Audioereignisse", "description": "Einstellungen für audiobasierte Ereigniserkennung für diese Kamera.", "enabled": { "label": "Aktivieren der Audioerkennung", diff --git a/web/public/locales/de/config/global.json b/web/public/locales/de/config/global.json index fb319cdecf..b2efcceaee 100644 --- a/web/public/locales/de/config/global.json +++ b/web/public/locales/de/config/global.json @@ -8,7 +8,7 @@ "description": "Wenn aktiviert, startet Frigate im abgesicherten Modus mit reduzierten Features für die Fehlersuche." }, "audio": { - "label": "Audioerkennung", + "label": "Audioereignisse", "enabled": { "label": "Aktivieren der Audioerkennung", "description": "Aktivieren oder deaktivieren Sie die Erkennung von Audioereignissen für alle Kameras; diese Einstellung kann für jede Kamera individuell überschrieben werden." @@ -1279,6 +1279,41 @@ }, "raw_mask": { "label": "Rohmaske" + }, + "filters_attribute": { + "label": "Attributfilter", + "description": "Auf erkannte Attribute angewendete Filter zur Reduzierung von Fehlalarmen (Fläche, Verhältnis, Konfidenz).", + "min_area": { + "label": "Mindestfläche des Attributs", + "description": "Für dieses Attribut erforderliche Mindestfläche des Begrenzungsrahmens (in Pixeln oder Prozent). Kann als Pixelwert (Ganzzahl) oder als Prozentwert (Gleitkommawert zwischen 0,000001 und 0,99) angegeben werden." + }, + "max_area": { + "label": "Maximale Attributfläche", + "description": "Maximal zulässige Fläche des Begrenzungsrahmens (in Pixeln oder Prozent) für dieses Attribut. Kann als Pixelwert (Ganzzahl) oder als Prozentwert (Gleitkommawert zwischen 0,000001 und 0,99) angegeben werden." + }, + "min_ratio": { + "label": "Mindestseitenverhältnis", + "description": "Erforderliches Mindestverhältnis von Breite zu Höhe, damit die Begrenzungsbox die Anforderungen erfüllt." + }, + "max_ratio": { + "label": "Maximales Seitenverhältnis", + "description": "Maximal zulässiges Verhältnis von Breite zu Höhe für die Begrenzungsbox, damit diese die Anforderungen erfüllt." + }, + "threshold": { + "label": "Konfidenzschwelle", + "description": "Durchschnittlicher Schwellenwert für die Erkennungssicherheit, der erforderlich ist, damit das Merkmal als echtes Positiv gewertet wird." + }, + "min_score": { + "label": "Mindestvertrauen", + "description": "Mindestwert für die Erkennungssicherheit eines einzelnen Bildes, der erforderlich ist, um dieses Attribut seinem übergeordneten Objekt zuzuordnen." + }, + "mask": { + "label": "Filtermaske", + "description": "Polygonkoordinaten, die festlegen, wo dieser Filter innerhalb des Bildausschnitts angewendet wird." + }, + "raw_mask": { + "label": "Rohmaske" + } } }, "record": { diff --git a/web/public/locales/de/config/validation.json b/web/public/locales/de/config/validation.json index 2bdc76da33..db40fc022c 100644 --- a/web/public/locales/de/config/validation.json +++ b/web/public/locales/de/config/validation.json @@ -28,5 +28,8 @@ "detectRequired": "Es muss mindestens ein input stream die Rolle 'erkennen' tragen.", "hwaccelDetectOnly": "Nur der input-stream mit der Rolle 'erkennen' kann Hardwarebeschleunigungs Argumente definieren." } + }, + "detect": { + "dimensionMustBeEven": "Es muss eine gerade Zahl sein." } } diff --git a/web/public/locales/de/views/chat.json b/web/public/locales/de/views/chat.json index 7c66676013..9f4dcb7f2d 100644 --- a/web/public/locales/de/views/chat.json +++ b/web/public/locales/de/views/chat.json @@ -60,5 +60,13 @@ "stats": { "context": "{{tokens}} tokens", "tokens_per_second": "{{rate}} t/s" + }, + "reasoning": { + "active": "Begründung…", + "show": "Begründung anzeigen", + "hide": "Begründung ausblenden" + }, + "thinking": { + "toggle": "Umschalten" } } diff --git a/web/public/locales/de/views/settings.json b/web/public/locales/de/views/settings.json index 5c4028eadf..040a6ea4e4 100644 --- a/web/public/locales/de/views/settings.json +++ b/web/public/locales/de/views/settings.json @@ -16,7 +16,8 @@ "globalConfig": "Grundeinstellungen - Frigate", "cameraConfig": "Kameraeinstellungen - Frigate", "maintenance": "Wartung - Frigate", - "profiles": "Profile - Frigate" + "profiles": "Profile - Frigate", + "detectorsAndModel": "Sensoren und Modell – Frigate" }, "menu": { "ui": "Benutzeroberfläche", @@ -92,7 +93,8 @@ "uiSettings": "Benutzeroberfläche Einstellung", "profiles": "Profile", "systemGo2rtcStreams": "go2rtc-streams", - "maintenance": "Wartung" + "maintenance": "Wartung", + "systemDetectorsAndModel": "Detektoren und Modell" }, "dialog": { "unsavedChanges": { @@ -825,7 +827,8 @@ "currentModel": "Aktuelles Modell", "otherModels": "Anderes Modell", "configuration": "Konfiguration" - } + }, + "changeInDetectorsAndModel": "Modell wechseln" }, "enrichments": { "birdClassification": { @@ -1365,6 +1368,19 @@ "title": "Anzeigenamen bearbeiten", "description": "Legen Sie den Anzeigenamen fest, der für diese Kamera in der gesamten Benutzeroberfläche von „Frigate“ angezeigt wird. Lassen Sie das Feld leer, um die Kamera-ID zu verwenden.", "rename": "Umbenennen" + }, + "reorderHandle": "Zum Neuanordnen ziehen", + "saving": "Speichern…", + "saved": "gespeichert", + "details": { + "edit": "Kameradaten bearbeiten", + "title": "Kameradaten bearbeiten", + "description": "Aktualisieren Sie den Anzeigenamen und die externe URL, die für diese Kamera in der gesamten Frigate-Benutzeroberfläche verwendet werden.", + "friendlyNameLabel": "Display Name", + "friendlyNameHelp": "Der in der Benutzeroberfläche von „Frigate“ für diese Kamera angezeigte Spitzname. Lassen Sie das Feld leer, um die Kamera-ID zu verwenden.", + "webuiUrlLabel": "URL der Web-Benutzeroberfläche", + "webuiUrlHelp": "URL, um die Web-Benutzeroberfläche der Kamera direkt aus der Debug-Ansicht aufzurufen. Lassen Sie das Feld leer, um den Link zu deaktivieren.", + "webuiUrlInvalid": "Es muss sich um eine gültige URL handeln (z. B. https://example.com)." } }, "cameraConfig": { @@ -1417,8 +1433,8 @@ "disabled": "Deaktiviert" }, "cameraType": { - "title": "Kamerytyp", - "label": "Kameratyp", + "title": "Kamera Art", + "label": "Kamera Art", "description": "Legen Sie den Kameratyp für jede Kamera fest. Spezielle LPR-Kameras sind Kameras mit leistungsstarkem optischen Zoom, um Kennzeichen von weit entfernten Fahrzeugen zu erfassen. Für die meisten Kameras sollte der normale Kameratyp verwendet werden, es sei denn, die Kamera ist speziell für LPR vorgesehen und verfügt über einen stark fokussierten Blickwinkel auf die Kennzeichen.", "normal": "Normal", "dedicatedLpr": "Spezielles LPR-System", @@ -1775,7 +1791,15 @@ "genaiModel": { "placeholder": "Modell auswählen…", "search": "Modell suchen…", - "noModels": "Keine Modelle verfügbar" + "noModels": "Keine Modelle verfügbar", + "available": "Verfügbare Modelle", + "useCustom": "Verwende „{{value}}“", + "refresh": "Modelle aktualisieren", + "probeFailed": "Das Abrufen der Modelle ist fehlgeschlagen", + "fetchedModels": "Modellliste erfolgreich abgerufen" + }, + "semanticSearchModelSize": { + "notApplicable": "Gilt nicht für GenAI-Anbieter" } }, "globalConfig": { @@ -1809,7 +1833,9 @@ "saveAllSuccess_other": "Alle {{count}} Abschnitte wurden erfolgreich gespeichert.", "saveAllPartial_one": "{{successCount}} von {{totalCount}} Abschnitt wurden gespeichert. {{failCount}} sind fehlgeschlagen.", "saveAllPartial_other": "{{successCount}} von {{totalCount}} Abschnitten wurden gespeichert. {{failCount}} sind fehlgeschlagen.", - "saveAllFailure": "Es konnten nicht alle Abschnitte gespeichert werden." + "saveAllFailure": "Es konnten nicht alle Abschnitte gespeichert werden.", + "saveAllSuccessRestartRequired_one": "Der Abschnitt {{count}} wurde erfolgreich gespeichert. Starte Frigate neu, um die Änderungen zu übernehmen.", + "saveAllSuccessRestartRequired_other": "Alle {{count}} Abschnitte wurden erfolgreich gespeichert. Starte Frigate neu, um die Änderungen zu übernehmen." }, "profiles": { "title": "Profile", @@ -1896,8 +1922,17 @@ "audioMp3": "Transcode zu MP3", "audioExclude": "Ausschließen", "hardwareNone": "Keine Hardwarebeschleunigung", - "hardwareAuto": "Automatische Hardwarebeschleunigung" - } + "hardwareAuto": "Automatische Hardwarebeschleunigung", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "Videocodec hinzufügen", + "addAudioCodec": "Audio-Codec hinzufügen", + "removeCodec": "Codec entfernen" + }, + "streamNumber": "Stream {{index}}" }, "onvif": { "profileAuto": "Auto", @@ -1925,7 +1960,9 @@ }, "detect": { "fpsGreaterThanFive": "Es wird nicht empfohlen, den Wert für die FPS-Erkennung auf mehr als 5 zu setzen. Höhere Werte können zu Leistungseinbußen führen und bieten keinerlei Vorteile.", - "disabled": "Die Objekterkennung ist deaktiviert. Momentaufnahmen, Überprüfungselemente und Erweiterungsfunktionen wie Gesichtserkennung, Kennzeichenerkennung und generative KI funktionieren nicht." + "disabled": "Die Objekterkennung ist deaktiviert. Momentaufnahmen, Überprüfungselemente und Erweiterungsfunktionen wie Gesichtserkennung, Kennzeichenerkennung und generative KI funktionieren nicht.", + "resolutionShouldBeMultipleOfFour": "Um optimale Ergebnisse zu erzielen, sollten Breite und Höhe ein Vielfaches von 4 sein. Andere gerade Werte können zu visuellen Artefakten oder leichten Verzerrungen im Erkennungsstrom führen.", + "aspectRatioMismatch": "Die von Ihnen eingegebene Breite und Höhe stimmen nicht mit dem Seitenverhältnis Ihrer aktuell erkannten Auflösung überein. Dies kann zu einem gestreckten oder verzerrten Bild führen." }, "faceRecognition": { "globalDisabled": "Die Gesichtserkennungserweiterung muss aktiviert sein, damit die Gesichtserkennungsfunktionen bei dieser Kamera funktionieren.", @@ -1962,6 +1999,13 @@ "objects": "Objekte", "motion": "Bewegung", "continuous": "Fortlaufend" + }, + "cameraOrder": { + "label": "Kamerabestellung", + "description": "Ziehe die Kameras per Drag & Drop, um ihre Reihenfolge im Birdseye-Layout festzulegen.", + "reorderHandle": "Zum Neuanordnen ziehen", + "saving": "Wird gespeichert…", + "saved": "gespeichert" } }, "retainMode": { @@ -2011,5 +2055,35 @@ "modelSize": { "small": "klein", "large": "groß" + }, + "menuDot": { + "overrideGlobal": "Dieser Abschnitt überschreibt die globale Konfiguration", + "overrideProfile": "Dieser Abschnitt wird durch das Profil {{profile}} überschrieben", + "unsaved": "Dieser Abschnitt enthält ungespeicherte Änderungen" + }, + "detectorsAndModel": { + "title": "Detektoren und Modell", + "description": "Konfigurieren Sie das Detektor-Backend, das die Objekterkennung ausführt, sowie das dafür verwendete Modell. Änderungen werden gemeinsam gespeichert, sodass Detektor und Modell synchron bleiben.", + "cardTitles": { + "detector": "Detektor-Hardware", + "model": "Erkennungsmodell" + }, + "tabs": { + "plus": "Frigate+", + "custom": "Benutzerdefiniertes Modell" + }, + "mismatch": { + "warning": "Das aktuelle Frigate+-Modell „{{model}}“ erfordert den {{required}}-Detektor. Wählen Sie unten ein kompatibles Modell aus oder wechseln Sie vor dem Speichern zu „Benutzerdefiniertes Modell“." + }, + "plusModel": { + "requiresDetector": "Voraussetzung: {{detector}}", + "noModelSelected": "Wählen Sie ein Modell der Frigate+ aus" + }, + "toast": { + "saveSuccess": "Detektoren und Modelleinstellungen wurden gespeichert. Starten Sie Frigate neu, um die Änderungen zu übernehmen.", + "saveError": "Das Speichern der Detektor- und Modelleinstellungen ist fehlgeschlagen" + }, + "unsavedChanges": "Nicht gespeicherte Änderungen an Detektor und Modell", + "restartRequired": "Neustart erforderlich (Detektor oder Modell geändert)" } } From 2ea1d7f3b07c31e1f1d880ad8a60fc3dc51ce448 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:44 +0200 Subject: [PATCH 04/21] Translated using Weblate (Estonian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 35.0% (21 of 60 strings) Translated using Weblate (Estonian) Currently translated at 2.5% (12 of 473 strings) Translated using Weblate (Estonian) Currently translated at 13.9% (18 of 129 strings) Translated using Weblate (Estonian) Currently translated at 41.3% (60 of 145 strings) Translated using Weblate (Estonian) Currently translated at 18.5% (234 of 1263 strings) Translated using Weblate (Estonian) Currently translated at 1.8% (15 of 811 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (49 of 49 strings) Translated using Weblate (Estonian) Currently translated at 14.8% (8 of 54 strings) Translated using Weblate (Estonian) Currently translated at 11.4% (20 of 175 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Estonian) Currently translated at 26.6% (12 of 45 strings) Translated using Weblate (Estonian) Currently translated at 3.3% (2 of 59 strings) Translated using Weblate (Estonian) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Estonian) Currently translated at 1.6% (8 of 473 strings) Translated using Weblate (Estonian) Currently translated at 0.3% (3 of 811 strings) Co-authored-by: Hosted Weblate Co-authored-by: Priit Jõerüüt Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/et/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/et/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-motionSearch Translation: Frigate NVR/views-replay Translation: Frigate NVR/views-search Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/et/common.json | 8 +- web/public/locales/et/components/player.json | 3 +- web/public/locales/et/config/cameras.json | 17 ++++ web/public/locales/et/config/global.json | 46 ++++++++++ web/public/locales/et/config/validation.json | 3 + web/public/locales/et/views/chat.json | 3 +- .../locales/et/views/classificationModel.json | 2 +- web/public/locales/et/views/explore.json | 31 ++++++- web/public/locales/et/views/faceLibrary.json | 8 +- web/public/locales/et/views/live.json | 7 +- web/public/locales/et/views/motionSearch.json | 5 +- web/public/locales/et/views/replay.json | 3 +- web/public/locales/et/views/search.json | 39 ++++++++- web/public/locales/et/views/settings.json | 85 ++++++++++++++++++- web/public/locales/et/views/system.json | 25 +++++- 15 files changed, 261 insertions(+), 24 deletions(-) diff --git a/web/public/locales/et/common.json b/web/public/locales/et/common.json index 3a6a82008f..512eb6ca88 100644 --- a/web/public/locales/et/common.json +++ b/web/public/locales/et/common.json @@ -141,7 +141,8 @@ "id": "Bahasa Indonesia (indoneesia keel)", "ur": "اردو (urdu keel)", "hr": "Hrvatski (horvaadi keel)", - "bs": "Bosanski (bosnia keel)" + "bs": "Bosanski (bosnia keel)", + "zhHant": "繁體中文 (hiina keel traditsiooniliste hieroglüüfidega)" }, "system": "Süsteem", "systemMetrics": "Süsteemi meetrika", @@ -316,5 +317,8 @@ "pixels": "{{area}} px" }, "no_items": "Objekte pole", - "validation_errors": "Valideerimise vead" + "validation_errors": "Valideerimise vead", + "credentialField": { + "savedPlaceholder": "Salvestatud - senise kasutamiseks jäta tühjaks" + } } diff --git a/web/public/locales/et/components/player.json b/web/public/locales/et/components/player.json index bbf77830d8..7553e3c6a1 100644 --- a/web/public/locales/et/components/player.json +++ b/web/public/locales/et/components/player.json @@ -48,5 +48,6 @@ "error": { "submitFrigatePlusFailed": "Kaadri saatmine Frigate+ teenusesse ei õnnestunud" } - } + }, + "cameraOff": "Kaamera on lülitatud välja" } diff --git a/web/public/locales/et/config/cameras.json b/web/public/locales/et/config/cameras.json index 6c2bc5811d..157daddb4c 100644 --- a/web/public/locales/et/config/cameras.json +++ b/web/public/locales/et/config/cameras.json @@ -18,5 +18,22 @@ "mode": { "label": "Jälgimisrežiim" } + }, + "label": "Kaameraseadistus", + "semantic_search": { + "triggers": { + "threshold": { + "description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks." + } + } + }, + "lpr": { + "label": "Sõidukite numbrimärkide tuvastus", + "description": "Sõidukite numbrimärkide tuvastuse seadistus sisaldab tuvastuse lävendeid, vormindust ja teadaolevaid numbrimärke." + }, + "review": { + "genai": { + "description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks." + } } } diff --git a/web/public/locales/et/config/global.json b/web/public/locales/et/config/global.json index ab44041b5c..adb9777008 100644 --- a/web/public/locales/et/config/global.json +++ b/web/public/locales/et/config/global.json @@ -6,5 +6,51 @@ "mode": { "label": "Jälgimisrežiim" } + }, + "version": { + "label": "Praegune seadistuse versioon", + "description": "Aktiivse seadistuse numbriline või tekstiline versioon, mis aitab tuvastada vormingumuudatusi." + }, + "classification": { + "bird": { + "threshold": { + "label": "Minimaalne punktiskoor", + "description": "Objekti määratlemiseks linnina vajalik mlassifitseerimise minimaalne punktiskoor." + } + }, + "custom": { + "threshold": { + "label": "Punktiskoori lävend", + "description": "Punktiskoori lävend, mida kasutatakse klassifitseerimise oleku muutmiseks." + } + } + }, + "semantic_search": { + "triggers": { + "threshold": { + "description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks." + } + } + }, + "face_recognition": { + "unknown_score": { + "label": "Tundmatu punktiskoori lävend" + } + }, + "lpr": { + "label": "Sõidukite numbrimärkide tuvastus", + "description": "Sõidukite numbrimärkide tuvastuse seadistus sisaldab tuvastuse lävendeid, vormindust ja teadaolevaid numbrimärke.", + "enabled": { + "description": "Lülita sõidukite numbrimärkide tuvastus kõikide kaamerate jaoks sisse; seda saad kaamerakohaselt ka sürjutada." + } + }, + "genai": { + "label": "Generatiivse tehisaru seadistus", + "description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks." + }, + "review": { + "genai": { + "description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks." + } } } diff --git a/web/public/locales/et/config/validation.json b/web/public/locales/et/config/validation.json index ce014359a8..c9eb465ed5 100644 --- a/web/public/locales/et/config/validation.json +++ b/web/public/locales/et/config/validation.json @@ -28,5 +28,8 @@ "detectRequired": "„Tuvasta“ rollile pead määrama vähemalt ühe sisendvoo.", "hwaccelDetectOnly": "Vaid „Tuvasta“ rolliga sisendvoog võib määratleda raudvaralise kiirenduse argumente." } + }, + "detect": { + "dimensionMustBeEven": "Peab olema paarisarv." } } diff --git a/web/public/locales/et/views/chat.json b/web/public/locales/et/views/chat.json index cf68fe1e85..ca3f7f6e4d 100644 --- a/web/public/locales/et/views/chat.json +++ b/web/public/locales/et/views/chat.json @@ -5,5 +5,6 @@ "placeholder": "Küsi mida iganes…", "error": "Midagi läks valesti. Palun proovi uuesti.", "processing": "Töötlen…", - "toolsUsed": "Kasutatud: {{tools}}" + "toolsUsed": "Kasutatud: {{tools}}", + "similarity_score": "Sarnasus" } diff --git a/web/public/locales/et/views/classificationModel.json b/web/public/locales/et/views/classificationModel.json index 93db04cba1..36a4ef618c 100644 --- a/web/public/locales/et/views/classificationModel.json +++ b/web/public/locales/et/views/classificationModel.json @@ -7,7 +7,7 @@ }, "documentTitle": "Klassifitseerimise mudelid - Frigate", "details": { - "scoreInfo": "Skoor näitab selle objekti kõigi tuvastuste keskmist klassifitseerimise usaldusväärsust.", + "scoreInfo": "Punktiskoor näitab selle objekti kõigi tuvastuste keskmist klassifitseerimise usaldusväärsust.", "none": "Puudub", "unknown": "Pole teada" }, diff --git a/web/public/locales/et/views/explore.json b/web/public/locales/et/views/explore.json index b3bdbef570..dee52f6e20 100644 --- a/web/public/locales/et/views/explore.json +++ b/web/public/locales/et/views/explore.json @@ -35,7 +35,9 @@ "zones": "Tsoonid", "ratio": "Suhtarv", "area": "Ala", - "score": "Punktiskoor" + "score": "Punktiskoor", + "computedScore": "Arvutatud punktiskoor", + "topScore": "Suuremad punktiskoorid" }, "external": "{{label}} on tuvastatud", "heard": "{{label}} on kuuldud", @@ -79,13 +81,34 @@ "mismatch_other": "Tuvastasin {{count}} võõrast objekti ja need on lisatud ülevaatamiseks. Need objektid kas ei ole piisavad häire või tuvastamise jaoks, aga ka võivad juba olla eemaldatud või kustutatud." }, "title": "Vaata objekti üksikasju", - "desc": "Vaata objekti üksikasju" + "desc": "Vaata objekti üksikasju", + "toast": { + "success": { + "updatedLPR": "Sõiduki numbrimärgi uuendamine õnnestus." + }, + "error": { + "updatedLPRFailed": "Sõiduki numbrimärgi uuendamine ei õnnestunud: {{errorMessage}}" + } + } }, "snapshotScore": { - "label": "Hetkvõttete punktiskoor" + "label": "Hetkvõtete punktiskoor" }, "regenerateFromSnapshot": "Loo uuesti hetkvõttest", - "timestamp": "Ajatampel" + "timestamp": "Ajatampel", + "score": { + "label": "Punktiskoor" + }, + "scoreInfo": "Punktiskoori teave", + "editLPR": { + "title": "Muuda sõiduki numbrimärki", + "desc": "Sisesta sõiduki numbrimärgi uus väärtus: {{label}}", + "descNoLabel": "Sisesta sõiduki numbrimärgi uus väärtus selle jälgitava objekti jaoks" + }, + "recognizedLicensePlate": "Tuvastatud sõiduki numbrimärk", + "description": { + "aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud." + } }, "trackedObjectDetails": "Jälgitava objekti üksikasjad" } diff --git a/web/public/locales/et/views/faceLibrary.json b/web/public/locales/et/views/faceLibrary.json index 64e8fb90e1..11a3fb104d 100644 --- a/web/public/locales/et/views/faceLibrary.json +++ b/web/public/locales/et/views/faceLibrary.json @@ -18,14 +18,16 @@ }, "toast": { "error": { - "addFaceLibraryFailed": "Näo sidumine nimega ei õnnestunud: {{errorMessage}}" + "addFaceLibraryFailed": "Näo sidumine nimega ei õnnestunud: {{errorMessage}}", + "updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}" }, "success": { "addFaceLibrary": "Lisamine Näoteeki õnnestus: {{name}}!", "deletedFace_one": "{{count}} näo kustutamine õnnestus.", "deletedFace_other": "{{count}} näo kustutamine õnnestus.", "deletedName_one": "{{count}} näo kustutamine õnnestus.", - "deletedName_other": "{{count}} näo kustutamine õnnestus." + "deletedName_other": "{{count}} näo kustutamine õnnestus.", + "updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}})." } }, "deleteFaceAttempts": { @@ -35,7 +37,7 @@ "details": { "timestamp": "Ajatampel", "unknown": "Pole teada", - "scoreInfo": "Skoor on kõigi nägude hindete kaalutud keskmine, kus kaalukoefitsiendiks on iga pildi näo suurus." + "scoreInfo": "Punktiskoor on kõigi nägude hinnete kaalutud keskmine, kus kaalukoefitsiendiks on iga pildi näo suurus." }, "uploadFaceImage": { "title": "Laadi näopilt üles", diff --git a/web/public/locales/et/views/live.json b/web/public/locales/et/views/live.json index 27f8ff3fd8..e7f050758b 100644 --- a/web/public/locales/et/views/live.json +++ b/web/public/locales/et/views/live.json @@ -12,7 +12,8 @@ "transcription": "Heli üleskirjutus", "snapshots": "Hetkvõtted", "autotracking": "Automaatne jälgimine", - "recording": "Salvestus" + "recording": "Salvestus", + "camera": "Kaamera" }, "documentTitle": { "default": "Frigate reaalajas" @@ -73,7 +74,9 @@ }, "camera": { "enable": "Lülita kaamera sisse", - "disable": "Lülita kaamera välja" + "disable": "Lülita kaamera välja", + "turnOn": "Lülita kaamera sisse", + "turnOff": "Lülita kaamera välja" }, "detect": { "enable": "Lülita tuvastamine sisse", diff --git a/web/public/locales/et/views/motionSearch.json b/web/public/locales/et/views/motionSearch.json index 0967ef424b..72d1bad347 100644 --- a/web/public/locales/et/views/motionSearch.json +++ b/web/public/locales/et/views/motionSearch.json @@ -1 +1,4 @@ -{} +{ + "documentTitle": "Liikumise tuvastus - Frigate", + "title": "Liikumise otsing" +} diff --git a/web/public/locales/et/views/replay.json b/web/public/locales/et/views/replay.json index 2f80829a43..4ef29cd2b2 100644 --- a/web/public/locales/et/views/replay.json +++ b/web/public/locales/et/views/replay.json @@ -13,5 +13,6 @@ "starting": "Käivitan kordust…", "startLabel": "Algus", "endLabel": "Lõpp" - } + }, + "title": "Kordus veaotsinguks" } diff --git a/web/public/locales/et/views/search.json b/web/public/locales/et/views/search.json index 6780001fbe..6388029696 100644 --- a/web/public/locales/et/views/search.json +++ b/web/public/locales/et/views/search.json @@ -23,7 +23,13 @@ "search_type": "Otsingutüüp", "time_range": "Ajavahemik", "before": "Enne", - "after": "Pärast" + "after": "Pärast", + "min_score": "Minimaalne punktiskoor", + "max_score": "Maksimaalne punktiskoor", + "min_speed": "Miinimumkiirus", + "max_speed": "Maksimumkiirus", + "recognized_license_plate": "Tuvastatud sõiduki numbrimärk", + "has_clip": "Klipp on olemas" }, "searchType": { "thumbnail": "Pisipilt", @@ -32,9 +38,36 @@ "toast": { "error": { "beforeDateBeLaterAfter": "„Enne“ kuupäev peab olema varasem, kui „Pärast“ kuupäev.", - "afterDatebeEarlierBefore": "„Pärast“ kuupäev peab olema hilisem, kui „Enne“ kuupäev." + "afterDatebeEarlierBefore": "„Pärast“ kuupäev peab olema hilisem, kui „Enne“ kuupäev.", + "minScoreMustBeLessOrEqualMaxScore": "Minimaalne punktiskoor peab olema väiksem või võrdne kui maksimaalne punktiskoor.", + "maxScoreMustBeGreaterOrEqualMinScore": "Maksimaalne punktiskoor peab olema suurem või võrdne kui minimaalne punktiskoor.", + "minSpeedMustBeLessOrEqualMaxSpeed": "Minimaalne kiirus peab olema väiksem või võrdne kui maksimaalne kiirus.", + "maxSpeedMustBeGreaterOrEqualMinSpeed": "Maksimaalne kiirus peab olema suurem või võrdne kui minimaalne kiirus." } + }, + "tips": { + "title": "Kuidas saad kasutada tekstifiltreid", + "desc": { + "text": "Filtrid aitavad sul otsingutulemusi kitsendada. Siin on juhised nende kasutamiseks sisestusväljal:", + "step1": "Sisesta filtri nimi, millele järgnev koolon (nt, „cameras:“).", + "step2": "Vali soovitatud väärtus või sisesta enda oma.", + "step3": "Kasuta mitmeid filtreid lisades neid üksteise järgi ning eraldades tühikuga.", + "step4": "Kuupäevafiltrid (before: ja after:) kasutavad {{DateFormat}} vormingut.", + "step5": "Ajavahemiku filter kasutab {{exampleTime}} vormingut.", + "step6": "Filtreid saad eemaldada klõpsates nende kõrval leiduvad märget „x“.", + "exampleLabel": "Näide:" + } + }, + "header": { + "currentFilterType": "Filtri väärtused", + "noFilters": "Filtrid", + "activeFilters": "Aktiivsed filtrid" } }, - "trackedObjectId": "Jälgitava objekti tunnus" + "trackedObjectId": "Jälgitava objekti tunnus", + "similaritySearch": { + "title": "Sarnaste objektide otsing", + "active": "Sarnaste objektide otsing on aktiivne", + "clear": "Eemalda sarnaste objektide otsing" + } } diff --git a/web/public/locales/et/views/settings.json b/web/public/locales/et/views/settings.json index a5b2c76700..4c2e46cd1a 100644 --- a/web/public/locales/et/views/settings.json +++ b/web/public/locales/et/views/settings.json @@ -115,11 +115,13 @@ "placeholder": "Sisesta oma senine salasõna" }, "user": { - "title": "Kasutajanimi" + "title": "Kasutajanimi", + "desc": "Lubatud on vaid tähed, numbrid, punktid ja alakriipsud." } }, "createUser": { - "confirmPassword": "Palun kinnita oma uus salasõna" + "confirmPassword": "Palun kinnita oma uus salasõna", + "usernameOnlyInclude": "Kasutajanimes võivad olla vaid tähed, numbrid, punkt (.) või alakriips (_)" }, "passwordSetting": { "cannotBeEmpty": "Salasõna ei või jääda tühjaks", @@ -213,6 +215,14 @@ "pathPlaceholder": "rtsp://...", "roles": "Rollid" } + }, + "clone": { + "categories": { + "items": { + "lpr": "Sõidukite numbrimärkide tuvastus", + "genai": "Generatiivne tehisaru" + } + } } }, "notification": { @@ -315,6 +325,10 @@ "form": { "cameras": { "title": "Kaamerad" + }, + "role": { + "desc": "Lubatud on vaid tähed, numbrid, punktid ja alakriipsud.", + "roleOnlyInclude": "Rolli nimes võivad olla vaid tähed, numbrid, punkt (.) või alakriips (_)" } } } @@ -330,7 +344,36 @@ "notifications": "Teavitused", "frigateplus": "Frigate+", "cameraReview": "Ülevaatamine", - "profiles": "Profiilid" + "profiles": "Profiilid", + "integrationLpr": "Sõidukite numbrimärkide tuvastus", + "cameraLpr": "Sõidukite numbrimärkide tuvastus", + "uiSettings": "Kasutajaliidese seadistused", + "globalDetect": "Objektide tuvastamine", + "globalRecording": "Salvestamine", + "globalSnapshots": "Hetkvõtted", + "globalFfmpeg": "FFmpeg", + "globalMotion": "Liikumise tuvastus", + "globalObjects": "Objektid", + "globalReview": "Ülevaatamine", + "globalAudioEvents": "Heli tuvastus", + "globalLivePlayback": "Reaalajas sisu taasesitus", + "globalTimestampStyle": "Ajatempli stiil", + "systemDatabase": "Andmebaas", + "systemTls": "TLS", + "systemAuthentication": "Autentimine", + "systemNetworking": "Võrgundus", + "systemProxy": "Proksiserver", + "systemUi": "Kasutajaliides", + "systemLogging": "Logimine", + "systemEnvironmentVariables": "Keskkonnamuutujad", + "systemTelemetry": "Telemeetria", + "systemBirdseye": "Vaade linnulennult", + "systemFfmpeg": "FFmpeg", + "systemDetectorsAndModel": "Tuvastamine ja mudelid", + "systemMqtt": "MQTT", + "systemGo2rtcStreams": "go2rtc voogedastus", + "integrationSemanticSearch": "Semantiline otsing", + "integrationGenerativeAi": "Generatiivne tehisaru" }, "dialog": { "unsavedChanges": { @@ -370,6 +413,9 @@ }, "birdClassification": { "title": "Lindude klassifikatsioon" + }, + "licensePlateRecognition": { + "title": "Sõidukite numbrimärkide tuvastus" } }, "cameraReview": { @@ -377,6 +423,13 @@ "title": "Ülevaatamine", "alerts": "Hoiatused ", "detections": "Tuvastamise tulemused " + }, + "object_descriptions": { + "title": "Generatiivse tehisaru objektikirjeldused", + "desc": "Luba/keela ajutiselt selle kaamera jaoks generatiivse tehisaru objektikirjeldused kuni Frigate'i taaskäivitamiseni. Kui see on keelatud, ei küsita selle kaamera jälgitavate objektide kohta tehisintellekti poolt loodud kirjeldusi." + }, + "review_descriptions": { + "title": "Generatiivne tehisaru ülevaatamisele kuuluva sisu kirjedlused" } }, "motionDetectionTuner": { @@ -404,7 +457,10 @@ "dialog": { "form": { "name": { - "title": "Nimi" + "title": "Nimi", + "error": { + "invalidCharacters": "Välja nimes võivad olla vaid tähed, numbrid, alakriipsud (_) või sidekriipsud (-)." + } }, "type": { "title": "Tüüp" @@ -420,5 +476,26 @@ } } } + }, + "profiles": { + "nameInvalid": "Lubatud on vaid väiketähed, numbrid ja alakriipsud" + }, + "go2rtcStreams": { + "validation": { + "nameInvalid": "Voogedastuse nimes on lubatud vaid tähed, numbrid alakriipsud ja sidekriipsud" + } + }, + "configForm": { + "sections": { + "lpr": "Sõidukite numbrimärkide tuvastus" + } + }, + "configMessages": { + "detect": { + "disabled": "Objektide tuvastamine on lülitatud välja. Hetkepildid, läbivaatamisele kuuluvad objektid ja täiendavad funktsioonid, nagu näotuvastus, sõidukite numbrimärkide tuvastus ja generatiivne tehisintellekt, ei tööta." + }, + "lpr": { + "vehicleNotTracked": "Sõidukite numbrimärkide tuvastus eeldab, et auto või mootorratas on jälgitav. Lülita menüüst Objektid sell kaamera jaoks sisse valikud „auto“ või „mootorratas“." + } } } diff --git a/web/public/locales/et/views/system.json b/web/public/locales/et/views/system.json index b3bbb33aa0..810899444f 100644 --- a/web/public/locales/et/views/system.json +++ b/web/public/locales/et/views/system.json @@ -10,7 +10,30 @@ }, "copy": { "label": "Kopeeri lõikelauale", - "success": "Logid on kopeeritud lõikelauale" + "success": "Logid on kopeeritud lõikelauale", + "error": "Logide kopeerimine lõikelauale ei õnnestunud" + }, + "websocket": { + "filter": { + "cameras_count_one": "{{count}} kaamera", + "cameras_count_other": "{{count}} kaamerat" + }, + "empty": "Ühtegi sõnumit pole veel hõivatud", + "count_one": "{{count}} sõnum", + "count_other": "{{count}} sõnumit" + }, + "type": { + "label": "Tüüp", + "timestamp": "Ajatempel", + "tag": "Silt", + "message": "Sõnum" + }, + "tips": "Logid on serverist voogedastamisel", + "toast": { + "error": { + "fetchingLogsFailed": "Viga logide laadimisel: {{errorMessage}}", + "whileStreamingLogs": "Viga logide voogedastamisel: {{errorMessage}}" + } } }, "title": "Süsteem" From 0d524394502f513249c17f7cc4bc6726faf75509 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:45 +0200 Subject: [PATCH 05/21] Translated using Weblate (Romanian) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (1186 of 1186 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (1183 of 1183 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (53 of 53 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (1176 of 1176 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (145 of 145 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (238 of 238 strings) Co-authored-by: Hosted Weblate Co-authored-by: lukasig Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/ Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/ro/common.json | 8 +- web/public/locales/ro/components/player.json | 3 +- web/public/locales/ro/config/global.json | 35 +++ web/public/locales/ro/config/validation.json | 3 + web/public/locales/ro/views/chat.json | 26 +++ web/public/locales/ro/views/explore.json | 2 +- web/public/locales/ro/views/live.json | 7 +- web/public/locales/ro/views/settings.json | 225 +++++++++++++++++-- 8 files changed, 283 insertions(+), 26 deletions(-) diff --git a/web/public/locales/ro/common.json b/web/public/locales/ro/common.json index 57a0262d6f..0ce39aef5c 100644 --- a/web/public/locales/ro/common.json +++ b/web/public/locales/ro/common.json @@ -137,7 +137,8 @@ "id": "Bahasa Indonesia (Indoneziană)", "ur": "اردو (Urdu)", "hr": "Hrvatski (Croată)", - "bs": "Bosanski (Bosniacă)" + "bs": "Bosanski (Bosniacă)", + "zhHant": "繁體中文 (Chineză tradițională)" }, "theme": { "default": "Implicit", @@ -323,5 +324,8 @@ "internalID": "ID-ul Intern pe care Frigate îl folosește în configurație și în baza de date" }, "no_items": "Niciun element", - "validation_errors": "Erori de validare" + "validation_errors": "Erori de validare", + "credentialField": { + "savedPlaceholder": "Salvat — lasă necompletat pentru a păstra valoarea curentă" + } } diff --git a/web/public/locales/ro/components/player.json b/web/public/locales/ro/components/player.json index ebcad44a25..71cb3cbde9 100644 --- a/web/public/locales/ro/components/player.json +++ b/web/public/locales/ro/components/player.json @@ -48,5 +48,6 @@ "success": { "submittedFrigatePlus": "Cadru trimis cu Succes catre Frigate+" } - } + }, + "cameraOff": "Camera este oprită" } diff --git a/web/public/locales/ro/config/global.json b/web/public/locales/ro/config/global.json index fff53a0778..e451ce56c7 100644 --- a/web/public/locales/ro/config/global.json +++ b/web/public/locales/ro/config/global.json @@ -516,6 +516,41 @@ "label": "Stare GenAI originală", "description": "Indică dacă GenAI a fost activat în configurația inițială." } + }, + "filters_attribute": { + "label": "Filtre de atribute", + "description": "Filtre aplicate atributelor detectate pentru a reduce rezultatele fals pozitive (arie, raport, încredere).", + "min_area": { + "label": "Aria minimă a atributului", + "description": "Aria minimă a casetei de încadrare (pixeli sau procentaj) necesară pentru acest atribut. Poate fi în pixeli (int) sau procentaj (între 0.000001 și 0.99)." + }, + "max_area": { + "label": "Aria maximă a atributului", + "description": "Aria minimă a casetei de încadrare (pixeli sau procentaj) necesară pentru acest atribut. Poate fi în pixeli (int) sau procentaj (între 0.000001 și 0.99)." + }, + "min_ratio": { + "label": "Raport de aspect minim", + "description": "Raportul minim lățime/înălțime necesar pentru ca o casetă de încadrare să fie validă." + }, + "max_ratio": { + "label": "Raport de aspect maxim", + "description": "Raportul maxim lățime/înălțime permis pentru ca o casetă de încadrare să fie validă." + }, + "threshold": { + "label": "Prag de încredere", + "description": "Pragul mediu de încredere a detecției necesar pentru ca atributul să fie considerat un rezultat adevărat pozitiv." + }, + "min_score": { + "label": "Încredere minimă", + "description": "Încrederea minimă de detecție pe un singur cadru necesară pentru a asocia acest atribut cu obiectul său părinte." + }, + "mask": { + "label": "Mască de filtrare", + "description": "Coordonatele poligonului care definesc unde se aplică acest filtru în cadru." + }, + "raw_mask": { + "label": "Mască brută" + } } }, "record": { diff --git a/web/public/locales/ro/config/validation.json b/web/public/locales/ro/config/validation.json index 3ec9691f6e..4f0dbab781 100644 --- a/web/public/locales/ro/config/validation.json +++ b/web/public/locales/ro/config/validation.json @@ -28,5 +28,8 @@ "detectRequired": "Cel puțin un stream trebuie să aibă atribuit rolul 'detect'.", "hwaccelDetectOnly": "Doar stream-ul cu rolul 'detect' poate defini argumente pentru accelerare hardware." } + }, + "detect": { + "dimensionMustBeEven": "Trebuie să fie un număr par." } } diff --git a/web/public/locales/ro/views/chat.json b/web/public/locales/ro/views/chat.json index b87ef2145f..36a892cee1 100644 --- a/web/public/locales/ro/views/chat.json +++ b/web/public/locales/ro/views/chat.json @@ -42,5 +42,31 @@ "show_camera_status": "Care este starea actuală a camerelor mele?", "recap": "Ce s-a întâmplat cât am fost plecat?", "watch_camera": "Urmărește ușa din față și anunță-mă dacă apare cineva" + }, + "new_chat": "Chat nou", + "settings": { + "title": "Setări chat", + "show_stats": { + "title": "Afișează statistici", + "desc": "Afișează rata de generare și dimensiunea contextului pentru răspunsurile de chat.", + "always": "Întotdeauna", + "while_generating": "În timpul generării" + }, + "auto_scroll": { + "title": "Derulare automată", + "desc": "Urmărește mesajele noi pe măsură ce sosesc." + } + }, + "stats": { + "tokens_per_second": "{{rate}} t/s", + "context": "{{tokens}} token-uri" + }, + "reasoning": { + "active": "Raționament…", + "show": "Afișează raționamentul", + "hide": "Ascunde raționamentul" + }, + "thinking": { + "toggle": "Comută gândirea" } } diff --git a/web/public/locales/ro/views/explore.json b/web/public/locales/ro/views/explore.json index 4cb9f3c7ff..afdb9d8b65 100644 --- a/web/public/locales/ro/views/explore.json +++ b/web/public/locales/ro/views/explore.json @@ -229,7 +229,7 @@ "aria": "Descarcă snapshot curat" }, "debugReplay": { - "label": "Reluare de depanare", + "label": "Reluare depanare", "aria": "Vezi acest obiect urmărit în vizualizarea de reluare de depanare" }, "more": { diff --git a/web/public/locales/ro/views/live.json b/web/public/locales/ro/views/live.json index 59f9c34060..971d3f32ea 100644 --- a/web/public/locales/ro/views/live.json +++ b/web/public/locales/ro/views/live.json @@ -58,7 +58,9 @@ }, "camera": { "enable": "Activează camera", - "disable": "Dezactivează camera" + "disable": "Dezactivează camera", + "turnOn": "Camera este pornittă", + "turnOff": "Oprește camera" }, "muteCameras": { "enable": "Dezactivează sunetul pentru toate camerele", @@ -151,7 +153,8 @@ "snapshots": "Snapshot-uri", "audioDetection": "Detectare sunet", "autotracking": "Urmărire automată", - "transcription": "Transcriere audio" + "transcription": "Transcriere audio", + "camera": "Cameră" }, "history": { "label": "Afișează înregistrările istorice" diff --git a/web/public/locales/ro/views/settings.json b/web/public/locales/ro/views/settings.json index f3636c14bb..2bb377860d 100644 --- a/web/public/locales/ro/views/settings.json +++ b/web/public/locales/ro/views/settings.json @@ -16,7 +16,8 @@ "globalConfig": "Configurație Globală - Frigate", "cameraConfig": "Configurație Cameră - Frigate", "maintenance": "Mentenanță - Frigate", - "profiles": "Profile - Frigate" + "profiles": "Profile - Frigate", + "detectorsAndModel": "Detectoare și model - Frigate" }, "menu": { "ui": "Interfață (UI)", @@ -30,7 +31,7 @@ "frigateplus": "Frigate+", "triggers": "Declanșatori", "roles": "Roluri", - "cameraManagement": "Gestionare", + "cameraManagement": "Gestionare cameră", "cameraReview": "Recenzie", "general": "General", "globalConfig": "Configurație globală", @@ -91,7 +92,8 @@ "regionGrid": "Grilă regiune", "uiSettings": "Setări UI", "profiles": "Profile", - "systemGo2rtcStreams": "stream-uri go2rtc" + "systemGo2rtcStreams": "stream-uri go2rtc", + "systemDetectorsAndModel": "Detectori și model" }, "dialog": { "unsavedChanges": { @@ -778,7 +780,7 @@ "baseModel": "Model de Bază", "loading": "Se încarcă informațiile despre model…", "error": "Eroare la încărcarea informațiilor despre model", - "availableModels": "Modele Disponibile", + "availableModels": "Modele Frigate+ disponibile", "modelType": "Tip Model", "trainDate": "Data Antrenării", "cameras": "Camere", @@ -804,7 +806,8 @@ "currentModel": "Model Actual", "otherModels": "Alte Modele", "configuration": "Configurație" - } + }, + "changeInDetectorsAndModel": "Schimbă modelul" }, "motionDetectionTuner": { "unsavedChanges": "Modificări nesalvate la reglajul de mișcare ({{camera}})", @@ -1074,7 +1077,7 @@ "brands": { "reolink-rtsp": "RTSP Reolink nu este recomandat. Activează HTTP în setările firmware ale camerei și repornește asistentul." }, - "customUrlRtspRequired": "URL-urile personalizate trebuie să înceapă cu „rtsp://”. Configurarea manuală este necesară pentru stream-urile care nu sunt RTSP." + "customUrlRtspRequired": "URL-urile personalizate trebuie să înceapă cu „rtsp://” sau „rtsps://”. Configurarea manuală este necesară pentru stream-urile care nu sunt RTSP." }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" @@ -1302,19 +1305,41 @@ "selectCamera": "Selectează o Cameră", "backToSettings": "Înapoi la Setări Cameră", "streams": { - "title": "Activează / Dezactivează Camere", + "title": "Stare și detalii cameră", "desc": "Dezactivează temporar o cameră până la repornirea Frigate. Dezactivarea unei camere oprește complet procesarea streamingului acestei camere de către Frigate. Detecția, înregistrarea și depanarea vor fi indisponibile.
Notă: Aceasta nu dezactivează restreamingul go2rtc.", "enableLabel": "Camere activate", - "enableDesc": "Dezactivează temporar o cameră până la repornirea Frigate. Dezactivarea oprește procesarea stream-urilor pentru această cameră. Detecția, înregistrarea și depanarea vor fi indisponibile.
Notă: Acest lucru nu dezactivează restream-urile go2rtc.", + "enableDesc": "Dezactivează temporar o cameră activată până la repornirea Frigate. Dezactivarea unei camere oprește complet procesarea de către Frigate a fluxurilor acestei camere. Detectarea, înregistrarea și depanarea vor fi indisponibile.
Notă: Acest lucru nu dezactivează retransmisiile go2rtc..

Trage de mâner pentru a reordona camerele așa cum apar în interfață. Ordinea camerelor activate va fi reflectată în întreaga interfață, inclusiv în tabloul de bord Live și în meniurile derulante pentru selectarea camerelor.", "disableLabel": "Camere dezactivate", "disableDesc": "Activează o cameră care este ascunsă în interfață și dezactivată în configurație. Este necesară repornirea Frigate după activare.", - "enableSuccess": "Am activat {{cameraName}} în configurație. Repornește Frigate pentru a aplica modificările.", + "enableSuccess": "S-a activat {{cameraName}}. Repornește Frigate pentru a aplica.", "friendlyName": { "edit": "Editează numele afișat al camerei", "title": "Editează numele afișat", "description": "Setează numele afișat pentru această cameră în întreaga interfață Frigate. Lasă necompletat pentru a folosi ID-ul camerei.", "rename": "Redenumește" - } + }, + "reorderHandle": "Trage pentru a reordona", + "saving": "Se salvează…", + "saved": "Salvat", + "details": { + "edit": "Editează detaliile camerei", + "title": "Editează detaliile camerei", + "description": "Actualizează numele afișat și URL-ul extern utilizate pentru această cameră în întreaga interfață Frigate.", + "friendlyNameLabel": "Nume afișat", + "friendlyNameHelp": "Numele prietenos afișat pentru această cameră în întreaga interfață Frigate. Lasă gol pentru a utiliza ID-ul camerei.", + "webuiUrlLabel": "URL-ul interfeței web a camerei", + "webuiUrlHelp": "URL pentru a vizita interfața web a camerei direct din vizualizarea Depanare (Debug). Lasă gol pentru a dezactiva linkul.", + "webuiUrlInvalid": "Trebuie să fie un URL valid (de exemplu, https://exemplu.com)." + }, + "label": "Stare cameră", + "description": "Setează starea de funcționare pentru fiecare cameră.

Pornit: stream-urile sunt procesate normal.
Oprit: pune temporar pe pauză procesarea. Nu se menține după repornirile Frigate.
Dezactivat: oprește procesarea și salvează modificarea în configurația ta. Este necesară o repornire pentru a reactiva o cameră dezactivată.

Notă: Dezactivarea nu afectează restream-urile go2rtc.

Trage de mâner pentru a reordona camerele active așa cum apar în interfață, inclusiv în panoul Live și în meniurile drop-down de selecție a camerei.", + "disabledSubheading": "Dezactivat în configurație", + "status": { + "on": "Pornit", + "off": "Oprit", + "disabled": "Dezactivat" + }, + "disableSuccess": "S-a dezactivat {{cameraName}} și s-a salvat în configurație." }, "cameraConfig": { "add": "Adaugă Cameră", @@ -1360,10 +1385,12 @@ "profiles": { "title": "Suprascrieri profil cameră", "selectLabel": "Selectează profilul", - "description": "Configurează care camere sunt activate sau dezactivate când un profil este activat. Camerele setate pe \"Moștenire\" își păstrează starea de bază de activare.", + "description": "Configurează ce camere sunt pornite sau oprite când un profil este activat. Camerele setate pe \"Moștenește\" își păstrează starea implicită.", "inherit": "Moștenire", "enabled": "Activat", - "disabled": "Dezactivat" + "disabled": "Dezactivat", + "on": "Pornit", + "off": "Oprit" }, "cameraType": { "title": "Tip cameră", @@ -1373,7 +1400,95 @@ "dedicatedLpr": "LPR dedicat", "saveSuccess": "Tipul camerei a fost actualizat pentru {{cameraName}}. Repornește Frigate pentru a aplica modificările." }, - "description": "Adaugă, editează și șterge camere, controlează care camere sunt activate și configurează suprascrieri per profil și tip de cameră. Pentru a configura stream-uri, detecția, mișcarea și alte setări specifice camerei, alege secțiunea specifică din Configurare Cameră." + "description": "Adaugă, editează și șterge camere, controlează starea fiecărei camere și configurează excepții pe profil și pe tip de cameră. Pentru a configura stream-uri, detecție, mișcare și alte setări specifice camerelor, alege secțiunea corespunzătoare din Configurare cameră.", + "clone": { + "sectionTitle": "Clonează setările", + "sectionDescription": "Copiază configurația de la o cameră la altă cameră sau la una nouă.", + "button": "Clonează setările", + "title": "Clonează setările camerei", + "description": "Copiază configurația unei camere la una sau mai multe alte camere sau la o cameră nouă. Identitatea (nume, nume prietenos, URL interfață web, ordine de afișare) nu este niciodată copiată.", + "source": { + "label": "Cameră sursă", + "required": "Selectează o cameră sursă", + "placeholder": "Selectează o cameră sursă" + }, + "target": { + "newRadio": "Cameră nouă", + "newNameLabel": "Numele camerei", + "legend": "Țintă", + "newNamePlaceholder": "ex., usa_spate sau Ușa din spate", + "newNameRequired": "Numele camerei este obligatoriu", + "newNameInvalid": "Nume cameră invalid", + "newNameCollision": "O cameră cu acest nume există deja", + "newStreamsForced": "Stream-urile sunt mereu copiate pentru o cameră nouă.", + "allCameras": "Toate camerele", + "existingCamerasRadio": "Camere existente", + "existingPlaceholder": "Selectează cel puțin o cameră", + "existingDisabled": "Nu există alte camere către care să copiezi" + }, + "categories": { + "legend": "Setări de clonat", + "selectAll": "Selectează tot", + "selectNone": "Deselectează tot", + "description": "Alege ce setări să copiezi de la camera sursă.", + "general": "General", + "resetDefaults": "Resetează la setările implicite", + "spatial": "Setări spațiale", + "streams": "Stream-uri", + "spatialWarningTitle": "Nepotrivire de rezoluție", + "spatialWarning": "Rezoluția de detecție ({{srcWidth}}×{{srcHeight}}) a camerei sursă {{srcCamera}} este diferă de: {{cameras}}. Poligoanele s-ar putea să nu se alinieze pe acele camere. Aceste setări implicite sunt dezactivate; activează-le pentru a copia ca atare.", + "restartHint": "Repornire necesară", + "items": { + "record": "Înregistrare", + "snapshots": "Snapshot-uri", + "review": "Revizuire", + "objects": "Obiecte", + "motion": "Detecție mișcare", + "audio": "Detecție sunet", + "notifications": "Notificări", + "birdseye": "Birdseye", + "audio_transcription": "Transcriere audio", + "mqtt": "MQTT", + "onvif": "ONVIF", + "timestamp_style": "Stil marcaj temporal", + "lpr": "Recunoașterea plăcuțelor de înmatriculare", + "face_recognition": "Recunoaștere facială", + "semantic_search": "Căutare semantică", + "genai": "AI Generativ", + "type": "Tip cameră (normală / LPR dedicată)", + "profiles": "Profile", + "zones": "Zone", + "detect": "Dimensiuni de detecție", + "motion_mask": "Măști de mișcare", + "object_masks": "Măști de obiecte", + "ffmpeg_live": "URL-uri și roluri pentru stream-uri" + } + }, + "footer": { + "changeCount_one": "{{count}} modificare va fi aplicată", + "changeCount_few": "{{count}} modificări vor fi aplicate", + "changeCount_other": "{{count}} de modificări vor fi aplicate", + "restartNeeded": "Va fi necesară o repornire pentru anumite modificări.", + "submit": "Clonare", + "submitting": "Se clonează…", + "liveOnly": "Toate modificările se vor aplica în timp real, fără repornire." + }, + "toast": { + "success": "Setări copiate la {{cameraName}}", + "successWithRestart": "Setări copiate la {{cameraName}}. Reporniți Frigate pentru a aplica toate modificările.", + "successMulti_one": "Setări copiate la {{count}} cameră", + "successMulti_few": "Setări copiate la {{count}} camere", + "successMulti_other": "Setări copiate la {{count}} de camere", + "partialFailure": "{{successCount}} secțiuni aplicate; '{{failedSection}}' a eșuat: {{errorMessage}}", + "successMultiWithRestart_one": "Setări copiate la {{count}} cameră. Reporniți Frigate pentru a aplica toate modificările.", + "successMultiWithRestart_few": "Setări copiate la {{count}} camere. Reporniți Frigate pentru a aplica toate modificările.", + "successMultiWithRestart_other": "Setări copiate la {{count}} de camere. Reporniți Frigate pentru a aplica toate modificările.", + "partialFailureMulti": "Copiat la {{successCount}} cameră(e); a eșuat pentru {{failed}}: {{errorMessage}}", + "newCameraPartialFailure": "Camera {{cameraName}} a fost creată, dar unele setări nu au putut fi copiate: {{errorMessage}}", + "sourceMissing": "Camera sursă nu mai există", + "submitError": "Clonarea camerei a eșuat: {{errorMessage}}" + } + } }, "cameraReview": { "title": "Setări Review Cameră", @@ -1689,13 +1804,32 @@ }, "addCustomLabel": "Adaugă etichetă personalizată...", "genaiModel": { - "placeholder": "Selectează modelul…", - "search": "Caută modele…", - "noModels": "Niciun model disponibil" + "placeholder": "Selectează sau introdu un model…", + "search": "Caută sau introdu un model…", + "noModels": "Niciun model disponibil", + "available": "Modele disponibile", + "useCustom": "Folosește \"{{value}}\"", + "refresh": "Reîmprospătează modelele", + "probeFailed": "Nu s-au putut interoga modelele", + "fetchedModels": "Lista de modele preluată cu succes" }, "knownPlates": { "namePlaceholder": "ex. Mașina soției", "platePlaceholder": "Număr plăcuță sau regex" + }, + "semanticSearchModelSize": { + "notApplicable": "Nu se aplică pentru furnizorii de GenAI" + }, + "liveStreams": { + "streamNameLabel": "Nume stream", + "go2rtcStreamLabel": "stream go2rtc", + "go2rtcStreamPlaceholder": "Selectează un stream go2rtc", + "streamNamePlaceholder": "ex., Stream HD principal", + "go2rtcStreamSearch": "Căutați sau introduceți un nume de stream…", + "noGo2rtcStreams": "Niciun stream go2rtc configurat", + "availableStreams": "Stream-uri disponibile", + "useCustom": "Folosește \"{{value}}\"", + "addStream": "Adaugă stream" } }, "globalConfig": { @@ -1731,7 +1865,10 @@ "saveAllPartial_few": "{{successCount}} din {{totalCount}} secțiuni salvate. {{failCount}} eșuate.", "saveAllPartial_other": "{{successCount}} din {{totalCount}} de secțiuni salvate. {{failCount}} eșuate.", "saveAllFailure": "Eroare la salvarea tuturor secțiunilor.", - "applied": "Setările au fost aplicate cu succes" + "applied": "Setările au fost aplicate cu succes", + "saveAllSuccessRestartRequired_one": "{{count}} secțiune salvată cu succes. Repornește Frigate pentru a aplica modificările.", + "saveAllSuccessRestartRequired_few": "{{count}} secțiuni salvate cu succes. Repornește Frigate pentru a aplica modificările.", + "saveAllSuccessRestartRequired_other": "{{count}} de secțiuni salvate cu succes. Repornește Frigate pentru a aplica modificările." }, "unsavedChanges": "Ai modificări nesalvate", "confirmReset": "Confirmă Resetarea", @@ -1848,8 +1985,17 @@ "audioMp3": "Transcodează în MP3", "audioExclude": "Exclude", "hardwareNone": "Fără accelerare hardware", - "hardwareAuto": "Accelerare hardware automată" - } + "hardwareAuto": "Automat (recomandat)", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "Adaugă codec video", + "addAudioCodec": "Adaugă codec audio", + "removeCodec": "Elimină codecul" + }, + "streamNumber": "Stream {{index}}" }, "timestampPosition": { "tl": "Sus stânga", @@ -1883,7 +2029,9 @@ }, "detect": { "fpsGreaterThanFive": "Setarea FPS-ului de detecție mai mare de 5 nu este recomandată. Valorile mai mari pot cauza probleme de performanță și nu vor oferi niciun beneficiu.", - "disabled": "Detecția de obiecte este dezactivată. Snapshot-urile, elementele de revizuire și îmbogățirile precum recunoașterea facială, recunoașterea plăcuțelor de înmatriculare și AI-ul generativ nu vor funcționa." + "disabled": "Detecția de obiecte este dezactivată. Snapshot-urile, elementele de revizuire și îmbogățirile precum recunoașterea facială, recunoașterea plăcuțelor de înmatriculare și AI-ul generativ nu vor funcționa.", + "resolutionShouldBeMultipleOfFour": "Pentru rezultate optime, lățimea și înălțimea de detecție ar trebui să fie multipli de 4. Alte valori pare pot produce artefacte vizuale sau o ușoară distorsionare în fluxul de detecție.", + "aspectRatioMismatch": "Lățimea și înălțimea introduse nu se potrivesc cu raportul de aspect al rezoluției actuale de detecție. Acest lucru poate produce o imagine întinsă sau distorsionată." }, "faceRecognition": { "globalDisabled": "Îmbogățirea pentru recunoaștere facială trebuie activată pentru ca funcțiile de recunoaștere facială să funcționeze pe această cameră.", @@ -1920,6 +2068,13 @@ "objects": "Obiecte", "motion": "Mișcare", "continuous": "Continuu" + }, + "cameraOrder": { + "label": "Ordinea camerelor", + "description": "Trage camerele pentru a le seta ordinea în aranjamentul Birdseye.", + "saving": "Se salvează…", + "saved": "Salvat", + "reorderHandle": "Trage pentru a reordona" } }, "snapshot": { @@ -1976,5 +2131,35 @@ "high": "Ridicat", "low": "Scăzut", "very_low": "Foarte scăzut" + }, + "menuDot": { + "overrideGlobal": "Această secțiune suprascrie configurația globală", + "overrideProfile": "Această secțiune este suprascrisă de profilul {{profile}}", + "unsaved": "Această secțiune are modificări nesalvate" + }, + "detectorsAndModel": { + "title": "Detectori și model", + "description": "Configurează backend-ul detectorului care rulează detecția obiectelor și modelul pe care îl folosește. Modificările sunt salvate împreună, astfel încât detectorul și modelul să rămână sincronizate.", + "cardTitles": { + "model": "Model de detecție", + "detector": "Hardware detector" + }, + "tabs": { + "plus": "Frigate+", + "custom": "Model personalizat" + }, + "mismatch": { + "warning": "Modelul curent Frigate+ \"{{model}}\" necesită detectorul {{required}}. Alege un model compatibil mai jos sau treci la Model personalizat înainte de a salva." + }, + "plusModel": { + "requiresDetector": "Necesită: {{detector}}", + "noModelSelected": "Selectează un model Frigate+" + }, + "toast": { + "saveSuccess": "Setările pentru detectoare și model au fost salvate. Repornește Frigate pentru a aplica modificările.", + "saveError": "Nu s-au putut salva setările pentru detector și model" + }, + "unsavedChanges": "Modificări nesalvate pentru detector și model", + "restartRequired": "Repornire necesară (detector sau model schimbat)" } } From 2a90b5443eac9c02761f79bc37364496d28064b5 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:46 +0200 Subject: [PATCH 06/21] Translated using Weblate (Ukrainian) Currently translated at 93.0% (120 of 129 strings) Translated using Weblate (Ukrainian) Currently translated at 77.7% (136 of 175 strings) Translated using Weblate (Ukrainian) Currently translated at 54.9% (649 of 1181 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (101 of 101 strings) Translated using Weblate (Ukrainian) Currently translated at 92.2% (119 of 129 strings) Translated using Weblate (Ukrainian) Currently translated at 96.1% (25 of 26 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (47 of 47 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Ukrainian) Currently translated at 54.7% (644 of 1176 strings) Translated using Weblate (Ukrainian) Currently translated at 90.0% (91 of 101 strings) Co-authored-by: Hosted Weblate Co-authored-by: ivabil Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/uk/ Translation: Frigate NVR/common Translation: Frigate NVR/components-camera Translation: Frigate NVR/components-dialog Translation: Frigate NVR/components-player Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/uk/common.json | 32 ++++++- web/public/locales/uk/components/camera.json | 3 +- web/public/locales/uk/components/dialog.json | 86 +++++++++++++++++-- web/public/locales/uk/components/player.json | 2 +- .../locales/uk/views/classificationModel.json | 12 +-- web/public/locales/uk/views/settings.json | 13 +-- web/public/locales/uk/views/system.json | 2 +- 7 files changed, 125 insertions(+), 25 deletions(-) diff --git a/web/public/locales/uk/common.json b/web/public/locales/uk/common.json index 39dff176fc..937bd735bb 100644 --- a/web/public/locales/uk/common.json +++ b/web/public/locales/uk/common.json @@ -120,7 +120,19 @@ "deleteNow": "Видалити негайно", "next": "Наступне", "unsuspended": "Відновити дію", - "continue": "Продовжити" + "continue": "Продовжити", + "add": "Додати", + "applying": "Застосовую…", + "undo": "Скасувати", + "copiedToClipboard": "Скопійовано в буфер обміну", + "modified": "Змінено", + "overridden": "Перевизначено", + "resetToGlobal": "Скинути до Глобальних", + "resetToDefault": "Скинути до По замовчуванню", + "saveAll": "Зберігти все", + "savingAll": "Зберігаю все…", + "undoAll": "Відмінити все", + "retry": "Спробувати ще" }, "menu": { "language": { @@ -165,7 +177,9 @@ "bg": "Български (Болгарська)", "gl": "Galego (Галісійська)", "id": "Bahasa Indonesia (Індонезійська)", - "ur": "اردو (Урду)" + "ur": "اردو (Урду)", + "hr": "Hrvatski (Хорватська)", + "bs": "Bosanski (Боснійська)" }, "system": "Система", "systemMetrics": "Системна метріка", @@ -223,7 +237,11 @@ }, "appearance": "Зовнішність", "withSystem": "Система", - "classification": "Класифікація" + "classification": "Класифікація", + "profiles": "Профілі", + "actions": "Дії", + "features": "Особливості", + "chat": "Чат" }, "unit": { "speed": { @@ -258,7 +276,8 @@ "error": { "title": "Не вдалося зберегти зміни конфігурації: {{errorMessage}}", "noMessage": "Не вдалося зберегти зміни налаштування" - } + }, + "success": "Зміни до налаштувань збережені вдало." }, "copyUrlToClipboard": "Скопійовано URL до буфера обміну." }, @@ -303,5 +322,10 @@ "field": { "optional": "Необов'язково", "internalID": "Внутрішній ідентифікатор, який Frigate використовує в конфігурації та базі даних" + }, + "no_items": "Нема елементів", + "validation_errors": "Помилки при перевірці", + "credentialField": { + "savedPlaceholder": "Збережено - залиште порожнім щоб зберегти поточні" } } diff --git a/web/public/locales/uk/components/camera.json b/web/public/locales/uk/components/camera.json index 0836510e14..dc12ccb8f2 100644 --- a/web/public/locales/uk/components/camera.json +++ b/web/public/locales/uk/components/camera.json @@ -82,6 +82,7 @@ "hideOptions": "Приховати параметри" }, "boundingBox": "Обмежувальна рамка", - "timestamp": "Позначка часу" + "timestamp": "Позначка часу", + "paths": "Шляхи" } } diff --git a/web/public/locales/uk/components/dialog.json b/web/public/locales/uk/components/dialog.json index 7ede7901bf..f1bab4a3fd 100644 --- a/web/public/locales/uk/components/dialog.json +++ b/web/public/locales/uk/components/dialog.json @@ -53,16 +53,29 @@ "export": { "toast": { "error": { - "failed": "Не вдалося розпочати експорт: {{error}}", + "failed": "Не вдалося додати до черги експорт: {{error}}", "endTimeMustAfterStartTime": "Час закінчення повинен бути після часу початку", "noVaildTimeSelected": "Не вибрано допустимий діапазон часу" }, "success": "Експорт успішно розпочато. Перегляньте файл на сторінці експорту.", - "view": "Переглянути" + "view": "Переглянути", + "queued": "Експорт додано до черги. Дивіться прогрес на сторінці експортів.", + "batchSuccess_one": "Розпочинаю {{count}} експорт. Відкриваю справу зараз.", + "batchSuccess_few": "Розпочинаю {{count}} експортів. Відкриваю справу зараз.", + "batchSuccess_many": "Розпочинаю {{count}} експортів. Відкриваю справу зараз.", + "batchPartial": "Розпочато {{successful}} з {{total}} експортів. Невдалі камери: {{failedCameras}}", + "batchFailed": "Не зміг розпочати {{total}} експортів. Невдалі камери: {{failedCameras}}", + "batchQueuedSuccess_one": "Додав до черги {{count}} експорт. Відкриваю справу зараз.", + "batchQueuedSuccess_few": "Додав до черги {{count}} експортів. Відкриваю справу зараз.", + "batchQueuedSuccess_many": "Додав до черги {{count}} експортів. Відкриваю справу зараз.", + "batchQueuedPartial": "Додав до черги {{successful}} з {{total}} експортів. Невдалі камери: {{failedCameras}}", + "batchQueueFailed": "Не зміг додати до черги {{total}} експортів. Невдалі камери: {{failedCameras}}" }, "fromTimeline": { "saveExport": "Зберегти експорт", - "previewExport": "Попередній перегляд експорту" + "previewExport": "Попередній перегляд експорту", + "queueingExport": "Додаю до черги експорт...", + "useThisRange": "Використовуй цей діапазон" }, "time": { "fromTimeline": "Вибір шкали часу", @@ -84,7 +97,59 @@ }, "select": "Вибрати", "export": "Експорт", - "selectOrExport": "Выбiр або експорт" + "selectOrExport": "Выбiр або експорт", + "case": { + "newCaseOption": "Створити новий випадок", + "newCaseNamePlaceholder": "Ім'я для нового випадку", + "newCaseDescriptionPlaceholder": "Опис випадку", + "label": "Випадок", + "nonAdminHelp": "Новий випадок буде створено для цих експортів.", + "placeholder": "Оберіть випадок" + }, + "queueing": "Додаю експорт у чергу...", + "tabs": { + "export": "Одна камера", + "multiCamera": "Мульті-камера" + }, + "multiCamera": { + "timeRange": "Діапазон часу", + "selectFromTimeline": "Оберіть з шкали часу", + "cameraSelection": "Камери", + "cameraSelectionHelp": "Камери з відстежуваними об'єктами у цьому часовому діапазоні є попередньо обраними", + "checkingActivity": "Перевіряю активність камери...", + "noCameras": "Доступні камери відсутні", + "detectionCount_one": "{{count}} відстежувана камера", + "detectionCount_few": "{{count}} відстежувані камери", + "detectionCount_many": "{{count}} відстежуваних камер", + "nameLabel": "Ім'я для експорту", + "namePlaceholder": "Необов'язкове базове ім'я для цих експортів", + "queueingButton": "Додаю експорти у чергу...", + "exportButton_one": "Експорт {{count}} камери", + "exportButton_few": "Експорт {{count}} камер", + "exportButton_many": "Експорт {{count}} камер" + }, + "multi": { + "title_one": "Експорт {{count}} рецензії", + "title_few": "Експорт {{count}} рецензій", + "title_many": "Експорт {{count}} рецензій", + "description": "Експорт всіх обраних рецензій. Всі експорти будуть згруповані під спільною справою.", + "descriptionNoCase": "Експорт всіх обраних рецензій.", + "caseNamePlaceholder": "Переглянути експорт - {{date}}", + "exportButton_one": "Переглянути {{count}} рецензію", + "exportButton_few": "Переглянути {{count}} рецензії", + "exportButton_many": "Переглянути {{count}} рецензій", + "exportingButton": "Експортую...", + "toast": { + "started_one": "Розпочинаю {{count}} експорт. Відкриваю справу зараз.", + "started_few": "Розпочинаю {{count}} експортів. Відкриваю справу зараз.", + "started_many": "Розпочинаю {{count}} експортів. Відкриваю справу зараз.", + "startedNoCase_one": "Розпочинаю {{count}} експорт.", + "startedNoCase_few": "Розпочинаю {{count}} експортів.", + "startedNoCase_many": "Розпочинаю {{count}} експортів.", + "partial": "Розпочато {{successful}} з {{total}} експортів. Невдало: {{failedItems}}", + "failed": "Не зміг розпочати {{total}} експортів. Невдало: {{failedItems}}" + } + } }, "recording": { "button": { @@ -96,12 +161,20 @@ "confirmDelete": { "title": "Підтвердити вилучення", "desc": { - "selected": "Ви впевнені, що хочете видалити все записане відео, пов'язане з цим пунктом огляду?

Утримуйте клавішу Shift, щоб обійти це діалогове вікно в майбутньому." + "selected": "Ви впевнені, що хочете видалити все записане відео, пов'язане з цим пунктом огляду?

Утримуйте клавішу Shift, щоб обійти це діалогове вікно в майбутньому." }, "toast": { "error": "Не вдалося видалити: {{error}}", "success": "Відеозаписи, пов’язані з вибраними елементами огляду, успішно видалено." } + }, + "shareTimestamp": { + "label": "Поділитися позначкою часу", + "title": "Поділитися позначкою часу", + "description": "Поділитися URL з позначкою часу поточної позиції плеєру або оберіть довільну позначку часу. Зверніть увагу, що це не публічна URL і вона доступна тільки для користувачів з доступом до Frigate та цієї камери.", + "custom": "Довільна позначка часу", + "button": "Поділитися URL з позначкою часу", + "shareTitle": "Позначка часу для Frigate рецензії: {{camera}}" } }, "restart": { @@ -111,7 +184,8 @@ "title": "Frigate перезапускається", "content": "Цю сторінку буде перезавантажено за {{countdown}} секунд.", "button": "Примусово перезавантажити" - } + }, + "description": "Це призупинить роботу Frigate на час перезавантаження." }, "imagePicker": { "selectImage": "Вибір мініатюри відстежуваного об'єкта", diff --git a/web/public/locales/uk/components/player.json b/web/public/locales/uk/components/player.json index 746eba6c12..300dc5fc57 100644 --- a/web/public/locales/uk/components/player.json +++ b/web/public/locales/uk/components/player.json @@ -37,7 +37,7 @@ }, "streamOffline": { "title": "Струм офлайн", - "desc": "Потік detect камера {{cameraName}} не отримувала ніяких кадрів, перевіряйте журнали помилок" + "desc": "Потік detect камери {{cameraName}} не отримував ніяких кадрів, перевірте журнал помилок" }, "cameraDisabled": "Камера вимкнена", "toast": { diff --git a/web/public/locales/uk/views/classificationModel.json b/web/public/locales/uk/views/classificationModel.json index faceecd91c..82739b61d1 100644 --- a/web/public/locales/uk/views/classificationModel.json +++ b/web/public/locales/uk/views/classificationModel.json @@ -12,12 +12,12 @@ }, "toast": { "success": { - "deletedCategory_one": "Видалений клас", - "deletedCategory_few": "", - "deletedCategory_many": "", - "deletedImage_one": "Видалені зображення", - "deletedImage_few": "", - "deletedImage_many": "", + "deletedCategory_one": "Видалено {{count}} клас", + "deletedCategory_few": "Видалено {{count}} класи", + "deletedCategory_many": "Видалено {{count}} класів", + "deletedImage_one": "Видалено {{count}} зображення", + "deletedImage_few": "Видалено {{count}} зображення", + "deletedImage_many": "Видалено {{count}} зображень", "categorizedImage": "Зображення успішно класифіковано", "trainedModel": "Успішно навчена модель.", "trainingModel": "Успішно розпочато навчання моделі.", diff --git a/web/public/locales/uk/views/settings.json b/web/public/locales/uk/views/settings.json index e9bc0dd420..a7816acdfe 100644 --- a/web/public/locales/uk/views/settings.json +++ b/web/public/locales/uk/views/settings.json @@ -135,7 +135,7 @@ }, "context": { "documentation": "Прочитати документацію", - "title": "Маски руху використовуються для запобігання виявлення небажаних типів руху (наприклад: гілки дерева, часові мітки камери). Слід використовувати маски рухудуже економно, надмірне маскування ускладнить відстеження об'єктів." + "title": "Маски руху використовуються для запобігання виявлення небажаних типів руху (наприклад: гілки дерева, часові мітки камери). Слід використовувати маски руху дуже економно, надмірне маскування ускладнить відстеження об'єктів." }, "clickDrawPolygon": "Клацніть, щоб намалювати багатокутник на зображенні.", "add": "Нова маска руху", @@ -300,7 +300,7 @@ "all": "Усі маски та зони" }, "motionMaskLabel": "Маска руху {{number}}", - "objectMaskLabel": "Маска об'єкта {{number}} ({{label}})" + "objectMaskLabel": "Маска об'єкта {{number}}" }, "debug": { "zones": { @@ -451,7 +451,7 @@ "snapshots": "Знімки", "cleanCopySnapshots": "clean_copy Знімки" }, - "cleanCopyWarning": "На деяких камерах увімкнено знімки екрана, але вимкнено чисте копіювання. Щоб мати змогу надсилати зображення з цих камер до Frigate+, потрібно ввімкнути параметр clean_copy у конфігурації знімків екрана." + "cleanCopyWarning": "На деяких камерах знімки екрана вимкнені" }, "apiKey": { "desc": "Ключ API Frigate+ забезпечує інтеграцію з сервісом Frigate+.", @@ -529,7 +529,7 @@ "motionDetectionTuner": { "improveContrast": { "title": "Покращення контрастності", - "desc": "Покращення контрастності для темніших сцен. За замовчуванням: УВІМК." + "desc": "Покращення контрастності для темніших сцен. За замовчуванням: УВІМК" }, "desc": { "documentation": "Прочитайте посібник з налаштування руху", @@ -578,7 +578,8 @@ "triggers": "Тригери", "roles": "Ролі", "cameraManagement": "Управління", - "cameraReview": "Огляду" + "cameraReview": "Огляду", + "profiles": "Профілі" }, "dialog": { "unsavedChanges": { @@ -647,7 +648,7 @@ "hide": "Приховати пароль", "requirements": { "title": "Вимоги до пароля:", - "length": "Принаймні 8 символів", + "length": "Принаймні 12 символів", "uppercase": "Принаймні одна велика літера", "digit": "Принаймні одна цифра", "special": "Принаймні один спеціальний символ (!@#$%^&*(),.?\":{}|<>)" diff --git a/web/public/locales/uk/views/system.json b/web/public/locales/uk/views/system.json index b65616c60e..a503559ed2 100644 --- a/web/public/locales/uk/views/system.json +++ b/web/public/locales/uk/views/system.json @@ -68,7 +68,7 @@ "classification_speed": "Швидкість класифікації {{name}}", "classification_events_per_second": "{{name}} Подій класифікації за секунду" }, - "title": "Збагаченням", + "title": "Збагачення", "infPerSecond": "Висновки за секунду", "averageInf": "Середній час висновування" }, From 984129535ff9aeb99207050d9a79c621c0a259a7 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:48 +0200 Subject: [PATCH 07/21] Translated using Weblate (Japanese) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (473 of 473 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Japanese) Currently translated at 93.9% (1186 of 1263 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (10 of 10 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (175 of 175 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (59 of 59 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (101 of 101 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (145 of 145 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (129 of 129 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (47 of 47 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (1186 of 1186 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (127 of 127 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (64 of 64 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (473 of 473 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (86 of 86 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (74 of 74 strings) Translated using Weblate (Japanese) Currently translated at 100.0% (45 of 45 strings) Co-authored-by: Hosted Weblate Co-authored-by: alpha Co-authored-by: yhi264 Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-groups/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ja/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ja/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Groups Translation: Frigate NVR/Config - Validation 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-player Translation: Frigate NVR/objects Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-classificationmodel 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-motionSearch Translation: Frigate NVR/views-replay Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/ja/audio.json | 2 +- web/public/locales/ja/common.json | 33 +- web/public/locales/ja/components/auth.json | 4 +- web/public/locales/ja/components/camera.json | 3 +- web/public/locales/ja/components/dialog.json | 33 +- web/public/locales/ja/components/filter.json | 4 +- web/public/locales/ja/components/player.json | 5 +- web/public/locales/ja/config/cameras.json | 889 +++++++++- web/public/locales/ja/config/global.json | 1512 ++++++++++++++++- web/public/locales/ja/config/groups.json | 2 +- web/public/locales/ja/config/validation.json | 3 + web/public/locales/ja/objects.json | 11 +- web/public/locales/ja/views/chat.json | 37 +- .../locales/ja/views/classificationModel.json | 25 +- web/public/locales/ja/views/events.json | 25 +- web/public/locales/ja/views/explore.json | 30 +- web/public/locales/ja/views/exports.json | 5 +- web/public/locales/ja/views/faceLibrary.json | 14 +- web/public/locales/ja/views/live.json | 21 +- web/public/locales/ja/views/motionSearch.json | 35 +- web/public/locales/ja/views/replay.json | 12 +- web/public/locales/ja/views/settings.json | 929 +++++++++- web/public/locales/ja/views/system.json | 55 +- 23 files changed, 3507 insertions(+), 182 deletions(-) diff --git a/web/public/locales/ja/audio.json b/web/public/locales/ja/audio.json index 43811ed762..e60078e92b 100644 --- a/web/public/locales/ja/audio.json +++ b/web/public/locales/ja/audio.json @@ -222,7 +222,7 @@ "dubstep": "ダブステップ", "drum_and_bass": "ドラムンベース", "electronica": "エレクトロニカ", - "electronic_dance_music": "EDM", + "electronic_dance_music": "エレクトロニック・ダンス・ミュージック", "ambient_music": "アンビエント", "trance_music": "トランス", "music_of_latin_america": "ラテン音楽", diff --git a/web/public/locales/ja/common.json b/web/public/locales/ja/common.json index ffceee4199..4b538f7faa 100644 --- a/web/public/locales/ja/common.json +++ b/web/public/locales/ja/common.json @@ -136,11 +136,23 @@ "export": "エクスポート", "deleteNow": "今すぐ削除", "next": "次へ", - "continue": "続行" + "continue": "続行", + "add": "追加", + "applying": "適用中…", + "undo": "元に戻す", + "copiedToClipboard": "クリップボードにコピーしました", + "modified": "変更あり", + "overridden": "上書き済み", + "resetToGlobal": "グローバル設定にリセット", + "resetToDefault": "デフォルトにリセット", + "saveAll": "すべて保存", + "savingAll": "すべて保存中…", + "undoAll": "すべて元に戻す", + "retry": "再試行" }, "menu": { "system": "システム", - "systemMetrics": "システムモニター", + "systemMetrics": "システムメトリクス", "configuration": "設定", "systemLogs": "システムログ", "settings": "設定", @@ -235,10 +247,15 @@ "withSystem": { "label": "システム設定に従う" }, - "hr": "Hrvatski (クロアチア語)" + "hr": "Hrvatski (クロアチア語)", + "bs": "Bosanski (ボスニア語)", + "zhHant": "繁體中文 (繁体字中国語)" }, "classification": "分類", - "profiles": "プロファイル" + "profiles": "プロファイル", + "actions": "操作", + "features": "機能", + "chat": "チャット" }, "toast": { "copyUrlToClipboard": "URLをクリップボードにコピーしました。", @@ -247,7 +264,8 @@ "error": { "title": "設定変更の保存に失敗しました: {{errorMessage}}", "noMessage": "設定変更の保存に失敗しました" - } + }, + "success": "設定変更を保存しました。" } }, "role": { @@ -290,5 +308,10 @@ "field": { "optional": "任意", "internalID": "Frigate が設定で使用する内部 ID です" + }, + "no_items": "項目がありません", + "validation_errors": "入力エラー", + "credentialField": { + "savedPlaceholder": "保存済み — 変更しない場合は空欄" } } diff --git a/web/public/locales/ja/components/auth.json b/web/public/locales/ja/components/auth.json index d767e3282c..e89c35a88f 100644 --- a/web/public/locales/ja/components/auth.json +++ b/web/public/locales/ja/components/auth.json @@ -4,8 +4,8 @@ "password": "パスワード", "login": "ログイン", "errors": { - "usernameRequired": "ユーザー名が必要です", - "passwordRequired": "パスワードが必要です", + "usernameRequired": "ユーザー名は必須です", + "passwordRequired": "パスワードは必須です", "rateLimit": "リクエスト制限を超えました。後でもう一度お試しください。", "loginFailed": "ログインに失敗しました", "unknownError": "不明なエラー。ログを確認してください。", diff --git a/web/public/locales/ja/components/camera.json b/web/public/locales/ja/components/camera.json index 4491d0a917..17ad52f710 100644 --- a/web/public/locales/ja/components/camera.json +++ b/web/public/locales/ja/components/camera.json @@ -81,6 +81,7 @@ "zones": "ゾーン", "mask": "マスク", "motion": "モーション", - "regions": "領域" + "regions": "領域", + "paths": "軌跡" } } diff --git a/web/public/locales/ja/components/dialog.json b/web/public/locales/ja/components/dialog.json index 9364141401..cfe49cab15 100644 --- a/web/public/locales/ja/components/dialog.json +++ b/web/public/locales/ja/components/dialog.json @@ -13,7 +13,7 @@ "plus": { "submitToPlus": { "label": "Frigate+ に送信", - "desc": "回避したい場所でのオブジェクトは誤検出ではありません。誤検出として送信するとモデルが混乱します。" + "desc": "回避したい場所でのオブジェクトは誤検知ではありません。誤検知として送信するとモデルが混乱します。" }, "review": { "question": { @@ -62,12 +62,16 @@ "queued": "エクスポートがキューに追加されました。進捗状況はエクスポートページで確認できます。", "batchQueuedSuccess_other": "{{count}} 件のエクスポートがキューに登録されました。現在ケースをオープンしています。", "batchQueuedPartial": "{{total}} 件中 {{successful}} 件のエクスポートがキューに追加されました。失敗したカメラ: {{failedCameras}}", - "batchQueueFailed": "{{total}} 件のエクスポートをキューに追加できませんでした。失敗したカメラ: {{failedCameras}}" + "batchQueueFailed": "{{total}} 件のエクスポートをキューに追加できませんでした。失敗したカメラ: {{failedCameras}}", + "batchSuccess_other": "{{count}} 件のエクスポートを開始しました。ケースを開きます。", + "batchPartial": "{{total}} 件中 {{successful}} 件のエクスポートを開始しました。失敗したカメラ: {{failedCameras}}", + "batchFailed": "{{total}} 件のエクスポートを開始できませんでした。失敗したカメラ: {{failedCameras}}" }, "fromTimeline": { "saveExport": "エクスポートを保存", "previewExport": "エクスポートをプレビュー", - "queueingExport": "エクスポートをキューイングしています..." + "queueingExport": "エクスポートをキューイングしています...", + "useThisRange": "この範囲を使用" }, "queueing": "エクスポートをキューイングしています...", "multiCamera": { @@ -84,7 +88,7 @@ "exportButton_other": "{{count}} 台のカメラをエクスポート" }, "case": { - "newCaseOption": "新しいケースを作成する", + "newCaseOption": "新しいケースを作成", "newCaseNamePlaceholder": "新しいケース名", "newCaseDescriptionPlaceholder": "ケースの説明", "label": "ケース", @@ -96,7 +100,18 @@ "multiCamera": "マルチカメラ" }, "multi": { - "title_other": "{{count}} 件のレビューをエクスポート" + "title_other": "{{count}} 件のレビューをエクスポート", + "description": "選択した各レビューをエクスポートします。すべてのエクスポートは 1 つのケースにまとめられます。", + "descriptionNoCase": "選択した各レビューをエクスポートします。", + "caseNamePlaceholder": "レビューエクスポート - {{date}}", + "exportButton_other": "{{count}} 件のレビューをエクスポート", + "exportingButton": "エクスポート中...", + "toast": { + "started_other": "{{count}} 件のエクスポートを開始しました。ケースを開きます。", + "startedNoCase_other": "{{count}} 件のエクスポートを開始しました。", + "partial": "{{total}} 件中 {{successful}} 件のエクスポートを開始しました。失敗: {{failedItems}}", + "failed": "{{total}} 件のエクスポートを開始できませんでした。失敗: {{failedItems}}" + } } }, "streaming": { @@ -143,6 +158,14 @@ "markAsReviewed": "レビュー済みにする", "deleteNow": "今すぐ削除", "markAsUnreviewed": "未レビューに戻す" + }, + "shareTimestamp": { + "label": "タイムスタンプを共有", + "title": "タイムスタンプを共有", + "description": "現在のプレーヤー位置をタイムスタンプ付き URL で共有するか、任意のタイムスタンプを指定できます。これは公開リンクではなく、Frigate とこのカメラへのアクセス権を持つユーザーのみアクセスできます。", + "custom": "カスタムタイムスタンプ", + "button": "タイムスタンプ URL を共有", + "shareTitle": "Frigate レビュータイムスタンプ: {{camera}}" } }, "imagePicker": { diff --git a/web/public/locales/ja/components/filter.json b/web/public/locales/ja/components/filter.json index e5bc120e74..2bcd21bfa5 100644 --- a/web/public/locales/ja/components/filter.json +++ b/web/public/locales/ja/components/filter.json @@ -64,7 +64,7 @@ "cameras": { "label": "カメラフィルター", "all": { - "title": "すべてのカメラ", + "title": "全カメラ", "short": "カメラ" } }, @@ -114,7 +114,7 @@ }, "trackedObjectDelete": { "title": "削除の確認", - "desc": "これら {{objectLength}} 件の追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、関連するオブジェクトのライフサイクル項目が削除されます。履歴ビューの録画映像は削除されません

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

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

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

今後このダイアログを表示しない場合は Shift キーを押しながら操作してください。", "toast": { "success": "追跡オブジェクトを削除しました。", "error": "追跡オブジェクトの削除に失敗しました: {{errorMessage}}" diff --git a/web/public/locales/ja/components/player.json b/web/public/locales/ja/components/player.json index 0fa36434d7..692cde4218 100644 --- a/web/public/locales/ja/components/player.json +++ b/web/public/locales/ja/components/player.json @@ -20,7 +20,7 @@ }, "bandwidth": { "title": "帯域:", - "short": "帯域" + "short": "帯域幅" }, "latency": { "title": "遅延:", @@ -48,5 +48,6 @@ "error": { "submitFrigatePlusFailed": "フレームの Frigate+ への送信に失敗しました" } - } + }, + "cameraOff": "カメラはオフです" } diff --git a/web/public/locales/ja/config/cameras.json b/web/public/locales/ja/config/cameras.json index 24c0782779..c45acaa2b2 100644 --- a/web/public/locales/ja/config/cameras.json +++ b/web/public/locales/ja/config/cameras.json @@ -9,35 +9,39 @@ "description": "有効" }, "audio": { - "label": "音声検出", + "label": "音声検知", "enabled": { "label": "音声検知を有効化", - "description": "このカメラのオーディオイベント検出を有効または無効にします。" + "description": "このカメラの音声イベント検知を有効または無効にします。" }, "min_volume": { "label": "最小ボリューム", - "description": "オーディオ検出を実行するために必要な最小RMS音量閾値。値を小さくすると感度が高くなります(例:200=高、500=中、1000=低)。" + "description": "音声検知を実行するために必要な最小RMS音量閾値。値を小さくすると感度が高くなります(例:200=高、500=中、1000=低)。" }, "filters": { "label": "音声フィルタ", - "description": "誤検出を減らすために使用される信頼度閾値などのフィルタ設定(オーディオタイプごと)。" + "description": "誤検知を減らすために使用される信頼度閾値などのフィルタ設定(オーディオタイプごと)。", + "threshold": { + "label": "音声の最低信頼度", + "description": "音声イベントとしてカウントするために必要な最低信頼度しきい値。" + } }, - "description": "このカメラの音声ベースのイベント検出設定。", + "description": "このカメラの音声ベースのイベント検知設定。", "max_not_heard": { "label": "タイムアウト終了", - "description": "オーディオイベントが終了するまでの残り秒数(設定されたオーディオタイプを除く)。" + "description": "音声検知が終了するまでの残り秒数(設定されたオーディオタイプを除く)。" }, "listen": { "label": "リスニングタイプ", - "description": "検出対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。" + "description": "検知対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。" }, "enabled_in_config": { "label": "元の音声状態", - "description": "静的設定ファイルで、音声検出が当初有効にされていたかどうかを示します。" + "description": "静的設定ファイルで、音声検知が当初有効にされていたかどうかを示します。" }, "num_threads": { - "label": "検出スレッド", - "description": "音声検出処理に使用するスレッド数。" + "label": "検知スレッド", + "description": "音声検知処理に使用するスレッド数。" } }, "friendly_name": { @@ -76,21 +80,874 @@ } }, "detect": { - "label": "物体検出", - "description": "物体検出の実行やトラッカーの初期化に使用される、検出や検出ロールの設定。", + "label": "物体検知", + "description": "物体検知の実行やトラッカーの初期化に使用される、検知や検知ロールの設定。", "enabled": { "label": "物体検知を有効にする", "description": "このカメラの物体検知機能を有効または無効にします。" }, "height": { - "label": "高さを検出", - "description": "検出ストリームに使用するフレーム高さ(ピクセル)。ネイティブストリーム解像度を使用する場合は、空欄のままにしてください。" + "label": "高さを検知", + "description": "検知ストリームに使用するフレーム高さ(ピクセル)。ネイティブストリーム解像度を使用する場合は、空欄のままにしてください。" }, "width": { - "label": "幅を検出" + "label": "幅を検知", + "description": "検知ストリームで使用するフレーム幅 (ピクセル)。空欄でストリームのネイティブ解像度を使用。" + }, + "fps": { + "label": "検知 FPS", + "description": "検知を実行する目標 FPS。低くするほど CPU 使用率が下がります(推奨値は 5、極めて高速な物体を追跡する場合のみ最大 10 まで上げてください)。" + }, + "min_initialized": { + "label": "最小初期化フレーム数", + "description": "追跡オブジェクトを生成するために必要な連続検知ヒット数。値を大きくすると誤初期化が減ります。デフォルトは fps の半分。" + }, + "max_disappeared": { + "label": "最大消失フレーム数", + "description": "追跡オブジェクトが消失したと判断するまでの未検知フレーム数。" + }, + "stationary": { + "label": "静止オブジェクト設定", + "description": "一定時間静止しているオブジェクトを検知・管理するための設定。", + "interval": { + "label": "静止チェック間隔", + "description": "静止オブジェクトを確認するための検知を、何フレームおきに実行するか。" + }, + "threshold": { + "label": "静止しきい値", + "description": "オブジェクトを静止状態とみなすために必要な位置変化のないフレーム数。" + }, + "max_frames": { + "label": "最大追跡フレーム", + "description": "静止オブジェクトを破棄するまでの追跡フレーム数の上限。", + "default": { + "label": "デフォルト最大フレーム", + "description": "静止オブジェクトの追跡を停止するまでのデフォルト最大フレーム数。" + }, + "objects": { + "label": "オブジェクト別最大フレーム", + "description": "静止オブジェクト追跡の最大フレーム数をオブジェクトごとに上書きします。" + } + }, + "classifier": { + "label": "ビジュアル分類器を有効化", + "description": "バウンディングボックスが揺らいでも真に静止しているオブジェクトを検知するため、ビジュアル分類器を使用します。" + } + }, + "annotation_offset": { + "label": "注釈オフセット", + "description": "タイムライン上のバウンディングボックスを録画と揃えるため、検知注釈を時間方向にずらすミリ秒数。正負どちらも指定可能。" } }, "mqtt": { - "label": "MQTT" + "label": "MQTT", + "description": "MQTT 画像配信の設定。", + "enabled": { + "label": "画像送信", + "description": "このカメラのオブジェクト画像スナップショットを MQTT トピックに配信する機能を有効にします。" + }, + "timestamp": { + "label": "タイムスタンプを追加", + "description": "MQTT に配信する画像にタイムスタンプを重ねて表示します。" + }, + "bounding_box": { + "label": "バウンディングボックスを追加", + "description": "MQTT に配信する画像にバウンディングボックスを描画します。" + }, + "crop": { + "label": "画像を切り抜き", + "description": "MQTT に配信する画像を検知オブジェクトのバウンディングボックスで切り抜きます。" + }, + "height": { + "label": "画像の高さ", + "description": "MQTT 配信時に画像をリサイズする高さ (ピクセル)。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "MQTT 画像を配信するためにオブジェクトが進入する必要があるゾーン。" + }, + "quality": { + "label": "JPEG 品質", + "description": "MQTT に配信する画像の JPEG 品質 (0-100)。" + } + }, + "notifications": { + "label": "通知", + "enabled": { + "label": "通知を有効化", + "description": "このカメラの通知を有効または無効にします。" + }, + "email": { + "label": "通知メールアドレス", + "description": "プッシュ通知用、または特定の通知プロバイダで必要となるメールアドレス。" + }, + "cooldown": { + "label": "クールダウン期間", + "description": "受信者への通知連投を避けるための通知間隔(秒)。" + }, + "enabled_in_config": { + "label": "元の通知状態", + "description": "元の静的設定で通知が有効化されていたかを示します。" + }, + "description": "このカメラの通知を有効化・制御する設定。" + }, + "ffmpeg": { + "label": "FFmpeg", + "description": "FFmpeg の設定。バイナリパス、引数、ハードウェアアクセラレーション、ロール別の出力引数を含みます。", + "path": { + "label": "FFmpeg パス", + "description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「5.0」または「7.0」)。" + }, + "global_args": { + "label": "FFmpeg グローバル引数", + "description": "FFmpeg プロセスに渡されるグローバル引数。" + }, + "hwaccel_args": { + "label": "ハードウェアアクセラレーション引数", + "description": "FFmpeg のハードウェアアクセラレーション引数。プロバイダ固有のプリセットの使用を推奨。" + }, + "input_args": { + "label": "入力引数", + "description": "FFmpeg の入力ストリームに適用される引数。" + }, + "output_args": { + "label": "出力引数", + "description": "detect や record など、FFmpeg のロール別に使用されるデフォルト出力引数。", + "detect": { + "label": "検知ロールの出力引数", + "description": "detect ロールのストリームに使用されるデフォルト出力引数。" + }, + "record": { + "label": "録画ロールの出力引数", + "description": "record ロールのストリームに使用されるデフォルト出力引数。" + } + }, + "retry_interval": { + "label": "FFmpeg 再試行間隔", + "description": "カメラストリームの失敗後、再接続を試みるまでの待機秒数。デフォルトは 10 秒。" + }, + "apple_compatibility": { + "label": "Apple 互換性", + "description": "H.265 録画時に Apple プレーヤーとの互換性向上のため HEVC タグ付けを有効化します。" + }, + "gpu": { + "label": "GPU インデックス", + "description": "ハードウェアアクセラレーションで使用するデフォルト GPU インデックス。" + }, + "inputs": { + "label": "カメラ入力", + "description": "このカメラの入力ストリーム定義(パスとロール)のリスト。", + "path": { + "label": "入力パス", + "description": "カメラ入力ストリームの URL またはパス。" + }, + "roles": { + "label": "入力ロール", + "description": "この入力ストリームのロール。" + }, + "global_args": { + "label": "FFmpeg グローバル引数", + "description": "この入力ストリームに対する FFmpeg グローバル引数。" + }, + "hwaccel_args": { + "label": "ハードウェアアクセラレーション引数", + "description": "この入力ストリームのハードウェアアクセラレーション引数。" + }, + "input_args": { + "label": "入力引数", + "description": "このストリーム固有の入力引数。" + } + } + }, + "live": { + "label": "ライブ再生", + "streams": { + "label": "ライブストリーム名", + "description": "設定済みのストリーム名と、ライブ再生で使用する restream/go2rtc 名のマッピング。" + }, + "height": { + "label": "ライブの高さ", + "description": "Web UI で jsmpeg ライブストリームを描画する高さ (ピクセル)。検知ストリーム高さ以下である必要があります。" + }, + "quality": { + "label": "ライブ品質", + "description": "jsmpeg ストリームのエンコード品質 (1 が最高、31 が最低)。" + }, + "description": "ライブストリームの選択・解像度・品質を Web UI から制御する設定。" + }, + "motion": { + "label": "モーション検知", + "enabled": { + "label": "モーション検知を有効化", + "description": "このカメラのモーション検知を有効または無効にします。" + }, + "threshold": { + "label": "モーションしきい値", + "description": "モーション検出器が使用するピクセル差分しきい値。値を大きくすると感度が下がります (範囲 1-255)。" + }, + "lightning_threshold": { + "label": "雷検知しきい値", + "description": "短時間の照明スパイクを検知して無視するしきい値(値が小さいほど感度が高く、0.3 〜 1.0 が目安)。これはモーション検知を完全に止めるものではなく、しきい値超過後に検出器が追加フレームの解析を停止するだけです。モーションベースの録画はこれらのイベント中も作成されます。" + }, + "skip_motion_threshold": { + "label": "モーションスキップしきい値", + "description": "0.0 〜 1.0 の値を指定し、1 フレームでそれ以上の割合が変化した場合、検出器はモーションボックスを返さず即座に再キャリブレーションします。雷や嵐などの誤検知を減らし CPU を節約できますが、PTZ カメラのオート追跡などの実イベントを取りこぼす可能性があります。数 MB の録画を捨てるか、数本の短いクリップを確認するかのトレードオフです。無効化するには未設定 (None) のままにします。" + }, + "improve_contrast": { + "label": "コントラスト強調", + "description": "モーション解析前にフレームのコントラストを強調して検知を補助します。" + }, + "contour_area": { + "label": "輪郭面積", + "description": "モーション輪郭としてカウントするために必要な最小ピクセル数。" + }, + "delta_alpha": { + "label": "デルタアルファ", + "description": "モーション計算のフレーム差分で使用されるアルファブレンディング係数。" + }, + "frame_alpha": { + "label": "フレームアルファ", + "description": "モーション前処理でフレームをブレンドする際に使用するアルファ値。" + }, + "frame_height": { + "label": "フレーム高さ", + "description": "モーション計算時にフレームをスケーリングする高さ (ピクセル)。" + }, + "mask": { + "label": "マスク座標", + "description": "領域を含める/除外するモーションマスクポリゴンを定義する x,y 座標の順序付きリスト。" + }, + "mqtt_off_delay": { + "label": "MQTT オフ遅延", + "description": "最後のモーション検知後、MQTT で「off」状態を発行するまでの待機秒数。" + }, + "enabled_in_config": { + "label": "元のモーション状態", + "description": "元の静的設定でモーション検知が有効化されていたかを示します。" + }, + "raw_mask": { + "label": "Raw マスク" + }, + "description": "このカメラのモーション検知のデフォルト設定。" + }, + "objects": { + "label": "オブジェクト", + "description": "追跡するラベルとオブジェクト別フィルタを含む、オブジェクト追跡のデフォルト設定。", + "track": { + "label": "追跡するオブジェクト", + "description": "このカメラで追跡するオブジェクトラベルのリスト。" + }, + "filters": { + "label": "オブジェクトフィルタ", + "description": "誤検知を減らすために検知オブジェクトに適用するフィルタ(面積、比率、信頼度)。", + "min_area": { + "label": "最小オブジェクト面積", + "description": "このオブジェクト種別に必要なバウンディングボックスの最小面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "max_area": { + "label": "最大オブジェクト面積", + "description": "このオブジェクト種別に許容されるバウンディングボックスの最大面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "min_ratio": { + "label": "最小アスペクト比", + "description": "対象となるバウンディングボックスに必要な最小の幅/高さ比。" + }, + "max_ratio": { + "label": "最大アスペクト比", + "description": "対象となるバウンディングボックスに許容される最大の幅/高さ比。" + }, + "threshold": { + "label": "信頼度しきい値", + "description": "オブジェクトを真陽性とみなすために必要な平均検知信頼度。" + }, + "min_score": { + "label": "最低信頼度", + "description": "オブジェクトをカウントするために必要な単一フレームでの最低検知信頼度。" + }, + "mask": { + "label": "フィルタマスク", + "description": "フレーム内でこのフィルタが適用される範囲を定義するポリゴン座標。" + }, + "raw_mask": { + "label": "Raw マスク" + } + }, + "mask": { + "label": "オブジェクトマスク", + "description": "指定領域でオブジェクト検知を行わないようにするためのマスクポリゴン。" + }, + "raw_mask": { + "label": "Raw マスク" + }, + "genai": { + "label": "GenAI オブジェクト設定", + "description": "追跡オブジェクトの説明生成や、生成 AI へのフレーム送信に関する GenAI オプション。", + "enabled": { + "label": "GenAI を有効化", + "description": "追跡オブジェクトの説明を GenAI で生成する機能を既定で有効にします。" + }, + "use_snapshot": { + "label": "スナップショットを使用", + "description": "GenAI 説明生成にサムネイルではなくオブジェクトスナップショットを使用します。" + }, + "prompt": { + "label": "キャプションプロンプト", + "description": "GenAI で説明を生成する際に使用するデフォルトのプロンプトテンプレート。" + }, + "object_prompts": { + "label": "オブジェクト別プロンプト", + "description": "特定のラベルに対する GenAI 出力をカスタマイズするためのオブジェクト別プロンプト。" + }, + "objects": { + "label": "GenAI 対象オブジェクト", + "description": "GenAI に既定で送信するオブジェクトラベルのリスト。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "GenAI 説明生成の対象となるためにオブジェクトが進入する必要があるゾーン。" + }, + "debug_save_thumbnails": { + "label": "サムネイルを保存", + "description": "デバッグや確認のため、GenAI に送信したサムネイルを保存します。" + }, + "send_triggers": { + "label": "GenAI 送信トリガー", + "description": "フレームを GenAI に送るタイミング(終了時、更新後など)を定義します。", + "tracked_object_end": { + "label": "終了時に送信", + "description": "追跡オブジェクトが終了した時点で GenAI にリクエストを送信します。" + }, + "after_significant_updates": { + "label": "早期 GenAI トリガー", + "description": "追跡オブジェクトに対して指定回数の重要な更新があった後、GenAI にリクエストを送信します。" + } + }, + "enabled_in_config": { + "label": "元の GenAI 状態", + "description": "元の静的設定で GenAI が有効化されていたかを示します。" + } + } + }, + "record": { + "label": "録画", + "enabled": { + "label": "録画を有効化", + "description": "このカメラの録画を有効または無効にします。" + }, + "expire_interval": { + "label": "録画クリーンアップ間隔", + "description": "期限切れ録画セグメントを削除するクリーンアップを実行する間隔 (分)。" + }, + "continuous": { + "label": "常時保持", + "description": "追跡オブジェクトやモーションに関係なく録画を保持する日数。アラートと検知の録画のみを保持したい場合は 0 を指定します。", + "days": { + "label": "保持日数", + "description": "録画を保持する日数。" + } + }, + "motion": { + "label": "モーション録画保持", + "description": "追跡オブジェクトに関係なくモーションでトリガーされた録画を保持する日数。アラートと検知の録画のみを保持したい場合は 0 を指定します。", + "days": { + "label": "保持日数", + "description": "録画を保持する日数。" + } + }, + "detections": { + "label": "検知録画保持", + "description": "検知イベントの録画保持設定。前後の撮影時間を含みます。", + "pre_capture": { + "label": "イベント前秒数", + "description": "検知イベントの前に録画に含める秒数。" + }, + "post_capture": { + "label": "イベント後秒数", + "description": "検知イベントの後に録画に含める秒数。" + }, + "retain": { + "label": "イベント保持", + "description": "検知イベントの録画保持設定。", + "days": { + "label": "保持日数", + "description": "検知イベント録画を保持する日数。" + }, + "mode": { + "label": "保持モード", + "description": "保持モード: all(全セグメントを保存)、motion(モーションがあるセグメントを保存)、active_objects(アクティブなオブジェクトを含むセグメントを保存)。" + } + } + }, + "alerts": { + "label": "アラート録画保持", + "description": "アラートイベントの録画保持設定。前後の撮影時間を含みます。", + "pre_capture": { + "label": "イベント前秒数", + "description": "アラートイベントの前に録画に含める秒数。" + }, + "post_capture": { + "label": "イベント後秒数", + "description": "アラートイベントの後に録画に含める秒数。" + }, + "retain": { + "label": "イベント保持", + "description": "アラートイベントの録画保持設定。", + "days": { + "label": "保持日数", + "description": "アラートイベント録画を保持する日数。" + }, + "mode": { + "label": "保持モード", + "description": "保持モード: all(全セグメントを保存)、motion(モーションがあるセグメントを保存)、active_objects(アクティブなオブジェクトを含むセグメントを保存)。" + } + } + }, + "export": { + "label": "エクスポート設定", + "description": "タイムラプスやハードウェアアクセラレーションなど、録画をエクスポートする際に使用する設定。", + "hwaccel_args": { + "label": "エクスポート用 hwaccel 引数", + "description": "エクスポート/トランスコード処理で使用するハードウェアアクセラレーション引数。" + }, + "max_concurrent": { + "label": "同時エクスポート数の上限", + "description": "同時に処理するエクスポートジョブの最大数。" + } + }, + "preview": { + "label": "プレビュー設定", + "description": "UI に表示される録画プレビューの品質を制御する設定。", + "quality": { + "label": "プレビュー品質", + "description": "プレビュー品質レベル (very_low, low, medium, high, very_high)。" + } + }, + "enabled_in_config": { + "label": "元の録画状態", + "description": "元の静的設定で録画が有効化されていたかを示します。" + }, + "description": "このカメラの録画と保持に関する設定。" + }, + "review": { + "label": "レビュー", + "alerts": { + "label": "アラート設定", + "description": "どの追跡オブジェクトがアラートを生成するか、およびアラートの保持方法に関する設定。", + "enabled": { + "label": "アラートを有効化", + "description": "このカメラのアラート生成を有効または無効にします。" + }, + "labels": { + "label": "アラートラベル", + "description": "アラート対象となるオブジェクトラベルのリスト(例: car, person)。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "アラートとみなされるためにオブジェクトが進入する必要があるゾーン。空欄ですべてのゾーンを許可。" + }, + "enabled_in_config": { + "label": "元のアラート状態", + "description": "元の静的設定でアラートが有効化されていたかを記録します。" + }, + "cutoff_time": { + "label": "アラート打ち切り時間", + "description": "アラートを引き起こすアクティビティが途絶えてからアラートを打ち切るまでの待機秒数。" + } + }, + "detections": { + "label": "検知設定", + "description": "どの追跡オブジェクトが(アラートではない)検知を生成するか、および検知の保持方法に関する設定。", + "enabled": { + "label": "検知を有効化", + "description": "このカメラの検知イベントを有効または無効にします。" + }, + "labels": { + "label": "検知ラベル", + "description": "検知イベントの対象となるオブジェクトラベルのリスト。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "検知とみなされるためにオブジェクトが進入する必要があるゾーン。空欄ですべてのゾーンを許可。" + }, + "cutoff_time": { + "label": "検知打ち切り時間", + "description": "検知を引き起こすアクティビティが途絶えてから検知を打ち切るまでの待機秒数。" + }, + "enabled_in_config": { + "label": "元の検知状態", + "description": "元の静的設定で検知が有効化されていたかを記録します。" + } + }, + "genai": { + "label": "GenAI 設定", + "description": "レビュー項目の説明やサマリーを生成 AI で作成する機能の制御。", + "enabled": { + "label": "GenAI 説明を有効化", + "description": "レビュー項目の GenAI 生成説明やサマリーを有効または無効にします。" + }, + "alerts": { + "label": "アラートに GenAI を使用", + "description": "アラート項目の説明を GenAI で生成します。" + }, + "detections": { + "label": "検知に GenAI を使用", + "description": "検知項目の説明を GenAI で生成します。" + }, + "image_source": { + "label": "レビュー画像ソース", + "description": "GenAI に送信する画像のソース(「preview」または「recordings」)。「recordings」は高品質ですがトークン消費が増えます。" + }, + "additional_concerns": { + "label": "追加の懸念事項", + "description": "このカメラのアクティビティ評価時に GenAI に考慮させる追加の懸念や注意事項のリスト。" + }, + "debug_save_thumbnails": { + "label": "サムネイルを保存", + "description": "デバッグや確認のため、GenAI プロバイダに送信したサムネイルを保存します。" + }, + "enabled_in_config": { + "label": "元の GenAI 状態", + "description": "元の静的設定で GenAI レビューが有効化されていたかを記録します。" + }, + "preferred_language": { + "label": "希望言語", + "description": "GenAI プロバイダに生成応答で要求する言語。" + }, + "activity_context_prompt": { + "label": "活動コンテキストプロンプト", + "description": "GenAI サマリーの文脈として、何が不審な活動で何がそうでないかを記述するカスタムプロンプト。" + } + }, + "description": "このカメラの UI 表示・保存で使用するアラート、検知、GenAI レビューサマリーの設定。" + }, + "snapshots": { + "label": "スナップショット", + "enabled": { + "label": "スナップショットを有効化", + "description": "このカメラのスナップショット保存を有効または無効にします。" + }, + "timestamp": { + "label": "タイムスタンプ重ね合わせ", + "description": "API スナップショットにタイムスタンプを重ねて表示します。" + }, + "bounding_box": { + "label": "バウンディングボックス重ね合わせ", + "description": "API スナップショットに追跡オブジェクトのバウンディングボックスを描画します。" + }, + "crop": { + "label": "スナップショットを切り抜き", + "description": "API スナップショットを検知オブジェクトのバウンディングボックスで切り抜きます。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "スナップショットを保存するためにオブジェクトが進入する必要があるゾーン。" + }, + "height": { + "label": "スナップショット高さ", + "description": "API スナップショットをリサイズする高さ (ピクセル)。空欄で元のサイズを維持。" + }, + "retain": { + "label": "スナップショット保持", + "description": "デフォルト保持日数とオブジェクト別上書きを含む、スナップショット保持設定。", + "default": { + "label": "デフォルト保持期間", + "description": "スナップショットを保持するデフォルト日数。" + }, + "mode": { + "label": "保持モード", + "description": "保持モード: all(全セグメントを保存)、motion(モーションがあるセグメントを保存)、active_objects(アクティブなオブジェクトを含むセグメントを保存)。" + }, + "objects": { + "label": "オブジェクト別保持", + "description": "オブジェクトごとのスナップショット保持日数の上書き。" + } + }, + "quality": { + "label": "スナップショット品質", + "description": "保存するスナップショットのエンコード品質 (0-100)。" + }, + "description": "このカメラの追跡オブジェクトに対する API 生成スナップショットの設定。" + }, + "timestamp_style": { + "label": "タイムスタンプスタイル", + "position": { + "label": "タイムスタンプ位置", + "description": "画像内のタイムスタンプ位置 (tl/tr/bl/br)。" + }, + "format": { + "label": "タイムスタンプ書式", + "description": "タイムスタンプに使用する日時書式文字列 (Python datetime 書式コード)。" + }, + "color": { + "label": "タイムスタンプ色", + "description": "タイムスタンプ文字色の RGB 値 (各 0-255)。", + "red": { + "label": "赤", + "description": "タイムスタンプ色の赤成分 (0-255)。" + }, + "green": { + "label": "緑", + "description": "タイムスタンプ色の緑成分 (0-255)。" + }, + "blue": { + "label": "青", + "description": "タイムスタンプ色の青成分 (0-255)。" + } + }, + "thickness": { + "label": "タイムスタンプ太さ", + "description": "タイムスタンプ文字の線の太さ。" + }, + "effect": { + "label": "タイムスタンプエフェクト", + "description": "タイムスタンプ文字の視覚効果 (none, solid, shadow)。" + }, + "description": "録画とスナップショットの映像内に表示されるタイムスタンプのスタイル設定。" + }, + "semantic_search": { + "label": "セマンティック検索", + "triggers": { + "label": "トリガー", + "description": "カメラ別のセマンティック検索トリガーの動作と一致条件。", + "friendly_name": { + "label": "表示名", + "description": "このトリガーの UI 表示用の任意の名前。" + }, + "enabled": { + "label": "このトリガーを有効化", + "description": "このセマンティック検索トリガーを有効または無効にします。" + }, + "type": { + "label": "トリガー種別", + "description": "トリガー種別: 「thumbnail」(画像に対する一致)または「description」(テキストに対する一致)。" + }, + "data": { + "label": "トリガー内容", + "description": "追跡オブジェクトと照合するテキストフレーズまたはサムネイル ID。" + }, + "threshold": { + "label": "トリガーしきい値", + "description": "このトリガーを発火させるために必要な最低類似度スコア (0-1)。" + }, + "actions": { + "label": "トリガーアクション", + "description": "トリガー一致時に実行するアクションのリスト (notification, sub_label, attribute)。" + } + }, + "description": "オブジェクト埋め込みを構築・クエリして類似項目を見つけるセマンティック検索の設定。" + }, + "face_recognition": { + "label": "顔認識", + "enabled": { + "label": "顔認識を有効化", + "description": "顔認識を有効または無効にします。" + }, + "min_area": { + "label": "顔の最小面積", + "description": "認識を試みるために必要な顔ボックスの最小面積 (ピクセル)。" + }, + "description": "このカメラの顔検知と顔認識の設定。" + }, + "lpr": { + "label": "ナンバープレート認識", + "description": "ナンバープレート認識の設定。検知しきい値、書式整形、既知ナンバーなどを含みます。", + "enabled": { + "label": "LPR を有効化", + "description": "このカメラで LPR を有効または無効にします。" + }, + "min_area": { + "label": "プレート最小面積", + "description": "認識を試みるために必要なプレート最小面積 (ピクセル)。" + }, + "enhancement": { + "label": "強調レベル", + "description": "OCR 前にプレート切り出し画像に適用する強調レベル (0-10)。値を大きくしても常に改善するとは限らず、5 を超えると夜間プレートでのみ有効な場合があるため注意が必要です。" + }, + "expire_time": { + "label": "失効秒数", + "description": "未検知ナンバーをトラッカーから失効させるまでの秒数(専用 LPR カメラのみ)。" + } + }, + "profiles": { + "label": "プロファイル", + "description": "実行時に有効化できる部分上書きを持つ、名前付きの設定プロファイル。" + }, + "onvif": { + "label": "ONVIF", + "description": "このカメラの ONVIF 接続および PTZ オート追跡の設定。", + "host": { + "label": "ONVIF ホスト", + "description": "このカメラの ONVIF サービスのホスト(オプションでスキーマも)。" + }, + "port": { + "label": "ONVIF ポート", + "description": "ONVIF サービスのポート番号。" + }, + "user": { + "label": "ONVIF ユーザー名", + "description": "ONVIF 認証用のユーザー名。ONVIF に admin ユーザーが必要なデバイスもあります。" + }, + "password": { + "label": "ONVIF パスワード", + "description": "ONVIF 認証用のパスワード。" + }, + "tls_insecure": { + "label": "TLS 検証を無効化", + "description": "ONVIF の TLS 検証をスキップし、ダイジェスト認証も無効化します(安全でないため、信頼できるネットワークでのみ使用)。" + }, + "profile": { + "label": "ONVIF プロファイル", + "description": "PTZ 制御に使用する ONVIF メディアプロファイル(トークンまたは名前で指定)。未設定の場合、有効な PTZ 設定を持つ最初のプロファイルが自動選択されます。" + }, + "autotracking": { + "label": "オートトラッキング", + "description": "PTZ カメラの動作で移動中のオブジェクトを自動追跡し、フレーム中央に保ちます。", + "enabled": { + "label": "オートトラッキングを有効化", + "description": "検知オブジェクトの PTZ オート追跡を有効または無効にします。" + }, + "calibrate_on_startup": { + "label": "起動時にキャリブレーション", + "description": "追跡精度を向上させるため、起動時に PTZ モーター速度を測定します。キャリブレーション後に movement_weights が設定に書き込まれます。" + }, + "zooming": { + "label": "ズームモード", + "description": "ズーム動作の制御: disabled (パン/チルトのみ)、absolute (互換性が最も高い)、relative (パン/チルト/ズーム同時)。" + }, + "zoom_factor": { + "label": "ズーム倍率", + "description": "追跡対象オブジェクトのズームレベルを制御します。値が小さいほど広い範囲を保ち、大きいほどズームインしますが追跡を失う可能性があります。0.1 〜 0.75 の範囲で指定。" + }, + "track": { + "label": "追跡対象オブジェクト", + "description": "オートトラッキングを発動させるオブジェクト種別のリスト。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "オートトラッキング開始前にオブジェクトが進入する必要があるゾーン。" + }, + "return_preset": { + "label": "復帰プリセット", + "description": "追跡終了後にカメラが戻る、ファームウェアに設定されている ONVIF プリセット名。" + }, + "timeout": { + "label": "復帰タイムアウト", + "description": "追跡を失ってからカメラをプリセット位置に戻すまでの待機秒数。" + }, + "movement_weights": { + "label": "動作重み", + "description": "カメラキャリブレーションによって自動生成される値。手動で変更しないでください。" + }, + "enabled_in_config": { + "label": "元のオート追跡状態", + "description": "オートトラッキングが設定で有効化されていたかを追跡する内部フィールド。" + } + }, + "ignore_time_mismatch": { + "label": "時刻差異を無視", + "description": "ONVIF 通信時に、カメラと Frigate サーバー間の時刻同期差異を無視します。" + } + }, + "best_image_timeout": { + "label": "ベストイメージタイムアウト", + "description": "最高信頼度スコアの画像を取得するまでの待機時間。" + }, + "type": { + "label": "カメラタイプ", + "description": "カメラタイプ" + }, + "ui": { + "label": "カメラ UI", + "description": "UI 内でのこのカメラの表示順と表示設定。順序はデフォルトダッシュボードに影響します。より細かい制御にはカメラグループを使用してください。", + "order": { + "label": "UI 表示順", + "description": "UI 内でのカメラの並び順に使用される数値(デフォルトダッシュボードとリスト)。値が大きいほど後ろに表示されます。" + }, + "dashboard": { + "label": "UI に表示", + "description": "このカメラを Frigate UI 全体に表示するかを切り替えます。無効化した場合、再表示するには設定ファイルを手動編集する必要があります。" + } + }, + "webui_url": { + "label": "カメラ URL", + "description": "システムページからカメラに直接アクセスするための URL" + }, + "zones": { + "label": "ゾーン", + "description": "ゾーンを使うとフレーム内の特定領域を定義でき、オブジェクトがその領域内にあるかを判定できます。", + "friendly_name": { + "label": "ゾーン名", + "description": "Frigate UI に表示されるユーザー向けのゾーン名。未設定の場合、ゾーン名の整形版が使用されます。" + }, + "enabled": { + "label": "有効", + "description": "このゾーンを有効または無効にします。無効化したゾーンは実行時に無視されます。" + }, + "enabled_in_config": { + "label": "ゾーンの元の状態を保持する。" + }, + "filters": { + "label": "ゾーンフィルタ", + "description": "このゾーン内のオブジェクトに適用するフィルタ。誤検知を減らすか、ゾーン内に存在するとみなすオブジェクトを制限するために使用します。", + "min_area": { + "label": "最小オブジェクト面積", + "description": "このオブジェクト種別に必要なバウンディングボックスの最小面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "max_area": { + "label": "最大オブジェクト面積", + "description": "このオブジェクト種別に許容されるバウンディングボックスの最大面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "min_ratio": { + "label": "最小アスペクト比", + "description": "対象となるバウンディングボックスに必要な最小の幅/高さ比。" + }, + "max_ratio": { + "label": "最大アスペクト比", + "description": "対象となるバウンディングボックスに許容される最大の幅/高さ比。" + }, + "threshold": { + "label": "信頼度しきい値", + "description": "オブジェクトを真陽性とみなすために必要な平均検知信頼度。" + }, + "min_score": { + "label": "最低信頼度", + "description": "オブジェクトをカウントするために必要な単一フレームでの最低検知信頼度。" + }, + "mask": { + "label": "フィルタマスク", + "description": "フレーム内でこのフィルタが適用される範囲を定義するポリゴン座標。" + }, + "raw_mask": { + "label": "Raw マスク" + } + }, + "coordinates": { + "label": "座標", + "description": "ゾーン領域を定義するポリゴン座標。カンマ区切り文字列または座標文字列のリスト。座標は相対値 (0-1) または絶対値 (旧形式) で指定。" + }, + "distances": { + "label": "実世界の距離", + "description": "ゾーン四辺形の各辺に対応する実世界の距離(任意)。速度や距離計算に使用します。設定する場合は必ず 4 つの値が必要です。" + }, + "inertia": { + "label": "慣性フレーム数", + "description": "オブジェクトをゾーン内に存在するとみなすために、連続して検知される必要があるフレーム数。一時的な検知を除外するのに役立ちます。" + }, + "loitering_time": { + "label": "うろつき秒数", + "description": "うろつきとみなされるためにオブジェクトがゾーン内にとどまる必要がある秒数。0 でうろつき検知を無効化。" + }, + "speed_threshold": { + "label": "最低速度", + "description": "ゾーン内に存在するとみなされるためにオブジェクトに必要な最低速度(distances 設定時は実世界単位)。速度ベースのゾーントリガーに使用。" + }, + "objects": { + "label": "トリガーオブジェクト", + "description": "このゾーンをトリガーできるオブジェクト種別のリスト(labelmap から)。文字列または文字列リストで指定。空ですべてのオブジェクトが対象。" + } + }, + "enabled_in_config": { + "label": "元のカメラ状態", + "description": "カメラの元の状態を保持する。" } } diff --git a/web/public/locales/ja/config/global.json b/web/public/locales/ja/config/global.json index f563742e18..8efea26ce8 100644 --- a/web/public/locales/ja/config/global.json +++ b/web/public/locales/ja/config/global.json @@ -8,34 +8,40 @@ "description": "Home Assistant OS の Frigate プロセスに設定する環境変数のキー/値ペア。HAOS をご利用でない場合は、代わりに Docker の環境変数設定を使用してください。" }, "audio": { - "label": "音声検出", + "label": "音声検知", "enabled": { - "label": "音声検知を有効化" + "label": "音声検知を有効化", + "description": "全カメラの音声イベント検知を有効または無効にします(カメラ別に上書き可能)。" }, "min_volume": { "label": "最小ボリューム", - "description": "オーディオ検出を実行するために必要な最小RMS音量閾値。値を小さくすると感度が高くなります(例:200=高、500=中、1000=低)。" + "description": "音声検知を実行するために必要な最小RMS音量閾値。値を小さくすると感度が高くなります(例:200=高、500=中、1000=低)。" }, "filters": { "label": "音声フィルタ", - "description": "誤検出を減らすために使用される信頼度閾値などのフィルタ設定(オーディオタイプごと)。" + "description": "誤検知を減らすために使用される信頼度閾値などのフィルタ設定(オーディオタイプごと)。", + "threshold": { + "label": "音声の最低信頼度", + "description": "音声イベントとしてカウントするために必要な最低信頼度しきい値。" + } }, "max_not_heard": { "label": "タイムアウト終了", - "description": "オーディオイベントが終了するまでの残り秒数(設定されたオーディオタイプを除く)。" + "description": "音声検知が終了するまでの残り秒数(設定されたオーディオタイプを除く)。" }, "listen": { "label": "リスニングタイプ", - "description": "検出対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。" + "description": "検知対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。" }, "enabled_in_config": { "label": "元の音声状態", - "description": "静的設定ファイルで、音声検出が当初有効にされていたかどうかを示します。" + "description": "静的設定ファイルで、音声検知が当初有効にされていたかどうかを示します。" }, "num_threads": { - "label": "検出スレッド", - "description": "音声検出処理に使用するスレッド数。" - } + "label": "検知スレッド", + "description": "音声検知処理に使用するスレッド数。" + }, + "description": "全カメラの音声ベースのイベント検知設定(カメラ別に上書き可能)。" }, "logger": { "default": { @@ -46,7 +52,7 @@ "label": "プロセス毎のログレベル", "description": "コンポーネントごとのログレベルの上書きにより、特定のモジュールのログ詳細度を増減できます。" }, - "label": "ログ記録", + "label": "ロギング", "description": "デフォルトのログ詳細度とコンポーネントごとのログレベルの上書きを制御します。" }, "auth": { @@ -99,7 +105,7 @@ }, "version": { "label": "現在の設定バージョン", - "description": "移行やフォーマット変更の検出に役立つ、アクティブな設定の数値または文字列バージョン。" + "description": "移行やフォーマット変更の検知に役立つ、アクティブな設定の数値または文字列バージョン。" }, "audio_transcription": { "label": "音声文字起こし", @@ -109,7 +115,20 @@ "description": "音声を受信した時点で、リアルタイム文字起こしを有効にします。" }, "enabled": { - "label": "音声文字起こしを有効にする" + "label": "音声文字起こしを有効にする", + "description": "全カメラの自動音声文字起こしを有効または無効にします(カメラ別に上書き可能)。" + }, + "language": { + "label": "文字起こし言語", + "description": "文字起こし/翻訳に使用する言語コード(例: 英語は 'en')。対応言語コードは https://whisper-api.com/docs/languages/ を参照。" + }, + "device": { + "label": "文字起こしデバイス", + "description": "文字起こしモデルを実行するデバイスキー(CPU/GPU)。現在 GPU は NVIDIA CUDA のみサポート。" + }, + "model_size": { + "label": "モデルサイズ", + "description": "オフライン音声イベント文字起こしに使用するモデルサイズ。" } }, "birdseye": { @@ -126,6 +145,42 @@ "order": { "label": "位置", "description": "バードアイレイアウトにおけるカメラの並び順を決定する数値。" + }, + "restream": { + "label": "RTSP リストリーム", + "description": "バードアイ出力を RTSP フィードとしてリストリームします。有効化するとバードアイが常時動作します。" + }, + "width": { + "label": "幅", + "description": "合成されたバードアイフレームの出力幅(ピクセル)。" + }, + "height": { + "label": "高さ", + "description": "合成されたバードアイフレームの出力高さ(ピクセル)。" + }, + "quality": { + "label": "エンコード品質", + "description": "バードアイ mpeg1 フィードのエンコード品質(1 が最高、31 が最低)。" + }, + "inactivity_threshold": { + "label": "非アクティブしきい値", + "description": "この秒数だけ非アクティブが続くと、カメラはバードアイに表示されなくなります。" + }, + "layout": { + "label": "レイアウト", + "description": "バードアイ合成のレイアウトオプション。", + "scaling_factor": { + "label": "スケーリング係数", + "description": "レイアウト計算器が使用するスケーリング係数(範囲 1.0 〜 5.0)。" + }, + "max_cameras": { + "label": "最大カメラ数", + "description": "バードアイに同時表示するカメラの最大数。最新のカメラが表示されます。" + } + }, + "idle_heartbeat_fps": { + "label": "アイドル時ハートビート FPS", + "description": "アイドル時に最後の合成バードアイフレームを再送するフレームレート。0 で無効。" } }, "database": { @@ -137,17 +192,63 @@ } }, "detect": { - "label": "物体検出", - "description": "物体検出の実行やトラッカーの初期化に使用される、検出や検出ロールの設定。", + "label": "物体検知", + "description": "物体検知の実行やトラッカーの初期化に使用される、検知や検知ロールの設定。", "enabled": { - "label": "物体検知を有効にする" + "label": "物体検知を有効にする", + "description": "全カメラの物体検知を有効または無効にします(カメラ別に上書き可能)。" }, "height": { - "label": "高さを検出", - "description": "検出ストリームに使用するフレーム高さ(ピクセル)。ネイティブストリーム解像度を使用する場合は、空欄のままにしてください。" + "label": "高さを検知", + "description": "検知ストリームに使用するフレーム高さ(ピクセル)。ネイティブストリーム解像度を使用する場合は、空欄のままにしてください。" }, "width": { - "label": "幅を検出" + "label": "幅を検知", + "description": "検知ストリームで使用するフレーム幅 (ピクセル)。空欄でストリームのネイティブ解像度を使用。" + }, + "fps": { + "label": "検知 FPS", + "description": "検知を実行する目標 FPS。低くするほど CPU 使用率が下がります(推奨値は 5、極めて高速な物体を追跡する場合のみ最大 10 まで上げてください)。" + }, + "min_initialized": { + "label": "最小初期化フレーム数", + "description": "追跡オブジェクトを生成するために必要な連続検知ヒット数。値を大きくすると誤初期化が減ります。デフォルトは fps の半分。" + }, + "max_disappeared": { + "label": "最大消失フレーム数", + "description": "追跡オブジェクトが消失したと判断するまでの未検知フレーム数。" + }, + "stationary": { + "label": "静止オブジェクト設定", + "description": "一定時間静止しているオブジェクトを検知・管理するための設定。", + "interval": { + "label": "静止チェック間隔", + "description": "静止オブジェクトを確認するための検知を、何フレームおきに実行するか。" + }, + "threshold": { + "label": "静止しきい値", + "description": "オブジェクトを静止状態とみなすために必要な位置変化のないフレーム数。" + }, + "max_frames": { + "label": "最大追跡フレーム", + "description": "静止オブジェクトを破棄するまでの追跡フレーム数の上限。", + "default": { + "label": "デフォルト最大フレーム", + "description": "静止オブジェクトの追跡を停止するまでのデフォルト最大フレーム数。" + }, + "objects": { + "label": "オブジェクト別最大フレーム", + "description": "静止オブジェクト追跡の最大フレーム数をオブジェクトごとに上書きします。" + } + }, + "classifier": { + "label": "ビジュアル分類器を有効化", + "description": "バウンディングボックスが揺らいでも真に静止しているオブジェクトを検知するため、ビジュアル分類器を使用します。" + } + }, + "annotation_offset": { + "label": "注釈オフセット", + "description": "タイムライン上のバウンディングボックスを録画と揃えるため、検知注釈を時間方向にずらすミリ秒数。正負どちらも指定可能。" } }, "go2rtc": { @@ -156,12 +257,1379 @@ }, "mqtt": { "label": "MQTT", - "description": "テレメトリー、スナップショット、およびイベントの詳細をMQTTブローカーに接続して公開するための設定。", + "description": "テレメトリ、スナップショット、およびイベントの詳細をMQTTブローカーに接続して公開するための設定。", "enabled": { - "label": "MQTTを有効にする" + "label": "MQTTを有効にする", + "description": "状態、イベント、スナップショットの MQTT 連携を有効または無効にします。" + }, + "host": { + "label": "MQTT ホスト", + "description": "MQTT ブローカーのホスト名または IP アドレス。" + }, + "port": { + "label": "MQTT ポート", + "description": "MQTT ブローカーのポート(プレーン MQTT は通常 1883)。" + }, + "topic_prefix": { + "label": "トピックプレフィックス", + "description": "Frigate の全 MQTT トピックに付与するプレフィックス。複数インスタンスを起動する場合は重複しないようにします。" + }, + "client_id": { + "label": "クライアント ID", + "description": "MQTT ブローカー接続時に使用するクライアント識別子。インスタンスごとに一意である必要があります。" + }, + "stats_interval": { + "label": "統計送信間隔", + "description": "システムとカメラの統計を MQTT に発行する間隔(秒)。" + }, + "user": { + "label": "MQTT ユーザー名", + "description": "任意の MQTT ユーザー名。環境変数やシークレット経由でも指定可能。" + }, + "password": { + "label": "MQTT パスワード", + "description": "任意の MQTT パスワード。環境変数やシークレット経由でも指定可能。" + }, + "tls_ca_certs": { + "label": "TLS CA 証明書", + "description": "ブローカーへの TLS 接続用 CA 証明書のパス(自己署名証明書用)。" + }, + "tls_client_cert": { + "label": "クライアント証明書", + "description": "TLS 相互認証用のクライアント証明書パス。クライアント証明書を使う場合は user/password を設定しないでください。" + }, + "tls_client_key": { + "label": "クライアント鍵", + "description": "クライアント証明書の秘密鍵パス。" + }, + "tls_insecure": { + "label": "TLS 検証を無効化", + "description": "ホスト名検証をスキップして安全でない TLS 接続を許可します(非推奨)。" + }, + "qos": { + "label": "MQTT QoS", + "description": "MQTT パブリッシュ/サブスクライブの QoS レベル(0、1、または 2)。" } }, "telemetry": { - "label": "テレメトリー" + "label": "テレメトリ", + "description": "GPU やネットワーク帯域監視を含む、システムテレメトリと統計のオプション。", + "network_interfaces": { + "label": "ネットワークインターフェイス", + "description": "帯域統計を監視するネットワークインターフェイス名のプレフィックスのリスト。" + }, + "stats": { + "label": "システム統計", + "description": "各種システム・GPU 統計の収集を有効/無効にするオプション。", + "amd_gpu_stats": { + "label": "AMD GPU 統計", + "description": "AMD GPU が存在する場合、AMD GPU 統計の収集を有効にします。" + }, + "intel_gpu_stats": { + "label": "Intel GPU 統計", + "description": "Intel GPU が存在する場合、Intel GPU 統計の収集を有効にします。" + }, + "network_bandwidth": { + "label": "ネットワーク帯域", + "description": "カメラの ffmpeg プロセスと検出器のプロセスごとのネットワーク帯域監視を有効にします(capabilities が必要)。" + }, + "intel_gpu_device": { + "label": "Intel GPU デバイス", + "description": "複数の Intel GPU が存在する場合、特定のデバイスに統計を絞り込むための PCI バスアドレスまたは DRM デバイスパス(例: /dev/dri/card1)。" + } + }, + "version_check": { + "label": "バージョンチェック", + "description": "新しい Frigate のバージョンが利用可能かを外部にチェックする機能を有効にします。" + } + }, + "notifications": { + "label": "通知", + "description": "全カメラの通知を有効化・制御する設定(カメラ別に上書き可能)。", + "enabled": { + "label": "通知を有効化", + "description": "全カメラの通知を有効または無効にします(カメラ別に上書き可能)。" + }, + "email": { + "label": "通知メールアドレス", + "description": "プッシュ通知用、または特定の通知プロバイダで必要となるメールアドレス。" + }, + "cooldown": { + "label": "クールダウン期間", + "description": "受信者への通知連投を避けるための通知間隔(秒)。" + }, + "enabled_in_config": { + "label": "元の通知状態", + "description": "元の静的設定で通知が有効化されていたかを示します。" + } + }, + "networking": { + "label": "ネットワーキング", + "description": "Frigate エンドポイントの IPv6 有効化など、ネットワーク関連の設定。", + "ipv6": { + "label": "IPv6 設定", + "description": "Frigate ネットワークサービス向けの IPv6 固有設定。", + "enabled": { + "label": "IPv6 を有効化", + "description": "適用可能な Frigate サービス(API および UI)で IPv6 サポートを有効にします。" + } + }, + "listen": { + "label": "待ち受けポート設定", + "description": "内部・外部の待ち受けポートの設定。上級者向け。多くの場合 Docker compose ファイルの ports セクションを変更することを推奨します。", + "internal": { + "label": "内部ポート", + "description": "Frigate の内部待ち受けポート(デフォルト 5000)。" + }, + "external": { + "label": "外部ポート", + "description": "Frigate の外部待ち受けポート(デフォルト 8971)。" + } + } + }, + "proxy": { + "label": "プロキシ", + "description": "認証済みユーザーヘッダーを渡すリバースプロキシの背後で Frigate を運用する際の設定。", + "header_map": { + "label": "ヘッダーマッピング", + "description": "プロキシベース認証のため、受信したプロキシヘッダーを Frigate のユーザー・ロールフィールドにマッピングします。", + "user": { + "label": "ユーザーヘッダー", + "description": "上流プロキシから提供される認証済みユーザー名を含むヘッダー。" + }, + "role": { + "label": "ロールヘッダー", + "description": "上流プロキシから提供される認証済みユーザーのロールまたはグループを含むヘッダー。" + }, + "role_map": { + "label": "ロールマッピング", + "description": "上流のグループ値を Frigate のロールにマッピングします(例: admin グループを admin ロールに)。" + } + }, + "logout_url": { + "label": "ログアウト URL", + "description": "プロキシ経由でログアウトする際にユーザーをリダイレクトする URL。" + }, + "auth_secret": { + "label": "プロキシシークレット", + "description": "信頼できるプロキシかを検証するため、X-Proxy-Secret ヘッダーと照合する任意のシークレット。" + }, + "default_role": { + "label": "デフォルトロール", + "description": "ロールマッピングが適用されない場合に、プロキシ認証ユーザーに割り当てるデフォルトロール(admin または viewer)。" + }, + "separator": { + "label": "区切り文字", + "description": "プロキシヘッダーで複数値を渡す際に分割に使用する文字。" + } + }, + "tls": { + "label": "TLS", + "description": "Frigate の Web エンドポイント(ポート 8971)の TLS 設定。", + "enabled": { + "label": "TLS を有効化", + "description": "設定された TLS ポートで Frigate の Web UI と API の TLS を有効にします。" + } + }, + "ui": { + "label": "UI", + "description": "タイムゾーン、日時のフォーマット、単位など、ユーザーインターフェイスに関する設定。", + "timezone": { + "label": "タイムゾーン", + "description": "UI 全体に表示する任意のタイムゾーン(未設定時はブラウザのローカル時刻)。" + }, + "time_format": { + "label": "時刻表記", + "description": "UI で使用する時刻表記(browser、12hour、または 24hour)。" + }, + "date_style": { + "label": "日付スタイル", + "description": "UI で使用する日付スタイル(full、long、medium、short)。" + }, + "time_style": { + "label": "時刻スタイル", + "description": "UI で使用する時刻スタイル(full、long、medium、short)。" + }, + "unit_system": { + "label": "単位系", + "description": "UI と MQTT で使用する表示単位系(metric または imperial)。" + } + }, + "detectors": { + "label": "検出器ハードウェア", + "description": "物体検出器(CPU、GPU、ONNX バックエンド)と検出器固有のモデル設定。", + "type": { + "label": "タイプ" + }, + "model": { + "label": "検出器固有モデル設定", + "description": "検出器固有のモデル設定オプション(パス、入力サイズなど)。", + "path": { + "label": "カスタム物体検知モデルパス", + "description": "カスタム検知モデルファイルへのパス(または Frigate+ モデルの場合は plus://)。" + }, + "labelmap_path": { + "label": "カスタム検出器のラベルマップ", + "description": "検出器で数値クラスを文字列ラベルに対応付けるラベルマップファイルのパス。" + }, + "width": { + "label": "物体検知モデル入力幅", + "description": "モデル入力テンソルの幅(ピクセル)。" + }, + "height": { + "label": "物体検知モデル入力高さ", + "description": "モデル入力テンソルの高さ(ピクセル)。" + }, + "labelmap": { + "label": "ラベルマップカスタマイズ", + "description": "標準ラベルマップに統合する上書きや再マッピングのエントリ。" + }, + "attributes_map": { + "label": "オブジェクトラベル→属性ラベルのマップ", + "description": "メタデータを付与するためのオブジェクトラベル→属性ラベルのマッピング(例: 'car' -> ['license_plate'])。" + }, + "input_tensor": { + "label": "モデル入力テンソル形状", + "description": "モデルが期待するテンソル形式: 'nhwc' または 'nchw'。" + }, + "input_pixel_format": { + "label": "モデル入力ピクセルカラー形式", + "description": "モデルが期待するピクセルカラースペース: 'rgb'、'bgr'、または 'yuv'。" + }, + "input_dtype": { + "label": "モデル入力データ型", + "description": "モデル入力テンソルのデータ型(例: 'float32')。" + }, + "model_type": { + "label": "物体検知モデル種別", + "description": "一部の検出器が最適化に使用する検知モデルのアーキテクチャ種別(ssd, yolox, yolonas)。" + } + }, + "model_path": { + "label": "検出器固有モデルパス", + "description": "選択した検出器が必要とする検出器モデルバイナリのファイルパス。" + }, + "axengine": { + "label": "AXEngine NPU", + "description": "AXEngine ランタイム経由でコンパイル済み .axmodel ファイルを実行する AXERA AX650N/AX8850N NPU 検出器。" + }, + "cpu": { + "label": "CPU", + "description": "ハードウェアアクセラレーションなしにホスト CPU で TensorFlow Lite モデルを実行する CPU TFLite 検出器。非推奨。", + "num_threads": { + "label": "検知スレッド数", + "description": "CPU ベースの推論に使用するスレッド数。" + } + }, + "deepstack": { + "label": "DeepStack", + "description": "リモートの DeepStack HTTP API に画像を送信して推論する DeepStack/CodeProject.AI 検出器。非推奨。", + "api_url": { + "label": "DeepStack API URL", + "description": "DeepStack API の URL。" + }, + "api_timeout": { + "label": "DeepStack API タイムアウト(秒)", + "description": "DeepStack API リクエストの最大許容時間。" + }, + "api_key": { + "label": "DeepStack API キー(必要な場合)", + "description": "認証付き DeepStack サービス用の任意の API キー。" + } + }, + "degirum": { + "label": "DeGirum", + "description": "DeGirum クラウドまたはローカル推論サービス経由でモデルを実行する DeGirum 検出器。", + "location": { + "label": "推論ロケーション", + "description": "DeGirum 推論エンジンのロケーション(例: '@cloud'、'127.0.0.1')。" + }, + "zoo": { + "label": "モデル Zoo", + "description": "DeGirum モデル zoo のパスまたは URL。" + }, + "token": { + "label": "DeGirum クラウドトークン", + "description": "DeGirum クラウドアクセス用のトークン。" + } + }, + "edgetpu": { + "label": "EdgeTPU", + "description": "EdgeTPU デリゲートを使用して Coral EdgeTPU 用にコンパイルされた TensorFlow Lite モデルを実行する EdgeTPU 検出器。", + "device": { + "label": "デバイス種別", + "description": "EdgeTPU 推論に使用するデバイス(例: 'usb'、'pci')。" + } + }, + "hailo8l": { + "label": "Hailo-8/Hailo-8L", + "description": "HEF モデルと HailoRT SDK を使用して Hailo ハードウェア上で推論する Hailo-8/Hailo-8L 検出器。", + "device": { + "label": "デバイス種別", + "description": "Hailo 推論に使用するデバイス(例: 'PCIe'、'M.2')。" + } + }, + "memryx": { + "label": "MemryX", + "description": "MemryX アクセラレータ上でコンパイル済み DFP モデルを実行する MemryX MX3 検出器。", + "device": { + "label": "デバイスパス", + "description": "MemryX 推論に使用するデバイス(例: 'PCIe')。" + } + }, + "onnx": { + "label": "ONNX", + "description": "ONNX モデルを実行する ONNX 検出器。利用可能な場合は CUDA/ROCm/OpenVINO などのアクセラレーションバックエンドを使用します。", + "device": { + "label": "デバイス種別", + "description": "ONNX 推論に使用するデバイス(例: 'AUTO'、'CPU'、'GPU')。" + } + }, + "openvino": { + "label": "OpenVINO", + "description": "AMD・Intel CPU、Intel GPU、Intel VPU ハードウェア用の OpenVINO 検出器。", + "device": { + "label": "デバイス種別", + "description": "OpenVINO 推論に使用するデバイス(例: 'CPU'、'GPU'、'NPU')。" + } + }, + "rknn": { + "label": "RKNN", + "description": "Rockchip NPU 用の RKNN 検出器。Rockchip ハードウェア上でコンパイル済み RKNN モデルを実行します。", + "num_cores": { + "label": "使用するNPUコア数。", + "description": "使用する NPU コア数(0 で自動)。" + } + }, + "synaptics": { + "label": "Synaptics", + "description": "Synaptics ハードウェア上で Synap SDK を使い .synap 形式のモデルを実行する Synaptics NPU 検出器。" + }, + "teflon_tfl": { + "label": "Teflon", + "description": "対応 GPU での推論を高速化するため Mesa Teflon delegate ライブラリを使用する TFLite 用の Teflon delegate 検出器。" + }, + "tensorrt": { + "label": "TensorRT", + "description": "シリアライズ済み TensorRT エンジンを使用して Nvidia Jetson デバイス上で推論を高速化する TensorRT 検出器。", + "device": { + "label": "GPU デバイスインデックス", + "description": "使用する GPU デバイスインデックス。" + } + }, + "zmq": { + "label": "ZMQ IPC", + "description": "ZeroMQ IPC エンドポイント経由で外部プロセスに推論をオフロードする ZMQ IPC 検出器。", + "endpoint": { + "label": "ZMQ IPC エンドポイント", + "description": "接続する ZMQ エンドポイント。" + }, + "request_timeout_ms": { + "label": "ZMQ リクエストタイムアウト(ミリ秒)", + "description": "ZMQ リクエストのタイムアウト(ミリ秒)。" + }, + "linger_ms": { + "label": "ZMQ ソケット linger(ミリ秒)", + "description": "ソケットの linger 期間(ミリ秒)。" + } + } + }, + "model": { + "label": "検知モデル", + "description": "カスタム物体検知モデルとその入力形状を設定します。", + "path": { + "label": "カスタム物体検知モデルパス", + "description": "カスタム検知モデルファイルへのパス(または Frigate+ モデルの場合は plus://)。" + }, + "labelmap_path": { + "label": "カスタム検出器のラベルマップ", + "description": "検出器で数値クラスを文字列ラベルに対応付けるラベルマップファイルのパス。" + }, + "width": { + "label": "物体検知モデル入力幅", + "description": "モデル入力テンソルの幅(ピクセル)。" + }, + "height": { + "label": "物体検知モデル入力高さ", + "description": "モデル入力テンソルの高さ(ピクセル)。" + }, + "labelmap": { + "label": "ラベルマップカスタマイズ", + "description": "標準ラベルマップに統合する上書きや再マッピングのエントリ。" + }, + "attributes_map": { + "label": "オブジェクトラベル→属性ラベルのマップ", + "description": "メタデータを付与するためのオブジェクトラベル→属性ラベルのマッピング(例: 'car' -> ['license_plate'])。" + }, + "input_tensor": { + "label": "モデル入力テンソル形状", + "description": "モデルが期待するテンソル形式: 'nhwc' または 'nchw'。" + }, + "input_pixel_format": { + "label": "モデル入力ピクセルカラー形式", + "description": "モデルが期待するピクセルカラースペース: 'rgb'、'bgr'、または 'yuv'。" + }, + "input_dtype": { + "label": "モデル入力データ型", + "description": "モデル入力テンソルのデータ型(例: 'float32')。" + }, + "model_type": { + "label": "物体検知モデル種別", + "description": "一部の検出器が最適化に使用する検知モデルのアーキテクチャ種別(ssd, yolox, yolonas)。" + } + }, + "genai": { + "label": "生成AI設定", + "description": "オブジェクトの説明やレビューサマリーを生成するために統合された生成 AI プロバイダの設定。", + "api_key": { + "label": "API キー", + "description": "一部のプロバイダで必要となる API キー(環境変数経由でも設定可能)。" + }, + "base_url": { + "label": "ベース URL", + "description": "セルフホスト型または互換プロバイダ向けのベース URL(例: Ollama インスタンス)。" + }, + "model": { + "label": "モデル", + "description": "説明やサマリーの生成にプロバイダから使用するモデル。" + }, + "provider": { + "label": "プロバイダ", + "description": "使用する生成 AI プロバイダ(例: ollama、gemini、openai)。" + }, + "roles": { + "label": "ロール", + "description": "GenAI のロール(chat、descriptions、embeddings)。1 ロールにつき 1 プロバイダ。" + }, + "provider_options": { + "label": "プロバイダオプション", + "description": "GenAI クライアントに渡すプロバイダ固有の追加オプション。" + }, + "runtime_options": { + "label": "ランタイムオプション", + "description": "推論呼び出しごとにプロバイダに渡されるランタイムオプション。" + } + }, + "ffmpeg": { + "label": "FFmpeg", + "description": "FFmpeg の設定。バイナリパス、引数、ハードウェアアクセラレーション、ロール別の出力引数を含みます。", + "path": { + "label": "FFmpeg パス", + "description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「5.0」または「7.0」)。" + }, + "global_args": { + "label": "FFmpeg グローバル引数", + "description": "FFmpeg プロセスに渡されるグローバル引数。" + }, + "hwaccel_args": { + "label": "ハードウェアアクセラレーション引数", + "description": "FFmpeg のハードウェアアクセラレーション引数。プロバイダ固有のプリセットの使用を推奨。" + }, + "input_args": { + "label": "入力引数", + "description": "FFmpeg の入力ストリームに適用される引数。" + }, + "output_args": { + "label": "出力引数", + "description": "detect や record など、FFmpeg のロール別に使用されるデフォルト出力引数。", + "detect": { + "label": "検知ロールの出力引数", + "description": "detect ロールのストリームに使用されるデフォルト出力引数。" + }, + "record": { + "label": "録画ロールの出力引数", + "description": "record ロールのストリームに使用されるデフォルト出力引数。" + } + }, + "retry_interval": { + "label": "FFmpeg 再試行間隔", + "description": "カメラストリームの失敗後、再接続を試みるまでの待機秒数。デフォルトは 10 秒。" + }, + "apple_compatibility": { + "label": "Apple 互換性", + "description": "H.265 録画時に Apple プレーヤーとの互換性向上のため HEVC タグ付けを有効化します。" + }, + "gpu": { + "label": "GPU インデックス", + "description": "ハードウェアアクセラレーションで使用するデフォルト GPU インデックス。" + }, + "inputs": { + "label": "カメラ入力", + "description": "このカメラの入力ストリーム定義(パスとロール)のリスト。", + "path": { + "label": "入力パス", + "description": "カメラ入力ストリームの URL またはパス。" + }, + "roles": { + "label": "入力ロール", + "description": "この入力ストリームのロール。" + }, + "global_args": { + "label": "FFmpeg グローバル引数", + "description": "この入力ストリームに対する FFmpeg グローバル引数。" + }, + "hwaccel_args": { + "label": "ハードウェアアクセラレーション引数", + "description": "この入力ストリームのハードウェアアクセラレーション引数。" + }, + "input_args": { + "label": "入力引数", + "description": "このストリーム固有の入力引数。" + } + } + }, + "live": { + "label": "ライブ再生", + "description": "jsmpeg ライブストリームの解像度と品質を制御する設定。go2rtc を使用してリストリームしているカメラのライブビューには影響しません。", + "streams": { + "label": "ライブストリーム名", + "description": "設定済みのストリーム名と、ライブ再生で使用する restream/go2rtc 名のマッピング。" + }, + "height": { + "label": "ライブの高さ", + "description": "Web UI で jsmpeg ライブストリームを描画する高さ (ピクセル)。検知ストリーム高さ以下である必要があります。" + }, + "quality": { + "label": "ライブ品質", + "description": "jsmpeg ストリームのエンコード品質 (1 が最高、31 が最低)。" + } + }, + "motion": { + "label": "モーション検知", + "description": "全カメラに適用されるモーション検知のデフォルト設定(カメラ別に上書き可能)。", + "enabled": { + "label": "モーション検知を有効化", + "description": "全カメラのモーション検知を有効または無効にします(カメラ別に上書き可能)。" + }, + "threshold": { + "label": "モーションしきい値", + "description": "モーション検出器が使用するピクセル差分しきい値。値を大きくすると感度が下がります (範囲 1-255)。" + }, + "lightning_threshold": { + "label": "雷検知しきい値", + "description": "短時間の照明スパイクを検知して無視するしきい値(値が小さいほど感度が高く、0.3 〜 1.0 が目安)。これはモーション検知を完全に止めるものではなく、しきい値超過後に検出器が追加フレームの解析を停止するだけです。モーションベースの録画はこれらのイベント中も作成されます。" + }, + "skip_motion_threshold": { + "label": "モーションスキップしきい値", + "description": "0.0 〜 1.0 の値を指定し、1 フレームでそれ以上の割合が変化した場合、検出器はモーションボックスを返さず即座に再キャリブレーションします。雷や嵐などの誤検知を減らし CPU を節約できますが、PTZ カメラのオート追跡などの実イベントを取りこぼす可能性があります。数 MB の録画を捨てるか、数本の短いクリップを確認するかのトレードオフです。無効化するには未設定 (None) のままにします。" + }, + "improve_contrast": { + "label": "コントラスト強調", + "description": "モーション解析前にフレームのコントラストを強調して検知を補助します。" + }, + "contour_area": { + "label": "輪郭面積", + "description": "モーション輪郭としてカウントするために必要な最小ピクセル数。" + }, + "delta_alpha": { + "label": "デルタアルファ", + "description": "モーション計算のフレーム差分で使用されるアルファブレンディング係数。" + }, + "frame_alpha": { + "label": "フレームアルファ", + "description": "モーション前処理でフレームをブレンドする際に使用するアルファ値。" + }, + "frame_height": { + "label": "フレーム高さ", + "description": "モーション計算時にフレームをスケーリングする高さ (ピクセル)。" + }, + "mask": { + "label": "マスク座標", + "description": "領域を含める/除外するモーションマスクポリゴンを定義する x,y 座標の順序付きリスト。" + }, + "mqtt_off_delay": { + "label": "MQTT オフ遅延", + "description": "最後のモーション検知後、MQTT で「off」状態を発行するまでの待機秒数。" + }, + "enabled_in_config": { + "label": "元のモーション状態", + "description": "元の静的設定でモーション検知が有効化されていたかを示します。" + }, + "raw_mask": { + "label": "Raw マスク" + } + }, + "objects": { + "label": "オブジェクト", + "description": "追跡するラベルとオブジェクト別フィルタを含む、オブジェクト追跡のデフォルト設定。", + "track": { + "label": "追跡するオブジェクト", + "description": "全カメラで追跡するオブジェクトラベルのリスト(カメラ別に上書き可能)。" + }, + "filters": { + "label": "オブジェクトフィルタ", + "description": "誤検知を減らすために検知オブジェクトに適用するフィルタ(面積、比率、信頼度)。", + "min_area": { + "label": "最小オブジェクト面積", + "description": "このオブジェクト種別に必要なバウンディングボックスの最小面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "max_area": { + "label": "最大オブジェクト面積", + "description": "このオブジェクト種別に許容されるバウンディングボックスの最大面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "min_ratio": { + "label": "最小アスペクト比", + "description": "対象となるバウンディングボックスに必要な最小の幅/高さ比。" + }, + "max_ratio": { + "label": "最大アスペクト比", + "description": "対象となるバウンディングボックスに許容される最大の幅/高さ比。" + }, + "threshold": { + "label": "信頼度しきい値", + "description": "オブジェクトを真陽性とみなすために必要な平均検知信頼度。" + }, + "min_score": { + "label": "最低信頼度", + "description": "オブジェクトをカウントするために必要な単一フレームでの最低検知信頼度。" + }, + "mask": { + "label": "フィルタマスク", + "description": "フレーム内でこのフィルタが適用される範囲を定義するポリゴン座標。" + }, + "raw_mask": { + "label": "Raw マスク" + } + }, + "mask": { + "label": "オブジェクトマスク", + "description": "指定領域でオブジェクト検知を行わないようにするためのマスクポリゴン。" + }, + "raw_mask": { + "label": "Raw マスク" + }, + "genai": { + "label": "GenAI オブジェクト設定", + "description": "追跡オブジェクトの説明生成や、生成 AI へのフレーム送信に関する GenAI オプション。", + "enabled": { + "label": "GenAI を有効化", + "description": "追跡オブジェクトの説明を GenAI で生成する機能を既定で有効にします。" + }, + "use_snapshot": { + "label": "スナップショットを使用", + "description": "GenAI 説明生成にサムネイルではなくオブジェクトスナップショットを使用します。" + }, + "prompt": { + "label": "キャプションプロンプト", + "description": "GenAI で説明を生成する際に使用するデフォルトのプロンプトテンプレート。" + }, + "object_prompts": { + "label": "オブジェクト別プロンプト", + "description": "特定のラベルに対する GenAI 出力をカスタマイズするためのオブジェクト別プロンプト。" + }, + "objects": { + "label": "GenAI 対象オブジェクト", + "description": "GenAI に既定で送信するオブジェクトラベルのリスト。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "GenAI 説明生成の対象となるためにオブジェクトが進入する必要があるゾーン。" + }, + "debug_save_thumbnails": { + "label": "サムネイルを保存", + "description": "デバッグや確認のため、GenAI に送信したサムネイルを保存します。" + }, + "send_triggers": { + "label": "GenAI 送信トリガー", + "description": "フレームを GenAI に送るタイミング(終了時、更新後など)を定義します。", + "tracked_object_end": { + "label": "終了時に送信", + "description": "追跡オブジェクトが終了した時点で GenAI にリクエストを送信します。" + }, + "after_significant_updates": { + "label": "早期 GenAI トリガー", + "description": "追跡オブジェクトに対して指定回数の重要な更新があった後、GenAI にリクエストを送信します。" + } + }, + "enabled_in_config": { + "label": "元の GenAI 状態", + "description": "元の静的設定で GenAI が有効化されていたかを示します。" + } + }, + "filters_attribute": { + "label": "属性フィルタ", + "description": "誤検知を減らすために検知された属性に適用するフィルタ(面積、比率、信頼度)。", + "min_area": { + "label": "属性の最小面積", + "description": "この属性に必要なバウンディングボックスの最小面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "max_area": { + "label": "属性の最大面積", + "description": "この属性に許容されるバウンディングボックスの最大面積(ピクセルまたは割合)。ピクセル (int) または割合 (0.000001 〜 0.99 の float) を指定可能。" + }, + "min_ratio": { + "label": "最小アスペクト比", + "description": "対象となるバウンディングボックスに必要な最小の幅/高さ比。" + }, + "max_ratio": { + "label": "最大アスペクト比", + "description": "対象となるバウンディングボックスに許容される最大の幅/高さ比。" + }, + "threshold": { + "label": "信頼度しきい値", + "description": "属性を真陽性とみなすために必要な平均検知信頼度。" + }, + "min_score": { + "label": "最低信頼度", + "description": "この属性を親オブジェクトに関連付けるために必要な単一フレームでの最低検知信頼度。" + }, + "mask": { + "label": "フィルタマスク", + "description": "フレーム内でこのフィルタが適用される範囲を定義するポリゴン座標。" + }, + "raw_mask": { + "label": "Raw マスク" + } + } + }, + "record": { + "label": "録画", + "description": "カメラ別の上書きがない限り全カメラに適用される、録画と保持の設定。", + "enabled": { + "label": "録画を有効化", + "description": "全カメラの録画を有効または無効にします(カメラ別に上書き可能)。" + }, + "expire_interval": { + "label": "録画クリーンアップ間隔", + "description": "期限切れ録画セグメントを削除するクリーンアップを実行する間隔 (分)。" + }, + "continuous": { + "label": "常時保持", + "description": "追跡オブジェクトやモーションに関係なく録画を保持する日数。アラートと検知の録画のみを保持したい場合は 0 を指定します。", + "days": { + "label": "保持日数", + "description": "録画を保持する日数。" + } + }, + "motion": { + "label": "モーション録画保持", + "description": "追跡オブジェクトに関係なくモーションでトリガーされた録画を保持する日数。アラートと検知の録画のみを保持したい場合は 0 を指定します。", + "days": { + "label": "保持日数", + "description": "録画を保持する日数。" + } + }, + "detections": { + "label": "検知録画保持", + "description": "検知イベントの録画保持設定。前後の撮影時間を含みます。", + "pre_capture": { + "label": "イベント前秒数", + "description": "検知イベントの前に録画に含める秒数。" + }, + "post_capture": { + "label": "イベント後秒数", + "description": "検知イベントの後に録画に含める秒数。" + }, + "retain": { + "label": "イベント保持", + "description": "検知イベントの録画保持設定。", + "days": { + "label": "保持日数", + "description": "検知イベント録画を保持する日数。" + }, + "mode": { + "label": "保持モード", + "description": "保持モード: all(全セグメントを保存)、motion(モーションがあるセグメントを保存)、active_objects(アクティブなオブジェクトを含むセグメントを保存)。" + } + } + }, + "alerts": { + "label": "アラート録画保持", + "description": "アラートイベントの録画保持設定。前後の撮影時間を含みます。", + "pre_capture": { + "label": "イベント前秒数", + "description": "アラートイベントの前に録画に含める秒数。" + }, + "post_capture": { + "label": "イベント後秒数", + "description": "アラートイベントの後に録画に含める秒数。" + }, + "retain": { + "label": "イベント保持", + "description": "アラートイベントの録画保持設定。", + "days": { + "label": "保持日数", + "description": "アラートイベント録画を保持する日数。" + }, + "mode": { + "label": "保持モード", + "description": "保持モード: all(全セグメントを保存)、motion(モーションがあるセグメントを保存)、active_objects(アクティブなオブジェクトを含むセグメントを保存)。" + } + } + }, + "export": { + "label": "エクスポート設定", + "description": "タイムラプスやハードウェアアクセラレーションなど、録画をエクスポートする際に使用する設定。", + "hwaccel_args": { + "label": "エクスポート用 hwaccel 引数", + "description": "エクスポート/トランスコード処理で使用するハードウェアアクセラレーション引数。" + }, + "max_concurrent": { + "label": "同時エクスポート数の上限", + "description": "同時に処理するエクスポートジョブの最大数。" + } + }, + "preview": { + "label": "プレビュー設定", + "description": "UI に表示される録画プレビューの品質を制御する設定。", + "quality": { + "label": "プレビュー品質", + "description": "プレビュー品質レベル (very_low, low, medium, high, very_high)。" + } + }, + "enabled_in_config": { + "label": "元の録画状態", + "description": "元の静的設定で録画が有効化されていたかを示します。" + } + }, + "review": { + "label": "レビュー", + "description": "UI 表示と保存で使用するアラート、検知、GenAI レビューサマリーを制御する設定。", + "alerts": { + "label": "アラート設定", + "description": "どの追跡オブジェクトがアラートを生成するか、およびアラートの保持方法に関する設定。", + "enabled": { + "label": "アラートを有効化", + "description": "全カメラのアラート生成を有効または無効にします(カメラ別に上書き可能)。" + }, + "labels": { + "label": "アラートラベル", + "description": "アラート対象となるオブジェクトラベルのリスト(例: car, person)。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "アラートとみなされるためにオブジェクトが進入する必要があるゾーン。空欄ですべてのゾーンを許可。" + }, + "enabled_in_config": { + "label": "元のアラート状態", + "description": "元の静的設定でアラートが有効化されていたかを記録します。" + }, + "cutoff_time": { + "label": "アラート打ち切り時間", + "description": "アラートを引き起こすアクティビティが途絶えてからアラートを打ち切るまでの待機秒数。" + } + }, + "detections": { + "label": "検知設定", + "description": "どの追跡オブジェクトが(アラートではない)検知を生成するか、および検知の保持方法に関する設定。", + "enabled": { + "label": "検知を有効化", + "description": "全カメラの検知イベントを有効または無効にします(カメラ別に上書き可能)。" + }, + "labels": { + "label": "検知ラベル", + "description": "検知イベントの対象となるオブジェクトラベルのリスト。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "検知とみなされるためにオブジェクトが進入する必要があるゾーン。空欄ですべてのゾーンを許可。" + }, + "cutoff_time": { + "label": "検知打ち切り時間", + "description": "検知を引き起こすアクティビティが途絶えてから検知を打ち切るまでの待機秒数。" + }, + "enabled_in_config": { + "label": "元の検知状態", + "description": "元の静的設定で検知が有効化されていたかを記録します。" + } + }, + "genai": { + "label": "GenAI 設定", + "description": "レビュー項目の説明やサマリーを生成 AI で作成する機能の制御。", + "enabled": { + "label": "GenAI 説明を有効化", + "description": "レビュー項目の GenAI 生成説明やサマリーを有効または無効にします。" + }, + "alerts": { + "label": "アラートに GenAI を使用", + "description": "アラート項目の説明を GenAI で生成します。" + }, + "detections": { + "label": "検知に GenAI を使用", + "description": "検知項目の説明を GenAI で生成します。" + }, + "image_source": { + "label": "レビュー画像ソース", + "description": "GenAI に送信する画像のソース(「preview」または「recordings」)。「recordings」は高品質ですがトークン消費が増えます。" + }, + "additional_concerns": { + "label": "追加の懸念事項", + "description": "このカメラのアクティビティ評価時に GenAI に考慮させる追加の懸念や注意事項のリスト。" + }, + "debug_save_thumbnails": { + "label": "サムネイルを保存", + "description": "デバッグや確認のため、GenAI プロバイダに送信したサムネイルを保存します。" + }, + "enabled_in_config": { + "label": "元の GenAI 状態", + "description": "元の静的設定で GenAI レビューが有効化されていたかを記録します。" + }, + "preferred_language": { + "label": "希望言語", + "description": "GenAI プロバイダに生成応答で要求する言語。" + }, + "activity_context_prompt": { + "label": "活動コンテキストプロンプト", + "description": "GenAI サマリーの文脈として、何が不審な活動で何がそうでないかを記述するカスタムプロンプト。" + } + } + }, + "snapshots": { + "label": "スナップショット", + "description": "全カメラの追跡オブジェクトに対する API 生成スナップショットの設定(カメラ別に上書き可能)。", + "enabled": { + "label": "スナップショットを有効化", + "description": "全カメラのスナップショット保存を有効または無効にします(カメラ別に上書き可能)。" + }, + "timestamp": { + "label": "タイムスタンプ重ね合わせ", + "description": "API スナップショットにタイムスタンプを重ねて表示します。" + }, + "bounding_box": { + "label": "バウンディングボックス重ね合わせ", + "description": "API スナップショットに追跡オブジェクトのバウンディングボックスを描画します。" + }, + "crop": { + "label": "スナップショットを切り抜き", + "description": "API スナップショットを検知オブジェクトのバウンディングボックスで切り抜きます。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "スナップショットを保存するためにオブジェクトが進入する必要があるゾーン。" + }, + "height": { + "label": "スナップショット高さ", + "description": "API スナップショットをリサイズする高さ (ピクセル)。空欄で元のサイズを維持。" + }, + "retain": { + "label": "スナップショット保持", + "description": "デフォルト保持日数とオブジェクト別上書きを含む、スナップショット保持設定。", + "default": { + "label": "デフォルト保持期間", + "description": "スナップショットを保持するデフォルト日数。" + }, + "mode": { + "label": "保持モード", + "description": "保持モード: all(全セグメントを保存)、motion(モーションがあるセグメントを保存)、active_objects(アクティブなオブジェクトを含むセグメントを保存)。" + }, + "objects": { + "label": "オブジェクト別保持", + "description": "オブジェクトごとのスナップショット保持日数の上書き。" + } + }, + "quality": { + "label": "スナップショット品質", + "description": "保存するスナップショットのエンコード品質 (0-100)。" + } + }, + "timestamp_style": { + "label": "タイムスタンプスタイル", + "description": "デバッグビューとスナップショットの映像内に表示されるタイムスタンプのスタイル設定。", + "position": { + "label": "タイムスタンプ位置", + "description": "画像内のタイムスタンプ位置 (tl/tr/bl/br)。" + }, + "format": { + "label": "タイムスタンプ書式", + "description": "タイムスタンプに使用する日時書式文字列 (Python datetime 書式コード)。" + }, + "color": { + "label": "タイムスタンプ色", + "description": "タイムスタンプ文字色の RGB 値 (各 0-255)。", + "red": { + "label": "赤", + "description": "タイムスタンプ色の赤成分 (0-255)。" + }, + "green": { + "label": "緑", + "description": "タイムスタンプ色の緑成分 (0-255)。" + }, + "blue": { + "label": "青", + "description": "タイムスタンプ色の青成分 (0-255)。" + } + }, + "thickness": { + "label": "タイムスタンプ太さ", + "description": "タイムスタンプ文字の線の太さ。" + }, + "effect": { + "label": "タイムスタンプエフェクト", + "description": "タイムスタンプ文字の視覚効果 (none, solid, shadow)。" + } + }, + "classification": { + "label": "オブジェクト分類", + "description": "オブジェクトラベルの精緻化や状態分類に使用する分類モデルの設定。", + "bird": { + "label": "鳥分類設定", + "description": "鳥分類モデル固有の設定。", + "enabled": { + "label": "鳥分類", + "description": "鳥分類を有効または無効にします。" + }, + "threshold": { + "label": "最低スコア", + "description": "鳥分類を受け入れるために必要な最低分類スコア。" + } + }, + "custom": { + "label": "カスタム分類モデル", + "description": "オブジェクトまたは状態検知に使用するカスタム分類モデルの設定。", + "enabled": { + "label": "モデルを有効化", + "description": "カスタム分類モデルを有効または無効にします。" + }, + "name": { + "label": "モデル名", + "description": "使用するカスタム分類モデルの識別子。" + }, + "threshold": { + "label": "スコアしきい値", + "description": "分類状態を変更するために使用するスコアしきい値。" + }, + "save_attempts": { + "label": "保存試行数", + "description": "最近の分類 UI に表示するために保存する分類試行数。" + }, + "object_config": { + "objects": { + "label": "分類対象オブジェクト", + "description": "オブジェクト分類を実行するオブジェクト種別のリスト。" + }, + "classification_type": { + "label": "分類種別", + "description": "適用する分類種別: 'sub_label'(サブラベルを追加)またはサポートされる他の種別。" + } + }, + "state_config": { + "cameras": { + "label": "分類対象カメラ", + "description": "状態分類を実行するためのカメラ別クロップと設定。", + "crop": { + "label": "分類クロップ", + "description": "このカメラで分類を実行する際に使用するクロップ座標。" + } + }, + "motion": { + "label": "モーション時に実行", + "description": "true にすると、指定したクロップ内でモーションが検知されたときに分類を実行します。" + }, + "interval": { + "label": "分類間隔", + "description": "状態分類の周期的な実行間隔(秒)。" + } + } + } + }, + "semantic_search": { + "label": "セマンティック検索", + "description": "オブジェクト埋め込みを構築・クエリして類似項目を見つけるセマンティック検索の設定。", + "enabled": { + "label": "セマンティック検索を有効化", + "description": "セマンティック検索機能を有効または無効にします。" + }, + "reindex": { + "label": "起動時に再インデックス", + "description": "過去の追跡オブジェクトを埋め込みデータベースに完全再インデックスします。" + }, + "model": { + "label": "セマンティック検索モデルまたは GenAI プロバイダ名", + "description": "セマンティック検索に使用する埋め込みモデル(例: 'jinav1')、または embeddings ロールを持つ GenAI プロバイダ名。" + }, + "model_size": { + "label": "モデルサイズ", + "description": "モデルサイズを選択。'small' は CPU で動作、'large' は通常 GPU が必要。" + }, + "device": { + "label": "デバイス", + "description": "特定のデバイスを対象にする上書き設定 (詳細は https://onnxruntime.ai/docs/execution-providers/ を参照)" + }, + "triggers": { + "label": "トリガー", + "description": "カメラ別のセマンティック検索トリガーの動作と一致条件。", + "friendly_name": { + "label": "表示名", + "description": "このトリガーの UI 表示用の任意の名前。" + }, + "enabled": { + "label": "このトリガーを有効化", + "description": "このセマンティック検索トリガーを有効または無効にします。" + }, + "type": { + "label": "トリガー種別", + "description": "トリガー種別: 「thumbnail」(画像に対する一致)または「description」(テキストに対する一致)。" + }, + "data": { + "label": "トリガー内容", + "description": "追跡オブジェクトと照合するテキストフレーズまたはサムネイル ID。" + }, + "threshold": { + "label": "トリガーしきい値", + "description": "このトリガーを発火させるために必要な最低類似度スコア (0-1)。" + }, + "actions": { + "label": "トリガーアクション", + "description": "トリガー一致時に実行するアクションのリスト (notification, sub_label, attribute)。" + } + } + }, + "face_recognition": { + "label": "顔認識", + "description": "全カメラの顔検知と顔認識の設定(カメラ別に上書き可能)。", + "enabled": { + "label": "顔認識を有効化", + "description": "全カメラの顔認識を有効または無効にします(カメラ別に上書き可能)。" + }, + "model_size": { + "label": "モデルサイズ", + "description": "顔埋め込みに使用するモデルサイズ(small/large)。large は GPU が必要な場合があります。" + }, + "unknown_score": { + "label": "未知顔スコアしきい値", + "description": "この距離しきい値を下回る場合、顔は潜在的な一致とみなされます(値が大きいほど厳格)。" + }, + "detection_threshold": { + "label": "検知しきい値", + "description": "顔検知を有効とみなすために必要な最低検知信頼度。" + }, + "recognition_threshold": { + "label": "認識しきい値", + "description": "2 つの顔を一致とみなす顔埋め込みの距離しきい値。" + }, + "min_area": { + "label": "顔の最小面積", + "description": "認識を試みるために必要な顔ボックスの最小面積 (ピクセル)。" + }, + "min_faces": { + "label": "最低顔認識数", + "description": "認識されたサブラベルを人物に適用する前に必要な、最低顔認識回数。" + }, + "save_attempts": { + "label": "保存試行数", + "description": "最近の認識 UI に保持する顔認識試行数。" + }, + "blur_confidence_filter": { + "label": "ボケ補正による信頼度調整", + "description": "画像のボケに基づいて信頼度スコアを調整し、低品質な顔の誤検知を減らします。" + }, + "device": { + "label": "デバイス", + "description": "特定のデバイスを対象にする上書き設定 (詳細は https://onnxruntime.ai/docs/execution-providers/ を参照)" + } + }, + "lpr": { + "label": "ナンバープレート認識", + "description": "ナンバープレート認識の設定。検知しきい値、書式整形、既知ナンバーなどを含みます。", + "enabled": { + "label": "LPR を有効化", + "description": "全カメラのナンバープレート認識を有効または無効にします(カメラ別に上書き可能)。" + }, + "model_size": { + "label": "モデルサイズ", + "description": "テキスト検知/認識に使用するモデルサイズ。多くのユーザーは 'small' を使用してください。" + }, + "detection_threshold": { + "label": "検知しきい値", + "description": "プレート候補に対する OCR を開始する検知信頼度しきい値。" + }, + "min_area": { + "label": "プレート最小面積", + "description": "認識を試みるために必要なプレート最小面積 (ピクセル)。" + }, + "recognition_threshold": { + "label": "認識しきい値", + "description": "認識されたプレート文字列をサブラベルとして付与するために必要な信頼度しきい値。" + }, + "min_plate_length": { + "label": "プレート最小文字数", + "description": "有効とみなすために認識されたプレートに必要な最小文字数。" + }, + "format": { + "label": "プレート書式正規表現", + "description": "認識されたプレート文字列を期待する書式と照合する任意の正規表現。" + }, + "match_distance": { + "label": "マッチ距離", + "description": "検知されたプレートと既知のプレートを比較する際に許容する文字相違数。" + }, + "known_plates": { + "label": "既知のプレート", + "description": "特別に追跡またはアラートするプレートまたは正規表現のリスト。" + }, + "enhancement": { + "label": "強調レベル", + "description": "OCR 前にプレート切り出し画像に適用する強調レベル (0-10)。値を大きくしても常に改善するとは限らず、5 を超えると夜間プレートでのみ有効な場合があるため注意が必要です。" + }, + "debug_save_plates": { + "label": "デバッグ用プレート保存", + "description": "LPR 性能のデバッグ用にプレート切り出し画像を保存します。" + }, + "device": { + "label": "デバイス", + "description": "特定のデバイスを対象にする上書き設定 (詳細は https://onnxruntime.ai/docs/execution-providers/ を参照)" + }, + "replace_rules": { + "label": "置換ルール", + "description": "照合前に検知プレート文字列を正規化するための正規表現置換ルール。", + "pattern": { + "label": "正規表現パターン" + }, + "replacement": { + "label": "置換文字列" + } + }, + "expire_time": { + "label": "失効秒数", + "description": "未検知ナンバーをトラッカーから失効させるまでの秒数(専用 LPR カメラのみ)。" + } + }, + "camera_groups": { + "label": "カメラグループ", + "description": "UI でカメラを整理するための名前付きカメラグループの設定。", + "cameras": { + "label": "カメラリスト", + "description": "このグループに含まれるカメラ名の配列。" + }, + "icon": { + "label": "グループアイコン", + "description": "UI でカメラグループを表すアイコン。" + }, + "order": { + "label": "並び順", + "description": "UI でカメラグループを並べる数値順。値が大きいほど後ろに表示されます。" + } + }, + "profiles": { + "label": "プロファイル", + "description": "表示名付きの名前付きプロファイル定義。カメラ別プロファイルはここで定義された名前を参照する必要があります。", + "friendly_name": { + "label": "表示名", + "description": "UI に表示されるこのプロファイルの表示名。" + } + }, + "active_profile": { + "label": "アクティブプロファイル", + "description": "現在アクティブなプロファイル名。実行時のみ有効で YAML には保存されません。" + }, + "camera_mqtt": { + "label": "MQTT", + "description": "MQTT 画像配信の設定。", + "enabled": { + "label": "画像送信", + "description": "このカメラのオブジェクト画像スナップショットを MQTT トピックに配信する機能を有効にします。" + }, + "timestamp": { + "label": "タイムスタンプを追加", + "description": "MQTT に配信する画像にタイムスタンプを重ねて表示します。" + }, + "bounding_box": { + "label": "バウンディングボックスを追加", + "description": "MQTT に配信する画像にバウンディングボックスを描画します。" + }, + "crop": { + "label": "画像を切り抜き", + "description": "MQTT に配信する画像を検知オブジェクトのバウンディングボックスで切り抜きます。" + }, + "height": { + "label": "画像の高さ", + "description": "MQTT 配信時に画像をリサイズする高さ (ピクセル)。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "MQTT 画像を配信するためにオブジェクトが進入する必要があるゾーン。" + }, + "quality": { + "label": "JPEG 品質", + "description": "MQTT に配信する画像の JPEG 品質 (0-100)。" + } + }, + "camera_ui": { + "label": "カメラ UI", + "description": "UI 内でのこのカメラの表示順と表示設定。順序はデフォルトダッシュボードに影響します。より細かい制御にはカメラグループを使用してください。", + "order": { + "label": "UI 表示順", + "description": "UI 内でのカメラの並び順に使用される数値(デフォルトダッシュボードとリスト)。値が大きいほど後ろに表示されます。" + }, + "dashboard": { + "label": "UI に表示", + "description": "このカメラを Frigate UI 全体に表示するかを切り替えます。無効化した場合、再表示するには設定ファイルを手動編集する必要があります。" + } + }, + "onvif": { + "label": "ONVIF", + "description": "このカメラの ONVIF 接続および PTZ オート追跡の設定。", + "host": { + "label": "ONVIF ホスト", + "description": "このカメラの ONVIF サービスのホスト(オプションでスキーマも)。" + }, + "port": { + "label": "ONVIF ポート", + "description": "ONVIF サービスのポート番号。" + }, + "user": { + "label": "ONVIF ユーザー名", + "description": "ONVIF 認証用のユーザー名。ONVIF に admin ユーザーが必要なデバイスもあります。" + }, + "password": { + "label": "ONVIF パスワード", + "description": "ONVIF 認証用のパスワード。" + }, + "tls_insecure": { + "label": "TLS 検証を無効化", + "description": "ONVIF の TLS 検証をスキップし、ダイジェスト認証も無効化します(安全でないため、信頼できるネットワークでのみ使用)。" + }, + "profile": { + "label": "ONVIF プロファイル", + "description": "PTZ 制御に使用する ONVIF メディアプロファイル(トークンまたは名前で指定)。未設定の場合、有効な PTZ 設定を持つ最初のプロファイルが自動選択されます。" + }, + "autotracking": { + "label": "オートトラッキング", + "description": "PTZ カメラの動作で移動中のオブジェクトを自動追跡し、フレーム中央に保ちます。", + "enabled": { + "label": "オートトラッキングを有効化", + "description": "検知オブジェクトの PTZ オート追跡を有効または無効にします。" + }, + "calibrate_on_startup": { + "label": "起動時にキャリブレーション", + "description": "追跡精度を向上させるため、起動時に PTZ モーター速度を測定します。キャリブレーション後に movement_weights が設定に書き込まれます。" + }, + "zooming": { + "label": "ズームモード", + "description": "ズーム動作の制御: disabled (パン/チルトのみ)、absolute (互換性が最も高い)、relative (パン/チルト/ズーム同時)。" + }, + "zoom_factor": { + "label": "ズーム倍率", + "description": "追跡対象オブジェクトのズームレベルを制御します。値が小さいほど広い範囲を保ち、大きいほどズームインしますが追跡を失う可能性があります。0.1 〜 0.75 の範囲で指定。" + }, + "track": { + "label": "追跡対象オブジェクト", + "description": "オートトラッキングを発動させるオブジェクト種別のリスト。" + }, + "required_zones": { + "label": "必須ゾーン", + "description": "オートトラッキング開始前にオブジェクトが進入する必要があるゾーン。" + }, + "return_preset": { + "label": "復帰プリセット", + "description": "追跡終了後にカメラが戻る、ファームウェアに設定されている ONVIF プリセット名。" + }, + "timeout": { + "label": "復帰タイムアウト", + "description": "追跡を失ってからカメラをプリセット位置に戻すまでの待機秒数。" + }, + "movement_weights": { + "label": "動作重み", + "description": "カメラキャリブレーションによって自動生成される値。手動で変更しないでください。" + }, + "enabled_in_config": { + "label": "元のオート追跡状態", + "description": "オートトラッキングが設定で有効化されていたかを追跡する内部フィールド。" + } + }, + "ignore_time_mismatch": { + "label": "時刻差異を無視", + "description": "ONVIF 通信時に、カメラと Frigate サーバー間の時刻同期差異を無視します。" + } } } diff --git a/web/public/locales/ja/config/groups.json b/web/public/locales/ja/config/groups.json index b09db04cd5..8e829ea167 100644 --- a/web/public/locales/ja/config/groups.json +++ b/web/public/locales/ja/config/groups.json @@ -2,7 +2,7 @@ "audio": { "global": { "sensitivity": "グローバル感度", - "detection": "グローバル検出" + "detection": "グローバル検知" }, "cameras": { "detection": "検知", diff --git a/web/public/locales/ja/config/validation.json b/web/public/locales/ja/config/validation.json index 03073d0763..9f862a31ed 100644 --- a/web/public/locales/ja/config/validation.json +++ b/web/public/locales/ja/config/validation.json @@ -28,5 +28,8 @@ "detectRequired": "少なくとも1つの入力ストリームに「detect」ロールを割り当てる必要があります。", "hwaccelDetectOnly": "ハードウェアアクセラレーション引数を定義できるのは、detect ロールを持つ入力ストリームのみです。" } + }, + "detect": { + "dimensionMustBeEven": "偶数を指定してください。" } } diff --git a/web/public/locales/ja/objects.json b/web/public/locales/ja/objects.json index c3e41af3f4..10fa2b8b92 100644 --- a/web/public/locales/ja/objects.json +++ b/web/public/locales/ja/objects.json @@ -116,5 +116,14 @@ "nzpost": "NZPost", "postnord": "PostNord", "gls": "GLS", - "dpd": "DPD" + "dpd": "DPD", + "canada_post": "カナダポスト", + "royal_mail": "ロイヤルメール", + "school_bus": "スクールバス", + "skunk": "スカンク", + "kangaroo": "カンガルー", + "baby": "赤ちゃん", + "baby_stroller": "ベビーカー", + "rickshaw": "人力車", + "rodent": "齧歯類" } diff --git a/web/public/locales/ja/views/chat.json b/web/public/locales/ja/views/chat.json index be73c63f59..4215a317c7 100644 --- a/web/public/locales/ja/views/chat.json +++ b/web/public/locales/ja/views/chat.json @@ -32,6 +32,41 @@ "send": "送信", "suggested_requests": "質問してみてください:", "starting_requests": { - "show_recent_events": "最近のイベントを表示" + "show_recent_events": "最近のイベントを表示", + "show_camera_status": "カメラの状態を表示", + "recap": "留守中に何が起きた?", + "watch_camera": "カメラの動きを監視" + }, + "starting_requests_prompts": { + "show_recent_events": "直近1時間のイベントを見せて", + "show_camera_status": "現在のカメラの状態はどうなっていますか?", + "recap": "留守中に何が起きた?", + "watch_camera": "玄関のカメラを監視して、誰か来たら教えて" + }, + "new_chat": "新しいチャット", + "settings": { + "title": "チャット設定", + "show_stats": { + "title": "統計を表示", + "desc": "チャット応答の生成速度とコンテキストサイズを表示します。", + "while_generating": "生成中のみ", + "always": "常に表示" + }, + "auto_scroll": { + "title": "自動スクロール", + "desc": "新しいメッセージが届いたら自動でスクロールします。" + } + }, + "stats": { + "context": "{{tokens}} トークン", + "tokens_per_second": "{{rate}} t/s" + }, + "reasoning": { + "active": "推論中…", + "show": "推論を表示", + "hide": "推論を非表示" + }, + "thinking": { + "toggle": "思考の表示を切替" } } diff --git a/web/public/locales/ja/views/classificationModel.json b/web/public/locales/ja/views/classificationModel.json index ccd1c2c07f..91ff04c3bb 100644 --- a/web/public/locales/ja/views/classificationModel.json +++ b/web/public/locales/ja/views/classificationModel.json @@ -12,7 +12,7 @@ }, "toast": { "success": { - "deletedImage_other": "{{count}} 件の削除された画像", + "deletedImage_other": "{{count}} 枚の画像を削除しました", "categorizedImage": "画像の分類に成功しました", "trainedModel": "モデルを正常に学習させました。", "trainingModel": "モデルのトレーニングを正常に開始しました。", @@ -35,15 +35,15 @@ } }, "train": { - "titleShort": "Classifications,最近の分類結果を選択,,False,train.aria,,", + "titleShort": "最近の分類", "title": "最近の分類結果", "aria": "最近の分類結果を選択" }, "wizard": { "step1": { - "typeObject": "Classification", - "typeState": "Classification", - "description": "状態モデルは固定カメラ領域の状態変化(例:ドアの開閉)を監視し、オブジェクトモデルは検出されたオブジェクトに分類(例:既知の動物や配達員など)を追加します。", + "typeObject": "オブジェクト", + "typeState": "状態", + "description": "状態モデルは固定カメラ領域の状態変化(例:ドアの開閉)を監視し、オブジェクトモデルは検知されたオブジェクトに分類(例:既知の動物や配達員など)を追加します。", "name": "名前", "namePlaceholder": "モデル名を入力...", "type": "タイプ", @@ -58,7 +58,7 @@ "states": "状態", "classesTip": "クラスについて", "classesStateDesc": "カメラ領域の状態を定義します。例: ガレージドアの「開」「閉」。", - "classesObjectDesc": "検出されたオブジェクトを分類するための、異なるカテゴリを定義します。例:人物の分類として「delivery_person」「resident」「stranger」など。", + "classesObjectDesc": "検知されたオブジェクトを分類するための、異なるカテゴリを定義します。例:人物の分類として「delivery_person」「resident」「stranger」など。", "classPlaceholder": "クラス名を入力...", "errors": { "nameRequired": "モデル名は必須です", @@ -113,11 +113,16 @@ "missingStatesWarning": { "title": "状態の例が不足しています", "description": "最良の結果を得るため、すべての状態の例を選択することを推奨します。すべてを選択しなくても続行できますが、全状態に画像が揃うまでモデルは学習されません。続行後、「最近の分類」から不足分を分類し、学習を行ってください。" + }, + "refreshExamples": "新しい例を生成", + "refreshConfirm": { + "title": "新しい例を生成しますか?", + "description": "この操作により、新しい画像セットが生成され、選択済みのものも含めすべての選択がクリアされます。すべてのクラスについて、再度例を選び直す必要があります。" } } }, "details": { - "scoreInfo": "このスコアは、このオブジェクトに対するすべての検出結果の分類信頼度の平均を表します。", + "scoreInfo": "このスコアは、このオブジェクトに対するすべての検知結果の分類信頼度の平均を表します。", "none": "なし", "unknown": "不明" }, @@ -172,7 +177,7 @@ "noModels": { "object": { "title": "オブジェクト分類モデルがありません", - "description": "検出されたオブジェクトを分類するためのカスタムモデルを作成します。", + "description": "検知されたオブジェクトを分類するためのカスタムモデルを作成します。", "buttonText": "オブジェクトモデルを作成" }, "state": { @@ -180,5 +185,7 @@ "description": "特定のカメラ領域の状態変化を監視・分類するためのカスタムモデルを作成します。", "buttonText": "状態モデルを作成" } - } + }, + "reclassifyImageAs": "画像を次として再分類:", + "reclassifyImage": "画像を再分類" } diff --git a/web/public/locales/ja/views/events.json b/web/public/locales/ja/views/events.json index 6e9273cefa..13dc92bdf3 100644 --- a/web/public/locales/ja/views/events.json +++ b/web/public/locales/ja/views/events.json @@ -1,12 +1,12 @@ { - "detections": "検出", + "detections": "検知", "motion": { "label": "モーション", "only": "モーションのみ" }, "alerts": "アラート", "empty": { - "detection": "レビューする検出はありません", + "detection": "レビューする検知はありません", "alert": "レビューするアラートはありません", "motion": "モーションデータは見つかりません", "recordingsDisabled": { @@ -42,7 +42,7 @@ }, "selected_one": "{{count}} 選択済み", "selected_other": "{{count}} 選択済み", - "detected": "検出", + "detected": "検知", "suspiciousActivity": "不審なアクティビティ", "threateningActivity": "脅威となるアクティビティ", "zoomIn": "ズームイン", @@ -71,5 +71,24 @@ "motionSearch": { "menuItem": "モーション検索", "openMenu": "カメラオプション" + }, + "motionPreviews": { + "menuItem": "モーションプレビューを表示", + "title": "モーションプレビュー: {{camera}}", + "mobileSettingsTitle": "モーションプレビュー設定", + "mobileSettingsDesc": "再生速度と暗転具合を調整し、確認したい日付を選んでモーションのみのクリップを再生します。", + "dim": "暗転", + "dimAria": "暗転の強さを調整", + "dimDesc": "暗転を強くするとモーション領域が見やすくなります。", + "speed": "速度", + "speedAria": "プレビューの再生速度を選択", + "speedDesc": "プレビュークリップの再生速度を選びます。", + "back": "戻る", + "empty": "利用可能なプレビューがありません", + "noPreview": "プレビューを利用できません", + "seekAria": "{{camera}} のプレーヤーを {{time}} までシーク", + "filter": "フィルター", + "filterDesc": "領域を選択すると、その領域でモーションが発生したクリップのみが表示されます。", + "filterClear": "クリア" } } diff --git a/web/public/locales/ja/views/explore.json b/web/public/locales/ja/views/explore.json index 2789e800f5..6b9ab4c46e 100644 --- a/web/public/locales/ja/views/explore.json +++ b/web/public/locales/ja/views/explore.json @@ -11,7 +11,7 @@ "viewInExplore": "探索で表示" }, "tips": { - "mismatch_other": "利用不可のオブジェクトが {{count}} 件、このレビュー項目に含まれています。これらはアラートまたは検出の条件を満たしていないか、既にクリーンアップ/削除されています。", + "mismatch_other": "利用不可のオブジェクトが {{count}} 件、このレビュー項目に含まれています。これらはアラートまたは検知の条件を満たしていないか、既にクリーンアップ/削除されています。", "hasMissingObjects": "次のラベルの追跡オブジェクトを保存したい場合は設定を調整してください: {{objects}}" }, "toast": { @@ -83,7 +83,8 @@ "attributes": "分類属性", "title": { "label": "タイトル" - } + }, + "scoreInfo": "スコア情報" }, "exploreMore": "{{label}} のオブジェクトをさらに探索", "exploreIsUnavailable": { @@ -219,12 +220,22 @@ }, "hideObjectDetails": { "label": "オブジェクトの移動経路を非表示" + }, + "debugReplay": { + "label": "デバッグリプレイ", + "aria": "この追跡オブジェクトをデバッグリプレイビューで表示" + }, + "more": { + "aria": "その他" } }, "dialog": { "confirmDelete": { "title": "削除の確認", "desc": "この追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、および関連する追跡詳細項目が削除されます。履歴ビューの録画映像は削除されません。

続行してもよろしいですか?" + }, + "toast": { + "error": "この追跡オブジェクトの削除に失敗しました: {{errorMessage}}" } }, "noTrackedObjects": "追跡オブジェクトは見つかりませんでした", @@ -257,22 +268,25 @@ "count": "{{second}} 件中 {{first}} 件目", "trackedPoint": "追跡ポイント", "lifecycleItemDesc": { - "visible": "{{label}} が検出されました", + "visible": "{{label}} が検知されました", "entered_zone": "{{label}} が {{zones}} に入りました", "active": "{{label}} がアクティブになりました", "stationary": "{{label}} が静止状態になりました", "attribute": { - "faceOrLicense_plate": "{{label}} に {{attribute}} が検出されました", + "faceOrLicense_plate": "{{label}} に {{attribute}} が検知されました", "other": "{{label}} は {{attribute}} と認識されました" }, "gone": "{{label}} が離脱しました", - "heard": "{{label}} の音が検出されました", - "external": "{{label}} が検出されました", + "heard": "{{label}} の音が検知されました", + "external": "{{label}} が検知されました", "header": { "zones": "ゾーン", "ratio": "比率", "area": "面積", - "score": "スコア" + "score": "スコア", + "computedScore": "計算スコア", + "topScore": "トップスコア", + "toggleAdvancedScores": "詳細スコアを切替" } }, "annotationSettings": { @@ -283,7 +297,7 @@ }, "offset": { "label": "注釈オフセット", - "millisecondsToOffset": "検出アノテーションをオフセットするミリ秒数です。デフォルト: 0", + "millisecondsToOffset": "検知アノテーションをオフセットするミリ秒数です。デフォルト: 0", "toast": { "success": "{{camera}} のアノテーションオフセットが設定ファイルに保存されました。" }, diff --git a/web/public/locales/ja/views/exports.json b/web/public/locales/ja/views/exports.json index 767c05a11a..5cff546459 100644 --- a/web/public/locales/ja/views/exports.json +++ b/web/public/locales/ja/views/exports.json @@ -69,13 +69,14 @@ "noDescription": "説明がありません", "exportCount_one": "1 件のエクスポート", "exportCount_other": "{{count}} エクスポート", - "cameraCount_other": "{{count}} カメラ", + "cameraCount_other": "{{count}} 台のカメラ", "showMore": "さらに表示", "showLess": "表示を減らす", "emptyTitle": "このケースは空です", "emptyDescription": "既存の分類されていないエクスポートを追加して、ケースを整理しましょう。", "emptyDescriptionNoExports": "まだ追加可能な未分類のエクスポートはありません。", - "createdAt": "作成日 {{value}}" + "createdAt": "作成日 {{value}}", + "cameraCount_one": "1 台のカメラ" }, "caseEditor": { "createTitle": "ケースを作成", diff --git a/web/public/locales/ja/views/faceLibrary.json b/web/public/locales/ja/views/faceLibrary.json index 9446398abf..8a79b4ae4e 100644 --- a/web/public/locales/ja/views/faceLibrary.json +++ b/web/public/locales/ja/views/faceLibrary.json @@ -17,7 +17,7 @@ "documentTitle": "顔データベース - Frigate", "uploadFaceImage": { "title": "顔画像をアップロード", - "desc": "顔を検出するために画像をアップロードし、{{pageToggle}} に追加します" + "desc": "顔を検知するために画像をアップロードし、{{pageToggle}} に追加します" }, "collections": "コレクション", "createFaceLibrary": { @@ -39,7 +39,11 @@ "title": "過去の学習", "aria": "過去の学習を選択", "empty": "最近の顔認識の試行はありません", - "titleShort": "Classifications,最近の分類結果を選択,,False,train.aria,," + "titleShort": "最近の分類", + "emptyNoLibrary": { + "title": "顔画像をアップロード", + "description": "顔認識を機能させるには、ライブラリに少なくとも 1 つの顔を追加する必要があります。" + } }, "selectFace": "顔を選択", "deleteFaceLibrary": { @@ -82,7 +86,8 @@ "deletedName_other": "{{count}} 件の顔を削除しました。", "renamedFace": "顔の名前を {{name}} に変更しました", "trainedFace": "顔の学習が完了しました。", - "updatedFaceScore": "顔のスコアを {{name}} ({{score}})に更新しました。" + "updatedFaceScore": "顔のスコアを {{name}} ({{score}})に更新しました。", + "reclassifiedFace": "顔を再分類しました。" }, "error": { "uploadingImageFailed": "画像のアップロードに失敗しました: {{errorMessage}}", @@ -91,7 +96,8 @@ "deleteNameFailed": "名前の削除に失敗しました: {{errorMessage}}", "renameFaceFailed": "顔の名前変更に失敗しました: {{errorMessage}}", "trainFailed": "学習に失敗しました: {{errorMessage}}", - "updateFaceScoreFailed": "顔スコアの更新に失敗しました: {{errorMessage}}" + "updateFaceScoreFailed": "顔スコアの更新に失敗しました: {{errorMessage}}", + "reclassifyFailed": "顔の再分類に失敗しました: {{errorMessage}}" } }, "reclassifyFaceAs": "顔を再分類する:", diff --git a/web/public/locales/ja/views/live.json b/web/public/locales/ja/views/live.json index 8fde1adb18..0fe4e7b99f 100644 --- a/web/public/locales/ja/views/live.json +++ b/web/public/locales/ja/views/live.json @@ -58,15 +58,17 @@ }, "camera": { "enable": "カメラを有効化", - "disable": "カメラを無効化" + "disable": "カメラを無効化", + "turnOn": "カメラをオンにする", + "turnOff": "カメラをオフにする" }, "muteCameras": { "enable": "全カメラをミュート", "disable": "全カメラのミュートを解除" }, "detect": { - "enable": "検出を有効化", - "disable": "検出を無効化" + "enable": "検知を有効化", + "disable": "検知を無効化" }, "recording": { "enable": "録画を有効化", @@ -78,8 +80,8 @@ "disable": "スナップショットを無効化" }, "audioDetect": { - "enable": "音声検出を有効化", - "disable": "音声検出を無効化" + "enable": "音声検知を有効化", + "disable": "音声検知を無効化" }, "transcription": { "enable": "ライブ音声文字起こしを有効化", @@ -142,18 +144,19 @@ "tips": "プレーヤーが非表示でもストリーミングを継続するにはこのオプションを有効にします。" }, "debug": { - "picker": "デバッグモードではストリームの選択はできません。デバッグビューは常に 検出ロールに割り当てられたストリームを使用します。" + "picker": "デバッグモードではストリームの選択はできません。デバッグビューは常に 検知ロールに割り当てられたストリームを使用します。" } }, "cameraSettings": { "title": "{{camera}} の設定", "cameraEnabled": "カメラ有効", - "objectDetection": "物体検出", + "objectDetection": "物体検知", "recording": "録画", "snapshots": "スナップショット", - "audioDetection": "音声検出", + "audioDetection": "音声検知", "transcription": "音声文字起こし", - "autotracking": "オートトラッキング" + "autotracking": "オートトラッキング", + "camera": "カメラ" }, "history": { "label": "履歴映像を表示" diff --git a/web/public/locales/ja/views/motionSearch.json b/web/public/locales/ja/views/motionSearch.json index 6e0d6b4b64..5c1b1cdb9b 100644 --- a/web/public/locales/ja/views/motionSearch.json +++ b/web/public/locales/ja/views/motionSearch.json @@ -15,7 +15,7 @@ "searching": "検索中です。", "searchComplete": "検索完了", "noResultsYet": "選択した領域内の動きの変化を検索します", - "noChangesFound": "選択した領域でピクセルの変化は検出されませんでした", + "noChangesFound": "選択した領域でピクセルの変化は検知されませんでした", "changesFound_other": "{{count}} 件の動きの変化が見つかりました", "framesProcessed": "{{count}} フレームを処理しました", "jumpToTime": "この時間に移動", @@ -37,6 +37,37 @@ }, "settings": { "title": "検索設定", - "parallelMode": "並列モード" + "parallelMode": "並列モード", + "parallelModeDesc": "複数の録画セグメントを同時にスキャンします(高速ですが CPU 負荷が大幅に増加します)", + "threshold": "感度しきい値", + "thresholdDesc": "値を小さくするとより小さな変化も検知します (1-255)", + "minArea": "最小変化面積", + "minAreaDesc": "有意な変化と判定するために必要な関心領域内の最小変化割合", + "frameSkip": "フレームスキップ", + "frameSkipDesc": "N フレームごとに処理します。カメラのフレームレートと同じ値にすると 1 秒あたり 1 フレーム処理されます(例: 5 FPS のカメラなら 5、30 FPS なら 30)。値を大きくすると高速になりますが、短時間のモーションを取りこぼす可能性があります。", + "maxResults": "最大結果数", + "maxResultsDesc": "この件数のタイムスタンプにヒットした時点でスキャンを停止します" + }, + "errors": { + "noCamera": "カメラを選択してください", + "noROI": "関心領域を描画してください", + "noTimeRange": "時間範囲を選択してください", + "invalidTimeRange": "終了時刻は開始時刻より後である必要があります", + "searchFailed": "検索に失敗しました: {{message}}", + "polygonTooSmall": "ポリゴンには少なくとも 3 つの点が必要です", + "unknown": "不明なエラー" + }, + "changePercentage": "{{percentage}}% 変化", + "metrics": { + "title": "検索メトリクス", + "segmentsScanned": "スキャンしたセグメント", + "segmentsProcessed": "処理済み", + "segmentsSkippedInactive": "スキップ (アクティビティなし)", + "segmentsSkippedHeatmap": "スキップ (関心領域と重なりなし)", + "fallbackFullRange": "全範囲スキャンへのフォールバック", + "framesDecoded": "デコードしたフレーム", + "wallTime": "検索時間", + "segmentErrors": "セグメントエラー", + "seconds": "{{seconds}} 秒" } } diff --git a/web/public/locales/ja/views/replay.json b/web/public/locales/ja/views/replay.json index d3c3a6a844..b975486100 100644 --- a/web/public/locales/ja/views/replay.json +++ b/web/public/locales/ja/views/replay.json @@ -1,12 +1,12 @@ { "title": "デバッグリプレイ", - "description": "デバッグ用にカメラの録画をリプレイします。オブジェクトリストには検出されたオブジェクトの遅延サマリーが表示され、「メッセージ」タブにはリプレイ映像からのFrigate内部メッセージのストリームが表示されます。", + "description": "デバッグ用にカメラの録画をリプレイします。オブジェクトリストには検知されたオブジェクトの遅延サマリーが表示され、「メッセージ」タブにはリプレイ映像からのFrigate内部メッセージのストリームが表示されます。", "websocket_messages": "メッセージ", "dialog": { "title": "デバッグリプレイを開始", - "description": "オブジェクトの検出やトラッキングの問題をデバッグするために、過去の映像をループ再生する一時的なリプレイカメラを作成します。このリプレイカメラは、ソースカメラ(元カメラ)と同じ検出設定を引き継ぎます。開始する時間範囲を選択してください。", + "description": "オブジェクトの検知やトラッキングの問題をデバッグするために、過去の映像をループ再生する一時的なリプレイカメラを作成します。このリプレイカメラは、ソースカメラ(元カメラ)と同じ検知設定を引き継ぎます。開始する時間範囲を選択してください。", "camera": "ソースカメラ", - "timeRange": "時間範囲", + "timeRange": "期間", "preset": { "1m": "直近1分間", "5m": "直近5分間", @@ -48,9 +48,9 @@ "cancel": "キャンセル" }, "activity": "アクティビティ", - "objects": "オブジェクトリスト", - "audioDetections": "オーディオ検出", - "noActivity": "アクティビティは検出されませんでした", + "objects": "オブジェクト一覧", + "audioDetections": "音声検知", + "noActivity": "アクティビティは検知されませんでした", "activeTracking": "アクティブトラッキング", "noActiveTracking": "アクティブトラッキングなし", "configuration": "設定", diff --git a/web/public/locales/ja/views/settings.json b/web/public/locales/ja/views/settings.json index db762c8d5d..791dba598c 100644 --- a/web/public/locales/ja/views/settings.json +++ b/web/public/locales/ja/views/settings.json @@ -15,13 +15,14 @@ "maintenance": "メンテナンス - Frigate", "profiles": "プロファイル - Frigate", "globalConfig": "グローバル設定 - Frigate", - "cameraConfig": "カメラ設定 - Frigate" + "cameraConfig": "カメラ設定 - Frigate", + "detectorsAndModel": "検出器とモデル - Frigate" }, "menu": { "ui": "UI", "enrichments": "高度解析", "cameras": "カメラ設定", - "masksAndZones": "マスク/ゾーン", + "masksAndZones": "マスク / ゾーン", "motionTuner": "モーションチューナー", "triggers": "トリガー", "debug": "デバッグ", @@ -30,23 +31,23 @@ "frigateplus": "Frigate+", "cameraManagement": "管理", "cameraReview": "レビュー", - "roles": "区分", - "general": "一般", + "roles": "ロール", + "general": "全般", "globalConfig": "グローバル設定", "system": "システム", - "integrations": "統合", + "integrations": "連携", "uiSettings": "UI設定", "profiles": "プロファイル", - "globalDetect": "物体検出", + "globalDetect": "物体検知", "globalRecording": "録画", "globalSnapshots": "スナップショット", "globalFfmpeg": "FFmpeg", - "globalMotion": "動体検出", + "globalMotion": "モーション検知", "globalObjects": "オブジェクト", "globalReview": "レビュー", - "globalAudioEvents": "オーディオイベント", + "globalAudioEvents": "音声検知", "globalLivePlayback": "ライブ再生", - "globalTimestampStyle": "タイムスタンプ形式", + "globalTimestampStyle": "タイムスタンプスタイル", "systemDatabase": "データベース", "systemTls": "TLS", "systemAuthentication": "認証", @@ -55,7 +56,40 @@ "systemUi": "UI", "systemLogging": "ロギング", "systemEnvironmentVariables": "環境変数", - "systemTelemetry": "テレメトリー" + "systemTelemetry": "テレメトリ", + "systemBirdseye": "バードアイ", + "systemFfmpeg": "FFmpeg", + "systemDetectorsAndModel": "検出器とモデル", + "systemMqtt": "MQTT", + "systemGo2rtcStreams": "go2rtc ストリーム", + "integrationSemanticSearch": "セマンティック検索", + "integrationGenerativeAi": "生成AI", + "integrationFaceRecognition": "顔認識", + "integrationLpr": "ナンバープレート認識", + "integrationObjectClassification": "オブジェクト分類", + "integrationAudioTranscription": "音声文字起こし", + "cameraDetect": "物体検知", + "cameraFfmpeg": "FFmpeg", + "cameraRecording": "録画", + "cameraSnapshots": "スナップショット", + "cameraMotion": "モーション検知", + "cameraObjects": "オブジェクト", + "cameraConfigReview": "レビュー", + "cameraAudioEvents": "音声検知", + "cameraAudioTranscription": "音声文字起こし", + "cameraNotifications": "通知", + "cameraLivePlayback": "ライブ再生", + "cameraBirdseye": "バードアイ", + "cameraFaceRecognition": "顔認識", + "cameraLpr": "ナンバープレート認識", + "cameraMqttConfig": "MQTT", + "cameraOnvif": "ONVIF", + "cameraUi": "カメラ UI", + "cameraTimestampStyle": "タイムスタンプスタイル", + "cameraMqtt": "カメラ MQTT", + "maintenance": "メンテナンス", + "mediaSync": "メディア同期", + "regionGrid": "リージョングリッド" }, "dialog": { "unsavedChanges": { @@ -85,7 +119,7 @@ }, "liveFallbackTimeout": { "label": "ライブプレイヤーのフォールバック タイムアウト", - "desc": "カメラの高画質ライブストリームが利用できない場合、指定した秒数後に低帯域モードへ切り替えます。デフォルト:3 秒" + "desc": "カメラの高画質ライブストリームが利用できない場合、指定した秒数後に低帯域モードへ切り替えます。デフォルトは 3 秒。" } }, "storedLayouts": { @@ -117,7 +151,7 @@ "toast": { "success": { "clearStoredLayout": "{{cameraName}} の保存済みレイアウトをクリアしました", - "clearStreamingSettings": "すべてのカメラグループのストリーミング設定をクリアしました。" + "clearStreamingSettings": "全カメラグループのストリーミング設定をクリアしました。" }, "error": { "clearStoredLayoutFailed": "保存済みレイアウトのクリアに失敗しました: {{errorMessage}}", @@ -176,7 +210,7 @@ }, "licensePlateRecognition": { "title": "ナンバープレート認識", - "desc": "車両のナンバープレートを認識し、検出文字列を recognized_license_plate フィールドへ、または既知の名称を car タイプのオブジェクトの sub_label として自動追加できます。一般的な用途として、私道に入ってくる車や道路を通過する車のナンバー読み取りがあります。" + "desc": "車両のナンバープレートを認識し、検知文字列を recognized_license_plate フィールドへ、または既知の名称を car タイプのオブジェクトの sub_label として自動追加できます。一般的な用途として、私道に入ってくる車や道路を通過する車のナンバー読み取りがあります。" }, "restart_required": "再起動が必要です(高度解析設定を変更)", "toast": { @@ -322,6 +356,21 @@ "zone": "ゾーン", "motion_mask": "モーションマスク", "object_mask": "オブジェクトマスク" + }, + "revertOverride": { + "title": "ベース設定に戻す", + "desc": "{{type}} {{name}} のプロファイル上書きを削除し、ベース設定に戻します。" + } + }, + "id": { + "error": { + "mustNotBeEmpty": "ID は空にできません。", + "alreadyExists": "この ID のマスクはこのカメラに既に存在します。" + } + }, + "name": { + "error": { + "mustNotBeEmpty": "名前は空にできません。" } } }, @@ -337,7 +386,7 @@ "point_other": "{{count}} 点", "clickDrawPolygon": "画像上をクリックして多角形を描画します。", "name": { - "title": "名称", + "title": "名前", "inputPlaceHolder": "名前を入力…", "tips": "名前は2文字以上で、少なくとも1文字のアルファベットを含み、このカメラ上の他のゾーン名やカメラ名と同一であってはなりません。" }, @@ -374,43 +423,53 @@ }, "toast": { "success": "ゾーン({{zoneName}})を保存しました。" + }, + "enabled": { + "title": "有効", + "description": "このゾーンを設定ファイルで有効化するかどうか。無効化すると MQTT からも有効化できず、実行時には無視されます。" } }, "motionMasks": { "label": "モーションマスク", "documentTitle": "モーションマスクを編集 - Frigate", "desc": { - "title": "モーションマスクは、望ましくない種類の動きで検出がトリガーされるのを防ぎます。過度なマスクはオブジェクト追跡を困難にします。", + "title": "モーションマスクは、望ましくない種類の動きで検知がトリガーされるのを防ぎます。過度なマスクはオブジェクト追跡を困難にします。", "documentation": "ドキュメント" }, "add": "新しいモーションマスク", "edit": "モーションマスクを編集", "context": { - "title": "モーションマスクは、望ましくない動き(例: 木の枝、カメラのタイムスタンプ)で検出がトリガーされるのを防ぐために使用します。ごく控えめに使用してください。過度なマスクはオブジェクト追跡を困難にします。" + "title": "モーションマスクは、望ましくない動き(例: 木の枝、カメラのタイムスタンプ)で検知がトリガーされるのを防ぐために使用します。ごく控えめに使用してください。過度なマスクはオブジェクト追跡を困難にします。" }, "point_other": "{{count}} 点", "clickDrawPolygon": "画像上をクリックして多角形を描画します。", "polygonAreaTooLarge": { "title": "モーションマスクがカメラフレームの {{polygonArea}}% を覆っています。大きなモーションマスクは推奨されません。", - "tips": "モーションマスクはオブジェクトの検出自体を防ぎません。代わりに必須ゾーンを使用してください。" + "tips": "モーションマスクはオブジェクトの検知自体を防ぎません。代わりに必須ゾーンを使用してください。" }, "toast": { "success": { "title": "{{polygonName}} を保存しました。", "noName": "モーションマスクを保存しました。" } + }, + "defaultName": "モーションマスク {{number}}", + "name": { + "title": "名前", + "description": "このモーションマスクの任意の表示名です。", + "placeholder": "名前を入力..." } }, "objectMasks": { "label": "オブジェクトマスク", "documentTitle": "オブジェクトマスクを編集 - Frigate", "desc": { - "title": "オブジェクトフィルタマスクは、位置に基づいて特定のオブジェクトタイプの誤検出を除外するために使用します。", + "title": "オブジェクトフィルタマスクは、位置に基づいて特定のオブジェクトタイプの誤検知を除外するために使用します。", "documentation": "ドキュメント" }, "add": "オブジェクトマスクを追加", "edit": "オブジェクトマスクを編集", - "context": "オブジェクトフィルタマスクは、位置に基づいて特定のオブジェクトタイプの誤検出を除外するために使用します。", + "context": "オブジェクトフィルタマスクは、位置に基づいて特定のオブジェクトタイプの誤検知を除外するために使用します。", "point_other": "{{count}} 点", "clickDrawPolygon": "画像上をクリックして多角形を描画します。", "objects": { @@ -423,14 +482,29 @@ "title": "{{polygonName}} を保存しました。", "noName": "オブジェクトマスクを保存しました。" } + }, + "name": { + "title": "名前", + "description": "このオブジェクトマスクの任意の表示名です。", + "placeholder": "名前を入力..." + } + }, + "disabledInConfig": "この項目は設定ファイルで無効化されています", + "addDisabledProfile": "まずベース設定に追加してから、プロファイルで上書きしてください", + "profileBase": "(ベース)", + "profileOverride": "(上書き)", + "masks": { + "enabled": { + "title": "有効", + "description": "このマスクを設定ファイルで有効化するかどうか。無効化すると MQTT からも有効化できず、実行時には無視されます。" } } }, "motionDetectionTuner": { - "title": "モーション検出チューナー", + "title": "モーション検知チューナー", "unsavedChanges": "未保存のモーションチューナーの変更({{camera}})", "desc": { - "title": "Frigate は、フレーム内に物体検出で確認すべき動きがあるかの一次チェックとしてモーション検出を使用します。", + "title": "Frigate は、フレーム内に物体検知で確認すべき動きがあるかの一次チェックとしてモーション検知を使用します。", "documentation": "モーション調整ガイドを読む" }, "Threshold": { @@ -451,15 +525,15 @@ }, "debug": { "title": "デバッグ", - "detectorDesc": "Frigate は検出器({{detectors}})を使用して、カメラの映像ストリーム内のオブジェクトを検出します。", - "desc": "デバッグビューは、追跡オブジェクトとその統計をリアルタイムに表示します。オブジェクト一覧には、検出オブジェクトの時差サマリが表示されます。", + "detectorDesc": "Frigate は検出器({{detectors}})を使用して、カメラの映像ストリーム内のオブジェクトを検知します。", + "desc": "デバッグビューは、追跡オブジェクトとその統計をリアルタイムに表示します。オブジェクト一覧には、検知オブジェクトの時差サマリが表示されます。", "openCameraWebUI": "{{camera}} の Web UI を開く", "debugging": "デバッグ", "objectList": "オブジェクト一覧", "noObjects": "オブジェクトなし", "audio": { "title": "音声", - "noAudioDetections": "音声検出なし", + "noAudioDetections": "音声検知なし", "score": "スコア", "currentRMS": "現在の RMS", "currentdbFS": "現在の dBFS" @@ -469,7 +543,7 @@ "desc": "追跡オブジェクトの周囲にバウンディングボックスを表示します", "colors": { "label": "オブジェクトのボックス色", - "info": "
  • 起動時に、各オブジェクトラベルへ異なる色が割り当てられます
  • 細い濃青線は、現在時点では未検出であることを示します
  • 細い灰線は、静止していると検出されたことを示します
  • 太線は、(有効時)オートトラッキングの対象であることを示します
  • " + "info": "
  • 起動時に、各オブジェクトラベルへ異なる色が割り当てられます
  • 細い濃青線は、現在時点では未検知であることを示します
  • 細い灰線は、静止していると検知されたことを示します
  • 太線は、(有効時)オートトラッキングの対象であることを示します
  • " } }, "timestamp": { @@ -486,8 +560,8 @@ }, "motion": { "title": "モーションボックス", - "desc": "モーションが検出された領域のボックスを表示します", - "tips": "

    モーションボックス


    現在モーションが検出されている領域に赤いボックスが重ねて表示されます

    " + "desc": "モーションが検知された領域のボックスを表示します", + "tips": "

    モーションボックス


    現在モーションが検知されている領域に赤いボックスが重ねて表示されます

    " }, "regions": { "title": "領域", @@ -643,7 +717,7 @@ "createRole": "ロール {{role}} を作成しました", "updateCameras": "ロール {{role}} のカメラを更新しました", "deleteRole": "ロール {{role}} を削除しました", - "userRolesUpdated_other": "このロールに割り当てられていた {{count}} ユーザーは「viewer」に更新され、すべてのカメラへの閲覧アクセスが付与されました。" + "userRolesUpdated_other": "このロールに割り当てられていた {{count}} ユーザーは「viewer」に更新され、全カメラへの閲覧アクセスが付与されました。" }, "error": { "createRoleFailed": "ロールの作成に失敗しました: {{errorMessage}}", @@ -663,7 +737,7 @@ }, "deleteRole": { "title": "ロールを削除", - "desc": "この操作は元に戻せません。ロールは完全に削除され、このロールを持っていたユーザーは「viewer」ロールに再割り当てされ、すべてのカメラへの閲覧アクセスが付与されます。", + "desc": "この操作は元に戻せません。ロールは完全に削除され、このロールを持っていたユーザーは「viewer」ロールに再割り当てされ、全カメラへの閲覧アクセスが付与されます。", "warn": "{{role}} を削除してもよろしいですか?", "deleting": "削除中…" }, @@ -748,7 +822,7 @@ }, "snapshotConfig": { "title": "スナップショット設定", - "desc": "Frigate+ への送信には、設定でスナップショットと clean_copy スナップショットの両方を有効にする必要があります。", + "desc": "Frigate+ への送信には、設定でスナップショットを有効にする必要があります。", "cleanCopyWarning": "一部のカメラではスナップショット機能が無効になっています", "table": { "camera": "カメラ", @@ -771,14 +845,30 @@ "error": "モデル情報の読み込みに失敗しました", "availableModels": "利用可能なモデル", "loadingAvailableModels": "利用可能なモデルを読み込み中…", - "modelSelect": "ここで Frigate+ 上の利用可能なモデルを選択できます。現在の検出器構成と互換性のあるモデルのみ選択可能です。" + "modelSelect": "ここで Frigate+ 上の利用可能なモデルを選択できます。現在の検出器構成と互換性のあるモデルのみ選択可能です。", + "noModelLoaded": "Frigate+ モデルは現在読み込まれていません。", + "selectModel": "モデルを選択", + "noModelsAvailable": "利用可能なモデルがありません", + "filter": { + "ariaLabel": "モデルをタイプで絞り込み", + "baseModels": "ベースモデル", + "fineTunedModels": "ファインチューニング済みモデル" + } }, "unsavedChanges": "未保存の Frigate+ 設定の変更", "restart_required": "再起動が必要です(Frigate+ モデルを変更)", "toast": { "success": "Frigate+ 設定を保存しました。変更を適用するには Frigate を再起動してください。", "error": "設定変更の保存に失敗しました: {{errorMessage}}" - } + }, + "description": "Frigate+ はサブスクリプションサービスで、独自データで学習させたカスタム物体検知モデルなど、Frigate インスタンスに追加機能を提供します。Frigate+ モデルの設定はここから管理できます。", + "cardTitles": { + "api": "API", + "currentModel": "現在のモデル", + "otherModels": "その他のモデル", + "configuration": "設定" + }, + "changeInDetectorsAndModel": "モデルを変更" }, "triggers": { "documentTitle": "トリガー", @@ -788,7 +878,7 @@ }, "addTrigger": "トリガーを追加", "table": { - "name": "名称", + "name": "名前", "type": "タイプ", "content": "コンテンツ", "threshold": "しきい値", @@ -823,7 +913,7 @@ }, "form": { "name": { - "title": "名称", + "title": "名前", "placeholder": "トリガー名を入力", "error": { "minLength": "この項目は2文字以上で入力してください。", @@ -838,15 +928,15 @@ "type": { "title": "タイプ", "placeholder": "トリガータイプを選択", - "description": "類似した追跡オブジェクトの説明が検出されたときにトリガー", - "thumbnail": "類似した追跡オブジェクトのサムネイルが検出されたときにトリガー" + "description": "類似した追跡オブジェクトの説明が検知されたときにトリガー", + "thumbnail": "類似した追跡オブジェクトのサムネイルが検知されたときにトリガー" }, "content": { "title": "コンテンツ", "imagePlaceholder": "サムネイルを選択", "textPlaceholder": "テキストを入力", "imageDesc": "最新のサムネイル100件のみが表示されます。目的のサムネイルが見つからない場合は、探索で過去のオブジェクトを確認し、そこのメニューからトリガーを設定してください。", - "textDesc": "類似する追跡オブジェクトの説明が検出されたときにこのアクションをトリガーするためのテキストを入力します。", + "textDesc": "類似する追跡オブジェクトの説明が検知されたときにこのアクションをトリガーするためのテキストを入力します。", "error": { "required": "コンテンツは必須です。" } @@ -860,7 +950,7 @@ "desc": "このトリガーの類似度しきい値を設定します。値が高いほど、より近い一致が必要になります。" }, "actions": { - "title": "アクション", + "title": "操作", "desc": "デフォルトでは、Frigate はすべてのトリガーに対して MQTT メッセージを送信します。サブラベルは、トリガー名をオブジェクトのラベルに追加します。属性(Attributes)は、追跡オブジェクトのメタデータとは別に保存される検索可能なメタデータです。", "error": { "min": "少なくとも1つのアクションを選択してください。" @@ -961,7 +1051,7 @@ "quality": "品質", "selectQuality": "品質を選択", "roleLabels": { - "detect": "物体検出", + "detect": "物体検知", "record": "録画", "audio": "音声" }, @@ -973,12 +1063,12 @@ "notConnected": "未接続", "featuresTitle": "機能", "go2rtc": "カメラへの接続数を削減", - "detectRoleWarning": "続行するには、少なくとも 1 つのストリームに「検出」ロールが必要です。", + "detectRoleWarning": "続行するには、少なくとも 1 つのストリームに「検知」ロールが必要です。", "rolesPopover": { "title": "ストリーム ロール", - "detect": "物体検出用のメイン フィードです。", + "detect": "物体検知用のメイン フィードです。", "record": "設定に基づいて映像フィードのセグメントを保存します。", - "audio": "音声ベース検出用のフィードです。" + "audio": "音声ベース検知用のフィードです。" }, "featuresPopover": { "title": "ストリーム機能", @@ -999,8 +1089,8 @@ }, "testResultLabels": { "resolution": "解像度", - "video": "ビデオ", - "audio": "オーディオ", + "video": "映像", + "audio": "音声", "fps": "FPS" }, "commonErrors": { @@ -1008,7 +1098,7 @@ "testFailed": "ストリームテストに失敗しました: {{error}}" }, "step1": { - "description": "カメラの詳細を入力し、カメラを自動検出するか、メーカーを手動で選択してください。", + "description": "カメラの詳細を入力し、カメラを自動検知するか、メーカーを手動で選択してください。", "cameraName": "カメラ名", "cameraNamePlaceholder": "例: front_door または Back Yard Overview", "host": "ホスト/IP アドレス", @@ -1046,17 +1136,17 @@ "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" }, "connectionSettings": "接続設定", - "detectionMethod": "ストリーム検出方法", + "detectionMethod": "ストリーム検知方法", "onvifPort": "ONVIF ポート", "probeMode": "カメラをプローブ", "manualMode": "手動選択", "useDigestAuth": "ダイジェスト認証を使用", "useDigestAuthDescription": "ONVIF に HTTP ダイジェスト認証を使用します。一部のカメラでは、通常の管理者ユーザーではなく専用の ONVIF ユーザー名/パスワードが必要な場合があります。", - "detectionMethodDescription": "(対応している場合)ONVIF を使用してカメラを自動設定し、カメラのストリーム URL を検出するか、カメラのブランドを手動で選択して事前定義された URL を使用します。カスタム RTSP URL を入力する場合は、手動設定を選択し、「その他」を選んでください。", + "detectionMethodDescription": "(対応している場合)ONVIF を使用してカメラを自動設定し、カメラのストリーム URL を検知するか、カメラのブランドを手動で選択して事前定義された URL を使用します。カスタム RTSP URL を入力する場合は、手動設定を選択し、「その他」を選んでください。", "onvifPortDescription": "ONVIF に対応しているカメラの場合、通常は 80 または 8080 です。" }, "step2": { - "description": "選択した検出方法に応じて、カメラから利用可能なストリームを自動検出するか、手動で設定してください。", + "description": "選択した検知方法に応じて、カメラから利用可能なストリームを自動検知するか、手動で設定してください。", "streamsTitle": "カメラストリーム", "addStream": "ストリームを追加", "addAnotherStream": "ストリームをさらに追加", @@ -1156,9 +1246,9 @@ "videoCodecGood": "ビデオ コーデックは {{codec}} です。", "audioCodecGood": "オーディオ コーデックは {{codec}} です。", "resolutionHigh": "解像度 {{resolution}} はリソース使用量が増加する可能性があります。", - "resolutionLow": "解像度 {{resolution}} は小さなオブジェクトを確実に検出するには低すぎる可能性があります。", + "resolutionLow": "解像度 {{resolution}} は小さなオブジェクトを確実に検知するには低すぎる可能性があります。", "audioCodecRecordError": "録画で音声をサポートするには AAC オーディオ コーデックが必要です。", - "audioCodecRequired": "音声検出をサポートするには音声ストリームが必要です。", + "audioCodecRequired": "音声検知をサポートするには音声ストリームが必要です。", "restreamingWarning": "録画用ストリームでカメラへの接続数を削減すると、CPU 使用率がわずかに増加する場合があります。", "brands": { "reolink-rtsp": "Reolink の RTSP は推奨されません。カメラのファームウェア設定で HTTP を有効にし、ウィザードを再起動してください。", @@ -1170,7 +1260,8 @@ "hikvision": { "substreamWarning": "サブストリーム 1 は低解像度に固定されています。多くの Hikvision カメラは追加のサブストリームをサポートしており、カメラ設定で有効化する必要があります。利用可能であればそれらのストリームを使用することを推奨します。" }, - "noAudioWarning": "このストリームでは音声が検出されていません。録画には音声が含まれません。" + "noAudioWarning": "このストリームでは音声が検知されていません。録画には音声が含まれません。", + "resolutionUnknown": "このストリームの解像度を取得できませんでした。設定画面または設定ファイルで検知解像度を手動で指定してください。" }, "ffmpegModuleDescription": "何度か試してもストリームが読み込まれない場合は、このオプションを有効にしてください。有効にすると、Frigate は go2rtc と併用して ffmpeg モジュールを使用します。一部のカメラストリームでは、互換性が向上する場合があります。" } @@ -1183,7 +1274,30 @@ "backToSettings": "カメラ設定に戻る", "streams": { "title": "カメラの有効化/無効化", - "desc": "Frigate を再起動するまで一時的にカメラを無効化します。無効化すると、このカメラのストリーム処理は完全に停止し、検出・録画・デバッグは利用できません。
    注: これは go2rtc のリストリームを無効にはしません。" + "desc": "Frigate を再起動するまで一時的にカメラを無効化します。無効化すると、このカメラのストリーム処理は完全に停止し、検出・録画・デバッグは利用できません。
    注: これは go2rtc のリストリームを無効にはしません。", + "label": "カメラの状態", + "description": "各カメラの動作状態を設定します。

    オン: ストリームを通常通り処理します。
    オフ: 処理を一時停止します。Frigate の再起動後は保持されません。
    無効: 処理を停止し、設定ファイルに保存されます。再有効化には再起動が必要です。

    注: 無効化しても go2rtc のリストリームには影響しません。

    ハンドルをドラッグすると、ライブダッシュボードやカメラ選択ドロップダウンなど、UI 内のアクティブなカメラの並び順を変更できます。", + "disabledSubheading": "設定で無効化されています", + "status": { + "on": "オン", + "off": "オフ", + "disabled": "無効" + }, + "enableSuccess": "{{cameraName}} を有効にしました。適用するには Frigate を再起動してください。", + "disableSuccess": "{{cameraName}} を無効化し、設定に保存しました。", + "reorderHandle": "ドラッグで並び替え", + "saving": "保存中…", + "saved": "保存しました", + "details": { + "edit": "カメラ詳細を編集", + "title": "カメラ詳細を編集", + "description": "このカメラの表示名と外部 URL を更新します。Frigate UI 全体で使用されます。", + "friendlyNameLabel": "表示名", + "friendlyNameHelp": "Frigate UI 全体でこのカメラに表示される名前です。空欄にするとカメラ ID が使用されます。", + "webuiUrlLabel": "カメラ Web UI の URL", + "webuiUrlHelp": "デバッグビューからカメラの Web UI に直接アクセスするための URL です。空欄にするとリンクが無効になります。", + "webuiUrlInvalid": "有効な URL を入力してください (例: https://example.com)。" + } }, "cameraConfig": { "add": "カメラを追加", @@ -1213,6 +1327,117 @@ "toast": { "success": "カメラ {{cameraName}} を保存しました" } + }, + "description": "カメラの追加・編集・削除、各カメラの状態管理、プロファイル別やカメラタイプ別の上書き設定を行えます。ストリーム、検知、モーションなどカメラ固有の設定は、カメラ設定セクション内の各項目から行ってください。", + "deleteCamera": "カメラを削除", + "deleteCameraDialog": { + "title": "カメラを削除", + "description": "カメラを削除すると、そのカメラのすべての録画、追跡オブジェクト、設定が完全に削除されます。このカメラに関連する go2rtc ストリームは手動で削除が必要な場合があります。", + "selectPlaceholder": "カメラを選択...", + "confirmTitle": "本当によろしいですか?", + "confirmWarning": "{{cameraName}} の削除は元に戻せません。", + "deleteExports": "このカメラのエクスポートも削除する", + "confirmButton": "完全に削除", + "success": "カメラ {{cameraName}} を削除しました", + "error": "カメラ {{cameraName}} の削除に失敗しました" + }, + "profiles": { + "title": "プロファイル別カメラ上書き設定", + "selectLabel": "プロファイルを選択", + "description": "プロファイルが有効化されたときに、各カメラをオン/オフのどちらにするかを設定します。「継承」に設定されたカメラはデフォルトの状態を維持します。", + "inherit": "継承", + "on": "オン", + "off": "オフ" + }, + "cameraType": { + "title": "カメラタイプ", + "label": "カメラタイプ", + "description": "各カメラのタイプを設定します。専用 LPR カメラは、遠方の車両のナンバープレートを捉えるために強力な光学ズームを備えた専用カメラです。LPR 専用かつナンバープレートに焦点を絞った設置でない限り、通常は「Normal」を使用してください。", + "normal": "通常", + "dedicatedLpr": "専用 LPR", + "saveSuccess": "{{cameraName}} のカメラタイプを更新しました。変更を適用するには Frigate を再起動してください。" + }, + "clone": { + "sectionTitle": "設定を複製", + "sectionDescription": "あるカメラの設定を、別のカメラまたは新しいカメラにコピーします。", + "button": "設定を複製", + "title": "カメラ設定を複製", + "description": "あるカメラの設定を、1台以上の他のカメラまたは新しいカメラにコピーします。識別情報(名前、フレンドリーネーム、Web UI URL、表示順序)はコピーされません。", + "source": { + "label": "ソースカメラ", + "placeholder": "ソースカメラを選択", + "required": "ソースカメラを選択" + }, + "target": { + "legend": "ターゲット", + "newRadio": "新しいカメラ", + "newNameLabel": "カメラ名", + "newNamePlaceholder": "例:back_door または Back Door", + "newNameRequired": "カメラ名は必須です", + "newNameInvalid": "無効なカメラ名です", + "newNameCollision": "この名前のカメラは既に存在します", + "newStreamsForced": "新しいカメラには、常にストリームがコピーされます。", + "existingCamerasRadio": "既存のカメラ", + "allCameras": "すべてのカメラ", + "existingPlaceholder": "少なくとも1台のカメラを選択", + "existingDisabled": "コピー先のカメラがありません" + }, + "categories": { + "legend": "クローンする設定", + "description": "ソースカメラからコピーする設定を選択します。", + "selectAll": "すべて選択", + "selectNone": "選択解除", + "resetDefaults": "デフォルトにリセット", + "general": "一般", + "spatial": "空間設定", + "streams": "ストリーム", + "spatialWarningTitle": "解像度の不一致", + "spatialWarning": "ソースカメラ {{srcCamera}} の検出解像度 ({{srcWidth}}×{{srcHeight}}) は {{cameras}} と異なります。これらのカメラではポリゴンが一致しない可能性があります。これらのデフォルト設定はオフになっています。そのままコピーするには有効にしてください。", + "restartHint": "再起動が必要", + "items": { + "record": "録画", + "snapshots": "スナップショット", + "review": "再生", + "motion": "動体検知", + "objects": "物体", + "audio": "音声検知", + "audio_transcription": "音声文字起こし", + "notifications": "通知", + "birdseye": "バードアイ", + "mqtt": "MQTT", + "timestamp_style": "タイムスタンプ形式", + "onvif": "ONVIF", + "lpr": "ナンバープレート認識", + "face_recognition": "顔認識", + "semantic_search": "セマンティック検索", + "genai": "生成AI", + "type": "カメラタイプ(通常 / 専用LPR)", + "profiles": "プロファイル", + "detect": "サイズ検出", + "zones": "ゾーン", + "motion_mask": "動きマスク", + "object_masks": "オブジェクトマスク", + "ffmpeg_live": "ストリームURLとロール" + } + }, + "footer": { + "changeCount_other": "{{count}}件の変更が適用されます", + "restartNeeded": "一部の変更には再起動が必要です。", + "liveOnly": "すべての変更は再起動なしで即時適用されます。", + "submit": "クローン", + "submitting": "クローン作成中…" + }, + "toast": { + "success": "設定が {{cameraName}} にコピーされました", + "successWithRestart": "設定が {{cameraName}} にコピーされました。すべての変更を適用するには、Frigate を再起動してください。", + "successMulti_other": "設定が {{count}} 台のカメラにコピーされました", + "successMultiWithRestart_other": "設定が {{count}} 台のカメラにコピーされました。すべての変更を適用するには、Frigate を再起動してください。", + "partialFailure": "{{successCount}} セクションが適用されました。「{{failedSection}}」で失敗しました: {{errorMessage}}", + "partialFailureMulti": "{{successCount}} 台のカメラにコピーされました。{{failed}} で失敗しました: {{errorMessage}}", + "newCameraPartialFailure": "カメラ {{cameraName}} が作成されましたが、一部の設定のコピーに失敗しました: {{errorMessage}}", + "sourceMissing": "ソースカメラが存在しません", + "submitError": "カメラのクローン作成に失敗しました: {{errorMessage}}" + } } }, "cameraReview": { @@ -1227,26 +1452,26 @@ }, "review": { "title": "レビュー", - "desc": "Frigate を再起動するまで、このカメラのアラートと検出を一時的に有効/無効にします。無効にすると、新しいレビュー項目は生成されません。 ", + "desc": "Frigate を再起動するまで、このカメラのアラートと検知を一時的に有効/無効にします。無効にすると、新しいレビュー項目は生成されません。 ", "alerts": "アラート ", - "detections": "検出 " + "detections": "検知 " }, "reviewClassification": { "title": "レビュー分類", - "desc": "Frigate はレビュー項目をアラートと検出に分類します。既定では、すべての personcar オブジェクトはアラートとして扱われます。必須ゾーンを設定することで、分類をより細かく調整できます。", + "desc": "Frigate はレビュー項目をアラートと検知に分類します。既定では、すべての personcar オブジェクトはアラートとして扱われます。必須ゾーンを設定することで、分類をより細かく調整できます。", "noDefinedZones": "このカメラにはゾーンが定義されていません。", "objectAlertsTips": "すべての {{alertsLabels}} オブジェクトは {{cameraName}} でアラートとして表示されます。", - "zoneObjectAlertsTips": "{{cameraName}} の {{zone}} で検出されたすべての {{alertsLabels}} オブジェクトはアラートとして表示されます。", - "objectDetectionsTips": "{{cameraName}} で分類されていないすべての {{detectionsLabels}} オブジェクトは、どのゾーンにあっても検出として表示されます。", + "zoneObjectAlertsTips": "{{cameraName}} の {{zone}} で検知されたすべての {{alertsLabels}} オブジェクトはアラートとして表示されます。", + "objectDetectionsTips": "{{cameraName}} で分類されていないすべての {{detectionsLabels}} オブジェクトは、どのゾーンにあっても検知として表示されます。", "zoneObjectDetectionsTips": { - "text": "{{cameraName}} の {{zone}} で分類されていないすべての {{detectionsLabels}} オブジェクトは検出として表示されます。", - "notSelectDetections": "{{cameraName}} の {{zone}} で検出され、アラートに分類されなかったすべての {{detectionsLabels}} オブジェクトは、ゾーンに関係なく検出として表示されます。", - "regardlessOfZoneObjectDetectionsTips": "{{cameraName}} で分類されていないすべての {{detectionsLabels}} オブジェクトは、どのゾーンにあっても検出として表示されます。" + "text": "{{cameraName}} の {{zone}} で分類されていないすべての {{detectionsLabels}} オブジェクトは検知として表示されます。", + "notSelectDetections": "{{cameraName}} の {{zone}} で検知され、アラートに分類されなかったすべての {{detectionsLabels}} オブジェクトは、ゾーンに関係なく検知として表示されます。", + "regardlessOfZoneObjectDetectionsTips": "{{cameraName}} で分類されていないすべての {{detectionsLabels}} オブジェクトは、どのゾーンにあっても検知として表示されます。" }, "unsavedChanges": "未保存のレビュー分類設定({{camera}})", "selectAlertsZones": "アラート用のゾーンを選択", - "selectDetectionsZones": "検出用のゾーンを選択", - "limitDetections": "特定のゾーンに検出を限定する", + "selectDetectionsZones": "検知用のゾーンを選択", + "limitDetections": "特定のゾーンに検知を限定する", "toast": { "success": "レビュー分類の設定を保存しました。変更を適用するには Frigate を再起動してください。" } @@ -1255,8 +1480,61 @@ "maintenance": { "sync": { "status": { - "queued": "キューに追加済み" - } + "queued": "キューに追加済み", + "running": "実行中", + "completed": "完了", + "failed": "失敗", + "notRunning": "実行されていません" + }, + "title": "メディア同期", + "desc": "Frigate は保持設定に従って定期的にメディアを整理します。動作中に孤立ファイルが少数発生するのは正常です。この機能を使うと、データベース上で参照されなくなった孤立メディアファイルをディスクから削除できます。", + "started": "メディア同期を開始しました。", + "alreadyRunning": "同期ジョブはすでに実行中です", + "error": "同期の開始に失敗しました", + "currentStatus": "ステータス", + "jobId": "ジョブ ID", + "startTime": "開始時刻", + "endTime": "終了時刻", + "statusLabel": "ステータス", + "results": "結果", + "errorLabel": "エラー", + "mediaTypes": "メディアタイプ", + "allMedia": "すべてのメディア", + "dryRun": "ドライラン", + "dryRunEnabled": "ファイルは削除されません", + "dryRunDisabled": "ファイルは削除されます", + "force": "強制実行", + "forceDesc": "安全しきい値を無視して、削除対象がファイル全体の 50% を超えても同期を完了します。", + "verbose": "詳細出力", + "verboseDesc": "孤立ファイルの全リストを確認用にディスクに書き出します。", + "running": "同期実行中...", + "start": "同期を開始", + "inProgress": "同期実行中です。このページは現在操作できません。", + "resultsFields": { + "filesChecked": "確認済みファイル数", + "orphansFound": "検知された孤立ファイル数", + "orphansDeleted": "削除した孤立ファイル数", + "aborted": "中断しました。削除が安全しきい値を超過するためです。", + "error": "エラー", + "totals": "合計" + }, + "event_snapshots": "追跡オブジェクトのスナップショット", + "event_thumbnails": "追跡オブジェクトのサムネイル", + "review_thumbnails": "レビューのサムネイル", + "previews": "プレビュー", + "exports": "エクスポート", + "recordings": "録画" + }, + "title": "メンテナンス", + "regionGrid": { + "title": "リージョングリッド", + "desc": "リージョングリッドは、各カメラの画角内でさまざまなサイズのオブジェクトが通常出現する位置を学習する最適化機能です。Frigate はこのデータをもとに検知領域のサイズを効率化します。グリッドは追跡オブジェクトのデータから時間をかけて自動的に構築されます。", + "clear": "リージョングリッドをクリア", + "clearConfirmTitle": "リージョングリッドをクリア", + "clearConfirmDesc": "リージョングリッドのクリアは、検出器のモデルサイズを最近変更した場合や、カメラの物理的な位置を変更してオブジェクト追跡に問題がある場合を除き、推奨されません。追跡が進むにつれて自動的に再構築されます。変更を反映するには Frigate の再起動が必要です。", + "clearSuccess": "リージョングリッドをクリアしました", + "clearError": "リージョングリッドのクリアに失敗しました", + "restartRequired": "リージョングリッドの変更を反映するには再起動が必要です" } }, "button": { @@ -1270,6 +1548,529 @@ "heading_other": "このグローバルセクションには、{{count}} 台のカメラで上書きされているフィールドがあります。", "othersField_other": "{{count}} その他", "profilePrefix": "{{profile}} プロファイル: {{fields}}" + }, + "overriddenGlobalHeading_other": "このカメラはグローバル設定のうち {{count}} 項目を上書きしています:", + "overriddenGlobalNoDeltas": "このカメラはグローバル設定を上書きしていますが、値が異なる項目はありません。", + "overriddenBaseConfigHeading_other": "{{profile}} プロファイルはベース設定のうち {{count}} 項目を上書きしています:", + "overriddenBaseConfigNoDeltas": "{{profile}} プロファイルはこのセクションを上書きしていますが、ベース設定と異なる値はありません。" + }, + "menuDot": { + "overrideGlobal": "このセクションはグローバル設定を上書きします", + "overrideProfile": "このセクションは {{profile}} プロファイルによって上書きされます", + "unsaved": "このセクションには未保存の変更があります" + }, + "saveAllPreview": { + "title": "保存対象の変更", + "triggerLabel": "保留中の変更を確認", + "empty": "保留中の変更はありません。", + "scope": { + "label": "対象範囲", + "global": "グローバル", + "camera": "カメラ: {{cameraName}}" + }, + "profile": { + "label": "プロファイル" + }, + "field": { + "label": "項目" + }, + "value": { + "label": "新しい値", + "reset": "リセット" + } + }, + "timestampPosition": { + "tl": "左上", + "tr": "右上", + "bl": "左下", + "br": "右下" + }, + "detectorsAndModel": { + "title": "検出器とモデル", + "description": "物体検知を実行する検出器のバックエンドと、使用するモデルを設定します。検出器とモデルが同期するよう、変更は一括で保存されます。", + "cardTitles": { + "detector": "検出器ハードウェア", + "model": "検知モデル" + }, + "tabs": { + "plus": "Frigate+", + "custom": "カスタムモデル" + }, + "mismatch": { + "warning": "現在の Frigate+ モデル「{{model}}」は {{required}} 検出器が必要です。下から対応するモデルを選ぶか、保存前にカスタムモデルへ切り替えてください。" + }, + "plusModel": { + "requiresDetector": "必要な検出器: {{detector}}", + "noModelSelected": "Frigate+ モデルを選択" + }, + "toast": { + "saveSuccess": "検出器とモデルの設定を保存しました。変更を適用するには Frigate を再起動してください。", + "saveError": "検出器とモデルの設定の保存に失敗しました" + }, + "unsavedChanges": "検出器・モデルに未保存の変更があります", + "restartRequired": "再起動が必要です(検出器またはモデルが変更されました)" + }, + "configForm": { + "global": { + "title": "グローバル設定", + "description": "これらの設定は、カメラ固有の設定で上書きされない限り、全カメラに適用されます。" + }, + "camera": { + "title": "カメラ設定", + "description": "これらの設定はこのカメラにのみ適用され、グローバル設定を上書きします。", + "noCameras": "利用可能なカメラがありません" + }, + "advancedSettingsCount": "詳細設定 ({{count}})", + "advancedCount": "詳細 ({{count}})", + "showAdvanced": "詳細設定を表示", + "tabs": { + "sharedDefaults": "共通デフォルト", + "system": "システム", + "integrations": "連携" + }, + "additionalProperties": { + "keyLabel": "キー", + "valueLabel": "値", + "keyPlaceholder": "新しいキー", + "remove": "削除" + }, + "knownPlates": { + "namePlaceholder": "例: 妻の車", + "platePlaceholder": "ナンバーまたは正規表現" + }, + "timezone": { + "defaultOption": "ブラウザのタイムゾーンを使用" + }, + "roleMap": { + "empty": "ロールマッピングがありません", + "roleLabel": "ロール", + "groupsLabel": "グループ", + "addMapping": "ロールマッピングを追加", + "remove": "削除" + }, + "ffmpegArgs": { + "preset": "プリセット", + "manual": "手動で引数指定", + "inherit": "カメラ設定から継承", + "none": "なし", + "useGlobalSetting": "グローバル設定から継承", + "selectPreset": "プリセットを選択", + "manualPlaceholder": "FFmpeg 引数を入力", + "presetLabels": { + "preset-rpi-64-h264": "Raspberry Pi (H.264)", + "preset-rpi-64-h265": "Raspberry Pi (H.265)", + "preset-vaapi": "VAAPI (Intel/AMD GPU)", + "preset-intel-qsv-h264": "Intel QuickSync (H.264)", + "preset-intel-qsv-h265": "Intel QuickSync (H.265)", + "preset-nvidia": "NVIDIA GPU", + "preset-jetson-h264": "NVIDIA Jetson (H.264)", + "preset-jetson-h265": "NVIDIA Jetson (H.265)", + "preset-rkmpp": "Rockchip RKMPP", + "preset-http-jpeg-generic": "HTTP JPEG (汎用)", + "preset-http-mjpeg-generic": "HTTP MJPEG (汎用)", + "preset-http-reolink": "HTTP - Reolink カメラ", + "preset-rtmp-generic": "RTMP (汎用)", + "preset-rtsp-generic": "RTSP (汎用)", + "preset-rtsp-restream": "RTSP - go2rtc からのリストリーム", + "preset-rtsp-restream-low-latency": "RTSP - go2rtc からのリストリーム (低遅延)", + "preset-rtsp-udp": "RTSP - UDP", + "preset-rtsp-blue-iris": "RTSP - Blue Iris", + "preset-record-generic": "録画 (汎用、音声なし)", + "preset-record-generic-audio-copy": "録画 (汎用 + 音声コピー)", + "preset-record-generic-audio-aac": "録画 (汎用 + 音声を AAC に変換)", + "preset-record-mjpeg": "録画 - MJPEG カメラ", + "preset-record-jpeg": "録画 - JPEG カメラ", + "preset-record-ubiquiti": "録画 - Ubiquiti カメラ" + } + }, + "cameraInputs": { + "itemTitle": "ストリーム {{index}}" + }, + "restartRequiredField": "再起動が必要", + "restartRequiredFooter": "設定が変更されました - 再起動が必要です", + "sections": { + "detect": "検知", + "record": "録画", + "snapshots": "スナップショット", + "motion": "モーション", + "objects": "オブジェクト", + "review": "レビュー", + "audio": "音声", + "notifications": "通知", + "live": "ライブビュー", + "timestamp_style": "タイムスタンプ", + "mqtt": "MQTT", + "database": "データベース", + "telemetry": "テレメトリ", + "auth": "認証", + "tls": "TLS", + "proxy": "プロキシ", + "go2rtc": "go2rtc", + "ffmpeg": "FFmpeg", + "detectors": "検出器", + "model": "モデル", + "semantic_search": "セマンティック検索", + "genai": "生成AI", + "face_recognition": "顔認識", + "lpr": "ナンバープレート認識", + "birdseye": "バードアイ", + "masksAndZones": "マスク / ゾーン" + }, + "detect": { + "title": "検知設定" + }, + "detectors": { + "title": "検出器設定", + "singleType": "{{type}} 検出器は 1 つしか追加できません。", + "keyRequired": "検出器名は必須です。", + "keyDuplicate": "この検出器名は既に存在します。", + "noSchema": "利用可能な検出器スキーマがありません。", + "none": "検出器インスタンスが設定されていません。", + "add": "検出器を追加", + "addCustomKey": "カスタムキーを追加" + }, + "record": { + "title": "録画設定" + }, + "snapshots": { + "title": "スナップショット設定" + }, + "motion": { + "title": "モーション設定" + }, + "objects": { + "title": "オブジェクト設定" + }, + "audioLabels": { + "summary": "{{count}} 件の音声ラベルが選択されています", + "empty": "利用可能な音声ラベルがありません" + }, + "objectLabels": { + "summary": "{{count}} 種類のオブジェクトタイプが選択されています", + "empty": "利用可能なオブジェクトラベルがありません" + }, + "reviewLabels": { + "summary": "{{count}} 件のラベルが選択されています", + "empty": "利用可能なラベルがありません" + }, + "filters": { + "objectFieldLabel": "{{label}} の {{field}}" + }, + "zoneNames": { + "summary": "{{count}} 件選択", + "empty": "利用可能なゾーンがありません" + }, + "inputRoles": { + "summary": "{{count}} 件のロールが選択されています", + "empty": "利用可能なロールがありません", + "options": { + "detect": "検知", + "record": "録画", + "audio": "音声" + } + }, + "genaiRoles": { + "options": { + "embeddings": "埋め込み", + "descriptions": "説明", + "chat": "チャット" + } + }, + "semanticSearchModel": { + "placeholder": "モデルを選択…", + "builtIn": "組み込みモデル", + "genaiProviders": "生成AIプロバイダ" + }, + "semanticSearchModelSize": { + "notApplicable": "生成AIプロバイダには適用されません" + }, + "review": { + "title": "レビュー設定" + }, + "audio": { + "title": "音声設定" + }, + "notifications": { + "title": "通知設定" + }, + "live": { + "title": "ライブビュー設定" + }, + "timestamp_style": { + "title": "タイムスタンプ設定" + }, + "searchPlaceholder": "検索...", + "addCustomLabel": "カスタムラベルを追加...", + "genaiModel": { + "placeholder": "モデルを選択または入力…", + "search": "モデルを検索または入力…", + "noModels": "利用可能なモデルがありません", + "available": "利用可能なモデル", + "useCustom": "「{{value}}」を使用", + "refresh": "モデルを更新", + "probeFailed": "モデルの取得に失敗しました", + "fetchedModels": "モデル一覧を取得しました" + }, + "liveStreams": { + "streamNameLabel": "ストリーム名", + "streamNamePlaceholder": "例: Main HD Stream", + "go2rtcStreamLabel": "go2rtc ストリーム", + "go2rtcStreamPlaceholder": "go2rtc ストリームを選択してください", + "go2rtcStreamSearch": "ストリーム名を検索または入力してください…", + "noGo2rtcStreams": "設定済みの go2rtc ストリームはありません", + "availableStreams": "利用可能なストリーム", + "useCustom": "\"{{value}}\"を使用", + "addStream": "ストリームを追加" + } + }, + "globalConfig": { + "title": "グローバル設定", + "description": "上書きされない限り全カメラに適用されるグローバル設定を行います。", + "toast": { + "success": "グローバル設定を保存しました", + "error": "グローバル設定の保存に失敗しました", + "validationError": "入力検証に失敗しました" + } + }, + "cameraConfig": { + "title": "カメラ設定", + "description": "個別のカメラの設定を行います。グローバルのデフォルトを上書きします。", + "overriddenBadge": "上書き済み", + "resetToGlobal": "グローバル設定にリセット", + "toast": { + "success": "カメラ設定を保存しました", + "error": "カメラ設定の保存に失敗しました" + } + }, + "toast": { + "success": "設定を保存しました", + "applied": "設定を適用しました", + "successRestartRequired": "設定を保存しました。変更を適用するには Frigate を再起動してください。", + "error": "設定の保存に失敗しました", + "validationError": "入力検証に失敗しました: {{message}}", + "resetSuccess": "グローバルのデフォルトにリセットしました", + "resetError": "設定のリセットに失敗しました", + "saveAllSuccess_other": "{{count}} 件のセクションをすべて保存しました。", + "saveAllSuccessRestartRequired_other": "{{count}} 件のセクションをすべて保存しました。変更を適用するには Frigate を再起動してください。", + "saveAllPartial_other": "{{totalCount}} 件中 {{successCount}} 件のセクションを保存しました。{{failCount}} 件失敗。", + "saveAllFailure": "すべてのセクションの保存に失敗しました。" + }, + "profiles": { + "title": "プロファイル", + "activeProfile": "アクティブなプロファイル", + "noActiveProfile": "アクティブなプロファイルなし", + "active": "アクティブ", + "activated": "プロファイル「{{profile}}」を有効化しました", + "activateFailed": "プロファイルの設定に失敗しました", + "deactivated": "プロファイルを無効化しました", + "noProfiles": "プロファイルが定義されていません。", + "noOverrides": "上書きなし", + "cameraCount_other": "{{count}} 台のカメラ", + "columnCamera": "カメラ", + "columnOverrides": "プロファイルの上書き", + "baseConfig": "ベース設定", + "addProfile": "プロファイルを追加", + "newProfile": "新しいプロファイル", + "profileNamePlaceholder": "例: 在宅、外出、夜間モード", + "friendlyNameLabel": "プロファイル名", + "profileIdLabel": "プロファイル ID", + "profileIdDescription": "設定や自動化で使用される内部 ID です", + "nameInvalid": "使用できるのは小文字、数字、アンダースコアのみです", + "nameDuplicate": "この名前のプロファイルは既に存在します", + "error": { + "mustBeAtLeastTwoCharacters": "2 文字以上で入力してください", + "mustNotContainPeriod": "ピリオドは使用できません", + "alreadyExists": "この ID のプロファイルは既に存在します" + }, + "renameProfile": "プロファイル名を変更", + "renameSuccess": "プロファイル名を「{{profile}}」に変更しました", + "deleteProfile": "プロファイルを削除", + "deleteProfileConfirm": "プロファイル「{{profile}}」を全カメラから削除しますか?この操作は元に戻せません。", + "deleteSuccess": "プロファイル「{{profile}}」を削除しました", + "createSuccess": "プロファイル「{{profile}}」を作成しました", + "removeOverride": "プロファイル上書きを解除", + "deleteSection": "セクション上書きを削除", + "deleteSectionConfirm": "{{camera}} の {{profile}} プロファイルから {{section}} の上書きを削除しますか?", + "deleteSectionSuccess": "{{profile}} の {{section}} 上書きを削除しました", + "enableSwitch": "プロファイルを有効にする", + "enabledDescription": "プロファイルが有効化されています。下から新しいプロファイルを作成し、カメラ設定セクションで変更を加えて保存すると反映されます。", + "disabledDescription": "プロファイルを使うと、名前付きのカメラ設定上書きセット(例: 在宅、外出、夜間)を定義し、必要に応じて有効化できます。" + }, + "unsavedChanges": "未保存の変更があります", + "confirmReset": "リセットの確認", + "resetToDefaultDescription": "このセクションのすべての設定をデフォルト値にリセットします。この操作は元に戻せません。", + "resetToGlobalDescription": "このセクションの設定をグローバルのデフォルトにリセットします。この操作は元に戻せません。", + "go2rtcStreams": { + "title": "go2rtc ストリーム", + "description": "カメラのリストリーム用に go2rtc のストリーム設定を管理します。各ストリームは名前と 1 つ以上のソース URL を持ちます。", + "addStream": "ストリームを追加", + "addStreamDesc": "新しいストリームの名前を入力してください。この名前はカメラ設定でストリームを参照する際に使用されます。", + "addUrl": "URL を追加", + "streamNumber": "ストリーム {{index}}", + "streamName": "ストリーム名", + "streamNamePlaceholder": "例: front_door", + "streamUrlPlaceholder": "例: rtsp://user:pass@192.168.1.100/stream", + "deleteStream": "ストリームを削除", + "deleteStreamConfirm": "ストリーム「{{streamName}}」を削除してもよろしいですか?このストリームを参照しているカメラは動作しなくなる可能性があります。", + "noStreams": "go2rtc ストリームが設定されていません。ストリームを追加して始めてください。", + "validation": { + "nameRequired": "ストリーム名は必須です", + "nameDuplicate": "この名前のストリームは既に存在します", + "nameInvalid": "ストリーム名には英字、数字、アンダースコア、ハイフンのみ使用できます", + "urlRequired": "URL を少なくとも 1 つ指定してください" + }, + "renameStream": "ストリーム名を変更", + "renameStreamDesc": "このストリームの新しい名前を入力してください。名前を変更すると、この名前で参照しているカメラや他のストリームが動作しなくなる可能性があります。", + "newStreamName": "新しいストリーム名", + "ffmpeg": { + "useFfmpegModule": "互換モード (ffmpeg) を使用", + "video": "映像", + "audio": "音声", + "hardware": "ハードウェアアクセラレーション", + "videoCopy": "コピー", + "videoH264": "H.264 にトランスコード", + "videoH265": "H.265 にトランスコード", + "videoExclude": "除外", + "audioCopy": "コピー", + "audioAac": "AAC にトランスコード", + "audioOpus": "Opus にトランスコード", + "audioPcmu": "PCM μ-law にトランスコード", + "audioPcma": "PCM A-law にトランスコード", + "audioPcm": "PCM にトランスコード", + "audioMp3": "MP3 にトランスコード", + "audioExclude": "除外", + "hardwareNone": "ハードウェアアクセラレーションなし", + "hardwareAuto": "自動 (推奨)", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "ビデオコーデックを追加", + "addAudioCodec": "音声コーデックを追加", + "removeCodec": "コーデックを削除" + } + }, + "birdseye": { + "trackingMode": { + "objects": "オブジェクト", + "motion": "モーション", + "continuous": "常時" + }, + "cameraOrder": { + "label": "カメラ順序", + "description": "カメラをドラッグしてバードアイレイアウト内の順序を設定します。", + "reorderHandle": "ドラッグで並び替え", + "saving": "保存中…", + "saved": "保存しました" + } + }, + "retainMode": { + "all": "すべて", + "motion": "モーション", + "active_objects": "アクティブなオブジェクト" + }, + "previewQuality": { + "very_high": "非常に高", + "high": "高", + "medium": "中", + "low": "低", + "very_low": "非常に低" + }, + "ui": { + "timeFormat": { + "browser": "ブラウザ設定", + "12hour": "12 時間表示", + "24hour": "24 時間表示" + }, + "TimeOrDateStyle": { + "full": "完全表示", + "long": "長い形式", + "medium": "中程度", + "short": "短い形式" + }, + "unitSystem": { + "metric": "メートル法", + "imperial": "ヤード・ポンド法" + } + }, + "review": { + "imageSource": { + "recordings": "録画", + "previews": "プレビュー" + } + }, + "logger": { + "logLevel": { + "debug": "デバッグ", + "info": "情報", + "warning": "警告", + "error": "エラー", + "critical": "重大" + } + }, + "onvif": { + "profileAuto": "自動", + "profileLoading": "プロファイルを読み込み中...", + "autotracking": { + "zooming": { + "disabled": "無効", + "absolute": "絶対値", + "relative": "相対値" + } + } + }, + "modelSize": { + "small": "小", + "large": "大" + }, + "configMessages": { + "review": { + "recordDisabled": "録画が無効化されているため、レビュー項目は生成されません。", + "detectDisabled": "物体検知が無効化されています。レビュー項目はアラートと検知を分類するために検知オブジェクトが必要です。", + "allNonAlertDetections": "アラート以外のすべてのアクティビティが検知として含まれます。", + "genaiImageSourceRecordingsRecordDisabled": "画像ソースが「録画」に設定されていますが、録画は無効化されています。Frigate はプレビュー画像を代わりに使用します。" + }, + "audio": { + "noAudioRole": "audio ロールが定義されたストリームがありません。音声検知を機能させるには audio ロールを有効にする必要があります。" + }, + "audioTranscription": { + "audioDetectionDisabled": "このカメラでは音声検知が有効化されていません。音声文字起こしには音声検知が必要です。" + }, + "detect": { + "fpsGreaterThanFive": "検知 FPS を 5 より高く設定することは推奨されません。値を大きくしてもパフォーマンス上の問題を引き起こすだけで、メリットはありません。", + "disabled": "物体検知が無効化されています。スナップショット、レビュー項目、顔認識、ナンバープレート認識、生成AI などのエンリッチメントは機能しません。", + "resolutionShouldBeMultipleOfFour": "最良の結果を得るため、検知の幅と高さは 4 の倍数にしてください。他の偶数値でも動作しますが、検知ストリームに視覚的なノイズや軽微な歪みが生じる可能性があります。", + "aspectRatioMismatch": "入力した幅と高さは現在の検知解像度のアスペクト比と一致していません。映像が引き伸ばされたり歪んだりする可能性があります。" + }, + "objects": { + "genaiNoDescriptionsProvider": "説明を生成するには「descriptions」ロールを持つ生成AIプロバイダを設定する必要があります。" + }, + "faceRecognition": { + "globalDisabled": "このカメラで顔認識機能を使うには、顔認識のエンリッチメントを有効にする必要があります。", + "personNotTracked": "顔認識には「person」オブジェクトの追跡が必要です。このカメラのオブジェクト設定で「person」を有効にしてください。", + "modelSizeLarge": "「large」モデルは合理的な性能を発揮するために GPU または NPU が必要です。CPU のみのシステムでは「small」を使用してください。" + }, + "lpr": { + "globalDisabled": "このカメラで LPR 機能を使うには、ナンバープレート認識のエンリッチメントを有効にする必要があります。", + "vehicleNotTracked": "ナンバープレート認識には「car」または「motorcycle」の追跡が必要です。このカメラのオブジェクト設定でいずれかを有効にしてください。", + "modelSizeLarge": "「large」モデルは複数行のナンバープレート向けに最適化されています。お住まいの地域で複数行プレートが使われていない限り、「small」モデルの方が性能が良いためそちらを使用してください。" + }, + "record": { + "noRecordRole": "record ロールが定義されたストリームがありません。録画は機能しません。" + }, + "birdseye": { + "objectsModeDetectDisabled": "バードアイが「objects」モードに設定されていますが、このカメラの物体検知は無効化されています。このカメラはバードアイに表示されません。" + }, + "snapshots": { + "detectDisabled": "物体検知が無効化されています。スナップショットは追跡オブジェクトから生成されるため、作成されません。" + }, + "detectors": { + "mixedTypes": "すべての検出器は同じタイプである必要があります。別のタイプを使うには既存の検出器を削除してください。", + "mixedTypesSuggestion": "すべての検出器は同じタイプである必要があります。既存の検出器を削除するか、{{type}} を選択してください。" + }, + "semanticSearch": { + "jinav2SmallModelSize": "Jina V2 モデルの「small」サイズは RAM と推論コストが高くなります。専用 GPU と「large」モデルの組み合わせを推奨します。" } } } diff --git a/web/public/locales/ja/views/system.json b/web/public/locales/ja/views/system.json index fd64e58a1b..2971039638 100644 --- a/web/public/locales/ja/views/system.json +++ b/web/public/locales/ja/views/system.json @@ -23,7 +23,7 @@ "error": "ログをクリップボードにコピーできませんでした" }, "type": { - "label": "種類", + "label": "タイプ", "timestamp": "タイムスタンプ", "tag": "タグ", "message": "メッセージ" @@ -70,7 +70,7 @@ "inferenceSpeed": "ディテクタ推論速度", "temperature": "ディテクタ温度", "cpuUsage": "ディテクタの CPU 使用率", - "cpuUsageInformation": "検出モデルへの入力/出力データの準備に使用される CPU。GPU やアクセラレータを使用していても、この値は推論の使用量を測定しません。", + "cpuUsageInformation": "検知モデルへの入力/出力データの準備に使用される CPU。GPU やアクセラレータを使用していても、この値は推論の使用量を測定しません。", "memoryUsage": "ディテクタのメモリ使用量" }, "hardwareInfo": { @@ -108,8 +108,11 @@ "intelGpuWarning": { "title": "Intel GPU 統計情報の警告", "message": "GPU の統計情報を取得できません", - "description": "これは Intel の GPU 統計取得ツール(intel_gpu_top)における既知の不具合です。ハードウェアアクセラレーションやオブジェクト検出が (i)GPU 上で正しく動作している場合でも、GPU 使用率が 0% と繰り返し表示されることがあります。これは Frigate の不具合ではありません。ホストを再起動することで一時的に解消し、GPU が正常に動作していることを確認できます。本問題はパフォーマンスには影響しません。" - } + "description": "これは Intel の GPU 統計取得ツール(intel_gpu_top)における既知の不具合です。ハードウェアアクセラレーションやオブジェクト検知が (i)GPU 上で正しく動作している場合でも、GPU 使用率が 0% と繰り返し表示されることがあります。これは Frigate の不具合ではありません。ホストを再起動することで一時的に解消し、GPU が正常に動作していることを確認できます。本問題はパフォーマンスには影響しません。" + }, + "gpuCompute": "GPU 演算 / エンコード", + "gpuTemperature": "GPU 温度", + "npuTemperature": "NPU 温度" }, "otherProcesses": { "title": "その他のプロセス", @@ -134,7 +137,11 @@ }, "shm": { "title": "SHM(共有メモリ)の割り当て", - "warning": "現在の SHM サイズ {{total}}MB は小さすぎます。少なくとも {{min_shm}}MB に増やしてください。" + "warning": "現在の SHM サイズ {{total}}MB は小さすぎます。少なくとも {{min_shm}}MB に増やしてください。", + "frameLifetime": { + "title": "フレーム保持時間", + "description": "各カメラは共有メモリ内に {{frames}} 個のフレームスロットを持ちます。最も高速なカメラのフレームレートでは、各フレームは上書きされるまで約 {{lifetime}} 秒間利用可能です。" + } }, "cameraStorage": { "title": "カメラストレージ", @@ -169,22 +176,23 @@ "title": "カメラプローブ情報" } }, - "framesAndDetections": "フレーム / 検出", + "framesAndDetections": "フレーム / 検知", "label": { "camera": "カメラ", - "detect": "検出", + "detect": "検知", "skipped": "スキップ", "ffmpeg": "FFmpeg", "capture": "キャプチャ", "overallFramesPerSecond": "全体フレーム/秒", - "overallDetectionsPerSecond": "全体検出/秒", - "overallSkippedDetectionsPerSecond": "全体スキップ検出/秒", + "overallDetectionsPerSecond": "全体検知/秒", + "overallSkippedDetectionsPerSecond": "全体スキップ検知/秒", "cameraFfmpeg": "{{camName}} FFmpeg", "cameraCapture": "{{camName}} キャプチャ", - "cameraDetect": "{{camName}} 検出", + "cameraDetect": "{{camName}} 検知", "cameraFramesPerSecond": "{{camName}} フレーム/秒", - "cameraDetectionsPerSecond": "{{camName}} 検出/秒", - "cameraSkippedDetectionsPerSecond": "{{camName}} スキップ検出/秒" + "cameraDetectionsPerSecond": "{{camName}} 検知/秒", + "cameraSkippedDetectionsPerSecond": "{{camName}} スキップ検知/秒", + "cameraGpu": "{{camName}} GPU" }, "toast": { "success": { @@ -193,18 +201,33 @@ "error": { "unableToProbeCamera": "カメラをプローブできません: {{errorMessage}}" } + }, + "noCameras": { + "title": "カメラが見つかりません" + }, + "connectionQuality": { + "title": "接続品質", + "excellent": "非常に良好", + "fair": "普通", + "poor": "不良", + "unusable": "使用不可", + "fps": "FPS", + "expectedFps": "想定 FPS", + "reconnectsLastHour": "再接続回数 (直近1時間)", + "stallsLastHour": "ストール回数 (直近1時間)" } }, "lastRefreshed": "最終更新: ", "stats": { "ffmpegHighCpuUsage": "{{camera}} の FFmpeg の CPU 使用率が高い({{ffmpegAvg}}%)", - "detectHighCpuUsage": "{{camera}} の検出の CPU 使用率が高い({{detectAvg}}%)", + "detectHighCpuUsage": "{{camera}} の検知の CPU 使用率が高い({{detectAvg}}%)", "healthy": "システムは正常です", "reindexingEmbeddings": "埋め込みを再インデックス中({{processed}}% 完了)", "cameraIsOffline": "{{camera}} はオフラインです", "detectIsSlow": "{{detect}} が遅い({{speed}} ms)", "detectIsVerySlow": "{{detect}} が非常に遅い({{speed}} ms)", - "shmTooLow": "/dev/shm の割り当て({{total}} MB)は少なくとも {{min}} MB に増やす必要があります。" + "shmTooLow": "/dev/shm の割り当て({{total}} MB)は少なくとも {{min}} MB に増やす必要があります。", + "debugReplayActive": "デバッグリプレイセッションが実行中です" }, "enrichments": { "title": "高度解析", @@ -219,8 +242,8 @@ "face_recognition_speed": "顔認識速度", "plate_recognition_speed": "ナンバープレート認識速度", "text_embedding_speed": "テキスト埋め込み速度", - "yolov9_plate_detection_speed": "YOLOv9 ナンバープレート検出速度", - "yolov9_plate_detection": "YOLOv9 ナンバープレート検出", + "yolov9_plate_detection_speed": "YOLOv9 ナンバープレート検知速度", + "yolov9_plate_detection": "YOLOv9 ナンバープレート検知", "review_description": "レビュー説明", "review_description_speed": "レビュー説明の処理速度", "review_description_events_per_second": "レビュー説明", From 01d821347acbab38c0d832b9d588414a096e99be Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:49 +0200 Subject: [PATCH 08/21] Translated using Weblate (Catalan) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (45 of 45 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (1195 of 1195 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (1186 of 1186 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (145 of 145 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (1183 of 1183 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (175 of 175 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (1181 of 1181 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (1176 of 1176 strings) Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com> Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/ Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-live Translation: Frigate NVR/views-replay Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/ca/common.json | 8 +- web/public/locales/ca/components/player.json | 3 +- web/public/locales/ca/config/global.json | 6 +- web/public/locales/ca/config/validation.json | 3 + web/public/locales/ca/views/chat.json | 3 + web/public/locales/ca/views/explore.json | 8 +- web/public/locales/ca/views/live.json | 7 +- web/public/locales/ca/views/replay.json | 2 +- web/public/locales/ca/views/settings.json | 181 ++++++++++++++++--- web/public/locales/ca/views/system.json | 20 +- 10 files changed, 193 insertions(+), 48 deletions(-) diff --git a/web/public/locales/ca/common.json b/web/public/locales/ca/common.json index f089d62eb7..219c044370 100644 --- a/web/public/locales/ca/common.json +++ b/web/public/locales/ca/common.json @@ -50,7 +50,8 @@ "id": "Bahasa Indonesia (Indonesi)", "ur": "اردو (Urdú)", "hr": "Hrvatski (croat)", - "bs": "Bosanski (Bosni)" + "bs": "Bosanski (Bosni)", + "zhHant": "繁體中文 (Xinès Tradicional)" }, "system": "Sistema", "systemMetrics": "Mètriques del sistema", @@ -323,5 +324,8 @@ "internalID": "L'ID intern que Frigate s'utilitza a la configuració i a la base de dades" }, "no_items": "Sense elements", - "validation_errors": "Errors de validació" + "validation_errors": "Errors de validació", + "credentialField": { + "savedPlaceholder": "Desat — deixa en blanc per mantenir l'actual" + } } diff --git a/web/public/locales/ca/components/player.json b/web/public/locales/ca/components/player.json index 88be512c96..161727946e 100644 --- a/web/public/locales/ca/components/player.json +++ b/web/public/locales/ca/components/player.json @@ -48,5 +48,6 @@ "error": { "submitFrigatePlusFailed": "Error al enviar fotograma a Frigate+" } - } + }, + "cameraOff": "La càmera està apagada" } diff --git a/web/public/locales/ca/config/global.json b/web/public/locales/ca/config/global.json index f748860668..a929b2bc4a 100644 --- a/web/public/locales/ca/config/global.json +++ b/web/public/locales/ca/config/global.json @@ -524,11 +524,11 @@ }, "reindex": { "label": "Reindexa en iniciar", - "description": "Activa un reíndex complet d'objectes rastrejats històrics a la base de dades d'incrustacions." + "description": "Activa un reindexat complet d'objectes rastrejats històrics a la base de dades d'incrustacions." }, "model": { "label": "Model de cerca semàntica o nom del proveïdor GenAI", - "description": "El model d'incrustació a utilitzar per a la cerca semàntica (per exemple 'jinav1'), o el nom d'un proveïdor de GenAI amb el rol d'incrustació." + "description": "El model de vectors a utilitzar per a la cerca semàntica (per exemple 'jinav1'), o el nom d'un proveïdor de GenAI amb el rol de vectors." }, "model_size": { "label": "Mida del model", @@ -808,7 +808,7 @@ }, "model_size": { "label": "Mida del model", - "description": "Mida del model a utilitzar per a incrustacions facials (petit/gran); més gran pot requerir GPU." + "description": "Mida del model a utilitzar per als vectors facials (petit/gran); més gran pot requerir GPU." }, "unknown_score": { "label": "Llindar de puntuació desconegut", diff --git a/web/public/locales/ca/config/validation.json b/web/public/locales/ca/config/validation.json index bcf1093c17..b087d5a892 100644 --- a/web/public/locales/ca/config/validation.json +++ b/web/public/locales/ca/config/validation.json @@ -28,5 +28,8 @@ "detectRequired": "Almenys un flux d'entrada ha de tenir assignat el rol «detecta».", "hwaccelDetectOnly": "Només el flux d'entrada amb el rol detect pot definir arguments d'acceleració del maquinari." } + }, + "detect": { + "dimensionMustBeEven": "Ha de ser un nombre parell." } } diff --git a/web/public/locales/ca/views/chat.json b/web/public/locales/ca/views/chat.json index 27a2cce825..cb618cebc4 100644 --- a/web/public/locales/ca/views/chat.json +++ b/web/public/locales/ca/views/chat.json @@ -65,5 +65,8 @@ "active": "Raonant…", "show": "Mostra el raonament", "hide": "Amaga el raonament" + }, + "thinking": { + "toggle": "Commuta el pensament" } } diff --git a/web/public/locales/ca/views/explore.json b/web/public/locales/ca/views/explore.json index c9a11a0c4b..a6a2844799 100644 --- a/web/public/locales/ca/views/explore.json +++ b/web/public/locales/ca/views/explore.json @@ -2,10 +2,10 @@ "exploreIsUnavailable": { "downloadingModels": { "tips": { - "context": "Potser voldreu reindexar les incrustacions dels objectes seguits un cop s'hagin descarregat els models.", + "context": "Potser voldreu reindexar els vectors dels objectes seguits un cop s'hagin descarregat els models.", "documentation": "Llegir la documentació" }, - "context": "Frigate està descarregant els models d'embeddings necessaris per a donar suport a la funció de cerca semàntica. Això pot trigar diversos minuts, depenent de la velocitat de la teva connexió de xarxa.", + "context": "El Frigate està baixant els models de vectors necessaris per a admetre la funció de Cerca Semàntica. Això pot trigar uns quants minuts depenent de la velocitat de la vostra connexió de xarxa.", "setup": { "visionModel": "Model de visió", "visionModelFeatureExtractor": "Extractor de característiques del model de visió", @@ -248,7 +248,7 @@ "dialog": { "confirmDelete": { "title": "Confirmar la supressió", - "desc": "Suprimir aquest objecte rastrejat elimina la instantània, qualsevol incrustació desada, i qualsevol entrada de detalls de seguiment associada. Les imatges gravades d'aquest objecte seguit en l'historial NO seràn eliminades.

    Estas segur que vols continuar?" + "desc": "En eliminar aquest objecte detectat, s'esborrarà la instantània, els vectors desats i qualsevol entrada associada als detalls de seguiment d'aquest objecte. El metratge enregistrat d'aquest objecte detectat a la vista de l'Historial NO s'esborrarà.

    Segur que voleu continuar?" }, "toast": { "error": "S'ha produït un error en suprimir aquest objecte rastrejat: {{errorMessage}}" @@ -282,7 +282,7 @@ "faceOrLicense_plate": "{{attribute}} detectat per {{label}}", "other": "{{label}} reconegut com a {{attribute}}" }, - "gone": "{{label}} esquerra", + "gone": "{{label}} ha sortit", "heard": "{{label}} sentit", "external": "{{label}} detectat", "header": { diff --git a/web/public/locales/ca/views/live.json b/web/public/locales/ca/views/live.json index 20db54905b..b2f7fda188 100644 --- a/web/public/locales/ca/views/live.json +++ b/web/public/locales/ca/views/live.json @@ -58,7 +58,9 @@ }, "camera": { "enable": "Habilitar la càmera", - "disable": "Deshabilita la càmera" + "disable": "Deshabilita la càmera", + "turnOn": "Activa la càmera", + "turnOff": "Apaga la càmera" }, "muteCameras": { "enable": "Silencia totes les càmeres", @@ -151,7 +153,8 @@ "autotracking": "Seguiment automàtic", "objectDetection": "Detecció d'objectes", "audioDetection": "Detecció d'àudio", - "transcription": "Transcripció d'audio" + "transcription": "Transcripció d'audio", + "camera": "Càmera" }, "history": { "label": "Mostrar gravacions històriques" diff --git a/web/public/locales/ca/views/replay.json b/web/public/locales/ca/views/replay.json index 36eccd8a6c..8dc6730cc3 100644 --- a/web/public/locales/ca/views/replay.json +++ b/web/public/locales/ca/views/replay.json @@ -55,5 +55,5 @@ "goToReplay": "Ves a la repetició" } }, - "description": "Reprodueix els enregistraments de la càmera per a la depuració. La llista d'objectes mostra un resum retardat en el temps dels objectes detectats i la pestanya Missatges mostra un flux de missatges interns de la fragata a partir del metratge de reproducció." + "description": "Reprodueix els enregistraments de la càmera per a la depuració. La llista d'objectes mostra un resum retardat en el temps dels objectes detectats i la pestanya Missatges mostra un flux de missatges interns de frigate a partir del metratge de reproducció." } diff --git a/web/public/locales/ca/views/settings.json b/web/public/locales/ca/views/settings.json index ebd2278fd0..baa5dec317 100644 --- a/web/public/locales/ca/views/settings.json +++ b/web/public/locales/ca/views/settings.json @@ -29,7 +29,7 @@ "frigateplus": "Frigate+", "enrichments": "Enriquiments", "triggers": "Disparadors", - "cameraManagement": "Gestió", + "cameraManagement": "Gestió de la càmera", "cameraReview": "Revisió", "roles": "Rols", "general": "General", @@ -136,7 +136,7 @@ "clearAll": "Esborra tots els paràmetres de transmissió" }, "recordingsViewer": { - "title": "Visor d'enregistraments", + "title": "Visualitzador d'enregistraments", "defaultPlaybackRate": { "label": "Velocitat de reproducció predeterminada", "desc": "Velocitat de reproducció predeterminada per a la reproducció de gravacions." @@ -773,22 +773,22 @@ "modelSize": { "small": { "title": "petit", - "desc": "L’opció small fa servir una versió quantitzada del model que consumeix menys RAM i s’executa més ràpidament a la CPU, amb una diferència gairebé inapreciable en la qualitat de les incrustacions (embeddings)." + "desc": "Si s'utilitza small, s'empra una versió quantitzada del model que consumeix menys memòria RAM i s'executa més ràpidament a la CPU, amb una diferència inapreciable en la qualitat dels vectors." }, "label": "Mida del model", "large": { "title": "gran", "desc": "L’opció large fa servir el model complet de Jina i s’executarà automàticament a la GPU si està disponible." }, - "desc": "La mida del model utilitzat per incrustacions de cerca semàntica." + "desc": "La mida del model utilitzat per als vectors de la cerca semàntica." }, "reindexNow": { "confirmButton": "Reindexar", "success": "La reindexació ha començat amb èxit.", "label": "Reindexar ara", "confirmTitle": "Confirmar la reindexació", - "desc": "La reindexació regenerarà les incrustacions per a tots els objectes rastrejats. Aquest procés s'executa en segon pla i pot treure el màxim de la CPU i prendre una quantitat de temps raonable depenent del nombre d'objectes rastrejats que tingueu.", - "confirmDesc": "Estàs segur que vols reindexar totes les incrustacions (embeddings) dels objectes seguits? Aquest procés s’executarà en segon pla, però pot arribar a saturar la CPU i trigar bastant temps. Pots seguir-ne el progrés a la pàgina d’Explora.", + "desc": "La reindexació tornarà a generar els vectors de tots els objectes detectats. Aquest procés s'executa en segon pla, pot posar la CPU al màxim i trigar una bona estona segons el nombre d'objectes detectats que tingueu.", + "confirmDesc": "Segur que voleu tornar a indexar els vectors de tots els objectes detectats? Aquest procés s'executa en segon pla, però pot posar la CPU al màxim i trigar una bona estona. En podeu veure el progrés a la pàgina Explora.", "alreadyInProgress": "La reindexació ja està en curs.", "error": "Error en iniciar la reindexació: {{errorMessage}}" }, @@ -1059,7 +1059,7 @@ "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." + "customUrlRtspRequired": "Els URL personalitzats han de començar amb \"rtsp://\" o \"rtsps://\". 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", @@ -1303,13 +1303,13 @@ "selectCamera": "Selecciona una càmera", "backToSettings": "Torna a la configuració de la càmera", "streams": { - "title": "Habilita / Inhabilita les càmeres", + "title": "Estat i detalls de la càmera", "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.", "enableLabel": "Càmeres habilitades", "enableDesc": "Inhabilita temporalment una càmera habilitada fins que es reiniciï Frigate. 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 inhabilita els restreams go2rtc.

    Drag el handle per reordenar les càmeres tal com apareixen a la interfície d'usuari. L'ordre de les càmeres habilitades es reflectirà en tota la interfície d'usuari, incloent el tauler en viu i els desplegables de selecció de càmeres.", "disableLabel": "Càmeres inhabilitades", "disableDesc": "Habilita una càmera que actualment no és visible a la interfície d'usuari i està desactivada a la configuració. Es requereix un reinici de Frigate després d'activar-la.", - "enableSuccess": "{{cameraName}} activat a la configuració. Reinicia Frigate per aplicar els canvis.", + "enableSuccess": "{{cameraName}} activat. Reinicia Frigate a aplicar.", "friendlyName": { "edit": "Edita el nom de la pantalla de la càmera", "title": "Edita el nom de la pantalla", @@ -1318,7 +1318,26 @@ }, "reorderHandle": "Arrossega per reordenar", "saving": "S'està desant…", - "saved": "Desat" + "saved": "Desat", + "details": { + "edit": "Edita els detalls de la càmera", + "title": "Edita els detalls de la càmera", + "description": "Actualitzeu el nom de la pantalla i l'URL extern utilitzat per a aquesta càmera a tota la interfície d'usuari de Frigate.", + "friendlyNameLabel": "Nom a mostrar", + "friendlyNameHelp": "Nom amistós que es mostra per a aquesta càmera a tota la interfície d'usuari de Frigate. Deixeu-ho en blanc per utilitzar l'ID de la càmera.", + "webuiUrlLabel": "URL de la interfície web de la càmera", + "webuiUrlHelp": "URL per a visitar la interfície d'usuari web de la càmera directament des de la vista de depuració. Deixeu-ho en blanc per desactivar l'enllaç.", + "webuiUrlInvalid": "Ha de ser un URL vàlid (p. ex., https://example.com)." + }, + "label": "Estat de la càmera", + "description": "Estableix l'estat operatiu de cada càmera.

    A: els fluxos es processen normalment.
    Off: pausa temporalment el processament. No persisteix a través de reinicis de Frigate.
    Inhabilitat: deixa de processar i desa el canvi a la configuració. Es requereix un reinici per a tornar a habilitar una càmera inhabilitada.

    Nota: La inhabilitació no afecta els restreams de go2rtc.

    Arrossegueu l'ansa per a reordenar les càmeres actives a mesura que apareguin a tota la interfície d'usuari, inclosos els desplegables de selecció de quadres en viu i de càmera.", + "disabledSubheading": "Desactivat en la configuració", + "status": { + "on": "Engegat", + "off": "Apagat", + "disabled": "Desactivat" + }, + "disableSuccess": "{{cameraName}} desactivat i desat a la configuració." }, "cameraConfig": { "add": "Afegeix una càmera", @@ -1364,20 +1383,110 @@ "profiles": { "title": "Sobreescriu la càmera de perfil", "selectLabel": "Seleccioneu el perfil", - "description": "Configura quines càmeres estan habilitades o desactivades quan s'activa un perfil. Les càmeres establertes a «Inherit» mantenen el seu estat base habilitat.", + "description": "Configura quines càmeres estan activades o desactivades quan s'activa un perfil. Les càmeres establertes a «herit» mantenen el seu estat per defecte.", "inherit": "Hereta", "enabled": "Habilitat", - "disabled": "Desactivat" + "disabled": "Desactivat", + "on": "Engegat", + "off": "Apagat" }, "cameraType": { "title": "Tipus de càmera", "label": "Tipus de càmera", "description": "Estableix el tipus per a cada càmera. Les càmeres LPR dedicades són càmeres d'un sol ús amb un potent zoom òptic per capturar matrícules en vehicles distants. La majoria de les càmeres haurien d'utilitzar el tipus de càmera normal llevat que la càmera sigui específicament per a LPR i tingui una vista molt centrada en les matrícules.", "dedicatedLpr": "LPR dedicat", - "saveSuccess": "Tipus de càmera actualitzat per {{cameraName}}. Reinicia la fragata per aplicar els canvis.", + "saveSuccess": "Tipus de càmera actualitzat per {{cameraName}}. Reinicia Frigate per aplicar els canvis.", "normal": "Normal" }, - "description": "Afegiu, editeu i suprimiu les càmeres, controleu quines càmeres estan habilitades, i configureu les superposicions per perfil i tipus de càmera. Per a configurar fluxos, detecció, moviment i altres paràmetres específics de la càmera, trieu la secció específica a Configuració de la càmera." + "description": "Afegiu, editeu i suprimiu les càmeres, controleu l'estat de cada càmera, i configureu les superposicions per perfil i tipus de càmera. Per a configurar fluxos, detecció, moviment i altres paràmetres específics de la càmera, trieu la secció específica a Configuració de la càmera.", + "clone": { + "sectionTitle": "Clona la configuració", + "sectionDescription": "Copia la configuració d'una càmera a una altra càmera o una de nova.", + "button": "Clona la configuració", + "title": "Clona la configuració de la càmera", + "description": "Copia la configuració d'una càmera a una o més càmeres o a una càmera nova. La identitat (nom, nom amigable, URL de la interfície d'usuari web, ordre de visualització) no es copia mai.", + "source": { + "label": "Càmera d'origen", + "placeholder": "Seleccioneu una càmera d'origen", + "required": "Seleccioneu una càmera d'origen" + }, + "target": { + "legend": "Objectiu", + "newRadio": "Càmara nova", + "newNameLabel": "Nom de la càmera", + "newNamePlaceholder": "p. ex., porta enrere orporta o porta posterior", + "newNameInvalid": "Es requereix el nom de la càmera", + "newNameCollision": "Ja existeix una càmera amb aquest nom", + "newStreamsForced": "Els fluxos sempre es copien per a una càmera nova.", + "existingCamerasRadio": "Càmeres existents", + "allCameras": "Totes les càmeres", + "existingPlaceholder": "Selecciona almenys una càmera", + "existingDisabled": "No hi ha cap altra càmera a la qual copiar", + "newNameRequired": "Es requereix el nom de la càmera" + }, + "categories": { + "legend": "Configuració per clonar", + "description": "Trieu quina configuració voleu copiar de la càmera d'origen.", + "selectAll": "Selecciona-ho tot", + "selectNone": "No en seleccioneu cap", + "resetDefaults": "Restableix als valors predeterminats", + "general": "General", + "spatial": "Paràmetres espacials", + "streams": "Fluxos", + "spatialWarningTitle": "La resolució no coincideix", + "spatialWarning": "La càmera d'origen {{srcCamera}} detecta la resolució ({{srcWidth}}.{{srcHeight}}) difereix de: {{cameras}}. És possible que els polígons no s'alineïn en aquestes càmeres. Aquests valors predeterminats estan desactivats; habiliteu-ho per a copiar tal qual.", + "restartHint": "Reinicia requerit", + "items": { + "record": "Enregistrament", + "snapshots": "Instantànies", + "review": "Revisió", + "motion": "Detecció de moviment", + "objects": "Objectes", + "audio": "Detecció d'àudio", + "audio_transcription": "Transcripció d'àudio", + "notifications": "Notificacions", + "birdseye": "Birdseye", + "timestamp_style": "Estil de la marca horària", + "lpr": "Reconeixement de la matrícula", + "face_recognition": "Reconeixement de cares", + "semantic_search": "Cerca semàntica", + "genai": "IA generativa", + "type": "Tipus de càmera (LPR normal / dedicat)", + "profiles": "Perfils", + "detect": "Detecta les dimensions", + "zones": "Zones", + "motion_mask": "Màscares de moviment", + "object_masks": "Màscares d'objecte", + "ffmpeg_live": "URL i rols de flux", + "mqtt": "MQTT", + "onvif": "ONVIF" + } + }, + "footer": { + "changeCount_one": "{{count}} s'aplicarà el canvi", + "changeCount_many": "{{count}} canvis s'aplicaran", + "changeCount_other": "{{count}} canvis s'aplicaran", + "restartNeeded": "Es requerirà reiniciar per a alguns canvis.", + "liveOnly": "Tots els canvis s'aplicaran en viu sense reiniciar.", + "submit": "Clona", + "submitting": "S'està clonant…" + }, + "toast": { + "success": "Configuració copiada a {{cameraName}}", + "successWithRestart": "Configuració copiada a {{cameraName}}. Reinicia Frigate per aplicar tots els canvis.", + "successMulti_one": "Configuració copiada a la càmera {{count}}", + "successMulti_many": "Configuració copiada a {{count}} càmeres", + "successMulti_other": "Configuració copiada a {{count}} càmeres", + "successMultiWithRestart_one": "Configuració copiada a la càmera {{count}}. Reinicia Frigate per aplicar tots els canvis.", + "successMultiWithRestart_many": "Configuració copiada a {{count}} càmeres. Reinicia Frigate per aplicar tots els canvis.", + "successMultiWithRestart_other": "Configuració copiada a {{count}} càmeres. Reinicia la fragata per aplicar tots els canvis.", + "partialFailure": "{{successCount}} seccions aplicades; «{{failedSection}}» ha fallat: {{errorMessage}}", + "partialFailureMulti": "S'ha copiat a {{successCount}} càmera(es); ha fallat {{failed}}: {{errorMessage}}", + "newCameraPartialFailure": "S'ha creat la càmera {{cameraName}} però no s'han pogut copiar alguns paràmetres: {{errorMessage}}", + "sourceMissing": "La càmera d'origen ja no existeix", + "submitError": "No s'ha pogut clonar la càmera: {{errorMessage}}" + } + } }, "cameraReview": { "object_descriptions": { @@ -1499,7 +1608,7 @@ "desc": "La quadrícula de regions és una optimització que aprèn on solen aparèixer objectes de diferents mides en el camp de visió de cada càmera. Frigate utilitza aquestes dades per detectar regions de mida eficient. La quadrícula es construeix automàticament amb el temps a partir de dades d'objectes rastrejats.", "clear": "Neteja la quadrícula de la regió", "clearConfirmTitle": "Neteja la quadrícula de la regió", - "clearConfirmDesc": "No es recomana netejar la quadrícula de la regió tret que hagi canviat recentment la mida del model del detector o hagi canviat la posició física de la càmera i tingui problemes de seguiment d'objectes. La quadrícula es reconstruirà automàticament amb el temps a mesura que els objectes siguin rastrejats. Es requereix un reinici de la fragata perquè els canvis tinguin efecte.", + "clearConfirmDesc": "No es recomana netejar la quadrícula de la regió tret que hagi canviat recentment la mida del model del detector o hagi canviat la posició física de la càmera i tingui problemes de seguiment d'objectes. La quadrícula es reconstruirà automàticament amb el temps a mesura que els objectes siguin rastrejats. Es requereix un reinici de Frigate perquè els canvis tinguin efecte.", "clearSuccess": "La quadrícula de la regió s'ha netejat correctament", "clearError": "Ha fallat en netejar la graella de la regió", "restartRequired": "Cal reiniciar per a que els canvis de la quadrícula de la regió tinguin efecte" @@ -1674,7 +1783,7 @@ "searchPlaceholder": "Cerca...", "genaiRoles": { "options": { - "embeddings": "Incrustació", + "embeddings": "Vectors", "vision": "Visió", "tools": "Eines", "descriptions": "Descripcions", @@ -1693,13 +1802,32 @@ }, "addCustomLabel": "Afegeix una etiqueta personalitzada...", "genaiModel": { - "placeholder": "Selecciona el model…", - "search": "Cerca models…", - "noModels": "No hi ha models disponibles" + "placeholder": "Seleccioneu o introduïu un model…", + "search": "Cerca o introdueix un model…", + "noModels": "No hi ha models disponibles", + "available": "Models disponibles", + "useCustom": "Utilitza \"{{value}}\"", + "refresh": "Actualitza els models", + "probeFailed": "No s'han pogut investigar els models", + "fetchedModels": "S'ha obtingut correctament la llista de models" }, "knownPlates": { "namePlaceholder": "per exemple. Cotxe de la parella", "platePlaceholder": "Matricula o regex" + }, + "semanticSearchModelSize": { + "notApplicable": "No aplicable als proveïdors de GenAI" + }, + "liveStreams": { + "streamNameLabel": "Nom del flux", + "streamNamePlaceholder": "p. ex., corrent HD principal", + "go2rtcStreamLabel": "flux go2rtc", + "go2rtcStreamPlaceholder": "Selecciona un flux go2rtc", + "go2rtcStreamSearch": "Cerca o introdueix un nom de flux…", + "noGo2rtcStreams": "No s'ha configurat cap flux go2rtc", + "availableStreams": "Fluxos disponibles", + "useCustom": "Utilitza \"{{value}}\"", + "addStream": "Afegeix un flux" } }, "globalConfig": { @@ -1736,9 +1864,9 @@ "saveAllPartial_other": "{{successCount}} de {{totalCount}} seccions desades. {{failCount}} ha fallat.", "saveAllFailure": "Ha fallat en desar totes les seccions.", "applied": "La configuració s'ha aplicat correctament", - "saveAllSuccessRestartRequired_one": "S'ha desat la secció {{count}} correctament. Reinicia la fragata per aplicar els canvis.", - "saveAllSuccessRestartRequired_many": "Totes les {{count}} seccions s'han desat correctament. Reinicia la fragata per aplicar els canvis.", - "saveAllSuccessRestartRequired_other": "Totes les {{count}} seccions s'han desat correctament. Reinicia la fragata per aplicar els canvis." + "saveAllSuccessRestartRequired_one": "S'ha desat la secció {{count}} correctament. Reinicia Frigate per aplicar els canvis.", + "saveAllSuccessRestartRequired_many": "Totes les {{count}} seccions s'han desat correctament. Reinicia Frigate per aplicar els canvis.", + "saveAllSuccessRestartRequired_other": "Totes les {{count}} seccions s'han desat correctament. Reinicia Frigate per aplicar els canvis." }, "unsavedChanges": "Teniu canvis sense desar", "confirmReset": "Confirma el restabliment", @@ -1889,7 +2017,7 @@ "recordDisabled": "L'enregistrament està desactivat, els elements de revisió no es generaran.", "detectDisabled": "La detecció d'objectes està desactivada. Els elements de revisió requereixen objectes detectats per categoritzar alertes i deteccions.", "allNonAlertDetections": "Totes les activitats no alertes s'inclouran com a deteccions.", - "genaiImageSourceRecordingsRecordDisabled": "La font d'imatges està configurada com a 'enregistraments', però l'enregistrament està desactivat. La fragata tornarà a la vista prèvia de les imatges." + "genaiImageSourceRecordingsRecordDisabled": "La font d'imatges està configurada com a 'enregistraments', però l'enregistrament està desactivat. Frigate tornarà a la vista prèvia de les imatges." }, "audio": { "noAudioRole": "Cap flux té definit el rol d'àudio. Heu d'habilitar el rol d'àudio per a la detecció d'àudio perquè funcioni." @@ -1899,7 +2027,9 @@ }, "detect": { "fpsGreaterThanFive": "No es recomana establir el detect FPS superior a 5. Els valors més alts poden causar problemes de rendiment i no proporcionaran cap benefici.", - "disabled": "La detecció d'objectes està desactivada. Les instantànies, articles de revisió i enriquiments com el reconeixement de rostres, el reconeixement de matrícules i la IA Generativa no funcionaran." + "disabled": "La detecció d'objectes està desactivada. Les instantànies, articles de revisió i enriquiments com el reconeixement de rostres, el reconeixement de matrícules i la IA Generativa no funcionaran.", + "resolutionShouldBeMultipleOfFour": "Per obtenir els millors resultats, detectar l'amplada i l'alçada han de ser múltiples de 4. Altres valors parells poden produir artefactes visuals o una lleugera distorsió en el flux de detecció.", + "aspectRatioMismatch": "L'amplada i alçada que heu introduït no coincideixen amb la relació d'aspecte de la resolució de detecció actual. Això pot produir una imatge estirada o distorsionada." }, "faceRecognition": { "globalDisabled": "L'enriquiment del reconeixement facial s'ha d'habilitar perquè les funcions de reconeixement facial funcionin en aquesta càmera.", @@ -1928,7 +2058,8 @@ "genaiNoDescriptionsProvider": "Heu de configurar un proveïdor de GenAI amb el rol 'descripcions' per a les descripcions que es generaran." }, "semanticSearch": { - "jinav2SmallModelSize": "La mida 'petita' amb el model Jina V2 té un alt cost de RAM i d'inferència. Es recomana el model 'gran' amb una GPU discreta." + "jinav2SmallModelSize": "La mida 'petita' amb el model Jina V2 té un alt cost de RAM i d'inferència. Es recomana el model 'gran' amb una GPU discreta.", + "modelSizeIgnoredForProvider": "La mida del model només s'aplica als models de Jina incorporats. Aquest valor s'ignorarà quan s'utilitzi un proveïdor d'incrustació GenAI." } }, "modelSize": { diff --git a/web/public/locales/ca/views/system.json b/web/public/locales/ca/views/system.json index 595e7f8f60..70b5ee6fe1 100644 --- a/web/public/locales/ca/views/system.json +++ b/web/public/locales/ca/views/system.json @@ -66,10 +66,10 @@ }, "general": { "detector": { - "memoryUsage": "Ús de memòria del detector", + "memoryUsage": "Ús de la memòria del detector", "title": "Detectors", "inferenceSpeed": "Velocitat d'inferència del detector", - "cpuUsage": "Ús de CPU del detector", + "cpuUsage": "Ús de la CPU del detector", "temperature": "Temperatura del detector", "cpuUsageInformation": "CPU usada en la preparació d'entrades i sortides desde/cap als models de detecció. Aquest valor no mesura l'utilització d'inferència, encara que usis una GPU o accelerador." }, @@ -118,11 +118,11 @@ "otherProcesses": { "title": "Altres processos", "processMemoryUsage": "Ús de memòria de procés", - "processCpuUsage": "Ús de la CPU del procés", + "processCpuUsage": "Ús de la CPU per procés", "series": { "recording": "gravant", "review_segment": "segment de revisió", - "embeddings": "incrustacions", + "embeddings": "Vectors", "audio_detector": "detector d'àudio", "go2rtc": "go2rtc" } @@ -220,7 +220,7 @@ }, "lastRefreshed": "Darrera actualització: ", "stats": { - "reindexingEmbeddings": "Reindexant incrustacions ({{processed}}% completat)", + "reindexingEmbeddings": "Reindexant vectors ({{processed}}% completat)", "healthy": "El sistema és saludable", "cameraIsOffline": "{{camera}} està fora de línia", "ffmpegHighCpuUsage": "{{camera}} te un ús elevat de CPU per FFmpeg ({{ffmpegAvg}}%)", @@ -234,14 +234,14 @@ "title": "Enriquiments", "embeddings": { "face_recognition_speed": "Velocitat de reconeixement facial", - "image_embedding": "Incrustació d'imatges", - "text_embedding": "Incrustació de text", + "image_embedding": "Vectors d'imatges", + "text_embedding": "Vectors de text", "face_recognition": "Reconeixement de rostres", "plate_recognition": "Reconeixemnt de matrícules", - "image_embedding_speed": "Velocitat d'ncrustació d'imatges", - "face_embedding_speed": "Velocitat d'incrustació de rostres", + "image_embedding_speed": "Velocitat de generació de vectors", + "face_embedding_speed": "Velocitat de generació de vectors facials", "plate_recognition_speed": "Velocitat de reconeixement de matrícules", - "text_embedding_speed": "Velocitat d'incrustació de text", + "text_embedding_speed": "Velocitat de generació de vectors de text", "yolov9_plate_detection": "Detecció de matrícules YOLOv9", "yolov9_plate_detection_speed": "Velocitat de detecció de matrícules YOLOv9", "review_description": "Descripció de la revisió", From 5d58471fafcbeec9d6c021da69a3b5e758594d0d Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:50 +0200 Subject: [PATCH 09/21] Translated using Weblate (Polish) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (Polish) Currently translated at 94.1% (224 of 238 strings) Translated using Weblate (Polish) Currently translated at 100.0% (501 of 501 strings) Co-authored-by: Hosted Weblate Co-authored-by: magnumek Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/ Translation: Frigate NVR/audio Translation: Frigate NVR/common --- web/public/locales/pl/audio.json | 14 +++++++------- web/public/locales/pl/common.json | 8 +++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/web/public/locales/pl/audio.json b/web/public/locales/pl/audio.json index 6d5350572b..9a58b982ea 100644 --- a/web/public/locales/pl/audio.json +++ b/web/public/locales/pl/audio.json @@ -2,7 +2,7 @@ "speech": "Mowa", "babbling": "Gaworzenie", "yell": "Krzyk", - "bellow": "Ryk", + "bellow": "Poniżej", "whoop": "Okrzyk", "whispering": "Szept", "laughter": "Śmiech", @@ -426,7 +426,7 @@ "sanding": "Szlifowanie", "clock": "Zegar", "tick": "Tykanie", - "sodeling": "Sodeling", + "sodeling": "Jodłowanie", "liquid": "Płyn", "splash": "Plusk", "slosh": "Rozchlapywanie", @@ -444,8 +444,8 @@ "clicking": "Klikanie", "inside": "Wewnątrz", "outside": "Na zewnątrz", - "chird": "Child", - "change_ringing": "Zmienny dzwonek", + "chird": "Akord", + "change_ringing": "Karylion", "shofar": "Szofar", "trickle": "Spływanie", "gush": "Wylew", @@ -479,12 +479,12 @@ "rustle": "Szelest", "whir": "Świst", "clatter": "Stukot", - "sizzle": "Sizzle", + "sizzle": "Skwierczenie", "clickety_clack": "Klik-klak", "rumble": "Grzmot", - "plop": "Plop", + "plop": "Pluśnięcie", "hum": "Szum", - "zing": "Zing", + "zing": "Błysk", "boing": "Odbicie", "crunch": "Chrupnięcie", "sine_wave": "Sinusoida", diff --git a/web/public/locales/pl/common.json b/web/public/locales/pl/common.json index 9007e9cd50..2a4d40be5d 100644 --- a/web/public/locales/pl/common.json +++ b/web/public/locales/pl/common.json @@ -156,7 +156,13 @@ "off": "WYŁĄCZ", "edit": "Edytuj", "copyCoordinates": "Kopiuj współrzędne", - "continue": "Kontynuuj" + "continue": "Kontynuuj", + "add": "Dodaj", + "applying": "Zastosowywanie…", + "undo": "Cofnij", + "copiedToClipboard": "Skopiowano do schowka", + "modified": "Zmodyfikowane", + "overridden": "Nadpisany" }, "menu": { "system": "System", From d6674e18d633df38c28e723ee43103445fc45417 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:51 +0200 Subject: [PATCH 10/21] Translated using Weblate (Italian) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Italian) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Italian) Currently translated at 26.4% (125 of 473 strings) Translated using Weblate (Italian) Currently translated at 100.0% (1195 of 1195 strings) Translated using Weblate (Italian) Currently translated at 28.3% (230 of 811 strings) Translated using Weblate (Italian) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Italian) Currently translated at 26.2% (124 of 473 strings) Translated using Weblate (Italian) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Italian) Currently translated at 28.2% (229 of 811 strings) Translated using Weblate (Italian) Currently translated at 28.1% (228 of 811 strings) Translated using Weblate (Italian) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Italian) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Italian) Currently translated at 100.0% (1183 of 1183 strings) Translated using Weblate (Italian) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Italian) Currently translated at 26.0% (123 of 473 strings) Co-authored-by: Frank_ai Co-authored-by: Gringo Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/it/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/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/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/it/common.json | 8 +- web/public/locales/it/components/player.json | 3 +- web/public/locales/it/config/cameras.json | 23 ++- web/public/locales/it/config/global.json | 24 +++- web/public/locales/it/config/validation.json | 3 + web/public/locales/it/views/chat.json | 8 ++ web/public/locales/it/views/live.json | 7 +- web/public/locales/it/views/settings.json | 143 ++++++++++++++++--- 8 files changed, 183 insertions(+), 36 deletions(-) diff --git a/web/public/locales/it/common.json b/web/public/locales/it/common.json index 1a718250be..5394212350 100644 --- a/web/public/locales/it/common.json +++ b/web/public/locales/it/common.json @@ -222,7 +222,8 @@ "id": "Bahasa Indonesia (Indonesiano)", "ur": "اردو (Urdu)", "hr": "Hrvatski (Croato)", - "bs": "Bosanski (Bosniaco)" + "bs": "Bosanski (Bosniaco)", + "zhHant": "繁體中文 (Cinese Tradizionale)" }, "darkMode": { "label": "Modalità scura", @@ -333,5 +334,8 @@ "internalID": "L'ID interno che Frigate utilizza nella configurazione e nel database" }, "no_items": "Nessun elemento", - "validation_errors": "Errori di convalida" + "validation_errors": "Errori di convalida", + "credentialField": { + "savedPlaceholder": "Salvato — lascia vuoto per mantenere aggiornato" + } } diff --git a/web/public/locales/it/components/player.json b/web/public/locales/it/components/player.json index e8a1f5bbbf..0937860483 100644 --- a/web/public/locales/it/components/player.json +++ b/web/public/locales/it/components/player.json @@ -48,5 +48,6 @@ "submitFrigatePlusFailed": "Impossibile inviare il fotogramma a Frigate+" } }, - "cameraDisabled": "La telecamera è disabilita" + "cameraDisabled": "La telecamera è disabilita", + "cameraOff": "La telecamera è spenta" } diff --git a/web/public/locales/it/config/cameras.json b/web/public/locales/it/config/cameras.json index 01dddb58a1..b0d3eac7fa 100644 --- a/web/public/locales/it/config/cameras.json +++ b/web/public/locales/it/config/cameras.json @@ -5,8 +5,8 @@ "description": "Il nome della telecamera è obbligatorio" }, "friendly_name": { - "description": "Nome amichevole della telecamera utilizzato nell'interfaccia utente di Frigate", - "label": "Nome amichevole" + "description": "Nome descrittivo della telecamera utilizzato nell'interfaccia utente di Frigate", + "label": "Nome descrittivo" }, "enabled": { "label": "Abilitata", @@ -169,6 +169,10 @@ "threshold": { "label": "Soglia stazionaria", "description": "Numero di fotogrammi senza cambio di posizione necessari per contrassegnare un oggetto come stazionario." + }, + "max_frames": { + "label": "Fotogrammi massimi", + "description": "Limita la durata del tracciamento degli oggetti statici prima che vengano scartati." } } }, @@ -179,7 +183,8 @@ "label": "Revisiona" }, "profiles": { - "label": "Profili" + "label": "Profili", + "description": "Profili di configurazione denominati con sovrascritture parziali che possono essere attivati in fase di esecuzione." }, "record": { "label": "Registrazione", @@ -248,7 +253,11 @@ "semantic_search": { "label": "Ricerca semantica", "triggers": { - "label": "Inneschi" + "label": "Inneschi", + "friendly_name": { + "label": "Nome descrittivo", + "description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo innesco." + } } }, "lpr": { @@ -269,7 +278,11 @@ "enabled": { "label": "Abilitata" }, - "label": "Zone" + "label": "Zone", + "friendly_name": { + "label": "Nome zona", + "description": "Un nome intuitivo per la zona, visualizzato nell'interfaccia utente di Frigate. Se non specificato, verrà utilizzata una versione formattata del nome della zona." + } }, "type": { "description": "Tipo di telecamera", diff --git a/web/public/locales/it/config/global.json b/web/public/locales/it/config/global.json index d7e594ace1..2700121d2c 100644 --- a/web/public/locales/it/config/global.json +++ b/web/public/locales/it/config/global.json @@ -89,11 +89,16 @@ "description": "Elenco degli indirizzi IP proxy attendibili utilizzati per determinare l'indirizzo IP del client ai fini della limitazione della velocità." }, "roles": { - "label": "Mappatura dei ruoli" + "label": "Mappatura dei ruoli", + "description": "Associa i ruoli agli elenchi delle telecamere. Un elenco vuoto garantisce l'accesso a tutte le telecamere per quel ruolo." }, "failed_login_rate_limit": { "label": "Limiti di accesso non riusciti", "description": "Regole di limitazione della frequenza per i tentativi di accesso non riusciti al fine di ridurre gli attacchi di forza bruta." + }, + "hash_iterations": { + "description": "Numero di iterazioni PBKDF2-SHA256 da utilizzare per criptare le password utente.", + "label": "Iterazioni di crittografia" } }, "ffmpeg": { @@ -294,6 +299,10 @@ "threshold": { "label": "Soglia stazionaria", "description": "Numero di fotogrammi senza cambio di posizione necessari per contrassegnare un oggetto come stazionario." + }, + "max_frames": { + "label": "Fotogrammi massimi", + "description": "Limita la durata del tracciamento degli oggetti statici prima che vengano scartati." } } }, @@ -343,7 +352,12 @@ "description": "Preferenze dell'interfaccia utente come fuso orario, formato di data/ora e unità di misura." }, "profiles": { - "label": "Profili" + "label": "Profili", + "friendly_name": { + "label": "Nome descrittivo", + "description": "Nome visualizzato per questo profilo nell'interfaccia utente." + }, + "description": "Definizioni di profili denominati con nomi descrittivi. I profili delle telecamere devono fare riferimento ai nomi definiti qui." }, "record": { "label": "Registrazione", @@ -462,7 +476,11 @@ "semantic_search": { "label": "Ricerca semantica", "triggers": { - "label": "Inneschi" + "label": "Inneschi", + "friendly_name": { + "label": "Nome descrittivo", + "description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo innesco." + } }, "model_size": { "label": "Dimensioni del modello" diff --git a/web/public/locales/it/config/validation.json b/web/public/locales/it/config/validation.json index eaba21cb21..c6049d5f0b 100644 --- a/web/public/locales/it/config/validation.json +++ b/web/public/locales/it/config/validation.json @@ -28,5 +28,8 @@ "detectRequired": "Ad almeno un flusso di ingresso deve essere assegnato il ruolo di 'rilevamento'.", "hwaccelDetectOnly": "Solo il flusso di ingresso con il ruolo di rilevamento può definire argomenti di accelerazione hardware." } + }, + "detect": { + "dimensionMustBeEven": "Deve essere un numero pari." } } diff --git a/web/public/locales/it/views/chat.json b/web/public/locales/it/views/chat.json index a56c5a4ee1..dfe5166224 100644 --- a/web/public/locales/it/views/chat.json +++ b/web/public/locales/it/views/chat.json @@ -60,5 +60,13 @@ "stats": { "context": "{{tokens}} token", "tokens_per_second": "{{rate}} t/s" + }, + "reasoning": { + "active": "Ragionamento…", + "show": "Mostra il ragionamento", + "hide": "Nascondi il ragionamento" + }, + "thinking": { + "toggle": "Alterna ragionamento" } } diff --git a/web/public/locales/it/views/live.json b/web/public/locales/it/views/live.json index 45696b1256..697a676820 100644 --- a/web/public/locales/it/views/live.json +++ b/web/public/locales/it/views/live.json @@ -40,7 +40,8 @@ "objectDetection": "Rilevamento oggetti", "recording": "Registrazione", "audioDetection": "Rilevamento audio", - "transcription": "Trascrizione audio" + "transcription": "Trascrizione audio", + "camera": "Telecamera" }, "history": { "label": "Mostra filmati storici" @@ -98,7 +99,9 @@ }, "camera": { "enable": "Abilita telecamera", - "disable": "Disabilita telecamera" + "disable": "Disabilita telecamera", + "turnOn": "Attiva la telecamera", + "turnOff": "Disattiva la telecamera" }, "muteCameras": { "enable": "Muta tutte le telecamere", diff --git a/web/public/locales/it/views/settings.json b/web/public/locales/it/views/settings.json index 042c4694e0..675b24d781 100644 --- a/web/public/locales/it/views/settings.json +++ b/web/public/locales/it/views/settings.json @@ -16,7 +16,8 @@ "globalConfig": "Configurazione globale - Frigate", "cameraConfig": "Configurazione telecamera - Frigate", "maintenance": "Manutenzione - Frigate", - "profiles": "Profili - Frigate" + "profiles": "Profili - Frigate", + "detectorsAndModel": "Rilevatori e modelli - Frigate" }, "frigatePlus": { "snapshotConfig": { @@ -45,7 +46,7 @@ "userModel": "Messa a punto fine", "baseModel": "Modello base" }, - "availableModels": "Modelli disponibili", + "availableModels": "Modelli Frigate+ disponibili", "loadingAvailableModels": "Caricamento dei modelli disponibili…", "supportedDetectors": "Rilevatori supportati", "error": "Impossibile caricare le informazioni sul modello", @@ -75,7 +76,8 @@ "currentModel": "Modello attuale", "otherModels": "Altri modelli", "configuration": "Configurazione" - } + }, + "changeInDetectorsAndModel": "Cambia modello" }, "debug": { "timestamp": { @@ -169,7 +171,7 @@ "defaultName": "Maschera di movimento {{number}}", "name": { "title": "Nome", - "description": "Un nome amichevole opzionale per questa maschera di movimento.", + "description": "Un nome descrittivo opzionale per questa maschera di movimento.", "placeholder": "Inserisci un nome..." } }, @@ -341,7 +343,7 @@ "name": { "title": "Nome", "placeholder": "Inserisci un nome...", - "description": "Un nome amichevole facoltativo per questa maschera oggetto." + "description": "Un nome descrittivo facoltativo per questa maschera oggetto." } }, "restart_required": "Riavvio richiesto (maschere/zone modificate)", @@ -447,7 +449,7 @@ "enrichments": "Miglioramenti", "triggers": "Inneschi", "roles": "Ruoli", - "cameraManagement": "Gestione", + "cameraManagement": "Gestione della telecamera", "cameraReview": "Revisiona", "profiles": "Profili", "general": "Generale", @@ -507,7 +509,8 @@ "mediaSync": "Sincronizzazione multimediale", "cameraMqtt": "MQTT telecamera", "maintenance": "Manutenzione", - "regionGrid": "Griglia di regioni" + "regionGrid": "Griglia di regioni", + "systemDetectorsAndModel": "Rilevatori e modelli" }, "users": { "dialog": { @@ -1401,19 +1404,41 @@ "selectCamera": "Seleziona una telecamera", "backToSettings": "Torna alle impostazioni della telecamera", "streams": { - "title": "Abilita/Disabilita telecamere", + "title": "Stato e dettagli della telecamera", "desc": "Disattiva temporaneamente una telecamera fino al riavvio di Frigate. La disattivazione completa di una telecamera interrompe l'elaborazione dei flussi di questa telecamera da parte di Frigate. Rilevamento, registrazione e correzioni non saranno disponibili.
    Nota: questa operazione non disattiva le ritrasmissioni di go2rtc.", "enableLabel": "Telecamere abilitate", - "enableDesc": "Disabilita temporaneamente una telecamera abilitata fino al riavvio di Frigate. La disabilitazione completa di una telecamera interrompe l'elaborazione dei flussi video di tale telecamera da parte di Frigate. Le funzioni di rilevamento, registrazione e correzioni non saranno disponibili.
    Nota: questa operazione non disabilita le ritrasmissioni go2rtc.", + "enableDesc": "Disabilita temporaneamente una telecamera abilitata fino al riavvio di Frigate. La disabilitazione completa di una telecamera interrompe l'elaborazione dei flussi video di tale telecamera da parte di Frigate. Le funzioni di rilevamento, registrazione e correzioni non saranno disponibili.
    Nota: questa operazione non disabilita le ritrasmissioni go2rtc.

    Trascina le schede per riordinare le telecamere nell'interfaccia utente. L'ordine delle telecamere abilitate verrà visualizzato in tutta l'interfaccia utente inclusa la schermata Dal vivo e i menu a tendina di selezione delle telecamere.", "disableLabel": "Telecamere disabilitate", "disableDesc": "Abilita una telecamera attualmente non visibile nell'interfaccia utente e disabilitata nella configurazione. Dopo l'abilitazione è necessario riavviare Frigate.", - "enableSuccess": "{{cameraName}} abilitata nella configurazione. Riavvia Frigate per applicare le modifiche.", + "enableSuccess": "{{cameraName}} abilitata. Riavvia Frigate per applicare le modifiche.", "friendlyName": { "edit": "Modifica il nome visualizzato della telecamera", "title": "Modifica il nome visualizzato", "description": "Imposta il nome amichevole visualizzato per questa telecamera nell'interfaccia utente di Frigate. Lascia vuoto per utilizzare l'ID della telecamera.", "rename": "Rinomina" - } + }, + "reorderHandle": "Trascina per riordinare", + "saving": "Salvataggio…", + "saved": "Salvato", + "details": { + "edit": "Modifica i dettagli della telecamera", + "title": "Modifica i dettagli della telecamera", + "description": "Aggiorna il nome visualizzato e l'URL esterno utilizzati per questa telecamera nell'interfaccia utente di Frigate.", + "friendlyNameLabel": "Nome da visualizzare", + "friendlyNameHelp": "Nome descrittivo visualizzato per questa telecamera nell'interfaccia utente di Frigate. Lasciare vuoto per utilizzare l'ID della telecamera.", + "webuiUrlLabel": "URL dell'interfaccia web della telecamera", + "webuiUrlHelp": "URL per accedere direttamente all'interfaccia web della telecamera dalla vista Correzioni. Lasciare vuoto per disabilitare il collegamento.", + "webuiUrlInvalid": "Deve essere un URL valido (ad esempio, https://esempio.com)." + }, + "label": "Stato della telecamera", + "description": "Imposta lo stato operativo per ciascuna telecamera.

    Accesa: i flussi vengono elaborati normalmente.
    Spenta: mette temporaneamente in pausa l'elaborazione. Non viene mantenuta dopo il riavvio di Frigate.
    Disabilitata: interrompe l'elaborazione e salva la modifica nella configurazione. È necessario riavviare Frigate per riattivare una telecamera disabilitata.

    Nota: la disabilitazione non influisce sulle ritrasmissioni go2rtc.

    Trascina la maniglia per riordinare le telecamere attive nell'interfaccia utente, inclusi il pannello di controllo Dal vivo e i menu a tendina di selezione della telecamera.", + "disabledSubheading": "Disabilitata nella configurazione", + "status": { + "on": "Accesa", + "off": "Spenta", + "disabled": "Disabilitata" + }, + "disableSuccess": "{{cameraName}} disabilitata e salvata nella configurazione." }, "cameraConfig": { "add": "Aggiungi telecamera", @@ -1448,11 +1473,13 @@ "enabled": "Abilitato", "title": "Sovrascritture della telecamera del profilo", "selectLabel": "Seleziona il profilo", - "description": "Configura quali telecamere vengono abilitate o disabilitate all'attivazione di un profilo. Le telecamere impostate su \"Eredita\" mantengono il loro stato di abilitazione predefinito.", + "description": "Configura quali telecamere vengono accese o spente all'attivazione di un profilo. Le telecamere impostate su \"Eredita\" mantengono il loro stato predefinito.", "inherit": "Eredita", - "disabled": "Disabilitato" + "disabled": "Disabilitato", + "on": "Attivato", + "off": "Disattivato" }, - "description": "Aggiungi, modifica ed elimina le telecamere, controlla quali telecamere sono abilitate e configura le impostazioni personalizzate per profilo e tipo di telecamera. Per configurare flussi video, rilevamento, movimento e altre impostazioni specifiche per ciascuna telecamera, seleziona la sezione corrispondente in Configurazione telecamera.", + "description": "Aggiungi, modifica ed elimina le telecamere, controlla lo stato di ciascuna telecamera e configura le impostazioni personalizzate per profilo e tipo di telecamera. Per configurare flussi video, rilevamento, movimento e altre impostazioni specifiche per ciascuna telecamera, seleziona la sezione corrispondente in Configurazione telecamera.", "deleteCamera": "Elimina telecamera", "deleteCameraDialog": { "title": "Elimina telecamera", @@ -1512,7 +1539,7 @@ "videoCopy": "Copia", "hardware": "Accelerazione hardware", "hardwareNone": "Nessuna accelerazione hardware", - "hardwareAuto": "Accelerazione hardware automatica", + "hardwareAuto": "Automatico (consigliato)", "useFfmpegModule": "Utilizza la modalità di compatibilità (ffmpeg)", "videoH264": "Transcodifica in H.264", "videoH265": "Transcodifica in H.265", @@ -1523,7 +1550,15 @@ "audioPcma": "Transcodifica in PCM A-law", "audioPcm": "Transcodifica in PCM", "audioMp3": "Transcodifica in MP3", - "audioExclude": "Escludi" + "audioExclude": "Escludi", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "Aggiungi codec video", + "addAudioCodec": "Aggiungi codec audio", + "removeCodec": "Rimuovi codec" }, "description": "Gestisci le configurazioni del flusso go2rtc per la ritrasmissione delle immagini della telecamera. Ogni flusso ha un nome e uno o più URL sorgente.", "addStream": "Aggiungi flusso", @@ -1543,7 +1578,8 @@ }, "renameStream": "Rinomina flusso", "renameStreamDesc": "Inserisci un nuovo nome per questo flusso. Rinominare un flusso potrebbe causare problemi alle telecamere o ad altri flussi che lo referenziano tramite il suo nome.", - "newStreamName": "Nuovo nome del flusso" + "newStreamName": "Nuovo nome del flusso", + "streamNumber": "Flusso {{index}}" }, "configForm": { "sections": { @@ -1652,7 +1688,7 @@ } }, "cameraInputs": { - "itemTitle": "Stream {{index}}" + "itemTitle": "Flusso {{index}}" }, "restartRequiredField": "Riavvio richiesto", "restartRequiredFooter": "Configurazione modificata - Riavvio necessario", @@ -1713,9 +1749,14 @@ "genaiProviders": "Fornitori di GenAI" }, "genaiModel": { - "placeholder": "Seleziona il modello…", - "search": "Ricerca modelli…", - "noModels": "Nessun modello disponibile" + "placeholder": "Seleziona o inserisci un modello…", + "search": "Cerca o inserisci un modello…", + "noModels": "Nessun modello disponibile", + "available": "Modelli disponibili", + "useCustom": "Utilizza \"{{value}}\"", + "refresh": "Aggiorna modelli", + "probeFailed": "Impossibile rilevare i modelli", + "fetchedModels": "Elenco dei modelli recuperato con successo" }, "review": { "title": "Impostazioni di revisione" @@ -1737,6 +1778,20 @@ }, "timezone": { "defaultOption": "Utilizza il fuso orario del browser" + }, + "semanticSearchModelSize": { + "notApplicable": "Non applicabile ai fornitori GenAI" + }, + "liveStreams": { + "streamNameLabel": "Nome flusso", + "streamNamePlaceholder": "p.es., flusso HD principale", + "go2rtcStreamLabel": "flusso go2rtc", + "go2rtcStreamPlaceholder": "Seleziona un flusso go2rtc", + "go2rtcStreamSearch": "Cerca o inserisci il nome di un flusso…", + "noGo2rtcStreams": "Nessun flusso go2rtc configurato", + "availableStreams": "Flussi disponibili", + "useCustom": "Utilizza \"{{value}}\"", + "addStream": "Aggiungi flusso" } }, "globalConfig": { @@ -1886,6 +1941,13 @@ "motion": "Movimento", "objects": "Oggetti", "continuous": "Continuo" + }, + "cameraOrder": { + "reorderHandle": "Trascina per riordinare", + "saving": "Salvataggio…", + "saved": "Salvato", + "label": "Ordine delle telecamere", + "description": "Trascina le telecamere per impostarne l'ordine nella visualizzazione Birdseye." } }, "toast": { @@ -1902,7 +1964,10 @@ "saveAllPartial_one": "{{successCount}} sezione su {{totalCount}} salvata. {{failCount}} errore.", "saveAllPartial_many": "{{successCount}} sezioni su {{totalCount}} salvate. {{failCount}} errori.", "saveAllPartial_other": "{{successCount}} sezioni su {{totalCount}} salvate. {{failCount}} errori.", - "saveAllFailure": "Impossibile salvare tutte le sezioni." + "saveAllFailure": "Impossibile salvare tutte le sezioni.", + "saveAllSuccessRestartRequired_one": "Salvata {{count}} sezione correttamente. Riavvia Frigate per applicare le modifiche.", + "saveAllSuccessRestartRequired_many": "Salvate {{count}} sezioni correttamente. Riavvia Frigate per applicare le modifiche.", + "saveAllSuccessRestartRequired_other": "Salvate {{count}} sezioni correttamente. Riavvia Frigate per applicare le modifiche." }, "unsavedChanges": "Hai delle modifiche non salvate", "confirmReset": "Conferma il ripristino", @@ -1977,7 +2042,9 @@ }, "detect": { "fpsGreaterThanFive": "Impostare il valore di FPS rilevato su un valore superiore a 5 non è consigliabile. Valori più elevati potrebbero causare problemi di prestazioni e non apporteranno alcun vantaggio.", - "disabled": "Il rilevamento degli oggetti è disabilitato. Le istantanee, gli elementi di revisione e le funzionalità aggiuntive come il riconoscimento facciale, il riconoscimento delle targhe e l'intelligenza artificiale generativa non funzioneranno." + "disabled": "Il rilevamento degli oggetti è disabilitato. Le istantanee, gli elementi di revisione e le funzionalità aggiuntive come il riconoscimento facciale, il riconoscimento delle targhe e l'intelligenza artificiale generativa non funzioneranno.", + "resolutionShouldBeMultipleOfFour": "Per ottenere risultati ottimali, la larghezza e l'altezza di rilevamento dovrebbero essere multipli di 4. Altri valori pari potrebbero produrre artefatti visivi o una leggera distorsione nel flusso di rilevamento.", + "aspectRatioMismatch": "La larghezza e l'altezza inserite non corrispondono al rapporto d'aspetto della risoluzione di rilevamento corrente. Ciò potrebbe produrre un'immagine allungata o distorta." }, "objects": { "genaiNoDescriptionsProvider": "Per generare le descrizioni è necessario configurare un provider GenAI con il ruolo 'descrizioni'." @@ -2028,5 +2095,35 @@ "label": "Nuovo valore", "reset": "Reimposta" } + }, + "menuDot": { + "overrideGlobal": "Questa sezione sovrascrive la configurazione globale", + "overrideProfile": "Questa sezione viene sovrascritta dal profilo {{profile}}", + "unsaved": "Questa sezione contiene modifiche non salvate" + }, + "detectorsAndModel": { + "title": "Rilevatori e modelli", + "description": "Configura il backend del rilevatore che esegue il rilevamento degli oggetti e il modello che utilizza. Le modifiche vengono salvate insieme in modo che il rilevatore e il modello rimangano sincronizzati.", + "cardTitles": { + "detector": "Dispositivo di rilevamento", + "model": "Modello di rilevamento" + }, + "tabs": { + "plus": "Frigate+", + "custom": "Modello personalizzato" + }, + "mismatch": { + "warning": "Il modello Frigate+ attuale \"{{model}}\" richiede il rilevatore {{required}}. Seleziona un modello compatibile qui sotto oppure passa a Modello personalizzato prima di salvare." + }, + "plusModel": { + "requiresDetector": "Richiede: {{detector}}", + "noModelSelected": "Seleziona un modello Frigate+" + }, + "toast": { + "saveSuccess": "Rilevatori e impostazioni del modello salvati. Riavviare Frigate per applicare le modifiche.", + "saveError": "Impossibile salvare le impostazioni del rilevatore e del modello" + }, + "unsavedChanges": "Modifiche al rilevatore e al modello non salvate", + "restartRequired": "Riavvio richiesto (rilevatore o modello modificato)" } } From 18a7dc678bd4380f173a2274801028c6d60b1af1 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:52 +0200 Subject: [PATCH 11/21] Translated using Weblate (Arabic) Currently translated at 28.3% (142 of 501 strings) Translated using Weblate (Arabic) Currently translated at 18.8% (24 of 127 strings) Co-authored-by: Firas Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ar/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ar/ Translation: Frigate NVR/audio Translation: Frigate NVR/objects --- web/public/locales/ar/audio.json | 81 ++++++++++++++++++++++++++++-- web/public/locales/ar/objects.json | 6 ++- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/web/public/locales/ar/audio.json b/web/public/locales/ar/audio.json index b72a52c904..19bbfddeac 100644 --- a/web/public/locales/ar/audio.json +++ b/web/public/locales/ar/audio.json @@ -23,7 +23,7 @@ "singing": "غناء", "choir": "فرقة غناء", "chant": "تَرْنِيم", - "mantra": "تَرْنِيمَة", + "mantra": "تعويذة", "child_singing": "غِنَاء طِفْل", "synthetic_singing": "غِنَاء اِصْطِنَاعِيّ", "rapping": "رَاب", @@ -50,7 +50,7 @@ "hands": "أَيْدِي", "finger_snapping": "طَقْطَقَة الأَصَابِع", "clapping": "تَصْفِيق", - "heart_murmur": "لَغَط القَلْب", + "heart_murmur": "نفخة القَلْب", "cheering": "صِيَاح", "applause": "تَصْفِيق", "chatter": "حَدِيث", @@ -74,5 +74,80 @@ "bus": "حافلة", "train": "قطار", "boat": "زورق", - "bird": "طائر" + "bird": "طائر", + "sine_wave": "موجة الإشارة", + "harmonic": "أوزة", + "caw": "نُعَاقُ الغراب", + "owl": "بومة", + "hoot": "صاح", + "flapping_wings": "أجنحة ترفرف", + "dogs": "كلاب", + "rats": "فئران", + "mouse": "فأر", + "patter": "طقطق", + "insect": "حشرة", + "cricket": "كريكيت", + "mosquito": "بعوضة", + "fly": "سافر", + "buzz": "طنين", + "frog": "ضفدع", + "croak": "نق الضفدع", + "snake": "ثعبان", + "rattle": "جلجلية", + "whale_vocalization": "أصوات الحيتان", + "music": "موسيقى", + "musical_instrument": "آلة موسيقية", + "plucked_string_instrument": "آلة وترية", + "guitar": "غيتار", + "electric_guitar": "غيتار كهربائي", + "bass_guitar": "غيتار البيس", + "acoustic_guitar": "غيتار صوتي", + "steel_guitar": "غيتار فولاذي", + "tapping": "نقر", + "strum": "داعب الأ وتار", + "banjo": "البانجو", + "sitar": "سيتار", + "mandolin": "الماندولين", + "zither": "زيثارة", + "ukulele": "أوكوليلي", + "keyboard": "لوحة المفاتيح", + "piano": "بيانو", + "electric_piano": "بيانو كهربائي", + "organ": "أرغن", + "electronic_organ": "الأورغن الإلكتروني", + "hammond_organ": "أورغن هاموند", + "synthesizer": "مُركِّب صوتي", + "sampler": "عينة", + "harpsichord": "بيان القيثاري", + "percussion": "آلات الإيقاع", + "drum_kit": "طقم طبول", + "drum_machine": "آلة الطبول", + "drum": "طبل", + "snare_drum": "طبلة جانبية", + "rimshot": "طقطة", + "drum_roll": "قرع الطبول", + "bass_drum": "طبلة الباس", + "timpani": "الطبول", + "tabla": "طبلة", + "cymbal": "الصنج", + "hi_hat": "هاي-هات", + "wood_block": "كتلة خشبية", + "tambourine": "دف", + "maraca": "ماراكا", + "gong": "غونغ", + "tubular_bells": "أجراس أنبوبية", + "cattle": "ماشية", + "moo": "خوار", + "cowbell": "جرس البقر", + "pig": "خنزير", + "oink": "أوينك", + "goat": "معزة", + "bleat": "ثغاء", + "sheep": "غنم", + "fowl": "الدواجن", + "chicken": "دجاجة", + "cluck": "قرقرة", + "cock_a_doodle_doo": "كوكو-كو-كوووووو", + "turkey": "ديك رومى", + "gobble": "كركرة" } diff --git a/web/public/locales/ar/objects.json b/web/public/locales/ar/objects.json index 4aff9d76e1..03bf58ab19 100644 --- a/web/public/locales/ar/objects.json +++ b/web/public/locales/ar/objects.json @@ -18,5 +18,9 @@ "train": "قطار", "boat": "زورق", "bench": "مقعدة", - "bird": "طائر" + "bird": "طائر", + "mouse": "فأر", + "keyboard": "لوحة المفاتيح", + "goat": "معزة", + "sheep": "غنم" } From b9f816b062d28dc0afa2c9bfb87b436582c14e3b Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:53 +0200 Subject: [PATCH 12/21] Translated using Weblate (Indonesian) Currently translated at 5.0% (24 of 473 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (127 of 127 strings) Translated using Weblate (Indonesian) Currently translated at 1.8% (15 of 811 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (64 of 64 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (59 of 59 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (45 of 45 strings) Translated using Weblate (Indonesian) Currently translated at 86.6% (52 of 60 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (175 of 175 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (49 of 49 strings) Translated using Weblate (Indonesian) Currently translated at 59.3% (38 of 64 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (86 of 86 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (1176 of 1176 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Indonesian) Currently translated at 100.0% (145 of 145 strings) Translated using Weblate (Indonesian) Currently translated at 30.7% (39 of 127 strings) Co-authored-by: Arif Budiman Co-authored-by: Hosted Weblate Co-authored-by: Joseph K Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/id/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/id/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/audio Translation: Frigate NVR/common Translation: Frigate NVR/objects 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-motionSearch Translation: Frigate NVR/views-replay Translation: Frigate NVR/views-search Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/id/audio.json | 517 ++++- web/public/locales/id/common.json | 307 ++- web/public/locales/id/config/cameras.json | 61 +- web/public/locales/id/config/global.json | 42 + web/public/locales/id/objects.json | 122 +- web/public/locales/id/views/events.json | 41 +- web/public/locales/id/views/explore.json | 249 ++- web/public/locales/id/views/exports.json | 125 +- web/public/locales/id/views/faceLibrary.json | 2 +- web/public/locales/id/views/live.json | 174 +- web/public/locales/id/views/motionSearch.json | 74 +- web/public/locales/id/views/replay.json | 60 +- web/public/locales/id/views/search.json | 69 +- web/public/locales/id/views/settings.json | 1791 ++++++++++++++++- web/public/locales/id/views/system.json | 245 ++- 15 files changed, 3686 insertions(+), 193 deletions(-) diff --git a/web/public/locales/id/audio.json b/web/public/locales/id/audio.json index c7cb4475a3..b1ea21a628 100644 --- a/web/public/locales/id/audio.json +++ b/web/public/locales/id/audio.json @@ -1,98 +1,503 @@ { - "yell": "Teriakan", - "speech": "Percakapan", - "babbling": "Ocehan", - "bellow": "Di bawah", - "whoop": "Teriakan", - "whispering": "Bisikan", - "snicker": "Tertawa", + "yell": "Berteriak", + "speech": "Ucapan", + "babbling": "Mengoceh (berekah)", + "bellow": "Begadang / Meraung", + "whoop": "Tertawa lepas (whoop)", + "whispering": "Berbisik", + "snicker": "Tertawa cekikikan", "crying": "Menangis", - "sigh": "Mendesah", - "choir": "Paduan Suara", - "yodeling": "Bernyanyi Yodel", - "chant": "Nyanyian", + "sigh": "Menghela napas", + "choir": "Paduan suara", + "yodeling": "Yodel", + "chant": "Berzikir / Menyanyi berulang", "child_singing": "Anak bernyanyi", - "rapping": "Mengetuk", - "humming": "Bersenandung", - "groan": "Mengerang", + "rapping": "Rap", + "humming": "Berdengung", + "groan": "Menggerung", "grunt": "Mendengus", - "breathing": "Bernafas", + "breathing": "Bernapas", "laughter": "Tertawa", - "singing": "Nyanyian", + "singing": "Bernyanyi", "mantra": "Mantra", - "synthetic_singing": "Nyanyian sintesis", - "whistling": "Siulan", + "synthetic_singing": "Bernyanyi buatan (sintetis)", + "whistling": "Mendengung (mencicit / bersiul)", "car": "Mobil", - "motorcycle": "Motor", + "motorcycle": "Sepeda motor", "bicycle": "Sepeda", - "bus": "Bis", + "bus": "Bus", "train": "Kereta", - "boat": "Kapal", + "boat": "Perahu", "sneeze": "Bersin", - "run": "Lari", + "run": "Berlari", "footsteps": "Langkah kaki", "chewing": "Mengunyah", "biting": "Menggigit", - "stomach_rumble": "Perut Keroncongan", + "stomach_rumble": "Suara perut bergerak", "burping": "Sendawa", - "hiccup": "Cegukan", + "hiccup": "Cegukan (hikap)", "fart": "Kentut", "hands": "Tangan", - "heartbeat": "Detak Jantung", - "applause": "Tepuk Tangan", - "chatter": "Obrolan", - "children_playing": "Anak-Anak Bermain", - "animal": "Binatang", - "pets": "Peliharaan", + "heartbeat": "Detak jantung", + "applause": "Tepuk tangan massa", + "chatter": "Mengobrol", + "children_playing": "Anak‑anak bermain", + "animal": "Hewan", + "pets": "Hewan peliharaan", "dog": "Anjing", - "bark": "Gonggongan", - "howl": "Melolong", + "bark": "Kulit kayu", + "howl": "Mengaung", "cat": "Kucing", - "meow": "Meong", - "livestock": "Hewan Ternak", + "meow": "Mengeong", + "livestock": "Hewan ternak", "horse": "Kuda", "cattle": "Sapi", "pig": "Babi", "goat": "Kambing", "sheep": "Domba", "chicken": "Ayam", - "cluck": "Berkokok", - "cock_a_doodle_doo": "Kukuruyuk", + "cluck": "Menguk / \"cluck\"", + "cock_a_doodle_doo": "Berkokok (\"cock‑a‑doodle‑doo\")", "turkey": "Kalkun", "duck": "Bebek", - "quack": "Kwek", + "quack": "Menggock (\"quack\")", "goose": "Angsa", - "wild_animals": "Hewan Liar", + "wild_animals": "Hewan liar", "bird": "Burung", "pigeon": "Merpati", "crow": "Gagak", - "owl": "Burung Hantu", - "flapping_wings": "Kepakan Sayap", - "dogs": "Anjing", + "owl": "Burung hantu", + "flapping_wings": "Sayap berkibar", + "dogs": "Anjing‑anjing", "insect": "Serangga", - "cricket": "Jangkrik", + "cricket": "Kerik / Kriket", "mosquito": "Nyamuk", "fly": "Lalat", - "frog": "Katak", + "frog": "Kodok", "snake": "Ular", "music": "Musik", - "musical_instrument": "Alat Musik", + "musical_instrument": "Instrumen musik", "guitar": "Gitar", - "electric_guitar": "Gitar Elektrik", - "acoustic_guitar": "Gitar Akustik", - "strum": "Genjreng", + "electric_guitar": "Gitar listrik", + "acoustic_guitar": "Gitar akustik", + "strum": "Mengstrum", "banjo": "Banjo", - "snoring": "Ngorok", + "snoring": "Mendengkur", "cough": "Batuk", - "clapping": "Tepukan", + "clapping": "Tepuk tangan", "camera": "Kamera", - "wheeze": "Nafas", - "gasp": "Tersedak", - "sound_effect": "Efek Suara", - "environmental_noise": "Suara Lingkungan", - "static": "Statis", - "white_noise": "Suara Derau", + "wheeze": "Mengi", + "gasp": "Menggigil / Tarik napas tajam", + "sound_effect": "Efek suara (sound effect)", + "environmental_noise": "Kebisingan lingkungan", + "static": "Suara statis", + "white_noise": "White noise", "television": "Televisi", "radio": "Radio", - "scream": "Teriakan" + "scream": "Teriakan", + "pant": "Terengah-engah", + "snort": "Mendengus (melalui hidung)", + "throat_clearing": "Membersihkan tenggorokan", + "sniff": "Mengendus", + "shuffle": "Menyeret kaki", + "gargling": "Gargling", + "finger_snapping": "Mengklik jari", + "heart_murmur": "Murmur jantung", + "cheering": "Bersorak", + "crowd": "Kerumunan orang", + "yip": "Menggonggong pendek / ringkik", + "bow_wow": "Gonggongan \"bow wow\" khas", + "growling": "Menggeram", + "whimper_dog": "Rintihan anjing", + "purr": "Mendengkur", + "hiss": "Mendesis", + "caterwaul": "Mengeong nyaring (melolong)", + "clip_clop": "Suara kuda berlari (\"clip‑clop\")", + "neigh": "Meringkik", + "moo": "Mengamuk / \"Moo\"", + "cowbell": "Bel sapi", + "oink": "Menggonggong \"oink\"", + "bleat": "Mengebik", + "fowl": "Unggas", + "gobble": "Menggobleg", + "honk": "Bebek / \"honk\"", + "roaring_cats": "Kucing besar mengaung", + "roar": "Mengaung (raungan predator)", + "chirp": "Cicit / bernyanyi burung kecil", + "squawk": "Mengkokok / mendengung keras", + "coo": "Mengkuk \"coo\"", + "caw": "Menggagak / \"caw\"", + "hoot": "Menghoo / \"hoot\"", + "rats": "Tikus", + "mouse": "Mouse", + "patter": "Peluit kaki kecil", + "buzz": "Menggema / \"buzz\"", + "croak": "Kokok / \"croak\"", + "rattle": "Bersuara \"rattle\"", + "whale_vocalization": "Suara vokalisasi paus", + "plucked_string_instrument": "Instrumen senar dipetik", + "bass_guitar": "Bass gitar", + "steel_guitar": "Steel gitar", + "tapping": "Mengetuk", + "sitar": "Sitar", + "mandolin": "Mandolin", + "zither": "Zither", + "ukulele": "Ukulele", + "keyboard": "Keyboard", + "piano": "Piano", + "electric_piano": "Piano elektrik", + "organ": "Organ", + "electronic_organ": "Organ elektronik", + "hammond_organ": "Organ Hammond", + "synthesizer": "Synthesizer", + "sampler": "Sampler", + "harpsichord": "Harpsichord", + "percussion": "Percussion", + "drum_kit": "Kotak drum (drum kit)", + "drum_machine": "Mesin drum (drum machine)", + "drum": "Drum", + "snare_drum": "Snare drum", + "rimshot": "Rimshot", + "drum_roll": "Roll drum", + "bass_drum": "Bass drum", + "timpani": "Timpani", + "tabla": "Tabla", + "cymbal": "Cymbal", + "hi_hat": "Hi‑hat", + "wood_block": "Wood block", + "tambourine": "Tambourine", + "maraca": "Maraca", + "gong": "Gong", + "tubular_bells": "Tubular bells", + "mallet_percussion": "Percussion palu (mallet)", + "marimba": "Marimba", + "glockenspiel": "Glockenspiel", + "vibraphone": "Vibraphone", + "steelpan": "Steelpan", + "orchestra": "Orchestra", + "brass_instrument": "Instrumen tiup logam (brass)", + "french_horn": "French horn", + "trumpet": "Trumpet", + "trombone": "Trombone", + "bowed_string_instrument": "Instrumen senar di‑gesek (bowed string)", + "string_section": "Seksi biola (string section)", + "violin": "Biola (violin)", + "pizzicato": "Pizzicato", + "cello": "Violoncello (cello)", + "double_bass": "Double bass", + "wind_instrument": "Instrumen tiup (wind)", + "flute": "Flute", + "saxophone": "Saxophone", + "clarinet": "Clarinet", + "harp": "Harp", + "bell": "Bel (lonceng)", + "church_bell": "Lonceng gereja", + "jingle_bell": "Jingle bell", + "bicycle_bell": "Bel sepeda", + "tuning_fork": "Tuning fork", + "chime": "Chime", + "wind_chime": "Wind chime", + "harmonica": "Harmonika", + "accordion": "Akordian", + "bagpipes": "Bagpipes", + "didgeridoo": "Didgeridoo", + "theremin": "Theremin", + "singing_bowl": "Singing bowl", + "scratching": "Scratching (DJ scratching)", + "pop_music": "Musik pop", + "hip_hop_music": "Musik hip‑hop", + "beatboxing": "Beatboxing", + "rock_music": "Musik rock", + "heavy_metal": "Heavy metal", + "punk_rock": "Punk rock", + "grunge": "Grunge", + "progressive_rock": "Progressive rock", + "rock_and_roll": "Rock and roll", + "psychedelic_rock": "Psychedelic rock", + "rhythm_and_blues": "Rhythm and blues", + "soul_music": "Soul", + "reggae": "Reggae", + "country": "Country", + "swing_music": "Swing", + "bluegrass": "Bluegrass", + "funk": "Funk", + "folk_music": "Folk", + "middle_eastern_music": "Musik Timur Tengah", + "jazz": "Jazz", + "disco": "Disco", + "classical_music": "Musik klasik", + "opera": "Opera", + "electronic_music": "Musik elektronik", + "house_music": "House music", + "techno": "Tekno", + "dubstep": "Dubstep", + "drum_and_bass": "Drum and bass", + "electronica": "Electronica", + "electronic_dance_music": "Electronic dance music (EDM)", + "ambient_music": "Musik ambient", + "trance_music": "Trance", + "music_of_latin_america": "Musik Amerika Latin", + "salsa_music": "Salsa", + "flamenco": "Flamenco", + "blues": "Blues", + "music_for_children": "Musik anak‑anak", + "new-age_music": "Musik new age", + "vocal_music": "Musik vokal", + "a_capella": "A cappella", + "music_of_africa": "Musik Afrika", + "afrobeat": "Afrobeat", + "christian_music": "Musik krisitan / Kristen", + "gospel_music": "Musik gospel", + "music_of_asia": "Musik Asia", + "carnatic_music": "Carnatic music", + "music_of_bollywood": "Musik Bollywood", + "ska": "Ska", + "traditional_music": "Musik tradisional", + "independent_music": "Independent music", + "song": "Lagu", + "background_music": "Background music", + "theme_music": "Theme music", + "jingle": "Jingle (lagu iklan singkat)", + "soundtrack_music": "Musik soundtrack", + "lullaby": "Lullaby", + "video_game_music": "Musik video game", + "christmas_music": "Musik Natal", + "dance_music": "Musik dansa", + "wedding_music": "Musik pernikahan", + "happy_music": "Musik bahagia", + "sad_music": "Musik sedih", + "tender_music": "Musik lembut / romantis", + "exciting_music": "Musik mendebarkan", + "angry_music": "Musik marah", + "scary_music": "Musik menakutkan", + "wind": "Angin", + "rustling_leaves": "Daun bergesekan", + "wind_noise": "Suara angin", + "thunderstorm": "Badai petir", + "thunder": "Kilat / guruh (guntur)", + "water": "Air", + "rain": "Hujan", + "raindrop": "Tetesan hujan", + "rain_on_surface": "Hujan jatuh ke permukaan", + "stream": "Aliran sungai kecil", + "waterfall": "Air terjun", + "ocean": "Laut", + "waves": "Ombak", + "steam": "Uap", + "gurgling": "Menggulung / bergolak (gurgling)", + "fire": "Api", + "crackle": "Mercekik / berderak (crackle)", + "vehicle": "Kendaraan", + "sailboat": "Perahu layar", + "rowboat": "Perahu dayung", + "motorboat": "Perahu bermotor", + "ship": "Kapal besar", + "motor_vehicle": "Kendaraan bermotor", + "toot": "Bunyi klakson kecil", + "car_alarm": "Alarm mobil", + "power_windows": "Jendela bergerak dengan tenaga listrik", + "skidding": "Selipan roda", + "tire_squeal": "Roda tergelincir / berdecit", + "car_passing_by": "Mobil melintas", + "race_car": "Mobil balap", + "truck": "Truk", + "air_brake": "Rem udara", + "air_horn": "Horn udara", + "reversing_beeps": "Bunyi beeper mundur", + "ice_cream_truck": "Mobil es krim", + "emergency_vehicle": "Kendaraan darurat", + "police_car": "Mobil patroli polisi", + "ambulance": "Ambulans", + "fire_engine": "Mobil pemadam kebakaran", + "traffic_noise": "Kebisingan lalu lintas", + "rail_transport": "Transportasi rel", + "train_whistle": "Pelecut kereta", + "train_horn": "Klakson kereta api", + "railroad_car": "Gerigit kereta api", + "train_wheels_squealing": "Rel kereta berdecit", + "subway": "Kereta bawah tanah (subway)", + "aircraft": "Pesawat udara", + "aircraft_engine": "Mesin pesawat", + "jet_engine": "Mesin jet", + "propeller": "Propeller", + "helicopter": "Helikopter", + "fixed-wing_aircraft": "Pesawat sayap tetap", + "skateboard": "Papan luncur", + "engine": "Mesin", + "light_engine": "Mesin ringan", + "dental_drill's_drill": "Bor gigi", + "lawn_mower": "Mesin pemotong rumput", + "chainsaw": "Gergaji mesin / chainsaw", + "medium_engine": "Mesin menengah", + "heavy_engine": "Mesin berat", + "engine_knocking": "Mesin berdecit", + "engine_starting": "Mesin dihidupkan", + "idling": "Mesin diam tetap hidup (idling)", + "accelerating": "Percepatan (accelerating)", + "door": "Pintu", + "doorbell": "Bel pintu", + "ding-dong": "Ding‑dong (bunyi bel pintu khas)", + "sliding_door": "Pintu geser", + "slam": "Menjekat (bunyi pintu ditutup keras)", + "knock": "Ketukan", + "tap": "Mengetuk", + "squeak": "Berderit", + "cupboard_open_or_close": "Kupmar terbuka atau tertutup", + "drawer_open_or_close": "Laci terbuka atau tertutup", + "dishes": "Piring", + "cutlery": "Sendok garpu", + "chopping": "Mengiris", + "frying": "Menggoreng", + "microwave_oven": "Oven microwave", + "blender": "Blender", + "water_tap": "Kran air", + "sink": "Wastafel", + "bathtub": "Bak mandi", + "hair_dryer": "Pengering rambut", + "toilet_flush": "Siraman toilet", + "toothbrush": "Sikat gigi", + "electric_toothbrush": "Sikat gigi elektrik", + "vacuum_cleaner": "Vacuum cleaner", + "zipper": "Ritsleting", + "keys_jangling": "Kunci berdering", + "coin": "Koin", + "scissors": "Gunting", + "electric_shaver": "Alat cukur listrik", + "shuffling_cards": "Mengacaukan kartu", + "typing": "Ketikan", + "typewriter": "Mesin tik", + "computer_keyboard": "Keyboard komputer", + "writing": "Menulis", + "alarm": "Alarm", + "telephone": "Telepon", + "telephone_bell_ringing": "Bel telepon berdering", + "ringtone": "Nada dering", + "telephone_dialing": "Menelepon dengan dial", + "dial_tone": "Nada tunggu (dial tone)", + "busy_signal": "Suara sibuk", + "alarm_clock": "Alarm jam", + "siren": "Sirine", + "civil_defense_siren": "Sirine perlindungan sipil", + "buzzer": "Buzzer", + "smoke_detector": "Detektor asap", + "fire_alarm": "Alarm kebakaran", + "foghorn": "Foghorn (bunyi peluit kabut laut)", + "whistle": "Peluit", + "steam_whistle": "Peluit uap", + "mechanisms": "Mekanisme", + "ratchet": "Ratchet", + "clock": "Jam", + "tick": "Detak (tick)", + "tick-tock": "Tick‑tock", + "gears": "Roda gigi (gears)", + "pulleys": "Katrol", + "sewing_machine": "Mesin jahit", + "mechanical_fan": "Kipas baling‑baling mekanik", + "air_conditioning": "Pendingin ruangan / AC", + "cash_register": "Mesin kasir", + "printer": "Printer", + "single-lens_reflex_camera": "Kamera single‑lens reflex", + "tools": "Perkakas", + "hammer": "Palu", + "jackhammer": "Jackhammer", + "sawing": "Menggergaji", + "filing": "Mengasah", + "sanding": "Mengampelas", + "power_tool": "Power tool (perkakas bermotor)", + "drill": "Bor", + "explosion": "Ledakan", + "gunshot": "Tembakan senjata api", + "machine_gun": "Senapan mesin", + "fusillade": "Fusillade (banyak tembakan sekaligus)", + "artillery_fire": "Tembakan artileri", + "cap_gun": "Senapan mainan (cap gun)", + "fireworks": "Kembang api", + "firecracker": "Petasan kembang api", + "burst": "Ledakan pecah (burst)", + "eruption": "Letusan (eruption)", + "boom": "Boom (bunyi ledakan berat)", + "wood": "Kayu", + "chop": "Menebang (chop)", + "splinter": "Bercerai (splinter)", + "crack": "Retak / pecah (crack)", + "glass": "Kaca", + "chink": "Bunyi kaca berdenting (chink)", + "shatter": "Hancur / pecah (shatter)", + "silence": "Diam / tidak ada suara (silence)", + "pink_noise": "Pink noise", + "field_recording": "Rekaman lapangan (field recording)", + "sodeling": "Menangis tertahan", + "chird": "Derit / suara aneh", + "change_ringing": "Lantunan lonceng bergantian (change ringing)", + "shofar": "Shofar", + "liquid": "Cairan", + "splash": "Cipratan (splash)", + "slosh": "Slosh (suara cairan bergoyang)", + "squish": "Squish (bunyi renyah basah)", + "drip": "Tetes (drip)", + "pour": "Tuang (pour)", + "trickle": "Menetes (trickle)", + "gush": "Mengalir deras (gush)", + "fill": "Mengisi (fill)", + "spray": "Semprot (spray)", + "pump": "Pompa", + "stir": "Aduk (stir)", + "boiling": "Mendidih", + "sonar": "Sonar", + "arrow": "Panah", + "whoosh": "Whoosh (bunyi melesat cepat)", + "thump": "Thump (bantingan)", + "thunk": "Thunk (bunyi tebal tumpul)", + "electronic_tuner": "Tuner elektronik", + "effects_unit": "Effects unit (efek audio)", + "chorus_effect": "Efek chorus", + "basketball_bounce": "Pantulan bola basket", + "bang": "Benturan keras (bang)", + "slap": "Plak (pukulan telapak)", + "whack": "Whack (pukulan keras)", + "smash": "Smash (hancurkan keras)", + "breaking": "Memecahkan", + "bouncing": "Memantul", + "whip": "Cambuk", + "flap": "Flap (sayap / lembaran berkibar)", + "scratch": "Gores (scratch)", + "scrape": "Gesekan kasar (scrape)", + "rub": "Menggosok (rub)", + "roll": "Gulung (roll)", + "crushing": "Menghancurkan (crushing)", + "crumpling": "Menggumpalkan (crumpling)", + "tearing": "Merosak (tearing)", + "beep": "Beep", + "ping": "Ping", + "ding": "Ding", + "clang": "Clang", + "squeal": "Squeal (mengerang)", + "creak": "Creak (berderit pelan)", + "rustle": "Rustle (menggerut)", + "whir": "Whir (menderu putaran cepat)", + "clatter": "Kerincing / benturan berantai (clatter)", + "sizzle": "Sizzle (menggoreng / bersiul)", + "clicking": "Clicking (bunyi kunci)", + "clickety_clack": "Clickety clack (bunyi kaki atau rel)", + "rumble": "Rumble (gempuran / gemuruh)", + "plop": "Plop (bunyi jatuh lembut ke air)", + "hum": "Hum (mendengung)", + "zing": "Zing (bunyi gesek tipis cepat)", + "boing": "Boing (bunyi pegas)", + "crunch": "Crunch (remas keras)", + "sine_wave": "Gelombang sinus (sine wave)", + "harmonic": "Harmonik", + "chirp_tone": "Tone chirp", + "pulse": "Pulse (detak / pulsa)", + "inside": "Di dalam ruangan", + "outside": "Di luar ruangan", + "reverberation": "Gema ruang (reverberation)", + "echo": "Gema (echo)", + "noise": "Kebisingan", + "mains_hum": "Mains hum (dengungan listrik arus utama)", + "distortion": "Distorsi", + "sidetone": "Sidetone (suara sendiri saat menelepon)", + "cacophony": "Kecemasan suara (cacophony)", + "throbbing": "Berdebar / gemuruh (throbbing)", + "vibration": "Vibrasi" } diff --git a/web/public/locales/id/common.json b/web/public/locales/id/common.json index c5eb6634aa..455b3f4bf4 100644 --- a/web/public/locales/id/common.json +++ b/web/public/locales/id/common.json @@ -1,17 +1,17 @@ { "time": { - "untilForRestart": "Hingga Frigate memulai ulang.", - "untilRestart": "Sampai memulai ulang", - "ago": "{{timeAgo}} Lalu", - "justNow": "Sekarang", + "untilForRestart": "Sampai Frigate dimulai ulang.", + "untilRestart": "Sampai dimulai ulang", + "ago": "{{timeAgo}} yang lalu", + "justNow": "Baru saja", "today": "Hari ini", "yesterday": "Kemarin", - "untilForTime": "Sampai", + "untilForTime": "Sampai {{time}}", "last7": "7 hari terakhir", "last14": "14 hari terakhir", "last30": "30 hari terakhir", "thisWeek": "Minggu Ini", - "never": "Tidak Pernah", + "never": "Tidak pernah", "lastWeek": "Minggu Lalu", "thisMonth": "Bulan Ini", "lastMonth": "Bulan Lalu", @@ -21,11 +21,296 @@ "1hour": "1 jam", "12hours": "12 jam", "24hours": "24 jam", - "pm": "pm", - "am": "am", - "yr": "{{time}} tahun", + "pm": "PM", + "am": "AM", + "yr": "{{time}} th", "year_other": "{{time}} tahun", - "mo": "{{time}} bulan" + "mo": "{{time}} bln", + "month_other": "{{time}} bulan", + "d": "{{time}} hr", + "day_other": "{{time}} hari", + "h": "{{time}} jam", + "hour_other": "{{time}} jam", + "m": "{{time}} mnt", + "minute_other": "{{time}} menit", + "s": "{{time}} dtk", + "second_other": "{{time}} detik", + "formattedTimestamp": { + "12hour": "MMM d, h:mm:ss aaa", + "24hour": "MMM d, HH:mm:ss" + }, + "formattedTimestamp2": { + "12hour": "MM/dd h:mm:ssa", + "24hour": "d MMM HH:mm:ss" + }, + "formattedTimestampHourMinute": { + "12hour": "h:mm aaa", + "24hour": "HH:mm" + }, + "formattedTimestampHourMinuteSecond": { + "12hour": "h:mm:ss aaa", + "24hour": "HH:mm:ss" + }, + "formattedTimestampMonthDayHourMinute": { + "12hour": "MMM d, h:mm aaa", + "24hour": "MMM d, HH:mm" + }, + "formattedTimestampMonthDayYear": { + "12hour": "MMM d, yyyy", + "24hour": "MMM d, yyyy" + }, + "formattedTimestampMonthDayYearHourMinute": { + "12hour": "MMM d yyyy, h:mm aaa", + "24hour": "MMM d yyyy, HH:mm" + }, + "formattedTimestampMonthDay": "MMM d", + "formattedTimestampFilename": { + "12hour": "MM-dd-yy-h-mm-ss-a", + "24hour": "MM-dd-yy-HH-mm-ss" + }, + "inProgress": "Sedang berlangsung", + "invalidStartTime": "Waktu mulai tidak valid", + "invalidEndTime": "Waktu selesai tidak valid" }, - "readTheDocumentation": "Baca dokumentasi" + "readTheDocumentation": "Baca dokumentasi", + "menu": { + "system": "Sistem", + "profiles": "Profil", + "systemMetrics": "Metrik sistem", + "configuration": "Konfigurasi", + "systemLogs": "Log sistem", + "settings": "Pengaturan", + "configurationEditor": "Editor Konfigurasi", + "languages": "Bahasa", + "language": { + "en": "English (Inggris)", + "es": "Español (Spanyol)", + "zhCN": "简体中文 (Tionghoa Sederhana)", + "hi": "हिन्दी (Hindi)", + "fr": "Français (Prancis)", + "ar": "العربية (Arab)", + "pt": "Português (Portugis)", + "ptBR": "Português brasileiro (Portugis Brasil)", + "ru": "Русский (Rusia)", + "de": "Deutsch (Jerman)", + "ja": "日本語 (Jepang)", + "tr": "Türkçe (Turki)", + "it": "Italiano (Italia)", + "nl": "Nederlands (Belanda)", + "sv": "Svenska (Swedia)", + "cs": "Čeština (Ceko)", + "nb": "Norsk Bokmål (Norwegia Bokmål)", + "ko": "한국어 (Korea)", + "vi": "Tiếng Việt (Vietnam)", + "fa": "فارسی (Persia)", + "pl": "Polski (Polandia)", + "uk": "Українська (Ukraina)", + "he": "עברית (Ibrani)", + "el": "Ελληνικά (Yunani)", + "ro": "Română (Rumania)", + "hu": "Magyar (Hungaria)", + "fi": "Suomi (Finlandia)", + "da": "Dansk (Denmark)", + "sk": "Slovenčina (Slovakia)", + "yue": "粵語 (Kanton)", + "th": "ไทย (Thai)", + "ca": "Català (Katalan)", + "hr": "Hrvatski (Kroasia)", + "bs": "Bosanski (Bosnia)", + "sr": "Српски (Serbia)", + "sl": "Slovenščina (Slovenia)", + "lt": "Lietuvių (Lituania)", + "bg": "Български (Bulgaria)", + "gl": "Galego (Galisia)", + "id": "Bahasa Indonesia (Indonesia)", + "ur": "اردو (Urdu)", + "withSystem": { + "label": "Gunakan pengaturan sistem untuk bahasa" + } + }, + "appearance": "Tampilan", + "darkMode": { + "label": "Mode Gelap", + "light": "Terang", + "dark": "Gelap", + "withSystem": { + "label": "Gunakan pengaturan sistem untuk mode terang atau gelap" + } + }, + "withSystem": "Sistem", + "theme": { + "label": "Tema", + "blue": "Biru", + "green": "Hijau", + "nord": "Nord", + "red": "Merah", + "highcontrast": "Kontras Tinggi", + "default": "Default" + }, + "help": "Bantuan", + "documentation": { + "title": "Dokumentasi", + "label": "Dokumentasi Frigate" + }, + "restart": "Mulai Ulang Frigate", + "live": { + "title": "Live", + "allCameras": "Semua Kamera", + "cameras": { + "title": "Kamera", + "count_other": "{{count}} Kamera" + } + }, + "review": "Tinjauan", + "explore": "Jelajah", + "export": "Ekspor", + "actions": "Tindakan", + "uiPlayground": "UI Playground", + "features": "Fitur", + "faceLibrary": "Pustaka Wajah", + "classification": "Klasifikasi", + "chat": "Chat", + "user": { + "title": "Pengguna", + "account": "Akun", + "current": "Pengguna Saat Ini: {{user}}", + "anonymous": "anonim", + "logout": "Keluar", + "setPassword": "Atur Kata Sandi" + } + }, + "unit": { + "speed": { + "mph": "mph", + "kph": "kph" + }, + "length": { + "feet": "kaki", + "meters": "meter" + }, + "data": { + "kbps": "kB/dtk", + "mbps": "MB/dtk", + "gbps": "GB/dtk", + "kbph": "kB/jam", + "mbph": "MB/jam", + "gbph": "GB/jam" + } + }, + "label": { + "back": "Kembali", + "hide": "Sembunyikan {{item}}", + "show": "Tampilkan {{item}}", + "ID": "ID", + "none": "Tidak ada", + "all": "Semua", + "other": "Lainnya" + }, + "list": { + "two": "{{0}} dan {{1}}", + "many": "{{items}}, dan {{last}}", + "separatorWithSpace": ", " + }, + "field": { + "optional": "Opsional", + "internalID": "ID Internal yang digunakan Frigate dalam konfigurasi dan basis data" + }, + "button": { + "add": "Tambah", + "apply": "Terapkan", + "applying": "Menerapkan…", + "reset": "Atur Ulang", + "undo": "Urungkan", + "done": "Selesai", + "enabled": "Diaktifkan", + "enable": "Aktifkan", + "disabled": "Dinonaktifkan", + "disable": "Nonaktifkan", + "save": "Simpan", + "saving": "Menyimpan…", + "cancel": "Batal", + "close": "Tutup", + "copy": "Salin", + "copiedToClipboard": "Disalin ke papan klip", + "back": "Kembali", + "history": "Riwayat", + "fullscreen": "Layar Penuh", + "exitFullscreen": "Keluar dari Layar Penuh", + "pictureInPicture": "Gambar dalam Gambar", + "twoWayTalk": "Audio Dua Arah", + "cameraAudio": "Audio Kamera", + "on": "AKTIF", + "off": "NONAKTIF", + "edit": "Edit", + "copyCoordinates": "Salin koordinat", + "delete": "Hapus", + "yes": "Ya", + "no": "Tidak", + "download": "Unduh", + "info": "Info", + "suspended": "Ditangguhkan", + "unsuspended": "Batalkan penangguhan", + "play": "Putar", + "unselect": "Batalkan pilihan", + "export": "Ekspor", + "deleteNow": "Hapus Sekarang", + "next": "Berikutnya", + "continue": "Lanjutkan", + "modified": "Diubah", + "overridden": "Ditimpa", + "resetToGlobal": "Atur Ulang ke Global", + "resetToDefault": "Atur Ulang ke Default", + "saveAll": "Simpan Semua", + "savingAll": "Menyimpan Semua…", + "undoAll": "Urungkan Semua", + "retry": "Coba Lagi" + }, + "toast": { + "copyUrlToClipboard": "URL disalin ke papan klip.", + "save": { + "title": "Simpan", + "error": { + "title": "Gagal menyimpan perubahan konfigurasi: {{errorMessage}}", + "noMessage": "Gagal menyimpan perubahan konfigurasi" + }, + "success": "Berhasil menyimpan perubahan konfigurasi." + } + }, + "role": { + "title": "Peran", + "admin": "Admin", + "viewer": "Penampil", + "desc": "Admin memiliki akses penuh ke semua fitur di UI Frigate. Penampil terbatas hanya untuk melihat kamera, item tinjauan, dan rekaman historis di UI." + }, + "pagination": { + "label": "paginasi", + "previous": { + "title": "Sebelumnya", + "label": "Buka halaman sebelumnya" + }, + "next": { + "title": "Berikutnya", + "label": "Buka halaman berikutnya" + }, + "more": "Halaman lainnya" + }, + "accessDenied": { + "documentTitle": "Akses Ditolak - Frigate", + "title": "Akses Ditolak", + "desc": "Anda tidak memiliki izin untuk melihat halaman ini." + }, + "notFound": { + "documentTitle": "Tidak Ditemukan - Frigate", + "title": "404", + "desc": "Halaman tidak ditemukan" + }, + "selectItem": "Pilih {{item}}", + "information": { + "pixels": "{{area}}px" + }, + "no_items": "Tidak ada item", + "validation_errors": "Kesalahan Validasi", + "credentialField": { + "savedPlaceholder": "Tersimpan — biarkan kosong untuk mempertahankan yang saat ini" + } } diff --git a/web/public/locales/id/config/cameras.json b/web/public/locales/id/config/cameras.json index 9151d7d340..3b80196174 100644 --- a/web/public/locales/id/config/cameras.json +++ b/web/public/locales/id/config/cameras.json @@ -1,3 +1,62 @@ { - "label": "Pengaturan Kamera" + "label": "Pengaturan Kamera", + "name": { + "label": "Nama Kamera", + "description": "Nama Kamera diwajibkan" + }, + "friendly_name": { + "label": "Nama Singkat", + "description": "Nama Singkat kamera digunakan pada tampilan UI Frigate" + }, + "audio": { + "label": "Deteksi Suara", + "description": "Pengaturan untuk Deteksi Kejadian berdasarkan Suara pada kamera ini.", + "enabled": { + "label": "Nyalakan Deteksi Suara", + "description": "Nyalakan atau matikan deteksi kejadian suara pada kamera ini." + }, + "filters": { + "threshold": { + "label": "Keyakinan-Suara Minimum" + } + }, + "min_volume": { + "label": "Volume-Suara Minimum" + } + }, + "audio_transcription": { + "label": "Transkripsi Suara", + "enabled": { + "label": "Nyalakan Transkripsi" + }, + "live_enabled": { + "label": "Transkripsi Langsung (Live)" + } + }, + "detect": { + "label": "Deteksi Objek", + "enabled": { + "label": "Nyalakan Deteksi Objek" + }, + "stationary": { + "classifier": { + "label": "Nyalakan Klasifikasi-Visual", + "description": "Menggunakan pengklasifikasi visual untuk membedakan objek-objek diam (benar-benar tidak bergerak), meskipun bounding-box kurang stabil atau bergetar (jitter)." + } + }, + "fps": { + "label": "Kecepatan (FPS) Deteksi", + "description": "Kecepatan yang ditargetkan untuk menjalankan Deteksi Objek, dalam satuan frame per second (FPS); nilai lebih rendah mengurangi intensitas proses dan dapat meringangkan beban kerja CPU. Nilai 5 direkomendasikan, sedangakan nilai 10 dianggap sangat tinggi dan hanya digunakan untuk pelacakan (tracking) benda yang bergerak dengan benar-benar cepat." + } + }, + "enabled": { + "label": "Dinyalakan", + "description": "Dinyalakan (Enabled)" + }, + "birdseye": { + "enabled": { + "description": "Nyalakan atau matikan fitur Penglihatan Atas (Birdseye View).", + "label": "Nyalakan Birdseye" + } + } } diff --git a/web/public/locales/id/config/global.json b/web/public/locales/id/config/global.json index 345b593f5c..9b8409655f 100644 --- a/web/public/locales/id/config/global.json +++ b/web/public/locales/id/config/global.json @@ -1,5 +1,47 @@ { "version": { "label": "Versi konfigurasi" + }, + "audio": { + "label": "Deteksi Suara", + "enabled": { + "label": "Nyalakan Deteksi Suara" + }, + "filters": { + "threshold": { + "label": "Keyakinan-Suara Minimum" + } + }, + "min_volume": { + "label": "Volume-Suara Minimum" + } + }, + "audio_transcription": { + "label": "Transkripsi Suara", + "live_enabled": { + "label": "Transkripsi Langsung (Live)" + } + }, + "detect": { + "label": "Deteksi Objek", + "enabled": { + "label": "Nyalakan Deteksi Objek" + }, + "stationary": { + "classifier": { + "label": "Nyalakan Klasifikasi-Visual", + "description": "Menggunakan pengklasifikasi visual untuk membedakan objek-objek diam (benar-benar tidak bergerak), meskipun bounding-box kurang stabil atau bergetar (jitter)." + } + }, + "fps": { + "label": "Kecepatan (FPS) Deteksi", + "description": "Kecepatan yang ditargetkan untuk menjalankan Deteksi Objek, dalam satuan frame per second (FPS); nilai lebih rendah mengurangi intensitas proses dan dapat meringangkan beban kerja CPU. Nilai 5 direkomendasikan, sedangakan nilai 10 dianggap sangat tinggi dan hanya digunakan untuk pelacakan (tracking) benda yang bergerak dengan benar-benar cepat." + } + }, + "birdseye": { + "enabled": { + "description": "Nyalakan atau matikan fitur Penglihatan Atas (Birdseye View).", + "label": "Nyalakan Birdseye" + } } } diff --git a/web/public/locales/id/objects.json b/web/public/locales/id/objects.json index e56f051d01..82f56b05c8 100644 --- a/web/public/locales/id/objects.json +++ b/web/public/locales/id/objects.json @@ -2,30 +2,128 @@ "person": "Orang", "bicycle": "Sepeda", "car": "Mobil", - "motorcycle": "Motor", + "motorcycle": "Sepeda motor", "airplane": "Pesawat", - "bus": "Bis", + "bus": "Bus", "train": "Kereta", - "boat": "Kapal", - "traffic_light": "Lampu Lalu Lintas", - "fire_hydrant": "Hidran Kebakaran", - "animal": "Binatang", + "boat": "Perahu", + "traffic_light": "Lampu lalu lintas", + "fire_hydrant": "Hidran kebakaran", + "animal": "Hewan", "dog": "Anjing", - "bark": "Gonggongan", + "bark": "Kulit kayu", "cat": "Kucing", "horse": "Kuda", "goat": "Kambing", "sheep": "Domba", "bird": "Burung", - "street_sign": "Rambu Jalan", - "stop_sign": "Tanda Stop", - "parking_meter": "Parkir Meter", - "bench": "Kursi", + "street_sign": "Rambu jalan", + "stop_sign": "Rambu berhenti", + "parking_meter": "Meter parkir", + "bench": "Bangku", "cow": "Sapi", "elephant": "Gajah", "bear": "Beruang", "zebra": "Zebra", "giraffe": "Jerapah", "hat": "Topi", - "backpack": "Tas" + "backpack": "Ransel", + "mouse": "Mouse", + "keyboard": "Keyboard", + "vehicle": "Kendaraan", + "skateboard": "Papan luncur", + "door": "Pintu", + "blender": "Blender", + "sink": "Wastafel", + "hair_dryer": "Pengering rambut", + "toothbrush": "Sikat gigi", + "scissors": "Gunting", + "clock": "Jam", + "umbrella": "Payung", + "shoe": "Sepatu", + "eye_glasses": "Kacamata", + "handbag": "Tas tangan", + "tie": "Dasi", + "suitcase": "Koper", + "frisbee": "Frisbee", + "skis": "Ski", + "snowboard": "Papan seluncur salju", + "sports_ball": "Bola olahraga", + "kite": "Layang-layang", + "baseball_bat": "Tongkat bisbol", + "baseball_glove": "Sarung tangan bisbol", + "surfboard": "Papan selancar", + "tennis_racket": "Raket tenis", + "bottle": "Botol", + "plate": "Piring", + "wine_glass": "Gelas anggur", + "cup": "Cangkir", + "fork": "Garpu", + "knife": "Pisau", + "spoon": "Sendok", + "bowl": "Mangkuk", + "banana": "Pisang", + "apple": "Apel", + "sandwich": "Sandwich", + "orange": "Jeruk", + "broccoli": "Brokoli", + "carrot": "Wortel", + "hot_dog": "Hot dog", + "pizza": "Pizza", + "donut": "Donat", + "cake": "Kue", + "chair": "Kursi", + "couch": "Sofa", + "potted_plant": "Tanaman dalam pot", + "bed": "Tempat tidur", + "mirror": "Cermin", + "dining_table": "Meja makan", + "window": "Jendela", + "desk": "Meja tulis", + "toilet": "Toilet", + "tv": "TV", + "laptop": "Laptop", + "remote": "Remote", + "cell_phone": "Ponsel", + "microwave": "Microwave", + "oven": "Oven", + "toaster": "Pemanggang roti", + "refrigerator": "Kulkas", + "book": "Buku", + "vase": "Vas", + "teddy_bear": "Boneka beruang", + "hair_brush": "Sikat rambut", + "squirrel": "Tupai", + "deer": "Rusa", + "fox": "Rubah", + "rabbit": "Kelinci", + "raccoon": "Rakuns", + "robot_lawnmower": "Mesin pemotong rumput robot", + "waste_bin": "Tempat sampah", + "on_demand": "Sesuai permintaan", + "face": "Wajah", + "license_plate": "Pelat nomor", + "package": "Paket", + "bbq_grill": "Panggangan BBQ", + "amazon": "Amazon", + "usps": "USPS", + "ups": "UPS", + "fedex": "FedEx", + "dhl": "DHL", + "an_post": "An Post", + "purolator": "Purolator", + "postnl": "PostNL", + "nzpost": "NZPost", + "postnord": "PostNord", + "gls": "GLS", + "dpd": "DPD", + "canada_post": "Canada Post", + "royal_mail": "Royal Mail", + "school_bus": "Bus sekolah", + "skunk": "Sigung", + "kangaroo": "Kanguru", + "baby": "Bayi", + "baby_stroller": "Kereta dorong bayi", + "rickshaw": "Becak", + "rodent": "Hewan pengerat" } diff --git a/web/public/locales/id/views/events.json b/web/public/locales/id/views/events.json index 19a85885f5..bb78ea70aa 100644 --- a/web/public/locales/id/views/events.json +++ b/web/public/locales/id/views/events.json @@ -16,7 +16,9 @@ } }, "timeline.aria": "Pilih timeline", - "timeline": "Linimasa", + "timeline": { + "label": "Linimasa" + }, "zoomIn": "Perbesar", "zoomOut": "Perkecil", "events": { @@ -43,7 +45,9 @@ }, "documentTitle": "Tinjauan - Frigate", "recordings": { - "documentTitle": "Rekaman - Frigate" + "documentTitle": "Rekaman - Frigate", + "invalidSharedLink": "Tidak dapat membuka tautan rekaman bertanda waktu karena kesalahan penguraian.", + "invalidSharedCamera": "Tidak dapat membuka tautan rekaman bertanda waktu karena kamera tidak dikenal atau tidak berwenang." }, "calendarFilter": { "last24Hours": "24 Jam Terakhir" @@ -54,10 +58,37 @@ "button": "Item Batu Untuk Ditinjau", "label": "Lihat item ulasan baru" }, - "selected_one": "{{count}} terpilih", - "selected_other": "{{count}} terpilih", + "selected_one": "{{count}} dipilih", + "selected_other": "{{count}} dipilih", "camera": "Kamera", "detected": "terdeteksi", "suspiciousActivity": "Aktivitas Mencurigakan", - "threateningActivity": "Aktivitas yang Mengancam" + "threateningActivity": "Aktivitas yang Mengancam", + "select_all": "Semua", + "normalActivity": "Normal", + "needsReview": "Perlu ditinjau", + "securityConcern": "Kendala keamanan", + "motionSearch": { + "menuItem": "Pencarian gerakan", + "openMenu": "Opsi kamera" + }, + "motionPreviews": { + "menuItem": "Lihat pratinjau gerakan", + "title": "Pratinjau gerakan: {{camera}}", + "mobileSettingsTitle": "Setelan Pratinjau Gerakan", + "mobileSettingsDesc": "Sesuaikan kecepatan pemutaran dan peredupan, serta pilih tanggal untuk meninjau klip hanya gerakan.", + "dim": "Redup", + "dimAria": "Sesuaikan intensitas peredupan", + "dimDesc": "Tingkatkan peredupan untuk meningkatkan visibilitas area gerakan.", + "speed": "Kecepatan", + "speedAria": "Pilih kecepatan pemutaran pratinjau", + "speedDesc": "Pilih seberapa cepat klip pratinjau diputar.", + "back": "Kembali", + "empty": "Tidak ada pratinjau tersedia", + "noPreview": "Pratinjau tidak tersedia", + "seekAria": "Pindahkan {{camera}} pemain ke {{time}}", + "filter": "Filter", + "filterDesc": "Pilih area untuk hanya menampilkan klip dengan gerakan di wilayah tersebut.", + "filterClear": "Hapus" + } } diff --git a/web/public/locales/id/views/explore.json b/web/public/locales/id/views/explore.json index b93d4bf617..726548db3b 100644 --- a/web/public/locales/id/views/explore.json +++ b/web/public/locales/id/views/explore.json @@ -2,45 +2,262 @@ "documentTitle": "Jelajahi - Frigate", "generativeAI": "AI Generatif", "exploreIsUnavailable": { - "title": "Penelusuran tidak tersedia", + "title": "Jelajah Tidak Tersedia", "embeddingsReindexing": { - "context": "Jelajahi dapat digunakan setelah embedding objek yang dilacak selesai di-reindex.", + "context": "Jelajah dapat digunakan setelah embedding objek terlacak selesai diindeks ulang.", "startingUp": "Sedang memulai…", "estimatedTime": "Perkiraan waktu tersisa:", - "finishingShortly": "Selesai sesaat lagi", + "finishingShortly": "Segera selesai", "step": { - "thumbnailsEmbedded": "Keluku dilampirkan ", - "descriptionsEmbedded": "Deskripsi terlampir: ", - "trackedObjectsProcessed": "Objek yang dilacak diproses: " + "thumbnailsEmbedded": "Thumbnail yang disematkan: ", + "descriptionsEmbedded": "Deskripsi yang disematkan: ", + "trackedObjectsProcessed": "Objek terlacak yang diproses: " } }, "downloadingModels": { - "context": "Frigate sedang mengunduh model embedding yang diperlukan untuk mendukung fitur Pencarian Semantik. Proses ini mungkin memakan waktu beberapa menit tergantung pada kecepatan koneksi jaringan Anda.", + "context": "Frigate sedang mengunduh model embedding yang diperlukan untuk mendukung fitur Pencarian Semantik. Ini mungkin memerlukan beberapa menit tergantung pada kecepatan koneksi jaringan Anda.", "setup": { - "visionModel": "Model vision", - "visionModelFeatureExtractor": "Ekstraktor fitur model visi", + "visionModel": "Model visi", + "visionModelFeatureExtractor": "Pengekstrak fitur model visi", "textModel": "Model teks", - "textTokenizer": "Teks tokenizer" + "textTokenizer": "Tokenizer teks" }, "tips": { - "context": "Anda mungkin ingin mengindeks ulang embeddings dari objek yang Anda lacak setelah model-model tersebut diunduh." + "context": "Anda mungkin ingin mengindeks ulang embedding objek terlacak Anda setelah model selesai diunduh." }, - "error": "Terjadi eror. Periksa log Frigate." + "error": "Terjadi kesalahan. Periksa log Frigate." } }, "details": { - "timestamp": "Stempel waktu" + "timestamp": "Cap waktu", + "item": { + "title": "Detail Item Tinjauan", + "desc": "Detail item tinjauan", + "button": { + "share": "Bagikan item tinjauan ini", + "viewInExplore": "Lihat di Jelajah" + }, + "tips": { + "mismatch_other": "{{count}} objek yang tidak tersedia terdeteksi dan disertakan dalam item tinjauan ini. Objek-objek tersebut tidak memenuhi syarat sebagai peringatan atau deteksi, atau sudah dibersihkan/dihapus.", + "hasMissingObjects": "Sesuaikan konfigurasi Anda jika Anda ingin Frigate menyimpan objek terlacak untuk label berikut: {{objects}}" + }, + "toast": { + "success": { + "regenerate": "Deskripsi baru telah diminta dari {{provider}}. Tergantung pada kecepatan penyedia Anda, deskripsi baru mungkin memerlukan waktu untuk dibuat ulang.", + "updatedSublabel": "Berhasil memperbarui sublabel.", + "updatedLPR": "Berhasil memperbarui pelat nomor.", + "updatedAttributes": "Berhasil memperbarui atribut.", + "audioTranscription": "Berhasil meminta transkripsi audio. Tergantung pada kecepatan server Frigate Anda, transkripsi mungkin memerlukan waktu untuk selesai." + }, + "error": { + "regenerate": "Gagal memanggil {{provider}} untuk deskripsi baru: {{errorMessage}}", + "updatedSublabelFailed": "Gagal memperbarui sublabel: {{errorMessage}}", + "updatedLPRFailed": "Gagal memperbarui pelat nomor: {{errorMessage}}", + "updatedAttributesFailed": "Gagal memperbarui atribut: {{errorMessage}}", + "audioTranscription": "Gagal meminta transkripsi audio: {{errorMessage}}" + } + } + }, + "label": "Label", + "editSubLabel": { + "title": "Edit sublabel", + "desc": "Masukkan sublabel baru untuk {{label}} ini", + "descNoLabel": "Masukkan sublabel baru untuk objek terlacak ini" + }, + "editLPR": { + "title": "Edit pelat nomor", + "desc": "Masukkan nilai pelat nomor baru untuk {{label}} ini", + "descNoLabel": "Masukkan nilai pelat nomor baru untuk objek terlacak ini" + }, + "editAttributes": { + "title": "Edit atribut", + "desc": "Pilih atribut klasifikasi untuk {{label}} ini" + }, + "snapshotScore": { + "label": "Skor Snapshot" + }, + "topScore": { + "label": "Skor Tertinggi", + "info": "Skor tertinggi adalah skor median tertinggi untuk objek terlacak, jadi ini mungkin berbeda dari skor yang ditampilkan pada thumbnail hasil pencarian." + }, + "score": { + "label": "Skor" + }, + "recognizedLicensePlate": "Pelat Nomor yang Diakui", + "attributes": "Atribut Klasifikasi", + "estimatedSpeed": "Perkiraan Kecepatan", + "objects": "Objek", + "camera": "Kamera", + "zones": "Zona", + "button": { + "findSimilar": "Cari yang Serupa", + "regenerate": { + "title": "Buat Ulang", + "label": "Buat ulang deskripsi objek terlacak" + } + }, + "description": { + "label": "Deskripsi", + "placeholder": "Deskripsi objek terlacak", + "aiTips": "Frigate tidak akan meminta deskripsi dari penyedia AI Generatif Anda sampai siklus hidup objek terlacak berakhir." + }, + "expandRegenerationMenu": "Perluas menu pembuatan ulang", + "regenerateFromSnapshot": "Buat Ulang dari Snapshot", + "regenerateFromThumbnails": "Buat Ulang dari Thumbnail", + "tips": { + "descriptionSaved": "Berhasil menyimpan deskripsi", + "saveDescriptionFailed": "Gagal memperbarui deskripsi: {{errorMessage}}" + }, + "title": { + "label": "Judul" + }, + "scoreInfo": "Informasi Skor" }, - "exploreMore": "Eksplor lebih jauh objek-objek {{label}}", + "exploreMore": "Jelajahi lebih banyak objek {{label}}", "trackedObjectDetails": "Detail Objek Terlacak", "type": { "details": "detail", - "snapshot": "tangkapan layar", + "snapshot": "snapshot", "thumbnail": "thumbnail", "video": "video", "tracking_details": "detail pelacakan" }, "trackingDetails": { - "title": "Detail Pelacakan" + "title": "Detail Pelacakan", + "noImageFound": "Tidak ada gambar yang ditemukan untuk cap waktu ini.", + "createObjectMask": "Buat Masker Objek", + "adjustAnnotationSettings": "Sesuaikan pengaturan anotasi", + "scrollViewTips": "Klik untuk melihat momen-momen penting dalam siklus hidup objek ini.", + "autoTrackingTips": "Posisi kotak pembatas tidak akan akurat untuk kamera dengan pelacakan otomatis.", + "count": "{{first}} dari {{second}}", + "trackedPoint": "Titik Terlacak", + "lifecycleItemDesc": { + "visible": "{{label}} terdeteksi", + "entered_zone": "{{label}} memasuki {{zones}}", + "active": "{{label}} menjadi aktif", + "stationary": "{{label}} menjadi diam", + "attribute": { + "faceOrLicense_plate": "{{attribute}} terdeteksi untuk {{label}}", + "other": "{{label}} dikenali sebagai {{attribute}}" + }, + "gone": "{{label}} pergi", + "heard": "{{label}} terdengar", + "external": "{{label}} terdeteksi", + "header": { + "zones": "Zona", + "ratio": "Rasio", + "area": "Area", + "score": "Skor", + "computedScore": "Skor Terhitung", + "topScore": "Skor Tertinggi", + "toggleAdvancedScores": "Alihkan skor lanjutan" + } + }, + "annotationSettings": { + "title": "Pengaturan Anotasi", + "showAllZones": { + "title": "Tampilkan Semua Zona", + "desc": "Selalu tampilkan zona pada frame tempat objek telah memasuki suatu zona." + }, + "offset": { + "label": "Offset Anotasi", + "desc": "Data ini berasal dari feed deteksi kamera Anda tetapi ditumpangkan pada gambar dari feed rekaman. Sangat mungkin kedua stream tersebut tidak sinkron sepenuhnya. Akibatnya, kotak pembatas dan rekaman tidak akan sejajar dengan sempurna. Anda dapat menggunakan pengaturan ini untuk menggeser anotasi maju atau mundur dalam waktu agar lebih selaras dengan rekaman video.", + "millisecondsToOffset": "Milidetik untuk menggeser anotasi deteksi. Default: 0", + "tips": "Turunkan nilainya jika pemutaran video berada di depan kotak dan titik jalur, dan naikkan nilainya jika pemutaran video berada di belakangnya. Nilai ini bisa negatif.", + "toast": { + "success": "Offset anotasi untuk {{camera}} telah disimpan ke file konfigurasi." + } + } + }, + "carousel": { + "previous": "Slide sebelumnya", + "next": "Slide berikutnya" + } + }, + "itemMenu": { + "downloadVideo": { + "label": "Unduh video", + "aria": "Unduh video" + }, + "downloadSnapshot": { + "label": "Unduh snapshot", + "aria": "Unduh snapshot" + }, + "downloadCleanSnapshot": { + "label": "Unduh snapshot bersih", + "aria": "Unduh snapshot bersih" + }, + "viewTrackingDetails": { + "label": "Lihat detail pelacakan", + "aria": "Tampilkan detail pelacakan" + }, + "findSimilar": { + "label": "Cari yang serupa", + "aria": "Cari objek terlacak yang serupa" + }, + "addTrigger": { + "label": "Tambahkan pemicu", + "aria": "Tambahkan pemicu untuk objek terlacak ini" + }, + "audioTranscription": { + "label": "Transkripsikan", + "aria": "Minta transkripsi audio" + }, + "submitToPlus": { + "label": "Kirim ke Frigate+", + "aria": "Kirim ke Frigate Plus" + }, + "viewInHistory": { + "label": "Lihat di Riwayat", + "aria": "Lihat di Riwayat" + }, + "deleteTrackedObject": { + "label": "Hapus objek terlacak ini" + }, + "showObjectDetails": { + "label": "Tampilkan jalur objek" + }, + "hideObjectDetails": { + "label": "Sembunyikan jalur objek" + }, + "debugReplay": { + "label": "Pemutaran Ulang Debug", + "aria": "Lihat objek terlacak ini dalam tampilan pemutaran ulang debug" + }, + "more": { + "aria": "Lainnya" + } + }, + "dialog": { + "confirmDelete": { + "title": "Konfirmasi Hapus", + "desc": "Menghapus objek terlacak ini akan menghapus snapshot, embedding yang tersimpan, dan entri detail pelacakan terkait. Rekaman video dari objek terlacak ini di tampilan Riwayat TIDAK akan dihapus.

    Anda yakin ingin melanjutkan?" + }, + "toast": { + "error": "Kesalahan saat menghapus objek terlacak ini: {{errorMessage}}" + } + }, + "noTrackedObjects": "Tidak Ada Objek Terlacak Ditemukan", + "fetchingTrackedObjectsFailed": "Kesalahan saat mengambil objek terlacak: {{errorMessage}}", + "trackedObjectsCount_other": "{{count}} objek terlacak ", + "searchResult": { + "tooltip": "Cocok dengan {{type}} pada {{confidence}}%", + "previousTrackedObject": "Objek terlacak sebelumnya", + "nextTrackedObject": "Objek terlacak berikutnya", + "deleteTrackedObject": { + "toast": { + "success": "Objek terlacak berhasil dihapus.", + "error": "Gagal menghapus objek terlacak: {{errorMessage}}" + } + } + }, + "aiAnalysis": { + "title": "Analisis AI" + }, + "concerns": { + "label": "Kekhawatiran" + }, + "objectLifecycle": { + "noImageFound": "Tidak ada gambar yang ditemukan untuk objek terlacak ini." } } diff --git a/web/public/locales/id/views/exports.json b/web/public/locales/id/views/exports.json index 79775d60bf..bee59ce903 100644 --- a/web/public/locales/id/views/exports.json +++ b/web/public/locales/id/views/exports.json @@ -1,23 +1,128 @@ { - "documentTitle": "Expor - Frigate", - "search": "Cari", - "noExports": "Ekspor tidak ditemukan", - "deleteExport": "Hapus Ekspor", - "deleteExport.desc": "Apakah Anda yakin ingin menghapus {{exportName}}?", + "documentTitle": "Ekspor - Frigate", + "search": "Pencarian", + "noExports": "Tidak ada ekspor ditemukan", + "deleteExport": { + "label": "Hapus Ekspor" + }, + "deleteExport.desc": "Anda yakin ingin menghapus {{exportName}}?", "editExport": { - "title": "Ubah nama ekspor", + "title": "Ubah Nama Ekspor", "desc": "Masukkan nama baru untuk ekspor ini.", "saveExport": "Simpan Ekspor" }, "toast": { "error": { - "renameExportFailed": "Gagal mengganti nama ekspor: {{errorMessage}}" + "renameExportFailed": "Gagal mengubah nama ekspor: {{errorMessage}}", + "assignCaseFailed": "Gagal memperbarui penetapan kasus: {{errorMessage}}", + "caseSaveFailed": "Gagal menyimpan kasus: {{errorMessage}}", + "caseDeleteFailed": "Gagal menghapus kasus: {{errorMessage}}" } }, "tooltip": { - "shareExport": "Bagikan Ekspor", - "downloadVideo": "Unduh Video", + "shareExport": "Bagikan ekspor", + "downloadVideo": "Unduh video", "editName": "Ubah nama", - "deleteExport": "Hapus ekspor" + "deleteExport": "Hapus ekspor", + "assignToCase": "Tambahkan ke kasus", + "removeFromCase": "Hapus dari kasus" + }, + "headings": { + "cases": "Kasus", + "uncategorizedExports": "Ekspor Tanpa Kategori" + }, + "toolbar": { + "newCase": "Kasus Baru", + "addExport": "Tambahkan Ekspor", + "editCase": "Edit Kasus", + "deleteCase": "Hapus Kasus" + }, + "deleteCase": { + "label": "Hapus Kasus", + "desc": "Anda yakin ingin menghapus {{caseName}}?", + "descKeepExports": "Ekspor akan tetap tersedia sebagai ekspor tanpa kategori.", + "descDeleteExports": "Semua ekspor dalam kasus ini akan dihapus secara permanen.", + "deleteExports": "Hapus juga ekspor" + }, + "caseDialog": { + "title": "Tambahkan ke kasus", + "description": "Pilih kasus yang sudah ada atau buat yang baru.", + "selectLabel": "Kasus", + "newCaseOption": "Buat kasus baru", + "nameLabel": "Nama kasus", + "descriptionLabel": "Deskripsi" + }, + "caseCard": { + "emptyCase": "Belum ada ekspor" + }, + "jobCard": { + "defaultName": "Ekspor {{camera}}", + "queued": "Dalam antrean", + "running": "Sedang berjalan", + "preparing": "Menyiapkan", + "copying": "Menyalin", + "encoding": "Menyandi", + "encodingRetry": "Menyandi (coba lagi)", + "finalizing": "Menyelesaikan" + }, + "caseView": { + "noDescription": "Tidak ada deskripsi", + "createdAt": "Dibuat {{value}}", + "exportCount_one": "1 ekspor", + "exportCount_other": "{{count}} ekspor", + "cameraCount_one": "1 kamera", + "cameraCount_other": "{{count}} kamera", + "showMore": "Tampilkan lebih banyak", + "showLess": "Tampilkan lebih sedikit", + "emptyTitle": "Kasus ini kosong", + "emptyDescription": "Tambahkan ekspor tanpa kategori yang sudah ada agar kasus tetap terorganisasi.", + "emptyDescriptionNoExports": "Belum ada ekspor tanpa kategori yang tersedia untuk ditambahkan." + }, + "caseEditor": { + "createTitle": "Buat Kasus", + "editTitle": "Edit Kasus", + "namePlaceholder": "Nama kasus", + "descriptionPlaceholder": "Tambahkan catatan atau konteks untuk kasus ini" + }, + "addExportDialog": { + "title": "Tambahkan Ekspor ke {{caseName}}", + "searchPlaceholder": "Cari ekspor tanpa kategori", + "empty": "Tidak ada ekspor tanpa kategori yang cocok dengan pencarian ini.", + "addButton_one": "Tambahkan 1 Ekspor", + "addButton_other": "Tambahkan {{count}} Ekspor", + "adding": "Menambahkan..." + }, + "selected_one": "{{count}} dipilih", + "selected_other": "{{count}} dipilih", + "bulkActions": { + "addToCase": "Tambahkan ke Kasus", + "moveToCase": "Pindahkan ke Kasus", + "removeFromCase": "Hapus dari Kasus", + "delete": "Hapus", + "deleteNow": "Hapus Sekarang" + }, + "bulkDelete": { + "title": "Hapus Ekspor", + "desc_one": "Anda yakin ingin menghapus {{count}} ekspor?", + "desc_other": "Anda yakin ingin menghapus {{count}} ekspor?" + }, + "bulkRemoveFromCase": { + "title": "Hapus dari Kasus", + "desc_one": "Hapus {{count}} ekspor dari kasus ini?", + "desc_other": "Hapus {{count}} ekspor dari kasus ini?", + "descKeepExports": "Ekspor akan dipindahkan ke tanpa kategori.", + "descDeleteExports": "Ekspor akan dihapus secara permanen.", + "deleteExports": "Hapus ekspor saja" + }, + "bulkToast": { + "success": { + "delete": "Berhasil menghapus ekspor", + "reassign": "Berhasil memperbarui penetapan kasus", + "remove": "Berhasil menghapus ekspor dari kasus" + }, + "error": { + "deleteFailed": "Gagal menghapus ekspor: {{errorMessage}}", + "reassignFailed": "Gagal memperbarui penetapan kasus: {{errorMessage}}" + } } } diff --git a/web/public/locales/id/views/faceLibrary.json b/web/public/locales/id/views/faceLibrary.json index 70b2a419a6..ec0c700d6f 100644 --- a/web/public/locales/id/views/faceLibrary.json +++ b/web/public/locales/id/views/faceLibrary.json @@ -9,7 +9,7 @@ "subLabelScore": "Skor Sub Label", "face": "Detail Wajah", "scoreInfo": "Skor sub label adalah nilai gabungan dari tingkat keyakinan sistem dalam mengenali wajah. Nilai ini bisa berbeda dengan skor yang terlihat pada gambar cuplikan.", - "timestamp": "Stempel waktu", + "timestamp": "Cap waktu", "unknown": "Tidak diketahui", "faceDesc": "Detail objek terlacak yang menghasilkan wajah ini" }, diff --git a/web/public/locales/id/views/live.json b/web/public/locales/id/views/live.json index 36202b238c..416d688964 100644 --- a/web/public/locales/id/views/live.json +++ b/web/public/locales/id/views/live.json @@ -1,56 +1,57 @@ { - "documentTitle.withCamera": "{{camera}} - Langsung - Frigate", + "documentTitle.withCamera": "{{camera}} - Live - Frigate", "documentTitle": { - "default": "Siaran Langsung - Frigate" + "default": "Live - Frigate" }, - "lowBandwidthMode": "Mode Bandwith-Rendah", + "lowBandwidthMode": "Mode bandwidth rendah", "twoWayTalk": { - "enable": "Nyalakan Komunikasi dua arah", - "disable": "Nonaktifkan Komunikasi Dua Arah" + "enable": "Aktifkan Audio Dua Arah", + "disable": "Nonaktifkan Audio Dua Arah" }, "cameraAudio": { - "enable": "Nyalakan Audio Kamera", - "disable": "Matikan Audio Kamera" + "enable": "Aktifkan Audio Kamera", + "disable": "Nonaktifkan Audio Kamera" }, "ptz": { "move": { "clickMove": { - "label": "Klik kotak ini untuk menengahkan kamera", - "enable": "Aktifkan klik untuk bergerak", - "disable": "Non-aktifkan klik untuk bergerak" + "label": "Klik pada frame untuk memusatkan kamera", + "enable": "Aktifkan klik untuk memindahkan", + "disable": "Nonaktifkan klik untuk memindahkan", + "enableWithZoom": "Aktifkan klik untuk memindahkan / seret untuk memperbesar" }, "left": { - "label": "Geser kamera PTZ ke kiri" + "label": "Gerakkan kamera PTZ ke kiri" }, "up": { - "label": "Geser kamera PTZ keatas" + "label": "Gerakkan kamera PTZ ke atas" }, "down": { - "label": "Geser kamera PTZ kebawah" + "label": "Gerakkan kamera PTZ ke bawah" }, "right": { - "label": "Geser kamera PTZ ke kanan" + "label": "Gerakkan kamera PTZ ke kanan" } }, "zoom": { "in": { - "label": "Perbesar kamera PTZ" + "label": "Perbesar zoom kamera PTZ" }, "out": { - "label": "Perkecil kamera PTZ" + "label": "Perkecil zoom kamera PTZ" } }, "focus": { "in": { - "label": "Fokus kamera PTZ kedalam" + "label": "Fokuskan kamera PTZ ke dalam" }, "out": { - "label": "Fokus kamera PTZ keluar" + "label": "Fokuskan kamera PTZ ke luar" } }, "frame": { "center": { - "label": "Klik pada frame untuk menengahkan kamera PTZ" + "label": "Klik pada frame untuk memusatkan kamera PTZ" } }, "presets": "Preset kamera PTZ" @@ -61,10 +62,139 @@ }, "muteCameras": { "enable": "Bisukan Semua Kamera", - "disable": "Bunyikan Semua Kamera" + "disable": "Suarakan Semua Kamera" }, "detect": { - "enable": "Aktifkan Pendeteksi", - "disable": "Nonaktifkan Pendeteksi" + "enable": "Aktifkan Deteksi", + "disable": "Nonaktifkan Deteksi" + }, + "recording": { + "enable": "Aktifkan Perekaman", + "disable": "Nonaktifkan Perekaman", + "disabledInConfig": "Perekaman harus terlebih dahulu diaktifkan di Pengaturan untuk kamera ini." + }, + "snapshots": { + "enable": "Aktifkan Snapshot", + "disable": "Nonaktifkan Snapshot" + }, + "snapshot": { + "takeSnapshot": "Unduh snapshot instan", + "noVideoSource": "Tidak ada sumber video yang tersedia untuk snapshot.", + "captureFailed": "Gagal mengambil snapshot.", + "downloadStarted": "Pengunduhan snapshot dimulai." + }, + "audioDetect": { + "enable": "Aktifkan Deteksi Audio", + "disable": "Nonaktifkan Deteksi Audio" + }, + "transcription": { + "enable": "Aktifkan Transkripsi Audio Langsung", + "disable": "Nonaktifkan Transkripsi Audio Langsung" + }, + "autotracking": { + "enable": "Aktifkan Pelacakan Otomatis", + "disable": "Nonaktifkan Pelacakan Otomatis" + }, + "streamStats": { + "enable": "Tampilkan Statistik Stream", + "disable": "Sembunyikan Statistik Stream" + }, + "manualRecording": { + "title": "Sesuai Permintaan", + "tips": "Unduh snapshot instan atau mulai event manual berdasarkan pengaturan retensi rekaman kamera ini.", + "playInBackground": { + "label": "Putar di latar belakang", + "desc": "Aktifkan opsi ini untuk melanjutkan streaming saat pemutar disembunyikan." + }, + "showStats": { + "label": "Tampilkan Statistik", + "desc": "Aktifkan opsi ini untuk menampilkan statistik stream sebagai overlay pada umpan kamera." + }, + "debugView": "Tampilan Debug", + "start": "Mulai perekaman sesuai permintaan", + "started": "Perekaman manual sesuai permintaan dimulai.", + "failedToStart": "Gagal memulai perekaman manual sesuai permintaan.", + "recordDisabledTips": "Karena perekaman dinonaktifkan atau dibatasi dalam konfigurasi untuk kamera ini, hanya snapshot yang akan disimpan.", + "end": "Akhiri perekaman sesuai permintaan", + "ended": "Perekaman manual sesuai permintaan diakhiri.", + "failedToEnd": "Gagal mengakhiri perekaman manual sesuai permintaan." + }, + "streamingSettings": "Pengaturan Streaming", + "notifications": "Notifikasi", + "audio": "Audio", + "suspend": { + "forTime": "Tangguhkan selama: " + }, + "stream": { + "title": "Stream", + "audio": { + "tips": { + "title": "Audio harus dikeluarkan oleh kamera Anda dan dikonfigurasi di go2rtc untuk stream ini." + }, + "available": "Audio tersedia untuk stream ini", + "unavailable": "Audio tidak tersedia untuk stream ini" + }, + "debug": { + "picker": "Pemilihan stream tidak tersedia dalam mode debug. Tampilan debug selalu menggunakan stream yang ditetapkan ke peran detect." + }, + "twoWayTalk": { + "tips": "Perangkat Anda harus mendukung fitur ini dan WebRTC harus dikonfigurasi untuk audio dua arah.", + "available": "Audio dua arah tersedia untuk stream ini", + "unavailable": "Audio dua arah tidak tersedia untuk stream ini" + }, + "lowBandwidth": { + "tips": "Tampilan live berada dalam mode bandwidth rendah karena buffering atau kesalahan stream.", + "resetStream": "Atur ulang stream" + }, + "playInBackground": { + "label": "Putar di latar belakang", + "tips": "Aktifkan opsi ini untuk melanjutkan streaming saat pemutar disembunyikan." + } + }, + "cameraSettings": { + "title": "Pengaturan {{camera}}", + "cameraEnabled": "Kamera Diaktifkan", + "objectDetection": "Deteksi Objek", + "recording": "Perekaman", + "snapshots": "Snapshot", + "audioDetection": "Deteksi Audio", + "transcription": "Transkripsi Audio", + "autotracking": "Pelacakan Otomatis" + }, + "history": { + "label": "Tampilkan rekaman historis" + }, + "effectiveRetainMode": { + "modes": { + "all": "Semua", + "motion": "Gerakan", + "active_objects": "Objek Aktif" + } + }, + "editLayout": { + "label": "Edit Tata Letak", + "group": { + "label": "Edit Grup Kamera" + }, + "exitEdit": "Keluar dari Mode Edit" + }, + "noCameras": { + "title": "Tidak Ada Kamera yang Dikonfigurasi", + "description": "Mulai dengan menghubungkan kamera ke Frigate.", + "buttonText": "Tambahkan Kamera", + "restricted": { + "title": "Tidak Ada Kamera yang Tersedia", + "description": "Anda tidak memiliki izin untuk melihat kamera apa pun di grup ini." + }, + "default": { + "title": "Tidak Ada Kamera yang Dikonfigurasi", + "description": "Mulai dengan menghubungkan kamera ke Frigate.", + "buttonText": "Tambahkan Kamera" + }, + "group": { + "title": "Tidak Ada Kamera dalam Grup", + "description": "Grup kamera ini tidak memiliki kamera yang ditetapkan atau diaktifkan.", + "buttonText": "Kelola Grup" + } } } diff --git a/web/public/locales/id/views/motionSearch.json b/web/public/locales/id/views/motionSearch.json index 0967ef424b..3a098d03ee 100644 --- a/web/public/locales/id/views/motionSearch.json +++ b/web/public/locales/id/views/motionSearch.json @@ -1 +1,73 @@ -{} +{ + "documentTitle": "Pencarian Gerakan - Frigate", + "title": "Pencarian Gerakan", + "description": "Gambar poligon untuk menentukan wilayah yang diminati, lalu tentukan rentang waktu untuk mencari perubahan gerakan di dalam wilayah tersebut.", + "selectCamera": "Pencarian Gerakan sedang dimuat", + "startSearch": "Mulai Pencarian", + "searchStarted": "Pencarian dimulai", + "searchCancelled": "Pencarian dibatalkan", + "cancelSearch": "Batal", + "searching": "Pencarian sedang berlangsung.", + "searchComplete": "Pencarian selesai", + "noResultsYet": "Jalankan pencarian untuk menemukan perubahan gerakan di wilayah yang dipilih", + "noChangesFound": "Tidak ada perubahan piksel yang terdeteksi di wilayah yang dipilih", + "changesFound_other": "Ditemukan {{count}} perubahan gerakan", + "framesProcessed": "{{count}} frame diproses", + "jumpToTime": "Lompat ke waktu ini", + "results": "Hasil", + "showSegmentHeatmap": "Peta panas", + "newSearch": "Pencarian Baru", + "clearResults": "Hapus Hasil", + "clearROI": "Hapus poligon", + "polygonControls": { + "points_other": "{{count}} titik", + "undo": "Urungkan titik terakhir", + "reset": "Atur ulang poligon" + }, + "motionHeatmapLabel": "Peta Panas Gerakan", + "dialog": { + "title": "Pencarian Gerakan", + "cameraLabel": "Kamera", + "previewAlt": "Pratinjau kamera untuk {{camera}}" + }, + "timeRange": { + "title": "Rentang Pencarian", + "start": "Waktu mulai", + "end": "Waktu selesai" + }, + "settings": { + "title": "Pengaturan Pencarian", + "parallelMode": "Mode paralel", + "parallelModeDesc": "Pindai beberapa segmen rekaman secara bersamaan (lebih cepat, tetapi penggunaan CPU jauh lebih tinggi)", + "threshold": "Ambang Sensitivitas", + "thresholdDesc": "Nilai yang lebih rendah mendeteksi perubahan yang lebih kecil (1-255)", + "minArea": "Luas Perubahan Minimum", + "minAreaDesc": "Persentase minimum dari wilayah yang diminati yang harus berubah agar dianggap signifikan", + "frameSkip": "Lewati Frame", + "frameSkipDesc": "Proses setiap frame ke-N. Atur ini ke frame rate kamera Anda untuk memproses satu frame per detik (misalnya 5 untuk kamera 5 FPS, 30 untuk kamera 30 FPS). Nilai yang lebih tinggi akan lebih cepat, tetapi bisa melewatkan kejadian gerakan singkat.", + "maxResults": "Jumlah Hasil Maksimum", + "maxResultsDesc": "Berhenti setelah sebanyak ini cap waktu yang cocok" + }, + "errors": { + "noCamera": "Silakan pilih kamera", + "noROI": "Silakan gambar wilayah yang diminati", + "noTimeRange": "Silakan pilih rentang waktu", + "invalidTimeRange": "Waktu selesai harus setelah waktu mulai", + "searchFailed": "Pencarian gagal: {{message}}", + "polygonTooSmall": "Poligon harus memiliki setidaknya 3 titik", + "unknown": "Kesalahan tidak diketahui" + }, + "changePercentage": "{{percentage}}% berubah", + "metrics": { + "title": "Metrik Pencarian", + "segmentsScanned": "Segmen dipindai", + "segmentsProcessed": "Diproses", + "segmentsSkippedInactive": "Dilewati (tidak ada aktivitas)", + "segmentsSkippedHeatmap": "Dilewati (tidak ada tumpang tindih ROI)", + "fallbackFullRange": "Pemindaian rentang penuh cadangan", + "framesDecoded": "Frame didekode", + "wallTime": "Waktu pencarian", + "segmentErrors": "Kesalahan segmen", + "seconds": "{{seconds}} dtk" + } +} diff --git a/web/public/locales/id/views/replay.json b/web/public/locales/id/views/replay.json index 0967ef424b..d47dbd0c90 100644 --- a/web/public/locales/id/views/replay.json +++ b/web/public/locales/id/views/replay.json @@ -1 +1,59 @@ -{} +{ + "title": "Pemutaran Ulang Debug", + "description": "Putar ulang rekaman kamera untuk debugging. Daftar objek menampilkan ringkasan objek terdeteksi yang tertunda waktu, dan tab Pesan menampilkan aliran pesan internal Frigate dari rekaman pemutaran ulang.", + "websocket_messages": "Pesan", + "dialog": { + "title": "Mulai Pemutaran Ulang Debug", + "description": "Buat kamera pemutaran ulang sementara yang memutar berulang rekaman historis untuk men-debug masalah deteksi dan pelacakan objek. Kamera pemutaran ulang akan memiliki konfigurasi deteksi yang sama dengan kamera sumber. Pilih rentang waktu untuk memulai.", + "camera": "Kamera Sumber", + "timeRange": "Rentang Waktu", + "preset": { + "1m": "1 Menit Terakhir", + "5m": "5 Menit Terakhir", + "timeline": "Dari Linimasa", + "custom": "Kustom" + }, + "startButton": "Mulai Pemutaran Ulang", + "selectFromTimeline": "Pilih", + "starting": "Memulai pemutaran ulang...", + "startLabel": "Mulai", + "endLabel": "Selesai", + "toast": { + "error": "Gagal memulai pemutaran ulang debug: {{error}}", + "alreadyActive": "Sesi pemutaran ulang sudah aktif", + "stopError": "Gagal menghentikan pemutaran ulang debug: {{error}}", + "goToReplay": "Buka Pemutaran Ulang" + } + }, + "page": { + "noSession": "Tidak Ada Sesi Pemutaran Ulang Debug Aktif", + "noSessionDesc": "Mulai Pemutaran Ulang Debug dari tampilan Riwayat dengan mengeklik tombol Aksi di bilah alat dan memilih Pemutaran Ulang Debug.", + "goToRecordings": "Buka Riwayat", + "preparingClip": "Menyiapkan klip…", + "preparingClipDesc": "Frigate sedang menggabungkan rekaman untuk rentang waktu yang dipilih. Ini dapat memakan waktu satu menit untuk rentang yang lebih panjang.", + "startingCamera": "Memulai Pemutaran Ulang Debug…", + "startError": { + "title": "Gagal memulai Pemutaran Ulang Debug", + "back": "Kembali ke Riwayat" + }, + "sourceCamera": "Kamera Sumber", + "replayCamera": "Kamera Pemutaran Ulang", + "initializingReplay": "Menginisialisasi Pemutaran Ulang Debug...", + "stoppingReplay": "Menghentikan Pemutaran Ulang Debug...", + "stopReplay": "Hentikan Pemutaran Ulang", + "confirmStop": { + "title": "Hentikan Pemutaran Ulang Debug?", + "description": "Ini akan menghentikan sesi dan membersihkan semua data sementara. Anda yakin?", + "confirm": "Hentikan Pemutaran Ulang", + "cancel": "Batal" + }, + "activity": "Aktivitas", + "objects": "Daftar Objek", + "audioDetections": "Deteksi Audio", + "noActivity": "Tidak ada aktivitas terdeteksi", + "activeTracking": "Pelacakan aktif", + "noActiveTracking": "Tidak ada pelacakan aktif", + "configuration": "Konfigurasi", + "configurationDesc": "Sesuaikan secara halus pengaturan deteksi gerakan dan pelacakan objek untuk kamera Pemutaran Ulang Debug. Tidak ada perubahan yang disimpan ke file konfigurasi Frigate Anda." + } +} diff --git a/web/public/locales/id/views/search.json b/web/public/locales/id/views/search.json index 724b2b2d6c..9a4aa09baa 100644 --- a/web/public/locales/id/views/search.json +++ b/web/public/locales/id/views/search.json @@ -1,36 +1,73 @@ { - "search": "Cari", - "savedSearches": "Simpan Pencarian", + "search": "Pencarian", + "savedSearches": "Pencarian Tersimpan", "searchFor": "Cari untuk {{inputValue}}", "button": { - "clear": "Bersihkan pencarian", - "save": "Simpan Pencarian", + "clear": "Hapus pencarian", + "save": "Simpan pencarian", "delete": "Hapus pencarian yang disimpan", - "filterInformation": "Saring Informasi", + "filterInformation": "Informasi filter", "filterActive": "Filter aktif" }, - "trackedObjectId": "Tracked Object ID", + "trackedObjectId": "ID Objek yang Dilacak", "filter": { "label": { "cameras": "Kamera", "labels": "Label", "zones": "Zona", - "sub_labels": "Sublabel", + "sub_labels": "Sub Label", "attributes": "Atribut", - "search_type": "Tipe pencarian", + "search_type": "Jenis Pencarian", "time_range": "Rentang Waktu", "before": "Sebelum", "after": "Sesudah", - "min_score": "Minimal Skor", - "max_score": "Maks Skor", - "min_speed": "Kecepatan Min", - "max_speed": "Kecepatan Maks", - "recognized_license_plate": "Plat Kendaraan Dikenali", - "has_clip": "Memiliki Klip", - "has_snapshot": "Memiliki tangkapan layar" + "min_score": "Skor Minimum", + "max_score": "Skor Maksimum", + "min_speed": "Kecepatan Minimum", + "max_speed": "Kecepatan Maksimum", + "recognized_license_plate": "Pelat Nomor yang Diakui", + "has_clip": "Memiliki Video Klip", + "has_snapshot": "Memiliki Snapshot" }, "searchType": { - "thumbnail": "Tumbnail" + "thumbnail": "Gambar Mini", + "description": "Deskripsi" + }, + "toast": { + "error": { + "beforeDateBeLaterAfter": "Tanggal 'before' harus lebih akhir daripada tanggal 'after'.", + "afterDatebeEarlierBefore": "Tanggal 'after' harus lebih awal daripada tanggal 'before'.", + "minScoreMustBeLessOrEqualMaxScore": "'min_score' harus lebih kecil dari atau sama dengan 'max_score'.", + "maxScoreMustBeGreaterOrEqualMinScore": "'max_score' harus lebih besar dari atau sama dengan 'min_score'.", + "minSpeedMustBeLessOrEqualMaxSpeed": "'min_speed' harus lebih kecil dari atau sama dengan 'max_speed'.", + "maxSpeedMustBeGreaterOrEqualMinSpeed": "'max_speed' harus lebih besar dari atau sama dengan 'min_speed'." + } + }, + "tips": { + "title": "Cara menggunakan filter teks", + "desc": { + "text": "Filter membantu Anda mempersempit hasil pencarian. Berikut cara menggunakannya di kolom input:", + "step1": "Ketik nama kunci filter diikuti tanda titik dua (misalnya, \"cameras:\").", + "step2": "Pilih nilai dari saran atau ketik nilai Anda sendiri.", + "step3": "Gunakan beberapa filter dengan menambahkannya satu per satu dengan spasi di antaranya.", + "step4": "Filter tanggal (before: dan after:) menggunakan format {{DateFormat}}.", + "step5": "Filter rentang waktu menggunakan format {{exampleTime}}.", + "step6": "Hapus filter dengan mengklik tanda 'x' di sebelahnya.", + "exampleLabel": "Contoh:" + } + }, + "header": { + "currentFilterType": "Nilai Filter", + "noFilters": "Filter", + "activeFilters": "Filter Aktif" } + }, + "similaritySearch": { + "title": "Pencarian Kemiripan", + "active": "Pencarian kemiripan aktif", + "clear": "Hapus pencarian kemiripan" + }, + "placeholder": { + "search": "Pencarian…" } } diff --git a/web/public/locales/id/views/settings.json b/web/public/locales/id/views/settings.json index 831d9bb684..45c30aa92d 100644 --- a/web/public/locales/id/views/settings.json +++ b/web/public/locales/id/views/settings.json @@ -4,64 +4,1807 @@ "camera": "Pengaturan Kamera - Frigate", "classification": "Pengaturan Klasifikasi - Frigate", "authentication": "Pengaturan Autentikasi - Frigate", - "masksAndZones": "Editor Mask dan Zona - Frigate", + "masksAndZones": "Editor Masker dan Zona - Frigate", "motionTuner": "Penyetel Gerakan - Frigate", - "general": "Frigate - Pengaturan Umum", - "object": "Pengawakutu - Frigate", - "enrichments": "Frigate - Pengaturan Pengayaan", - "cameraManagement": "Pengaturan Kamera - Frigate", - "cameraReview": "Pengaturan Ulasan Kamera - Frigate", + "general": "Pengaturan UI - Frigate", + "object": "Debug - Frigate", + "enrichments": "Pengaturan Pengayaan - Frigate", + "cameraManagement": "Kelola Kamera - Frigate", + "cameraReview": "Pengaturan Tinjauan Kamera - Frigate", "frigatePlus": "Pengaturan Frigate+ - Frigate", - "notifications": "Pengaturan Notifikasi - Frigate" + "notifications": "Pengaturan Notifikasi - Frigate", + "globalConfig": "Konfigurasi Global - Frigate", + "cameraConfig": "Konfigurasi Kamera - Frigate", + "detectorsAndModel": "Detektor dan model - Frigate", + "maintenance": "Pemeliharaan - Frigate", + "profiles": "Profil - Frigate" }, "menu": { "cameraManagement": "Manajemen", "notifications": "Notifikasi", - "ui": "Antarmuka Pengguna", - "enrichments": "Peningkatan", - "cameraReview": "Ulasan", - "motionTuner": "Pengatur Gerak", + "ui": "UI", + "enrichments": "Pengayaan", + "cameraReview": "Tinjauan", + "motionTuner": "Penyetel gerakan", "triggers": "Pemicu", "users": "Pengguna", "roles": "Peran", "frigateplus": "Frigate+", - "masksAndZones": "Mask / Zona", - "debug": "Debug" + "masksAndZones": "Masker / Zona", + "debug": "Debug", + "general": "Umum", + "globalConfig": "Konfigurasi global", + "system": "Sistem", + "integrations": "Integrasi", + "cameras": "Konfigurasi kamera", + "uiSettings": "Pengaturan UI", + "profiles": "Profil", + "globalDetect": "Deteksi objek", + "globalRecording": "Perekaman", + "globalSnapshots": "Cuplikan", + "globalFfmpeg": "FFmpeg", + "globalMotion": "Deteksi gerakan", + "globalObjects": "Objek", + "globalReview": "Tinjauan", + "globalAudioEvents": "Deteksi audio", + "globalLivePlayback": "Pemutaran langsung", + "globalTimestampStyle": "Gaya stempel waktu", + "systemDatabase": "Basis data", + "systemTls": "TLS", + "systemAuthentication": "Autentikasi", + "systemNetworking": "Jaringan", + "systemProxy": "Proksi", + "systemUi": "UI", + "systemLogging": "Pencatatan log", + "systemEnvironmentVariables": "Variabel lingkungan", + "systemTelemetry": "Telemetri", + "systemBirdseye": "Birdseye", + "systemFfmpeg": "FFmpeg", + "systemDetectorsAndModel": "Detektor dan model", + "systemMqtt": "MQTT", + "systemGo2rtcStreams": "Stream go2rtc", + "integrationSemanticSearch": "Pencarian semantik", + "integrationGenerativeAi": "AI generatif", + "integrationFaceRecognition": "Pengenalan wajah", + "integrationLpr": "Pengenalan pelat nomor", + "integrationObjectClassification": "Klasifikasi objek", + "integrationAudioTranscription": "Transkripsi audio", + "cameraDetect": "Deteksi objek", + "cameraFfmpeg": "FFmpeg", + "cameraRecording": "Perekaman", + "cameraSnapshots": "Cuplikan", + "cameraMotion": "Deteksi gerakan", + "cameraObjects": "Objek", + "cameraConfigReview": "Tinjauan", + "cameraAudioEvents": "Deteksi audio", + "cameraAudioTranscription": "Transkripsi audio", + "cameraNotifications": "Notifikasi", + "cameraLivePlayback": "Pemutaran langsung", + "cameraBirdseye": "Birdseye", + "cameraFaceRecognition": "Pengenalan wajah", + "cameraLpr": "Pengenalan pelat nomor", + "cameraMqttConfig": "MQTT", + "cameraOnvif": "ONVIF", + "cameraUi": "UI Kamera", + "cameraTimestampStyle": "Gaya stempel waktu", + "cameraMqtt": "MQTT Kamera", + "maintenance": "Pemeliharaan", + "mediaSync": "Sinkronisasi media", + "regionGrid": "Grid wilayah" }, "dialog": { "unsavedChanges": { "title": "Anda memiliki perubahan yang belum disimpan.", - "desc": "Apakah Anda ingin menyimpan perubahan Anda sebelum melanjutkan?" + "desc": "Apakah Anda ingin menyimpan perubahan sebelum melanjutkan?" } }, "cameraSetting": { "camera": "Kamera", - "noCamera": "Tidak Ada Kamera" + "noCamera": "Tidak ada kamera" }, "general": { - "title": "Pengaturan Antarmuka Pengguna", + "title": "Pengaturan UI", "liveDashboard": { - "title": "Dashboard Langsung", + "title": "Dasbor Langsung", "automaticLiveView": { "label": "Tampilan Langsung Otomatis", - "desc": "Secara otomatis beralih ke tampilan langsung kamera saat aktivitas terdeteksi. Menonaktifkan opsi ini menyebabkan gambar statis kamera di dasbor langsung hanya diperbarui sekali per menit." + "desc": "Secara otomatis beralih ke tampilan langsung kamera saat aktivitas terdeteksi. Menonaktifkan opsi ini menyebabkan gambar kamera statis pada dasbor Langsung hanya diperbarui sekali per menit." + }, + "playAlertVideos": { + "label": "Putar Video Peringatan", + "desc": "Secara default, peringatan terbaru di dasbor Langsung diputar sebagai video kecil yang berulang. Nonaktifkan opsi ini untuk hanya menampilkan gambar statis dari peringatan terbaru pada perangkat/browser ini." + }, + "displayCameraNames": { + "label": "Selalu Tampilkan Nama Kamera", + "desc": "Selalu tampilkan nama kamera dalam chip pada dasbor tampilan langsung multi-kamera." + }, + "liveFallbackTimeout": { + "label": "Batas Waktu Fallback Pemutar Langsung", + "desc": "Saat stream langsung kualitas tinggi kamera tidak tersedia, alihkan ke mode bandwidth rendah setelah sekian detik. Default: 3." + } + }, + "storedLayouts": { + "title": "Tata Letak Tersimpan", + "desc": "Tata letak kamera dalam grup kamera dapat diseret/diubah ukurannya. Posisi disimpan di penyimpanan lokal browser Anda.", + "clearAll": "Hapus Semua Tata Letak" + }, + "cameraGroupStreaming": { + "title": "Pengaturan Streaming Grup Kamera", + "desc": "Pengaturan streaming untuk setiap grup kamera disimpan di penyimpanan lokal browser Anda.", + "clearAll": "Hapus Semua Pengaturan Streaming" + }, + "recordingsViewer": { + "title": "Penampil Rekaman", + "defaultPlaybackRate": { + "label": "Kecepatan Pemutaran Default", + "desc": "Kecepatan pemutaran default untuk pemutaran rekaman." + } + }, + "calendar": { + "title": "Kalender", + "firstWeekday": { + "label": "Hari Pertama dalam Minggu", + "desc": "Hari saat minggu pada kalender tinjauan dimulai.", + "sunday": "Minggu", + "monday": "Senin" + } + }, + "toast": { + "success": { + "clearStoredLayout": "Tata letak tersimpan untuk {{cameraName}} telah dihapus", + "clearStreamingSettings": "Pengaturan streaming untuk semua grup kamera telah dihapus." + }, + "error": { + "clearStoredLayoutFailed": "Gagal menghapus tata letak tersimpan: {{errorMessage}}", + "clearStreamingSettingsFailed": "Gagal menghapus pengaturan streaming: {{errorMessage}}" } } }, "configMessages": { "audioTranscription": { - "audioDetectionDisabled": "Pendeteksi suara tidak dinyalakan untuk kamera ini. Transkripsi suara memerlukan pendeteksi suara untuk dinyalakan." + "audioDetectionDisabled": "Deteksi audio tidak diaktifkan untuk kamera ini. Transkripsi audio memerlukan deteksi audio yang aktif." }, "detect": { - "fpsGreaterThanFive": "Pengaturan FPS untuk pendeteksian lebih dari 5 tidak disarankan." + "fpsGreaterThanFive": "Mengatur FPS deteksi lebih dari 5 tidak direkomendasikan. Nilai yang lebih tinggi dapat menyebabkan masalah performa dan tidak akan memberikan manfaat apa pun.", + "disabled": "Deteksi objek dinonaktifkan. Cuplikan, item tinjauan, dan pengayaan seperti pengenalan wajah, pengenalan pelat nomor, dan AI Generatif tidak akan berfungsi." }, "faceRecognition": { - "globalDisabled": "Pendeteksi muka tidak dinyalakan dalam level global. Nyalakan pendeteksi muka dalam pengaturan global agar per-kamera deteksi muka dapat bekerja.", - "personNotTracked": "Pendeteksi muka memerlukan 'orang' sebagai objek deteksi. Pastikan 'orang' berada dalam hal yang dideteksi." + "globalDisabled": "Pengayaan pengenalan wajah harus diaktifkan agar fitur pengenalan wajah berfungsi pada kamera ini.", + "personNotTracked": "Pengenalan wajah memerlukan objek 'person' untuk dilacak. Aktifkan 'person' di Objek untuk kamera ini.", + "modelSizeLarge": "Model 'large' memerlukan GPU atau NPU untuk performa yang wajar. Gunakan 'small' pada sistem yang hanya menggunakan CPU." }, "lpr": { - "globalDisabled": "Pendeteksian plat nomor tidak dinyalakan dalam pengaturan global. Nyalakan deteksi plat nomor dalam pengaturan global agar fungsi ini dapat bekerja.", - "vehicleNotTracked": "Pendeteksian plat nomor memerlukan 'mobil' atau 'motor' untuk dideteksi." + "globalDisabled": "Pengayaan pengenalan pelat nomor harus diaktifkan agar fitur LPR berfungsi pada kamera ini.", + "vehicleNotTracked": "Pengenalan pelat nomor memerlukan 'car' atau 'motorcycle' untuk dilacak. Aktifkan 'car' atau 'motorcycle' di Objek untuk kamera ini.", + "modelSizeLarge": "Model 'large' dioptimalkan untuk pelat nomor multi-baris. Model 'small' memberikan performa lebih baik daripada 'large' dan sebaiknya digunakan kecuali wilayah Anda menggunakan format pelat multi-baris." + }, + "review": { + "recordDisabled": "Perekaman dinonaktifkan, item tinjauan tidak akan dibuat.", + "detectDisabled": "Deteksi objek dinonaktifkan. Item tinjauan memerlukan objek yang terdeteksi untuk mengategorikan alert dan deteksi.", + "allNonAlertDetections": "Semua aktivitas non-alert akan disertakan sebagai deteksi.", + "genaiImageSourceRecordingsRecordDisabled": "Sumber gambar disetel ke 'rekaman', tetapi perekaman dinonaktifkan. Frigate akan kembali ke gambar pratinjau." + }, + "audio": { + "noAudioRole": "Tidak ada stream yang memiliki peran audio yang didefinisikan. Anda harus mengaktifkan peran audio agar deteksi audio berfungsi." + }, + "objects": { + "genaiNoDescriptionsProvider": "Anda harus mengonfigurasi penyedia GenAI dengan peran 'deskripsi' agar deskripsi dapat dibuat." + }, + "record": { + "noRecordRole": "Tidak ada stream yang memiliki peran record yang didefinisikan. Perekaman tidak akan berfungsi." + }, + "birdseye": { + "objectsModeDetectDisabled": "Birdseye disetel ke mode 'objects', tetapi deteksi objek dinonaktifkan untuk kamera ini. Kamera tidak akan muncul di Birdseye." + }, + "snapshots": { + "detectDisabled": "Deteksi objek dinonaktifkan. Cuplikan dihasilkan dari objek yang terlacak dan tidak akan dibuat." + }, + "detectors": { + "mixedTypes": "Semua detektor harus menggunakan tipe yang sama. Hapus detektor yang ada untuk menggunakan tipe yang berbeda.", + "mixedTypesSuggestion": "Semua detektor harus menggunakan tipe yang sama. Hapus detektor yang ada atau pilih {{type}}." + }, + "semanticSearch": { + "jinav2SmallModelSize": "Ukuran 'small' dengan model Jina V2 memiliki RAM tinggi dan biaya inferensi. Model 'large' dengan GPU diskrit direkomendasikan." } + }, + "button": { + "overriddenGlobal": "Ditimpa (Global)", + "overriddenGlobalTooltip": "Kamera ini menimpa pengaturan konfigurasi global di bagian ini", + "overriddenGlobalHeading_other": "Kamera ini menimpa {{count}} bidang dari konfigurasi global:", + "overriddenGlobalNoDeltas": "Kamera ini menimpa konfigurasi global, tetapi tidak ada nilai bidang yang berbeda.", + "overriddenBaseConfig": "Ditimpa (Konfigurasi Dasar)", + "overriddenBaseConfigTooltip": "Profil {{profile}} menimpa pengaturan konfigurasi di bagian ini", + "overriddenBaseConfigHeading_other": "Profil {{profile}} menimpa {{count}} bidang dari konfigurasi dasar:", + "overriddenBaseConfigNoDeltas": "Profil {{profile}} menimpa bagian ini, tetapi tidak ada nilai bidang yang berbeda dari konfigurasi dasar.", + "overriddenInCameras": { + "label_other": "Ditimpa di {{count}} kamera", + "tooltip_other": "{{count}} kamera menimpa nilai di bagian ini. Klik untuk melihat detail.", + "heading_other": "Bagian global ini memiliki bidang yang ditimpa di {{count}} kamera.", + "othersField_other": "{{count}} lainnya", + "profilePrefix": "Profil {{profile}}: {{fields}}" + } + }, + "menuDot": { + "overrideGlobal": "Bagian ini menimpa konfigurasi global", + "overrideProfile": "Bagian ini ditimpa oleh profil {{profile}}", + "unsaved": "Bagian ini memiliki perubahan yang belum disimpan" + }, + "saveAllPreview": { + "title": "Perubahan yang akan disimpan", + "triggerLabel": "Tinjau perubahan yang tertunda", + "empty": "Tidak ada perubahan yang tertunda.", + "scope": { + "label": "Cakupan", + "global": "Global", + "camera": "Kamera: {{cameraName}}" + }, + "profile": { + "label": "Profil" + }, + "field": { + "label": "Bidang" + }, + "value": { + "label": "Nilai baru", + "reset": "Atur ulang" + } + }, + "enrichments": { + "title": "Pengaturan Pengayaan", + "unsavedChanges": "Perubahan pengaturan Pengayaan yang belum disimpan", + "birdClassification": { + "title": "Klasifikasi Burung", + "desc": "Klasifikasi burung mengidentifikasi burung yang dikenal menggunakan model Tensorflow terkuantisasi. Saat burung yang dikenal dikenali, nama umumnya akan ditambahkan sebagai sub_label. Informasi ini disertakan dalam UI, filter, serta notifikasi." + }, + "semanticSearch": { + "title": "Pencarian Semantik", + "desc": "Pencarian Semantik di Frigate memungkinkan Anda menemukan objek yang terlacak dalam item tinjauan menggunakan gambar itu sendiri, deskripsi teks yang ditentukan pengguna, atau deskripsi yang dibuat secara otomatis.", + "reindexNow": { + "label": "Indeks Ulang Sekarang", + "desc": "Pengindeksan ulang akan membuat ulang embedding untuk semua objek yang terlacak. Proses ini berjalan di latar belakang dan dapat memaksimalkan penggunaan CPU Anda serta memerlukan waktu cukup lama tergantung pada jumlah objek yang terlacak yang Anda miliki.", + "confirmTitle": "Konfirmasi Pengindeksan Ulang", + "confirmDesc": "Apakah Anda yakin ingin mengindeks ulang semua embedding objek yang terlacak? Proses ini akan berjalan di latar belakang, tetapi dapat memaksimalkan penggunaan CPU Anda dan memerlukan waktu cukup lama. Anda dapat memantau progresnya di halaman Jelajahi.", + "confirmButton": "Indeks Ulang", + "success": "Pengindeksan ulang berhasil dimulai.", + "alreadyInProgress": "Pengindeksan ulang sudah sedang berlangsung.", + "error": "Gagal memulai pengindeksan ulang: {{errorMessage}}" + }, + "modelSize": { + "label": "Ukuran Model", + "desc": "Ukuran model yang digunakan untuk embedding pencarian semantik.", + "small": { + "title": "kecil", + "desc": "Menggunakan small akan memakai versi model terkuantisasi yang menggunakan RAM lebih sedikit dan berjalan lebih cepat pada CPU dengan perbedaan kualitas embedding yang sangat kecil." + }, + "large": { + "title": "besar", + "desc": "Menggunakan large memakai model Jina penuh dan akan otomatis berjalan pada GPU jika memungkinkan." + } + } + }, + "faceRecognition": { + "title": "Pengenalan Wajah", + "desc": "Pengenalan wajah memungkinkan orang diberi nama, dan saat wajah mereka dikenali Frigate akan menetapkan nama orang tersebut sebagai sub_label. Informasi ini disertakan dalam UI, filter, serta notifikasi.", + "modelSize": { + "label": "Ukuran Model", + "desc": "Ukuran model yang digunakan untuk pengenalan wajah.", + "small": { + "title": "kecil", + "desc": "Menggunakan small memakai model embedding wajah FaceNet yang berjalan efisien pada sebagian besar CPU." + }, + "large": { + "title": "besar", + "desc": "Menggunakan large memakai model embedding wajah ArcFace dan akan otomatis berjalan pada GPU jika memungkinkan." + } + } + }, + "licensePlateRecognition": { + "title": "Pengenalan Pelat Nomor", + "desc": "Frigate dapat mengenali pelat nomor pada kendaraan dan secara otomatis menambahkan karakter yang terdeteksi ke field recognized_license_plate atau nama yang dikenal sebagai sub_label pada objek bertipe mobil. Kasus penggunaan yang umum adalah membaca pelat nomor mobil yang masuk ke jalan masuk rumah atau mobil yang melintas di jalan." + }, + "restart_required": "Perlu mulai ulang (pengaturan Pengayaan berubah)", + "toast": { + "success": "Pengaturan Pengayaan telah disimpan. Mulai ulang Frigate untuk menerapkan perubahan Anda.", + "error": "Gagal menyimpan perubahan konfigurasi: {{errorMessage}}" + } + }, + "cameraWizard": { + "title": "Tambah Kamera", + "description": "Ikuti langkah-langkah di bawah ini untuk menambahkan kamera baru ke instalasi Frigate Anda.", + "steps": { + "nameAndConnection": "Nama & Koneksi", + "probeOrSnapshot": "Probe atau Cuplikan", + "streamConfiguration": "Konfigurasi Stream", + "validationAndTesting": "Validasi & Pengujian" + }, + "save": { + "success": "Berhasil menyimpan kamera baru {{cameraName}}.", + "failure": "Kesalahan saat menyimpan {{cameraName}}." + }, + "testResultLabels": { + "resolution": "Resolusi", + "video": "Video", + "audio": "Audio", + "fps": "FPS" + }, + "commonErrors": { + "noUrl": "Harap berikan URL stream yang valid", + "testFailed": "Pengujian stream gagal: {{error}}" + }, + "step1": { + "description": "Masukkan detail kamera Anda dan pilih untuk memeriksa kamera atau memilih merek secara manual.", + "cameraName": "Nama Kamera", + "cameraNamePlaceholder": "mis., front_door atau Back Yard Overview", + "host": "Alamat Host/IP", + "port": "Port", + "username": "Nama Pengguna", + "usernamePlaceholder": "Opsional", + "password": "Kata Sandi", + "passwordPlaceholder": "Opsional", + "selectTransport": "Pilih protokol transport", + "cameraBrand": "Merek Kamera", + "selectBrand": "Pilih merek kamera untuk template URL", + "customUrl": "URL Stream Kustom", + "brandInformation": "Informasi merek", + "brandUrlFormat": "Untuk kamera dengan format URL RTSP seperti: {{exampleUrl}}", + "customUrlPlaceholder": "rtsp://username:password@host:port/path", + "connectionSettings": "Pengaturan Koneksi", + "detectionMethod": "Metode Deteksi Stream", + "onvifPort": "Port ONVIF", + "probeMode": "Periksa kamera", + "manualMode": "Pilihan manual", + "detectionMethodDescription": "Periksa kamera dengan ONVIF (jika didukung) untuk menemukan URL stream kamera, atau pilih merek kamera secara manual untuk menggunakan URL yang telah ditentukan sebelumnya. Untuk memasukkan URL RTSP kustom, pilih metode manual dan pilih \"Lainnya\".", + "onvifPortDescription": "Untuk kamera yang mendukung ONVIF, biasanya ini adalah 80 atau 8080.", + "useDigestAuth": "Gunakan autentikasi digest", + "useDigestAuthDescription": "Gunakan autentikasi digest HTTP untuk ONVIF. Beberapa kamera mungkin memerlukan nama pengguna/kata sandi ONVIF khusus alih-alih pengguna admin standar.", + "errors": { + "brandOrCustomUrlRequired": "Pilih merek kamera dengan host/IP atau pilih 'Lainnya' dengan URL kustom", + "nameRequired": "Nama kamera wajib diisi", + "nameLength": "Nama kamera harus 64 karakter atau kurang", + "invalidCharacters": "Nama kamera mengandung karakter yang tidak valid", + "nameExists": "Nama kamera sudah ada", + "customUrlRtspRequired": "URL kustom harus diawali dengan \"rtsp://\". Konfigurasi manual diperlukan untuk stream kamera non-RTSP." + } + }, + "step2": { + "description": "Periksa kamera untuk stream yang tersedia atau konfigurasi pengaturan manual berdasarkan metode deteksi yang Anda pilih.", + "testSuccess": "Pengujian koneksi berhasil!", + "testFailed": "Pengujian koneksi gagal. Harap periksa input Anda dan coba lagi.", + "testFailedTitle": "Pengujian Gagal", + "streamDetails": "Detail Stream", + "probing": "Sedang memeriksa kamera...", + "retry": "Coba lagi", + "testing": { + "probingMetadata": "Sedang memeriksa metadata kamera...", + "fetchingSnapshot": "Sedang mengambil cuplikan kamera..." + }, + "probeFailed": "Gagal memeriksa kamera: {{error}}", + "probingDevice": "Sedang memeriksa perangkat...", + "probeSuccessful": "Pemeriksaan berhasil", + "probeError": "Kesalahan Pemeriksaan", + "probeNoSuccess": "Pemeriksaan tidak berhasil", + "deviceInfo": "Informasi Perangkat", + "manufacturer": "Produsen", + "model": "Model", + "firmware": "Firmware", + "profiles": "Profil", + "ptzSupport": "Dukungan PTZ", + "autotrackingSupport": "Dukungan Pelacakan Otomatis", + "presets": "Preset", + "rtspCandidates": "Kandidat RTSP", + "rtspCandidatesDescription": "URL RTSP berikut ditemukan dari pemeriksaan kamera. Uji koneksi untuk melihat metadata stream.", + "noRtspCandidates": "Tidak ada URL RTSP yang ditemukan dari kamera. Kredensial Anda mungkin salah, atau kamera mungkin tidak mendukung ONVIF atau metode yang digunakan untuk mengambil URL RTSP. Kembali dan masukkan URL RTSP secara manual.", + "candidateStreamTitle": "Kandidat {{number}}", + "useCandidate": "Gunakan", + "uriCopy": "Salin", + "uriCopied": "URI disalin ke clipboard", + "testConnection": "Uji Koneksi", + "toggleUriView": "Klik untuk mengalihkan tampilan URI penuh", + "connected": "Terhubung", + "notConnected": "Tidak Terhubung", + "errors": { + "hostRequired": "Alamat host/IP wajib diisi" + } + }, + "step3": { + "description": "Konfigurasikan peran stream dan tambahkan stream tambahan untuk kamera Anda.", + "streamsTitle": "Stream Kamera", + "addStream": "Tambah Stream", + "addAnotherStream": "Tambah Stream Lain", + "streamTitle": "Stream {{number}}", + "streamUrl": "URL Stream", + "streamUrlPlaceholder": "rtsp://username:password@host:port/path", + "selectStream": "Pilih sebuah stream", + "searchCandidates": "Cari kandidat...", + "noStreamFound": "Stream tidak ditemukan", + "url": "URL", + "resolution": "Resolusi", + "selectResolution": "Pilih resolusi", + "quality": "Kualitas", + "selectQuality": "Pilih kualitas", + "roles": "Peran", + "roleLabels": { + "detect": "Deteksi Objek", + "record": "Perekaman", + "audio": "Audio" + }, + "testStream": "Uji Koneksi", + "testSuccess": "Pengujian stream berhasil!", + "testFailed": "Pengujian stream gagal", + "testFailedTitle": "Pengujian Gagal", + "connected": "Terhubung", + "notConnected": "Tidak Terhubung", + "featuresTitle": "Fitur", + "go2rtc": "Kurangi koneksi ke kamera", + "detectRoleWarning": "Setidaknya satu stream harus memiliki peran \"detect\" untuk melanjutkan.", + "rolesPopover": { + "title": "Peran Stream", + "detect": "Umpan utama untuk deteksi objek.", + "record": "Menyimpan segmen umpan video berdasarkan pengaturan konfigurasi.", + "audio": "Umpan untuk deteksi berbasis audio." + }, + "featuresPopover": { + "title": "Fitur Stream", + "description": "Gunakan restreaming go2rtc untuk mengurangi koneksi ke kamera Anda." + } + }, + "step4": { + "description": "Validasi dan analisis akhir sebelum menyimpan kamera baru Anda. Hubungkan setiap stream sebelum menyimpan.", + "validationTitle": "Validasi Stream", + "connectAllStreams": "Hubungkan Semua Stream", + "reconnectionSuccess": "Penyambungan ulang berhasil.", + "reconnectionPartial": "Beberapa stream gagal disambungkan ulang.", + "streamUnavailable": "Pratinjau stream tidak tersedia", + "reload": "Muat ulang", + "connecting": "Menghubungkan...", + "streamTitle": "Stream {{number}}", + "valid": "Valid", + "failed": "Gagal", + "notTested": "Belum diuji", + "connectStream": "Hubungkan", + "connectingStream": "Sedang menghubungkan", + "disconnectStream": "Putuskan", + "estimatedBandwidth": "Perkiraan Bandwidth", + "roles": "Peran", + "ffmpegModule": "Gunakan mode kompatibilitas stream", + "ffmpegModuleDescription": "Jika stream tidak dimuat setelah beberapa kali percobaan, coba aktifkan ini. Saat diaktifkan, Frigate akan menggunakan modul ffmpeg dengan go2rtc. Ini dapat memberikan kompatibilitas yang lebih baik dengan beberapa stream kamera.", + "none": "Tidak ada", + "error": "Kesalahan", + "streamValidated": "Stream {{number}} berhasil divalidasi", + "streamValidationFailed": "Validasi stream {{number}} gagal", + "saveAndApply": "Simpan Kamera Baru", + "saveError": "Konfigurasi tidak valid. Harap periksa pengaturan Anda.", + "issues": { + "title": "Validasi Stream", + "videoCodecGood": "Codec video adalah {{codec}}.", + "audioCodecGood": "Codec audio adalah {{codec}}.", + "resolutionHigh": "Resolusi {{resolution}} dapat menyebabkan peningkatan penggunaan sumber daya.", + "resolutionLow": "Resolusi {{resolution}} mungkin terlalu rendah untuk deteksi objek kecil yang andal.", + "resolutionUnknown": "Resolusi stream ini tidak dapat diperiksa. Anda harus menetapkan resolusi detect secara manual di Pengaturan atau konfigurasi Anda.", + "noAudioWarning": "Tidak ada audio yang terdeteksi untuk stream ini, rekaman tidak akan memiliki audio.", + "audioCodecRecordError": "Codec audio AAC diperlukan untuk mendukung audio dalam rekaman.", + "audioCodecRequired": "Stream audio diperlukan untuk mendukung deteksi audio.", + "restreamingWarning": "Mengurangi koneksi ke kamera untuk stream record dapat sedikit meningkatkan penggunaan CPU.", + "brands": { + "reolink-rtsp": "RTSP Reolink tidak direkomendasikan. Aktifkan HTTP di pengaturan firmware kamera dan mulai ulang wizard.", + "reolink-http": "Stream HTTP Reolink sebaiknya menggunakan FFmpeg untuk kompatibilitas yang lebih baik. Aktifkan 'Gunakan mode kompatibilitas stream' untuk stream ini." + }, + "dahua": { + "substreamWarning": "Substream 1 terkunci pada resolusi rendah. Banyak kamera Dahua / Amcrest / EmpireTech mendukung substream tambahan yang perlu diaktifkan di pengaturan kamera. Disarankan untuk memeriksa dan menggunakan stream tersebut jika tersedia." + }, + "hikvision": { + "substreamWarning": "Substream 1 terkunci pada resolusi rendah. Banyak kamera Hikvision mendukung substream tambahan yang perlu diaktifkan di pengaturan kamera. Disarankan untuk memeriksa dan menggunakan stream tersebut jika tersedia." + } + } + } + }, + "cameraManagement": { + "title": "Kelola Kamera", + "description": "Tambahkan, edit, dan hapus kamera, kontrol kamera mana yang diaktifkan, serta konfigurasikan penimpaan per profil dan tipe kamera. Untuk mengonfigurasi stream, deteksi, gerakan, dan pengaturan khusus kamera lainnya, pilih bagian spesifik di bawah Konfigurasi Kamera.", + "addCamera": "Tambah Kamera Baru", + "deleteCamera": "Hapus Kamera", + "deleteCameraDialog": { + "title": "Hapus Kamera", + "description": "Menghapus kamera akan menghapus secara permanen semua rekaman, objek terlacak, dan konfigurasi untuk kamera tersebut. Semua stream go2rtc yang terkait dengan kamera ini mungkin masih perlu dihapus secara manual.", + "selectPlaceholder": "Pilih kamera...", + "confirmTitle": "Apakah Anda yakin?", + "confirmWarning": "Menghapus {{cameraName}} tidak dapat dibatalkan.", + "deleteExports": "Juga hapus ekspor untuk kamera ini", + "confirmButton": "Hapus Permanen", + "success": "Kamera {{cameraName}} berhasil dihapus", + "error": "Gagal menghapus kamera {{cameraName}}" + }, + "editCamera": "Edit Kamera:", + "selectCamera": "Pilih Kamera", + "backToSettings": "Kembali ke Pengaturan Kamera", + "streams": { + "title": "Aktifkan / Nonaktifkan Kamera", + "enableLabel": "Kamera yang diaktifkan", + "enableDesc": "Nonaktifkan sementara kamera yang aktif hingga Frigate dimulai ulang. Menonaktifkan kamera sepenuhnya akan menghentikan seluruh pemrosesan stream kamera ini oleh Frigate. Deteksi, perekaman, dan debugging tidak akan tersedia.
    Catatan: Ini tidak menonaktifkan restream go2rtc.

    Seret pegangan untuk mengubah urutan kamera sebagaimana ditampilkan di UI. Urutan kamera yang aktif akan tercermin di seluruh UI termasuk dasbor Langsung dan dropdown pemilihan kamera.", + "disableLabel": "Kamera yang dinonaktifkan", + "disableDesc": "Aktifkan kamera yang saat ini tidak terlihat di UI dan dinonaktifkan dalam konfigurasi. Mulai ulang Frigate diperlukan setelah mengaktifkan.", + "enableSuccess": "{{cameraName}} telah diaktifkan dalam konfigurasi. Mulai ulang Frigate untuk menerapkan perubahan.", + "reorderHandle": "Seret untuk mengubah urutan", + "saving": "Menyimpan…", + "saved": "Tersimpan", + "friendlyName": { + "edit": "Edit nama tampilan kamera", + "title": "Edit Nama Tampilan", + "description": "Tetapkan nama ramah yang ditampilkan untuk kamera ini di seluruh UI Frigate. Biarkan kosong untuk menggunakan ID kamera.", + "rename": "Ubah Nama" + } + }, + "cameraConfig": { + "add": "Tambah Kamera", + "edit": "Edit Kamera", + "description": "Konfigurasikan pengaturan kamera termasuk input stream dan perannya.", + "name": "Nama Kamera", + "nameRequired": "Nama kamera wajib diisi", + "nameLength": "Nama kamera harus kurang dari 64 karakter.", + "namePlaceholder": "mis., front_door atau Back Yard Overview", + "enabled": "Diaktifkan", + "ffmpeg": { + "inputs": "Input Stream", + "path": "Path Stream", + "pathRequired": "Path stream wajib diisi", + "pathPlaceholder": "rtsp://...", + "roles": "Peran", + "rolesRequired": "Setidaknya satu peran wajib diisi", + "rolesUnique": "Setiap peran (audio, detect, record) hanya dapat ditetapkan ke satu stream", + "addInput": "Tambah Input Stream", + "removeInput": "Hapus Input Stream", + "inputsRequired": "Setidaknya satu input stream wajib diisi" + }, + "go2rtcStreams": "Stream go2rtc", + "streamUrls": "URL Stream", + "addUrl": "Tambah URL", + "addGo2rtcStream": "Tambah Stream go2rtc", + "toast": { + "success": "Kamera {{cameraName}} berhasil disimpan" + } + }, + "profiles": { + "title": "Penimpaan Kamera per Profil", + "selectLabel": "Pilih profil", + "description": "Konfigurasikan kamera mana yang diaktifkan atau dinonaktifkan saat profil diaktifkan. Kamera yang diatur ke \"Warisi\" akan mempertahankan status aktif dasar mereka.", + "inherit": "Warisi", + "enabled": "Diaktifkan", + "disabled": "Dinonaktifkan" + }, + "cameraType": { + "title": "Tipe Kamera", + "label": "Tipe kamera", + "description": "Tetapkan tipe untuk setiap kamera. Kamera LPR khusus adalah kamera satu fungsi dengan zoom optik kuat untuk menangkap pelat nomor pada kendaraan yang jauh. Sebagian besar kamera sebaiknya menggunakan tipe kamera normal kecuali kamera tersebut memang khusus untuk LPR dan memiliki tampilan yang sangat terfokus pada pelat nomor.", + "normal": "Normal", + "dedicatedLpr": "LPR Khusus", + "saveSuccess": "Tipe kamera untuk {{cameraName}} telah diperbarui. Mulai ulang Frigate untuk menerapkan perubahan." + } + }, + "cameraReview": { + "title": "Pengaturan Tinjauan Kamera", + "object_descriptions": { + "title": "Deskripsi Objek AI Generatif", + "desc": "Aktifkan/nonaktifkan sementara deskripsi objek AI Generatif untuk kamera ini hingga Frigate dimulai ulang. Saat dinonaktifkan, deskripsi yang dihasilkan AI tidak akan diminta untuk objek terlacak pada kamera ini." + }, + "review_descriptions": { + "title": "Deskripsi Tinjauan AI Generatif", + "desc": "Aktifkan/nonaktifkan sementara deskripsi tinjauan AI Generatif untuk kamera ini hingga Frigate dimulai ulang. Saat dinonaktifkan, deskripsi yang dihasilkan AI tidak akan diminta untuk item tinjauan pada kamera ini." + }, + "review": { + "title": "Tinjauan", + "desc": "Aktifkan/nonaktifkan sementara alert dan deteksi untuk kamera ini hingga Frigate dimulai ulang. Saat dinonaktifkan, tidak ada item tinjauan baru yang akan dibuat. ", + "alerts": "Alert ", + "detections": "Deteksi " + }, + "reviewClassification": { + "title": "Klasifikasi Tinjauan", + "desc": "Frigate mengategorikan item tinjauan sebagai Alert dan Deteksi. Secara default, semua objek person dan car dianggap sebagai Alert. Anda dapat menyempurnakan kategorisasi item tinjauan Anda dengan mengonfigurasi zona yang diwajibkan untuk item tersebut.", + "noDefinedZones": "Tidak ada zona yang didefinisikan untuk kamera ini.", + "objectAlertsTips": "Semua objek {{alertsLabels}} pada {{cameraName}} akan ditampilkan sebagai Alert.", + "zoneObjectAlertsTips": "Semua objek {{alertsLabels}} yang terdeteksi di {{zone}} pada {{cameraName}} akan ditampilkan sebagai Alert.", + "objectDetectionsTips": "Semua objek {{detectionsLabels}} yang tidak dikategorikan pada {{cameraName}} akan ditampilkan sebagai Deteksi, terlepas dari zona mana mereka berada.", + "zoneObjectDetectionsTips": { + "text": "Semua objek {{detectionsLabels}} yang tidak dikategorikan di {{zone}} pada {{cameraName}} akan ditampilkan sebagai Deteksi.", + "notSelectDetections": "Semua objek {{detectionsLabels}} yang terdeteksi di {{zone}} pada {{cameraName}} dan tidak dikategorikan sebagai Alert akan ditampilkan sebagai Deteksi, terlepas dari zona mana mereka berada.", + "regardlessOfZoneObjectDetectionsTips": "Semua objek {{detectionsLabels}} yang tidak dikategorikan pada {{cameraName}} akan ditampilkan sebagai Deteksi, terlepas dari zona mana mereka berada." + }, + "unsavedChanges": "Pengaturan Klasifikasi Tinjauan yang belum disimpan untuk {{camera}}", + "selectAlertsZones": "Pilih zona untuk Alert", + "selectDetectionsZones": "Pilih zona untuk Deteksi", + "limitDetections": "Batasi deteksi ke zona tertentu", + "toast": { + "success": "Konfigurasi Klasifikasi Tinjauan telah disimpan. Mulai ulang Frigate untuk menerapkan perubahan." + } + } + }, + "masksAndZones": { + "filter": { + "all": "Semua Masker dan Zona" + }, + "restart_required": "Perlu mulai ulang (masker/zona berubah)", + "disabledInConfig": "Item dinonaktifkan dalam file konfigurasi", + "addDisabledProfile": "Tambahkan ke konfigurasi dasar terlebih dahulu, lalu timpa di profil", + "profileBase": "(dasar)", + "profileOverride": "(timpa)", + "toast": { + "success": { + "copyCoordinates": "Koordinat untuk {{polyName}} telah disalin ke clipboard." + }, + "error": { + "copyCoordinatesFailed": "Tidak dapat menyalin koordinat ke clipboard." + } + }, + "motionMaskLabel": "Masker Gerakan {{number}}", + "objectMaskLabel": "Masker Objek {{number}}", + "form": { + "id": { + "error": { + "mustNotBeEmpty": "ID tidak boleh kosong.", + "alreadyExists": "Masker dengan ID ini sudah ada untuk kamera ini." + } + }, + "name": { + "error": { + "mustNotBeEmpty": "Nama tidak boleh kosong." + } + }, + "zoneName": { + "error": { + "mustBeAtLeastTwoCharacters": "Nama zona harus minimal 2 karakter.", + "mustNotBeSameWithCamera": "Nama zona tidak boleh sama dengan nama kamera.", + "alreadyExists": "Zona dengan nama ini sudah ada untuk kamera ini.", + "mustNotContainPeriod": "Nama zona tidak boleh mengandung titik.", + "hasIllegalCharacter": "Nama zona mengandung karakter yang tidak valid.", + "mustHaveAtLeastOneLetter": "Nama zona harus memiliki setidaknya satu huruf." + } + }, + "distance": { + "error": { + "text": "Jarak harus lebih besar dari atau sama dengan 0.1.", + "mustBeFilled": "Semua field jarak harus diisi untuk menggunakan estimasi kecepatan." + } + }, + "inertia": { + "error": { + "mustBeAboveZero": "Inersia harus lebih besar dari 0." + } + }, + "loiteringTime": { + "error": { + "mustBeGreaterOrEqualZero": "Waktu loitering harus lebih besar dari atau sama dengan 0." + } + }, + "speed": { + "error": { + "mustBeGreaterOrEqualTo": "Ambang kecepatan harus lebih besar dari atau sama dengan 0.1." + } + }, + "polygonDrawing": { + "type": { + "zone": "zona", + "motion_mask": "masker gerakan", + "object_mask": "masker objek" + }, + "removeLastPoint": "Hapus titik terakhir", + "reset": { + "label": "Hapus semua titik" + }, + "snapPoints": { + "true": "Kaitkan titik", + "false": "Jangan kaitkan titik" + }, + "delete": { + "title": "Konfirmasi Hapus", + "desc": "Apakah Anda yakin ingin menghapus {{type}} {{name}}?", + "success": "{{name}} telah dihapus." + }, + "revertOverride": { + "title": "Kembalikan ke Konfigurasi Dasar", + "desc": "Ini akan menghapus penimpaan profil untuk {{type}} {{name}} dan mengembalikannya ke konfigurasi dasar." + }, + "error": { + "mustBeFinished": "Gambar poligon harus diselesaikan sebelum menyimpan." + } + } + }, + "zones": { + "label": "Zona", + "documentTitle": "Edit Zona - Frigate", + "desc": { + "title": "Zona memungkinkan Anda menentukan area tertentu pada frame sehingga Anda dapat menentukan apakah suatu objek berada di dalam area tertentu atau tidak.", + "documentation": "Dokumentasi" + }, + "add": "Tambah Zona", + "edit": "Edit Zona", + "point_other": "{{count}} titik", + "clickDrawPolygon": "Klik untuk menggambar poligon pada gambar.", + "name": { + "title": "Nama", + "inputPlaceHolder": "Masukkan nama…", + "tips": "Nama harus minimal 2 karakter, harus memiliki setidaknya satu huruf, dan tidak boleh sama dengan nama kamera atau zona lain pada kamera ini." + }, + "enabled": { + "title": "Diaktifkan", + "description": "Menentukan apakah zona ini aktif dan diaktifkan dalam file konfigurasi. Jika dinonaktifkan, zona ini tidak dapat diaktifkan melalui MQTT. Zona yang dinonaktifkan diabaikan saat runtime." + }, + "inertia": { + "title": "Inersia", + "desc": "Menentukan berapa banyak frame suatu objek harus berada di dalam zona sebelum dianggap berada di zona tersebut. Default: 3" + }, + "loiteringTime": { + "title": "Waktu Loitering", + "desc": "Menetapkan jumlah waktu minimum dalam detik yang harus dilalui objek di dalam zona agar zona aktif. Default: 0" + }, + "objects": { + "title": "Objek", + "desc": "Daftar objek yang berlaku untuk zona ini." + }, + "allObjects": "Semua Objek", + "speedEstimation": { + "title": "Estimasi Kecepatan", + "desc": "Aktifkan estimasi kecepatan untuk objek di zona ini. Zona harus memiliki tepat 4 titik.", + "lineADistance": "Jarak garis A ({{unit}})", + "lineBDistance": "Jarak garis B ({{unit}})", + "lineCDistance": "Jarak garis C ({{unit}})", + "lineDDistance": "Jarak garis D ({{unit}})" + }, + "speedThreshold": { + "title": "Ambang Kecepatan ({{unit}})", + "desc": "Menentukan kecepatan minimum agar objek dianggap berada di zona ini.", + "toast": { + "error": { + "pointLengthError": "Estimasi kecepatan telah dinonaktifkan untuk zona ini. Zona dengan estimasi kecepatan harus memiliki tepat 4 titik.", + "loiteringTimeError": "Zona dengan waktu loitering lebih besar dari 0 sebaiknya tidak digunakan dengan estimasi kecepatan." + } + } + }, + "toast": { + "success": "Zona ({{zoneName}}) telah disimpan." + } + }, + "motionMasks": { + "label": "Masker Gerakan", + "documentTitle": "Edit Masker Gerakan - Frigate", + "desc": { + "title": "Masker gerakan digunakan untuk mencegah jenis gerakan yang tidak diinginkan memicu deteksi. Masking yang berlebihan akan membuat objek lebih sulit dilacak.", + "documentation": "Dokumentasi" + }, + "add": "Masker Gerakan Baru", + "edit": "Edit Masker Gerakan", + "defaultName": "Masker Gerakan {{number}}", + "context": { + "title": "Masker gerakan digunakan untuk mencegah jenis gerakan yang tidak diinginkan memicu deteksi (contoh: ranting pohon, stempel waktu kamera). Masker gerakan harus digunakan dengan sangat hemat, masking yang berlebihan akan membuat objek lebih sulit dilacak." + }, + "point_other": "{{count}} titik", + "clickDrawPolygon": "Klik untuk menggambar poligon pada gambar.", + "name": { + "title": "Nama", + "description": "Nama ramah opsional untuk masker gerakan ini.", + "placeholder": "Masukkan nama..." + }, + "polygonAreaTooLarge": { + "title": "Masker gerakan menutupi {{polygonArea}}% dari frame kamera. Masker gerakan besar tidak direkomendasikan.", + "tips": "Masker gerakan tidak mencegah objek terdeteksi. Anda sebaiknya menggunakan zona wajib sebagai gantinya." + }, + "toast": { + "success": { + "title": "{{polygonName}} telah disimpan.", + "noName": "Masker Gerakan telah disimpan." + } + } + }, + "objectMasks": { + "label": "Masker Objek", + "documentTitle": "Edit Masker Objek - Frigate", + "desc": { + "title": "Masker filter objek digunakan untuk menyaring positif palsu untuk tipe objek tertentu berdasarkan lokasi.", + "documentation": "Dokumentasi" + }, + "add": "Tambah Masker Objek", + "edit": "Edit Masker Objek", + "context": "Masker filter objek digunakan untuk menyaring positif palsu untuk tipe objek tertentu berdasarkan lokasi.", + "point_other": "{{count}} titik", + "clickDrawPolygon": "Klik untuk menggambar poligon pada gambar.", + "name": { + "title": "Nama", + "description": "Nama ramah opsional untuk masker objek ini.", + "placeholder": "Masukkan nama..." + }, + "objects": { + "title": "Objek", + "desc": "Tipe objek yang berlaku untuk masker objek ini.", + "allObjectTypes": "Semua tipe objek" + }, + "toast": { + "success": { + "title": "{{polygonName}} telah disimpan.", + "noName": "Masker Objek telah disimpan." + } + } + }, + "masks": { + "enabled": { + "title": "Diaktifkan", + "description": "Menentukan apakah masker ini diaktifkan dalam file konfigurasi. Jika dinonaktifkan, masker ini tidak dapat diaktifkan melalui MQTT. Masker yang dinonaktifkan diabaikan saat runtime." + } + } + }, + "motionDetectionTuner": { + "title": "Penyetel Deteksi Gerakan", + "unsavedChanges": "Perubahan Penyetel Gerakan yang belum disimpan ({{camera}})", + "desc": { + "title": "Frigate menggunakan deteksi gerakan sebagai pemeriksaan awal untuk melihat apakah ada sesuatu yang terjadi dalam frame yang layak diperiksa dengan deteksi objek.", + "documentation": "Baca Panduan Penyetelan Gerakan" + }, + "Threshold": { + "title": "Ambang", + "desc": "Nilai ambang menentukan seberapa besar perubahan luminansi piksel yang diperlukan agar dianggap sebagai gerakan. Default: 30" + }, + "contourArea": { + "title": "Area Kontur", + "desc": "Nilai area kontur digunakan untuk menentukan kelompok piksel yang berubah mana yang memenuhi syarat sebagai gerakan. Default: 10" + }, + "improveContrast": { + "title": "Tingkatkan Kontras", + "desc": "Tingkatkan kontras untuk adegan yang lebih gelap. Default: ON" + }, + "toast": { + "success": "Pengaturan gerakan telah disimpan." + } + }, + "debug": { + "title": "Debug", + "detectorDesc": "Frigate menggunakan detektor Anda ({{detectors}}) untuk mendeteksi objek di stream video kamera Anda.", + "desc": "Tampilan debug menunjukkan tampilan real-time objek yang dilacak dan statistiknya. Daftar objek menampilkan ringkasan objek yang terdeteksi dengan sedikit jeda waktu.", + "openCameraWebUI": "Buka UI Web milik {{camera}}", + "debugging": "Debugging", + "objectList": "Daftar Objek", + "noObjects": "Tidak ada objek", + "audio": { + "title": "Audio", + "noAudioDetections": "Tidak ada deteksi audio", + "score": "skor", + "currentRMS": "RMS Saat Ini", + "currentdbFS": "dbFS Saat Ini" + }, + "boundingBoxes": { + "title": "Kotak pembatas", + "desc": "Tampilkan kotak pembatas di sekitar objek yang dilacak", + "colors": { + "label": "Warna Kotak Pembatas Objek", + "info": "
  • Saat startup, warna berbeda akan ditetapkan untuk setiap label objek
  • Garis tipis biru tua menunjukkan bahwa objek tersebut tidak terdeteksi pada titik waktu saat ini
  • Garis tipis abu-abu menunjukkan bahwa objek tersebut terdeteksi sebagai diam
  • Garis tebal menunjukkan bahwa objek tersebut menjadi subjek pelacakan otomatis (jika diaktifkan)
  • " + } + }, + "timestamp": { + "title": "Stempel waktu", + "desc": "Hamparkan stempel waktu pada gambar" + }, + "zones": { + "title": "Zona", + "desc": "Tampilkan garis luar dari zona yang telah didefinisikan" + }, + "mask": { + "title": "Masker gerakan", + "desc": "Tampilkan poligon masker gerakan" + }, + "motion": { + "title": "Kotak gerakan", + "desc": "Tampilkan kotak di sekitar area tempat gerakan terdeteksi", + "tips": "

    Kotak Gerakan


    Kotak merah akan dihamparkan pada area frame tempat gerakan saat ini terdeteksi

    " + }, + "regions": { + "title": "Wilayah", + "desc": "Tampilkan kotak wilayah minat yang dikirim ke detektor objek", + "tips": "

    Kotak Wilayah


    Kotak hijau terang akan dihamparkan pada area minat di frame yang sedang dikirim ke detektor objek.

    " + }, + "paths": { + "title": "Jalur", + "desc": "Tampilkan titik-titik penting dari jalur objek yang dilacak", + "tips": "

    Jalur


    Garis dan lingkaran akan menunjukkan titik-titik penting yang telah dilalui objek yang dilacak selama siklus hidupnya.

    " + }, + "objectShapeFilterDrawing": { + "title": "Gambar Filter Bentuk Objek", + "desc": "Gambar persegi panjang pada gambar untuk melihat detail area dan rasio", + "tips": "Aktifkan opsi ini untuk menggambar persegi panjang pada gambar kamera guna menampilkan area dan rasionya. Nilai-nilai ini kemudian dapat digunakan untuk menetapkan parameter filter bentuk objek dalam konfigurasi Anda.", + "score": "Skor", + "ratio": "Rasio", + "area": "Area" + } + }, + "timestampPosition": { + "tl": "Kiri atas", + "tr": "Kanan atas", + "bl": "Kiri bawah", + "br": "Kanan bawah" + }, + "users": { + "title": "Pengguna", + "management": { + "title": "Manajemen Pengguna", + "desc": "Kelola akun pengguna untuk instance Frigate ini." + }, + "addUser": "Tambah Pengguna", + "updatePassword": "Atur Ulang Kata Sandi", + "toast": { + "success": { + "createUser": "Pengguna {{user}} berhasil dibuat", + "deleteUser": "Pengguna {{user}} berhasil dihapus", + "updatePassword": "Kata sandi berhasil diperbarui.", + "roleUpdated": "Peran untuk {{user}} diperbarui" + }, + "error": { + "setPasswordFailed": "Gagal menyimpan kata sandi: {{errorMessage}}", + "createUserFailed": "Gagal membuat pengguna: {{errorMessage}}", + "deleteUserFailed": "Gagal menghapus pengguna: {{errorMessage}}", + "roleUpdateFailed": "Gagal memperbarui peran: {{errorMessage}}" + } + }, + "table": { + "username": "Nama pengguna", + "actions": "Tindakan", + "role": "Peran", + "noUsers": "Tidak ada pengguna ditemukan.", + "changeRole": "Ubah peran pengguna", + "password": "Atur Ulang Kata Sandi", + "deleteUser": "Hapus pengguna" + }, + "dialog": { + "form": { + "user": { + "title": "Nama pengguna", + "desc": "Hanya huruf, angka, titik, dan garis bawah yang diizinkan.", + "placeholder": "Masukkan nama pengguna" + }, + "password": { + "title": "Kata sandi", + "placeholder": "Masukkan kata sandi", + "show": "Tampilkan kata sandi", + "hide": "Sembunyikan kata sandi", + "confirm": { + "title": "Konfirmasi Kata Sandi", + "placeholder": "Konfirmasi Kata Sandi" + }, + "strength": { + "title": "Kekuatan kata sandi: ", + "weak": "Lemah", + "medium": "Sedang", + "strong": "Kuat", + "veryStrong": "Sangat Kuat" + }, + "requirements": { + "title": "Persyaratan kata sandi:", + "length": "Setidaknya 12 karakter" + }, + "match": "Kata sandi cocok", + "notMatch": "Kata sandi tidak cocok" + }, + "newPassword": { + "title": "Kata Sandi Baru", + "placeholder": "Masukkan kata sandi baru", + "confirm": { + "placeholder": "Masukkan ulang kata sandi baru" + } + }, + "currentPassword": { + "title": "Kata Sandi Saat Ini", + "placeholder": "Masukkan kata sandi Anda saat ini" + }, + "usernameIsRequired": "Nama pengguna wajib diisi", + "passwordIsRequired": "Kata sandi wajib diisi" + }, + "createUser": { + "title": "Buat Pengguna Baru", + "desc": "Tambahkan akun pengguna baru dan tentukan perannya untuk akses ke area UI Frigate.", + "usernameOnlyInclude": "Nama pengguna hanya boleh berisi huruf, angka, . atau _", + "confirmPassword": "Harap konfirmasi kata sandi Anda" + }, + "deleteUser": { + "title": "Hapus Pengguna", + "desc": "Tindakan ini tidak dapat dibatalkan. Ini akan menghapus akun pengguna secara permanen dan menghapus semua data terkait.", + "warn": "Apakah Anda yakin ingin menghapus {{username}}?" + }, + "passwordSetting": { + "cannotBeEmpty": "Kata sandi tidak boleh kosong", + "doNotMatch": "Kata sandi tidak cocok", + "currentPasswordRequired": "Kata sandi saat ini wajib diisi", + "incorrectCurrentPassword": "Kata sandi saat ini salah", + "passwordVerificationFailed": "Gagal memverifikasi kata sandi", + "updatePassword": "Perbarui Kata Sandi untuk {{username}}", + "setPassword": "Tetapkan Kata Sandi", + "desc": "Buat kata sandi yang kuat untuk mengamankan akun ini.", + "multiDeviceWarning": "Perangkat lain tempat Anda masuk juga akan diminta login ulang dalam {{refresh_time}}.", + "multiDeviceAdmin": "Anda juga dapat memaksa semua pengguna untuk segera mengautentikasi ulang dengan memutar rahasia JWT Anda." + }, + "changeRole": { + "title": "Ubah Peran Pengguna", + "select": "Pilih peran", + "desc": "Perbarui izin untuk {{username}}", + "roleInfo": { + "intro": "Pilih peran yang sesuai untuk pengguna ini:", + "admin": "Admin", + "adminDesc": "Akses penuh ke semua fitur.", + "viewer": "Viewer", + "viewerDesc": "Terbatas hanya pada dasbor Langsung, Tinjauan, Jelajahi, dan Ekspor.", + "customDesc": "Peran kustom dengan akses kamera tertentu." + } + } + } + }, + "roles": { + "management": { + "title": "Manajemen Peran Viewer", + "desc": "Kelola peran viewer kustom dan izin akses kameranya untuk instance Frigate ini." + }, + "addRole": "Tambah Peran", + "table": { + "role": "Peran", + "cameras": "Kamera", + "actions": "Tindakan", + "noRoles": "Tidak ada peran kustom ditemukan.", + "editCameras": "Edit Kamera", + "deleteRole": "Hapus Peran" + }, + "toast": { + "success": { + "createRole": "Peran {{role}} berhasil dibuat", + "updateCameras": "Kamera untuk peran {{role}} telah diperbarui", + "deleteRole": "Peran {{role}} berhasil dihapus", + "userRolesUpdated_other": "{{count}} pengguna yang ditetapkan ke peran ini telah diperbarui menjadi 'viewer', yang memiliki akses ke semua kamera." + }, + "error": { + "createRoleFailed": "Gagal membuat peran: {{errorMessage}}", + "updateCamerasFailed": "Gagal memperbarui kamera: {{errorMessage}}", + "deleteRoleFailed": "Gagal menghapus peran: {{errorMessage}}", + "userUpdateFailed": "Gagal memperbarui peran pengguna: {{errorMessage}}" + } + }, + "dialog": { + "createRole": { + "title": "Buat Peran Baru", + "desc": "Tambahkan peran baru dan tentukan izin akses kamera." + }, + "editCameras": { + "title": "Edit Kamera Peran", + "desc": "Perbarui akses kamera untuk peran {{role}}." + }, + "deleteRole": { + "title": "Hapus Peran", + "desc": "Tindakan ini tidak dapat dibatalkan. Ini akan menghapus peran secara permanen dan menetapkan pengguna mana pun dengan peran ini ke peran 'viewer', yang akan memberikan akses viewer ke semua kamera.", + "warn": "Apakah Anda yakin ingin menghapus {{role}}?", + "deleting": "Sedang menghapus..." + }, + "form": { + "role": { + "title": "Nama Peran", + "placeholder": "Masukkan nama peran", + "desc": "Hanya huruf, angka, titik, dan garis bawah yang diizinkan.", + "roleIsRequired": "Nama peran wajib diisi", + "roleOnlyInclude": "Nama peran hanya boleh berisi huruf, angka, . atau _", + "roleExists": "Peran dengan nama ini sudah ada." + }, + "cameras": { + "title": "Kamera", + "desc": "Pilih kamera yang dapat diakses oleh peran ini. Setidaknya satu kamera wajib dipilih.", + "required": "Setidaknya satu kamera harus dipilih." + } + } + } + }, + "notification": { + "title": "Notifikasi", + "notificationSettings": { + "title": "Pengaturan Notifikasi", + "desc": "Frigate dapat secara native mengirim notifikasi push ke perangkat Anda saat berjalan di browser atau diinstal sebagai PWA." + }, + "notificationUnavailable": { + "title": "Notifikasi Tidak Tersedia", + "desc": "Notifikasi push web memerlukan konteks aman (https://…). Ini adalah batasan browser. Akses Frigate secara aman untuk menggunakan notifikasi." + }, + "globalSettings": { + "title": "Pengaturan Global", + "desc": "Tangguhkan notifikasi sementara untuk kamera tertentu pada semua perangkat yang terdaftar." + }, + "email": { + "title": "Email", + "placeholder": "mis. contoh@email.com", + "desc": "Email yang valid wajib diisi dan akan digunakan untuk memberi tahu Anda jika ada masalah dengan layanan push." + }, + "cameras": { + "title": "Kamera", + "noCameras": "Tidak ada kamera tersedia", + "desc": "Pilih kamera mana yang akan diaktifkan notifikasinya." + }, + "deviceSpecific": "Pengaturan Khusus Perangkat", + "registerDevice": "Daftarkan Perangkat Ini", + "unregisterDevice": "Batalkan Pendaftaran Perangkat Ini", + "sendTestNotification": "Kirim notifikasi uji", + "unsavedRegistrations": "Pendaftaran Notifikasi yang belum disimpan", + "unsavedChanges": "Perubahan Notifikasi yang belum disimpan", + "active": "Notifikasi Aktif", + "suspended": "Notifikasi ditangguhkan {{time}}", + "suspendTime": { + "suspend": "Tangguhkan", + "5minutes": "Tangguhkan selama 5 menit", + "10minutes": "Tangguhkan selama 10 menit", + "30minutes": "Tangguhkan selama 30 menit", + "1hour": "Tangguhkan selama 1 jam", + "12hours": "Tangguhkan selama 12 jam", + "24hours": "Tangguhkan selama 24 jam", + "untilRestart": "Tangguhkan hingga dimulai ulang" + }, + "cancelSuspension": "Batalkan Penangguhan", + "toast": { + "success": { + "registered": "Berhasil terdaftar untuk notifikasi. Mulai ulang Frigate diperlukan sebelum notifikasi apa pun (termasuk notifikasi uji) dapat dikirim.", + "settingSaved": "Pengaturan notifikasi telah disimpan." + }, + "error": { + "registerFailed": "Gagal menyimpan pendaftaran notifikasi." + } + } + }, + "frigatePlus": { + "title": "Pengaturan Frigate+", + "description": "Frigate+ adalah layanan berlangganan yang menyediakan akses ke fitur dan kemampuan tambahan untuk instance Frigate Anda, termasuk kemampuan menggunakan model deteksi objek kustom yang dilatih dengan data Anda sendiri. Anda dapat mengelola pengaturan model Frigate+ Anda di sini.", + "cardTitles": { + "api": "API", + "currentModel": "Model Saat Ini", + "otherModels": "Model Lainnya", + "configuration": "Konfigurasi" + }, + "apiKey": { + "title": "Kunci API Frigate+", + "validated": "Kunci API Frigate+ terdeteksi dan tervalidasi", + "notValidated": "Kunci API Frigate+ tidak terdeteksi atau tidak tervalidasi", + "desc": "Kunci API Frigate+ memungkinkan integrasi dengan layanan Frigate+.", + "plusLink": "Baca lebih lanjut tentang Frigate+" + }, + "snapshotConfig": { + "title": "Konfigurasi Cuplikan", + "desc": "Mengirim ke Frigate+ mengharuskan cuplikan diaktifkan dalam konfigurasi Anda.", + "cleanCopyWarning": "Beberapa kamera menonaktifkan cuplikan", + "table": { + "camera": "Kamera", + "snapshots": "Cuplikan" + } + }, + "modelInfo": { + "title": "Informasi Model", + "modelType": "Tipe Model", + "trainDate": "Tanggal Pelatihan", + "baseModel": "Model Dasar", + "plusModelType": { + "baseModel": "Model Dasar", + "userModel": "Disetel Halus" + }, + "supportedDetectors": "Detektor yang Didukung", + "cameras": "Kamera", + "loading": "Memuat informasi model…", + "error": "Gagal memuat informasi model", + "noModelLoaded": "Saat ini tidak ada model Frigate+ yang dimuat.", + "availableModels": "Model Frigate+ yang tersedia", + "loadingAvailableModels": "Memuat model yang tersedia…", + "selectModel": "Pilih model", + "noModelsAvailable": "Tidak ada model tersedia", + "filter": { + "ariaLabel": "Filter model berdasarkan tipe", + "baseModels": "Model Dasar", + "fineTunedModels": "Model yang Disetel Halus" + }, + "modelSelect": "Model Frigate+ Anda yang tersedia dapat dipilih di sini. Perlu dicatat bahwa hanya model yang kompatibel dengan konfigurasi detektor Anda saat ini yang dapat dipilih." + }, + "changeInDetectorsAndModel": "Ubah model", + "unsavedChanges": "Perubahan pengaturan Frigate+ yang belum disimpan", + "restart_required": "Perlu mulai ulang (model Frigate+ berubah)", + "toast": { + "success": "Pengaturan Frigate+ telah disimpan. Mulai ulang Frigate untuk menerapkan perubahan.", + "error": "Gagal menyimpan perubahan konfigurasi: {{errorMessage}}" + } + }, + "detectorsAndModel": { + "title": "Detektor dan model", + "description": "Konfigurasikan backend detektor yang menjalankan deteksi objek dan model yang digunakannya. Perubahan disimpan bersama agar detektor dan model tetap sinkron.", + "cardTitles": { + "detector": "Perangkat Keras Detektor", + "model": "Model Deteksi" + }, + "tabs": { + "plus": "Frigate+", + "custom": "Model Kustom" + }, + "mismatch": { + "warning": "Model Frigate+ saat ini \"{{model}}\" memerlukan detektor {{required}}. Pilih model yang kompatibel di bawah atau beralih ke Model Kustom sebelum menyimpan." + }, + "plusModel": { + "requiresDetector": "Memerlukan: {{detector}}", + "noModelSelected": "Pilih model Frigate+" + }, + "toast": { + "saveSuccess": "Pengaturan detektor dan model telah disimpan. Mulai ulang Frigate untuk menerapkan perubahan.", + "saveError": "Gagal menyimpan pengaturan detektor dan model" + }, + "unsavedChanges": "Perubahan detektor dan model yang belum disimpan", + "restartRequired": "Perlu mulai ulang (detektor atau model berubah)" + }, + "triggers": { + "documentTitle": "Pemicu", + "semanticSearch": { + "title": "Pencarian Semantik dinonaktifkan", + "desc": "Pencarian Semantik harus diaktifkan untuk menggunakan Pemicu." + }, + "management": { + "title": "Pemicu", + "desc": "Kelola pemicu untuk {{camera}}. Gunakan tipe thumbnail untuk memicu pada thumbnail yang mirip dengan objek terlacak yang Anda pilih, dan tipe deskripsi untuk memicu pada deskripsi yang mirip dengan teks yang Anda tentukan." + }, + "addTrigger": "Tambah Pemicu", + "table": { + "name": "Nama", + "type": "Tipe", + "content": "Konten", + "threshold": "Ambang", + "actions": "Tindakan", + "noTriggers": "Tidak ada pemicu yang dikonfigurasi untuk kamera ini.", + "edit": "Edit", + "deleteTrigger": "Hapus Pemicu", + "lastTriggered": "Terakhir dipicu" + }, + "type": { + "thumbnail": "Thumbnail", + "description": "Deskripsi" + }, + "actions": { + "notification": "Kirim Notifikasi", + "sub_label": "Tambahkan Sub Label", + "attribute": "Tambahkan Atribut" + }, + "dialog": { + "createTrigger": { + "title": "Buat Pemicu", + "desc": "Buat pemicu untuk kamera {{camera}}" + }, + "editTrigger": { + "title": "Edit Pemicu", + "desc": "Edit pengaturan pemicu pada kamera {{camera}}" + }, + "deleteTrigger": { + "title": "Hapus Pemicu", + "desc": "Apakah Anda yakin ingin menghapus pemicu {{triggerName}}? Tindakan ini tidak dapat dibatalkan." + }, + "form": { + "name": { + "title": "Nama", + "placeholder": "Beri nama pemicu ini", + "description": "Masukkan nama atau deskripsi unik untuk mengidentifikasi pemicu ini", + "error": { + "minLength": "Bidang harus memiliki panjang minimal 2 karakter.", + "invalidCharacters": "Bidang hanya boleh berisi huruf, angka, garis bawah, dan tanda hubung.", + "alreadyExists": "Pemicu dengan nama ini sudah ada untuk kamera ini." + } + }, + "enabled": { + "description": "Aktifkan atau nonaktifkan pemicu ini" + }, + "type": { + "title": "Tipe", + "placeholder": "Pilih tipe pemicu", + "description": "Picu saat deskripsi objek terlacak yang serupa terdeteksi", + "thumbnail": "Picu saat thumbnail objek terlacak yang serupa terdeteksi" + }, + "content": { + "title": "Konten", + "imagePlaceholder": "Pilih thumbnail", + "textPlaceholder": "Masukkan konten teks", + "imageDesc": "Hanya 100 thumbnail terbaru yang ditampilkan. Jika Anda tidak dapat menemukan thumbnail yang diinginkan, silakan tinjau objek sebelumnya di Jelajahi dan atur pemicu dari menu di sana.", + "textDesc": "Masukkan teks untuk memicu tindakan ini saat deskripsi objek terlacak yang serupa terdeteksi.", + "error": { + "required": "Konten wajib diisi." + } + }, + "threshold": { + "title": "Ambang", + "desc": "Tetapkan ambang kemiripan untuk pemicu ini. Ambang yang lebih tinggi berarti kecocokan yang lebih dekat diperlukan agar pemicu dijalankan.", + "error": { + "min": "Ambang harus minimal 0", + "max": "Ambang harus maksimal 1" + } + }, + "actions": { + "title": "Tindakan", + "desc": "Secara default, Frigate mengirim pesan MQTT untuk semua pemicu. Sub label menambahkan nama pemicu ke label objek. Atribut adalah metadata yang dapat dicari dan disimpan secara terpisah dalam metadata objek terlacak.", + "error": { + "min": "Setidaknya satu tindakan harus dipilih." + } + } + } + }, + "wizard": { + "title": "Buat Pemicu", + "step1": { + "description": "Konfigurasikan pengaturan dasar untuk pemicu Anda." + }, + "step2": { + "description": "Atur konten yang akan memicu tindakan ini." + }, + "step3": { + "description": "Konfigurasikan ambang dan tindakan untuk pemicu ini." + }, + "steps": { + "nameAndType": "Nama dan Tipe", + "configureData": "Konfigurasikan Data", + "thresholdAndActions": "Ambang dan Tindakan" + } + }, + "toast": { + "success": { + "createTrigger": "Pemicu {{name}} berhasil dibuat.", + "updateTrigger": "Pemicu {{name}} berhasil diperbarui.", + "deleteTrigger": "Pemicu {{name}} berhasil dihapus." + }, + "error": { + "createTriggerFailed": "Gagal membuat pemicu: {{errorMessage}}", + "updateTriggerFailed": "Gagal memperbarui pemicu: {{errorMessage}}", + "deleteTriggerFailed": "Gagal menghapus pemicu: {{errorMessage}}" + } + } + }, + "maintenance": { + "title": "Pemeliharaan", + "sync": { + "title": "Sinkronisasi Media", + "desc": "Frigate akan secara berkala membersihkan media sesuai jadwal reguler berdasarkan konfigurasi retensi Anda. Wajar jika ada beberapa file yatim piatu saat Frigate berjalan. Gunakan fitur ini untuk menghapus file media yatim piatu dari disk yang tidak lagi direferensikan dalam basis data.", + "started": "Sinkronisasi media dimulai.", + "alreadyRunning": "Pekerjaan sinkronisasi sudah sedang berjalan", + "error": "Gagal memulai sinkronisasi", + "currentStatus": "Status", + "jobId": "ID Pekerjaan", + "startTime": "Waktu Mulai", + "endTime": "Waktu Selesai", + "statusLabel": "Status", + "results": "Hasil", + "errorLabel": "Kesalahan", + "mediaTypes": "Tipe Media", + "allMedia": "Semua Media", + "dryRun": "Dry Run", + "dryRunEnabled": "Tidak ada file yang akan dihapus", + "dryRunDisabled": "File akan dihapus", + "force": "Paksa", + "forceDesc": "Lewati ambang keamanan dan selesaikan sinkronisasi meskipun lebih dari 50% file akan dihapus.", + "verbose": "Verbose", + "verboseDesc": "Tulis daftar lengkap file yatim piatu ke disk untuk ditinjau.", + "running": "Sinkronisasi Berjalan...", + "start": "Mulai Sinkronisasi", + "inProgress": "Sinkronisasi sedang berlangsung. Halaman ini dinonaktifkan.", + "status": { + "queued": "Dalam antrean", + "running": "Berjalan", + "completed": "Selesai", + "failed": "Gagal", + "notRunning": "Tidak Berjalan" + }, + "resultsFields": { + "filesChecked": "File Diperiksa", + "orphansFound": "File Yatim Piatu Ditemukan", + "orphansDeleted": "File Yatim Piatu Dihapus", + "aborted": "Dibatalkan. Penghapusan akan melebihi ambang keamanan.", + "error": "Kesalahan", + "totals": "Total" + }, + "event_snapshots": "Cuplikan Objek Terlacak", + "event_thumbnails": "Thumbnail Objek Terlacak", + "review_thumbnails": "Thumbnail Tinjauan", + "previews": "Pratinjau", + "exports": "Ekspor", + "recordings": "Rekaman" + }, + "regionGrid": { + "title": "Grid Wilayah", + "desc": "Grid wilayah adalah optimasi yang mempelajari di mana objek dengan ukuran berbeda biasanya muncul dalam bidang pandang tiap kamera. Frigate menggunakan data ini untuk menentukan ukuran wilayah deteksi secara efisien. Grid ini dibangun secara otomatis seiring waktu dari data objek terlacak.", + "clear": "Hapus grid wilayah", + "clearConfirmTitle": "Hapus Grid Wilayah", + "clearConfirmDesc": "Menghapus grid wilayah tidak direkomendasikan kecuali Anda baru-baru ini mengubah ukuran model detektor atau mengubah posisi fisik kamera dan mengalami masalah pelacakan objek. Grid akan dibangun ulang secara otomatis seiring waktu saat objek dilacak. Frigate perlu dimulai ulang agar perubahan diterapkan.", + "clearSuccess": "Grid wilayah berhasil dihapus", + "clearError": "Gagal menghapus grid wilayah", + "restartRequired": "Perlu mulai ulang agar perubahan grid wilayah diterapkan" + } + }, + "configForm": { + "global": { + "title": "Pengaturan Global", + "description": "Pengaturan ini berlaku untuk semua kamera kecuali ditimpa dalam pengaturan khusus kamera." + }, + "camera": { + "title": "Pengaturan Kamera", + "description": "Pengaturan ini hanya berlaku untuk kamera ini dan menimpa pengaturan global.", + "noCameras": "Tidak ada kamera tersedia" + }, + "advancedSettingsCount": "Pengaturan Lanjutan ({{count}})", + "advancedCount": "Lanjutan ({{count}})", + "showAdvanced": "Tampilkan Pengaturan Lanjutan", + "tabs": { + "sharedDefaults": "Default Bersama", + "system": "Sistem", + "integrations": "Integrasi" + }, + "additionalProperties": { + "keyLabel": "Kunci", + "valueLabel": "Nilai", + "keyPlaceholder": "Kunci baru", + "remove": "Hapus" + }, + "knownPlates": { + "namePlaceholder": "mis., Mobil Istri", + "platePlaceholder": "Nomor pelat atau regex" + }, + "timezone": { + "defaultOption": "Gunakan zona waktu browser" + }, + "roleMap": { + "empty": "Tidak ada pemetaan peran", + "roleLabel": "Peran", + "groupsLabel": "Grup", + "addMapping": "Tambah pemetaan peran", + "remove": "Hapus" + }, + "ffmpegArgs": { + "preset": "Preset", + "manual": "Argumen manual", + "inherit": "Warisi dari pengaturan kamera", + "none": "Tidak ada", + "useGlobalSetting": "Warisi dari pengaturan global", + "selectPreset": "Pilih preset", + "manualPlaceholder": "Masukkan argumen FFmpeg", + "presetLabels": { + "preset-rpi-64-h264": "Raspberry Pi (H.264)", + "preset-rpi-64-h265": "Raspberry Pi (H.265)", + "preset-vaapi": "VAAPI (GPU Intel/AMD)", + "preset-intel-qsv-h264": "Intel QuickSync (H.264)", + "preset-intel-qsv-h265": "Intel QuickSync (H.265)", + "preset-nvidia": "GPU NVIDIA", + "preset-jetson-h264": "NVIDIA Jetson (H.264)", + "preset-jetson-h265": "NVIDIA Jetson (H.265)", + "preset-rkmpp": "Rockchip RKMPP", + "preset-http-jpeg-generic": "HTTP JPEG (Generik)", + "preset-http-mjpeg-generic": "HTTP MJPEG (Generik)", + "preset-http-reolink": "HTTP - Kamera Reolink", + "preset-rtmp-generic": "RTMP (Generik)", + "preset-rtsp-generic": "RTSP (Generik)", + "preset-rtsp-restream": "RTSP - Restream dari go2rtc", + "preset-rtsp-restream-low-latency": "RTSP - Restream dari go2rtc (Latensi Rendah)", + "preset-rtsp-udp": "RTSP - UDP", + "preset-rtsp-blue-iris": "RTSP - Blue Iris", + "preset-record-generic": "Rekam (Generik, tanpa audio)", + "preset-record-generic-audio-copy": "Rekam (Generik + Salin Audio)", + "preset-record-generic-audio-aac": "Rekam (Generik + Audio ke AAC)", + "preset-record-mjpeg": "Rekam - Kamera MJPEG", + "preset-record-jpeg": "Rekam - Kamera JPEG", + "preset-record-ubiquiti": "Rekam - Kamera Ubiquiti" + } + }, + "cameraInputs": { + "itemTitle": "Stream {{index}}" + }, + "restartRequiredField": "Perlu mulai ulang", + "restartRequiredFooter": "Konfigurasi berubah - Perlu mulai ulang", + "sections": { + "detect": "Deteksi", + "record": "Perekaman", + "snapshots": "Cuplikan", + "motion": "Gerakan", + "objects": "Objek", + "review": "Tinjauan", + "audio": "Audio", + "notifications": "Notifikasi", + "live": "Tampilan Langsung", + "timestamp_style": "Stempel waktu", + "mqtt": "MQTT", + "database": "Basis data", + "telemetry": "Telemetri", + "auth": "Autentikasi", + "tls": "TLS", + "proxy": "Proksi", + "go2rtc": "go2rtc", + "ffmpeg": "FFmpeg", + "detectors": "Detektor", + "model": "Model", + "semantic_search": "Pencarian Semantik", + "genai": "GenAI", + "face_recognition": "Pengenalan Wajah", + "lpr": "Pengenalan Pelat Nomor", + "birdseye": "Birdseye", + "masksAndZones": "Masker / Zona" + }, + "detect": { + "title": "Pengaturan Deteksi" + }, + "detectors": { + "title": "Pengaturan Detektor", + "singleType": "Hanya satu detektor {{type}} yang diizinkan.", + "keyRequired": "Nama detektor wajib diisi.", + "keyDuplicate": "Nama detektor sudah ada.", + "noSchema": "Tidak ada skema detektor yang tersedia.", + "none": "Tidak ada instance detektor yang dikonfigurasi.", + "add": "Tambah detektor", + "addCustomKey": "Tambah kunci kustom" + }, + "record": { + "title": "Pengaturan Perekaman" + }, + "snapshots": { + "title": "Pengaturan Cuplikan" + }, + "motion": { + "title": "Pengaturan Gerakan" + }, + "objects": { + "title": "Pengaturan Objek" + }, + "audioLabels": { + "summary": "{{count}} label audio dipilih", + "empty": "Tidak ada label audio tersedia" + }, + "objectLabels": { + "summary": "{{count}} tipe objek dipilih", + "empty": "Tidak ada label objek tersedia" + }, + "reviewLabels": { + "summary": "{{count}} label dipilih", + "empty": "Tidak ada label tersedia" + }, + "filters": { + "objectFieldLabel": "{{field}} untuk {{label}}" + }, + "zoneNames": { + "summary": "{{count}} dipilih", + "empty": "Tidak ada zona tersedia" + }, + "inputRoles": { + "summary": "{{count}} peran dipilih", + "empty": "Tidak ada peran tersedia", + "options": { + "detect": "Deteksi", + "record": "Rekam", + "audio": "Audio" + } + }, + "genaiRoles": { + "options": { + "embeddings": "Embedding", + "descriptions": "Deskripsi", + "chat": "Chat" + } + }, + "semanticSearchModel": { + "placeholder": "Pilih model…", + "builtIn": "Model Bawaan", + "genaiProviders": "Penyedia GenAI" + }, + "review": { + "title": "Pengaturan Tinjauan" + }, + "audio": { + "title": "Pengaturan Audio" + }, + "notifications": { + "title": "Pengaturan Notifikasi" + }, + "live": { + "title": "Pengaturan Tampilan Langsung" + }, + "timestamp_style": { + "title": "Pengaturan Stempel Waktu" + }, + "searchPlaceholder": "Cari...", + "addCustomLabel": "Tambahkan label kustom...", + "genaiModel": { + "placeholder": "Pilih atau masukkan model…", + "search": "Cari atau masukkan model…", + "noModels": "Tidak ada model tersedia", + "available": "Model yang tersedia", + "useCustom": "Gunakan \"{{value}}\"", + "refresh": "Segarkan model", + "probeFailed": "Gagal memeriksa model", + "fetchedModels": "Berhasil mengambil daftar model" + } + }, + "globalConfig": { + "title": "Konfigurasi Global", + "description": "Konfigurasikan pengaturan global yang berlaku untuk semua kamera kecuali jika ditimpa.", + "toast": { + "success": "Pengaturan global berhasil disimpan", + "error": "Gagal menyimpan pengaturan global", + "validationError": "Validasi gagal" + } + }, + "cameraConfig": { + "title": "Konfigurasi Kamera", + "description": "Konfigurasikan pengaturan untuk masing-masing kamera. Pengaturan menimpa default global.", + "overriddenBadge": "Ditimpa", + "resetToGlobal": "Atur Ulang ke Global", + "toast": { + "success": "Pengaturan kamera berhasil disimpan", + "error": "Gagal menyimpan pengaturan kamera" + } + }, + "toast": { + "success": "Pengaturan berhasil disimpan", + "applied": "Pengaturan berhasil diterapkan", + "successRestartRequired": "Pengaturan berhasil disimpan. Mulai ulang Frigate untuk menerapkan perubahan Anda.", + "error": "Gagal menyimpan pengaturan", + "validationError": "Validasi gagal: {{message}}", + "resetSuccess": "Atur ulang ke default global", + "resetError": "Gagal mengatur ulang pengaturan", + "saveAllSuccess_other": "Semua {{count}} bagian berhasil disimpan.", + "saveAllSuccessRestartRequired_other": "Semua {{count}} bagian berhasil disimpan. Mulai ulang Frigate untuk menerapkan perubahan Anda.", + "saveAllPartial_other": "{{successCount}} dari {{totalCount}} bagian berhasil disimpan. {{failCount}} gagal.", + "saveAllFailure": "Gagal menyimpan semua bagian." + }, + "profiles": { + "title": "Profil", + "activeProfile": "Profil Aktif", + "noActiveProfile": "Tidak ada profil aktif", + "active": "Aktif", + "activated": "Profil '{{profile}}' diaktifkan", + "activateFailed": "Gagal menetapkan profil", + "deactivated": "Profil dinonaktifkan", + "noProfiles": "Tidak ada profil yang didefinisikan.", + "noOverrides": "Tidak ada penimpaan", + "cameraCount_other": "{{count}} kamera", + "columnCamera": "Kamera", + "columnOverrides": "Penimpaan Profil", + "baseConfig": "Konfigurasi Dasar", + "addProfile": "Tambah Profil", + "newProfile": "Profil Baru", + "profileNamePlaceholder": "mis., Armed, Away, Night Mode", + "friendlyNameLabel": "Nama Profil", + "profileIdLabel": "ID Profil", + "profileIdDescription": "Pengidentifikasi internal yang digunakan dalam konfigurasi dan otomatisasi", + "nameInvalid": "Hanya huruf kecil, angka, dan garis bawah yang diizinkan", + "nameDuplicate": "Profil dengan nama ini sudah ada", + "error": { + "mustBeAtLeastTwoCharacters": "Harus minimal 2 karakter", + "mustNotContainPeriod": "Tidak boleh mengandung titik", + "alreadyExists": "Profil dengan ID ini sudah ada" + }, + "renameProfile": "Ubah Nama Profil", + "renameSuccess": "Profil diubah namanya menjadi '{{profile}}'", + "deleteProfile": "Hapus Profil", + "deleteProfileConfirm": "Hapus profil \"{{profile}}\" dari semua kamera? Ini tidak dapat dibatalkan.", + "deleteSuccess": "Profil '{{profile}}' dihapus", + "createSuccess": "Profil '{{profile}}' dibuat", + "removeOverride": "Hapus Penimpaan Profil", + "deleteSection": "Hapus Penimpaan Bagian", + "deleteSectionConfirm": "Hapus penimpaan {{section}} untuk profil {{profile}} pada {{camera}}?", + "deleteSectionSuccess": "Penimpaan {{section}} untuk {{profile}} telah dihapus", + "enableSwitch": "Aktifkan Profil", + "enabledDescription": "Profil diaktifkan. Buat profil baru di bawah, buka bagian konfigurasi kamera untuk membuat perubahan, lalu simpan agar perubahan berlaku.", + "disabledDescription": "Profil memungkinkan Anda mendefinisikan kumpulan bernama dari penimpaan konfigurasi kamera (mis., armed, away, night) yang dapat diaktifkan sesuai kebutuhan." + }, + "unsavedChanges": "Anda memiliki perubahan yang belum disimpan", + "confirmReset": "Konfirmasi Atur Ulang", + "resetToDefaultDescription": "Ini akan mengatur ulang semua pengaturan di bagian ini ke nilai defaultnya. Tindakan ini tidak dapat dibatalkan.", + "resetToGlobalDescription": "Ini akan mengatur ulang pengaturan di bagian ini ke default global. Tindakan ini tidak dapat dibatalkan.", + "go2rtcStreams": { + "title": "Stream go2rtc", + "description": "Kelola konfigurasi stream go2rtc untuk restreaming kamera. Setiap stream memiliki nama dan satu atau lebih URL sumber.", + "addStream": "Tambah stream", + "addStreamDesc": "Masukkan nama untuk stream baru. Nama ini akan digunakan untuk merujuk stream dalam konfigurasi kamera Anda.", + "addUrl": "Tambah URL", + "streamNumber": "Stream {{index}}", + "streamName": "Nama stream", + "streamNamePlaceholder": "mis., front_door", + "streamUrlPlaceholder": "mis., rtsp://user:pass@192.168.1.100/stream", + "deleteStream": "Hapus stream", + "deleteStreamConfirm": "Apakah Anda yakin ingin menghapus stream \"{{streamName}}\"? Kamera yang merujuk stream ini mungkin berhenti berfungsi.", + "noStreams": "Tidak ada stream go2rtc yang dikonfigurasi. Tambahkan stream untuk memulai.", + "validation": { + "nameRequired": "Nama stream wajib diisi", + "nameDuplicate": "Stream dengan nama ini sudah ada", + "nameInvalid": "Nama stream hanya boleh berisi huruf, angka, garis bawah, dan tanda hubung", + "urlRequired": "Setidaknya satu URL wajib diisi" + }, + "renameStream": "Ubah nama stream", + "renameStreamDesc": "Masukkan nama baru untuk stream ini. Mengubah nama stream dapat merusak kamera atau stream lain yang merujuknya berdasarkan nama.", + "newStreamName": "Nama stream baru", + "ffmpeg": { + "useFfmpegModule": "Gunakan mode kompatibilitas (ffmpeg)", + "video": "Video", + "audio": "Audio", + "hardware": "Akselerasi perangkat keras", + "videoCopy": "Salin", + "videoH264": "Transkode ke H.264", + "videoH265": "Transkode ke H.265", + "videoExclude": "Kecualikan", + "audioCopy": "Salin", + "audioAac": "Transkode ke AAC", + "audioOpus": "Transkode ke Opus", + "audioPcmu": "Transkode ke PCM μ-law", + "audioPcma": "Transkode ke PCM A-law", + "audioPcm": "Transkode ke PCM", + "audioMp3": "Transkode ke MP3", + "audioExclude": "Kecualikan", + "hardwareNone": "Tanpa akselerasi perangkat keras", + "hardwareAuto": "Otomatis (direkomendasikan)", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "Tambah codec video", + "addAudioCodec": "Tambah codec audio", + "removeCodec": "Hapus codec" + } + }, + "birdseye": { + "trackingMode": { + "objects": "Objek", + "motion": "Gerakan", + "continuous": "Kontinu" + }, + "cameraOrder": { + "label": "Urutan kamera", + "description": "Seret kamera untuk mengatur urutannya dalam tata letak Birdseye.", + "reorderHandle": "Seret untuk mengubah urutan", + "saving": "Menyimpan…", + "saved": "Tersimpan" + } + }, + "retainMode": { + "all": "Semua", + "motion": "Gerakan", + "active_objects": "Objek Aktif" + }, + "previewQuality": { + "very_high": "Sangat Tinggi", + "high": "Tinggi", + "medium": "Sedang", + "low": "Rendah", + "very_low": "Sangat Rendah" + }, + "ui": { + "timeFormat": { + "browser": "Browser", + "12hour": "12 jam", + "24hour": "24 jam" + }, + "TimeOrDateStyle": { + "full": "Penuh", + "long": "Panjang", + "medium": "Sedang", + "short": "Pendek" + }, + "unitSystem": { + "metric": "Metrik", + "imperial": "Imperial" + } + }, + "review": { + "imageSource": { + "recordings": "Rekaman", + "previews": "Pratinjau" + } + }, + "logger": { + "logLevel": { + "debug": "Debug", + "info": "Info", + "warning": "Peringatan", + "error": "Kesalahan", + "critical": "Kritis" + } + }, + "onvif": { + "profileAuto": "Otomatis", + "profileLoading": "Memuat profil...", + "autotracking": { + "zooming": { + "disabled": "Dinonaktifkan", + "absolute": "Absolut", + "relative": "Relatif" + } + } + }, + "modelSize": { + "small": "Kecil", + "large": "Besar" } } diff --git a/web/public/locales/id/views/system.json b/web/public/locales/id/views/system.json index 7cf1597d59..639d94cc21 100644 --- a/web/public/locales/id/views/system.json +++ b/web/public/locales/id/views/system.json @@ -1,13 +1,14 @@ { "documentTitle": { - "cameras": "Status kamera - Frigate", - "storage": "Status Penyimpanan - Frigate", - "general": "Status umum - Frigate", + "cameras": "Statistik Kamera - Frigate", + "storage": "Statistik Penyimpanan - Frigate", + "general": "Statistik Umum - Frigate", "enrichments": "Statistik Enrichment - Frigate", "logs": { "frigate": "Log Frigate - Frigate", "go2rtc": "Log Go2RTC - Frigate", - "nginx": "Log NGINX - Frigate" + "nginx": "Log Nginx - Frigate", + "websocket": "Log Pesan - Frigate" } }, "title": "Sistem", @@ -17,32 +18,242 @@ "label": "Unduh Log" }, "copy": { - "label": "Salin ke Clipboard", - "success": "Log tersalin ke clipboard", - "error": "Tidak dapat menyalin ke clipboard" + "label": "Salin ke Papan Klip", + "success": "Log berhasil disalin ke papan klip", + "error": "Tidak dapat menyalin log ke papan klip" }, "type": { - "label": "Tipe", - "timestamp": "Waktu", + "label": "Jenis", + "timestamp": "Stempel waktu", "tag": "Tag", "message": "Pesan" }, - "tips": "Logs sedang berjalan dari server", + "tips": "Log sedang dialirkan dari server", "toast": { "error": { - "fetchingLogsFailed": "Error saat mengambil log: {{errorMessage}}", - "whileStreamingLogs": "Eror saat streaming logs: {{errorMessage}}" + "fetchingLogsFailed": "Kesalahan saat mengambil log: {{errorMessage}}", + "whileStreamingLogs": "Kesalahan saat mengalirkan log: {{errorMessage}}" + } + }, + "websocket": { + "label": "Pesan", + "pause": "Jeda", + "resume": "Lanjutkan", + "clear": "Bersihkan", + "filter": { + "all": "Semua topik", + "topics": "Topik", + "events": "Peristiwa", + "reviews": "Tinjauan", + "classification": "Klasifikasi", + "face_recognition": "Pengenalan Wajah", + "lpr": "LPR", + "camera_activity": "Aktivitas kamera", + "system": "Sistem", + "camera": "Kamera", + "all_cameras": "Semua kamera", + "cameras_count_one": "{{count}} Kamera", + "cameras_count_other": "{{count}} Kamera" + }, + "empty": "Belum ada pesan yang ditangkap", + "count_one": "{{count}} pesan", + "count_other": "{{count}} pesan", + "expanded": { + "payload": "Payload" } } }, "general": { "title": "Umum", "detector": { - "title": "Pendeteksi", - "inferenceSpeed": "Pendeteksi Kecepatan Inferensi", - "temperature": "Pendeteksi Suhu", - "cpuUsage": "Pendeteksi penggunaan CPU", - "cpuUsageInformation": "CPU yang digunakan dalam mempersiapkan data masukan dan keluaran ke/dari model deteksi. Nilai ini tidak mengukur penggunaan inferensi, bahkan jika menggunakan GPU atau akselerator." + "title": "Detektor", + "inferenceSpeed": "Kecepatan Inferensi Detektor", + "temperature": "Suhu Detektor", + "cpuUsage": "Penggunaan CPU Detektor", + "cpuUsageInformation": "CPU yang digunakan untuk menyiapkan data input dan output ke/dari model deteksi. Nilai ini tidak mengukur penggunaan inferensi, meskipun menggunakan GPU atau akselerator.", + "memoryUsage": "Penggunaan Memori Detektor" + }, + "hardwareInfo": { + "title": "Info Perangkat Keras", + "gpuUsage": "Penggunaan GPU", + "gpuMemory": "Memori GPU", + "gpuEncoder": "Encoder GPU", + "gpuCompute": "Komputasi / Enkode GPU", + "gpuDecoder": "Decoder GPU", + "gpuTemperature": "Suhu GPU", + "gpuInfo": { + "vainfoOutput": { + "title": "Output Vainfo", + "returnCode": "Kode Pengembalian: {{code}}", + "processOutput": "Output Proses:", + "processError": "Kesalahan Proses:" + }, + "nvidiaSMIOutput": { + "title": "Output Nvidia SMI", + "name": "Nama: {{name}}", + "driver": "Driver: {{driver}}", + "cudaComputerCapability": "Kemampuan Komputasi CUDA: {{cuda_compute}}", + "vbios": "Info VBios: {{vbios}}" + }, + "closeInfo": { + "label": "Tutup info GPU" + }, + "copyInfo": { + "label": "Salin info GPU" + }, + "toast": { + "success": "Info GPU berhasil disalin ke papan klip" + } + }, + "npuUsage": "Penggunaan NPU", + "npuMemory": "Memori NPU", + "npuTemperature": "Suhu NPU", + "intelGpuWarning": { + "title": "Peringatan Statistik GPU Intel", + "message": "Statistik GPU tidak tersedia", + "description": "Ini adalah bug yang sudah diketahui pada alat pelaporan statistik GPU Intel (intel_gpu_top) yang dapat rusak dan berulang kali mengembalikan penggunaan GPU sebesar 0% bahkan ketika akselerasi perangkat keras dan deteksi objek berjalan dengan benar pada (i)GPU. Ini bukan bug Frigate. Anda dapat memulai ulang host untuk memperbaiki masalah ini sementara dan memastikan GPU berfungsi dengan benar. Ini tidak memengaruhi kinerja." + } + }, + "otherProcesses": { + "title": "Proses Lainnya", + "processCpuUsage": "Penggunaan CPU Proses", + "processMemoryUsage": "Penggunaan Memori Proses", + "series": { + "go2rtc": "go2rtc", + "recording": "perekaman", + "review_segment": "segmen tinjauan", + "embeddings": "embedding", + "audio_detector": "detektor audio" + } + } + }, + "storage": { + "title": "Penyimpanan", + "overview": "Ringkasan", + "recordings": { + "title": "Rekaman", + "tips": "Nilai ini menunjukkan total penyimpanan yang digunakan oleh rekaman di basis data Frigate. Frigate tidak melacak penggunaan penyimpanan untuk semua file di disk Anda.", + "earliestRecording": "Rekaman paling awal yang tersedia:" + }, + "shm": { + "title": "Alokasi SHM (memori bersama)", + "warning": "Ukuran SHM saat ini sebesar {{total}}MB terlalu kecil. Tingkatkan menjadi setidaknya {{min_shm}}MB.", + "frameLifetime": { + "title": "Masa hidup frame", + "description": "Setiap kamera memiliki {{frames}} slot frame di memori bersama. Pada laju frame kamera tercepat, setiap frame tersedia selama sekitar {{lifetime}} dtk sebelum ditimpa." + } + }, + "cameraStorage": { + "title": "Penyimpanan Kamera", + "camera": "Kamera", + "unusedStorageInformation": "Informasi Penyimpanan Tidak Terpakai", + "storageUsed": "Penyimpanan", + "percentageOfTotalUsed": "Persentase dari Total", + "bandwidth": "Bandwidth", + "unused": { + "title": "Tidak Terpakai", + "tips": "Nilai ini mungkin tidak secara akurat merepresentasikan ruang kosong yang tersedia untuk Frigate jika Anda memiliki file lain yang disimpan di drive selain rekaman Frigate. Frigate tidak melacak penggunaan penyimpanan di luar rekamannya." + } + } + }, + "cameras": { + "title": "Kamera", + "overview": "Ringkasan", + "info": { + "aspectRatio": "rasio aspek", + "cameraProbeInfo": "Info Probe Kamera {{camera}}", + "streamDataFromFFPROBE": "Data stream diperoleh dengan ffprobe.", + "fetching": "Mengambil Data Kamera", + "stream": "Stream {{idx}}", + "video": "Video:", + "codec": "Codec:", + "resolution": "Resolusi:", + "fps": "FPS:", + "unknown": "Tidak diketahui", + "audio": "Audio:", + "error": "Kesalahan: {{error}}", + "tips": { + "title": "Info Probe Kamera" + } + }, + "framesAndDetections": "Frame / Deteksi", + "noCameras": { + "title": "Tidak Ada Kamera Ditemukan" + }, + "label": { + "camera": "kamera", + "detect": "deteksi", + "skipped": "dilewati", + "ffmpeg": "FFmpeg", + "capture": "penangkapan", + "overallFramesPerSecond": "jumlah frame per detik keseluruhan", + "overallDetectionsPerSecond": "jumlah deteksi per detik keseluruhan", + "overallSkippedDetectionsPerSecond": "jumlah deteksi yang dilewati per detik keseluruhan", + "cameraFfmpeg": "FFmpeg {{camName}}", + "cameraCapture": "penangkapan {{camName}}", + "cameraDetect": "deteksi {{camName}}", + "cameraGpu": "GPU {{camName}}", + "cameraFramesPerSecond": "frame per detik {{camName}}", + "cameraDetectionsPerSecond": "deteksi per detik {{camName}}", + "cameraSkippedDetectionsPerSecond": "deteksi yang dilewati per detik {{camName}}" + }, + "connectionQuality": { + "title": "Kualitas Koneksi", + "excellent": "Sangat Baik", + "fair": "Cukup", + "poor": "Buruk", + "unusable": "Tidak Dapat Digunakan", + "fps": "FPS", + "expectedFps": "FPS yang Diharapkan", + "reconnectsLastHour": "Penyambungan ulang (1 jam terakhir)", + "stallsLastHour": "Macet (1 jam terakhir)" + }, + "toast": { + "success": { + "copyToClipboard": "Data probe berhasil disalin ke papan klip." + }, + "error": { + "unableToProbeCamera": "Tidak dapat memeriksa kamera: {{errorMessage}}" + } + } + }, + "lastRefreshed": "Terakhir diperbarui: ", + "stats": { + "ffmpegHighCpuUsage": "{{camera}} memiliki penggunaan CPU FFmpeg yang tinggi ({{ffmpegAvg}}%)", + "detectHighCpuUsage": "{{camera}} memiliki penggunaan CPU deteksi yang tinggi ({{detectAvg}}%)", + "healthy": "Sistem sehat", + "reindexingEmbeddings": "Mengindeks ulang embedding ({{processed}}% selesai)", + "cameraIsOffline": "{{camera}} sedang offline", + "detectIsSlow": "{{detect}} lambat ({{speed}} md)", + "detectIsVerySlow": "{{detect}} sangat lambat ({{speed}} md)", + "shmTooLow": "Alokasi /dev/shm ({{total}} MB) harus ditingkatkan menjadi setidaknya {{min}} MB.", + "debugReplayActive": "Sesi pemutaran ulang debug sedang aktif" + }, + "enrichments": { + "title": "Enrichment", + "infPerSecond": "Inferensi Per Detik", + "averageInf": "Waktu Inferensi Rata-rata", + "embeddings": { + "image_embedding": "Embedding Gambar", + "text_embedding": "Embedding Teks", + "face_recognition": "Pengenalan Wajah", + "plate_recognition": "Pengenalan Plat", + "image_embedding_speed": "Kecepatan Embedding Gambar", + "face_embedding_speed": "Kecepatan Embedding Wajah", + "face_recognition_speed": "Kecepatan Pengenalan Wajah", + "plate_recognition_speed": "Kecepatan Pengenalan Plat", + "text_embedding_speed": "Kecepatan Embedding Teks", + "yolov9_plate_detection_speed": "Kecepatan Deteksi Plat YOLOv9", + "yolov9_plate_detection": "Deteksi Plat YOLOv9", + "review_description": "Deskripsi Tinjauan", + "review_description_speed": "Kecepatan Deskripsi Tinjauan", + "review_description_events_per_second": "Deskripsi Tinjauan", + "object_description": "Deskripsi Objek", + "object_description_speed": "Kecepatan Deskripsi Objek", + "object_description_events_per_second": "Deskripsi Objek", + "classification": "Klasifikasi {{name}}", + "classification_speed": "Kecepatan Klasifikasi {{name}}", + "classification_events_per_second": "Peristiwa Klasifikasi {{name}} Per Detik" } } } From 6b7a44d5a978aeaae8cc8222ffd40246c8b3b1f9 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:55 +0200 Subject: [PATCH 13/21] Translated using Weblate (Dutch) Currently translated at 83.9% (397 of 473 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (127 of 127 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (47 of 47 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Dutch) Currently translated at 97.9% (794 of 811 strings) Translated using Weblate (Dutch) Currently translated at 93.7% (224 of 239 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (145 of 145 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (129 of 129 strings) Translated using Weblate (Dutch) Currently translated at 92.8% (221 of 238 strings) Translated using Weblate (Dutch) Currently translated at 98.0% (1148 of 1171 strings) Co-authored-by: Hosted Weblate Co-authored-by: Hosted Weblate user 151476 Co-authored-by: Hosted Weblate user 151476 Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/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-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/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-camera Translation: Frigate NVR/components-player Translation: Frigate NVR/objects Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/nl/common.json | 8 ++++- web/public/locales/nl/components/camera.json | 3 +- web/public/locales/nl/components/player.json | 3 +- web/public/locales/nl/config/cameras.json | 10 +++--- web/public/locales/nl/config/global.json | 6 ++-- web/public/locales/nl/config/validation.json | 3 ++ web/public/locales/nl/objects.json | 7 +++- .../locales/nl/views/classificationModel.json | 16 ++++++--- web/public/locales/nl/views/explore.json | 18 ++++++++-- web/public/locales/nl/views/faceLibrary.json | 16 ++++++--- web/public/locales/nl/views/live.json | 10 ++++-- web/public/locales/nl/views/settings.json | 34 +++++++++---------- 12 files changed, 92 insertions(+), 42 deletions(-) diff --git a/web/public/locales/nl/common.json b/web/public/locales/nl/common.json index 45b7d93d87..f797c877db 100644 --- a/web/public/locales/nl/common.json +++ b/web/public/locales/nl/common.json @@ -123,7 +123,13 @@ "unselect": "Deselecteren", "next": "Volgende", "deleteNow": "Nu verwijderen", - "continue": "Doorgaan" + "continue": "Doorgaan", + "add": "Toevoegen", + "undo": "Ongedaan maken", + "copiedToClipboard": "Gekopieerd naar klembord", + "applying": "Verwerken…", + "modified": "Gewijzigd", + "overridden": "Overschreven" }, "unit": { "speed": { diff --git a/web/public/locales/nl/components/camera.json b/web/public/locales/nl/components/camera.json index 1b840478d5..2fbc245fa1 100644 --- a/web/public/locales/nl/components/camera.json +++ b/web/public/locales/nl/components/camera.json @@ -82,6 +82,7 @@ "zones": "Zones", "boundingBox": "Objectkader", "timestamp": "Tijdstempel", - "regions": "Regio's" + "regions": "Regio's", + "paths": "Paden" } } diff --git a/web/public/locales/nl/components/player.json b/web/public/locales/nl/components/player.json index 7ec53a0f1f..511c32eea5 100644 --- a/web/public/locales/nl/components/player.json +++ b/web/public/locales/nl/components/player.json @@ -48,5 +48,6 @@ "error": { "submitFrigatePlusFailed": "Het is niet gelukt om een frame naar Frigate+ te sturen" } - } + }, + "cameraOff": "De camera staat uit" } diff --git a/web/public/locales/nl/config/cameras.json b/web/public/locales/nl/config/cameras.json index a70df21343..772bd75b5c 100644 --- a/web/public/locales/nl/config/cameras.json +++ b/web/public/locales/nl/config/cameras.json @@ -13,15 +13,15 @@ "description": "Geactiveerd" }, "audio": { - "label": "Geluiddetectie", - "description": "Audio-instellingen voor gebeurtenisdetectie van deze camera.", + "label": "Audio events", + "description": "Instellingen voor audio-gebaseerde detectie voor deze camera.", "enabled": { "label": "Geluiddetectie inschakelen", - "description": "Audio‑gebeurtenisdetectie voor deze camera in- of uitschakelen." + "description": "Schakel de detectie van audio-events voor deze camera in of uit." }, "max_not_heard": { - "label": "Einde timeout", - "description": "Aantal seconden zonder het geconfigureerde audiotype, voordat de geluidsgebeurtenis is beëindigd." + "label": "Einde time-out", + "description": "Aantal seconden zonder het geconfigureerde audiotype voordat de audio-event wordt beëindigd." }, "min_volume": { "label": "Minimumvolume", diff --git a/web/public/locales/nl/config/global.json b/web/public/locales/nl/config/global.json index 8943539c8a..8da53d6c88 100644 --- a/web/public/locales/nl/config/global.json +++ b/web/public/locales/nl/config/global.json @@ -1,13 +1,13 @@ { "audio": { - "label": "Geluiddetectie", + "label": "Audio events", "enabled": { "label": "Geluiddetectie inschakelen", "description": "Audioeventdetectie voor alle camera's in- of uitschakelen; kan per camera worden overschreven." }, "max_not_heard": { - "label": "Einde timeout", - "description": "Aantal seconden zonder het geconfigureerde audiotype, voordat de geluidsgebeurtenis is beëindigd." + "label": "Einde time-out", + "description": "Aantal seconden zonder het geconfigureerde audiotype voordat de audio-event wordt beëindigd." }, "min_volume": { "label": "Minimumvolume", diff --git a/web/public/locales/nl/config/validation.json b/web/public/locales/nl/config/validation.json index 3c95b49d3d..8f5391c825 100644 --- a/web/public/locales/nl/config/validation.json +++ b/web/public/locales/nl/config/validation.json @@ -28,5 +28,8 @@ "header_map": { "roleHeaderRequired": "Rol titel is vereist wanneer rol bindingen zijn geconfigureerd." } + }, + "detect": { + "dimensionMustBeEven": "Het moet een even getal zijn." } } diff --git a/web/public/locales/nl/objects.json b/web/public/locales/nl/objects.json index c53f104167..d95ecb896b 100644 --- a/web/public/locales/nl/objects.json +++ b/web/public/locales/nl/objects.json @@ -120,5 +120,10 @@ "kangaroo": "Kangoeroe", "skunk": "Stinkdier", "school_bus": "Schoolbus", - "royal_mail": "Royal Mail" + "royal_mail": "Royal Mail", + "canada_post": "Canada Post", + "baby": "Baby", + "baby_stroller": "Kinderwagen", + "rickshaw": "Riksja", + "rodent": "Knaagdier" } diff --git a/web/public/locales/nl/views/classificationModel.json b/web/public/locales/nl/views/classificationModel.json index 00e6e83285..c58fc60e92 100644 --- a/web/public/locales/nl/views/classificationModel.json +++ b/web/public/locales/nl/views/classificationModel.json @@ -33,7 +33,8 @@ "deleteModelFailed": "Model verwijderen mislukt: {{errorMessage}}", "updateModelFailed": "Bijwerken van model mislukt: {{errorMessage}}", "renameCategoryFailed": "Hernoemen van klasse mislukt: {{errorMessage}}", - "trainingFailedToStart": "Het is niet gelukt om het model te trainen: {{errorMessage}}" + "trainingFailedToStart": "Het is niet gelukt om het model te trainen: {{errorMessage}}", + "reclassifyFailed": "Opnieuw classificeren van afbeelding mislukt: {{errorMessage}}" } }, "deleteCategory": { @@ -155,8 +156,13 @@ "allImagesRequired_other": "Classificeer alle afbeeldingen. {{count}} afbeeldingen resterend.", "modelCreated": "Model succesvol aangemaakt. Gebruik de weergave Recente classificaties om afbeeldingen voor ontbrekende statussen toe te voegen en train vervolgens het model.", "missingStatesWarning": { - "title": "Voorbeelden van ontbrekende staten", - "description": "Het wordt aanbevolen om voor alle staten voorbeelden te selecteren voor het beste resultaat. Je kunt doorgaan zonder alle staten te selecteren, maar het model wordt pas getraind zodra alle staten afbeeldingen hebben. Na het doorgaan kun je in de weergave ‘Recente Classificaties’ de ontbrekende staten van afbeeldingen voorzien, en daarna het model trainen." + "title": "Ontbrekende klassevoorbeelden", + "description": "Niet alle klassen hebben voorbeelden. Probeer nieuwe voorbeelden te genereren om de ontbrekende klasse te vinden, of ga verder en gebruik de weergave 'Recente classificaties' om later afbeeldingen toe te voegen." + }, + "refreshExamples": "Nieuwe voorbeelden genereren", + "refreshConfirm": { + "title": "Nieuwe voorbeelden genereren?", + "description": "Dit genereert een nieuwe set afbeeldingen en wist alle selecties, inclusief eerdere klassen. Je moet opnieuw voorbeelden selecteren voor alle klassen." } } }, @@ -187,5 +193,7 @@ "modelNotReady": "Model is niet klaar voor training", "noChanges": "Geen wijzigingen in de dataset sinds de laatste training." }, - "none": "Geen overeenkomst" + "none": "Geen overeenkomst", + "reclassifyImageAs": "Afbeelding opnieuw classificeren als:", + "reclassifyImage": "Afbeelding opnieuw classificeren" } diff --git a/web/public/locales/nl/views/explore.json b/web/public/locales/nl/views/explore.json index dcef557f02..911139074e 100644 --- a/web/public/locales/nl/views/explore.json +++ b/web/public/locales/nl/views/explore.json @@ -170,7 +170,8 @@ "attributes": "Classificatie-kenmerken", "title": { "label": "Titel" - } + }, + "scoreInfo": "Informatie over de score" }, "itemMenu": { "downloadVideo": { @@ -221,6 +222,13 @@ "downloadCleanSnapshot": { "label": "Download schone snapshot", "aria": "Download schone snapshot" + }, + "debugReplay": { + "label": "Debug-herhaling", + "aria": "Bekijk dit gevolgde object in de weergave voor het afspelen van foutopsporing" + }, + "more": { + "aria": "Meer" } }, "noTrackedObjects": "Geen gevolgde objecten gevonden", @@ -241,6 +249,9 @@ "confirmDelete": { "title": "Bevestig Verwijderen", "desc": "Het verwijderen van dit gevolgde object verwijdert de snapshot, alle opgeslagen embeddings en eventuele bijbehorende trackinggegevens van het object. Opgenomen videobeelden van dit object in de Geschiedenisweergave worden NIET verwijderd.

    Weet je zeker dat je wilt doorgaan?" + }, + "toast": { + "error": "Fout bij het verwijderen van dit bijgehouden object: {{errorMessage}}" } }, "fetchingTrackedObjectsFailed": "Fout bij het ophalen van gevolgde objecten: {{errorMessage}}", @@ -276,7 +287,10 @@ "zones": "Zones", "ratio": "Verhouding", "area": "Gebied", - "score": "Score" + "score": "Score", + "computedScore": "Berekende score", + "topScore": "Hoogste score", + "toggleAdvancedScores": "Geavanceerde scores weergeven" } }, "annotationSettings": { diff --git a/web/public/locales/nl/views/faceLibrary.json b/web/public/locales/nl/views/faceLibrary.json index a7fa2f6622..d314250c4d 100644 --- a/web/public/locales/nl/views/faceLibrary.json +++ b/web/public/locales/nl/views/faceLibrary.json @@ -21,7 +21,11 @@ "title": "Recente herkenningen", "aria": "Selecteer recente herkenningen", "empty": "Er zijn geen recente pogingen tot gezichtsherkenning", - "titleShort": "Recent" + "titleShort": "Recent", + "emptyNoLibrary": { + "title": "Een gezicht uploaden", + "description": "U moet ten minste één gezicht aan de bibliotheek toevoegen om gezichtsherkenning te laten werken." + } }, "selectFace": "Selecteer gezicht", "toast": { @@ -32,7 +36,8 @@ "updateFaceScoreFailed": "Niet gelukt om gezichtsscore bij te werken: {{errorMessage}}", "uploadingImageFailed": "Afbeelding uploaden mislukt: {{errorMessage}}", "trainFailed": "Trainen mislukt: {{errorMessage}}", - "renameFaceFailed": "Het is niet gelukt om het gezicht te hernoemen: {{errorMessage}}" + "renameFaceFailed": "Het is niet gelukt om het gezicht te hernoemen: {{errorMessage}}", + "reclassifyFailed": "Opnieuw classificeren van gezicht mislukt: {{errorMessage}}" }, "success": { "deletedFace_one": "{{count}} gezicht is succesvol verwijderd.", @@ -43,7 +48,8 @@ "deletedName_other": "{{count}} gezichten zijn succesvol verwijderd.", "uploadedImage": "Afbeelding succesvol geüpload.", "addFaceLibrary": "{{name}} is succesvol toegevoegd aan de Gezichtenbibliotheek!", - "renamedFace": "Gezicht succesvol hernoemd naar {{name}}" + "renamedFace": "Gezicht succesvol hernoemd naar {{name}}", + "reclassifiedFace": "Gezicht succesvol geherclassificeerd." } }, "imageEntry": { @@ -98,5 +104,7 @@ }, "collections": "Collecties", "nofaces": "Geen gezichten beschikbaar", - "pixels": "{{area}}px" + "pixels": "{{area}}px", + "reclassifyFaceAs": "Herclassificeer ‘Face’ als:", + "reclassifyFace": "Gezicht opnieuw classificeren" } diff --git a/web/public/locales/nl/views/live.json b/web/public/locales/nl/views/live.json index 198af35fb5..e12f191e8a 100644 --- a/web/public/locales/nl/views/live.json +++ b/web/public/locales/nl/views/live.json @@ -54,7 +54,9 @@ }, "camera": { "enable": "Camera inschakelen", - "disable": "Camera uitschakelen" + "disable": "Camera uitschakelen", + "turnOn": "Camera inschakelen", + "turnOff": "Camera uitschakelen" }, "muteCameras": { "enable": "Alle camera's dempen", @@ -108,7 +110,8 @@ }, "recording": { "disable": "Opname uitschakelen", - "enable": "Opname inschakelen" + "enable": "Opname inschakelen", + "disabledInConfig": "De opnamefunctie moet eerst worden ingeschakeld in de instellingen van deze camera." }, "suspend": { "forTime": "Onderbreken voor: " @@ -150,7 +153,8 @@ "autotracking": "Automatisch volgen", "snapshots": "Momentopnames", "cameraEnabled": "Camera ingeschakeld", - "transcription": "Audiotranscriptie" + "transcription": "Audiotranscriptie", + "camera": "Camera" }, "history": { "label": "Historische beelden weergeven" diff --git a/web/public/locales/nl/views/settings.json b/web/public/locales/nl/views/settings.json index 1deff528c8..d1cd8293f8 100644 --- a/web/public/locales/nl/views/settings.json +++ b/web/public/locales/nl/views/settings.json @@ -546,7 +546,7 @@ "objectList": "Objectenlijst", "noObjects": "Geen objecten", "boundingBoxes": { - "title": "Bewegingskaders", + "title": "Objectkaders", "desc": "Toon objectkaders rond gevolgde objecten", "colors": { "label": "Kleuren van objectkaders", @@ -692,14 +692,14 @@ "desc": "Machtigingen bijwerken voor {{username}}", "title": "Gebruikersrol wijzigen", "roleInfo": { - "intro": "Selectereneer een gepaste rol voor deze gebruiker:", + "intro": "Selecteer een gepaste rol voor deze gebruiker:", "admin": "Beheerder", "adminDesc": "Volledige toegang tot alle functies.", "viewer": "Kijker", "viewerDesc": "Alleen toegang tot Live-dashboards, Beoordelen, Verkennen en Exports.", "customDesc": "Aangepaste rol met specifieke cameratoegang." }, - "select": "Selectereneer een rol" + "select": "Selecteer een rol" }, "passwordSetting": { "setPassword": "Wachtwoord instellen", @@ -737,7 +737,7 @@ }, "cameras": { "noCameras": "Geen camera's beschikbaar", - "desc": "Selectereneer voor welke camera's je meldingen wilt inschakelen.", + "desc": "Selecteer voor welke camera's je meldingen wilt inschakelen.", "title": "Camera's" }, "deviceSpecific": "Apparaatspecifieke instellingen", @@ -950,13 +950,13 @@ }, "type": { "title": "Type", - "placeholder": "Selectereneer het type trigger", + "placeholder": "Selecteer het type trigger", "description": "Activeer wanneer een vergelijkbare beschrijving van een gevolgd object wordt gedetecteerd", "thumbnail": "Activeer wanneer een vergelijkbare thumbnail van een gevolgd object wordt gedetecteerd" }, "content": { "title": "Inhoud", - "imagePlaceholder": "Selectereneer een thumbnail", + "imagePlaceholder": "Selecteer een thumbnail", "textPlaceholder": "Tekst invoeren", "imageDesc": "Alleen de meest recente 100 thumbnails worden weergegeven. Als je de gewenste thumbnail niet kunt vinden, bekijk dan eerdere objecten in Verkennen en stel daar een trigger in via het menu.", "textDesc": "Voer tekst in om deze actie te activeren wanneer een vergelijkbare beschrijving van een gevolgd object wordt gedetecteerd.", @@ -1075,7 +1075,7 @@ }, "cameras": { "title": "Camera's", - "desc": "Selectereneer de camera's waartoe deze rol toegang heeft. Er is minimaal één camera vereist.", + "desc": "Selecteer de camera's waartoe deze rol toegang heeft. Er is minimaal één camera vereist.", "required": "Er moet minimaal één camera worden geselecteerd." } } @@ -1114,9 +1114,9 @@ "usernamePlaceholder": "Optioneel", "password": "Wachtwoord", "passwordPlaceholder": "Optioneel", - "selectTransport": "Selectereneer transportprotocol", + "selectTransport": "Selecteer transportprotocol", "cameraBrand": "Cameramerk", - "selectBrand": "Selectereneer cameramerk voor URL-sjabloon", + "selectBrand": "Selecteer cameramerk voor URL-sjabloon", "customUrl": "Aangepaste stream-URL", "brandInformation": "Merkinformatie", "brandUrlFormat": "Voor camera's met het RTSP URL-formaat als: {{exampleUrl}}", @@ -1129,7 +1129,7 @@ "noSnapshot": "Er kan geen snapshot worden opgehaald uit de geconfigureerde stream." }, "errors": { - "brandOrCustomUrlRequired": "Selectereneer een cameramerk met host/IP of kies 'Overig' voor een aangepaste URL", + "brandOrCustomUrlRequired": "Selecteer een cameramerk met host/IP of kies 'Overig' voor een aangepaste URL", "nameRequired": "Cameranaam is vereist", "nameLength": "De cameranaam mag maximaal 64 tekens lang zijn", "invalidCharacters": "Cameranaam bevat ongeldige tekens", @@ -1199,7 +1199,7 @@ "retry": "Opnieuw proberen", "testing": { "probingMetadata": "Camera-metadata onderzoeken...", - "fetchingSnapshot": "Camera'snapshot ophalen..." + "fetchingSnapshot": "Camerasnapshot ophalen..." }, "probeFailed": "Het testen van de camera is mislukt: {{error}}", "probingDevice": "Onderzoekapparaat...", @@ -1270,19 +1270,19 @@ }, "ffmpegModule": "Gebruik stream-compatibiliteitsmodus", "ffmpegModuleDescription": "Als de stream na meerdere pogingen niet wordt geladen, probeer dit dan in te schakelen. Wanneer deze optie is ingeschakeld, gebruikt Frigate de ffmpeg-module samen met go2rtc. Dit kan zorgen voor een betere compatibiliteit met sommige camerastreams.", - "streamsTitle": "Camera'streams", + "streamsTitle": "Camerastreams", "addStream": "Stream toevoegen", "addAnotherStream": "Voeg een extra stream toe", "streamUrl": "Stream-URL", "streamUrlPlaceholder": "rtsp://gebruikersnaam:wachtwoord@host:poort/pad", - "selectStream": "Selectereneer een stream", + "selectStream": "Selecteer een stream", "searchCandidates": "Zoek kandidaten...", "noStreamFound": "Geen stream gevonden", "url": "URL", "resolution": "Resolutie", - "selectResolution": "Selectereneer resolutie", + "selectResolution": "Selecteer resolutie", "quality": "Kwaliteit", - "selectQuality": "Selectereneer kwaliteit", + "selectQuality": "Selecteer kwaliteit", "roleLabels": { "detect": "Objectdetectie", "record": "Opname", @@ -1362,7 +1362,7 @@ "title": "Camera’s beheren", "addCamera": "Nieuwe camera toevoegen", "editCamera": "Camera bewerken:", - "selectCamera": "Selectereneer een camera", + "selectCamera": "Selecteer een camera", "backToSettings": "Terug naar camera-instellingen", "streams": { "title": "Camera's in-/uitschakelen", @@ -1468,7 +1468,7 @@ }, "unsavedChanges": "Niet-opgeslagen classificatie-instellingen voor {{camera}}", "selectAlertsZones": "Zones selecteren voor meldingen", - "selectDetectionsZones": "Selectereneer zones voor detecties", + "selectDetectionsZones": "Selecteer zones voor detecties", "limitDetections": "Beperk detecties tot specifieke zones", "toast": { "success": "Configuratie voor beoordelingsclassificatie is opgeslagen. Herstart Frigate om de wijzigingen toe te passen." From 5ab324448d207afebc00aa05ffe60f273e7fd455 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:56 +0200 Subject: [PATCH 14/21] Translated using Weblate (Spanish) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (1263 of 1263 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Spanish) Currently translated at 99.2% (1253 of 1263 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (1186 of 1186 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (1183 of 1183 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (1181 of 1181 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (1176 of 1176 strings) Co-authored-by: Hosted Weblate Co-authored-by: jjavin Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/es/ Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/es/common.json | 8 +- web/public/locales/es/components/player.json | 3 +- web/public/locales/es/config/validation.json | 3 + web/public/locales/es/views/chat.json | 3 + web/public/locales/es/views/live.json | 7 +- web/public/locales/es/views/settings.json | 157 +++++++++++++++++-- 6 files changed, 163 insertions(+), 18 deletions(-) diff --git a/web/public/locales/es/common.json b/web/public/locales/es/common.json index b8b44f2c12..a1957c06bb 100644 --- a/web/public/locales/es/common.json +++ b/web/public/locales/es/common.json @@ -155,7 +155,8 @@ "id": "Bahasa Indonesia (Indonesio)", "ur": "اردو (Urdu)", "hr": "Hrvatski (Croata)", - "bs": "Bosanski (Bosnio)" + "bs": "Bosanski (Bosnio)", + "zhHant": "繁體中文 (Chino Tradicional)" }, "appearance": "Apariencia", "darkMode": { @@ -333,5 +334,8 @@ "internalID": "La ID interna que usa Frigate en la configuración y en la base de datos" }, "no_items": "No hay elementos", - "validation_errors": "Errores de validación" + "validation_errors": "Errores de validación", + "credentialField": { + "savedPlaceholder": "Guardado — déjalo en blanco para mantener el actual" + } } diff --git a/web/public/locales/es/components/player.json b/web/public/locales/es/components/player.json index c277d9a5a2..e650046466 100644 --- a/web/public/locales/es/components/player.json +++ b/web/public/locales/es/components/player.json @@ -48,5 +48,6 @@ } }, "livePlayerRequiredIOSVersion": "Se requiere iOS 17.1 o superior para este tipo de transmisión en vivo.", - "noRecordingsFoundForThisTime": "No se encontraron grabaciones para este momento" + "noRecordingsFoundForThisTime": "No se encontraron grabaciones para este momento", + "cameraOff": "La cámara está apagada" } diff --git a/web/public/locales/es/config/validation.json b/web/public/locales/es/config/validation.json index b78ae972f3..dc35c3e1bb 100644 --- a/web/public/locales/es/config/validation.json +++ b/web/public/locales/es/config/validation.json @@ -28,5 +28,8 @@ "header_map": { "roleHeaderRequired": "Se requiere el encabezado de rol cuando hay mapeos de roles configurados." } + }, + "detect": { + "dimensionMustBeEven": "Debe ser un número par." } } diff --git a/web/public/locales/es/views/chat.json b/web/public/locales/es/views/chat.json index 876ee2707d..7fe10c75be 100644 --- a/web/public/locales/es/views/chat.json +++ b/web/public/locales/es/views/chat.json @@ -65,5 +65,8 @@ "active": "Razonando…", "show": "Mostrar razonamiento", "hide": "Ocultar razonamiento" + }, + "thinking": { + "toggle": "Alternar razonamiento" } } diff --git a/web/public/locales/es/views/live.json b/web/public/locales/es/views/live.json index 2052b3698f..877e3ef63b 100644 --- a/web/public/locales/es/views/live.json +++ b/web/public/locales/es/views/live.json @@ -57,7 +57,9 @@ }, "camera": { "enable": "Habilitar cámara", - "disable": "Deshabilitar cámara" + "disable": "Deshabilitar cámara", + "turnOn": "Encender cámara", + "turnOff": "Apagar cámara" }, "muteCameras": { "enable": "Silenciar todas las cámaras", @@ -151,7 +153,8 @@ "snapshots": "Capturas de pantalla", "autotracking": "Seguimiento automático", "cameraEnabled": "Cámara habilitada", - "transcription": "Transcripción de Audio" + "transcription": "Transcripción de Audio", + "camera": "Cámara" }, "history": { "label": "Mostrar grabaciones históricas" diff --git a/web/public/locales/es/views/settings.json b/web/public/locales/es/views/settings.json index 7dc10c8a63..7125bfbce9 100644 --- a/web/public/locales/es/views/settings.json +++ b/web/public/locales/es/views/settings.json @@ -32,7 +32,7 @@ "enrichments": "Análisis avanzado", "triggers": "Disparadores", "roles": "Rols", - "cameraManagement": "Administración", + "cameraManagement": "Gestión de cámaras", "cameraReview": "Revisar", "general": "General", "globalConfig": "Configuración Global", @@ -1091,7 +1091,7 @@ "nameLength": "El nombre de la cámara debe tener 64 caracteres o menos", "invalidCharacters": "El nombre de la cámara contiene caracteres no válidos", "nameExists": "El nombre de la cámara ya existe", - "customUrlRtspRequired": "Las URL personalizadas deben comenzar con \"rtsp://\". Se requiere configuración manual para transmisiones de cámara sin RTSP.", + "customUrlRtspRequired": "Las URL personalizadas deben comenzar por “rtsp://” o “rtsps://”. Se requiere configuración manual para flujos de cámara que no sean RTSP.", "brandOrCustomUrlRequired": "Seleccione una marca de cámara con host/IP o elija \"Otro\" con una URL personalizada" }, "description": "Ingrese los detalles de su cámara y elija probar la cámara o seleccionar manualmente la marca.", @@ -1281,13 +1281,13 @@ "selectCamera": "Seleccione una cámara", "backToSettings": "Volver a configuración de la cámara", "streams": { - "title": "Habilitar/deshabilitar cámaras", + "title": "Estado y detalles de la cámara", "desc": "Desactiva temporalmente una cámara hasta que Frigate se reinicie. Desactivar una cámara detiene por completo el procesamiento de las transmisiones de Frigate. La detección, la grabación y la depuración no estarán disponibles.
    Nota: Esto no desactiva las retransmisiones de go2rtc.", "enableDesc": "Deshabilita temporalmente una cámara habilitada hasta que Frigate se reinicie. Deshabilitar una cámara detiene completamente el procesamiento de los flujos de esa cámara por parte de Frigate. La detección, la grabación y la depuración no estarán disponibles. Nota: Esto no deshabilita las retransmisiones de go2rtc.Arrastra el controlador para reordenar las cámaras tal y como aparecen en la interfaz. El orden de las cámaras habilitadas se reflejará en toda la interfaz, incluido el panel en directo y los menús desplegables de selección de cámaras.", "enableLabel": "Cámaras habilitadas", "disableLabel": "Cámaras deshabilitadas", "disableDesc": "Habilita una cámara que actualmente no está visible en la interfaz y está deshabilitada en la configuración. Es necesario reiniciar Frigate después de habilitarla.", - "enableSuccess": "{{cameraName}} se ha habilitado en la configuración. Reinicia Frigate para aplicar los cambios.", + "enableSuccess": "{{cameraName}} habilitada. Reinicia Frigate para aplicar los cambios.", "friendlyName": { "edit": "Editar nombre visible de la cámara", "title": "Editar nombre visible", @@ -1296,7 +1296,26 @@ }, "reorderHandle": "Arrastrar para reordenar", "saving": "Guardando…", - "saved": "Guardado" + "saved": "Guardado", + "details": { + "edit": "Editar detalles de la cámara", + "title": "Editar detalles de la cámara", + "description": "Actualiza el nombre visible y la URL externa usados para esta cámara en toda la interfaz de Frigate.", + "friendlyNameLabel": "Nombre visible", + "friendlyNameHelp": "Nombre descriptivo que se muestra para esta cámara en toda la interfaz de Frigate. Déjalo en blanco para usar el ID de la cámara.", + "webuiUrlLabel": "URL de la interfaz web de la cámara", + "webuiUrlHelp": "URL para acceder directamente a la interfaz web de la cámara desde la vista de depuración. Déjala en blanco para deshabilitar el enlace.", + "webuiUrlInvalid": "Debe ser una URL válida (p. ej., https://ejemplo.com)." + }, + "label": "Estado de la cámara", + "description": "Set the operating state for each camera.

    On: las transmisiones se procesan con normalidad.
    Off: pausa temporalmente el procesamiento. No persiste tras reinicios de Frigate.
    Disabled: detiene el procesamiento y guarda el cambio en tu configuración. Es necesario reiniciar para volver a activar una cámara desactivada.

    Note: Desactivar no afecta a las retransmisiones de go2rtc.

    Arrastra el asa para reordenar las cámaras activas tal como aparecen en toda la interfaz, incluido el panel de Live y los menús desplegables de selección de cámara.", + "disabledSubheading": "Deshabilitado en la configuración", + "status": { + "on": "On", + "off": "Off", + "disabled": "Deshabilitado" + }, + "disableSuccess": "{{cameraName}} deshabilitada y guardada en la configuración." }, "cameraConfig": { "add": "Añadir cámara", @@ -1342,10 +1361,12 @@ "profiles": { "title": "Sobrescrituras de cámaras del perfil", "selectLabel": "Seleccionar perfil", - "description": "Configura qué cámaras se habilitan o deshabilitan cuando se activa un perfil. Las cámaras configuradas como \"Heredar\" conservan su estado base habilitado.", + "description": "Configura qué cámaras se activan o desactivan cuando se activa un perfil. Las cámaras configuradas como “Heredar” conservan su estado predeterminado.", "inherit": "Heredar", "enabled": "Habilitado", - "disabled": "Deshabilitado" + "disabled": "Deshabilitado", + "on": "Encendido", + "off": "Apagado" }, "cameraType": { "title": "Tipo de cámara", @@ -1355,7 +1376,95 @@ "dedicatedLpr": "LPR dedicada", "saveSuccess": "Se ha actualizado el tipo de cámara de {{cameraName}}. Reinicia Frigate para aplicar los cambios." }, - "description": "Añade, edita y elimina cámaras, controla qué cámaras están habilitadas y configura sobrescrituras por perfil y tipo de cámara. Para configurar flujos, detección, movimiento y otros ajustes específicos de cámara, selecciona la sección correspondiente dentro de Configuración de cámara." + "description": "Añade, edita y elimina cámaras, controla el estado de cada cámara y configura sobrescrituras por perfil y tipo de cámara. Para configurar flujos, detección, movimiento y otros ajustes específicos de cámara, selecciona la sección correspondiente dentro de Configuración de cámara.", + "clone": { + "sectionTitle": "Clonar configuración", + "sectionDescription": "Copia la configuración de una cámara a otra cámara o a una nueva.", + "button": "Clonar configuración", + "title": "Clonar configuración de la cámara", + "description": "Copia la configuración de una cámara a una o varias cámaras existentes o a una cámara nueva. La identidad de la cámara (nombre, nombre visible, URL de la interfaz web y orden de visualización) nunca se copia.", + "source": { + "label": "Cámara de origen", + "placeholder": "Selecciona una cámara de origen", + "required": "Selecciona una cámara de origen" + }, + "target": { + "legend": "Destino", + "newRadio": "Nueva cámara", + "newNameLabel": "Nombre de la cámara", + "newNamePlaceholder": "p. ej., puerta_trasera o Puerta trasera", + "newNameRequired": "El nombre de la cámara es obligatorio", + "newNameInvalid": "Nombre de cámara no válido", + "newNameCollision": "Ya existe una cámara con este nombre", + "newStreamsForced": "Los flujos siempre se copian al crear una cámara nueva.", + "existingCamerasRadio": "Cámaras existentes", + "allCameras": "Todas las cámaras", + "existingPlaceholder": "Selecciona al menos una cámara", + "existingDisabled": "No hay otras cámaras a las que copiar la configuración" + }, + "categories": { + "legend": "Configuración para clonar", + "description": "Elige qué ajustes copiar desde la cámara de origen.", + "selectAll": "Seleccionar todo", + "selectNone": "No seleccionar ninguno", + "resetDefaults": "Restablecer valores predeterminados", + "general": "General", + "spatial": "Configuración espacial", + "streams": "Flujos", + "spatialWarningTitle": "Resolución no coincidente", + "spatialWarning": "La resolución de detección de la cámara de origen {{srcCamera}} ({{srcWidth}}×{{srcHeight}}) es diferente de la de: {{cameras}}. Es posible que los polígonos no se alineen correctamente en esas cámaras. Estas opciones están desactivadas de forma predeterminada; actívalas para copiarlas tal cual.", + "restartHint": "Reinicio necesario", + "items": { + "record": "Grabación", + "snapshots": "Instantáneas", + "review": "Revisión", + "motion": "Detección de movimiento", + "objects": "Objetos", + "audio": "Detección de audio", + "audio_transcription": "Transcripción de audio", + "notifications": "Notificaciones", + "birdseye": "Birdseye", + "mqtt": "MQTT", + "timestamp_style": "Estilo de marca de tiempo", + "onvif": "ONVIF", + "lpr": "Reconocimiento de matrículas", + "face_recognition": "Reconocimiento facial", + "semantic_search": "Búsqueda semántica", + "genai": "IA generativa", + "type": "Tipo de cámara (normal / LPR dedicada)", + "profiles": "Perfiles", + "detect": "Dimensiones de detección", + "zones": "Zonas", + "motion_mask": "Máscaras de movimiento", + "object_masks": "Máscaras de objetos", + "ffmpeg_live": "URL y roles de los flujos" + } + }, + "footer": { + "changeCount_one": "Se aplicará {{count}} cambio", + "changeCount_many": "Se aplicarán {{count}} cambios", + "changeCount_other": "Se aplicarán {{count}} cambios", + "restartNeeded": "Será necesario reiniciar para aplicar algunos cambios.", + "liveOnly": "Todos los cambios se aplicarán en tiempo real sin necesidad de reiniciar.", + "submit": "Clonar", + "submitting": "Clonando…" + }, + "toast": { + "success": "Configuración copiada a {{cameraName}}", + "successWithRestart": "Configuración copiada a {{cameraName}}. Reinicia Frigate para aplicar todos los cambios.", + "successMulti_one": "Configuración copiada a {{count}} cámara", + "successMulti_many": "Configuración copiada a {{count}} cámaras", + "successMulti_other": "Configuración copiada a {{count}} cámaras", + "successMultiWithRestart_one": "Configuración copiada a {{count}} cámara. Reinicia Frigate para aplicar todos los cambios.", + "successMultiWithRestart_many": "Configuración copiada a {{count}} cámaras. Reinicia Frigate para aplicar todos los cambios.", + "successMultiWithRestart_other": "Configuración copiada a {{count}} cámaras. Reinicia Frigate para aplicar todos los cambios.", + "partialFailure": "Se aplicaron {{successCount}} secciones; ‘{{failedSection}}’ falló: {{errorMessage}}", + "partialFailureMulti": "Copiado a {{successCount}} cámara(s); error en {{failed}}: {{errorMessage}}", + "newCameraPartialFailure": "La cámara {{cameraName}} se creó, pero no se pudieron copiar algunos ajustes: {{errorMessage}}", + "sourceMissing": "La cámara de origen ya no existe", + "submitError": "No se pudo clonar la cámara: {{errorMessage}}" + } + } }, "cameraReview": { "title": "Configuración de revisión de la cámara", @@ -1502,8 +1611,13 @@ }, "genaiModel": { "noModels": "No hay modelos disponibles", - "placeholder": "Seleccionar modelo…", - "search": "Buscar modelos…" + "placeholder": "Selecciona o introduce un modelo…", + "search": "Busca o introduce un modelo…", + "available": "Modelos disponibles", + "useCustom": "Usar “{{value}}”", + "refresh": "Actualizar modelos", + "probeFailed": "No se pudieron detectar los modelos", + "fetchedModels": "La lista de modelos se ha obtenido correctamente" }, "global": { "description": "Estos ajustes se aplican a todas las cámaras, a menos que se anulen en los ajustes específicos de cada cámara.", @@ -1686,7 +1800,21 @@ "title": "Ajustes de marcas de tiempo" }, "searchPlaceholder": "Buscar...", - "addCustomLabel": "Añadir etiqueta personalizada..." + "addCustomLabel": "Añadir etiqueta personalizada...", + "semanticSearchModelSize": { + "notApplicable": "No aplicable a proveedores GenAI" + }, + "liveStreams": { + "streamNameLabel": "Nombre del flujo", + "streamNamePlaceholder": "p. ej., Flujo principal HD", + "go2rtcStreamLabel": "Flujo go2rtc", + "go2rtcStreamPlaceholder": "Selecciona un flujo go2rtc", + "go2rtcStreamSearch": "Busca o introduce un nombre de flujo…", + "noGo2rtcStreams": "No hay flujos go2rtc configurados", + "availableStreams": "Flujos disponibles", + "useCustom": "Usar “{{value}}”", + "addStream": "Añadir flujo" + } }, "globalConfig": { "title": "Configuración global", @@ -1855,7 +1983,9 @@ }, "detect": { "fpsGreaterThanFive": "No se recomienda establecer los FPS de detección por encima de 5. Valores más altos pueden causar problemas de rendimiento y no aportarán ningún beneficio.", - "disabled": "La detección de objetos está deshabilitada. Las instantáneas, los elementos de revisión y enriquecimientos como el reconocimiento facial, el reconocimiento de matrículas y la IA generativa no funcionarán." + "disabled": "La detección de objetos está deshabilitada. Las instantáneas, los elementos de revisión y enriquecimientos como el reconocimiento facial, el reconocimiento de matrículas y la IA generativa no funcionarán.", + "resolutionShouldBeMultipleOfFour": "Para obtener mejores resultados, la anchura y la altura de detección deberían ser múltiplos de 4. Otros valores pares pueden producir artefactos visuales o una ligera distorsión en el flujo de detección.", + "aspectRatioMismatch": "La anchura y la altura que has introducido no coinciden con la relación de aspecto de la resolución de detección actual. Esto puede producir una imagen estirada o distorsionada." }, "objects": { "genaiNoDescriptionsProvider": "Debes configurar un proveedor GenAI con el rol 'descriptions' para que se generen descripciones." @@ -1864,7 +1994,8 @@ "noRecordRole": "Ningún flujo tiene definido el rol de grabación. La grabación no funcionará." }, "semanticSearch": { - "jinav2SmallModelSize": "El tamaño 'small' con el modelo Jina V2 tiene un alto consumo de RAM y coste de inferencia. Se recomienda el modelo 'large' con una GPU dedicada." + "jinav2SmallModelSize": "El tamaño 'small' con el modelo Jina V2 tiene un alto consumo de RAM y coste de inferencia. Se recomienda el modelo 'large' con una GPU dedicada.", + "modelSizeIgnoredForProvider": "El tamaño del modelo solo se aplica a los modelos Jina integrados. Este valor se ignorará al usar un proveedor de embeddings GenAI." } }, "resetToDefaultDescription": "Esto restablecerá todos los ajustes de esta sección a sus valores predeterminados. Esta acción no se puede deshacer.", From 6e90acc161868904fa937e4a102f368017d2efcd Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:57 +0200 Subject: [PATCH 15/21] Translated using Weblate (French) Currently translated at 85.1% (86 of 101 strings) Translated using Weblate (French) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (French) Currently translated at 82.1% (83 of 101 strings) Co-authored-by: Gloup Co-authored-by: Hosted Weblate Co-authored-by: Lorent Felix Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/ Translation: Frigate NVR/common Translation: Frigate NVR/components-dialog --- web/public/locales/fr/common.json | 8 ++++++-- web/public/locales/fr/components/dialog.json | 15 +++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/web/public/locales/fr/common.json b/web/public/locales/fr/common.json index ff940a27d3..d49150bd9d 100644 --- a/web/public/locales/fr/common.json +++ b/web/public/locales/fr/common.json @@ -188,7 +188,8 @@ "gl": "Galego (Galicien)", "id": "Bahasa Indonesia (Indonésien)", "ur": "اردو (Ourdou)", - "hr": "Hrvatski (Croate)" + "hr": "Hrvatski (Croate)", + "bs": "Bosanski (Bosnien)" }, "appearance": "Apparence", "darkMode": { @@ -332,5 +333,8 @@ "separatorWithSpace": ", " }, "no_items": "Aucun élément", - "validation_errors": "Erreurs de validation" + "validation_errors": "Erreurs de validation", + "credentialField": { + "savedPlaceholder": "Enregistré — laissez vide pour conserver la version actuelle" + } } diff --git a/web/public/locales/fr/components/dialog.json b/web/public/locales/fr/components/dialog.json index 4465dcd449..7e0dda6aa6 100644 --- a/web/public/locales/fr/components/dialog.json +++ b/web/public/locales/fr/components/dialog.json @@ -67,7 +67,8 @@ "noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide." }, "success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations.", - "view": "Vue" + "view": "Vue", + "queued": "Exportation en attente. Consultez la progression sur la page des exportations." }, "select": "Sélectionner", "name": { @@ -112,7 +113,7 @@ "title_one": "Export {{count}} revue", "title_many": "Export {{count}} revues", "title_other": "Export {{count}} revues", - "description": "Export chaque revue sélectionnée. Tous les exports sont regroupés sous un cas unique.", + "description": "Exporter chaque revue sélectionnée. Tous les exports sont regroupés sous un cas unique.", "descriptionNoCase": "Exporter chaque revue sélectionnée.", "caseNamePlaceholder": "Vérification de l'export – {{date}}", "exportButton_one": "Exporter {{count}} revue", @@ -120,12 +121,14 @@ "exportButton_other": "Exporter {{count}} revues", "exportingButton": "Exportation...", "toast": { - "started_one": "Un export a démarré. Ouverture du dossier en cours", - "started_many": "{{count}} exports ont démarré. Ouverture du dossier en cours", - "started_other": "", + "started_one": "Un export a démarré. Ouverture du dossier en cours.", + "started_many": "{{count}} exports ont démarré. Ouverture du dossier en cours.", + "started_other": "{{count}} exports ont démarré. Ouverture du dossier en cours.", "startedNoCase_one": "Un export a démarré.", "startedNoCase_many": "{{count}} exports ont démarré.", - "startedNoCase_other": "{{count}} exports ont démarré." + "startedNoCase_other": "{{count}} exports ont démarré.", + "partial": "{{successful}} exportations sur {{total}} lancées. Échecs : {{failedItems}}", + "failed": "Échec du démarrage des exports {{total}}. Échec : {{failedItems}}" } } }, From c62ba72fb0b4bdb5c939312782ef9c4a77c4f324 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:58 +0200 Subject: [PATCH 16/21] Translated using Weblate (Khmer (Central)) Currently translated at 0.9% (5 of 501 strings) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Added translation using Weblate (Khmer (Central)) Co-authored-by: Hosted Weblate Co-authored-by: reanyouda Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/km/ Translation: Frigate NVR/audio --- web/public/locales/km/audio.json | 7 +++++++ web/public/locales/km/common.json | 1 + web/public/locales/km/components/auth.json | 1 + web/public/locales/km/components/camera.json | 1 + web/public/locales/km/components/dialog.json | 1 + web/public/locales/km/components/filter.json | 1 + web/public/locales/km/components/icons.json | 1 + web/public/locales/km/components/input.json | 1 + web/public/locales/km/components/player.json | 1 + web/public/locales/km/config/cameras.json | 1 + web/public/locales/km/config/global.json | 1 + web/public/locales/km/config/groups.json | 1 + web/public/locales/km/config/validation.json | 1 + web/public/locales/km/objects.json | 1 + web/public/locales/km/views/chat.json | 1 + web/public/locales/km/views/classificationModel.json | 1 + web/public/locales/km/views/configEditor.json | 1 + web/public/locales/km/views/events.json | 1 + web/public/locales/km/views/explore.json | 1 + web/public/locales/km/views/exports.json | 1 + web/public/locales/km/views/faceLibrary.json | 1 + web/public/locales/km/views/live.json | 1 + web/public/locales/km/views/motionSearch.json | 1 + web/public/locales/km/views/recording.json | 1 + web/public/locales/km/views/replay.json | 1 + web/public/locales/km/views/search.json | 1 + web/public/locales/km/views/settings.json | 1 + web/public/locales/km/views/system.json | 1 + 28 files changed, 34 insertions(+) create mode 100644 web/public/locales/km/audio.json create mode 100644 web/public/locales/km/common.json create mode 100644 web/public/locales/km/components/auth.json create mode 100644 web/public/locales/km/components/camera.json create mode 100644 web/public/locales/km/components/dialog.json create mode 100644 web/public/locales/km/components/filter.json create mode 100644 web/public/locales/km/components/icons.json create mode 100644 web/public/locales/km/components/input.json create mode 100644 web/public/locales/km/components/player.json create mode 100644 web/public/locales/km/config/cameras.json create mode 100644 web/public/locales/km/config/global.json create mode 100644 web/public/locales/km/config/groups.json create mode 100644 web/public/locales/km/config/validation.json create mode 100644 web/public/locales/km/objects.json create mode 100644 web/public/locales/km/views/chat.json create mode 100644 web/public/locales/km/views/classificationModel.json create mode 100644 web/public/locales/km/views/configEditor.json create mode 100644 web/public/locales/km/views/events.json create mode 100644 web/public/locales/km/views/explore.json create mode 100644 web/public/locales/km/views/exports.json create mode 100644 web/public/locales/km/views/faceLibrary.json create mode 100644 web/public/locales/km/views/live.json create mode 100644 web/public/locales/km/views/motionSearch.json create mode 100644 web/public/locales/km/views/recording.json create mode 100644 web/public/locales/km/views/replay.json create mode 100644 web/public/locales/km/views/search.json create mode 100644 web/public/locales/km/views/settings.json create mode 100644 web/public/locales/km/views/system.json diff --git a/web/public/locales/km/audio.json b/web/public/locales/km/audio.json new file mode 100644 index 0000000000..3070081d6e --- /dev/null +++ b/web/public/locales/km/audio.json @@ -0,0 +1,7 @@ +{ + "speech": "ការនិយាយ", + "babbling": "សំឡេង​រំខាន", + "yell": "ស្រែក", + "bellow": "ប៊ែលឡូវ", + "whoop": "អូប" +} diff --git a/web/public/locales/km/common.json b/web/public/locales/km/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/common.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/auth.json b/web/public/locales/km/components/auth.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/auth.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/camera.json b/web/public/locales/km/components/camera.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/camera.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/dialog.json b/web/public/locales/km/components/dialog.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/dialog.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/filter.json b/web/public/locales/km/components/filter.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/filter.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/icons.json b/web/public/locales/km/components/icons.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/icons.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/input.json b/web/public/locales/km/components/input.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/input.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/components/player.json b/web/public/locales/km/components/player.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/components/player.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/config/cameras.json b/web/public/locales/km/config/cameras.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/config/cameras.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/config/global.json b/web/public/locales/km/config/global.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/config/global.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/config/groups.json b/web/public/locales/km/config/groups.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/config/groups.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/config/validation.json b/web/public/locales/km/config/validation.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/config/validation.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/objects.json b/web/public/locales/km/objects.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/objects.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/chat.json b/web/public/locales/km/views/chat.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/chat.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/classificationModel.json b/web/public/locales/km/views/classificationModel.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/configEditor.json b/web/public/locales/km/views/configEditor.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/configEditor.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/events.json b/web/public/locales/km/views/events.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/events.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/explore.json b/web/public/locales/km/views/explore.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/explore.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/exports.json b/web/public/locales/km/views/exports.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/exports.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/faceLibrary.json b/web/public/locales/km/views/faceLibrary.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/faceLibrary.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/live.json b/web/public/locales/km/views/live.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/live.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/motionSearch.json b/web/public/locales/km/views/motionSearch.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/motionSearch.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/recording.json b/web/public/locales/km/views/recording.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/recording.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/replay.json b/web/public/locales/km/views/replay.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/replay.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/search.json b/web/public/locales/km/views/search.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/search.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/settings.json b/web/public/locales/km/views/settings.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/settings.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/km/views/system.json b/web/public/locales/km/views/system.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/km/views/system.json @@ -0,0 +1 @@ +{} From 5e6019b8e6610079a612515eb88198e75f26e9b5 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:52:59 +0200 Subject: [PATCH 17/21] Translated using Weblate (Uzbek) Currently translated at 0.3% (2 of 501 strings) Co-authored-by: Hamza Foziljonov Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/uz/ Translation: Frigate NVR/audio --- web/public/locales/uz/audio.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/public/locales/uz/audio.json b/web/public/locales/uz/audio.json index ddd93cd741..436bf9121a 100644 --- a/web/public/locales/uz/audio.json +++ b/web/public/locales/uz/audio.json @@ -1,3 +1,4 @@ { - "speech": "So'zlashuv" + "speech": "Nutq", + "laughter": "Kulgi" } From c7f0e9497f8c91d9e2891c5c0e99f2540705dace Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:53:00 +0200 Subject: [PATCH 18/21] Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 99.5% (237 of 238 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (26 of 26 strings) Co-authored-by: Hosted Weblate Co-authored-by: KelvinKueh Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/zh_Hant/ Translation: Frigate NVR/common Translation: Frigate NVR/components-player --- web/public/locales/zh-Hant/common.json | 2 +- web/public/locales/zh-Hant/components/player.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/web/public/locales/zh-Hant/common.json b/web/public/locales/zh-Hant/common.json index e6e358bfb3..f9047af4e2 100644 --- a/web/public/locales/zh-Hant/common.json +++ b/web/public/locales/zh-Hant/common.json @@ -306,7 +306,7 @@ "internalID": "在Frigate 設定檔和資料庫使用的內部ID" }, "information": { - "pixels": "{{area}}px" + "pixels": "{area}}像素" }, "no_items": "沒有項目", "validation_errors": "驗證錯誤" diff --git a/web/public/locales/zh-Hant/components/player.json b/web/public/locales/zh-Hant/components/player.json index 17015bd483..7818615c5d 100644 --- a/web/public/locales/zh-Hant/components/player.json +++ b/web/public/locales/zh-Hant/components/player.json @@ -48,5 +48,6 @@ "error": { "submitFrigatePlusFailed": "提交畫面至 Frigate+ 失敗" } - } + }, + "cameraOff": "攝影機關機" } From 4cb1dccf59d8003a4707120c41d424ba6d8493bc Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:53:01 +0200 Subject: [PATCH 19/21] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1195 of 1195 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1186 of 1186 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1183 of 1183 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1181 of 1181 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (53 of 53 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (238 of 238 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1176 of 1176 strings) Co-authored-by: GuoQing Liu <842607283@qq.com> Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/ Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings --- web/public/locales/zh-CN/common.json | 8 +- .../locales/zh-CN/components/player.json | 3 +- web/public/locales/zh-CN/config/global.json | 35 ++++++++ .../locales/zh-CN/config/validation.json | 3 + web/public/locales/zh-CN/views/chat.json | 10 ++- web/public/locales/zh-CN/views/live.json | 7 +- web/public/locales/zh-CN/views/settings.json | 80 +++++++++++++++---- 7 files changed, 126 insertions(+), 20 deletions(-) diff --git a/web/public/locales/zh-CN/common.json b/web/public/locales/zh-CN/common.json index 1fa683f441..ebb58cecfb 100644 --- a/web/public/locales/zh-CN/common.json +++ b/web/public/locales/zh-CN/common.json @@ -222,7 +222,8 @@ "id": "印度尼西亚语 (Bahasa Indonesia)", "ur": "乌尔都语 (اردو)", "hr": "克罗地亚语 (Hrvatski)", - "bs": "波斯尼亚语(Bosanski)" + "bs": "波斯尼亚语(Bosanski)", + "zhHant": "繁体中文 (Traditional Chinese)" }, "appearance": "外观", "darkMode": { @@ -319,5 +320,8 @@ "internalID": "Frigate 在配置与数据库中使用的内部 ID" }, "no_items": "没有项目", - "validation_errors": "验证错误" + "validation_errors": "验证错误", + "credentialField": { + "savedPlaceholder": "已保存 — 留空则保留当前设置" + } } diff --git a/web/public/locales/zh-CN/components/player.json b/web/public/locales/zh-CN/components/player.json index 6cee6952be..70956ccb35 100644 --- a/web/public/locales/zh-CN/components/player.json +++ b/web/public/locales/zh-CN/components/player.json @@ -48,5 +48,6 @@ "error": { "submitFrigatePlusFailed": "提交帧到 Frigate+ 失败" } - } + }, + "cameraOff": "摄像头已关闭" } diff --git a/web/public/locales/zh-CN/config/global.json b/web/public/locales/zh-CN/config/global.json index ddfeb01be1..e01583b561 100644 --- a/web/public/locales/zh-CN/config/global.json +++ b/web/public/locales/zh-CN/config/global.json @@ -1656,6 +1656,41 @@ "label": "原配置生成式 AI 状态", "description": "表示在原始静态配置中是否已启用生成式 AI。" } + }, + "filters_attribute": { + "label": "属性筛选", + "description": "对检测到的属性进行筛选,以此减少误报(包含面积、比例、置信度)。", + "min_area": { + "label": "最小属性区域", + "description": "该属性所需的最小边框框面积,支持像素值(整数)或百分比数值(范围 0.000001 至 0.99)。" + }, + "max_area": { + "label": "最大属性区域", + "description": "该属性所需的最大边框框面积,支持像素值(整数)或百分比数值(范围 0.000001 至 0.99)。" + }, + "min_ratio": { + "label": "最小纵横比", + "description": "边界框所需的最小宽高比。" + }, + "max_ratio": { + "label": "最大纵横比", + "description": "边界框允许的最大宽高比。" + }, + "threshold": { + "label": "置信度阈值", + "description": "判定该属性为有效目标所需的平均检测置信度阈值。" + }, + "min_score": { + "label": "最小置信度", + "description": "将该属性关联至所属父目标所需的单帧最低检测置信度。" + }, + "mask": { + "label": "过滤器遮罩", + "description": "定义此过滤器在帧内应用位置的多边形坐标。" + }, + "raw_mask": { + "label": "原始遮罩" + } } }, "record": { diff --git a/web/public/locales/zh-CN/config/validation.json b/web/public/locales/zh-CN/config/validation.json index a926f2cce8..ba275a8cd9 100644 --- a/web/public/locales/zh-CN/config/validation.json +++ b/web/public/locales/zh-CN/config/validation.json @@ -28,5 +28,8 @@ "header_map": { "roleHeaderRequired": "配置权限组映射时需要的 role 请求头。" } + }, + "detect": { + "dimensionMustBeEven": "必须是偶数。" } } diff --git a/web/public/locales/zh-CN/views/chat.json b/web/public/locales/zh-CN/views/chat.json index 429dd56677..dee13463e5 100644 --- a/web/public/locales/zh-CN/views/chat.json +++ b/web/public/locales/zh-CN/views/chat.json @@ -49,7 +49,7 @@ "show_stats": { "title": "显示统计数据", "desc": "显示对话回复的生成速率和上下文大小。", - "while_generating": "正在生成中", + "while_generating": "生成过程中", "always": "始终" }, "auto_scroll": { @@ -60,5 +60,13 @@ "stats": { "context": "{{tokens}} 词元(tokens)", "tokens_per_second": "{{rate}} 词元/秒" + }, + "reasoning": { + "active": "思考中…", + "show": "显示推理过程", + "hide": "隐藏推理过程" + }, + "thinking": { + "toggle": "切换思考" } } diff --git a/web/public/locales/zh-CN/views/live.json b/web/public/locales/zh-CN/views/live.json index 53688c6dfa..de900ba8bd 100644 --- a/web/public/locales/zh-CN/views/live.json +++ b/web/public/locales/zh-CN/views/live.json @@ -58,7 +58,9 @@ }, "camera": { "enable": "开启摄像头", - "disable": "关闭摄像头" + "disable": "关闭摄像头", + "turnOn": "开启摄像头", + "turnOff": "关闭摄像头" }, "muteCameras": { "enable": "屏蔽所有摄像头", @@ -151,7 +153,8 @@ "snapshots": "快照", "audioDetection": "音频检测", "autotracking": "自动追踪", - "transcription": "音频转录" + "transcription": "音频转录", + "camera": "摄像头" }, "history": { "label": "显示历史录像" diff --git a/web/public/locales/zh-CN/views/settings.json b/web/public/locales/zh-CN/views/settings.json index 0a181dee18..08d6d84254 100644 --- a/web/public/locales/zh-CN/views/settings.json +++ b/web/public/locales/zh-CN/views/settings.json @@ -32,7 +32,7 @@ "enrichments": "增强功能", "triggers": "触发器", "roles": "权限组", - "cameraManagement": "管理", + "cameraManagement": "摄像头管理", "cameraReview": "核查", "globalDetect": "目标检测", "general": "常规", @@ -1361,13 +1361,13 @@ "selectCamera": "选择摄像头", "backToSettings": "返回摄像头设置", "streams": { - "title": "开启或关闭摄像头", + "title": "摄像头状态和详细信息", "desc": "将临时禁用摄像头,直到 Frigate 重启。禁用摄像头将完全停止 Frigate 对该摄像头视频流的处理,届时检测、录制及调试功能均不可用。
    注意:go2rtc 的转流服务不受影响。", "enableLabel": "开启摄像头", "enableDesc": "暂时禁用已开启的摄像头,直到 Frigate 重启。禁用摄像头会完全停止 Frigate 对该摄像头视频流的处理。检测、录像和调试功能将不可用。
    注意:这不会禁用 go2rtc 的转推流。

    拖动滑块以重新排序摄像头,使其在用户界面中按顺序显示。启用的摄像头的顺序将在整个用户界面中反映,包括实时监控仪表板和摄像头选择下拉菜单。", "disableLabel": "关闭摄像头", "disableDesc": "开启在当前在界面中不可见且在配置中被禁用的摄像头。启用后需要重启 Frigate 才能生效。", - "enableSuccess": "已在配置中启用 {{cameraName}}。请重启 Frigate 以应用更改。", + "enableSuccess": "已启用 {{cameraName}}。请重启 Frigate 以应用。", "friendlyName": { "edit": "修改摄像头显示名称", "title": "修改显示名称", @@ -1376,7 +1376,26 @@ }, "reorderHandle": "拖动以重新排序", "saving": "保存中…", - "saved": "已保存" + "saved": "已保存", + "details": { + "edit": "编辑摄像头细节", + "title": "编辑摄像头细节", + "description": "更新此摄像头在 Frigate 页面中使用的显示名称和外部设置 URL 地址。", + "friendlyNameLabel": "显示名称", + "friendlyNameHelp": "在 Frigate 页面中显示此摄像头的友好名称。留空以使用摄像头 ID。", + "webuiUrlLabel": "摄像头管理后台 URL", + "webuiUrlHelp": "从调试页面中直接访问摄像头管理网页界面。留空以禁用链接。", + "webuiUrlInvalid": "必须是有效的 URL(例如:https://example.com)。" + }, + "label": "摄像头状态", + "description": "设置各摄像头运行状态

    开启:正常处理视频流
    关闭:临时暂停处理,重启后状态不保留
    停用:停止处理并保存配置,重新启用需重启程序

    备注:停用操作不会影响 go2rtc 转流功能

    拖动控件调整摄像头界面显示顺序,排序效果同步应用于实时面板及摄像头选择下拉栏。", + "disabledSubheading": "配置中禁用", + "status": { + "on": "开", + "off": "关", + "disabled": "关闭" + }, + "disableSuccess": "已停用 {{cameraName}} 并保存至配置。" }, "cameraConfig": { "add": "添加摄像头", @@ -1422,10 +1441,12 @@ "profiles": { "title": "配置模板的摄像头覆盖项", "selectLabel": "选择配置模板", - "description": "配置在启用某个配置模板时,哪些摄像头应被开启或关闭。设置为“继承”的摄像头会沿用它原本的启用/禁用状态。", + "description": "配置启用配置文件时开启或关闭的摄像头。设置为“继承”的摄像头会沿用它原本的默认状态。", "inherit": "继承", "enabled": "开启", - "disabled": "关闭" + "disabled": "关闭", + "on": "开", + "off": "关" }, "cameraType": { "title": "摄像头类型", @@ -1435,7 +1456,7 @@ "dedicatedLpr": "车牌识别专用", "saveSuccess": "已更新 {{cameraName}} 的摄像头类型,请重启 Frigate 以使更改生效。" }, - "description": "添加、编辑和删除摄像头,控制启用哪些摄像头,并配置每个配置文件和摄像头类型的覆盖设置。要配置流媒体、检测、运动和其他特定于摄像头的设置,请在“摄像头配置”下选择相关功能。" + "description": "添加、编辑和删除摄像头,控制每个摄像头的状态,并配置每个配置文件和摄像头类型的覆盖设置。要配置视频流、检测、画面变动和其他特定于摄像头的设置,请在“摄像头配置”下选择相关功能。" }, "cameraReview": { "title": "摄像头核查设置", @@ -1690,13 +1711,32 @@ }, "addCustomLabel": "添加自定义标签…", "genaiModel": { - "placeholder": "选择模型…", - "search": "搜索模型…", - "noModels": "暂无模型" + "placeholder": "选择或输入模型…", + "search": "搜索或输入模型…", + "noModels": "暂无模型", + "available": "可用模型", + "useCustom": "使用 “{{value}}”", + "refresh": "刷新模型列表", + "probeFailed": "无法获取模型列表", + "fetchedModels": "成功获取模型列表" }, "knownPlates": { "namePlaceholder": "例如:老婆的车", "platePlaceholder": "车牌号或正则表达式" + }, + "semanticSearchModelSize": { + "notApplicable": "不适用于生成式 AI 提供者" + }, + "liveStreams": { + "streamNameLabel": "视频流名称", + "streamNamePlaceholder": "例如:高清流", + "go2rtcStreamLabel": "go2rtc 视频流", + "go2rtcStreamPlaceholder": "选择 go2rtc 视频流", + "go2rtcStreamSearch": "搜索或输入视频流名称…", + "noGo2rtcStreams": "没有 go2rtc 视频流配置", + "availableStreams": "可用的视频流", + "useCustom": "使用“{{value}}”", + "addStream": "添加视频流" } }, "cameraConfig": { @@ -1898,8 +1938,17 @@ "audioMp3": "转码为 MP3", "audioExclude": "排除", "hardwareNone": "无硬件加速", - "hardwareAuto": "自动选择硬件加速" - } + "hardwareAuto": "自动模式(推荐)", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "添加视频编码器", + "addAudioCodec": "添加音频编码器", + "removeCodec": "移除编码器" + }, + "streamNumber": "视频流 {{index}}" }, "onvif": { "profileAuto": "自动", @@ -1932,7 +1981,9 @@ }, "detect": { "fpsGreaterThanFive": "不建议设置检测帧率高于 5,数值设置过高可能引发性能问题,且不会带来任何增益。", - "disabled": "目标检测已禁用。快照、回放条目以及人脸识别、车牌识别、生成式 AI 等增强功能都将无法使用。" + "disabled": "目标检测已禁用。快照、回放条目以及人脸识别、车牌识别、生成式 AI 等增强功能都将无法使用。", + "resolutionShouldBeMultipleOfFour": "为了获得最佳效果,检测的宽度和高度应该是4的倍数。其他偶数值可能会在检测流中产生视觉伪影或轻微失真。", + "aspectRatioMismatch": "你输入的宽度和高度与当前检测分辨率的不匹配,这可能会导致图像被拉伸或变形。" }, "faceRecognition": { "globalDisabled": "必须开启人脸识别增强功能,此摄像头的人脸识别相关功能才能正常使用。", @@ -1956,7 +2007,8 @@ "genaiNoDescriptionsProvider": "必须配置具备“描述”功能的生成式 AI 服务商,才能自动生成事件描述。" }, "semanticSearch": { - "jinav2SmallModelSize": "Jina V2 的大型模型版本内存占用与推理开销较高,建议搭配独立显卡使用大型模型。" + "jinav2SmallModelSize": "Jina V2 的大型模型版本内存占用与推理开销较高,建议搭配独立显卡使用大型模型。", + "modelSizeIgnoredForProvider": "模型大小仅适用于内置的 Jina 模型。当使用生成式 AI 作为嵌入提供者时,此值将被忽略。" } }, "birdseye": { From 7a1b03e2c40ec8dd7fb15ab98ebcc6ea4e1551be Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:53:02 +0200 Subject: [PATCH 20/21] =?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% (473 of 473 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (811 of 811 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (1171 of 1171 strings) Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (53 of 53 strings) Co-authored-by: Hosted Weblate Co-authored-by: OverTheHillsAndFarAway Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/nb_NO/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/nb_NO/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/nb_NO/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nb_NO/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-settings --- web/public/locales/nb-NO/config/cameras.json | 6 +- web/public/locales/nb-NO/config/global.json | 41 ++++++++++- web/public/locales/nb-NO/views/chat.json | 5 ++ web/public/locales/nb-NO/views/settings.json | 76 +++++++++++++++++--- 4 files changed, 111 insertions(+), 17 deletions(-) diff --git a/web/public/locales/nb-NO/config/cameras.json b/web/public/locales/nb-NO/config/cameras.json index ce68cfc445..da2f22cfe0 100644 --- a/web/public/locales/nb-NO/config/cameras.json +++ b/web/public/locales/nb-NO/config/cameras.json @@ -446,7 +446,7 @@ }, "mode": { "label": "Bevaringsmodus", - "description": "Modus for bevaring: all (alle), motion (bevegelse) eller active_objects (aktive objekter)." + "description": "Modus for bevaring: \"Alle\" (lagre alle segmenter), \"Bevegelse\" (lagre segmenter med bevegelse) eller \"Aktive objekter\" (lagre segmenter med aktive objekter)." } } }, @@ -470,7 +470,7 @@ }, "mode": { "label": "Bevaringsmodus", - "description": "Modus for bevaring: all (lagre alle segmenter), motion (lagre segmenter med bevegelse) eller active_objects (lagre segmenter med aktive objekter)." + "description": "Modus for bevaring: \"Alle\" (lagre alle segmenter), \"Bevegelse\" (lagre segmenter med bevegelse) eller \"Aktive objekter\" (lagre segmenter med aktive objekter)." } } }, @@ -627,7 +627,7 @@ }, "mode": { "label": "Bevaringsmodus", - "description": "Modus for bevaring: all (lagre alle segmenter), motion (lagre segmenter med bevegelse) eller active_objects (lagre segmenter med aktive objekter)." + "description": "Modus for bevaring: \"Alle\" (lagre alle segmenter), \"Bevegelse\" (lagre segmenter med bevegelse) eller \"Aktive objekter\" (lagre segmenter med aktive objekter)." }, "objects": { "label": "Objektbevaring", diff --git a/web/public/locales/nb-NO/config/global.json b/web/public/locales/nb-NO/config/global.json index 11f2fbcdbf..9b288f47f3 100644 --- a/web/public/locales/nb-NO/config/global.json +++ b/web/public/locales/nb-NO/config/global.json @@ -921,6 +921,41 @@ "label": "Opprinnelig GenAI-status", "description": "Indikerer om GenAI var aktivert i den opprinnelige statiske konfigurasjonen." } + }, + "filters_attribute": { + "label": "Attributtfiltre", + "description": "Filtre som brukes på detekterte attributter for å redusere falske positiver (område, sideforhold, konfidens).", + "min_area": { + "label": "Minimum attributtområde", + "description": "Minimum areal for markeringsrammen(piksler eller prosent) som kreves for dette attributtet. Kan oppgis i piksler (heltall) eller prosent (desimaltall mellom 0.000001 og 0.99)." + }, + "max_area": { + "label": "Maksimum attributtområde", + "description": "Maksimum areal for markeringsrammen (piksler eller prosent) tillatt for dette attributtet. Kan oppgis i piksler (heltall) eller prosent (desimaltall mellom 0.000001 og 0.99)." + }, + "min_ratio": { + "label": "Minimum sideforhold", + "description": "Minimum bredde-/høydeforhold som kreves for at markeringsrammen skal kvalifisere." + }, + "max_ratio": { + "label": "Maksimum sideforhold", + "description": "Maksimum bredde-/høydeforhold tillatt for at markeringsrammen skal kvalifisere." + }, + "threshold": { + "label": "Konfidensterskel", + "description": "Gjennomsnittlig terskel for deteksjonskonfidens som kreves for at attributtet skal anses som en ekte positiv." + }, + "min_score": { + "label": "Minimum konfidens", + "description": "Minimum deteksjonskonfidens i et enkeltbilde som kreves for å knytte dette attributtet til sitt hovedobjekt." + }, + "mask": { + "label": "Filtermaske", + "description": "Polygonkoordinater som definerer hvor denne masken gjelder innenfor bildet." + }, + "raw_mask": { + "label": "Råmaske" + } } }, "record": { @@ -970,7 +1005,7 @@ }, "mode": { "label": "Bevaringsmodus", - "description": "Modus for bevaring: all (alle), motion (bevegelse) eller active_objects (aktive objekter)." + "description": "Modus for bevaring: \"Alle\" (lagre alle segmenter), \"Bevegelse\" (lagre segmenter med bevegelse) eller \"Aktive objekter\" (lagre segmenter med aktive objekter)." } } }, @@ -994,7 +1029,7 @@ }, "mode": { "label": "Bevaringsmodus", - "description": "Modus for bevaring: all (lagre alle segmenter), motion (lagre segmenter med bevegelse) eller active_objects (lagre segmenter med aktive objekter)." + "description": "Modus for bevaring: \"Alle\" (lagre alle segmenter), \"Bevegelse\" (lagre segmenter med bevegelse) eller \"Aktive objekter\" (lagre segmenter med aktive objekter)." } } }, @@ -1151,7 +1186,7 @@ }, "mode": { "label": "Bevaringsmodus", - "description": "Modus for bevaring: all (lagre alle segmenter), motion (lagre segmenter med bevegelse) eller active_objects (lagre segmenter med aktive objekter)." + "description": "Modus for bevaring: \"Alle\" (lagre alle segmenter), \"Bevegelse\" (lagre segmenter med bevegelse) eller \"Aktive objekter\" (lagre segmenter med aktive objekter)." }, "objects": { "label": "Objektbevaring", diff --git a/web/public/locales/nb-NO/views/chat.json b/web/public/locales/nb-NO/views/chat.json index a788c3635b..7d42966fd4 100644 --- a/web/public/locales/nb-NO/views/chat.json +++ b/web/public/locales/nb-NO/views/chat.json @@ -60,5 +60,10 @@ "stats": { "context": "{{tokens}} tokens", "tokens_per_second": "{{rate}} t/s" + }, + "reasoning": { + "active": "Resonnerer…", + "show": "Vis resonnering", + "hide": "Skjul resonnering" } } diff --git a/web/public/locales/nb-NO/views/settings.json b/web/public/locales/nb-NO/views/settings.json index 69055fd4bc..fac229142e 100644 --- a/web/public/locales/nb-NO/views/settings.json +++ b/web/public/locales/nb-NO/views/settings.json @@ -16,7 +16,8 @@ "globalConfig": "Global konfigurasjon - Frigate", "cameraConfig": "Kamerakonfigurasjon - Frigate", "profiles": "Profiler - Frigate", - "maintenance": "Vedlikehold - Frigate" + "maintenance": "Vedlikehold - Frigate", + "detectorsAndModel": "Detektorer og modell - Frigate" }, "menu": { "classification": "Klassifisering", @@ -91,7 +92,8 @@ "system": "System", "systemTelemetry": "Telemetri", "systemTls": "TLS", - "maintenance": "Vedlikehold" + "maintenance": "Vedlikehold", + "systemDetectorsAndModel": "Detektorer og modell" }, "dialog": { "unsavedChanges": { @@ -786,7 +788,7 @@ "supportedDetectors": "Støttede detektorer", "dimensions": "Dimensjoner", "cameras": "Kameraer", - "availableModels": "Tilgjengelige modeller", + "availableModels": "Tilgjengelige Frigate+ modeller", "modelSelect": "Dine tilgjengelige modeller på Frigate+ kan velges her. Merk at bare modeller som er kompatible med din nåværende detektorkonfigurasjon kan velges.", "plusModelType": { "userModel": "Finjustert", @@ -825,7 +827,8 @@ "currentModel": "Gjeldende modell", "configuration": "Konfigurasjon" }, - "description": "Frigate+ er en abonnementstjeneste som gir tilgang til tilleggsfunksjoner og kapasiteter for Frigate-instansen din, inkludert muligheten til å bruke egendefinerte objektdeteksjonsmodeller trent på dine egne data. Du kan administrere innstillingene for Frigate+-modellen din her." + "description": "Frigate+ er en abonnementstjeneste som gir tilgang til tilleggsfunksjoner og kapasiteter for Frigate-instansen din, inkludert muligheten til å bruke egendefinerte objektdeteksjonsmodeller trent på dine egne data. Du kan administrere innstillingene for Frigate+-modellen din her.", + "changeInDetectorsAndModel": "Endre modell" }, "enrichments": { "title": "Innstillinger for utvidelser", @@ -1366,14 +1369,17 @@ "disableDesc": "Aktiver et kamera som for øyeblikket ikke er synlig i grensesnittet og deaktivert i konfigurasjonen. En omstart av Frigate kreves etter aktivering.", "enableSuccess": "Aktiverte {{cameraName}} i konfigurasjonen. Start Frigate på nytt for å ta i bruk endringene.", "enableLabel": "Aktiverte kameraer", - "enableDesc": "Deaktiver et aktivert kamera midlertidig frem til Frigate starter på nytt. Deaktivering av et kamera stopper all prosessering av kameraets strømmer. Deteksjon, opptak og feilsøking vil være utilgjengelig.
    Merk: Dette deaktiverer ikke videreformidling (restream) i go2rtc.", + "enableDesc": "Deaktiver et aktivert kamera midlertidig frem til Frigate starter på nytt. Deaktivering av et kamera stopper all prosessering av kameraets strømmer. Deteksjon, opptak og feilsøking vil være utilgjengelig.
    Merk: Dette deaktiverer ikke videreformidling (restream) i go2rtc.

    Dra i feltet for å endre rekkefølgen på kameraene slik de vises i grensesnittet. Rekkefølgen på de aktiverte kameraene vil gjenspeiles i hele grensesnittet, inkludert Live-dashbordet og rullegardinmenyene for kameravalg.", "disableLabel": "Deaktiverte kameraer", "friendlyName": { "edit": "Rediger visningsnavn for kamera", "title": "Rediger visningsnavn", "description": "Angi visningsnavnet som skal brukes for dette kameraet i Frigate-grensesnittet. La feltet stå tomt for å bruke kamera-ID.", "rename": "Omdøp" - } + }, + "reorderHandle": "Dra for å endre rekkefølge", + "saving": "Lagrer…", + "saved": "Lagret" }, "cameraConfig": { "add": "Legg til kamera", @@ -1432,7 +1438,7 @@ "dedicatedLpr": "Dedikert LPR (lesing av kjennemerker)", "saveSuccess": "Kameratype oppdatert for {{cameraName}}. Start Frigate på nytt for å bruke endringene." }, - "description": "Legg til, rediger og slett kameraer, kontroller hvilke kameraer som er aktivert, og konfigurer overstyringer for hver profil og kameratype. For å konfigurere strømmer, deteksjon, bevegelse og andre kameraspesifikke innstillinger, velg den aktuelle seksjonen under Kamerakonfigurasjon." + "description": "Legg til, rediger og slett kameraer. Kontroller hvilke kameraer som er aktivert og konfigurer overstyringer for hver profil og kameratype. For å konfigurere strømmer, deteksjon, bevegelse og andre kameraspesifikke innstillinger, velg den aktuelle seksjonen under Kamerakonfigurasjon." }, "cameraReview": { "title": "Innstillinger for kamerainspeksjon", @@ -1702,7 +1708,7 @@ "go2rtcStreams": { "description": "Administrer go2rtc-strømkonfigurasjoner for videreformidling av kamera-strømmer. Hver strøm har ett navn og én eller flere kilde-URL-er.", "ffmpeg": { - "hardwareAuto": "Automatisk maskinvareakselerasjon", + "hardwareAuto": "Automatisk (anbefalt)", "useFfmpegModule": "Bruk kompatibilitetsmodus (ffmpeg)", "audioExclude": "Ekskluder", "videoExclude": "Ekskluder", @@ -1719,7 +1725,15 @@ "audioPcma": "Transkod til PCM A-law", "audioPcmu": "Transkod til PCM μ-law", "audioAac": "Transkod til AAC", - "video": "Video" + "video": "Video", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "Legg til videokodek", + "addAudioCodec": "Legg til lydkodek", + "removeCodec": "Fjern kodek" }, "validation": { "nameDuplicate": "En strøm med dette navnet eksisterer allerede", @@ -1739,7 +1753,8 @@ "addStreamDesc": "Skriv inn et navn for den nye strømmen. Dette navnet vil bli brukt til å referere til strømmen i kamerakonfigurasjonen din.", "renameStreamDesc": "Skriv inn et nytt navn for denne strømmen. Endring av navn kan ødelegge for kameraer eller andre strømmer som refererer til den ved navn.", "deleteStream": "Slett strøm", - "streamName": "Strømnavn" + "streamName": "Strømnavn", + "streamNumber": "Strøm {{index}}" }, "profiles": { "active": "Aktiv", @@ -1946,7 +1961,9 @@ "saveAllPartial_one": "{{successCount}} av {{totalCount}} seksjoner lagret. {{failCount}} feilet.", "saveAllPartial_other": "{{successCount}} av {{totalCount}} seksjoner lagret. {{failCount}} feilet.", "saveAllSuccess_one": "{{count}} seksjon ble lagret.", - "saveAllSuccess_other": "{{count}} seksjoner ble lagret." + "saveAllSuccess_other": "{{count}} seksjoner ble lagret.", + "saveAllSuccessRestartRequired_one": "Lagret {{count}} seksjon. Start Frigate på nytt for å aktivere endringene.", + "saveAllSuccessRestartRequired_other": "Alle {{count}} seksjoner ble lagret. Start Frigate på nytt for å aktivere endringene." }, "cameraConfig": { "toast": { @@ -1969,6 +1986,13 @@ "objects": "Objekter", "motion": "Bevegelse", "continuous": "Kontinuerlig" + }, + "cameraOrder": { + "label": "Kamerarekkefølge", + "description": "Dra kameraene for å angi rekkefølgen deres i Fugleperspektiv-oppsettet.", + "reorderHandle": "Dra for å endre rekkefølge", + "saving": "Lagrer…", + "saved": "Lagret" } }, "snapshot": { @@ -2025,5 +2049,35 @@ "medium": "Middels", "low": "Lav", "very_low": "Svært lav" + }, + "menuDot": { + "overrideGlobal": "Denne seksjonen overstyrer den globale konfigurasjonen", + "overrideProfile": "Denne seksjonen overstyres av {{profile}}-profilen", + "unsaved": "Denne seksjonen har ulagrede endringer" + }, + "detectorsAndModel": { + "title": "Detektorer og modell", + "description": "Konfigurer detektor-bakenden som kjører objektdeteksjon, og modellen den bruker. Endringer lagres sammen slik at detektoren og modellen forblir synkronisert.", + "cardTitles": { + "detector": "Detektor-maskinvare", + "model": "Deteksjonsmodell" + }, + "tabs": { + "plus": "Frigate+", + "custom": "Egendefinert modell" + }, + "mismatch": { + "warning": "Den gjeldende Frigate+-modellen \"{{model}}\" krever {{required}}-detektoren. Velg en kompatibel modell nedenfor eller bytt til Egendefinert modell før du lagrer." + }, + "plusModel": { + "requiresDetector": "Krever: {{detector}}", + "noModelSelected": "Velg en Frigate+ modell" + }, + "toast": { + "saveSuccess": "Innstillinger for detektorer og modell er lagret. Start Frigate på nytt for å aktivere endringene.", + "saveError": "Kunne ikke lagre innstillinger for detektorer og modell" + }, + "unsavedChanges": "Ulagrede endringer for detektorer og modell", + "restartRequired": "Omstart kreves (detektor eller modell er endret)" } } From e0cbf50cc4fad0d8dd03e87ce244a9d0ce9ed03d Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 31 May 2026 15:53:03 +0200 Subject: [PATCH 21/21] Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Added translation using Weblate (Zuni) Co-authored-by: Firas Co-authored-by: Hosted Weblate --- web/public/locales/zun/audio.json | 1 + web/public/locales/zun/common.json | 1 + web/public/locales/zun/components/auth.json | 1 + web/public/locales/zun/components/camera.json | 1 + web/public/locales/zun/components/dialog.json | 1 + web/public/locales/zun/components/filter.json | 1 + web/public/locales/zun/components/icons.json | 1 + web/public/locales/zun/components/input.json | 1 + web/public/locales/zun/components/player.json | 1 + web/public/locales/zun/config/cameras.json | 1 + web/public/locales/zun/config/global.json | 1 + web/public/locales/zun/config/groups.json | 1 + web/public/locales/zun/config/validation.json | 1 + web/public/locales/zun/objects.json | 1 + web/public/locales/zun/views/chat.json | 1 + web/public/locales/zun/views/classificationModel.json | 1 + web/public/locales/zun/views/configEditor.json | 1 + web/public/locales/zun/views/events.json | 1 + web/public/locales/zun/views/explore.json | 1 + web/public/locales/zun/views/exports.json | 1 + web/public/locales/zun/views/faceLibrary.json | 1 + web/public/locales/zun/views/live.json | 1 + web/public/locales/zun/views/motionSearch.json | 1 + web/public/locales/zun/views/recording.json | 1 + web/public/locales/zun/views/replay.json | 1 + web/public/locales/zun/views/search.json | 1 + web/public/locales/zun/views/settings.json | 1 + web/public/locales/zun/views/system.json | 1 + 28 files changed, 28 insertions(+) create mode 100644 web/public/locales/zun/audio.json create mode 100644 web/public/locales/zun/common.json create mode 100644 web/public/locales/zun/components/auth.json create mode 100644 web/public/locales/zun/components/camera.json create mode 100644 web/public/locales/zun/components/dialog.json create mode 100644 web/public/locales/zun/components/filter.json create mode 100644 web/public/locales/zun/components/icons.json create mode 100644 web/public/locales/zun/components/input.json create mode 100644 web/public/locales/zun/components/player.json create mode 100644 web/public/locales/zun/config/cameras.json create mode 100644 web/public/locales/zun/config/global.json create mode 100644 web/public/locales/zun/config/groups.json create mode 100644 web/public/locales/zun/config/validation.json create mode 100644 web/public/locales/zun/objects.json create mode 100644 web/public/locales/zun/views/chat.json create mode 100644 web/public/locales/zun/views/classificationModel.json create mode 100644 web/public/locales/zun/views/configEditor.json create mode 100644 web/public/locales/zun/views/events.json create mode 100644 web/public/locales/zun/views/explore.json create mode 100644 web/public/locales/zun/views/exports.json create mode 100644 web/public/locales/zun/views/faceLibrary.json create mode 100644 web/public/locales/zun/views/live.json create mode 100644 web/public/locales/zun/views/motionSearch.json create mode 100644 web/public/locales/zun/views/recording.json create mode 100644 web/public/locales/zun/views/replay.json create mode 100644 web/public/locales/zun/views/search.json create mode 100644 web/public/locales/zun/views/settings.json create mode 100644 web/public/locales/zun/views/system.json diff --git a/web/public/locales/zun/audio.json b/web/public/locales/zun/audio.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/audio.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/common.json b/web/public/locales/zun/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/common.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/auth.json b/web/public/locales/zun/components/auth.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/auth.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/camera.json b/web/public/locales/zun/components/camera.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/camera.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/dialog.json b/web/public/locales/zun/components/dialog.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/dialog.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/filter.json b/web/public/locales/zun/components/filter.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/filter.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/icons.json b/web/public/locales/zun/components/icons.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/icons.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/input.json b/web/public/locales/zun/components/input.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/input.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/components/player.json b/web/public/locales/zun/components/player.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/components/player.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/config/cameras.json b/web/public/locales/zun/config/cameras.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/config/cameras.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/config/global.json b/web/public/locales/zun/config/global.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/config/global.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/config/groups.json b/web/public/locales/zun/config/groups.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/config/groups.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/config/validation.json b/web/public/locales/zun/config/validation.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/config/validation.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/objects.json b/web/public/locales/zun/objects.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/objects.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/chat.json b/web/public/locales/zun/views/chat.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/chat.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/classificationModel.json b/web/public/locales/zun/views/classificationModel.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/configEditor.json b/web/public/locales/zun/views/configEditor.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/configEditor.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/events.json b/web/public/locales/zun/views/events.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/events.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/explore.json b/web/public/locales/zun/views/explore.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/explore.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/exports.json b/web/public/locales/zun/views/exports.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/exports.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/faceLibrary.json b/web/public/locales/zun/views/faceLibrary.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/faceLibrary.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/live.json b/web/public/locales/zun/views/live.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/live.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/motionSearch.json b/web/public/locales/zun/views/motionSearch.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/motionSearch.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/recording.json b/web/public/locales/zun/views/recording.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/recording.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/replay.json b/web/public/locales/zun/views/replay.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/replay.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/search.json b/web/public/locales/zun/views/search.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/search.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/settings.json b/web/public/locales/zun/views/settings.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/settings.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/zun/views/system.json b/web/public/locales/zun/views/system.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/public/locales/zun/views/system.json @@ -0,0 +1 @@ +{}