Files
Home-Assistant/custom_components/ha_washdata/translations/pt.json
T
2026-06-14 02:01:49 -04:00

1342 lines
77 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"config": {
"step": {
"user": {
"title": "Configuração WashData",
"description": "Configure a sua máquina de lavar ou outro electrodoméstico.\n\nÉ necessário um sensor de potência.\n\n**De seguida, ser-lhe-á perguntado se deseja criar o seu primeiro perfil.**",
"data": {
"name": "Nome do dispositivo",
"device_type": "Tipo de dispositivo",
"power_sensor": "Sensor de potência",
"min_power": "Limiar mínimo de potência (W)"
},
"data_description": {
"name": "Um nome descritivo para este dispositivo (por exemplo, 'Máquina de lavar', 'Máquina de lavar loiça').",
"device_type": "Que tipo de electrodoméstico é este? Ajuda a personalizar a detecção e a rotulagem.",
"power_sensor": "A entidade do sensor que reporta o consumo de energia em tempo real (em watts) da sua tomada inteligente.",
"min_power": "Leituras de potência acima deste limiar (em watts) indicam que o electrodoméstico está a funcionar. Comece com 2W para a maioria dos dispositivos."
}
},
"first_profile": {
"title": "Criar primeiro perfil",
"description": "Um **Ciclo** é uma operação completa do seu electrodoméstico (por exemplo, uma carga de roupa). Um **Perfil** agrupa esses ciclos por tipo (por exemplo, 'Algodão', 'Lavagem Rápida'). Criar um perfil agora ajuda a integração a estimar a duração de imediato.\n\nPode seleccionar manualmente este perfil nos controlos do dispositivo se não for detectado automaticamente.\n\n**Deixe 'Nome do perfil' em branco para ignorar este passo.**",
"data": {
"profile_name": "Nome do perfil (opcional)",
"manual_duration": "Duração estimada (minutos)"
}
}
},
"error": {
"cannot_connect": "Falha ao ligar",
"invalid_auth": "Autenticação inválida",
"unknown": "Erro inesperado"
},
"abort": {
"already_configured": "O dispositivo já está configurado"
}
},
"options": {
"step": {
"init": {
"menu_options": {
"learning_feedbacks": "Rever feedbacks de aprendizagem",
"settings": "Definições",
"notifications": "Notificações",
"manage_cycles": "Gerir ciclos",
"manage_profiles": "Gerir perfis",
"manage_phase_catalog": "Gerir catálogo de fases",
"record_cycle": "Gravar ciclo (manual)",
"diagnostics": "Diagnóstico e manutenção"
}
},
"apply_suggestions": {
"title": "Copiar valores sugeridos",
"description": "Isto copiará os valores sugeridos actuais para as suas Definições guardadas. Esta é uma acção única e não activa substituições automáticas.\n\nValores sugeridos a copiar:\n{suggested}",
"data": {
"confirm": "Confirmar acção de cópia"
}
},
"apply_suggestions_confirm": {
"title": "Rever alterações sugeridas",
"description": "WashData encontrou **{pending_count}** valores sugeridos para aplicação.\n\nMudanças:\n{changes}\n\n✅ Marque a caixa abaixo e clique em **Enviar** para aplicar e salvar essas alterações imediatamente.\n❌ Deixe desmarcado e clique em **Enviar** para cancelar e voltar.",
"data": {
"confirm_apply_suggestions": "Aplicar e salvar essas alterações"
}
},
"settings": {
"title": "Definições",
"description": "{deprecation_warning}Ajuste os limiares de detecção, aprendizagem e comportamento avançado. As predefinições funcionam bem para a maioria das configurações.\n\nDefinições sugeridas disponíveis: {suggestions_count}.\nSe for acima de 0, abra as Definições avançadas e use Aplicar valores sugeridos para rever as recomendações.",
"data": {
"apply_suggestions": "Aplicar valores sugeridos",
"device_type": "Tipo de dispositivo",
"power_sensor": "Entidade do sensor de potência",
"min_power": "Potência mínima (W)",
"off_delay": "Atraso de fim de ciclo (s)",
"notify_actions": "Acções de notificação",
"notify_people": "Atrasar envio até estas pessoas estarem em casa",
"notify_only_when_home": "Atrasar notificações até a pessoa seleccionada estar em casa",
"notify_fire_events": "Acionar eventos de automatização",
"notify_start_services": "Início do Ciclo - Alvos de Notificação",
"notify_finish_services": "Término do Ciclo - Alvos de Notificação",
"notify_live_services": "Progresso ao vivo metas de notificação",
"notify_before_end_minutes": "Notificação prévia à conclusão (minutos antes do fim)",
"notify_title": "Título da notificação",
"notify_icon": "Ícone de notificação",
"notify_start_message": "Formato da mensagem de início",
"notify_finish_message": "Formato da mensagem de conclusão",
"notify_pre_complete_message": "Formato da mensagem pré-conclusão",
"show_advanced": "Editar definições avançadas (próximo passo)"
},
"data_description": {
"apply_suggestions": "Assinale esta caixa para copiar os valores sugeridos pelo algoritmo de aprendizagem para o formulário. Reveja antes de guardar.\n\nSugerido (por aprendizagem):\n- min_power: {suggested_min_power} W\n- off_delay: {suggested_off_delay} s\n- watchdog_interval: {suggested_watchdog_interval} s\n- no_update_active_timeout: {suggested_no_update_active_timeout} s\n- profile_match_interval: {suggested_profile_match_interval} s\n- auto_label_confidence: {suggested_auto_label_confidence}\n- duration_tolerance: {suggested_duration_tolerance}\n- profile_duration_tolerance: {suggested_profile_duration_tolerance}\n- profile_match_min_duration_ratio: {suggested_profile_match_min_duration_ratio}\n- profile_match_max_duration_ratio: {suggested_profile_match_max_duration_ratio}\n- start_threshold_w: {suggested_start_threshold_w} W\n- stop_threshold_w: {suggested_stop_threshold_w} W\n- end_energy_threshold: {suggested_end_energy_threshold} Wh\n- running_dead_zone: {suggested_running_dead_zone} s\n{suggested_reason}",
"device_type": "Seleccione o tipo de electrodoméstico (Máquina de lavar, Secadora, Máquina de lavar loiça, Máquina de café, VE). Esta etiqueta é guardada em cada ciclo para melhor organização.",
"power_sensor": "A entidade do sensor que reporta a potência em tempo real (em watts). Pode alterar isto a qualquer momento sem perder dados históricos - útil se substituir uma tomada inteligente.",
"min_power": "Leituras de potência acima deste limiar (em watts) indicam que o electrodoméstico está a funcionar. Comece com 2W para a maioria dos dispositivos.",
"off_delay": "Segundos em que a potência suavizada deve permanecer abaixo do limiar de paragem para marcar a conclusão. Predefinição: 120s.",
"notify_actions": "Sequência de acções opcional do Home Assistant para executar nas notificações (scripts, notify, TTS, etc.). Se definido, as acções são executadas antes do serviço de notificação de fallback.",
"notify_people": "Entidades de pessoas utilizadas para controlo de presença. Quando activado, o envio de notificações é adiado até pelo menos uma pessoa seleccionada estar em casa.",
"notify_only_when_home": "Se activado, adia as notificações até pelo menos uma pessoa seleccionada estar em casa.",
"notify_fire_events": "Se activado, aciona eventos do Home Assistant para início e fim de ciclo (ha_washdata_cycle_started e ha_washdata_cycle_ended) para conduzir automatizações.",
"notify_start_services": "Um ou mais serviços de notificação para alertar quando um ciclo começa. Deixe em branco para pular as notificações de início.",
"notify_finish_services": "Um ou mais serviços de notificação para alertar quando um ciclo termina ou está próximo da conclusão. Deixe em branco para pular as notificações de conclusão.",
"notify_live_services": "Um ou mais serviços de notificação para receber atualizações de progresso ao vivo enquanto o ciclo é executado (somente aplicativo complementar móvel). Deixe em branco para pular as atualizações ao vivo.",
"notify_before_end_minutes": "Minutos antes do fim estimado do ciclo para acionar uma notificação. Defina como 0 para desactivar. Predefinição: 0.",
"notify_title": "Título personalizado para notificações. Suporta o marcador de posição {device}.",
"notify_icon": "Ícone a utilizar nas notificações (ex.: mdi:washing-machine). Deixe em branco para enviar sem ícone.",
"notify_start_message": "Mensagem enviada quando um ciclo começa. Suporta o marcador de posição {device}.",
"notify_finish_message": "Mensagem enviada quando um ciclo termina. Suporta os marcadores de posição {device}, {duration}, {program}, {energy_kwh}, {cost}.",
"notify_pre_complete_message": "Texto das atualizações recorrentes do progresso ao vivo enquanto o ciclo é executado. Suporta marcadores de posição {device}, {minutes}, {program}."
}
},
"notifications": {
"title": "Notificações",
"description": "Configure canais de notificação, modelos e actualizações opcionais de progresso em tempo real no telemóvel.",
"data": {
"notify_actions": "Acções de notificação",
"notify_people": "Atrasar envio até estas pessoas estarem em casa",
"notify_only_when_home": "Atrasar notificações até a pessoa seleccionada estar em casa",
"notify_fire_events": "Acionar eventos de automatização",
"notify_start_services": "Início do Ciclo - Alvos de Notificação",
"notify_finish_services": "Término do Ciclo - Alvos de Notificação",
"notify_live_services": "Progresso ao vivo metas de notificação",
"notify_before_end_minutes": "Notificação prévia à conclusão (minutos antes do fim)",
"notify_live_interval_seconds": "Intervalo de actualização em tempo real (segundos)",
"notify_live_overrun_percent": "Tolerância de excesso de actualizações em tempo real (%)",
"notify_live_chronometer": "Temporizador de contagem regressiva do cronômetro",
"notify_title": "Título da notificação",
"notify_icon": "Ícone de notificação",
"notify_start_message": "Formato da mensagem de início",
"notify_finish_message": "Formato da mensagem de conclusão",
"notify_pre_complete_message": "Formato da mensagem pré-conclusão",
"energy_price_entity": "Preço da Energia - Entidade (opcional)",
"energy_price_static": "Preço da Energia - Valor estático (opcional)",
"go_back": "Voltar sem guardar",
"notify_reminder_message": "Formato de mensagem de lembrete",
"notify_timeout_seconds": "Dispensar automaticamente após (segundos)",
"notify_channel": "Canal de notificação (status/ao vivo/lembrete)",
"notify_finish_channel": "Canal de Notificação Concluído"
},
"data_description": {
"go_back": "Assinale esta opção e clique em Submeter para descartar quaisquer alterações acima e voltar ao menu principal.",
"notify_actions": "Sequência de acções opcional do Home Assistant para executar nas notificações (scripts, notify, TTS, etc.). Se definido, as acções são executadas antes do serviço de notificação de fallback.",
"notify_people": "Entidades de pessoas utilizadas para controlo de presença. Quando activado, o envio de notificações é adiado até pelo menos uma pessoa seleccionada estar em casa.",
"notify_only_when_home": "Se activado, adia as notificações até pelo menos uma pessoa seleccionada estar em casa.",
"notify_fire_events": "Se activado, aciona eventos do Home Assistant para início e fim de ciclo (ha_washdata_cycle_started e ha_washdata_cycle_ended) para conduzir automatizações.",
"notify_start_services": "Um ou mais serviços de notificação para alertar quando um ciclo começa (por exemplo, notify.mobile_app_my_phone). Deixe em branco para pular as notificações de início.",
"notify_finish_services": "Um ou mais serviços de notificação para alertar quando um ciclo termina ou está próximo da conclusão. Deixe em branco para pular as notificações de conclusão.",
"notify_live_services": "Um ou mais serviços de notificação para receber atualizações de progresso ao vivo enquanto o ciclo é executado (somente aplicativo complementar móvel). Deixe em branco para pular as atualizações ao vivo.",
"notify_before_end_minutes": "Minutos antes do fim estimado do ciclo para acionar uma notificação. Defina como 0 para desactivar. Predefinição: 0.",
"notify_live_interval_seconds": "Com que frequência as actualizações de progresso são enviadas durante o funcionamento. Valores mais baixos são mais reactivos mas consomem mais notificações. É imposto um mínimo de 30 segundos - valores abaixo de 30 s são automaticamente arredondados para 30 s.",
"notify_live_overrun_percent": "Margem de segurança acima da contagem estimada de actualizações para ciclos longos ou que excedam o previsto (por exemplo, 20% permite 1,2× as actualizações estimadas).",
"notify_live_chronometer": "Quando ativado, cada atualização ao vivo inclui uma contagem regressiva do cronômetro até o tempo estimado de término. O cronômetro de notificação diminui automaticamente no dispositivo entre as atualizações (somente aplicativo complementar para Android).",
"notify_title": "Título personalizado para notificações. Suporta o marcador de posição {device}.",
"notify_icon": "Ícone a utilizar nas notificações (ex.: mdi:washing-machine). Deixe em branco para enviar sem ícone.",
"notify_start_message": "Mensagem enviada quando um ciclo começa. Suporta o marcador de posição {device}.",
"notify_finish_message": "Mensagem enviada quando um ciclo termina. Suporta os marcadores de posição {device}, {duration}, {program}, {energy_kwh}, {cost}.",
"energy_price_entity": "Selecione uma entidade numérica que contenha o preço atual da eletricidade (por exemplo, sensor.electricity_price, input_number.energy_rate). Quando definido, ativa o espaço reservado {cost}. Tem precedência sobre o valor estático se ambos estiverem configurados.",
"energy_price_static": "Preço fixo da eletricidade por kWh. Quando definido, ativa o espaço reservado {cost}. Ignorado se uma entidade estiver configurada acima. Adicione o símbolo da sua moeda no modelo de mensagem, por exemplo. {cost} €.",
"notify_reminder_message": "O texto do lembrete único enviou o número configurado de minutos antes do término estimado. Diferente das atualizações ao vivo recorrentes acima. Suporta marcadores de posição {device}, {minutes}, {program}.",
"notify_timeout_seconds": "Ignore automaticamente as notificações após esses segundos (encaminhadas como 'tempo limite' do aplicativo complementar). Defina como 0 para mantê-los até serem descartados. Padrão: 0.",
"notify_channel": "Android canal de notificação de aplicativo complementar para notificações de status, progresso ao vivo e lembretes. O som e a importância de um canal são configurados no aplicativo complementar na primeira vez que o nome do canal é usado - WashData define apenas o nome do canal. Deixe em branco para o padrão do aplicativo.",
"notify_finish_channel": "Canal Android separado para o alerta finalizado (também usado pelo lembrete e pelo aviso de espera da lavanderia) para que ele possa ter seu próprio som. Deixe em branco para reutilizar o canal acima.",
"notify_pre_complete_message": "Texto das atualizações recorrentes do progresso ao vivo enquanto o ciclo é executado. Suporta marcadores de posição {device}, {minutes}, {program}."
}
},
"advanced_settings": {
"title": "Definições avançadas",
"description": "Ajuste os limiares de detecção, aprendizagem e comportamento avançado. As predefinições funcionam bem para a maioria das configurações.",
"sections": {
"suggestions_section": {
"name": "Definições sugeridas",
"description": "{suggestions_count} sugestões aprendidas disponíveis. Assinale Aplicar valores sugeridos para rever as alterações propostas antes de guardar.",
"data": {
"apply_suggestions": "Aplicar valores sugeridos"
},
"data_description": {
"apply_suggestions": "Assinale esta caixa para abrir um passo de revisão dos valores sugeridos pelo algoritmo de aprendizagem. Nada é guardado automaticamente.\n\nSugerido (por aprendizagem):\n- min_power: {suggested_min_power} W\n- off_delay: {suggested_off_delay} s\n- watchdog_interval: {suggested_watchdog_interval} s\n- no_update_active_timeout: {suggested_no_update_active_timeout} s\n- profile_match_interval: {suggested_profile_match_interval} s\n- auto_label_confidence: {suggested_auto_label_confidence}\n- duration_tolerance: {suggested_duration_tolerance}\n- profile_duration_tolerance: {suggested_profile_duration_tolerance}\n- profile_match_min_duration_ratio: {suggested_profile_match_min_duration_ratio}\n- profile_match_max_duration_ratio: {suggested_profile_match_max_duration_ratio}\n- start_threshold_w: {suggested_start_threshold_w} W\n- stop_threshold_w: {suggested_stop_threshold_w} W\n- end_energy_threshold: {suggested_end_energy_threshold} Wh\n- running_dead_zone: {suggested_running_dead_zone} s\n{suggested_reason}"
}
},
"detection_section": {
"name": "Deteção e limiares de potência",
"description": "Quando o aparelho é considerado LIGADO ou DESLIGADO, limites de energia e temporização para transições de estado.",
"data": {
"start_duration_threshold": "Duração de debounce de início (s)",
"start_energy_threshold": "Porta de energia de início (Wh)",
"completion_min_seconds": "Tempo de execução mínimo de conclusão (segundos)",
"start_threshold_w": "Limiar de início (W)",
"stop_threshold_w": "Limiar de paragem (W)",
"end_energy_threshold": "Porta de energia de fim (Wh)",
"running_dead_zone": "Zona morta após início (segundos)",
"end_repeat_count": "Contagem de repetições de fim",
"min_off_gap": "Intervalo mínimo entre ciclos (s)",
"sampling_interval": "Intervalo de amostragem (s)"
},
"data_description": {
"start_duration_threshold": "Ignore picos de potência breves mais curtos do que esta duração (segundos). Filtra picos de arranque (ex.: 60W durante 2s) antes do início real do ciclo. Predefinição: 5s.",
"start_energy_threshold": "O ciclo deve acumular pelo menos esta quantidade de energia (Wh) durante a fase de INÍCIO para ser confirmado. Predefinição: 0,005 Wh.",
"completion_min_seconds": "Ciclos mais curtos do que isto serão marcados como 'interrompidos', mesmo que terminem naturalmente. Predefinição: 600s.",
"start_threshold_w": "A potência deve subir ACIMA deste limiar para INICIAR um ciclo. Defina acima da sua potência em standby. Predefinição: min_power + 1 W.",
"stop_threshold_w": "A potência deve cair ABAIXO deste limiar para TERMINAR um ciclo. Defina ligeiramente acima de zero para evitar que ruído provoque fins falsos. Predefinição: 0,6 × min_power.",
"end_energy_threshold": "O ciclo só termina se a energia na última janela off-delay estiver abaixo deste valor (Wh). Evita fins falsos se a potência flutuar perto de zero. Predefinição: 0,05 Wh.",
"running_dead_zone": "Após o início do ciclo, ignore quedas de potência durante este número de segundos para evitar detecção falsa de fim durante a fase inicial de arranque. Defina como 0 para desactivar. Predefinição: 0s.",
"end_repeat_count": "Número de vezes que a condição de fim (potência abaixo do limiar durante off_delay) deve ser satisfeita consecutivamente antes de terminar o ciclo. Valores mais altos evitam fins falsos durante pausas. Predefinição: 1.",
"min_off_gap": "Se um ciclo começar dentro deste número de segundos após o fim do anterior, serão FUNDIDOS num único ciclo.",
"sampling_interval": "Intervalo mínimo de amostragem em segundos. Atualizações mais rápidas que essa taxa serão ignoradas. Padrão: 30s (2s para máquinas de lavar, lavadoras e secadoras e lava-louças)."
}
},
"matching_section": {
"name": "Correspondência de perfis e aprendizagem",
"description": "Com que agressividade o WashData faz corresponder ciclos em execução a perfis aprendidos e quando pedir feedback.",
"data": {
"profile_match_min_duration_ratio": "Rácio mínimo de duração da correspondência de perfil (0,1-1,0)",
"profile_match_interval": "Intervalo de correspondência de perfil (segundos)",
"profile_match_threshold": "Limiar de correspondência de perfil",
"profile_unmatch_threshold": "Limiar de não-correspondência de perfil",
"auto_label_confidence": "Confiança de rotulagem automática (0-1)",
"learning_confidence": "Confiança do pedido de feedback (0-1)",
"suppress_feedback_notifications": "Suprimir notificações de feedback",
"duration_tolerance": "Tolerância de duração (0-0,5)",
"smoothing_window": "Janela de suavização (amostras)",
"profile_duration_tolerance": "Tolerância de duração da correspondência de perfil (0-0,5)"
},
"data_description": {
"profile_match_min_duration_ratio": "Rácio mínimo de duração para correspondência de perfil. O ciclo em execução deve ter pelo menos esta fracção da duração do perfil para corresponder. Inferior = correspondência mais cedo. Predefinição: 0,50 (50%).",
"profile_match_interval": "Com que frequência (em segundos) tentar a correspondência de perfil durante um ciclo. Valores mais baixos fornecem detecção mais rápida mas usam mais CPU. Predefinição: 300s (5 minutos).",
"profile_match_threshold": "Pontuação mínima de similaridade DTW (0,01,0) necessária para considerar um perfil como correspondência. Superior = correspondência mais rigorosa, menos falsos positivos. Predefinição: 0,4.",
"profile_unmatch_threshold": "Pontuação de similaridade DTW (0,01,0) abaixo da qual um perfil previamente correspondido é rejeitado. Deve ser inferior ao limiar de correspondência para evitar oscilações. Predefinição: 0,35.",
"auto_label_confidence": "Rotulear automaticamente os ciclos neste nível de confiança ou acima na conclusão (0,01,0).",
"learning_confidence": "Confiança mínima para pedir verificação do utilizador através de um evento (0,01,0).",
"suppress_feedback_notifications": "Quando ativado, o WashData ainda rastreará e solicitará feedback internamente, mas não mostrará notificações persistentes solicitando a confirmação dos ciclos. Útil quando os ciclos são sempre detectados corretamente e você acha que os avisos são uma distração.",
"duration_tolerance": "Tolerância para estimativas de tempo restante durante um ciclo (0,00,5 corresponde a 050%).",
"smoothing_window": "Número de leituras de potência recentes utilizadas para suavização por média móvel.",
"profile_duration_tolerance": "Tolerância utilizada pela correspondência de perfil para variação total de duração (0,00,5). Comportamento predefinido: ±25%."
}
},
"timing_section": {
"name": "Temporização, manutenção e depuração",
"description": "Watchdog, reposição do progresso, manutenção automática e exposição de entidades de depuração.",
"data": {
"watchdog_interval": "Intervalo do watchdog (segundos)",
"no_update_active_timeout": "Tempo limite sem actualizações (s)",
"progress_reset_delay": "Atraso de reinicialização do progresso (segundos)",
"auto_maintenance": "Activar manutenção automática",
"expose_debug_entities": "Expor entidades de depuração",
"save_debug_traces": "Guardar traços de depuração"
},
"data_description": {
"watchdog_interval": "Segundos entre verificações do watchdog durante o funcionamento. Predefinição: 5s. AVISO: Certifique-se de que é SUPERIOR ao intervalo de actualização do seu sensor para evitar paragens falsas (ex.: se o sensor actualiza a cada 60s, use 65s+).",
"no_update_active_timeout": "Para sensores de publicação por alteração: forçar o fim de um ciclo ACTIVO apenas se não chegarem actualizações durante este número de segundos. A conclusão por baixa potência ainda usa o atraso de desligamento.",
"progress_reset_delay": "Após um ciclo ser concluído (100%), aguarde este número de segundos em inactividade antes de repor o progresso para 0%. Predefinição: 300s.",
"auto_maintenance": "Activar manutenção automática (reparar amostras, fundir fragmentos).",
"expose_debug_entities": "Mostrar sensores avançados (Confiança, Fase, Ambiguidade) para depuração.",
"save_debug_traces": "Guardar dados detalhados de classificação e traço de potência no histórico (aumenta o uso de armazenamento)."
}
},
"anti_wrinkle_section": {
"name": "Proteção anti-rugas (secadores)",
"description": "Ignora rotações do tambor após o ciclo para evitar ciclos fantasma. Apenas secador / máquina lava e seca.",
"data": {
"anti_wrinkle_enabled": "Escudo anti-vincos (apenas secadora/combinada)",
"anti_wrinkle_max_power": "Potência máxima anti-vincos (W) (apenas secadora/combinada)",
"anti_wrinkle_max_duration": "Duração máxima anti-vincos (s) (apenas secadora/combinada)",
"anti_wrinkle_exit_power": "Potência de saída anti-vincos (W) (apenas secadora/combinada)"
},
"data_description": {
"anti_wrinkle_enabled": "Ignorar rotações curtas do tambor de baixa potência após o fim de um ciclo para evitar ciclos fantasma (apenas secadora/combinada).",
"anti_wrinkle_max_power": "Explosões nesta potência ou abaixo são tratadas como rotações anti-vincos em vez de novos ciclos. Aplica-se apenas quando o Escudo anti-vincos está activado.",
"anti_wrinkle_max_duration": "Comprimento máximo da explosão para tratar como rotação anti-vincos. Aplica-se apenas quando o Escudo anti-vincos está activado.",
"anti_wrinkle_exit_power": "Se a potência cair abaixo deste nível, sair do modo anti-vincos imediatamente (desligamento real). Aplica-se apenas quando o Escudo anti-vincos está activado."
}
},
"delay_start_section": {
"name": "Deteção de início diferido",
"description": "Trata um estado de espera sustentado de baixa potência como 'À espera de iniciar' até o ciclo começar realmente.",
"data": {
"delay_start_detect_enabled": "Ativar detecção de início atrasado",
"delay_confirm_seconds": "Início diferido: tempo de confirmação em espera (s)",
"delay_timeout_hours": "Início atrasado: tempo máximo de espera (h)"
},
"data_description": {
"delay_start_detect_enabled": "Quando ativado, um breve pico de consumo de baixa energia seguido por energia de espera sustentada é detectado como uma partida atrasada. O sensor de estado mostra 'Aguardando início' durante o atraso. Nenhum tempo ou progresso do programa é monitorado até que o ciclo realmente comece. Requer que start_threshold_w seja definido acima da potência do pico de drenagem.",
"delay_confirm_seconds": "A potência deve permanecer entre o Limiar de paragem (W) e o Limiar de arranque (W) durante este número de segundos antes de o WashData entrar em 'À espera de iniciar'. Filtra picos breves de navegação em menus. Predefinição: 60 s.",
"delay_timeout_hours": "Tempo limite de segurança: se a máquina ainda estiver em “Aguardando para iniciar” após tantas horas, WashData será redefinido para Desligado. Padrão: 8h."
}
},
"external_triggers_section": {
"name": "Disparadores externos, porta e pausa",
"description": "Sensor externo opcional de fim de ciclo, sensor de porta para deteção de pausa/limpo e interruptor de corte de energia em pausa.",
"data": {
"external_end_trigger_enabled": "Activar gatilho externo de fim de ciclo",
"external_end_trigger": "Sensor externo de fim de ciclo",
"external_end_trigger_inverted": "Inverter lógica do gatilho (acionar quando DESLIGADO)",
"door_sensor_entity": "Sensor de porta",
"pause_cuts_power": "Corte a energia ao pausar",
"switch_entity": "Entidade de comutação (para pausar corte de energia)",
"notify_unload_delay_minutes": "Atraso na notificação de espera de lavanderia (min)"
},
"data_description": {
"external_end_trigger_enabled": "Activar monitorização de um sensor binário externo para acionar a conclusão do ciclo.",
"external_end_trigger": "Seleccione uma entidade de sensor binário. Quando este sensor accionar, o ciclo actual terminará com o estado 'concluído'.",
"external_end_trigger_inverted": "Por predefinição, o gatilho acciona quando o sensor é LIGADO. Assinale esta caixa para acionar quando o sensor for DESLIGADO.",
"door_sensor_entity": "Sensor binário opcional para a porta da máquina (ligado = aberto, desligado = fechado). Quando a porta abre durante um ciclo ativo, WashData confirmará o ciclo como pausado intencionalmente. Após o término do ciclo, se a porta ainda estiver fechada, o estado muda para 'Limpar' até que a porta seja aberta. Nota: fechar a porta NÃO retoma automaticamente um ciclo pausado a retomada deve ser acionada manualmente por meio do botão Retomar Ciclo ou serviço.",
"pause_cuts_power": "Ao pausar por meio do botão Pause Cycle ou serviço, desligue também a entidade de switch configurada. Só entra em vigor se uma entidade de switch estiver configurada para este dispositivo.",
"switch_entity": "A entidade switch a ser alternada ao pausar ou retomar. Obrigatório quando 'Cortar energia ao pausar' está ativado.",
"notify_unload_delay_minutes": "Envie uma notificação por meio do canal de notificação de término após o término do ciclo e a porta não tiver sido aberta por tantos minutos (requer Sensor de Porta). Defina como 0 para desativar. Padrão: 60 min."
}
},
"pump_section": {
"name": "Monitor da bomba",
"description": "Apenas para o tipo de dispositivo bomba. Dispara um evento se um ciclo da bomba ultrapassar esta duração.",
"data": {
"pump_stuck_duration": "Limite(s) de alerta de bomba presa (somente bomba)"
},
"data_description": {
"pump_stuck_duration": "Se um ciclo de bomba ainda estiver em execução após esses segundos, um evento ha_washdata_pump_stuck será acionado uma vez. Use isto para detectar um motor emperrado (o funcionamento típico da bomba do reservatório é inferior a 60 s). Padrão: 1800 s (30 min). Apenas tipo de dispositivo de bomba."
}
},
"device_link_section": {
"name": "Link do dispositivo",
"description": "Opcionalmente, vincule este dispositivo WashData a um dispositivo Home Assistant existente (por exemplo, o plugue inteligente ou o próprio aparelho). O dispositivo WashData é então mostrado como \"Conectado através\" desse dispositivo. Deixe em branco para manter o WashData como um dispositivo independente.",
"data": {
"linked_device": "Dispositivo vinculado"
},
"data_description": {
"linked_device": "Selecione o dispositivo ao qual conectar o WashData. Isso adiciona uma referência 'Conectado via' no registro do dispositivo; WashData mantém seu próprio cartão de dispositivo e entidades. Limpe a seleção para remover o link."
}
}
}
},
"diagnostics": {
"title": "Diagnóstico e manutenção",
"description": "Execute acções de manutenção como fundir ciclos fragmentados ou migrar dados guardados.\n\n**Uso de armazenamento**\n\n- Tamanho do ficheiro: {file_size_kb} KB\n- Ciclos: {cycle_count}\n- Perfis: {profile_count}\n- Traços de depuração: {debug_count}",
"menu_options": {
"reprocess_history": "Manutenção: reprocessar e optimizar dados",
"clear_debug_data": "Limpar dados de depuração (libertar espaço)",
"wipe_history": "Limpar TODOS os dados deste dispositivo (irreversível)",
"export_import": "Exportar/Importar JSON com definições (copiar/colar)",
"menu_back": "← Voltar"
}
},
"clear_debug_data": {
"title": "Limpar dados de depuração",
"description": "Tem a certeza de que quer eliminar todos os traços de depuração guardados? Isto libertará espaço mas removerá informação detalhada de classificação de ciclos anteriores."
},
"manage_cycles": {
"title": "Gerir ciclos",
"description": "Ciclos recentes:\n{recent_cycles}",
"menu_options": {
"auto_label_cycles": "Rotular automaticamente ciclos antigos",
"select_cycle_to_label": "Rotular ciclo específico",
"select_cycle_to_delete": "Eliminar ciclo",
"interactive_editor": "Editor interactivo de fusão/divisão",
"trim_cycle_select": "Cortar dados do ciclo",
"menu_back": "← Voltar"
}
},
"manage_cycles_empty": {
"title": "Gerir ciclos",
"description": "Ainda não foram registados ciclos.",
"menu_options": {
"auto_label_cycles": "Rotular automaticamente ciclos antigos",
"menu_back": "← Voltar"
}
},
"manage_profiles": {
"title": "Gerir perfis",
"description": "Resumo do perfil:\n{profile_summary}",
"menu_options": {
"create_profile": "Criar novo perfil",
"edit_profile": "Editar/renomear perfil",
"delete_profile_select": "Eliminar perfil",
"profile_stats": "Estatísticas do perfil",
"cleanup_profile": "Limpar histórico - gráfico e eliminação",
"assign_profile_phases_select": "Atribuir intervalos de fase",
"menu_back": "← Voltar"
}
},
"manage_profiles_empty": {
"title": "Gerir perfis",
"description": "Ainda não foram criados perfis.",
"menu_options": {
"create_profile": "Criar novo perfil",
"menu_back": "← Voltar"
}
},
"manage_phase_catalog": {
"title": "Gerir catálogo de fases",
"description": "Catálogo de fases (predefinições para este dispositivo + fases personalizadas):\n{phase_summary}",
"menu_options": {
"phase_catalog_create": "Criar nova fase",
"phase_catalog_edit_select": "Editar fase",
"phase_catalog_delete": "Eliminar fase",
"menu_back": "← Voltar"
}
},
"phase_catalog_create": {
"title": "Criar fase personalizada",
"description": "Crie um nome e descrição de fase personalizados e escolha a que tipo de dispositivo se aplica.",
"data": {
"target_device_type": "Tipo de dispositivo alvo",
"phase_name": "Nome da fase",
"phase_description": "Descrição da fase"
}
},
"phase_catalog_edit_select": {
"title": "Editar fase personalizada",
"description": "Seleccione uma fase personalizada para editar.",
"data": {
"phase_name": "Fase personalizada"
}
},
"phase_catalog_edit": {
"title": "Editar fase personalizada",
"description": "A editar a fase: {phase_name}",
"data": {
"phase_name": "Nome da fase",
"phase_description": "Descrição da fase"
}
},
"phase_catalog_delete": {
"title": "Eliminar fase personalizada",
"description": "Seleccione uma fase personalizada para eliminar. Todos os intervalos atribuídos que utilizam esta fase serão removidos.",
"data": {
"phase_name": "Fase personalizada"
}
},
"assign_profile_phases": {
"title": "Atribuir intervalos de fase",
"description": "Pré-visualização de fase para o perfil: **{profile_name}**\n\n{timeline_svg}\n\n**Intervalos actuais:**\n{current_ranges}\n\nUse as acções abaixo para adicionar, editar, eliminar ou guardar intervalos.",
"menu_options": {
"assign_profile_phases_add": "Adicionar intervalo de fase",
"assign_profile_phases_edit_select": "Editar intervalo de fase",
"assign_profile_phases_delete": "Eliminar intervalo de fase",
"phase_ranges_clear": "Limpar todos os intervalos",
"assign_profile_phases_auto_detect": "Detectar fases automaticamente",
"phase_ranges_save": "Guardar e regressar",
"menu_back": "← Voltar"
}
},
"assign_profile_phases_add": {
"title": "Adicionar intervalo de fase",
"description": "Adicione um intervalo de fase ao rascunho actual.",
"data": {
"phase_name": "Fase",
"start_min": "Minuto de início",
"end_min": "Minuto de fim"
}
},
"assign_profile_phases_edit_select": {
"title": "Editar intervalo de fase",
"description": "Seleccione um intervalo para editar.",
"data": {
"range_index": "Intervalo de fase"
}
},
"assign_profile_phases_edit": {
"title": "Editar intervalo de fase",
"description": "Actualize o intervalo de fase seleccionado.",
"data": {
"phase_name": "Fase",
"start_min": "Minuto de início",
"end_min": "Minuto de fim"
}
},
"assign_profile_phases_delete": {
"title": "Eliminar intervalo de fase",
"description": "Seleccione um intervalo para remover do rascunho.",
"data": {
"range_index": "Intervalo de fase"
}
},
"assign_profile_phases_auto_detect": {
"title": "Fases detectadas automaticamente",
"description": "Perfil: **{profile_name}**\n\n{timeline_svg}\n\n**{detected_count} fase(s) detectada(s) automaticamente.** Escolha uma acção abaixo.",
"data": {
"action": "Acção"
}
},
"assign_profile_phases_auto_detect_name": {
"title": "Nomear fases detectadas",
"description": "Perfil: **{profile_name}**\n\n**{detected_count} fase(s) detectada(s):**\n{ranges_summary}\n\nAtribua um nome a cada fase."
},
"assign_profile_phases_select": {
"title": "Atribuir intervalos de fase",
"description": "Seleccione um perfil para configurar intervalos de fase.",
"data": {
"profile": "Perfil"
}
},
"profile_stats": {
"title": "Estatísticas do perfil",
"description": "{stats_table}"
},
"create_profile": {
"title": "Criar novo perfil",
"description": "Crie um novo perfil manualmente ou a partir de um ciclo anterior.\n\nExemplos de nomes de perfil: 'Delicados', 'Intensivo', 'Lavagem rápida'",
"data": {
"profile_name": "Nome do perfil",
"reference_cycle": "Ciclo de referência (opcional)",
"manual_duration": "Duração manual (minutos)"
}
},
"edit_profile": {
"title": "Editar perfil",
"description": "Seleccione um perfil para renomear",
"data": {
"profile": "Perfil"
}
},
"rename_profile": {
"title": "Editar detalhes do perfil",
"description": "Perfil actual: {current_name}",
"data": {
"new_name": "Nome do perfil",
"manual_duration": "Duração manual (minutos)"
}
},
"delete_profile_select": {
"title": "Eliminar perfil",
"description": "Seleccione um perfil para eliminar",
"data": {
"profile": "Perfil"
}
},
"delete_profile_confirm": {
"title": "Confirmar eliminação do perfil",
"description": "⚠️ Isto eliminará permanentemente o perfil: {profile_name}",
"data": {
"unlabel_cycles": "Remover rótulo dos ciclos que utilizam este perfil"
}
},
"auto_label_cycles": {
"title": "Rotular automaticamente ciclos antigos",
"description": "Foram encontrados {total_count} ciclos no total. Perfis: {profiles}",
"data": {
"confidence_threshold": "Confiança mínima (0,50-0,95)"
}
},
"select_cycle_to_label": {
"title": "Seleccionar ciclo para rotular",
"description": "✓ = concluído, ⚠ = retomado, ✗ = interrompido",
"data": {
"cycle_id": "Ciclo"
}
},
"select_cycle_to_delete": {
"title": "Eliminar ciclo",
"description": "⚠️ Isto eliminará permanentemente o ciclo seleccionado",
"data": {
"cycle_id": "Ciclo a eliminar"
}
},
"label_cycle": {
"title": "Rotular ciclo",
"description": "{cycle_info}",
"data": {
"profile_name": "Perfil",
"new_profile_name": "Novo nome de perfil (se estiver a criar)"
}
},
"post_process": {
"title": "Processar histórico (fusão/divisão)",
"description": "Limpe o histórico do ciclo mesclando execuções fragmentadas e dividindo ciclos mesclados incorretamente dentro de uma janela de tempo. Insira o número de horas para olhar para trás (use 999999 para todas).",
"data": {
"time_range": "Janela de retrocesso (horas)",
"gap_seconds": "Intervalo de fusão/divisão (segundos)"
},
"data_description": {
"time_range": "Número de horas para verificar ciclos fragmentados para mesclar. Use 999999 para processar todos os dados históricos.",
"gap_seconds": "Limiar para decidir divisão vs. fusão. Lacunas MAIS CURTAS do que isto são fundidas. Lacunas MAIS LONGAS são divididas. Reduza para forçar uma divisão num ciclo fundido incorrectamente."
}
},
"cleanup_profile": {
"title": "Limpar histórico - seleccionar perfil",
"description": "Seleccione um perfil para visualizar. Isto gerará um gráfico com todos os ciclos anteriores deste perfil para ajudar a identificar valores atípicos.",
"data": {
"profile": "Perfil"
}
},
"cleanup_select": {
"title": "Limpar histórico - gráfico e eliminação",
"description": "![Gráfico]({graph_url})\n\n**A visualizar {profile_name}**\n\nO gráfico mostra ciclos individuais como linhas coloridas. Identifique valores atípicos (linhas distantes do grupo) e corresponda a sua cor na lista abaixo para os eliminar.\n\n**Seleccione ciclos para eliminar PERMANENTEMENTE:**",
"data": {
"cycles_to_delete": "Ciclos a eliminar (verificar cores correspondentes)"
}
},
"interactive_editor": {
"title": "Editor interactivo de fusão/divisão",
"description": "Seleccione uma acção manual a executar no histórico de ciclos.",
"menu_options": {
"editor_split": "Dividir um ciclo (encontrar lacunas)",
"editor_merge": "Fundir ciclos (juntar fragmentos)",
"editor_delete": "Eliminar ciclo(s)",
"menu_back": "← Voltar"
}
},
"editor_select": {
"title": "Seleccionar ciclos",
"description": "Seleccione o(s) ciclo(s) a processar.\n\n{info_text}",
"data": {
"selected_cycles": "Ciclos"
}
},
"editor_configure": {
"title": "Configurar e aplicar",
"description": "{preview_md}",
"data": {
"confirm_action": "Acção",
"merged_profile": "Perfil resultante",
"new_profile_name": "Novo nome de perfil",
"confirm_commit": "Sim, confirmo esta acção",
"segment_0_profile": "Perfil do segmento 1",
"segment_1_profile": "Perfil do segmento 2",
"segment_2_profile": "Perfil do segmento 3",
"segment_3_profile": "Perfil do segmento 4",
"segment_4_profile": "Perfil do segmento 5",
"segment_5_profile": "Perfil do segmento 6",
"segment_6_profile": "Perfil do segmento 7",
"segment_7_profile": "Perfil do segmento 8",
"segment_8_profile": "Perfil do segmento 9",
"segment_9_profile": "Perfil do segmento 10"
}
},
"editor_split_params": {
"title": "Configuração de divisão",
"description": "Ajuste a sensibilidade para dividir este ciclo. Qualquer lacuna inactiva superior a isto causará uma divisão.",
"data": {
"split_mode": "Método de divisão"
}
},
"editor_split_auto_params": {
"title": "Configuração de divisão automática",
"description": "Ajuste a sensibilidade para dividir este ciclo. Qualquer intervalo inativo mais longo do que este irá causar uma divisão.",
"data": {
"min_gap_seconds": "Limiar do intervalo de divisão (segundos)"
}
},
"editor_split_manual_params": {
"title": "Marcas temporais de divisão manual",
"description": "{preview_md}Janela do ciclo: **{cycle_start_wallclock} → {cycle_end_wallclock}** em {cycle_date}.\n\nIntroduza uma ou mais marcas temporais de divisão (`HH:MM` ou `HH:MM:SS`), uma por linha. O ciclo será cortado em cada marca temporal — N marcas temporais produzem N+1 segmentos.",
"data": {
"split_timestamps": "Carimbos temporais de divisão"
}
},
"reprocess_history": {
"title": "Manutenção: reprocessar e optimizar dados",
"description": "Efectua uma limpeza profunda dos dados históricos:\n1. Remove leituras de potência zero (silêncio).\n2. Corrige o tempo/duração do ciclo.\n3. Recalcula todos os modelos estatísticos (envelopes).\n\n**Execute isto para corrigir problemas de dados ou aplicar novos algoritmos.**"
},
"wipe_history": {
"title": "Limpar histórico (apenas para testes)",
"description": "⚠️ Isto eliminará permanentemente TODOS os ciclos e perfis guardados neste dispositivo. Isto não pode ser desfeito!"
},
"export_import": {
"title": "Exportar/Importar JSON",
"description": "Copie/cole ciclos, perfis E definições para este dispositivo. Exporte abaixo ou cole JSON para importar.",
"data": {
"mode": "Acção",
"json_payload": "JSON de configuração completa"
},
"data_description": {
"mode": "Escolha Exportar para copiar os dados e definições actuais, ou Importar para colar dados exportados de outro dispositivo WashData.",
"json_payload": "Para Exportar: copie este JSON (inclui ciclos, perfis e todas as definições afinadas). Para Importar: cole o JSON exportado do WashData."
}
},
"record_cycle": {
"title": "Gravar ciclo",
"description": "Grave manualmente um ciclo para criar um perfil limpo sem interferências.\n\nEstado: **{status}**\nDuração: {duration}s\nAmostras: {samples}",
"menu_options": {
"record_refresh": "Actualizar estado",
"record_stop": "Parar gravação (guardar e processar)",
"record_start": "Iniciar nova gravação",
"record_process": "Processar última gravação (cortar e guardar)",
"record_discard": "Descartar última gravação",
"menu_back": "← Voltar"
}
},
"record_process": {
"title": "Processar gravação",
"description": "![Gráfico]({graph_url})\n\n**O gráfico mostra a gravação bruta.** Azul = Manter, Vermelho = Corte proposto.\n*O gráfico é estático e não actualiza com alterações no formulário.*\n\nGravação parada. Os cortes são alinhados à taxa de amostragem detectada (~{sampling_rate}s).\n\nDuração bruta: {duration}s\nAmostras: {samples}",
"data": {
"head_trim": "Início do corte (segundos)",
"tail_trim": "Fim do corte (segundos)",
"save_mode": "Destino de gravação",
"profile_name": "Nome do perfil"
}
},
"learning_feedbacks": {
"title": "Feedbacks de aprendizagem",
"description": "Feedback pendente: {count}\n\n{pending_table}\n\nSeleccione um pedido de revisão de ciclo para processar.",
"menu_options": {
"learning_feedbacks_pick": "Rever um feedback pendente",
"learning_feedbacks_dismiss_all": "Ignorar todo o feedback pendente",
"menu_back": "← Voltar"
}
},
"learning_feedbacks_pick": {
"title": "Selecionar feedback para rever",
"description": "Selecione um pedido de revisão de ciclo para abrir.",
"data": {
"selected_feedback": "Selecionar ciclo para rever"
}
},
"learning_feedbacks_empty": {
"title": "Feedbacks de aprendizagem",
"description": "Não foram encontrados pedidos de feedback pendentes.",
"menu_options": {
"menu_back": "← Voltar"
}
},
"learning_feedbacks_dismiss_all": {
"title": "Dispensar todos os feedbacks pendentes",
"description": "Está prestes a dispensar **{count}** pedido(s) de feedback pendente(s). Os ciclos dispensados permanecem no seu histórico, mas não irão contribuir com um novo sinal de aprendizagem. Isto não pode ser desfeito.\n\n✅ Marque a caixa abaixo e clique em **Enviar** para dispensar tudo.\n❌ Deixe desmarcado e clique em **Enviar** para cancelar e voltar.",
"data": {
"confirm_dismiss_all": "Confirmar: ignorar todos os pedidos de feedback pendentes"
}
},
"resolve_feedback": {
"title": "Resolver feedback",
"description": "{comparison_img}{candidates_table}\n**Perfil detectado**: {detected_profile} ({confidence_pct}%)\n**Duração estimada**: {est_duration_min} min\n**Duração real**: {act_duration_min} min\n\n__Escolha uma acção abaixo:__",
"data": {
"action": "O que gostaria de fazer?",
"corrected_profile": "Programa correcto (se estiver a corrigir)",
"corrected_duration": "Duração correcta em segundos (se estiver a corrigir)"
}
},
"trim_cycle_select": {
"title": "Cortar ciclo - seleccionar ciclo",
"description": "Seleccione um ciclo para cortar. ✓ = concluído, ⚠ = retomado, ✗ = interrompido",
"data": {
"cycle_id": "Ciclo"
}
},
"trim_cycle": {
"title": "Cortar ciclo",
"description": "Janela actual: {trim_summary}\n\n{trim_svg}",
"data": {
"action": "Acção"
}
},
"trim_cycle_start": {
"title": "Definir início do corte",
"description": "Janela de ciclo: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nInício atual: **{current_wallclock}** (+{current_offset_min} min do início do ciclo)\n\nEscolha um novo horário de início usando o seletor de relógio abaixo.",
"data": {
"trim_start_time": "Novo horário de início",
"trim_start_min": "Novo início (minutos desde o início do ciclo)"
}
},
"trim_cycle_end": {
"title": "Definir fim do corte",
"description": "Janela de ciclo: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nFim atual: **{current_wallclock}** (+{current_offset_min} min do início do ciclo)\n\nEscolha um novo horário de término usando o seletor de relógio abaixo.",
"data": {
"trim_end_time": "Novo horário de término",
"trim_end_min": "Novo fim (minutos do início do ciclo)"
}
}
},
"error": {
"import_failed": "Importação falhou. Cole um JSON de exportação WashData válido.",
"select_exactly_one": "Seleccione exatamente um ciclo para esta ação.",
"select_at_least_one": "Seleccione pelo menos um ciclo para esta ação.",
"select_at_least_two": "Seleccione pelo menos dois ciclos para esta ação.",
"profile_exists": "Já existe um perfil com este nome",
"rename_failed": "Falha ao renomear o perfil. O perfil pode não existir ou o novo nome já está em uso.",
"assignment_failed": "Falha ao atribuir perfil ao ciclo",
"duplicate_phase": "Já existe uma fase com este nome.",
"phase_not_found": "A fase seleccionada não foi encontrada.",
"invalid_phase_name": "O nome da fase não pode estar vazio.",
"phase_name_too_long": "O nome da fase é demasiado longo.",
"invalid_phase_range": "O intervalo de fase é inválido. O fim deve ser maior que o início.",
"invalid_phase_timestamp": "O carimbo de data/hora é inválido. Use o formato AAAA-MM-DD HH:MM ou HH:MM.",
"overlapping_phase_ranges": "Os intervalos de fase sobrepõem-se. Ajuste os intervalos e tente novamente.",
"incomplete_phase_row": "Cada linha de fase deve incluir uma fase mais valores completos de início/fim para o modo seleccionado.",
"timestamp_mode_cycle_required": "Seleccione um ciclo de origem quando usar o modo de carimbo de data/hora.",
"no_phase_ranges": "Ainda não há intervalos de fase disponíveis para essa acção.",
"feedback_notification_title": "WashData: verificar ciclo ({device})",
"feedback_notification_message": "**Dispositivo**: {device}\n**Programa**: {program} ({confidence}% de confiança)\n**Hora**: {time}\n\nO WashData precisa da sua ajuda para verificar este ciclo detectado.\n\nVá a **Definições > Dispositivos e serviços > WashData > Configurar > Feedbacks de aprendizagem** para confirmar ou corrigir este resultado.",
"suggestions_ready_notification_title": "WashData: definições sugeridas prontas ({device})",
"suggestions_ready_notification_message": "O sensor **Definições sugeridas** reporta agora **{count}** recomendações accionáveis.\n\nPara as rever e aplicar: **Definições > Dispositivos e serviços > WashData > Configurar > Definições avançadas > Aplicar valores sugeridos**.\n\nAs sugestões são opcionais e mostradas para revisão antes de guardar.",
"trim_range_invalid": "O início deve ser antes do fim. Ajuste os seus pontos de corte.",
"trim_failed": "O corte falhou. O ciclo pode já não existir ou a janela está vazia.",
"invalid_split_timestamp": "O carimbo temporal é inválido ou está fora da janela do ciclo. Utilize HH:MM ou HH:MM:SS dentro da janela do ciclo.",
"no_split_segments_found": "Não foi possível produzir segmentos válidos a partir destes carimbos temporais. Certifique-se de que cada carimbo temporal está dentro da janela do ciclo e de que os segmentos têm pelo menos 1 minuto.",
"auto_tune_suggestion": "{device_type} {device_title} detectou ciclos fantasmas. Alteração sugerida de min_power: {current_min}W -> {new_min}W (não aplicada automaticamente).",
"auto_tune_title": "Ajuste automático WashData",
"auto_tune_fallback": "{device_type} {device_title} detectou ciclos fantasmas. Alteração sugerida de min_power: {current_min}W -> {new_min}W (não aplicada automaticamente)."
},
"abort": {
"no_cycles_found": "Nenhum ciclo encontrado",
"no_split_segments_found": "Não foram encontrados segmentos divisíveis no ciclo selecionado.",
"cycle_not_found": "Não foi possível carregar o ciclo selecionado.",
"no_power_data": "Não há dados de traço de potência disponíveis para o ciclo seleccionado.",
"no_profiles_found": "Nenhum perfil encontrado. Crie primeiro um perfil.",
"no_profiles_for_matching": "Nenhum perfil disponível para correspondência. Crie primeiro perfis.",
"no_unlabeled_cycles": "Todos os ciclos já estão rotulados",
"no_suggestions": "Ainda não há valores sugeridos disponíveis. Execute alguns ciclos e tente novamente.",
"no_predictions": "Sem previsões",
"no_custom_phases": "Nenhuma fase personalizada encontrada.",
"reprocess_success": "{count} ciclos reprocessados com sucesso.",
"debug_data_cleared": "Dados de depuração de {count} ciclos limpos com sucesso."
}
},
"selector": {
"notify_events_option": {
"options": {
"cycle_start": "Início do ciclo",
"cycle_finish": "Fim do ciclo",
"cycle_live": "Progresso em tempo real"
}
},
"common_text": {
"options": {
"unlabeled": "(Sem rótulo)",
"create_new_profile": "Criar novo perfil",
"remove_label": "Remover rótulo",
"no_reference_cycle": "(Sem ciclo de referência)",
"all_device_types": "Todos os tipos de dispositivo",
"current_suffix": "(actual)",
"editor_select_info": "Seleccione 1 ciclo para dividir, ou 2+ ciclos para fundir.",
"editor_select_info_split": "Seleccione 1 ciclo para dividir.",
"editor_select_info_merge": "Seleccione 2 ou mais ciclos para unir.",
"editor_select_info_delete": "Seleccione 1 ou mais ciclos para eliminar.",
"no_cycles_recorded": "Ainda não foram registados ciclos.",
"profile_summary_line": "- **{name}**: {count} ciclos, {avg}m méd.",
"no_profiles_created": "Ainda não foram criados perfis.",
"phase_preview": "Pré-visualização da fase",
"phase_preview_no_curve": "A curva média do perfil ainda não está disponível. Execute/rotule mais ciclos para este perfil.",
"average_power_curve": "Curva de potência média",
"unit_min": "min",
"profile_option_fmt": "{name} ({count} ciclos, ~{duration} min méd.)",
"profile_option_short_fmt": "{name} ({count} ciclos, ~{duration} min)",
"deleted_cycles_from_profile": "Eliminados {count} ciclos de {profile}.",
"not_enough_data_graph": "Dados insuficientes para gerar o gráfico.",
"no_profiles_found": "Nenhum perfil encontrado.",
"cycle_info_fmt": "Ciclo: {start}, {duration} min, Actual: {label}",
"top_candidates_header": "### Principais candidatos",
"tbl_profile": "Perfil",
"tbl_confidence": "Confiança",
"tbl_correlation": "Correlação",
"tbl_duration_match": "Correspondência de duração",
"detected_profile": "Perfil detectado",
"estimated_duration": "Duração estimada",
"actual_duration": "Duração real",
"choose_action": "__Escolha uma acção abaixo:__",
"tbl_count": "Contagem",
"tbl_avg": "Méd.",
"tbl_min": "Mín.",
"tbl_max": "Máx.",
"tbl_energy_avg": "Energia (méd.)",
"tbl_energy_total": "Energia (total)",
"tbl_consistency": "Consist.",
"tbl_last_run": "Última execução",
"graph_legend_title": "Legenda do gráfico",
"graph_legend_body": "A faixa azul representa a gama mínima e máxima de consumo de potência observada. A linha mostra a curva de potência média.",
"recording_preview": "Pré-visualização da gravação",
"trim_start": "Início do corte",
"trim_end": "Fim do corte",
"split_preview_title": "Pré-visualização da divisão",
"split_preview_found_fmt": "Foram encontrados {count} segmentos.",
"split_preview_confirm_fmt": "Clique em Confirmar para dividir este ciclo em {count} ciclos separados.",
"merge_preview_title": "Pré-visualização da fusão",
"merge_preview_joining_fmt": "A fundir {count} ciclos. As lacunas serão preenchidas com leituras de 0W.",
"editor_delete_preview_title": "Pré-visualização de eliminação",
"editor_delete_preview_intro": "Os ciclos selecionados serão eliminados permanentemente:",
"editor_delete_preview_confirm": "Clique em Confirmar para eliminar permanentemente estes registos de ciclos.",
"no_power_preview": "*Não há dados de potência disponíveis para pré-visualização.*",
"profile_comparison": "Comparação de perfis",
"actual_cycle_label": "Este ciclo (real)",
"storage_usage_header": "Uso de armazenamento",
"storage_file_size": "Tamanho do ficheiro",
"storage_cycles": "Ciclos",
"storage_profiles": "Perfis",
"storage_debug_traces": "Traços de depuração",
"overview_suffix": "Visão geral",
"phase_preview_for_profile": "Pré-visualização de fase para o perfil",
"current_ranges_header": "Intervalos actuais",
"assign_phases_help": "Use as acções abaixo para adicionar, editar, eliminar ou guardar intervalos.",
"profile_summary_header": "Resumo do perfil",
"recent_cycles_header": "Ciclos recentes",
"trim_cycle_preview_title": "Pré-visualização do corte do ciclo",
"trim_cycle_preview_no_data": "Não há dados de potência disponíveis para este ciclo.",
"trim_cycle_preview_kept_suffix": "mantido",
"table_program": "Programa",
"table_when": "Quando",
"table_length": "Duração",
"table_match": "Correspondência",
"table_profile": "Perfil",
"table_cycles": "Ciclos",
"table_avg_length": "Duração média",
"table_last_run": "Última execução",
"table_avg_energy": "Energia média",
"table_detected_program": "Programa detetado",
"table_confidence": "Confiança",
"table_reported": "Reportado",
"phase_builtin_suffix": "(Embutido)",
"phase_none_available": "Não há fases disponíveis.",
"settings_deprecation_warning": "⚠️ **Tipo de dispositivo obsoleto:** {device_type} está programado para remoção em uma versão futura. O pipeline correspondente do WashData não produz resultados confiáveis para esta classe de dispositivo. Sua integração continua funcionando durante o período de descontinuação; para silenciar este aviso, mude **Tipo de dispositivo** abaixo para um dos tipos suportados (Máquina de lavar, Secadora, Combinação de lavadora e secadora, Máquina de lavar louça, Fritadeira de ar, Máquina de fazer pão ou Bomba) ou para **Outro (Avançado)** se o seu aparelho não corresponder a nenhum dos tipos suportados. **Outros (Avançado)** fornece padrões intencionalmente genéricos que não são ajustados para nenhum dispositivo específico, portanto, você mesmo precisará configurar limites, tempos limite e parâmetros correspondentes; todas as suas configurações existentes são preservadas quando você muda.",
"phase_other_device_types": "Outros tipos de dispositivos:"
}
},
"interactive_editor_action": {
"options": {
"split": "Dividir um ciclo (encontrar lacunas)",
"merge": "Fundir ciclos (juntar fragmentos)",
"delete": "Eliminar ciclo(s)"
}
},
"split_mode": {
"options": {
"auto": "Detetar automaticamente intervalos inativos",
"manual": "Carimbos temporais manuais"
}
},
"diagnostics_action": {
"options": {
"reprocess_history": "Manutenção: reprocessar e optimizar dados",
"clear_debug_data": "Limpar dados de depuração (libertar espaço)",
"wipe_history": "Limpar TODOS os dados deste dispositivo (irreversível)",
"export_import": "Exportar/Importar JSON com definições (copiar/colar)"
}
},
"export_import_mode": {
"options": {
"export": "Exportar todos os dados",
"import": "Importar/fundir dados"
}
},
"manage_cycles_action": {
"options": {
"auto_label_cycles": "Rotular automaticamente ciclos antigos",
"select_cycle_to_label": "Rotular ciclo específico",
"select_cycle_to_delete": "Eliminar ciclo",
"interactive_editor": "Editor interactivo de fusão/divisão",
"trim_cycle": "Cortar dados do ciclo"
}
},
"manage_profiles_action": {
"options": {
"create_profile": "Criar novo perfil",
"edit_profile": "Editar/renomear perfil",
"delete_profile": "Eliminar perfil",
"profile_stats": "Estatísticas do perfil",
"cleanup_profile": "Limpar histórico - gráfico e eliminação",
"assign_phases": "Atribuir intervalos de fase"
}
},
"manage_phase_catalog_action": {
"options": {
"create_custom_phase": "Criar nova fase",
"edit_custom_phase": "Editar fase",
"delete_custom_phase": "Eliminar fase"
}
},
"assign_profile_phases_action": {
"options": {
"add_range": "Adicionar intervalo de fase",
"edit_range": "Editar intervalo de fase",
"delete_range": "Eliminar intervalo de fase",
"clear_ranges": "Limpar todos os intervalos",
"auto_detect_ranges": "Detectar fases automaticamente",
"save_ranges": "Guardar e regressar"
}
},
"record_cycle_action": {
"options": {
"refresh_status": "Actualizar estado",
"stop_recording": "Parar gravação (guardar e processar)",
"start_recording": "Iniciar nova gravação",
"process_recording": "Processar última gravação (cortar e guardar)",
"discard_recording": "Descartar última gravação"
}
},
"record_process_save_mode": {
"options": {
"new_profile": "Criar novo perfil",
"existing_profile": "Adicionar a perfil existente",
"discard": "Descartar gravação"
}
},
"resolve_feedback_action": {
"options": {
"confirm": "Confirmar - detecção correcta",
"correct": "Corrigir - escolher programa/duração",
"ignore": "Ignorar - falso positivo/ciclo ruidoso",
"delete": "Eliminar - remover do histórico"
}
},
"assign_profile_phases_auto_detect_action": {
"options": {
"name_phases": "Nomear e aplicar fases",
"cancel": "Voltar sem alterações"
}
},
"trim_cycle_action": {
"options": {
"set_start": "Definir ponto de início",
"set_end": "Definir ponto de fim",
"reset": "Repor para duração total",
"apply": "Aplicar corte",
"cancel": "Cancelar"
}
},
"device_type": {
"options": {
"washing_machine": "Máquina de lavar",
"dryer": "Secador",
"washer_dryer": "Combinação Lavadora e Secadora",
"dishwasher": "Máquina de lavar louça",
"coffee_machine": "Máquina de café (obsoleta)",
"ev": "Veículo elétrico (obsoleto)",
"air_fryer": "Fritadeira de ar",
"heat_pump": "Bomba de calor (obsoleta)",
"bread_maker": "Máquina de fazer pão",
"pump": "Bomba / Bomba de depósito",
"oven": "Forno (obsoleto)",
"other": "Outro (avançado)"
}
}
},
"services": {
"label_cycle": {
"name": "Rotular ciclo",
"description": "Atribua um perfil existente a um ciclo anterior ou remova o rótulo.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData a rotular."
},
"cycle_id": {
"name": "ID do ciclo",
"description": "O ID do ciclo a rotular."
},
"profile_name": {
"name": "Nome do perfil",
"description": "O nome de um perfil existente (crie perfis no menu Gerir perfis). Deixe em branco para remover o rótulo."
}
}
},
"create_profile": {
"name": "Criar perfil",
"description": "Crie um novo perfil (autónomo ou baseado num ciclo de referência).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData."
},
"profile_name": {
"name": "Nome do perfil",
"description": "Nome do novo perfil (ex.: 'Intensivo', 'Delicados')."
},
"reference_cycle_id": {
"name": "ID do ciclo de referência",
"description": "ID de ciclo opcional para basear este perfil."
}
}
},
"delete_profile": {
"name": "Eliminar perfil",
"description": "Elimine um perfil e opcionalmente remova o rótulo dos ciclos que o utilizam.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData."
},
"profile_name": {
"name": "Nome do perfil",
"description": "O perfil a eliminar."
},
"unlabel_cycles": {
"name": "Remover rótulo dos ciclos",
"description": "Remova o rótulo do perfil dos ciclos que utilizam este perfil."
}
}
},
"auto_label_cycles": {
"name": "Rotular automaticamente ciclos antigos",
"description": "Rotule retroactivamente ciclos sem rótulo usando correspondência de perfil.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData."
},
"confidence_threshold": {
"name": "Limiar de confiança",
"description": "Confiança mínima de correspondência (0,50-0,95) para aplicar rótulos."
}
}
},
"export_config": {
"name": "Exportar configuração",
"description": "Exporte os perfis, ciclos e definições deste dispositivo para um ficheiro JSON (por dispositivo).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData a exportar."
},
"path": {
"name": "Caminho",
"description": "Caminho de ficheiro absoluto opcional para escrever (predefinição: /config/ha_washdata_export_{entry}.json)."
}
}
},
"import_config": {
"name": "Importar configuração",
"description": "Importe perfis, ciclos e definições para este dispositivo a partir de um ficheiro JSON de exportação (as definições podem ser substituídas).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData para onde importar."
},
"path": {
"name": "Caminho",
"description": "Caminho absoluto para o ficheiro JSON de exportação a importar."
}
}
},
"submit_cycle_feedback": {
"name": "Enviar feedback do ciclo",
"description": "Confirme ou corrija um programa detectado automaticamente após um ciclo concluído. Forneça `entry_id` (avançado) ou `device_id` (recomendado).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData (recomendado em vez de entry_id)."
},
"entry_id": {
"name": "ID de entrada",
"description": "O ID de entrada de configuração do dispositivo (alternativa ao device_id)."
},
"cycle_id": {
"name": "ID do ciclo",
"description": "O ID do ciclo mostrado na notificação/registos de feedback."
},
"user_confirmed": {
"name": "Confirmar programa detectado",
"description": "Defina como verdadeiro se o programa detectado estiver correcto."
},
"corrected_profile": {
"name": "Perfil corrigido",
"description": "Se não confirmar, forneça o nome correcto do perfil/programa."
},
"corrected_duration": {
"name": "Duração corrigida (segundos)",
"description": "Duração corrigida opcional em segundos."
},
"notes": {
"name": "Notas",
"description": "Notas opcionais sobre este ciclo."
}
}
},
"record_start": {
"name": "Gravar início do ciclo",
"description": "Comece a gravar manualmente um ciclo limpo (ignora toda a lógica de correspondência).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData a gravar."
}
}
},
"record_stop": {
"name": "Gravar paragem do ciclo",
"description": "Parar a gravação manual.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData para parar a gravação."
}
}
},
"trim_cycle": {
"name": "Cortar ciclo",
"description": "Corte os dados de potência de um ciclo anterior para uma janela temporal específica.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData."
},
"cycle_id": {
"name": "ID do ciclo",
"description": "O ID do ciclo a cortar."
},
"trim_start_s": {
"name": "Início do corte (segundos)",
"description": "Manter dados a partir deste deslocamento em segundos. Predefinição: 0."
},
"trim_end_s": {
"name": "Fim do corte (segundos)",
"description": "Manter dados até este deslocamento em segundos. Predefinição = duração total."
}
}
},
"pause_cycle": {
"name": "Ciclo de pausa",
"description": "Pause o ciclo ativo para um dispositivo WashData.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData a ser pausado."
}
}
},
"resume_cycle": {
"name": "Retomar ciclo",
"description": "Retome um ciclo pausado para um dispositivo WashData.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData a ser retomado."
}
}
}
},
"entity": {
"binary_sensor": {
"running": {
"name": "A funcionar"
},
"match_ambiguity": {
"name": "Ambiguidade de correspondência"
}
},
"sensor": {
"washer_state": {
"name": "Estado",
"state": {
"off": "Desligado",
"idle": "Inactivo",
"starting": "A iniciar",
"running": "A funcionar",
"paused": "Em pausa",
"user_paused": "Em pausa pelo utilizador",
"ending": "A terminar",
"finished": "Concluído",
"anti_wrinkle": "Anti-vincos",
"delay_wait": "Esperando para começar",
"interrupted": "Interrompido",
"force_stopped": "Parado forçosamente",
"rinse": "Enxaguar",
"unknown": "Desconhecido",
"clean": "Limpar"
}
},
"washer_program": {
"name": "Programa"
},
"time_remaining": {
"name": "Tempo restante"
},
"total_duration": {
"name": "Duração total"
},
"cycle_progress": {
"name": "Progresso"
},
"current_power": {
"name": "Potência actual"
},
"elapsed_time": {
"name": "Tempo decorrido"
},
"debug_info": {
"name": "Informação de depuração"
},
"match_confidence": {
"name": "Confiança na correspondência"
},
"top_candidates": {
"name": "Principais candidatos",
"state": {
"none": "Nenhum"
}
},
"current_phase": {
"name": "Fase actual"
},
"wash_phase": {
"name": "Fase"
},
"profile_cycle_count": {
"name": "Perfil {profile_name} - contagem",
"unit_of_measurement": "ciclos"
},
"suggestions": {
"name": "Definições sugeridas disponíveis"
},
"pump_runs_today": {
"name": "Funcionamento da bomba (últimas 24 horas)"
},
"cycle_count": {
"name": "Contagem de ciclos"
}
},
"select": {
"program_select": {
"name": "Programa do ciclo",
"state": {
"auto_detect": "Detecção automática"
}
}
},
"button": {
"force_end_cycle": {
"name": "Forçar fim do ciclo"
},
"pause_cycle": {
"name": "Ciclo de pausa"
},
"resume_cycle": {
"name": "Retomar ciclo"
}
}
},
"exceptions": {
"device_id_required": {
"message": "É necessário um device_id válido."
},
"cycle_id_required": {
"message": "É necessário um cycle_id válido."
},
"profile_name_required": {
"message": "É necessário um profile_name válido."
},
"device_not_found": {
"message": "Dispositivo não encontrado."
},
"no_config_entry": {
"message": "Nenhuma entrada de configuração encontrada para o dispositivo."
},
"integration_not_loaded": {
"message": "Integração não carregada para este dispositivo."
},
"cycle_not_found_or_no_power": {
"message": "Ciclo não encontrado ou não possui dados de potência."
},
"trim_failed_empty_window": {
"message": "Corte falhou - ciclo não encontrado, sem dados de potência ou a janela resultante está vazia."
},
"trim_invalid_range": {
"message": "trim_end_s deve ser maior que trim_start_s."
}
}
}