about summary refs log tree commit diff stats
path: root/wiki/lib/plugins/authldap
diff options
context:
space:
mode:
Diffstat (limited to 'wiki/lib/plugins/authldap')
-rw-r--r--wiki/lib/plugins/authldap/auth.php649
-rw-r--r--wiki/lib/plugins/authldap/conf/default.php22
-rw-r--r--wiki/lib/plugins/authldap/conf/metadata.php21
-rw-r--r--wiki/lib/plugins/authldap/lang/ar/settings.php13
-rw-r--r--wiki/lib/plugins/authldap/lang/bg/settings.php20
-rw-r--r--wiki/lib/plugins/authldap/lang/ca/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/ca/settings.php10
-rw-r--r--wiki/lib/plugins/authldap/lang/cs/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/cs/settings.php34
-rw-r--r--wiki/lib/plugins/authldap/lang/cy/lang.php11
-rw-r--r--wiki/lib/plugins/authldap/lang/cy/settings.php29
-rw-r--r--wiki/lib/plugins/authldap/lang/da/lang.php10
-rw-r--r--wiki/lib/plugins/authldap/lang/da/settings.php29
-rw-r--r--wiki/lib/plugins/authldap/lang/de-informal/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/de-informal/settings.php35
-rw-r--r--wiki/lib/plugins/authldap/lang/de/lang.php10
-rw-r--r--wiki/lib/plugins/authldap/lang/de/settings.php36
-rw-r--r--wiki/lib/plugins/authldap/lang/en/lang.php11
-rw-r--r--wiki/lib/plugins/authldap/lang/en/settings.php29
-rw-r--r--wiki/lib/plugins/authldap/lang/eo/settings.php27
-rw-r--r--wiki/lib/plugins/authldap/lang/es/lang.php10
-rw-r--r--wiki/lib/plugins/authldap/lang/es/settings.php36
-rw-r--r--wiki/lib/plugins/authldap/lang/et/settings.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/eu/lang.php8
-rw-r--r--wiki/lib/plugins/authldap/lang/eu/settings.php11
-rw-r--r--wiki/lib/plugins/authldap/lang/fa/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/fa/settings.php37
-rw-r--r--wiki/lib/plugins/authldap/lang/fi/settings.php11
-rw-r--r--wiki/lib/plugins/authldap/lang/fr/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/fr/settings.php33
-rw-r--r--wiki/lib/plugins/authldap/lang/he/settings.php14
-rw-r--r--wiki/lib/plugins/authldap/lang/hr/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/hr/settings.php32
-rw-r--r--wiki/lib/plugins/authldap/lang/hu/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/hu/settings.php33
-rw-r--r--wiki/lib/plugins/authldap/lang/it/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/it/settings.php35
-rw-r--r--wiki/lib/plugins/authldap/lang/ja/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/ja/settings.php37
-rw-r--r--wiki/lib/plugins/authldap/lang/ko/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/ko/settings.php32
-rw-r--r--wiki/lib/plugins/authldap/lang/lv/settings.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/nl/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/nl/settings.php34
-rw-r--r--wiki/lib/plugins/authldap/lang/no/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/no/settings.php35
-rw-r--r--wiki/lib/plugins/authldap/lang/pl/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/pl/settings.php34
-rw-r--r--wiki/lib/plugins/authldap/lang/pt-br/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/pt-br/settings.php34
-rw-r--r--wiki/lib/plugins/authldap/lang/pt/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/pt/settings.php34
-rw-r--r--wiki/lib/plugins/authldap/lang/ru/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/ru/settings.php37
-rw-r--r--wiki/lib/plugins/authldap/lang/sk/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/sk/settings.php29
-rw-r--r--wiki/lib/plugins/authldap/lang/sl/settings.php10
-rw-r--r--wiki/lib/plugins/authldap/lang/sr/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/sr/settings.php17
-rw-r--r--wiki/lib/plugins/authldap/lang/sv/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/sv/settings.php23
-rw-r--r--wiki/lib/plugins/authldap/lang/tr/settings.php8
-rw-r--r--wiki/lib/plugins/authldap/lang/uk/lang.php10
-rw-r--r--wiki/lib/plugins/authldap/lang/uk/settings.php23
-rw-r--r--wiki/lib/plugins/authldap/lang/zh-tw/settings.php26
-rw-r--r--wiki/lib/plugins/authldap/lang/zh/lang.php9
-rw-r--r--wiki/lib/plugins/authldap/lang/zh/settings.php35
-rw-r--r--wiki/lib/plugins/authldap/plugin.info.txt7
68 files changed, 1919 insertions, 0 deletions
diff --git a/wiki/lib/plugins/authldap/auth.php b/wiki/lib/plugins/authldap/auth.php
new file mode 100644
index 0000000..52f9ba5
--- /dev/null
+++ b/wiki/lib/plugins/authldap/auth.php
@@ -0,0 +1,649 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * LDAP authentication backend
+ *
+ * @license   GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author    Andreas Gohr <andi@splitbrain.org>
+ * @author    Chris Smith <chris@jalakaic.co.uk>
+ * @author    Jan Schumann <js@schumann-it.com>
+ */
+class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
+    /* @var resource $con holds the LDAP connection*/
+    protected $con = null;
+
+    /* @var int $bound What type of connection does already exist? */
+    protected $bound = 0; // 0: anonymous, 1: user, 2: superuser
+
+    /* @var array $users User data cache */
+    protected $users = null;
+
+    /* @var array $_pattern User filter pattern */
+    protected $_pattern = null;
+
+    /**
+     * Constructor
+     */
+    public function __construct() {
+        parent::__construct();
+
+        // ldap extension is needed
+        if(!function_exists('ldap_connect')) {
+            $this->_debug("LDAP err: PHP LDAP extension not found.", -1, __LINE__, __FILE__);
+            $this->success = false;
+            return;
+        }
+
+        // Add the capabilities to change the password
+        $this->cando['modPass'] = $this->getConf('modPass');
+    }
+
+    /**
+     * Check user+password
+     *
+     * Checks if the given user exists and the given
+     * plaintext password is correct by trying to bind
+     * to the LDAP server
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param string $user
+     * @param string $pass
+     * @return  bool
+     */
+    public function checkPass($user, $pass) {
+        // reject empty password
+        if(empty($pass)) return false;
+        if(!$this->_openLDAP()) return false;
+
+        // indirect user bind
+        if($this->getConf('binddn') && $this->getConf('bindpw')) {
+            // use superuser credentials
+            if(!@ldap_bind($this->con, $this->getConf('binddn'), conf_decodeString($this->getConf('bindpw')))) {
+                $this->_debug('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+            $this->bound = 2;
+        } else if($this->getConf('binddn') &&
+            $this->getConf('usertree') &&
+            $this->getConf('userfilter')
+        ) {
+            // special bind string
+            $dn = $this->_makeFilter(
+                $this->getConf('binddn'),
+                array('user'=> $user, 'server'=> $this->getConf('server'))
+            );
+
+        } else if(strpos($this->getConf('usertree'), '%{user}')) {
+            // direct user bind
+            $dn = $this->_makeFilter(
+                $this->getConf('usertree'),
+                array('user'=> $user, 'server'=> $this->getConf('server'))
+            );
+
+        } else {
+            // Anonymous bind
+            if(!@ldap_bind($this->con)) {
+                msg("LDAP: can not bind anonymously", -1);
+                $this->_debug('LDAP anonymous bind: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+        }
+
+        // Try to bind to with the dn if we have one.
+        if(!empty($dn)) {
+            // User/Password bind
+            if(!@ldap_bind($this->con, $dn, $pass)) {
+                $this->_debug("LDAP: bind with $dn failed", -1, __LINE__, __FILE__);
+                $this->_debug('LDAP user dn bind: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+            $this->bound = 1;
+            return true;
+        } else {
+            // See if we can find the user
+            $info = $this->_getUserData($user, true);
+            if(empty($info['dn'])) {
+                return false;
+            } else {
+                $dn = $info['dn'];
+            }
+
+            // Try to bind with the dn provided
+            if(!@ldap_bind($this->con, $dn, $pass)) {
+                $this->_debug("LDAP: bind with $dn failed", -1, __LINE__, __FILE__);
+                $this->_debug('LDAP user bind: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+            $this->bound = 1;
+            return true;
+        }
+    }
+
+    /**
+     * Return user info
+     *
+     * Returns info about the given user needs to contain
+     * at least these fields:
+     *
+     * name string  full name of the user
+     * mail string  email addres of the user
+     * grps array   list of groups the user is in
+     *
+     * This LDAP specific function returns the following
+     * addional fields:
+     *
+     * dn     string  distinguished name (DN)
+     * uid    string  Posix User ID
+     * inbind bool    for internal use - avoid loop in binding
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Trouble
+     * @author  Dan Allen <dan.j.allen@gmail.com>
+     * @author  <evaldas.auryla@pheur.org>
+     * @author  Stephane Chazelas <stephane.chazelas@emerson.com>
+     * @author  Steffen Schoch <schoch@dsb.net>
+     *
+     * @param   string $user
+     * @param   bool   $requireGroups (optional) - ignored, groups are always supplied by this plugin
+     * @return  array containing user data or false
+     */
+    public function getUserData($user, $requireGroups=true) {
+        return $this->_getUserData($user);
+    }
+
+    /**
+     * @param   string $user
+     * @param   bool   $inbind authldap specific, true if in bind phase
+     * @return  array containing user data or false
+     */
+    protected function _getUserData($user, $inbind = false) {
+        global $conf;
+        if(!$this->_openLDAP()) return false;
+
+        // force superuser bind if wanted and not bound as superuser yet
+        if($this->getConf('binddn') && $this->getConf('bindpw') && $this->bound < 2) {
+            // use superuser credentials
+            if(!@ldap_bind($this->con, $this->getConf('binddn'), conf_decodeString($this->getConf('bindpw')))) {
+                $this->_debug('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+            $this->bound = 2;
+        } elseif($this->bound == 0 && !$inbind) {
+            // in some cases getUserData is called outside the authentication workflow
+            // eg. for sending email notification on subscribed pages. This data might not
+            // be accessible anonymously, so we try to rebind the current user here
+            list($loginuser, $loginsticky, $loginpass) = auth_getCookie();
+            if($loginuser && $loginpass) {
+                $loginpass = auth_decrypt($loginpass, auth_cookiesalt(!$loginsticky, true));
+                $this->checkPass($loginuser, $loginpass);
+            }
+        }
+
+        $info = array();
+        $info['user']   = $user;
+		$this->_debug('LDAP user to find: '.htmlspecialchars($info['user']), 0, __LINE__, __FILE__);
+
+        $info['server'] = $this->getConf('server');
+		$this->_debug('LDAP Server: '.htmlspecialchars($info['server']), 0, __LINE__, __FILE__);
+
+
+        //get info for given user
+        $base = $this->_makeFilter($this->getConf('usertree'), $info);
+        if($this->getConf('userfilter')) {
+            $filter = $this->_makeFilter($this->getConf('userfilter'), $info);
+        } else {
+            $filter = "(ObjectClass=*)";
+        }
+
+		$this->_debug('LDAP Filter: '.htmlspecialchars($filter), 0, __LINE__, __FILE__);
+
+        $this->_debug('LDAP user search: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+        $this->_debug('LDAP search at: '.htmlspecialchars($base.' '.$filter), 0, __LINE__, __FILE__);
+		$sr     = $this->_ldapsearch($this->con, $base, $filter, $this->getConf('userscope'));
+
+		$result = @ldap_get_entries($this->con, $sr);
+
+        // if result is not an array
+        if(!is_array($result)) {
+			// no objects found
+			$this->_debug('LDAP search returned non-array result: '.htmlspecialchars(print($result)), -1, __LINE__, __FILE__);
+            return false;
+        }
+
+		// Don't accept more or less than one response
+		if ($result['count'] != 1)		{
+			$this->_debug('LDAP search returned '.htmlspecialchars($result['count']).' results while it should return 1!', -1, __LINE__, __FILE__);
+			//for($i = 0; $i < $result["count"]; $i++) {
+				//$this->_debug('result: '.htmlspecialchars(print_r($result[$i])), 0, __LINE__, __FILE__);
+			//}
+			return false;
+		}
+
+
+		$this->_debug('LDAP search found single result !', 0, __LINE__, __FILE__);
+
+        $user_result = $result[0];
+        ldap_free_result($sr);
+
+        // general user info
+        $info['dn']   = $user_result['dn'];
+        $info['gid']  = $user_result['gidnumber'][0];
+        $info['mail'] = $user_result['mail'][0];
+        $info['name'] = $user_result['cn'][0];
+        $info['grps'] = array();
+
+        // overwrite if other attribs are specified.
+        if(is_array($this->getConf('mapping'))) {
+            foreach($this->getConf('mapping') as $localkey => $key) {
+                if(is_array($key)) {
+                    // use regexp to clean up user_result
+                    // $key = array($key=>$regexp), only handles the first key-value
+                    $regexp = current($key);
+                    $key = key($key);
+                    if($user_result[$key]) foreach($user_result[$key] as $grpkey => $grp) {
+                        if($grpkey !== 'count' && preg_match($regexp, $grp, $match)) {
+                            if($localkey == 'grps') {
+                                $info[$localkey][] = $match[1];
+                            } else {
+                                $info[$localkey] = $match[1];
+                            }
+                        }
+                    }
+                } else {
+                    $info[$localkey] = $user_result[$key][0];
+                }
+            }
+        }
+        $user_result = array_merge($info, $user_result);
+
+        //get groups for given user if grouptree is given
+        if($this->getConf('grouptree') || $this->getConf('groupfilter')) {
+            $base   = $this->_makeFilter($this->getConf('grouptree'), $user_result);
+            $filter = $this->_makeFilter($this->getConf('groupfilter'), $user_result);
+            $sr     = $this->_ldapsearch($this->con, $base, $filter, $this->getConf('groupscope'), array($this->getConf('groupkey')));
+            $this->_debug('LDAP group search: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+            $this->_debug('LDAP search at: '.htmlspecialchars($base.' '.$filter), 0, __LINE__, __FILE__);
+
+            if(!$sr) {
+                msg("LDAP: Reading group memberships failed", -1);
+                return false;
+            }
+            $result = ldap_get_entries($this->con, $sr);
+            ldap_free_result($sr);
+
+            if(is_array($result)) foreach($result as $grp) {
+                if(!empty($grp[$this->getConf('groupkey')])) {
+                    $group = $grp[$this->getConf('groupkey')];
+                    if(is_array($group)){
+                        $group = $group[0];
+                    } else {
+                        $this->_debug('groupkey did not return a detailled result', 0, __LINE__, __FILE__);
+                    }
+                    if($group === '') continue;
+
+                    $this->_debug('LDAP usergroup: '.htmlspecialchars($group), 0, __LINE__, __FILE__);
+                    $info['grps'][] = $group;
+                }
+            }
+        }
+
+        // always add the default group to the list of groups
+        if(!$info['grps'] or !in_array($conf['defaultgroup'], $info['grps'])) {
+            $info['grps'][] = $conf['defaultgroup'];
+        }
+        return $info;
+    }
+
+    /**
+     * Definition of the function modifyUser in order to modify the password
+     *
+     * @param   string $user    nick of the user to be changed
+     * @param   array  $changes array of field/value pairs to be changed (password will be clear text)
+     * @return  bool   true on success, false on error
+     */
+
+    function modifyUser($user,$changes){
+
+        // open the connection to the ldap
+        if(!$this->_openLDAP()){
+            $this->_debug('LDAP cannot connect: '. htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+            return false;
+        }
+
+        // find the information about the user, in particular the "dn"
+        $info = $this->getUserData($user,true);
+        if(empty($info['dn'])) {
+            $this->_debug('LDAP cannot find your user dn', 0, __LINE__, __FILE__);
+            return false;
+        }
+        $dn = $info['dn'];
+
+        // find the old password of the user
+        list($loginuser,$loginsticky,$loginpass) = auth_getCookie();
+        if ($loginuser !== null) { // the user is currently logged in
+            $secret = auth_cookiesalt(!$loginsticky, true);
+            $pass   = auth_decrypt($loginpass, $secret);
+
+            // bind with the ldap
+            if(!@ldap_bind($this->con, $dn, $pass)){
+                $this->_debug('LDAP user bind failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+        } elseif ($this->getConf('binddn') && $this->getConf('bindpw')) {
+            // we are changing the password on behalf of the user (eg: forgotten password)
+            // bind with the superuser ldap
+            if (!@ldap_bind($this->con, $this->getConf('binddn'), conf_decodeString($this->getConf('bindpw')))){
+                $this->_debug('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                return false;
+            }
+        }
+        else {
+            return false; // no otherway
+        }
+
+        // Generate the salted hashed password for LDAP
+        $phash = new PassHash();
+        $hash = $phash->hash_ssha($changes['pass']);
+
+        // change the password
+        if(!@ldap_mod_replace($this->con, $dn,array('userpassword' => $hash))){
+            $this->_debug('LDAP mod replace failed: '. htmlspecialchars($dn) .': '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Most values in LDAP are case-insensitive
+     *
+     * @return bool
+     */
+    public function isCaseSensitive() {
+        return false;
+    }
+
+    /**
+     * Bulk retrieval of user data
+     *
+     * @author  Dominik Eckelmann <dokuwiki@cosmocode.de>
+     * @param   int   $start     index of first user to be returned
+     * @param   int   $limit     max number of users to be returned
+     * @param   array $filter  array of field/pattern pairs, null for no filter
+     * @return  array of userinfo (refer getUserData for internal userinfo details)
+     */
+    function retrieveUsers($start = 0, $limit = 0, $filter = array()) {
+        if(!$this->_openLDAP()) return false;
+
+        if(is_null($this->users)) {
+            // Perform the search and grab all their details
+            if($this->getConf('userfilter')) {
+                $all_filter = str_replace('%{user}', '*', $this->getConf('userfilter'));
+            } else {
+                $all_filter = "(ObjectClass=*)";
+            }
+            $sr          = ldap_search($this->con, $this->getConf('usertree'), $all_filter);
+            $entries     = ldap_get_entries($this->con, $sr);
+            $users_array = array();
+            $userkey     = $this->getConf('userkey');
+            for($i = 0; $i < $entries["count"]; $i++) {
+                array_push($users_array, $entries[$i][$userkey][0]);
+            }
+            asort($users_array);
+            $result = $users_array;
+            if(!$result) return array();
+            $this->users = array_fill_keys($result, false);
+        }
+        $i     = 0;
+        $count = 0;
+        $this->_constructPattern($filter);
+        $result = array();
+
+        foreach($this->users as $user => &$info) {
+            if($i++ < $start) {
+                continue;
+            }
+            if($info === false) {
+                $info = $this->getUserData($user);
+            }
+            if($this->_filter($user, $info)) {
+                $result[$user] = $info;
+                if(($limit > 0) && (++$count >= $limit)) break;
+            }
+        }
+        return $result;
+    }
+
+    /**
+     * Make LDAP filter strings.
+     *
+     * Used by auth_getUserData to make the filter
+     * strings for grouptree and groupfilter
+     *
+     * @author  Troels Liebe Bentsen <tlb@rapanden.dk>
+     * @param   string $filter ldap search filter with placeholders
+     * @param   array  $placeholders placeholders to fill in
+     * @return  string
+     */
+    protected function _makeFilter($filter, $placeholders) {
+        preg_match_all("/%{([^}]+)/", $filter, $matches, PREG_PATTERN_ORDER);
+        //replace each match
+        foreach($matches[1] as $match) {
+            //take first element if array
+            if(is_array($placeholders[$match])) {
+                $value = $placeholders[$match][0];
+            } else {
+                $value = $placeholders[$match];
+            }
+            $value  = $this->_filterEscape($value);
+            $filter = str_replace('%{'.$match.'}', $value, $filter);
+        }
+        return $filter;
+    }
+
+    /**
+     * return true if $user + $info match $filter criteria, false otherwise
+     *
+     * @author Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param  string $user the user's login name
+     * @param  array  $info the user's userinfo array
+     * @return bool
+     */
+    protected  function _filter($user, $info) {
+        foreach($this->_pattern as $item => $pattern) {
+            if($item == 'user') {
+                if(!preg_match($pattern, $user)) return false;
+            } else if($item == 'grps') {
+                if(!count(preg_grep($pattern, $info['grps']))) return false;
+            } else {
+                if(!preg_match($pattern, $info[$item])) return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Set the filter pattern
+     *
+     * @author Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param $filter
+     * @return void
+     */
+    protected function _constructPattern($filter) {
+        $this->_pattern = array();
+        foreach($filter as $item => $pattern) {
+            $this->_pattern[$item] = '/'.str_replace('/', '\/', $pattern).'/i'; // allow regex characters
+        }
+    }
+
+    /**
+     * Escape a string to be used in a LDAP filter
+     *
+     * Ported from Perl's Net::LDAP::Util escape_filter_value
+     *
+     * @author Andreas Gohr
+     * @param  string $string
+     * @return string
+     */
+    protected function _filterEscape($string) {
+        // see https://github.com/adldap/adLDAP/issues/22
+        return preg_replace_callback(
+            '/([\x00-\x1F\*\(\)\\\\])/',
+            function ($matches) {
+                return "\\".join("", unpack("H2", $matches[1]));
+            },
+            $string
+        );
+    }
+
+    /**
+     * Opens a connection to the configured LDAP server and sets the wanted
+     * option on the connection
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     */
+    protected function _openLDAP() {
+        if($this->con) return true; // connection already established
+
+        if($this->getConf('debug')) {
+            ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
+        }
+
+        $this->bound = 0;
+
+        $port    = $this->getConf('port');
+        $bound   = false;
+        $servers = explode(',', $this->getConf('server'));
+        foreach($servers as $server) {
+            $server    = trim($server);
+            $this->con = @ldap_connect($server, $port);
+            if(!$this->con) {
+                continue;
+            }
+
+            /*
+             * When OpenLDAP 2.x.x is used, ldap_connect() will always return a resource as it does
+             * not actually connect but just initializes the connecting parameters. The actual
+             * connect happens with the next calls to ldap_* funcs, usually with ldap_bind().
+             *
+             * So we should try to bind to server in order to check its availability.
+             */
+
+            //set protocol version and dependend options
+            if($this->getConf('version')) {
+                if(!@ldap_set_option(
+                    $this->con, LDAP_OPT_PROTOCOL_VERSION,
+                    $this->getConf('version')
+                )
+                ) {
+                    msg('Setting LDAP Protocol version '.$this->getConf('version').' failed', -1);
+                    $this->_debug('LDAP version set: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                } else {
+                    //use TLS (needs version 3)
+                    if($this->getConf('starttls')) {
+                        if(!@ldap_start_tls($this->con)) {
+                            msg('Starting TLS failed', -1);
+                            $this->_debug('LDAP TLS set: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                        }
+                    }
+                    // needs version 3
+                    if($this->getConf('referrals') > -1) {
+                        if(!@ldap_set_option(
+                            $this->con, LDAP_OPT_REFERRALS,
+                            $this->getConf('referrals')
+                        )
+                        ) {
+                            msg('Setting LDAP referrals failed', -1);
+                            $this->_debug('LDAP referal set: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                        }
+                    }
+                }
+            }
+
+            //set deref mode
+            if($this->getConf('deref')) {
+                if(!@ldap_set_option($this->con, LDAP_OPT_DEREF, $this->getConf('deref'))) {
+                    msg('Setting LDAP Deref mode '.$this->getConf('deref').' failed', -1);
+                    $this->_debug('LDAP deref set: '.htmlspecialchars(ldap_error($this->con)), 0, __LINE__, __FILE__);
+                }
+            }
+            /* As of PHP 5.3.0 we can set timeout to speedup skipping of invalid servers */
+            if(defined('LDAP_OPT_NETWORK_TIMEOUT')) {
+                ldap_set_option($this->con, LDAP_OPT_NETWORK_TIMEOUT, 1);
+            }
+
+            if($this->getConf('binddn') && $this->getConf('bindpw')) {
+                $bound = @ldap_bind($this->con, $this->getConf('binddn'), conf_decodeString($this->getConf('bindpw')));
+                $this->bound = 2;
+            } else {
+                $bound = @ldap_bind($this->con);
+            }
+            if($bound) {
+                break;
+            }
+        }
+
+        if(!$bound) {
+            msg("LDAP: couldn't connect to LDAP server", -1);
+            $this->_debug(ldap_error($this->con), 0, __LINE__, __FILE__);
+            return false;
+        }
+
+        $this->cando['getUsers'] = true;
+        return true;
+    }
+
+    /**
+     * Wraps around ldap_search, ldap_list or ldap_read depending on $scope
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @param resource   $link_identifier
+     * @param string     $base_dn
+     * @param string     $filter
+     * @param string     $scope can be 'base', 'one' or 'sub'
+     * @param null|array $attributes
+     * @param int        $attrsonly
+     * @param int        $sizelimit
+     * @return resource
+     */
+    protected function _ldapsearch($link_identifier, $base_dn, $filter, $scope = 'sub', $attributes = null,
+                         $attrsonly = 0, $sizelimit = 0) {
+        if(is_null($attributes)) $attributes = array();
+
+        if($scope == 'base') {
+            return @ldap_read(
+                $link_identifier, $base_dn, $filter, $attributes,
+                $attrsonly, $sizelimit
+            );
+        } elseif($scope == 'one') {
+            return @ldap_list(
+                $link_identifier, $base_dn, $filter, $attributes,
+                $attrsonly, $sizelimit
+            );
+        } else {
+            return @ldap_search(
+                $link_identifier, $base_dn, $filter, $attributes,
+                $attrsonly, $sizelimit
+            );
+        }
+    }
+
+    /**
+     * Wrapper around msg() but outputs only when debug is enabled
+     *
+     * @param string $message
+     * @param int    $err
+     * @param int    $line
+     * @param string $file
+     * @return void
+     */
+    protected function _debug($message, $err, $line, $file) {
+        if(!$this->getConf('debug')) return;
+        msg($message, $err, $line, $file);
+    }
+
+}
diff --git a/wiki/lib/plugins/authldap/conf/default.php b/wiki/lib/plugins/authldap/conf/default.php
new file mode 100644
index 0000000..116cb9d
--- /dev/null
+++ b/wiki/lib/plugins/authldap/conf/default.php
@@ -0,0 +1,22 @@
+<?php
+
+$conf['server']      = '';
+$conf['port']        = 389;
+$conf['usertree']    = '';
+$conf['grouptree']   = '';
+$conf['userfilter']  = '';
+$conf['groupfilter'] = '';
+$conf['version']     = 2;
+$conf['starttls']    = 0;
+$conf['referrals']   = -1;
+$conf['deref']       = 0;
+$conf['binddn']      = '';
+$conf['bindpw']      = '';
+//$conf['mapping']['name']  unsupported in config manager
+//$conf['mapping']['grps']  unsupported in config manager
+$conf['userscope']  = 'sub';
+$conf['groupscope'] = 'sub';
+$conf['userkey']    = 'uid';
+$conf['groupkey']   = 'cn';
+$conf['debug']      = 0;
+$conf['modPass']    = 1;
diff --git a/wiki/lib/plugins/authldap/conf/metadata.php b/wiki/lib/plugins/authldap/conf/metadata.php
new file mode 100644
index 0000000..f32aed1
--- /dev/null
+++ b/wiki/lib/plugins/authldap/conf/metadata.php
@@ -0,0 +1,21 @@
+<?php
+$meta['server']      = array('string','_caution' => 'danger');
+$meta['port']        = array('numeric','_caution' => 'danger');
+$meta['usertree']    = array('string','_caution' => 'danger');
+$meta['grouptree']   = array('string','_caution' => 'danger');
+$meta['userfilter']  = array('string','_caution' => 'danger');
+$meta['groupfilter'] = array('string','_caution' => 'danger');
+$meta['version']     = array('numeric','_caution' => 'danger');
+$meta['starttls']    = array('onoff','_caution' => 'danger');
+$meta['referrals']   = array('multichoice','_choices' => array(-1,0,1),'_caution' => 'danger');
+$meta['deref']       = array('multichoice','_choices' => array(0,1,2,3),'_caution' => 'danger');
+$meta['binddn']      = array('string','_caution' => 'danger');
+$meta['bindpw']      = array('password','_caution' => 'danger','_code'=>'base64');
+//$meta['mapping']['name']  unsupported in config manager
+//$meta['mapping']['grps']  unsupported in config manager
+$meta['userscope']   = array('multichoice','_choices' => array('sub','one','base'),'_caution' => 'danger');
+$meta['groupscope']  = array('multichoice','_choices' => array('sub','one','base'),'_caution' => 'danger');
+$meta['userkey']     = array('string','_caution' => 'danger');
+$meta['groupkey']    = array('string','_caution' => 'danger');
+$meta['debug']       = array('onoff','_caution' => 'security');
+$meta['modPass']     = array('onoff');
diff --git a/wiki/lib/plugins/authldap/lang/ar/settings.php b/wiki/lib/plugins/authldap/lang/ar/settings.php
new file mode 100644
index 0000000..aaef776
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ar/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author alhajr <alhajr300@gmail.com>
+ */
+$lang['port']                  = 'LDAP المنفذ الملقم إذا لم يعط أي عنوان URL كامل أعلاه';
+$lang['version']               = 'إصدار نسخة البروتوكول الستخدامه. قد تحتاج لتعيين هذه القيمة إلى <code>3</code>';
+$lang['starttls']              = 'استخدام اتصالات TLS؟';
+$lang['referrals']             = 'يتبع الإحالات؟';
+$lang['deref']                 = 'كيفية إلغاء مرجعية الأسماء المستعارة؟';
+$lang['bindpw']                = 'كلمة مرور المستخدم أعلاه';
diff --git a/wiki/lib/plugins/authldap/lang/bg/settings.php b/wiki/lib/plugins/authldap/lang/bg/settings.php
new file mode 100644
index 0000000..165216d
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/bg/settings.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['server']                = 'Вашият LDAP сървър. Име на хоста (<code>localhost</code>) или целият URL адрес (<code>ldap://сървър.tld:389</code>)';
+$lang['port']                  = 'Порт на LDAP  сървъра, ако не сте въвели целия URL адрес по-горе';
+$lang['usertree']              = 'Къде да се търси за потребителски акаунти. Например <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Къде да се търси за потребителски групи. Например <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP филтър за търсене на потребителски акаунти. Например <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP филтър за търсене на потребителски групи. Например <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Коя версия на протокола да се ползва? Вероятно ще се наложи да зададете <code>3</code>';
+$lang['starttls']              = 'Ползване на TLS свързаност?';
+$lang['referrals']             = 'Да бъдат ли следвани препратките (препращанията)?';
+$lang['bindpw']                = 'Парола за горния потребител';
+$lang['userscope']             = 'Ограничаване на обхвата за търсене на потребители';
+$lang['groupscope']            = 'Ограничаване на обхвата за търсене на потребителски групи';
+$lang['debug']                 = 'Показване на допълнителна debug информация при грешка';
diff --git a/wiki/lib/plugins/authldap/lang/ca/lang.php b/wiki/lib/plugins/authldap/lang/ca/lang.php
new file mode 100644
index 0000000..f4431a3
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ca/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author David Surroca <david.tb303@gmail.com>
+ */
+$lang['connectfail']           = 'L\'LDAP no s\'ha pogut connectar: %s';
+$lang['domainfail']            = 'L\'LDAP no ha trobat el teu nom distingit d\'usuari';
diff --git a/wiki/lib/plugins/authldap/lang/ca/settings.php b/wiki/lib/plugins/authldap/lang/ca/settings.php
new file mode 100644
index 0000000..2f73833
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ca/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Àngel Pérez Beroy <aperezberoy@gmail.com>
+ * @author David Surroca <david.tb303@gmail.com>
+ */
+$lang['starttls']              = 'Utilitzar connexions TLS?';
+$lang['bindpw']                = 'Contrasenya de l\'usuari referit abans.';
diff --git a/wiki/lib/plugins/authldap/lang/cs/lang.php b/wiki/lib/plugins/authldap/lang/cs/lang.php
new file mode 100644
index 0000000..0fac2df
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/cs/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ */
+$lang['connectfail']           = 'LDAP připojení nefunkční: %s';
+$lang['domainfail']            = 'LDAP nenalezlo uživatelské dn';
diff --git a/wiki/lib/plugins/authldap/lang/cs/settings.php b/wiki/lib/plugins/authldap/lang/cs/settings.php
new file mode 100644
index 0000000..741a56a
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/cs/settings.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ */
+$lang['server']                = 'Váš server LDAP. Buď jméno hosta (<code>localhost</code>) nebo plně kvalifikovaný popis URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'Port serveru LDAP. Pokud není, bude využito URL výše';
+$lang['usertree']              = 'Kde najít uživatelské účty, tj. <code>ou=Lide, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Kde najít uživatelské skupiny, tj. <code>ou=Skupina, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'Filtr LDAPu pro vyhledávání uživatelských účtů, tj. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtr LDAPu pro vyhledávání uživatelských skupin, tj. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Verze použitého protokolu. Můžete potřebovat jej nastavit na <code>3</code>';
+$lang['starttls']              = 'Využít spojení TLS?';
+$lang['referrals']             = 'Přeposílat odkazy?';
+$lang['deref']                 = 'Jak rozlišovat aliasy?';
+$lang['binddn']                = 'Doménový název DN volitelně připojeného uživatele, pokus anonymní připojení není vyhovující, tj.  <code>cn=admin, dc=muj, dc=domov</code>';
+$lang['bindpw']                = 'Heslo uživatele výše';
+$lang['userscope']             = 'Omezení rozsahu vyhledávání uživatele';
+$lang['groupscope']            = 'Omezení rozsahu vyhledávání skupiny';
+$lang['userkey']               = 'Atribut označující uživatelské jméno; musí být konzistetní s uživatelským filtrem.';
+$lang['groupkey']              = 'Atribut členství uživatele ve skupinách (namísto standardních AD skupin), tj. skupina z oddělení nebo telefonní číslo';
+$lang['modPass']               = 'Může být LDAP heslo změněno přes dokuwiki?';
+$lang['debug']                 = 'Zobrazit dodatečné debugovací informace';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'použít výchozí';
+$lang['referrals_o_0']         = 'nenásledovat odkazy';
+$lang['referrals_o_1']         = 'následovat odkazy';
diff --git a/wiki/lib/plugins/authldap/lang/cy/lang.php b/wiki/lib/plugins/authldap/lang/cy/lang.php
new file mode 100644
index 0000000..f6c5cf6
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/cy/lang.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Welsh language file for authldap plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail']     = 'LDAP yn methu cysylltu: %s';
+$lang['domainfail']       = 'LDAP yn methu darganfod eich defnyddiwr dn';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authldap/lang/cy/settings.php b/wiki/lib/plugins/authldap/lang/cy/settings.php
new file mode 100644
index 0000000..91c9bfd
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/cy/settings.php
@@ -0,0 +1,29 @@
+<?php
+$lang['server']      = 'Eich gweinydd LDAP. Naill ai enw\'r gweinydd (<code>localhost</code>) neu\'r URL llawn (<code>ldap://server.tld:389</code>)';
+$lang['port']        = 'Porth gweinydd LDAP os nac oes URL llawn wedi\'i gyflwyno uchod';
+$lang['usertree']    = 'Ble i ddarganfod cyfrifon defnyddwyr. Ee. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']   = 'Ble i ddarganfod y grwpiau defnyddiwr. Eg. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']  = 'Hidlydd LDAP i ddarganfod cyfrifon defnyddwyr. Eg. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = 'Hidlydd LDAP i chwilio am grwpiau. Eg. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']     = 'Y fersiwn protocol i\'w ddefnyddio. Efallai bydd angen gosod hwn i <code>3</code>';
+$lang['starttls']    = 'Defnyddio cysylltiadau TLS?';
+$lang['referrals']   = 'Dilyn cyfeiriadau (referrals)?';
+$lang['deref']       = 'Sut i ddadgyfeirio alias?'; //alias - enw arall?
+$lang['binddn']      = 'DN rhwymiad defnyddiwr opsiynol os ydy rhwymiad anhysbys yn annigonol. Ee. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']      = 'Cyfrinair y defnyddiwr uchod';
+$lang['userscope']   = 'Cyfyngu sgôp chwiliadau ar gyfer chwiliad defnyddwyr';
+$lang['groupscope']  = 'Cyfyngu sgôp chwiliadau ar gyfer chwiliad grwpiau';
+$lang['userkey']     = 'Priodoledd yn denodi\'r defnyddair; rhaid iddo fod yn gyson i \'r hidlydd defnyddwyr.';
+$lang['groupkey']    = 'Aelodaeth grŵp o unrhyw briodoledd defnyddiwr (yn hytrach na grwpiau AD safonol) e.e. grŵp o adran neu rif ffôn';
+$lang['modPass']     = 'Gall cyfrinair LDAP gael ei newid gan DokuWiki?';
+$lang['debug']       = 'Dangos gwybodaeth dadfygio ychwanegol gyda gwallau';
+
+
+$lang['deref_o_0']   = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']   = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']   = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']   = 'LDAP_DEREF_ALWAYS';
+
+$lang['referrals_o_-1'] = 'defnyddio\'r diofyn';
+$lang['referrals_o_0']  = 'peidio dilyn cyfeiriadau';
+$lang['referrals_o_1']  = 'dilyn cyfeiriadau';
\ No newline at end of file
diff --git a/wiki/lib/plugins/authldap/lang/da/lang.php b/wiki/lib/plugins/authldap/lang/da/lang.php
new file mode 100644
index 0000000..35249df
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/da/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jon Theil Nielsen <jontheil@gmail.com>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['connectfail']           = 'LDAP kan ikke forbinde: %s';
+$lang['domainfail']            = 'LDAP kan ikke finde dit bruger dn';
diff --git a/wiki/lib/plugins/authldap/lang/da/settings.php b/wiki/lib/plugins/authldap/lang/da/settings.php
new file mode 100644
index 0000000..7a1384d
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/da/settings.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jon Theil Nielsen <jontheil@gmail.com>
+ * @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
+ * @author soer9648 <soer9648@eucl.dk>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['server']                = 'Din LDAP server. Enten værtsnavn (<code>localhost</code>) eller fuld kvalificeret URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP server port, hvis der ikke er angivet en komplet URL ovenfor.';
+$lang['usertree']              = 'Hvor findes brugerkonti. F.eks. <code>ou=Personer, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Hvor findes brugergrupper. F.eks. <code>ou=Grupper, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP filter der benyttes til at søge efter brugerkonti. F.eks. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP filter tder benyttes til at søge efter grupper. F.eks. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Protokol version der skal benyttes. Det er muligvis nødvendigt at sætte denne til <code>3</code>';
+$lang['starttls']              = 'Benyt TLS forbindelser?';
+$lang['binddn']                = 'DN af en valgfri <bindings-bruger, hvis ikke anonym binding er tilstrækkeligt. Fx <code>cn=admin,dc=my,dc=home</code>';
+$lang['bindpw']                = 'Kodeord til ovenstående bruger';
+$lang['userscope']             = 'Begræns søgekriterier for brugersøgning';
+$lang['groupscope']            = 'Begræns søgekriterier for gruppesøgning';
+$lang['userkey']               = 'Attribut der betegner brugernavnet; skal være i overensstemmelse med brugerfilteret.';
+$lang['groupkey']              = 'Gruppemedlemskab fra hvilken som helst brugerattribut (i stedet for standard AD-grupper), fx gruppe fra afdeling eller telefonnummer';
+$lang['modPass']               = 'Kan LDAP adgangskoden skiftes via DokuWiki?';
+$lang['debug']                 = 'Vis yderligere debug output ved fejl';
+$lang['referrals_o_-1']        = 'brug standardindstilling';
+$lang['referrals_o_0']         = 'følg ikke henvisninger';
+$lang['referrals_o_1']         = 'følg henvisninger';
diff --git a/wiki/lib/plugins/authldap/lang/de-informal/lang.php b/wiki/lib/plugins/authldap/lang/de-informal/lang.php
new file mode 100644
index 0000000..79016fe
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/de-informal/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author rnck <dokuwiki@rnck.de>
+ */
+$lang['connectfail']           = 'LDAP kann sich nicht verbinden: %s';
+$lang['domainfail']            = 'LDAP kann Deinen user dn nicht finden';
diff --git a/wiki/lib/plugins/authldap/lang/de-informal/settings.php b/wiki/lib/plugins/authldap/lang/de-informal/settings.php
new file mode 100644
index 0000000..716b92e
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/de-informal/settings.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Volker Bödker <volker@boedker.de>
+ * @author rnck <dokuwiki@rnck.de>
+ * @author F. Mueller-Donath <j.felix@mueller-donath.de>
+ */
+$lang['server']                = 'Adresse zum LDAP-Server. Entweder als Hostname (<code>localhost</code>) oder als FQDN (<code>ldap://server.tld:389</code>).';
+$lang['port']                  = 'Port des LDAP-Servers, falls kein Port angegeben wurde.';
+$lang['usertree']              = 'Zweig, in dem die die Benutzeraccounts gespeichert sind. Zum Beispiel: <code>ou=People, dc=server, dc=tld</code>.';
+$lang['grouptree']             = 'Zweig, in dem die Benutzergruppen gespeichert sind. Zum Beispiel:  <code>ou=Group, dc=server, dc=tld</code>.';
+$lang['userfilter']            = 'LDAP-Filter, um die Benutzeraccounts zu suchen. Zum Beispiel: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>.';
+$lang['groupfilter']           = 'LDAP-Filter, um die Benutzergruppen zu suchen. Zum Beispiel:  <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>.';
+$lang['version']               = 'Zu verwendende Protokollversion von LDAP.';
+$lang['starttls']              = 'Verbindung über TLS aufbauen?';
+$lang['referrals']             = 'Weiterverfolgen von LDAP-Referrals (Verweise)?';
+$lang['deref']                 = 'Wie sollen Aliasse derefernziert werden?';
+$lang['binddn']                = 'DN eines optionalen Benutzers, wenn der anonyme Zugriff nicht ausreichend ist. Zum Beispiel: <code>cn=admin, dc=my, dc=home</code>.';
+$lang['bindpw']                = 'Passwort des angegebenen Benutzers.';
+$lang['userscope']             = 'Die Suchweite nach Benutzeraccounts.';
+$lang['groupscope']            = 'Die Suchweite nach Benutzergruppen.';
+$lang['userkey']               = 'Attribut, das den Benutzernamen enthält; muss konsistent zum userfilter sein.';
+$lang['groupkey']              = 'Gruppieren der Benutzeraccounts anhand eines beliebigen Benutzerattributes z. B. Telefonnummer oder Abteilung, anstelle der Standard-Gruppen).';
+$lang['modPass']               = 'Kann das LDAP Passwort via dokuwiki geändert werden?';
+$lang['debug']                 = 'Debug-Informationen beim Auftreten von Fehlern anzeigen?';
+$lang['deref_o_0']             = 'LDAP_DEREF_NIEMALS';
+$lang['deref_o_1']             = 'LDAP_DEREF_SUCHEN';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDEN';
+$lang['deref_o_3']             = 'LDAP_DEREF_IMMER';
+$lang['referrals_o_-1']        = 'benutze die Vorgabe';
+$lang['referrals_o_0']         = 'keine Verweise erlauben';
+$lang['referrals_o_1']         = 'folge Verweisen';
diff --git a/wiki/lib/plugins/authldap/lang/de/lang.php b/wiki/lib/plugins/authldap/lang/de/lang.php
new file mode 100644
index 0000000..db6b891
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/de/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Philip Knack <p.knack@stollfuss.de>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP-Verbindung scheitert: %s';
+$lang['domainfail']            = 'LDAP kann Ihren Benutzer (DN) nicht finden';
diff --git a/wiki/lib/plugins/authldap/lang/de/settings.php b/wiki/lib/plugins/authldap/lang/de/settings.php
new file mode 100644
index 0000000..f1bfc00
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/de/settings.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author christian studer <cstuder@existenz.ch>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['server']                = 'Adresse zum LDAP-Server. Entweder als Hostname (<code>localhost</code>) oder als FQDN (<code>ldap://server.tld:389</code>).';
+$lang['port']                  = 'Port des LDAP-Servers, falls kein Port angegeben wurde.';
+$lang['usertree']              = 'Zweig, in dem die die Benutzeraccounts gespeichert sind. Zum Beispiel: <code>ou=People, dc=server, dc=tld</code>.';
+$lang['grouptree']             = 'Zweig, in dem die Benutzergruppen gespeichert sind. Zum Beispiel:  <code>ou=Group, dc=server, dc=tld</code>.';
+$lang['userfilter']            = 'LDAP-Filter, um die Benutzeraccounts zu suchen. Zum Beispiel: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>.';
+$lang['groupfilter']           = 'LDAP-Filter, um die Benutzergruppen zu suchen. Zum Beispiel:  <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>.';
+$lang['version']               = 'Zu verwendende Protokollversion von LDAP.';
+$lang['starttls']              = 'Verbindung über TLS aufbauen?';
+$lang['referrals']             = 'Weiterverfolgen von LDAP-Referrals (Verweise)?';
+$lang['deref']                 = 'Wie sollen Aliase aufgelöst werden?';
+$lang['binddn']                = 'DN eines optionalen Benutzers, wenn der anonyme Zugriff nicht ausreichend ist. Zum Beispiel: <code>cn=admin, dc=my, dc=home</code>.';
+$lang['bindpw']                = 'Passwort des angegebenen Benutzers.';
+$lang['userscope']             = 'Die Suchweite nach Benutzeraccounts.';
+$lang['groupscope']            = 'Die Suchweite nach Benutzergruppen.';
+$lang['userkey']               = 'Attribut, das den Benutzernamen enthält; muss konsistent zum userfilter sein.';
+$lang['groupkey']              = 'Gruppieren der Benutzeraccounts anhand eines beliebigen Benutzerattributes z. B. Telefonnummer oder Abteilung, anstelle der Standard-Gruppen).';
+$lang['modPass']               = 'Darf über Dokuwiki das LDAP-Passwort geändert werden?';
+$lang['debug']                 = 'Debug-Informationen beim Auftreten von Fehlern anzeigen?';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'Standard verwenden';
+$lang['referrals_o_0']         = 'Referrals nicht folgen';
+$lang['referrals_o_1']         = 'Referrals folgen';
diff --git a/wiki/lib/plugins/authldap/lang/en/lang.php b/wiki/lib/plugins/authldap/lang/en/lang.php
new file mode 100644
index 0000000..8185a84
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/en/lang.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * English language file for authldap plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail']     = 'LDAP cannot connect: %s';
+$lang['domainfail']       = 'LDAP cannot find your user dn';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authldap/lang/en/settings.php b/wiki/lib/plugins/authldap/lang/en/settings.php
new file mode 100644
index 0000000..a4194b0
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/en/settings.php
@@ -0,0 +1,29 @@
+<?php
+$lang['server']      = 'Your LDAP server. Either hostname (<code>localhost</code>) or full qualified URL (<code>ldap://server.tld:389</code>)';
+$lang['port']        = 'LDAP server port if no full URL was given above';
+$lang['usertree']    = 'Where to find the user accounts. Eg. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']   = 'Where to find the user groups. Eg. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']  = 'LDAP filter to search for user accounts. Eg. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter'] = 'LDAP filter to search for groups. Eg. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']     = 'The protocol version to use. You may need to set this to <code>3</code>';
+$lang['starttls']    = 'Use TLS connections?';
+$lang['referrals']   = 'Shall referrals be followed?';
+$lang['deref']       = 'How to dereference aliases?';
+$lang['binddn']      = 'DN of an optional bind user if anonymous bind is not sufficient. Eg. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']      = 'Password of above user';
+$lang['userscope']   = 'Limit search scope for user search';
+$lang['groupscope']  = 'Limit search scope for group search';
+$lang['userkey']     = 'Attribute denoting the username; must be consistent to userfilter.';
+$lang['groupkey']    = 'Group membership from any user attribute (instead of standard AD groups) e.g. group from department or telephone number';
+$lang['modPass']     = 'Can the LDAP password be changed via dokuwiki?';
+$lang['debug']       = 'Display additional debug information on errors';
+
+
+$lang['deref_o_0']   = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']   = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']   = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']   = 'LDAP_DEREF_ALWAYS';
+
+$lang['referrals_o_-1'] = 'use default';
+$lang['referrals_o_0']  = 'don\'t follow referrals';
+$lang['referrals_o_1']  = 'follow referrals';
\ No newline at end of file
diff --git a/wiki/lib/plugins/authldap/lang/eo/settings.php b/wiki/lib/plugins/authldap/lang/eo/settings.php
new file mode 100644
index 0000000..ca20f67
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/eo/settings.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas@yahoo.com.br>
+ */
+$lang['server']                = 'Via LDAP-servilo. Aŭ servila nomo (<code>localhost</code>) aŭ plene detala URL (<code>ldap://servilo.lando:389</code>)';
+$lang['port']                  = 'LDAP-servila pordego, se vi supre ne indikis la plenan URL';
+$lang['usertree']              = 'Kie trovi uzantajn kontojn, ekz. <code>ou=Personoj, dc=servilo, dc=lando</code>';
+$lang['grouptree']             = 'Kie trovi uzantogrupojn, ekz. <code>ou=Grupo, dc=servilo, dc=lando</code>';
+$lang['userfilter']            = 'LDAP-filtrilo por serĉi uzantokontojn, ekz. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP-filtrilo por serĉi grupojn, ekz. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'La uzenda protokolversio. Eble necesas indiki <code>3</code>';
+$lang['starttls']              = 'Ĉu uzi TLS-konektojn?';
+$lang['referrals']             = 'Ĉu sekvi referencojn?';
+$lang['deref']                 = 'Kiel dereferencigi kromnomojn?';
+$lang['binddn']                = 'DN de opcie bindita uzanto, se anonima bindado ne sufiĉas, ekz. <code>cn=admin, dc=mia, dc=hejmo</code>';
+$lang['bindpw']                = 'Pasvorto de tiu uzanto';
+$lang['userscope']             = 'Limigi serĉospacon de uzantaj serĉoj';
+$lang['groupscope']            = 'Limigi serĉospacon por grupaj serĉoj';
+$lang['groupkey']              = 'Grupa membreco de iu uzanta atributo (anstataŭ standardaj AD-grupoj), ekz. grupo de departemento aŭ telefonnumero';
+$lang['debug']                 = 'Ĉu montri aldonajn erarinformojn?';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
diff --git a/wiki/lib/plugins/authldap/lang/es/lang.php b/wiki/lib/plugins/authldap/lang/es/lang.php
new file mode 100644
index 0000000..53db676
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/es/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mauricio Segura <maose38@yahoo.es>
+ * @author David Roy <davidroyapp@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP no se puede conectar: %s';
+$lang['domainfail']            = 'LDAP no puede encontrar el DN de tu usuario';
diff --git a/wiki/lib/plugins/authldap/lang/es/settings.php b/wiki/lib/plugins/authldap/lang/es/settings.php
new file mode 100644
index 0000000..ba8f41e
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/es/settings.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Eloy <ej.perezgomez@gmail.com>
+ * @author Alejandro Nunez <nunez.alejandro@gmail.com>
+ * @author Enny Rodriguez <aquilez.4@gmail.com>
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['server']                = 'Tu servidor LDAP. Puede ser el nombre del host  (<code>localhost</code>) o una URL completa (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'Servidor LDAP en caso de que no se diera la URL completa anteriormente.';
+$lang['usertree']              = 'Donde encontrar cuentas de usuario. Ej. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Donde encontrar grupos de usuarios. Ej. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'Filtro LDAP para la busqueda de cuentas de usuario. P. E. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtro LDAP para la busqueda de grupos. P. E. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'La versión del protocolo a usar. Puede que necesites poner esto a <code>3</code>';
+$lang['starttls']              = 'Usar conexiones TLS?';
+$lang['referrals']             = '¿Deben ser seguidas las referencias?';
+$lang['deref']                 = '¿Cómo desreferenciar los alias?';
+$lang['binddn']                = 'DN de un usuario de enlace opcional si el enlace anónimo no es suficiente. P. ej. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Contraseña del usuario de arriba.';
+$lang['userscope']             = 'Limitar ámbito de búsqueda para búsqueda de usuarios';
+$lang['groupscope']            = 'Limitar ámbito de búsqueda para búsqueda de grupos';
+$lang['userkey']               = 'Atributo que denota el nombre de usuario; debe ser coherente con el filtro.';
+$lang['groupkey']              = 'Pertenencia al grupo desde cualquier atributo de usuario (en lugar de grupos AD estándar) p.e., grupo a partir departamento o número de teléfono';
+$lang['modPass']               = 'Puede ser cambiara via dokuwiki la password LDAP?';
+$lang['debug']                 = 'Mostrar información adicional para depuración de errores';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'usar default';
+$lang['referrals_o_0']         = 'no seguir referencias';
+$lang['referrals_o_1']         = 'seguir referencias';
diff --git a/wiki/lib/plugins/authldap/lang/et/settings.php b/wiki/lib/plugins/authldap/lang/et/settings.php
new file mode 100644
index 0000000..f4933b6
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/et/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Janar Leas <janar.leas@eesti.ee>
+ */
+$lang['grouptree']             = 'Kus kohast kasutaja rühmi otsida. Nt. <code>ou=Rühm, dc=server, dc=tld</code>';
+$lang['groupscope']            = 'Piiritle otsingu ulatus rühma otsinguga';
diff --git a/wiki/lib/plugins/authldap/lang/eu/lang.php b/wiki/lib/plugins/authldap/lang/eu/lang.php
new file mode 100644
index 0000000..f68b6d1
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/eu/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP ezin da konektaku: %s';
diff --git a/wiki/lib/plugins/authldap/lang/eu/settings.php b/wiki/lib/plugins/authldap/lang/eu/settings.php
new file mode 100644
index 0000000..cd3d62c
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/eu/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['version']               = 'Erabiltzen duzun proitokoloaren bertsioa. <code>3</code> gisa jarri behar zenezake';
+$lang['starttls']              = 'Erabili TLS konexioak?';
+$lang['bindpw']                = 'Goiko erabiltzailearen pasahitza';
+$lang['referrals_o_-1']        = 'erabili lehenetsitakoa';
diff --git a/wiki/lib/plugins/authldap/lang/fa/lang.php b/wiki/lib/plugins/authldap/lang/fa/lang.php
new file mode 100644
index 0000000..a4e776b
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/fa/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['connectfail']           = 'LDAP نمیتواند وصل شود: %s';
+$lang['domainfail']            = 'LDAP نمیتواند کاربر شما را پیدا کند';
diff --git a/wiki/lib/plugins/authldap/lang/fa/settings.php b/wiki/lib/plugins/authldap/lang/fa/settings.php
new file mode 100644
index 0000000..3d4f17b
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/fa/settings.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohammad Sadegh <msdn2013@gmail.com>
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ * @author sam01 <m.sajad079@gmail.com>
+ */
+$lang['server']                = 'سرور LDAP شما. چه به صورت ';
+$lang['port']                  = 'درگاه سرور LDAP اگر که URL کامل در بالا نوشته نشده';
+$lang['usertree']              = 'محل حساب‌های کاربری. برای مثال <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'محل گروه‌های کاربری. برای مثال <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'فیتلرهای LDAP برای جستجوی حساب‌های کاربری. برای مثال <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'فیلتر LDAP برای جستجوی گروه‌ها. برای مثال <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'نسخهٔ پروتوکل برای استفاده. احتمالا این را باید <code>3</code> وارد کنید.';
+$lang['starttls']              = 'از تی‌ال‌اس (TLS) استفاده می‌کنید؟';
+$lang['referrals']             = 'آیا ارجاعات باید دنبال شوند؟';
+$lang['deref']                 = 'نام‌های مستعار چطور ارجاع یابی شوند؟';
+$lang['binddn']                = ' DN برای کاربر اتصال اگر اتصال ناشناخته کافی نیست. مثال
+<code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'رمزعبور کاربر بالا';
+$lang['userscope']             = 'محدود کردن محدودهٔ جستجو به جستجوی کاربر';
+$lang['groupscope']            = 'محدود کردن محدودهٔ جستجو به جستجوی گروه';
+$lang['userkey']               = 'صفتی که نشان‌دهندهٔ نام کاربر است؛ باید با userfilter نامتناقض باشد.';
+$lang['groupkey']              = 'عضویت در گروه برمبنای هر کدام از صفات کاربر (به جای گروه‌های استاندارد AD) برای مثال گروه برمبنای دپارتمان یا شماره تلفن';
+$lang['modPass']               = 'آیا پسورد LDAP می‌تواند توسط داکو ویکی تغییر کند؟';
+$lang['debug']                 = 'نمایش اطلاعات بیشتر برای خطایابی در ارورها';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'استفاده از پیشفرض';
+$lang['referrals_o_0']         = 'ارجاعات را دنبال نکن';
+$lang['referrals_o_1']         = 'ارجاعات را دنبال کن';
diff --git a/wiki/lib/plugins/authldap/lang/fi/settings.php b/wiki/lib/plugins/authldap/lang/fi/settings.php
new file mode 100644
index 0000000..b15d8c6
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/fi/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Otto Vainio <otto@valjakko.net>
+ */
+$lang['starttls']              = 'Käytä TLS yhteyttä';
+$lang['bindpw']                = 'Ylläolevan käyttäjän salasana';
+$lang['userscope']             = 'Etsi vain käyttäjiä';
+$lang['groupscope']            = 'Etsi vain ryhmiä';
diff --git a/wiki/lib/plugins/authldap/lang/fr/lang.php b/wiki/lib/plugins/authldap/lang/fr/lang.php
new file mode 100644
index 0000000..ce26e86
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/fr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
+ */
+$lang['connectfail']           = 'LDAP ne peux se connecter : %s';
+$lang['domainfail']            = 'LDAP ne trouve pas l\'utilisateur dn';
diff --git a/wiki/lib/plugins/authldap/lang/fr/settings.php b/wiki/lib/plugins/authldap/lang/fr/settings.php
new file mode 100644
index 0000000..be36367
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/fr/settings.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ * @author schplurtz <Schplurtz@laposte.net>
+ */
+$lang['server']                = 'Votre serveur LDAP. Soit le nom d\'hôte (<code>localhost</code>) ou l\'URL complète (<code>ldap://serveur.dom:389</code>)';
+$lang['port']                  = 'Port du serveur LDAP si l\'URL complète n\'a pas été indiquée ci-dessus';
+$lang['usertree']              = 'Où trouver les comptes utilisateur. Ex.: <code>ou=Utilisateurs, dc=serveur, dc=dom</code>';
+$lang['grouptree']             = 'Où trouver les groupes d\'utilisateurs. Ex.: <code>ou=Groupes, dc=serveur, dc=dom</code>';
+$lang['userfilter']            = 'Filtre LDAP pour rechercher les comptes utilisateur. Ex.: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtre LDAP pour rechercher les groupes. Ex.: <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'La version de protocole à utiliser. Il se peut que vous deviez utiliser <code>3</code>';
+$lang['starttls']              = 'Utiliser les connexions TLS?';
+$lang['referrals']             = 'Suivre les références?';
+$lang['deref']                 = 'Comment déréférencer les alias ?';
+$lang['binddn']                = 'Nom de domaine d\'un utilisateur de connexion facultatif si une connexion anonyme n\'est pas suffisante. Ex. : <code>cn=admin, dc=mon, dc=accueil</code>';
+$lang['bindpw']                = 'Mot de passe de l\'utilisateur ci-dessus.';
+$lang['userscope']             = 'Limiter la portée de recherche d\'utilisateurs';
+$lang['groupscope']            = 'Limiter la portée de recherche de groupes';
+$lang['userkey']               = 'Attribut indiquant le nom d\'utilisateur. Doit être en accord avec le filtre d\'utilisateur.';
+$lang['groupkey']              = 'Affiliation aux groupes à partir de n\'importe quel attribut utilisateur (au lieu des groupes AD standards), p. ex. groupes par département ou numéro de téléphone';
+$lang['modPass']               = 'Peut-on changer le mot de passe LDAP depuis DokiWiki ?';
+$lang['debug']                 = 'Afficher des informations de bégogage supplémentaires pour les erreurs';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'comportement par défaut';
+$lang['referrals_o_0']         = 'ne pas suivre les références';
+$lang['referrals_o_1']         = 'suivre les références';
diff --git a/wiki/lib/plugins/authldap/lang/he/settings.php b/wiki/lib/plugins/authldap/lang/he/settings.php
new file mode 100644
index 0000000..8886446
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/he/settings.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guy Yakobovitch <guy.yakobovitch@gmail.com>
+ * @author matt carroll <matt.carroll@gmail.com>
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['starttls']              = 'השתמש בחיבורי TLS';
+$lang['bindpw']                = 'סיסמה של המשתמש לעיל';
+$lang['modPass']               = 'האם dokuwiki יכול ליצור סיסמאות LDAP?';
+$lang['debug']                 = 'הצג מידע נוסף על שגיאות';
+$lang['referrals_o_-1']        = 'ברירת מחדל';
diff --git a/wiki/lib/plugins/authldap/lang/hr/lang.php b/wiki/lib/plugins/authldap/lang/hr/lang.php
new file mode 100644
index 0000000..fb915b4
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/hr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP se ne može spojiti: %s';
+$lang['domainfail']            = 'LDAP ne može pronaći Vaš korisnički dn';
diff --git a/wiki/lib/plugins/authldap/lang/hr/settings.php b/wiki/lib/plugins/authldap/lang/hr/settings.php
new file mode 100644
index 0000000..0e5faa4
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/hr/settings.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['server']                = 'Vaš LDAP server. Upišite ili naziv računala (<code>localhost</code>) ili puni URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP server port, ako gore nije specificiran puni URL.';
+$lang['usertree']              = 'Gdje da nađem korisničke prijave. Npr. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Gdje da nađem korisničke grupe. Npr. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP filter za pretragu korisničkih prijava. Npr. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP filter za pretragu grupa. Npr. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Protokol koji se koristi. Možda će te trebati postaviti na <code>3</code>';
+$lang['starttls']              = 'Korisni TLS vezu?';
+$lang['referrals']             = 'Da li da slijedim uputnice?';
+$lang['deref']                 = 'Kako da razlikujem aliase?';
+$lang['binddn']                = 'DN opcionalnog korisnika ako anonimni korisnik nije dovoljan. Npr. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Lozinka gore navedenog korisnika';
+$lang['userscope']             = 'Ograniči područje za pretragu korisnika';
+$lang['groupscope']            = 'Ograniči područje za pretragu grupa';
+$lang['userkey']               = 'Atribut označava ime; mora biti u skladu s korisničkim filterom.';
+$lang['groupkey']              = 'Članstvo grupa iz svih atributa korisnika (umjesto standardnih AD grupa) npr. grupa iz odjela ili telefonskog broja';
+$lang['modPass']               = 'Da li LDAP lozinka može biti izmijenjena kroz dokuwiki?';
+$lang['debug']                 = 'Prikaži dodatne informacije u slučaju greške';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'koristi podrazumijevano';
+$lang['referrals_o_0']         = 'ne slijedi preporuke';
+$lang['referrals_o_1']         = 'slijedi preporuke';
diff --git a/wiki/lib/plugins/authldap/lang/hu/lang.php b/wiki/lib/plugins/authldap/lang/hu/lang.php
new file mode 100644
index 0000000..07c16f3
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/hu/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['connectfail']           = 'Az LDAP nem tudott csatlakozni: %s';
+$lang['domainfail']            = 'Az LDAP nem találta a felhasználód megkülönböztető nevét (DN)';
diff --git a/wiki/lib/plugins/authldap/lang/hu/settings.php b/wiki/lib/plugins/authldap/lang/hu/settings.php
new file mode 100644
index 0000000..364a1e9
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/hu/settings.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ * @author Marina Vladi <deldadam@gmail.com>
+ */
+$lang['server']                = 'LDAP-szerver. Kiszolgálónév (<code>localhost</code>) vagy teljes URL-cím (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP-kiszolgáló portja, ha URL-cím nem lett megadva';
+$lang['usertree']              = 'Hol találom a felhasználókat? Pl. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Hol találom a csoportokat? Pl. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP szűrő a felhasználók kereséséhez, pl. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP szűrő a csoportok kereséséhez, pl. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'A használt protokollverzió. Valószínűleg a <code>3</code> megfelelő';
+$lang['starttls']              = 'TLS használata?';
+$lang['referrals']             = 'Hivatkozások követése?';
+$lang['deref']                 = 'Hogyan fejtsük vissza az aliasokat?';
+$lang['binddn']                = 'Egy hozzáféréshez használt felhasználó DN-je, ha nincs névtelen hozzáférés. Pl. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Ehhez tartozó jelszó.';
+$lang['userscope']             = 'A keresési tartomány korlátozása erre a felhasználókra való keresésnél';
+$lang['groupscope']            = 'A keresési tartomány korlátozása erre a csoportokra való keresésnél';
+$lang['userkey']               = 'A felhasználónevet leíró attribútum; konzisztensnek kell lennie a felhasználói szűrővel (userfilter).';
+$lang['groupkey']              = 'Csoport meghatározása a következő attribútumból (az alapértelmezett AD csoporttagság helyett), pl. a szervezeti egység vagy a telefonszám';
+$lang['modPass']               = 'Az LDAP jelszó megváltoztatható a DokuWiki-n keresztül?';
+$lang['debug']                 = 'Továbi hibakeresési információk megjelenítése hiba esetén';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'alapértelmezett érték használata';
+$lang['referrals_o_0']         = 'ne kövesse az átirányításokat (referral)';
+$lang['referrals_o_1']         = 'kövesse az átirányításokat (referral)';
diff --git a/wiki/lib/plugins/authldap/lang/it/lang.php b/wiki/lib/plugins/authldap/lang/it/lang.php
new file mode 100644
index 0000000..28c4bc8
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/it/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP non è in grado di connettere: %s';
+$lang['domainfail']            = 'LDAP non è in grado di trovare il tuo DN utente';
diff --git a/wiki/lib/plugins/authldap/lang/it/settings.php b/wiki/lib/plugins/authldap/lang/it/settings.php
new file mode 100644
index 0000000..862aa0f
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/it/settings.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Edmondo Di Tucci <snarchio@gmail.com>
+ * @author Claudio Lanconelli <lancos@libero.it>
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['server']                = 'Il tuo server LDAP. Inserire o l\'hostname (<code>localhost</code>) oppure un URL completo (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'Porta del server LDAP se non è stato fornito un URL completo più sopra.';
+$lang['usertree']              = 'Dove cercare l\'account utente. Eg. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Dove cercare i gruppi utente. Eg. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'Filtro per cercare l\'account utente LDAP. Eg. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtro per cercare i gruppi LDAP. Eg. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Versione protocollo da usare. Pu<code>3</code>';
+$lang['starttls']              = 'Usare la connessione TSL?';
+$lang['referrals']             = 'Possono i reindirizzamenti essere seguiti?';
+$lang['deref']                 = 'Come differenziare un alias?';
+$lang['binddn']                = 'DN di un utente bind opzionale se un bind anonimo non è sufficiente. E.g. <code>cn=admin, dc=casa, dc=mia</code>';
+$lang['bindpw']                = 'Password del utente di cui sopra';
+$lang['userscope']             = 'Limita il contesto di ricerca per la ricerca degli utenti';
+$lang['groupscope']            = 'Limita il contesto di ricerca per la ricerca dei gruppi';
+$lang['userkey']               = 'Attributo indicante il nome utente; deve essere consistente con il filtro utente.';
+$lang['groupkey']              = 'Gruppo di appartenenza sulla base di qualunque attributo utente (invece di gruppo AD standard) e.g. gruppo in base al dipartimento o al numero di telefono';
+$lang['modPass']               = 'Può la password LDAP essere cambiata attraverso DokuWiki?';
+$lang['debug']                 = 'In caso di errori mostra ulteriori informazioni di debug';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'usa default';
+$lang['referrals_o_0']         = 'non seguire i reindirizzamenti';
+$lang['referrals_o_1']         = 'segui i reindirizzamenti';
diff --git a/wiki/lib/plugins/authldap/lang/ja/lang.php b/wiki/lib/plugins/authldap/lang/ja/lang.php
new file mode 100644
index 0000000..c602b43
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ja/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['connectfail']           = 'LDAP に接続できません: %s';
+$lang['domainfail']            = 'LDAP で user dn を発見できません。';
diff --git a/wiki/lib/plugins/authldap/lang/ja/settings.php b/wiki/lib/plugins/authldap/lang/ja/settings.php
new file mode 100644
index 0000000..fd7ad76
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ja/settings.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Hideaki SAWADA <sawadakun@live.jp>
+ * @author Hideaki SAWADA <chuno@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ */
+$lang['server']                = 'LDAPサーバー。ホスト名(<code>localhost</code>)又は完全修飾URL(<code>ldap://server.tld:389</code>)';
+$lang['port']                  = '上記が完全修飾URLでない場合、LDAPサーバーポート';
+$lang['usertree']              = 'ユーザーアカウントを探す場所。例:<code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'ユーザーグループを探す場所。例:<code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'ユーザーアカウントを探すためのLDAP抽出条件。例:<code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'グループを探すLDAP抽出条件。例:<code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = '使用するプロトコルのバージョン。<code>3</code>を設定する必要がある場合があります。';
+$lang['starttls']              = 'TLS接続を使用しますか?';
+$lang['referrals']             = '紹介に従いますか?';
+$lang['deref']                 = 'どのように間接参照のエイリアスにしますか?';
+$lang['binddn']                = '匿名バインドでは不十分な場合、オプションバインドユーザーのDN。例:<code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = '上記ユーザーのパスワード';
+$lang['userscope']             = 'ユーザー検索の範囲を限定させる';
+$lang['groupscope']            = 'グループ検索の範囲を限定させる';
+$lang['userkey']               = 'ユーザー名を示す属性。userfilter と一致している必要があります。';
+$lang['groupkey']              = 'ユーザー属性をグループのメンバーシップから設定します(代わりに標準のADグループ)。
+例えば、部署や電話番号などです。';
+$lang['modPass']               = 'DokuWiki から LDAP パスワードの変更が可能?';
+$lang['debug']                 = 'エラーに関して追加のデバッグ情報を表示する。';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'デフォルトを使用する';
+$lang['referrals_o_0']         = 'referral に従わない';
+$lang['referrals_o_1']         = 'referral に従う';
diff --git a/wiki/lib/plugins/authldap/lang/ko/lang.php b/wiki/lib/plugins/authldap/lang/ko/lang.php
new file mode 100644
index 0000000..1e1bef4
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ko/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP가 연결할 수 없습니다: %s';
+$lang['domainfail']            = 'LDAP가 사용자 DN을 찾을 수 없습니다';
diff --git a/wiki/lib/plugins/authldap/lang/ko/settings.php b/wiki/lib/plugins/authldap/lang/ko/settings.php
new file mode 100644
index 0000000..b988436
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ko/settings.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['server']                = 'LDAP 서버. 호스트 이름(<code>localhost</code>)이나 전체 자격 URL(<code>ldap://server.tld:389</code>) 중 하나';
+$lang['port']                  = '위에 주어진 전체 URL이 없을 때의 LDAP 서버 포트';
+$lang['usertree']              = '사용자 계정을 찾을 장소. 예를 들어 <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = '사용자 그룹을 찾을 장소. 예를 들어 <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = '사용자 계정을 찾을 LDAP 필터. 예를 들어 <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = '그룹을 찾을 LDAP 필터. 예를 들어 <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = '사용할 프로토콜 버전. <code>3</code>으로 설정해야 할 수도 있습니다';
+$lang['starttls']              = 'TLS 연결을 사용하겠습니까?';
+$lang['referrals']             = '참조(referrals)를 허용하겠습니까? ';
+$lang['deref']                 = '어떻게 별명을 간접 참조하겠습니까?';
+$lang['binddn']                = '익명 바인드가 충분하지 않으면 선택적인 바인드 사용자의 DN. 예를 들어 <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = '위 사용자의 비밀번호';
+$lang['userscope']             = '사용자 검색에 대한 검색 범위 제한';
+$lang['groupscope']            = '그룹 검색에 대한 검색 범위 제한';
+$lang['userkey']               = '사용자 이름을 나타내는 특성; 사용자 필터에 일관성이 있어야 합니다.';
+$lang['groupkey']              = '(표준 AD 그룹 대신) 사용자 속성에서 그룹 구성원. 예를 들어 부서나 전화에서 그룹';
+$lang['modPass']               = 'LDAP 비밀번호를 도쿠위키를 통해 바꿀 수 있습니까?';
+$lang['debug']                 = '오류에 대한 추가적인 디버그 정보를 보이기';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = '기본값 사용';
+$lang['referrals_o_0']         = '참조 (referral)를 따르지 않음';
+$lang['referrals_o_1']         = '참조 (referral)를 따름';
diff --git a/wiki/lib/plugins/authldap/lang/lv/settings.php b/wiki/lib/plugins/authldap/lang/lv/settings.php
new file mode 100644
index 0000000..9ffb4e8
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/lv/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['starttls']              = 'Lietot TLS  savienojumus?';
+$lang['bindpw']                = 'Lietotāja parole';
diff --git a/wiki/lib/plugins/authldap/lang/nl/lang.php b/wiki/lib/plugins/authldap/lang/nl/lang.php
new file mode 100644
index 0000000..fab4870
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/nl/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['connectfail']           = 'LDAP kan niet connecteren: %s';
+$lang['domainfail']            = 'LDAP kan je gebruikers dn niet vinden';
diff --git a/wiki/lib/plugins/authldap/lang/nl/settings.php b/wiki/lib/plugins/authldap/lang/nl/settings.php
new file mode 100644
index 0000000..1f80b02
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/nl/settings.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Remon <no@email.local>
+ * @author Johan Wijnker <johan@wijnker.eu>
+ */
+$lang['server']                = 'Je LDAP server. Of de servernaam (<code>localhost</code>) of de volledige URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP server poort als bij de entry hierboven geen volledige URL is opgegeven';
+$lang['usertree']              = 'Locatie van de gebruikersaccounts. Bijv. <code>ou=Personen,dc=server,dc=tld</code>';
+$lang['grouptree']             = 'Locatie van de gebruikersgroepen. Bijv. <code>ou=Group,dc=server,dc=tld</code>';
+$lang['userfilter']            = 'LDAP gebruikersfilter. Bijv. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP groepsfilter. Bijv. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Te gebruiken protocolversie. Mogelijk dat dit ingesteld moet worden op <code>3</code>';
+$lang['starttls']              = 'Gebruik maken van TLS verbindingen?';
+$lang['referrals']             = 'Moeten verwijzingen worden gevolgd?';
+$lang['deref']                 = 'Hoe moeten de verwijzing van aliases worden bepaald?';
+$lang['binddn']                = 'DN van een optionele bind gebruiker als anonieme bind niet genoeg is. Bijv. <code>cn=beheer, dc=mijn, dc=thuis</code>';
+$lang['bindpw']                = 'Wachtwoord van bovenstaande gebruiker';
+$lang['userscope']             = 'Beperken scope van zoekfuncties voor gebruikers';
+$lang['groupscope']            = 'Beperken scope van zoekfuncties voor groepen';
+$lang['userkey']               = 'Attribuut aanduiding van de gebruikersnaam; moet consistent zijn met userfilter.';
+$lang['groupkey']              = 'Groepslidmaatschap van enig gebruikersattribuut (in plaats van standaard AD groepen), bijv. groep van afdeling of telefoonnummer';
+$lang['modPass']               = 'Kan het LDAP wachtwoord worden gewijzigd met DokuWiki?';
+$lang['debug']                 = 'Tonen van aanvullende debuginformatie bij fouten';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'gebruik standaard';
+$lang['referrals_o_0']         = 'volg verwijzing niet';
+$lang['referrals_o_1']         = 'volg verwijzing';
diff --git a/wiki/lib/plugins/authldap/lang/no/lang.php b/wiki/lib/plugins/authldap/lang/no/lang.php
new file mode 100644
index 0000000..72c0c6e
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/no/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['connectfail']           = 'LDAP klarte ikke koble til: %s';
+$lang['domainfail']            = 'LDAP greide ikke finne din bruker-dn (dist.name)';
diff --git a/wiki/lib/plugins/authldap/lang/no/settings.php b/wiki/lib/plugins/authldap/lang/no/settings.php
new file mode 100644
index 0000000..3e320bd
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/no/settings.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['server']                = 'Din LDAP-server. Enten  vertsnavnet (<code>localhost</code>) eller hele URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP serverport dersom ingen full URL var gitt over.';
+$lang['usertree']              = 'Hvor en kan finne brukerkontoer. F.eks. Eg. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Hvor en kan finne brukergrupper. F.eks. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP-filter for å søke etter brukerkontoer. F.eks. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP-filter for å søke etter grupper. F.eks.. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Protokollversjonen som skal brukes. Mulig du må sette denne til <code>3</code>';
+$lang['starttls']              = 'Bruke TLS-forbindelser?';
+$lang['referrals']             = 'Skal pekere som henviser til noe følges?';
+$lang['deref']                 = 'Hvordan finne hva aliaser refererer til?';
+$lang['binddn']                = 'DN (Distinguished Name) til en valgfri bind-bruker, angis dersom annonym bind ikke er tilstrekkelig. f.eks.. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Passord til brukeren over';
+$lang['userscope']             = 'Begrens søk til brukere';
+$lang['groupscope']            = 'Begrens søk til grupper';
+$lang['userkey']               = 'Attributt som angir brukernavn; må være konsistent for brukerfiltrering.';
+$lang['groupkey']              = 'Gruppemedlemskap fra brukerattributt (i stedet for standard AD-grupper) f.eks gruppe fra avdeling, eller telefonnummer';
+$lang['modPass']               = 'Kan LDAP-passordet endres via DokuWiki?';
+$lang['debug']                 = 'Ved feil, vis tilleggsinformasjon for feilsøking';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'bruk standard';
+$lang['referrals_o_0']         = 'ikke følg referanser';
+$lang['referrals_o_1']         = 'følg referanser';
diff --git a/wiki/lib/plugins/authldap/lang/pl/lang.php b/wiki/lib/plugins/authldap/lang/pl/lang.php
new file mode 100644
index 0000000..a93252c
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/pl/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ */
+$lang['connectfail']           = 'LDAP nie może się połączyć: %s';
+$lang['domainfail']            = 'LDAP nie może znaleźć DN użytkownika';
diff --git a/wiki/lib/plugins/authldap/lang/pl/settings.php b/wiki/lib/plugins/authldap/lang/pl/settings.php
new file mode 100644
index 0000000..7181885
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/pl/settings.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Paweł Jan Czochański <czochanski@gmail.com>
+ * @author Maciej Helt <geraldziu@gmail.com>
+ */
+$lang['server']                = 'Twój serwer LDAP. Podaj nazwę hosta (<code>localhost</code>) albo pełen adres URL (<code>ldap://server.tld:389</code>).';
+$lang['port']                  = 'Port serwera LDAP jeżeli nie podano pełnego adresu URL wyżej.';
+$lang['usertree']              = 'Gdzie szukać kont użytkownika? np. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Gdzie szukać grup użytkowników? np. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'Filtr LDAP wykorzystany przy szukaniu kont użytkowników np. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtr LDAP wykorzystany przy szukaniu grup użytkowników np. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Wykorzystywana wersja protokołu. Być może konieczne jest ustawienie tego na <code>3</code>.';
+$lang['starttls']              = 'Użyć połączeń TLS?';
+$lang['referrals']             = 'Czy należy podążać za przekierowaniami?';
+$lang['deref']                 = 'Jak rozwiązywać aliasy?';
+$lang['binddn']                = 'DN opcjonalnego użytkownika powiązanego, jeśli powiązanie anonimowe nie jest wystarczające, np. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Hasło powyższego użytkownika';
+$lang['userscope']             = 'Ogranicz zakres wyszukiwania do wyszukiwania użytkowników';
+$lang['groupscope']            = 'Ogranicz zakres wyszukiwania do wyszukiwania grup użytkowników';
+$lang['userkey']               = 'Atrybut opisujący nazwę użytkownika; musi być zgodny z filtrem użytkownika.';
+$lang['groupkey']              = 'Przynależność do grupy z dowolnego atrybutu użytkownika (zamiast standardowych grup AD), np. grupa z działu lub numer telefonu';
+$lang['modPass']               = 'Czy hasło LDAP można zmienić za pomocą dokuwiki?';
+$lang['debug']                 = 'Przy błędach wyświetl dodatkowe informacje debugujące.';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'użyj domyślnej wartości';
+$lang['referrals_o_0']         = 'nie podążaj za przekierowaniami';
+$lang['referrals_o_1']         = 'podążaj za przekierowaniami';
diff --git a/wiki/lib/plugins/authldap/lang/pt-br/lang.php b/wiki/lib/plugins/authldap/lang/pt-br/lang.php
new file mode 100644
index 0000000..63e276a
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/pt-br/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['connectfail']           = 'Não foi possível conectar ao LDAP: %s';
+$lang['domainfail']            = 'Não foi possível encontrar o seu user dn no LDAP';
diff --git a/wiki/lib/plugins/authldap/lang/pt-br/settings.php b/wiki/lib/plugins/authldap/lang/pt-br/settings.php
new file mode 100644
index 0000000..03469e5
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/pt-br/settings.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Victor Westmann <victor.westmann@gmail.com>
+ * @author Frederico Guimarães <frederico@teia.bio.br>
+ * @author Hudson FAS <hudsonfas@gmail.com>
+ */
+$lang['server']                = 'Seu servidor LDAP. Ou hostname (<code>localhost</code>) ou uma URL completa (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'Porta LDAP do servidor se nenhuma URL completa tiver sido fornecida acima';
+$lang['usertree']              = 'Onde encontrar as contas de usuários. Eg. <code>ou=Pessoas, dc=servidor, dc=tld</code>';
+$lang['grouptree']             = 'Onde encontrar os grupos de usuários. Eg. <code>ou=Pessoas, dc=servidor, dc=tld</code>';
+$lang['userfilter']            = 'Filtro LDAP para pesquisar por contas de usuários. Ex. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtro LDAP para pesquisar por grupos. Ex. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'A versão do protocolo para usar. Você talvez deva definir isto para <code>3</code>';
+$lang['starttls']              = 'Usar conexões TLS?';
+$lang['referrals']             = 'Permitir que as referências sejam seguidas?';
+$lang['deref']                 = 'Como dereferenciar os aliases?';
+$lang['binddn']                = 'DN de um vínculo opcional de usuário se vínculo anônimo não for suficiente. Eg. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Senha do usuário acima';
+$lang['userscope']             = 'Limitar escopo da busca para busca de usuário';
+$lang['groupscope']            = 'Limitar escopo da busca para busca de grupo';
+$lang['userkey']               = 'Atributo que indica o nome do usuário; deve ser consistente com userfilter.';
+$lang['groupkey']              = 'Membro de grupo vem de qualquer atributo do usuário (ao invés de grupos padrões AD) e.g. departamento de grupo ou número de telefone';
+$lang['modPass']               = 'A senha LDAP pode ser alterada pelo dokuwiki ?';
+$lang['debug']                 = 'Mostrar informações adicionais de depuração em erros';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'use o padr&atilde;o';
+$lang['referrals_o_0']         = 'não seguem refer&ecirc;ncias';
+$lang['referrals_o_1']         = 'seguem refer&ecirc;ncias';
diff --git a/wiki/lib/plugins/authldap/lang/pt/lang.php b/wiki/lib/plugins/authldap/lang/pt/lang.php
new file mode 100644
index 0000000..7314d12
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/pt/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['connectfail']           = 'Não foi possível conectar o LDAP: %s';
+$lang['domainfail']            = 'O LDAP não encontrou seu usuário';
diff --git a/wiki/lib/plugins/authldap/lang/pt/settings.php b/wiki/lib/plugins/authldap/lang/pt/settings.php
new file mode 100644
index 0000000..ff308c6
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/pt/settings.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author André Neves <drakferion@gmail.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Romulo Pereira <romuloccomp@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['server']                = 'O seu servidor de LDAP. Ou hostname (<code>localhost</code>) ou URL qualificado completo (<code>ldap://servidor.tld:389</code>)';
+$lang['port']                  = 'Porta de servidor de LDAP se o URL completo não foi fornecido acima';
+$lang['usertree']              = 'Onde encontrar as contas de utilizador. Por exemplo <code>ou=Pessoas, dc=servidor, dc=tld</code>';
+$lang['grouptree']             = 'Onde encontrar os grupos de utilizadores. Por exemplo code>ou=Grupo, dc=servidor, dc=tld</code>';
+$lang['userfilter']            = 'Filtro LDAP para procurar por contas de utilizador. Por exemplo <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'Filtro LDAP para procurar por grupos. Por exemplo <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'A versão do protocolo a utilizar. Pode precisar de alterar isto para <code>3</code>';
+$lang['starttls']              = 'Usar ligações TLS?';
+$lang['referrals']             = 'Referrals devem ser seguidos?';
+$lang['deref']                 = 'Como desreferenciar aliases?';
+$lang['binddn']                = 'DN de um usuário de ligação opcional, quando a ligação é anônima não é suficiente. Eg. <code> cn = admin, dc = my, dc = home </code>';
+$lang['bindpw']                = 'Senha do utilizador acima';
+$lang['userscope']             = 'Escopo de pesquisa Limite para pesquisa de usuário';
+$lang['groupscope']            = 'Escopo de pesquisa Limite para pesquisa de grupo';
+$lang['groupkey']              = 'A participação no grupo a partir de qualquer atributo de usuário (em vez de AD padrão de grupos) exemplo: grupo de departamento ou número de telefone';
+$lang['modPass']               = 'Sua senha LDAP pode ser alterada via dokuwiki?';
+$lang['debug']                 = 'Mostrar informação adicional de debug aquando de erros';
+$lang['deref_o_0']             = 'LDAP_DEREF_NUNCA';
+$lang['deref_o_1']             = 'LDAP_DEREF_PESQUISANDO';
+$lang['deref_o_2']             = 'LDAP_DEREF_BUSCANDO';
+$lang['deref_o_3']             = 'LDAP_DEREF_SEMPRE';
+$lang['referrals_o_-1']        = 'usar padrão';
+$lang['referrals_o_0']         = 'não seguir as referências';
+$lang['referrals_o_1']         = 'seguir as referências';
diff --git a/wiki/lib/plugins/authldap/lang/ru/lang.php b/wiki/lib/plugins/authldap/lang/ru/lang.php
new file mode 100644
index 0000000..1a90899
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ru/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Takumo <9206984@mail.ru>
+ */
+$lang['connectfail']           = 'Ошибка соединения LDAP с %s';
+$lang['domainfail']            = 'Не найдено имя пользователя LDAP (dn)';
diff --git a/wiki/lib/plugins/authldap/lang/ru/settings.php b/wiki/lib/plugins/authldap/lang/ru/settings.php
new file mode 100644
index 0000000..916d9a2
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/ru/settings.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Erli Moen <evseev.jr@gmail.com>
+ * @author Владимир <id37736@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author Alex P <alexander@lanos.co.uk>
+ */
+$lang['server']                = 'Ваш LDAP-сервер. Либо имя хоста (<code>localhost</code>), либо полный URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'Порт LDAP-сервера, если выше не был указан полный URL';
+$lang['usertree']              = 'Где искать аккаунты пользователей? Например: <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Где искать группы пользователей? Например: <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP-фильтр для поиска аккаунтов пользователей. Например: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP-фильтр для поиска групп. Например: <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Версия протокола. Возможно, вам нужно указать <code>3</code>';
+$lang['starttls']              = 'Использовать TLS-подключения?';
+$lang['referrals']             = 'Следовать за referrals?';
+$lang['deref']                 = 'Как расшифровывать псевдонимы?';
+$lang['binddn']                = 'DN вторичного bind-пользователя, если anonymous bind недостаточно. Например: <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Пароль для указанного пользователя';
+$lang['userscope']             = 'Ограничить область поиска при поиске пользователей';
+$lang['groupscope']            = 'Ограничить область поиска при поиске групп';
+$lang['userkey']               = 'Атрибут означающий имя пользователя; должен быть таким же как в userfilter';
+$lang['groupkey']              = 'Использовать любой атрибут пользователя для включения в группу (вместо стандартного AD groups) Например из атрибута department или telephone number';
+$lang['modPass']               = 'Может ли пароль LDAP быть изменён через «Докувики»?';
+$lang['debug']                 = 'Показывать дополнительную отладочную информацию при ошибках';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = 'исользовать по умолчанию';
+$lang['referrals_o_0']         = 'не следовать за referrals';
+$lang['referrals_o_1']         = 'следовать за referrals';
diff --git a/wiki/lib/plugins/authldap/lang/sk/lang.php b/wiki/lib/plugins/authldap/lang/sk/lang.php
new file mode 100644
index 0000000..1cca469
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sk/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP sa nemôže pripojiť: %s';
+$lang['domainfail']            = 'LDAP nemôže nájsť vaše meno (user dn)';
diff --git a/wiki/lib/plugins/authldap/lang/sk/settings.php b/wiki/lib/plugins/authldap/lang/sk/settings.php
new file mode 100644
index 0000000..2d45c92
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sk/settings.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['server']                = 'LDAP server. Adresa (<code>localhost</code>) alebo úplné URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'Port LDAP servera, ak nebolo vyššie zadané úplné URL';
+$lang['usertree']              = 'Umiestnenie účtov používateľov. Napr. <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Umiestnenie skupín používateľov. Napr. <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP filter pre vyhľadávanie používateľských účtov. Napr. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP filter pre vyhľadávanie skupín. Napr. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Použitá verzia protokolu. Možno bude potrebné nastaviť na hodnotu <code>3</code>';
+$lang['starttls']              = 'Použiť TLS pripojenie?';
+$lang['referrals']             = 'Majú byť nasledované odkazy na používateľov (referrals)?';
+$lang['deref']                 = 'Ako previesť aliasy?';
+$lang['binddn']                = 'DN prípadného priradenia používateľa, ak anonymné priradenie nie je dostatočné. Napr. <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = 'Heslo vyššie uvedeného používateľa';
+$lang['userscope']             = 'Obmedzenie oblasti pri vyhľadávaní používateľa';
+$lang['groupscope']            = 'Obmedzenie oblasti pri vyhľadávaní skupiny';
+$lang['userkey']               = 'Atribút označujúci meno používateľa, musí byt konzistentný s používateľským filtrom.';
+$lang['groupkey']              = 'Príslušnost k skupine určená z daného atribútu používateľa (namiesto štandardnej AD skupiny) napr. skupiny podľa oddelenia alebo telefónneho čísla';
+$lang['modPass']               = 'Môže byť LDAP heslo zmenené prostredníctvom dokuwiki?';
+$lang['debug']                 = 'Zobraziť dodatočné ladiace informácie pri chybe';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
diff --git a/wiki/lib/plugins/authldap/lang/sl/settings.php b/wiki/lib/plugins/authldap/lang/sl/settings.php
new file mode 100644
index 0000000..1711520
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sl/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author matej <mateju@svn.gnome.org>
+ * @author Jernej Vidmar <jernej.vidmar@vidmarboehm.com>
+ */
+$lang['starttls']              = 'Ali naj se uporabijo povezave TLS?';
+$lang['bindpw']                = 'Geslo uporabnika zgoraj';
diff --git a/wiki/lib/plugins/authldap/lang/sr/lang.php b/wiki/lib/plugins/authldap/lang/sr/lang.php
new file mode 100644
index 0000000..9b78602
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['connectfail']           = 'LDAP - немогуће повезивање: %s';
+$lang['domainfail']            = 'LDAP - не могу наћи ваш кориснички dn';
diff --git a/wiki/lib/plugins/authldap/lang/sr/settings.php b/wiki/lib/plugins/authldap/lang/sr/settings.php
new file mode 100644
index 0000000..3aec5c3
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sr/settings.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['starttls']              = 'Користити TLS везе?';
+$lang['referrals']             = 'Да ли треба пратити реферале?';
+$lang['bindpw']                = 'Лозинка корисника изнад';
+$lang['userscope']             = 'Ограничи опсег претраживања за корисничке претраге';
+$lang['groupscope']            = 'Ограничи опсег претраживања за групне претраге';
+$lang['modPass']               = 'Омогућити измену LDAP лозинке преко докувикија?';
+$lang['debug']                 = 'Прикажи додатне податке за поправљање грешака приликом настанка грешака';
+$lang['referrals_o_-1']        = 'користи подразумевано';
+$lang['referrals_o_0']         = 'не прати реферале';
+$lang['referrals_o_1']         = 'прати реферале';
diff --git a/wiki/lib/plugins/authldap/lang/sv/lang.php b/wiki/lib/plugins/authldap/lang/sv/lang.php
new file mode 100644
index 0000000..cdc6c33
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sv/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ */
+$lang['connectfail']           = 'LDAP kan inte ansluta: %s';
+$lang['domainfail']            = 'LDAP kan inte hitta din användar-dn';
diff --git a/wiki/lib/plugins/authldap/lang/sv/settings.php b/wiki/lib/plugins/authldap/lang/sv/settings.php
new file mode 100644
index 0000000..07fc574
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/sv/settings.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ * @author Smorkster Andersson smorkster@gmail.com
+ */
+$lang['server']                = 'Din LDAO server. Antingen värdnamn (<code>localhost</code>) eller giltig full URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP server port, om det inte angavs full URL ovan';
+$lang['usertree']              = 'Specificera var användarkonton finns. T.ex. <code>ou=Användare, dc=server, dc=tld</code>';
+$lang['grouptree']             = 'Specificera var grupper finns. T.ex. <code>ou=Grupp, dc=server, dc=tld</code>';
+$lang['userfilter']            = 'LDAP filter för att söka efter användarkonton. T.ex. <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = 'LDAP filter för att söka efter grupper. T.ex. <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = 'Version av protokoll att använda. Du kan behöva sätta detta till <code>3</code>';
+$lang['starttls']              = 'Använd TLS-anslutningar';
+$lang['bindpw']                = 'Lösenord för användare ovan';
+$lang['userscope']             = 'Begränsa sökomfattning för användarsökning';
+$lang['groupscope']            = 'Begränsa sökomfattning för gruppsökning';
+$lang['groupkey']              = 'Gruppmedlemskap från något användarattribut (istället för standard AD grupp) t.ex. grupp från avdelning eller telefonnummer';
+$lang['modPass']               = 'Får LDAP-lösenordet ändras via DokuWiki?';
+$lang['debug']                 = 'Visa ytterligare felsökningsinformation vid fel';
+$lang['referrals_o_-1']        = 'använd standard';
diff --git a/wiki/lib/plugins/authldap/lang/tr/settings.php b/wiki/lib/plugins/authldap/lang/tr/settings.php
new file mode 100644
index 0000000..843b7ef
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/tr/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author ilker rifat kapaç <irifat@gmail.com>
+ */
+$lang['bindpw']                = 'Üstteki kullanıcının şifresi';
diff --git a/wiki/lib/plugins/authldap/lang/uk/lang.php b/wiki/lib/plugins/authldap/lang/uk/lang.php
new file mode 100644
index 0000000..9043121
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/uk/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oleksii <alexey.furashev@gmail.com>
+ * @author Nina Zolotova <nina-z@i.ua>
+ */
+$lang['connectfail']           = 'LDAP не може встановити з\'єднання: %s';
+$lang['domainfail']            = 'LDAP не знайшов Ваш dn';
diff --git a/wiki/lib/plugins/authldap/lang/uk/settings.php b/wiki/lib/plugins/authldap/lang/uk/settings.php
new file mode 100644
index 0000000..2ae728b
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/uk/settings.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oleksii <alexey.furashev@gmail.com>
+ * @author Nina Zolotova <nina-z@i.ua>
+ */
+$lang['userfilter']            = 'Фільтр LDAP для відображення облікових записів. Щось на зразок <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['version']               = 'Використовувати версію протоколу. Можливо Вам доведеться вказати <code>3</code>.';
+$lang['starttls']              = 'Використовуєте TLS з\'єднання?';
+$lang['referrals']             = 'Слід підтримувати перепосилання?';
+$lang['deref']                 = 'Як скинути псевдоніми?';
+$lang['bindpw']                = 'Пароль вказаного користувача';
+$lang['userscope']             = 'Обмежити область пошуку користувачів';
+$lang['groupscope']            = 'Обмежити коло пошуку для групового запиту';
+$lang['userkey']               = 'Атрибут, який визначає ім\'я користувача, має бути узгодженим із правилами користувацьких фільтрів.';
+$lang['modPass']               = 'Можете змінити пароль в LDAP через DokuWiki?';
+$lang['debug']                 = 'Показати додаткову інформацію про помилки';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['referrals_o_-1']        = 'Використовувати за замовчуванням';
diff --git a/wiki/lib/plugins/authldap/lang/zh-tw/settings.php b/wiki/lib/plugins/authldap/lang/zh-tw/settings.php
new file mode 100644
index 0000000..cb0bb71
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/zh-tw/settings.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author syaoranhinata@gmail.com
+ */
+$lang['server']                = '您的 LDAP 伺服器。填寫主機名稱 (<code>localhost</code>) 或完整的 URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP 伺服器端口 (若上方沒填寫完整的 URL)';
+$lang['usertree']              = '到哪裏尋找使用者帳號?如: <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = '到哪裏尋找使用者群組?如: <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = '用於搜索使用者賬號的 LDAP 篩選器。如: <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = '用於搜索群組的 LDAP 篩選器。例如 <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = '使用的通訊協定版本。您可能要設置為 <code>3</code>';
+$lang['starttls']              = '使用 TLS 連接嗎?';
+$lang['referrals']             = '是否允許引用 (referrals)?';
+$lang['binddn']                = '非必要綁定使用者 (optional bind user) 的 DN (匿名綁定不能滿足要求時使用)。如: <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = '上述使用者的密碼';
+$lang['userscope']             = '限制使用者搜索的範圍';
+$lang['groupscope']            = '限制群組搜索的範圍';
+$lang['groupkey']              = '以其他使用者屬性 (而非標準 AD 群組) 來把使用者分組,例如以部門或電話號碼分類';
+$lang['debug']                 = '有錯誤時,顯示額外除錯資訊';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
diff --git a/wiki/lib/plugins/authldap/lang/zh/lang.php b/wiki/lib/plugins/authldap/lang/zh/lang.php
new file mode 100644
index 0000000..c736056
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/zh/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Errol <errol@hotmail.com>
+ */
+$lang['connectfail']           = 'LDAP 无法连接: %s';
+$lang['domainfail']            = 'LDAP 无法找到你的用户 dn';
diff --git a/wiki/lib/plugins/authldap/lang/zh/settings.php b/wiki/lib/plugins/authldap/lang/zh/settings.php
new file mode 100644
index 0000000..f3c2103
--- /dev/null
+++ b/wiki/lib/plugins/authldap/lang/zh/settings.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ * @author oott123 <ip.192.168.1.1@qq.com>
+ * @author Errol <errol@hotmail.com>
+ * @author phy25 <git@phy25.com>
+ */
+$lang['server']                = '您的 LDAP 服务器。填写主机名 (<code>localhost</code>) 或者完整的 URL (<code>ldap://server.tld:389</code>)';
+$lang['port']                  = 'LDAP 服务器端口 (如果上面没有给出完整的 URL)';
+$lang['usertree']              = '在何处查找用户账户。例如 <code>ou=People, dc=server, dc=tld</code>';
+$lang['grouptree']             = '在何处查找用户组。例如 <code>ou=Group, dc=server, dc=tld</code>';
+$lang['userfilter']            = '用于搜索用户账户的 LDAP 筛选器。例如 <code>(&amp;(uid=%{user})(objectClass=posixAccount))</code>';
+$lang['groupfilter']           = '用于搜索组的 LDAP 筛选器。例如 <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
+$lang['version']               = '使用的协议版本。您或许需要设置为 <code>3</code>';
+$lang['starttls']              = '使用 TLS 连接?';
+$lang['referrals']             = '是否允许引用 (referrals)?';
+$lang['deref']                 = '如何间接引用别名?';
+$lang['binddn']                = '一个可选的绑定用户的 DN (如果匿名绑定不满足要求)。例如 <code>cn=admin, dc=my, dc=home</code>';
+$lang['bindpw']                = '上述用户的密码';
+$lang['userscope']             = '限制用户搜索的范围';
+$lang['groupscope']            = '限制组搜索的范围';
+$lang['userkey']               = '表示用户名的属性;必须和用户过滤器保持一致。';
+$lang['groupkey']              = '根据任何用户属性得来的组成员(而不是标准的 AD 组),例如根据部门或者电话号码得到的组。';
+$lang['modPass']               = ' LDAP密码可以通过 DokuWiki 修改吗?';
+$lang['debug']                 = '有错误时显示额外的调试信息';
+$lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
+$lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
+$lang['deref_o_2']             = 'LDAP_DEREF_FINDING';
+$lang['deref_o_3']             = 'LDAP_DEREF_ALWAYS';
+$lang['referrals_o_-1']        = '默认';
+$lang['referrals_o_0']         = '不要跟随参照(referral)';
+$lang['referrals_o_1']         = '跟随参照(referral)';
diff --git a/wiki/lib/plugins/authldap/plugin.info.txt b/wiki/lib/plugins/authldap/plugin.info.txt
new file mode 100644
index 0000000..e0c6144
--- /dev/null
+++ b/wiki/lib/plugins/authldap/plugin.info.txt
@@ -0,0 +1,7 @@
+base   authldap
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-13
+name   LDAP Auth Plugin
+desc   Provides user authentication against an LDAP server
+url    http://www.dokuwiki.org/plugin:authldap