mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-22 11:49:03 +03:00
Compare commits
11
Commits
v0.16.0-rc3
...
v0.16.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2f8de94e8 | ||
|
|
f46560d2bf | ||
|
|
a1acb504ee | ||
|
|
3d79eef227 | ||
|
|
efe0d2a931 | ||
|
|
cbd5bdfd88 | ||
|
|
6f2e6c4cb2 | ||
|
|
84f48ee3eb | ||
|
|
49793aa655 | ||
|
|
4869f46ab6 | ||
|
|
5e5beb9837 |
@@ -13,6 +13,7 @@ RUN sed -i "/https:\/\//d" /requirements-wheels.txt
|
||||
RUN sed -i "/onnxruntime/d" /requirements-wheels.txt
|
||||
RUN pip3 wheel --wheel-dir=/rk-wheels -c /requirements-wheels.txt -r /requirements-wheels-rk.txt
|
||||
RUN rm -rf /rk-wheels/opencv_python-*
|
||||
RUN rm -rf /rk-wheels/torch-*
|
||||
|
||||
FROM deps AS rk-frigate
|
||||
ARG TARGETARCH
|
||||
|
||||
@@ -21,7 +21,12 @@ router = APIRouter(tags=[Tags.notifications])
|
||||
|
||||
@router.get("/notifications/pubkey")
|
||||
def get_vapid_pub_key(request: Request):
|
||||
if not request.app.frigate_config.notifications.enabled:
|
||||
config = request.app.frigate_config
|
||||
notifications_enabled = config.notifications.enabled
|
||||
camera_notifications_enabled = [
|
||||
c for c in config.cameras.values() if c.enabled and c.notifications.enabled
|
||||
]
|
||||
if not (notifications_enabled or camera_notifications_enabled):
|
||||
return JSONResponse(
|
||||
content=({"success": False, "message": "Notifications are not enabled."}),
|
||||
status_code=400,
|
||||
|
||||
@@ -140,6 +140,7 @@
|
||||
"fr": "Français (French)",
|
||||
"ar": "العربية (Arabic)",
|
||||
"pt": "Português (Portuguese)",
|
||||
"ptBR": "Português brasileiro (Brazilian Portuguese)",
|
||||
"ru": "Русский (Russian)",
|
||||
"de": "Deutsch (German)",
|
||||
"ja": "日本語 (Japanese)",
|
||||
@@ -164,6 +165,13 @@
|
||||
"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)",
|
||||
"withSystem": {
|
||||
"label": "Use the system settings for language"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"speech": "Fala",
|
||||
"babbling": "Balbuxo",
|
||||
"bicycle": "Bicicleta",
|
||||
"yell": "Berro",
|
||||
"car": "Coche",
|
||||
"crying": "Chorando",
|
||||
"sigh": "Suspiro",
|
||||
"singing": "Cantando",
|
||||
"motorcycle": "Motocicleta",
|
||||
"bus": "Bus",
|
||||
"train": "Tren",
|
||||
"boat": "Bote",
|
||||
"bird": "Paxaro",
|
||||
"cat": "Gato",
|
||||
"bellow": "Abaixo",
|
||||
"whoop": "Ei carballeira",
|
||||
"whispering": "Murmurando"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Até {{time}}",
|
||||
"untilForRestart": "Até que se reinicie Frigate.",
|
||||
"justNow": "Xusto agora",
|
||||
"last7": "Últimos 7 días",
|
||||
"last14": "Últimos 14 días",
|
||||
"thisWeek": "Esta semana",
|
||||
"today": "Hoxe",
|
||||
"untilRestart": "Ata o reinicio",
|
||||
"ago": "Fai {{timeAgo}}"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"form": {
|
||||
"user": "Usuario/a",
|
||||
"password": "Contrasinal",
|
||||
"errors": {
|
||||
"passwordRequired": "Contrasinal obrigatorio",
|
||||
"unknownError": "Erro descoñecido. Revisa os logs.",
|
||||
"usernameRequired": "Usuario/a obrigatorio"
|
||||
},
|
||||
"login": "Iniciar sesión"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Grupos de cámaras",
|
||||
"add": "Engadir Grupo de cámaras",
|
||||
"delete": {
|
||||
"confirm": {
|
||||
"title": "Confirma o borrado",
|
||||
"desc": "Seguro/a que queres borrar o Grupo de cámaras <em>{{name}}</em>?"
|
||||
},
|
||||
"label": "Borrar o Grupo de Cámaras"
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "Introduce un nome…",
|
||||
"errorMessage": {
|
||||
"nameMustNotPeriod": "Grupo de Cámaras non debe conter un punto."
|
||||
}
|
||||
},
|
||||
"edit": "Editar o Grupo de Cámaras"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Estás seguro/a que queres reiniciar Frigate?",
|
||||
"button": "Reiniciar",
|
||||
"restarting": {
|
||||
"button": "Forzar reinicio",
|
||||
"content": "Esta páxina recargarase en {{countdown}} segundos.",
|
||||
"title": "Frigate está Reiniciando"
|
||||
}
|
||||
},
|
||||
"explore": {
|
||||
"plus": {
|
||||
"review": {
|
||||
"question": {
|
||||
"label": "Confirma esta etiqueta para Frigate Plus",
|
||||
"ask_an": "E isto un obxecto <code>{{label}}</code>?"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"filter": "Filtrar",
|
||||
"labels": {
|
||||
"label": "Etiquetas",
|
||||
"count_one": "{{count}} Etiqueta",
|
||||
"all": {
|
||||
"short": "Etiquetas",
|
||||
"title": "Todas as Etiquetas"
|
||||
}
|
||||
},
|
||||
"zones": {
|
||||
"all": {
|
||||
"title": "Tódalas zonas"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Selecciona unha icona",
|
||||
"search": {
|
||||
"placeholder": "Pesquisar unha icona…"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Descargar vídeo",
|
||||
"toast": {
|
||||
"success": "O teu vídeo de revisión comezou a descargarse."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Non se atoparon grabacións para ese período",
|
||||
"noPreviewFound": "Non se atopou previsualización",
|
||||
"submitFrigatePlus": {
|
||||
"submit": "Enviar",
|
||||
"title": "Enviar este frame a Frigate+?"
|
||||
},
|
||||
"stats": {
|
||||
"streamType": {
|
||||
"title": "Tipo de emisión:"
|
||||
}
|
||||
},
|
||||
"noPreviewFoundFor": "Vista Previa non atopada para {{cameraName}}"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"person": "Persoa",
|
||||
"bicycle": "Bicicleta",
|
||||
"airplane": "Avión",
|
||||
"motorcycle": "Motocicleta",
|
||||
"bus": "Bus",
|
||||
"train": "Tren",
|
||||
"boat": "Bote",
|
||||
"traffic_light": "Luces de tráfico",
|
||||
"fire_hydrant": "Boca de incendio",
|
||||
"street_sign": "Sinal de tráfico",
|
||||
"stop_sign": "Sinal de Stop",
|
||||
"parking_meter": "Parquímetro",
|
||||
"bench": "Banco",
|
||||
"bird": "Paxaro",
|
||||
"cat": "Gato",
|
||||
"car": "Coche"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"documentTitle": "Editor de configuración - Frigate",
|
||||
"configEditor": "Editor de Preferencias",
|
||||
"saveOnly": "Só gardar",
|
||||
"toast": {
|
||||
"error": {
|
||||
"savingError": "Erro gardando configuración"
|
||||
}
|
||||
},
|
||||
"saveAndRestart": "Gardar e Reiniciar",
|
||||
"copyConfig": "Copiar Configuración"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"alerts": "Alertas",
|
||||
"detections": "Deteccións",
|
||||
"allCameras": "Tódalas cámaras",
|
||||
"timeline.aria": "Selecciona liña de tempo",
|
||||
"motion": {
|
||||
"only": "Só movemento",
|
||||
"label": "Movemento"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"documentTitle": "Explorar - Frigate",
|
||||
"generativeAI": "IA xenerativa",
|
||||
"exploreMore": "Explorar máis obxectos {{label}}",
|
||||
"exploreIsUnavailable": {
|
||||
"title": "Explorar non está Dispoñible",
|
||||
"embeddingsReindexing": {
|
||||
"finishingShortly": "Rematando ceo",
|
||||
"startingUp": "Comezando…"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"documentTitle": "Exportar - Frigate",
|
||||
"search": "Pesquisar",
|
||||
"deleteExport.desc": "Seguro que queres borrar {{exportName}}?",
|
||||
"editExport": {
|
||||
"saveExport": "Garda exportación"
|
||||
},
|
||||
"deleteExport": "Borrar exportación",
|
||||
"noExports": "Non se atoparon exportacións"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"description": {
|
||||
"addFace": "Navegar para engadir unha nova colección á Libraría de Caras.",
|
||||
"placeholder": "Introduce un nome para esta colección",
|
||||
"invalidName": "Nome non válido. Os nomes só poden incluír letras, números, espazos, apóstrofes, guións baixos e guións."
|
||||
},
|
||||
"details": {
|
||||
"unknown": "Descoñecido",
|
||||
"person": "Persoa"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"documentTitle": "Directo - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - Directo - Frigate",
|
||||
"twoWayTalk": {
|
||||
"disable": "Deshabilita a Conversa de dous sentidos",
|
||||
"enable": "Habilitar a Conversa de dous sentidos"
|
||||
},
|
||||
"ptz": {
|
||||
"move": {
|
||||
"clickMove": {
|
||||
"label": "Pincha no frame para centrar a cámara"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cameraAudio": {
|
||||
"enable": "Habilitar Audio de cámara"
|
||||
},
|
||||
"lowBandwidthMode": "Modo de Baixa Banda Ancha"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"filter": "Filtrar",
|
||||
"export": "Exportar",
|
||||
"calendar": "Calendario",
|
||||
"toast": {
|
||||
"error": {
|
||||
"noValidTimeSelected": "Rango de tempo inválido"
|
||||
}
|
||||
},
|
||||
"filters": "Filtros"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"search": "Pesquisar",
|
||||
"savedSearches": "Pesquisas gardadas",
|
||||
"button": {
|
||||
"save": "Gardar pesquisa",
|
||||
"filterActive": "Filtros activos",
|
||||
"clear": "Borrar pesquisa"
|
||||
},
|
||||
"filter": {
|
||||
"label": {
|
||||
"cameras": "Cámaras"
|
||||
}
|
||||
},
|
||||
"searchFor": "Procurar por {{inputValue}}"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"default": "Preferencias - Frigate",
|
||||
"authentication": "Configuracións de Autenticación - Frigate",
|
||||
"camera": "Configuracións da Cámara - Frigate",
|
||||
"general": "Configuracións xerais - Frigate",
|
||||
"notifications": "Configuración de Notificacións - Frigate",
|
||||
"enrichments": "Configuración complementarias - Frigate",
|
||||
"masksAndZones": "Editor de máscaras e zonas - Frigate"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"cameras": "Estatísticas de cámaras - Frigate",
|
||||
"storage": "Estatísticas de Almacenamento - Frigate",
|
||||
"general": "Estatísticas Xerais - Frigate",
|
||||
"enrichments": "Estatísticas complementarias - Frigate",
|
||||
"logs": {
|
||||
"frigate": "Rexistros de Frigate - Frigate"
|
||||
}
|
||||
},
|
||||
"title": "Sistema",
|
||||
"logs": {
|
||||
"download": {
|
||||
"label": "Descargar logs"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
"untilForRestart": "Amíg a Frigate újraindul.",
|
||||
"untilRestart": "Amíg újraindul",
|
||||
"justNow": "Most",
|
||||
"ago": "{{timeAgo}} ezelőtt",
|
||||
"ago": "Ennyi ideje: {{timeAgo}}",
|
||||
"today": "Ma",
|
||||
"yesterday": "Tegnap",
|
||||
"last7": "Elmúlt 7 nap",
|
||||
@@ -14,15 +14,15 @@
|
||||
"thisWeek": "Ezen a héten",
|
||||
"lastWeek": "Előző héten",
|
||||
"thisMonth": "Ebben a hónapban",
|
||||
"lastMonth": "Előző hónap",
|
||||
"lastMonth": "Előző hónapban",
|
||||
"5minutes": "5 perc",
|
||||
"10minutes": "10 perc",
|
||||
"30minutes": "30 perc",
|
||||
"1hour": "1 óra",
|
||||
"12hours": "12 óra",
|
||||
"24hours": "24 óra",
|
||||
"pm": "PM",
|
||||
"am": "AM",
|
||||
"pm": "du",
|
||||
"am": "de",
|
||||
"yr": "{{time}} év",
|
||||
"mo": "{{time}} hónap",
|
||||
"d": "{{time}} nap",
|
||||
@@ -41,38 +41,38 @@
|
||||
"day_one": "{{time}} nap",
|
||||
"day_other": "{{time}} napok",
|
||||
"formattedTimestamp": {
|
||||
"24hour": "HHH n, ÓÓ:pp:mm",
|
||||
"12hour": "HHH d, ó:pp:mm aaa"
|
||||
"24hour": "MMM d, HH:mm:ss",
|
||||
"12hour": "MMM d, h:mm:ss aaa"
|
||||
},
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "HHH d, éééé",
|
||||
"24hour": "HHH n, éééé"
|
||||
"12hour": "MMM d, yyyy",
|
||||
"24hour": "MMM d, yyyy"
|
||||
},
|
||||
"formattedTimestampHourMinute": {
|
||||
"24hour": "ÓÓ:pp",
|
||||
"12hour": "ó:pp aaa"
|
||||
"24hour": "HH:mm",
|
||||
"12hour": "h:mm aaa"
|
||||
},
|
||||
"formattedTimestamp2": {
|
||||
"24hour": "n HHH ÓÓ:pp:mm",
|
||||
"12hour": "HH/NN ó:pp:mma"
|
||||
"24hour": "d MMM HH:mm:ss",
|
||||
"12hour": "MM/dd h:mm:ssa"
|
||||
},
|
||||
"formattedTimestampHourMinuteSecond": {
|
||||
"24hour": "ÓÓ:pp:mm",
|
||||
"12hour": "ó:pp:mm aaa"
|
||||
"24hour": "HH:mm:ss",
|
||||
"12hour": "h:mm:ss aaa"
|
||||
},
|
||||
"formattedTimestampMonthDayYearHourMinute": {
|
||||
"24hour": "HHH n éééé, ÓÓ:pp",
|
||||
"12hour": "HHH n éééé, ó:pp aaa"
|
||||
"24hour": "MMM d yyyy, HH:mm",
|
||||
"12hour": "MMM d yyyy, h:mm aaa"
|
||||
},
|
||||
"formattedTimestampFilename": {
|
||||
"24hour": "HH-nn-éé-ÓÓ-pp-mm",
|
||||
"12hour": "HH-nn-éé-ó-pp-mm-a"
|
||||
"24hour": "yy-MM-dd-HH-mm-ss",
|
||||
"12hour": "yy-MM-dd-h-mm-ss-a"
|
||||
},
|
||||
"formattedTimestampMonthDayHourMinute": {
|
||||
"24hour": "HHH n, ÓÓ:pp",
|
||||
"12hour": "HHH n, ó:pp aaa"
|
||||
"24hour": "MMM d, HH:mm",
|
||||
"12hour": "MMM d, h:mm aaa"
|
||||
},
|
||||
"formattedTimestampMonthDay": "HHH n"
|
||||
"formattedTimestampMonthDay": "MMM d"
|
||||
},
|
||||
"menu": {
|
||||
"darkMode": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"ask_a": "Ez a tárgy egy <code>{{label}}</code>?",
|
||||
"label": "Erősítse meg ezt a cimkét a Frigate plus felé",
|
||||
"ask_an": "Ez a tárgy egy <code>{{label}}</code>?",
|
||||
"ask_full": "Ez egy <code>{{untranslatedLabel}}</code>{{translatedLabel}} tárgy?"
|
||||
"ask_full": "Ez a tárgy egy <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"recordings": {
|
||||
"documentTitle": "Felvételek - Frigate"
|
||||
},
|
||||
"markTheseItemsAsReviewed": "Ezen elwmek megjelölése áttekintettként",
|
||||
"markTheseItemsAsReviewed": "Ezen elemek megjelölése áttekintettként",
|
||||
"markAsReviewed": "Megjelölés Áttekintettként",
|
||||
"selected_one": "{{count}} kiválasztva",
|
||||
"selected_other": "{{count}} kiválasztva"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"classification": "Osztályozási beállítások - Frigate",
|
||||
"masksAndZones": "Maszk és zónaszerkesztő - Frigate",
|
||||
"object": "Hibakeresés - Frigate",
|
||||
"general": "Áltlános beállítások - Frigate",
|
||||
"general": "Áltlános Beállítások - Frigate",
|
||||
"frigatePlus": "Frigate+ beállítások - Frigate",
|
||||
"notifications": "Értesítések beállítása - Frigate",
|
||||
"motionTuner": "Mozgás Hangoló - Frigate",
|
||||
@@ -143,7 +143,7 @@
|
||||
"success": "A kiegészítő beállítások elmentésre kerültek. A módosítások alkalmazásához indítsa újra a Frigate-et."
|
||||
},
|
||||
"unsavedChanges": "Mentetlen gazdagítási beállítás változtatások",
|
||||
"title": "Kiegészítés Beállítások",
|
||||
"title": "Kiegészítők Beállítása",
|
||||
"restart_required": "Újraindítás szükséges (a kiegészítő beállítások megváltoztak)"
|
||||
},
|
||||
"notification": {
|
||||
|
||||
@@ -644,7 +644,7 @@
|
||||
}
|
||||
},
|
||||
"title": "Semantisch zoeken",
|
||||
"desc": "Semantische zoektocht in Frigate laat je opsporingsberichten vinden binnen je beoordelingsvoorwerpen met het beeld zelf, een gebruiker-definieerde tekstbeschrijving, of een automatisch gegen.",
|
||||
"desc": "Semantisch zoeken in Frigate stelt je in staat om getraceerde objecten binnen je review-items te vinden, met behulp van de afbeelding zelf, een door de gebruiker gedefinieerde tekstbeschrijving of een automatisch gegenereerde beschrijving.",
|
||||
"readTheDocumentation": "Lees de documentatie"
|
||||
},
|
||||
"faceRecognition": {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"chant": "Canto",
|
||||
"babbling": "Balbuciando",
|
||||
"bellow": "Abaixo",
|
||||
"whoop": "Grito",
|
||||
"whoop": "Grito de Felicidade",
|
||||
"whispering": "Sussurrando",
|
||||
"laughter": "Risada",
|
||||
"snicker": "Risada",
|
||||
@@ -69,7 +69,7 @@
|
||||
"bark": "Latido",
|
||||
"yip": "Latido / Grito Agudo",
|
||||
"howl": "Uivado",
|
||||
"bow_wow": "Bow Wow",
|
||||
"bow_wow": "Latido",
|
||||
"growling": "Rosnado",
|
||||
"whimper_dog": "Choro de Cachorro",
|
||||
"purr": "Ronronado",
|
||||
@@ -129,7 +129,7 @@
|
||||
"frog": "Sapo",
|
||||
"croak": "Coaxado",
|
||||
"snake": "Cobra",
|
||||
"rattle": "Guizo",
|
||||
"rattle": "Chocalho",
|
||||
"whale_vocalization": "Vocalização de Baleia",
|
||||
"music": "Música",
|
||||
"musical_instrument": "Instrumento Musical",
|
||||
@@ -139,7 +139,7 @@
|
||||
"bass_guitar": "Baixo",
|
||||
"acoustic_guitar": "Violão Acústico",
|
||||
"steel_guitar": "Guitarra Havaiana",
|
||||
"tapping": "Tapping",
|
||||
"tapping": "Batidas Leves",
|
||||
"strum": "Dedilhado",
|
||||
"banjo": "Banjo",
|
||||
"sitar": "Sitar",
|
||||
@@ -163,5 +163,267 @@
|
||||
"drum_roll": "Tambores Rufando",
|
||||
"bass_drum": "Bumbo",
|
||||
"timpani": "Tímpanos (Instrumento Musical)",
|
||||
"tabla": "Tabla"
|
||||
"tabla": "Tabla",
|
||||
"wood_block": "Bloco de Madeira",
|
||||
"bagpipes": "Gaita de Fole",
|
||||
"pop_music": "Música Pop",
|
||||
"grunge": "Grunge",
|
||||
"middle_eastern_music": "Música do Oriente Médio",
|
||||
"jazz": "Jazz",
|
||||
"disco": "Disco",
|
||||
"classical_music": "Música Clássica",
|
||||
"opera": "Ópera",
|
||||
"electronic_music": "Música Eletrónica",
|
||||
"house_music": "Música House",
|
||||
"techno": "Techno",
|
||||
"dubstep": "Dubstep",
|
||||
"drum_and_bass": "Drum and Bass",
|
||||
"electronica": "Eletrónica",
|
||||
"cymbal": "Címbalo",
|
||||
"hi_hat": "Chimbau",
|
||||
"tambourine": "Pandeiro",
|
||||
"maraca": "Maraca",
|
||||
"gong": "Gongo",
|
||||
"tubular_bells": "Sinos Tubulares",
|
||||
"mallet_percussion": "Percussão de Martelo",
|
||||
"marimba": "Marimba",
|
||||
"glockenspiel": "Glockenspiel",
|
||||
"vibraphone": "Vibrafone",
|
||||
"steelpan": "Panela de Aço",
|
||||
"orchestra": "Orquestra",
|
||||
"brass_instrument": "Instrumento de Metal",
|
||||
"french_horn": "Trompa Francesa",
|
||||
"trumpet": "Trombeta",
|
||||
"trombone": "Trombone",
|
||||
"bowed_string_instrument": "Instrumento de Cordas Friccionadas",
|
||||
"string_section": "Seção de Cordas",
|
||||
"violin": "Violino",
|
||||
"pizzicato": "Pizzicato",
|
||||
"cello": "Violoncelo",
|
||||
"double_bass": "Contrabaixo",
|
||||
"wind_instrument": "Instrumento de Sopro",
|
||||
"flute": "Flauta",
|
||||
"saxophone": "Saxofone",
|
||||
"clarinet": "Clarinete",
|
||||
"harp": "Harpa",
|
||||
"bell": "Sino",
|
||||
"church_bell": "Sino de Igreja",
|
||||
"jingle_bell": "Guizo",
|
||||
"bicycle_bell": "Campainha de Bicicleta",
|
||||
"tuning_fork": "Diapasão",
|
||||
"chime": "Carrilhão",
|
||||
"wind_chime": "Sinos de Vento",
|
||||
"harmonica": "Gaita",
|
||||
"accordion": "Acordeão",
|
||||
"didgeridoo": "Didjeridu",
|
||||
"theremin": "Teremim",
|
||||
"scratching": "Arranhado",
|
||||
"hip_hop_music": "Música Hip-Hop",
|
||||
"beatboxing": "Beatbox",
|
||||
"rock_music": "Rock",
|
||||
"heavy_metal": "Heavy Metal",
|
||||
"punk_rock": "Punk Rock",
|
||||
"progressive_rock": "Rock Progressivo",
|
||||
"rock_and_roll": "Rock and Roll",
|
||||
"psychedelic_rock": "Rock Psicodélico",
|
||||
"rhythm_and_blues": "Rhythm and Blues",
|
||||
"soul_music": "Música Soul",
|
||||
"music_of_latin_america": "Music of Latin America",
|
||||
"salsa_music": "Música Salsa",
|
||||
"flamenco": "Flamenco",
|
||||
"blues": "Blues",
|
||||
"music_for_children": "Música para Crianças",
|
||||
"new-age_music": "Música New Age",
|
||||
"vocal_music": "Música Vocal",
|
||||
"a_capella": "A Capella",
|
||||
"music_of_africa": "Music of Africa",
|
||||
"afrobeat": "Afrobeat",
|
||||
"christian_music": "Música Cristã",
|
||||
"gospel_music": "Música Gospel",
|
||||
"music_of_asia": "Music of Asia",
|
||||
"carnatic_music": "Música Carnática",
|
||||
"music_of_bollywood": "Música de Bollywood",
|
||||
"ska": "Ska",
|
||||
"traditional_music": "Música Tradicional",
|
||||
"independent_music": "Música Independente",
|
||||
"song": "Música",
|
||||
"thunderstorm": "Tempestade",
|
||||
"thunder": "Trovão",
|
||||
"water": "Água",
|
||||
"rain": "Chuva",
|
||||
"raindrop": "Gota de Chuva",
|
||||
"rain_on_surface": "Chuva na Superfície",
|
||||
"stream": "Transmissão",
|
||||
"waterfall": "Cachoeira",
|
||||
"ocean": "Oceano",
|
||||
"waves": "Ondas",
|
||||
"steam": "Vapor",
|
||||
"gurgling": "Borbulhado",
|
||||
"fire": "Fogo",
|
||||
"crackle": "Estalo",
|
||||
"sailboat": "Veleiro",
|
||||
"rowboat": "Barco a Remo",
|
||||
"motorboat": "Lancha",
|
||||
"ship": "Navio",
|
||||
"motor_vehicle": "Veículo Motorizado",
|
||||
"toot": "Buzinado",
|
||||
"car_alarm": "Alarme de Carro",
|
||||
"power_windows": "Vidros Elétricos",
|
||||
"skidding": "Derrapado",
|
||||
"singing_bowl": "Tigela Tibetana",
|
||||
"reggae": "Reggae",
|
||||
"country": "País",
|
||||
"swing_music": "Música Swing",
|
||||
"bluegrass": "Música Bluegrass",
|
||||
"funk": "Funk",
|
||||
"folk_music": "Música Folk",
|
||||
"electronic_dance_music": "Música Eletrônica",
|
||||
"ambient_music": "Música Ambiente",
|
||||
"trance_music": "Música Trance",
|
||||
"background_music": "Música de Fundo",
|
||||
"theme_music": "Música Tema",
|
||||
"jingle": "Jingle",
|
||||
"soundtrack_music": "Música de Trilha Sonora",
|
||||
"lullaby": "Canção de Ninar",
|
||||
"video_game_music": "Música de Video Game",
|
||||
"christmas_music": "Música Natalina",
|
||||
"dance_music": "Música Dance",
|
||||
"wedding_music": "Música de Casamento",
|
||||
"happy_music": "Música Feliz",
|
||||
"sad_music": "Música Triste",
|
||||
"tender_music": "Música Suave",
|
||||
"exciting_music": "Música Empolgante",
|
||||
"angry_music": "Música Raivosa",
|
||||
"scary_music": "Música Assustadora",
|
||||
"wind": "Vento",
|
||||
"rustling_leaves": "Folhas Farfalhantes",
|
||||
"fixed-wing_aircraft": "Aeronave de Asa Fixa",
|
||||
"engine": "Motor",
|
||||
"light_engine": "Motor Leve",
|
||||
"dental_drill's_drill": "Broca Odontológica",
|
||||
"lawn_mower": "Cortador de Grama",
|
||||
"chainsaw": "Motosserra",
|
||||
"medium_engine": "Motor Médio",
|
||||
"heavy_engine": "Motor Pesado",
|
||||
"engine_knocking": "Motor Batendo",
|
||||
"engine_starting": "Motor Partindo",
|
||||
"idling": "Marcha Lenta",
|
||||
"chopping": "Cortando",
|
||||
"frying": "Fritando",
|
||||
"microwave_oven": "Forno Microondas",
|
||||
"water_tap": "Torneira de Água",
|
||||
"bathtub": "Banheira",
|
||||
"toilet_flush": "Descarga de Vaso Sanitário",
|
||||
"computer_keyboard": "Teclado de Computador",
|
||||
"writing": "Escrita",
|
||||
"alarm": "Alarme",
|
||||
"telephone": "Telefone",
|
||||
"telephone_bell_ringing": "Telefone Tocando",
|
||||
"ringtone": "Toque de Celular",
|
||||
"telephone_dialing": "Telefone Discando",
|
||||
"dial_tone": "Tom de Discagem",
|
||||
"busy_signal": "Sinal de Ocupado",
|
||||
"alarm_clock": "Despertador",
|
||||
"siren": "Sirene",
|
||||
"civil_defense_siren": "Sirene de Defesa Civil",
|
||||
"wind_noise": "Ruído de Vento",
|
||||
"tire_squeal": "Pneus Cantando",
|
||||
"car_passing_by": "Carro Passando",
|
||||
"race_car": "Carro de Corrida",
|
||||
"truck": "Pickup / Caminhão",
|
||||
"air_brake": "Freios a Ar",
|
||||
"air_horn": "Buzina a Ar",
|
||||
"reversing_beeps": "Alarme de Ré",
|
||||
"ice_cream_truck": "Carro de Sorvete",
|
||||
"emergency_vehicle": "Veículo de Emergência",
|
||||
"police_car": "Carro de Polícia",
|
||||
"ambulance": "Ambulância",
|
||||
"fire_engine": "Caminhão de Bombeiros",
|
||||
"traffic_noise": "Barulho de Tráfego",
|
||||
"rail_transport": "Transporte Ferroviário",
|
||||
"train_whistle": "Apito de Trem",
|
||||
"train_horn": "Buzina de Trem",
|
||||
"railroad_car": "Vagão de Trem",
|
||||
"train_wheels_squealing": "Rodas de Trem Rangendo",
|
||||
"subway": "Metrô",
|
||||
"aircraft": "Aeronave",
|
||||
"aircraft_engine": "Motor de Aeronave",
|
||||
"jet_engine": "Motor a Jato",
|
||||
"propeller": "Hélice",
|
||||
"helicopter": "Helicóptero",
|
||||
"accelerating": "Acelerando",
|
||||
"doorbell": "Campainha",
|
||||
"ding-dong": "Toque de Campainha",
|
||||
"sliding_door": "Porta de Correr",
|
||||
"slam": "Batida Forte",
|
||||
"knock": "Batida na Porta",
|
||||
"burst": "Estouro / Rajada",
|
||||
"eruption": "Erupção",
|
||||
"boom": "Estrondo",
|
||||
"wood": "Madeira",
|
||||
"chop": "Barulho de Corte",
|
||||
"splinter": "Lascado",
|
||||
"crack": "Rachado",
|
||||
"glass": "Vidro",
|
||||
"chink": "Fenda",
|
||||
"shatter": "Estilhaçado",
|
||||
"silence": "Silêncio",
|
||||
"sound_effect": "Efeito Sonoro",
|
||||
"environmental_noise": "Ruido Ambiente",
|
||||
"static": "Estático",
|
||||
"white_noise": "Ruido Branco",
|
||||
"pink_noise": "Ruido Rosa",
|
||||
"television": "Televisão",
|
||||
"radio": "Rádio",
|
||||
"field_recording": "Gravação de Campo",
|
||||
"scream": "Grito",
|
||||
"tap": "Toque",
|
||||
"squeak": "Rangido",
|
||||
"cupboard_open_or_close": "Cristaleira Abrindo ou Fechando",
|
||||
"drawer_open_or_close": "Gaveteiro Abrindo ou Fechando",
|
||||
"dishes": "Pratos",
|
||||
"cutlery": "Talheres",
|
||||
"electric_toothbrush": "Escova de Dentes Elétrica",
|
||||
"vacuum_cleaner": "Aspirador de Pó",
|
||||
"zipper": "Zíper",
|
||||
"keys_jangling": "Chaves Chacoalhando",
|
||||
"coin": "Moeda",
|
||||
"electric_shaver": "Barbeador Elétrico",
|
||||
"shuffling_cards": "Embaralhar de Cartas",
|
||||
"typing": "Digitação",
|
||||
"typewriter": "Máquina de Escrever",
|
||||
"buzzer": "Zumbador",
|
||||
"smoke_detector": "Detector de Fumaça",
|
||||
"fire_alarm": "Alarme de Incêndio",
|
||||
"foghorn": "Buzina de Nevoeiro",
|
||||
"whistle": "Apito",
|
||||
"steam_whistle": "Apito a Vapor",
|
||||
"mechanisms": "Mecanismos",
|
||||
"ratchet": "Catraca",
|
||||
"tick": "Tique",
|
||||
"tick-tock": "Tique-Toque",
|
||||
"gears": "Engrenagens",
|
||||
"pulleys": "Polias",
|
||||
"sewing_machine": "Máquina de Costura",
|
||||
"mechanical_fan": "Ventilador Mecânico",
|
||||
"air_conditioning": "Ar-Condicionado",
|
||||
"cash_register": "Caixa Registradora",
|
||||
"printer": "Impressora",
|
||||
"single-lens_reflex_camera": "Câmera Single-Lens Reflex",
|
||||
"tools": "Ferramentas",
|
||||
"hammer": "Martelo",
|
||||
"jackhammer": "Britadeira",
|
||||
"sawing": "Som de Serra",
|
||||
"filing": "Som de Lima",
|
||||
"sanding": "Lixamento",
|
||||
"power_tool": "Ferramenta Elétrica",
|
||||
"drill": "Furadeira",
|
||||
"explosion": "Explosão",
|
||||
"gunshot": "Tiro",
|
||||
"machine_gun": "Metralhadora",
|
||||
"fusillade": "Fuzilamento",
|
||||
"artillery_fire": "Fogo de Artilharia",
|
||||
"cap_gun": "Espoleta",
|
||||
"fireworks": "Fogos de Artifício",
|
||||
"firecracker": "Rojões"
|
||||
}
|
||||
|
||||
@@ -25,27 +25,27 @@
|
||||
"yr": "{{time}}ano",
|
||||
"year_one": "{{time}} ano",
|
||||
"year_many": "{{time}} anos",
|
||||
"year_other": "",
|
||||
"year_other": "{{time}} anos",
|
||||
"mo": "{{time}}mês",
|
||||
"month_one": "{{time}} mês",
|
||||
"month_many": "{{time}} meses",
|
||||
"month_other": "",
|
||||
"month_other": "{{time}} meses",
|
||||
"d": "{{time}} dia",
|
||||
"day_one": "{{time}} dia",
|
||||
"day_many": "{{time}} dias",
|
||||
"day_other": "",
|
||||
"day_other": "{{time}} dias",
|
||||
"h": "{{time}}h",
|
||||
"hour_one": "{{time}} hora",
|
||||
"hour_many": "{{time}} horas",
|
||||
"hour_other": "",
|
||||
"hour_other": "{{time}} horas",
|
||||
"m": "{{time}}m",
|
||||
"minute_one": "{{time}} minuto",
|
||||
"minute_many": "{{time}} minutos",
|
||||
"minute_other": "",
|
||||
"minute_other": "{{time}} minutos",
|
||||
"s": "{{time}}s",
|
||||
"second_one": "{{time}} segundo",
|
||||
"second_many": "{{time}} segundos",
|
||||
"second_other": "",
|
||||
"second_other": "{{time}} segundos",
|
||||
"formattedTimestamp": {
|
||||
"12hour": "d MMM,h:mm:ss aaa",
|
||||
"24hour": "d MMM, HH:mm:ss"
|
||||
@@ -83,7 +83,7 @@
|
||||
"selectItem": "Selecione {{item}}",
|
||||
"unit": {
|
||||
"speed": {
|
||||
"mph": "mph",
|
||||
"mph": "mi/h",
|
||||
"kph": "km/h"
|
||||
},
|
||||
"length": {
|
||||
@@ -201,7 +201,65 @@
|
||||
},
|
||||
"restart": "Reiniciar o Frigate",
|
||||
"live": {
|
||||
"title": "Ao Vivo"
|
||||
"title": "Ao Vivo",
|
||||
"allCameras": "Todas as câmeras",
|
||||
"cameras": {
|
||||
"title": "Câmeras",
|
||||
"count_one": "{{count}} Câmera",
|
||||
"count_many": "{{count}} Câmeras",
|
||||
"count_other": "{{count}} Câmeras"
|
||||
}
|
||||
},
|
||||
"review": "Revisão",
|
||||
"explore": "Explorar",
|
||||
"export": "Exportar",
|
||||
"uiPlayground": "Playground da UI",
|
||||
"faceLibrary": "Biblioteca de Rostos",
|
||||
"user": {
|
||||
"title": "Usuário",
|
||||
"account": "Conta",
|
||||
"current": "Usuário Atual: {{user}}",
|
||||
"anonymous": "anônimo",
|
||||
"logout": "Sair",
|
||||
"setPassword": "Definir Senha"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"copyUrlToClipboard": "URL copiada para a área de transferência.",
|
||||
"save": {
|
||||
"title": "Salvar",
|
||||
"error": {
|
||||
"title": "Falha ao salvar as alterações de configuração: {{errorMessage}}",
|
||||
"noMessage": "Falha ao salvar as alterações de configuração"
|
||||
}
|
||||
}
|
||||
},
|
||||
"role": {
|
||||
"title": "Papel",
|
||||
"admin": "Administrador",
|
||||
"viewer": "Espectador",
|
||||
"desc": "Administradores possuem acesso total a todos os recursos da interface do Frigate. Espectadores são limitados a ver as câmeras, revisar itens, e filmagens históricas na interface."
|
||||
},
|
||||
"pagination": {
|
||||
"label": "paginação",
|
||||
"previous": {
|
||||
"title": "Anterior",
|
||||
"label": "Ir para a página anterior"
|
||||
},
|
||||
"next": {
|
||||
"title": "Próximo",
|
||||
"label": "Ir para a próxima página"
|
||||
},
|
||||
"more": "Mais páginas"
|
||||
},
|
||||
"accessDenied": {
|
||||
"documentTitle": "Acesso Negado - Frigate",
|
||||
"title": "Acesso Negado",
|
||||
"desc": "Você não possui permissão para visualizar essa página."
|
||||
},
|
||||
"notFound": {
|
||||
"documentTitle": "Não Encontrado - Frigate",
|
||||
"title": "404",
|
||||
"desc": "Página não encontrada"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
},
|
||||
"review": {
|
||||
"question": {
|
||||
"label": "Confirmar essa etiqueta para Frigate Plus",
|
||||
"label": "Confirmar esse rótulo para Frigate Plus",
|
||||
"ask_a": "Este objeto é um <code>{{label}}</code>?",
|
||||
"ask_an": "Este objeto é um<code>{{label}}</code>?",
|
||||
"ask_full": "Este objeto é um<code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"labels": {
|
||||
"label": "Rótulos",
|
||||
"all": {
|
||||
"title": "Todas as Etiquetas",
|
||||
"short": "Etiquetas"
|
||||
"title": "Todos os Rótulos",
|
||||
"short": "Rótulos"
|
||||
},
|
||||
"count_one": "{{count}} Etiqueta",
|
||||
"count_other": "{{count}} Etiquetas"
|
||||
"count_one": "{{count}} Rótulo",
|
||||
"count_other": "{{count}} Rótulos"
|
||||
},
|
||||
"zones": {
|
||||
"label": "Zonas",
|
||||
@@ -29,8 +29,8 @@
|
||||
},
|
||||
"timeRange": "Intervalo de Tempo",
|
||||
"subLabels": {
|
||||
"label": "Sub-etiquetas",
|
||||
"all": "Todas as Sub-etiquetas"
|
||||
"label": "Sub-Rótulos",
|
||||
"all": "Todos os Sub-Rótulos"
|
||||
},
|
||||
"score": "Pontuação",
|
||||
"estimatedSpeed": "Velocidade Estimada {{unit}}",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"value": "{{seconds}} segundos",
|
||||
"short": {
|
||||
"title": "Latência",
|
||||
"value": "{{seconds}} segundos"
|
||||
"value": "{{seconds}} s"
|
||||
}
|
||||
},
|
||||
"totalFrames": "Total de Quadros:",
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
},
|
||||
"tips": {
|
||||
"mismatch_one": "{{count}} objeto indisponível foi detectado e incluido nesse item de revisão. Esse objeto ou não se qualifica para um alerta ou detecção, ou já foi limpo/deletado.",
|
||||
"mismatch_many": "{{count}} objetos indisponíveis foram detectados e incluídos nesse item de revisão. Esses objetos ou não se qualificam para um alerta ou detecção, ou já foi limpo/deletado.",
|
||||
"mismatch_other": "",
|
||||
"mismatch_many": "{{count}} objetos indisponíveis foram detectados e incluídos nesse item de revisão. Esses objetos ou não se qualificam para um alerta ou detecção, ou já foram limpos/deletados.",
|
||||
"mismatch_other": "{{count}} objetos indisponíveis foram detectados e incluídos nesse item de revisão. Esses objetos ou não se qualificam para um alerta ou detecção, ou já foram limpos/deletados.",
|
||||
"hasMissingObjects": "Ajustar a sua configuração se quiser que o Frigate salve objetos rastreados com as seguintes categorias: <em>{{objects}}</em>"
|
||||
},
|
||||
"toast": {
|
||||
@@ -196,7 +196,7 @@
|
||||
"fetchingTrackedObjectsFailed": "Erro ao buscar por objetos rastreados: {{errorMessage}}",
|
||||
"trackedObjectsCount_one": "{{count}} objeto rastreado ",
|
||||
"trackedObjectsCount_many": "{{count}} objetos rastreados ",
|
||||
"trackedObjectsCount_other": "",
|
||||
"trackedObjectsCount_other": "{{count}} objetos rastreados ",
|
||||
"searchResult": {
|
||||
"tooltip": "Correspondência com {{type}} de {{confidence}}%",
|
||||
"deleteTrackedObject": {
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
"person": "Pessoa",
|
||||
"unknown": "Desconhecido",
|
||||
"face": "Detalhes do Rosto",
|
||||
"subLabelScore": "Pontuação do sub-rótulo",
|
||||
"scoreInfo": "A pontuação da sub etiqueta é a pontuação ponderada de todas as confidências faciais reconhecidas, então a pontuação pode ser diferente da mostrada na foto instantânea.",
|
||||
"subLabelScore": "Pontuação do Sub-Rótulo",
|
||||
"scoreInfo": "A pontuação do sub-rótulo é a pontuação ponderada de todas as confidências faciais reconhecidas, então a pontuação pode ser diferente da mostrada na foto instantânea.",
|
||||
"faceDesc": "Detalhes do objeto rastreado que gerou este rosto",
|
||||
"timestamp": "Carimbo de data e hora"
|
||||
},
|
||||
@@ -53,7 +53,7 @@
|
||||
"faceName": "Digite o Nome do Rosto",
|
||||
"uploadFace": "Enviar Imagem de Rosto",
|
||||
"description": {
|
||||
"uploadFace": "Faça o upload de uma imagem de {{name}} que mostre mostre seu rosto visto de frente. A imagem não precisa estar recortada apenas com o rosto."
|
||||
"uploadFace": "Faça o upload de uma imagem de {{name}} que mostre seu rosto visto de frente. A imagem não precisa estar recortada apenas com o rosto."
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
@@ -87,7 +87,7 @@
|
||||
"renamedFace": "O rosto foi renomeado com sucesso para {{name}}",
|
||||
"deletedName_one": "{{count}} rosto foi deletado com sucesso.",
|
||||
"deletedName_many": "{{count}} rostos foram deletados com sucesso.",
|
||||
"deletedName_other": ""
|
||||
"deletedName_other": "{{count}} rostos foram deletados com sucesso."
|
||||
},
|
||||
"error": {
|
||||
"uploadingImageFailed": "Falha ao enviar a imagem: {{errorMessage}}",
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"filter": {
|
||||
"label": {
|
||||
"cameras": "Câmeras",
|
||||
"labels": "Etiquetas",
|
||||
"labels": "Rótulos",
|
||||
"zones": "Zonas",
|
||||
"before": "Antes",
|
||||
"after": "Depois",
|
||||
@@ -21,7 +21,7 @@
|
||||
"max_score": "Pontuação Máxima",
|
||||
"min_speed": "Velocidade Mínima",
|
||||
"max_speed": "Velocidade Máxima",
|
||||
"sub_labels": "Sub-etiquetas",
|
||||
"sub_labels": "Sub-Rótulos",
|
||||
"search_type": "Tipo de Busca",
|
||||
"time_range": "Intervalo de Tempo",
|
||||
"recognized_license_plate": "Placa de Carro Reconhecida",
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"camera": "Configurações de Câmera - Frigate",
|
||||
"enrichments": "Configurações de Enriquecimento - Frigate",
|
||||
"masksAndZones": "Editor de Máscara e Zona - Frigate",
|
||||
"motionTuner": "Virada de Movimento - Frigate",
|
||||
"motionTuner": "Ajuste de Movimento - Frigate",
|
||||
"object": "Debug - Frigate",
|
||||
"general": "Configurações Gerais - Frigate",
|
||||
"frigatePlus": "Frigate+ Configurações- Frigate",
|
||||
@@ -18,8 +18,8 @@
|
||||
"users": "Usuários",
|
||||
"notifications": "Notificações",
|
||||
"frigateplus": "Frigate+",
|
||||
"motionTuner": "Ajuste de Detecção de Movimento",
|
||||
"debug": "Depuração",
|
||||
"motionTuner": "Ajuste de Movimento",
|
||||
"debug": "Depurar",
|
||||
"enrichments": "Melhorias"
|
||||
},
|
||||
"dialog": {
|
||||
@@ -254,7 +254,7 @@
|
||||
"edit": "Editar Zona",
|
||||
"point_one": "{{count}} ponto",
|
||||
"point_many": "{{count}} pontos",
|
||||
"point_other": "",
|
||||
"point_other": "{{count}} pontos",
|
||||
"clickDrawPolygon": "Clique para desenhar um polígono na imagem.",
|
||||
"name": {
|
||||
"title": "Nome",
|
||||
@@ -275,8 +275,348 @@
|
||||
},
|
||||
"allObjects": "Todos os Objetos",
|
||||
"speedEstimation": {
|
||||
"title": "Estimativa de Velocidade"
|
||||
"title": "Estimativa de Velocidade",
|
||||
"desc": "Habilitar estimativa de velocidade para objetos nesta zona. A zona deve ter exatamente 4 pontos.",
|
||||
"docs": "Leia a documentação",
|
||||
"lineADistance": "Distância da linha A ({{unit}})",
|
||||
"lineBDistance": "Distância da Linha B ({{unit}})",
|
||||
"lineCDistance": "Distância da linha C ({{unit}})",
|
||||
"lineDDistance": "Distância da linha D ({{unit}})"
|
||||
},
|
||||
"speedThreshold": {
|
||||
"title": "Limiar de Velocidade ({{unit}})",
|
||||
"desc": "Especifique a velocidade mínima para o objeto ser considerado nessa zona.",
|
||||
"toast": {
|
||||
"error": {
|
||||
"pointLengthError": "A estimativa de velocidade foi desativada para essa zona. Zonas com estimação de velocidade devem ter exatamente 4 pontos.",
|
||||
"loiteringTimeError": "Zonas com tempo de permanência acima de 0 não devem ser usadas com estimativa de velocidade."
|
||||
}
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"success": "A zona ({{zoneName}}) foi salva. Reinicie o Frigate para aplicar as mudanças."
|
||||
}
|
||||
},
|
||||
"objectMasks": {
|
||||
"objects": {
|
||||
"allObjectTypes": "Todos os tipos de objetos",
|
||||
"title": "Objetos",
|
||||
"desc": "O tipo de objeto que se aplica para essa máscara de objeto."
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} foi salvo. Reinicie o Frigate para aplicar as alterações.",
|
||||
"noName": "A máscara de objeto foi salva. Reinicie o Frigate para aplicar as alterações."
|
||||
}
|
||||
},
|
||||
"label": "Máscaras de Objeto",
|
||||
"documentTitle": "Editar Máscara de Objeto - Frigate",
|
||||
"desc": {
|
||||
"title": "Máscaras de filtro de objetos são usadas para filtrar falsos positivos para um determinado tipo de objeto baseado na localização.",
|
||||
"documentation": "Documentação"
|
||||
},
|
||||
"add": "Adicionar Máscara de Objeto",
|
||||
"edit": "Editar Máscara de Objeto",
|
||||
"context": "Filtro de máscaras de objeto são usados para filtrar falsos positivos para um dado tipo de objeto baseado na localização.",
|
||||
"point_one": "{{count}} ponto",
|
||||
"point_many": "{{count}} pontos",
|
||||
"point_other": "{{count}} pontos",
|
||||
"clickDrawPolygon": "Clique para desenhar um polígono na imagem."
|
||||
},
|
||||
"motionMasks": {
|
||||
"label": "Máscara de Movimento",
|
||||
"documentTitle": "Editar Máscara de Movimento - Frigate",
|
||||
"desc": {
|
||||
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento de ativarem uma detecção. Excesso de mascaramento tornará mais difícil que objetos sejam rastreados.",
|
||||
"documentation": "Documentação"
|
||||
},
|
||||
"add": "Nova Máscara de Movimento",
|
||||
"edit": "Editar Máscara de Movimento",
|
||||
"context": {
|
||||
"title": "Máscaras de movimento são usadas para prevenir typos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas com <em> muita parcimônia</em>, excesso de mascaramento tornará mais difícil de objetos serem rastreados.",
|
||||
"documentation": "Leia a documentação"
|
||||
},
|
||||
"point_one": "{{count}} ponto",
|
||||
"point_many": "{{count}} pontos",
|
||||
"point_other": "{{count}} pontos",
|
||||
"clickDrawPolygon": "Clique para desenhar um polígono na imagem.",
|
||||
"polygonAreaTooLarge": {
|
||||
"title": "A máscara de movimento está cobrindo {{polygonArea}}% do quadro da câmera. Máscaras de movimento grandes não são recomendadas.",
|
||||
"tips": "Máscaras de movimento não previnem objetos de serem detectados. Em vez disso você deve usar uma zona obrigatória.",
|
||||
"documentation": "Leia a documentação"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} foi salvo. Reinicie o Frigate para aplicar as alterações.",
|
||||
"noName": "Máscara de Movimento salva. Reinicie o Frigate para aplicar as alterações."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"motionDetectionTuner": {
|
||||
"desc": {
|
||||
"title": "O Frigate usa a detecção de movimento como uma verificação de primeira linha para ver se há algo acontecendo no quadro que valha a pena verificar com a detecção de objetos.",
|
||||
"documentation": "Leia o Guia de Ajuste de Movimento"
|
||||
},
|
||||
"Threshold": {
|
||||
"title": "Limite",
|
||||
"desc": "O valor do limiar dita o quanto de mudança na luminância de um pixel é requerida para ser considerada movimento. <em>Padrão: 30</em>"
|
||||
},
|
||||
"contourArea": {
|
||||
"title": "Área de contorno",
|
||||
"desc": "O valor do contorno da área é usado para decidir quais grupos de mudança de pixel se qualificam como movimento. <em>Padrão: 10</em>"
|
||||
},
|
||||
"improveContrast": {
|
||||
"title": "Melhorar o contraste",
|
||||
"desc": "Melhorar contraste para cenas escuras. <em>Padrão: ON</em>"
|
||||
},
|
||||
"toast": {
|
||||
"success": "As configurações de movimento foram salvas."
|
||||
},
|
||||
"title": "Ajuste de Detecção de Movimento",
|
||||
"unsavedChanges": "Alterações do Ajuste de Movimento Não Salvas ({{camera}})"
|
||||
},
|
||||
"debug": {
|
||||
"detectorDesc": "O Frigate usa seus detectores ({{detectors}}) para detectar objetos no fluxo de vídeo da sua câmera.",
|
||||
"desc": "A visualização de depuração mostra uma visão em tempo real dos objetos rastreados e suas estatísticas. A lista de objetos mostra um resumo com atraso de tempo dos objetos detectados.",
|
||||
"objectList": "Lista de Objetos",
|
||||
"boundingBoxes": {
|
||||
"desc": "Mostrar caixas delimitadoras ao redor de objetos rastreados",
|
||||
"colors": {
|
||||
"label": "Cores da caixa delimitadora de objetos",
|
||||
"info": "<li>Na inicialização, cores diferentes serão atribuídas a cada rótulo de objeto</li><li>Uma linha fina azul escura indica que o objeto não foi detectado neste momento</li><li>Uma linha fina cinza indica que o objeto foi detectado como estacionário</li><li>Uma linha grossa indica que o objeto está sujeito ao rastreamento automático (quando ativado)</li>"
|
||||
},
|
||||
"title": "Caixas delimitadoras"
|
||||
},
|
||||
"zones": {
|
||||
"title": "Zonas",
|
||||
"desc": "Mostrar um esboço de quaisquer zonas definidas"
|
||||
},
|
||||
"mask": {
|
||||
"title": "Máscaras de movimento",
|
||||
"desc": "Mostrar polígonos de máscara de movimento"
|
||||
},
|
||||
"motion": {
|
||||
"title": "Caixas de movimento",
|
||||
"desc": "Mostrar caixas ao redor das áreas onde o movimento é detectado",
|
||||
"tips": "<p><strong>Caixas de movimento</strong></p><br><p>Caixas vermelhas serão sobrepostas em áreas do quadro onde o movimento está sendo detectado</p>"
|
||||
},
|
||||
"regions": {
|
||||
"title": "Regiões",
|
||||
"desc": "Mostrar uma caixa da região de interesse enviada ao detector de objetos",
|
||||
"tips": "<p><strong>Caixas de Região</strong></p><br><p>Caixas verdes claras serão sobrepostas em áreas de interesse no quadro que está sendo enviado ao detector de objetos.</p>"
|
||||
},
|
||||
"title": "Depuração",
|
||||
"debugging": "Depuração",
|
||||
"objectShapeFilterDrawing": {
|
||||
"desc": "Desenhe um retângulo na imagem para ver os detalhes da área e proporções",
|
||||
"tips": "Habilite essa opção para desenhar um retângulo na imagem da camera para mostrar a sua área e proporção. Esses valores podem ser usados para estabelecer parâmetros de filtro de formato de objetos na sua configuração.",
|
||||
"document": "Leia a documentação ",
|
||||
"score": "Pontuação",
|
||||
"ratio": "Proporção",
|
||||
"area": "Área",
|
||||
"title": "Desenho de Filtro de Formato de Objeto"
|
||||
},
|
||||
"noObjects": "Nenhum Objeto",
|
||||
"timestamp": {
|
||||
"title": "Timestamp",
|
||||
"desc": "Sobreponha um timestamp na imagem"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"title": "Usuários",
|
||||
"management": {
|
||||
"title": "Gerenciamento de Usuário",
|
||||
"desc": "Gerencias as contas de usuário dessa instância do Frigate."
|
||||
},
|
||||
"addUser": "Adicionar Usuário",
|
||||
"updatePassword": "Atualizar Senha",
|
||||
"toast": {
|
||||
"success": {
|
||||
"createUser": "Usuário {{user}} criado com sucesso",
|
||||
"deleteUser": "Usuário {{user}} deletado com sucesso",
|
||||
"updatePassword": "Senha atualizada com sucesso.",
|
||||
"roleUpdated": "Papel atualizado para {{user}}"
|
||||
},
|
||||
"error": {
|
||||
"setPasswordFailed": "Falha ao salvar a senha: {{errorMessage}}",
|
||||
"createUserFailed": "Falha ao criar usuário: {{errorMessage}}",
|
||||
"deleteUserFailed": "Falha ao deletar usuário: {{errorMessage}}",
|
||||
"roleUpdateFailed": "Falha ao atualizar papel: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"form": {
|
||||
"password": {
|
||||
"match": "As senhas correspondem",
|
||||
"notMatch": "As senhas são diferentes",
|
||||
"title": "Senha",
|
||||
"placeholder": "Digita a senha",
|
||||
"confirm": {
|
||||
"title": "Confirmar Senha",
|
||||
"placeholder": "Confirmar Senha"
|
||||
},
|
||||
"strength": {
|
||||
"title": "Nível de segurança da senha: ",
|
||||
"weak": "Fraca",
|
||||
"medium": "Mediana",
|
||||
"strong": "Forte",
|
||||
"veryStrong": "Muito Forte"
|
||||
}
|
||||
},
|
||||
"newPassword": {
|
||||
"title": "Senha Nova",
|
||||
"placeholder": "Digite uma senha nova",
|
||||
"confirm": {
|
||||
"placeholder": "Digite a senha novamente"
|
||||
}
|
||||
},
|
||||
"usernameIsRequired": "Nome de usuário requerido",
|
||||
"passwordIsRequired": "Senha requerida",
|
||||
"user": {
|
||||
"title": "Nome de Usuário",
|
||||
"desc": "Apenas letras, números, pontos e sublinhados são permitidos.",
|
||||
"placeholder": "Digite o nome de usuário"
|
||||
}
|
||||
},
|
||||
"createUser": {
|
||||
"title": "Criar Novo Usuário",
|
||||
"desc": "Adicionar um novo usuário e especificar um papel para acesso às áreas da interface do Frigate.",
|
||||
"usernameOnlyInclude": "O nome de usuário pode conter apenas letras, números, . ou _",
|
||||
"confirmPassword": "Por favor confirme a sua senha"
|
||||
},
|
||||
"deleteUser": {
|
||||
"title": "Deletar Usuário",
|
||||
"desc": "Essa ação não pode ser desfeita. Isso irá deletar permanentemente a conta do usuário e remover todos os dados associados.",
|
||||
"warn": "Tem certeza que quer deletar <strong>{{username}}</strong>?"
|
||||
},
|
||||
"passwordSetting": {
|
||||
"cannotBeEmpty": "A senha não pode estar vazia",
|
||||
"doNotMatch": "As senhas não correspondem",
|
||||
"updatePassword": "Atualizar Senha para {{username}}",
|
||||
"setPassword": "Definir Senha",
|
||||
"desc": "Crie uma senha forte para proteger essa conta."
|
||||
},
|
||||
"changeRole": {
|
||||
"title": "Alterar Papel do Usuário",
|
||||
"select": "Selecionar um papel",
|
||||
"desc": "Atualizar permissões para <strong>{{username}}</strong>",
|
||||
"roleInfo": {
|
||||
"intro": "Selecione o papel apropriado para esse usuário:",
|
||||
"admin": "Administrador",
|
||||
"adminDesc": "Acesso total a todos os recursos.",
|
||||
"viewer": "Espectador",
|
||||
"viewerDesc": "Limitado aos Painéis ao Vivo, Revisar, Explorar, e Exportar somente."
|
||||
}
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"username": "Nome de Usuário",
|
||||
"actions": "Ações",
|
||||
"role": "Papel",
|
||||
"noUsers": "Nenhum usuário encontrado.",
|
||||
"changeRole": "Mudar papel do usuário",
|
||||
"password": "Senha",
|
||||
"deleteUser": "Deletar usuário"
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"suspendTime": {
|
||||
"10minutes": "Suspender por 10 minutos",
|
||||
"30minutes": "Suspender por 30 minutos",
|
||||
"1hour": "Suspender por 1 hora",
|
||||
"12hours": "Suspender por 12 horas",
|
||||
"24hours": "Suspender por 24 horas",
|
||||
"untilRestart": "Suspender até reiniciar",
|
||||
"suspend": "Suspender",
|
||||
"5minutes": "Suspender por 5 minutos"
|
||||
},
|
||||
"cancelSuspension": "Cancelar Suspensão",
|
||||
"toast": {
|
||||
"success": {
|
||||
"registered": "Registrados para notificações com sucesso. É necessário reiniciar o Frigate para que as notificações possam ser enviadas (incluindo a notificação de teste).",
|
||||
"settingSaved": "As configurações de notificações foram salvas."
|
||||
},
|
||||
"error": {
|
||||
"registerFailed": "Falha ao salvar o registro para notificações."
|
||||
}
|
||||
},
|
||||
"title": "Notificações",
|
||||
"notificationSettings": {
|
||||
"title": "Configurações de Notificação",
|
||||
"desc": "O Frigate pode enviar notificações push nativamente ao seu dispositivo quando estiver sendo executado no navegador ou instalado como um PWA.",
|
||||
"documentation": "Leia a Documentação"
|
||||
},
|
||||
"notificationUnavailable": {
|
||||
"title": "Notificações Indisponíveis",
|
||||
"desc": "Notificações push da Web exigem um contexto seguro (<code>https://…</code>). Essa é uma limitação do navegador. Acesse o Frigate com seguraça para usar as notificações.",
|
||||
"documentation": "Leia a Documentação"
|
||||
},
|
||||
"globalSettings": {
|
||||
"title": "Configurações Globais",
|
||||
"desc": "Suspender as notificações temporáriamente para câmeras específicas em todos os dispositivos registrados."
|
||||
},
|
||||
"email": {
|
||||
"title": "Email",
|
||||
"placeholder": "ex: exemplo@email.com",
|
||||
"desc": "Um email válido é requerido e será usado para notificar você caso haja algum problema com o serviço push."
|
||||
},
|
||||
"cameras": {
|
||||
"title": "Câmeras",
|
||||
"noCameras": "Nenhuma câmera disponível",
|
||||
"desc": "Selecionar para quais câmeras habilitar as notificações."
|
||||
},
|
||||
"deviceSpecific": "Configurações Específicas do Dispositivo",
|
||||
"registerDevice": "Registre Esse Dispositivo",
|
||||
"unregisterDevice": "Cancelar Registro Desse Dispositivo",
|
||||
"sendTestNotification": "Enviar uma notificação de teste",
|
||||
"unsavedRegistrations": "Registros de Notificações Não Salvos",
|
||||
"unsavedChanges": "Alterações de Notificações Não Salvas",
|
||||
"active": "Notificações Ativas",
|
||||
"suspended": "Notificações suspensas {{time}}"
|
||||
},
|
||||
"frigatePlus": {
|
||||
"title": "Configurações do Frigate+",
|
||||
"apiKey": {
|
||||
"title": "Chave de API do Frigate+",
|
||||
"validated": "A chave de API do Frigate+ detectada e validada",
|
||||
"notValidated": "A chave de API do Frigate+ não detectada ou não validada",
|
||||
"desc": "A chave de API do Frigate+ habilita a integração com o serviço do Frigate+.",
|
||||
"plusLink": "Leia mais sobre o Frigate+"
|
||||
},
|
||||
"modelInfo": {
|
||||
"plusModelType": {
|
||||
"baseModel": "Modelo Base",
|
||||
"userModel": "Ajuste Refinado"
|
||||
},
|
||||
"supportedDetectors": "Detectores Suportados",
|
||||
"cameras": "Câmeras",
|
||||
"loading": "Carregando informações do modelo…",
|
||||
"error": "Falha ao carregar as informações do modelo",
|
||||
"availableModels": "Modelos Disponíveis",
|
||||
"loadingAvailableModels": "Carregando modelos disponíveis…",
|
||||
"title": "Informação do Modelo",
|
||||
"modelType": "Tipo de Modelo",
|
||||
"trainDate": "Data do Treinamento",
|
||||
"baseModel": "Modelo Base",
|
||||
"modelSelect": "Os seus modelos disponíveis no Frigate+ podem ser selecionados aqui. Note que apenas modelos compatíveis com a sua configuração atual de detector podem ser selecionados."
|
||||
},
|
||||
"snapshotConfig": {
|
||||
"title": "Configuração de Captura de Imagem",
|
||||
"desc": "Enviar ao Frigate+ requer tanto a captura de imagem quanto a captura de imagem <code>clean_copy</code> estarem habilitadas na sua configuração.",
|
||||
"documentation": "Leia a documentação",
|
||||
"cleanCopyWarning": "Algumas câmeras possuem captura de imagem habilitada porém têm a cópia limpa desabilitada. Você precisa habilitar a <code>clean_copy</code> nas suas configurações de captura de imagem para poder submeter imagems dessa câmera ao Frigate+.",
|
||||
"table": {
|
||||
"camera": "Câmera",
|
||||
"snapshots": "Capturas de Imagem",
|
||||
"cleanCopySnapshots": "Capturas de Imagem <code>clean_copy</code>"
|
||||
}
|
||||
},
|
||||
"unsavedChanges": "Alterações de configurações do Frigate+ não salvas",
|
||||
"restart_required": "Reinicialização necessária (modelo do Frigate+ foi alterado)",
|
||||
"toast": {
|
||||
"success": "As configurações do Frigate+ foram salvas. Reinicie o Frigate para aplicar as alterações.",
|
||||
"error": "Falha ao salvar as alterações de configuração: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"type": {
|
||||
"label": "Tipo",
|
||||
"timestamp": "Marca temporal",
|
||||
"tag": "Etiqueta",
|
||||
"tag": "Marcador",
|
||||
"message": "Mensagem"
|
||||
},
|
||||
"tips": "Os Registros estão sendo transmitidos do servidor",
|
||||
@@ -157,7 +157,7 @@
|
||||
"detectHighCpuUsage": "{{camera}} possui alta utilização de CPU para detecção ({{detectAvg}}%)",
|
||||
"healthy": "O sistema está saudável",
|
||||
"cameraIsOffline": "{{camera}} está offline",
|
||||
"reindexingEmbeddings": "Reindexando embeddings ({{processed}}% completado)",
|
||||
"reindexingEmbeddings": "Reindexando os vetores de característica de imagens ({{processed}}% completado)",
|
||||
"detectIsSlow": "{{detect}} está lento ({{speed}} ms)"
|
||||
},
|
||||
"enrichments": {
|
||||
@@ -167,13 +167,13 @@
|
||||
"face_recognition": "Reconhecimento Facial",
|
||||
"plate_recognition": "Reconhecimento de Placa",
|
||||
"plate_recognition_speed": "Velocidade de Reconhecimento de Placas",
|
||||
"text_embedding_speed": "Velocidade de Incorporação de Textos",
|
||||
"text_embedding_speed": "Velocidade de Geração de Vetores de Texto",
|
||||
"yolov9_plate_detection_speed": "Velocidade de Reconhecimento de Placas do YOLOv9",
|
||||
"yolov9_plate_detection": "Detecção de Placas do YOLOv9",
|
||||
"image_embedding": "Incorporação de Imagem",
|
||||
"text_embedding": "Incorporação de Texto",
|
||||
"image_embedding_speed": "Velocidade de Incorporação de Imagem",
|
||||
"face_embedding_speed": "Velocidade de Incorporação de Rosto",
|
||||
"image_embedding": "Vetores de Características de Imagens",
|
||||
"text_embedding": "Vetor de Característica de Texto",
|
||||
"image_embedding_speed": "Velocidade de Geração de Vetores de Imagem",
|
||||
"face_embedding_speed": "Velocidade de Geração de Vetores de Rostos",
|
||||
"face_recognition_speed": "Velocidade de Reconhecimento de Rostos"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
"horse": "Cal",
|
||||
"bird": "Pasare",
|
||||
"sheep": "Oaie",
|
||||
"boat": "Barca",
|
||||
"motorcycle": "Motocicleta",
|
||||
"boat": "Barcă",
|
||||
"motorcycle": "Motocicletă",
|
||||
"bus": "Autobuz",
|
||||
"train": "Tren",
|
||||
"skateboard": "Skateboard",
|
||||
"camera": "Camera foto",
|
||||
"bicycle": "Bicicletă",
|
||||
"car": "Mașină",
|
||||
"cat": "Pisica",
|
||||
"cat": "Pisică",
|
||||
"animal": "Animal",
|
||||
"goat": "Capra",
|
||||
"keyboard": "Orga",
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
"button": "Repornește",
|
||||
"restarting": {
|
||||
"title": "Frigate repornește",
|
||||
"content": "Această pagină se va reâncărca în {{countdown}} secunde.",
|
||||
"button": "Forteaza Reincarcarea Acum"
|
||||
"content": "Această pagină se va reâncărca automat în {{countdown}} secunde.",
|
||||
"button": "Forțează acum reîncărcarea"
|
||||
}
|
||||
},
|
||||
"explore": {
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
"label": "Filtru camere"
|
||||
},
|
||||
"review": {
|
||||
"showReviewed": "Afișează revizuitele"
|
||||
"showReviewed": "Afișează cele revizuite"
|
||||
},
|
||||
"motion": {
|
||||
"showMotionOnly": "Afișează doar mișcarea"
|
||||
@@ -98,10 +98,10 @@
|
||||
"label": "Filtrează nivelul jurnalului",
|
||||
"filterBySeverity": "Filtrează jurnalele după severitate",
|
||||
"loading": {
|
||||
"title": "Se încarcă",
|
||||
"title": "Încărcare continuă",
|
||||
"desc": "Când panoul de jurnale este derulat până jos, noile jurnale sunt afișate automat pe măsură ce sunt adăugate."
|
||||
},
|
||||
"disableLogStreaming": "Dezactivează fluxul jurnalelor",
|
||||
"disableLogStreaming": "Dezactivează încărcarea continuă",
|
||||
"allLogs": "Toate jurnalele"
|
||||
},
|
||||
"trackedObjectDelete": {
|
||||
|
||||
@@ -5,17 +5,17 @@
|
||||
"airplane": "Avion",
|
||||
"bus": "Autobuz",
|
||||
"train": "Tren",
|
||||
"boat": "Barca",
|
||||
"boat": "Barcă",
|
||||
"fire_hydrant": "Hidrant",
|
||||
"street_sign": "Semn de Circulatie",
|
||||
"stop_sign": "Semn de Stop",
|
||||
"parking_meter": "Automat de Parcare",
|
||||
"bench": "Bancheta",
|
||||
"bird": "Pasare",
|
||||
"cat": "Pisica",
|
||||
"cat": "Pisică",
|
||||
"dog": "Câine",
|
||||
"horse": "Cal",
|
||||
"cow": "Vaca",
|
||||
"cow": "Vacă",
|
||||
"elephant": "Elefant",
|
||||
"bear": "Urs",
|
||||
"giraffe": "Girafa",
|
||||
@@ -46,7 +46,7 @@
|
||||
"bowl": "Castron",
|
||||
"banana": "Banana",
|
||||
"apple": "Mar",
|
||||
"motorcycle": "Motocicleta",
|
||||
"motorcycle": "Motocicletă",
|
||||
"traffic_light": "Semafor",
|
||||
"sheep": "Oaie",
|
||||
"zebra": "Zebra",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"objectLifecycle": {
|
||||
"lifecycleItemDesc": {
|
||||
"visible": "{{label}} detectata",
|
||||
"visible": "S-a detectat {{label}}",
|
||||
"active": "{{label}} a devenit activ",
|
||||
"entered_zone": "{{label}} a intrat în {{zones}}",
|
||||
"stationary": "{{label}} a devenit staționar",
|
||||
@@ -50,7 +50,7 @@
|
||||
"ratio": "Raport",
|
||||
"area": "Suprafață"
|
||||
},
|
||||
"gone": "{{label}} a ieșit",
|
||||
"gone": "{{label}} a părasit cadrul",
|
||||
"heard": "{{label}} auzit(ă)",
|
||||
"external": "{{label}} detectat(ă)"
|
||||
},
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
"title": "Calendar",
|
||||
"firstWeekday": {
|
||||
"label": "Prima zi a săptămânii",
|
||||
"desc": "Ziua în care încep săptămânile calendarului de revizuire.",
|
||||
"desc": "Ziua cu care încep săptămânile calendarului de revizuire.",
|
||||
"sunday": "Duminică",
|
||||
"monday": "Luni"
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
},
|
||||
"title": "Spațiu stocare",
|
||||
"cameraStorage": {
|
||||
"title": "Spațiu tocare camere",
|
||||
"title": "Spațiu stocare camere",
|
||||
"camera": "Camera",
|
||||
"unusedStorageInformation": "Informații despre stocarea neutilizată",
|
||||
"storageUsed": "Spațiu stocare",
|
||||
@@ -86,12 +86,12 @@
|
||||
},
|
||||
"copy": {
|
||||
"label": "Copiază",
|
||||
"success": "Copiază jurnalul",
|
||||
"success": "Jurnalul a fost copiat",
|
||||
"error": "Jurnalul nu s-a putut copia"
|
||||
},
|
||||
"type": {
|
||||
"label": "Tip",
|
||||
"timestamp": "Marca temporală",
|
||||
"timestamp": "Data / ora",
|
||||
"tag": "Etichetă",
|
||||
"message": "Mesaj"
|
||||
},
|
||||
@@ -110,7 +110,7 @@
|
||||
"image_embedding": "Încorporare imagini",
|
||||
"text_embedding": "Încorporare text",
|
||||
"plate_recognition": "Recunoaștere numere de înmatriculare",
|
||||
"image_embedding_speed": "Viteză încorporarei imaginii",
|
||||
"image_embedding_speed": "Viteză încorporare imagini",
|
||||
"face_recognition": "Recunoaștere facială",
|
||||
"face_recognition_speed": "Viteză recunoaștere facială",
|
||||
"plate_recognition_speed": "Viteză recunoaștere numere de înmatriculare",
|
||||
|
||||
Regular → Executable
+3
-3
@@ -420,11 +420,11 @@ export default function InputWithTags({
|
||||
? t("button.yes", { ns: "common" })
|
||||
: t("button.no", { ns: "common" });
|
||||
} else if (filterType === "labels") {
|
||||
return getTranslatedLabel(filterValues as string);
|
||||
return getTranslatedLabel(String(filterValues));
|
||||
} else if (filterType === "search_type") {
|
||||
return t("filter.searchType." + (filterValues as string));
|
||||
return t("filter.searchType." + String(filterValues));
|
||||
} else {
|
||||
return (filterValues as string).replaceAll("_", " ");
|
||||
return String(filterValues).replaceAll("_", " ");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ export default function GeneralSettings({ className }: GeneralSettingsProps) {
|
||||
"nb-NO": "nb",
|
||||
"yue-Hant": "yue",
|
||||
"zh-CN": "zhCN",
|
||||
"pt-BR": "ptBR",
|
||||
};
|
||||
|
||||
return supportedLanguageKeys.map((key) => {
|
||||
|
||||
@@ -10,6 +10,7 @@ const localeMap: Record<string, () => Promise<Locale>> = {
|
||||
fr: () => import("date-fns/locale/fr").then((module) => module.fr),
|
||||
ar: () => import("date-fns/locale/ar").then((module) => module.ar),
|
||||
pt: () => import("date-fns/locale/pt").then((module) => module.pt),
|
||||
"pt-BR": () => import("date-fns/locale/pt").then((module) => module.pt),
|
||||
ru: () => import("date-fns/locale/ru").then((module) => module.ru),
|
||||
de: () => import("date-fns/locale/de").then((module) => module.de),
|
||||
ja: () => import("date-fns/locale/ja").then((module) => module.ja),
|
||||
|
||||
@@ -17,7 +17,7 @@ export function useVideoDimensions(
|
||||
});
|
||||
|
||||
const videoAspectRatio = useMemo(() => {
|
||||
return videoResolution.width / videoResolution.height || 16 / 9;
|
||||
return videoResolution.width / videoResolution.height;
|
||||
}, [videoResolution]);
|
||||
|
||||
const containerAspectRatio = useMemo(() => {
|
||||
@@ -25,7 +25,7 @@ export function useVideoDimensions(
|
||||
}, [containerWidth, containerHeight]);
|
||||
|
||||
const videoDimensions = useMemo(() => {
|
||||
if (!containerWidth || !containerHeight)
|
||||
if (!containerWidth || !containerHeight || !videoAspectRatio)
|
||||
return { width: "100%", height: "100%" };
|
||||
if (containerAspectRatio > videoAspectRatio) {
|
||||
const height = containerHeight;
|
||||
|
||||
@@ -2,6 +2,7 @@ export const supportedLanguageKeys = [
|
||||
"en",
|
||||
"es",
|
||||
"pt",
|
||||
"pt-BR",
|
||||
"fr",
|
||||
"de",
|
||||
"it",
|
||||
|
||||
@@ -26,6 +26,15 @@ import { useDocDomain } from "@/hooks/use-doc-domain";
|
||||
|
||||
const API_LIMIT = 25;
|
||||
|
||||
// always parse these as string arrays
|
||||
const SEARCH_FILTER_ARRAY_KEYS = [
|
||||
"cameras",
|
||||
"labels",
|
||||
"sub_labels",
|
||||
"recognized_license_plate",
|
||||
"zones",
|
||||
];
|
||||
|
||||
export default function Explore() {
|
||||
// search field handler
|
||||
|
||||
@@ -58,13 +67,7 @@ export default function Explore() {
|
||||
const [search, setSearch] = useState("");
|
||||
|
||||
const [searchFilter, setSearchFilter, searchSearchParams] =
|
||||
useApiFilterArgs<SearchFilter>([
|
||||
"cameras",
|
||||
"labels",
|
||||
"sub_labels",
|
||||
"recognized_license_plate",
|
||||
"zones",
|
||||
]);
|
||||
useApiFilterArgs<SearchFilter>(SEARCH_FILTER_ARRAY_KEYS);
|
||||
|
||||
const searchTerm = useMemo(
|
||||
() => searchSearchParams?.["query"] || "",
|
||||
|
||||
@@ -118,50 +118,6 @@ export default function NotificationView({
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [changedValue]);
|
||||
|
||||
// notification key handling
|
||||
|
||||
const { data: publicKey } = useSWR(
|
||||
config?.notifications?.enabled ? "notifications/pubkey" : null,
|
||||
{ revalidateOnFocus: false },
|
||||
);
|
||||
|
||||
const subscribeToNotifications = useCallback(
|
||||
(registration: ServiceWorkerRegistration) => {
|
||||
if (registration) {
|
||||
addMessage(
|
||||
"notification_settings",
|
||||
t("notification.unsavedRegistrations"),
|
||||
undefined,
|
||||
"registration",
|
||||
);
|
||||
|
||||
registration.pushManager
|
||||
.subscribe({
|
||||
userVisibleOnly: true,
|
||||
applicationServerKey: publicKey,
|
||||
})
|
||||
.then((pushSubscription) => {
|
||||
axios
|
||||
.post("notifications/register", {
|
||||
sub: pushSubscription,
|
||||
})
|
||||
.catch(() => {
|
||||
toast.error(t("notification.toast.error.registerFailed"), {
|
||||
position: "top-center",
|
||||
});
|
||||
pushSubscription.unsubscribe();
|
||||
registration.unregister();
|
||||
setRegistration(null);
|
||||
});
|
||||
toast.success(t("notification.toast.success.registered"), {
|
||||
position: "top-center",
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
[publicKey, addMessage, t],
|
||||
);
|
||||
|
||||
// notification state
|
||||
|
||||
const [registration, setRegistration] =
|
||||
@@ -206,8 +162,70 @@ export default function NotificationView({
|
||||
},
|
||||
});
|
||||
|
||||
const watchAllEnabled = form.watch("allEnabled");
|
||||
const watchCameras = form.watch("cameras");
|
||||
|
||||
const anyCameraNotificationsEnabled = useMemo(
|
||||
() =>
|
||||
config &&
|
||||
Object.values(config.cameras).some(
|
||||
(c) =>
|
||||
c.enabled_in_config &&
|
||||
c.notifications &&
|
||||
c.notifications.enabled_in_config,
|
||||
),
|
||||
[config],
|
||||
);
|
||||
|
||||
const shouldFetchPubKey = Boolean(
|
||||
config &&
|
||||
(config.notifications?.enabled || anyCameraNotificationsEnabled) &&
|
||||
(watchAllEnabled ||
|
||||
(Array.isArray(watchCameras) && watchCameras.length > 0)),
|
||||
);
|
||||
|
||||
const { data: publicKey } = useSWR(
|
||||
shouldFetchPubKey ? "notifications/pubkey" : null,
|
||||
{ revalidateOnFocus: false },
|
||||
);
|
||||
|
||||
const subscribeToNotifications = useCallback(
|
||||
(registration: ServiceWorkerRegistration) => {
|
||||
if (registration) {
|
||||
addMessage(
|
||||
"notification_settings",
|
||||
t("notification.unsavedRegistrations"),
|
||||
undefined,
|
||||
"registration",
|
||||
);
|
||||
|
||||
registration.pushManager
|
||||
.subscribe({
|
||||
userVisibleOnly: true,
|
||||
applicationServerKey: publicKey,
|
||||
})
|
||||
.then((pushSubscription) => {
|
||||
axios
|
||||
.post("notifications/register", {
|
||||
sub: pushSubscription,
|
||||
})
|
||||
.catch(() => {
|
||||
toast.error(t("notification.toast.error.registerFailed"), {
|
||||
position: "top-center",
|
||||
});
|
||||
pushSubscription.unsubscribe();
|
||||
registration.unregister();
|
||||
setRegistration(null);
|
||||
});
|
||||
toast.success(t("notification.toast.success.registered"), {
|
||||
position: "top-center",
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
[publicKey, addMessage, t],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (watchCameras.length > 0) {
|
||||
form.setValue("allEnabled", false);
|
||||
@@ -521,13 +539,7 @@ export default function NotificationView({
|
||||
</Heading>
|
||||
<Button
|
||||
aria-label={t("notification.registerDevice")}
|
||||
disabled={
|
||||
(!config?.notifications.enabled &&
|
||||
notificationCameras.length === 0 &&
|
||||
!form.watch("allEnabled") &&
|
||||
form.watch("cameras").length === 0) ||
|
||||
publicKey == undefined
|
||||
}
|
||||
disabled={!shouldFetchPubKey || publicKey == undefined}
|
||||
onClick={() => {
|
||||
if (registration == null) {
|
||||
Notification.requestPermission().then((permission) => {
|
||||
|
||||
Reference in New Issue
Block a user