diff --git a/doc/efun/localtime b/doc/efun/localtime
index cebc838..6c8128f 100644
--- a/doc/efun/localtime
+++ b/doc/efun/localtime
@@ -4,36 +4,35 @@
         int * localtime(int clock)
         int * localtime(int *uclock)
 
-BESCHREIBUNG
-        Interpretiert das Argument <clock> als Anzahl Sekunden seit dem
-        01. Januar 1970, 00:00:00, und gibt die Zeit in Lokalzeit in einer
-        sauberen Struktur zurueck. Wird <clock> nicht angegeben, wird
-        standardmaessig time() verwendet.
+DESCRIPTION
+        Interpret the argument clock as number of seconds since Jan,
+        1st, 1970, 0:00, and return the time in local time in a nice structure.
+        if <clock> is not specified, time() is used as default.
 
-        Alternativ kann auch ein Array von zwei Zahlen als Argument angegeben
-        werden. Das erste Element wird interpretiert wie <clock>, das zweite
-        Argument enthaelt die vergangenen Mikrosekunden in dieser Sekunde und
-        wird ignoriert.
+        Alternatively, accept an array of two ints: the first is <clock>
+        value as in the first form, the second int is the number of
+        microseconds elapsed in the current second, which is ignored.
 
-        Das Resultat ist ein Array mit folgenden Elementen:
+        The result is an array of integers:
 
-            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):  TRUE: Daylight Saving Time
+          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 the month (1..31)
+          int TM_MON   (4) : Month of the year (0..11)
+          int TM_YEAR  (5) : Year (e.g.  2001)
+          int TM_WDAY  (6) : Day of the week (Sunday = 0)
+          int TM_YDAY  (7) : Day of the year (0..365)
+          int TM_ISDST (8) : TRUE: Daylight saving time
 
-BEISPIELE
-        printf("Heute ist %s\n", ({ "Sonntag", "Montag", "Dienstag",
-            "Mittwoch", "Donnerstag", "Freitag", "Samstag"})
-            [localtime()[TM_WDAY]]);
 
-GESCHICHTE
-        Eingefuehrt in LDMud 3.2.9.
+EXAMPLES
+        printf("Today is %s\n",
+               ({ "Sunday", "Monday", "Tuesday", "Wednesday",
+                  "Thursday", "Friday", "Saturday" })[localtime()[TM_WDAY]]);
 
-SIEHE AUCH
+HISTORY
+        Introduced in LDMud 3.2.9.
+
+SEE ALSO
         ctime(E), gmtime(E), time(E), utime(E)
