diff --git a/doc/efun/mktime b/doc/efun/mktime
index 03f7913..c7e7682 100644
--- a/doc/efun/mktime
+++ b/doc/efun/mktime
@@ -3,41 +3,40 @@
 
         int mktime(int *ts)
 
-BESCHREIBUNG
-        Ist das Argument <ts> ein Array mit 9 Elementen (int) entsprechend
-        des Rueckgabewertes von localtime(), so liefert die Funktion
-        die Anzahl Sekunden seit dem 01. Januar 1970, 00:00:00 zurueck.
-        Hierbei wird immer die aktuelle Zeitzone des Hostrechners zugrunde
-        gelegt.
-        Dies ist von Nutzen, wenn man ein Datum/Uhrzeit hat, diese aber als
-        Ganzzahl-Wert speichern will oder eine Zeitdifferenz zwischen zwei
-        Daten ausrechnen will.
+DESCRIPTION
+        If the argument <ts> is an array with 9 elements (int) according to
+        the result of localtime(), this function returns the number of seconds
+        passed since the epoch (00:00:00 UTC, January 1, 1970).
+        mktime() interprets the input data according to the current timezone
+        setting of the host system.
+        This can be used to store a date or time as an integer value or to
+        compute differences betweens two different dates or times.
 
-        Das Array muss dabei so aufgebaut sein:
-            int TM_SEC    (0):  Sekunde in der Minute (0..59)
-            int TM_MIN    (1):  Minute in der Stunde (0..59)
-            int TM_HOUR   (2):  Stunde des Tages (0..23)
-            int TM_MDAY   (3):  Tag im Monat (1..31)
-            int TM_MON    (4):  Monat des Jahres (0..11)
-            int TM_YEAR   (5):  Jahr (z.B. 2001)
-            int TM_WDAY   (6):  Wochentag (0..6, Sonntag = 0)
-            int TM_YDAY   (7):  Tag im Jahr (0..365)
-            inz TM_ISDST  (8):  Sommerzeit, Daylight Saving Time (1,0,-1)
+        The array <ts> has to have the following structure:
+            int TM_SEC    (0):  seconds (0..59)
+            int TM_MIN    (1):  minutes (0..59)
+            int TM_HOUR   (2):  hours (0..23)
+            int TM_MDAY   (3):  day of month (1..31)
+            int TM_MON    (4):  day of year (0..11)
+            int TM_YEAR   (5):  year (e.g. 2001)
+            int TM_WDAY   (6):  day of week (0..6, sunday = 0)
+            int TM_YDAY   (7):  day of year (0..365)
+            inz TM_ISDST  (8):  Daylight Saving Time (1,0,-1)
 
-        TM_YDAY und TM_WDAY werden ignoriert und koennen beliebige Zahlen
-        enthalten.
-        TM_ISDST kann 1 (Sommerzeit), 0 (keine Sommerzeit) oder -1 sein. Bei
-        -1 wird versucht, zu erraten, ob Sommerzeit fuer die angegebene Zeit
-        aktiv sein sollte.
+        TM_YDAY and TM_WDAY are ignored and can contain arbitrary 
+        integer values.
+        TM_ISDST can be 1 (daylight saving time in effect), 0 (DST not in
+        effect) or -1. A value of -1 causes the mktime() function to attempt
+        to divine whether daylight saving time is in effect for the specified
+        time.
 
-BEISPIELE
-        Man hat ein Datum/Uhrzeit (z.B. Benutzereingabe), welches als
-        Unix-Zeitstempel gespeichert werden soll:
-        // "Mit, 24. Okt 2007, 10:48:00" entspricht folgendem Zeitstempel:
-        int unixzeit = mktime(({0, 48, 09, 24, 09, 2007, 0, 01, 0}));
+EXAMPLES
+        A date and time (user input) shall be stored as unix timestamp:
+        // "Wed Oct 24 10:48:00 2007" corresponds to the returned time stamp:
+        int unixtime = mktime( ({0, 48, 09, 24, 09, 2007, 0, 01, 0}) );
 
-GESCHICHTE
-        Eingefuehrt in LDMud 3.3.718.
+HISTORY
+        Introduced in LDMud 3.3.718.
 
-SIEHE AUCH
+SEE ALSO
         ctime(E), gmtime(E), localtime(E), time(E), utime(E)
