diff --git a/messages/pt-BR.json b/messages/pt-BR.json
index d05b0d6cc..6f1caae3e 100644
--- a/messages/pt-BR.json
+++ b/messages/pt-BR.json
@@ -844,7 +844,7 @@
"nextPage": "Próxima página",
"dailyTotalCaption": "({count} amostras)",
"openMetricInsights": "Abrir insights de {type}",
- "sleepNapCaption": "+{count} soneca(s)",
+ "sleepNapCaption": "incl. {count} soneca(s)",
"sleepAwakeningsCaption": "{count} despertar(es)",
"expandDay": "Mostrar amostras deste dia",
"collapseDay": "Ocultar amostras deste dia",
@@ -3143,11 +3143,11 @@
"last30days": "{days} dias",
"last90days": "{days} dias",
"lastYear": "{months} meses",
- "allTime": "Tudo"
+ "allTime": "{months} meses em detalhe, todos os exames"
},
"detailDays": "O Coach não lê nada mais antigo que {days} dias, em nenhuma resposta.",
"detailMonths": "O Coach não lê nada mais antigo que {months} meses, em nenhuma resposta.",
- "detailAll": "Tudo que você registrou: {dailyMonths} meses em detalhe diário, leituras mais antigas como valores mensais até {years} anos atrás, resultados laboratoriais dos últimos {labMonths} meses.",
+ "detailAll": "Tudo o que você registrou: {dailyMonths} meses em detalhe diário, leituras mais antigas como valores mensais até {years} anos atrás, e todos os resultados de exames, os mais antigos resumidos por ano.",
"note": "Seu perfil, medicamentos atuais, uma doença em curso e consultas futuras permanecem visíveis; resumos que precisam de mais histórico são encurtados ou omitidos. Respostas que o Coach deu antes em conversas mais antigas ainda podem citar valores antigos."
},
"showConversations": "Mostrar conversas",
@@ -4219,8 +4219,8 @@
"metricNextDayRecovery": "Recuperação no dia seguinte",
"metricNextDayRestingHr": "Frequência cardíaca em repouso no dia seguinte",
"metricNextDayHrv": "Variabilidade da frequência cardíaca no dia seguinte",
- "detailSameDay": "Média de {withAvg} {unit} nos {withDays} dias em que você marcou isto vs {withoutAvg} {unit} sem isso.",
- "detailNextDay": "Média de {withAvg} {unit} no dia após os {withDays} dias em que você marcou isto vs {withoutAvg} {unit} nos demais."
+ "detailSameDay": "Média de {withAvg} nos {withDays} dias em que você marcou isto vs {withoutAvg} sem isso.",
+ "detailNextDay": "Média de {withAvg} no dia seguinte aos {withDays} dias em que você marcou isto vs {withoutAvg} nos demais."
},
"factorCrosstab": {
"title": "Seus fatores classificados e seus sinais vitais",
@@ -4232,8 +4232,8 @@
"metricHrv": "Variabilidade da frequência cardíaca",
"metricWeight": "Peso",
"metricBloodPressureSys": "Sistólica",
- "detail": "Média de {lowAvg} {unit} nos {lowDays} dias em que você classificou {factor} como baixo vs {highAvg} {unit} nos dias em que o classificou como alto.",
- "detailInverse": "Média de {lowAvg} {unit} nos seus {lowDays} dias piores de {factor} vs {highAvg} {unit} nos seus melhores."
+ "detail": "Média de {lowAvg} nos {lowDays} dias em que você classificou {factor} como baixo vs {highAvg} nos dias em que o classificou como alto.",
+ "detailInverse": "Média de {lowAvg} nos seus {lowDays} dias piores de {factor} vs {highAvg} nos seus melhores."
},
"discovery": {
"title": "O que se destaca",
@@ -4651,7 +4651,7 @@
"description": "Quão bem seu corpo se recuperou: os sinais de recuperação, tensão e carga que seu wearable registra durante a noite.",
"scoreCrossLink": "Ver a pontuação composta de recuperação",
"emptyTitle": "Ainda não há dados de recuperação",
- "empty": "Nada para grafar aqui ainda. Esta página mostra as leituras de recarga, tensão e carga que WHOOP e Polar registram, e o nível de resiliência da Oura. A prontidão da Oura aparece como sua pontuação de recuperação, vinculada acima.",
+ "empty": "Esta página se preenche com as leituras de recarga, tensão e carga do WHOOP ou da Polar e com o nível de resiliência da Oura.",
"block": {
"ansChargeExplainer": "Quão carregado seu sistema nervoso autônomo está para o dia seguinte, uma leitura de recarga extraída dos seus sinais noturnos de coração e respiração.",
"dayStrainExplainer": "A carga cardiovascular de corpo inteiro do dia na escala de tensão do seu dispositivo. Leia-a contra a sua recuperação, não como uma meta por si só.",
@@ -5396,7 +5396,7 @@
"unavailableTitle": "Indisponível neste registro compartilhado",
"unavailableDescription": "Esta área de configurações está intencionalmente indisponível ao visualizar o registro de outra pessoa.",
"integrationStatusDescription": "Status de conexão deste registro gerenciado.",
- "integrationStatusDetail": "Um perfil gerenciado mostra os serviços conectados apenas como status. Conectar, reconectar, sincronizar e desconectar não estão disponíveis para responsáveis.",
+ "integrationStatusDetail": "Os serviços que você conecta aqui enviam os dados para o registro de {name}, não para o seu. Sem um app de provedor próprio, o perfil usa o seu.",
"integrationStatusDocs": "Como funciona o compartilhamento"
},
"sections": {
@@ -5425,8 +5425,8 @@
}
},
"layout": {
- "title": "Layout",
- "backToHub": "Voltar ao Layout",
+ "title": "Organização",
+ "backToHub": "Voltar para Organização",
"dashboard": {
"title": "Painel",
"description": "Layout e ordem dos blocos."
@@ -5435,7 +5435,7 @@
"title": "Insights",
"description": "Seções de visão geral e ordem das pílulas de navegação."
},
- "subtitle": "Escolha o que o painel, os insights e os módulos de acompanhamento exibem, e em qual ordem.",
+ "subtitle": "Escolha a ordem e a visualização do seu painel, dos insights e das listas de acompanhamento.",
"medications": {
"title": "Medicamentos",
"description": "Visualização em lista e ordem manual."
@@ -6201,7 +6201,7 @@
"resetConfirmBody": "A cadeia volta a Codex → OpenAI → Anthropic → Local → OpenAI administrativo. Suas credenciais salvas não são alteradas."
},
"activeProviderHeading": "Provedor ativo",
- "activeProviderLabel": "Provedor principal",
+ "activeProviderLabel": "Configurar um provedor",
"providerSelect": {
"codex": "Conta do ChatGPT (Codex)",
"openai": "OpenAI (sua chave de API)",
@@ -6408,7 +6408,7 @@
},
"coachNote": "No Coach, aplica-se a profundidade de pensamento definida nas configurações do Coach."
},
- "providerCardDescription": "O provedor que o HealthLog consulta primeiro, além da chave e do modelo dele.",
+ "providerCardDescription": "Configure a chave e o modelo de cada provedor; a ordem abaixo decide qual deles o HealthLog consulta primeiro.",
"runtimeTitle": "Verificar e atualizar",
"usage": {
"title": "Uso da IA",
@@ -6954,7 +6954,7 @@
"cross_user": "A resposta pertence a uma solicitação de outra conta. Reinicie a conexão a partir da sua própria conta.",
"nocode": "A Polar não retornou um código de autorização. Tente novamente e permita o acesso na caixa de diálogo da Polar.",
"nocreds": "A Polar não está configurada neste servidor. Peça ao administrador para adicionar as credenciais OAuth da Polar.",
- "token": "A troca de token com a Polar falhou.",
+ "token": "A troca de token com a Polar falhou. Inicie a conexão novamente.",
"rate_limited": "Tentativas de conexão demais. Espere um momento e tente novamente.",
"generic": "Erro desconhecido ao conectar. Inicie a conexão novamente."
},
@@ -6983,7 +6983,7 @@
"cross_user": "A resposta pertence a uma solicitação de outra conta. Reinicie a conexão a partir da sua própria conta.",
"nocode": "A Oura não retornou um código de autorização. Tente novamente e permita o acesso na caixa de diálogo da Oura.",
"nocreds": "A Oura não está configurada neste servidor. Peça ao administrador para adicionar as credenciais OAuth da Oura.",
- "token": "A troca de token com a Oura falhou.",
+ "token": "A troca de token com a Oura falhou. Inicie a conexão novamente.",
"rate_limited": "Tentativas de conexão demais. Espere um momento e tente novamente.",
"issuer": "A resposta de login não veio do próprio servidor de autorização da Oura, então a conexão foi interrompida por sua segurança. Inicie a conexão novamente. Se isso continuar acontecendo, avise o administrador.",
"generic": "Erro desconhecido ao conectar. Inicie a conexão novamente."
@@ -7169,11 +7169,11 @@
"connectionLastUsed": "Último uso",
"connectionNeverUsed": "Nunca usado",
"connectionRevoke": "Desconectar",
- "connectionRevokeDescription": "Desconecta este assistente e revoga o token dele.",
+ "connectionRevokeDescription": "Isso encerra o acesso do assistente imediatamente e impede que ele seja renovado. Para reconectar, ele precisará ser autorizado de novo.",
"connectionRevokeFailed": "Não foi possível desconectar o assistente.",
- "connectionsDetail": "Assistentes que você autorizou aparecem aqui.",
- "tokensDetail": "Tokens que você gerou aparecem aqui.",
- "tokenNamePlaceholder": "Nome, ex.: Claude"
+ "connectionsDetail": "Revogar uma conexão encerra o acesso dela imediatamente, inclusive a capacidade de se renovar.",
+ "tokensDetail": "O token é exibido uma única vez.",
+ "tokenNamePlaceholder": "Nome, ex.: Claude Desktop"
},
"strava": "Strava",
"stravaDescription": "Conecte sua conta Strava para sincronizar treinos, distância, ritmo e mais.",
@@ -7200,110 +7200,110 @@
"cross_user": "A resposta pertence a uma solicitação de outra conta. Reinicie a conexão a partir da sua própria conta.",
"nocode": "O Strava não retornou um código de autorização. Tente novamente e permita o acesso na caixa de diálogo do Strava.",
"nocreds": "O Strava não está configurado. Adicione suas credenciais OAuth do Strava acima e tente novamente.",
- "token": "A troca de token com o Strava falhou.",
+ "token": "A troca de token com o Strava falhou. Inicie a conexão novamente.",
"rate_limited": "Tentativas de conexão demais. Espere um momento e tente novamente.",
"generic": "Erro desconhecido ao conectar. Inicie a conexão novamente."
},
"appleHealth": {
"title": "Apple Health",
- "description": "Sincronize dados do Apple Health no HealthLog.",
+ "description": "A sincronização ao vivo vem do app HealthLog para iOS, não de uma conexão web ou OAuth.",
"status": {
- "unavailable": "Indisponível neste dispositivo."
+ "unavailable": "Status do Apple Health indisponível"
},
- "setupTitle": "Configurar Apple Health",
- "permissionStep": "Permita que o HealthLog leia os dados de saúde no iPhone.",
- "backgroundStep": "Ative a sincronização em segundo plano para manter os dados atualizados.",
- "importNote": "Você também pode importar uma exportação do Apple Health em Configurações › Exportar e importar.",
- "importAction": "Importar exportação",
+ "setupTitle": "Ativar a sincronização ao vivo",
+ "permissionStep": "No app HealthLog para iOS, abra Configurações → Apple Health e permita as categorias de saúde que você quer compartilhar.",
+ "backgroundStep": "Mantenha a Atualização em 2º Plano ativada. O app sincroniza os dados novos automaticamente em primeiro plano e quando o iOS concede tempo em segundo plano.",
+ "importNote": "Precisa de um histórico mais antigo ou não pode usar o app para iOS? O envio do XML/ZIP do Apple Health é uma alternativa avulsa e não ativa a sincronização ao vivo.",
+ "importAction": "Abrir a importação avulsa",
"progress": {
"title": "Progresso da sincronização",
- "receivedLabel": "Recebido",
- "oldestLabel": "Mais antigo",
- "flowing": "Dados chegando",
- "waiting": "Aguardando dados"
+ "receivedLabel": "Registros recebidos",
+ "oldestLabel": "Leitura mais antiga alcançada",
+ "flowing": "Dados chegaram na última hora. O app do iPhone ainda está enviando.",
+ "waiting": "Aguardando o app do iPhone enviar mais dados. O envio continua quando o app está aberto ou quando o iOS concede tempo em segundo plano. Um período sem dados durante a primeira grande carga de histórico é normal, não um erro."
},
"delivery": {
- "title": "Entrega de dados",
- "lastTriggerLabel": "Último gatilho",
+ "title": "Entrega",
+ "lastTriggerLabel": "A última sincronização chegou",
"lastBackgroundLabel": "Última sincronização em segundo plano",
- "backgroundNever": "Nunca",
- "noSyncYet": "Nenhuma sincronização ainda",
+ "backgroundNever": "Nunca: todas as sincronizações até agora chegaram com o app aberto",
+ "noSyncYet": "Nenhuma sincronização chegou ainda, então não há nada para mostrar aqui.",
"trigger": {
- "foreground": "Em primeiro plano",
- "background": "Em segundo plano",
- "push": "Push",
- "unknown": "Desconhecido",
- "manual": "Manual"
+ "foreground": "com o app aberto",
+ "background": "em segundo plano",
+ "push": "ao ser acordado por um push",
+ "unknown": "origem não informada pelo app",
+ "manual": "por Sincronizar tudo"
}
},
"freshness": {
- "title": "Dados recebidos",
- "lastReceived": "Último recebido",
- "lastNewValue": "Último novo valor",
- "lastBackground": "Última sincronização em segundo plano",
- "never": "Nunca",
- "lastBackfill": "Último preenchimento retroativo"
+ "title": "Por tipo de dado",
+ "lastReceived": "Último recebimento {relative}",
+ "lastNewValue": "Último valor novo {relative}",
+ "lastBackground": "Último em segundo plano {relative}",
+ "never": "Ainda não recebido",
+ "lastBackfill": "Histórico em dia {relative}"
}
},
"garminInfo": {
"title": "Garmin",
- "body": "Conecte sua conta Garmin para sincronizar treinos, sono e mais.",
- "docsLink": "Documentação do Garmin"
+ "body": "O Garmin não tem conexão direta aqui. Conecte pelo Apple Health (iOS) ou pelo Google Health Connect (Android). As pontuações próprias da Garmin (Body Battery, Training Load, HRV Status, VO₂ máx.) não são compartilhadas pela Garmin com nenhuma das duas plataformas.",
+ "docsLink": "Ler o guia"
},
"glucoseReference": {
- "title": "Referência de glicose",
- "description": "Defina uma referência de glicose para insights.",
- "enable": "Ativar referência de glicose",
- "explainer": "A referência ajuda a contextualizar suas leituras de glicose.",
- "disclaimer": "Apenas associação, nunca conselho médico.",
- "error": "Não foi possível salvar a referência de glicose."
+ "title": "Faixa de referência da glicose",
+ "description": "Com qual faixa as suas leituras de glicose são comparadas.",
+ "enable": "Usar a faixa de meta para diabetes",
+ "explainer": "Desligado, as leituras são comparadas com a faixa de referência geral para pessoas sem diabetes. Ligado, são comparadas com a faixa de meta glicêmica mais estreita dos Standards of Care da ADA, e o Coach passa a basear nessa faixa os comentários sobre glicose. Suas próprias metas personalizadas abaixo continuam tendo prioridade.",
+ "disclaimer": "Isto seleciona uma faixa de referência. Não é um diagnóstico, nunca é deduzido de uma leitura, e o app não toma nenhuma ação clínica com base nisso. Quais metas se aplicam a você é uma pergunta para o seu profissional de saúde.",
+ "error": "Não foi possível salvar a configuração."
},
"dangerZoneDetail": "Isso exclui permanentemente tudo no seu registro.",
"deleteAccountCardDetail": "Isso exclui sua conta, chaves de acesso, log de auditoria e sessões.",
"passkeyStepUpRequired": "Confirme com seu segundo fator ou uma chave de acesso para adicionar uma nova chave de acesso.",
"setup": {
"title": "Configuração",
- "description": "Conclua a configuração inicial do HealthLog.",
+ "description": "As perguntas que decidem o que o HealthLog mostra primeiro, e o checklist de primeiros passos no painel.",
"setUpAgain": "Configurar novamente",
- "showChecklist": "Mostrar checklist",
- "checklistShown": "Checklist exibido",
- "checklistNothingHidden": "Nada oculto no checklist"
+ "showChecklist": "Mostrar o checklist novamente",
+ "checklistShown": "O checklist voltou ao painel.",
+ "checklistNothingHidden": "O checklist não estava oculto; ele aparece no painel."
},
"documentSources": {
- "title": "Fontes de documentos",
- "description": "Conecte fontes de documentos ao HealthLog.",
- "explainer": "Fontes de documentos alimentam o cofre do HealthLog.",
- "systemLabel": "Sistema",
+ "title": "Arquivos de documentos",
+ "description": "Pesquise no Paperless-ngx ou no Papra a partir do HealthLog e importe os documentos que você escolher.",
+ "explainer": "Um botão de importação aparece onde quer que você vincule documentos: em uma consulta, uma vacina e uma condição, e em Documentos. O HealthLog guarda a própria cópia criptografada de cada documento que você importa, e consulta o seu arquivo só quando você pesquisa ou importa.",
+ "systemLabel": "Arquivo",
"statusConnected": "Conectado",
"statusNotConnected": "Não conectado",
- "connectedSince": "Conectado desde {when}",
- "originRemoved": "Origem removida",
- "baseUrl": "URL base",
- "allowedOrigins": "Origens permitidas",
+ "connectedSince": "Conectado, última verificação em {date}",
+ "originRemoved": "Este endereço não está mais na lista de arquivos permitidos do servidor. Fale com o administrador ou salve outro endereço.",
+ "baseUrl": "Endereço",
+ "allowedOrigins": "Permitidos neste servidor: {origins}",
"organizationId": "ID da organização",
- "organizationHelp": "Opcional, para instâncias multiusuário.",
- "token": "Token",
- "tokenSaved": "Token salvo",
- "tokenHelpPaperless": "Cole um token de API do Paperless-ngx.",
- "tokenHelpPapra": "Cole um token de API do Papra.",
- "save": "Salvar",
- "saving": "Salvando…",
- "saved": "Salvo",
+ "organizationHelp": "A parte depois de /organizations/ na barra de endereço do Papra. IDs de organização do Papra têm o formato org_ seguido de 24 letras e dígitos.",
+ "token": "Token de API",
+ "tokenSaved": "Salvo para este endereço. Deixe em branco para mantê-lo.",
+ "tokenHelpPaperless": "No Paperless-ngx: My Profile, API token.",
+ "tokenHelpPapra": "No Papra: uma chave de API com documents:read e tags:read.",
+ "save": "Salvar e testar",
+ "saving": "Testando…",
+ "saved": "Conectado. O arquivo respondeu.",
"test": "Testar",
- "testOk": "OK: {provider}",
+ "testOk": "O arquivo respondeu em {latency} ms.",
"disconnect": "Desconectar",
- "disconnectTitle": "Desconectar {provider}?",
- "disconnectDescription": "A conexão com {provider} será desconectada. Os dados já importados permanecem.",
- "unavailableExplainer": "Esta fonte de documentos não está disponível agora.",
- "moduleOffExplainer": "O módulo Documentos está desativado para esta conta.",
- "tokenNewAddress": "Novo endereço para o token"
+ "disconnectTitle": "Desconectar {name}?",
+ "disconnectDescription": "O HealthLog esquece o endereço e o token. Os documentos que você já importou continuam no HealthLog.",
+ "unavailableExplainer": "Este servidor não permite mais arquivos de documentos, então a conexão abaixo não pode ser usada. Você ainda pode removê-la.",
+ "moduleOffExplainer": "Os documentos estão desativados, então a conexão abaixo não é usada. Você ainda pode removê-la.",
+ "tokenNewAddress": "Um endereço novo precisa do token de API de novo."
},
"emailChangePassword": "Digite sua senha atual para alterar o endereço de e-mail.",
"reproof": {
- "description": "Digite sua senha atual para confirmar que é você.",
- "descriptionChange": "Digite sua senha atual para alterar o endereço de e-mail.",
- "signInAgain": "Entre novamente para confirmar.",
- "failed": "Essa senha não está correta."
+ "description": "Isto compartilha ou exporta os seus dados de saúde. Confirme que é você para continuar.",
+ "descriptionChange": "Isto altera algo que só você deveria poder alterar. Confirme que é você para continuar.",
+ "signInAgain": "Entre novamente e tente mais uma vez. Sua conta não tem senha nem chave de acesso para confirmar aqui.",
+ "failed": "Não deu certo. Confira o que você digitou e tente de novo."
},
"passwordTitle": "Senha",
"tokenNameLabel": "Nome do token",
@@ -7313,111 +7313,111 @@
},
"integrationCard": {
"state": {
- "ok": "OK",
+ "ok": "Funcionando",
"limited": "Limitado",
- "degraded": "Degradado",
+ "degraded": "Atrasado",
"actionRequired": "Ação necessária"
},
"reason": {
- "dataArriving": "Dados chegando",
- "dataArrivingHistory": "Dados chegando, histórico em andamento",
- "firstSyncPending": "Primeira sincronização pendente",
- "planLimited": "Plano limitado",
- "permissionLimited": "Permissões limitadas",
- "providerErrors": "Erros do provedor",
- "providerErrorsNoSince": "Erros do provedor, sem data",
- "syncStalled": "Sincronização parada",
- "syncStalledNoSince": "Sincronização parada, sem data",
- "noNewData": "Nenhum dado novo",
- "noNewDataNoSince": "Nenhum dado novo, sem data",
- "noNewDataApple": "Nenhum dado novo do Apple Health",
- "noNewDataAppleNoSince": "Nenhum dado novo do Apple Health, sem data",
- "unexpectedSilence": "Silêncio inesperado",
- "unexpectedSilenceNoSince": "Silêncio inesperado, sem data",
- "reauthRequired": "Reautenticação necessária",
- "pausedAfterErrors": "Pausado após erros",
- "pausedAfterErrorsNoSince": "Pausado após erros, sem data"
+ "dataArriving": "Os dados estão chegando.",
+ "dataArrivingHistory": "Os dados estão chegando. O histórico mais antigo está sendo carregado em segundo plano.",
+ "firstSyncPending": "Conectado. A primeira sincronização acontece em breve.",
+ "planLimited": "Os dados estão chegando. Seu plano {provider} não inclui {list}.",
+ "permissionLimited": "Os dados estão chegando. Falta permissão para {list}.",
+ "providerErrors": "{provider} não responde de forma confiável desde {since}. O HealthLog continua tentando; não há nada a fazer do seu lado.",
+ "providerErrorsNoSince": "{provider} não está respondendo de forma confiável agora. O HealthLog continua tentando; não há nada a fazer do seu lado.",
+ "syncStalled": "O HealthLog não sincroniza desde {since}. O problema está no servidor, não no seu dispositivo.",
+ "syncStalledNoSince": "O HealthLog não está sincronizando agora. O problema está no servidor, não no seu dispositivo.",
+ "noNewData": "Nenhum dado novo desde {since}.",
+ "noNewDataNoSince": "Nenhum dado novo há algum tempo.",
+ "noNewDataApple": "Nenhum dado novo desde {since}. Abra o HealthLog no seu iPhone uma vez.",
+ "noNewDataAppleNoSince": "Nenhum dado novo há algum tempo. Abra o HealthLog no seu iPhone uma vez.",
+ "unexpectedSilence": "Nada chegou desde {since}, embora {provider} costume enviar dados todos os dias.",
+ "unexpectedSilenceNoSince": "Nada está chegando, embora {provider} costume enviar dados todos os dias.",
+ "reauthRequired": "A conexão com {provider} expirou. Reconecte para continuar recebendo dados.",
+ "pausedAfterErrors": "{provider} está pausado após falhar desde {since}.",
+ "pausedAfterErrorsNoSince": "{provider} está pausado após falhas repetidas."
},
"when": {
- "today": "hoje",
- "yesterday": "ontem",
- "date": "em {date}"
+ "today": "hoje, {time}",
+ "yesterday": "ontem, {time}",
+ "date": "{date}, {time}"
},
"items": {
- "activity": "Atividade",
- "sleep": "Sono"
+ "activity": "atividade",
+ "sleep": "sono"
},
- "moreValuesOne": "+ {count} valor",
- "moreValuesFew": "+ {count} valores",
- "moreValuesOther": "+ {count} valores",
- "notConnected": "Não conectado",
+ "moreValuesOne": "mais {count}",
+ "moreValuesFew": "mais {count}",
+ "moreValuesOther": "mais {count}",
+ "notConnected": "Não conectado.",
"lastData": "Últimos dados: {when}",
- "lastDataNone": "Nenhum dado ainda",
+ "lastDataNone": "Últimos dados: nenhum ainda",
"reconnect": "Reconectar",
"resume": "Retomar",
- "menuLabel": "Abrir menu da integração",
+ "menuLabel": "Mais ações para {provider}",
"menu": {
- "credentials": "Credenciais",
- "address": "Endereço"
+ "credentials": "Alterar credenciais",
+ "address": "Alterar endereço e token"
},
"syncing": "Sincronizando…",
"details": {
- "title": "Detalhes",
- "none": "Nenhum detalhe ainda",
+ "title": "Detalhes para um relatório de erro",
+ "none": "nenhum",
"state": "Estado",
- "since": "Desde",
+ "since": "desde",
"lastSync": "Última sincronização",
"lastData": "Últimos dados",
- "failingParts": "Partes com falha",
+ "failingParts": "partes com falha",
"recentCalls": "Chamadas recentes",
"unavailable": "Indisponível",
- "unavailableList": "Lista indisponível",
- "causePlan": "Causa: plano",
- "causePermission": "Causa: permissões",
- "failureStreak": "Sequência de falhas",
- "copyFailed": "Não foi possível copiar"
+ "unavailableList": "Indisponível: {list}",
+ "causePlan": "plano",
+ "causePermission": "permissão",
+ "failureStreak": "Falhas seguidas: {count} de {threshold}",
+ "copyFailed": "Não foi possível copiar. Selecione o texto e copie manualmente."
},
"historyEnds": {}
},
"dawarich": "Dawarich",
- "dawarichTag": "Localização",
- "dawarichDescription": "Conecte seu próprio site Dawarich para sincronizar o histórico de localização.",
- "dawarichUrl": "URL do Dawarich",
+ "dawarichTag": "Movimento",
+ "dawarichDescription": "Conecte a sua instância do Dawarich para trazer a distância diária, o tempo fora de casa e os dias de viagem.",
+ "dawarichUrl": "Endereço do Dawarich",
"dawarichApiKey": "Chave de API",
- "dawarichApiKeyHelp": "Cole uma chave de API das ferramentas administrativas do seu Dawarich.",
+ "dawarichApiKeyHelp": "Você a encontra no Dawarich em Account. O HealthLog a usa só para ler valores diários, nunca coordenadas ou nomes de lugares.",
"dawarichConnect": "Conectar",
"dawarichUpdate": "Salvar alterações",
- "dawarichConnected": "Dawarich conectado.",
- "dawarichSync": "Sincronizar agora",
- "dawarichSyncQueued": "Sincronização na fila.",
- "dawarichSyncAlreadyQueued": "Uma sincronização já está na fila.",
+ "dawarichConnected": "Dawarich conectado. Os últimos 30 dias estão sendo carregados agora.",
+ "dawarichSync": "Buscar agora",
+ "dawarichSyncQueued": "Os últimos sete dias serão buscados em breve.",
+ "dawarichSyncAlreadyQueued": "Uma busca já está a caminho.",
"dawarichDisconnect": "Desconectar",
"dawarichDisconnectTitle": "Desconectar o Dawarich?",
- "dawarichDisconnectDescription": "As sincronizações futuras param. Os dados já importados permanecem.",
- "dawarichDisconnectDelete": "Também excluir dados",
- "dawarichDisconnectDeleteTitle": "Excluir dados do Dawarich?",
- "dawarichDisconnectDeleteDescription": "Os dados de localização importados do Dawarich serão excluídos permanentemente.",
- "dawarichHomePlaceSet": "Local de casa definido.",
- "dawarichHomePlaceMissing": "Nenhum local de casa definido ainda.",
- "dawarichHomeCountryIs": "País de casa: {country}.",
- "dawarichHomeCountryMissing": "Nenhum país de casa definido ainda.",
- "dawarichDaysStored": "{count} dias de localização armazenados.",
- "dawarichHomePlace": "Local de casa",
- "dawarichHomePlaceChoose": "Escolher local de casa",
- "dawarichHomePlaceChange": "Alterar local de casa",
- "dawarichHomeCountry": "País de casa",
- "dawarichHomeCountryHelp": "Ajuda a contextualizar viagens e clima.",
+ "dawarichDisconnectDescription": "As próximas buscas param. Os dias já armazenados permanecem.",
+ "dawarichDisconnectDelete": "Desconectar e excluir os dias",
+ "dawarichDisconnectDeleteTitle": "Desconectar e excluir todos os dias?",
+ "dawarichDisconnectDeleteDescription": "A conexão e todos os dias de movimento armazenados são removidos. Isso não pode ser desfeito.",
+ "dawarichHomePlaceSet": "A casa está definida.",
+ "dawarichHomePlaceMissing": "Defina a sua casa para que o tempo fora de casa possa ser medido.",
+ "dawarichHomeCountryIs": "País de residência: {country}.",
+ "dawarichHomeCountryMissing": "Ainda não há país de residência, então não há dias de viagem.",
+ "dawarichDaysStored": "Dias armazenados: {count}",
+ "dawarichHomePlace": "Casa",
+ "dawarichHomePlaceChoose": "Escolha um lugar do Dawarich",
+ "dawarichHomePlaceChange": "Escolher casa",
+ "dawarichHomeCountry": "País de residência",
+ "dawarichHomeCountryHelp": "Código de país com duas letras, como BR. Se ficar em branco, conta o país onde você passou mais dias no último ano.",
"dawarichHomeSave": "Salvar",
- "dawarichHomeSaved": "Local de casa salvo",
+ "dawarichHomeSaved": "Salvo.",
"dawarichErrors": {
- "invalid": "Configuração inválida.",
- "privateOrigin": "Origem privada exige aprovação da administração.",
- "credentials": "Credenciais rejeitadas.",
- "unreachable": "Não foi possível alcançar o Dawarich.",
+ "invalid": "Esse endereço não funciona. Use o endereço da instância sem credenciais.",
+ "privateOrigin": "Esta instância está em uma rede privada. Peça ao operador do servidor para aprová-la.",
+ "credentials": "O Dawarich não aceitou a chave de API.",
+ "unreachable": "Não foi possível alcançar o Dawarich. Confira o endereço e se a instância está em execução.",
"rateLimited": "Solicitações demais. Espere um momento e tente novamente.",
- "homePlaceUnknown": "Local de casa desconhecido.",
- "notConnected": "Não conectado.",
- "generic": "Erro desconhecido ao conectar."
+ "homePlaceUnknown": "A instância do Dawarich não conhece mais este lugar.",
+ "notConnected": "O Dawarich não está conectado.",
+ "generic": "Não deu certo. Tente de novo."
},
"fitbitRetirement": {},
"moduleState": {}
@@ -8962,7 +8962,7 @@
"askMedicationName": "Especifique um medicamento, por exemplo tomado Ramipril.",
"medicationNotFoundExact": "Medicamento não encontrado. Envie o nome exatamente como está no HealthLog.",
"helpHeader": "Comandos disponíveis:",
- "helpBody": "/help: mostrar esta ajuda\n/add: registrar uma dose\n/start: iniciar o bot\n\nComandos de texto:\ntomado <nome>: confirmar uma dose\n\nBotões nos lembretes:\n• Tomado: confirmar dose\n• 🕐 1h / 🕐 3h: adiar lembrete\n• ⏭ Pular: pular dose\n• ✓ Confirmar: confirmar uma dose perdida",
+ "helpBody": "/help: mostrar esta ajuda\n/add: registrar uma tomada\n/start: iniciar o bot\n\nComandos de texto:\ntaken <nome>: confirmar uma tomada\n\nBotões nos lembretes:\n• Tomado: confirmar a tomada\n• 🕐 1h / 🕐 3h: adiar o lembrete\n• ⏭ Pular: pular a tomada\n• ✓ Confirmar: confirmar uma tomada perdida",
"measureValuePrompt": "Responda com o valor para registrá-lo (opcional).",
"buttonMeasureValue": "Valor…",
"measureValueSaved": "Leitura salva.",
@@ -9127,9 +9127,9 @@
"insights": {
"headline": {
"title": "Seu ciclo e seu corpo",
- "restingHeartRate": "Seu pulso em repouso fica cerca de {delta} {unit} {dir} na fase lútea do que na folicular.",
- "heartRateVariability": "Sua variabilidade da frequência cardíaca fica cerca de {delta} {unit} {dir} na fase lútea do que na folicular.",
- "generic": "Seu {metric} fica cerca de {delta} {unit} {dir} na fase lútea do que na folicular.",
+ "restingHeartRate": "Seu pulso em repouso fica cerca de {delta} {dir} na fase lútea do que na folicular.",
+ "heartRateVariability": "Sua variabilidade da frequência cardíaca fica cerca de {delta} {dir} na fase lútea do que na folicular.",
+ "generic": "Seu {metric} fica cerca de {delta} {dir} na fase lútea do que na folicular.",
"dirHigher": "mais alto",
"dirLower": "mais baixo",
"empty": "Ainda não há ciclos e leituras suficientes para revelar um padrão de fase. Continue registrando; isso se preenche conforme seu histórico cresce."
@@ -9137,7 +9137,7 @@
"crosstab": {
"description": "Como cada medição se compara entre suas fases lútea e folicular, nos seus próprios dados.",
"pairLabel": "{metric}: lútea vs folicular",
- "detail": "Lútea {lutealAvg} {unit} ({lutealDays} dias) vs folicular {follicularAvg} {unit} ({follicularDays} dias).",
+ "detail": "Lútea {lutealAvg} ({lutealDays} dias) vs folicular {follicularAvg} ({follicularDays} dias).",
"metricRestingHeartRate": "Pulso em repouso",
"metricHrv": "Variabilidade da frequência cardíaca",
"metricSleepDuration": "Duração do sono",