diff --git a/src/i18n.js b/src/i18n.js
index d848cf3d1..8495cd990 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -11,6 +11,7 @@ const languageList = {
"es-ES": "Español",
"eu": "Euskara",
"fa": "Farsi",
+ "pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasileiro)",
"fr-FR": "Français (France)",
"hu": "Magyar",
diff --git a/src/languages/pt-PT.js b/src/languages/pt-PT.js
new file mode 100644
index 000000000..21e68d268
--- /dev/null
+++ b/src/languages/pt-PT.js
@@ -0,0 +1,203 @@
+export default {
+ languageName: "Português (Portugal)",
+ checkEverySecond: "Verificar a cada {0} segundos.",
+ retryCheckEverySecond: "Tentar novamente a cada {0} segundos.",
+ retriesDescription: "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada",
+ ignoreTLSError: "Ignorar erros TLS/SSL para sites HTTPS",
+ upsideDownModeDescription: "Inverte o status de cabeça para baixo. Se o serviço estiver acessível, ele está OFFLINE.",
+ maxRedirectDescription: "Número máximo de redirecionamentos a seguir. Define como 0 para desativar redirecionamentos.",
+ acceptedStatusCodesDescription: "Seleciona os códigos de status que são considerados uma resposta bem-sucedida.",
+ passwordNotMatchMsg: "A senha repetida não corresponde.",
+ notificationDescription: "Atribuir uma notificação ao (s) monitor (es) para que funcione.",
+ keywordDescription: "Pesquisa a palavra-chave em HTML simples ou resposta JSON e diferencia maiúsculas de minúsculas",
+ pauseDashboardHome: "Pausa",
+ deleteMonitorMsg: "Tens a certeza de que queres excluir este monitor?",
+ deleteNotificationMsg: "Tens a certeza de que queres excluir esta notificação para todos os monitores?",
+ resolverserverDescription: "A Cloudflare é o servidor padrão, podes alterar o servidor 'resolvedor' a qualquer momento.",
+ rrtypeDescription: "Seleciona o RR-Type que queres monitorizar",
+ pauseMonitorMsg: "Tens a certeza que queres fazer uma pausa?",
+ enableDefaultNotificationDescription: "Para cada monitor novo esta notificação vai estar activa por padrão. Podes também desativar a notificação separadamente para cada monitor.",
+ clearEventsMsg: "Tens a certeza que queres excluir todos os eventos deste monitor?",
+ clearHeartbeatsMsg: "Tens a certeza de que queres excluir todos os heartbeats deste monitor?",
+ confirmClearStatisticsMsg: "Tens a certeza que queres excluir TODAS as estatísticas?",
+ importHandleDescription: "Escolhe 'Ignorar existente' se quiseres ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.",
+ confirmImportMsg: "Tens a certeza que queres importar o backup? Certifica-te que selecionaste a opção de importação correta.",
+ twoFAVerifyLabel: "Insire o teu token para verificares se o 2FA está a funcionar",
+ tokenValidSettingsMsg: "O token é válido! Agora podes salvar as configurações do 2FA.",
+ confirmEnableTwoFAMsg: "Tens a certeza de que queres habilitar 2FA?",
+ confirmDisableTwoFAMsg: "Tens a certeza de que queres desativar 2FA?",
+ Settings: "Configurações",
+ Dashboard: "Dashboard",
+ "New Update": "Nova Atualização",
+ Language: "Linguagem",
+ Appearance: "Aparência",
+ Theme: "Tema",
+ General: "Geral",
+ Version: "Versão",
+ "Check Update On GitHub": "Verificar atualização no Github",
+ List: "Lista",
+ Add: "Adicionar",
+ "Add New Monitor": "Adicionar novo monitor",
+ "Quick Stats": "Estatísticas rápidas",
+ Up: "On",
+ Down: "Off",
+ Pending: "Pendente",
+ Unknown: "Desconhecido",
+ Pause: "Pausa",
+ Name: "Nome",
+ Status: "Status",
+ DateTime: "Data hora",
+ Message: "Mensagem",
+ "No important events": "Nenhum evento importante",
+ Resume: "Resumo",
+ Edit: "Editar",
+ Delete: "Apagar",
+ Current: "Atual",
+ Uptime: "Tempo de atividade",
+ "Cert Exp.": "Cert Exp.",
+ day: "dia | dias",
+ "-day": "-dia",
+ hour: "hora",
+ "-hour": "-hora",
+ Response: "Resposta",
+ Ping: "Ping",
+ "Monitor Type": "Tipo de Monitor",
+ Keyword: "Palavra-Chave",
+ "Friendly Name": "Nome Amigável",
+ URL: "URL",
+ Hostname: "Hostname",
+ Port: "Porta",
+ "Heartbeat Interval": "Intervalo de Heartbeats",
+ Retries: "Novas tentativas",
+ "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeats",
+ Advanced: "Avançado",
+ "Upside Down Mode": "Modo de cabeça para baixo",
+ "Max. Redirects": "Redirecionamento Máx.",
+ "Accepted Status Codes": "Status Code Aceitáveis",
+ Save: "Guardar",
+ Notifications: "Notificações",
+ "Not available, please setup.": "Não disponível, por favor configura.",
+ "Setup Notification": "Configurar Notificação",
+ Light: "Claro",
+ Dark: "Escuro",
+ Auto: "Auto",
+ "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat",
+ Normal: "Normal",
+ Bottom: "Inferior",
+ None: "Nenhum",
+ Timezone: "Fuso horário",
+ "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa",
+ "Allow indexing": "Permitir Indexação",
+ "Discourage search engines from indexing site": "Desencorajar que motores de busca indexem o site",
+ "Change Password": "Mudar senha",
+ "Current Password": "Senha atual",
+ "New Password": "Nova Senha",
+ "Repeat New Password": "Repetir Nova Senha",
+ "Update Password": "Atualizar Senha",
+ "Disable Auth": "Desativar Autenticação",
+ "Enable Auth": "Ativar Autenticação",
+ "disableauth.message1": "Tens a certeza que queres desativar a autenticação?",
+ "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros em frente ao 'UpTime Kuma' como o Cloudflare Access.",
+ "Please use this option carefully!": "Por favor, utiliza esta opção com cuidado.",
+ Logout: "Logout",
+ Leave: "Sair",
+ "I understand, please disable": "Eu entendo, por favor desativa.",
+ Confirm: "Confirmar",
+ Yes: "Sim",
+ No: "Não",
+ Username: "Utilizador",
+ Password: "Senha",
+ "Remember me": "Lembra-me",
+ Login: "Autenticar",
+ "No Monitors, please": "Nenhum monitor, por favor",
+ "add one": "adicionar um",
+ "Notification Type": "Tipo de Notificação",
+ Email: "Email",
+ Test: "Testar",
+ "Certificate Info": "Info. do Certificado ",
+ "Resolver Server": "Resolver Servidor",
+ "Resource Record Type": "Tipo de registro de aplicação",
+ "Last Result": "Último resultado",
+ "Create your admin account": "Cria a tua conta de admin",
+ "Repeat Password": "Repete a senha",
+ "Import Backup": "Importar Backup",
+ "Export Backup": "Exportar Backup",
+ Export: "Exportar",
+ Import: "Importar",
+ respTime: "Tempo de Resp. (ms)",
+ notAvailableShort: "N/A",
+ "Default enabled": "Padrão habilitado",
+ "Apply on all existing monitors": "Aplicar em todos os monitores existentes",
+ Create: "Criar",
+ "Clear Data": "Limpar Dados",
+ Events: "Eventos",
+ Heartbeats: "Heartbeats",
+ "Auto Get": "Obter Automático",
+ backupDescription: "Podes fazer backup de todos os monitores e todas as notificações num arquivo JSON.",
+ backupDescription2: "OBS: Os dados do histórico e do evento não estão incluídos.",
+ backupDescription3: "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantem-no com cuidado.",
+ alertNoFile: "Seleciona um arquivo para importar.",
+ alertWrongFileType: "Seleciona um arquivo JSON.",
+ "Clear all statistics": "Limpar todas as estatísticas",
+ "Skip existing": "Saltar existente",
+ Overwrite: "Sobrescrever",
+ Options: "Opções",
+ "Keep both": "Manter os dois",
+ "Verify Token": "Verificar Token",
+ "Setup 2FA": "Configurar 2FA",
+ "Enable 2FA": "Ativar 2FA",
+ "Disable 2FA": "Desativar 2FA",
+ "2FA Settings": "Configurações do 2FA ",
+ "Two Factor Authentication": "Autenticação de Dois Fatores",
+ Active: "Ativo",
+ Inactive: "Inativo",
+ Token: "Token",
+ "Show URI": "Mostrar URI",
+ Tags: "Tag",
+ "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar ...",
+ "Tag with this name already exist.": "Já existe uma etiqueta com este nome.",
+ "Tag with this value already exist.": "Já existe uma etiqueta com este valor.",
+ color: "cor",
+ "value (optional)": "valor (opcional)",
+ Gray: "Cinza",
+ Red: "Vermelho",
+ Orange: "Laranja",
+ Green: "Verde",
+ Blue: "Azul",
+ Indigo: "Índigo",
+ Purple: "Roxo",
+ Pink: "Rosa",
+ "Search...": "Pesquisa...",
+ "Avg. Ping": "Ping Médio.",
+ "Avg. Response": "Resposta Média. ",
+ "Status Page": "Página de Status",
+ "Status Pages": "Página de Status",
+ "Entry Page": "Página de entrada",
+ statusPageNothing: "Nada aqui, por favor, adiciona um grupo ou monitor.",
+ "No Services": "Nenhum Serviço",
+ "All Systems Operational": "Todos os Serviços Operacionais",
+ "Partially Degraded Service": "Serviço parcialmente degradados",
+ "Degraded Service": "Serviço Degradado",
+ "Add Group": "Adicionar Grupo",
+ "Add a monitor": "Adicionar um monitor",
+ "Edit Status Page": "Editar Página de Status",
+ "Go to Dashboard": "Ir para o dashboard",
+ telegram: "Telegram",
+ webhook: "Webhook",
+ smtp: "Email (SMTP)",
+ discord: "Discord",
+ teams: "Microsoft Teams",
+ signal: "Signal",
+ gotify: "Gotify",
+ slack: "Slack",
+ "rocket.chat": "Rocket.chat",
+ pushover: "Pushover",
+ pushy: "Pushy",
+ octopush: "Octopush",
+ promosms: "PromoSMS",
+ lunasea: "LunaSea",
+ apprise: "Apprise (Support 50+ Notification services)",
+ pushbullet: "Pushbullet",
+ line: "Line Messenger",
+ mattermost: "Mattermost",
+};