diff --git a/data/web/lang/lang.nl.json b/data/web/lang/lang.nl.json
index 6d7d22c7..0bee235f 100644
--- a/data/web/lang/lang.nl.json
+++ b/data/web/lang/lang.nl.json
@@ -111,8 +111,9 @@
         "img_tmp_missing": "Kan afbeelding niet valideren, tijdelijk bestand niet gevonden",
         "img_invalid": "Kan afbeelding niet valideren",
         "invalid_mime_type": "Ongeldig mime-type",
-        "imagick_exception": "Error: Er is een probleem opgetreden met Imagick tijdens het lezen van de afbeelding",
-        "spam_learn_error": "Spamtraining-fout: %s",
+        "imagick_exception": "Error: Er is een fout opgetreden met Imagick tijdens het lezen van de afbeelding",
+        "spam_learn_error": "Spam trainingsfout: %s",
+        "ham_learn_error": "Ham trainingsfout: %s",
         "release_send_failed": "Het volgende bericht kon niet worden vrijgegeven: %s",
         "invalid_recipient_map_new": "Ongeldige nieuwe ontvanger ingevoerd: %s",
         "invalid_recipient_map_old": "Ongeldige oorspronkelijke ontvanger ingevoerd: %s",
@@ -130,6 +131,7 @@
         "extra_acl_invalid_domain": "Extern verzendadres \"%s\" gebruikt een ongeldig domein"
     },
     "success": {
+        "learned_ham": "Bericht %s is als ham gemarkeerd",
         "verified_totp_login": "TOTP succesvol geverifieerd",
         "verified_u2f_login": "U2F succesvol geverifieerd",
         "verified_yotp_login": "Yubico OTP succesvol geverifieerd",
@@ -194,7 +196,7 @@
         "reset_main_logo": "Het standaardlogo is hersteld",
         "items_released": "Geselecteerde onderdelen zijn vrijgegeven",
         "item_released": "Onderdeel %s vrijgegeven",
-        "qlearn_spam": "Bericht %s werd als spam gemarkeerd en is verwijderd",
+        "qlearn_spam": "Bericht %s is als spam gemarkeerd en verwijderd",
         "recipient_map_entry_saved": "Ontvanger-map %s is opgeslagen",
         "recipient_map_entry_deleted": "Ontvanger-map %s is verwijderd",
         "tls_policy_map_entry_saved": "Versleutelingsbeleid \"%s\" is opgeslagen",
@@ -212,7 +214,7 @@
         "cannot_delete_self": "Gebruikers kunnen niet worden verwijderd wanneer deze zijn ingelogd",
         "no_active_admin": "Het is niet mogelijk om de laatste actieve administrator te verwijderen",
         "hash_not_found": "Hash niet gevonden of reeds verwijderd",
-        "fuzzy_learn_error": "Fuzzy hash training-fout: %s",
+        "fuzzy_learn_error": "Fuzzy-hash trainingsfout: %s",
         "ip_invalid": "Ongeldig IP overgeslagen: %s"
     },
     "user": {
@@ -443,6 +445,7 @@
         "relay_run": "Voer test uit",
         "api_allow_from": "Sta API-toegang toe vanaf deze IP-adressen",
         "api_key": "API-sleutel",
+        "api_skip_ip_check": "Sla IP-adrescontrole over voor API",
         "activate_api": "Activeer API",
         "regen_api_key": "Vernieuw API-sleutel",
         "ban_list_info": "Bekijk de lijst met verbannen IP-adressen hieronder: <b>netwerk (resterende tijd) - [acties]</b>.<br />Rode labels geven een permanente verbanning aan.<br />Het kan enkele seconden duren voordat wijzigingen hieronder zichtbaar zijn.",
@@ -496,7 +499,7 @@
         "text": "Tekst",
         "activate_send": "Bevestig bovenstaande gegevens",
         "send": "Verstuur",
-        "api_info": "De API is nog in ontwikkeling.",
+        "api_info": "De API is nog in ontwikkeling. Documentatie is beschikbaar op <a href=\"/api\">/api</a>",
         "guid_and_license": "Licentie en identificatie",
         "guid": "Identificatienummer - GUID",
         "license_info": "Een licentie is niet vereist. Je steunt hier echter wel de ontwikkeling van Mailcow mee.<br><a href=\"https://www.servercow.de/mailcow?lang=nl#sal\" target=\"_blank\" alt=\"SAL order\">Registreer je GUID hier</a>, of <a href=\"https://www.servercow.de/mailcow?lang=nl#support\" target=\"_blank\" alt=\"Support order\">schaf ondersteuning aan voor deze installatie.</a>",
@@ -520,8 +523,8 @@
     "quarantine": {
         "disabled_by_config": "De huidige systeemconfiguratie deactiveert de quarantainefunctionaliteit.",
         "quarantine": "Quarantaine",
-        "learn_spam_delete": "Onthoud als spam en verwijder",
-        "qinfo": "Het quarantainesysteem slaat geweigerde mail op, terwijl het voor de afzender lijkt alsof deze <em>niet</em> ontvangen is.<br>\"Onthoud als spam en verwijder\" traint het systeem om soortgelijke mails in de toekomst weer als spam te markeren.<br>Wees er van bewust dat wanneer er meerdere berichten worden onderzocht, dit mogelijk enige tijd kan duren.",
+        "learn_spam_delete": "Markeer als spam en verwijder",
+        "qinfo": "Het quarantainesysteem slaat geweigerde mail op, terwijl het voor de afzender lijkt alsof deze <em>niet</em> ontvangen is.<br>\"Markeer als spam en verwijder\" traint het systeem om soortgelijke mails in de toekomst weer als spam te markeren.<br>Wees er van bewust dat wanneer er meerdere berichten worden onderzocht, dit mogelijk enige tijd kan duren.",
         "download_eml": "Download (.eml)",
         "release": "Geef vrij",
         "empty": "Geen resultaten",
@@ -572,7 +575,7 @@
         "booking_0_short": "Altijd vrij",
         "booking_lt0_short": "Soft limit",
         "booking_custom_short": "Hard limit",
-        "alias_domain_alias_hint": "Aliassen worden <b>niet</b> automatisch toegepast op domeinaliassen. Aliasadres <code>alias@domein</code> dekt het adres <code>alias@alias-domein</code> <b>niet</b> (waarbij \"alias-domein\" een aliasdomein is voor \"domein\").",
+        "alias_domain_alias_hint": "Aliassen worden <b>niet</b> automatisch toegepast op domeinaliassen. Aliasadres <code>alias@domein</code> dekt het adres <code>alias@alias-domein</code> <b>niet</b> (waarbij \"alias-domein\" een aliasdomein is voor \"domein\").<br>Gebruik een filter om mail door te sturen naar een extern postvak (zie het tabje \"Filters\" of gebruik SOGo -> Doorsturen).",
         "domain": "Domein",
         "spam_aliases": "Tijdelijk alias",
         "multiple_bookings": "Meerdere boekingen",