diff --git a/frontend/src/i18n/config.ts b/frontend/src/i18n/config.ts index 343b1581..d1aca46e 100644 --- a/frontend/src/i18n/config.ts +++ b/frontend/src/i18n/config.ts @@ -34,18 +34,18 @@ i18n translation: nlTranslations, }, }, - + interpolation: { escapeValue: false, }, // Use v4 format for pluralization (_one/_other instead of _plural suffix) compatibilityJSON: 'v4', - + detection: { order: ['localStorage', 'cookie', 'navigator', 'htmlTag'], caches: ['localStorage', 'cookie'], }, }); -export default i18n; \ No newline at end of file +export default i18n; diff --git a/frontend/src/i18n/locales/pt.json b/frontend/src/i18n/locales/pt.json index 495baaf1..efda8e54 100644 --- a/frontend/src/i18n/locales/pt.json +++ b/frontend/src/i18n/locales/pt.json @@ -1,12 +1,12 @@ { "userManagement": { "title": "Gerenciamento de Usuários", - "subtitle": "Gerencie usuários administradores e convites", + "subtitle": "Gerenciar usuários administradores e convites", "loading": "Carregando usuários...", - "loadError": "Falha ao carregar usuários. Por favor, tente novamente.", + "loadError": "Falha ao carregar usuários. Tente novamente.", "inviteUser": "Convidar Usuário", "createInvitation": "Criar Convite", - "email": "Endereço de email", + "email": "Endereço de E-mail", "emailPlaceholder": "usuario@exemplo.com", "role": "Função", "selectRole": "Selecione uma função", @@ -25,7 +25,7 @@ "userDeactivated": "Usuário desativado com sucesso", "deactivateUserError": "Falha ao desativar usuário", "noRole": "Sem Função", - "neverLoggedIn": "Nunca fez login", + "neverLoggedIn": "Nunca acessou", "expired": "Expirado", "deactivate": "Desativar", "cancel": "Cancelar", @@ -45,18 +45,18 @@ }, "table": { "user": "Usuário", - "email": "Email", + "email": "E-mail", "role": "Função", "status": "Status", - "lastLogin": "Último Login", + "lastLogin": "Último Acesso", "actions": "Ações", - "invitedBy": "Convidado Por", - "expires": "Expira" + "invitedBy": "Convidado por", + "expires": "Expira em" }, "validation": { - "emailRequired": "Email é obrigatório", - "emailInvalid": "Formato de email inválido", - "roleRequired": "Função é obrigatória" + "emailRequired": "O e-mail é obrigatório", + "emailInvalid": "Formato de e-mail inválido", + "roleRequired": "A função é obrigatória" }, "searchUsersPlaceholder": "Buscar usuários...", "searchInvitationsPlaceholder": "Buscar convites...", @@ -66,7 +66,7 @@ "noInvitationsFound": "Nenhum convite corresponde à sua busca", "confirmDeactivate": { "title": "Desativar Usuário", - "message": "Tem certeza que deseja desativar {{name}}? Ele(a) não poderá mais fazer login." + "message": "Tem certeza que deseja desativar {{name}}? Eles não poderão mais fazer login." }, "confirmCancelInvitation": { "title": "Cancelar Convite", @@ -95,7 +95,7 @@ "change": "Alterar", "remove": "Remover", "download": "Baixar", - "downloadAll": "Baixar Tudo", + "downloadAll": "Baixar Todos", "uploading": "Enviando...", "uploaded": "Enviado", "photo": "foto", @@ -106,11 +106,11 @@ "restore": "Restaurar", "actions": "Ações", "refresh": "Atualizar", - "preview": "Pré-visualização", + "preview": "Prévia", "processing": "Processando...", "upload": "Enviar", "days": "dias", - "customize": "Personalizar", + "customize": "Customizar", "hide": "Ocultar", "unknown": "Desconhecido", "notSet": "Não definido", @@ -118,7 +118,7 @@ "up": "Cima", "select": "Selecionar", "selected": "Selecionado", - "chunk": "Lote", + "chunk": "Fragmento", "optional": "opcional" }, "upload": { @@ -128,23 +128,23 @@ "clickToUpload": "Clique para enviar ou arraste e solte", "fileRequirements": "JPEG, PNG ou WebP (máx. 50MB por arquivo, {{limit}} arquivos por envio)", "fileRequirementsMedia": "Imagens JPEG, PNG ou WebP, além de vídeos MP4/MOV/WEBM (máx. 50MB por arquivo, {{limit}} arquivos por envio)", - "unsupportedFiles": "Alguns arquivos foram ignorados porque o formato não é compatível (use JPEG/PNG/WebP/MP4/MOV/WEBM).", + "unsupportedFiles": "Alguns arquivos foram ignorados pois o formato não é suportado (use JPEG/PNG/WebP/MP4/MOV/WEBM).", "selectedFiles": "Arquivos selecionados", "uploading": "Enviando...", "uploadComplete": "Envio concluído!", "uploadFailed": "Falha no envio", - "someFilesFailed": "Alguns arquivos falharam ao enviar", + "someFilesFailed": "Falha ao enviar alguns arquivos", "replaceByName": "Substituir fotos existentes com o mesmo nome", "replacedFiles": "{{count}} foto(s) substituída(s)", "uploadPhotos": "Enviar Fotos", "uploadMedia": "Enviar Fotos e Vídeos", "importExternal": "Importar de Pasta Externa", "externalImportInfo": "Todas as imagens da pasta selecionada serão importadas.", - "selectExternalFolder": "Selecionar pasta externa em /external-media", + "selectExternalFolder": "Selecione a pasta externa em /external-media", "importFromSelectedFolder": "Importar da pasta selecionada", "maxFilesReached": "Máximo de {{limit}} arquivos permitido", - "someFilesSkipped": "Apenas {{allowed}} arquivo(s) pode(m) ser adicionado(s) (limite {{limit}})", - "tooManyFiles": "Máximo de {{limit}} arquivos podem ser enviados de uma vez", + "someFilesSkipped": "Apenas {{allowed}} arquivos adicionais podem ser adicionados (limite {{limit}})", + "tooManyFiles": "O limite máximo é de {{limit}} arquivos por vez", "limitInfo": "{{selected}} de {{limit}} arquivos selecionados ({{remaining}} restantes)", "limitReached": "Limite de envio atingido ({{limit}} arquivos por lote)", "uploadingChunks": "Enviando {{count}} arquivos em {{total}} lotes...", @@ -158,18 +158,18 @@ "settings": "Configurações", "eventTypes": "Tipos de Evento", "branding": "Identidade Visual", - "analytics": "Análises", - "emailSettings": "Configurações de Email", + "analytics": "Análise", + "emailSettings": "Configurações de E-mail", "backup": "Backup e Restauração", "cmsPages": "Páginas CMS", "users": "Usuários" }, "archives": { "title": "Arquivos", - "subtitle": "Gerencie galerias de fotos arquivadas", + "subtitle": "Gerenciar galerias de fotos arquivadas", "loadingArchives": "Carregando arquivos...", "totalArchives": "Total de Arquivos", - "storageUsed": "Armazenamento Usado", + "storageUsed": "Espaço Utilizado", "totalPhotos": "Total de Fotos", "avgArchiveSize": "Tamanho Médio do Arquivo", "searchPlaceholder": "Buscar arquivos...", @@ -184,21 +184,21 @@ "tableHeaders": { "event": "Evento", "type": "Tipo", - "archivedDate": "Data de Arquivo", + "archivedDate": "Data de Arquivamento", "size": "Tamanho", "photos": "Fotos", "actions": "Ações" }, "noArchivesFound": "Nenhum arquivo encontrado", - "eventDateNA": "Data do evento: N/D", + "eventDateNA": "Data do evento: N/A", "processing": "Processando...", "download": "Baixar", "restore": "Restaurar", "delete": "Excluir", - "showing": "Exibindo {{from}} a {{to}} de {{total}} arquivos", + "showing": "Mostrando de {{from}} a {{to}} de {{total}} arquivos", "page": "Página {{current}} de {{total}}", "storageManagement": "Gerenciamento de Armazenamento", - "storageInfo": "Os arquivos são armazenados permanentemente, a menos que sejam excluídos manualmente. Considere implementar uma política de retenção para gerenciar os custos de armazenamento.", + "storageInfo": "Arquivos são armazenados permanentemente, a menos que sejam excluídos manualmente. Considere implementar uma política de retenção para gerenciar custos.", "confirmRestore": "Tem certeza que deseja restaurar este arquivo? O evento ficará ativo novamente.", "confirmDelete": "Tem certeza que deseja excluir permanentemente este arquivo? Esta ação não pode ser desfeita.", "restoreSuccess": "Arquivo restaurado com sucesso", @@ -210,23 +210,23 @@ "enterPassword": "Digite a Senha da Galeria", "passwordPlaceholder": "Digite a senha da galeria", "invalidPassword": "Senha inválida", - "wrongPassword": "Senha incorreta. Por favor, verifique sua senha e tente novamente.", - "tooManyAttempts": "Muitas tentativas de login malsucedidas. Por favor, tente novamente mais tarde.", + "wrongPassword": "Senha incorreta. Verifique e tente novamente.", + "tooManyAttempts": "Muitas tentativas falhas. Tente novamente mais tarde.", "sessionExpired": "Sessão expirada", "pleaseEnterPassword": "Por favor, digite uma senha", - "passwordHint": "A senha foi fornecida pelo organizador do evento. Entre em contato com ele se você não a tiver." + "passwordHint": "A senha foi fornecida pelo organizador do evento. Entre em contato se não a tiver." }, "gallery": { "title": "Galeria de Fotos", "welcomeMessage": "Mensagem de Boas-vindas", "expiresOn": "Expira em", "expires": "Expira", - "expired": "Expirado", + "expired": "Expirada", "daysRemaining": "{{days}} dias restantes", "dayRemaining": "1 dia restante", "hoursRemaining": "{{hours}} horas restantes", "expiredMessage": "Esta galeria expirou em {{date}}", - "contactOrganizer": "Por favor, entre em contato com o organizador do evento se precisar de acesso a essas fotos.", + "contactOrganizer": "Entre em contato com o organizador do evento se precisar de acesso a estas fotos", "searchPhotos": "Buscar fotos por nome de arquivo...", "sortByDate": "Ordenar por Data", "sortByName": "Ordenar por Nome", @@ -234,13 +234,13 @@ "allPhotos": "Todas as Fotos", "filter": "Filtrar", "feedbackFilter": "Filtro de Feedback", - "all": "Todas", + "all": "Todos", "liked": "Curtidas", "favorited": "Favoritadas", - "favorites": "Favoritos", + "favorites": "Favoritas", "downloadSelected": "Baixar {{count}} Selecionadas", "shareGallery": "Compartilhar Galeria", - "needHelp": "Precisa de ajuda? Entre em contato em", + "needHelp": "Precisa de ajuda? Contate-nos em", "noPhotosFound": "Nenhuma foto encontrada", "failedToLoad": "Falha ao carregar fotos", "tryAgain": "Tentar Novamente", @@ -248,28 +248,28 @@ "expiredOn": "Esta galeria expirou em {{date}}.", "expiresIn": "A galeria expira em {{count}} dia", "expiresIn_plural": "A galeria expira em {{count}} dias", - "downloadBefore": "Baixe suas fotos antes que elas não estejam mais disponíveis.", - "publicGalleryTitle": "Esta galeria é de acesso público", + "downloadBefore": "Baixe suas fotos antes que fiquem indisponíveis.", + "publicGalleryTitle": "Esta galeria é acessível ao público", "publicGallerySubtitle": "Carregando as fotos agora...", "viewGallery": "Ver Galeria", - "downloadAll": "Baixar Tudo", + "downloadAll": "Baixar Todas", "downloading": "Baixando {{count}} foto...", "downloading_plural": "Baixando {{count}} fotos...", "downloadedPhotos": "{{count}} foto baixada!", "downloadedPhotos_plural": "{{count}} fotos baixadas!", - "downloadError": "Algumas fotos falharam ao baixar", + "downloadError": "Algumas fotos não puderam ser baixadas", "selectPhotos": "Selecionar Fotos", "cancelSelection": "Cancelar Seleção", "photosSelected": "{{count}} selecionadas", - "selectAll": "Selecionar Tudo", - "deselectAll": "Desmarcar Tudo", + "selectAll": "Selecionar Todas", + "deselectAll": "Desmarcar Todas", "deleteSelected": "Excluir Selecionadas", "photosCount": "{{count}} foto", "photosCount_plural": "{{count}} fotos", - "searchByFilename": "Buscar por nome de arquivo...", + "searchByFilename": "Buscar por nome do arquivo...", "uncategorized": "Sem categoria", - "sortAscending": "Ordenar crescente", - "sortDescending": "Ordenar decrescente", + "sortAscending": "Ordem crescente", + "sortDescending": "Ordem decrescente", "remaining": "restantes", "selectPhotosHint": "Dica: Use Ctrl+Clique (Cmd+Clique no Mac) para selecionar várias fotos rapidamente", "filters": "Filtros", @@ -280,8 +280,8 @@ "categories": "Categorias", "mediaType": "Mídia", "allMedia": "Toda a mídia", - "photosOnly": "Fotos", - "videosOnly": "Vídeos", + "photosOnly": "Apenas Fotos", + "videosOnly": "Apenas Vídeos", "download": "Baixar", "noMedia": "Nenhuma mídia enviada ainda", "searchPlaceholder": "Buscar fotos...", @@ -291,7 +291,7 @@ "photoGallery": "Galeria de Fotos", "photos": "Fotos", "allRightsReserved": "Todos os direitos reservados", - "searchMemories": "Buscar memórias...", + "searchMemories": "Buscar lembranças...", "thankYou": "Obrigado", "thankYouMessage": "Por fazer parte da nossa história e tornar nosso dia especial inesquecível.", "feedback": { @@ -299,11 +299,11 @@ "shareThoughts": "Compartilhe sua opinião sobre \"{{name}}\"", "rateThisMoment": "Avalie este momento", "comments": "Comentários", - "noComments": "Nenhum comentário ainda. Seja o primeiro!", + "noComments": "Ainda sem comentários. Seja o primeiro!", "yourName": "Seu nome", - "yourEmail": "Seu email", + "yourEmail": "Seu e-mail", "writeLovelyNote": "Escreva uma mensagem carinhosa...", - "postComment": "Publicar Comentário", + "postComment": "Postar Comentário", "anonymous": "Anônimo" }, "rated": "Avaliado", @@ -314,9 +314,9 @@ "global": "Categorias Globais", "eventSpecific": "Categorias Específicas do Evento", "addCategory": "Adicionar Categoria", - "organizationInfo": "Organize suas fotos em categorias. As categorias ajudam os convidados a navegar e encontrar tipos específicos de fotos.", + "organizationInfo": "Organize suas fotos em categorias. Elas ajudam os convidados a navegar e encontrar tipos específicos de fotos.", "eventSpecificCategories": "Categorias Específicas do Evento", - "noEventSpecificCategories": "Sem categorias específicas do evento. As categorias globais estão disponíveis por padrão.", + "noEventSpecificCategories": "Sem categorias específicas. As categorias globais estão disponíveis por padrão.", "globalCategoriesAlwaysAvailable": "Categorias Globais (sempre disponíveis):", "deleteCategoryTitle": "Excluir categoria", "categoryCreatedSuccess": "Categoria criada com sucesso", @@ -325,29 +325,29 @@ "failedToDeleteCategory": "Falha ao excluir categoria", "categoryName": "Nome da categoria", "noCategory": "Sem categoria", - "noCategoriesYet": "Nenhuma categoria ainda. Crie sua primeira categoria para organizar as fotos.", - "deleteConfirm": "Tem certeza de que deseja excluir \"{{name}}\"?", + "noCategoriesYet": "Ainda não há categorias. Crie sua primeira categoria para organizar as fotos.", + "deleteConfirm": "Tem certeza que deseja excluir \"{{name}}\"?", "cannotDelete": "Não é possível excluir uma categoria com fotos. Reatribua as fotos primeiro.", "setCoverPhoto": "Definir Foto de Capa", "removeCoverPhoto": "Remover Foto de Capa", "coverPhotoSet": "Foto de capa definida com sucesso", "coverPhotoRemoved": "Foto de capa removida", "failedToSetCoverPhoto": "Falha ao definir foto de capa", - "categoryHeroHint": "Se nenhuma foto de capa for definida para uma categoria, a foto hero padrão será utilizada." + "categoryHeroHint": "Se nenhuma foto de capa for definida, a foto de destaque padrão será usada." }, "events": { "title": "Eventos", "create": "Criar", "createEvent": "Criar Evento", - "totalViews": "Total de Visualizações", - "totalDownloads": "Total de Downloads", + "totalViews": "Visualizações Totais", + "totalDownloads": "Downloads Totais", "uniqueVisitors": "Visitantes Únicos", "createNewEvent": "Criar Novo Evento", - "setupNewGallery": "Configure uma nova galeria de fotos para seu evento", + "setupNewGallery": "Configure uma nova galeria para seu evento", "createNewEventSubtitle": "Configure uma nova galeria de fotos para seu evento", - "eventNamePlaceholder": "Ex.: Casamento de João e Maria", - "welcomeMessageOptional": "Mensagem de Boas-Vindas (Opcional)", - "welcomeMessagePlaceholder": "Bem-vindo(a) ao nosso dia especial! Sinta-se à vontade para baixar e compartilhar essas memórias...", + "eventNamePlaceholder": "ex: Casamento de João e Maria", + "welcomeMessageOptional": "Mensagem de Boas-vindas (Opcional)", + "welcomeMessagePlaceholder": "Bem-vindo ao nosso dia especial! Sinta-se à vontade para baixar e compartilhar...", "hostEmailPlaceholder": "cliente@exemplo.com", "adminEmailPlaceholder": "admin@exemplo.com", "adminEmailPickFromAdmins": "Escolher entre administradores:", @@ -358,7 +358,7 @@ "passwordPlaceholder": "Digite uma senha segura", "confirmPasswordPlaceholder": "Confirme a senha", "galleryExpiresOn": "A galeria expirará em {{date}}", - "guestsWillReceiveWarning": "Os convidados receberão um email de aviso 7 dias antes da expiração.", + "guestsWillReceiveWarning": "Os convidados receberão um e-mail de aviso 7 dias antes da expiração.", "types": { "wedding": "Casamento", "birthday": "Aniversário", @@ -369,18 +369,18 @@ "default": "Padrão", "oceanBlue": "Azul Oceano", "royalPurple": "Roxo Real", - "roseGold": "Ouro Rosé", + "roseGold": "Rosa Ouro", "sunsetAmber": "Âmbar Pôr do Sol" }, "eventDetails": "Detalhes do Evento", "eventName": "Nome do Evento", "eventType": "Tipo de Evento", "eventDate": "Data do Evento", - "hostEmail": "Email do Cliente", + "hostEmail": "E-mail do Cliente", "hostName": "Nome do Cliente", "hostNamePlaceholder": "João Silva", - "adminEmail": "Email do Administrador", - "adminNotificationEmail": "Email de Notificação do Administrador", + "adminEmail": "E-mail do Administrador", + "adminNotificationEmail": "E-mail de Notificação do Admin", "expirationDate": "Data de Expiração", "active": "Ativo", "archived": "Arquivado", @@ -392,38 +392,38 @@ "viewGallery": "Ver Galeria", "uploadPhotos": "Enviar Fotos", "archiveEvent": "Arquivar Evento", - "archiveConfirm": "Tem certeza de que deseja arquivar este evento? Esta ação não pode ser desfeita.", + "archiveConfirm": "Tem certeza que deseja arquivar este evento? Esta ação não pode ser desfeita.", "extendExpiration": "Estender {{days}} Dias", - "backToEvents": "Voltar aos Eventos", + "backToEvents": "Voltar para Eventos", "loadingEventDetails": "Carregando detalhes do evento...", "saveChanges": "Salvar Alterações", "eventExpired": "Este evento expirou", "eventExpiresIn": "Este evento expira em {{days}} dias", - "guestsNoAccess": "Os convidados não podem mais acessar a galeria. Considere arquivar este evento.", - "warningEmailsSent": "Emails de aviso foram enviados ao cliente.", + "guestsNoAccess": "Convidados não podem mais acessar a galeria. Considere arquivar este evento.", + "warningEmailsSent": "E-mails de aviso foram enviados para o cliente.", "overview": "Visão Geral", "photos": "Fotos", "categories": "Categorias", "eventInformation": "Informações do Evento", "sourceMode": "Modo de Origem", - "sourceModeManaged": "Gerenciado (enviar para o PicPeak)", + "sourceModeManaged": "Gerenciado (upload para o PicPeak)", "sourceModeReference": "Referenciar pasta externa", "sourceModeHelp": "Use o modo gerenciado para uploads diretos ou aponte para uma pasta /external-media montada ao usar armazenamento local.", "externalFolder": "Pasta Externa", - "externalFolderHint": "Essas pastas são lidas do ponto de montagem /external-media dentro do seu container ou host.", + "externalFolderHint": "Estas pastas são lidas da montagem /external-media no seu contêiner ou host.", "externalFolderRequired": "Selecione uma pasta externa antes de salvar.", "externalFolderEmpty": "Sem subpastas", "clearSelection": "Limpar", - "welcomeMessage": "Mensagem de Boas-Vindas", - "noWelcomeMessage": "Nenhuma mensagem de boas-vindas definida", + "welcomeMessage": "Mensagem de Boas-vindas", + "noWelcomeMessage": "Nenhuma mensagem definida", "created": "Criado", "expires": "Expira", - "shareWithGuests": "Compartilhe este link com os convidados. Eles precisarão da senha para acessar a galeria.", + "shareWithGuests": "Compartilhe este link com os convidados. Eles precisarão da senha para acessar.", "shareWithGuestsPublic": "Compartilhe este link com os convidados. Nenhuma senha é necessária para esta galeria.", "resetGalleryPassword": "Redefinir Senha da Galeria", - "resendCreationEmail": "Reenviar Email de Criação", - "creationEmailResent": "Email de criação foi colocado na fila para envio", - "failedToResendEmail": "Falha ao reenviar email de criação", + "resendCreationEmail": "Reenviar E-mail de Criação", + "creationEmailResent": "O e-mail de criação foi enfileirado para envio", + "failedToResendEmail": "Falha ao reenviar e-mail de criação", "photoStatistics": "Estatísticas de Fotos", "totalPhotos": "Total de Fotos", "managePhotos": "Gerenciar Fotos", @@ -433,22 +433,22 @@ "views": "Visualizações", "downloads": "Downloads", "noStatistics": "Nenhuma estatística disponível ainda", - "archiveStatus": "Status do Arquivo", - "archivedOn": "Arquivado Em", + "archiveStatus": "Status do Arquivamento", + "archivedOn": "Arquivado em", "downloadArchive": "Baixar Arquivo", "loadingPhotos": "Carregando fotos...", "photoCategories": "Categorias de Fotos", - "organizeCategoriesInfo": "Organize suas fotos em categorias. As categorias ajudam os convidados a navegar e encontrar tipos específicos de fotos.", - "categoriesTip": "Dica: As categorias são específicas para cada evento. Você pode criar categorias personalizadas como \"Cerimônia\", \"Recepção\", \"Retratos\", etc.", + "organizeCategoriesInfo": "Organize suas fotos em categorias para ajudar na navegação.", + "categoriesTip": "Dica: Categorias são específicas de cada evento. Crie nomes como \"Cerimônia\", \"Recepção\", etc.", "contactInformation": "Informações de Contato", "hostEmailHelp": "O cliente receberá notificações de criação e expiração da galeria", "adminEmailHelp": "Receberá notificações do sistema e confirmações de arquivamento", "securityAccess": "Segurança e Acesso", "galleryPassword": "Senha da Galeria", "requirePasswordToggle": "Exigir senha para esta galeria", - "requirePasswordToggleHelp": "Desative isso se quiser compartilhar a galeria sem senha. Qualquer pessoa com o link poderá ver as fotos.", - "publicGalleryWarning": "Galerias públicas são acessíveis a qualquer pessoa com o link. Considere ativar marcas d'água nos downloads e monitorar a atividade.", - "passwordHelperText": "Você pode usar datas como \"04.07.2025\" ou qualquer texto com 6+ caracteres", + "requirePasswordToggleHelp": "Desative se quiser compartilhar a galeria sem senha. Qualquer pessoa com o link poderá ver as fotos.", + "publicGalleryWarning": "Galerias públicas são acessíveis a qualquer pessoa com o link. Considere ativar marcas d'água.", + "passwordHelperText": "Você pode usar datas como \"04.07.2025\" ou qualquer texto com mais de 6 caracteres", "confirmPassword": "Confirmar Senha", "showPasswords": "Mostrar senhas", "newPasswordLabel": "Nova Senha da Galeria", @@ -479,74 +479,74 @@ "themeAndStyle": "Tema e Estilo", "colorTheme": "Tema de Cores", "galleryExpiration": "Expiração da Galeria", - "galleryExpiresIn": "A Galeria Expira Em", + "galleryExpiresIn": "Galeria Expira Em", "daysAfterEvent": "dias após a data do evento", "expiresOn": "Expira em", "galleryWillExpireOn": "A galeria expirará em {{date}}", - "expirationWarning": "Os convidados receberão um email de aviso 7 dias antes da expiração.", + "expirationWarning": "Os convidados receberão um e-mail de aviso 7 dias antes da expiração.", "noExpiration": "Sem Expiração", "noExpirationHelp": "Esta galeria permanecerá ativa até ser arquivada manualmente.", "photoCap": "Limite de Fotos", "photoCapHelp": "Número máximo de fotos permitidas. 0 = ilimitado", - "userUploads": "Configurações de Upload de Convidados", + "userUploads": "Configurações de Upload do Usuário", "allowUserUploads": "Permitir que convidados enviem fotos", - "allowUserUploadsHelp": "Habilitar convidados a enviar suas próprias fotos para esta galeria", - "allowUserUploadsDescription": "Habilitar convidados a enviar suas próprias fotos para esta galeria", + "allowUserUploadsHelp": "Habilite convidados a enviarem suas próprias fotos para esta galeria", + "allowUserUploadsDescription": "Permite que os convidados façam upload de suas próprias fotos", "uploadCategory": "Categoria de Upload", - "selectCategory": "Selecione uma categoria para uploads de convidados", - "uploadCategoryHelp": "Todas as fotos enviadas por convidados serão adicionadas a esta categoria", - "userUploadWarning": "Os uploads de convidados serão moderados e podem ser removidos por administradores a qualquer momento.", + "selectCategory": "Selecione uma categoria para os uploads dos usuários", + "uploadCategoryHelp": "Todas as fotos enviadas por usuários serão adicionadas a esta categoria", + "userUploadWarning": "Uploads de usuários podem ser removidos pelos admins a qualquer momento.", "allowDownloads": "Permitir download de fotos", "allowDownloadsHelp": "Permitir que convidados baixem fotos desta galeria", "downloadPermissions": "Permissões de Download", - "downloadsEnabled": "Downloads Habilitados", - "downloadsDisabled": "Downloads Desabilitados", + "downloadsEnabled": "Downloads Ativados", + "downloadsDisabled": "Downloads Desativados", "downloadProtection": "Proteção de Download", - "disableRightClick": "Bloquear menu de contexto (botão direito)", + "disableRightClick": "Bloquear menu do botão direito", "watermarkDownloads": "Adicionar marca d'água aos downloads", - "enableDevtoolsProtection": "Detectar ferramentas do desenvolvedor", - "useCanvasRendering": "Renderização em canvas (proteção avançada)", - "protectionInfo": "Os recursos de proteção ajudam a evitar downloads não autorizados, mas não podem bloquear todos os métodos.", - "protectionLevelBasic": "Básico - Apenas bloqueio de clique direito", + "enableDevtoolsProtection": "Detectar ferramentas de desenvolvedor", + "useCanvasRendering": "Renderização em Canvas (proteção avançada)", + "protectionInfo": "Recursos de proteção ajudam a evitar downloads não autorizados, mas não bloqueiam todos os métodos.", + "protectionLevelBasic": "Básico - Apenas bloqueio de botão direito", "protectionLevelStandard": "Padrão - Atalhos de teclado bloqueados", - "protectionLevelEnhanced": "Aprimorado - Detecção de print screen", - "protectionLevelMaximum": "Máximo - Detecção de DevTools e renderização em canvas", - "heroLogoSettings": "Configurações do Logo Hero", - "heroLogoVisible": "Exibir logo na seção hero", - "heroLogoSize": "Tamanho do Logo", - "heroLogoSizeSmall": "Pequeno", - "heroLogoSizeMedium": "Médio", + "protectionLevelEnhanced": "Aprimorado - Detecção de Print Screen", + "protectionLevelMaximum": "Máximo - Detecção de DevTools e renderização em Canvas", + "heroLogoSettings": "Configurações da Logo de Destaque (Hero)", + "heroLogoVisible": "Exibir logo na seção de destaque", + "heroLogoSize": "Tamanho da Logo", + "heroLogoSizeSmall": "Pequena", + "heroLogoSizeMedium": "Média", "heroLogoSizeLarge": "Grande", "heroLogoSizeXLarge": "Extra Grande", - "heroLogoPosition": "Posição do Logo", + "heroLogoPosition": "Posição da Logo", "heroLogoPositionTop": "Topo (acima do título)", - "heroLogoPositionCenter": "Centro (entre o título e as datas)", - "heroLogoPositionBottom": "Rodapé (abaixo das datas)", - "heroLogoInfo": "Essas configurações se aplicam quando a galeria usa o layout Hero. Você pode ocultar o logo ou personalizar seu tamanho e posição.", - "eventCustomLogo": "Logo Personalizado do Evento", - "eventCustomLogoDescription": "Envie um logo personalizado para este evento. Isso substitui o logo de identidade visual global somente para esta galeria.", + "heroLogoPositionCenter": "Centro (entre título e datas)", + "heroLogoPositionBottom": "Base (abaixo das datas)", + "heroLogoInfo": "Estas configurações se aplicam ao layout Hero. Você pode ocultar a logo ou personalizar seu tamanho e posição.", + "eventCustomLogo": "Logo Personalizada do Evento", + "eventCustomLogoDescription": "Envie uma logo para este evento. Isso substitui a logo global apenas para esta galeria.", "uploadEventLogo": "Enviar Logo", "replaceLogo": "Substituir", "removeLogo": "Remover", - "eventLogoUploaded": "Logo do evento enviado com sucesso", + "eventLogoUploaded": "Logo do evento enviada com sucesso", "eventLogoUploadFailed": "Falha ao enviar logo do evento", - "eventLogoRemoved": "Logo do evento removido com sucesso", + "eventLogoRemoved": "Logo do evento removida com sucesso", "eventLogoRemoveFailed": "Falha ao remover logo do evento", "heroLogoVisibleLabel": "Logo visível", "heroLogoSizeLabel": "Tamanho", "heroLogoPositionLabel": "Posição", - "heroLogoHidden": "Logo oculto", - "heroPhoto": "Foto Hero", - "heroPhotoHelp": "Selecione uma foto hero padrão para a galeria. Você pode substituí-la por categoria.", - "selectHeroPhoto": "Selecionar Foto Hero", - "noHeroPhotoSelected": "Nenhuma foto hero selecionada", - "heroPhotoSelected": "Foto hero selecionada", - "heroImageAnchor": "Posição de Corte da Imagem Hero", - "heroImageAnchorDescription": "Clique na imagem para definir o ponto focal do corte.", + "heroLogoHidden": "Logo oculta", + "heroPhoto": "Foto de Destaque (Hero)", + "heroPhotoHelp": "Selecione uma foto de destaque padrão. Você pode substituir isso por categoria.", + "selectHeroPhoto": "Selecionar Foto de Destaque", + "noHeroPhotoSelected": "Nenhuma foto selecionada", + "heroPhotoSelected": "Foto de destaque selecionada", + "heroImageAnchor": "Posição de Corte da Imagem de Destaque", + "heroImageAnchorDescription": "Clique na imagem para definir o ponto focal para o corte.", "heroImageAnchorTop": "Topo", "heroImageAnchorCenter": "Centro", - "heroImageAnchorBottom": "Rodapé", - "heroPreview": "Pré-visualização Hero", + "heroImageAnchorBottom": "Base", + "heroPreview": "Prévia do Destaque", "noPhotosAvailable": "Nenhuma foto disponível", "processingRequest": "Processando sua solicitação...", "eventTypeWedding": "Casamento", @@ -564,14 +564,14 @@ "publishConfirm": "Isso tornará a galeria acessível e enviará o e-mail de notificação ao cliente. Continuar?", "publishSuccess": "Galeria publicada e cliente notificado!", "draftBanner": "Esta galeria está em modo rascunho. Envie suas fotos e publique quando estiver pronto.", - "daysLeft": "({{count}} dia restante)", - "daysLeft_plural": "({{count}} dias restantes)", + "daysLeft": "{{count}}d restante", + "daysLeft_plural": "{{count}}d restantes", "subtitle": "Gerencie suas galerias de fotos e eventos", "loadingEvents": "Carregando eventos...", "failedToLoadEvents": "Falha ao carregar eventos", "tryAgain": "Tentar Novamente", "bulkArchiveSuccess": "{{count}} eventos arquivados com sucesso", - "bulkArchivePartial": "{{success}} eventos arquivados, {{failed}} com falha", + "bulkArchivePartial": "{{success}} eventos arquivados, {{failed}} falharam", "deleteSelected": "Excluir selecionados", "bulkDelete": { "title": "Excluir permanentemente {{count}} eventos?", @@ -595,7 +595,7 @@ "archiveSelected": "Arquivar Selecionados", "publicAccess": "Acesso público", "passwordProtected": "Protegido por senha", - "newPasswordRequired": "Por favor, defina uma senha antes de habilitar a proteção.", + "newPasswordRequired": "Defina uma senha antes de ativar a proteção.", "event": "Evento", "type": "Tipo", "date": "Data", @@ -611,35 +611,35 @@ "archiveEventAction": "Arquivar Evento", "downloadArchiveAction": "Baixar Arquivo", "deleteEvent": "Excluir Evento", - "deleteEventConfirm": "Tem certeza de que deseja excluir este evento?", - "downloadArchiveSoon": "Download do arquivo em breve", + "deleteEventConfirm": "Tem certeza que deseja excluir este evento?", + "downloadArchiveSoon": "Download do arquivo disponível em breve", "eventExpiredMessage": "Este evento expirou", - "guestsCannotAccessGallery": "Os convidados não podem mais acessar a galeria. Considere arquivar este evento.", - "warningEmailsHaveBeenSent": "Emails de aviso foram enviados ao cliente.", + "guestsCannotAccessGallery": "Os convidados não podem mais acessar a galeria. Considere arquivá-la.", + "warningEmailsHaveBeenSent": "E-mails de aviso foram enviados ao cliente.", "extendSevenDays": "Estender 7 Dias", - "welcomeMessageLabel": "Mensagem de Boas-Vindas", - "noWelcomeMessageSet": "Nenhuma mensagem de boas-vindas definida", - "createdOn": "Criado", + "welcomeMessageLabel": "Mensagem de Boas-vindas", + "noWelcomeMessageSet": "Nenhuma mensagem definida", + "createdOn": "Criado em", "copy": "Copiar", "copied": "Copiado!", - "organizingPhotosInfo": "Organize suas fotos em categorias. As categorias ajudam os convidados a navegar e encontrar tipos específicos de fotos.", + "organizingPhotosInfo": "Organize suas fotos em categorias para facilitar a navegação.", "archiveStatusTitle": "Status do Arquivo", "downloadingArchive": "Baixando arquivo de {{name}}...", "downloadStarted": "Download iniciado", "failedToDownloadArchive": "Falha ao baixar arquivo", - "statisticsNotAvailable": "Nenhuma estatística disponível ainda", + "statisticsNotAvailable": "Estatísticas não disponíveis ainda", "photoFilters": "Filtros de Fotos", - "noStatisticsAvailableYet": "Nenhuma estatística disponível ainda", + "noStatisticsAvailableYet": "Ainda sem estatísticas", "addPlus": "Adicionar+", "galleryTheme": "Tema da Galeria", - "customizeTheme": "Personalizar Tema", + "customizeTheme": "Customizar Tema", "noThemeSet": "Nenhum tema configurado", - "customizingTheme": "Personalizando tema da galeria", - "customizingThemeFor": "Personalizando tema para {{event}}", - "customCssTemplate": "Modelo de CSS Personalizado", - "customCssTemplateDesc": "Aplique um modelo de CSS personalizado para estilizar a galeria com efeitos visuais únicos.", + "customizingTheme": "Customizando tema da galeria", + "customizingThemeFor": "Customizando tema para {{event}}", + "customCssTemplate": "Modelo CSS Personalizado", + "customCssTemplateDesc": "Aplique um modelo CSS para estilizar a galeria com efeitos visuais únicos.", "noTemplate": "Sem Modelo", - "useThemeOnly": "Usar apenas o tema predefinido", + "useThemeOnly": "Usar apenas predefinição do tema", "customTemplate": "Modelo Personalizado", "rename": { "button": "Renomear", @@ -671,78 +671,78 @@ }, "settings": { "title": "Configurações do Sistema", - "subtitle": "Defina as configurações e preferências globais do sistema", + "subtitle": "Configurar preferências e ajustes globais do sistema", "loadingSettings": "Carregando configurações...", "general": { "title": "Geral", "siteConfiguration": "Configuração do Site", "siteUrl": "URL do Site", - "siteUrlHelp": "Usado para gerar links de galeria nos emails", + "siteUrlHelp": "Usada para gerar links de galeria nos e-mails", "defaultExpiration": "Expiração Padrão (dias)", - "defaultExpirationHelp": "Por quanto tempo as galerias permanecem ativas por padrão", - "maxFileSize": "Tamanho Máximo de Arquivo (MB)", + "defaultExpirationHelp": "Quanto tempo as galerias ficam ativas por padrão", + "maxFileSize": "Tamanho Máx. do Arquivo (MB)", "maxFileSizeHelp": "Tamanho máximo por foto enviada", - "maxFilesPerUpload": "Máximo de Arquivos por Upload", - "maxFilesPerUploadHelp": "Número máximo de fotos permitidas em um único lote de upload (1-{{max}}).", - "allowedFileTypes": "Tipos de Arquivo Permitidos", - "allowedFileTypesHelp": "Lista de extensões de arquivo separadas por vírgula", - "featureToggles": "Alternância de Recursos", - "enableAnalytics": "Habilitar rastreamento de análises", - "enableRegistration": "Permitir auto-registro para administradores", - "enableShortGalleryUrls": "Usar URLs curtas de galeria", - "enableShortGalleryUrlsHelp": "Remove o slug do evento dos novos links de compartilhamento, mantendo os links existentes funcionando.", - "maintenanceMode": "Habilitar modo de manutenção", + "maxFilesPerUpload": "Máx. de Arquivos por Envio", + "maxFilesPerUploadHelp": "Número máximo de fotos permitidas em um único lote (1-{{max}}).", + "allowedFileTypes": "Tipos de Arquivos Permitidos", + "allowedFileTypesHelp": "Lista de extensões separadas por vírgula", + "featureToggles": "Funcionalidades", + "enableAnalytics": "Ativar rastreamento de análises", + "enableRegistration": "Permitir auto-registro para admins", + "enableShortGalleryUrls": "Usar URLs curtas para galerias", + "enableShortGalleryUrlsHelp": "Remove o slug do evento de novos links, mantendo os antigos funcionando.", + "maintenanceMode": "Ativar modo de manutenção", "language": "Idioma", "defaultLanguage": "Idioma Padrão", - "defaultLanguageHelp": "Idioma exibido para convidados antes do login", - "defaultWelcomeMessage": "Mensagem de Boas-Vindas Padrão", - "welcomeMessage": "Mensagem de Boas-Vindas", - "welcomeMessagePlaceholder": "Digite uma mensagem de boas-vindas padrão que será incluída nos emails de criação de galeria", - "welcomeMessageHelp": "Esta mensagem será incluída em todos os emails de criação de galeria, a menos que seja substituída ao criar um evento", + "defaultLanguageHelp": "Idioma exibido aos convidados antes do login", + "defaultWelcomeMessage": "Mensagem de Boas-vindas Padrão", + "welcomeMessage": "Mensagem de Boas-vindas", + "welcomeMessagePlaceholder": "Digite a mensagem padrão que será incluída nos e-mails de criação", + "welcomeMessageHelp": "Esta mensagem será incluída em todos os e-mails, a menos que seja substituída no evento", "saveSettings": "Salvar Configurações Gerais", "saveGeneralSettings": "Salvar Configurações Gerais", "dateTimeFormat": "Formato de Data e Hora", "dateFormat": "Formato de Data", - "dateFormatHelp": "Como as datas são exibidas nos emails e em todo o aplicativo", - "accountSection": "Conta do Administrador", - "accountUsername": "Nome de Usuário do Administrador", - "accountUsernameHelp": "Exibido na interface administrativa e usado nos registros de atividade.", - "accountUsernameRequired": "Nome de usuário é obrigatório", - "accountUsernameLength": "O nome de usuário deve ter pelo menos 3 caracteres", - "accountEmail": "email do Administrador", - "accountEmailHelp": "Usado para login e recebimento de notificações de segurança.", - "accountEmailRequired": "O endereço de email é obrigatório", - "accountEmailInvalid": "Digite um endereço de email válido", + "dateFormatHelp": "Como as datas são exibidas nos e-mails e no sistema", + "accountSection": "Conta Admin", + "accountUsername": "Usuário Admin", + "accountUsernameHelp": "Exibido na interface e logs de atividade.", + "accountUsernameRequired": "Usuário é obrigatório", + "accountUsernameLength": "O usuário deve ter pelo menos 3 caracteres", + "accountEmail": "E-mail Admin", + "accountEmailHelp": "Usado para login e notificações de segurança.", + "accountEmailRequired": "E-mail é obrigatório", + "accountEmailInvalid": "Insira um e-mail válido", "accountSaveButton": "Salvar detalhes da conta", "accountSaveSuccess": "Detalhes da conta atualizados" }, "publicSite": { "tabLabel": "Site Público", - "badge": "Landing Pública", - "title": "Página de Landing Pública", - "subtitle": "Publique uma página de landing personalizada para convidados quando visitarem seu domínio.", + "badge": "Landing Page", + "title": "Página Inicial Pública", + "subtitle": "Publique uma landing page customizada quando visitarem seu domínio.", "loading": "Carregando configurações do site público...", - "enabled": "Habilitado", - "disabled": "Desabilitado", - "htmlLabel": "HTML da Página de Landing", - "htmlPlaceholder": "Forneça o código HTML para o hero, seções e chamadas para ação da sua página de landing.", - "htmlHelp": "O HTML bruto é sanitizado ao salvar. Tags inseguras, scripts inline e atributos não permitidos são removidos automaticamente. Tokens como {{company_name}}, {{company_tagline}} e {{support_email}} serão substituídos pelos valores das configurações de Identidade Visual.", + "enabled": "Ativado", + "disabled": "Desativado", + "htmlLabel": "HTML da Landing Page", + "htmlPlaceholder": "Forneça o HTML para as seções e chamadas de ação da sua página.", + "htmlHelp": "O HTML bruto é higienizado ao salvar. Tokens como {{company_name}}, {{company_tagline}} e {{support_email}} serão substituídos pelos valores das configurações de Identidade Visual.", "cssLabel": "CSS Personalizado", - "cssPlaceholder": "Substituições CSS opcionais para ajustar layout, cores ou tipografia.", - "cssHelp": "Imports e URLs de JavaScript são removidos. Use seletores CSS padrão para substituir o estilo padrão.", + "cssPlaceholder": "Ajustes de layout, cores ou tipografia via CSS.", + "cssHelp": "Imports e URLs de JavaScript são removidos. Use seletores CSS padrão.", "saveCta": "Salvar site público", "saving": "Salvando...", "saveSuccess": "Configurações do site público salvas.", "saveError": "Falha ao salvar configurações do site público.", "resetCta": "Redefinir para o padrão", "resetting": "Redefinindo...", - "resetSuccess": "Modelo do site público redefinido para os padrões.", - "resetError": "Falha ao redefinir modelo do site público.", - "previewTitle": "Pré-visualização ao Vivo", - "previewSandboxed": "Pré-visualização em sandbox", - "previewDisabled": "Habilite o site público para ver a pré-visualização ao vivo.", - "sanitizationNotice": "Scripts, frames incorporados e atributos inseguros são removidos antes da publicação. Apenas HTML seguro, links e imagens são permitidos.", - "htmlRequired": "Forneça conteúdo HTML antes de habilitar o site público." + "resetSuccess": "Modelo do site público redefinido.", + "resetError": "Falha ao redefinir modelo.", + "previewTitle": "Prévia ao Vivo", + "previewSandboxed": "Prévia isolada", + "previewDisabled": "Ative o site público para ver a prévia.", + "sanitizationNotice": "Scripts e atributos inseguros são removidos. Apenas HTML, links e imagens seguros são permitidos.", + "htmlRequired": "Forneça conteúdo HTML antes de ativar o site público." }, "storage": { "title": "Armazenamento", @@ -750,37 +750,37 @@ "totalUsed": "Total Utilizado", "archiveStorage": "Armazenamento de Arquivos", "storageLimit": "Limite de Armazenamento", - "storageLimitHelper": "Defina um limite para o uso de armazenamento de fotos. Este limite é indicativo e será destacado quando atingido.", + "storageLimitHelper": "Defina um limite consultivo para o uso de espaço.", "softLimitInputLabel": "Limite (GB)", - "softLimitHelper": "Digite o uso máximo de armazenamento preferido em gigabytes.", + "softLimitHelper": "Insira o limite máximo preferencial em gigabytes.", "recommendedSoftLimit": "Limite Sugerido", "diskCapacity": "Capacidade do Disco", - "diskCapacityReported": "Capacidade do Disco (informada)", + "diskCapacityReported": "Capacidade (reportada)", "diskAvailable": "Disponível", - "diskAvailableReported": "Disponível (informado)", + "diskAvailableReported": "Disponível (reportada)", "diskFree": "Livre", - "diskFreeReported": "Livre (informado)", - "diskMetricsUnavailable": "As métricas de disco não estão disponíveis no Docker Desktop ou em ambientes virtualizados.", + "diskFreeReported": "Livre (reportada)", + "diskMetricsUnavailable": "Métricas de disco não estão disponíveis em ambientes virtualizados ou Docker Desktop.", "applyRecommended": "Usar recomendado", - "applyAvailable": "Corresponder disponível", - "invalidSoftLimit": "Digite um número válido para o limite.", + "applyAvailable": "Igualar disponível", + "invalidSoftLimit": "Insira um número válido para o limite.", "saveSoftLimit": "Salvar limite", - "limitNotEnforced": "Este limite é apenas indicativo e não é aplicado automaticamente.", - "overrideTitle": "Substituição manual de capacidade", - "diskOverrideEnvNote": "A capacidade do disco é controlada por variáveis de ambiente e não pode ser editada aqui.", - "diskOverrideSettingsHelp": "Defina valores de capacidade personalizados quando o Docker reportar números irreais.", + "limitNotEnforced": "Este limite é apenas consultivo e não é aplicado automaticamente.", + "overrideTitle": "Substituição Manual de Capacidade", + "diskOverrideEnvNote": "A capacidade é controlada por variáveis de ambiente e não pode ser editada aqui.", + "diskOverrideSettingsHelp": "Defina valores manuais se o Docker reportar números irreais.", "overrideCapacityLabel": "Capacidade total (GB)", "overrideCapacityHelper": "Deixe em branco para usar a leitura automática.", "overrideAvailableLabel": "Espaço disponível (GB)", - "overrideAvailableHelper": "Opcional. Deixe em branco para calcular a partir da capacidade total menos o armazenamento utilizado.", - "saveOverride": "Salvar substituição de capacidade", - "capacityRequiredForAvailable": "Digite uma capacidade total antes de definir o espaço disponível.", + "overrideAvailableHelper": "Opcional. Deixe em branco para calcular automaticamente.", + "saveOverride": "Salvar substituição", + "capacityRequiredForAvailable": "Insira a capacidade total antes de definir o espaço disponível.", "availableExceedsCapacity": "O espaço disponível não pode exceder a capacidade total.", "storageUsage": "Uso de Armazenamento", "storageByEvent": "Armazenamento por Evento", "storageManagement": "Gerenciamento de Armazenamento", - "storageManagementHelp": "Considere arquivar ou excluir eventos antigos para liberar espaço de armazenamento. Eventos arquivados são comprimidos e usam menos armazenamento do que galerias ativas.", - "noEventsUsingStorage": "Nenhum evento usando armazenamento", + "storageManagementHelp": "Considere arquivar ou excluir eventos antigos. Eventos arquivados ocupam menos espaço.", + "noEventsUsingStorage": "Nenhum evento utilizando armazenamento", "unlimited": "Ilimitado" }, "security": { @@ -789,39 +789,39 @@ "minPasswordLength": "Comprimento Mínimo da Senha", "minPasswordLengthHelp": "Número mínimo de caracteres para senhas de galeria", "passwordComplexity": "Complexidade da Senha", - "passwordComplexityHelp": "Nível de segurança exigido para senhas de galeria", + "passwordComplexityHelp": "Nível de segurança exigido para senhas", "complexitySimple": "Simples (6+ caracteres, qualquer texto)", - "complexityModerate": "Moderado (8+ caracteres, maiúsculas/números)", + "complexityModerate": "Moderada (8+ caracteres, letras/números)", "complexityStrong": "Forte (12+ caracteres, maiúsculas/minúsculas/números)", - "complexityVeryStrong": "Muito Forte (12+ caracteres, todos os tipos de caracteres)", + "complexityVeryStrong": "Muito Forte (12+ caracteres, todos os tipos)", "sessionAuth": "Sessão e Autenticação", - "sessionTimeout": "Tempo Limite de Sessão (minutos)", - "sessionTimeoutHelp": "Tempo limite de sessão do administrador em minutos", + "sessionTimeout": "Tempo de Sessão (minutos)", + "sessionTimeoutHelp": "Tempo de inatividade antes de deslogar o admin", "maxLoginAttempts": "Máximo de Tentativas de Login", - "maxLoginAttemptsHelp": "Máximo de tentativas de login com falha por IP antes do bloqueio", + "maxLoginAttemptsHelp": "Falhas permitidas por IP antes do bloqueio", "attemptWindowMinutes": "Janela de Tentativas (minutos)", - "attemptWindowMinutesHelp": "Quanto tempo considerar ao contabilizar tentativas de login com falha", + "attemptWindowMinutesHelp": "Tempo para contabilizar falhas de login", "lockoutDurationMinutes": "Duração do Bloqueio (minutos)", - "lockoutDurationMinutesHelp": "Por quanto tempo a galeria ou conta fica bloqueada após muitas tentativas falhas", - "enable2FA": "Habilitar autenticação de dois fatores para administradores", + "lockoutDurationMinutesHelp": "Tempo que a conta permanece bloqueada após falhas", + "enable2FA": "Ativar autenticação de dois fatores para admins", "recaptchaSettings": "Configurações de reCAPTCHA", - "enableRecaptcha": "Habilitar reCAPTCHA para formulários de login", + "enableRecaptcha": "Ativar reCAPTCHA nos formulários de login", "siteKey": "Chave do Site", - "siteKeyHelp": "Sua chave de site reCAPTCHA v2 (pública)", + "siteKeyHelp": "Sua chave pública do reCAPTCHA v2", "secretKey": "Chave Secreta", - "secretKeyHelp": "Sua chave secreta reCAPTCHA v2 (mantenha privada)", - "recaptchaHelp": "Obtenha suas chaves reCAPTCHA em", + "secretKeyHelp": "Sua chave privada (mantenha em segredo)", + "recaptchaHelp": "Obtenha suas chaves em", "saveSettings": "Salvar Configurações de Segurança", "saveSecuritySettings": "Salvar Configurações de Segurança" }, "categories": { "title": "Categorias", "about": "Sobre Categorias de Fotos", - "aboutText": "As categorias globais estão disponíveis para todos os eventos. Você também pode criar categorias específicas do evento ao editar eventos individuais. As categorias ajudam a organizar as fotos e permitem que os convidados filtrem fotos por tipo na visualização da galeria." + "aboutText": "Categorias globais estão disponíveis para todos os eventos. Você também pode criar categorias específicas ao editar um evento. Elas ajudam a organizar as fotos e permitem filtros por tipo." }, "systemStatus": { "title": "Status do Sistema", - "storageOverview": "Visão Geral do Armazenamento", + "storageOverview": "Visão Geral do Espaço", "systemInfo": "Informações do Sistema", "databaseInfo": "Informações do Banco de Dados", "platform": "Plataforma", @@ -831,129 +831,129 @@ "memoryUsage": "Uso de Memória", "memoryUsed": "Memória Utilizada", "photos": "Fotos", - "admins": "Administradores", - "dbSize": "Tamanho do Banco de Dados", - "services": "Serviços em Segundo Plano", - "fileWatcher": "Monitoramento de Arquivos", + "admins": "Admins", + "dbSize": "Tamanho do Banco", + "services": "Serviços de Segundo Plano", + "fileWatcher": "Monitor de Arquivos", "fileWatcherDesc": "Monitora novas fotos", "expirationChecker": "Verificador de Expiração", "expirationCheckerDesc": "Arquiva galerias expiradas", - "emailProcessor": "Processador de Email", - "emailProcessorDesc": "Envia emails na fila", - "emailQueue": "Status da Fila de Email", - "pending": "Pendente", - "sent": "Enviado", - "failed": "Com Falha", + "emailProcessor": "Processador de E-mails", + "emailProcessorDesc": "Envia e-mails na fila", + "emailQueue": "Status da Fila de E-mails", + "pending": "Pendentes", + "sent": "Enviados", + "failed": "Falhas", "lastUpdate": "Última atualização" }, "photoDimensions": { "title": "Dimensões das Fotos", "totalPhotos": "Total de Fotos", "withDimensions": "Com Dimensões", - "missingDimensions": "Dimensões Ausentes", + "missingDimensions": "Sem Dimensões", "repairButton": "Reparar Dimensões", "repairing": "Reparando...", - "alreadyRunning": "O reparo já está em andamento", - "started": "Iniciou o reparo de {{count}} fotos", + "alreadyRunning": "O reparo já está em execução", + "started": "Reparo iniciado para {{count}} fotos", "noneToRepair": "Todas as fotos já possuem dimensões", - "resultSuccess": "Último reparo: {{success}} atualizadas, {{failed}} com falha", - "description": "Preencha largura/altura ausentes para fotos enviadas antes da implementação do rastreamento de dimensões. Necessário para os layouts Masonry e Mosaico." + "resultSuccess": "Último reparo: {{success}} atualizadas, {{failed}} falhas", + "description": "Preenche larguras/alturas ausentes para fotos antigas. Necessário para layouts Masonry e Mosaic." }, "updateNotifications": { "title": "Notificações de Atualização", - "description": "Receba notificações por email quando novas versões do PicPeak estiverem disponíveis.", - "enableEmails": "Habilitar notificações por email", - "enableEmailsDesc": "Enviar email aos administradores quando uma nova versão estiver disponível", - "recipients": "Destinatários do Email", + "description": "Receba e-mails quando novas versões do PicPeak estiverem disponíveis.", + "enableEmails": "Ativar notificações por e-mail", + "enableEmailsDesc": "Enviar e-mail para admins sobre novas versões", + "recipients": "Destinatários", "recipientsPlaceholder": "admin@exemplo.com, outro@exemplo.com", - "recipientsHelper": "Endereços de email separados por vírgula. Deixe em branco para enviar a todos os usuários administradores.", - "lastNotified": "Última notificação enviada para a versão: {{version}}", + "recipientsHelper": "E-mails separados por vírgula. Deixe vazio para todos os admins.", + "lastNotified": "Última notificação enviada para versão: {{version}}", "checkNow": "Verificar e Notificar", - "sendTest": "Enviar Email de Teste", + "sendTest": "Enviar E-mail de Teste", "saved": "Configurações salvas", "saveError": "Falha ao salvar configurações", - "emailSent": "Email de notificação enviado para {{count}} destinatários", + "emailSent": "E-mail enviado para {{count}} destinatários", "emailFailed": "Falha ao enviar notificação", "checkSuccess": "Notificação enviada para nova versão", - "checkNoAction": "Nenhuma notificação necessária: {{reason}}", + "checkNoAction": "Nenhuma ação necessária: {{reason}}", "checkError": "Falha ao verificar atualizações" }, "events": { "title": "Criação de Eventos", "requiredFields": "Campos Obrigatórios", - "requiredFieldsDescription": "Configure quais campos de contato são obrigatórios ao criar novos eventos.", + "requiredFieldsDescription": "Configure quais campos são obrigatórios ao criar novos eventos.", "requireCustomerName": "Exigir nome do cliente", - "requireCustomerNameHelp": "O nome do cliente deve ser fornecido para novos eventos", - "requireCustomerEmail": "Exigir email do cliente", - "requireCustomerEmailHelp": "O email do cliente deve ser fornecido para novos eventos", - "customerEmailWarning": "Obrigatório para enviar convites de galeria", - "requireAdminEmail": "Exigir email do administrador", - "requireAdminEmailHelp": "O email do administrador deve ser fornecido para novos eventos", - "adminEmailWarning": "Obrigatório para receber notificações de eventos", + "requireCustomerNameHelp": "O nome deve ser fornecido obrigatoriamente", + "requireCustomerEmail": "Exigir e-mail do cliente", + "requireCustomerEmailHelp": "O e-mail deve ser fornecido obrigatoriamente", + "customerEmailWarning": "Necessário para enviar convites da galeria", + "requireAdminEmail": "Exigir e-mail do admin", + "requireAdminEmailHelp": "O e-mail do admin deve ser fornecido", + "adminEmailWarning": "Necessário para notificações do sistema", "requireEventDate": "Exigir data do evento", - "requireEventDateHelp": "A data do evento deve ser fornecida ao criar eventos", - "eventDateWarning": "As URLs da galeria usarão identificadores aleatórios em vez de datas", + "requireEventDateHelp": "A data deve ser informada na criação", + "eventDateWarning": "URLs usarão identificadores aleatórios sem a data", "requireExpiration": "Exigir data de expiração", - "requireExpirationHelp": "As galerias devem ter uma data de expiração", - "expirationWarning": "Galerias sem expiração permanecerão ativas até serem arquivadas manualmente", - "saveSettings": "Salvar Configurações de Eventos", + "requireExpirationHelp": "Galerias devem ter uma data de término", + "expirationWarning": "Galerias sem expiração ficarão ativas até arquivamento manual", + "saveSettings": "Salvar Configurações de Evento", "noteTitle": "Nota", - "noteText": "Essas configurações afetam apenas a criação de novos eventos. Eventos existentes não são afetados. O comportamento padrão exige todos os campos." + "noteText": "Estas configurações afetam apenas novos eventos. O padrão exige todos os campos." }, "imageSecurity": { - "title": "Proteção de Imagens", - "saveSuccess": "Configurações de segurança de imagem salvas", + "title": "Proteção de Imagem", + "saveSuccess": "Configurações de segurança salvas", "saveError": "Falha ao salvar configurações", - "loadError": "Falha ao carregar configurações de segurança de imagem", + "loadError": "Falha ao carregar configurações de segurança", "defaultProtection": "Configurações de Proteção Padrão", - "defaultProtectionHelp": "Essas configurações se aplicam a todos os novos eventos. Eventos individuais podem substituir esses padrões.", + "defaultProtectionHelp": "Aplicado a novos eventos por padrão. Podem ser substituídas individualmente.", "protectionLevel": "Nível de Proteção Padrão", "imageQuality": "Qualidade de Imagem Padrão", "fragmentationLevel": "Nível de Fragmentação", - "enableDevtools": "Habilitar detecção de DevTools por padrão", - "enableCanvas": "Habilitar renderização em canvas por padrão (proteção avançada)", - "rateLimiting": "Limitação de Taxa", - "rateLimitingHelp": "Limite quantas imagens podem ser solicitadas para evitar raspagem.", - "requestsPerMinute": "Solicitações por minuto", - "requestsPer5Minutes": "Solicitações por 5 min", - "requestsPerHour": "Solicitações por hora", + "enableDevtools": "Ativar detecção de DevTools por padrão", + "enableCanvas": "Ativar renderização em Canvas por padrão", + "rateLimiting": "Limite de Requisições", + "rateLimitingHelp": "Limita quantas imagens podem ser solicitadas para evitar raspagem (scraping).", + "requestsPerMinute": "Requisições por minuto", + "requestsPer5Minutes": "Requisições por 5 min", + "requestsPerHour": "Requisições por hora", "securityMonitoring": "Monitoramento de Segurança", - "suspiciousThreshold": "Limite de atividade suspeita", - "autoBlockThreshold": "Limite de bloqueio automático", - "enableMonitoring": "Habilitar monitoramento de segurança", - "blockSuspiciousIps": "Bloquear automaticamente IPs suspeitos", + "suspiciousThreshold": "Limite para atividade suspeita", + "autoBlockThreshold": "Limite para bloqueio automático", + "enableMonitoring": "Ativar monitoramento de segurança", + "blockSuspiciousIps": "Bloquear IPs suspeitos automaticamente", "logEvents": "Registrar eventos de segurança no banco de dados", - "infoTitle": "Sobre Proteção de Imagens", - "infoText": "Esses recursos de proteção ajudam a evitar downloads e cópias não autorizados, mas não podem bloquear todos os métodos. Usuários determinados ainda podem encontrar formas de capturar imagens. Considere usar marcas d'água e contratos legais para proteção abrangente." + "infoTitle": "Sobre a Proteção de Imagem", + "infoText": "Estes recursos evitam cópias fáceis, mas não bloqueiam todos os métodos. Considere marcas d'água para proteção total." }, "moderation": { "title": "Moderação", "wordFilters": "Filtros de Palavras", "description": "Gerencie palavras que devem ser filtradas ou bloqueadas nos comentários", "addFilter": "Adicionar Novo Filtro", - "enterWord": "Digite a palavra a filtrar", + "enterWord": "Digite a palavra para filtrar", "searchFilters": "Buscar filtros...", - "filterAdded": "Filtro de palavra adicionado com sucesso", - "filterExists": "Este filtro de palavra já existe", - "addError": "Falha ao adicionar filtro de palavra", - "filterUpdated": "Filtro de palavra atualizado com sucesso", - "updateError": "Falha ao atualizar filtro de palavra", - "filterDeleted": "Filtro de palavra excluído com sucesso", - "deleteError": "Falha ao excluir filtro de palavra", - "wordRequired": "Por favor, digite uma palavra para filtrar", - "confirmDelete": "Tem certeza de que deseja excluir este filtro de palavra?", - "loading": "Carregando filtros de palavras...", - "noMatchingFilters": "Nenhum filtro correspondente encontrado", - "noFilters": "Nenhum filtro de palavra configurado ainda", - "severityLow": "Baixo", - "severityModerate": "Moderado", - "severityHigh": "Alto", + "filterAdded": "Filtro adicionado com sucesso", + "filterExists": "Este filtro já existe", + "addError": "Falha ao adicionar filtro", + "filterUpdated": "Filtro atualizado com sucesso", + "updateError": "Falha ao atualizar filtro", + "filterDeleted": "Filtro excluído com sucesso", + "deleteError": "Falha ao excluir filtro", + "wordRequired": "Insira uma palavra para filtrar", + "confirmDelete": "Tem certeza que deseja excluir este filtro?", + "loading": "Carregando filtros...", + "noMatchingFilters": "Nenhum filtro correspondente", + "noFilters": "Nenhum filtro configurado ainda", + "severityLow": "Baixa", + "severityModerate": "Moderada", + "severityHigh": "Alta", "severityBlock": "Bloquear", - "severityLevels": "Níveis de Severidade", - "lowDescription": "A palavra é sinalizada para revisão, mas não bloqueada automaticamente", - "moderateDescription": "O comentário requer aprovação manual antes de ser visível", - "highDescription": "O comentário é ocultado automaticamente e requer revisão do administrador", - "blockDescription": "O comentário é rejeitado imediatamente e não pode ser enviado" + "severityLevels": "Níveis de Gravidade", + "lowDescription": "A palavra é sinalizada para revisão, mas não bloqueada", + "moderateDescription": "O comentário exige aprovação manual para ficar visível", + "highDescription": "O comentário é ocultado e exige revisão do admin", + "blockDescription": "O comentário é rejeitado imediatamente" }, "styling": { "title": "CSS Personalizado" @@ -961,132 +961,132 @@ "thumbnails": { "title": "Miniaturas", "dimensionsTitle": "Dimensões e Qualidade das Miniaturas", - "dimensionsHelp": "Configure o tamanho e a qualidade das miniaturas geradas automaticamente. Valores mais altos produzem pré-visualizações de melhor aparência, mas aumentam o armazenamento e os tempos de carregamento.", + "dimensionsHelp": "Configura o tamanho e qualidade das prévias automáticas.", "width": "Largura (px)", "widthHelp": "50-1000 pixels", "height": "Altura (px)", "heightHelp": "50-1000 pixels", "quality": "Qualidade", - "qualityHelp": "1-100, maior = melhor qualidade mas arquivos maiores", + "qualityHelp": "1-100 (maior = melhor qualidade, arquivo maior)", "format": "Formato", "fit": "Modo de Ajuste", - "fitHelp": "Como as imagens são redimensionadas para caber nas dimensões da miniatura. \"Cobrir\" corta para preencher, \"Conter\" cabe dentro dos limites.", - "fit_cover": "Cobrir (cortar para preencher)", - "fit_contain": "Conter (caber dentro)", - "fit_fill": "Preencher (esticar)", - "fit_inside": "Interior (reduzir para caber)", - "fit_outside": "Exterior (expandir para cobrir)", + "fitHelp": "Como as imagens são redimensionadas. \"Cover\" corta para preencher, \"Contain\" ajusta aos limites.", + "fit_cover": "Cover (cortar para preencher)", + "fit_contain": "Contain (ajustar ao espaço)", + "fit_fill": "Fill (esticar)", + "fit_inside": "Inside (encolher para caber)", + "fit_outside": "Outside (expandir para cobrir)", "regenerateTitle": "Regenerar Miniaturas", - "regenerateHelp": "Após alterar as configurações de miniaturas, regenere todas as miniaturas existentes para aplicar a nova configuração. Isso é executado em segundo plano e pode demorar para galerias grandes.", + "regenerateHelp": "Após alterar as configurações, regenere as miniaturas existentes. Isso pode demorar.", "regenerateButton": "Regenerar Todas as Miniaturas", "regenerateStarted": "Regeneração de miniaturas iniciada", - "regenerateError": "Falha ao iniciar regeneração de miniaturas", + "regenerateError": "Falha ao iniciar regeneração", "saveSuccess": "Configurações de miniaturas salvas", - "saveError": "Falha ao salvar configurações de miniaturas", - "loadError": "Falha ao carregar configurações de miniaturas", + "saveError": "Falha ao salvar configurações", + "loadError": "Falha ao carregar configurações", "infoTitle": "Sobre Miniaturas", - "infoText": "As miniaturas são imagens de pré-visualização menores geradas a partir dos originais. Aumentar o tamanho ou a qualidade melhora a aparência das fotos na grade da galeria, mas usa mais armazenamento e largura de banda. Após alterar as configurações, use \"Regenerar Todas as Miniaturas\" para atualizar as fotos existentes." + "infoText": "Miniaturas são versões menores das fotos. Aumentar o tamanho melhora a aparência, mas usa mais espaço e banda." }, "seo": { - "title": "SEO e Robôs", - "indexingTitle": "Indexação por Mecanismos de Busca", - "allowIndexing": "Permitir indexação por mecanismos de busca", - "allowIndexingHelp": "Quando desabilitado, todos os rastreadores são bloqueados via robots.txt. Recomendado desativado para plataformas de fotos privadas.", + "title": "SEO e Robots", + "indexingTitle": "Indexação em Buscadores", + "allowIndexing": "Permitir indexação em mecanismos de busca", + "allowIndexingHelp": "Se desativado, crawlers serão bloqueados via robots.txt. Recomendado desativar para galerias privadas.", "sitemapUrl": "URL do Sitemap", "sitemapUrlHelp": "Opcional. Adicionado ao robots.txt se fornecido.", "aiBlockingTitle": "Bloqueio de IA e Bots", - "blockAiCrawlers": "Bloquear rastreadores de IA/LLM", - "blockAiCrawlersHelp": "Impedir que bots de treinamento de IA acessem seu conteúdo.", + "blockAiCrawlers": "Bloquear crawlers de IA/LLM", + "blockAiCrawlersHelp": "Impede bots de treinamento de IA de acessarem seu conteúdo.", "blockedAgents": "Agentes de IA bloqueados", - "addAgentPlaceholder": "Digite o nome do agente...", - "blockSocialBots": "Bloquear bots de pré-visualização de redes sociais", - "blockSocialBotsHelp": "Impedir pré-visualizações de links no Twitter, Facebook, LinkedIn, etc.", - "metaTagsTitle": "Meta Tags e Regras Personalizadas", + "addAgentPlaceholder": "Nome do agente...", + "blockSocialBots": "Bloquear bots de prévia de redes sociais", + "blockSocialBotsHelp": "Impede prévias de links no Twitter, Facebook, LinkedIn, etc.", + "metaTagsTitle": "Meta Tags e Regras Customizadas", "metaNoindex": "Adicionar meta tag noindex", - "metaNoindexHelp": "Informa aos mecanismos de busca para não indexar páginas (nível HTML, complementa robots.txt).", + "metaNoindexHelp": "Diz aos buscadores para não indexarem as páginas.", "metaNofollow": "Adicionar meta tag nofollow", - "metaNofollowHelp": "Informa aos mecanismos de busca para não seguir links nas páginas.", + "metaNofollowHelp": "Diz aos buscadores para não seguirem links nas páginas.", "metaNoai": "Adicionar meta tag noai/noimageai", - "metaNoaiHelp": "Sinaliza que o conteúdo não deve ser usado para treinamento de IA.", - "customRules": "Regras personalizadas de robots.txt", + "metaNoaiHelp": "Sinaliza que o conteúdo não deve ser usado para treinar IA.", + "customRules": "Regras personalizadas do robots.txt", "ruleAgentPlaceholder": "User-agent", - "rulePathPlaceholder": "Caminho para Disallow", - "showPreview": "Mostrar pré-visualização do robots.txt", - "hidePreview": "Ocultar pré-visualização do robots.txt", + "rulePathPlaceholder": "Caminho proibido (Disallow)", + "showPreview": "Mostrar prévia do robots.txt", + "hidePreview": "Ocultar prévia do robots.txt", "saveSettings": "Salvar Configurações de SEO" }, "analytics": { - "title": "Análises", + "title": "Análise", "umamiIntegration": "Integração com Umami Analytics", - "enableUmami": "Habilitar Umami Analytics", + "enableUmami": "Ativar Umami Analytics", "umamiUrl": "URL do Umami", - "umamiUrlHelp": "A URL da sua instância do Umami (ex.: https://analytics.seudominio.com)", - "websiteId": "ID do Site", - "websiteIdHelp": "O ID do seu site no Umami (encontrado no painel do Umami)", + "umamiUrlHelp": "A URL da sua instância Umami (ex: https://analytics.seudominio.com)", + "websiteId": "ID do Website", + "websiteIdHelp": "O ID do site no painel do Umami", "shareUrl": "URL de Compartilhamento (Opcional)", - "shareUrlHelp": "URL pública de compartilhamento para incorporar o painel completo (criar no Umami)", + "shareUrlHelp": "URL pública para incorporar o painel completo", "umamiInfo": "Sobre o Umami Analytics", - "umamiInfoText": "O Umami é uma plataforma de análises open-source focada em privacidade. Rastreia visualizações de página, visitantes únicos e eventos personalizados sem usar cookies.", + "umamiInfoText": "Umami é uma plataforma de análise focada em privacidade e código aberto.", "learnMore": "Saiba mais sobre o Umami", - "saveAnalyticsSettings": "Salvar Configurações de Análises", - "backendAnalytics": "Análises do Backend", - "backendAnalyticsText": "O sistema também rastreia análises básicas no lado do servidor para monitoramento de segurança e desempenho.", - "tracked": "Métricas Rastreadas", - "galleryViews": "Visualizações de página da galeria", - "photoDownloads": "Downloads individuais e em massa", + "saveAnalyticsSettings": "Salvar Configurações de Análise", + "backendAnalytics": "Análise de Backend", + "backendAnalyticsText": "O sistema rastreia métricas básicas no servidor para segurança e performance.", + "tracked": "Métricas Monitoradas", + "galleryViews": "Visualizações de galeria", + "photoDownloads": "Downloads individuais e em lote", "uniqueVisitors": "Visitantes únicos por IP", - "deviceTypes": "Tipos de dispositivo por user agents", + "deviceTypes": "Tipos de dispositivos", "privacy": "Privacidade", - "privacyText": "Os endereços IP são hasheados para privacidade. Nenhum dado pessoal é armazenado. Os dados de análises são retidos por 90 dias." + "privacyText": "Endereços IP são anonimizados. Dados são retidos por 90 dias." } }, "analytics": { - "title": "Painel de Análises", + "title": "Painel de Análise", "titleSimple": "Análises", - "subtitle": "Acompanhe o desempenho das galerias e o engajamento dos visitantes", - "detailedSubtitle": "Análises detalhadas fornecidas pelo Umami", + "subtitle": "Acompanhe a performance das galerias e o engajamento", + "detailedSubtitle": "Análises detalhadas via Umami", "loadingAnalytics": "Carregando análises...", - "showSummaryView": "Mostrar Visão Resumida", + "showSummaryView": "Ver Resumo", "fullDashboard": "Painel Completo", "refresh": "Atualizar", "last7Days": "Últimos 7 dias", "last30Days": "Últimos 30 dias", "last90Days": "Últimos 90 dias", - "pageViews": "Visualizações de Página", + "pageViews": "Visualizações", "uniqueVisitors": "Visitantes Únicos", - "totalDownloads": "Total de Downloads", - "topGallery": "Galeria Mais Visitada", - "topPages": "Páginas Mais Visitadas", + "totalDownloads": "Downloads Totais", + "topGallery": "Melhor Galeria", + "topPages": "Páginas Principais", "views": "visualizações", "visitors": "visitantes únicos", - "topDownloadsByGallery": "Top Downloads por Galeria", - "deviceBreakdown": "Distribuição por Dispositivo", + "topDownloadsByGallery": "Downloads por Galeria", + "deviceBreakdown": "Uso por Dispositivo", "desktop": "Desktop", - "mobile": "Mobile", + "mobile": "Celular", "tablet": "Tablet", - "storageUsage": "Uso de Armazenamento", - "used": "Utilizado", + "storageUsage": "Uso de Espaço", + "used": "Usado", "of": "de", "totalPhotos": "Total de Fotos", "activeEvents": "Eventos Ativos", - "notConfigured": "Umami Analytics Não Configurado", - "configureInstructions": "Para ver dados reais de análises, configure o Umami nas variáveis de ambiente e nas configurações do painel administrativo.", - "noData": "Nenhum dado disponível", + "notConfigured": "Umami Analytics não configurado", + "configureInstructions": "Para ver dados reais, configure o Umami nas variáveis de ambiente e no painel admin.", + "noData": "Dados não disponíveis", "percentChange": "{{percent}}% em relação ao período anterior" }, "branding": { - "title": "Identidade Visual e Temas", - "titleFull": "Identidade Visual e Personalização", + "title": "Marca e Temas", + "titleFull": "Identidade Visual e Customização", "subtitle": "Personalize a aparência das suas galerias", - "loadingBranding": "Carregando configurações de identidade visual...", + "loadingBranding": "Carregando identidade visual...", "themeAndStyle": "Tema e Estilo", "companyInfo": "Informações da Empresa", "companyName": "Nome da Empresa", - "companyNameHelp": "Exibido nos cabeçalhos das galerias e nos emails", + "companyNameHelp": "Exibido no cabeçalho das galerias e e-mails", "companyTagline": "Slogan da Empresa", - "companyTaglineHelp": "Uma breve descrição do seu negócio", - "supportEmail": "Email de Suporte", - "supportEmailHelp": "email de contato para suporte aos convidados", + "companyTaglineHelp": "Uma descrição curta do seu negócio", + "supportEmail": "E-mail de Suporte", + "supportEmailHelp": "E-mail de contato para convidados", "footerText": "Texto do Rodapé", "footerTextHelp": "Exibido na parte inferior das galerias", "logo": "Logo", @@ -1098,26 +1098,26 @@ "currentFavicon": "Favicon atual", "uploadFavicon": "Enviar Favicon", "removeFavicon": "Remover Favicon", - "faviconHelp": "Formato PNG ou ICO, tamanho recomendado: 32x32px", - "watermark": "Marca d'Água", - "watermarkSettings": "Configurações de Marca d'Água", - "enableWatermarks": "Habilitar Marcas d'Água", - "watermarkHelp": "Adicione o nome da sua empresa como marca d'água nas fotos baixadas", - "watermarkLogo": "Logo da Marca d'Água", + "faviconHelp": "Formato PNG ou ICO, recomendado 32x32px", + "watermark": "Marca d'água", + "watermarkSettings": "Configurações de Marca d'água", + "enableWatermarks": "Ativar Marcas d'água", + "watermarkHelp": "Adiciona o nome da sua empresa nas fotos baixadas", + "watermarkLogo": "Logo da Marca d'água", "currentWatermark": "Marca d'água atual", - "uploadWatermarkLogo": "Enviar Logo para Marca d'Água", - "watermarkPosition": "Posição da Marca d'Água", - "topLeft": "Superior Esquerdo", - "topRight": "Superior Direito", + "uploadWatermarkLogo": "Enviar Logo da Marca d'água", + "watermarkPosition": "Posição da Marca d'água", + "topLeft": "Superior Esquerda", + "topRight": "Superior Direita", "center": "Centro", - "bottomLeft": "Inferior Esquerdo", - "bottomRight": "Inferior Direito", - "watermarkOpacity": "Opacidade da Marca d'Água", - "watermarkSize": "Tamanho da Marca d'Água", + "bottomLeft": "Inferior Esquerda", + "bottomRight": "Inferior Direita", + "watermarkOpacity": "Opacidade", + "watermarkSize": "Tamanho", "theme": "Tema", "galleryTheme": "Tema da Galeria", - "themeCustomization": "Personalização do Tema", - "selectPreset": "Selecione um tema predefinido", + "themeCustomization": "Customização do Tema", + "selectPreset": "Selecione um tema pronto", "colors": "Cores", "primaryColor": "Cor Primária", "secondaryColor": "Cor Secundária", @@ -1128,32 +1128,32 @@ "colorModeLight": "Claro", "colorModeDark": "Escuro", "colorModeAuto": "Automático", - "colorModeHelp": "Automático segue a preferência do sistema do visitante.", + "colorModeHelp": "Segue a preferência do sistema do visitante.", "customCSS": "CSS Personalizado", - "preview": "Pré-visualização", - "previewInNewTab": "Pré-visualizar em Nova Aba", + "preview": "Prévia", + "previewInNewTab": "Abrir prévia em nova aba", "reset": "Redefinir", "saveChanges": "Salvar Alterações", - "applyLivePreview": "Aplicar alterações imediatamente (Pré-visualização ao Vivo)", - "eventSpecificThemes": "Temas Específicos do Evento", - "eventThemesInfo": "Você pode substituir essas configurações de tema globais para eventos individuais ao criá-los ou editá-los.", - "themePresets": "Temas Predefinidos", + "applyLivePreview": "Aplicar alterações imediatamente (Prévia ao Vivo)", + "eventSpecificThemes": "Temas Específicos por Evento", + "eventThemesInfo": "Você pode sobrepor estas configurações para eventos individuais.", + "themePresets": "Temas Prontos", "galleryLayout": "Layout da Galeria", "layoutDescriptions": { - "grid": "Layout de grade clássico com tamanhos de foto uniformes", - "masonry": "Layout estilo Pinterest com alturas variadas", - "carousel": "Slideshow em tela cheia com navegação", + "grid": "Grade clássica com tamanhos consistentes", + "masonry": "Estilo Pinterest com alturas variadas", + "carousel": "Slideshow em tela cheia", "timeline": "Fotos organizadas por data", - "hero": "Imagem em destaque com grade abaixo", + "hero": "Destaque no topo e grade abaixo", "mosaic": "Layout artístico com tamanhos mistos", - "justified": "Layout baseado em linhas preservando as proporções", - "gallery-premium": "Tema claro elegante com hero e masonry (Beta)", - "gallery-story": "Tema escuro cinematográfico com seções de cenas (Beta)" + "justified": "Layout em linhas preservando proporções", + "gallery-premium": "Tema claro elegante com Hero e Masonry (Beta)", + "gallery-story": "Tema escuro cinematográfico com seções (Beta)" }, "layoutSettings": "Configurações de Layout", - "photoSpacing": "Espaçamento das Fotos", + "photoSpacing": "Espaçamento entre Fotos", "spacing": { - "tight": "Compacto", + "tight": "Justo", "normal": "Normal", "relaxed": "Espaçado" }, @@ -1162,14 +1162,14 @@ "none": "Nenhuma", "fade": "Fade", "scale": "Escala", - "slide": "Deslizamento" + "slide": "Deslizar" }, "columns": "Colunas", - "mobile": "Mobile", + "mobile": "Celular", "tablet": "Tablet", "desktop": "Desktop", - "enableAutoplay": "Habilitar Reprodução Automática", - "autoplayInterval": "Intervalo de Reprodução Automática (segundos)", + "enableAutoplay": "Ativar Autoplay", + "autoplayInterval": "Intervalo do Autoplay (segundos)", "groupPhotosBy": "Agrupar Fotos Por", "grouping": { "day": "Dia", @@ -1178,24 +1178,24 @@ }, "masonryMode": "Modo de Layout", "masonryModeOptions": { - "columns": "Colunas (estilo Pinterest)", - "rows": "Linhas (Justified personalizado)", - "flickr": "Flickr (Justified testado)", - "justified": "Google Fotos (algoritmo Knuth-Plass)" + "columns": "Colunas (Estilo Pinterest)", + "rows": "Linhas (Justificado customizado)", + "flickr": "Flickr (Justificado clássico)", + "justified": "Google Photos (Algoritmo Knuth-Plass)" }, "masonryModeHint": { - "columns": "Colunas verticais estilo Pinterest com alturas variadas", - "rows": "Layout justified por linhas personalizado", - "flickr": "Algoritmo de layout justified open-source do Flickr", - "justified": "Layout de linhas estilo Google Fotos usando o algoritmo Knuth-Plass para quebras otimizadas" + "columns": "Colunas verticais com alturas variadas", + "rows": "Layout justificado baseado em linhas", + "flickr": "Algoritmo de layout justificado do Flickr", + "justified": "Linhas estilo Google Photos para quebras ideais" }, "targetRowHeight": "Altura Alvo da Linha", - "targetRowHeightHint": "Altura em pixels (150-400). As fotos serão dimensionadas para caber nas linhas.", + "targetRowHeightHint": "Altura em pixels (150-400). As fotos escalam para caber.", "lastRowBehavior": "Alinhamento da Última Linha", "lastRowOptions": { "left": "Alinhado à esquerda", "center": "Centralizado", - "justify": "Justified (esticado)" + "justify": "Justificado (esticar)" }, "thumbnailScale": "Escala de Miniaturas", "thumbnailScaleOptions": { @@ -1207,18 +1207,18 @@ }, "thumbnailScaleHint": "Ajusta a contagem de colunas em relação às colunas base da grade", "showHeroSection": "Mostrar Seção Hero", - "showHeroSectionHint": "Exibir uma imagem hero em destaque acima da galeria justified", + "showHeroSectionHint": "Exibe uma imagem de destaque acima da galeria", "heroHeight": "Altura da Seção Hero", "heroHeightOptions": { "small": "Pequena (40-50%)", "medium": "Média (50-70%)", "large": "Grande (60-80%)" }, - "heroOverlayOpacity": "Opacidade do Overlay Hero", - "heroOverlayHint": "Escureça a imagem hero para melhorar a legibilidade do texto", + "heroOverlayOpacity": "Opacidade da Sobreposição Hero", + "heroOverlayHint": "Escurece a imagem de destaque para melhorar o contraste do texto", "typographyAndStyle": "Tipografia e Estilo", "bodyFont": "Fonte do Corpo", - "headingFont": "Fonte dos Títulos", + "headingFont": "Fonte de Títulos", "sameAsBody": "Igual ao corpo", "fontSize": "Tamanho da Fonte", "fontSizes": { @@ -1247,39 +1247,39 @@ "grid": "Grade", "waves": "Ondas" }, - "customCSSHelp": "Avançado: Adicione CSS personalizado para personalizar ainda mais a aparência", + "customCSSHelp": "Avançado: Adicione CSS personalizado para ajustar a aparência", "cssInstructions": { "title": "Como usar CSS Personalizado", "variables": "Variáveis CSS do Tema", - "variablesDesc": "Use essas variáveis CSS para corresponder aos seus temas predefinidos:", - "layouts": "Layouts de Galeria Personalizados", - "layoutsDesc": "Direcione elementos da galeria com esses seletores:", + "variablesDesc": "Use estas variáveis para combinar com seus temas:", + "layouts": "Layouts de Galeria Customizados", + "layoutsDesc": "Alvo de elementos com estes seletores:", "glassEffect": "Efeito Glassmorphism", - "glassEffectDesc": "Crie efeitos de vidro modernos:", + "glassEffectDesc": "Crie efeitos modernos de vidro:", "tip": "Dica", - "tipText": "Use Modelos de CSS em Configurações > Modelos CSS para designs pré-construídos como Apple Liquid Glass." + "tipText": "Use Modelos CSS em Configurações > Modelos CSS para designs prontos." }, - "resetToDefault": "Redefinir para Padrão", + "resetToDefault": "Redefinir para o Padrão", "applyTheme": "Aplicar Tema", "customTheme": "Tema Personalizado", "customizeTheme": "Personalizar Tema", "saveTheme": "Salvar Tema", - "previewLayout": "Pré-visualizar Layout", - "livePreview": "Pré-visualização ao Vivo", - "heroPlaceholderText": "A foto hero do seu evento aparecerá aqui", + "previewLayout": "Visualizar Layout", + "livePreview": "Prévia ao Vivo", + "heroPlaceholderText": "A foto de destaque do seu evento aparecerá aqui", "whiteLabel": "White Label", - "hidePoweredBy": "Ocultar marca \"Desenvolvido por PicPeak\"", - "hidePoweredByHelp": "Remover a atribuição do PicPeak dos rodapés das galerias para uma experiência totalmente white-label", - "logoCustomization": "Personalização do Logo", + "hidePoweredBy": "Ocultar selo \"Powered by PicPeak\"", + "hidePoweredByHelp": "Remove a atribuição do PicPeak do rodapé da galeria", + "logoCustomization": "Customização da Logo", "changeLogo": "Alterar Logo", - "logoSizeSmall": "Pequeno (32px)", - "logoSizeMedium": "Médio (48px)", + "logoSizeSmall": "Pequena (32px)", + "logoSizeMedium": "Média (48px)", "logoSizeLarge": "Grande (64px)", "logoSizeXLarge": "Extra Grande (96px)", - "logoSizeCustom": "Personalizado", + "logoSizeCustom": "Customizado", "logoMaxHeight": "Altura Máxima (pixels)", - "logoMaxHeightHelp": "Defina uma altura máxima personalizada para o logo (20-200 pixels)", - "logoPosition": "Posição do Logo no Cabeçalho", + "logoMaxHeightHelp": "Define uma altura máxima para a logo (20-200 px)", + "logoPosition": "Posição da Logo no Cabeçalho", "positionLeft": "Esquerda", "positionCenter": "Centro", "positionRight": "Direita", @@ -1287,28 +1287,28 @@ "logoOnly": "Apenas Logo", "textOnly": "Apenas Nome da Empresa", "logoAndText": "Logo e Nome da Empresa", - "showLogoInHeader": "Mostrar logo no cabeçalho da galeria", - "showLogoInHeaderHelp": "Exibir o logo na barra de cabeçalho principal", - "showLogoInHero": "Mostrar logo na seção hero", - "showLogoInHeroHelp": "Exibir o logo nas seções hero (para layouts não-grade)", + "showLogoInHeader": "Mostrar logo no cabeçalho", + "showLogoInHeaderHelp": "Exibe a logo na barra principal superior", + "showLogoInHero": "Mostrar logo na seção Hero", + "showLogoInHeroHelp": "Exibe a logo na seção de destaque", "headerStyle": "Estilo do Cabeçalho", - "headerStyleDescription": "Escolha como o cabeçalho da galeria é exibido. O estilo do cabeçalho é independente do layout das fotos.", + "headerStyleDescription": "Escolha como o topo da galeria aparece.", "headerStyleOptions": { - "hero": "Imagem Hero", - "standard": "Padrão", + "hero": "Imagem de Destaque (Hero)", + "standard": "Banner Padrão", "banner": "Banner", "minimal": "Minimalista", "none": "Sem Cabeçalho" }, "headerStyleDescriptions": { - "hero": "Imagem em altura total com sobreposição de informações do evento", - "standard": "Cabeçalho compacto com detalhes do evento", + "hero": "Imagem de tela cheia com info sobreposta", + "standard": "Banner clássico com detalhes do evento", "banner": "Cabeçalho padrão com banner colorido acima", - "minimal": "Cabeçalho compacto com informações essenciais", - "none": "Ocultar cabeçalho completamente" + "minimal": "Cabeçalho compacto com o essencial", + "none": "Oculta o cabeçalho completamente" }, "heroDividerStyle": "Estilo do Divisor", - "heroDividerDescription": "Escolha como é a transição entre a imagem hero e o conteúdo da galeria.", + "heroDividerDescription": "Transição entre a imagem de destaque e o conteúdo.", "dividerOptions": { "wave": "Onda", "straight": "Reto", @@ -1317,16 +1317,16 @@ "none": "Nenhum" }, "controlsStyle": "Estilo dos Controles", - "controlsStyleDescription": "Escolha como os filtros e controles da galeria são exibidos.", + "controlsStyleDescription": "Escolha como filtros e controles são exibidos.", "controlsStyleOptions": { "classic": "Clássico", "sidebar": "Barra Lateral" }, "controlsStyleDescriptions": { - "classic": "Barra de filtros inline abaixo do cabeçalho", - "sidebar": "Botão de menu abre barra lateral com filtros" + "classic": "Barra de filtros abaixo do cabeçalho", + "sidebar": "Botão de menu abre lateral com filtros" }, - "controlsStyleHeroWarning": "A barra lateral é recomendada para cabeçalhos hero para evitar que os controles apareçam acima da imagem hero.", + "controlsStyleHeroWarning": "A barra lateral é recomendada para cabeçalhos Hero.", "betaThumbnailWarningTitle": "Baixa resolução de miniatura detectada", "betaThumbnailWarningText": "Suas miniaturas são atualmente {{width}}×{{height}}px. Temas beta exibem fotos em tamanhos maiores e requerem pelo menos {{recommended}}×{{recommended}}px para boa qualidade. Aumente as dimensões das miniaturas em Configurações > Miniaturas e regenere.", "betaThumbnailWarningLink": "Ir para configurações de miniaturas" @@ -1338,9 +1338,9 @@ "systemStatus": "Status do Sistema", "totalEvents": "Total de Eventos", "activeGalleries": "Galerias Ativas", - "storageUsed": "Armazenamento Usado", + "storageUsed": "Espaço Utilizado", "totalPhotos": "Total de Fotos", - "storagePercent": "{{percent}}% do limite {{limit}}", + "storagePercent": "{{percent}}% do limite de {{limit}}", "storageSoftLimitConfigured": "Limite configurado: {{limit}}", "storageSoftLimitRecommended": "Limite sugerido: {{limit}}", "version": "Versão", @@ -1354,16 +1354,16 @@ }, "updates": { "available": "Atualização Disponível", - "newVersion": "A versão {{version}} está disponível", + "newVersion": "Versão {{version}} disponível", "currentVersion": "Atual: {{version}}", "channel": "Canal: {{channel}}", "channelStable": "Estável", "channelBeta": "Beta", "beta": "BETA", - "viewReleaseNotes": "Ver Notas de Versão", + "viewReleaseNotes": "Ver Notas de Lançamento", "updateAvailableShort": "v{{version}} disponível", "checkForUpdates": "Verificar Atualizações", - "upToDate": "Você está atualizado", + "upToDate": "Sistema atualizado", "lastChecked": "Última verificação: {{time}}", "updateNow": "Atualizar Agora", "updateDialog": { @@ -1373,22 +1373,22 @@ "updateCommands": "Comandos de Atualização:", "afterUpdating": "Após atualizar:", "copyAllCommands": "Copiar Todos os Comandos", - "completeChecklist": "Complete a lista de verificação antes de atualizar", - "error": "Falha ao carregar as instruções de atualização" + "completeChecklist": "Complete a lista antes de atualizar", + "error": "Falha ao carregar instruções de atualização" } }, "notifications": "Notificações", "viewAllNotifications": "Ver todas as notificações", - "noNotifications": "Nenhuma notificação nova", - "markAllRead": "Marcar todas como lidas", + "noNotifications": "Sem novas notificações", + "markAllRead": "Marcar tudo como lido", "clearAll": "Limpar tudo", "close": "Fechar", "noNotificationsMessage": "Nenhuma notificação", "notificationMessages": { - "eventCreated": "Novo evento \"{{eventName}}\" foi criado", - "eventArchived": "Evento \"{{eventName}}\" foi arquivado", - "eventUpdated": "Evento \"{{eventName}}\" foi atualizado", - "eventDeleted": "Evento \"{{eventName}}\" foi excluído", + "eventCreated": "Novo evento \"{{eventName}}\" criado", + "eventArchived": "Evento \"{{eventName}}\" arquivado", + "eventUpdated": "Evento \"{{eventName}}\" atualizado", + "eventDeleted": "Evento \"{{eventName}}\" excluído", "photosUploaded": "{{count}} fotos enviadas para \"{{eventName}}\"", "photoDeleted": "Foto excluída de \"{{eventName}}\"", "photosBulkDeleted": "{{count}} fotos excluídas de \"{{eventName}}\"", @@ -1397,57 +1397,57 @@ "passwordChanged": "Senha alterada por {{actorName}}", "passwordReset": "Senha redefinida para \"{{eventName}}\"", "settingsUpdated": "Configurações de {{type}} atualizadas", - "emailTemplateUpdated": "Modelo de email \"{{template}}\" atualizado", + "emailTemplateUpdated": "Modelo de e-mail \"{{template}}\" atualizado", "bulkDownload": "{{count}} fotos baixadas de \"{{eventName}}\"", "storageWarning": "Uso de armazenamento em {{percentage}}%", - "adminLogout": "Admin {{actorName}} encerrou a sessão", + "adminLogout": "Admin {{actorName}} saiu do sistema", "categoryCreated": "Categoria \"{{name}}\" criada para \"{{eventName}}\"", "categoryUpdated": "Categoria \"{{name}}\" atualizada para \"{{eventName}}\"", "categoryDeleted": "Categoria \"{{name}}\" excluída de \"{{eventName}}\"", "cmsPageUpdated": "Página CMS \"{{slug}}\" atualizada", - "emailConfigUpdated": "Configuração de email atualizada", + "emailConfigUpdated": "Configuração de e-mail atualizada", "faviconUploaded": "Favicon enviado", - "brandingUpdated": "Configurações de identidade visual atualizadas", + "brandingUpdated": "Configurações de marca atualizadas", "generalSettingsUpdated": "Configurações gerais atualizadas", "securitySettingsUpdated": "Configurações de segurança atualizadas", "themeUpdated": "Configurações de tema atualizadas", "archiveDownloaded": "Arquivo baixado para \"{{eventName}}\"", - "archiveDeleted": "Arquivo excluído para \"{{eventName}}\"", + "archiveDeleted": "Arquivo excluído de \"{{eventName}}\"", "archiveRestored": "Arquivo restaurado para \"{{eventName}}\"", "systemActivity": "Atividade do sistema: {{type}}", "adminProfileUpdated": "Perfil admin atualizado por {{actorName}}" }, "notificationToasts": { "markedAllRead": "Todas as notificações marcadas como lidas", - "clearedAll": "{{count}} notificações apagadas", + "clearedAll": "Limpas {{count}} notificações", "profileUpdated": "Perfil admin atualizado" }, "markAsRead": "Marcar como lida", "markAllAsRead": "Marcar todas como lidas", "notificationSettings": "Configurações de Notificação", "changePassword": "Alterar Senha", - "darkMode": "Mudar para modo escuro", - "lightMode": "Mudar para modo claro", + "darkMode": "Alternar para modo escuro", + "lightMode": "Alternar para modo claro", "accountSettings": { - "title": "Conta admin", - "description": "Atualize as credenciais usadas para entrar no PicPeak.", - "username": "Nome de usuário", + "title": "Conta Admin", + "description": "Atualize as credenciais de acesso ao PicPeak.", + "username": "Usuário", "usernamePlaceholder": "Admin", - "email": "Email", - "emailPlaceholder": "admin@example.com", + "email": "E-mail", + "emailPlaceholder": "admin@exemplo.com", "updateButton": "Atualizar perfil" }, - "profileUpdateError": "Não foi possível atualizar o perfil admin. Por favor, tente novamente.", + "profileUpdateError": "Não foi possível atualizar o perfil. Tente novamente.", "loadingDashboard": "Carregando painel...", "activeEvents": "Eventos Ativos", "expiringSoon": "Expirando em Breve", "next7Days": "Próximos 7 dias", "totalViews": "Total de Visualizações", "downloads": "Downloads", - "percentFromLastWeek": "{{percent}}% da semana passada", - "dashboardSubtitle": "Bem-vindo de volta! Veja o que está acontecendo com suas galerias.", + "percentFromLastWeek": "{{percent}}% em relação à última semana", + "dashboardSubtitle": "Bem-vindo! Confira o que está acontecendo nas suas galerias.", "eventsExpiringSoon": "Eventos Expirando em Breve", - "noEventsExpiring": "Nenhum evento expirando nos próximos 7 dias", + "noEventsExpiring": "Nenhum evento expira nos próximos 7 dias", "daysLeft": "{{count}} dia restante", "daysLeft_plural": "{{count}} dias restantes", "viewAllExpiringEvents": "Ver todos os {{count}} eventos expirando", @@ -1463,9 +1463,9 @@ "archive_restored": "Arquivo restaurado: {{eventName}}", "archive_deleted": "Arquivo excluído: {{eventName}}", "archive_downloaded": "Arquivo baixado: {{eventName}}", - "email_config_updated": "Configuração de email atualizada", - "email_template_updated": "Modelo de email atualizado: {{template}}", - "branding_updated": "Configurações de identidade visual atualizadas", + "email_config_updated": "Configuração de e-mail atualizada", + "email_template_updated": "Modelo de e-mail atualizado: {{template}}", + "branding_updated": "Identidade visual atualizada", "theme_updated": "Configurações de tema atualizadas", "bulk_download": "{{count}} fotos baixadas de {{eventName}}", "gallery_password_entry": "Senha inserida para {{eventName}}", @@ -1477,13 +1477,13 @@ "photo_favorite": "Foto favoritada em {{eventName}}", "photo_rating": "Foto avaliada em {{eventName}}", "photo_comment": "Foto comentada em {{eventName}}", - "guest_feedback_like": "Visitante curtiu uma foto em {{eventName}}", - "guest_feedback_favorite": "Visitante favoritou uma foto em {{eventName}}", - "guest_feedback_rating": "Visitante avaliou uma foto em {{eventName}}", - "guest_feedback_comment": "Visitante comentou em uma foto em {{eventName}}", + "guest_feedback_like": "Convidado curtiu uma foto em {{eventName}}", + "guest_feedback_favorite": "Convidado favoritou uma foto em {{eventName}}", + "guest_feedback_rating": "Convidado avaliou uma foto em {{eventName}}", + "guest_feedback_comment": "Convidado comentou em uma foto em {{eventName}}", "word_filter_added": "Filtro de palavras adicionado", "external_import_completed": "Importação de mídia externa concluída ({{imported}} importadas, {{skipped}} ignoradas)", - "bulk_archive_completed": "Arquivamento em massa concluído", + "bulk_archive_completed": "Arquivamento em lote concluído", "event_activated": "Evento ativado: {{eventName}}", "event_deactivated": "Evento desativado: {{eventName}}", "photo_deleted": "Foto excluída de {{eventName}}", @@ -1493,7 +1493,7 @@ "event_renamed": "Evento renomeado: {{eventName}}", "event_deleted": "Evento excluído: {{eventName}}", "password_changed": "Senha alterada", - "email_resent": "Email de criação reenviado para: {{eventName}}", + "email_resent": "E-mail de criação reenviado para: {{eventName}}", "category_created": "Categoria criada: {{categoryName}}", "category_updated": "Categoria atualizada: {{categoryName}}", "category_deleted": "Categoria excluída: {{categoryName}}", @@ -1503,7 +1503,7 @@ "cms_page_updated": "Página CMS atualizada: {{page}}", "security_settings_updated": "Configurações de segurança atualizadas", "password_reset": "Senha redefinida para: {{eventName}}", - "admin_logout": "Admin {{actorName}} encerrou a sessão", + "admin_logout": "Admin {{actorName}} saiu", "system_activity": "Atividade do sistema: {{type}}", "unknown": "Atividade desconhecida" }, @@ -1521,14 +1521,14 @@ "inactive": "Inativo" }, "inviteForm": { - "email": "Endereço de Email", + "email": "Endereço de E-mail", "role": "Função", "send": "Enviar Convite" }, "acceptInvite": { "title": "Aceitar Convite de Admin", - "username": "Escolha um Nome de Usuário", - "password": "Criar Senha", + "username": "Escolha um Usuário", + "password": "Crie uma Senha", "submit": "Criar Conta" }, "photos": { @@ -1541,21 +1541,21 @@ }, "permissions": { "insufficient": "Você não tem permissão para realizar esta ação", - "viewOnly": "Somente Visualização" + "viewOnly": "Apenas Visualização" }, "acceptInvitation": { "title": "Aceitar Convite", - "subtitle": "Crie sua conta admin", + "subtitle": "Crie sua conta administrativa", "validating": "Validando convite...", "invalidToken": "Convite Inválido", - "invalidTokenMessage": "Este link de convite é inválido ou expirou. Entre em contato com seu administrador para um novo convite.", + "invalidTokenMessage": "Este link de convite é inválido ou expirou. Contate o administrador.", "expiredToken": "Convite Expirado", - "expiredTokenMessage": "Este convite expirou. Solicite um novo convite ao seu administrador.", + "expiredTokenMessage": "Este convite expirou. Solicite um novo convite.", "alreadyUsed": "Convite Já Utilizado", "alreadyUsedMessage": "Este convite já foi usado para criar uma conta.", "invitedAs": "Você foi convidado como", "expiresAt": "O convite expira em", - "usernameLabel": "Nome de usuário", + "usernameLabel": "Usuário", "usernamePlaceholder": "Escolha um nome de usuário", "usernameHelp": "3-50 caracteres, apenas letras, números, sublinhados e hífens", "passwordLabel": "Senha", @@ -1580,25 +1580,25 @@ "createAccount": "Criar Conta", "creating": "Criando conta...", "success": "Conta Criada!", - "successMessage": "Sua conta foi criada com sucesso. Agora você pode entrar com suas credenciais.", - "redirecting": "Redirecionando para o login em {{seconds}}...", + "successMessage": "Sua conta foi criada com sucesso. Você já pode fazer login.", + "redirecting": "Redirecionando para login em {{seconds}}s...", "goToLogin": "Ir para Login", - "contactAdminMessage": "Entre em contato com seu administrador para solicitar um novo convite.", + "contactAdminMessage": "Entre em contato com o administrador para solicitar um novo convite.", "passwordsMatch": "As senhas coincidem", - "alreadyHaveAccount": "Já tem uma conta?", + "alreadyHaveAccount": "Já possui uma conta?", "signIn": "Entrar", "errors": { - "usernameRequired": "Nome de usuário é obrigatório", - "usernameTooShort": "O nome de usuário deve ter pelo menos 3 caracteres", - "usernameTooLong": "O nome de usuário deve ter no máximo 50 caracteres", - "usernameInvalid": "O nome de usuário só pode conter letras, números, sublinhados e hífens", + "usernameRequired": "Usuário é obrigatório", + "usernameTooShort": "Usuário deve ter pelo menos 3 caracteres", + "usernameTooLong": "Usuário deve ter no máximo 50 caracteres", + "usernameInvalid": "O usuário só pode conter letras, números, sublinhados e hífens", "passwordRequired": "Senha é obrigatória", "passwordTooShort": "A senha deve ter pelo menos 12 caracteres", "passwordsDoNotMatch": "As senhas não coincidem", - "confirmPasswordRequired": "Por favor, confirme sua senha", + "confirmPasswordRequired": "Confirme sua senha", "usernameTaken": "Este nome de usuário já está em uso", - "emailTaken": "Já existe uma conta com este email", - "genericError": "Falha ao criar conta. Por favor, tente novamente." + "emailTaken": "Uma conta com este e-mail já existe", + "genericError": "Falha ao criar conta. Tente novamente." } }, "errors": { @@ -1606,30 +1606,30 @@ "galleryNotFound": "Galeria Não Encontrada", "galleryNotFoundMessage": "Esta galeria não existe ou foi removida.", "galleryArchived": "Galeria Arquivada", - "galleryArchivedMessage": "Esta galeria foi arquivada e não está mais acessível. Entre em contato com o organizador do evento se precisar de acesso a estas fotos.", - "unauthorized": "Não Autorizado", - "forbidden": "Acesso Negado", + "galleryArchivedMessage": "Esta galeria foi arquivada e não está mais acessível. Contate o organizador se precisar de acesso.", + "unauthorized": "Não autorizado", + "forbidden": "Proibido", "serverError": "Erro no Servidor", "somethingWentWrong": "Algo deu errado", - "tryAgainLater": "Por favor, tente novamente mais tarde", - "refreshPage": "Recarregar Página", + "tryAgainLater": "Tente novamente mais tarde", + "refreshPage": "Atualizar Página", "oopsSomethingWentWrong": "Ops! Algo deu errado", "unexpectedError": "Encontramos um erro inesperado. Não se preocupe, seus dados estão seguros.", - "goToHomepage": "Ir para a Página Inicial", + "goToHomepage": "Ir para Página Inicial", "errorDetails": "Detalhes do Erro", - "requiredFields": "Por favor, preencha todos os campos obrigatórios", - "enterTestEmail": "Por favor, insira um endereço de email de teste", + "requiredFields": "Preencha todos os campos obrigatórios", + "enterTestEmail": "Insira um endereço de e-mail para teste", "failedToCreateEvent": "Falha ao criar evento", - "eventCreationFailed": "Falha ao criar evento", - "networkError": "Erro de rede. Por favor, verifique sua conexão e tente novamente.", - "sessionExpired": "Sessão expirada. Por favor, faça login novamente." + "eventCreationFailed": "Criação de evento falhou", + "networkError": "Erro de rede. Verifique sua conexão e tente novamente.", + "sessionExpired": "Sessão expirada. Faça login novamente." }, "validation": { "eventNameRequired": "O nome do evento é obrigatório", - "hostEmailRequired": "O email do cliente é obrigatório", + "hostEmailRequired": "O e-mail do cliente é obrigatório", "hostNameRequired": "O nome do cliente é obrigatório", - "adminEmailRequired": "O email do admin é obrigatório", - "invalidEmailFormat": "Formato de email inválido", + "adminEmailRequired": "O e-mail do admin é obrigatório", + "invalidEmailFormat": "Formato de e-mail inválido", "passwordRequired": "Senha é obrigatória", "passwordMinLength": "A senha deve ter pelo menos 6 caracteres", "passwordsDoNotMatch": "As senhas não coincidem", @@ -1647,8 +1647,8 @@ "saveError": "Falha ao salvar alterações", "deleteSuccess": "Excluído com sucesso", "deleteError": "Falha ao excluir", - "uploadSuccess": "Upload concluído com sucesso", - "uploadError": "Falha no upload", + "uploadSuccess": "Envio concluído com sucesso", + "uploadError": "Falha no envio", "loginSuccess": "Login realizado com sucesso", "loginError": "Falha no login", "passwordChanged": "Senha alterada com sucesso", @@ -1662,60 +1662,60 @@ "categoryAdded": "Categoria adicionada com sucesso", "categoryDeleted": "Categoria excluída com sucesso", "categoryUpdated": "Categoria atualizada com sucesso", - "emailConfigSaved": "Configuração de email salva com sucesso", - "testEmailSent": "Email de teste enviado com sucesso", + "emailConfigSaved": "Configuração de e-mail salva com sucesso", + "testEmailSent": "E-mail de teste enviado com sucesso", "pageUpdated": "Página atualizada com sucesso", "archiveRestored": "Arquivo restaurado com sucesso", "archiveDeleted": "Arquivo excluído permanentemente" }, "email": { - "title": "Configuração de Email", - "subtitle": "Configure as definições de email para notificações", - "loadingSettings": "Carregando configurações de email...", + "title": "Configuração de E-mail", + "subtitle": "Configure os ajustes de e-mail para notificações", + "loadingSettings": "Carregando configurações de e-mail...", "smtpConfiguration": "Configuração SMTP", - "smtpHost": "Host SMTP", - "smtpHostHelp": "O nome do host do seu servidor de email", + "smtpHost": "Servidor SMTP", + "smtpHostHelp": "O hostname do seu servidor de e-mail", "smtpPort": "Porta SMTP", - "smtpPortHelp": "Geralmente 587 para TLS, 465 para SSL, 25 para sem criptografia", + "smtpPortHelp": "Geralmente 587 (TLS), 465 (SSL) ou 25", "smtpSecure": "Usar SSL/TLS", - "smtpSecureHelp": "Ative para transmissão segura de email", + "smtpSecureHelp": "Ative para transmissão segura de e-mail", "smtpUsername": "Usuário SMTP", - "smtpUsernameHelp": "O nome de usuário da sua conta de email", + "smtpUsernameHelp": "Seu usuário da conta de e-mail", "smtpPassword": "Senha SMTP", - "smtpPasswordHelp": "A senha da sua conta de email", + "smtpPasswordHelp": "Sua senha da conta de e-mail", "fromDetails": "Detalhes do Remetente", - "fromEmail": "Email do Remetente", - "fromEmailHelp": "Endereço de email que aparece como remetente", + "fromEmail": "E-mail de Origem", + "fromEmailHelp": "Endereço que aparecerá como remetente", "fromName": "Nome do Remetente", - "fromNameHelp": "Nome que aparece como remetente", + "fromNameHelp": "Nome que aparecerá como remetente", "testConfiguration": "Testar Configuração", - "testEmail": "Endereço de Email de Teste", - "testEmailHelp": "Envie um email de teste para verificar as configurações", - "sendTestEmail": "Enviar Email de Teste", + "testEmail": "E-mail de Teste", + "testEmailHelp": "Envie um e-mail para verificar as configurações", + "sendTestEmail": "Enviar E-mail de Teste", "saveConfiguration": "Salvar Configuração", - "emailTemplates": "Modelos de Email", + "emailTemplates": "Modelos de E-mail", "templateVariables": "Variáveis Disponíveis", - "previewTemplate": "Pré-visualizar Modelo", + "previewTemplate": "Visualizar Modelo", "smtpSettings": "Configurações SMTP", - "testEmailSuccess": "Email de teste enviado com sucesso", - "saveSmtpSettings": "Salvar Configurações SMTP", - "testEmailSection": "Email de Teste", + "testEmailSuccess": "E-mail de teste enviado com sucesso", + "saveSmtpSettings": "Salvar Ajustes SMTP", + "testEmailSection": "E-mail de Teste", "beforeTesting": "Antes de testar:", "saveSmtpFirst": "Salve suas configurações SMTP primeiro", - "ensureFirewall": "Certifique-se de que seu firewall permite SMTP de saída", - "gmailAppPassword": "Para Gmail, use uma senha específica de aplicativo", - "testEmailAddressLabel": "Endereço de Email de Teste", - "sendTestEmailButton": "Enviar Email de Teste", - "commonSmtpSettings": "Configurações SMTP Comuns:", + "ensureFirewall": "Garanta que seu firewall permite saída SMTP", + "gmailAppPassword": "Para Gmail, use uma senha de aplicativo", + "testEmailAddressLabel": "Endereço de E-mail de Teste", + "sendTestEmailButton": "Enviar E-mail de Teste", + "commonSmtpSettings": "Configurações SMTP comuns:", "editTemplate": "Editar Modelo", "templateName": "Nome do Modelo", "subjectLine": "Linha de Assunto", - "emailBody": "Corpo do Email", - "preview": "Pré-visualizar", + "emailBody": "Corpo do E-mail", + "preview": "Visualizar", "save": "Salvar", "saveChanges": "Salvar Alterações", "templates": "Modelos", - "variableHelp": "Use estas variáveis no seu modelo. Elas serão substituídas pelos valores reais quando os emails forem enviados.", + "variableHelp": "Use estas variáveis no seu modelo. Elas serão substituídas por valores reais no envio.", "port": "Porta", "security": "Segurança", "username": "Usuário", @@ -1723,7 +1723,7 @@ "enterPassword": "Digite a senha", "required": "obrigatório", "ignoreSslErrors": "Ignorar erros de certificado SSL/TLS", - "ignoreSslWarning": "Aviso: Desativar a verificação de certificado torna a conexão vulnerável a ataques man-in-the-middle. Ative isso somente se você confia no servidor SMTP e compreende as implicações de segurança.", + "ignoreSslWarning": "Aviso: Desabilitar a verificação torna a conexão vulnerável. Ative apenas se confiar no servidor.", "brandingTitle": "Identidade Visual do Email", "brandingDescription": "Personalize as cores usadas nos modelos de email. As alterações se aplicam à barra de cabeçalho, botões, links e fundo do rodapé.", "primaryColor": "Cor Primária", @@ -1759,10 +1759,10 @@ }, "cms": { "title": "Páginas CMS", - "subtitle": "Gerencie páginas legais e informativas", + "subtitle": "Gerenciar páginas legais e informativas", "loadingPages": "Carregando páginas...", "pages": "Páginas", - "previewLinks": "Links de Visualização", + "previewLinks": "Links de Prévia", "englishVersion": "Versão em Inglês", "germanVersion": "Versão em Alemão", "editPage": "Editar {{page}}", @@ -1794,10 +1794,10 @@ "createError": "Falha ao criar tipo de evento", "updateError": "Falha ao atualizar tipo de evento", "deleteError": "Falha ao excluir tipo de evento", - "searchPlaceholder": "Pesquisar tipos de evento...", + "searchPlaceholder": "Buscar tipos de evento...", "showInactive": "Mostrar inativos", "noResults": "Nenhum tipo de evento encontrado", - "empty": "Nenhum tipo de evento ainda", + "empty": "Nenhum tipo de evento cadastrado", "system": "Sistema", "table": { "type": "Tipo", @@ -1808,36 +1808,36 @@ }, "form": { "name": "Nome de Exibição", - "namePlaceholder": "ex.: Ensaio de Família", + "namePlaceholder": "ex: Ensaio de Família", "slugPrefix": "Prefixo de URL", - "slugPrefixPlaceholder": "ex.: familia", - "slugPreview": "URL de exemplo:", + "slugPrefixPlaceholder": "ex: familia", + "slugPreview": "Exemplo de URL:", "emoji": "Ícone", "themePreset": "Tema Padrão", "isActive": "Ativo (visível na criação de eventos)" }, "validation": { - "slugFormat": "Apenas letras, números e hifens são permitidos" + "slugFormat": "Apenas letras, números e hífens permitidos" }, "slugInfo": { - "title": "Informações sobre o Prefixo de URL:", - "description": "O prefixo de URL é usado para gerar as URLs das galerias. Por exemplo, um tipo de evento com o prefixo \"familia\" criará URLs como: familia-silva-familia-2025-01-22" + "title": "Informação do Prefixo de URL:", + "description": "O prefixo é usado para gerar a URL da galeria. Ex: um tipo \"família\" criará URLs como familia-silva-2025." }, "deleteConfirm": { "title": "Excluir Tipo de Evento", "message": "Tem certeza que deseja excluir", - "warning": "Esta ação não pode ser desfeita. Certifique-se de que nenhum evento está usando este tipo." + "warning": "Esta ação não pode ser desfeita. Certifique-se de que nenhum evento usa este tipo." } }, "backup": { "external": { "warning": { "title": "Mídia externa excluída", - "body": "Esta instalação referencia fotos de /external-media. Esses originais estão excluídos dos backups. Miniaturas e banco de dados ainda são incluídos no backup." + "body": "Esta instalação referencia fotos em /external-media. Os arquivos originais estão excluídos dos backups. Miniaturas e banco de dados continuam incluídos." } }, "title": "Gerenciamento de Backup", - "subtitle": "Gerencie backups do sistema, configure backups automatizados e restaure a partir de backups anteriores.", + "subtitle": "Gerencie backups do sistema, configure backups automáticos e restaure dados.", "tabs": { "dashboard": "Painel", "configuration": "Configuração", @@ -1845,7 +1845,7 @@ "restore": "Restaurar" }, "status": { - "inProgress": "Backup em andamento...", + "inProgress": "Backup em progresso...", "lastBackup": "Último backup", "noBackups": "Nenhum backup encontrado", "nextBackup": "Próximo backup", @@ -1865,44 +1865,44 @@ "refresh": "Atualizar" }, "dashboard": { - "backupHealth": "Integridade do Backup", + "backupHealth": "Saúde do Backup", "healthStatus": { "excellent": "Excelente", - "good": "Bom", - "warning": "Atenção", - "critical": "Crítico" + "good": "Boa", + "warning": "Aviso", + "critical": "Crítica" }, "health": { - "title": "Integridade do Backup" + "title": "Saúde do Backup" }, "healthMessages": { "noBackups": "Nenhum backup encontrado", - "lastBackupFailed": "Último backup falhou", - "upToDate": "Backup está atualizado", - "recent": "Backup é recente", - "gettingOld": "Backup está ficando antigo", - "outdated": "Backup está desatualizado", + "lastBackupFailed": "O último backup falhou", + "upToDate": "Backup atualizado", + "recent": "Backup recente", + "gettingOld": "Backup ficando antigo", + "outdated": "Backup desatualizado", "failed": "Último backup falhou", "old": "Backup está ficando antigo" }, "stats": { "totalBackups": "Total de Backups", "backupSize": "Tamanho do Backup", - "lastDuration": "Duração do Último", + "lastDuration": "Última Duração", "backupStatus": "Status do Backup", "last": "Último", "files": "arquivos", "minutes": "{{count}}m", "active": "Ativo", "inactive": "Inativo", - "noBackupsYet": "Nenhum backup ainda" + "noBackupsYet": "Ainda sem backups" }, "recentActivity": { "title": "Atividade Recente de Backup" }, "notConfigured": { "title": "Backup Não Configurado", - "message": "Por favor, configure as definições de backup na aba Configuração antes de executar backups." + "message": "Configure as definições de backup na aba Configuração antes de executar." }, "actions": { "runBackupNow": "Executar Backup Agora", @@ -1918,59 +1918,59 @@ "excluded": "Excluído", "optional": "Opcional" }, - "storageDestination": "Destino de Armazenamento", + "storageDestination": "Destino do Armazenamento", "nextScheduledBackup": "Próximo Backup Agendado", "backupType": "Backup {{type}}", "noDestinationSet": "Nenhum destino definido" }, "configuration": { - "enableBackup": "Ativar Backups Automatizados", - "enableBackupHelp": "Criar backups automaticamente de acordo com o agendamento configurado", + "enableBackup": "Ativar Backups Automáticos", + "enableBackupHelp": "Criar backups automaticamente conforme o agendamento", "destinationType": "Destino do Backup", "destinationTypes": { "local": { "name": "Armazenamento Local", - "description": "Armazenar backups no sistema de arquivos local do servidor" + "description": "Armazena no sistema de arquivos do servidor local" }, "rsync": { "name": "Servidor Remoto (Rsync)", - "description": "Sincronizar backups para um servidor remoto via SSH/Rsync" + "description": "Sincroniza backups para um servidor remoto via SSH" }, "s3": { "name": "Armazenamento S3 Compatível", - "description": "Armazenar backups no Amazon S3 ou armazenamento de objetos compatível" + "description": "Armazena no Amazon S3 ou storage compatível" } }, "fields": { "destinationPath": "Caminho de Destino", - "destinationPathHelp": "Caminho do diretório local para armazenar backups", - "destinationPathPlaceholder": "/caminho/para/diretorio/backup", + "destinationPathHelp": "Diretório local para armazenar os backups", + "destinationPathPlaceholder": "/caminho/para/diretorio/de/backup", "rsyncHost": "Host Remoto", - "rsyncHostHelp": "Nome do host SSH ou endereço IP", + "rsyncHostHelp": "Hostname ou IP via SSH", "rsyncHostPlaceholder": "backup.exemplo.com", "rsyncUser": "Usuário SSH", - "rsyncUserHelp": "Nome de usuário para conexão SSH", + "rsyncUserHelp": "Usuário para conexão SSH", "rsyncUserPlaceholder": "usuario-backup", "rsyncPath": "Caminho Remoto", - "rsyncPathHelp": "Caminho do diretório no servidor remoto", - "rsyncPathPlaceholder": "/home/backup/compartilhamento-fotos", + "rsyncPathHelp": "Diretório no servidor remoto", + "rsyncPathPlaceholder": "/home/backup/fotos", "rsyncSshKey": "Chave Privada SSH", - "rsyncSshKeyHelp": "Chave privada SSH para autenticação (opcional)", + "rsyncSshKeyHelp": "Chave SSH para autenticação (opcional)", "rsyncSshKeyPlaceholder": "-----BEGIN RSA PRIVATE KEY-----", "s3Endpoint": "Endpoint S3", - "s3EndpointHelp": "Endpoint da API S3 (ex.: s3.amazonaws.com)", + "s3EndpointHelp": "URL da API S3 (ex: s3.amazonaws.com)", "s3EndpointPlaceholder": "https://s3.amazonaws.com", "s3Bucket": "Nome do Bucket", - "s3BucketHelp": "Bucket S3 para armazenar backups", + "s3BucketHelp": "Bucket S3 para os backups", "s3BucketPlaceholder": "meu-bucket-de-backup", "s3AccessKey": "ID da Chave de Acesso", - "s3AccessKeyHelp": "ID da chave de acesso AWS/S3", - "s3AccessKeyPlaceholder": "AKIAIOSFODNN7EXAMPLE", + "s3AccessKeyHelp": "ID da chave AWS/S3", + "s3AccessKeyPlaceholder": "AKIAIOSFODNN7EXEMPLO", "s3SecretKey": "Chave de Acesso Secreta", - "s3SecretKeyHelp": "Chave de acesso secreta AWS/S3", - "s3SecretKeyPlaceholder": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + "s3SecretKeyHelp": "Chave secreta AWS/S3", + "s3SecretKeyPlaceholder": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXEMPLO", "s3Region": "Região", - "s3RegionHelp": "Região S3 (ex.: us-east-1)", + "s3RegionHelp": "Região S3 (ex: us-east-1)", "s3RegionPlaceholder": "us-east-1" }, "schedule": { @@ -1978,54 +1978,54 @@ "scheduleType": "Tipo de Agendamento", "scheduleOptions": { "hourly": "A cada hora", - "daily": "Diariamente", - "weekly": "Semanalmente", + "daily": "Diário", + "weekly": "Semanal", "custom": "Expressão cron personalizada" }, "options": { "hourly": "A cada hora", - "daily": "Diariamente", - "weekly": "Semanalmente", + "daily": "Diário", + "weekly": "Semanal", "custom": "Expressão cron personalizada" }, "customCron": "Expressão Cron", - "customCronHelp": "Digite uma expressão cron válida (ex.: 0 3 * * *)", + "customCronHelp": "Insira uma expressão cron válida (ex: 0 3 * * *)", "retention": "Período de Retenção", "retentionDays": "Manter backups por", - "retentionHelp": "dias (backups mais antigos serão excluídos automaticamente)" + "retentionHelp": "dias (backups antigos serão excluídos automaticamente)" }, "whatToBackup": { - "title": "O Que Incluir no Backup", + "title": "O que incluir no Backup", "database": "Banco de Dados", - "databaseHelp": "Todos os dados de eventos, configurações e definições", + "databaseHelp": "Todos os eventos, configurações e dados", "photos": "Fotos", - "photosHelp": "Todas as fotos enviadas em galerias ativas", + "photosHelp": "Todas as fotos originais nas galerias ativas", "archives": "Arquivos", "archivesHelp": "Arquivos ZIP de eventos arquivados", "thumbnails": "Miniaturas", - "thumbnailsHelp": "Imagens de miniatura geradas (podem ser recriadas)", + "thumbnailsHelp": "Imagens de prévia geradas (podem ser recriadas)", "tempFiles": "Arquivos Temporários", "tempFilesHelp": "Arquivos temporários de upload e processamento" }, "advancedOptions": { "title": "Opções Avançadas", "compression": "Ativar Compressão", - "compressionHelp": "Comprimir arquivos de backup para economizar espaço de armazenamento", + "compressionHelp": "Comprime os arquivos para economizar espaço", "encryption": "Ativar Criptografia", - "encryptionHelp": "Criptografar backups para segurança adicional", - "encryptionPassphrase": "Senha de Criptografia", - "encryptionPassphraseHelp": "Senha forte para criptografia de backup", - "confirmPassphrase": "Confirmar Senha", + "encryptionHelp": "Criptografa os backups para maior segurança", + "encryptionPassphrase": "Frase de Senha da Criptografia", + "encryptionPassphraseHelp": "Senha forte para criptografar os backups", + "confirmPassphrase": "Confirmar Frase de Senha", "passphrasesDontMatch": "As senhas não coincidem" }, "validation": { - "requiredFields": "Por favor, preencha todos os campos obrigatórios", + "requiredFields": "Preencha todos os campos obrigatórios", "invalidCron": "Expressão cron inválida", "connectionTestFailed": "Teste de conexão falhou", "connectionTestSuccess": "Teste de conexão bem-sucedido!" }, "messages": { - "requiredFields": "Por favor, preencha todos os campos obrigatórios", + "requiredFields": "Preencha todos os campos obrigatórios", "connectionSuccess": "Teste de conexão bem-sucedido!", "connectionFailed": "Teste de conexão falhou" }, @@ -2034,7 +2034,7 @@ "savingSettings": "Salvando..." }, "history": { - "searchPlaceholder": "Pesquisar backups...", + "searchPlaceholder": "Buscar backups...", "allStatus": "Todos os Status", "status": { "completed": "Concluído", @@ -2042,7 +2042,7 @@ "running": "Executando", "partial": "Parcial" }, - "deleteConfirm": "Tem certeza que deseja excluir este backup de {{date}}?", + "deleteConfirm": "Tem certeza que deseja excluir o backup de {{date}}?", "noBackups": "Nenhum backup encontrado", "tableHeaders": { "date": "Data", @@ -2065,7 +2065,7 @@ "destination": "Destino", "started": "Iniciado", "completed": "Concluído", - "contentBackedUp": "Conteúdo no Backup", + "contentBackedUp": "Conteúdo Incluído", "errorDetails": "Detalhes do Erro", "manifest": "Manifesto" }, @@ -2080,10 +2080,10 @@ "totalSize": "Tamanho Total", "compressionRatio": "Taxa de Compressão", "errorLog": "Log de Erros", - "noErrors": "Nenhum erro ocorreu" + "noErrors": "Nenhum erro ocorrido" }, "pagination": { - "showing": "Exibindo {{from}}-{{to}} de {{total}} backups", + "showing": "Mostrando {{from}}-{{to}} de {{total}} backups", "previous": "Anterior", "next": "Próximo" }, @@ -2095,7 +2095,7 @@ "partial": "Parcial" }, "noBackupsFound": "Nenhum backup encontrado", - "backupsWillAppear": "Os backups aparecerão aqui quando criados", + "backupsWillAppear": "Backups aparecerão aqui quando criados", "messages": { "deleteSuccess": "Backup excluído com sucesso" } @@ -2113,16 +2113,16 @@ "subtitle": "Escolha de onde restaurar o backup", "local": { "name": "Backup Local", - "description": "Restaurar a partir do sistema de arquivos local" + "description": "Restaurar do sistema de arquivos local" }, "s3": { "name": "Armazenamento S3", - "description": "Restaurar a partir do bucket S3" + "description": "Restaurar de um bucket S3" }, "upload": { "name": "Enviar Backup", - "description": "Enviar um arquivo de backup", - "comingSoon": "Funcionalidade de upload em breve" + "description": "Fazer upload de um arquivo de backup", + "comingSoon": "Funcionalidade de upload disponível em breve" }, "configuration": { "s3": "Configuração S3", @@ -2137,29 +2137,29 @@ "subtitle": "Selecione entre os backups disponíveis", "noBackupsFound": "Nenhum backup encontrado na origem selecionada", "encrypted": "Backup Criptografado", - "encryptedMessage": "Você precisará fornecer a senha de criptografia para restaurar este backup.", - "enterPassphrase": "Digite a senha de criptografia", - "at": "às" + "encryptedMessage": "Você precisará da frase de senha para restaurar este backup.", + "enterPassphrase": "Digite a frase de senha da criptografia", + "at": "em" }, "restoreTypes": { "full": { "name": "Restauração Completa", - "description": "Restaurar tudo, incluindo banco de dados, fotos e arquivos", + "description": "Restaura tudo: banco, fotos e arquivos", "warning": "Isso substituirá todos os dados atuais" }, "database": { - "name": "Somente Banco de Dados", - "description": "Restaurar apenas o banco de dados (configurações, eventos, usuários)", + "name": "Apenas Banco de Dados", + "description": "Restaura apenas as configurações, eventos e usuários", "warning": "O banco de dados atual será substituído" }, "files": { - "name": "Somente Arquivos", - "description": "Restaurar apenas fotos e arquivos", + "name": "Apenas Arquivos", + "description": "Restaura apenas fotos e arquivos ZIP", "warning": "Arquivos existentes podem ser sobrescritos" }, "selective": { "name": "Restauração Seletiva", - "description": "Escolher itens específicos para restaurar", + "description": "Escolha itens específicos para restaurar", "warning": "Apenas os itens selecionados serão restaurados" } }, @@ -2168,17 +2168,17 @@ "subtitle": "Escolha o que restaurar", "additionalOptions": { "title": "Opções Adicionais", - "skipPreBackup": "Ignorar Backup Pré-Restauração", - "skipPreBackupHelp": "Por padrão, um backup é criado antes da restauração. Marque esta opção para ignorar.", + "skipPreBackup": "Pular Backup de Segurança", + "skipPreBackupHelp": "Por padrão, um backup é criado antes da restauração. Marque para pular.", "force": "Forçar Restauração", - "forceHelp": "Ignorar verificações e avisos de segurança (use com cuidado)" + "forceHelp": "Ignora verificações de segurança (use com cautela)" } }, "confirmation": { "title": "Revisar e Confirmar", - "subtitle": "Por favor, revise sua configuração de restauração", + "subtitle": "Verifique sua configuração de restauração", "validation": { - "passed": "Validação Aprovada", + "passed": "Validação Concluída", "failed": "Validação Falhou", "checking": "Validando configuração de restauração..." }, @@ -2186,20 +2186,20 @@ "title": "Espaço de Armazenamento", "required": "Necessário", "available": "Disponível", - "insufficient": "Espaço de armazenamento insuficiente" + "insufficient": "Espaço insuficiente em disco" }, "summary": { "title": "Resumo da Restauração", "source": "Origem", "backupDate": "Data do Backup", "restoreType": "Tipo de Restauração", - "preBackup": "Pré-backup", + "preBackup": "Backup Prévio", "enabled": "Ativado", - "skipped": "Ignorado" + "skipped": "Pulado" }, "warning": { "title": "Aviso Importante", - "message": "Esta operação de restauração substituirá os dados existentes. Certifique-se de ter um backup atual antes de continuar. Esta ação não pode ser desfeita." + "message": "Esta operação substituirá dados existentes. Certifique-se de ter um backup recente. Esta ação não pode ser desfeita." } }, "progress": { @@ -2209,7 +2209,7 @@ "overallProgress": "Progresso Geral", "current": "Atual", "statusDetails": "Detalhes do Status", - "restoreLogs": "Logs de Restauração", + "restoreLogs": "Logs da Restauração", "steps": { "completed": "Concluído", "running": "Executando", @@ -2218,7 +2218,7 @@ }, "success": { "title": "Restauração Concluída com Sucesso", - "message": "Seus dados foram restaurados. Por favor, verifique se tudo está funcionando corretamente." + "message": "Seus dados foram restaurados. Verifique se tudo está funcionando corretamente." } }, "actions": { @@ -2245,17 +2245,17 @@ } }, "cssTemplates": { - "title": "Modelos de CSS Personalizado", + "title": "Modelos CSS Personalizados", "template": "Modelo", "templateName": "Nome do Modelo", "enableTemplate": "Ativar este modelo", "enableHint": "Modelos ativados podem ser selecionados ao criar eventos", "cssContent": "Conteúdo CSS", - "cssHint": "Use .gallery-page para aplicar estilos à galeria. Variáveis disponíveis: --gallery-bg, --gallery-text, --gallery-accent", + "cssHint": "Use .gallery-page para aplicar estilos. Variáveis disponíveis: --gallery-bg, --gallery-text, --gallery-accent", "securityNotice": "Aviso de Segurança", - "securityText": "O CSS é sanitizado para evitar código malicioso. URLs externas, @import e expressões JavaScript são bloqueados.", - "resetToDefault": "Redefinir para Padrão", - "resetConfirm": "Redefinir este modelo para o padrão? Suas alterações serão perdidas.", + "securityText": "O CSS é higienizado por segurança. URLs externas, @import e expressões JavaScript são bloqueados.", + "resetToDefault": "Redefinir para o Padrão", + "resetConfirm": "Redefinir este modelo? Suas alterações serão perdidas.", "unsavedChanges": "Alterações não salvas", "saveTemplate": "Salvar Modelo", "lastUpdated": "Última atualização", @@ -2267,10 +2267,10 @@ }, "maintenance": { "title": "Manutenção do Sistema", - "message": "Estamos realizando manutenção programada para melhorar nosso serviço. Voltaremos em breve.", + "message": "Estamos realizando uma manutenção programada para melhorar nosso serviço. Voltaremos em breve.", "expectedCompletion": "Previsão de conclusão:", - "checkBackLater": "Por favor, volte mais tarde", - "urgentMatters": "Para assuntos urgentes, entre em contato com" + "checkBackLater": "Por favor, tente novamente mais tarde", + "urgentMatters": "Para assuntos urgentes, contate" }, "passwordChange": { "title": "Alterar Senha", @@ -2280,23 +2280,23 @@ "currentPasswordPlaceholder": "Digite a senha atual", "newPasswordPlaceholder": "Digite a nova senha", "confirmPasswordPlaceholder": "Confirme a nova senha", - "requirements": "Requisitos de Senha:", + "requirements": "Requisitos da Senha:", "minLength": "Pelo menos 6 caracteres", "mustDiffer": "Deve ser diferente da senha atual", "success": "Senha alterada com sucesso", "failed": "Falha ao alterar senha", - "currentRequired": "A senha atual é obrigatória", - "newRequired": "A nova senha é obrigatória", + "currentRequired": "Senha atual é obrigatória", + "newRequired": "Nova senha é obrigatória", "minLengthError": "A senha deve ter pelo menos 6 caracteres", - "confirmRequired": "Por favor, confirme sua nova senha", + "confirmRequired": "Confirme sua nova senha", "noMatch": "As senhas não coincidem", - "mustBeDifferent": "A nova senha deve ser diferente da senha atual", + "mustBeDifferent": "A nova senha deve ser diferente da atual", "cancel": "Cancelar" }, "mandatoryPasswordChange": { "title": "Alteração de Senha Obrigatória", - "description": "Por razões de segurança, você deve alterar sua senha antes de acessar o painel de administração.", - "success": "Senha alterada com sucesso! Você já pode acessar o painel de administração.", + "description": "Por motivos de segurança, você deve alterar sua senha antes de acessar o painel admin.", + "success": "Senha alterada com sucesso! Você já pode acessar o painel.", "minLength": "Pelo menos 12 caracteres", "mustContainUpperLower": "Deve conter letras maiúsculas e minúsculas", "mustContainNumbers": "Deve conter números", @@ -2308,7 +2308,7 @@ "mustContainSpecialError": "A senha deve conter caracteres especiais" }, "offline": { - "backOnline": "Conexão restabelecida", + "backOnline": "De volta online", "noConnection": "Sem conexão com a internet" }, "download": { @@ -2329,26 +2329,26 @@ "copyPassword": "Copiar senha", "use": "Usar", "pattern": "Padrão:", - "patternDescription": "As senhas são geradas usando o nome e a data do seu evento. Exemplo: \"Local2024$Agosto\" para maior segurança e facilidade de memorização." + "patternDescription": "As senhas são geradas usando o nome e data do evento. Ex: \"Evento2024$Agosto\" para melhor memorização." }, "feedback": { "comments": "Comentários", "addComment": "Adicionar Comentário", "yourName": "Seu nome", - "yourEmail": "Seu email", + "yourEmail": "Seu e-mail", "writeComment": "Escreva um comentário...", "submit": "Enviar", "commentSubmitted": "Comentário enviado", "commentError": "Falha ao enviar comentário", - "rateLimited": "Por favor, aguarde antes de comentar novamente", - "commentRequired": "O comentário é obrigatório", - "nameRequired": "O nome é obrigatório", - "emailRequired": "O email é obrigatório", + "rateLimited": "Aguarde antes de comentar novamente", + "commentRequired": "Comentário é obrigatório", + "nameRequired": "Nome é obrigatório", + "emailRequired": "E-mail é obrigatório", "anonymous": "Anônimo", "pendingApproval": "Aguardando aprovação", - "noComments": "Nenhum comentário ainda. Seja o primeiro a comentar!", + "noComments": "Ainda sem comentários. Seja o primeiro!", "rating": "Avaliação", - "ratePhoto": "Avaliar esta foto", + "ratePhoto": "Avalie esta foto", "yourRating": "Sua avaliação", "averageRating": "Avaliação média", "totalRatings": "avaliações", @@ -2357,19 +2357,19 @@ "likePhoto": "Curtir esta foto", "favoritePhoto": "Adicionar aos favoritos", "photoFeedback": "Feedback da Foto", - "hasFeedback": "Tem feedback", - "hasComments": "Tem comentários", - "hasRating": "Tem avaliação", + "hasFeedback": "Possui feedback", + "hasComments": "Possui comentários", + "hasRating": "Possui avaliação", "settings": { - "title": "Configurações de Feedback dos Convidados", + "title": "Configurações de Feedback de Convidados", "enableFeedback": "Ativar feedback", "feedbackTypes": "Tipos de Feedback", "ratings": "Avaliações por Estrelas", - "ratingsDesc": "Permitir que convidados avaliem fotos (1-5 estrelas)", + "ratingsDesc": "Permite avaliar fotos (1-5 estrelas)", "likes": "Curtidas", - "likesDesc": "Funcionalidade simples de curtir/descurtir", + "likesDesc": "Funcionalidade simples de curtir", "comments": "Comentários", - "commentsDesc": "Comentários de texto nas fotos", + "commentsDesc": "Comentários em texto nas fotos", "favorites": "Favoritos", "favoritesDesc": "Marcar fotos como favoritas" } @@ -2385,35 +2385,35 @@ "threeStarsPlus": "3+ Estrelas", "fourStarsPlus": "4+ Estrelas", "fiveStarsOnly": "Apenas 5 Estrelas", - "hasLikes": "Tem curtidas", - "hasFavorites": "Tem favoritos", - "hasComments": "Tem comentários", + "hasLikes": "Possui curtidas", + "hasFavorites": "Possui favoritos", + "hasComments": "Possui comentários", "showingPhotos": "Total de fotos", "withRatings": "Com avaliações" }, "adminLogin": { - "title": "Login de Administrador", + "title": "Login Administrativo", "subtitle": "Entre para gerenciar suas galerias de fotos", "sessionExpired": "Sua sessão expirou. Por favor, faça login novamente.", - "emailLabel": "Endereço de email", + "emailLabel": "Endereço de E-mail", "emailPlaceholder": "admin@exemplo.com", - "emailRequired": "O email é obrigatório", - "invalidEmail": "Formato de email inválido", + "emailRequired": "O e-mail é obrigatório", + "invalidEmail": "Formato de e-mail inválido", "passwordLabel": "Senha", "passwordPlaceholder": "Digite sua senha", "passwordRequired": "A senha é obrigatória", "passwordMinLength": "A senha deve ter pelo menos 6 caracteres", - "rememberMe": "Lembrar de mim", + "rememberMe": "Lembrar-me", "forgotPassword": "Esqueceu a senha?", "signIn": "Entrar", "loginSuccess": "Login realizado com sucesso!", - "networkError": "Erro de rede. Por favor, verifique sua conexão e tente novamente.", - "tooManyAttempts": "Muitas tentativas de login. Por favor, tente novamente mais tarde.", - "invalidCredentials": "email ou senha inválidos", - "generalError": "Ocorreu um erro. Por favor, tente novamente.", - "needHelp": "Precisa de ajuda? Entre em contato com", - "poweredBy": "Desenvolvido por PicPeak", - "devModeHint": "Modo de Desenvolvimento: Use email: admin@exemplo.com, senha: admin123" + "networkError": "Erro de rede. Verifique sua conexão.", + "tooManyAttempts": "Muitas tentativas. Tente novamente mais tarde.", + "invalidCredentials": "E-mail ou senha inválidos", + "generalError": "Ocorreu um erro. Tente novamente.", + "needHelp": "Precisa de ajuda? Contate", + "poweredBy": "Distribuído por PicPeak", + "devModeHint": "Modo Desenvolvimento: E-mail: admin@exemplo.com, Senha: admin123" }, "clientAccess": { "title": "Acesso do Cliente",