diff --git a/doc/efun/net_connect b/doc/efun/net_connect
index 41c9dd9..b358718 100644
--- a/doc/efun/net_connect
+++ b/doc/efun/net_connect
@@ -2,42 +2,49 @@
         #include <comm.h>
         int net_connect(string host, int port)
 
-BESCHREIBUNG
-        Oeffne eine nicht-blockierende TCP Netzverbindung zu
-        <host>:<port> .  Bei Erfolg wird die Verbindung zum
-        aufrufenden Objekt gebunden und die lfun logon() wird in dem
-        Objekt aufgerufen.
+DESCRIPTION
+        Open a non-blocking TCP network connection to <host> and
+        <port>.  On success, the connection is bound to the current
+        object and the lfun logon() is called in the object.
 
-        Resultat ist einer der folgenden Werte:
-          NC_SUCCESS        net_connect() erfolgreich
-          NC_EUNKNOWNHOST   Host-Adresse nicht ermittelbar
-          NC_ENOSOCKET      Fehler beim Erstellen des Sockets
-          NC_ENOBIND        Fehler beim Binden des Sockets
-          NC_ENOCONNECT     Fehler beim Verbindgen des Sockets
-        (Details ueber die letzten drei Fehler lassen sich im Fehlerlog des
-         Drivers ermitteln.)
-          NC_ECONNREFUSED   Ziel ignoriert Verbindungsversuch
-          NC_EMCONN         zuviele unerledigte Verbindungen im Aufbau
-                            (voruebergehender Fehler, spaeter probieren)
-          NC_ENORESSOURCES  ungenuegende Ressourcen fuer Verbindungs-
-                            versuch (spaeter nochmal versuchen)
+        Returns one of the following values:
+          NC_SUCCESS        Success
+          NC_EUNKNOWNHOST   the host address could not be resolved
+          NC_ENOSOCKET      error during socket creation
+          NC_ENOBIND        socket could not be bound
+          NC_ENOCONNECT     socket could not be connected
+        (Details of the last three errors can be found in the driver's error
+         log.)
+          NC_ECONNREFUSED   remote host not listening/refusing
+          NC_EMCONN         too many pending connections (transient, try
+                            again later)
+          NC_ENORESSOURCES  insufficient system ressources (transient, try
+                            again later)
 
-        Ist der Driver fuer IPv6 konfiguriert, wird <host> erst als
-        IPv6-Name interpretiert, und wenn das fehlschlaegt, als
-        IPv4-Name.
+        If the driver is configured to support IPv6, <host> is first
+        interpreted as IPv6 hostname. If that fails, <host> is then
+        interpretd as IPv4 hostname.
 
-        Wenn die Verbindung nicht sofort erzeugt werden kann, gibt die
-        Funktion 'Erfolg' zurueck, und der Driver vollendet die
-        Funktion im Hintergrund. Sollte die Verbindungsaufbau im
-        Hintergrund fehlschlagen, wird logon(-1) im aktuellen Objekt
-        aufgerufen.
+        If the connection can't be established immediately, the efun
+        returns 'success' and the driver will check in the background
+        for the progress of the connection. When it is established,
+        logon() will be called in the object. If the connection fails,
+        logon(-1) will be called in the object.
 
-        Die Funktion erzeugt eine privilege violation ("net_connect",
-        host, port).
+        The efun raises a privilege violation ("net_connect", host, port).
 
-        WARNUNG: Ist <host> ein Name und keine IP, fuehrt die Funktion
-        einen DNS-Aufruf durch, der den Driver fuer einige Zeit
-        blockieren kann.
+BUGS
+        A non-blocking connect() doesn't imply a non-blocking
+        forward name resolution. If you provide a hostname instead
+        of an IP address to connect to, the driver will block until
+        the name is resolved. This may be an issue, depending on how
+        fast your nameserver replies. Non-blocking forward DNS
+        resolution can currently only be achieved using ERQ_LOOKUP.
 
-SIEHE AUCH
+HISTORY
+        First version 1992 by Snake and LynX for Nemesis.
+        Improved 1993 by Junky.
+        Added to LDMud 3.2.10.
+
+SEE ALSO
         logon(A)
