diff --git a/doc/efun/variable_exists b/doc/efun/variable_exists
index 682490e..d940c41 100644
--- a/doc/efun/variable_exists
+++ b/doc/efun/variable_exists
@@ -1,29 +1,29 @@
 SYNOPSIS
         #include <functionlist.h>
 
-        string variable_exists(string str [, int flags])
-        string variable_exists(string str, object|lwobject obj [, int flags])
+        string variable_exists(string str)
+        string variable_exists(string str, int flags)
+        string variable_exists(string str, object|lwobject ob)
+        string variable_exists(string str, object|lwobject ob, int flags)
 
-BESCHREIBUNG
-        Sucht eine Varialbe <str> in this_object() oder (falls angegeben)
-        im Objekt <obj>.
+DESCRIPTION
+        Look up a variable <str> in the current object, respectively
+        in the object <ob>.
 
-        Das Resultat ist der Name des Programms, in dem die Variable definiert
-        ist. Das kann entweder object_name(obj) sein oder der Name eines
-        geerbten Programms. Wenn sich der Treiber nicht im Compat-Modus
-        befindet, beginnt der zurueck gelieferte Name immer mit '/'.
+        The result is the name of the program the variable is defined
+        in. This can be either object_name(ob), or the name of an
+        inherited program. If !compat mode, the returned name always
+        begins with a '/'.
 
-        Wird <flags> NAME_HIDDEN gesetzt, so liefert variable_exists() auch
-        Informationen ueber Variablen vom Typ "static" und "protected" in
-        anderen Objekten. Es ist nicht moeglich, Informationen ueber "private"
-        deklarierte Variablen zu erhalten.
+        If <flags> can be passed as NAME_HIDDEN to return information
+        about static and protected variables in other objects. It is
+        not possible to return information about private variables.
 
-        Wird die Variable nicht gefunden (weil sie nicht existiert oder weil
-        sie fuer das aufrufende Objekt nicht sichtbar sind), wird 0 zurueck
-        geliefert.
+        If the variable cannot be found (because it doesn't exist or
+        it is not visible to the caller), the result is 0.
 
-GESCHICHTE
-        Eingefuehrt in LDMud 3.2.10.
+HISTORY
+        Introduced in LDMud 3.2.10.
 
-SIEHE AUCH
+SEE ALSO
         function_exists(E), variable_list(E)
