diff --git a/web/public/locales/pt-BR/common.json b/web/public/locales/pt-BR/common.json
new file mode 100644
index 000000000..20b74add9
--- /dev/null
+++ b/web/public/locales/pt-BR/common.json
@@ -0,0 +1,13 @@
+{
+ "time": {
+ "untilForTime": "Até {{time}}",
+ "untilForRestart": "Até o Frigate reiniciar.",
+ "untilRestart": "Até reiniciar",
+ "ago": "{{timeAgo}} antes",
+ "justNow": "Agora mesmo",
+ "today": "Hoje",
+ "yesterday": "Ontem",
+ "last7": "Últimos 7 dias"
+ },
+ "selectItem": "Selecione {{item}}"
+}
diff --git a/web/public/locales/pt-BR/components/camera.json b/web/public/locales/pt-BR/components/camera.json
new file mode 100644
index 000000000..3825549f7
--- /dev/null
+++ b/web/public/locales/pt-BR/components/camera.json
@@ -0,0 +1,18 @@
+{
+ "group": {
+ "label": "Grupo de Câmeras",
+ "add": "Adicionar Grupo de Câmeras",
+ "edit": "Edição Grupo de Câmera",
+ "delete": {
+ "label": "Deletar Grupo de Câmera",
+ "confirm": {
+ "title": "Confirmar Apagar",
+ "desc": "Você tem certeza que quer apagar o grupo de câmera {{name}}?"
+ }
+ },
+ "name": {
+ "label": "Nome",
+ "placeholder": "Digite um nome…"
+ }
+ }
+}
diff --git a/web/public/locales/pt-BR/components/dialog.json b/web/public/locales/pt-BR/components/dialog.json
new file mode 100644
index 000000000..40d624303
--- /dev/null
+++ b/web/public/locales/pt-BR/components/dialog.json
@@ -0,0 +1,24 @@
+{
+ "restart": {
+ "title": "Você tem certeza que deseja reiniciar o Frigate?",
+ "button": "Reiniciar",
+ "restarting": {
+ "title": "Frigate está Reiniciando",
+ "content": "Essa página vai recarregar em {{countdown}} segundos.",
+ "button": "Forçar Recarregar Agora"
+ }
+ },
+ "explore": {
+ "plus": {
+ "submitToPlus": {
+ "label": "Enviar para Frigate+",
+ "desc": "Objetos nos lugares que você quer evitar não são falsos positivos. Enviá-los como falsos positivos confundirá o modelo."
+ },
+ "review": {
+ "question": {
+ "label": "Confirmar essa etiqueta para Frigate Plus"
+ }
+ }
+ }
+ }
+}
diff --git a/web/public/locales/pt-BR/components/filter.json b/web/public/locales/pt-BR/components/filter.json
new file mode 100644
index 000000000..5e42101a5
--- /dev/null
+++ b/web/public/locales/pt-BR/components/filter.json
@@ -0,0 +1,18 @@
+{
+ "filter": "Filtro",
+ "labels": {
+ "label": "Rótulos",
+ "all": {
+ "title": "Todas as Etiquetas",
+ "short": "Etiquetas"
+ },
+ "count_one": "{{count}} Etiqueta",
+ "count_other": "{{count}} Etiquetas"
+ },
+ "zones": {
+ "label": "Zonas",
+ "all": {
+ "title": "Todas as Zonas"
+ }
+ }
+}
diff --git a/web/public/locales/pt-BR/components/player.json b/web/public/locales/pt-BR/components/player.json
new file mode 100644
index 000000000..c552c2514
--- /dev/null
+++ b/web/public/locales/pt-BR/components/player.json
@@ -0,0 +1,14 @@
+{
+ "noRecordingsFoundForThisTime": "Nenhuma gravação encontrada para este horário",
+ "noPreviewFound": "Nenhuma pré-visualização encontrada",
+ "noPreviewFoundFor": "Nenhuma Pré-Visualização Encontrada em {{cameraName}}",
+ "submitFrigatePlus": {
+ "title": "Enviar esse frame para Frigate+?",
+ "submit": "Enviar"
+ },
+ "livePlayerRequiredIOSVersion": "iOS 17.1 ou superior é necessário para esse tipo de transmissão ao vivo.",
+ "streamOffline": {
+ "title": "Stream Offiline",
+ "desc": "Nenhum quadro foi recebido na stream {{cameraName}}detect
, checar registros de erros"
+ }
+}
diff --git a/web/public/locales/pt-BR/views/explore.json b/web/public/locales/pt-BR/views/explore.json
new file mode 100644
index 000000000..681d7f6f5
--- /dev/null
+++ b/web/public/locales/pt-BR/views/explore.json
@@ -0,0 +1,13 @@
+{
+ "documentTitle": "Explorar - Frigate",
+ "generativeAI": "IA Generativa",
+ "exploreMore": "Explorar mais objetos {{label}}",
+ "exploreIsUnavailable": {
+ "title": "Explorar não está disponível",
+ "embeddingsReindexing": {
+ "context": "Explorar pode ser usado depois da incorporação do objeto rastreado terminar a reindexação.",
+ "startingUp": "Começando…",
+ "estimatedTime": "Time estimado faltando:"
+ }
+ }
+}
diff --git a/web/public/locales/pt-BR/views/exports.json b/web/public/locales/pt-BR/views/exports.json
new file mode 100644
index 000000000..0f3000ac0
--- /dev/null
+++ b/web/public/locales/pt-BR/views/exports.json
@@ -0,0 +1,11 @@
+{
+ "documentTitle": "Exportar - Frigate",
+ "search": "Buscar",
+ "noExports": "Nenhuma exportação encontrada",
+ "deleteExport": "Deletar Exportação",
+ "deleteExport.desc": "Você tem certeza que quer apagar {{exportName}}?",
+ "editExport": {
+ "title": "Exportar Renomear",
+ "desc": "Entre um novo nome para essa exportação."
+ }
+}
diff --git a/web/public/locales/pt-BR/views/faceLibrary.json b/web/public/locales/pt-BR/views/faceLibrary.json
new file mode 100644
index 000000000..77273ea2c
--- /dev/null
+++ b/web/public/locales/pt-BR/views/faceLibrary.json
@@ -0,0 +1,50 @@
+{
+ "details": {
+ "person": "Pessoa",
+ "unknown": "Desconhecido",
+ "face": "Detalhes do Rosto",
+ "subLabelScore": "Pontuação da Sub Etiqueta",
+ "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."
+ },
+ "selectItem": "Selecione {{item}}",
+ "imageEntry": {
+ "validation": {
+ "selectImage": "Por favor selecione um arquivo de imagem."
+ },
+ "maxSize": "Tamanho máximo: {{size}}MB"
+ },
+ "deleteFaceLibrary": {
+ "title": "Apagar Nome"
+ },
+ "button": {
+ "addFace": "Adicionar Rosto",
+ "renameFace": "Renomear Rosto",
+ "deleteFace": "Remover Rosto",
+ "deleteFaceAttempts": "Remover Rostos",
+ "reprocessFace": "Reprocessar Rosto"
+ },
+ "createFaceLibrary": {
+ "new": "Criar Novo Rosto"
+ },
+ "deleteFaceAttempts": {
+ "title": "Apagar Rostos",
+ "desc_one": "Você tem certeza que quer deletar {{count}} rosto? Essa ação não pode ser desfeita.",
+ "desc_many": "Você tem certeza que quer deletar {{count}} rostos? Essa ação não pode ser desfeita.",
+ "desc_other": ""
+ },
+ "renameFace": {
+ "title": "Renomear Rosto",
+ "desc": "Entre com o novo nome para {{name}}"
+ },
+ "nofaces": "Sem rostos disponíveis",
+ "pixels": "{{area}}px",
+ "readTheDocs": "Leia a documentação",
+ "steps": {
+ "nextSteps": "Próximos Passos"
+ },
+ "description": {
+ "placeholder": "Informe um nome para esta coleção",
+ "addFace": "Passo a Passo para adicionar uma nova coleção a Biblioteca Facial.",
+ "invalidName": "Nome inválido. Nomes podem incluir apenas letras, números, espaços, apóstrofos, sublinhados e hífenes."
+ }
+}
diff --git a/web/public/locales/pt-BR/views/live.json b/web/public/locales/pt-BR/views/live.json
new file mode 100644
index 000000000..1b147fc3c
--- /dev/null
+++ b/web/public/locales/pt-BR/views/live.json
@@ -0,0 +1,13 @@
+{
+ "documentTitle": "Ao Vivo - Frigate",
+ "documentTitle.withCamera": "{{camera}} - Ao vivo - Frigate",
+ "lowBandwidthMode": "Modo de baixa largura de banda",
+ "twoWayTalk": {
+ "enable": "Habilitar Fala em Dois Sentidos",
+ "disable": "Desabilitar Fala em Dois Sentidos"
+ },
+ "cameraAudio": {
+ "enable": "Habilitar Áudio da Câmera",
+ "disable": "Desabilitar Audio da Câmera"
+ }
+}
diff --git a/web/public/locales/pt-BR/views/search.json b/web/public/locales/pt-BR/views/search.json
new file mode 100644
index 000000000..cb7852fd7
--- /dev/null
+++ b/web/public/locales/pt-BR/views/search.json
@@ -0,0 +1,11 @@
+{
+ "search": "Buscar",
+ "savedSearches": "Buscas Salvas",
+ "searchFor": "Procurar por {{inputValue}}",
+ "button": {
+ "clear": "Limpar procurar",
+ "save": "Salvar pesquisa",
+ "delete": "Apagar procura salva",
+ "filterInformation": "Filtrar informação"
+ }
+}
diff --git a/web/public/locales/pt-BR/views/settings.json b/web/public/locales/pt-BR/views/settings.json
new file mode 100644
index 000000000..ca962c76b
--- /dev/null
+++ b/web/public/locales/pt-BR/views/settings.json
@@ -0,0 +1,11 @@
+{
+ "documentTitle": {
+ "default": "Configurações - Frigate",
+ "authentication": "Configurações de Autenticação - Frigate",
+ "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",
+ "object": "Debug - Frigate"
+ }
+}
diff --git a/web/public/locales/pt-BR/views/system.json b/web/public/locales/pt-BR/views/system.json
new file mode 100644
index 000000000..20f8ffa4e
--- /dev/null
+++ b/web/public/locales/pt-BR/views/system.json
@@ -0,0 +1,13 @@
+{
+ "documentTitle": {
+ "cameras": "Estatísticas das Câmeras - Frigate",
+ "storage": "Status de Armazenamento - Frigate",
+ "general": "Estatísticas Gerais - Frigate",
+ "enrichments": "Estatísticas de Enriquecimento - Frigate",
+ "logs": {
+ "frigate": "Registros Frigate - Frigate",
+ "go2rtc": "Registros GoRTC - Frigate",
+ "nginx": "Registros Nginx - Frigate"
+ }
+ }
+}
diff --git a/web/public/locales/pt_BR/audio.json b/web/public/locales/pt_BR/audio.json
new file mode 100644
index 000000000..27ccea410
--- /dev/null
+++ b/web/public/locales/pt_BR/audio.json
@@ -0,0 +1,24 @@
+{
+ "mantra": "Mantra",
+ "child_singing": "Criança cantando",
+ "speech": "Discurso",
+ "yell": "Gritar",
+ "chant": "Canto",
+ "babbling": "Balbuciando",
+ "bellow": "Abaixo",
+ "whoop": "Grito",
+ "whispering": "Sussurrando",
+ "laughter": "Risada",
+ "snicker": "Risada",
+ "crying": "Choro",
+ "sigh": "Suspirar",
+ "singing": "Cantoria",
+ "choir": "Coro",
+ "yodeling": "Cantando",
+ "bicycle": "Bicicleta",
+ "car": "Carro",
+ "motorcycle": "Moto",
+ "bus": "Ônibus",
+ "train": "Trem",
+ "boat": "Barco"
+}
diff --git a/web/public/locales/pt_BR/components/auth.json b/web/public/locales/pt_BR/components/auth.json
new file mode 100644
index 000000000..d98adbfb2
--- /dev/null
+++ b/web/public/locales/pt_BR/components/auth.json
@@ -0,0 +1,14 @@
+{
+ "form": {
+ "user": "Nome de Usuário",
+ "password": "Senha",
+ "login": "Login",
+ "errors": {
+ "usernameRequired": "Nome de usuário é necessário",
+ "passwordRequired": "Senha necessária",
+ "rateLimit": "Limite de taxa excedido. Tente novamente mais tarde.",
+ "loginFailed": "Falha no Login",
+ "unknownError": "Erro desconhecido. Checar registros."
+ }
+ }
+}
diff --git a/web/public/locales/pt_BR/components/icons.json b/web/public/locales/pt_BR/components/icons.json
new file mode 100644
index 000000000..c038a0276
--- /dev/null
+++ b/web/public/locales/pt_BR/components/icons.json
@@ -0,0 +1,8 @@
+{
+ "iconPicker": {
+ "selectIcon": "Selecione um ícone",
+ "search": {
+ "placeholder": "Buscar por um ícone…"
+ }
+ }
+}
diff --git a/web/public/locales/pt_BR/components/input.json b/web/public/locales/pt_BR/components/input.json
new file mode 100644
index 000000000..25a8190a3
--- /dev/null
+++ b/web/public/locales/pt_BR/components/input.json
@@ -0,0 +1,10 @@
+{
+ "button": {
+ "downloadVideo": {
+ "label": "Baixar Video",
+ "toast": {
+ "success": "Sua análise do item de vídeo começou a ser baixado."
+ }
+ }
+ }
+}
diff --git a/web/public/locales/pt_BR/objects.json b/web/public/locales/pt_BR/objects.json
new file mode 100644
index 000000000..6e3b7e6f0
--- /dev/null
+++ b/web/public/locales/pt_BR/objects.json
@@ -0,0 +1,10 @@
+{
+ "person": "Pessoa",
+ "bicycle": "Bicicleta",
+ "car": "Carro",
+ "motorcycle": "Moto",
+ "airplane": "Avião",
+ "bus": "Ônibus",
+ "train": "Trem",
+ "boat": "Barco"
+}
diff --git a/web/public/locales/pt_BR/views/configEditor.json b/web/public/locales/pt_BR/views/configEditor.json
new file mode 100644
index 000000000..1bd110a6f
--- /dev/null
+++ b/web/public/locales/pt_BR/views/configEditor.json
@@ -0,0 +1,16 @@
+{
+ "documentTitle": "Editor de Configuração - Frigate",
+ "configEditor": "Editor de configuração",
+ "copyConfig": "Copiar Configuração",
+ "saveAndRestart": "Salvar & Reiniciar",
+ "saveOnly": "Salvar apenas",
+ "confirm": "Sair sem salvar?",
+ "toast": {
+ "success": {
+ "copyToClipboard": "Configuração copiada para a área de transferência."
+ },
+ "error": {
+ "savingError": "Erro ao salvar configuração"
+ }
+ }
+}
diff --git a/web/public/locales/pt_BR/views/events.json b/web/public/locales/pt_BR/views/events.json
new file mode 100644
index 000000000..3a8c2f7f0
--- /dev/null
+++ b/web/public/locales/pt_BR/views/events.json
@@ -0,0 +1,14 @@
+{
+ "alerts": "Alertas",
+ "detections": "Detecções",
+ "motion": {
+ "label": "Movimento",
+ "only": "Somente Movimento"
+ },
+ "allCameras": "Todas as Câmeras",
+ "empty": {
+ "alert": "Não existe nenhum alerta para revisar",
+ "detection": "Não há nenhuma detecção para revisar",
+ "motion": "Nenhum dado de movimento encontrado"
+ }
+}
diff --git a/web/public/locales/pt_BR/views/recording.json b/web/public/locales/pt_BR/views/recording.json
new file mode 100644
index 000000000..fd7cf6e7d
--- /dev/null
+++ b/web/public/locales/pt_BR/views/recording.json
@@ -0,0 +1,12 @@
+{
+ "filter": "Filtro",
+ "export": "Exportar",
+ "calendar": "Calendário",
+ "filters": "Filtros",
+ "toast": {
+ "error": {
+ "noValidTimeSelected": "Nenhum intervalo de tempo selecionado",
+ "endTimeMustAfterStartTime": "O tempo de término deve ser após o tempo de início"
+ }
+ }
+}