diff --git a/web/public/locales/ab/audio.json b/web/public/locales/ar/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/audio.json
rename to web/public/locales/ar/config/cameras.json
diff --git a/web/public/locales/ab/common.json b/web/public/locales/bg/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/common.json
rename to web/public/locales/bg/config/cameras.json
diff --git a/web/public/locales/ca/common.json b/web/public/locales/ca/common.json
index c5dd5434f..70c48fadc 100644
--- a/web/public/locales/ca/common.json
+++ b/web/public/locales/ca/common.json
@@ -106,7 +106,8 @@
"logout": "Tanca la sessió",
"current": "Usuari actual: {{user}}"
},
- "classification": "Classificació"
+ "classification": "Classificació",
+ "chat": "Xat"
},
"pagination": {
"previous": {
@@ -268,7 +269,17 @@
"unselect": "Desseleccionar",
"enable": "Habilitar",
"enabled": "Habilitat",
- "continue": "Continua"
+ "continue": "Continua",
+ "add": "Afegeix",
+ "undo": "Desfés",
+ "copiedToClipboard": "S'ha copiat al porta-retalls",
+ "modified": "Modificat",
+ "overridden": "Sobreescrit",
+ "resetToGlobal": "Restableix a global",
+ "resetToDefault": "Restableix al valor predeterminat",
+ "saveAll": "Desa-ho tot",
+ "savingAll": "S'està desant tot…",
+ "undoAll": "Desfés-ho tot"
},
"toast": {
"copyUrlToClipboard": "URL copiada al porta-retalls.",
diff --git a/web/public/locales/ca/components/dialog.json b/web/public/locales/ca/components/dialog.json
index fb5640d6b..9e2900d8a 100644
--- a/web/public/locales/ca/components/dialog.json
+++ b/web/public/locales/ca/components/dialog.json
@@ -65,6 +65,10 @@
"fromTimeline": {
"saveExport": "Guardar exportació",
"previewExport": "Previsualitzar exportació"
+ },
+ "case": {
+ "label": "Cas",
+ "placeholder": "Selecciona un cas"
}
},
"streaming": {
diff --git a/web/public/locales/ca/config/cameras.json b/web/public/locales/ca/config/cameras.json
new file mode 100644
index 000000000..eb3bbf647
--- /dev/null
+++ b/web/public/locales/ca/config/cameras.json
@@ -0,0 +1,936 @@
+{
+ "label": "ConfiguracióDeLaCcàmera",
+ "name": {
+ "label": "Nom de la càmera",
+ "description": "Es requereix el nom de la càmera"
+ },
+ "friendly_name": {
+ "label": "Nom amistós",
+ "description": "Nom amigable de la càmera utilitzat a la interfície d'usuari de la Frigate"
+ },
+ "enabled": {
+ "label": "Habilitat",
+ "description": "Habilitat"
+ },
+ "audio": {
+ "label": "Esdeveniments d'àudio",
+ "description": "Configuració per a la detecció d'esdeveniments basats en àudio per a aquesta càmera.",
+ "enabled": {
+ "label": "Habilita la detecció d'àudio",
+ "description": "Activa o desactiva la detecció d'esdeveniments d'àudio per a aquesta càmera."
+ },
+ "max_not_heard": {
+ "label": "Temps d'espera final",
+ "description": "Quantitat de segons sense el tipus d'àudio configurat abans que acabi l'esdeveniment d'àudio."
+ },
+ "min_volume": {
+ "label": "Volum mínim",
+ "description": "Llindar mínim de volum RMS necessari per executar la detecció d'àudio; els valors més baixos augmenten la sensibilitat (p. ex., 200 alta, 500 mitjana, 1000 baixa)."
+ },
+ "listen": {
+ "label": "Tipus d'escoltes",
+ "description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, crit, parla, crida)."
+ },
+ "filters": {
+ "label": "Filtres d'àudio",
+ "description": "Paràmetres de filtre per-àudio-tipus, com ara llindars de confiança utilitzats per reduir falsos positius."
+ },
+ "enabled_in_config": {
+ "label": "Estat d'àudio original",
+ "description": "Indica si la detecció d'àudio s'ha activat originalment al fitxer de configuració estàtic."
+ },
+ "num_threads": {
+ "label": "Fils de detecció",
+ "description": "Nombre de fils a utilitzar per al processament de detecció d'àudio."
+ }
+ },
+ "audio_transcription": {
+ "label": "Transcripció d'àudio",
+ "description": "Configuració per a la transcripció d'àudio en viu i de veu utilitzada per a esdeveniments i llegendes en directe.",
+ "enabled": {
+ "label": "Habilita la transcripció",
+ "description": "Activa o desactiva la transcripció d'esdeveniments d'àudio activada manualment."
+ },
+ "enabled_in_config": {
+ "label": "Estat de transcripció original"
+ },
+ "live_enabled": {
+ "label": "Transcripció en viu",
+ "description": "Habilita la transcripció en directe per a l'àudio a mesura que es rep."
+ }
+ },
+ "birdseye": {
+ "label": "Birdseye",
+ "description": "Arranjament per a la vista composta Birdseye que compon múltiples canals de càmera en una única disposició.",
+ "enabled": {
+ "label": "Habilita Birdseye",
+ "description": "Activa o desactiva la funció de vista Birdseye."
+ },
+ "mode": {
+ "label": "Mode de seguiment",
+ "description": "Mode per a incloure càmeres en Birdseye: 'objectes', 'motion' o 'continuous'."
+ },
+ "order": {
+ "label": "Posició",
+ "description": "Posició numèrica que controla l'ordenació de la càmera en la disposició Birdseye."
+ }
+ },
+ "detect": {
+ "label": "Detecció d'objectes",
+ "description": "Configuració del rol de detecció utilitzat per executar la detecció d'objectes i inicialitzar els rastrejadors.",
+ "enabled": {
+ "label": "Detecció activada",
+ "description": "Activa o desactiva la detecció d'objectes per a aquesta càmera. La detecció s'ha d'activar perquè s'executi el seguiment d'objectes."
+ },
+ "height": {
+ "label": "Detecta l'alçada",
+ "description": "Alçada (píxels) dels fotogrames utilitzats per al flux de detecció; deixeu-ho buit per a utilitzar la resolució nativa del flux."
+ },
+ "width": {
+ "label": "Detecta l'amplada",
+ "description": "Amplada (píxels) dels fotogrames utilitzats per al flux de detecció; deixeu-ho buit per a utilitzar la resolució nativa del flux."
+ },
+ "fps": {
+ "label": "Detecta FPS",
+ "description": "Fotogrames desitjats per segon per executar la detecció; els valors més baixos redueixen l'ús de la CPU (el valor recomanat és 5, només estableix més alt - com a màxim 10 - si el seguiment d'objectes en moviment extremadament ràpid)."
+ },
+ "min_initialized": {
+ "label": "Fotogrames d'inicialització mínims",
+ "description": "Nombre d'incidències de detecció consecutives necessàries abans de crear un objecte rastrejat. Incrementa per a reduir les falses inicialitzacions. El valor per defecte és fps dividit per 2."
+ },
+ "max_disappeared": {
+ "label": "Màxim de fotogrames desapareguts",
+ "description": "Nombre de fotogrames sense detecció abans que es consideri que un objecte rastrejat ha desaparegut."
+ },
+ "stationary": {
+ "label": "Configuració d'objectes estacionaris",
+ "description": "Configuració per detectar i gestionar objectes que romanen estacionaris durant un període de temps.",
+ "interval": {
+ "label": "Interval estacionari",
+ "description": "Amb quina freqüència (en fotogrames) s'executa una comprovació de detecció per confirmar un objecte estacionari."
+ },
+ "threshold": {
+ "label": "Llindar estacionari",
+ "description": "Nombre de fotogrames sense cap canvi de posició necessari per a marcar un objecte com a estacionari."
+ },
+ "max_frames": {
+ "label": "Fotogrames màxims",
+ "description": "Limita quant de temps es segueixen els objectes estacionaris abans de descartar-los.",
+ "default": {
+ "label": "Fotogrames màxims predeterminats",
+ "description": "Fotogrames màxims predeterminats per a fer el seguiment d'un objecte estacionari abans d'aturar-se."
+ },
+ "objects": {
+ "label": "Fotogrames màxims de l'objecte",
+ "description": "Sobreescriu l'objecte per als fotogrames màxims per fer un seguiment dels objectes estacionaris."
+ }
+ },
+ "classifier": {
+ "label": "Habilita el classificador visual",
+ "description": "Utilitza un classificador visual per detectar objectes realment estàtics, fins i tot quan els quadres de delimitació tremolen."
+ }
+ },
+ "annotation_offset": {
+ "label": "Desplaçament de l'anotació",
+ "description": "Mil·lisegons per a desplaçar detecta anotacions per a alinear millor els límits de la línia de temps amb els enregistraments; pot ser positiu o negatiu."
+ }
+ },
+ "face_recognition": {
+ "label": "Reconeixement de cares",
+ "description": "Configuració per a la detecció de la cara i el reconeixement d'aquesta càmera.",
+ "enabled": {
+ "label": "Habilita el reconeixement facial",
+ "description": "Activa o desactiva el reconeixement facial."
+ },
+ "min_area": {
+ "label": "Àrea mínima de la cara",
+ "description": "Àrea mínima (píxels) d'un quadre facial detectat requerit per intentar el reconeixement."
+ }
+ },
+ "ffmpeg": {
+ "label": "FFmpeg",
+ "description": "Paràmetres del FFmpeg que inclouen camins binaris, args, opcions de hwaccel i args de sortida per rol.",
+ "path": {
+ "label": "Ruta FFmpeg",
+ "description": "Camí al binari FFmpeg a usar o un àlies de versió («5.0» o «7.0»)."
+ },
+ "global_args": {
+ "label": "Arguments globals del FFmpeg",
+ "description": "Arguments globals passats als processos FFmpeg."
+ },
+ "hwaccel_args": {
+ "label": "Arguments d'acceleració del maquinari",
+ "description": "Arguments d'acceleració de maquinari per a FFmpeg. Es recomanen predefinits específics del proveïdor."
+ },
+ "input_args": {
+ "label": "Arguments d'entrada",
+ "description": "Arguments d'entrada aplicats als fluxos d'entrada del FFmpeg."
+ },
+ "output_args": {
+ "label": "Arguments de sortida",
+ "description": "Arguments de sortida predeterminats utilitzats per a diferents rols FFmpeg com detecta i registra.",
+ "detect": {
+ "label": "Detecta els arguments de sortida",
+ "description": "Arguments de sortida predeterminats per a detectar fluxos de rol."
+ },
+ "record": {
+ "label": "Registra els arguments de sortida",
+ "description": "Arguments de sortida predeterminats per a enregistrar fluxos de rols."
+ }
+ },
+ "retry_interval": {
+ "label": "Temps de reintent del FFmpeg",
+ "description": "Segons a esperar abans d'intentar tornar a connectar un flux de càmera després d'un error. Per defecte és 10."
+ },
+ "apple_compatibility": {
+ "label": "Compatibilitat d'Apple",
+ "description": "Activa l'etiquetatge HEVC per a una millor compatibilitat amb el reproductor d'Apple en gravar H.265."
+ },
+ "gpu": {
+ "label": "Índex de GPU",
+ "description": "Índex de GPU predeterminat utilitzat per a l'acceleració de maquinari si està disponible."
+ },
+ "inputs": {
+ "label": "Entrada de la càmera",
+ "description": "Llista de definicions de flux d'entrada (camins i rols) per a aquesta càmera.",
+ "path": {
+ "label": "Ruta d'entrada",
+ "description": "URL o ruta del flux d'entrada de la càmera."
+ },
+ "roles": {
+ "label": "Rols d'entrada",
+ "description": "Rols per a aquest flux d'entrada."
+ },
+ "global_args": {
+ "label": "Arguments globals del FFmpeg",
+ "description": "Arguments globals del FFmpeg per a aquest flux d'entrada."
+ },
+ "hwaccel_args": {
+ "label": "Arguments d'acceleració del maquinari",
+ "description": "Arguments d'acceleració del maquinari per a aquest flux d'entrada."
+ },
+ "input_args": {
+ "label": "Arguments d'entrada",
+ "description": "Arguments d'entrada específics d'aquest flux."
+ }
+ }
+ },
+ "live": {
+ "label": "Reproducció en directe",
+ "description": "Configuració utilitzada per la interfície d'usuari web per controlar la selecció, resolució i qualitat del flux en viu.",
+ "streams": {
+ "label": "Noms de flux en viu",
+ "description": "Assignació de noms de flux configurats per a restream/go2rtc noms utilitzats per a la reproducció en viu."
+ },
+ "height": {
+ "label": "Alçada del directe",
+ "description": "Alçada (píxels) per a renderitzar el flux en viu jsmpeg a la interfície d'usuari web; ha de ser . detecta l'alçada del flux."
+ },
+ "quality": {
+ "label": "Qualitat del directe",
+ "description": "Qualitat de codificació per al flux jsmpeg (1 més alt, 31 més baix)."
+ }
+ },
+ "lpr": {
+ "label": "Reconeixement de matrícules",
+ "description": "Paràmetres de reconeixement de la matrícula de la llicència, inclosos els llindars de detecció, el format i les plaques conegudes.",
+ "enabled": {
+ "label": "Habilita el LPR",
+ "description": "Activa o desactiva LPR en aquesta càmera."
+ },
+ "expire_time": {
+ "label": "Segons de caducitat",
+ "description": "Temps en segons després del qual una matrícules no vista expira del rastrejador (només per a càmeres LPR dedicades)."
+ },
+ "min_area": {
+ "label": "Àrea mínima de la matrícula",
+ "description": "Àrea mínima de matrícula (píxels) necessària per intentar el reconeixement."
+ },
+ "enhancement": {
+ "label": "Nivell de millora",
+ "description": "Nivell de millora (0-10) per aplicar als cultius de plaques abans de l'OCR; els valors més alts no sempre poden millorar els resultats, els nivells superiors a 5 només poden funcionar amb plaques nocturnes i s'han d'utilitzar amb precaució."
+ }
+ },
+ "motion": {
+ "label": "Detecció de moviment",
+ "enabled": {
+ "label": "Habilita la detecció de moviment",
+ "description": "Activa o desactiva la detecció de moviment d'aquesta càmera."
+ },
+ "description": "Configuració predeterminada de detecció de moviment per a aquesta càmera.",
+ "threshold": {
+ "label": "Llindar del moviment",
+ "description": "Llindar de diferència de píxels utilitzat pel detector de moviment; els valors més alts redueixen la sensibilitat (interval 1-255)."
+ },
+ "lightning_threshold": {
+ "label": "Llindar del llamp",
+ "description": "Llindar per detectar i ignorar les puntes d'il·luminació breu (més baixes són més sensibles, valors entre 0,3 i 1,0)."
+ },
+ "improve_contrast": {
+ "label": "Millora el contrast",
+ "description": "Aplicar la millora del contrast als fotogrames abans de l'anàlisi del moviment per ajudar a la detecció."
+ },
+ "contour_area": {
+ "label": "Àrea de la vora",
+ "description": "Àrea mínima de contorn en píxels necessària per a comptar un contorn de moviment."
+ },
+ "delta_alpha": {
+ "label": "Delta alfa",
+ "description": "Factor de barreja alfa utilitzat en la diferència de fotogrames per al càlcul del moviment."
+ },
+ "frame_alpha": {
+ "label": "Alfa del fotograma",
+ "description": "Valor alfa utilitzat en la barreja de fotogrames per al preprocessament del moviment."
+ },
+ "frame_height": {
+ "label": "Alçada del fotograma",
+ "description": "Alçada en píxels per a escalar els fotogrames quan es computa el moviment."
+ },
+ "mask": {
+ "label": "Coordenades de la màscara",
+ "description": "Coordenades x,y que defineixen el polígon de màscara de moviment utilitzat per incloure/excloure àrees."
+ },
+ "mqtt_off_delay": {
+ "label": "Retard MQTT desactivat",
+ "description": "Segons a esperar després de l'última moció abans de publicar un estat MQTT 'off'."
+ },
+ "enabled_in_config": {
+ "label": "Estat del moviment original",
+ "description": "Indica si la detecció de moviment s'ha activat en la configuració estàtica original."
+ },
+ "raw_mask": {
+ "label": "Màscara en brut"
+ }
+ },
+ "objects": {
+ "label": "Objectes",
+ "description": "Object tracking defaults incloent quines etiquetes rastrejar i per objecte filtres.",
+ "track": {
+ "label": "Objectes a seguir",
+ "description": "Llista d'etiquetes d'objectes a seguir per a aquesta càmera."
+ },
+ "filters": {
+ "label": "Filtres d'objectes",
+ "description": "Filtres aplicats als objectes detectats per reduir falsos positius (àrea, relació, confiança).",
+ "min_area": {
+ "label": "Àrea mínima de l'objecte",
+ "description": "Es requereix una àrea de caixa contenidora mínima (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
+ },
+ "max_area": {
+ "label": "Àrea màxima de l'objecte",
+ "description": "Es permet l'àrea màxima de la caixa contenidora (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
+ },
+ "min_ratio": {
+ "label": "Relació mínima d'aspecte",
+ "description": "Relació mínima d'amplada/alçada requerida per a la casella contenidora a qualificar."
+ },
+ "max_ratio": {
+ "description": "Es permet la relació màxima d'amplada/alçada per a la casella contenidora a qualificar.",
+ "label": "Relació màxima d'aspecte"
+ },
+ "threshold": {
+ "label": "Llindar de confiança",
+ "description": "Es requereix un llindar de confiança mitjà per a la detecció perquè l'objecte es consideri un veritable positiu."
+ },
+ "min_score": {
+ "label": "Confiança mínima",
+ "description": "Es requereix una confiança mínima de detecció d'un sol fotograma per a comptar l'objecte."
+ },
+ "mask": {
+ "label": "Màscara de filtre",
+ "description": "Coordenades de polígon que defineixen on s'aplica aquest filtre dins del marc."
+ },
+ "raw_mask": {
+ "label": "Màscara en brut"
+ }
+ },
+ "mask": {
+ "label": "Màscara d'objecte",
+ "description": "Polígon de màscara utilitzat per evitar la detecció d'objectes en àrees especificades."
+ },
+ "raw_mask": {
+ "label": "Màscara en brut"
+ },
+ "genai": {
+ "label": "Configuració de l'objecte GenAI",
+ "description": "Opcions de GenAI per descriure objectes rastrejats i enviar fotogrames per a la generació.",
+ "enabled": {
+ "label": "Habilita el GenAI",
+ "description": "Habilita la generació de descripcions de GenAI per als objectes rastrejats de manera predeterminada."
+ },
+ "use_snapshot": {
+ "label": "Utilitza instantànies",
+ "description": "Usa instantànies d'objecte en lloc de miniatures per a la generació de descripcions de GenAI."
+ },
+ "prompt": {
+ "label": "Indicació de la llegenda",
+ "description": "Plantilla de pregunta predeterminada utilitzada en generar descripcions amb GenAI."
+ },
+ "object_prompts": {
+ "label": "Peticions d'objecte",
+ "description": "Per objecte demana personalitzar les sortides de GenAI per a etiquetes específiques."
+ },
+ "objects": {
+ "label": "Objectes GenAI",
+ "description": "Llista d'etiquetes d'objectes a enviar a GenAI per defecte."
+ },
+ "required_zones": {
+ "label": "Zones requerides",
+ "description": "Zones que s'han d'introduir perquè els objectes es puguin classificar per a la generació de descripcions de GenAI."
+ },
+ "debug_save_thumbnails": {
+ "label": "Desa les miniatures",
+ "description": "Desa les miniatures enviades a GenAI per a la depuració i la revisió."
+ },
+ "send_triggers": {
+ "label": "Activadors de GenAI",
+ "description": "Defineix quan s'han d'enviar fotogrames a GenAI (al final, després de les actualitzacions, etc.).",
+ "tracked_object_end": {
+ "label": "Envia al final",
+ "description": "Envia una sol·licitud a GenAI quan acabi l'objecte rastrejat."
+ },
+ "after_significant_updates": {
+ "label": "Activador de GenAI primerenc",
+ "description": "Envia una sol·licitud a GenAI després d'un nombre especificat d'actualitzacions significatives per a l'objecte rastrejat."
+ }
+ },
+ "enabled_in_config": {
+ "label": "Estat original de GenAI",
+ "description": "Indica si el GenAI s'ha activat a la configuració estàtica original."
+ }
+ }
+ },
+ "record": {
+ "label": "Enregistrament",
+ "description": "Configuració d'enregistrament i retenció d'aquesta càmera.",
+ "enabled": {
+ "label": "Habilita l'enregistrament",
+ "description": "Activa o desactiva l'enregistrament d'aquesta càmera."
+ },
+ "expire_interval": {
+ "label": "Interval de neteja de l'enregistrament",
+ "description": "Minuts entre passades de neteja que eliminen segments d'enregistrament caducats."
+ },
+ "continuous": {
+ "label": "Retenció contínua",
+ "description": "Nombre de dies per a retenir els enregistraments independentment dels objectes rastrejats o del moviment. Establiu-ho a 0 si només voleu retenir enregistraments d'alertes i deteccions.",
+ "days": {
+ "label": "Dies de retenció",
+ "description": "Dies per retenir enregistraments."
+ }
+ },
+ "motion": {
+ "label": "Retenció del moviment",
+ "description": "Nombre de dies per a retenir els enregistraments activats pel moviment independentment dels objectes rastrejats. Establiu-ho a 0 si només voleu retenir enregistraments d'alertes i deteccions.",
+ "days": {
+ "label": "Dies de retenció",
+ "description": "Dies per retenir enregistraments."
+ }
+ },
+ "detections": {
+ "label": "Retenció de detecció",
+ "description": "Configuració de retenció de l'enregistrament per a esdeveniments de detecció, incloent-hi la durada de la captura anterior a la publicació.",
+ "pre_capture": {
+ "label": "Segons de precaptura",
+ "description": "Nombre de segons abans de l'esdeveniment de detecció a incloure en l'enregistrament."
+ },
+ "post_capture": {
+ "label": "Segons de postcaptura",
+ "description": "Nombre de segons després de l'esdeveniment de detecció que s'inclourà a l'enregistrament."
+ },
+ "retain": {
+ "label": "Retenció d'esdeveniments",
+ "description": "Configuració de retenció per a enregistraments d'esdeveniments de detecció.",
+ "days": {
+ "label": "Dies de retenció",
+ "description": "Nombre de dies per a retenir enregistraments d'esdeveniments de detecció."
+ },
+ "mode": {
+ "label": "Mode de retenció",
+ "description": "Mode de retenció: tot (desa tots els segments), moviment (desa els segments amb moviment), o actiuobobjectes (desa els segments amb objectes actius)."
+ }
+ }
+ },
+ "alerts": {
+ "label": "Retenció d'alerta",
+ "description": "Configuració de retenció de l'enregistrament per a esdeveniments d'alerta, incloses les durades de captura anteriors a la publicació.",
+ "pre_capture": {
+ "label": "Segons de precaptura",
+ "description": "Nombre de segons abans de l'esdeveniment de detecció a incloure en l'enregistrament."
+ },
+ "post_capture": {
+ "label": "Segons de postcaptura",
+ "description": "Nombre de segons després de l'esdeveniment de detecció que s'inclourà a l'enregistrament."
+ },
+ "retain": {
+ "label": "Retenció d'esdeveniments",
+ "description": "Configuració de retenció per a enregistraments d'esdeveniments de detecció.",
+ "days": {
+ "label": "Dies de retenció",
+ "description": "Nombre de dies per a retenir enregistraments d'esdeveniments de detecció."
+ },
+ "mode": {
+ "label": "Mode de retenció",
+ "description": "Mode de retenció: tot (desa tots els segments), moviment (desa els segments amb moviment), o actiuobobjectes (desa els segments amb objectes actius)."
+ }
+ }
+ },
+ "export": {
+ "label": "Exporta la configuració",
+ "description": "Paràmetres utilitzats en exportar enregistraments com el timelapse i l'acceleració del maquinari.",
+ "hwaccel_args": {
+ "label": "Exporta els arguments de l'hwaccel",
+ "description": "Args d'acceleració de maquinari a utilitzar per a operacions d'exportació/transcodificació."
+ }
+ },
+ "preview": {
+ "label": "Configuració de la vista prèvia",
+ "description": "Paràmetres que controlen la qualitat de les vistes prèvies de l'enregistrament que es mostren a la interfície d'usuari.",
+ "quality": {
+ "label": "Qualitat de la vista prèvia",
+ "description": "Nivell de qualitat de la vista prèvia (moltlowbaix, baix, mitjà, alt, molt).alt)."
+ }
+ },
+ "enabled_in_config": {
+ "label": "Estat de l'enregistrament original",
+ "description": "Indica si l'enregistrament s'ha activat en la configuració estàtica original."
+ }
+ },
+ "review": {
+ "label": "Revisió",
+ "description": "Configuració que controla les alertes, les deteccions i els resums de revisió de GenAI utilitzats per la interfície d'usuari i l'emmagatzematge d'aquesta càmera.",
+ "alerts": {
+ "label": "Configuració d'alertes",
+ "description": "Paràmetres per als quals els objectes rastrejats generen alertes i com es mantenen les alertes.",
+ "enabled": {
+ "label": "Habilita les alertes",
+ "description": "Activa o desactiva la generació d'alertes per a aquesta càmera."
+ },
+ "labels": {
+ "label": "Etiquetes d'alerta",
+ "description": "Llista d'etiquetes d'objectes que qualifiquen d'alertes (per exemple: cotxe, persona)."
+ },
+ "required_zones": {
+ "label": "Zones requerides",
+ "description": "Zones que un objecte ha d'introduir per a ser considerat una alerta; deixeu-ho buit per a permetre qualsevol zona."
+ },
+ "enabled_in_config": {
+ "label": "Estat de les alertes originals",
+ "description": "Fa un seguiment de si les alertes es van habilitar originalment a la configuració estàtica."
+ },
+ "cutoff_time": {
+ "label": "Temps de tall d'alertes",
+ "description": "Segons a esperar després de no provocar activitat d'alerta abans de tallar una alerta."
+ }
+ },
+ "detections": {
+ "label": "Configuració de les deteccions",
+ "description": "Paràmetres per a crear esdeveniments de detecció (no-alerta) i quant de temps conservar-los.",
+ "enabled": {
+ "label": "Habilita les deteccions",
+ "description": "Activa o desactiva els esdeveniments de detecció d'aquesta càmera."
+ },
+ "labels": {
+ "label": "Etiquetes de detecció",
+ "description": "Llista d'etiquetes d'objectes que es qualifiquen com a esdeveniments de detecció."
+ },
+ "required_zones": {
+ "label": "Zones requerides",
+ "description": "Zones que un objecte ha d'introduir per a ser considerat una detecció; deixeu-ho buit per a permetre qualsevol zona."
+ },
+ "cutoff_time": {
+ "label": "Temps de tall de detecció",
+ "description": "Segons a esperar després de no haver-hi activitat de detecció abans de tallar una detecció."
+ },
+ "enabled_in_config": {
+ "label": "Estat de les deteccions originals",
+ "description": "Fa un seguiment de si les deteccions es van habilitar originalment a la configuració estàtica."
+ }
+ },
+ "genai": {
+ "label": "Configuració del GenAI",
+ "description": "Controla l'ús de la IA generativa per a la producció de descripcions i resums d'articles de revisió.",
+ "enabled": {
+ "label": "Habilita les descripcions del GenAI",
+ "description": "Activa o desactiva les descripcions i resums generats per GenAI per als elements de revisió."
+ },
+ "alerts": {
+ "label": "Habilita el GenAI per a alertes",
+ "description": "Utilitzeu GenAI per a generar descripcions per als elements d'alerta."
+ },
+ "detections": {
+ "label": "Habilita el GenAI per a les deteccions",
+ "description": "Utilitzeu GenAI per generar descripcions per als elements de detecció."
+ },
+ "image_source": {
+ "label": "Revisa l'origen de la imatge",
+ "description": "Font d'imatges enviades a GenAI ('previsualització' o 'enregistraments'); 'enregistraments' utilitza Fotogrames de més qualitat però més tokens."
+ },
+ "additional_concerns": {
+ "label": "Altres preocupacions",
+ "description": "Una llista de preocupacions o notes addicionals que el GenAI ha de tenir en compte a l'hora d'avaluar l'activitat en aquesta càmera."
+ },
+ "debug_save_thumbnails": {
+ "label": "Desa les miniatures",
+ "description": "Desa les miniatures que s'envien al proveïdor GenAI per a la depuració i la revisió."
+ },
+ "enabled_in_config": {
+ "label": "Estat original de GenAI",
+ "description": "Fa un seguiment de si la revisió de GenAI es va habilitar originalment a la configuració estàtica."
+ },
+ "preferred_language": {
+ "label": "Idioma preferit",
+ "description": "Idioma preferit per sol·licitar al proveïdor GenAI respostes generades."
+ },
+ "activity_context_prompt": {
+ "label": "Indicador de context de l'activitat",
+ "description": "Pregunta personalitzada que descriu el que és i no és una activitat sospitosa per proporcionar context per als resums de GenAI."
+ }
+ }
+ },
+ "semantic_search": {
+ "label": "Cerca semàntica",
+ "description": "Paràmetres per a la cerca semàntica que construeix i consulta incrustacions d'objectes per a trobar elements similars.",
+ "triggers": {
+ "label": "Activadors",
+ "description": "Accions i criteris coincidents per als desencadenants de cerca semàntica específics de la càmera.",
+ "friendly_name": {
+ "label": "Nom amistós",
+ "description": "Nom opcional amistós que es mostra a la interfície d'usuari per a aquest activador."
+ },
+ "enabled": {
+ "label": "Habilita aquest activador",
+ "description": "Activa o desactiva aquest activador de cerca semàntica."
+ },
+ "type": {
+ "label": "Tipus d'activador",
+ "description": "Tipus d'activador: «miniatures» (match contra imatge) o «descripció» (match contra text)."
+ },
+ "data": {
+ "label": "Contingut del disparador",
+ "description": "Frase de text o ID de miniatures per a coincidir amb els objectes rastrejats."
+ },
+ "threshold": {
+ "label": "Llindar d'activació",
+ "description": "Puntuació mínima de similitud (0-1) necessària per activar aquest activador."
+ },
+ "actions": {
+ "label": "Accions d'activació",
+ "description": "Llista d'accions a executar quan coincideixi l'activador (notificació, sublabeletiqueta, atribut)."
+ }
+ }
+ },
+ "snapshots": {
+ "label": "Instantànies",
+ "description": "Configuració per a les instantànies JPEG desades dels objectes seguits per a aquesta càmera.",
+ "enabled": {
+ "label": "Instantànies habilitades",
+ "description": "Activa o desactiva el desament de les instantànies d'aquesta càmera."
+ },
+ "clean_copy": {
+ "label": "Desa la còpia neta",
+ "description": "Desa una còpia neta no anotada de les instantànies a més de les anotades."
+ },
+ "timestamp": {
+ "label": "Superposició de marca horària",
+ "description": "Superposa una marca horària a les instantànies desades."
+ },
+ "bounding_box": {
+ "label": "Superposició de la caixa contenidora",
+ "description": "Dibuixa caixes delimitadores per als objectes seguits en les instantànies desades."
+ },
+ "crop": {
+ "label": "Retalla la instantània",
+ "description": "Retalla les instantànies desades a la caixa delimitadora de l'objecte detectat."
+ },
+ "required_zones": {
+ "label": "Zones requerides",
+ "description": "Zones que ha d'introduir un objecte perquè es desi una instantània."
+ },
+ "height": {
+ "label": "Alçada de la instantània",
+ "description": "Alçada (píxels) per a canviar la mida de les instantànies desades; deixeu-ho buit per a preservar la mida original."
+ },
+ "retain": {
+ "label": "Retenció de la instantània",
+ "description": "Paràmetres de retenció per a les instantànies desades, inclosos els dies predeterminats i les anul·lacions per objecte.",
+ "default": {
+ "label": "Retenció predeterminada",
+ "description": "Nombre predeterminat de dies per a retenir les instantànies."
+ },
+ "mode": {
+ "label": "Mode de retenció",
+ "description": "Mode de retenció: tot (desa tots els segments), moviment (desa els segments amb moviment), o actiuobobjectes (desa els segments amb objectes actius)."
+ },
+ "objects": {
+ "label": "Retenció d'objectes",
+ "description": "Anul·lació per objecte per dies de retenció d'instantànies."
+ }
+ },
+ "quality": {
+ "label": "Qualitat JPEG",
+ "description": "Qualitat del codi JPEG per a les instantànies desades (0-100)."
+ }
+ },
+ "timestamp_style": {
+ "label": "Estil de la marca horària",
+ "description": "Opcions d'estilització per a marques de temps d'alimentació aplicades a enregistraments i instantànies.",
+ "position": {
+ "label": "Posició de la marca horària",
+ "description": "Posició de la marca horària a la imatge (tl/tr/bl/br)."
+ },
+ "format": {
+ "label": "Format de la marca horària",
+ "description": "Cadena de format de data i hora utilitzada per a marques horàries (codis de format de data i hora de Python)."
+ },
+ "color": {
+ "label": "Color de la marca horària",
+ "description": "Valors de color RGB per al text de la marca de temps (tots els valors 0-255).",
+ "red": {
+ "label": "Vermell",
+ "description": "Component vermell (0-255) per al color de la marca horària."
+ },
+ "green": {
+ "label": "Verd",
+ "description": "Component verd (0-255) per al color de la marca horària."
+ },
+ "blue": {
+ "label": "Blau",
+ "description": "Component blau (0-255) per al color de la marca horària."
+ }
+ },
+ "thickness": {
+ "label": "Gruix de la marca de temps",
+ "description": "Gruix de la línia del text de la marca de temps."
+ },
+ "effect": {
+ "label": "Efecte de marca horària",
+ "description": "Efecte visual per al text de la marca de temps (cap, sòlid, ombra)."
+ }
+ },
+ "best_image_timeout": {
+ "label": "Temps d'espera de la millor imatge",
+ "description": "Quant de temps s'espera per a la imatge amb la puntuació de confiança més alta."
+ },
+ "mqtt": {
+ "label": "MQTT",
+ "description": "Configuració de la publicació d'imatges MQTT.",
+ "enabled": {
+ "label": "Envia la imatge",
+ "description": "Habilita la publicació d'instantànies d'imatges per a objectes als temes MQTT d'aquesta càmera."
+ },
+ "timestamp": {
+ "label": "Afegeix una marca horària",
+ "description": "Superposa una marca horària a les imatges publicades a MQTT."
+ },
+ "bounding_box": {
+ "label": "Afegeix el quadre de delimitació",
+ "description": "Dibuixa caixes delimitadores en imatges publicades sobre MQTT."
+ },
+ "crop": {
+ "label": "Retalla la imatge",
+ "description": "Retalla les imatges publicades a MQTT a la caixa contenidora de l'objecte detectat."
+ },
+ "height": {
+ "label": "Alçada de la imatge",
+ "description": "Alçada (píxels) per a canviar la mida de les imatges publicades sobre MQTT."
+ },
+ "required_zones": {
+ "label": "Zones requerides",
+ "description": "Zones que ha d'introduir un objecte perquè es publiqui una imatge MQTT."
+ },
+ "quality": {
+ "label": "Qualitat JPEG",
+ "description": "Qualitat JPEG per a les imatges publicades a MQTT (0-100)."
+ }
+ },
+ "notifications": {
+ "label": "Notificacions",
+ "description": "Configuració per a habilitar i controlar les notificacions d'aquesta càmera.",
+ "enabled": {
+ "label": "Habilita les notificacions",
+ "description": "Activa o desactiva les notificacions d'aquesta càmera."
+ },
+ "email": {
+ "label": "Correu electrònic de notificació",
+ "description": "Adreça de correu electrònic utilitzada per a notificacions push o requerides per determinats proveïdors de notificacions."
+ },
+ "cooldown": {
+ "label": "Període de reducció",
+ "description": "Retirada (segons) entre notificacions per evitar els destinataris de correu brossa."
+ },
+ "enabled_in_config": {
+ "label": "Estat de les notificacions originals",
+ "description": "Indica si les notificacions s'han activat en la configuració estàtica original."
+ }
+ },
+ "onvif": {
+ "label": "ONVIF",
+ "description": "Connexió ONVIF i configuració de seguiment automàtic PTZ per a aquesta càmera.",
+ "host": {
+ "label": "Servidor ONVIF",
+ "description": "Host (i esquema opcional) per al servei ONVIF per a aquesta càmera."
+ },
+ "port": {
+ "label": "Port ONVIF",
+ "description": "Número de port del servei ONVIF."
+ },
+ "user": {
+ "label": "Nom d'usuari ONVIF",
+ "description": "Nom d'usuari per a l'autenticació ONVIF; alguns dispositius requereixen l'usuari administrador per a ONVIF."
+ },
+ "password": {
+ "label": "Contrasenya ONVIF",
+ "description": "Contrasenya per a l'autenticació ONVIF."
+ },
+ "tls_insecure": {
+ "label": "Inhabilita la verificació TLS",
+ "description": "Omet la verificació TLS i desactiva l'autenticació de resum per a ONVIF (no segur; només s'utilitza en xarxes segures)."
+ },
+ "autotracking": {
+ "label": "Seguiment automàtic",
+ "description": "Segueix automàticament els objectes en moviment i els manté centrats en el marc utilitzant els moviments de la càmera PTZ.",
+ "enabled": {
+ "label": "Habilita el seguiment automàtic",
+ "description": "Activa o desactiva el seguiment automàtic de la càmera PTZ dels objectes detectats."
+ },
+ "calibrate_on_startup": {
+ "label": "Calibra a l'inici",
+ "description": "Mesura les velocitats del motor PTZ a l'inici per millorar la precisió del seguiment. Frigate actualitzarà la configuració amb «movtion.weights» després del calibratge."
+ },
+ "zooming": {
+ "label": "Mode de zoom",
+ "description": "Comportament de zoom de control: desactivat (només pan/tilt), absolut (més compatible) o relatiu (pa/tilt/zoom concurrent)."
+ },
+ "zoom_factor": {
+ "label": "Factor de zoom",
+ "description": "Controla el nivell d'ampliació dels objectes rastrejats. Els valors més baixos mantenen més escena a la vista; els valors més alts s'apropen, però poden perdre el seguiment. Valors entre 0,1 i 0,75."
+ },
+ "track": {
+ "label": "Objectes rastrejats",
+ "description": "Llista de tipus d'objectes que haurien d'activar el seguiment automàtic."
+ },
+ "required_zones": {
+ "label": "Zones requerides",
+ "description": "Els objectes han d'entrar en una d'aquestes zones abans que comenci el seguiment automàtic."
+ },
+ "return_preset": {
+ "label": "Retorna la predefinició",
+ "description": "Nom predefinit ONVIF configurat al microprogramari de la càmera per tornar després de finalitzar el seguiment."
+ },
+ "timeout": {
+ "label": "Temps d'espera de retorn",
+ "description": "Espereu tants segons després de perdre el seguiment abans de tornar la càmera a la posició preestablerta."
+ },
+ "movement_weights": {
+ "label": "Pes del moviment",
+ "description": "Valors de calibratge generats automàticament pel calibratge de la càmera. No modifiquis manualment."
+ },
+ "enabled_in_config": {
+ "label": "Estat d'autoseguiment original",
+ "description": "Camp intern per a fer el seguiment de si s'ha habilitat el seguiment automàtic a la configuració."
+ }
+ },
+ "ignore_time_mismatch": {
+ "label": "Ignora el desajust de temps",
+ "description": "Ignora les diferències de sincronització de temps entre càmera i servidor Frigate per a la comunicació ONVIF."
+ }
+ },
+ "type": {
+ "label": "Tipus de càmera",
+ "description": "Tipus de càmera"
+ },
+ "ui": {
+ "label": "Interfície d'usuari de la càmera",
+ "description": "Mostra l'ordre i la visibilitat d'aquesta càmera a la interfície d'usuari. La comanda afecta el tauler predeterminat. Per a un control més granular, utilitzeu grups de càmera.",
+ "order": {
+ "label": "Ordre de la interfície",
+ "description": "Ordre numèric utilitzat per ordenar la càmera a la interfície d'usuari (taulell de control i llistes per defecte); els nombres més grans apareixen més tard."
+ },
+ "dashboard": {
+ "label": "Mostra a l'interfície d'usuari",
+ "description": "Estableix si aquesta càmera és visible a tot arreu a la interfície d'usuari de la Frigate. Desactivar això requerirà editar manualment la configuració per tornar a veure aquesta càmera a la interfície d'usuari."
+ }
+ },
+ "webui_url": {
+ "label": "URL de la càmera",
+ "description": "URL per visitar la càmera directament des de la pàgina del sistema"
+ },
+ "zones": {
+ "label": "Zones",
+ "description": "Les zones permeten definir una àrea específica del marc perquè pugueu determinar si un objecte es troba dins d'una àrea determinada.",
+ "friendly_name": {
+ "label": "Nom de la zona",
+ "description": "Un nom fàcil d'utilitzar per a la zona, que es mostra a la interfície d'usuari de la fragata. Si no s'estableix, s'utilitzarà una versió amb format del nom de la zona."
+ },
+ "enabled": {
+ "label": "Si aquesta zona està activa. Les zones inhabilitades s'ignoren en temps d'execució."
+ },
+ "enabled_in_config": {
+ "label": "Feu un seguiment de l'estat original de la zona."
+ },
+ "filters": {
+ "label": "Filtres de zona",
+ "description": "Filtres que s'aplicaran als objectes d'aquesta zona. S'utilitza per reduir falsos positius o restringir quins objectes es consideren presents a la zona.",
+ "min_area": {
+ "label": "Àrea mínima de l'objecte",
+ "description": "Es requereix una àrea de caixa contenidora mínima (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
+ },
+ "max_area": {
+ "label": "Àrea màxima de l'objecte",
+ "description": "Es permet l'àrea màxima de la caixa contenidora (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
+ },
+ "min_ratio": {
+ "label": "Relació mínima d'aspecte",
+ "description": "Relació mínima d'amplada/alçada requerida per a la casella contenidora a qualificar."
+ },
+ "max_ratio": {
+ "label": "Relació màxima d'aspecte",
+ "description": "Es permet la relació màxima d'amplada/alçada per a la casella contenidora a qualificar."
+ },
+ "threshold": {
+ "label": "Llindar de confiança",
+ "description": "Es requereix un llindar de confiança mitjà per a la detecció perquè l'objecte es consideri un veritable positiu."
+ },
+ "min_score": {
+ "label": "Confiança mínima",
+ "description": "Es requereix una confiança mínima de detecció d'un sol fotograma per a comptar l'objecte."
+ },
+ "mask": {
+ "label": "Màscara de filtre",
+ "description": "Coordenades de polígon que defineixen on s'aplica aquest filtre dins del marc."
+ },
+ "raw_mask": {
+ "label": "Màscara en brut"
+ }
+ },
+ "objects": {
+ "description": "Llista de tipus d'objectes (des del mapa d'etiquetes) que poden activar aquesta zona. Pot ser una cadena o una llista de cadenes. Si està buit, es consideraran tots els objectes.",
+ "label": "Objectes d'activació"
+ },
+ "coordinates": {
+ "label": "Coordenades",
+ "description": "Coordenades de polígon que defineixen l'àrea de zona. Pot ser una cadena separada per comes o una llista de cadenes de coordenades. Les coordenades han de ser relatives (0-1) o absolutes (antic)."
+ },
+ "distances": {
+ "label": "Distàncies del món real",
+ "description": "Distàncies opcionals del món real per a cada costat del quadrilàter de la zona, utilitzades per a càlculs de velocitat o distància. Si s'estableix, ha de tenir exactament 4 valors."
+ },
+ "inertia": {
+ "label": "Fotogrames d'inèrcia",
+ "description": "Nombre de fotogrames consecutius que s'ha de detectar un objecte a la zona abans de considerar-lo present. Ajuda a filtrar les deteccions transitòries."
+ },
+ "loitering_time": {
+ "label": "Segons flotants",
+ "description": "Nombre de segons que un objecte ha de romandre a la zona a considerar com a errant. Establiu-ho a 0 per a desactivar la detecció de la itinerància."
+ },
+ "speed_threshold": {
+ "label": "Velocitat mínima",
+ "description": "Velocitat mínima (en unitats del món real si s'estableixen distàncies) necessària perquè un objecte es consideri present a la zona. S'utilitza per a activadors de zona basats en velocitat."
+ }
+ },
+ "enabled_in_config": {
+ "label": "Estat original de la càmera",
+ "description": "Feu un seguiment de l'estat original de la càmera."
+ }
+}
diff --git a/web/public/locales/ab/components/auth.json b/web/public/locales/ca/config/global.json
similarity index 100%
rename from web/public/locales/ab/components/auth.json
rename to web/public/locales/ca/config/global.json
diff --git a/web/public/locales/ab/components/camera.json b/web/public/locales/ca/config/groups.json
similarity index 100%
rename from web/public/locales/ab/components/camera.json
rename to web/public/locales/ca/config/groups.json
diff --git a/web/public/locales/ab/components/dialog.json b/web/public/locales/ca/config/validation.json
similarity index 100%
rename from web/public/locales/ab/components/dialog.json
rename to web/public/locales/ca/config/validation.json
diff --git a/web/public/locales/ca/objects.json b/web/public/locales/ca/objects.json
index 253e27540..06cac2028 100644
--- a/web/public/locales/ca/objects.json
+++ b/web/public/locales/ca/objects.json
@@ -39,7 +39,7 @@
"surfboard": "Taula de surf",
"tennis_racket": "Raqueta de tenis",
"bottle": "Ampolla",
- "plate": "Placa",
+ "plate": "Matrícula",
"wine_glass": "Got de vi",
"cup": "Copa",
"fork": "Forquilla",
diff --git a/web/public/locales/ca/views/classificationModel.json b/web/public/locales/ca/views/classificationModel.json
index 7a9a7571d..8c1a24791 100644
--- a/web/public/locales/ca/views/classificationModel.json
+++ b/web/public/locales/ca/views/classificationModel.json
@@ -27,7 +27,7 @@
"deleteImageFailed": "No s'ha pogut suprimir: {{errorMessage}}",
"deleteCategoryFailed": "No s'ha pogut suprimir la classe: {{errorMessage}}",
"categorizeFailed": "No s'ha pogut categoritzar la imatge: {{errorMessage}}",
- "trainingFailed": "Ha fallat l'entrenament del model. Comproveu els registres de fragata per a més detalls.",
+ "trainingFailed": "Ha fallat l'entrenament del model. Comproveu els registres de Frigate per a més detalls.",
"deleteModelFailed": "No s'ha pogut suprimir el model: {{errorMessage}}",
"updateModelFailed": "No s'ha pogut actualitzar el model: {{errorMessage}}",
"renameCategoryFailed": "No s'ha pogut canviar el nom de la classe: {{errorMessage}}",
diff --git a/web/public/locales/ca/views/explore.json b/web/public/locales/ca/views/explore.json
index 2c94e50f5..0b2adba5c 100644
--- a/web/public/locales/ca/views/explore.json
+++ b/web/public/locales/ca/views/explore.json
@@ -285,7 +285,7 @@
"title": "Configuració d'anotacions",
"showAllZones": {
"title": "Mostra totes les Zones",
- "desc": "Mostra sempre les zones amb marcs on els objectes hagin entrat a la zona."
+ "desc": "Mostra sempre les zones amb fotogrames on els objectes hagin entrat a la zona."
},
"offset": {
"label": "Òfset d'Anotació",
diff --git a/web/public/locales/ca/views/exports.json b/web/public/locales/ca/views/exports.json
index dec2726ff..1778cffc4 100644
--- a/web/public/locales/ca/views/exports.json
+++ b/web/public/locales/ca/views/exports.json
@@ -11,13 +11,27 @@
},
"toast": {
"error": {
- "renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}"
+ "renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}",
+ "assignCaseFailed": "No s'ha pogut actualitzar l'assignació de cas:{{errorMessage}}"
}
},
"tooltip": {
"shareExport": "Comparteix l'exportació",
"downloadVideo": "Baixa el vídeo",
"editName": "Edita el nom",
- "deleteExport": "Suprimeix l'exportació"
+ "deleteExport": "Suprimeix l'exportació",
+ "assignToCase": "Afegeix al cas"
+ },
+ "headings": {
+ "cases": "Casos",
+ "uncategorizedExports": "Exportacions sense categoria"
+ },
+ "caseDialog": {
+ "title": "Afegeix al cas",
+ "description": "Trieu un cas existent o creeu-ne un de nou.",
+ "selectLabel": "Cas",
+ "newCaseOption": "Crea un cas nou",
+ "nameLabel": "Nom del cas",
+ "descriptionLabel": "Descripció"
}
}
diff --git a/web/public/locales/ca/views/settings.json b/web/public/locales/ca/views/settings.json
index 13f8d2bd6..d984ed93f 100644
--- a/web/public/locales/ca/views/settings.json
+++ b/web/public/locales/ca/views/settings.json
@@ -7,17 +7,20 @@
"authentication": "Configuració d'autenticació - Frigate",
"camera": "Paràmetres de càmera - Frigate",
"masksAndZones": "Editor de màscares i zones - Frigate",
- "general": "Configuració de la interfície d'usuari - Fragata",
+ "general": "Configuració del perfil - Frigate",
"frigatePlus": "Paràmetres de Frigate+ - Frigate",
"notifications": "Paràmetres de notificació - Frigate",
"cameraManagement": "Gestionar càmeres - Frigate",
- "cameraReview": "Configuració Revisió de Càmeres - Frigate"
+ "cameraReview": "Configuració Revisió de Càmeres - Frigate",
+ "globalConfig": "Configuració global - Frigate",
+ "cameraConfig": "Configuració de la càmera - Frigate",
+ "maintenance": "Manteniment - Frigate"
},
"menu": {
"ui": "Interfície d'usuari",
"cameras": "Paràmetres de la càmera",
"masksAndZones": "Màscares / Zones",
- "motionTuner": "Ajust de detecció de moviment",
+ "motionTuner": "Afinador de moviment",
"users": "Usuaris",
"notifications": "Notificacions",
"debug": "Depuració",
@@ -26,7 +29,62 @@
"triggers": "Disparadors",
"cameraManagement": "Gestió",
"cameraReview": "Revisió",
- "roles": "Rols"
+ "roles": "Rols",
+ "general": "General",
+ "globalConfig": "Configuració global",
+ "system": "Sistema",
+ "integrations": "Integracions",
+ "profileSettings": "Configuració del perfil",
+ "globalDetect": "Detecció d'objectes",
+ "globalRecording": "Enregistrament",
+ "globalSnapshots": "Instantànies",
+ "globalFfmpeg": "FFmpeg",
+ "globalMotion": "Detecció de moviment",
+ "globalObjects": "Objectes",
+ "globalReview": "Revisió",
+ "globalAudioEvents": "Esdeveniments d'àudio",
+ "globalLivePlayback": "Reproducció en directe",
+ "globalTimestampStyle": "Estil de la marca horària",
+ "systemDatabase": "Base de dades",
+ "systemTls": "TLS",
+ "systemAuthentication": "Autenticació",
+ "systemNetworking": "Xarxa",
+ "systemProxy": "Proxy",
+ "systemUi": "UI",
+ "systemLogging": "Registre",
+ "systemEnvironmentVariables": "Variables d'entorn",
+ "systemTelemetry": "Telemetria",
+ "systemBirdseye": "Birdseye",
+ "systemFfmpeg": "FFmpeg",
+ "systemDetectorHardware": "Hardware del detector",
+ "systemDetectionModel": "Model de detecció",
+ "systemMqtt": "MQTT",
+ "integrationSemanticSearch": "Cerca semàntica",
+ "integrationGenerativeAi": "IA generativa",
+ "integrationFaceRecognition": "Reconeixement de cares",
+ "integrationLpr": "Reconeixement de la matrícula",
+ "integrationObjectClassification": "Classificació de l'objecte",
+ "integrationAudioTranscription": "Transcripció d'àudio",
+ "cameraDetect": "Detecció d'objectes",
+ "cameraFfmpeg": "FFmpeg",
+ "cameraRecording": "Enregistrament",
+ "cameraSnapshots": "Instantànies",
+ "cameraMotion": "Detecció de moviment",
+ "cameraObjects": "Objectes",
+ "cameraConfigReview": "Revisió",
+ "cameraAudioEvents": "Esdeveniments d'àudio",
+ "cameraAudioTranscription": "Transcripció d'àudio",
+ "cameraNotifications": "Notificacions",
+ "cameraLivePlayback": "Reproducció en directe",
+ "cameraBirdseye": "Birdseye",
+ "cameraFaceRecognition": "Reconeixement de cares",
+ "cameraLpr": "Reconeixement de la matrícula",
+ "cameraMqttConfig": "MQTT",
+ "cameraOnvif": "ONVIF",
+ "cameraUi": "UI de la càmera",
+ "cameraTimestampStyle": "Estil de la marca horària",
+ "cameraMqtt": "Càmera MQTT",
+ "maintenance": "Manteniment"
},
"dialog": {
"unsavedChanges": {
@@ -39,7 +97,7 @@
"noCamera": "Cap càmera"
},
"general": {
- "title": "Paràmetres de la interfície d'usuari",
+ "title": "Configuració del perfil",
"liveDashboard": {
"title": "Panell en directe",
"automaticLiveView": {
@@ -205,6 +263,10 @@
"clickDrawPolygon": "Fes click per a dibuixar un polígon a la imatge.",
"toast": {
"success": "S'ha desat la zona ({{zoneName}})."
+ },
+ "enabled": {
+ "title": "Habilitat",
+ "description": "Si aquesta zona està activa i activada al fitxer de configuració. Si està desactivat, no pot ser habilitat per MQTT. Les zones inhabilitades s'ignoren en temps d'execució."
}
},
"filter": {
@@ -237,6 +299,12 @@
"title": "{{polygonName}} s'ha desat.",
"noName": "La màscara de moviment ha estat desada."
}
+ },
+ "defaultName": "Màscara de moviment {{number}}",
+ "name": {
+ "title": "Nom",
+ "description": "Un nom opcional per a aquesta màscara de moviment.",
+ "placeholder": "Introduïu un nom..."
}
},
"objectMasks": {
@@ -263,11 +331,16 @@
"noName": "La màscara d'objectes ha estat desada."
}
},
- "context": "Les màscares de filtratge d’objectes s’utilitzen per descartar falsos positius d’un tipus d’objecte concret segons la seva ubicació."
+ "context": "Les màscares de filtratge d’objectes s’utilitzen per descartar falsos positius d’un tipus d’objecte concret segons la seva ubicació.",
+ "name": {
+ "title": "Nom",
+ "description": "Un nom opcional per a aquesta màscara d'objecte.",
+ "placeholder": "Introduïu un nom..."
+ }
},
"restart_required": "Reinici necessari (canvi de màscares o zones)",
"motionMaskLabel": "Màscara de moviment {{number}}",
- "objectMaskLabel": "Màscara d'objecte {{number}} ({{label}})",
+ "objectMaskLabel": "Màscara d'objecte {{number}}",
"toast": {
"success": {
"copyCoordinates": "S'han copiat les coordenades per a {{polyName}} al porta-retalls."
@@ -275,6 +348,13 @@
"error": {
"copyCoordinatesFailed": "No s'han pogut copiar les coordenades al porta-retalls."
}
+ },
+ "disabledInConfig": "L'element està desactivat al fitxer de configuració",
+ "masks": {
+ "enabled": {
+ "title": "Habilitat",
+ "description": "Si aquesta màscara està activada al fitxer de configuració. Si està desactivat, no pot ser habilitat per MQTT. Les màscares desactivades s'ignoren en temps d'execució."
+ }
}
},
"notification": {
@@ -644,7 +724,14 @@
"error": "No s'han pogut guardar els canvis de configuració: {{errorMessage}}",
"success": "Els paràmetres de Frigate+ han estat desats. Reincia Frigate per aplicar els canvis."
},
- "restart_required": "Es necessari un reinici (El model de Frigate+ ha cambiat)"
+ "restart_required": "Es necessari un reinici (El model de Frigate+ ha cambiat)",
+ "description": "Frigate+ és un servei de subscripció que proporciona accés a funcions i capacitats addicionals per a la vostra instància de Frigate, inclosa la capacitat d'utilitzar models de detecció d'objectes personalitzats entrenats en les vostres pròpies dades. Podeu gestionar la configuració del model Frigate+ aquí.",
+ "cardTitles": {
+ "api": "API",
+ "currentModel": "Model actual",
+ "otherModels": "Altres models",
+ "configuration": "Configuració"
+ }
},
"enrichments": {
"semanticSearch": {
@@ -665,7 +752,7 @@
"success": "La reindexació ha començat amb èxit.",
"label": "Reindexar ara",
"confirmTitle": "Confirmar la reindexació",
- "desc": "La reindexació regenerarà les incrustacions (embeddings) de tots els objectes seguits. Aquest procés s’executa en segon pla i pot arribar a saturar la CPU, així com trigar una bona estona depenent del nombre d’objectes seguits que tinguis.",
+ "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.",
"alreadyInProgress": "La reindexació ja està en curs.",
"error": "Error en iniciar la reindexació: {{errorMessage}}"
@@ -1181,7 +1268,12 @@
"backToSettings": "Torna a la configuració de la càmera",
"streams": {
"title": "Habilita / Inhabilita les càmeres",
- "desc": "Inhabilita temporalment una càmera fins que es reiniciï la fragata. La inhabilitació d'una càmera atura completament el processament de Frigate dels fluxos d'aquesta càmera. La detecció, l'enregistrament i la depuració no estaran disponibles.
Nota: això no desactiva les retransmissions de go2rtc."
+ "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 desactiva les retransmissions de go2rtc.",
+ "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."
},
"cameraConfig": {
"add": "Afegeix una càmera",
@@ -1236,7 +1328,7 @@
"selectDetectionsZones": "Selecció de zones per a les deteccions",
"limitDetections": "Limita les deteccions a zones específiques",
"toast": {
- "success": "S'ha desat la configuració de la classificació de la revisió. Reinicia la fragata per aplicar canvis."
+ "success": "S'ha desat la configuració de la classificació de la revisió. Reinicia Frigate per aplicar canvis."
},
"unsavedChanges": "Paràmetres de classificació de revisions sense desar per {{camera}}",
"objectAlertsTips": "Totes els objectes {{alertsLabels}} de {{cameraName}} es mostraran com avisos.",
@@ -1249,5 +1341,254 @@
}
},
"title": "Paràmetres de Revisió de la Càmera"
- }
+ },
+ "saveAllPreview": {
+ "title": "Canvis a desar",
+ "triggerLabel": "Revisa els canvis pendents",
+ "empty": "No hi ha canvis pendents.",
+ "scope": {
+ "label": "Àmbit",
+ "global": "Global",
+ "camera": "Càmara:{{cameraName}}"
+ },
+ "field": {
+ "label": "Camp"
+ },
+ "value": {
+ "label": "Valor nou",
+ "reset": "Restableix"
+ }
+ },
+ "detectionModel": {
+ "plusActive": {
+ "title": "Gestió del model Frigate+",
+ "label": "Font del model actual",
+ "description": "Aquesta instància està executant un model Frigate+. Seleccioneu o canvieu el vostre model a la configuració de Frigate+.",
+ "goToFrigatePlus": "Ves a la configuració de Frigate+",
+ "showModelForm": "Configuració manual d'un model"
+ }
+ },
+ "maintenance": {
+ "title": "Manteniment",
+ "sync": {
+ "title": "Sincronització multimèdia",
+ "desc": "Frigate netejarà periòdicament els mitjans en un horari regular segons la configuració de la seva retenció. És normal veure alguns arxius orfes mentre corre Frigate. Utilitzeu aquesta característica per eliminar fitxers multimèdia orfes del disc que ja no estan referenciats a la base de dades.",
+ "started": "S'ha iniciat la sincronització del mitjà.",
+ "alreadyRunning": "Ja s'està executant una tasca de sincronització",
+ "error": "No s'ha pogut iniciar la sincronització",
+ "currentStatus": "Estat",
+ "jobId": "ID de la tasca",
+ "startTime": "Hora d'inici",
+ "endTime": "Hora final",
+ "statusLabel": "Estat",
+ "results": "Resultats",
+ "errorLabel": "Error",
+ "mediaTypes": "Tipus de suport",
+ "allMedia": "Tots els suports",
+ "dryRun": "Executa en sec",
+ "dryRunEnabled": "No s'eliminarà cap fitxer",
+ "dryRunDisabled": "S'eliminaran els fitxers",
+ "force": "Força",
+ "forceDesc": "Evita el llindar de seguretat i completa la sincronització fins i tot si més del 50% dels fitxers s'eliminarien.",
+ "running": "Sincronització en execució...",
+ "start": "Inicia la sincronització",
+ "inProgress": "La sincronització està en curs. Aquesta pàgina està desactivada.",
+ "status": {
+ "queued": "En cua",
+ "running": "En execució",
+ "completed": "Completat",
+ "failed": "Ha fallat",
+ "notRunning": "No s'està executant"
+ },
+ "resultsFields": {
+ "filesChecked": "Fitxers comprovats",
+ "orphansFound": "Orfes trobades",
+ "orphansDeleted": "Orfes eliminats",
+ "aborted": "Avortat. La supressió superaria el llindar de seguretat.",
+ "error": "Error",
+ "totals": "Totals"
+ },
+ "event_snapshots": "Instantànies de l'objecte rastrejat",
+ "event_thumbnails": "Miniatures d'objecte rastrejat",
+ "review_thumbnails": "Revisa les miniatures",
+ "previews": "Previsualitzacions",
+ "exports": "Exporta",
+ "recordings": "Enregistraments"
+ }
+ },
+ "configForm": {
+ "global": {
+ "title": "Configuració global",
+ "description": "Aquestes opcions de configuració s'apliquen a totes les càmeres, llevat que se substitueixin en la configuració específica de la càmera."
+ },
+ "camera": {
+ "title": "Configuració de la càmera",
+ "description": "Aquests paràmetres només s'apliquen a aquesta càmera i substitueixen els paràmetres globals."
+ },
+ "advancedSettingsCount": "Configuració avançada ({{count}})",
+ "advancedCount": "Avançat ({{count}})",
+ "showAdvanced": "Mostra la configuració avançada",
+ "tabs": {
+ "sharedDefaults": "Per defecte compartit",
+ "system": "Sistema",
+ "integrations": "Integracions"
+ },
+ "additionalProperties": {
+ "keyLabel": "Clau",
+ "valueLabel": "Valor",
+ "keyPlaceholder": "Nou valor",
+ "remove": "Elimina"
+ },
+ "timezone": {
+ "defaultOption": "Utilitza la zona horària del navegador"
+ },
+ "roleMap": {
+ "empty": "No hi ha assignacions de rols",
+ "roleLabel": "Rol",
+ "groupsLabel": "Grups",
+ "addMapping": "Afegeix un mapatge de rol",
+ "remove": "Elimina"
+ },
+ "ffmpegArgs": {
+ "preset": "Predefinit",
+ "manual": "Arguments manuals",
+ "inherit": "Hereta de la configuració de la càmera",
+ "selectPreset": "Selecció de valors predefinits",
+ "manualPlaceholder": "ntroduïu els arguments FFmpeg"
+ },
+ "cameraInputs": {
+ "itemTitle": "Flux {{index}}"
+ },
+ "restartRequiredField": "Reinicia requerit",
+ "restartRequiredFooter": "S'ha canviat la configuració - es requereix reiniciar",
+ "sections": {
+ "detect": "Detecció",
+ "record": "Enregistrament",
+ "snapshots": "Instantànies",
+ "motion": "Moviment",
+ "objects": "Objectes",
+ "review": "Revisió",
+ "audio": "Àudio",
+ "notifications": "Notificacions",
+ "live": "Vista en viu",
+ "timestamp_style": "Marques temporals",
+ "mqtt": "MQTT",
+ "database": "Base de dades",
+ "telemetry": "Telemetria",
+ "auth": "Autenticació",
+ "tls": "TLS",
+ "proxy": "Proxy",
+ "go2rtc": "go2rtc",
+ "ffmpeg": "FFmpeg",
+ "detectors": "Detectors",
+ "model": "Model",
+ "semantic_search": "Cerca semàntica",
+ "genai": "GenAI",
+ "face_recognition": "Reconeixement de cares",
+ "lpr": "Reconeixement de matrícules",
+ "birdseye": "Birdseye"
+ },
+ "detect": {
+ "title": "Configuració de detecció"
+ },
+ "detectors": {
+ "title": "Configuració del detector",
+ "singleType": "Només es permet un detector {{type}}.",
+ "keyRequired": "Es requereix el nom del detector.",
+ "keyDuplicate": "El nom del detector ja existeix.",
+ "noSchema": "No hi ha esquemes de detector disponibles.",
+ "none": "No s'ha configurat cap instància de detector.",
+ "add": "Afegeix un detector"
+ },
+ "record": {
+ "title": "Configuració de l'enregistrament"
+ },
+ "snapshots": {
+ "title": "Configuració de la instantània"
+ },
+ "motion": {
+ "title": "Configuració del moviment"
+ },
+ "objects": {
+ "title": "Configuració de l'objecte"
+ },
+ "audioLabels": {
+ "summary": "{{count}} etiquetes d'àudio seleccionades",
+ "empty": "No hi ha etiquetes d'àudio disponibles"
+ },
+ "objectLabels": {
+ "summary": "{{count}} tipus d'objectes seleccionats",
+ "empty": "No hi ha cap etiqueta d'objecte disponible"
+ },
+ "filters": {
+ "objectFieldLabel": "{{field}} per {{label}}"
+ },
+ "zoneNames": {
+ "summary": "{{count}} seleccionats",
+ "empty": "No hi ha zones disponibles"
+ },
+ "inputRoles": {
+ "summary": "{{count}} rols seleccionats",
+ "empty": "No hi ha cap rol disponible",
+ "options": {
+ "detect": "Detecta",
+ "record": "Registre",
+ "audio": "Àudio"
+ }
+ },
+ "review": {
+ "title": "Configuració de la revisió"
+ },
+ "audio": {
+ "title": "Configuració de l'àudio"
+ },
+ "notifications": {
+ "title": "Configuració de notificacions"
+ },
+ "live": {
+ "title": "Configuració de la vista en viu"
+ },
+ "timestamp_style": {
+ "title": "Configuració de la marca horària"
+ },
+ "searchPlaceholder": "Cerca..."
+ },
+ "globalConfig": {
+ "title": "Configuració global",
+ "description": "Configura la configuració global que s'aplica a totes les càmeres llevat que se sobreescriti.",
+ "toast": {
+ "success": "La configuració global s'ha desat correctament",
+ "error": "No s'ha pogut desar la configuració global",
+ "validationError": "Ha fallat la validació"
+ }
+ },
+ "cameraConfig": {
+ "title": "Configuració de la càmera",
+ "description": "Configura la configuració per a les càmeres individuals. La configuració substitueix els valors predeterminats globals.",
+ "overriddenBadge": "Sobreescrit",
+ "resetToGlobal": "Restableix a global",
+ "toast": {
+ "success": "La configuració de la càmera s'ha desat correctament",
+ "error": "Ha fallat en desar la configuració de la càmera"
+ }
+ },
+ "toast": {
+ "success": "La configuració s'ha desat correctament",
+ "successRestartRequired": "La configuració s'ha desat correctament. Reinicia Frigate per aplicar els canvis.",
+ "error": "No s'ha pogut desar la configuració",
+ "validationError": "Ha fallat la validació: {{message}}",
+ "resetSuccess": "Restableix als valors predeterminats globals",
+ "resetError": "No s'ha pogut restablir la configuració",
+ "saveAllSuccess_one": "S'ha desat la secció {{count}} correctament.",
+ "saveAllSuccess_many": "Totes les {{count}} seccions s'han desat correctament.",
+ "saveAllSuccess_other": "Totes les {{count}} seccions s'han desat correctament.",
+ "saveAllPartial_one": "{{successCount}} de la secció {{totalCount}} desada. {{failCount}} ha fallat.",
+ "saveAllPartial_many": "{{successCount}} de {{totalCount}} seccions desades. {{failCount}} ha fallat.",
+ "saveAllPartial_other": "{{successCount}} de {{totalCount}} seccions desades. {{failCount}} ha fallat.",
+ "saveAllFailure": "Ha fallat en desar totes les seccions."
+ },
+ "unsavedChanges": "Teniu canvis sense desar",
+ "confirmReset": "Confirma el restabliment",
+ "resetToDefaultDescription": "Això restablirà tots els paràmetres d'aquesta secció als seus valors predeterminats. Aquesta acció no es pot desfer.",
+ "resetToGlobalDescription": "Això restablirà la configuració d'aquesta secció als valors predeterminats globals. Aquesta acció no es pot desfer."
}
diff --git a/web/public/locales/ca/views/system.json b/web/public/locales/ca/views/system.json
index 312f3c299..1ab73a56f 100644
--- a/web/public/locales/ca/views/system.json
+++ b/web/public/locales/ca/views/system.json
@@ -80,8 +80,10 @@
"intelGpuWarning": {
"title": "Avís d'estadístiques de la GPU d'Intel",
"message": "Estadístiques de GPU no disponibles",
- "description": "Aquest és un error conegut en les eines d'informació de les estadístiques de GPU d'Intel (intel.gpu.top) on es trencarà i retornarà repetidament un ús de GPU del 0% fins i tot en els casos en què l'acceleració del maquinari i la detecció d'objectes s'executen correctament a la (i)GPU. Això no és un error de fragata. Podeu reiniciar l'amfitrió per a corregir temporalment el problema i confirmar que la GPU funciona correctament. Això no afecta el rendiment."
- }
+ "description": "Aquest és un error conegut en les eines d'informació de les estadístiques de GPU d'Intel (intel.gpu.top) on es trencarà i retornarà repetidament un ús de GPU del 0% fins i tot en els casos en què l'acceleració del maquinari i la detecció d'objectes s'executen correctament a la (i)GPU. Això no és un error de Frigate. Podeu reiniciar l'amfitrió per a corregir temporalment el problema i confirmar que la GPU funciona correctament. Això no afecta el rendiment."
+ },
+ "gpuTemperature": "Temperatura de la GPU",
+ "npuTemperature": "Temperatura NPU"
},
"otherProcesses": {
"title": "Altres processos",
@@ -165,6 +167,17 @@
"error": {
"unableToProbeCamera": "No s'ha pogut sondejar la càmera: {{errorMessage}}"
}
+ },
+ "connectionQuality": {
+ "title": "Qualitat de la connexió",
+ "excellent": "Excel·lent",
+ "fair": "Fira",
+ "poor": "Pobre",
+ "unusable": "No utilitzable",
+ "fps": "FPS",
+ "expectedFps": "FPS esperat",
+ "reconnectsLastHour": "Reconnecta (última hora)",
+ "stallsLastHour": "Parades (última hora)"
}
},
"lastRefreshed": "Darrera actualització: ",
diff --git a/web/public/locales/cs/common.json b/web/public/locales/cs/common.json
index 480f03e7b..257bb8bd3 100644
--- a/web/public/locales/cs/common.json
+++ b/web/public/locales/cs/common.json
@@ -133,7 +133,7 @@
},
"unit": {
"speed": {
- "kph": "Km/h",
+ "kph": "km/h",
"mph": "míle/h"
},
"length": {
@@ -177,7 +177,7 @@
"fi": "Suomi (Finština)",
"sk": "Slovenčina (Slovenština)",
"withSystem": {
- "label": "Použít systémové nastavení pro jazyk"
+ "label": "Použít systémové nastavení jazyka"
},
"zhCN": "简体中文 (Zjednodušená čínština)",
"es": "Español (Španělština)",
@@ -205,14 +205,15 @@
"pl": "Polski (Polština)",
"th": "ไทย (Thaiština)",
"ca": "Català (Katalánština)",
- "sl": "Slovinština (Slovinsko)",
- "ptBR": "Português brasileiro (Brazilian Portuguese)",
- "sr": "Српски (Serbian)",
- "lt": "Lietuvių (Lithuanian)",
- "bg": "Български (Bulgarian)",
- "gl": "Galego (Galician)",
- "id": "Bahasa Indonesia (Indonesian)",
- "ur": "اردو (Urdu)"
+ "sl": "Slovinština (Slovinština)",
+ "ptBR": "Português brasileiro (Brazilská Portugalština)",
+ "sr": "Српски (Srbština)",
+ "lt": "Lietuvių (Litevština)",
+ "bg": "Български (Bulharština)",
+ "gl": "Galego (Galicijština)",
+ "id": "Bahasa Indonesia (Indonéština)",
+ "ur": "اردو (Urdština)",
+ "hr": "Hrvatski (Chorvatština)"
},
"theme": {
"highcontrast": "Vysoký kontrast",
diff --git a/web/public/locales/ab/components/filter.json b/web/public/locales/cs/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/components/filter.json
rename to web/public/locales/cs/config/cameras.json
diff --git a/web/public/locales/ab/components/icons.json b/web/public/locales/da/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/components/icons.json
rename to web/public/locales/da/config/cameras.json
diff --git a/web/public/locales/ab/components/input.json b/web/public/locales/de/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/components/input.json
rename to web/public/locales/de/config/cameras.json
diff --git a/web/public/locales/ab/components/player.json b/web/public/locales/el/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/components/player.json
rename to web/public/locales/el/config/cameras.json
diff --git a/web/public/locales/ab/objects.json b/web/public/locales/es/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/objects.json
rename to web/public/locales/es/config/cameras.json
diff --git a/web/public/locales/et/common.json b/web/public/locales/et/common.json
index 8f68c3cb8..8e4d3442b 100644
--- a/web/public/locales/et/common.json
+++ b/web/public/locales/et/common.json
@@ -178,7 +178,8 @@
"export": "Ekspordi",
"uiPlayground": "Leht kasutajaliidese katsetamiseks",
"faceLibrary": "Näoteek",
- "classification": "Klassifikatsioon"
+ "classification": "Klassifikatsioon",
+ "chat": "Vestlus"
},
"unit": {
"speed": {
@@ -234,7 +235,17 @@
"export": "Ekspordi",
"deleteNow": "Kustuta kohe",
"next": "Järgmine",
- "continue": "Jätka"
+ "continue": "Jätka",
+ "add": "Lisa",
+ "undo": "Võta tegevus tagasi",
+ "copiedToClipboard": "Kopeeritud lõikelauale",
+ "modified": "Muudetud",
+ "overridden": "Sürjutatud",
+ "resetToDefault": "Lähtesta vaikimisi väärtusteks",
+ "saveAll": "Salvesta kõik",
+ "resetToGlobal": "Lähtesta üldiseks väärtusteks",
+ "savingAll": "Salvestan kõiki…",
+ "undoAll": "Pööra kõik tegevused tagasi"
},
"label": {
"back": "Mine tagasi",
diff --git a/web/public/locales/ab/views/classificationModel.json b/web/public/locales/et/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/classificationModel.json
rename to web/public/locales/et/config/cameras.json
diff --git a/web/public/locales/fa/common.json b/web/public/locales/fa/common.json
index 3b9e02617..ba8ea99bc 100644
--- a/web/public/locales/fa/common.json
+++ b/web/public/locales/fa/common.json
@@ -75,7 +75,8 @@
},
"inProgress": "در حال انجام",
"invalidStartTime": "زمان شروع نامعتبر است",
- "invalidEndTime": "زمان پایان نامعتبر است"
+ "invalidEndTime": "زمان پایان نامعتبر است",
+ "never": "هرگز"
},
"unit": {
"length": {
diff --git a/web/public/locales/ab/views/configEditor.json b/web/public/locales/fa/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/configEditor.json
rename to web/public/locales/fa/config/cameras.json
diff --git a/web/public/locales/ab/views/events.json b/web/public/locales/fi/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/events.json
rename to web/public/locales/fi/config/cameras.json
diff --git a/web/public/locales/fr/common.json b/web/public/locales/fr/common.json
index 39820367c..9377bd862 100644
--- a/web/public/locales/fr/common.json
+++ b/web/public/locales/fr/common.json
@@ -129,7 +129,10 @@
"deleteNow": "Supprimer maintenant",
"download": "Télécharger",
"done": "Terminé",
- "continue": "Continuer"
+ "continue": "Continuer",
+ "add": "Ajouter",
+ "undo": "Annuler",
+ "copiedToClipboard": "Copié dans le presse-papiers"
},
"menu": {
"configuration": "Configuration",
diff --git a/web/public/locales/fr/components/dialog.json b/web/public/locales/fr/components/dialog.json
index 5b3cf0242..a2accb930 100644
--- a/web/public/locales/fr/components/dialog.json
+++ b/web/public/locales/fr/components/dialog.json
@@ -77,6 +77,10 @@
"fromTimeline": {
"saveExport": "Enregistrer l'exportation",
"previewExport": "Aperçu de l'exportation"
+ },
+ "case": {
+ "label": "Dossier",
+ "placeholder": "Sélectionner un dossier"
}
},
"search": {
diff --git a/web/public/locales/ab/views/explore.json b/web/public/locales/fr/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/explore.json
rename to web/public/locales/fr/config/cameras.json
diff --git a/web/public/locales/fr/views/exports.json b/web/public/locales/fr/views/exports.json
index 3b698d003..fae8186f3 100644
--- a/web/public/locales/fr/views/exports.json
+++ b/web/public/locales/fr/views/exports.json
@@ -11,13 +11,27 @@
},
"toast": {
"error": {
- "renameExportFailed": "Échec du renommage de l'exportation : {{errorMessage}}"
+ "renameExportFailed": "Échec du renommage de l'exportation : {{errorMessage}}",
+ "assignCaseFailed": "Échec de la mise à jour de l'affectation au dossier : {{errorMessage}}"
}
},
"tooltip": {
"shareExport": "Partager l'exportation",
"downloadVideo": "Télécharger la vidéo",
"editName": "Modifier le nom",
- "deleteExport": "Supprimer l'exportation"
+ "deleteExport": "Supprimer l'exportation",
+ "assignToCase": "Ajouter à un dossier"
+ },
+ "headings": {
+ "cases": "Dossiers",
+ "uncategorizedExports": "Exportations non classées"
+ },
+ "caseDialog": {
+ "title": "Ajouter à un dossier",
+ "description": "Choisissez un dossier existant ou créez en un nouveau.",
+ "selectLabel": "Dossier",
+ "newCaseOption": "Créer un nouveau dossier",
+ "nameLabel": "Nom du dossier",
+ "descriptionLabel": "Description"
}
}
diff --git a/web/public/locales/fr/views/settings.json b/web/public/locales/fr/views/settings.json
index 6fe3c03a7..4c2fa3631 100644
--- a/web/public/locales/fr/views/settings.json
+++ b/web/public/locales/fr/views/settings.json
@@ -5,14 +5,17 @@
"camera": "Paramètres des caméras - Frigate",
"classification": "Paramètres de classification - Frigate",
"motionTuner": "Réglage de la détection de mouvement - Frigate",
- "general": "Paramètres de l'interface utilisateur - Frigate",
+ "general": "Paramètres du profil - Frigate",
"masksAndZones": "Éditeur de masques et de zones - Frigate",
"object": "Débogage - Frigate",
"frigatePlus": "Paramètres Frigate+ - Frigate",
"notifications": "Paramètres de notification - Frigate",
"enrichments": "Paramètres d'enrichissements - Frigate",
"cameraManagement": "Gestion des caméras - Frigate",
- "cameraReview": "Paramètres des activités caméra - Frigate"
+ "cameraReview": "Paramètres des activités caméra - Frigate",
+ "globalConfig": "Configuration globale - Frigate",
+ "cameraConfig": "Configuration de la caméra - Frigate",
+ "maintenance": "Maintenance - Frigate"
},
"menu": {
"ui": "Interface utilisateur",
@@ -28,7 +31,62 @@
"triggers": "Déclencheurs",
"roles": "Rôles",
"cameraManagement": "Gestion",
- "cameraReview": "Activités"
+ "cameraReview": "Activités",
+ "general": "Général",
+ "globalConfig": "Configuration globale",
+ "system": "Système",
+ "integrations": "Intégrations",
+ "profileSettings": "Paramètres du profil",
+ "globalDetect": "Détection d'objets",
+ "globalRecording": "Enregistrement",
+ "globalSnapshots": "Instantanés",
+ "globalFfmpeg": "FFmpeg",
+ "globalMotion": "Détection de mouvement",
+ "globalObjects": "Objets",
+ "globalReview": "Activités",
+ "globalAudioEvents": "Événements audio",
+ "globalLivePlayback": "Lecture en direct",
+ "globalTimestampStyle": "Format d'horodatage",
+ "systemDatabase": "Base de données",
+ "systemTls": "TLS",
+ "systemAuthentication": "Authentification",
+ "systemNetworking": "Réseau",
+ "systemProxy": "Proxy",
+ "systemUi": "Interface",
+ "systemLogging": "Journalisation",
+ "systemEnvironmentVariables": "Variables d'environnement",
+ "systemTelemetry": "Télémétrie",
+ "systemBirdseye": "Birdseye",
+ "systemFfmpeg": "FFmpeg",
+ "systemDetectorHardware": "Matériel de détection",
+ "systemDetectionModel": "Modèle de détection",
+ "systemMqtt": "MQTT",
+ "integrationSemanticSearch": "Recherche sémantique",
+ "integrationGenerativeAi": "IA générative",
+ "integrationFaceRecognition": "Reconnaissance faciale",
+ "integrationLpr": "Lecture de plaques d'immatriculation",
+ "integrationObjectClassification": "Classification d'objets",
+ "integrationAudioTranscription": "Transcription audio",
+ "cameraDetect": "Détection d'objets",
+ "cameraFfmpeg": "FFmpeg",
+ "cameraRecording": "Enregistrement",
+ "cameraSnapshots": "Instantanés",
+ "cameraMotion": "Détection de mouvement",
+ "cameraObjects": "Objets",
+ "cameraConfigReview": "Activités",
+ "cameraAudioEvents": "Évènements audio",
+ "cameraAudioTranscription": "Transcription audio",
+ "cameraNotifications": "Notifications",
+ "cameraLivePlayback": "Lecture en direct",
+ "cameraBirdseye": "Birdseye",
+ "cameraFaceRecognition": "Reconnaissance faciale",
+ "cameraLpr": "Lecture de plaques d'immatriculation",
+ "cameraMqttConfig": "MQTT",
+ "cameraOnvif": "ONVIF",
+ "cameraUi": "Interface de la caméra",
+ "cameraTimestampStyle": "Style d'horodatage",
+ "cameraMqtt": "MQTT de la caméra",
+ "maintenance": "Maintenance"
},
"dialog": {
"unsavedChanges": {
@@ -1315,5 +1373,21 @@
"success": "La configuration de la classification des activités a été enregistrée. Redémarrez Frigate pour appliquer les modifications."
}
}
+ },
+ "saveAllPreview": {
+ "title": "Modifications à enregistrer",
+ "triggerLabel": "Examiner les modifications en attente",
+ "empty": "Aucune modification en attente",
+ "scope": {
+ "label": "Portée",
+ "global": "Global",
+ "camera": "Caméra : {{cameraName}}"
+ },
+ "field": {
+ "label": "Champ"
+ },
+ "value": {
+ "label": "Nouvelle valeur"
+ }
}
}
diff --git a/web/public/locales/fr/views/system.json b/web/public/locales/fr/views/system.json
index 38babfe8d..47bbc506d 100644
--- a/web/public/locales/fr/views/system.json
+++ b/web/public/locales/fr/views/system.json
@@ -81,7 +81,9 @@
"title": "Avertissement relatif aux statistiques du GPU Intel",
"message": "Statistiques du GPU non disponibles",
"description": "Il s'agit d'un bug connu de l'outil de statistiques GPU d'Intel (intel_gpu_top) : il peut afficher à tort une utilisation de 0 %, même lorsque l'accélération matérielle et la détection d'objets fonctionnent correctement sur l'iGPU. Ce problème ne vient pas de Frigate. Vous pouvez redémarrer l'hôte pour rétablir temporairement l'affichage et confirmer le fonctionnement du GPU. Les performances ne sont pas affectées."
- }
+ },
+ "gpuTemperature": "Température du GPU",
+ "npuTemperature": "Température du NPU"
},
"otherProcesses": {
"title": "Autres processus",
diff --git a/web/public/locales/ab/views/exports.json b/web/public/locales/gl/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/exports.json
rename to web/public/locales/gl/config/cameras.json
diff --git a/web/public/locales/ab/views/faceLibrary.json b/web/public/locales/he/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/faceLibrary.json
rename to web/public/locales/he/config/cameras.json
diff --git a/web/public/locales/ab/views/live.json b/web/public/locales/hi/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/live.json
rename to web/public/locales/hi/config/cameras.json
diff --git a/web/public/locales/ab/views/recording.json b/web/public/locales/hr/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/recording.json
rename to web/public/locales/hr/config/cameras.json
diff --git a/web/public/locales/ab/views/search.json b/web/public/locales/hu/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/search.json
rename to web/public/locales/hu/config/cameras.json
diff --git a/web/public/locales/ab/views/settings.json b/web/public/locales/id/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/settings.json
rename to web/public/locales/id/config/cameras.json
diff --git a/web/public/locales/ab/views/system.json b/web/public/locales/is/config/cameras.json
similarity index 100%
rename from web/public/locales/ab/views/system.json
rename to web/public/locales/is/config/cameras.json
diff --git a/web/public/locales/it/common.json b/web/public/locales/it/common.json
index feb570ae9..7a7edb48c 100644
--- a/web/public/locales/it/common.json
+++ b/web/public/locales/it/common.json
@@ -129,7 +129,17 @@
"pictureInPicture": "Immagine nell'immagine",
"twoWayTalk": "Comunicazione bidirezionale",
"cameraAudio": "Audio della telecamera",
- "continue": "Continua"
+ "continue": "Continua",
+ "add": "Aggiungi",
+ "undo": "Annulla",
+ "copiedToClipboard": "Copiato negli appunti",
+ "modified": "Modificato",
+ "overridden": "Sovrascritto",
+ "resetToGlobal": "Ripristina impostazioni globali",
+ "resetToDefault": "Ripristina impostazioni predefinite",
+ "saveAll": "Salva tutto",
+ "savingAll": "Salvataggio di tutto…",
+ "undoAll": "Annulla tutto"
},
"unit": {
"speed": {
@@ -260,7 +270,8 @@
},
"withSystem": "Sistema",
"faceLibrary": "Raccolta volti",
- "classification": "Classificazione"
+ "classification": "Classificazione",
+ "chat": "Chat"
},
"pagination": {
"next": {
diff --git a/web/public/locales/it/components/dialog.json b/web/public/locales/it/components/dialog.json
index dd1753ee4..d0b09d38c 100644
--- a/web/public/locales/it/components/dialog.json
+++ b/web/public/locales/it/components/dialog.json
@@ -77,6 +77,10 @@
"select": "Seleziona",
"name": {
"placeholder": "Assegna un nome all'esportazione"
+ },
+ "case": {
+ "label": "Caso",
+ "placeholder": "Seleziona un caso"
}
},
"streaming": {
diff --git a/web/public/locales/ka/audio.json b/web/public/locales/it/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/audio.json
rename to web/public/locales/it/config/cameras.json
diff --git a/web/public/locales/it/views/exports.json b/web/public/locales/it/views/exports.json
index 186647521..232ac8254 100644
--- a/web/public/locales/it/views/exports.json
+++ b/web/public/locales/it/views/exports.json
@@ -11,13 +11,27 @@
},
"toast": {
"error": {
- "renameExportFailed": "Impossibile rinominare l'esportazione: {{errorMessage}}"
+ "renameExportFailed": "Impossibile rinominare l'esportazione: {{errorMessage}}",
+ "assignCaseFailed": "Impossibile aggiornare l'assegnazione del caso: {{errorMessage}}"
}
},
"tooltip": {
"shareExport": "Condividi esportazione",
"downloadVideo": "Scarica video",
"editName": "Modifica nome",
- "deleteExport": "Elimina esportazione"
+ "deleteExport": "Elimina esportazione",
+ "assignToCase": "Aggiungi al caso"
+ },
+ "headings": {
+ "cases": "Casi",
+ "uncategorizedExports": "Esportazioni non categorizzate"
+ },
+ "caseDialog": {
+ "title": "Aggiungi al caso",
+ "description": "Scegli un caso esistente o creane uno nuovo.",
+ "selectLabel": "Caso",
+ "newCaseOption": "Crea un nuovo caso",
+ "nameLabel": "Nome del caso",
+ "descriptionLabel": "Descrizione"
}
}
diff --git a/web/public/locales/it/views/system.json b/web/public/locales/it/views/system.json
index d5e92543b..6883fc397 100644
--- a/web/public/locales/it/views/system.json
+++ b/web/public/locales/it/views/system.json
@@ -70,7 +70,9 @@
"title": "Avviso statistiche GPU Intel",
"message": "Statistiche GPU non disponibili",
"description": "Si tratta di un problema noto negli strumenti di reportistica delle statistiche GPU di Intel (intel_gpu_top), che si interrompe e restituisce ripetutamente un utilizzo della GPU pari a 0% anche nei casi in cui l'accelerazione hardware e il rilevamento degli oggetti funzionano correttamente sulla (i)GPU. Non si tratta di un problema di Frigate. È possibile riavviare il sistema per risolvere temporaneamente il problema e verificare che la GPU funzioni correttamente. Ciò non influisce sulle prestazioni."
- }
+ },
+ "gpuTemperature": "Temperatura GPU",
+ "npuTemperature": "Temperatura NPU"
},
"detector": {
"inferenceSpeed": "Velocità inferenza rilevatore",
@@ -165,6 +167,17 @@
"error": {
"unableToProbeCamera": "Impossibile analizzare la telecamera: {{errorMessage}}"
}
+ },
+ "connectionQuality": {
+ "title": "Qualità connessione",
+ "excellent": "Ottima",
+ "fair": "Discreta",
+ "poor": "Scarsa",
+ "unusable": "Inutilizzabile",
+ "fps": "FPS",
+ "expectedFps": "FPS previsti",
+ "reconnectsLastHour": "Riconnessioni (ultima ora)",
+ "stallsLastHour": "Blocchi (ultima ora)"
}
},
"stats": {
diff --git a/web/public/locales/ka/common.json b/web/public/locales/ja/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/common.json
rename to web/public/locales/ja/config/cameras.json
diff --git a/web/public/locales/ko/common.json b/web/public/locales/ko/common.json
index e5c8ef9a9..b7632271e 100644
--- a/web/public/locales/ko/common.json
+++ b/web/public/locales/ko/common.json
@@ -11,7 +11,7 @@
"5minutes": "5분",
"untilRestart": "재시작 될 때까지",
"ago": "{{timeAgo}} 전",
- "justNow": "지금 막",
+ "justNow": "방금",
"today": "오늘",
"yesterday": "어제",
"last7": "최근 7일",
@@ -67,7 +67,11 @@
"formattedTimestampFilename": {
"12hour": "MM-dd-yy-h-mm-ss-a",
"24hour": "MM-dd-yy-HH-mm-ss"
- }
+ },
+ "never": "한 번도 없음",
+ "inProgress": "진행 중",
+ "invalidStartTime": "잘못된 시작 시간",
+ "invalidEndTime": "잘못된 종료 시간"
},
"notFound": {
"title": "404",
@@ -96,48 +100,49 @@
"configurationEditor": "설정 편집기",
"languages": "언어",
"language": {
- "en": "English (English)",
- "es": "Español (Spanish)",
- "zhCN": "简体中文 (Simplified Chinese)",
- "hi": "हिन्दी (Hindi)",
- "fr": "Français (French)",
- "ar": "العربية (Arabic)",
- "pt": "Português (Portuguese)",
- "ptBR": "Português brasileiro (Brazilian Portuguese)",
- "ru": "Русский (Russian)",
- "de": "Deutsch (German)",
- "ja": "日本語 (Japanese)",
- "tr": "Türkçe (Turkish)",
- "it": "Italiano (Italian)",
- "nl": "Nederlands (Dutch)",
- "sv": "Svenska (Swedish)",
- "cs": "Čeština (Czech)",
- "nb": "Norsk Bokmål (Norwegian Bokmål)",
- "ko": "한국어 (Korean)",
- "vi": "Tiếng Việt (Vietnamese)",
- "fa": "فارسی (Persian)",
- "pl": "Polski (Polish)",
- "uk": "Українська (Ukrainian)",
- "he": "עברית (Hebrew)",
- "el": "Ελληνικά (Greek)",
- "ro": "Română (Romanian)",
- "hu": "Magyar (Hungarian)",
+ "en": "English (영어)",
+ "es": "Español (스페인어)",
+ "zhCN": "简体中文 (중국어 간체)",
+ "hi": "हिन्दी (힌두어)",
+ "fr": "Français (프랑스어)",
+ "ar": "العربية (아랍어)",
+ "pt": "Português (포르투갈어)",
+ "ptBR": "Português brasileiro (브라질 포르투갈어)",
+ "ru": "Русский (러시아어)",
+ "de": "Deutsch (독일어)",
+ "ja": "日本語 (일본어)",
+ "tr": "Türkçe (튀르키예어)",
+ "it": "Italiano (이탈리아어)",
+ "nl": "Nederlands (네덜란드어)",
+ "sv": "Svenska (스웨덴어)",
+ "cs": "Čeština (체코어)",
+ "nb": "Norsk Bokmål (노르웨이어 보크몰)",
+ "ko": "한국어",
+ "vi": "Tiếng Việt (베트남어)",
+ "fa": "فارسی (페르시아어)",
+ "pl": "Polski (폴란드어)",
+ "uk": "Українська (우크라이나어)",
+ "he": "עברית (히브리어)",
+ "el": "Ελληνικά (그리스어)",
+ "ro": "Română (루마니아어)",
+ "hu": "Magyar (헝가리어)",
"fi": "Suomi (Finnish)",
- "da": "Dansk (Danish)",
- "sk": "Slovenčina (Slovak)",
- "yue": "粵語 (Cantonese)",
- "th": "ไทย (Thai)",
- "ca": "Català (Catalan)",
- "sr": "Српски (Serbian)",
- "sl": "Slovenščina (Slovenian)",
- "lt": "Lietuvių (Lithuanian)",
- "bg": "Български (Bulgarian)",
- "gl": "Galego (Galician)",
- "id": "Bahasa Indonesia (Indonesian)",
- "ur": "اردو (Urdu)",
+ "da": "Dansk (덴마크어)",
+ "sk": "Slovenčina (슬로바키아어)",
+ "yue": "粵語 (광둥어)",
+ "th": "ไทย (태국어)",
+ "ca": "Català (카탈로니아어)",
+ "sr": "Српски (세르비아어)",
+ "sl": "Slovenščina (슬로베니아어)",
+ "lt": "Lietuvių (리투아니아어)",
+ "bg": "Български (불가리아어)",
+ "gl": "Galego (갈리시아어)",
+ "id": "Bahasa Indonesia (인도네시아어)",
+ "ur": "اردو (우르두어)",
"withSystem": {
"label": "시스템 설정 언어 사용"
- }
+ },
+ "hr": "Hrvatski (크로아티아어)"
},
"appearance": "화면 설정",
"darkMode": {
@@ -175,8 +180,10 @@
"review": "다시보기",
"explore": "탐색",
"export": "내보내기",
- "uiPlayground": "UI 실험장",
- "faceLibrary": "얼굴 라이브러리"
+ "uiPlayground": "UI 실험실",
+ "faceLibrary": "얼굴 라이브러리",
+ "classification": "분류",
+ "chat": "채팅"
},
"unit": {
"speed": {
@@ -191,13 +198,19 @@
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
- "kbph": "kB/hour",
- "mbph": "MB/hour",
- "gbph": "GB/hour"
+ "kbph": "kB/시간",
+ "mbph": "MB/시간",
+ "gbph": "GB/시간"
}
},
"label": {
- "back": "뒤로"
+ "back": "뒤로",
+ "hide": "{{item}} 숨기기",
+ "show": "{{item}} 표시",
+ "ID": "아이디",
+ "none": "없음",
+ "all": "전체",
+ "other": "그 외"
},
"button": {
"apply": "적용",
@@ -216,7 +229,7 @@
"history": "히스토리",
"fullscreen": "전체화면",
"exitFullscreen": "전체화면 나가기",
- "pictureInPicture": "Picture in Picture",
+ "pictureInPicture": "화면 속 화면",
"twoWayTalk": "양방향 말하기",
"cameraAudio": "카메라 오디오",
"on": "켜기",
@@ -234,7 +247,18 @@
"unselect": "선택 해제",
"export": "내보내기",
"deleteNow": "바로 삭제하기",
- "next": "다음"
+ "next": "다음",
+ "add": "추가",
+ "undo": "실행 취소",
+ "copiedToClipboard": "클립보드에 복사",
+ "continue": "계속하기",
+ "modified": "수정됨",
+ "overridden": "재정의됨",
+ "resetToGlobal": "글로벌 설정으로 재설정",
+ "resetToDefault": "기본값으로 재설정",
+ "saveAll": "모두 저장",
+ "savingAll": "모두 저장 중. …",
+ "undoAll": "모두 실행 취소"
},
"toast": {
"copyUrlToClipboard": "클립보드에 URL이 복사되었습니다.",
@@ -267,5 +291,14 @@
"selectItem": "{{item}} 선택",
"information": {
"pixels": "{{area}}px"
+ },
+ "list": {
+ "two": "{{0}}과 {{1}}",
+ "many": "{{items}} 그리고 {{last}}",
+ "separatorWithSpace": ", "
+ },
+ "field": {
+ "optional": "선택",
+ "internalID": "Frigate 내부 ID는 구성 및 데이터베이스에서 사용됩니다"
}
}
diff --git a/web/public/locales/ko/components/dialog.json b/web/public/locales/ko/components/dialog.json
index f701526ef..af6c16556 100644
--- a/web/public/locales/ko/components/dialog.json
+++ b/web/public/locales/ko/components/dialog.json
@@ -6,7 +6,8 @@
"title": "Frigate이 재시작 중입니다",
"content": "이 페이지는 {{countdown}} 뒤에 새로 고침 됩니다.",
"button": "강제 재시작"
- }
+ },
+ "description": "이 작업은 Frigate가 재시작 되는 동안 잠시 작동이 중지됩니다."
},
"explore": {
"plus": {
@@ -15,7 +16,13 @@
},
"review": {
"question": {
- "label": "Frigate +에 이 레이블 등록하기"
+ "label": "Frigate +에 이 레이블 등록하기",
+ "ask_a": "이 것은 {{label}} 인가요?",
+ "ask_an": "이 것은 {{label}} 인가요?",
+ "ask_full": "이 것은 {{untranslatedLabel}} ({{translatedLabel}}) 인가요?"
+ },
+ "state": {
+ "submitted": "제출됨"
}
}
},
@@ -26,7 +33,7 @@
"export": {
"time": {
"fromTimeline": "타임라인에서 선택하기",
- "lastHour_other": "지난 시간",
+ "lastHour_other": "지난 {{count}} 시간",
"custom": "커스텀",
"start": {
"title": "시작 시간",
@@ -44,12 +51,13 @@
"export": "내보내기",
"selectOrExport": "선택 또는 내보내기",
"toast": {
- "success": "내보내기가 성공적으로 시작되었습니다. /exports 폴더에서 파일을 보실 수 있습니다.",
+ "success": "내보내기가 성공적으로 시작되었습니다. 내보내기 페이지에서 파일을 보실 수 있습니다.",
"error": {
"failed": "내보내기 시작 실패:{{error}}",
"endTimeMustAfterStartTime": "종료 시간은 시작 시간보다 뒤에 있어야합니다",
"noVaildTimeSelected": "유효한 시간 범위가 선택되지 않았습니다"
- }
+ },
+ "view": "보기"
},
"fromTimeline": {
"saveExport": "내보내기 저장",
@@ -86,7 +94,19 @@
},
"recording": {
"confirmDelete": {
- "title": "삭제 확인"
+ "title": "삭제 확인",
+ "desc": {
+ "selected": "이 리뷰 항목과 관련된 모든 녹화된 영상을 삭제하시겠습니까?
다음에 이 팝업을 건너뛰려면 Shift 키를 누르고 삭제하세요."
+ },
+ "toast": {
+ "success": "선택한 리뷰 항목과 관련된 동영상 파일이 성공적으로 삭제되었습니다.",
+ "error": "삭제 실패: {{error}}"
+ }
+ },
+ "button": {
+ "export": "내보내기",
+ "markAsReviewed": "검토 완료로 표시",
+ "markAsUnreviewed": "검토 안 함 표시"
}
}
}
diff --git a/web/public/locales/ka/components/auth.json b/web/public/locales/ko/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/components/auth.json
rename to web/public/locales/ko/config/cameras.json
diff --git a/web/public/locales/lt/components/dialog.json b/web/public/locales/lt/components/dialog.json
index ae5760132..fe2235a62 100644
--- a/web/public/locales/lt/components/dialog.json
+++ b/web/public/locales/lt/components/dialog.json
@@ -6,7 +6,8 @@
"title": "Frigate Persikrauna",
"content": "Šis puslapis persikraus už {{countdown}} sekundžių.",
"button": "Priverstinai Perkrauti Dabar"
- }
+ },
+ "description": "Frigate laikinai sustabdoma, iki kol programa persikraus."
},
"explore": {
"plus": {
diff --git a/web/public/locales/ka/components/camera.json b/web/public/locales/lt/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/components/camera.json
rename to web/public/locales/lt/config/cameras.json
diff --git a/web/public/locales/lt/views/exports.json b/web/public/locales/lt/views/exports.json
index dbb5483b7..32c2f6aeb 100644
--- a/web/public/locales/lt/views/exports.json
+++ b/web/public/locales/lt/views/exports.json
@@ -11,13 +11,27 @@
},
"toast": {
"error": {
- "renameExportFailed": "Nepavyko pervadinti eksportuojamo įrašo: {{errorMessage}}"
+ "renameExportFailed": "Nepavyko pervadinti eksportuojamo įrašo: {{errorMessage}}",
+ "assignCaseFailed": "Nepavyko atnaujinti atvėjo užduoties: {{errorMessage}}"
}
},
"tooltip": {
"shareExport": "Pasidalinti įrašu",
"downloadVideo": "Atsisiųsti video",
"editName": "Koreguoti pavadinimą",
- "deleteExport": "Ištrinti eksportus"
+ "deleteExport": "Ištrinti eksportus",
+ "assignToCase": "Pridėti prie atvėjo"
+ },
+ "headings": {
+ "cases": "Atvėjai",
+ "uncategorizedExports": "Nekategorizuoti eksportai"
+ },
+ "caseDialog": {
+ "title": "Pridėti prie atvėjo",
+ "selectLabel": "Atvėjis",
+ "newCaseOption": "Sukurti naują atvėjį",
+ "descriptionLabel": "Aprašymas",
+ "nameLabel": "Atvėjo pavadinimas",
+ "description": "Pasirinkite jau egzisutojantį atvėjį arba sukurkite naują."
}
}
diff --git a/web/public/locales/lt/views/faceLibrary.json b/web/public/locales/lt/views/faceLibrary.json
index cd7307a27..7122bfbfd 100644
--- a/web/public/locales/lt/views/faceLibrary.json
+++ b/web/public/locales/lt/views/faceLibrary.json
@@ -2,7 +2,8 @@
"description": {
"addFace": "Pridėkite naują kolekciją į Veidų Kolekciją įkeldami savo pirmą nuotrauką.",
"placeholder": "Įveskite pavadinimą šiai kolekcijai",
- "invalidName": "Netinkamas vardas. Vardas gali būti sudarytas tik iš raidžiū, skaičių, tarpų, apostrofų, pabraukimų ar brūkšnelių."
+ "invalidName": "Netinkamas vardas. Vardas gali būti sudarytas tik iš raidžiū, skaičių, tarpų, apostrofų, pabraukimų ar brūkšnelių.",
+ "nameCannotContainHash": "Pavadinime negali būti #."
},
"details": {
"person": "Žmogus",
diff --git a/web/public/locales/lt/views/settings.json b/web/public/locales/lt/views/settings.json
index 360f78d49..5914d3f8b 100644
--- a/web/public/locales/lt/views/settings.json
+++ b/web/public/locales/lt/views/settings.json
@@ -4,21 +4,23 @@
"authentication": "Autentifikavimo Nustatymai - Frigate",
"camera": "Kameros Nustatymai - Frigate",
"object": "Debug - Frigate",
- "general": "Vizualiniai Nustatymai - Frigate",
+ "general": "Išvaizdos Parametrai - Frigate",
"frigatePlus": "Frigate+ Nustatymai - Frigate",
"notifications": "Pranešimų Nustatymai - Frigate",
"motionTuner": "Judesio Derinimas - Frigate",
"enrichments": "Patobulinimų Nustatymai - Frigate",
"masksAndZones": "Maskavimo ir Zonų redaktorius - Frigate",
"cameraManagement": "Valdyti Kameras - Frigate",
- "cameraReview": "Kameros Peržiūros Nustatymai - Frigate"
+ "cameraReview": "Kameros Peržiūros Nustatymai - Frigate",
+ "globalConfig": "Visuotiniai Parametrai — Frigate",
+ "cameraConfig": "Kameros Parametrai — Frigate"
},
"menu": {
"ui": "UI",
"enrichments": "Patobulinimai",
"cameras": "Kameros Nustatymai",
"masksAndZones": "Maskavimai / Zonos",
- "motionTuner": "Judesio Derintojas",
+ "motionTuner": "Judesio Derinimas",
"debug": "Debug",
"users": "Vartotojai",
"notifications": "Pranešimai",
@@ -345,7 +347,7 @@
}
},
"motionMaskLabel": "Judesio Maskuotė {{number}}",
- "objectMaskLabel": "Obejkto Maskuotė {{number}} {{label}}",
+ "objectMaskLabel": "Obejkto Maskuotė {{number}}",
"form": {
"zoneName": {
"error": {
@@ -440,7 +442,7 @@
"desc": "Rodyti apribojančius stačiakampius aplink sekamus objektus",
"colors": {
"label": "Objektus Apribojančių Stačiakampių Spalvos",
- "info": "
Casete de mișcare
Casetele roșii vor fi suprapuse pe zonele din cadru unde este detectată în prezent mișcare
", - "title": "Casete de mișcare", - "desc": "Arată chenarele în jurul zonelor unde este detectată mișcare" + "tips": "Chenare de mișcare
Chenare roșii vor fi suprapuse pe zonele din cadru unde este detectată mișcare în prezent
", + "title": "Chenare de mișcare", + "desc": "Afișează chenare în zonele unde este detectată mișcare" }, "regions": { - "tips": "Casete de regiune
Casetele verde deschis vor fi suprapuse pe zonele de interes din cadru care sunt trimise către detectorul de obiecte.
", + "tips": "Chenare de regiune
Chenare verzi aprinse vor fi suprapuse pe zonele de interes din cadru care sunt trimise către detectorul de obiecte.
", "title": "Regiuni", - "desc": "Arată o casetă a regiunii de interes trimise detectorului de obiecte" + "desc": "Afișează regiunea de interes trimisă către detectorul de obiecte" }, - "desc": "Vizualizarea de depanare îți arată o vizualizare în timp real a obiectelor urmărite și a statisticilor acestora. Lista de obiecte afișează un rezumat întârziat al obiectelor detectate.", + "desc": "Vizualizarea de depanare arată în timp real obiectele urmărite și statisticile lor. Lista de obiecte arată un rezumat al obiectelor detectate.", "objectShapeFilterDrawing": { "document": "Citește documentația ", - "area": "Suprafață", + "area": "Arie", "title": "Desenare filtru formă obiect", - "desc": "Desenează un dreptunghi pe imagine pentru a vizualiza detaliile zonei și ale raportului", - "tips": "Activează această opțiune pentru a desena un dreptunghi pe imaginea camerei, pentru a-i arăta zona și raportul. Aceste valori pot fi apoi utilizate pentru a seta parametrii de filtrare a formei obiectelor în configurația ta.", + "desc": "Desenază un dreptunghi pe imagine pentru a vedea detaliile despre arie și raport", + "tips": "Activează această opțiune pentru a desena un dreptunghi pe imaginea camerei și a vedea aria și raportul acestuia. Aceste valori pot fi folosite ulterior pentru a seta parametrii filtrului de formă în configurație.", "score": "Scor", "ratio": "Raport" }, - "noObjects": "Nici un obiect", + "noObjects": "Niciun obiect", "boundingBoxes": { - "title": "Casete de delimitare", - "desc": "Afișează casete de delimitare în jurul obiectelor urmărite", + "title": "Chenare de încadrare", + "desc": "Afișează chenarele de încadrare în jurul obiectelor urmărite", "colors": { - "label": "Culori pentru casetele de delimitare ale obiectelor", - "info": "Căi
Liniile și cercurile vor indica punctele semnificative prin care obiectul urmărit s-a deplasat pe parcursul ciclului său de viață.
" + "tips": "Trasee
Liniile și cercurile vor indica punctele semnificative prin care obiectul urmărit a trecut în timpul existenței sale.
" }, "audio": { "title": "Audio", "noAudioDetections": "Nicio detecție audio", "score": "scor", - "currentRMS": "RMS curent", - "currentdbFS": "dbFS curent" + "currentRMS": "RMS actual", + "currentdbFS": "dbFS actual" }, - "openCameraWebUI": "Deschide interfața web pentru {{camera}}" + "openCameraWebUI": "Deschide interfața web a camerei {{camera}}" }, "users": { "dialog": { "deleteUser": { - "warn": "Ești sigur că vrei să ștergi utilizatorul {{username}}?", - "title": "Șterge utilizatorul", - "desc": "Această acțiune nu poate fi anulată. Aceasta va șterge definitiv contul de utilizator și va elimina toate datele asociate." + "warn": "Sigur vrei să ștergi utilizatorul {{username}}?", + "title": "Șterge utilizator", + "desc": "Această acțiune nu poate fi anulată. Contul va fi șters definitiv împreună cu toate datele asociate." }, "changeRole": { "desc": "Actualizează permisiunile pentru {{username}}", "roleInfo": { - "intro": "Selectează rolul potrivit pentru acest utilizator:", + "intro": "Selectează rolul corespunzător pentru acest utilizator:", "admin": "Administrator", "adminDesc": "Acces complet la toate funcțiile.", "viewer": "Vizualizator", - "viewerDesc": "Limitat doar la tablourile de bord Live, Revizuire, Explorare și Exporturi.", - "customDesc": "Rol personalizat cu acces specific la cameră." + "viewerDesc": "Limitat la tablouri de bord Live, Recenzii, Explorare și Exporturi.", + "customDesc": "Rol personalizat cu acces la camere specifice." }, "select": "Selectează un rol", "title": "Schimbă rolul utilizatorului" @@ -496,7 +576,7 @@ "password": { "strength": { "weak": "Slabă", - "title": "Putere parolă: ", + "title": "Complexitate parolă: ", "veryStrong": "Foarte puternică", "medium": "Medie", "strong": "Puternică" @@ -509,7 +589,7 @@ "title": "Parolă", "match": "Parolele se potrivesc", "notMatch": "Parolele nu se potrivesc", - "show": "Afișează parola", + "show": "Arată parola", "hide": "Ascunde parola", "requirements": { "title": "Cerințe parolă:", @@ -519,48 +599,48 @@ "special": "Cel puțin un caracter special (!@#$%^&*(),.?\":{}|<>)" } }, - "passwordIsRequired": "Este nevoie de parolă", + "passwordIsRequired": "Parola este obligatorie", "user": { - "placeholder": "Introdu nume utilizator", + "placeholder": "Introdu numele de utilizator", "title": "Nume utilizator", - "desc": "Sunt permise doar litere, cifre, puncte și subliniere." + "desc": "Sunt permise doar litere, cifre, puncte și sublinieri." }, "newPassword": { "title": "Parolă nouă", - "placeholder": "Introdu parola nouă", + "placeholder": "Introdu noua parolă", "confirm": { - "placeholder": "Re-introdu parola nouă" + "placeholder": "Introdu din nou noua parolă" } }, - "usernameIsRequired": "Este nevoie de numele de utilizator", + "usernameIsRequired": "Numele de utilizator este obligatoriu", "currentPassword": { - "title": "Parola curentă", - "placeholder": "Introduceți parola curentă" + "title": "Parola actuală", + "placeholder": "Introdu parola actuală" } }, "createUser": { - "confirmPassword": "Te rog să confirmi parola", - "title": "Crează un utilizator nou", - "desc": "Adaugă un cont de utilizator nou și specifică un rol pentru accesul la anumite zone ale interfeței Frigate.", - "usernameOnlyInclude": "Numele de utilizator poate conține doar litere, cifre, . sau _" + "confirmPassword": "Te rugăm să confirmi parola", + "title": "Creează utilizator nou", + "desc": "Adaugă un cont nou și specifică un rol pentru accesul în interfața Frigate.", + "usernameOnlyInclude": "Numele de utilizator poate conține doar litere, cifre, puncte (.) sau sublinieri (_)" }, "passwordSetting": { "cannotBeEmpty": "Parola nu poate fi goală", "doNotMatch": "Parolele nu se potrivesc", "updatePassword": "Actualizează parola pentru {{username}}", - "setPassword": "Schimbă parola", + "setPassword": "Setează parola", "desc": "Creează o parolă puternică pentru a securiza acest cont.", - "currentPasswordRequired": "Parola curentă este obligatorie", - "incorrectCurrentPassword": "Parola curentă incorectă", - "passwordVerificationFailed": "Nu s-a putut verifica parola", - "multiDeviceWarning": "Orice alte dispozitive pe care ești autentificat vor trebui să se autentifice din nou în termen de {{refresh_time}}.", - "multiDeviceAdmin": "De asemenea, poți forța toți utilizatorii să se reautentifice imediat prin rotirea secretului tău JWT." + "currentPasswordRequired": "Parola actuală este obligatorie", + "incorrectCurrentPassword": "Parola actuală este incorectă", + "passwordVerificationFailed": "Verificarea parolei a eșuat", + "multiDeviceWarning": "Orice alt dispozitiv pe care ești autentificat va necesita reautentificarea în {{refresh_time}}.", + "multiDeviceAdmin": "Poți de asemenea să forțezi toți utilizatorii să se reautentifice imediat prin rotirea secretului JWT." } }, "addUser": "Adaugă utilizator", "management": { "desc": "Gestionează conturile de utilizator ale acestei instanțe Frigate.", - "title": "Gestionare utilizatori" + "title": "Administrare utilizatori" }, "toast": { "success": { @@ -570,10 +650,10 @@ "deleteUser": "Utilizatorul {{user}} a fost șters cu succes" }, "error": { - "setPasswordFailed": "Salvarea parolei a eșuat: {{errorMessage}}", - "createUserFailed": "Crearea utilizatorului a eșuat: {{errorMessage}}", - "roleUpdateFailed": "Actualizarea rolului a eșuat: {{errorMessage}}", - "deleteUserFailed": "Ștergerea utilizatorului a eșuat: {{errorMessage}}" + "setPasswordFailed": "Eroare la salvarea parolei: {{errorMessage}}", + "createUserFailed": "Eroare la crearea utilizatorului: {{errorMessage}}", + "roleUpdateFailed": "Eroare la actualizarea rolului: {{errorMessage}}", + "deleteUserFailed": "Eroare la ștergerea utilizatorului: {{errorMessage}}" } }, "updatePassword": "Resetează parola", @@ -582,7 +662,7 @@ "username": "Nume utilizator", "actions": "Acțiuni", "role": "Rol", - "noUsers": "Nu a fost găsit niciun utilizator.", + "noUsers": "Niciun utilizator găsit.", "changeRole": "Schimbă rolul utilizatorului", "deleteUser": "Șterge utilizatorul", "password": "Resetează parola" @@ -590,120 +670,127 @@ }, "notification": { "notificationSettings": { - "title": "Setări pentru notificări", - "desc": "Frigate poate trimite nativ notificări push către dispozitivul tău atunci când rulează în browser sau este instalat ca PWA.", + "title": "Setări Notificări", + "desc": "Frigate poate trimite notificări push direct pe dispozitivul tău când rulează în browser sau este instalat ca PWA.", "documentation": "Citește documentația" }, "globalSettings": { - "desc": "Suspendă temporar notificările pentru camerele specifice pe toate dispozitivele înregistrate.", - "title": "Setări globale" + "desc": "Suspendă temporar notificările pentru anumite camere pe toate dispozitivele înregistrate.", + "title": "Setări Globale" }, "email": { - "placeholder": "ex. exemplu@email.com", - "desc": "Este necesar un email valid, care va fi folosit pentru a te notifica în cazul în care apar probleme cu serviciul de push.", + "placeholder": "ex: exemplu@email.com", + "desc": "E necesară o adresă de email validă pentru a te anunța dacă apar probleme cu serviciul de push.", "title": "Email" }, "notificationUnavailable": { "documentation": "Citește documentația", - "desc": "Notificările push web necesită un context securizat (https://…). Aceasta este o limitare a browserului. Accesează Frigate în mod securizat pentru a putea folosi notificările.",
- "title": "Notificările nu sunt disponibile"
+ "desc": "Notificările push web necesită un context securizat (https://…). Aceasta este o limitare a browserului. Accesează Frigate în mod securizat pentru a utiliza notificările.",
+ "title": "Notificări Indisponibile"
},
"cameras": {
"title": "Camere",
- "desc": "Selectează camerele pentru care dorești să activezi notificările.",
- "noCameras": "Nu există camere disponibile"
+ "desc": "Alege camerele pentru care vrei să activezi notificările.",
+ "noCameras": "Nicio cameră disponibilă"
},
- "deviceSpecific": "Setări specifice dispozitivului",
- "registerDevice": "Înregistrează acest dispozitiv",
- "unregisterDevice": "Deregistrează acest dispozitiv",
+ "deviceSpecific": "Setări Specifice Dispozitivului",
+ "registerDevice": "Înregistrează acest Dispozitiv",
+ "unregisterDevice": "Anulează Înregistrarea Dispozitivului",
"sendTestNotification": "Trimite o notificare de test",
"suspendTime": {
"12hours": "Suspendă pentru 12 ore",
"suspend": "Suspendă",
"5minutes": "Suspendă pentru 5 minute",
"10minutes": "Suspendă pentru 10 minute",
- "24hours": "Suspendă pentru 24 de ore",
- "untilRestart": "Suspendă până la restart",
- "1hour": "Suspendă pentru 1 oră",
+ "24hours": "Suspendă pentru 24 ore",
+ "untilRestart": "Suspendă până la repornire",
+ "1hour": "Suspendă pentru o oră",
"30minutes": "Suspendă pentru 30 minute"
},
"toast": {
"success": {
- "registered": "Înregistrarea pentru notificări a fost realizată cu succes. Este necesară repornirea Frigate înainte ca orice notificare (inclusiv o notificare de test) să poată fi trimisă.",
- "settingSaved": "Setările notificărilor au fost salvate."
+ "registered": "Înregistrarea pentru notificări a reușit. Este necesară repornirea Frigate înainte de a putea trimite orice notificare (inclusiv cea de test).",
+ "settingSaved": "Setările pentru notificări au fost salvate."
},
"error": {
- "registerFailed": "Eroare la salvarea înregistrării notificării."
+ "registerFailed": "Eroare la salvarea înregistrării notificărilor."
}
},
"suspended": "Notificări suspendate {{time}}",
- "active": "Notificări active",
- "unsavedRegistrations": "Înregistrări notificări nesalvate",
- "unsavedChanges": "Modificări ale notificărilor nesalvate",
+ "active": "Notificări Active",
+ "unsavedRegistrations": "Înregistrări de notificări nesalvate",
+ "unsavedChanges": "Modificări de notificări nesalvate",
"title": "Notificări",
- "cancelSuspension": "Anulează suspendarea"
+ "cancelSuspension": "Anulează Suspendarea"
},
"frigatePlus": {
"apiKey": {
- "plusLink": "Citește mai mult despre Frigate+",
+ "plusLink": "Citește mai multe despre Frigate+",
"desc": "Cheia API Frigate+ permite integrarea cu serviciul Frigate+.",
- "validated": "Frigate+ API key a fost detectată și validată",
- "title": "Frigate+ API Key",
- "notValidated": "Frigate+ API key nu a fost detectată sau nu a fost validată"
+ "validated": "Cheia API Frigate+ a fost detectată și validată",
+ "title": "Cheie API Frigate+",
+ "notValidated": "Cheia API Frigate+ nu este detectată sau validată"
},
"snapshotConfig": {
- "title": "Configurație snapshot-uri",
+ "title": "Configurare snapshot-uri",
"table": {
"snapshots": "Snapshot-uri",
"cleanCopySnapshots": "Snapshot-uri clean_copy",
"camera": "Cameră"
},
"documentation": "Citește documentația",
- "cleanCopyWarning": "Unele camere au snapshot-uri activate, dar copia curată (clean_copy) este dezactivată. Trebuie să activați clean_copy în configurația instantaneelor pentru a putea trimite imagini de la aceste camere către Frigate+.",
- "desc": "Trimiterea către Frigate+ necesită ca atât snapshot-urile, cât și snapshot-urile clean_copy să fie activate în configurația ta."
+ "cleanCopyWarning": "Unele camere au snapshot-uri activate, dar au copia curată dezactivată. Trebuie să activezi clean_copy în configurația snapshot-urilor pentru a putea trimite imagini de la aceste camere către Frigate+.",
+ "desc": "Trimiterea către Frigate+ necesită ca ambele opțiuni, snapshot-uri și clean_copy, să fie activate în configurație."
},
"modelInfo": {
- "title": "Informații model",
- "supportedDetectors": "Detectoare suportate",
+ "title": "Informații Model",
+ "supportedDetectors": "Detectoare Suportate",
"plusModelType": {
- "baseModel": "Model de bază",
- "userModel": "Reglat-fin"
+ "baseModel": "Model de Bază",
+ "userModel": "Reglat fin"
},
"loadingAvailableModels": "Se încarcă modelele disponibile…",
- "modelSelect": "Modelele disponibile pe Frigate+ pot fi selectate aici. Rețineți că pot fi selectate doar modelele compatibile cu configurația actuală a detectorului dumneavoastră.",
- "baseModel": "Model de bază",
- "loading": "Se încarcă informațiile modelului…",
- "error": "Încărcarea informațiilor modelului a eșuat",
- "availableModels": "Modele disponibile",
- "modelType": "Tip model",
- "trainDate": "Dată antrenare",
+ "modelSelect": "Poți selecta modelele tale disponibile pe Frigate+ aici. Reține că pot fi selectate doar modelele compatibile cu configurația actuală a detectorului.",
+ "baseModel": "Model de Bază",
+ "loading": "Se încarcă informațiile despre model…",
+ "error": "Eroare la încărcarea informațiilor despre model",
+ "availableModels": "Modele Disponibile",
+ "modelType": "Tip Model",
+ "trainDate": "Data Antrenării",
"cameras": "Camere"
},
"toast": {
- "error": "Nu s-au putut salva modificările configurației: {{errorMessage}}",
- "success": "Setările Frigate+ au fost salvate. Reporniti Frigate pentru a aplica modificările."
+ "error": "Eroare la salvarea modificărilor de config: {{errorMessage}}",
+ "success": "Setările Frigate+ au fost salvate. Repornește Frigate pentru a aplica modificările."
},
- "restart_required": "Repornire necesară (model Frigate+ schimbat)",
- "unsavedChanges": "Modificări nesalvate ale setărilor Frigate+",
- "title": "Setări Frigate+"
+ "restart_required": "Repornire necesară (modelul Frigate+ a fost schimbat)",
+ "unsavedChanges": "Modificări Frigate+ nesalvate",
+ "title": "Setări Frigate+",
+ "description": "Frigate+ este un serviciu pe bază de abonament care oferă funcții suplimentare, inclusiv posibilitatea de a folosi modele personalizate de detecție obiecte, antrenate pe propriile date. Poți gestiona setările modelului Frigate+ aici.",
+ "cardTitles": {
+ "api": "API",
+ "currentModel": "Model Actual",
+ "otherModels": "Alte Modele",
+ "configuration": "Configurație"
+ }
},
"motionDetectionTuner": {
- "unsavedChanges": "Modificări nesalvate la reglajul de mișcare pentru {{camera}}",
+ "unsavedChanges": "Modificări nesalvate la reglajul de mișcare ({{camera}})",
"Threshold": {
"title": "Prag",
- "desc": "Valoarea pragului determină cât de mare trebuie să fie schimbarea luminozității unui pixel pentru a fi considerată mișcare. Implicit: 30"
+ "desc": "Valoarea pragului dictează cât de mult trebuie să se schimbe luminanța unui pixel pentru a fi considerat mișcare. Implicit: 30"
},
"contourArea": {
- "desc": "Valoarea suprafeței conturului este folosită pentru a decide care grupuri de pixeli modificați se califică ca mișcare. Implicit: 10",
- "title": "Suprafața conturului"
+ "desc": "Valoarea ariei conturului este folosită pentru a decide care grupuri de pixeli modificați se califică drept mișcare. Implicit: 10",
+ "title": "Aria conturului"
},
"improveContrast": {
"title": "Îmbunătățire contrast",
- "desc": "Îmbunătățește contrastul pentru scene întunecate. Implicit: ACTIVAT"
+ "desc": "Îmbunătățește contrastul pentru scenele întunecate. Implicit: ACTIVAT"
},
"desc": {
- "title": "Frigate utilizează detecția mișcării ca o primă verificare, pentru a vedea dacă există ceva semnificativ în cadru care merită verificat cu detecția de obiecte.",
- "documentation": "Citește ghidul pentru reglajul mișcării"
+ "title": "Frigate folosește detecția de mișcare ca prim pas pentru a verifica dacă se întâmplă ceva în cadru ce merită verificat cu detecția de obiecte.",
+ "documentation": "Citește Ghidul de reglare a mișcării"
},
"toast": {
"success": "Setările de mișcare au fost salvate."
@@ -711,21 +798,21 @@
"title": "Reglaj detecție mișcare"
},
"triggers": {
- "documentTitle": "Declanșatoare",
+ "documentTitle": "Triggere",
"management": {
- "title": "Declanșatoare",
- "desc": "Gestionează declanșatoarele pentru {{camera}}. Folosește tipul miniatură pentru a declanșa pe miniaturi similare cu obiectul urmărit selectat și tipul descriere pentru a declanșa pe descrieri similare textului pe care îl specifici."
+ "title": "Triggere",
+ "desc": "Gestionează triggerele pentru {{camera}}. Folosește tipul „thumbnail” pentru a declanșa la miniaturi similare cu obiectul urmărit, și tipul „descriere” pentru a declanșa la descrieri similare cu textul specificat."
},
- "addTrigger": "Adaugă declanșator",
+ "addTrigger": "Adaugă Trigger",
"table": {
"name": "Nume",
"type": "Tip",
"content": "Conținut",
"threshold": "Prag",
"actions": "Acțiuni",
- "noTriggers": "Nu sunt configurate declanșatoare pentru această cameră.",
+ "noTriggers": "Nu există triggere configurate pentru această cameră.",
"edit": "Editează",
- "deleteTrigger": "Elimină declanșatorul",
+ "deleteTrigger": "Șterge Trigger",
"lastTriggered": "Ultima declanșare"
},
"type": {
@@ -734,64 +821,64 @@
},
"actions": {
"alert": "Marchează ca alertă",
- "notification": "Trimite notificare",
- "sub_label": "Adaugă subeticheta",
- "attribute": "Adaugă atribut"
+ "notification": "Trimite Notificare",
+ "sub_label": "Adaugă Sub-etichetă",
+ "attribute": "Adaugă Atribut"
},
"dialog": {
"createTrigger": {
- "title": "Crează declanșator",
- "desc": "Creează un declanșator pentru camera {{camera}}"
+ "title": "Creează Trigger",
+ "desc": "Creează un trigger pentru camera {{camera}}"
},
"editTrigger": {
- "title": "Editează declanșatorul",
- "desc": "Editează setările pentru declanșatorul de pe camera {{camera}}"
+ "title": "Editează Trigger",
+ "desc": "Editează setările pentru triggerul de pe camera {{camera}}"
},
"deleteTrigger": {
- "title": "Elimină declanșatorul",
- "desc": "Ești sigur că vrei să ștergi declanșatorul {{triggerName}}? Această acțiune nu poate fi anulată."
+ "title": "Șterge Trigger",
+ "desc": "Sigur vrei să ștergi triggerul {{triggerName}}? Această acțiune nu poate fi anulată."
},
"form": {
"name": {
"title": "Nume",
- "placeholder": "Denumește acest declanșator",
+ "placeholder": "Pune un nume acestui trigger",
"error": {
"minLength": "Câmpul trebuie să aibă cel puțin 2 caractere.",
- "invalidCharacters": "Câmpul poate conține doar litere, cifre, underscore-uri și cratime.",
- "alreadyExists": "Un declanșator cu acest nume există deja pentru această cameră."
+ "invalidCharacters": "Câmpul poate conține doar litere, cifre, underscore (_) și cratime (-).",
+ "alreadyExists": "Un trigger cu acest nume există deja pentru această cameră."
},
- "description": "Introduceți un nume sau o descriere unică pentru a identifica acest declanșator"
+ "description": "Introdu un nume unic sau o descriere pentru a identifica acest trigger"
},
"enabled": {
- "description": "Activează sau dezactivează acest declanșator"
+ "description": "Activează sau dezactivează acest trigger"
},
"type": {
"title": "Tip",
- "placeholder": "Selectează tipul de declanșator",
- "description": "Declanșează atunci când este detectată o descriere de obiect urmărit similară",
- "thumbnail": "Declanșează atunci când este detectată o miniatură de obiect urmărit similară"
+ "placeholder": "Selectează tipul triggerului",
+ "description": "Declanșează când este detectată o descriere similară a obiectului urmărit",
+ "thumbnail": "Declanșează când este detectată o miniatură similară a obiectului urmărit"
},
"content": {
"title": "Conținut",
"imagePlaceholder": "Selectează o miniatură",
- "textPlaceholder": "Introdu conținutul textului",
- "imageDesc": "Sunt afișate doar ultimele 100 de miniaturi. Dacă nu găsiți miniatura dorită, vă rugăm să verificați obiectele anterioare în Explorator și să configurați un declanșator din meniul de acolo.",
- "textDesc": "Introduceți textul pentru a declanșa această acțiune atunci când este detectată o descriere de obiect urmărit similară.",
+ "textPlaceholder": "Introdu textul",
+ "imageDesc": "Sunt afișate doar cele mai recente 100 de miniaturi. Dacă nu găsești miniatura dorită, verifică obiectele anterioare în secțiunea Explore și configurează un trigger de acolo.",
+ "textDesc": "Introdu textul pentru a declanșa acțiunea atunci când este detectată o descriere similară a obiectului urmărit.",
"error": {
"required": "Conținutul este obligatoriu."
}
},
"threshold": {
- "title": "Prag",
+ "title": "Prag (Threshold)",
"error": {
"min": "Pragul trebuie să fie cel puțin 0",
- "max": "Pragul trebuie să fie cel mult 1"
+ "max": "Pragul trebuie să fie maxim 1"
},
- "desc": "Setați pragul de similitudine pentru acest declanșator. Un prag mai mare înseamnă că este necesară o potrivire mai apropiată pentru declanșarea acestuia."
+ "desc": "Setează pragul de similitudine. Un prag mai mare înseamnă că este necesară o potrivire mai exactă pentru a declanșa."
},
"actions": {
"title": "Acțiuni",
- "desc": "În mod implicit, Frigate trimite un mesaj MQTT pentru toate declanșatoarele. Subetichetele adaugă numele declanșatorului la eticheta obiectului. Atributele sunt metadate căutabile, stocate separat în metadatele obiectului urmărit.",
+ "desc": "În mod implicit, Frigate trimite un mesaj MQTT pentru toate triggerele. Sub-etichetele adaugă numele triggerului la eticheta obiectului. Atributele sunt metadate căutabile stocate separat.",
"error": {
"min": "Trebuie selectată cel puțin o acțiune."
}
@@ -805,66 +892,66 @@
},
"toast": {
"success": {
- "createTrigger": "Declanșatorul {{name}} a fost creat cu succes.",
- "updateTrigger": "Declanșatorul {{name}} a fost actualizat cu succes.",
- "deleteTrigger": "Declanșatorul {{name}} a fost eliminat cu succes."
+ "createTrigger": "Triggerul {{name}} a fost creat cu succes.",
+ "updateTrigger": "Triggerul {{name}} a fost actualizat cu succes.",
+ "deleteTrigger": "Triggerul {{name}} a fost șters."
},
"error": {
- "createTriggerFailed": "Crearea declanșatorului a eșuat: {{errorMessage}}",
- "updateTriggerFailed": "Actualizarea declanșatorului a eșuat: {{errorMessage}}",
- "deleteTriggerFailed": "Eliminarea declanșatorului a eșuat: {{errorMessage}}"
+ "createTriggerFailed": "Eroare la crearea triggerului: {{errorMessage}}",
+ "updateTriggerFailed": "Eroare la actualizarea triggerului: {{errorMessage}}",
+ "deleteTriggerFailed": "Eroare la ștergerea triggerului: {{errorMessage}}"
}
},
"semanticSearch": {
- "title": "Căutarea semantică este dezactivată",
- "desc": "Căutarea semantică trebuie să fie activată pentru a utiliza declanșatoarele."
+ "title": "Căutarea Semantică este dezactivată",
+ "desc": "Căutarea Semantică trebuie să fie activată pentru a folosi Triggere."
},
"wizard": {
- "title": "Creează declanșator",
+ "title": "Creează Trigger",
"step1": {
- "description": "Configurează setările de bază pentru declanșatorul tău."
+ "description": "Configurează setările de bază pentru trigger."
},
"step2": {
- "description": "Configurează conținutul care va declanșa această acțiune."
+ "description": "Setează conținutul care va declanșa această acțiune."
},
"step3": {
- "description": "Configurează pragul și acțiunile pentru acest declanșator."
+ "description": "Configurează pragul și acțiunile pentru acest trigger."
},
"steps": {
"nameAndType": "Nume și Tip",
- "configureData": "Configurează datele",
+ "configureData": "Configurare Date",
"thresholdAndActions": "Prag și Acțiuni"
}
}
},
"roles": {
"management": {
- "title": "Gestionare rol vizualizator",
- "desc": "Gestionează rolurile personalizate de vizualizator și permisiunile lor de acces la cameră pentru această instanță Frigate."
+ "title": "Administrare roluri vizualizator",
+ "desc": "Gestionează rolurile de vizualizator personalizate și permisiunile de acces la camere pentru această instanță Frigate."
},
"addRole": "Adaugă rol",
"table": {
"role": "Rol",
"cameras": "Camere",
"actions": "Acțiuni",
- "noRoles": "Nu au fost găsite roluri personalizate.",
+ "noRoles": "Nu s-au găsit roluri personalizate.",
"editCameras": "Editează camerele",
- "deleteRole": "Șterge rol"
+ "deleteRole": "Șterge rolul"
},
"toast": {
"success": {
"createRole": "Rolul {{role}} a fost creat cu succes",
"updateCameras": "Camerele au fost actualizate pentru rolul {{role}}",
"deleteRole": "Rolul {{role}} a fost șters cu succes",
- "userRolesUpdated_one": "{{count}} utilizator atribuit acestui rol a fost actualizat la „vizualizator”, care are acces la toate camerele.",
- "userRolesUpdated_few": "{{count}} utilizatori atribuiți acestui rol au fost actualizați la „vizualizatori”, care are acces la toate camerele.",
- "userRolesUpdated_other": "{{count}} de utilizatori atribuiți acestui rol au fost actualizați la „vizualizatori”, care are acces la toate camerele."
+ "userRolesUpdated_one": "{{count}} utilizator atribuit acestui rol a fost actualizat la 'vizualizator', care are acces la toate camerele.",
+ "userRolesUpdated_few": "{{count}} utilizatori atribuiți acestui rol au fost actualizați la 'vizualizator', care are acces la toate camerele.",
+ "userRolesUpdated_other": "{{count}} de utilizatori atribuiți acestui rol au fost actualizați la 'vizualizator', care are acces la toate camerele."
},
"error": {
- "createRoleFailed": "Crearea rolului a eșuat: {{errorMessage}}",
- "updateCamerasFailed": "Actualizarea camerelor a eșuat: {{errorMessage}}",
- "deleteRoleFailed": "Ștergerea rolului a eșuat: {{errorMessage}}",
- "userUpdateFailed": "Actualizarea rolurilor utilizatorilor a eșuat: {{errorMessage}}"
+ "createRoleFailed": "Eroare la crearea rolului: {{errorMessage}}",
+ "updateCamerasFailed": "Eroare la actualizarea camerelor: {{errorMessage}}",
+ "deleteRoleFailed": "Eroare la ștergerea rolului: {{errorMessage}}",
+ "userUpdateFailed": "Eroare la actualizarea rolurilor utilizatorilor: {{errorMessage}}"
}
},
"dialog": {
@@ -877,39 +964,39 @@
"desc": "Actualizează accesul la camere pentru rolul {{role}}."
},
"deleteRole": {
- "title": "Șterge rolul",
- "desc": "Această acțiune nu poate fi anulată. Aceasta va șterge permanent rolul și va atribui orice utilizatori cu acest rol la rolul „vizualizator”, care va oferi acces vizualizator la toate camerele.",
- "warn": "Ești sigur că vrei să ștergi {{role}}?",
+ "title": "Șterge Rolul",
+ "desc": "Această acțiune este ireversibilă. Rolul va fi șters definitiv, iar utilizatorii cu acest rol vor primi rolul de „viewer”, având acces de vizualizare la toate camerele.",
+ "warn": "Sigur vrei să ștergi {{role}}?",
"deleting": "Se șterge..."
},
"form": {
"role": {
- "title": "Nume rol",
- "placeholder": "Introduceți numele rolului",
- "desc": "Sunt permise doar litere, cifre, puncte și linii de subliniere.",
+ "title": "Nume Rol",
+ "placeholder": "Introdu numele rolului",
+ "desc": "Sunt permise doar litere, cifre, puncte și caractere de subliniere (_).",
"roleIsRequired": "Numele rolului este obligatoriu",
- "roleOnlyInclude": "Numele rolului poate include doar litere, cifre, . sau _",
- "roleExists": "Un rol cu acest nume există deja."
+ "roleOnlyInclude": "Numele rolului poate conține doar litere, cifre, . sau _",
+ "roleExists": "Există deja un rol cu acest nume."
},
"cameras": {
"title": "Camere",
- "desc": "Selectați camerele la care acest rol are acces. Este necesară cel puțin o cameră.",
+ "desc": "Selectează camerele la care are acces acest rol. Este necesară cel puțin o cameră.",
"required": "Trebuie selectată cel puțin o cameră."
}
}
}
},
"cameraWizard": {
- "title": "Adaugă cameră",
- "description": "Urmează pașii de mai jos pentru a adăuga o cameră nouă la sistemul tău Frigate.",
+ "title": "Adaugă Cameră",
+ "description": "Urmează pașii de mai jos pentru a adăuga o cameră nouă în instalația Frigate.",
"steps": {
"nameAndConnection": "Nume și Conexiune",
- "streamConfiguration": "Configurare streaming",
+ "streamConfiguration": "Configurare Stream",
"validationAndTesting": "Validare și Testare",
- "probeOrSnapshot": "Sondează sau fă snapshot"
+ "probeOrSnapshot": "Sondare sau snapshot"
},
"save": {
- "success": "Camera nouă {{cameraName}} a fost salvată cu succes.",
+ "success": "Camera {{cameraName}} a fost salvată cu succes.",
"failure": "Eroare la salvarea {{cameraName}}."
},
"testResultLabels": {
@@ -919,26 +1006,26 @@
"fps": "FPS"
},
"commonErrors": {
- "noUrl": "Te rog să furnizezi un URL de streaming valid",
- "testFailed": "Testul de streaming a eșuat: {{error}}"
+ "noUrl": "Te rog introdu un URL de stream valid",
+ "testFailed": "Testul stream-ului a eșuat: {{error}}"
},
"step1": {
- "description": "Introduceți detaliile camerei și alegeți să testați camera sau să selectați manual marca.",
- "cameraName": "Nume cameră",
- "cameraNamePlaceholder": "ex. usă_intrare sau Vedere Curte Spate",
- "host": "Gazdă/Adresă IP",
+ "description": "Introdu detaliile camerei și alege să o scanezi automat sau să selectezi manual marca.",
+ "cameraName": "Nume Cameră",
+ "cameraNamePlaceholder": "ex: usa_intrare sau Curte Spate",
+ "host": "Host/Adresă IP",
"port": "Port",
- "username": "Nume de utilizator",
+ "username": "Utilizator",
"usernamePlaceholder": "Opțional",
"password": "Parolă",
"passwordPlaceholder": "Opțional",
"selectTransport": "Selectează protocolul de transport",
- "cameraBrand": "Brand cameră",
- "selectBrand": "Selectează marca camerei pentru șablonul de URL",
- "customUrl": "URL Streaming Personalizat",
- "brandInformation": "Informații despre brand",
- "brandUrlFormat": "Pentru camere cu formatul URL RTSP ca: {{exampleUrl}}",
- "customUrlPlaceholder": "rtsp://utilizator:parolă@gazdă:port/cale",
+ "cameraBrand": "Marca Camerei",
+ "selectBrand": "Alege marca pentru șablonul de URL",
+ "customUrl": "URL Stream Personalizat",
+ "brandInformation": "Informații marcă",
+ "brandUrlFormat": "Pentru camere cu formatul de URL RTSP: {{exampleUrl}}",
+ "customUrlPlaceholder": "rtsp://utilizator:parola@host:port/cale",
"testConnection": "Testează Conexiunea",
"testSuccess": "Testul de conexiune a reușit!",
"testFailed": "Testul de conexiune a eșuat. Te rog să verifici datele introduse și să încerci din nou.",
@@ -947,15 +1034,15 @@
"noSnapshot": "Nu se poate obține un snapshot de pe stream-ul configurat."
},
"errors": {
- "brandOrCustomUrlRequired": "Ori selectează un brand de cameră cu adresă gazdă/IP, ori alege „Alta” cu un URL personalizat",
+ "brandOrCustomUrlRequired": "Selectează o marcă cu host/IP sau alege 'Other' cu un URL personalizat",
"nameRequired": "Numele camerei este obligatoriu",
- "nameLength": "Numele camerei trebuie să aibă 64 de caractere sau mai puțin",
- "invalidCharacters": "Numele camerei conține caractere nevalide",
+ "nameLength": "Numele camerei trebuie să aibă maxim 64 de caractere",
+ "invalidCharacters": "Numele camerei conține caractere nepermise",
"nameExists": "Numele camerei există deja",
"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://\". Este necesară configurare manuală pentru stream-urile de cameră non-RTSP."
+ "customUrlRtspRequired": "URL-urile personalizate trebuie să înceapă cu „rtsp://”. Configurarea manuală este necesară pentru stream-urile care nu sunt RTSP."
},
"docs": {
"reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras"
@@ -964,18 +1051,18 @@
"probingMetadata": "Sondare metadate cameră...",
"fetchingSnapshot": "Preluare snapshot cameră..."
},
- "connectionSettings": "Setări conexiune",
- "detectionMethod": "Metoda de detecție stream",
+ "connectionSettings": "Setări Conexiune",
+ "detectionMethod": "Metodă Detecție Stream",
"onvifPort": "Port ONVIF",
- "probeMode": "Sondare cameră",
+ "probeMode": "Scanează camera",
"manualMode": "Selecție manuală",
- "detectionMethodDescription": "Sondează camera cu ONVIF (dacă este suportat) pentru a găsi URL-urile de stream ale camerei, sau selectează manual marca camerei pentru a utiliza URL-uri predefinite. Pentru a introduce un URL RTSP personalizat, alege metoda manuală și selectează \"Altele\".",
- "onvifPortDescription": "Pentru camerele care suportă ONVIF, acesta este de obicei 80 sau 8080.",
- "useDigestAuth": "Utilizați autentificarea digest",
- "useDigestAuthDescription": "Utilizați autentificarea HTTP digest pentru ONVIF. Unele camere pot necesita un nume de utilizator/parolă ONVIF dedicat în locul utilizatorului standard de administrare."
+ "detectionMethodDescription": "Scanează camera prin ONVIF (dacă e suportat) pentru a găsi URL-urile stream-urilor, sau alege manual marca pentru a folosi URL-uri predefinite. Pentru un URL RTSP personalizat, alege metoda manuală și selectează \"Other\".",
+ "onvifPortDescription": "Pentru camerele cu suport ONVIF, acesta este de obicei 80 sau 8080.",
+ "useDigestAuth": "Folosește autentificare digest",
+ "useDigestAuthDescription": "Folosește autentificarea HTTP digest pentru ONVIF. Unele camere pot necesita un utilizator/parolă dedicat pentru ONVIF, diferit de cel de admin."
},
"step2": {
- "description": "Testează camera pentru fluxurile disponibile sau configurează setările manuale pe baza metodei de detectare selectate.",
+ "description": "Testează camera pentru stream-uri disponibile sau configurează manual setările în funcție de metoda de detecție aleasă.",
"streamsTitle": "Stream-uri cameră",
"addStream": "Adaugă stream",
"addAnotherStream": "Adaugă un alt stream",
@@ -994,9 +1081,9 @@
"audio": "Audio"
},
"testStream": "Testează conexiunea",
- "testSuccess": "Testul de conexiune a fost realizat cu succes!",
+ "testSuccess": "Testul de conexiune a reușit!",
"testFailed": "Testul de conexiune a eșuat. Verifică datele introduse și încearcă din nou.",
- "testFailedTitle": "Test eșuat",
+ "testFailedTitle": "Test Eșuat",
"connected": "Conectat",
"notConnected": "Neconectat",
"featuresTitle": "Funcționalități",
@@ -1013,40 +1100,40 @@
"description": "Folosește restreaming go2rtc pentru a reduce conexiunile la cameră."
},
"streamDetails": "Detalii stream",
- "probing": "Se sondează camera...",
- "retry": "Reîncercare",
+ "probing": "Se testează camera...",
+ "retry": "Reîncearcă",
"testing": {
- "probingMetadata": "Se sondează metadatele camerei...",
- "fetchingSnapshot": "Se aduce snapshot cameră..."
+ "probingMetadata": "Se extrag metadatele camerei...",
+ "fetchingSnapshot": "Se preia snapshot-ul..."
},
- "probeFailed": "Sondarea camerei a eșuat: {{error}}",
- "probingDevice": "Se sondează dispozitivul...",
- "probeSuccessful": "Sondare reușită",
- "probeError": "Eroare la sondare",
- "probeNoSuccess": "Sondare nereușită",
- "deviceInfo": "Informații dispozitiv",
+ "probeFailed": "Eșec la testarea camerei: {{error}}",
+ "probingDevice": "Se testează dispozitivul...",
+ "probeSuccessful": "Test reușit",
+ "probeError": "Eroare la testare",
+ "probeNoSuccess": "Testul nu a avut succes",
+ "deviceInfo": "Informații Dispozitiv",
"manufacturer": "Producător",
"model": "Model",
"firmware": "Firmware",
"profiles": "Profiluri",
"ptzSupport": "Suport PTZ",
- "autotrackingSupport": "Suport autourmărire",
+ "autotrackingSupport": "Suport Auto-tracking",
"presets": "Presetări",
- "rtspCandidates": "Candidați RTSP",
- "rtspCandidatesDescription": "Următoarele URL-uri RTSP au fost găsite în urma sondării camerei. Testați conexiunea pentru a vizualiza metadatele stream-ului.",
- "noRtspCandidates": "Nu au fost găsite URL-uri RTSP de la cameră. Este posibil ca datele dumneavoastră de autentificare să fie incorecte, sau este posibil ca aparatul foto să nu suporte ONVIF sau metoda utilizată pentru a prelua URL-urile RTSP. Întoarceți-vă și introduceți URL-ul RTSP manual.",
+ "rtspCandidates": "Candidate RTSP",
+ "rtspCandidatesDescription": "Următoarele URL-uri RTSP au fost găsite în urma testării camerei. Testează conexiunea pentru a vedea metadatele stream-ului.",
+ "noRtspCandidates": "Nu au fost găsite URL-uri RTSP pentru această cameră. E posibil ca datele de autentificare să fie greșite sau camera să nu suporte ONVIF. Mergi înapoi și introdu URL-ul RTSP manual.",
"candidateStreamTitle": "Candidat {{number}}",
"useCandidate": "Folosește",
"uriCopy": "Copiază",
"uriCopied": "URI copiat în clipboard",
- "testConnection": "Testează conexiunea",
- "toggleUriView": "Click pentru a comuta vizualizarea URI completă",
+ "testConnection": "Testează Conexiunea",
+ "toggleUriView": "Click pentru a vedea URI-ul complet",
"errors": {
- "hostRequired": "Gazdă/adresaIP este necesară"
+ "hostRequired": "Adresa Host/IP este obligatorie"
}
},
"step3": {
- "description": "Configurează rolurile stream-ului și adaugă stream-uri suplimentare pentru camera ta.",
+ "description": "Configurează rolurile stream-urilor și adaugă stream-uri suplimentare pentru camera ta.",
"validationTitle": "Validare stream",
"connectAllStreams": "Conectează toate stream-urile",
"reconnectionSuccess": "Reconectare reușită.",
@@ -1054,7 +1141,7 @@
"streamUnavailable": "Previzualizare streaming indisponibilă",
"reload": "Reîncarcă",
"connecting": "Conectare...",
- "streamTitle": "Stream {{number}}",
+ "streamTitle": "Stream-ul {{number}}",
"valid": "Valid",
"failed": "Eșuat",
"notTested": "Netestat",
@@ -1089,12 +1176,12 @@
"ffmpegModule": "Folosește modul de compatibilitate pentru stream-uri",
"ffmpegModuleDescription": "Dacă fluxul nu se încarcă după mai multe încercări, activați această opțiune. Când este activată, Frigate va folosi modulul ffmpeg împreună cu go2rtc. Aceasta poate oferi o compatibilitate mai bună cu unele fluxuri de camere.",
"streamsTitle": "Stream-uri cameră",
- "addStream": "Adaugă stream",
- "addAnotherStream": "Adaugă alt stream",
+ "addStream": "Adaugă un stream",
+ "addAnotherStream": "Mai adaugă un stream",
"streamUrl": "URL stream",
- "streamUrlPlaceholder": "rtsp://utilizator:parolă@adresaIP:port/cale",
- "selectStream": "Selectați un flux",
- "searchCandidates": "Căutați candidați...",
+ "streamUrlPlaceholder": "rtsp://utilizator:parola@host:port/cale",
+ "selectStream": "Selectează un stream",
+ "searchCandidates": "Caută candidați...",
"noStreamFound": "Niciun stream găsit",
"url": "URL",
"resolution": "Rezoluție",
@@ -1102,154 +1189,408 @@
"selectResolution": "Selectează rezoluția",
"selectQuality": "Selectează calitatea",
"roleLabels": {
- "detect": "Detecție Obiect",
+ "detect": "Detecție Obiecte",
"record": "Înregistrare",
"audio": "Audio"
},
- "testStream": "Testează conexiunea",
- "testSuccess": "Testul stream-ului a avut succes!",
+ "testStream": "Testează Conexiunea",
+ "testSuccess": "Testul stream-ului a reușit!",
"testFailed": "Testul stream-ului a eșuat",
- "testFailedTitle": "Testul a eșuat",
+ "testFailedTitle": "Test Eșuat",
"connected": "Conectat",
"notConnected": "Neconectat",
- "featuresTitle": "Funcționalități",
- "go2rtc": "Reduceți conexiunile la cameră",
- "detectRoleWarning": "Cel puțin un stream trebuie să aibă rolul \"detect\" pentru a continua.",
+ "featuresTitle": "Funcții",
+ "go2rtc": "Redu conexiunile către cameră",
+ "detectRoleWarning": "Cel puțin un stream trebuie să aibă rolul „detect” pentru a continua.",
"rolesPopover": {
- "title": "Roluri stream",
- "detect": "Stream principal pentru detecția obiectelor.",
- "record": "Salvează segmente ale stream-ului video pe baza setărilor de configurare.",
- "audio": "Stream pentru detecția bazată pe audio."
+ "title": "Roluri de stream",
+ "detect": "Fluxul principal pentru detecția obiectelor.",
+ "record": "Salvează segmente video conform setărilor de configurare.",
+ "audio": "Flux pentru detecția bazată pe sunet."
},
"featuresPopover": {
- "title": "Funcționalități stream",
- "description": "Utilizați go2rtc restreaming pentru a reduce conexiunile la cameră."
+ "title": "Caracteristici stream",
+ "description": "Folosește restreaming prin go2rtc pentru a reduce numărul de conexiuni directe către cameră."
}
},
"step4": {
- "description": "Validare finală și analiză înainte de a salva noua cameră. Conectați fiecare stream înainte de a salva.",
+ "description": "Validare finală și analiză înainte de salvare. Conectează fiecare stream înainte de a salva.",
"validationTitle": "Validare stream",
- "connectAllStreams": "Conectează toate stream-urile",
+ "connectAllStreams": "Conectează Toate stream-urile",
"reconnectionSuccess": "Reconectare reușită.",
- "reconnectionPartial": "Unele stream-uri nu au reușit să se reconecteze.",
- "streamUnavailable": "Previzualizare flux indisponibilă",
+ "reconnectionPartial": "Unele stream-uri nu s-au putut reconecta.",
+ "streamUnavailable": "Previzualizarea stream-ului este indisponibilă",
"reload": "Reîncarcă",
- "connecting": "Conectare...",
- "streamTitle": "Stream {{number}}",
+ "connecting": "Se conectează...",
+ "streamTitle": "stream-ul {{number}}",
"valid": "Valid",
"failed": "Eșuat",
"notTested": "Netestat",
- "connectStream": "Conectare",
+ "connectStream": "Conectează",
"connectingStream": "Se conectează",
- "disconnectStream": "Deconectare",
+ "disconnectStream": "Deconectează",
"estimatedBandwidth": "Lățime de bandă estimată",
"roles": "Roluri",
- "ffmpegModule": "Utilizează modul de compatibilitate stream",
- "ffmpegModuleDescription": "Dacă stream-ul nu se încarcă după câteva încercări, activați această opțiune. Când este activată, Frigate va utiliza modulul ffmpeg cu go2rtc. Acest lucru poate oferi o compatibilitate mai bună cu unele stream-uri de cameră.",
- "none": "Niciuna",
+ "ffmpegModule": "Folosește modul de compatibilitate de stream-uri",
+ "ffmpegModuleDescription": "Dacă stream-ul nu se încarcă după mai multe încercări, activează asta. Frigate va folosi modulul ffmpeg cu go2rtc, ceea ce poate ajuta la compatibilitatea cu anumite camere.",
+ "none": "Niciunul",
"error": "Eroare",
- "streamValidated": "Stream-ul {{number}} validat cu succes",
+ "streamValidated": "Stream-ul {{number}} a fost validat cu succes",
"streamValidationFailed": "Validarea stream-ului {{number}} a eșuat",
- "saveAndApply": "Salvează camera nouă",
- "saveError": "Configurație nevalidă. Vă rugăm să vă verificați setările.",
+ "saveAndApply": "Salvează Camera Nouă",
+ "saveError": "Configurație nevalidă. Verifică setările.",
"issues": {
"title": "Validare stream",
- "videoCodecGood": "Codecul video: {{codec}}.",
- "audioCodecGood": "Codecul audio: {{codec}}.",
- "resolutionHigh": "O rezoluție de {{resolution}} poate cauza o utilizare crescută a resurselor.",
- "resolutionLow": "O rezoluție de {{resolution}} ar putea fi prea mică pentru detectarea fiabilă a obiectelor mici.",
- "noAudioWarning": "Nu a fost detectat audio pentru acest stream, înregistrările nu vor avea audio.",
- "audioCodecRecordError": "Codec-ul audio AAC este necesar pentru a suporta audio în înregistrări.",
- "audioCodecRequired": "Este necesar un stream audio pentru a suporta detecția audio.",
- "restreamingWarning": "Reducerea conexiunilor la cameră pentru stream-ul de înregistrare poate crește ușor utilizarea procesorului (CPU).",
+ "videoCodecGood": "Codecul video este {{codec}}.",
+ "audioCodecGood": "Codecul audio este {{codec}}.",
+ "resolutionHigh": "O rezoluție de {{resolution}} poate crește consumul de resurse.",
+ "resolutionLow": "O rezoluție de {{resolution}} ar putea fi prea mică pentru detecția sigură a obiectelor mici.",
+ "noAudioWarning": "Nu s-a detectat audio pentru acest stream; înregistrările nu vor avea sunet.",
+ "audioCodecRecordError": "Codecul audio AAC este necesar pentru a avea sunet în înregistrări.",
+ "audioCodecRequired": "Un stream audio este necesar pentru suportul detecției audio.",
+ "restreamingWarning": "Reducerea conexiunilor către cameră pentru stream-ul de înregistrare poate crește ușor utilizarea procesorului (CPU).",
"brands": {
- "reolink-rtsp": "RTSP Reolink nu este recomandat. Activați HTTP în setările de firmware ale camerei și reporniți asistentul.",
- "reolink-http": "Stream-urile HTTP Reolink ar trebui să folosească FFmpeg pentru o compatibilitate mai bună. Activează 'Use stream compatibility mode' pentru acest stream."
+ "reolink-rtsp": "Reolink RTSP nu este recomandat. Activează HTTP în setările camerei și repornește asistentul.",
+ "reolink-http": "Stream-urile Reolink HTTP ar trebui să folosească FFmpeg pentru o mai bună compatibilitate. Activează „Folosește modul de compatibilitate de stream” pentru acest stream."
},
"dahua": {
- "substreamWarning": "Substream-ul 1 este blocat la o rezoluție scăzută. Multe camere Dahua / Amcrest / EmpireTech suportă stream-uri secundare suplimentare care trebuie activate în setările camerei. Se recomandă să verificați și să utilizați aceste stream-uri dacă sunt disponibile."
+ "substreamWarning": "Substream 1 este limitat la o rezoluție mică. Multe camere Dahua / Amcrest / EmpireTech suportă substream-uri adiționale care trebuie activate din setările camerei. Se recomandă verificarea și utilizarea acestora."
},
"hikvision": {
- "substreamWarning": "Substream-ul 1 este blocat la o rezoluție scăzută. Multe camere Hikvision suportă stream-uri secundare suplimentare care trebuie activate în setările camerei. Se recomandă să verificați și să utilizați aceste stream-uri dacă sunt disponibile."
+ "substreamWarning": "Substream 1 este limitat la o rezoluție mică. Multe camere Hikvision suportă substream-uri adiționale care trebuie activate din setările camerei. Se recomandă verificarea și utilizarea acestora."
}
}
}
},
"cameraManagement": {
- "title": "Administrează Camerele",
- "addCamera": "Adaugă cameră nouă",
- "editCamera": "Editează cameră:",
- "selectCamera": "Selectează o cameră",
- "backToSettings": "Înapoi la setările camerei",
+ "title": "Gestionare Camere",
+ "addCamera": "Adaugă Cameră Nouă",
+ "editCamera": "Editează Camera:",
+ "selectCamera": "Selectează o Cameră",
+ "backToSettings": "Înapoi la Setări Cameră",
"streams": {
- "title": "Activează / dezactivează camere",
- "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.ffprobe.",
"aspectRatio": "raport aspect",
"fetching": "Se preiau datele camerei",
"stream": "Stream {{idx}}",
"video": "Video:",
- "audio": "Sunet:",
- "error": "Eroare:{{error}}",
+ "audio": "Audio:",
+ "error": "Eroare: {{error}}",
"tips": {
- "title": "Informații test cameră"
+ "title": "Info Sondă Cameră"
},
- "fps": "Cadre/s:",
+ "fps": "FPS:",
"unknown": "Necunoscut"
},
"label": {
- "capture": "capturare",
- "skipped": "sărite",
- "overallSkippedDetectionsPerSecond": "Detecții totale sărite pe secundă",
+ "capture": "captură",
+ "skipped": "sărit",
+ "overallSkippedDetectionsPerSecond": "detecții sărite pe secundă total",
"cameraCapture": "captură {{camName}}",
- "cameraDetect": "detectare {{camName}}",
+ "cameraDetect": "detecție {{camName}}",
"cameraFramesPerSecond": "cadre pe secundă {{camName}}",
"cameraDetectionsPerSecond": "detecții pe secundă {{camName}}",
"cameraSkippedDetectionsPerSecond": "detecții sărite pe secundă {{camName}}",
- "overallFramesPerSecond": "Cadre totale pe secundă",
- "overallDetectionsPerSecond": "Detecții totale pe secundă",
- "detect": "detectare",
- "cameraFfmpeg": "{{camName}} FFmpeg",
- "camera": "camere",
+ "overallFramesPerSecond": "cadre pe secundă total",
+ "overallDetectionsPerSecond": "detecții pe secundă total",
+ "detect": "detectează",
+ "cameraFfmpeg": "FFmpeg {{camName}}",
+ "camera": "cameră",
"ffmpeg": "FFmpeg"
},
"title": "Camere",
@@ -188,22 +190,33 @@
"framesAndDetections": "Cadre / Detecții",
"toast": {
"success": {
- "copyToClipboard": "Datele testului au fost copiate."
+ "copyToClipboard": "Am copiat datele sondei în clipboard."
},
"error": {
- "unableToProbeCamera": "Testarea camerei nu a fost posibilă: {{errorMessage}}"
+ "unableToProbeCamera": "Nu s-a putut sonda camera: {{errorMessage}}"
}
+ },
+ "connectionQuality": {
+ "title": "Calitate Conexiune",
+ "excellent": "Excelentă",
+ "fair": "Acceptabilă",
+ "poor": "Slabă",
+ "unusable": "Inutilizabilă",
+ "fps": "FPS",
+ "expectedFps": "FPS așteptat",
+ "reconnectsLastHour": "Reconectări (ultima oră)",
+ "stallsLastHour": "Blocaje (ultima oră)"
}
},
"stats": {
- "reindexingEmbeddings": "Reindexare încorporări ({{processed}}% completă)",
+ "reindexingEmbeddings": "Se reindexează înglobările ({{processed}}% gata)",
"detectIsVerySlow": "{{detect}} este foarte lent ({{speed}} ms)",
"detectIsSlow": "{{detect}} este lent ({{speed}} ms)",
- "detectHighCpuUsage": "Camera {{camera}} are o utilizare ridicată a procesorului pentru detecție ({{detectAvg}}%)",
- "ffmpegHighCpuUsage": "Camera {{camera}} are o utilizare ridicată a procesorului FFmpeg ({{ffmpegAvg}}%)",
+ "detectHighCpuUsage": "{{camera}} are o utilizare ridicată CPU detecție ({{detectAvg}}%)",
+ "ffmpegHighCpuUsage": "{{camera}} are o utilizare ridicată CPU FFmpeg ({{ffmpegAvg}}%)",
"cameraIsOffline": "{{camera}} este offline",
- "healthy": "Sistemul funcționează normal",
+ "healthy": "Sistemul este sănătos",
"shmTooLow": "Alocarea /dev/shm ({{total}} MB) ar trebui mărită la cel puțin {{min}} MB."
},
- "lastRefreshed": "Ultima reîmprospătare: "
+ "lastRefreshed": "Ultima actualizare: "
}
diff --git a/web/public/locales/ka/views/classificationModel.json b/web/public/locales/ru/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/classificationModel.json
rename to web/public/locales/ru/config/cameras.json
diff --git a/web/public/locales/ka/views/configEditor.json b/web/public/locales/sk/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/configEditor.json
rename to web/public/locales/sk/config/cameras.json
diff --git a/web/public/locales/ka/views/events.json b/web/public/locales/sl/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/events.json
rename to web/public/locales/sl/config/cameras.json
diff --git a/web/public/locales/ka/views/explore.json b/web/public/locales/sr/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/explore.json
rename to web/public/locales/sr/config/cameras.json
diff --git a/web/public/locales/sv/common.json b/web/public/locales/sv/common.json
index d6c185dff..a60cfb2af 100644
--- a/web/public/locales/sv/common.json
+++ b/web/public/locales/sv/common.json
@@ -43,7 +43,7 @@
"minute_other": "{{time}} minuter",
"s": "{{time}}s",
"formattedTimestamp": {
- "12hour": "d MMM, kl. h:mm:ss a",
+ "12hour": "d MMM, 'kl.' h:mm:ss a",
"24hour": "d MMM, HH:mm:ss"
},
"formattedTimestamp2": {
@@ -51,7 +51,7 @@
"24hour": "d MMM HH:mm:ss"
},
"formattedTimestampHourMinute": {
- "12hour": "kl. h:mm a",
+ "12hour": "'kl.' h:mm a",
"24hour": "HH:mm"
},
"formattedTimestampHourMinuteSecond": {
diff --git a/web/public/locales/sv/components/dialog.json b/web/public/locales/sv/components/dialog.json
index 66d8503b9..4b8899a2c 100644
--- a/web/public/locales/sv/components/dialog.json
+++ b/web/public/locales/sv/components/dialog.json
@@ -7,7 +7,7 @@
"button": "Tvinga omladdning nu"
},
"title": "Är du säker på att du vill starta om Frigate?",
- "description": "Detta kommer att stoppa Frigate kort medan det startar om."
+ "description": "Frigate stoppas tillfälligt under omstarten."
},
"explore": {
"plus": {
diff --git a/web/public/locales/ka/views/exports.json b/web/public/locales/sv/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/exports.json
rename to web/public/locales/sv/config/cameras.json
diff --git a/web/public/locales/sv/views/system.json b/web/public/locales/sv/views/system.json
index 27eb9b844..0d6eac76a 100644
--- a/web/public/locales/sv/views/system.json
+++ b/web/public/locales/sv/views/system.json
@@ -39,10 +39,10 @@
"title": "Generellt",
"detector": {
"title": "Detektorer",
- "inferenceSpeed": "Detektorns inferenshastighet",
+ "inferenceSpeed": "Detektorns inferenstid",
"temperature": "Detektor temperatur",
"cpuUsage": "Detektorns CPU-användning",
- "memoryUsage": "Detektor minnes användning",
+ "memoryUsage": "Detektorns minnesanvändning",
"cpuUsageInformation": "CPU som används för att förbereda in- och utdata till/från detekteringsmodeller. Detta värde mäter inte inferensanvändning, även om en GPU eller accelerator används."
},
"hardwareInfo": {
diff --git a/web/public/locales/ta/audio.json b/web/public/locales/ta/audio.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/audio.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/common.json b/web/public/locales/ta/common.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/common.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/auth.json b/web/public/locales/ta/components/auth.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/auth.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/camera.json b/web/public/locales/ta/components/camera.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/camera.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/dialog.json b/web/public/locales/ta/components/dialog.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/dialog.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/filter.json b/web/public/locales/ta/components/filter.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/filter.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/icons.json b/web/public/locales/ta/components/icons.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/icons.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/input.json b/web/public/locales/ta/components/input.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/input.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/components/player.json b/web/public/locales/ta/components/player.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/components/player.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/objects.json b/web/public/locales/ta/objects.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/objects.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/classificationModel.json b/web/public/locales/ta/views/classificationModel.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/classificationModel.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/configEditor.json b/web/public/locales/ta/views/configEditor.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/configEditor.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/events.json b/web/public/locales/ta/views/events.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/events.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/explore.json b/web/public/locales/ta/views/explore.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/explore.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/exports.json b/web/public/locales/ta/views/exports.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/exports.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/faceLibrary.json b/web/public/locales/ta/views/faceLibrary.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/faceLibrary.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/live.json b/web/public/locales/ta/views/live.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/live.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/recording.json b/web/public/locales/ta/views/recording.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/recording.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/search.json b/web/public/locales/ta/views/search.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/search.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/settings.json b/web/public/locales/ta/views/settings.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/settings.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ta/views/system.json b/web/public/locales/ta/views/system.json
deleted file mode 100644
index 0967ef424..000000000
--- a/web/public/locales/ta/views/system.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/web/public/locales/ka/views/faceLibrary.json b/web/public/locales/th/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/faceLibrary.json
rename to web/public/locales/th/config/cameras.json
diff --git a/web/public/locales/ka/views/live.json b/web/public/locales/tr/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/live.json
rename to web/public/locales/tr/config/cameras.json
diff --git a/web/public/locales/ka/views/recording.json b/web/public/locales/uk/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/recording.json
rename to web/public/locales/uk/config/cameras.json
diff --git a/web/public/locales/ka/views/search.json b/web/public/locales/ur/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/search.json
rename to web/public/locales/ur/config/cameras.json
diff --git a/web/public/locales/ka/views/settings.json b/web/public/locales/uz/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/settings.json
rename to web/public/locales/uz/config/cameras.json
diff --git a/web/public/locales/ka/views/system.json b/web/public/locales/vi/config/cameras.json
similarity index 100%
rename from web/public/locales/ka/views/system.json
rename to web/public/locales/vi/config/cameras.json
diff --git a/web/public/locales/yue_Hant/config/cameras.json b/web/public/locales/yue_Hant/config/cameras.json
new file mode 100644
index 000000000..670d37015
--- /dev/null
+++ b/web/public/locales/yue_Hant/config/cameras.json
@@ -0,0 +1,5 @@
+{
+ "zones": {
+ "label": "區域"
+ }
+}
diff --git a/web/public/locales/peo/audio.json b/web/public/locales/zh_Hans/config/cameras.json
similarity index 100%
rename from web/public/locales/peo/audio.json
rename to web/public/locales/zh_Hans/config/cameras.json
diff --git a/web/public/locales/peo/common.json b/web/public/locales/zh_Hant/config/cameras.json
similarity index 100%
rename from web/public/locales/peo/common.json
rename to web/public/locales/zh_Hant/config/cameras.json