diff --git a/config/cachet.php b/config/cachet.php index bcacd278..7817349e 100644 --- a/config/cachet.php +++ b/config/cachet.php @@ -270,6 +270,7 @@ 'nl' => 'Nederlands', 'ph' => 'Filipino', 'pt_BR' => 'Português (BR)', + 'pt_PT' => 'Português (PT)', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', ], diff --git a/resources/lang/pt_PT/api_key.php b/resources/lang/pt_PT/api_key.php new file mode 100644 index 00000000..0732a2fa --- /dev/null +++ b/resources/lang/pt_PT/api_key.php @@ -0,0 +1,31 @@ + 'Chave de API|Chaves de API', + 'show_token' => [ + 'heading' => 'Copie o seu novo token de API', + 'description' => 'Por motivos de segurança, o token não voltará a ser mostrado.', + 'copy_tooltip' => 'Token copiado!', + ], + 'abilities_label' => ':ability :resource', + 'form' => [ + 'name_label' => 'Nome do token', + 'expires_at_label' => 'Expira em', + 'expires_at_helper' => 'Expira à meia-noite. Deixe em branco para não ter data de expiração.', + 'expires_at_validation' => 'A data de expiração tem de ser no futuro.', + 'abilities_label' => 'Permissões', + 'abilities_hint' => 'Deixe em branco para dar ao token todas as permissões.', + ], + 'list' => [ + 'actions' => [ + 'revoke' => 'Revogar', + ], + 'headers' => [ + 'name' => 'Nome do token', + 'abilities' => 'Permissões', + 'created_at' => 'Criado em', + 'expires_at' => 'Expira em', + 'updated_at' => 'Atualizado em', + ], + ], +]; diff --git a/resources/lang/pt_PT/cachet.php b/resources/lang/pt_PT/cachet.php new file mode 100644 index 00000000..683fb043 --- /dev/null +++ b/resources/lang/pt_PT/cachet.php @@ -0,0 +1,21 @@ + [ + 'section_heading' => 'Apoiar o Cachet', + 'consider_supporting' => 'Considere apoiar o Cachet através do *GitHub Sponsors*.', + 'keep_up_to_date' => 'Mantenha-se a par das últimas novidades e versões seguindo o *blogue do Cachet*.', + ], + 'feed' => [ + 'section_heading' => 'Últimas publicações do blogue', + 'empty' => 'Não foram encontradas publicações. Consulte *o blogue* para mais informações.', + 'posted_at' => 'Publicado :date', + ], + 'powered_by' => 'Com tecnologia', + 'mail' => [ + 'powered_by' => 'Com tecnologia Cachet', + ], + 'open_source_status_page' => 'A página de estado de código aberto.', + 'all_times_shown_in' => 'Todas as horas são apresentadas em *:timezone*.', + 'rss_feed' => 'Feed RSS de :name', +]; diff --git a/resources/lang/pt_PT/component.php b/resources/lang/pt_PT/component.php new file mode 100644 index 00000000..6e61daab --- /dev/null +++ b/resources/lang/pt_PT/component.php @@ -0,0 +1,76 @@ + 'Componente|Componentes', + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'status' => 'Estado', + 'order' => 'Ordem', + 'group' => 'Grupo', + 'enabled' => 'Ativo', + 'created_at' => 'Criado em', + 'checked' => 'Monitorizado', + 'checked_at' => 'Verificado em', + 'updated_at' => 'Atualizado em', + 'deleted_at' => 'Eliminado em', + ], + 'empty_state' => [ + 'heading' => 'Componentes', + 'description' => 'Os componentes representam as várias partes do seu sistema que podem afetar o estado da sua página de estado.', + ], + 'ungrouped' => 'Componentes sem grupo', + ], + 'attach' => [ + 'heading' => 'Associar componentes', + 'placeholder' => 'Selecione os componentes', + ], + 'last_updated' => 'Última atualização :timestamp', + 'description_label' => 'Sobre :component', + 'view_details' => 'Ver detalhes', + 'form' => [ + 'name_label' => 'Nome', + 'status_label' => 'Estado', + 'description_label' => 'Descrição', + 'component_group_label' => 'Grupo de componentes', + 'link_label' => 'Ligação', + 'link_helper' => 'Uma ligação opcional para o componente.', + 'availability_section_title' => 'Disponibilidade', + 'enabled_label' => 'Ativo', + 'checked_label' => 'Monitorização', + 'checked_helper' => 'Verificar periodicamente este componente e registar a sua disponibilidade.', + ], + 'status' => [ + 'operational' => 'Operacional', + 'performance_issues' => 'Problemas de desempenho', + 'partial_outage' => 'Falha parcial', + 'major_outage' => 'Falha grave', + 'under_maintenance' => 'Em manutenção', + 'unknown' => 'Desconhecido', + ], + 'status_source' => [ + 'manual' => 'Manual', + 'monitor' => 'Monitorização', + 'import' => 'Importação', + 'system' => 'Sistema', + ], + 'overview' => [ + 'operational_components_label' => 'Componentes operacionais', + 'operational_components_description' => 'Componentes totalmente operacionais.', + ], + 'checks' => [ + 'title' => 'Verificações recentes', + 'empty_state' => [ + 'heading' => 'Ainda não há verificações', + 'description' => 'As verificações aparecem aqui depois de o componente ser monitorizado.', + ], + 'headers' => [ + 'status' => 'Estado', + 'successful' => 'Com sucesso', + 'response_code' => 'Código de resposta', + 'response_time' => 'Tempo de resposta', + 'checked_at' => 'Verificado em', + ], + ], + +]; diff --git a/resources/lang/pt_PT/component_group.php b/resources/lang/pt_PT/component_group.php new file mode 100644 index 00000000..6c308f1d --- /dev/null +++ b/resources/lang/pt_PT/component_group.php @@ -0,0 +1,33 @@ + 'Grupo de componentes|Grupos de componentes', + 'incident_count' => ':count incidente|:count incidentes', + 'visibility' => [ + 'expanded' => 'Sempre expandido', + 'collapsed' => 'Sempre fechado', + 'collapsed_unless_incident' => 'Fechado, exceto com incidentes em curso', + ], + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'visible' => 'Visível', + 'collapsed' => 'Fechado', + 'order_column' => 'Ordem do grupo de componentes', + 'created_at' => 'Criado em', + 'updated_at' => 'Atualizado em', + ], + 'empty_state' => [ + 'heading' => 'Grupos de componentes', + 'description' => 'Agrupe componentes relacionados.', + ], + ], + 'form' => [ + 'name_label' => 'Nome', + 'visible_label' => 'Visível', + 'collapsed_label' => 'Fechado', + 'order_column_label' => 'Ordem do grupo de componentes', + 'order_direction' => 'Sentido da ordenação', + 'meta_label' => 'Metadados', + ], +]; diff --git a/resources/lang/pt_PT/dashboard.php b/resources/lang/pt_PT/dashboard.php new file mode 100644 index 00000000..2e6ab9b9 --- /dev/null +++ b/resources/lang/pt_PT/dashboard.php @@ -0,0 +1,39 @@ + [ + 'empty' => 'Ainda não foram configurados componentes.', + 'add_component' => 'Adicionar um componente', + ], + 'open_incidents' => [ + 'heading' => 'Incidentes em aberto', + 'headers' => [ + 'name' => 'Nome', + 'status' => 'Estado', + 'occurred_at' => 'Ocorrido', + 'components' => 'Componentes afetados', + ], + 'actions' => [ + 'create' => 'Criar incidente', + ], + 'empty_state' => [ + 'heading' => 'Não há incidentes em aberto', + 'description' => 'Está tudo bem. Os incidentes que ainda não foram resolvidos aparecem aqui.', + ], + ], + 'upcoming_maintenance' => [ + 'heading' => 'Manutenção', + 'headers' => [ + 'name' => 'Nome', + 'status' => 'Estado', + 'scheduled_at' => 'Agendada para', + ], + 'actions' => [ + 'create' => 'Agendar manutenção', + ], + 'empty_state' => [ + 'heading' => 'Não há manutenções agendadas', + 'description' => 'As janelas de manutenção futuras e em curso aparecem aqui.', + ], + ], +]; diff --git a/resources/lang/pt_PT/incident.php b/resources/lang/pt_PT/incident.php new file mode 100644 index 00000000..51042278 --- /dev/null +++ b/resources/lang/pt_PT/incident.php @@ -0,0 +1,104 @@ + 'Incidentes', + 'resource_label' => 'Incidente|Incidentes', + 'status' => [ + 'investigating' => 'Em investigação', + 'identified' => 'Identificado', + 'watching' => 'Em observação', + 'fixed' => 'Resolvido', + 'reported' => 'Reportado', + ], + 'edit_button' => 'Editar incidente', + 'new_button' => 'Novo incidente', + 'no_incidents_reported' => 'Não há incidentes reportados.', + 'affected_components_header' => 'Componentes afetados', + 'timeline' => [ + 'past_incidents_header' => 'Incidentes anteriores', + 'recent_incidents_header' => 'Incidentes recentes', + 'no_incidents_reported_between' => 'Não há incidentes reportados entre :from e :to', + 'date_range_label' => 'Intervalo de datas dos incidentes', + 'from_label' => 'De', + 'to_label' => 'Até', + 'navigate' => [ + 'previous' => 'Anterior', + 'today' => 'Hoje', + 'next' => 'Seguinte', + 'timeline' => 'Voltar à cronologia', + ], + ], + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'status' => 'Estado', + 'visible' => 'Visível', + 'pinned' => 'Fixar no topo', + 'occurred_at' => 'Ocorrido em', + 'published_at' => 'Publicado em', + 'notified_subscribers' => 'Subscritores notificados', + 'created_at' => 'Criado em', + 'updated_at' => 'Atualizado em', + 'deleted_at' => 'Eliminado em', + ], + 'published_now' => 'Publicado', + 'filters' => [ + 'scheduled' => 'Agendado (ainda não publicado)', + ], + 'actions' => [ + 'record_update' => 'Registar atualização', + 'view_incident' => 'Ver incidente', + ], + 'empty_state' => [ + 'heading' => 'Incidentes', + 'description' => 'Os incidentes servem para comunicar e acompanhar o estado dos seus serviços.', + ], + ], + 'form' => [ + 'name_label' => 'Nome', + 'status_label' => 'Estado', + 'message_label' => 'Mensagem', + 'private_note_label' => 'Nota privada', + 'private_note_helper' => 'Visível apenas no painel. Nunca é mostrada na página de estado nem incluída nas respostas da API, nos webhooks ou nas notificações aos subscritores.', + 'occurred_at_label' => 'Ocorrido em', + 'occurred_at_helper' => 'Se ficar em branco, é usada a data de criação do incidente.', + 'published_at_label' => 'Publicado em', + 'published_at_helper' => 'Agende o incidente para aparecer na página de estado numa data futura. Até lá, fica oculto para todos. Deixe em branco para publicar de imediato.', + 'visible_label' => 'Visível', + 'user_label' => 'Utilizador', + 'user_helper' => 'O utilizador que reportou o incidente.', + 'notify_subscribers_label' => 'Notificar os subscritores sobre este incidente.', + 'pin_incident_label' => 'Fixar o incidente no topo da página de estado.', + 'guid_label' => 'UUID do incidente', + 'meta_label' => 'Metadados', + 'add_component' => [ + 'action_label' => 'Adicionar componente', + 'header' => 'Componentes', + 'component_label' => 'Componente', + 'status_label' => 'Estado', + ], + ], + 'mail' => [ + 'long_running' => [ + 'subject' => 'Incidente requer atenção: :incident', + 'heading' => 'Este incidente requer atenção', + 'body' => 'Não há atividade neste incidente desde :since. Considere publicar uma atualização para manter os seus subscritores informados ou marque-o como resolvido.', + 'button' => 'Gerir incidente', + ], + ], + 'record_update' => [ + 'new_update_label' => 'Nova atualização', + 'success_title' => 'Atualização registada', + 'success_body' => 'Publicou uma nova atualização em :name.', + 'form' => [ + 'message_label' => 'Mensagem', + 'status_label' => 'Estado', + 'user_label' => 'Utilizador', + 'user_helper' => 'O utilizador que reportou o incidente.', + ], + ], + 'overview' => [ + 'open_incidents_label' => 'Incidentes em aberto', + 'open_incidents_description' => 'Incidentes que ainda não foram resolvidos.', + ], +]; diff --git a/resources/lang/pt_PT/incident_template.php b/resources/lang/pt_PT/incident_template.php new file mode 100644 index 00000000..93303709 --- /dev/null +++ b/resources/lang/pt_PT/incident_template.php @@ -0,0 +1,31 @@ + 'Modelo de incidente|Modelos de incidente', + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'slug' => 'Slug', + 'engine' => 'Motor', + 'created_at' => 'Criado em', + 'updated_at' => 'Atualizado em', + 'deleted_at' => 'Eliminado em', + ], + 'empty_state' => [ + 'heading' => 'Modelos de incidente', + 'description' => 'Os modelos de incidente servem para criar mensagens de incidente reutilizáveis.', + ], + ], + 'form' => [ + 'name_label' => 'Nome', + 'slug_label' => 'Slug', + 'template_label' => 'Modelo', + 'engine_label' => 'Motor', + ], + 'engine' => [ + 'laravel_blade' => 'Laravel Blade', + 'laravel_blade_docs' => 'Documentação do Laravel Blade', + 'twig' => 'Twig', + 'twig_docs' => 'Documentação do Twig', + ], +]; diff --git a/resources/lang/pt_PT/integrations.php b/resources/lang/pt_PT/integrations.php new file mode 100644 index 00000000..1f113414 --- /dev/null +++ b/resources/lang/pt_PT/integrations.php @@ -0,0 +1,19 @@ + [ + 'status_page_section_title' => 'Página de estado do Oh Dear', + 'import_options_section_title' => 'Opções de importação', + 'import_feed_button' => 'Importar feed', + 'status_page_url_label' => 'URL da página de estado do Oh Dear', + 'status_page_url_helper' => 'Introduza o URL da sua página de estado do Oh Dear (por exemplo, https://status.example.com).', + 'import_sites_as_components_label' => 'Importar sites como componentes', + 'import_sites_as_components_helper' => 'Os sites configurados no Oh Dear são importados como componentes no Cachet.', + 'component_group_label' => 'Grupo de componentes', + 'component_group_helper' => 'O grupo de componentes ao qual atribuir os componentes importados.', + 'import_incidents_label' => 'Importar incidentes', + 'import_incidents_helper' => 'Os incidentes recentes do Oh Dear são importados como incidentes no Cachet.', + 'provided_url_invalid' => 'O URL indicado não é um endpoint válido de uma página de estado do Oh Dear.', + 'imported_successfully' => 'Feed do Oh Dear importado com sucesso.', + ], +]; diff --git a/resources/lang/pt_PT/metric.php b/resources/lang/pt_PT/metric.php new file mode 100644 index 00000000..d52ed862 --- /dev/null +++ b/resources/lang/pt_PT/metric.php @@ -0,0 +1,54 @@ + 'Métrica|Métricas', + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'suffix' => 'Sufixo', + 'default_value' => 'Valor predefinido', + 'calc_type' => 'Tipo de métrica', + 'display_chart' => 'Mostrar gráfico', + 'places' => 'Casas decimais', + 'default_view' => 'Vista predefinida', + 'threshold' => 'Limiar', + 'order' => 'Ordem', + 'visible' => 'Visível', + 'points_count' => 'Número de pontos', + 'created_at' => 'Criado em', + 'updated_at' => 'Atualizado em', + ], + 'empty_state' => [ + 'heading' => 'Métricas', + 'description' => 'As métricas servem para acompanhar e apresentar dados.', + ], + ], + 'form' => [ + 'name_label' => 'Nome', + 'suffix_label' => 'Sufixo', + 'description_label' => 'Descrição', + 'default_view_label' => 'Vista predefinida', + 'default_value_label' => 'Valor predefinido', + 'calc_type_label' => 'Tipo de métrica', + 'places_label' => 'Casas decimais', + 'threshold_label' => 'Limiar', + + 'visible_label' => 'Visível', + 'display_chart_label' => 'Mostrar gráfico', + 'show_when_empty_label' => 'Mostrar quando vazio', + ], + 'overview' => [ + 'metric_points_label' => 'Pontos de métrica', + 'metric_points_description' => 'Pontos de métrica recentes.', + ], + 'sum_label' => 'Soma', + 'average_label' => 'Média', + 'description_label' => 'Sobre :metric', + 'chart_label' => 'Gráfico de :metric', + 'view_labels' => [ + 'last_hour' => 'Última hora', + 'today' => 'Hoje', + 'week' => 'Semana', + 'month' => 'Mês', + ], +]; diff --git a/resources/lang/pt_PT/navigation.php b/resources/lang/pt_PT/navigation.php new file mode 100644 index 00000000..9c9e8e7a --- /dev/null +++ b/resources/lang/pt_PT/navigation.php @@ -0,0 +1,37 @@ + [ + 'label' => 'Definições', + 'items' => [ + 'manage_cachet' => 'Gerir o Cachet', + 'manage_customization' => 'Gerir personalização', + 'manage_localization' => 'Gerir localização', + 'manage_notifications' => 'Gerir notificações', + 'manage_theme' => 'Gerir tema', + 'manage_api_keys' => 'Gerir chaves de API', + 'manage_webhooks' => 'Gerir webhooks', + ], + ], + + 'integrations' => [ + 'label' => 'Integrações', + 'items' => [ + 'oh_dear' => 'Oh Dear', + ], + ], + 'resources' => [ + 'label' => 'Recursos', + 'items' => [ + 'status_page' => 'Página de estado', + 'documentation' => 'Documentação', + 'discord' => 'Juntar-se ao Discord', + 'sponsor' => 'Patrocinar o Cachet', + ], + ], + 'user' => [ + 'items' => [ + 'edit_profile' => 'Editar perfil', + ], + ], +]; diff --git a/resources/lang/pt_PT/resource.php b/resources/lang/pt_PT/resource.php new file mode 100644 index 00000000..d57f09ea --- /dev/null +++ b/resources/lang/pt_PT/resource.php @@ -0,0 +1,20 @@ + [ + 'id' => 'ID', + 'last_updated' => 'Última atualização', + 'name' => 'Nome', + 'manual' => 'Manual', + 'status' => 'Estado', + ], + 'order_direction' => [ + 'asc' => 'Ascendente', + 'desc' => 'Descendente', + ], + 'visibility' => [ + 'authenticated' => 'Utilizadores', + 'guest' => 'Visitantes', + 'hidden' => 'Sempre oculto', + ], +]; diff --git a/resources/lang/pt_PT/schedule.php b/resources/lang/pt_PT/schedule.php new file mode 100644 index 00000000..8441bb17 --- /dev/null +++ b/resources/lang/pt_PT/schedule.php @@ -0,0 +1,63 @@ + 'Agendamento|Agendamentos', + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'status' => 'Estado', + 'scheduled_at' => 'Agendado para', + 'completed_at' => 'Concluído em', + 'published_at' => 'Publicado em', + 'created_at' => 'Criado em', + 'updated_at' => 'Atualizado em', + 'deleted_at' => 'Eliminado em', + ], + 'published_now' => 'Publicado', + 'filters' => [ + 'scheduled' => 'Agendado (ainda não publicado)', + ], + 'empty_state' => [ + 'heading' => 'Agendamentos', + 'description' => 'Planeie e agende as suas manutenções.', + ], + 'actions' => [ + 'record_update' => 'Registar atualização', + 'complete' => 'Concluir manutenção', + ], + ], + 'form' => [ + 'name_label' => 'Nome', + 'message_label' => 'Mensagem', + 'scheduled_at_label' => 'Agendado para', + 'scheduled_at_helper' => 'Quando começa a janela de manutenção.', + 'completed_at_label' => 'Concluído em', + 'completed_at_helper' => 'Quando se prevê que a janela de manutenção termine.', + 'published_at_label' => 'Publicado em', + 'published_at_helper' => 'Agende a manutenção para aparecer na página de estado numa data futura. Até lá, fica oculta para todos. Deixe em branco para publicar de imediato.', + 'notify_subscribers_label' => 'Notificar os subscritores sobre esta manutenção.', + 'notifications_helper' => 'Enviar e-mail aos subscritores sobre esta manutenção agendada e as respetivas atualizações.', + 'meta_label' => 'Metadados', + 'add_component' => [ + 'action_label' => 'Adicionar componente', + 'header' => 'Componentes afetados', + 'component_label' => 'Componente', + 'status_label' => 'Estado durante a manutenção', + ], + ], + 'add_update' => [ + 'new_update_label' => 'Nova atualização', + 'success_title' => 'Atualização registada', + 'success_body' => 'Publicou uma nova atualização em :name.', + 'form' => [ + 'message_label' => 'Mensagem', + 'completed_at_label' => 'Concluído em', + ], + ], + 'status' => [ + 'upcoming' => 'Agendada', + 'in_progress' => 'Em curso', + 'complete' => 'Concluída', + ], + 'planned_maintenance_header' => 'Manutenção planeada', +]; diff --git a/resources/lang/pt_PT/settings.php b/resources/lang/pt_PT/settings.php new file mode 100644 index 00000000..0d93c6e6 --- /dev/null +++ b/resources/lang/pt_PT/settings.php @@ -0,0 +1,134 @@ + [ + 'site_name_label' => 'Nome do site', + 'site_name_helper' => 'Usado nos separadores do browser e nos metadados da página de estado.', + 'about_this_site_label' => 'Sobre este site', + 'about_this_site_helper' => 'Uma breve introdução em Markdown para a página inicial da sua página de estado.', + 'timezone_label' => 'Fuso horário', + 'timezone_other' => 'Outro', + 'browser_default' => 'Predefinição do browser', + 'incident_days_label' => 'Dias de incidentes', + 'incident_days_helper' => 'Quantos dias de histórico de incidentes mostrar na página de estado.', + 'major_outage_threshold_label' => 'Limiar de falha grave', + 'major_outage_threshold_helper' => 'Percentagem de componentes afetados a partir da qual uma falha é classificada como grave.', + 'refresh_rate_label' => 'Atualizar a página automaticamente', + 'refresh_rate_helper' => 'Com que frequência a página de estado se recarrega. Deixe em branco para desativar.', + 'refresh_rate_label_input_suffix_seconds' => 'segundos', + 'recent_incidents_days_suffix_days' => 'dias', + 'toggles' => [ + 'support_cachet' => 'Apoiar o Cachet', + 'support_cachet_helper' => 'Mostrar uma pequena ligação que incentiva os visitantes a apoiar o desenvolvimento do Cachet.', + 'show_dashboard_link' => 'Mostrar ligação para o painel', + 'show_dashboard_link_helper' => 'Mostrar uma ligação para o painel na página de estado pública.', + 'show_site_name' => 'Mostrar nome do site', + 'show_site_name_helper' => 'Mostrar o nome do site na página de estado pública.', + 'show_about' => 'Mostrar «Sobre este site»', + 'show_about_helper' => 'Mostrar o conteúdo de «Sobre este site» na página de estado pública.', + 'display_graphs' => 'Mostrar gráficos', + 'display_graphs_helper' => 'Apresentar os gráficos das métricas na página de estado.', + 'display_system_status' => 'Mostrar estado do sistema', + 'display_system_status_helper' => 'Mostrar 90 dias de disponibilidade dos grupos de componentes e dos componentes.', + 'enable_external_dependencies' => 'Ativar dependências externas', + 'enable_external_dependencies_helper' => 'Permitir que o Cachet carregue recursos, como tipos de letra, a partir de serviços externos.', + 'only_show_disrupted_days' => 'Mostrar apenas dias com perturbações', + 'only_show_disrupted_days_helper' => 'Ocultar da cronologia os dias sem incidentes registados.', + 'recent_incidents_only' => 'Mostrar apenas incidentes recentes', + 'recent_incidents_only_helper' => 'Limitar a lista de incidentes a um período recente em vez de mostrar todos.', + 'recent_incidents_days' => 'Número de dias de incidentes recentes', + 'recent_incidents_days_helper' => 'Até quantos dias atrás considerar ao listar os incidentes recentes.', + 'api_enabled' => 'Ativar API', + 'api_enabled_helper' => 'Permitir o acesso à API do Cachet. Quando desativada, todos os pedidos à API devolvem 404.', + 'api_protected' => 'Exigir autenticação', + 'api_protected_helper' => 'Exigir um token de API em todos os pedidos à API, incluindo os endpoints só de leitura.', + 'mcp_enabled' => 'Ativar servidor MCP', + 'mcp_enabled_helper' => 'Permitir que agentes de IA se liguem ao Cachet através do Model Context Protocol. Quando desativado, todos os pedidos MCP devolvem 404.', + 'mcp_protected' => 'Exigir autenticação', + 'mcp_protected_helper' => 'Exigir um token de API em todas as ligações MCP. Quando desligado, as ferramentas só de leitura são públicas e as ferramentas de escrita continuam a exigir um token de API com a permissão correspondente.', + 'dynamic_favicon' => 'Favicon dinâmico', + 'dynamic_favicon_helper' => 'Atualizar o favicon para refletir o estado atual dos seus sistemas.', + 'show_component_group_status' => 'Mostrar estado dos grupos de componentes', + 'show_component_group_status_helper' => 'Mostrar, na página de estado pública, o estado mais grave dos componentes de cada grupo.', + 'show_component_tags' => 'Mostrar etiquetas dos componentes', + 'show_component_tags_helper' => 'Mostrar etiquetas por baixo dos nomes dos componentes na página de estado pública.', + ], + 'general_settings_title' => 'Definições gerais', + 'incident_settings_title' => 'Definições de incidentes', + 'display_settings_title' => 'Definições de apresentação', + 'api_settings_title' => 'Definições da API', + 'mcp_settings_title' => 'Definições do servidor MCP', + ], + 'manage_customization' => [ + 'html_section_title' => 'HTML personalizado', + 'stylesheet_section_title' => 'Folha de estilos', + 'header_label' => 'HTML personalizado do cabeçalho', + 'header_helper' => 'HTML inserido no head de todas as páginas de estado. Útil para analytics e outros scripts.', + 'footer_label' => 'HTML personalizado do rodapé', + 'footer_helper' => 'HTML apresentado no fundo de todas as páginas de estado.', + 'stylesheet_label' => 'CSS personalizado', + 'stylesheet_helper' => 'CSS personalizado acrescentado aos estilos da página de estado.', + ], + 'manage_localization' => [ + 'locale_label' => 'Idioma', + 'locale_helper' => 'Idioma predefinido usado em toda a página de estado.', + 'timezone_label' => 'Fuso horário', + 'timezone_helper' => 'Fuso horário aplicado ao apresentar datas e horas.', + 'toggles' => [ + 'show_timezone' => 'Mostrar fuso horário na página de estado', + 'show_timezone_helper' => 'Mostrar o fuso horário ativo junto às datas na página de estado.', + ], + ], + 'manage_notifications' => [ + 'subscriptions_section_title' => 'Subscrições', + 'allow_subscribers_label' => 'Permitir subscrições', + 'allow_subscribers_helper' => 'Permitir que os visitantes subscrevam a página de estado e recebam atualizações por e-mail.', + 'long_running_section_title' => 'Incidentes prolongados', + 'long_running_section_description' => 'Lembrar a sua equipa dos incidentes por resolver que não recebem uma atualização há algum tempo.', + 'notify_long_running_incidents_label' => 'Notificar sobre incidentes prolongados', + 'notify_long_running_incidents_helper' => 'Enviar e-mail aos utilizadores do painel quando um incidente por resolver fica demasiado tempo sem atividade.', + 'long_running_incident_hours_label' => 'Horas sem atualização', + 'long_running_incident_hours_helper' => 'Quanto tempo um incidente pode ficar sem atualização antes de a equipa ser lembrada. Publicar uma atualização reinicia a contagem.', + 'long_running_incident_hours_suffix' => 'horas', + 'mail_section_title' => 'Servidor de e-mail', + 'mail_section_description' => 'Configure como o Cachet envia e-mails aos subscritores.', + 'mailer_label' => 'Método de envio', + 'mailer_helper' => 'Como o Cachet deve enviar os e-mails.', + 'mailer_placeholder' => 'Usar a predefinição da aplicação', + 'mailers' => [ + 'smtp' => 'SMTP', + 'sendmail' => 'Sendmail', + 'log' => 'Log (para testes)', + ], + 'host_label' => 'Servidor SMTP', + 'port_label' => 'Porta SMTP', + 'username_label' => 'Nome de utilizador', + 'password_label' => 'Palavra-passe', + 'from_section_title' => 'Remetente', + 'from_address_label' => 'Endereço de e-mail do remetente', + 'from_address_helper' => 'O endereço a partir do qual o Cachet envia os e-mails.', + 'from_name_label' => 'Nome do remetente', + 'from_name_helper' => 'O nome com que o Cachet envia os e-mails. Deixe em branco para usar a predefinição da aplicação.', + 'test_email_label' => 'Enviar e-mail de teste', + 'test_email_subject' => 'E-mail de teste do Cachet', + 'test_email_heading' => 'Funciona!', + 'test_email_body' => 'Este é um e-mail de teste de :app. Se está a ler isto, as suas definições de e-mail estão a funcionar na perfeição.', + 'test_email_button' => 'Visitar a sua página de estado', + 'test_email_sent' => 'E-mail de teste enviado para :email.', + 'test_email_failed' => 'Não foi possível enviar o e-mail de teste.', + ], + 'manage_theme' => [ + 'app_banner_label' => 'Imagem do banner', + 'app_banner_helper' => 'Uma imagem apresentada no topo da página de estado.', + 'status_page_accent' => [ + 'heading' => 'Cor de destaque da página de estado', + 'description' => 'Personalize a cor de destaque da sua página de estado. O Cachet pode selecionar automaticamente uma cor de base a condizer.', + 'accent_color_label' => 'Cor de destaque', + 'accent_color_helper' => 'Cor principal usada em títulos, ligações e estados ativos.', + 'accent_content_label' => 'Cor de base', + 'accent_content_helper' => 'Cor de base neutra combinada com a cor de destaque. Desativada quando a combinação automática está ligada.', + 'accent_pairing_label' => 'Combinação automática', + 'accent_pairing_helper' => 'Escolher automaticamente uma cor de base que complemente a cor de destaque.', + ], + ], +]; diff --git a/resources/lang/pt_PT/subscriber.php b/resources/lang/pt_PT/subscriber.php new file mode 100644 index 00000000..ebb10498 --- /dev/null +++ b/resources/lang/pt_PT/subscriber.php @@ -0,0 +1,102 @@ + 'Subscritor|Subscritores', + 'list' => [ + 'headers' => [ + 'email' => 'E-mail', + 'phone_number' => 'Número de telefone', + 'slack_webhook_url' => 'URL do webhook do Slack', + 'verified_at' => 'Verificado em', + 'created_at' => 'Criado em', + 'updated_at' => 'Atualizado em', + ], + 'empty_state' => [ + 'heading' => 'Subscritores', + 'description' => 'Os subscritores são as pessoas que subscreveram a sua página de estado para receber notificações.', + ], + 'actions' => [ + 'verify_label' => 'Verificar', + 'resend_verification_label' => 'Reenviar verificação', + ], + ], + 'resend_verification' => [ + 'success_title' => 'E-mail de verificação enviado', + 'success_body' => 'Foi enviado um novo e-mail de verificação para :email.', + ], + 'form' => [ + 'email_label' => 'E-mail', + 'verified_at_label' => 'Verificado em', + 'meta_label' => 'Metadados', + ], + 'overview' => [ + 'total_subscribers_label' => 'Total de subscritores', + 'verified_subscribers_description' => ':count verificados', + ], + 'status_page' => [ + 'subscribe' => [ + 'title' => 'Subscrever atualizações', + 'heading' => 'Subscrever atualizações', + 'description' => 'Receba um e-mail sempre que forem reportados incidentes ou agendadas manutenções.', + 'consent' => 'Vamos enviar-lhe um e-mail de confirmação. Pode cancelar a subscrição a qualquer momento.', + 'back' => 'Voltar à página de estado', + 'button_label' => 'Subscrever', + 'subscribed_heading' => 'Consulte o seu e-mail', + 'subscribed_body' => 'Se este endereço de e-mail ainda não estiver subscrito, vai receber um e-mail com uma ligação para confirmar a subscrição.', + 'verified_heading' => 'Subscrição confirmada', + 'verified_body' => 'A partir de agora, vai receber as atualizações de estado por e-mail.', + 'unsubscribed_heading' => 'A sua subscrição foi cancelada', + 'unsubscribed_body' => 'Deixará de receber atualizações de estado por e-mail. Pode voltar a subscrever a qualquer momento.', + ], + 'unsubscribe' => [ + 'title' => 'Cancelar subscrição', + 'heading' => 'Cancelar a subscrição das atualizações?', + 'body' => ':email deixará de receber atualizações de estado.', + 'button' => 'Cancelar subscrição', + 'cancel' => 'Manter a subscrição', + ], + 'email_label' => 'Endereço de e-mail', + 'email_placeholder' => 'nome@exemplo.pt', + 'subscribe_button' => 'Subscrever', + ], + 'mail' => [ + 'unsubscribe' => 'Cancelar subscrição', + 'new_incident' => [ + 'subject' => 'Novo incidente: :incident', + 'button' => 'Ver incidente', + ], + 'incident_updated' => [ + 'subject' => 'Incidente atualizado: :incident', + 'button' => 'Ver incidente', + ], + 'new_schedule' => [ + 'subject' => 'Manutenção agendada: :schedule', + 'scheduled_for' => 'Agendada para', + 'button' => 'Ver manutenção', + ], + 'schedule_updated' => [ + 'subject' => 'Manutenção atualizada: :schedule', + 'updated_at' => 'Atualizada', + 'button' => 'Ver manutenção', + ], + 'schedule_rescheduled' => [ + 'subject' => 'Manutenção reagendada: :schedule', + 'previously' => 'Anteriormente', + 'now' => 'Agora agendada para', + 'button' => 'Ver manutenção', + ], + 'schedule_completed' => [ + 'subject' => 'Manutenção concluída: :schedule', + 'completed_at' => 'Concluída', + 'body' => 'A manutenção agendada foi concluída e todos os serviços afetados devem estar agora a funcionar normalmente.', + 'button' => 'Ver manutenção', + ], + 'verify' => [ + 'subject' => 'Confirme a sua subscrição', + 'heading' => 'Confirme a sua subscrição', + 'body' => 'Está a receber este e-mail porque alguém subscreveu as atualizações de estado de :app. Confirme a subscrição para começar a receber atualizações.', + 'button' => 'Confirmar subscrição', + 'ignore' => 'Se não subscreveu :app, pode ignorar este e-mail em segurança.', + ], + ], +]; diff --git a/resources/lang/pt_PT/system_status.php b/resources/lang/pt_PT/system_status.php new file mode 100644 index 00000000..3c76a609 --- /dev/null +++ b/resources/lang/pt_PT/system_status.php @@ -0,0 +1,16 @@ + 'Estado do sistema', + 'component_count' => ':count componente|:count componentes', + 'uptime' => ':uptime% de disponibilidade', + 'no_data' => 'Sem dados', + 'no_data_description' => 'Não há dados de disponibilidade para este dia.', + 'no_activity' => 'Não há incidentes nem manutenções reportados.', + 'status_changed' => 'Estado alterado para :status.', + 'status_continued' => ':status durante todo o dia.', + 'operational' => 'Todos os sistemas estão operacionais.', + 'partial_outage' => 'Alguns sistemas estão com problemas.', + 'major_outage' => 'Alguns sistemas estão com problemas graves.', + 'under_maintenance' => 'Alguns sistemas estão em manutenção.', +]; diff --git a/resources/lang/pt_PT/user.php b/resources/lang/pt_PT/user.php new file mode 100644 index 00000000..808fe1a7 --- /dev/null +++ b/resources/lang/pt_PT/user.php @@ -0,0 +1,30 @@ + 'Utilizador|Utilizadores', + 'profile_information_title' => 'Informações do perfil', + 'security_section_title' => 'Palavra-passe e segurança', + 'list' => [ + 'headers' => [ + 'name' => 'Nome', + 'email' => 'Endereço de e-mail', + 'email_verified_at' => 'E-mail verificado em', + 'is_admin' => 'Administrador', + ], + 'actions' => [ + 'verify_email' => 'Verificar e-mail', + 'reset_two_factor' => 'Repor autenticação de dois fatores', + 'reset_two_factor_confirmation' => 'Isto remove a configuração de autenticação de dois fatores e os códigos de recuperação do utilizador. Até voltar a configurá-la, poderá iniciar sessão apenas com a palavra-passe.', + 'reset_two_factor_success' => 'Autenticação de dois fatores reposta.', + ], + ], + 'form' => [ + 'name_label' => 'Nome', + 'email_label' => 'Endereço de e-mail', + 'password_label' => 'Palavra-passe', + 'password_confirmation_label' => 'Confirmar palavra-passe', + 'preferred_locale' => 'Idioma preferido', + 'preferred_locale_system_default' => 'Predefinição do sistema', + 'is_admin_label' => 'Administrador', + ], +]; diff --git a/resources/lang/pt_PT/webhook.php b/resources/lang/pt_PT/webhook.php new file mode 100644 index 00000000..2ec8cd54 --- /dev/null +++ b/resources/lang/pt_PT/webhook.php @@ -0,0 +1,30 @@ + 'Webhook|Webhooks', + 'event_selection' => [ + 'all' => 'Enviar todos os eventos', + 'selected' => 'Enviar apenas os eventos selecionados', + ], + 'form' => [ + 'url_label' => 'URL de destino', + 'url_helper' => 'Os eventos são enviados por POST para este URL.', + 'secret_label' => 'Segredo', + 'secret_helper' => 'O conteúdo é assinado com este segredo. Consulte a *documentação dos webhooks* para mais informações.', + 'description_label' => 'Descrição', + 'events_to_send_label' => 'Eventos a enviar', + 'events_label' => 'Eventos', + 'edit_secret_label' => 'Editar segredo', + 'update_secret_label' => 'Atualizar segredo', + ], + 'attempts' => [ + 'heading' => 'Tentativas', + 'empty_state' => 'Ainda não houve tentativas de envio para este webhook.', + ], + 'list' => [ + 'headers' => [ + 'url' => 'URL de destino', + 'success_rate_24h' => 'Taxa de sucesso (24 h)', + ], + ], +]; diff --git a/tests/Feature/Http/Controllers/Subscribers/SubscribeTest.php b/tests/Feature/Http/Controllers/Subscribers/SubscribeTest.php index d8561832..ce37f7bc 100644 --- a/tests/Feature/Http/Controllers/Subscribers/SubscribeTest.php +++ b/tests/Feature/Http/Controllers/Subscribers/SubscribeTest.php @@ -50,6 +50,7 @@ 'Dutch' => ['nl', 'Abonneren'], 'Filipino' => ['ph', 'Mag-subscribe'], 'Brazilian Portuguese' => ['pt_BR', 'Inscrever-se'], + 'European Portuguese' => ['pt_PT', 'Subscrever'], 'Simplified Chinese' => ['zh_CN', '订阅'], 'Traditional Chinese' => ['zh_TW', '訂閱'], ]);