This commit is contained in:
Linus Rath
2026-04-27 22:24:59 +02:00
3 changed files with 55 additions and 38 deletions
+11 -3
View File
@@ -71,11 +71,19 @@ JMAP_SERVER_URL=https://your-jmap-server.com
# Directory for storing encrypted settings files (default: ./data/settings).
# For Docker, the working directory is /app, so the default resolves to
# /app/data/settings - mount a persistent volume there:
# volumes:
# - bulwark-settings:/app/data/settings
# /app/data/settings - mount a persistent volume there (see docker-compose.yml).
# SETTINGS_DATA_DIR=./data/settings
# =============================================================================
# Admin Dashboard Data
# =============================================================================
# Directory for admin dashboard state: config overrides, admin password hash,
# installed plugins/themes, and audit logs (default: ./data/admin).
# For Docker, the default resolves to /app/data/admin - mount a persistent
# volume there (see docker-compose.yml).
# ADMIN_DATA_DIR=./data/admin
# =============================================================================
# Server Listen Address
# =============================================================================
+9
View File
@@ -8,6 +8,11 @@ services:
- PORT=3000
env_file:
- .env.local
volumes:
# Encrypted user settings (SETTINGS_DATA_DIR).
- bulwark-settings:/app/data/settings
# Admin dashboard state: config, password hash, plugins, audit logs (ADMIN_DATA_DIR).
- bulwark-admin:/app/data/admin
healthcheck:
test:
[
@@ -23,3 +28,7 @@ services:
retries: 3
start_period: 10s
restart: unless-stopped
volumes:
bulwark-settings:
bulwark-admin:
+34 -34
View File
@@ -20,7 +20,7 @@
"generic": "Ocorreu um erro. Por favor, tente novamente.",
"totp_required": "É necessário um código de autenticação de dois fatores. Insira seu código abaixo.",
"totp_invalid": "Código de autenticação inválido. Verifique seu aplicativo de autenticação.",
"oauth_discovery_failed": "SSO está ativado mas o provedor de identidade não pôde ser contactado. Verifique sua configuração OAuth."
"oauth_discovery_failed": "SSO está ativado mas o provedor de identidade não pôde ser contatado. Verifique sua configuração OAuth."
},
"show_password": "Mostrar senha",
"hide_password": "Ocultar senha",
@@ -80,7 +80,7 @@
"calendar": "Calendário",
"settings": "Configurações",
"admin": "Admin",
"files": "Ficheiros",
"files": "Arquivos",
"loading_mailboxes": "Carregando caixas de entrada...",
"push_connected": "Atualizações em tempo real ativas",
"push_disconnected": "Atualizações em tempo real inativas",
@@ -505,7 +505,7 @@
"show_less": "Mostrar menos",
"forgot_attachment": {
"title": "Esqueceu um anexo?",
"message": "A sua mensagem menciona \"{keyword}\" mas nenhum ficheiro está anexado. Enviar mesmo assim?",
"message": "A sua mensagem menciona \"{keyword}\" mas nenhum arquivo está anexado. Enviar mesmo assim?",
"send_anyway": "Enviar mesmo assim",
"back": "Voltar à edição"
}
@@ -669,7 +669,7 @@
"security": "Segurança",
"encryption": "Criptografia",
"files": "Arquivos",
"contacts": "Contactos",
"contacts": "Contatos",
"sidebar_apps": "Apps da barra lateral",
"notifications": "Notificações",
"layout": "Layout",
@@ -1322,12 +1322,12 @@
"manage_description": "Adicionar, editar ou remover apps personalizados da barra lateral"
},
"contacts": {
"title": "Contactos",
"description": "Importar e exportar os seus contactos",
"import_label": "Importar contactos",
"import_description": "Importar contactos de um ficheiro vCard (.vcf)",
"export_label": "Exportar contactos",
"export_description": "Exportar todos os contactos como ficheiro vCard (.vcf)",
"title": "Contatos",
"description": "Importar e exportar os seus contatos",
"import_label": "Importar contatos",
"import_description": "Importar contatos de um arquivo vCard (.vcf)",
"export_label": "Exportar contatos",
"export_description": "Exportar todos os contatos como arquivo vCard (.vcf)",
"manage_title": "Catálogos de endereços",
"manage_description": "Renomeie seus catálogos de endereços",
"no_address_books": "Nenhum catálogo de endereços encontrado",
@@ -1503,7 +1503,7 @@
},
"folder_layout": {
"label": "Navegação de pastas",
"description": "Escolha como as pastas são apresentadas: integradas com os ficheiros ou numa árvore na barra lateral",
"description": "Escolha como as pastas são apresentadas: integradas com os arquivos ou numa árvore na barra lateral",
"inline": "Integrado",
"sidebar": "Barra lateral"
},
@@ -1874,7 +1874,7 @@
"cert_already_imported": "Certificado já importado",
"cert_imported": "Certificado importado",
"cert_import_failed": "Falha ao importar o certificado",
"section_contact": "Contact details",
"section_contact": "Detalhes do contato",
"section_work": "Work",
"section_personal": "Personal",
"email_default_label": "Email",
@@ -2243,7 +2243,7 @@
"hover_preview_delay_2s": "Atraso de 2 segundos",
"hover_preview_off": "Desativado",
"show_birthday_calendar": "Calendário de aniversários",
"show_birthday_calendar_desc": "Mostrar um calendário virtual com os aniversários dos seus contactos"
"show_birthday_calendar_desc": "Mostrar um calendário virtual com os aniversários dos seus contatos"
},
"days": {
"monday": "Segunda-feira",
@@ -2481,12 +2481,12 @@
"hint": "Clique num e-mail à esquerda para começar, ou inicie o tour."
},
"files": {
"title": "Ficheiros",
"search_placeholder": "Pesquisar ficheiros...",
"empty_state_title": "Ainda não há ficheiros",
"empty_state_description": "Carregue ficheiros ou crie pastas para começar",
"title": "Arquivos",
"search_placeholder": "Pesquisar arquivos...",
"empty_state_title": "Ainda não há arquivos",
"empty_state_description": "Carregue arquivos ou crie pastas para começar",
"upload": "Carregar",
"upload_files": "Carregar ficheiros",
"upload_files": "Carregar arquivos",
"new_folder": "Nova pasta",
"new_folder_name": "Nome da pasta",
"rename": "Renomear",
@@ -2501,13 +2501,13 @@
"modified": "Modificado",
"type": "Tipo",
"folder": "Pasta",
"file": "Ficheiro",
"file": "Arquivo",
"parent_directory": "Diretório superior",
"breadcrumb_root": "Início",
"drop_files_here": "Largue ficheiros ou pastas aqui para carregar",
"drop_files_here": "Largue arquivos ou pastas aqui para carregar",
"uploading": "A carregar...",
"upload_success": "{count, plural, one {1 ficheiro carregado} other {# ficheiros carregados}}",
"upload_error": "Falha ao carregar o ficheiro",
"upload_success": "{count, plural, one {1 arquivo carregado} other {# arquivos carregados}}",
"upload_error": "Falha ao carregar o arquivo",
"create_folder_success": "Pasta criada",
"create_folder_error": "Falha ao criar a pasta",
"delete_success": "Eliminado com sucesso",
@@ -2515,11 +2515,11 @@
"rename_success": "Renomeado com sucesso",
"rename_error": "Falha ao renomear",
"download_error": "Falha ao transferir",
"not_available": "O armazenamento de ficheiros não está disponível neste servidor",
"not_available": "O armazenamento de arquivos não está disponível neste servidor",
"cancel": "Cancelar",
"create": "Criar",
"save": "Guardar",
"no_results": "Nenhum ficheiro corresponde à sua pesquisa",
"no_results": "Nenhum arquivo corresponde à sua pesquisa",
"batch_delete_confirm_message": "Tem a certeza de que deseja eliminar {count, plural, one {1 item} other {# itens}}? Esta ação não pode ser desfeita.",
"batch_delete_success": "{count, plural, one {1 item eliminado} other {# itens eliminados}}",
"grid_view": "Vista em grelha",
@@ -2535,27 +2535,27 @@
"move_error": "Falha ao mover",
"paste_success": "Colado com sucesso",
"paste_error": "Falha ao colar",
"new_text_file": "Novo ficheiro de texto",
"file_name": "Nome do ficheiro",
"new_text_file": "Novo arquivo de texto",
"file_name": "Nome do arquivo",
"retry": "Tentar novamente",
"refresh": "Atualizar",
"toggle_favorite": "Alternar favorito",
"duplicate": "Duplicar",
"duplicate_success": "Duplicado com sucesso",
"duplicate_error": "Falha ao duplicar",
"create_file_success": "Ficheiro criado",
"create_file_error": "Falha ao criar ficheiro",
"create_file_success": "Arquivo criado",
"create_file_error": "Falha ao criar arquivo",
"favorites": "Favoritos",
"recent": "Recentes",
"properties": "Propriedades",
"open_folder": "Abrir pasta",
"upload_folder": "Carregar pasta",
"file_too_large": "\"{name}\" excede o tamanho máximo do ficheiro ({max})",
"file_too_large": "\"{name}\" excede o tamanho máximo do arquivo ({max})",
"undo": "Desfazer",
"undo_success": "Ação desfeita",
"undo_error": "Falha ao desfazer",
"toolbar": "Ações de arquivo",
"file_list": "Ficheiros e pastas",
"file_list": "Arquivos e pastas",
"context_menu": "Ações",
"settings_title": "Configurações de arquivos",
"settings_display": "Exibição",
@@ -2578,7 +2578,7 @@
"settings_show_hidden": "Mostrar arquivos ocultos",
"settings_show_hidden_desc": "Exibir arquivos e pastas que começam com um ponto",
"settings_folder_layout": "Navegação de pastas",
"settings_folder_layout_desc": "Escolha como as pastas são apresentadas: integradas com os ficheiros ou numa árvore na barra lateral",
"settings_folder_layout_desc": "Escolha como as pastas são apresentadas: integradas com os arquivos ou numa árvore na barra lateral",
"settings_folder_layout_inline": "Integrado",
"settings_folder_layout_sidebar": "Barra lateral",
"disabled_title": "O recurso de arquivos foi desativado pelo seu administrador",
@@ -2703,11 +2703,11 @@
"event_modal_desc": "Aqui está o formulário do evento. Preencha o título, escolha uma data e hora, adicione um local ou participantes. Clique em salvar quando terminar - ou feche e siga em frente.",
"contacts_list_title": "Seus contatos",
"contacts_list_desc": "Aqui estão seus contatos. Clique em qualquer contato para ver seus detalhes à direita. Você também pode criar novos contatos, importar vCards ou organizar contatos em grupos.",
"files_title": "Armazenamento de ficheiros",
"files_title": "Armazenamento de arquivos",
"settings_tabs_title": "Menu de configurações",
"settings_tabs_desc": "Aqui estão todas as categorias de configurações. Personalize a aparência, gerencie identidades, configure filtros de e-mail, ajuste o calendário e muito mais.",
"files_desc": "O navegador de ficheiros permite carregar, organizar e partilhar ficheiros - como uma nuvem pessoal integrada no seu e-mail.",
"demo_banner_title": "Controlos de demonstração",
"files_desc": "O navegador de arquivos permite carregar, organizar e compartilhar arquivos - como uma nuvem pessoal integrada no seu e-mail.",
"demo_banner_title": "Controles de demonstração",
"demo_banner_desc": "Está no modo de demonstração - tudo permanece no seu navegador. Clique em 'Repor Demonstração' a qualquer momento para recomeçar com dados limpos.",
"quota_title": "Utilização do armazenamento",
"quota_desc": "Acompanhe o tamanho da sua caixa de correio aqui. O círculo preenche-se à medida que utiliza mais espaço."