diff --git a/doc/efun/traceprefix b/doc/efun/traceprefix
index 24802ef..3b0595c 100644
--- a/doc/efun/traceprefix
+++ b/doc/efun/traceprefix
@@ -1,38 +1,37 @@
-GESCHUETZT
 SYNOPSIS
+        #include <trace.h>
+
         string traceprefix(string prefix)
         string traceprefix(int dummy)
 
-BESCHREIBUNG
-        Wenn die Funktion mit einem String als Argument aufgerufen wird,
-        werden nur Objekte getracet, deren Name mit diesem String
-        uebereinstimmt. Der String <prefix> darf am Anfang keinen "/"
-        enthalten, weil Objektnamen intern ohne diesen "/" am Anfang
-        gespeichert werden. Wird traceprefix() mit einer Zahl als Argument
-        aufgerufen, wird traceprefix ignoriert und alle Objekte werden
-        getracet.
+DESCRIPTION
+        If called with a string, only objects matching this prefix will
+        be traced. The string must not contain a leading "/" because
+        the object names are stored internally without it. If called
+        with a number, the traceprefix will be ignored and all objects
+        will be traced. Returns the last traceprefix or 0 if there
+        wasn't any.
 
-        Die Funktion liefert das alte Praefix zurueck oder 0, wenn keines
-        gefunden wurde.
+        The master-lfun valid_trace() is called with ("traceprefix", prefix)
+        as arguments to verify the use of this efun.
 
-        Die Master-Lfun valid_trace() wird mit ("traceprefix", prefix)
-        aufgerufen, um die Erlaubnis fuer die Benutzung dieser Funktion zu
-        erhalten.
-
-BEISPIELE
+EXAMPLES
         object obj;
         string prefix;
-        obj=find_player("thomas");
-        prefix = object_name(obj);  /* z.B. /std/player#69         */
-        prefix = prefix[1..];       /* entfernt den fuehrenden "/" */
+        obj = find_player("wessex");
+        prefix = object_name(obj);
+        prefix = prefix[1..];  /* cut off the leading "/" */
         traceprefix(prefix);
-        /* Von hier an wird nur Code im Objekt std/player#69 getracet */
-        trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
+          /* From here on, only code in the object "std/player#69"
+           * will be traced.
+           */
+        trace(TRACE_CALL | TRACE_CALL_OTHER | TRACE_RETURN | TRACE_ARGS);
         ...
         trace(TRACE_NOTHING);
 
-GESCHICHTE
-        Ab LDMud 3.2.9 wird das Argument <prefix> an valid_trace() uebergeben.
+HISTORY
+        LDMud 3.2.9 passes the <prefix> argument to the valid_trace()
+        apply as well.
 
-SIEHE AUCH
+SEE ALSO
         trace(E)
