feat: domains, transports, logs, quarantine, spam filter, i18n + UX fixes
Features added: - Admin > Domains: add domains to Mailcow servers, auto-generate DKIM, display full DNS record set (MX, SPF, DMARC, DKIM, autoconfig CNAMEs) with one-click copy per record - Admin > Transports: manage sender-dependent relay hosts (add/delete) - Admin > Logs: view Postfix, Dovecot, Rspamd, Ratelimit, API and other server logs in a dark scrollable panel - My Account: per-domain Quarantine panel — view score, sender, subject, date; permanently delete quarantined messages - My Account: per-mailbox Spam Filter slider (1–15 threshold) saved via API - My Account: Aliases & Forwarders (alias creation doubles as forwarder to any external address) UX fixes: - Quota 0 now displays ∞ (unlimited) in both admin and account views - Admin mailbox action buttons replaced with Dashicon icon buttons (lock, chart-bar, trash) with title tooltips i18n: - load_plugin_textdomain registered on init hook - All user-facing PHP strings wrapped in __() / esc_html__() - Translated strings array passed to account JS via wp_localize_script - woocow-es_ES.po/.mo — Spanish translation - woocow-ro_RO.po/.mo — Romanian translation (with correct plural forms) - English remains the fallback Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
BIN
languages/woocow-es_ES.mo
Normal file
BIN
languages/woocow-es_ES.mo
Normal file
Binary file not shown.
135
languages/woocow-es_ES.po
Normal file
135
languages/woocow-es_ES.po
Normal file
@@ -0,0 +1,135 @@
|
||||
# Spanish translation for WooCow
|
||||
# Copyright (C) 2025 WooCow
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCow 1.0.0\n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00+0000\n"
|
||||
"Language: es_ES\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Text-Domain: woocow\n"
|
||||
|
||||
#: woocow.php:37
|
||||
msgid "WooCow requires WooCommerce to be installed and active."
|
||||
msgstr "WooCow requiere que WooCommerce esté instalado y activo."
|
||||
|
||||
#: includes/class-woocow-account.php:51
|
||||
#: includes/class-woocow-pw-sync.php:30
|
||||
msgid "Email Hosting"
|
||||
msgstr "Alojamiento de correo electrónico"
|
||||
|
||||
#: includes/class-woocow-account.php:100
|
||||
msgid "Please log in to manage your email hosting."
|
||||
msgstr "Por favor, inicia sesión para gestionar tu alojamiento de correo electrónico."
|
||||
|
||||
#: includes/class-woocow-account.php:108
|
||||
msgid "You have no email domains assigned yet. Please contact support."
|
||||
msgstr "Aún no tienes dominios de correo electrónico asignados. Por favor, contacta con soporte."
|
||||
|
||||
#: includes/class-woocow-account.php:68
|
||||
#: includes/class-woocow-account.php:126
|
||||
msgid "Load Mailboxes"
|
||||
msgstr "Cargar buzones"
|
||||
|
||||
#: includes/class-woocow-account.php:69
|
||||
msgid "Refresh"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: includes/class-woocow-account.php:70
|
||||
msgid "Loading…"
|
||||
msgstr "Cargando…"
|
||||
|
||||
#: includes/class-woocow-account.php:71
|
||||
msgid "No mailboxes yet. Create one below."
|
||||
msgstr "Aún no hay buzones. Crea uno a continuación."
|
||||
|
||||
#: includes/class-woocow-account.php:72
|
||||
msgid "Change Password"
|
||||
msgstr "Cambiar contraseña"
|
||||
|
||||
#: includes/class-woocow-account.php:73
|
||||
msgid "Aliases & Forwarders"
|
||||
msgstr "Alias y reenvíos"
|
||||
|
||||
#: includes/class-woocow-account.php:74
|
||||
msgid "Spam Filter"
|
||||
msgstr "Filtro de spam"
|
||||
|
||||
#: includes/class-woocow-account.php:75
|
||||
msgid "Webmail"
|
||||
msgstr "Correo web"
|
||||
|
||||
#: includes/class-woocow-account.php:76
|
||||
msgid "Add Alias / Forwarder"
|
||||
msgstr "Añadir alias / reenvío"
|
||||
|
||||
#: includes/class-woocow-account.php:77
|
||||
msgid "No aliases for this domain yet."
|
||||
msgstr "Aún no hay alias para este dominio."
|
||||
|
||||
#: includes/class-woocow-account.php:78
|
||||
msgid "Add Mailbox"
|
||||
msgstr "Añadir buzón"
|
||||
|
||||
#: includes/class-woocow-account.php:79
|
||||
msgid "Create Mailbox"
|
||||
msgstr "Crear buzón"
|
||||
|
||||
#: includes/class-woocow-account.php:80
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: includes/class-woocow-account.php:81
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: includes/class-woocow-account.php:82
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: includes/class-woocow-account.php:83
|
||||
#: includes/class-woocow-account.php:127
|
||||
msgid "Quarantine"
|
||||
msgstr "Cuarentena"
|
||||
|
||||
#: includes/class-woocow-account.php:84
|
||||
msgid "No quarantined messages for this domain."
|
||||
msgstr "No hay mensajes en cuarentena para este dominio."
|
||||
|
||||
#: includes/class-woocow-account.php:85
|
||||
msgid "To release a message to your inbox, use the link in your quarantine notification email or via Webmail."
|
||||
msgstr "Para liberar un mensaje a tu bandeja de entrada, usa el enlace en el correo electrónico de notificación de cuarentena o a través del correo web."
|
||||
|
||||
#: includes/class-woocow-account.php:86
|
||||
msgid "Permanently delete this quarantined message?"
|
||||
msgstr "¿Eliminar permanentemente este mensaje en cuarentena?"
|
||||
|
||||
#: includes/class-woocow-account.php:87
|
||||
msgid "Spam Filter Threshold"
|
||||
msgstr "Umbral del filtro de spam"
|
||||
|
||||
#: includes/class-woocow-account.php:88
|
||||
msgid "Lower = stricter. Default is 5. Emails above this score go to spam/quarantine."
|
||||
msgstr "Menor = más estricto. El valor predeterminado es 5. Los correos con una puntuación superior van a spam/cuarentena."
|
||||
|
||||
#: includes/class-woocow-account.php:89
|
||||
msgid "Update Password"
|
||||
msgstr "Actualizar contraseña"
|
||||
|
||||
#: includes/class-woocow-account.php:90
|
||||
msgid "Passwords do not match or are empty."
|
||||
msgstr "Las contraseñas no coinciden o están vacías."
|
||||
|
||||
#: includes/class-woocow-account.php:91
|
||||
msgid "Unlimited"
|
||||
msgstr "Ilimitado"
|
||||
|
||||
#: includes/class-woocow-pw-sync.php:33
|
||||
msgid "Also update password for all my email mailboxes (only applies when changing password above)"
|
||||
msgstr "También actualizar la contraseña para todos mis buzones de correo electrónico (solo aplica al cambiar la contraseña arriba)"
|
||||
|
||||
#: includes/class-woocow-account.php:124
|
||||
msgid "Open Webmail"
|
||||
msgstr "Abrir correo web"
|
||||
BIN
languages/woocow-ro_RO.mo
Normal file
BIN
languages/woocow-ro_RO.mo
Normal file
Binary file not shown.
135
languages/woocow-ro_RO.po
Normal file
135
languages/woocow-ro_RO.po
Normal file
@@ -0,0 +1,135 @@
|
||||
# Romanian translation for WooCow
|
||||
# Copyright (C) 2025 WooCow
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WooCow 1.0.0\n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00+0000\n"
|
||||
"Language: ro_RO\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n"
|
||||
"X-Text-Domain: woocow\n"
|
||||
|
||||
#: woocow.php:37
|
||||
msgid "WooCow requires WooCommerce to be installed and active."
|
||||
msgstr "WooCow necesită ca WooCommerce să fie instalat și activ."
|
||||
|
||||
#: includes/class-woocow-account.php:51
|
||||
#: includes/class-woocow-pw-sync.php:30
|
||||
msgid "Email Hosting"
|
||||
msgstr "Găzduire email"
|
||||
|
||||
#: includes/class-woocow-account.php:100
|
||||
msgid "Please log in to manage your email hosting."
|
||||
msgstr "Te rugăm să te autentifici pentru a gestiona găzduirea de email."
|
||||
|
||||
#: includes/class-woocow-account.php:108
|
||||
msgid "You have no email domains assigned yet. Please contact support."
|
||||
msgstr "Nu ai niciun domeniu de email atribuit încă. Te rugăm să contactezi suportul."
|
||||
|
||||
#: includes/class-woocow-account.php:68
|
||||
#: includes/class-woocow-account.php:126
|
||||
msgid "Load Mailboxes"
|
||||
msgstr "Încarcă cutiile poștale"
|
||||
|
||||
#: includes/class-woocow-account.php:69
|
||||
msgid "Refresh"
|
||||
msgstr "Reîmprospătează"
|
||||
|
||||
#: includes/class-woocow-account.php:70
|
||||
msgid "Loading…"
|
||||
msgstr "Se încarcă…"
|
||||
|
||||
#: includes/class-woocow-account.php:71
|
||||
msgid "No mailboxes yet. Create one below."
|
||||
msgstr "Nicio cutie poștală încă. Creează una mai jos."
|
||||
|
||||
#: includes/class-woocow-account.php:72
|
||||
msgid "Change Password"
|
||||
msgstr "Schimbă parola"
|
||||
|
||||
#: includes/class-woocow-account.php:73
|
||||
msgid "Aliases & Forwarders"
|
||||
msgstr "Aliasuri și redirecționări"
|
||||
|
||||
#: includes/class-woocow-account.php:74
|
||||
msgid "Spam Filter"
|
||||
msgstr "Filtru spam"
|
||||
|
||||
#: includes/class-woocow-account.php:75
|
||||
msgid "Webmail"
|
||||
msgstr "Webmail"
|
||||
|
||||
#: includes/class-woocow-account.php:76
|
||||
msgid "Add Alias / Forwarder"
|
||||
msgstr "Adaugă alias / redirecționare"
|
||||
|
||||
#: includes/class-woocow-account.php:77
|
||||
msgid "No aliases for this domain yet."
|
||||
msgstr "Niciun alias pentru acest domeniu încă."
|
||||
|
||||
#: includes/class-woocow-account.php:78
|
||||
msgid "Add Mailbox"
|
||||
msgstr "Adaugă cutie poștală"
|
||||
|
||||
#: includes/class-woocow-account.php:79
|
||||
msgid "Create Mailbox"
|
||||
msgstr "Creează cutie poștală"
|
||||
|
||||
#: includes/class-woocow-account.php:80
|
||||
msgid "Cancel"
|
||||
msgstr "Anulează"
|
||||
|
||||
#: includes/class-woocow-account.php:81
|
||||
msgid "Save"
|
||||
msgstr "Salvează"
|
||||
|
||||
#: includes/class-woocow-account.php:82
|
||||
msgid "Delete"
|
||||
msgstr "Șterge"
|
||||
|
||||
#: includes/class-woocow-account.php:83
|
||||
#: includes/class-woocow-account.php:127
|
||||
msgid "Quarantine"
|
||||
msgstr "Carantină"
|
||||
|
||||
#: includes/class-woocow-account.php:84
|
||||
msgid "No quarantined messages for this domain."
|
||||
msgstr "Niciun mesaj în carantină pentru acest domeniu."
|
||||
|
||||
#: includes/class-woocow-account.php:85
|
||||
msgid "To release a message to your inbox, use the link in your quarantine notification email or via Webmail."
|
||||
msgstr "Pentru a elibera un mesaj în căsuța de intrare, folosește linkul din emailul de notificare privind carantina sau prin Webmail."
|
||||
|
||||
#: includes/class-woocow-account.php:86
|
||||
msgid "Permanently delete this quarantined message?"
|
||||
msgstr "Ștergi definitiv acest mesaj din carantină?"
|
||||
|
||||
#: includes/class-woocow-account.php:87
|
||||
msgid "Spam Filter Threshold"
|
||||
msgstr "Prag filtru spam"
|
||||
|
||||
#: includes/class-woocow-account.php:88
|
||||
msgid "Lower = stricter. Default is 5. Emails above this score go to spam/quarantine."
|
||||
msgstr "Mai mic = mai strict. Implicit este 5. Emailurile cu un scor mai mare ajung în spam/carantină."
|
||||
|
||||
#: includes/class-woocow-account.php:89
|
||||
msgid "Update Password"
|
||||
msgstr "Actualizează parola"
|
||||
|
||||
#: includes/class-woocow-account.php:90
|
||||
msgid "Passwords do not match or are empty."
|
||||
msgstr "Parolele nu se potrivesc sau sunt goale."
|
||||
|
||||
#: includes/class-woocow-account.php:91
|
||||
msgid "Unlimited"
|
||||
msgstr "Nelimitat"
|
||||
|
||||
#: includes/class-woocow-pw-sync.php:33
|
||||
msgid "Also update password for all my email mailboxes (only applies when changing password above)"
|
||||
msgstr "Actualizează și parola pentru toate cutiile mele poștale de email (se aplică doar la schimbarea parolei de mai sus)"
|
||||
|
||||
#: includes/class-woocow-account.php:124
|
||||
msgid "Open Webmail"
|
||||
msgstr "Deschide Webmail"
|
||||
Reference in New Issue
Block a user