diff --git a/public/locales/pt-BR/chores.json b/public/locales/pt-BR/chores.json new file mode 100644 index 0000000..7e4df50 --- /dev/null +++ b/public/locales/pt-BR/chores.json @@ -0,0 +1,75 @@ +{ + "title": "Tarefas", + "myChores": "Minhas tarefas", + "allChores": "Todas as tarefas", + "addChore": "Adicionar tarefa", + "editChore": "Editar tarefa", + "deleteChore": "Excluir tarefa", + "completeChore": "Concluir tarefa", + "dueDate": "Data de vencimento", + "assignedTo": "Atribuída a", + "priority": "Prioridade", + "status": "Status", + "description": "Descrição", + "choreView": { + "assignment": "Atribuição", + "assigned": "Atribuída", + "last": "Última", + "schedule": "Agendamento", + "due": "Vence em", + "statistics": "Estatísticas", + "completed": "Concluída", + "times": "vezes", + "details": "Detalhes", + "createdBy": "Criada por", + "na": "N/D", + "taskCompleted": "Tarefa concluída", + "taskCompletedMessage": "Sua tarefa foi marcada como concluída", + "taskCompletionUndone": "A conclusão da tarefa foi desfeita.", + "taskSkipUndone": "O pulo da tarefa foi desfeito.", + "undoSuccessful": "Desfeito com sucesso", + "undoFailed": "Falha ao desfazer", + "undoFailedMessage": "Não foi possível desfazer a ação. Tente novamente.", + "resetTimer": "Reiniciar cronômetro", + "resetTimerConfirmation": "Tem certeza de que deseja reiniciar o cronômetro? Isso apagará todos os registros de tempo desde o início da tarefa.", + "clearAllTimeRecords": "Apagar todos os registros de tempo", + "clearAllTimeConfirmation": "Isso apagará permanentemente todos os cronômetros desta tarefa e a marcará como \"não iniciada\".", + "descriptionTitle": "Descrição", + "description": "Descrição :", + "previousNote": "Nota anterior", + "previousNoteLabel": "Nota anterior:", + "subtasksLabel": "Subtarefas :", + "taskActions": "Ações da tarefa", + "addNote": "Adicionar uma nota", + "additionalNotes": "Notas adicionais:", + "notePlaceholder": "Adicione uma nota sobre a conclusão...", + "setCustomCompletionTime": "Definir horário de conclusão personalizado", + "skipTask": "Pular tarefa", + "skipTaskConfirmation": "Tem certeza de que deseja pular esta tarefa?", + "markComplete": "Marcar como concluída", + "markAsDone": "Marcar como concluída", + "edit": "Editar", + "archive": "Arquivar", + "unarchive": "Desarquivar", + "viewHistory": "Ver histórico", + "history": "Histórico", + "startTimer": "Iniciar cronômetro", + "start": "Iniciar", + "pauseTimer": "Pausar cronômetro", + "approve": "Aprovar", + "reject": "Rejeitar", + "pendingApproval": "Aguardando aprovação", + "undo": "Desfazer", + "skip": "Pular", + "cancel": "Cancelar", + "noPriority": "Sem prioridade", + "subtasks": "Subtarefas", + "noDescription": "Nenhuma descrição disponível", + "timer": { + "active": "Cronômetro ativo", + "paused": "Cronômetro pausado", + "reset": "Reiniciar cronômetro", + "delete": "Excluir sessão" + } + } +} diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json new file mode 100644 index 0000000..b7e0901 --- /dev/null +++ b/public/locales/pt-BR/common.json @@ -0,0 +1,33 @@ +{ + "save": "Salvar", + "cancel": "Cancelar", + "delete": "Excluir", + "edit": "Editar", + "close": "Fechar", + "confirm": "Confirmar", + "loading": "Carregando...", + "error": "Erro", + "success": "Sucesso", + "warning": "Aviso", + "refresh": "Atualizar", + "copy": "Copiar", + "copied": "Copiado!", + "settings": "Configurações", + "yes": "Sim", + "no": "Não", + "back": "Voltar", + "backToCalendar": "Voltar ao calendário", + "logout": "Sair", + "version": "Versão", + "navigation": { + "allTasks": "Todas as tarefas", + "archived": "Arquivadas", + "things": "Itens", + "labels": "Etiquetas", + "projects": "Projetos", + "filters": "Filtros", + "activities": "Atividades", + "points": "Pontos", + "settings": "Configurações" + } +} diff --git a/public/locales/pt-BR/settings.json b/public/locales/pt-BR/settings.json new file mode 100644 index 0000000..fa7787f --- /dev/null +++ b/public/locales/pt-BR/settings.json @@ -0,0 +1,174 @@ +{ + "title": "Configurações", + "circleSettings": { + "title": "Configurações do círculo", + "description": "Sua conta é conectada automaticamente a um círculo quando você cria ou entra em um. Convide amigos facilmente compartilhando o código ou link exclusivo do círculo abaixo. Você receberá uma notificação abaixo quando alguém solicitar entrar no seu círculo. Se quiser sair, basta clicar no botão \"Sair do círculo\".", + "circleCode": "Código do círculo", + "copyCode": "Copiar código", + "copyLink": "Copiar link", + "codeCopied": "Código do círculo copiado!", + "linkCopied": "Link do círculo copiado!", + "joinCircle": "Entrar em um círculo", + "joinCirclePlaceholder": "Digite o código do círculo", + "join": "Entrar", + "leave": "Sair do círculo", + "leaveConfirmTitle": "Sair do círculo", + "leaveConfirmMessage": "Tem certeza de que deseja sair deste círculo?", + "circleMembers": "Membros do círculo", + "circleMemberRequests": "Solicitações de entrada no círculo", + "admin": "Administrador", + "member": "Membro", + "pending": "Pendente", + "accept": "Aceitar", + "reject": "Rejeitar", + "makeAdmin": "Tornar administrador", + "makeMember": "Tornar membro", + "remove": "Remover", + "webhookURL": "URL do webhook", + "webhookDescription": "Digite uma URL de webhook para receber notificações de eventos do círculo", + "webhookPlaceholder": "https://sua-url-de-webhook.com" + }, + "accountSettings": { + "title": "Configurações da conta", + "subscription": "Assinatura", + "subscriptionStatus": "Plano atual", + "free": "Gratuito", + "plus": "Plus", + "upgrade": "Fazer upgrade", + "cancel": "Cancelar", + "changePassword": "Alterar senha", + "password": "Senha", + "dangerZone": "Zona de perigo", + "dangerZoneDescription": "Após excluir sua conta, não há como voltar atrás. Tenha certeza antes de confirmar.", + "deleteAccount": "Excluir conta" + }, + "localization": { + "title": "Localização", + "description": "Personalize idioma, formato de data e preferências regionais da sua conta.", + "language": "Idioma", + "languageDescription": "Selecione seu idioma preferido", + "dateFormat": "Formato de data", + "dateFormatDescription": "Escolha como as datas devem ser exibidas no aplicativo", + "timeFormat": "Formato de hora", + "timeFormatDescription": "Selecione o formato de 12 ou 24 horas", + "12hour": "12 horas (AM/PM)", + "24hour": "24 horas", + "firstDayOfWeek": "Primeiro dia da semana", + "firstDayOfWeekDescription": "Selecione com qual dia sua semana começa", + "sunday": "Domingo", + "monday": "Segunda-feira", + "saturday": "Sábado", + "formats": { + "mdy": "MM/DD/AAAA (EUA)", + "dmy": "DD/MM/AAAA (Europa)", + "ymd": "AAAA-MM-DD (ISO)", + "long": "Formato longo (ex.: 1 de janeiro de 2024)", + "short": "Formato curto (ex.: 1 de jan de 2024)" + } + }, + "sidepanel": { + "title": "Personalização do painel lateral", + "description": "Personalize o layout e a visibilidade dos cartões no painel lateral. Esta seção está disponível apenas em dispositivos com telas grandes, como tablets e computadores." + }, + "theme": { + "title": "Preferências de tema", + "description": "Escolha a aparência do site. Selecione um único tema ou sincronize com o sistema para alternar automaticamente entre os temas claro e escuro.", + "themeMode": "Modo do tema", + "light": "Claro", + "dark": "Escuro", + "system": "Sistema" + }, + "notifications": { + "settingsSaved": "Configurações salvas com sucesso", + "settingsSaveFailed": "Falha ao salvar as configurações", + "invalidWebhook": "URL de webhook inválida" + }, + "profile": { + "title": "Configurações do perfil", + "description": "Atualize seu nome de exibição e foto de perfil.", + "photoUpdated": "Foto atualizada", + "photoUpdatedMessage": "Sua foto de perfil foi atualizada com sucesso!", + "uploadFailed": "Falha no envio", + "uploadFailedMessage": "Falha ao enviar sua foto. Tente novamente.", + "profileUpdated": "Perfil atualizado", + "profileUpdatedMessage": "As informações do seu perfil foram salvas com sucesso!", + "updateFailed": "Falha na atualização", + "updateFailedMessage": "Não foi possível atualizar seu perfil. Verifique sua conexão e tente novamente.", + "changePhoto": "Alterar foto", + "displayName": "Nome de exibição", + "displayNamePlaceholder": "Digite seu nome de exibição", + "timezone": "Fuso horário", + "timezonePlaceholder": "Selecione seu fuso horário", + "save": "Salvar", + "cancel": "Cancelar" + }, + "overview": { + "title": "Configurações", + "subtitle": "Personalize sua experiência e gerencie as preferências da sua conta", + "upgrade": { + "title": "Faça upgrade para o Plus", + "description": "Desbloqueie recursos poderosos para aumentar sua produtividade", + "button": "Fazer upgrade agora", + "features": { + "richText": "Descrições com texto formatado", + "notifications": "Notificações de tarefas", + "apiIntegrations": "Integrações de API", + "advancedAutomation": "Automação avançada" + } + }, + "sections": { + "profile": { + "title": "Configurações do perfil", + "description": "Atualize as informações do seu perfil, foto, nome de exibição e preferências de fuso horário." + }, + "circle": { + "title": "Configurações do círculo", + "description": "Gerencie seu círculo, convide membros e cuide das solicitações de entrada." + }, + "account": { + "title": "Configurações da conta", + "description": "Gerencie sua assinatura, altere a senha e as opções de exclusão de conta." + }, + "subaccounts": { + "title": "Contas gerenciadas", + "description": "Crie e gerencie subcontas para fazer login e concluir tarefas atribuídas." + }, + "notifications": { + "title": "Notificações", + "description": "Configure notificações push, alertas por e-mail e destinos de notificação para tarefas." + }, + "mfa": { + "title": "Autenticação multifator", + "description": "Adicione uma camada extra de segurança com MFA usando aplicativos autenticadores." + }, + "apitokens": { + "title": "Tokens de API", + "description": "Gere e gerencie tokens de acesso para integrações de terceiros e acesso à API." + }, + "storage": { + "title": "Configurações de armazenamento", + "description": "Faça backup e restauração dos seus dados, gerencie o armazenamento local e as preferências de sincronização." + }, + "sidepanel": { + "title": "Personalização do painel lateral", + "description": "Personalize o layout e a visibilidade dos cartões na interface do painel lateral." + }, + "theme": { + "title": "Preferências de tema", + "description": "Escolha seu tema preferido e configure o modo claro/escuro." + }, + "localization": { + "title": "Localização", + "description": "Personalize idioma, formato de data, formato de hora e preferências regionais." + }, + "advanced": { + "title": "Configurações avançadas", + "description": "Configure webhooks, atualizações em tempo real e outros recursos avançados para mais produtividade." + }, + "developer": { + "title": "Configurações de desenvolvedor", + "description": "Veja informações técnicas sobre tokens de autenticação, conexões SSE e dados de depuração." + } + } + } +} diff --git a/src/contexts/LocalizationContext.jsx b/src/contexts/LocalizationContext.jsx index bfd5016..6924272 100644 --- a/src/contexts/LocalizationContext.jsx +++ b/src/contexts/LocalizationContext.jsx @@ -25,6 +25,7 @@ export const AVAILABLE_LANGUAGES = [ { code: 'es', name: 'Spanish', nativeName: 'Español' }, { code: 'fr', name: 'French', nativeName: 'Français' }, { code: 'nl', name: 'Dutch', nativeName: 'Nederlands' }, + { code: 'pt-BR', name: 'Portuguese (Brazil)', nativeName: 'Português (Brasil)' }, ] export const LocalizationProvider = ({ children }) => {