Files
Home-Assistant/custom_components/ha_washdata/translations/pt-BR.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 sua máquina de lavar ou outro eletrodoméstico.\n\nSensor de potência é necessário.\n\n**Em seguida, você será perguntado se deseja criar seu primeiro perfil.**",
"data": {
"name": "Nome do dispositivo",
"device_type": "Tipo de dispositivo",
"power_sensor": "Sensor de potência",
"min_power": "Limite Mínimo de Potência (W)"
},
"data_description": {
"name": "Um nome amigável para este dispositivo (por exemplo, 'Máquina de lavar', 'Lava-louças').",
"device_type": "Que tipo de aparelho é esse? Ajuda a personalizar a detecção e a rotulagem.",
"power_sensor": "A entidade do sensor que informa o consumo de energia em tempo real (em watts) do seu plugue inteligente.",
"min_power": "As leituras de potência acima deste limite (em watts) indicam que o aparelho está funcionando. Comece com 2W para a maioria dos dispositivos."
}
},
"first_profile": {
"title": "Crie o primeiro perfil",
"description": "Um **Ciclo** é uma operação completa do seu eletrodoméstico (por exemplo, uma carga de roupa). Um **Perfil** agrupa esses ciclos por tipo (por exemplo, 'Algodão', 'Lavagem Rápida'). A criação de um perfil agora ajuda a integração a estimar a duração imediatamente.\n\nVocê pode selecionar manualmente esse perfil nos controles do dispositivo se ele não for detectado automaticamente.\n\n**Deixe o 'Nome do perfil' vazio para pular esta etapa.**",
"data": {
"profile_name": "Nome do perfil (opcional)",
"manual_duration": "Duração estimada (minutos)"
}
}
},
"error": {
"cannot_connect": "Falha ao conectar",
"invalid_auth": "Autenticação inválida",
"unknown": "Erro inesperado"
},
"abort": {
"already_configured": "O dispositivo já está configurado"
}
},
"options": {
"step": {
"init": {
"menu_options": {
"learning_feedbacks": "Revisar feedbacks de aprendizagem",
"settings": "Configurações",
"notifications": "Notificações",
"manage_cycles": "Gerenciar ciclos",
"manage_profiles": "Gerenciar perfis",
"manage_phase_catalog": "Gerenciar catálogo de fases",
"record_cycle": "Gravar ciclo (manual)",
"diagnostics": "Diagnóstico e manutenção"
}
},
"apply_suggestions": {
"title": "Copiar valores sugeridos",
"description": "Isso copiará os valores sugeridos atuais para as suas configurações salvas. Esta é uma ação única e não habilita substituições automáticas.\n\nValores sugeridos para copiar:\n{suggested}",
"data": {
"confirm": "Confirmar ação de cópia"
}
},
"apply_suggestions_confirm": {
"title": "Revisar 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": "Configurações",
"description": "{deprecation_warning}Ajuste limites de detecção, aprendizado e comportamento avançado. Os padrões funcionam bem para a maioria das configurações.\n\nConfigurações sugeridas disponíveis: {suggestions_count}.\nSe estiver acima de 0, abra as Configurações avançadas e use Aplicar valores sugeridos para revisar as recomendações.",
"data": {
"apply_suggestions": "Aplicar valores sugeridos",
"device_type": "Tipo de dispositivo",
"power_sensor": "Entidade sensor de potência",
"min_power": "Potência mínima (W)",
"off_delay": "Atraso de fim de ciclo (s)",
"notify_actions": "Ações de notificação",
"notify_people": "Atrasar entrega até essas pessoas estarem em casa",
"notify_only_when_home": "Atrasar notificações até a pessoa selecionada estar em casa",
"notify_fire_events": "Acionar eventos de automaçã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 antecipada (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 configurações avançadas (próxima etapa)"
},
"data_description": {
"apply_suggestions": "Marque esta caixa para copiar os valores sugeridos pelo algoritmo de aprendizagem no formulário. Revise antes de salvar.\n\nSugerido (pelo aprendizado):\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": "Selecione o tipo de aparelho (Máquina de lavar, Secadora, Lava-louças, Cafeteira, VE). Esta informação é armazenada em cada ciclo para melhor organização.",
"power_sensor": "A entidade do sensor que informa a potência em tempo real (em watts). Você pode alterar isso a qualquer momento sem perder dados históricos - útil se você trocar o plugue inteligente.",
"min_power": "As leituras de potência acima deste limite (em watts) indicam que o aparelho está funcionando. Comece com 2W para a maioria dos dispositivos.",
"off_delay": "Em segundos, a potência suavizada deve permanecer abaixo do limite de parada para marcar a conclusão. Padrão: 120s.",
"notify_actions": "Sequência de ações opcional do Home Assistant para notificações (scripts, notify, TTS, etc.). Se definido, as ações serão executadas antes do serviço de notificação de fallback.",
"notify_people": "Entidades de pessoas usadas para controle de presença. Quando ativado, a entrega da notificação é adiada até que pelo menos uma pessoa selecionada esteja em casa.",
"notify_only_when_home": "Se ativado, atrasa as notificações até que pelo menos uma pessoa selecionada esteja em casa.",
"notify_fire_events": "Se habilitado, dispara eventos do Home Assistant para início e fim de ciclo (ha_washdata_cycle_started e ha_washdata_cycle_ended) para acionar automaçõ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 desativar. Padrão: 0.",
"notify_title": "Título personalizado para notificações. Suporta o marcador {device}.",
"notify_icon": "Ícone para usar nas notificações (ex.: mdi:washing-machine). Deixe em branco para enviar sem ícone.",
"notify_start_message": "Mensagem enviada quando um ciclo é iniciado. Suporta o marcador {device}.",
"notify_finish_message": "Mensagem enviada quando um ciclo termina. Suporta os marcadores {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 atualizações de progresso ao vivo no celular.",
"data": {
"notify_actions": "Ações de notificação",
"notify_people": "Atrasar entrega até essas pessoas estarem em casa",
"notify_only_when_home": "Atrasar notificações até a pessoa selecionada estar em casa",
"notify_fire_events": "Acionar eventos de automaçã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 antecipada (minutos antes do fim)",
"notify_live_interval_seconds": "Intervalo de atualização ao vivo (segundos)",
"notify_live_overrun_percent": "Margem de sobrecarga nas atualizações ao vivo (%)",
"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 salvar",
"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": "Marque isto e clique em Enviar para descartar quaisquer alterações acima e voltar ao menu principal.",
"notify_actions": "Sequência de ações opcional do Home Assistant para notificações (scripts, notify, TTS, etc.). Se definido, as ações serão executadas antes do serviço de notificação de fallback.",
"notify_people": "Entidades de pessoas usadas para controle de presença. Quando ativado, a entrega da notificação é adiada até que pelo menos uma pessoa selecionada esteja em casa.",
"notify_only_when_home": "Se ativado, atrasa as notificações até que pelo menos uma pessoa selecionada esteja em casa.",
"notify_fire_events": "Se habilitado, dispara eventos do Home Assistant para início e fim de ciclo (ha_washdata_cycle_started e ha_washdata_cycle_ended) para acionar automaçõ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 desativar. Padrão: 0.",
"notify_live_interval_seconds": "Com que frequência as atualizações de progresso são enviadas durante o ciclo. Valores mais baixos são mais responsivos, mas consomem mais notificações. Um mínimo de 30 segundos é aplicado - valores abaixo de 30s são arredondados automaticamente para 30s.",
"notify_live_overrun_percent": "Margem de segurança acima da contagem estimada de atualizações para ciclos longos (por exemplo, 20% permite 1,2x as atualizaçõ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 {device}.",
"notify_icon": "Ícone para usar nas notificações (ex.: mdi:washing-machine). Deixe em branco para enviar sem ícone.",
"notify_start_message": "Mensagem enviada quando um ciclo é iniciado. Suporta o marcador {device}.",
"notify_finish_message": "Mensagem enviada quando um ciclo termina. Suporta os marcadores {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": "Configurações avançadas",
"description": "Ajuste limites de detecção, aprendizado e comportamento avançado. Os padrões funcionam bem para a maioria das configurações.",
"sections": {
"suggestions_section": {
"name": "Configurações sugeridas",
"description": "{suggestions_count} sugestões aprendidas disponíveis. Marque Aplicar valores sugeridos para revisar as alterações propostas antes de salvar.",
"data": {
"apply_suggestions": "Aplicar valores sugeridos"
},
"data_description": {
"apply_suggestions": "Marque esta caixa para abrir uma etapa de revisão dos valores sugeridos pelo algoritmo de aprendizagem. Nada é salvo automaticamente.\n\nSugerido (pelo aprendizado):\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": "Detecção e limites de potência",
"description": "Quando o aparelho é considerado LIGADO ou DESLIGADO, limites de energia e temporização das transições de estado.",
"data": {
"start_duration_threshold": "Duração do debounce de início (s)",
"start_energy_threshold": "Porta de energia de início (Wh)",
"completion_min_seconds": "Tempo mínimo de execução para conclusão (segundos)",
"start_threshold_w": "Limite de início (W)",
"stop_threshold_w": "Limite de parada (W)",
"end_energy_threshold": "Porta de energia de fim (Wh)",
"running_dead_zone": "Zona morta de início (segundos)",
"end_repeat_count": "Contagem de repetições para fim",
"min_off_gap": "Intervalo mínimo entre ciclos (s)",
"sampling_interval": "Intervalo de amostragem (s)"
},
"data_description": {
"start_duration_threshold": "Ignore breves picos de energia menores que esta duração (segundos). Filtra picos de inicialização (ex.: 60W por 2s) antes do início real do ciclo. Padrã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. Padrão: 0,005 Wh.",
"completion_min_seconds": "Ciclos mais curtos que isso serão marcados como 'interrompidos', mesmo que terminem naturalmente. Padrão: 600s.",
"start_threshold_w": "A potência deve subir ACIMA deste limite para INICIAR um ciclo. Defina acima da sua potência em espera. Padrão: min_power + 1 W.",
"stop_threshold_w": "A potência deve cair ABAIXO deste limite para FINALIZAR um ciclo. Defina um pouco acima de zero para evitar falsos fins por ruído. Padrão: 0,6 × min_power.",
"end_energy_threshold": "O ciclo termina somente se a energia na última janela de atraso de fim estiver abaixo deste valor (Wh). Evita fins falsos se a potência flutuar perto de zero. Padrão: 0,05 Wh.",
"running_dead_zone": "Após o início do ciclo, ignore quedas de potência durante esses segundos para evitar detecção falsa de fim durante a fase inicial. Defina como 0 para desativar. Padrão: 0s.",
"end_repeat_count": "Número de vezes que a condição de fim (potência abaixo do limite durante off_delay) deve ser atendida consecutivamente antes de encerrar o ciclo. Valores mais altos evitam fins falsos durante pausas. Padrão: 1.",
"min_off_gap": "Se um ciclo começar poucos segundos após o término do anterior, eles serão MESCLADOS em um ú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 aprendizado",
"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": "Proporção mínima de duração para correspondência (0,1-1,0)",
"profile_match_interval": "Intervalo de correspondência de perfil (segundos)",
"profile_match_threshold": "Limite de correspondência de perfil",
"profile_unmatch_threshold": "Limite de não-correspondência de perfil",
"auto_label_confidence": "Confiança para rotulagem automática (0-1)",
"learning_confidence": "Confiança para solicitação 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 na correspondência de perfil (0-0,5)"
},
"data_description": {
"profile_match_min_duration_ratio": "Proporção mínima de duração para correspondência de perfil. O ciclo em execução deve ter pelo menos esta fração da duração do perfil para corresponder. Menor = correspondência mais cedo. Padrã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. Padrão: 300s (5 minutos).",
"profile_match_threshold": "Pontuação mínima de similaridade DTW (0,01,0) necessária para considerar um perfil como correspondente. Maior = correspondência mais rigorosa, menos falsos positivos. Padrão: 0,4.",
"profile_unmatch_threshold": "Pontuação de similaridade DTW (0,01,0) abaixo da qual um perfil anteriormente correspondido é rejeitado. Deve ser menor que o limite de correspondência para evitar oscilações. Padrão: 0,35.",
"auto_label_confidence": "Rotule automaticamente os ciclos com essa confiança ou acima dela na conclusão (0,01,0).",
"learning_confidence": "Confiança mínima para solicitar verificação do usuário via 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 equivale a 050%).",
"smoothing_window": "Número de leituras de potência recentes usadas para suavização por média móvel.",
"profile_duration_tolerance": "Tolerância usada pela correspondência de perfil para variação na duração total (0,00,5). Comportamento padrão: ±25%."
}
},
"timing_section": {
"name": "Temporização, manutenção e depuração",
"description": "Watchdog, redefiniçã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": "Timeout sem atualização (s)",
"progress_reset_delay": "Atraso para redefinição de progresso (segundos)",
"auto_maintenance": "Habilitar manutenção automática",
"expose_debug_entities": "Expor entidades de depuração",
"save_debug_traces": "Salvar rastreamentos de depuração"
},
"data_description": {
"watchdog_interval": "Segundos entre verificações do watchdog durante a execução. Padrão: 5s. AVISO: Certifique-se de que seja MAIOR que o intervalo de atualização do seu sensor para evitar paradas falsas (ex.: se o sensor atualiza a cada 60s, use 65s+).",
"no_update_active_timeout": "Para sensores que publicam apenas em mudança: force o encerramento de um ciclo ATIVO somente se nenhuma atualização chegar durante esse número de segundos. A conclusão com baixo consumo de energia ainda usa o atraso de desligamento.",
"progress_reset_delay": "Após a conclusão de um ciclo (100%), aguarde alguns segundos de inatividade antes de redefinir o progresso para 0%. Padrão: 300s.",
"auto_maintenance": "Habilita a manutenção automática (reparar amostras, mesclar fragmentos).",
"expose_debug_entities": "Mostra sensores avançados (Confiança, Fase, Ambiguidade) para depuração.",
"save_debug_traces": "Armazena dados detalhados de classificação e rastreamento de energia no histórico (aumenta o uso de armazenamento)."
}
},
"anti_wrinkle_section": {
"name": "Proteção anti-rugas (secadoras)",
"description": "Ignora rotações do tambor após o ciclo para evitar ciclos fantasma. Apenas secadora / lava e seca.",
"data": {
"anti_wrinkle_enabled": "Escudo anti-amasso (somente secadora)",
"anti_wrinkle_max_power": "Potência máxima do anti-amasso (W)",
"anti_wrinkle_max_duration": "Duração máxima do anti-amasso (s)",
"anti_wrinkle_exit_power": "Potência de saída do anti-amasso (W)"
},
"data_description": {
"anti_wrinkle_enabled": "Ignora rotações curtas de baixa potência do tambor após o término de um ciclo para evitar ciclos fantasmas (somente secadora/lava-e-seca).",
"anti_wrinkle_max_power": "Rajadas com esta potência ou abaixo são tratadas como rotações anti-amasso em vez de novos ciclos. Aplica-se apenas quando o Escudo Anti-amasso está ativado.",
"anti_wrinkle_max_duration": "Duração máxima da rajada para tratar como rotação anti-amasso. Aplica-se apenas quando o Escudo Anti-amasso está ativado.",
"anti_wrinkle_exit_power": "Se a potência cair abaixo deste nível, sai do modo anti-amasso imediatamente (desligamento real). Aplica-se apenas quando o Escudo Anti-amasso está ativado."
}
},
"delay_start_section": {
"name": "Detecção de início adiado",
"description": "Trata o modo de espera sustentado de baixa potência como 'Aguardando para iniciar' até o ciclo realmente começar.",
"data": {
"delay_start_detect_enabled": "Ativar detecção de início atrasado",
"delay_confirm_seconds": "Início adiado: 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 Limite de parada (W) e Limite de início (W) por esse número de segundos antes de o WashData entrar em 'Aguardando para iniciar'. Filtra picos breves da navegação pelo menu. Padrã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": "Gatilhos externos, porta e pausa",
"description": "Sensor externo opcional de fim de ciclo, sensor de porta para detectar pausa/limpo e interruptor de corte de energia ao pausar.",
"data": {
"external_end_trigger_enabled": "Habilitar 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 ao desligar)",
"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": "Habilita o monitoramento de um sensor binário externo para acionar a conclusão do ciclo.",
"external_end_trigger": "Selecione uma entidade de sensor binário. Quando este sensor for acionado, o ciclo atual terminará com o status 'concluído'.",
"external_end_trigger_inverted": "Por padrão, o gatilho é acionado quando o sensor é LIGADO. Marque 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 de bomba",
"description": "Somente para o tipo de dispositivo bomba. Dispara um evento se um ciclo da bomba ultrapassar essa 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 ações de manutenção, como mesclar ciclos fragmentados ou migrar dados armazenados.\n\n**Uso de armazenamento**\n\n- Tamanho do arquivo: {file_size_kb} KB\n- Ciclos: {cycle_count}\n- Perfis: {profile_count}\n- Rastreamentos de depuração: {debug_count}",
"menu_options": {
"reprocess_history": "Manutenção: reprocessar e otimizar dados",
"clear_debug_data": "Limpar dados de depuração (liberar espaço)",
"wipe_history": "Limpar TODOS os dados deste dispositivo (irreversível)",
"export_import": "Exportar/Importar JSON com configurações (copiar/colar)",
"menu_back": "← Voltar"
}
},
"clear_debug_data": {
"title": "Limpar dados de depuração",
"description": "Tem certeza de que deseja excluir todos os rastreamentos de depuração armazenados? Isso liberará espaço, mas removerá informações detalhadas de classificação de ciclos anteriores."
},
"manage_cycles": {
"title": "Gerenciar ciclos",
"description": "Ciclos recentes:\n{recent_cycles}",
"menu_options": {
"auto_label_cycles": "Rotular automaticamente ciclos anteriores",
"select_cycle_to_label": "Rotular ciclo específico",
"select_cycle_to_delete": "Excluir ciclo",
"interactive_editor": "Editor interativo de mesclar/dividir",
"trim_cycle_select": "Recortar dados do ciclo",
"menu_back": "← Voltar"
}
},
"manage_cycles_empty": {
"title": "Gerenciar ciclos",
"description": "Nenhum ciclo registrado ainda.",
"menu_options": {
"auto_label_cycles": "Rotular automaticamente ciclos anteriores",
"menu_back": "← Voltar"
}
},
"manage_profiles": {
"title": "Gerenciar perfis",
"description": "Resumo dos perfis:\n{profile_summary}",
"menu_options": {
"create_profile": "Criar novo perfil",
"edit_profile": "Editar/renomear perfil",
"delete_profile_select": "Excluir perfil",
"profile_stats": "Estatísticas de perfil",
"cleanup_profile": "Limpar histórico - gráfico e exclusão",
"assign_profile_phases_select": "Atribuir intervalos de fase",
"menu_back": "← Voltar"
}
},
"manage_profiles_empty": {
"title": "Gerenciar perfis",
"description": "Nenhum perfil criado ainda.",
"menu_options": {
"create_profile": "Criar novo perfil",
"menu_back": "← Voltar"
}
},
"manage_phase_catalog": {
"title": "Gerenciar catálogo de fases",
"description": "Catálogo de fases (padrõ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": "Excluir fase",
"menu_back": "← Voltar"
}
},
"phase_catalog_create": {
"title": "Criar fase personalizada",
"description": "Crie um nome e uma descrição de fase personalizados e escolha a qual tipo de dispositivo ela 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": "Selecione uma fase personalizada para editar.",
"data": {
"phase_name": "Fase personalizada"
}
},
"phase_catalog_edit": {
"title": "Editar fase personalizada",
"description": "Editando fase: {phase_name}",
"data": {
"phase_name": "Nome da fase",
"phase_description": "Descrição da fase"
}
},
"phase_catalog_delete": {
"title": "Excluir fase personalizada",
"description": "Selecione uma fase personalizada para excluir. Quaisquer intervalos atribuídos usando esta fase serão removidos.",
"data": {
"phase_name": "Fase personalizada"
}
},
"assign_profile_phases": {
"title": "Atribuir intervalos de fase",
"description": "Visualização de fase do perfil: **{profile_name}**\n\n{timeline_svg}\n\n**Intervalos atuais:**\n{current_ranges}\n\nUse as ações abaixo para adicionar, editar, excluir ou salvar intervalos.",
"menu_options": {
"assign_profile_phases_add": "Adicionar intervalo de fase",
"assign_profile_phases_edit_select": "Editar intervalo de fase",
"assign_profile_phases_delete": "Excluir intervalo de fase",
"phase_ranges_clear": "Limpar todos os intervalos",
"assign_profile_phases_auto_detect": "Detectar fases automaticamente",
"phase_ranges_save": "Salvar e voltar",
"menu_back": "← Voltar"
}
},
"assign_profile_phases_add": {
"title": "Adicionar intervalo de fase",
"description": "Adicione um intervalo de fase ao rascunho atual.",
"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": "Selecione um intervalo para editar.",
"data": {
"range_index": "Intervalo de fase"
}
},
"assign_profile_phases_edit": {
"title": "Editar intervalo de fase",
"description": "Atualize o intervalo de fase selecionado.",
"data": {
"phase_name": "Fase",
"start_min": "Minuto de início",
"end_min": "Minuto de fim"
}
},
"assign_profile_phases_delete": {
"title": "Excluir intervalo de fase",
"description": "Selecione 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 ação abaixo.",
"data": {
"action": "Açã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": "Selecione um perfil para configurar os intervalos de fase.",
"data": {
"profile": "Perfil"
}
},
"profile_stats": {
"title": "Estatísticas de 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', 'Pesados', '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": "Selecione um perfil para renomear",
"data": {
"profile": "Perfil"
}
},
"rename_profile": {
"title": "Editar detalhes do perfil",
"description": "Perfil atual: {current_name}",
"data": {
"new_name": "Nome do perfil",
"manual_duration": "Duração manual (minutos)"
}
},
"delete_profile_select": {
"title": "Excluir perfil",
"description": "Selecione um perfil para excluir",
"data": {
"profile": "Perfil"
}
},
"delete_profile_confirm": {
"title": "Confirmar exclusão do perfil",
"description": "⚠️ Isso excluirá permanentemente o perfil: {profile_name}",
"data": {
"unlabel_cycles": "Remover rótulo dos ciclos que usam este perfil"
}
},
"auto_label_cycles": {
"title": "Rotular automaticamente ciclos anteriores",
"description": "Foram encontrados {total_count} ciclos no total. Perfis: {profiles}",
"data": {
"confidence_threshold": "Confiança mínima (0,500,95)"
}
},
"select_cycle_to_label": {
"title": "Selecione o ciclo para rotular",
"description": "✓ = concluído, ⚠ = retomado, ✗ = interrompido",
"data": {
"cycle_id": "Ciclo"
}
},
"select_cycle_to_delete": {
"title": "Excluir ciclo",
"description": "⚠️ Isso excluirá permanentemente o ciclo selecionado",
"data": {
"cycle_id": "Ciclo para excluir"
}
},
"label_cycle": {
"title": "Rotular ciclo",
"description": "{cycle_info}",
"data": {
"profile_name": "Perfil",
"new_profile_name": "Novo nome de perfil (se estiver criando)"
}
},
"post_process": {
"title": "Processar histórico (mesclar/dividir)",
"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 retroação (horas)",
"gap_seconds": "Limite de mesclagem/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": "Limite para decidir entre divisão e mesclagem. Lacunas MENORES que isso são mescladas. Lacunas MAIORES que isso são divididas. Reduza este valor para forçar a divisão de um ciclo mesclado incorretamente."
}
},
"cleanup_profile": {
"title": "Limpar histórico - selecione o perfil",
"description": "Selecione um perfil para visualizar. Isso gerará um gráfico mostrando todos os ciclos anteriores deste perfil para ajudar a identificar valores discrepantes.",
"data": {
"profile": "Perfil"
}
},
"cleanup_select": {
"title": "Limpar histórico - gráfico e exclusão",
"description": "![Gráfico]({graph_url})\n\n**Visualizando {profile_name}**\n\nO gráfico mostra ciclos individuais como linhas coloridas. Identifique os discrepantes (linhas afastadas do grupo) e combine suas cores na lista abaixo para excluí-los.\n\n**Selecione os ciclos para excluir PERMANENTEMENTE:**",
"data": {
"cycles_to_delete": "Ciclos para excluir (verifique as cores correspondentes)"
}
},
"interactive_editor": {
"title": "Editor interativo de mesclar/dividir",
"description": "Selecione uma ação manual para executar no histórico do seu ciclo.",
"menu_options": {
"editor_split": "Dividir um ciclo (encontrar lacunas)",
"editor_merge": "Mesclar ciclos (unir fragmentos)",
"editor_delete": "Excluir ciclo(s)",
"menu_back": "← Voltar"
}
},
"editor_select": {
"title": "Selecionar ciclos",
"description": "Selecione o(s) ciclo(s) a serem processados.\n\n{info_text}",
"data": {
"selected_cycles": "Ciclos"
}
},
"editor_configure": {
"title": "Configurar e aplicar",
"description": "{preview_md}",
"data": {
"confirm_action": "Ação",
"merged_profile": "Perfil resultante",
"new_profile_name": "Novo nome de perfil",
"confirm_commit": "Sim, confirmo esta açã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 intervalo ocioso maior que isso 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 ocioso maior do que este causará uma divisão.",
"data": {
"min_gap_seconds": "Limite do intervalo de divisão (segundos)"
}
},
"editor_split_manual_params": {
"title": "Carimbos de data/hora de divisão manual",
"description": "{preview_md}Janela do ciclo: **{cycle_start_wallclock} → {cycle_end_wallclock}** em {cycle_date}.\n\nInsira um ou mais carimbos de data/hora de divisão (`HH:MM` ou `HH:MM:SS`), um por linha. O ciclo será cortado em cada carimbo de data/hora — N carimbos de data/hora produzem N+1 segmentos.",
"data": {
"split_timestamps": "Timestamps de divisão"
}
},
"reprocess_history": {
"title": "Manutenção: reprocessar e otimizar dados",
"description": "Executa 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 isso para corrigir problemas de dados ou aplicar novos algoritmos.**"
},
"wipe_history": {
"title": "Limpar histórico (somente para testes)",
"description": "⚠️ Isso excluirá permanentemente TODOS os ciclos e perfis armazenados neste dispositivo. Esta ação não pode ser desfeita!"
},
"export_import": {
"title": "Exportar/Importar JSON",
"description": "Copie/cole ciclos, perfis e configurações para este dispositivo. Exporte abaixo ou cole JSON para importar.",
"data": {
"mode": "Ação",
"json_payload": "JSON de configuração completa"
},
"data_description": {
"mode": "Escolha Exportar para copiar dados e configurações atuais ou Importar para colar dados exportados de outro dispositivo WashData.",
"json_payload": "Para exportar: copie este JSON (inclui ciclos, perfis e todas as configurações ajustadas). Para importar: cole o JSON exportado do WashData."
}
},
"record_cycle": {
"title": "Gravar ciclo",
"description": "Grave manualmente um ciclo para criar um perfil limpo e sem interferências.\n\nStatus: **{status}**\nDuração: {duration}s\nAmostras: {samples}",
"menu_options": {
"record_refresh": "Atualizar status",
"record_stop": "Parar gravação (salvar e processar)",
"record_start": "Iniciar nova gravação",
"record_process": "Processar última gravação (recortar e salvar)",
"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 é atualizado com alterações no formulário.*\n\nA gravação foi interrompida. Os cortes são alinhados à taxa de amostragem detectada (~{sampling_rate}s).\n\nDuração bruta: {duration}s\nAmostras: {samples}",
"data": {
"head_trim": "Corte do início (segundos)",
"tail_trim": "Corte do fim (segundos)",
"save_mode": "Destino de salvamento",
"profile_name": "Nome do perfil"
}
},
"learning_feedbacks": {
"title": "Feedbacks de aprendizagem",
"description": "Feedback pendente: {count}\n\n{pending_table}\n\nSelecione uma solicitação de revisão de ciclo para processar.",
"menu_options": {
"learning_feedbacks_pick": "Revisar um feedback pendente",
"learning_feedbacks_dismiss_all": "Descartar todo o feedback pendente",
"menu_back": "← Voltar"
}
},
"learning_feedbacks_pick": {
"title": "Selecionar feedback para revisar",
"description": "Selecione uma solicitação de revisão de ciclo para abrir.",
"data": {
"selected_feedback": "Selecionar ciclo para revisar"
}
},
"learning_feedbacks_empty": {
"title": "Feedbacks de aprendizagem",
"description": "Nenhuma solicitação de feedback pendente foi encontrada.",
"menu_options": {
"menu_back": "← Voltar"
}
},
"learning_feedbacks_dismiss_all": {
"title": "Dispensar todos os feedbacks pendentes",
"description": "Você está prestes a dispensar **{count}** solicitações de feedback pendentes. Os ciclos dispensados permanecem no seu histórico, mas não contribuirão com novo sinal de aprendizagem. Isso 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: descartar todas as solicitações 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 ação abaixo:__",
"data": {
"action": "O que você gostaria de fazer?",
"corrected_profile": "Programa correto (se estiver corrigindo)",
"corrected_duration": "Duração correta em segundos (se estiver corrigindo)"
}
},
"trim_cycle_select": {
"title": "Recortar ciclo - selecione o ciclo",
"description": "Selecione um ciclo para recortar. ✓ = concluído, ⚠ = retomado, ✗ = interrompido",
"data": {
"cycle_id": "Ciclo"
}
},
"trim_cycle": {
"title": "Recortar ciclo",
"description": "Janela atual: {trim_summary}\n\n{trim_svg}",
"data": {
"action": "Ação"
}
},
"trim_cycle_start": {
"title": "Definir início do recorte",
"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 recorte",
"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": "Falha na importação. Cole um JSON de exportação WashData válido.",
"select_exactly_one": "Selecione exatamente um ciclo para esta ação.",
"select_at_least_one": "Selecione pelo menos um ciclo para esta ação.",
"select_at_least_two": "Selecione pelo menos dois ciclos para esta ação.",
"profile_exists": "Já existe um perfil com este nome",
"rename_failed": "Falha ao renomear 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 selecionada não foi encontrada.",
"invalid_phase_name": "O nome da fase não pode ficar vazio.",
"phase_name_too_long": "O nome da fase é muito 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 se sobrepõem. Ajuste os intervalos e tente novamente.",
"incomplete_phase_row": "Cada linha de fase deve incluir uma fase mais os valores completos de início/fim para o modo selecionado.",
"timestamp_mode_cycle_required": "Selecione um ciclo de origem ao usar o modo de carimbo de data/hora.",
"no_phase_ranges": "Ainda não há intervalos de fase disponíveis para essa ação.",
"feedback_notification_title": "WashData: verificar ciclo ({device})",
"feedback_notification_message": "**Dispositivo**: {device}\n**Programa**: {program} ({confidence}% de confiança)\n**Horário**: {time}\n\nWashData precisa da sua ajuda para verificar este ciclo detectado.\n\nVá para **Configurações > Dispositivos e serviços > WashData > Configurar > Feedbacks de aprendizagem** para confirmar ou corrigir este resultado.",
"suggestions_ready_notification_title": "WashData: configurações sugeridas prontas ({device})",
"suggestions_ready_notification_message": "O sensor **Configurações sugeridas** agora exibe **{count}** recomendações acionáveis.\n\nPara revisá-las e aplicá-las: **Configurações > Dispositivos e serviços > WashData > Configurar > Configurações avançadas > Aplicar valores sugeridos**.\n\nAs sugestões são opcionais e mostradas para revisão antes de salvar.",
"trim_range_invalid": "O início deve ser antes do fim. Ajuste seus pontos de recorte.",
"trim_failed": "O recorte falhou. O ciclo pode não existir mais ou a janela está vazia.",
"invalid_split_timestamp": "O timestamp é inválido ou está fora da janela do ciclo. Use 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 desses timestamps. Verifique se cada timestamp está dentro da janela do ciclo e se os segmentos têm pelo menos 1 minuto de duração.",
"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": "Nenhum segmento divisível foi encontrado no ciclo selecionado.",
"cycle_not_found": "Não foi possível carregar o ciclo selecionado.",
"no_power_data": "Não há dados de rastreamento de energia disponíveis para o ciclo selecionado.",
"no_profiles_found": "Nenhum perfil encontrado. Crie um perfil primeiro.",
"no_profiles_for_matching": "Nenhum perfil disponível para correspondência. Crie perfis primeiro.",
"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 ao vivo"
}
},
"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 dispositivos",
"current_suffix": "(atual)",
"editor_select_info": "Selecione 1 ciclo para dividir ou 2 ou mais ciclos para mesclar.",
"editor_select_info_split": "Selecione 1 ciclo para dividir.",
"editor_select_info_merge": "Selecione 2 ou mais ciclos para mesclar.",
"editor_select_info_delete": "Selecione 1 ou mais ciclos para excluir.",
"no_cycles_recorded": "Nenhum ciclo registrado ainda.",
"profile_summary_line": "- **{name}**: {count} ciclos, {avg}m de média",
"no_profiles_created": "Nenhum perfil criado ainda.",
"phase_preview": "Pré-visualização de 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}m de média)",
"profile_option_short_fmt": "{name} ({count} ciclos, ~{duration}m)",
"deleted_cycles_from_profile": "{count} ciclo(s) excluído(s) 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}m, Atual: {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 ação abaixo:__",
"tbl_count": "Contagem",
"tbl_avg": "Média",
"tbl_min": "Mínimo",
"tbl_max": "Máx.",
"tbl_energy_avg": "Energia (média)",
"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 o intervalo de consumo de energia mínimo e máximo observado. A linha mostra a curva de potência média.",
"recording_preview": "Pré-visualização da gravação",
"trim_start": "Início do recorte",
"trim_end": "Fim do recorte",
"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 mesclagem",
"merge_preview_joining_fmt": "Unindo {count} ciclos. As lacunas serão preenchidas com leituras de 0W.",
"editor_delete_preview_title": "Prévia de exclusão",
"editor_delete_preview_intro": "Os ciclos selecionados serão excluídos permanentemente:",
"editor_delete_preview_confirm": "Clique em Confirmar para excluir permanentemente esses registros de ciclos.",
"no_power_preview": "*Não há dados de energia 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 arquivo",
"storage_cycles": "Ciclos",
"storage_profiles": "Perfis",
"storage_debug_traces": "Rastreamentos de depuração",
"overview_suffix": "Visão geral",
"phase_preview_for_profile": "Pré-visualização de fase para o perfil",
"current_ranges_header": "Intervalos atuais",
"assign_phases_help": "Use as ações abaixo para adicionar, editar, excluir ou salvar intervalos.",
"profile_summary_header": "Resumo dos perfis",
"recent_cycles_header": "Ciclos recentes",
"trim_cycle_preview_title": "Pré-visualização do recorte 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 detectado",
"table_confidence": "Confiança",
"table_reported": "Informado",
"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": "Mesclar ciclos (unir fragmentos)",
"delete": "Excluir ciclo(s)"
}
},
"split_mode": {
"options": {
"auto": "Detectar automaticamente intervalos ociosos",
"manual": "Timestamps manuais"
}
},
"diagnostics_action": {
"options": {
"reprocess_history": "Manutenção: reprocessar e otimizar dados",
"clear_debug_data": "Limpar dados de depuração (liberar espaço)",
"wipe_history": "Limpar TODOS os dados deste dispositivo (irreversível)",
"export_import": "Exportar/Importar JSON com configurações (copiar/colar)"
}
},
"export_import_mode": {
"options": {
"export": "Exportar todos os dados",
"import": "Importar/mesclar dados"
}
},
"manage_cycles_action": {
"options": {
"auto_label_cycles": "Rotular automaticamente ciclos anteriores",
"select_cycle_to_label": "Rotular ciclo específico",
"select_cycle_to_delete": "Excluir ciclo",
"interactive_editor": "Editor interativo de mesclar/dividir",
"trim_cycle": "Recortar dados do ciclo"
}
},
"manage_profiles_action": {
"options": {
"create_profile": "Criar novo perfil",
"edit_profile": "Editar/renomear perfil",
"delete_profile": "Excluir perfil",
"profile_stats": "Estatísticas de perfil",
"cleanup_profile": "Limpar histórico - gráfico e exclusã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": "Excluir fase"
}
},
"assign_profile_phases_action": {
"options": {
"add_range": "Adicionar intervalo de fase",
"edit_range": "Editar intervalo de fase",
"delete_range": "Excluir intervalo de fase",
"clear_ranges": "Limpar todos os intervalos",
"auto_detect_ranges": "Detectar fases automaticamente",
"save_ranges": "Salvar e voltar"
}
},
"record_cycle_action": {
"options": {
"refresh_status": "Atualizar status",
"stop_recording": "Parar gravação (salvar e processar)",
"start_recording": "Iniciar nova gravação",
"process_recording": "Processar última gravação (recortar e salvar)",
"discard_recording": "Descartar última gravação"
}
},
"record_process_save_mode": {
"options": {
"new_profile": "Criar novo perfil",
"existing_profile": "Adicionar ao perfil existente",
"discard": "Descartar gravação"
}
},
"resolve_feedback_action": {
"options": {
"confirm": "Confirmar - detecção correta",
"correct": "Corrigir - escolher programa/duração",
"ignore": "Ignorar - ciclo falso positivo/ruído",
"delete": "Excluir - 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": "Redefinir para duração total",
"apply": "Aplicar recorte",
"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 da máquina de lavar a ser rotulado."
},
"cycle_id": {
"name": "ID do ciclo",
"description": "O ID do ciclo a ser rotulado."
},
"profile_name": {
"name": "Nome do perfil",
"description": "O nome de um perfil existente (crie perfis no menu Gerenciar Perfis). Deixe em branco para remover o rótulo."
}
}
},
"create_profile": {
"name": "Criar perfil",
"description": "Crie um novo perfil (autônomo ou baseado em um ciclo de referência).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar."
},
"profile_name": {
"name": "Nome do perfil",
"description": "Nome do novo perfil (ex.: 'Pesados', 'Delicados')."
},
"reference_cycle_id": {
"name": "ID do ciclo de referência",
"description": "ID de ciclo opcional para basear este perfil."
}
}
},
"delete_profile": {
"name": "Excluir perfil",
"description": "Exclua um perfil e, opcionalmente, remova o rótulo dos ciclos que o utilizam.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar."
},
"profile_name": {
"name": "Nome do perfil",
"description": "O perfil a ser excluído."
},
"unlabel_cycles": {
"name": "Remover rótulo dos ciclos",
"description": "Remove o rótulo do perfil dos ciclos que o utilizam."
}
}
},
"auto_label_cycles": {
"name": "Rotular automaticamente ciclos anteriores",
"description": "Rotule retroativamente ciclos não rotulados usando correspondência de perfil.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar."
},
"confidence_threshold": {
"name": "Limite de confiança",
"description": "Confiança mínima de correspondência (0,500,95) para aplicar rótulos."
}
}
},
"export_config": {
"name": "Exportar configuração",
"description": "Exporte os perfis, ciclos e configurações deste dispositivo para um arquivo JSON (por dispositivo).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar a exportar."
},
"path": {
"name": "Caminho",
"description": "Caminho de arquivo absoluto opcional para gravação (o padrão é /config/ha_washdata_export_{entry}.json)."
}
}
},
"import_config": {
"name": "Importar configuração",
"description": "Importe perfis, ciclos e configurações para este dispositivo a partir de um arquivo de exportação JSON (as configurações podem ser substituídas).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar para importar."
},
"path": {
"name": "Caminho",
"description": "Caminho absoluto para o arquivo JSON de exportação a ser importado."
}
}
},
"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 da 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/registros de feedback."
},
"user_confirmed": {
"name": "Confirmar programa detectado",
"description": "Defina como verdadeiro se o programa detectado estiver correto."
},
"corrected_profile": {
"name": "Perfil corrigido",
"description": "Se não for confirmado, forneça o nome correto do perfil/programa."
},
"corrected_duration": {
"name": "Duração corrigida (segundos)",
"description": "Duração corrigida opcional em segundos."
},
"notes": {
"name": "Observações",
"description": "Observações opcionais sobre este ciclo."
}
}
},
"record_start": {
"name": "Gravar início do ciclo",
"description": "Inicia a gravação manual de um ciclo limpo (ignora toda a lógica de correspondência).",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar a ser gravado."
}
}
},
"record_stop": {
"name": "Gravar parada do ciclo",
"description": "Interrompe a gravação manual.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo da máquina de lavar para parar a gravação."
}
}
},
"trim_cycle": {
"name": "Recortar ciclo",
"description": "Recorta os dados de potência de um ciclo anterior para uma janela de tempo específica.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "O dispositivo WashData."
},
"cycle_id": {
"name": "ID do ciclo",
"description": "O ID do ciclo a ser recortado."
},
"trim_start_s": {
"name": "Início do recorte (segundos)",
"description": "Mantém os dados a partir deste deslocamento em segundos. Padrão: 0."
},
"trim_end_s": {
"name": "Fim do recorte (segundos)",
"description": "Mantém os dados até este deslocamento em segundos. Padrã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": "Em funcionamento"
},
"match_ambiguity": {
"name": "Ambiguidade de correspondência"
}
},
"sensor": {
"washer_state": {
"name": "Estado",
"state": {
"off": "Desligado",
"idle": "Ocioso",
"starting": "Iniciando",
"running": "Em funcionamento",
"paused": "Pausado",
"user_paused": "Pausado pelo usuário",
"ending": "Encerrando",
"finished": "Concluído",
"anti_wrinkle": "Anti-amasso",
"delay_wait": "Esperando para começar",
"interrupted": "Interrompido",
"force_stopped": "Parada forçada",
"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 atual"
},
"elapsed_time": {
"name": "Tempo decorrido"
},
"debug_info": {
"name": "Informações de depuração"
},
"match_confidence": {
"name": "Confiança na correspondência"
},
"top_candidates": {
"name": "Principais candidatos",
"state": {
"none": "Nenhum"
}
},
"current_phase": {
"name": "Fase atual"
},
"wash_phase": {
"name": "Fase"
},
"profile_cycle_count": {
"name": "Contagem de ciclos de {profile_name}",
"unit_of_measurement": "ciclos"
},
"suggestions": {
"name": "Configuraçõ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 sem dados de potência."
},
"trim_failed_empty_window": {
"message": "Recorte falhou - ciclo não encontrado, sem dados de energia ou a janela resultante está vazia."
},
"trim_invalid_range": {
"message": "trim_end_s deve ser maior que trim_start_s."
}
}
}