diff --git a/doc/efun/restore_object b/doc/efun/restore_object
index 3103e7d..8eb7720 100644
--- a/doc/efun/restore_object
+++ b/doc/efun/restore_object
@@ -2,47 +2,44 @@
         int restore_object(string name)
         int restore_object(string str)
 
-BESCHREIBUNG
-        Laedt Werte von Variablen fuer das aktuelle Objekt aus der Datei
-        <name> oder direkt aus dem String <str>.
+DESCRIPTION
+        Restore values of variables for current object from the file <name>,
+        or directly from the string <str>.
 
-        Um direkt aus einem String Variablen laden zu koennen, muss dieser
-        mit der typischen Zeile "#x:y" beginnen. Strings, die von der Efun
-        save_object() erzeugt wurden, beginnen so.
+        To restore directly from a string <str>, the string must begin
+        with the typical line "#x:y" as it is created by the save_object()
+        efun.
 
-        Wenn Variablen aus einer Datei geladen werden, kann <name> mit .c
-        enden. Diese Dateiendung wird vom Treiber entfernt. Das Masterobjekt
-        fuegt vermutlich dem Dateinamen ein .o hinzu. Die Gueltigkeit des
-        Dateinamens wird mit der Funktion check_valid_path() automatisch
-        ueberprueft.
+        When restoring from a file, the name may end in ".c" which is stripped
+        off by the parser. The master object will probably append a .o to the
+        <name>. The validity of the filename is checked with a call to
+        check_valid_path().
 
-        Die Funktion gibt 1 zurueck, wenn die Variablen erfolgreich geladen
-        wurden und 0, wenn es nichts zu laden gab.
+        Return 1 on success, 0 if there was nothing to restore.
 
-        Variablen mit dem Typenvermerk nosave werden nicht geladen, zum
-        Beispiel nosave int xxx;
+        Variables that has the type modifer 'nosave' will not be restored.
+        Example: nosave int xxx;
 
-        Clousers aus Lfuns, Variablne und simul_efuns werden nur geladen,
-        wenn sie gefunden werden. Falls nicht, werden sie mit dem Wert '0'
-        geladen.
+        Lfun, variable and simul_efun closures are restored only if they
+        can be found (this excludes closures of private lfuns as well) - if
+        not, they are restored as value '0'.
 
-        Wenn Vererbung verwendet wird, kann es vorkommen, dass mehrere
-        Variablen mit dem gleichen Namen an unterschiedlichen Orten vorkommen
-        und deshalb in der Speicherdatei mehrmals auftreten. Beim Laden der
-        Variablen werden sie in Reihenfolge ihres Auftretens im Vererbungsbaum
-        geladen. Ein geeignetes Vorgehen ist die Verwendung von Verbose und
-        einzigartigen Namen bei nicht-statischen Variablen. So wird auch das
-        manuelle Lesen oder Editieren des Savefiles einfacher.
+        If inheritance is used, then it might be possible that a
+        variable will exist with the same name in more than one place,
+        and thus appear in the  save file multiple times. When
+        restoring, the variables are restored in the order they are
+        found in the inheritance tree.  A good practice is to have
+        verbose and unique name on non-static variables, which also
+        will make it more easy to read or patch the save file
+        manually.
 
-GESCHICHTE
-        Das direkte Laden aus einem String wurde in LDMud 3.2.8 eingefuehrt,
-            wird aber moeglicherweise in Zukunft in eine separate Efun
-            ausgelagert.
-        LDMud 3.2.9 ergaenzte die Funktion um die Moeglichkeit,
-            NonLambda-Closures, Symbole und gequotete Arrays zu laden,
-            indem ein neues Format fuer das Savefile verwendet wird.
-        LDMud 3.5.0 unterstuetzt das Einlesen von Formatversion 2 mit hoeherer
-            Praezision der Gleitkommazahlen.
+HISTORY
+        Restoring directly from a string was added in LDMud 3.2.8 and
+        may be moved in future into a separate efun.
+        LDMud 3.2.9 added the restoring of non-lambda closures, symbols,
+        and quoted arrays, using a new savefile format version.
+        LDMud 3.5.0 added the possibility to restore version 2 with its higher
+        float precision and version 3 with lvalue references.
 
-SIEHE AUCH
+SEE ALSO
         save_object(E), restore_value(E), valid_read(M)
