about summary refs log tree commit diff stats
path: root/wiki/lib/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'wiki/lib/plugins')
-rw-r--r--wiki/lib/plugins/acl/action.php88
-rw-r--r--wiki/lib/plugins/acl/admin.php815
-rw-r--r--wiki/lib/plugins/acl/admin.svg1
-rw-r--r--wiki/lib/plugins/acl/lang/af/lang.php10
-rw-r--r--wiki/lib/plugins/acl/lang/ar/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/ar/lang.php38
-rw-r--r--wiki/lib/plugins/acl/lang/bg/help.txt9
-rw-r--r--wiki/lib/plugins/acl/lang/bg/lang.php37
-rw-r--r--wiki/lib/plugins/acl/lang/ca-valencia/help.txt15
-rw-r--r--wiki/lib/plugins/acl/lang/ca-valencia/lang.php37
-rw-r--r--wiki/lib/plugins/acl/lang/ca/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/ca/lang.php39
-rw-r--r--wiki/lib/plugins/acl/lang/cs/help.txt8
-rw-r--r--wiki/lib/plugins/acl/lang/cs/lang.php43
-rw-r--r--wiki/lib/plugins/acl/lang/cy/help.txt10
-rw-r--r--wiki/lib/plugins/acl/lang/cy/lang.php47
-rw-r--r--wiki/lib/plugins/acl/lang/da/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/da/lang.php44
-rw-r--r--wiki/lib/plugins/acl/lang/de-informal/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/de-informal/lang.php42
-rw-r--r--wiki/lib/plugins/acl/lang/de/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/de/lang.php52
-rw-r--r--wiki/lib/plugins/acl/lang/el/help.txt10
-rw-r--r--wiki/lib/plugins/acl/lang/el/lang.php43
-rw-r--r--wiki/lib/plugins/acl/lang/en/help.txt9
-rw-r--r--wiki/lib/plugins/acl/lang/en/lang.php46
-rw-r--r--wiki/lib/plugins/acl/lang/eo/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/eo/lang.php38
-rw-r--r--wiki/lib/plugins/acl/lang/es/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/es/lang.php54
-rw-r--r--wiki/lib/plugins/acl/lang/et/help.txt9
-rw-r--r--wiki/lib/plugins/acl/lang/et/lang.php37
-rw-r--r--wiki/lib/plugins/acl/lang/eu/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/eu/lang.php36
-rw-r--r--wiki/lib/plugins/acl/lang/fa/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/fa/lang.php41
-rw-r--r--wiki/lib/plugins/acl/lang/fi/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/fi/lang.php38
-rw-r--r--wiki/lib/plugins/acl/lang/fr/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/fr/lang.php54
-rw-r--r--wiki/lib/plugins/acl/lang/gl/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/gl/lang.php36
-rw-r--r--wiki/lib/plugins/acl/lang/he/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/he/lang.php36
-rw-r--r--wiki/lib/plugins/acl/lang/hr/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/hr/lang.php37
-rw-r--r--wiki/lib/plugins/acl/lang/hu/help.txt12
-rw-r--r--wiki/lib/plugins/acl/lang/hu/lang.php41
-rw-r--r--wiki/lib/plugins/acl/lang/ia/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/ia/lang.php35
-rw-r--r--wiki/lib/plugins/acl/lang/id/lang.php21
-rw-r--r--wiki/lib/plugins/acl/lang/is/lang.php15
-rw-r--r--wiki/lib/plugins/acl/lang/it/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/it/lang.php41
-rw-r--r--wiki/lib/plugins/acl/lang/ja/help.txt8
-rw-r--r--wiki/lib/plugins/acl/lang/ja/lang.php41
-rw-r--r--wiki/lib/plugins/acl/lang/kk/lang.php10
-rw-r--r--wiki/lib/plugins/acl/lang/ko/help.txt8
-rw-r--r--wiki/lib/plugins/acl/lang/ko/lang.php44
-rw-r--r--wiki/lib/plugins/acl/lang/la/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/la/lang.php34
-rw-r--r--wiki/lib/plugins/acl/lang/lb/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/lt/lang.php22
-rw-r--r--wiki/lib/plugins/acl/lang/lv/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/lv/lang.php35
-rw-r--r--wiki/lib/plugins/acl/lang/mk/lang.php22
-rw-r--r--wiki/lib/plugins/acl/lang/mr/help.txt12
-rw-r--r--wiki/lib/plugins/acl/lang/mr/lang.php37
-rw-r--r--wiki/lib/plugins/acl/lang/ne/lang.php28
-rw-r--r--wiki/lib/plugins/acl/lang/nl/help.txt8
-rw-r--r--wiki/lib/plugins/acl/lang/nl/lang.php48
-rw-r--r--wiki/lib/plugins/acl/lang/no/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/no/lang.php49
-rw-r--r--wiki/lib/plugins/acl/lang/pl/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/pl/lang.php45
-rw-r--r--wiki/lib/plugins/acl/lang/pt-br/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/pt-br/lang.php48
-rw-r--r--wiki/lib/plugins/acl/lang/pt/help.txt9
-rw-r--r--wiki/lib/plugins/acl/lang/pt/lang.php40
-rw-r--r--wiki/lib/plugins/acl/lang/ro/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/ro/lang.php43
-rw-r--r--wiki/lib/plugins/acl/lang/ru/help.txt8
-rw-r--r--wiki/lib/plugins/acl/lang/ru/lang.php46
-rw-r--r--wiki/lib/plugins/acl/lang/sk/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/sk/lang.php38
-rw-r--r--wiki/lib/plugins/acl/lang/sl/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/sl/lang.php38
-rw-r--r--wiki/lib/plugins/acl/lang/sq/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/sq/lang.php34
-rw-r--r--wiki/lib/plugins/acl/lang/sr/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/sr/lang.php38
-rw-r--r--wiki/lib/plugins/acl/lang/sv/help.txt8
-rw-r--r--wiki/lib/plugins/acl/lang/sv/lang.php43
-rw-r--r--wiki/lib/plugins/acl/lang/th/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/th/lang.php28
-rw-r--r--wiki/lib/plugins/acl/lang/tr/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/tr/lang.php40
-rw-r--r--wiki/lib/plugins/acl/lang/uk/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/uk/lang.php37
-rw-r--r--wiki/lib/plugins/acl/lang/vi/help.txt12
-rw-r--r--wiki/lib/plugins/acl/lang/vi/lang.php35
-rw-r--r--wiki/lib/plugins/acl/lang/zh-tw/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/zh-tw/lang.php44
-rw-r--r--wiki/lib/plugins/acl/lang/zh/help.txt11
-rw-r--r--wiki/lib/plugins/acl/lang/zh/lang.php42
-rw-r--r--wiki/lib/plugins/acl/pix/group.pngbin0 -> 699 bytes
-rw-r--r--wiki/lib/plugins/acl/pix/ns.pngbin0 -> 799 bytes
-rw-r--r--wiki/lib/plugins/acl/pix/page.pngbin0 -> 582 bytes
-rw-r--r--wiki/lib/plugins/acl/pix/user.pngbin0 -> 650 bytes
-rw-r--r--wiki/lib/plugins/acl/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/acl/remote.php87
-rw-r--r--wiki/lib/plugins/acl/script.js121
-rw-r--r--wiki/lib/plugins/acl/style.css135
-rw-r--r--wiki/lib/plugins/action.php25
-rw-r--r--wiki/lib/plugins/admin.php96
-rw-r--r--wiki/lib/plugins/auth.php438
-rw-r--r--wiki/lib/plugins/authad/action.php91
-rw-r--r--wiki/lib/plugins/authad/adLDAP/adLDAP.php949
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPComputers.php153
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPContacts.php294
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPExchange.php390
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPFolders.php179
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPGroups.php631
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPUsers.php682
-rw-r--r--wiki/lib/plugins/authad/adLDAP/classes/adLDAPUtils.php268
-rw-r--r--wiki/lib/plugins/authad/adLDAP/collections/adLDAPCollection.php137
-rw-r--r--wiki/lib/plugins/authad/adLDAP/collections/adLDAPComputerCollection.php46
-rw-r--r--wiki/lib/plugins/authad/adLDAP/collections/adLDAPContactCollection.php46
-rw-r--r--wiki/lib/plugins/authad/adLDAP/collections/adLDAPGroupCollection.php46
-rw-r--r--wiki/lib/plugins/authad/adLDAP/collections/adLDAPUserCollection.php46
-rw-r--r--wiki/lib/plugins/authad/auth.php730
-rw-r--r--wiki/lib/plugins/authad/conf/default.php17
-rw-r--r--wiki/lib/plugins/authad/conf/metadata.php17
-rw-r--r--wiki/lib/plugins/authad/lang/ar/lang.php10
-rw-r--r--wiki/lib/plugins/authad/lang/ar/settings.php12
-rw-r--r--wiki/lib/plugins/authad/lang/bg/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/bg/settings.php19
-rw-r--r--wiki/lib/plugins/authad/lang/ca/lang.php14
-rw-r--r--wiki/lib/plugins/authad/lang/ca/settings.php19
-rw-r--r--wiki/lib/plugins/authad/lang/cs/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/cs/settings.php25
-rw-r--r--wiki/lib/plugins/authad/lang/cy/lang.php16
-rw-r--r--wiki/lib/plugins/authad/lang/cy/settings.php15
-rw-r--r--wiki/lib/plugins/authad/lang/da/lang.php12
-rw-r--r--wiki/lib/plugins/authad/lang/da/settings.php23
-rw-r--r--wiki/lib/plugins/authad/lang/de-informal/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/de-informal/settings.php26
-rw-r--r--wiki/lib/plugins/authad/lang/de/lang.php14
-rw-r--r--wiki/lib/plugins/authad/lang/de/settings.php26
-rw-r--r--wiki/lib/plugins/authad/lang/el/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/el/settings.php8
-rw-r--r--wiki/lib/plugins/authad/lang/en/lang.php15
-rw-r--r--wiki/lib/plugins/authad/lang/en/settings.php17
-rw-r--r--wiki/lib/plugins/authad/lang/eo/lang.php9
-rw-r--r--wiki/lib/plugins/authad/lang/eo/settings.php20
-rw-r--r--wiki/lib/plugins/authad/lang/es/lang.php15
-rw-r--r--wiki/lib/plugins/authad/lang/es/settings.php26
-rw-r--r--wiki/lib/plugins/authad/lang/et/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/eu/lang.php10
-rw-r--r--wiki/lib/plugins/authad/lang/eu/settings.php13
-rw-r--r--wiki/lib/plugins/authad/lang/fa/lang.php14
-rw-r--r--wiki/lib/plugins/authad/lang/fa/settings.php24
-rw-r--r--wiki/lib/plugins/authad/lang/fi/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/fi/settings.php9
-rw-r--r--wiki/lib/plugins/authad/lang/fr/lang.php15
-rw-r--r--wiki/lib/plugins/authad/lang/fr/settings.php24
-rw-r--r--wiki/lib/plugins/authad/lang/gl/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/he/lang.php10
-rw-r--r--wiki/lib/plugins/authad/lang/he/settings.php8
-rw-r--r--wiki/lib/plugins/authad/lang/hr/lang.php12
-rw-r--r--wiki/lib/plugins/authad/lang/hr/settings.php22
-rw-r--r--wiki/lib/plugins/authad/lang/hu/lang.php11
-rw-r--r--wiki/lib/plugins/authad/lang/hu/settings.php21
-rw-r--r--wiki/lib/plugins/authad/lang/it/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/it/settings.php23
-rw-r--r--wiki/lib/plugins/authad/lang/ja/lang.php15
-rw-r--r--wiki/lib/plugins/authad/lang/ja/settings.php24
-rw-r--r--wiki/lib/plugins/authad/lang/ka/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/ko/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/ko/settings.php23
-rw-r--r--wiki/lib/plugins/authad/lang/lv/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/lv/settings.php13
-rw-r--r--wiki/lib/plugins/authad/lang/nl/lang.php15
-rw-r--r--wiki/lib/plugins/authad/lang/nl/settings.php24
-rw-r--r--wiki/lib/plugins/authad/lang/no/lang.php16
-rw-r--r--wiki/lib/plugins/authad/lang/no/settings.php26
-rw-r--r--wiki/lib/plugins/authad/lang/pl/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/pl/settings.php29
-rw-r--r--wiki/lib/plugins/authad/lang/pt-br/lang.php14
-rw-r--r--wiki/lib/plugins/authad/lang/pt-br/settings.php25
-rw-r--r--wiki/lib/plugins/authad/lang/pt/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/pt/settings.php25
-rw-r--r--wiki/lib/plugins/authad/lang/ro/lang.php11
-rw-r--r--wiki/lib/plugins/authad/lang/ru/lang.php15
-rw-r--r--wiki/lib/plugins/authad/lang/ru/settings.php30
-rw-r--r--wiki/lib/plugins/authad/lang/sk/lang.php12
-rw-r--r--wiki/lib/plugins/authad/lang/sk/settings.php22
-rw-r--r--wiki/lib/plugins/authad/lang/sl/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/sl/settings.php11
-rw-r--r--wiki/lib/plugins/authad/lang/sr/lang.php12
-rw-r--r--wiki/lib/plugins/authad/lang/sr/settings.php19
-rw-r--r--wiki/lib/plugins/authad/lang/sv/lang.php13
-rw-r--r--wiki/lib/plugins/authad/lang/sv/settings.php20
-rw-r--r--wiki/lib/plugins/authad/lang/tr/lang.php8
-rw-r--r--wiki/lib/plugins/authad/lang/uk/lang.php14
-rw-r--r--wiki/lib/plugins/authad/lang/uk/settings.php17
-rw-r--r--wiki/lib/plugins/authad/lang/zh-tw/lang.php10
-rw-r--r--wiki/lib/plugins/authad/lang/zh-tw/settings.php21
-rw-r--r--wiki/lib/plugins/authad/lang/zh/lang.php14
-rw-r--r--wiki/lib/plugins/authad/lang/zh/settings.php25
-rw-r--r--wiki/lib/plugins/authad/plugin.info.txt7
-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
-rw-r--r--wiki/lib/plugins/authmysql/auth.php1110
-rw-r--r--wiki/lib/plugins/authmysql/conf/default.php34
-rw-r--r--wiki/lib/plugins/authmysql/conf/metadata.php34
-rw-r--r--wiki/lib/plugins/authmysql/lang/bg/lang.php10
-rw-r--r--wiki/lib/plugins/authmysql/lang/bg/settings.php19
-rw-r--r--wiki/lib/plugins/authmysql/lang/cs/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/cs/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/cy/lang.php13
-rw-r--r--wiki/lib/plugins/authmysql/lang/cy/settings.php39
-rw-r--r--wiki/lib/plugins/authmysql/lang/da/lang.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/da/settings.php31
-rw-r--r--wiki/lib/plugins/authmysql/lang/de-informal/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/de-informal/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/de/lang.php13
-rw-r--r--wiki/lib/plugins/authmysql/lang/de/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/en/lang.php13
-rw-r--r--wiki/lib/plugins/authmysql/lang/en/settings.php39
-rw-r--r--wiki/lib/plugins/authmysql/lang/eo/lang.php8
-rw-r--r--wiki/lib/plugins/authmysql/lang/eo/settings.php41
-rw-r--r--wiki/lib/plugins/authmysql/lang/es/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/es/settings.php46
-rw-r--r--wiki/lib/plugins/authmysql/lang/eu/lang.php10
-rw-r--r--wiki/lib/plugins/authmysql/lang/eu/settings.php14
-rw-r--r--wiki/lib/plugins/authmysql/lang/fa/lang.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/fa/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/fi/settings.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/fr/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/fr/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/he/settings.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/hr/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/hr/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/hu/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/hu/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/it/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/it/settings.php46
-rw-r--r--wiki/lib/plugins/authmysql/lang/ja/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/ja/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/ko/lang.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/ko/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/lv/settings.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/nl/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/nl/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/no/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/no/settings.php44
-rw-r--r--wiki/lib/plugins/authmysql/lang/pl/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/pl/settings.php45
-rw-r--r--wiki/lib/plugins/authmysql/lang/pt-br/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/pt-br/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/pt/lang.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/pt/settings.php43
-rw-r--r--wiki/lib/plugins/authmysql/lang/ru/lang.php12
-rw-r--r--wiki/lib/plugins/authmysql/lang/ru/settings.php45
-rw-r--r--wiki/lib/plugins/authmysql/lang/sk/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/sk/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/sl/settings.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/sr/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/sr/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/sv/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/sv/settings.php29
-rw-r--r--wiki/lib/plugins/authmysql/lang/tr/lang.php9
-rw-r--r--wiki/lib/plugins/authmysql/lang/tr/settings.php41
-rw-r--r--wiki/lib/plugins/authmysql/lang/uk/lang.php10
-rw-r--r--wiki/lib/plugins/authmysql/lang/zh-tw/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/lang/zh/lang.php11
-rw-r--r--wiki/lib/plugins/authmysql/lang/zh/settings.php42
-rw-r--r--wiki/lib/plugins/authmysql/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/authpdo/README27
-rw-r--r--wiki/lib/plugins/authpdo/auth.php781
-rw-r--r--wiki/lib/plugins/authpdo/conf/default.php118
-rw-r--r--wiki/lib/plugins/authpdo/conf/metadata.php27
-rw-r--r--wiki/lib/plugins/authpdo/lang/bg/lang.php9
-rw-r--r--wiki/lib/plugins/authpdo/lang/cs/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/cy/lang.php12
-rw-r--r--wiki/lib/plugins/authpdo/lang/de/lang.php12
-rw-r--r--wiki/lib/plugins/authpdo/lang/en/lang.php12
-rw-r--r--wiki/lib/plugins/authpdo/lang/en/settings.php25
-rw-r--r--wiki/lib/plugins/authpdo/lang/es/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/fa/lang.php11
-rw-r--r--wiki/lib/plugins/authpdo/lang/fr/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/hr/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/hu/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/it/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/ja/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/ko/lang.php11
-rw-r--r--wiki/lib/plugins/authpdo/lang/nl/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/pt-br/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/pt/lang.php9
-rw-r--r--wiki/lib/plugins/authpdo/lang/ru/lang.php11
-rw-r--r--wiki/lib/plugins/authpdo/lang/sk/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/lang/tr/lang.php8
-rw-r--r--wiki/lib/plugins/authpdo/lang/zh/lang.php10
-rw-r--r--wiki/lib/plugins/authpdo/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/authpgsql/auth.php431
-rw-r--r--wiki/lib/plugins/authpgsql/conf/default.php33
-rw-r--r--wiki/lib/plugins/authpgsql/conf/metadata.php33
-rw-r--r--wiki/lib/plugins/authpgsql/lang/bg/settings.php13
-rw-r--r--wiki/lib/plugins/authpgsql/lang/cs/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/cy/settings.php33
-rw-r--r--wiki/lib/plugins/authpgsql/lang/da/settings.php22
-rw-r--r--wiki/lib/plugins/authpgsql/lang/de-informal/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/de/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/en/settings.php33
-rw-r--r--wiki/lib/plugins/authpgsql/lang/eo/settings.php37
-rw-r--r--wiki/lib/plugins/authpgsql/lang/es/settings.php41
-rw-r--r--wiki/lib/plugins/authpgsql/lang/fa/settings.php40
-rw-r--r--wiki/lib/plugins/authpgsql/lang/fr/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/hr/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/hu/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/it/settings.php40
-rw-r--r--wiki/lib/plugins/authpgsql/lang/ja/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/ko/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/lv/settings.php9
-rw-r--r--wiki/lib/plugins/authpgsql/lang/nl/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/no/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/pl/settings.php40
-rw-r--r--wiki/lib/plugins/authpgsql/lang/pt-br/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/pt/settings.php39
-rw-r--r--wiki/lib/plugins/authpgsql/lang/ru/settings.php42
-rw-r--r--wiki/lib/plugins/authpgsql/lang/sk/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/sl/settings.php16
-rw-r--r--wiki/lib/plugins/authpgsql/lang/sr/settings.php18
-rw-r--r--wiki/lib/plugins/authpgsql/lang/sv/settings.php29
-rw-r--r--wiki/lib/plugins/authpgsql/lang/tr/settings.php13
-rw-r--r--wiki/lib/plugins/authpgsql/lang/uk/settings.php8
-rw-r--r--wiki/lib/plugins/authpgsql/lang/zh-tw/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/lang/zh/settings.php38
-rw-r--r--wiki/lib/plugins/authpgsql/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/authplain/auth.php443
-rw-r--r--wiki/lib/plugins/authplain/lang/af/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/ar/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/az/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/bg/lang.php9
-rw-r--r--wiki/lib/plugins/authplain/lang/bn/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/ca-valencia/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/ca/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/cs/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/cy/lang.php8
-rw-r--r--wiki/lib/plugins/authplain/lang/da/lang.php9
-rw-r--r--wiki/lib/plugins/authplain/lang/de-informal/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/de/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/el/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/en/lang.php9
-rw-r--r--wiki/lib/plugins/authplain/lang/eo/lang.php9
-rw-r--r--wiki/lib/plugins/authplain/lang/es/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/et/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/eu/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/fa/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/fi/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/fo/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/fr/lang.php13
-rw-r--r--wiki/lib/plugins/authplain/lang/gl/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/he/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/hr/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/hu/lang.php10
-rw-r--r--wiki/lib/plugins/authplain/lang/ia/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/id-ni/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/id/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/is/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/it/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/ja/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/ka/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/kk/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/km/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/ko/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/ku/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/la/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/lb/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/lt/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/lv/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/mg/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/mk/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/mr/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/ms/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/ne/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/nl/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/no/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/pl/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/pt-br/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/lang/pt/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/ro/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/ru/lang.php13
-rw-r--r--wiki/lib/plugins/authplain/lang/sk/lang.php11
-rw-r--r--wiki/lib/plugins/authplain/lang/sl/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/sq/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/sr/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/sv/lang.php10
-rw-r--r--wiki/lib/plugins/authplain/lang/th/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/tr/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/uk/lang.php9
-rw-r--r--wiki/lib/plugins/authplain/lang/vi/lang.php6
-rw-r--r--wiki/lib/plugins/authplain/lang/zh-tw/lang.php7
-rw-r--r--wiki/lib/plugins/authplain/lang/zh/lang.php12
-rw-r--r--wiki/lib/plugins/authplain/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/cli.php11
-rw-r--r--wiki/lib/plugins/config/admin.php404
-rw-r--r--wiki/lib/plugins/config/admin.svg1
-rw-r--r--wiki/lib/plugins/config/images/danger.pngbin0 -> 637 bytes
-rw-r--r--wiki/lib/plugins/config/images/security.pngbin0 -> 682 bytes
-rw-r--r--wiki/lib/plugins/config/images/warning.pngbin0 -> 606 bytes
-rw-r--r--wiki/lib/plugins/config/lang/af/lang.php23
-rw-r--r--wiki/lib/plugins/config/lang/ar/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/ar/lang.php192
-rw-r--r--wiki/lib/plugins/config/lang/bg/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/bg/lang.php195
-rw-r--r--wiki/lib/plugins/config/lang/ca-valencia/intro.txt10
-rw-r--r--wiki/lib/plugins/config/lang/ca-valencia/lang.php177
-rw-r--r--wiki/lib/plugins/config/lang/ca/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/ca/lang.php188
-rw-r--r--wiki/lib/plugins/config/lang/cs/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/cs/lang.php226
-rw-r--r--wiki/lib/plugins/config/lang/cy/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/cy/lang.php262
-rw-r--r--wiki/lib/plugins/config/lang/da/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/da/lang.php200
-rw-r--r--wiki/lib/plugins/config/lang/de-informal/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/de-informal/lang.php208
-rw-r--r--wiki/lib/plugins/config/lang/de/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/de/lang.php225
-rw-r--r--wiki/lib/plugins/config/lang/el/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/el/lang.php199
-rw-r--r--wiki/lib/plugins/config/lang/en/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/en/lang.php279
-rw-r--r--wiki/lib/plugins/config/lang/eo/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/eo/lang.php202
-rw-r--r--wiki/lib/plugins/config/lang/es/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/es/lang.php228
-rw-r--r--wiki/lib/plugins/config/lang/et/lang.php30
-rw-r--r--wiki/lib/plugins/config/lang/eu/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/eu/lang.php185
-rw-r--r--wiki/lib/plugins/config/lang/fa/intro.txt8
-rw-r--r--wiki/lib/plugins/config/lang/fa/lang.php204
-rw-r--r--wiki/lib/plugins/config/lang/fi/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/fi/lang.php198
-rw-r--r--wiki/lib/plugins/config/lang/fr/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/fr/lang.php233
-rw-r--r--wiki/lib/plugins/config/lang/gl/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/gl/lang.php194
-rw-r--r--wiki/lib/plugins/config/lang/he/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/he/lang.php166
-rw-r--r--wiki/lib/plugins/config/lang/hi/lang.php14
-rw-r--r--wiki/lib/plugins/config/lang/hr/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/hr/lang.php210
-rw-r--r--wiki/lib/plugins/config/lang/hu/intro.txt9
-rw-r--r--wiki/lib/plugins/config/lang/hu/lang.php202
-rw-r--r--wiki/lib/plugins/config/lang/ia/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/ia/lang.php175
-rw-r--r--wiki/lib/plugins/config/lang/id-ni/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/id-ni/lang.php68
-rw-r--r--wiki/lib/plugins/config/lang/id/intro.txt5
-rw-r--r--wiki/lib/plugins/config/lang/is/lang.php57
-rw-r--r--wiki/lib/plugins/config/lang/it/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/it/lang.php214
-rw-r--r--wiki/lib/plugins/config/lang/ja/intro.txt11
-rw-r--r--wiki/lib/plugins/config/lang/ja/lang.php207
-rw-r--r--wiki/lib/plugins/config/lang/ko/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/ko/lang.php211
-rw-r--r--wiki/lib/plugins/config/lang/la/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/la/lang.php176
-rw-r--r--wiki/lib/plugins/config/lang/lb/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/lt/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/lt/lang.php22
-rw-r--r--wiki/lib/plugins/config/lang/lv/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/lv/lang.php185
-rw-r--r--wiki/lib/plugins/config/lang/mr/intro.txt10
-rw-r--r--wiki/lib/plugins/config/lang/mr/lang.php177
-rw-r--r--wiki/lib/plugins/config/lang/ne/lang.php68
-rw-r--r--wiki/lib/plugins/config/lang/nl/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/nl/lang.php219
-rw-r--r--wiki/lib/plugins/config/lang/no/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/no/lang.php214
-rw-r--r--wiki/lib/plugins/config/lang/pl/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/pl/lang.php215
-rw-r--r--wiki/lib/plugins/config/lang/pt-br/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/pt-br/lang.php217
-rw-r--r--wiki/lib/plugins/config/lang/pt/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/pt/lang.php193
-rw-r--r--wiki/lib/plugins/config/lang/ro/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/ro/lang.php195
-rw-r--r--wiki/lib/plugins/config/lang/ru/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/ru/lang.php222
-rw-r--r--wiki/lib/plugins/config/lang/sk/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/sk/lang.php198
-rw-r--r--wiki/lib/plugins/config/lang/sl/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/sl/lang.php189
-rw-r--r--wiki/lib/plugins/config/lang/sq/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/sq/lang.php175
-rw-r--r--wiki/lib/plugins/config/lang/sr/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/sr/lang.php185
-rw-r--r--wiki/lib/plugins/config/lang/sv/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/sv/lang.php197
-rw-r--r--wiki/lib/plugins/config/lang/th/lang.php105
-rw-r--r--wiki/lib/plugins/config/lang/tr/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/tr/lang.php135
-rw-r--r--wiki/lib/plugins/config/lang/uk/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/uk/lang.php189
-rw-r--r--wiki/lib/plugins/config/lang/zh-tw/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/zh-tw/lang.php201
-rw-r--r--wiki/lib/plugins/config/lang/zh/intro.txt7
-rw-r--r--wiki/lib/plugins/config/lang/zh/lang.php221
-rw-r--r--wiki/lib/plugins/config/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/config/settings/config.class.php1430
-rw-r--r--wiki/lib/plugins/config/settings/config.metadata.php240
-rw-r--r--wiki/lib/plugins/config/settings/extra.class.php309
-rw-r--r--wiki/lib/plugins/config/style.css167
-rw-r--r--wiki/lib/plugins/extension/action.php85
-rw-r--r--wiki/lib/plugins/extension/admin.php159
-rw-r--r--wiki/lib/plugins/extension/admin.svg1
-rw-r--r--wiki/lib/plugins/extension/all.less37
-rw-r--r--wiki/lib/plugins/extension/helper/extension.php1162
-rw-r--r--wiki/lib/plugins/extension/helper/gui.php193
-rw-r--r--wiki/lib/plugins/extension/helper/list.php567
-rw-r--r--wiki/lib/plugins/extension/helper/repository.php191
-rw-r--r--wiki/lib/plugins/extension/images/bug.gifbin0 -> 194 bytes
-rw-r--r--wiki/lib/plugins/extension/images/disabled.pngbin0 -> 1163 bytes
-rw-r--r--wiki/lib/plugins/extension/images/donate.pngbin0 -> 677 bytes
-rw-r--r--wiki/lib/plugins/extension/images/down.pngbin0 -> 197 bytes
-rw-r--r--wiki/lib/plugins/extension/images/enabled.pngbin0 -> 1172 bytes
-rw-r--r--wiki/lib/plugins/extension/images/icons.xcfbin0 -> 67195 bytes
-rw-r--r--wiki/lib/plugins/extension/images/license.txt4
-rw-r--r--wiki/lib/plugins/extension/images/overlay.pngbin0 -> 68 bytes
-rw-r--r--wiki/lib/plugins/extension/images/plugin.pngbin0 -> 4054 bytes
-rw-r--r--wiki/lib/plugins/extension/images/tag.pngbin0 -> 341 bytes
-rw-r--r--wiki/lib/plugins/extension/images/template.pngbin0 -> 5206 bytes
-rw-r--r--wiki/lib/plugins/extension/images/up.pngbin0 -> 197 bytes
-rw-r--r--wiki/lib/plugins/extension/images/warning.pngbin0 -> 606 bytes
-rw-r--r--wiki/lib/plugins/extension/lang/bg/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/bg/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/bg/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/bg/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/bg/lang.php84
-rw-r--r--wiki/lib/plugins/extension/lang/cs/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cs/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cs/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cs/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cs/lang.php98
-rw-r--r--wiki/lib/plugins/extension/lang/cy/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cy/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cy/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cy/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/cy/lang.php111
-rw-r--r--wiki/lib/plugins/extension/lang/da/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/da/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/da/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/da/lang.php80
-rw-r--r--wiki/lib/plugins/extension/lang/de-informal/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de-informal/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de-informal/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de-informal/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de-informal/lang.php95
-rw-r--r--wiki/lib/plugins/extension/lang/de/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/de/lang.php102
-rw-r--r--wiki/lib/plugins/extension/lang/en/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/en/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/en/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/en/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/en/lang.php109
-rw-r--r--wiki/lib/plugins/extension/lang/eo/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/eo/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/eo/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/eo/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/eo/lang.php89
-rw-r--r--wiki/lib/plugins/extension/lang/es/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/es/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/es/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/es/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/es/lang.php100
-rw-r--r--wiki/lib/plugins/extension/lang/fa/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fa/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fa/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fa/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fa/lang.php97
-rw-r--r--wiki/lib/plugins/extension/lang/fi/lang.php37
-rw-r--r--wiki/lib/plugins/extension/lang/fr/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fr/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fr/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fr/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/fr/lang.php99
-rw-r--r--wiki/lib/plugins/extension/lang/he/lang.php26
-rw-r--r--wiki/lib/plugins/extension/lang/hr/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hr/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hr/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hr/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hr/lang.php95
-rw-r--r--wiki/lib/plugins/extension/lang/hu/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hu/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hu/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hu/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/hu/lang.php95
-rw-r--r--wiki/lib/plugins/extension/lang/it/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/it/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/it/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/it/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/it/lang.php98
-rw-r--r--wiki/lib/plugins/extension/lang/ja/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ja/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ja/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ja/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ja/lang.php98
-rw-r--r--wiki/lib/plugins/extension/lang/ko/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ko/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ko/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ko/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ko/lang.php97
-rw-r--r--wiki/lib/plugins/extension/lang/lv/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/lv/lang.php8
-rw-r--r--wiki/lib/plugins/extension/lang/nl/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/nl/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/nl/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/nl/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/nl/lang.php101
-rw-r--r--wiki/lib/plugins/extension/lang/no/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/no/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/no/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/no/intro_templates.txt2
-rw-r--r--wiki/lib/plugins/extension/lang/no/lang.php95
-rw-r--r--wiki/lib/plugins/extension/lang/pl/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pl/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pl/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pl/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pl/lang.php97
-rw-r--r--wiki/lib/plugins/extension/lang/pt-br/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt-br/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt-br/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt-br/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt-br/lang.php97
-rw-r--r--wiki/lib/plugins/extension/lang/pt/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/pt/lang.php140
-rw-r--r--wiki/lib/plugins/extension/lang/ru/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ru/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ru/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ru/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/ru/lang.php100
-rw-r--r--wiki/lib/plugins/extension/lang/sk/lang.php61
-rw-r--r--wiki/lib/plugins/extension/lang/sr/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/sr/lang.php66
-rw-r--r--wiki/lib/plugins/extension/lang/sv/lang.php67
-rw-r--r--wiki/lib/plugins/extension/lang/tr/lang.php61
-rw-r--r--wiki/lib/plugins/extension/lang/zh-tw/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/zh-tw/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/zh-tw/lang.php85
-rw-r--r--wiki/lib/plugins/extension/lang/zh/intro_install.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/zh/intro_plugins.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/zh/intro_search.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/zh/intro_templates.txt1
-rw-r--r--wiki/lib/plugins/extension/lang/zh/lang.php101
-rw-r--r--wiki/lib/plugins/extension/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/extension/script.js145
-rw-r--r--wiki/lib/plugins/extension/style.less386
-rw-r--r--wiki/lib/plugins/index.html11
-rw-r--r--wiki/lib/plugins/info/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/info/syntax.php294
-rw-r--r--wiki/lib/plugins/popularity/action.php60
-rw-r--r--wiki/lib/plugins/popularity/admin.php152
-rw-r--r--wiki/lib/plugins/popularity/admin.svg1
-rw-r--r--wiki/lib/plugins/popularity/helper.php340
-rw-r--r--wiki/lib/plugins/popularity/lang/af/lang.php6
-rw-r--r--wiki/lib/plugins/popularity/lang/ar/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ar/lang.php16
-rw-r--r--wiki/lib/plugins/popularity/lang/ar/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/bg/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/bg/lang.php15
-rw-r--r--wiki/lib/plugins/popularity/lang/bg/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/ca-valencia/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ca-valencia/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/ca/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ca/lang.php12
-rw-r--r--wiki/lib/plugins/popularity/lang/cs/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/cs/lang.php21
-rw-r--r--wiki/lib/plugins/popularity/lang/cs/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/cy/intro.txt11
-rw-r--r--wiki/lib/plugins/popularity/lang/cy/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/cy/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/da/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/da/lang.php20
-rw-r--r--wiki/lib/plugins/popularity/lang/da/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/de-informal/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/de-informal/lang.php21
-rw-r--r--wiki/lib/plugins/popularity/lang/de-informal/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/de/intro.txt11
-rw-r--r--wiki/lib/plugins/popularity/lang/de/lang.php26
-rw-r--r--wiki/lib/plugins/popularity/lang/de/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/el/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/el/lang.php17
-rw-r--r--wiki/lib/plugins/popularity/lang/el/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/en/intro.txt11
-rw-r--r--wiki/lib/plugins/popularity/lang/en/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/en/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/eo/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/eo/lang.php16
-rw-r--r--wiki/lib/plugins/popularity/lang/eo/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/es/intro.txt10
-rw-r--r--wiki/lib/plugins/popularity/lang/es/lang.php31
-rw-r--r--wiki/lib/plugins/popularity/lang/es/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/eu/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/eu/lang.php15
-rw-r--r--wiki/lib/plugins/popularity/lang/eu/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/fa/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/fa/lang.php20
-rw-r--r--wiki/lib/plugins/popularity/lang/fa/submitted.txt2
-rw-r--r--wiki/lib/plugins/popularity/lang/fi/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/fi/lang.php16
-rw-r--r--wiki/lib/plugins/popularity/lang/fi/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/fr/intro.txt10
-rw-r--r--wiki/lib/plugins/popularity/lang/fr/lang.php26
-rw-r--r--wiki/lib/plugins/popularity/lang/fr/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/gl/intro.txt10
-rw-r--r--wiki/lib/plugins/popularity/lang/gl/lang.php15
-rw-r--r--wiki/lib/plugins/popularity/lang/gl/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/he/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/he/lang.php12
-rw-r--r--wiki/lib/plugins/popularity/lang/hi/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/hr/intro.txt7
-rw-r--r--wiki/lib/plugins/popularity/lang/hr/lang.php14
-rw-r--r--wiki/lib/plugins/popularity/lang/hr/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/hu/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/hu/lang.php20
-rw-r--r--wiki/lib/plugins/popularity/lang/hu/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/ia/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ia/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/id-ni/intro.txt7
-rw-r--r--wiki/lib/plugins/popularity/lang/id-ni/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/is/lang.php9
-rw-r--r--wiki/lib/plugins/popularity/lang/it/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/it/lang.php18
-rw-r--r--wiki/lib/plugins/popularity/lang/it/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/ja/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ja/lang.php19
-rw-r--r--wiki/lib/plugins/popularity/lang/ja/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/ko/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ko/lang.php20
-rw-r--r--wiki/lib/plugins/popularity/lang/ko/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/la/intro.txt10
-rw-r--r--wiki/lib/plugins/popularity/lang/la/lang.php13
-rw-r--r--wiki/lib/plugins/popularity/lang/la/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/lt/lang.php10
-rw-r--r--wiki/lib/plugins/popularity/lang/lv/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/lv/lang.php14
-rw-r--r--wiki/lib/plugins/popularity/lang/lv/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/mr/intro.txt8
-rw-r--r--wiki/lib/plugins/popularity/lang/mr/lang.php11
-rw-r--r--wiki/lib/plugins/popularity/lang/ne/lang.php10
-rw-r--r--wiki/lib/plugins/popularity/lang/nl/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/nl/lang.php22
-rw-r--r--wiki/lib/plugins/popularity/lang/nl/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/no/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/no/lang.php25
-rw-r--r--wiki/lib/plugins/popularity/lang/no/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/pl/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/pl/lang.php24
-rw-r--r--wiki/lib/plugins/popularity/lang/pl/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/pt-br/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/pt-br/lang.php24
-rw-r--r--wiki/lib/plugins/popularity/lang/pt-br/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/pt/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/pt/lang.php17
-rw-r--r--wiki/lib/plugins/popularity/lang/pt/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/ro/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/ro/lang.php20
-rw-r--r--wiki/lib/plugins/popularity/lang/ro/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/ru/intro.txt10
-rw-r--r--wiki/lib/plugins/popularity/lang/ru/lang.php24
-rw-r--r--wiki/lib/plugins/popularity/lang/ru/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/sk/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/sk/lang.php16
-rw-r--r--wiki/lib/plugins/popularity/lang/sk/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/sl/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/sl/lang.php14
-rw-r--r--wiki/lib/plugins/popularity/lang/sl/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/sq/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/sq/lang.php8
-rw-r--r--wiki/lib/plugins/popularity/lang/sr/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/sr/lang.php11
-rw-r--r--wiki/lib/plugins/popularity/lang/sv/intro.txt11
-rw-r--r--wiki/lib/plugins/popularity/lang/sv/lang.php20
-rw-r--r--wiki/lib/plugins/popularity/lang/sv/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/th/lang.php12
-rw-r--r--wiki/lib/plugins/popularity/lang/tr/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/tr/lang.php14
-rw-r--r--wiki/lib/plugins/popularity/lang/uk/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/uk/lang.php15
-rw-r--r--wiki/lib/plugins/popularity/lang/uk/submitted.txt2
-rw-r--r--wiki/lib/plugins/popularity/lang/zh-tw/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/zh-tw/lang.php22
-rw-r--r--wiki/lib/plugins/popularity/lang/zh-tw/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/lang/zh/intro.txt9
-rw-r--r--wiki/lib/plugins/popularity/lang/zh/lang.php22
-rw-r--r--wiki/lib/plugins/popularity/lang/zh/submitted.txt3
-rw-r--r--wiki/lib/plugins/popularity/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/remote.php104
-rw-r--r--wiki/lib/plugins/revert/admin.php184
-rw-r--r--wiki/lib/plugins/revert/admin.svg1
-rw-r--r--wiki/lib/plugins/revert/lang/ar/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ar/lang.php22
-rw-r--r--wiki/lib/plugins/revert/lang/bg/intro.txt4
-rw-r--r--wiki/lib/plugins/revert/lang/bg/lang.php18
-rw-r--r--wiki/lib/plugins/revert/lang/ca-valencia/intro.txt4
-rw-r--r--wiki/lib/plugins/revert/lang/ca-valencia/lang.php15
-rw-r--r--wiki/lib/plugins/revert/lang/ca/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ca/lang.php20
-rw-r--r--wiki/lib/plugins/revert/lang/cs/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/cs/lang.php37
-rw-r--r--wiki/lib/plugins/revert/lang/cy/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/cy/lang.php22
-rw-r--r--wiki/lib/plugins/revert/lang/da/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/da/lang.php22
-rw-r--r--wiki/lib/plugins/revert/lang/de-informal/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/de-informal/lang.php23
-rw-r--r--wiki/lib/plugins/revert/lang/de/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/de/lang.php29
-rw-r--r--wiki/lib/plugins/revert/lang/el/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/el/lang.php21
-rw-r--r--wiki/lib/plugins/revert/lang/en/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/en/lang.php23
-rw-r--r--wiki/lib/plugins/revert/lang/eo/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/eo/lang.php19
-rw-r--r--wiki/lib/plugins/revert/lang/es/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/es/lang.php34
-rw-r--r--wiki/lib/plugins/revert/lang/et/lang.php9
-rw-r--r--wiki/lib/plugins/revert/lang/eu/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/eu/lang.php21
-rw-r--r--wiki/lib/plugins/revert/lang/fa/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/fa/lang.php22
-rw-r--r--wiki/lib/plugins/revert/lang/fi/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/fi/lang.php19
-rw-r--r--wiki/lib/plugins/revert/lang/fr/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/fr/lang.php30
-rw-r--r--wiki/lib/plugins/revert/lang/gl/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/gl/lang.php17
-rw-r--r--wiki/lib/plugins/revert/lang/he/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/he/lang.php19
-rw-r--r--wiki/lib/plugins/revert/lang/hr/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/hr/lang.php16
-rw-r--r--wiki/lib/plugins/revert/lang/hu/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/hu/lang.php23
-rw-r--r--wiki/lib/plugins/revert/lang/ia/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ia/lang.php16
-rw-r--r--wiki/lib/plugins/revert/lang/is/lang.php10
-rw-r--r--wiki/lib/plugins/revert/lang/it/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/it/lang.php20
-rw-r--r--wiki/lib/plugins/revert/lang/ja/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ja/lang.php21
-rw-r--r--wiki/lib/plugins/revert/lang/ko/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ko/lang.php25
-rw-r--r--wiki/lib/plugins/revert/lang/la/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/la/lang.php15
-rw-r--r--wiki/lib/plugins/revert/lang/lb/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/lv/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/lv/lang.php16
-rw-r--r--wiki/lib/plugins/revert/lang/mr/intro.txt5
-rw-r--r--wiki/lib/plugins/revert/lang/mr/lang.php18
-rw-r--r--wiki/lib/plugins/revert/lang/ne/lang.php17
-rw-r--r--wiki/lib/plugins/revert/lang/nl/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/nl/lang.php26
-rw-r--r--wiki/lib/plugins/revert/lang/no/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/no/lang.php38
-rw-r--r--wiki/lib/plugins/revert/lang/pl/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/pl/lang.php26
-rw-r--r--wiki/lib/plugins/revert/lang/pt-br/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/pt-br/lang.php27
-rw-r--r--wiki/lib/plugins/revert/lang/pt/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/pt/lang.php20
-rw-r--r--wiki/lib/plugins/revert/lang/ro/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ro/lang.php24
-rw-r--r--wiki/lib/plugins/revert/lang/ru/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/ru/lang.php28
-rw-r--r--wiki/lib/plugins/revert/lang/sk/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/sk/lang.php18
-rw-r--r--wiki/lib/plugins/revert/lang/sl/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/sl/lang.php16
-rw-r--r--wiki/lib/plugins/revert/lang/sq/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/sq/lang.php15
-rw-r--r--wiki/lib/plugins/revert/lang/sr/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/sr/lang.php18
-rw-r--r--wiki/lib/plugins/revert/lang/sv/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/sv/lang.php30
-rw-r--r--wiki/lib/plugins/revert/lang/th/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/th/lang.php20
-rw-r--r--wiki/lib/plugins/revert/lang/tr/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/tr/lang.php20
-rw-r--r--wiki/lib/plugins/revert/lang/uk/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/uk/lang.php17
-rw-r--r--wiki/lib/plugins/revert/lang/zh-tw/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/zh-tw/lang.php24
-rw-r--r--wiki/lib/plugins/revert/lang/zh/intro.txt3
-rw-r--r--wiki/lib/plugins/revert/lang/zh/lang.php23
-rw-r--r--wiki/lib/plugins/revert/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/safefnrecode/action.php68
-rw-r--r--wiki/lib/plugins/safefnrecode/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/styling/README27
-rw-r--r--wiki/lib/plugins/styling/action.php60
-rw-r--r--wiki/lib/plugins/styling/admin.php211
-rw-r--r--wiki/lib/plugins/styling/admin.svg1
-rw-r--r--wiki/lib/plugins/styling/iris.js1488
-rw-r--r--wiki/lib/plugins/styling/lang/bg/lang.php21
-rw-r--r--wiki/lib/plugins/styling/lang/cs/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/cs/lang.php24
-rw-r--r--wiki/lib/plugins/styling/lang/cy/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/cy/lang.php36
-rw-r--r--wiki/lib/plugins/styling/lang/de-informal/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/de-informal/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/de/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/de/lang.php24
-rw-r--r--wiki/lib/plugins/styling/lang/en/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/en/lang.php35
-rw-r--r--wiki/lib/plugins/styling/lang/eo/lang.php9
-rw-r--r--wiki/lib/plugins/styling/lang/es/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/es/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/fa/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/fa/lang.php24
-rw-r--r--wiki/lib/plugins/styling/lang/fr/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/fr/lang.php25
-rw-r--r--wiki/lib/plugins/styling/lang/hr/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/hr/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/hu/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/hu/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/it/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/it/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/ja/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/ja/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/ko/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/ko/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/nl/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/nl/lang.php24
-rw-r--r--wiki/lib/plugins/styling/lang/no/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/no/lang.php24
-rw-r--r--wiki/lib/plugins/styling/lang/pl/intro.txt1
-rw-r--r--wiki/lib/plugins/styling/lang/pl/lang.php24
-rw-r--r--wiki/lib/plugins/styling/lang/pt-br/intro.txt2
-rw-r--r--wiki/lib/plugins/styling/lang/pt-br/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/pt/lang.php19
-rw-r--r--wiki/lib/plugins/styling/lang/ru/intro.txt1
-rw-r--r--wiki/lib/plugins/styling/lang/ru/lang.php23
-rw-r--r--wiki/lib/plugins/styling/lang/sk/lang.php18
-rw-r--r--wiki/lib/plugins/styling/lang/sv/lang.php17
-rw-r--r--wiki/lib/plugins/styling/lang/zh-tw/lang.php15
-rw-r--r--wiki/lib/plugins/styling/lang/zh/intro.txt1
-rw-r--r--wiki/lib/plugins/styling/lang/zh/lang.php23
-rw-r--r--wiki/lib/plugins/styling/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/styling/popup.php30
-rw-r--r--wiki/lib/plugins/styling/script.js97
-rw-r--r--wiki/lib/plugins/styling/style.less13
-rw-r--r--wiki/lib/plugins/syntax.php134
-rw-r--r--wiki/lib/plugins/usermanager/admin.php1083
-rw-r--r--wiki/lib/plugins/usermanager/admin.svg1
-rw-r--r--wiki/lib/plugins/usermanager/images/search.pngbin0 -> 549 bytes
-rw-r--r--wiki/lib/plugins/usermanager/lang/af/lang.php14
-rw-r--r--wiki/lib/plugins/usermanager/lang/ar/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ar/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ar/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ar/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ar/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/ar/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/bg/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/bg/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/bg/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/bg/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/bg/lang.php59
-rw-r--r--wiki/lib/plugins/usermanager/lang/bg/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca-valencia/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca-valencia/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca-valencia/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca-valencia/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca-valencia/lang.php49
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca-valencia/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca/lang.php52
-rw-r--r--wiki/lib/plugins/usermanager/lang/ca/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/lang.php86
-rw-r--r--wiki/lib/plugins/usermanager/lang/cs/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/lang.php87
-rw-r--r--wiki/lib/plugins/usermanager/lang/cy/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/lang.php74
-rw-r--r--wiki/lib/plugins/usermanager/lang/da/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/import.txt7
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/lang.php83
-rw-r--r--wiki/lib/plugins/usermanager/lang/de-informal/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/import.txt8
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/lang.php95
-rw-r--r--wiki/lib/plugins/usermanager/lang/de/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/el/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/el/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/el/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/el/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/el/lang.php54
-rw-r--r--wiki/lib/plugins/usermanager/lang/el/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/lang.php86
-rw-r--r--wiki/lib/plugins/usermanager/lang/en/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/lang.php69
-rw-r--r--wiki/lib/plugins/usermanager/lang/eo/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/lang.php100
-rw-r--r--wiki/lib/plugins/usermanager/lang/es/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/et/lang.php33
-rw-r--r--wiki/lib/plugins/usermanager/lang/eu/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eu/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eu/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eu/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/eu/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/eu/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/import.txt6
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/lang.php83
-rw-r--r--wiki/lib/plugins/usermanager/lang/fa/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fi/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fi/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fi/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fi/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fi/lang.php61
-rw-r--r--wiki/lib/plugins/usermanager/lang/fi/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/import.txt11
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/lang.php93
-rw-r--r--wiki/lib/plugins/usermanager/lang/fr/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/gl/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/gl/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/gl/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/gl/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/gl/lang.php49
-rw-r--r--wiki/lib/plugins/usermanager/lang/gl/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/he/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/he/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/he/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/he/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/he/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/he/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/lang.php74
-rw-r--r--wiki/lib/plugins/usermanager/lang/hr/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/add.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/delete.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/edit.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/intro.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/lang.php74
-rw-r--r--wiki/lib/plugins/usermanager/lang/hu/list.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/ia/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ia/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ia/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ia/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ia/lang.php49
-rw-r--r--wiki/lib/plugins/usermanager/lang/ia/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/id/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/id/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/id/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/id/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/id/lang.php48
-rw-r--r--wiki/lib/plugins/usermanager/lang/id/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/is/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/is/lang.php18
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/lang.php84
-rw-r--r--wiki/lib/plugins/usermanager/lang/it/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/import.txt10
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/lang.php82
-rw-r--r--wiki/lib/plugins/usermanager/lang/ja/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/kk/lang.php9
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/lang.php81
-rw-r--r--wiki/lib/plugins/usermanager/lang/ko/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/la/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/la/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/la/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/la/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/la/lang.php47
-rw-r--r--wiki/lib/plugins/usermanager/lang/la/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/lb/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/lt/add.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/lt/delete.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/lt/edit.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/lt/intro.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/lt/lang.php49
-rw-r--r--wiki/lib/plugins/usermanager/lang/lt/list.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/lang.php48
-rw-r--r--wiki/lib/plugins/usermanager/lang/lv/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mk/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mk/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mk/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mk/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mk/lang.php38
-rw-r--r--wiki/lib/plugins/usermanager/lang/mk/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mr/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mr/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mr/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mr/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/mr/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/mr/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ne/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ne/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ne/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ne/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ne/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/ne/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/import.txt8
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/lang.php84
-rw-r--r--wiki/lib/plugins/usermanager/lang/nl/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/import.txt7
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/lang.php87
-rw-r--r--wiki/lib/plugins/usermanager/lang/no/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/import.txt6
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/lang.php86
-rw-r--r--wiki/lib/plugins/usermanager/lang/pl/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/lang.php90
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt-br/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/lang.php77
-rw-r--r--wiki/lib/plugins/usermanager/lang/pt/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ro/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ro/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ro/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ro/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ro/lang.php56
-rw-r--r--wiki/lib/plugins/usermanager/lang/ro/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/lang.php92
-rw-r--r--wiki/lib/plugins/usermanager/lang/ru/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/add.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/delete.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/edit.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/intro.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/lang.php74
-rw-r--r--wiki/lib/plugins/usermanager/lang/sk/list.txt2
-rw-r--r--wiki/lib/plugins/usermanager/lang/sl/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sl/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sl/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sl/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sl/lang.php70
-rw-r--r--wiki/lib/plugins/usermanager/lang/sl/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sq/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sq/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sq/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sq/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sq/lang.php48
-rw-r--r--wiki/lib/plugins/usermanager/lang/sq/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sr/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sr/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sr/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sr/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sr/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/sr/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sv/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sv/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sv/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sv/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/sv/lang.php73
-rw-r--r--wiki/lib/plugins/usermanager/lang/sv/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/th/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/th/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/th/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/th/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/th/lang.php48
-rw-r--r--wiki/lib/plugins/usermanager/lang/th/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/tr/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/tr/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/tr/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/tr/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/tr/lang.php52
-rw-r--r--wiki/lib/plugins/usermanager/lang/tr/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/uk/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/uk/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/uk/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/uk/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/uk/lang.php50
-rw-r--r--wiki/lib/plugins/usermanager/lang/uk/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/import.txt9
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/lang.php76
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh-tw/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/add.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/delete.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/edit.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/import.txt7
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/intro.txt1
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/lang.php85
-rw-r--r--wiki/lib/plugins/usermanager/lang/zh/list.txt1
-rw-r--r--wiki/lib/plugins/usermanager/plugin.info.txt7
-rw-r--r--wiki/lib/plugins/usermanager/script.js8
-rw-r--r--wiki/lib/plugins/usermanager/style.css33
1358 files changed, 47958 insertions, 0 deletions
diff --git a/wiki/lib/plugins/acl/action.php b/wiki/lib/plugins/acl/action.php
new file mode 100644
index 0000000..a7226f5
--- /dev/null
+++ b/wiki/lib/plugins/acl/action.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * AJAX call handler for ACL plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Register handler
+ */
+class action_plugin_acl extends DokuWiki_Action_Plugin {
+
+    /**
+     * Registers a callback function for a given event
+     *
+     * @param Doku_Event_Handler $controller DokuWiki's event controller object
+     * @return void
+     */
+    public function register(Doku_Event_Handler $controller) {
+
+        $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax_call_acl');
+
+    }
+
+    /**
+     * AJAX call handler for ACL plugin
+     *
+     * @param Doku_Event $event  event object by reference
+     * @param mixed $param  empty
+     * @return void
+     */
+
+    public function handle_ajax_call_acl(Doku_Event &$event, $param) {
+        if($event->data !== 'plugin_acl') {
+            return;
+        }
+        $event->stopPropagation();
+        $event->preventDefault();
+
+        global $ID;
+        global $INPUT;
+
+        if(!auth_isadmin()) {
+            echo 'for admins only';
+            return;
+        }
+        if(!checkSecurityToken()) {
+            echo 'CRSF Attack';
+            return;
+        }
+
+        $ID = getID();
+
+        /** @var $acl admin_plugin_acl */
+        $acl = plugin_load('admin', 'acl');
+        $acl->handle();
+
+        $ajax = $INPUT->str('ajax');
+        header('Content-Type: text/html; charset=utf-8');
+
+        if($ajax == 'info') {
+            $acl->_html_info();
+        } elseif($ajax == 'tree') {
+
+            $ns = $INPUT->str('ns');
+            if($ns == '*') {
+                $ns = '';
+            }
+            $ns = cleanID($ns);
+            $lvl = count(explode(':', $ns));
+            $ns = utf8_encodeFN(str_replace(':', '/', $ns));
+
+            $data = $acl->_get_tree($ns, $ns);
+
+            foreach(array_keys($data) as $item) {
+                $data[$item]['level'] = $lvl + 1;
+            }
+            echo html_buildlist(
+                $data, 'acl', array($acl, '_html_list_acl'),
+                array($acl, '_html_li_acl')
+            );
+        }
+    }
+}
diff --git a/wiki/lib/plugins/acl/admin.php b/wiki/lib/plugins/acl/admin.php
new file mode 100644
index 0000000..6edc6c6
--- /dev/null
+++ b/wiki/lib/plugins/acl/admin.php
@@ -0,0 +1,815 @@
+<?php
+/**
+ * ACL administration functions
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Anika Henke <anika@selfthinker.org> (concepts)
+ * @author     Frank Schubert <frank@schokilade.de> (old version)
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class admin_plugin_acl extends DokuWiki_Admin_Plugin {
+    var $acl = null;
+    var $ns  = null;
+    /**
+     * The currently selected item, associative array with id and type.
+     * Populated from (in this order):
+     * $_REQUEST['current_ns']
+     * $_REQUEST['current_id']
+     * $ns
+     * $ID
+     */
+    var $current_item = null;
+    var $who = '';
+    var $usersgroups = array();
+    var $specials = array();
+
+    /**
+     * return prompt for admin menu
+     */
+    function getMenuText($language) {
+        return $this->getLang('admin_acl');
+    }
+
+    /**
+     * return sort order for position in admin menu
+     */
+    function getMenuSort() {
+        return 1;
+    }
+
+    /**
+     * handle user request
+     *
+     * Initializes internal vars and handles modifications
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function handle() {
+        global $AUTH_ACL;
+        global $ID;
+        global $auth;
+        global $config_cascade;
+        global $INPUT;
+
+        // fresh 1:1 copy without replacements
+        $AUTH_ACL = file($config_cascade['acl']['default']);
+
+        // namespace given?
+        if($INPUT->str('ns') == '*'){
+            $this->ns = '*';
+        }else{
+            $this->ns = cleanID($INPUT->str('ns'));
+        }
+
+        if ($INPUT->str('current_ns')) {
+            $this->current_item = array('id' => cleanID($INPUT->str('current_ns')), 'type' => 'd');
+        } elseif ($INPUT->str('current_id')) {
+            $this->current_item = array('id' => cleanID($INPUT->str('current_id')), 'type' => 'f');
+        } elseif ($this->ns) {
+            $this->current_item = array('id' => $this->ns, 'type' => 'd');
+        } else {
+            $this->current_item = array('id' => $ID, 'type' => 'f');
+        }
+
+        // user or group choosen?
+        $who = trim($INPUT->str('acl_w'));
+        if($INPUT->str('acl_t') == '__g__' && $who){
+            $this->who = '@'.ltrim($auth->cleanGroup($who),'@');
+        }elseif($INPUT->str('acl_t') == '__u__' && $who){
+            $this->who = ltrim($who,'@');
+            if($this->who != '%USER%' && $this->who != '%GROUP%'){ #keep wildcard as is
+                $this->who = $auth->cleanUser($this->who);
+            }
+        }elseif($INPUT->str('acl_t') &&
+                $INPUT->str('acl_t') != '__u__' &&
+                $INPUT->str('acl_t') != '__g__'){
+            $this->who = $INPUT->str('acl_t');
+        }elseif($who){
+            $this->who = $who;
+        }
+
+        // handle modifications
+        if($INPUT->has('cmd') && checkSecurityToken()){
+            $cmd = $INPUT->extract('cmd')->str('cmd');
+
+            // scope for modifications
+            if($this->ns){
+                if($this->ns == '*'){
+                    $scope = '*';
+                }else{
+                    $scope = $this->ns.':*';
+                }
+            }else{
+                $scope = $ID;
+            }
+
+            if($cmd == 'save' && $scope && $this->who && $INPUT->has('acl')){
+                // handle additions or single modifications
+                $this->_acl_del($scope, $this->who);
+                $this->_acl_add($scope, $this->who, $INPUT->int('acl'));
+            }elseif($cmd == 'del' && $scope && $this->who){
+                // handle single deletions
+                $this->_acl_del($scope, $this->who);
+            }elseif($cmd == 'update'){
+                $acl = $INPUT->arr('acl');
+
+                // handle update of the whole file
+                foreach($INPUT->arr('del') as $where => $names){
+                    // remove all rules marked for deletion
+                    foreach($names as $who)
+                        unset($acl[$where][$who]);
+                }
+                // prepare lines
+                $lines = array();
+                // keep header
+                foreach($AUTH_ACL as $line){
+                    if($line{0} == '#'){
+                        $lines[] = $line;
+                    }else{
+                        break;
+                    }
+                }
+                // re-add all rules
+                foreach($acl as $where => $opt){
+                    foreach($opt as $who => $perm){
+                        if ($who[0]=='@') {
+                            if ($who!='@ALL') {
+                                $who = '@'.ltrim($auth->cleanGroup($who),'@');
+                            }
+                        } elseif ($who != '%USER%' && $who != '%GROUP%'){ #keep wildcard as is
+                            $who = $auth->cleanUser($who);
+                        }
+                        $who = auth_nameencode($who,true);
+                        $lines[] = "$where\t$who\t$perm\n";
+                    }
+                }
+                // save it
+                io_saveFile($config_cascade['acl']['default'], join('',$lines));
+            }
+
+            // reload ACL config
+            $AUTH_ACL = file($config_cascade['acl']['default']);
+        }
+
+        // initialize ACL array
+        $this->_init_acl_config();
+    }
+
+    /**
+     * ACL Output function
+     *
+     * print a table with all significant permissions for the
+     * current id
+     *
+     * @author  Frank Schubert <frank@schokilade.de>
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     */
+    function html() {
+        echo '<div id="acl_manager">'.NL;
+        echo '<h1>'.$this->getLang('admin_acl').'</h1>'.NL;
+        echo '<div class="level1">'.NL;
+
+        echo '<div id="acl__tree">'.NL;
+        $this->_html_explorer();
+        echo '</div>'.NL;
+
+        echo '<div id="acl__detail">'.NL;
+        $this->_html_detail();
+        echo '</div>'.NL;
+        echo '</div>'.NL;
+
+        echo '<div class="clearer"></div>';
+        echo '<h2>'.$this->getLang('current').'</h2>'.NL;
+        echo '<div class="level2">'.NL;
+        $this->_html_table();
+        echo '</div>'.NL;
+
+        echo '<div class="footnotes"><div class="fn">'.NL;
+        echo '<sup><a id="fn__1" class="fn_bot" href="#fnt__1">1)</a></sup>'.NL;
+        echo $this->getLang('p_include');
+        echo '</div></div>';
+
+        echo '</div>'.NL;
+    }
+
+    /**
+     * returns array with set options for building links
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _get_opts($addopts=null){
+        $opts = array(
+                    'do'=>'admin',
+                    'page'=>'acl',
+                );
+        if($this->ns) $opts['ns'] = $this->ns;
+        if($this->who) $opts['acl_w'] = $this->who;
+
+        if(is_null($addopts)) return $opts;
+        return array_merge($opts, $addopts);
+    }
+
+    /**
+     * Display a tree menu to select a page or namespace
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_explorer(){
+        global $conf;
+        global $ID;
+        global $lang;
+
+        $ns  = $this->ns;
+        if(empty($ns)){
+            $ns = dirname(str_replace(':','/',$ID));
+            if($ns == '.') $ns ='';
+        }elseif($ns == '*'){
+            $ns ='';
+        }
+        $ns  = utf8_encodeFN(str_replace(':','/',$ns));
+
+        $data = $this->_get_tree($ns);
+
+        // wrap a list with the root level around the other namespaces
+        array_unshift($data, array( 'level' => 0, 'id' => '*', 'type' => 'd',
+                   'open' =>'true', 'label' => '['.$lang['mediaroot'].']'));
+
+        echo html_buildlist($data,'acl',
+                            array($this,'_html_list_acl'),
+                            array($this,'_html_li_acl'));
+
+    }
+
+    /**
+     * get a combined list of media and page files
+     *
+     * @param string $folder an already converted filesystem folder of the current namespace
+     * @param string $limit  limit the search to this folder
+     */
+    function _get_tree($folder,$limit=''){
+        global $conf;
+
+        // read tree structure from pages and media
+        $data = array();
+        search($data,$conf['datadir'],'search_index',array('ns' => $folder),$limit);
+        $media = array();
+        search($media,$conf['mediadir'],'search_index',array('ns' => $folder, 'nofiles' => true),$limit);
+        $data = array_merge($data,$media);
+        unset($media);
+
+        // combine by sorting and removing duplicates
+        usort($data,array($this,'_tree_sort'));
+        $count = count($data);
+        if($count>0) for($i=1; $i<$count; $i++){
+            if($data[$i-1]['id'] == $data[$i]['id'] && $data[$i-1]['type'] == $data[$i]['type']) {
+                unset($data[$i]);
+                $i++;  // duplicate found, next $i can't be a duplicate, so skip forward one
+            }
+        }
+        return $data;
+    }
+
+    /**
+     * usort callback
+     *
+     * Sorts the combined trees of media and page files
+     */
+    function _tree_sort($a,$b){
+        // handle the trivial cases first
+        if ($a['id'] == '') return -1;
+        if ($b['id'] == '') return 1;
+        // split up the id into parts
+        $a_ids = explode(':', $a['id']);
+        $b_ids = explode(':', $b['id']);
+        // now loop through the parts
+        while (count($a_ids) && count($b_ids)) {
+            // compare each level from upper to lower
+            // until a non-equal component is found
+            $cur_result = strcmp(array_shift($a_ids), array_shift($b_ids));
+            if ($cur_result) {
+                // if one of the components is the last component and is a file
+                // and the other one is either of a deeper level or a directory,
+                // the file has to come after the deeper level or directory
+                if (empty($a_ids) && $a['type'] == 'f' && (count($b_ids) || $b['type'] == 'd')) return 1;
+                if (empty($b_ids) && $b['type'] == 'f' && (count($a_ids) || $a['type'] == 'd')) return -1;
+                return $cur_result;
+            }
+        }
+        // The two ids seem to be equal. One of them might however refer
+        // to a page, one to a namespace, the namespace needs to be first.
+        if (empty($a_ids) && empty($b_ids)) {
+            if ($a['type'] == $b['type']) return 0;
+            if ($a['type'] == 'f') return 1;
+            return -1;
+        }
+        // Now the empty part is either a page in the parent namespace
+        // that obviously needs to be after the namespace
+        // Or it is the namespace that contains the other part and should be
+        // before that other part.
+        if (empty($a_ids)) return ($a['type'] == 'd') ? -1 : 1;
+        if (empty($b_ids)) return ($b['type'] == 'd') ? 1 : -1;
+    }
+
+    /**
+     * Display the current ACL for selected where/who combination with
+     * selectors and modification form
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_detail(){
+        global $ID;
+
+        echo '<form action="'.wl().'" method="post" accept-charset="utf-8"><div class="no">'.NL;
+
+        echo '<div id="acl__user">';
+        echo $this->getLang('acl_perms').' ';
+        $inl =  $this->_html_select();
+        echo '<input type="text" name="acl_w" class="edit" value="'.(($inl)?'':hsc(ltrim($this->who,'@'))).'" />'.NL;
+        echo '<button type="submit">'.$this->getLang('btn_select').'</button>'.NL;
+        echo '</div>'.NL;
+
+        echo '<div id="acl__info">';
+        $this->_html_info();
+        echo '</div>';
+
+        echo '<input type="hidden" name="ns" value="'.hsc($this->ns).'" />'.NL;
+        echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
+        echo '<input type="hidden" name="do" value="admin" />'.NL;
+        echo '<input type="hidden" name="page" value="acl" />'.NL;
+        echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />'.NL;
+        echo '</div></form>'.NL;
+    }
+
+    /**
+     * Print info and editor
+     */
+    function _html_info(){
+        global $ID;
+
+        if($this->who){
+            $current = $this->_get_exact_perm();
+
+            // explain current permissions
+            $this->_html_explain($current);
+            // load editor
+            $this->_html_acleditor($current);
+        }else{
+            echo '<p>';
+            if($this->ns){
+                printf($this->getLang('p_choose_ns'),hsc($this->ns));
+            }else{
+                printf($this->getLang('p_choose_id'),hsc($ID));
+            }
+            echo '</p>';
+
+            echo $this->locale_xhtml('help');
+        }
+    }
+
+    /**
+     * Display the ACL editor
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_acleditor($current){
+        global $lang;
+
+        echo '<fieldset>';
+        if(is_null($current)){
+            echo '<legend>'.$this->getLang('acl_new').'</legend>';
+        }else{
+            echo '<legend>'.$this->getLang('acl_mod').'</legend>';
+        }
+
+        echo $this->_html_checkboxes($current,empty($this->ns),'acl');
+
+        if(is_null($current)){
+            echo '<button type="submit" name="cmd[save]">'.$lang['btn_save'].'</button>'.NL;
+        }else{
+            echo '<button type="submit" name="cmd[save]">'.$lang['btn_update'].'</button>'.NL;
+            echo '<button type="submit" name="cmd[del]">'.$lang['btn_delete'].'</button>'.NL;
+        }
+
+        echo '</fieldset>';
+    }
+
+    /**
+     * Explain the currently set permissions in plain english/$lang
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_explain($current){
+        global $ID;
+        global $auth;
+
+        $who = $this->who;
+        $ns  = $this->ns;
+
+        // prepare where to check
+        if($ns){
+            if($ns == '*'){
+                $check='*';
+            }else{
+                $check=$ns.':*';
+            }
+        }else{
+            $check = $ID;
+        }
+
+        // prepare who to check
+        if($who{0} == '@'){
+            $user   = '';
+            $groups = array(ltrim($who,'@'));
+        }else{
+            $user = $who;
+            $info = $auth->getUserData($user);
+            if($info === false){
+                $groups = array();
+            }else{
+                $groups = $info['grps'];
+            }
+        }
+
+        // check the permissions
+        $perm = auth_aclcheck($check,$user,$groups);
+
+        // build array of named permissions
+        $names = array();
+        if($perm){
+            if($ns){
+                if($perm >= AUTH_DELETE) $names[] = $this->getLang('acl_perm16');
+                if($perm >= AUTH_UPLOAD) $names[] = $this->getLang('acl_perm8');
+                if($perm >= AUTH_CREATE) $names[] = $this->getLang('acl_perm4');
+            }
+            if($perm >= AUTH_EDIT) $names[] = $this->getLang('acl_perm2');
+            if($perm >= AUTH_READ) $names[] = $this->getLang('acl_perm1');
+            $names = array_reverse($names);
+        }else{
+            $names[] = $this->getLang('acl_perm0');
+        }
+
+        // print permission explanation
+        echo '<p>';
+        if($user){
+            if($ns){
+                printf($this->getLang('p_user_ns'),hsc($who),hsc($ns),join(', ',$names));
+            }else{
+                printf($this->getLang('p_user_id'),hsc($who),hsc($ID),join(', ',$names));
+            }
+        }else{
+            if($ns){
+                printf($this->getLang('p_group_ns'),hsc(ltrim($who,'@')),hsc($ns),join(', ',$names));
+            }else{
+                printf($this->getLang('p_group_id'),hsc(ltrim($who,'@')),hsc($ID),join(', ',$names));
+            }
+        }
+        echo '</p>';
+
+        // add note if admin
+        if($perm == AUTH_ADMIN){
+            echo '<p>'.$this->getLang('p_isadmin').'</p>';
+        }elseif(is_null($current)){
+            echo '<p>'.$this->getLang('p_inherited').'</p>';
+        }
+    }
+
+
+    /**
+     * Item formatter for the tree view
+     *
+     * User function for html_buildlist()
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_list_acl($item){
+        $ret = '';
+        // what to display
+        if(!empty($item['label'])){
+            $base = $item['label'];
+        }else{
+            $base = ':'.$item['id'];
+            $base = substr($base,strrpos($base,':')+1);
+        }
+
+        // highlight?
+        if( ($item['type']== $this->current_item['type'] && $item['id'] == $this->current_item['id'])) {
+            $cl = ' cur';
+        } else {
+            $cl = '';
+        }
+
+        // namespace or page?
+        if($item['type']=='d'){
+            if($item['open']){
+                $img   = DOKU_BASE.'lib/images/minus.gif';
+                $alt   = '−';
+            }else{
+                $img   = DOKU_BASE.'lib/images/plus.gif';
+                $alt   = '+';
+            }
+            $ret .= '<img src="'.$img.'" alt="'.$alt.'" />';
+            $ret .= '<a href="'.wl('',$this->_get_opts(array('ns'=>$item['id'],'sectok'=>getSecurityToken()))).'" class="idx_dir'.$cl.'">';
+            $ret .= $base;
+            $ret .= '</a>';
+        }else{
+            $ret .= '<a href="'.wl('',$this->_get_opts(array('id'=>$item['id'],'ns'=>'','sectok'=>getSecurityToken()))).'" class="wikilink1'.$cl.'">';
+            $ret .= noNS($item['id']);
+            $ret .= '</a>';
+        }
+        return $ret;
+    }
+
+
+    function _html_li_acl($item){
+        return '<li class="level' . $item['level'] . ' ' .
+               ($item['open'] ? 'open' : 'closed') . '">';
+    }
+
+
+    /**
+     * Get current ACL settings as multidim array
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _init_acl_config(){
+        global $AUTH_ACL;
+        global $conf;
+        $acl_config=array();
+        $usersgroups = array();
+
+        // get special users and groups
+        $this->specials[] = '@ALL';
+        $this->specials[] = '@'.$conf['defaultgroup'];
+        if($conf['manager'] != '!!not set!!'){
+            $this->specials = array_merge($this->specials,
+                                          array_map('trim',
+                                                    explode(',',$conf['manager'])));
+        }
+        $this->specials = array_filter($this->specials);
+        $this->specials = array_unique($this->specials);
+        sort($this->specials);
+
+        foreach($AUTH_ACL as $line){
+            $line = trim(preg_replace('/#.*$/','',$line)); //ignore comments
+            if(!$line) continue;
+
+            $acl = preg_split('/[ \t]+/',$line);
+            //0 is pagename, 1 is user, 2 is acl
+
+            $acl[1] = rawurldecode($acl[1]);
+            $acl_config[$acl[0]][$acl[1]] = $acl[2];
+
+            // store non-special users and groups for later selection dialog
+            $ug = $acl[1];
+            if(in_array($ug,$this->specials)) continue;
+            $usersgroups[] = $ug;
+        }
+
+        $usersgroups = array_unique($usersgroups);
+        sort($usersgroups);
+        ksort($acl_config);
+
+        $this->acl = $acl_config;
+        $this->usersgroups = $usersgroups;
+    }
+
+    /**
+     * Display all currently set permissions in a table
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_table(){
+        global $lang;
+        global $ID;
+
+        echo '<form action="'.wl().'" method="post" accept-charset="utf-8"><div class="no">'.NL;
+        if($this->ns){
+            echo '<input type="hidden" name="ns" value="'.hsc($this->ns).'" />'.NL;
+        }else{
+            echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
+        }
+        echo '<input type="hidden" name="acl_w" value="'.hsc($this->who).'" />'.NL;
+        echo '<input type="hidden" name="do" value="admin" />'.NL;
+        echo '<input type="hidden" name="page" value="acl" />'.NL;
+        echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />'.NL;
+        echo '<div class="table">';
+        echo '<table class="inline">';
+        echo '<tr>';
+        echo '<th>'.$this->getLang('where').'</th>';
+        echo '<th>'.$this->getLang('who').'</th>';
+        echo '<th>'.$this->getLang('perm').'<sup><a id="fnt__1" class="fn_top" href="#fn__1">1)</a></sup></th>';
+        echo '<th>'.$lang['btn_delete'].'</th>';
+        echo '</tr>';
+        foreach($this->acl as $where => $set){
+            foreach($set as $who => $perm){
+                echo '<tr>';
+                echo '<td>';
+                if(substr($where,-1) == '*'){
+                    echo '<span class="aclns">'.hsc($where).'</span>';
+                    $ispage = false;
+                }else{
+                    echo '<span class="aclpage">'.hsc($where).'</span>';
+                    $ispage = true;
+                }
+                echo '</td>';
+
+                echo '<td>';
+                if($who{0} == '@'){
+                    echo '<span class="aclgroup">'.hsc($who).'</span>';
+                }else{
+                    echo '<span class="acluser">'.hsc($who).'</span>';
+                }
+                echo '</td>';
+
+                echo '<td>';
+                echo $this->_html_checkboxes($perm,$ispage,'acl['.$where.']['.$who.']');
+                echo '</td>';
+
+                echo '<td class="check">';
+                echo '<input type="checkbox" name="del['.hsc($where).'][]" value="'.hsc($who).'" />';
+                echo '</td>';
+                echo '</tr>';
+            }
+        }
+
+        echo '<tr>';
+        echo '<th class="action" colspan="4">';
+        echo '<button type="submit" name="cmd[update]">'.$lang['btn_update'].'</button>';
+        echo '</th>';
+        echo '</tr>';
+        echo '</table>';
+        echo '</div>';
+        echo '</div></form>'.NL;
+    }
+
+    /**
+     * Returns the permission which were set for exactly the given user/group
+     * and page/namespace. Returns null if no exact match is available
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    function _get_exact_perm(){
+        global $ID;
+        if($this->ns){
+            if($this->ns == '*'){
+                $check = '*';
+            }else{
+                $check = $this->ns.':*';
+            }
+        }else{
+            $check = $ID;
+        }
+
+        if(isset($this->acl[$check][$this->who])){
+            return $this->acl[$check][$this->who];
+        }else{
+            return null;
+        }
+    }
+
+    /**
+     * adds new acl-entry to conf/acl.auth.php
+     *
+     * @author  Frank Schubert <frank@schokilade.de>
+     */
+    function _acl_add($acl_scope, $acl_user, $acl_level){
+        global $config_cascade;
+        $acl_user = auth_nameencode($acl_user,true);
+
+        // max level for pagenames is edit
+        if(strpos($acl_scope,'*') === false) {
+            if($acl_level > AUTH_EDIT) $acl_level = AUTH_EDIT;
+        }
+
+        $new_acl = "$acl_scope\t$acl_user\t$acl_level\n";
+
+        return io_saveFile($config_cascade['acl']['default'], $new_acl, true);
+    }
+
+    /**
+     * remove acl-entry from conf/acl.auth.php
+     *
+     * @author  Frank Schubert <frank@schokilade.de>
+     */
+    function _acl_del($acl_scope, $acl_user){
+        global $config_cascade;
+        $acl_user = auth_nameencode($acl_user,true);
+
+        $acl_pattern = '^'.preg_quote($acl_scope,'/').'[ \t]+'.$acl_user.'[ \t]+[0-8].*$';
+
+        return io_deleteFromFile($config_cascade['acl']['default'], "/$acl_pattern/", true);
+    }
+
+    /**
+     * print the permission radio boxes
+     *
+     * @author  Frank Schubert <frank@schokilade.de>
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_checkboxes($setperm,$ispage,$name){
+        global $lang;
+
+        static $label = 0; //number labels
+        $ret = '';
+
+        if($ispage && $setperm > AUTH_EDIT) $setperm = AUTH_EDIT;
+
+        foreach(array(AUTH_NONE,AUTH_READ,AUTH_EDIT,AUTH_CREATE,AUTH_UPLOAD,AUTH_DELETE) as $perm){
+            $label += 1;
+
+            //general checkbox attributes
+            $atts = array( 'type'  => 'radio',
+                           'id'    => 'pbox'.$label,
+                           'name'  => $name,
+                           'value' => $perm );
+            //dynamic attributes
+            if(!is_null($setperm) && $setperm == $perm) $atts['checked']  = 'checked';
+            if($ispage && $perm > AUTH_EDIT){
+                $atts['disabled'] = 'disabled';
+                $class = ' class="disabled"';
+            }else{
+                $class = '';
+            }
+
+            //build code
+            $ret .= '<label for="pbox'.$label.'"'.$class.'>';
+            $ret .= '<input '.buildAttributes($atts).' />&#160;';
+            $ret .= $this->getLang('acl_perm'.$perm);
+            $ret .= '</label>'.NL;
+        }
+        return $ret;
+    }
+
+    /**
+     * Print a user/group selector (reusing already used users and groups)
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     */
+    function _html_select(){
+        $inlist = false;
+        $usel = '';
+        $gsel = '';
+
+        if($this->who &&
+           !in_array($this->who,$this->usersgroups) &&
+           !in_array($this->who,$this->specials)){
+
+            if($this->who{0} == '@'){
+                $gsel = ' selected="selected"';
+            }else{
+                $usel = ' selected="selected"';
+            }
+        }else{
+            $inlist = true;
+        }
+
+        echo '<select name="acl_t" class="edit">'.NL;
+        echo '  <option value="__g__" class="aclgroup"'.$gsel.'>'.$this->getLang('acl_group').'</option>'.NL;
+        echo '  <option value="__u__"  class="acluser"'.$usel.'>'.$this->getLang('acl_user').'</option>'.NL;
+        if (!empty($this->specials)) {
+            echo '  <optgroup label="&#160;">'.NL;
+            foreach($this->specials as $ug){
+                if($ug == $this->who){
+                    $sel    = ' selected="selected"';
+                    $inlist = true;
+                }else{
+                    $sel = '';
+                }
+
+                if($ug{0} == '@'){
+                        echo '  <option value="'.hsc($ug).'" class="aclgroup"'.$sel.'>'.hsc($ug).'</option>'.NL;
+                }else{
+                        echo '  <option value="'.hsc($ug).'" class="acluser"'.$sel.'>'.hsc($ug).'</option>'.NL;
+                }
+            }
+            echo '  </optgroup>'.NL;
+        }
+        if (!empty($this->usersgroups)) {
+            echo '  <optgroup label="&#160;">'.NL;
+            foreach($this->usersgroups as $ug){
+                if($ug == $this->who){
+                    $sel    = ' selected="selected"';
+                    $inlist = true;
+                }else{
+                    $sel = '';
+                }
+
+                if($ug{0} == '@'){
+                        echo '  <option value="'.hsc($ug).'" class="aclgroup"'.$sel.'>'.hsc($ug).'</option>'.NL;
+                }else{
+                        echo '  <option value="'.hsc($ug).'" class="acluser"'.$sel.'>'.hsc($ug).'</option>'.NL;
+                }
+            }
+            echo '  </optgroup>'.NL;
+        }
+        echo '</select>'.NL;
+        return $inlist;
+    }
+}
diff --git a/wiki/lib/plugins/acl/admin.svg b/wiki/lib/plugins/acl/admin.svg
new file mode 100644
index 0000000..b5cf001
--- /dev/null
+++ b/wiki/lib/plugins/acl/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M22 18v4h-4v-3h-3v-3h-3l-2.26-2.26c-.55.17-1.13.26-1.74.26a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6c0 .61-.09 1.19-.26 1.74L22 18M7 5a2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-2-2z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/af/lang.php b/wiki/lib/plugins/acl/lang/af/lang.php
new file mode 100644
index 0000000..04d9b0a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/af/lang.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Afrikaans language file
+ *
+ */
+$lang['page']                  = 'Bladsy';
+$lang['acl_perm0']             = 'Niks';
+$lang['acl_perm1']             = 'Lees';
+$lang['acl_perm2']             = 'Verander';
+$lang['acl_perm4']             = 'Maak';
diff --git a/wiki/lib/plugins/acl/lang/ar/help.txt b/wiki/lib/plugins/acl/lang/ar/help.txt
new file mode 100644
index 0000000..70f5cf6
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ar/help.txt
@@ -0,0 +1,11 @@
+=== مساعدة سريعة: ===
+
+على هذه الصفحة يمكنك إضافة أو إزالة الصلاحيات الخاصة بالنطاقات و الصفحات في ويكيتك.
+
+الشريط الأيسر يظهر كل النطاقات و الصفحات المتاحة.
+
+النموذج في الأسفل يمكنك من رؤية و تعديل الصلاحيات لمستخدم محدد أو مجموعة .
+
+في الجدول في الأسفل تجد قواعد التحكم بالوصول معروضة. يمكنك استخدامها لحذف أو تغيير عدة قواعد بسرعة.
+
+قراءة [[doku>acl|المستندات الرسمية عن ACL]] قد يساعدك على الفهم الكامل لطريقة عمل التحكم بالوصول في دوكو ويكي.
diff --git a/wiki/lib/plugins/acl/lang/ar/lang.php b/wiki/lib/plugins/acl/lang/ar/lang.php
new file mode 100644
index 0000000..89fe27a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ar/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Mostafa Hussein <mostafa@gmail.com>
+ * @author Yaman Hokan <always.smile.yh@hotmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
+ * @author uahello@gmail.com
+ */
+$lang['admin_acl']             = 'إدارة قوائم التحكم بالدخول';
+$lang['acl_group']             = 'مجموعة:';
+$lang['acl_user']              = 'مستخدم:';
+$lang['acl_perms']             = 'ترخيص لـ';
+$lang['page']                  = 'صفحة';
+$lang['namespace']             = 'فضاء التسمية';
+$lang['btn_select']            = 'اختيار';
+$lang['p_user_id']             = 'المستخدم<b class="acluser">%s</b> عنده حاليا الصلاحيات التالية على الصفحة<b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'المستخدم <b class="acluser">%s</b> عنده حاليا الصلاحيات التالية في النطاق<b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'أعضاء مجموعة<b class="aclgroup">%s</b> عندهم حاليا الصلاحيات التالية على الصفحة page <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'أعضاء مجموعة <b class="aclgroup">%s</b> عندهم حاليا الصلاحيات التالية في النطاق <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'رجاء <b>مستخدما أو مجموعة</b> في النموذج أعلاه لعرض أو تحرير اعداد الصلاحيات للصفحة<b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'رجاء Please <b>أدخل مستخدما أو مجموعة</b> في النموذج أعلاه لعرض أو تحرير اعداد الصلاحيات للنطاق<b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'لاحظ: هذه الصلاحيات لم تنشأ إراديا بل وُرثت من مجموعات أخرى أو نطاقات أعلى.';
+$lang['p_isadmin']             = 'لاحظ: المجموعة أو المستخدم المحدد عندهم دائما صلاحيات كاملة بسبب ضبطهم كمستخدمين متفوقين.';
+$lang['p_include']             = 'الصلاحيات الاعلى تتضمن الأخفض. صلاحيات الإنشاء ، والرفع، والحذف تطبق فقط على النطاقات، وليس على الصفحات.';
+$lang['current']               = 'قواعد ACL الحالية';
+$lang['where']                 = 'الصفحة/النطاق';
+$lang['who']                   = 'اسم المستخدم / المجموعة';
+$lang['perm']                  = 'التصاريح';
+$lang['acl_perm0']             = 'لا يوجد';
+$lang['acl_perm1']             = 'قراءة';
+$lang['acl_perm2']             = 'تحرير';
+$lang['acl_perm4']             = 'إنشاء';
+$lang['acl_perm8']             = 'تحميل';
+$lang['acl_perm16']            = 'مسح';
+$lang['acl_new']               = 'أضف أضافة جديدة';
+$lang['acl_mod']               = 'عدل المدخلة';
diff --git a/wiki/lib/plugins/acl/lang/bg/help.txt b/wiki/lib/plugins/acl/lang/bg/help.txt
new file mode 100644
index 0000000..ffda1ff
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/bg/help.txt
@@ -0,0 +1,9 @@
+=== Помощ ===
+
+От тук можете да добавяте и премахвате права за именни пространства и страници във вашето Wiki.
+  * левият панел показва всички налични именни пространства и страници.
+  * формата отгоре ви позволява да преглеждате и променяте правата на избран потребител или група.
+  * в таблицата долу са показани всички актуални правила за контрол на достъпа.
+Можете да я ползвате за бързо изтриване или промяна на множество правила.
+
+За да разберете как работи контрола на достъпа в DokuWiki трябва да прочетете [[doku>acl|документацията относно ACL]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/bg/lang.php b/wiki/lib/plugins/acl/lang/bg/lang.php
new file mode 100644
index 0000000..648b91e
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/bg/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
+ * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['admin_acl']             = 'Управление на списъците за достъп';
+$lang['acl_group']             = 'Група:';
+$lang['acl_user']              = 'Потребител:';
+$lang['acl_perms']             = 'Права за';
+$lang['page']                  = 'Страница';
+$lang['namespace']             = 'Именно пространство';
+$lang['btn_select']            = 'Избери';
+$lang['p_user_id']             = 'Потребителят <b class="acluser">%s</b> в момента има следните права за страницата <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Потребителят <b class="acluser">%s</b> в момента има следните права за именното пространство <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Членовете на групата <b class="aclgroup">%s</b> в момента имат следните права за страницата <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Членовете на групата <b class="aclgroup">%s</b> в момента имат следните права за именното пространство <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Моля, <b>въведете потребител или група</b> в полето отгоре, за да видите или промените правата за страницата <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Моля, <b>въведете потребител или група</b> в полето отгоре, за да видите или промените правата за именното пространство <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Бележка: Тези права не са зададени директно, а са наследени от други групи или именни пространства.';
+$lang['p_isadmin']             = 'Бележка: Избраната група или потребител има всички права, защото е определен за супер потребител.';
+$lang['p_include']             = 'Висшите права включват по-нисши такива. Правата за създаване, качване и изтриване са приложими само за именни пространства, но не  за страници.';
+$lang['current']               = 'Текущи ACL права';
+$lang['where']                 = 'Страница/Именно пространство';
+$lang['who']                   = 'Потребител/Група';
+$lang['perm']                  = 'Права';
+$lang['acl_perm0']             = 'Никакви';
+$lang['acl_perm1']             = 'Четене';
+$lang['acl_perm2']             = 'Редактиране';
+$lang['acl_perm4']             = 'Създаване';
+$lang['acl_perm8']             = 'Качване';
+$lang['acl_perm16']            = 'Изтриване';
+$lang['acl_new']               = 'Добавяне на право';
+$lang['acl_mod']               = 'Промяна на правата';
diff --git a/wiki/lib/plugins/acl/lang/ca-valencia/help.txt b/wiki/lib/plugins/acl/lang/ca-valencia/help.txt
new file mode 100644
index 0000000..87450d2
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ca-valencia/help.txt
@@ -0,0 +1,15 @@
+=== Ajuda ràpida: ===
+
+En esta pàgina pot afegir i llevar permissos per a espais de noms i
+pàgines del wiki.
+
+El panel esquerre mostra tots els espais de noms i pàgines disponibles.
+
+El formulari de dalt permet vore i modificar els permissos de l'usuari
+o grup seleccionat.
+
+En la taula de baix es mostren totes les regles d'accés actuals. Pot
+usar-la per a canviar o borrar ràpidament vàries regles.
+
+Llegint la [[doku>acl|documentació oficial sobre ACL]] podrà
+comprendre millor com funciona el control d'accés en DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/ca-valencia/lang.php b/wiki/lib/plugins/acl/lang/ca-valencia/lang.php
new file mode 100644
index 0000000..bdfa7da
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ca-valencia/lang.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * valencian language file
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Bernat Arlandis i Mañó <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@llenguaitecnologia.com>
+ */
+$lang['admin_acl']             = 'Gestor de les llistes de control d\'accés';
+$lang['acl_group']             = 'Grup:';
+$lang['acl_user']              = 'Usuari:';
+$lang['acl_perms']             = 'Permissos per a';
+$lang['page']                  = 'Pàgina';
+$lang['namespace']             = 'Espai de noms';
+$lang['btn_select']            = 'Seleccionar';
+$lang['p_user_id']             = 'L\'usuari <b class="acluser">%s</b> té actualment els següents permissos en la pàgina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'L\'usuari <b class="acluser">%s</b> té actualment els següents permissos en l\'espai de noms <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Els membres del grup <b class="aclgroup">%s</b> tenen actualment els següents permissos en la pàgina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Els membres del grup <b class="aclgroup">%s</b> tenen actualment els següents permissos en l\'espai de noms <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Per favor, <b>introduïxca un usuari o grup</b> en el formulari de dalt per a vore o editar els per a la pàgina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Per favor, <b>introduïxca un usuari o grup</b> en el formulari de dalt per a vore o editar els permissos per a l\'espai de noms <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Nota: estos permissos no s\'han indicat explícitament sino que s\'hereten d\'atres grups o d\'espais de noms antecessors.';
+$lang['p_isadmin']             = 'Nota: el grup o usuari seleccionat té sempre tots els permissos perque està configurat com a super-usuari.';
+$lang['p_include']             = 'Els permissos més alts inclouen als més baixos. Els permissos per a crear, enviar i borrar només valen per a espais de noms, pàgines no.';
+$lang['current']               = 'Regles ACL actuals';
+$lang['where']                 = 'Pàgina/espai de noms';
+$lang['who']                   = 'Usuari/grup';
+$lang['perm']                  = 'Permissos';
+$lang['acl_perm0']             = 'Cap';
+$lang['acl_perm1']             = 'Llegir';
+$lang['acl_perm2']             = 'Editar';
+$lang['acl_perm4']             = 'Crear';
+$lang['acl_perm8']             = 'Pujar';
+$lang['acl_perm16']            = 'Borrar';
+$lang['acl_new']               = 'Afegir entrada nova';
+$lang['acl_mod']               = 'Modificar entrada';
diff --git a/wiki/lib/plugins/acl/lang/ca/help.txt b/wiki/lib/plugins/acl/lang/ca/help.txt
new file mode 100644
index 0000000..d9bcc12
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ca/help.txt
@@ -0,0 +1,11 @@
+=== Ajuda ràpida ===
+
+En aquesta pàgina podeu afegir i treure permisos per a espais i pàgines del vostre wiki.
+
+La subfinestra de l'esquerra mostra tots els espais i pàgines disponibles.
+
+El formulari de dalt us permet veure i modificar els permisos de l'usuari o grup que seleccioneu.
+
+En la taula de baix es mostren totes les regles de control d'accés que hagin estat definides. Podeu utilitzar aquesta taula per suprimir o modificar ràpidament totes les regles que vulgueu.
+
+Llegir la [[doku>acl|documentació oficial sobre ACL]] us pot ajudar a entendre del tot com funciona el control d'accés en DokuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/ca/lang.php b/wiki/lib/plugins/acl/lang/ca/lang.php
new file mode 100644
index 0000000..0c88296
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ca/lang.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carles Bellver <carles.bellver@cent.uji.es>
+ * @author Carles Bellver <carles.bellver@gmail.com>
+ * @author carles.bellver@gmail.com
+ * @author carles.bellver@cent.uji.es
+ * @author daniel@6temes.cat
+ */
+$lang['admin_acl']             = 'Gestió de la Llista de Control d\'Accés';
+$lang['acl_group']             = 'Grup:';
+$lang['acl_user']              = 'Usuari:';
+$lang['acl_perms']             = 'Permisos per a';
+$lang['page']                  = 'Pàgina';
+$lang['namespace']             = 'Espai';
+$lang['btn_select']            = 'Selecciona';
+$lang['p_user_id']             = 'L\'usuari <b class="acluser">%s</b> té a hores d\'ara els permisos següents en la pàgina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'L\'usuari <b class="acluser">%s</b> té a hores d\'ara els permisos següents en l\'espai <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Els membres del grup <b class="aclgroup">%s</b> tenen a hores d\'ara els permisos següents en la pàgina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Els membres del grup <b class="aclgroup">%s</b> tenen a hores d\'ara els permisos següents en l\'espai <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = '<b>Introduïu un usuari o grup</b> en el formulari de dalt per veure o editar els seus permisos en la pàgina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = '<b>Introduïu un usuari o grup</b> en el formulari de dalt per veure o editar els seus permisos en l\'espai <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Nota: aquests permisos no s\'han definit explícitament, sinó que són heretats d\'altres grups o d\'espais d\'ordre superior.';
+$lang['p_isadmin']             = 'Nota: l\'usuari o grup seleccionat té sempre tots els permisos perquè ha estat configurat com a superusuari.';
+$lang['p_include']             = 'Els permisos més alts inclouen tots els permisos inferiors. Els permisos per a crear, penjar i suprimir només s\'apliquen als espais, no a pàgines.';
+$lang['current']               = 'Regles ACL actuals';
+$lang['where']                 = 'Pàgina/espai';
+$lang['who']                   = 'Usuari/grup';
+$lang['perm']                  = 'Permisos';
+$lang['acl_perm0']             = 'Cap';
+$lang['acl_perm1']             = 'Lectura';
+$lang['acl_perm2']             = 'Edició';
+$lang['acl_perm4']             = 'Creació';
+$lang['acl_perm8']             = 'Penjar fitxers';
+$lang['acl_perm16']            = 'Suprimir';
+$lang['acl_new']               = 'Afegeix nova entrada';
+$lang['acl_mod']               = 'Modifica entrada';
diff --git a/wiki/lib/plugins/acl/lang/cs/help.txt b/wiki/lib/plugins/acl/lang/cs/help.txt
new file mode 100644
index 0000000..1b6fa1e
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/cs/help.txt
@@ -0,0 +1,8 @@
+=== Nápověda: ===
+
+Na této stránce můžete přidávat a odebírat oprávnění pro jmenné prostory a stránky svojí wiki.
+* Levý panel zobrazuje všechny dostupné jmenné prostory a stránky.
+* Formulář výše umožňuje vidět a modifikovat oprávnění vybraného uživatele nebo skupiny.
+* V tabulce uvedené níže jsou zobrazeny všechna aktuální pravidla pro řízení přístupu (oprávnění). Zde můžete rychle odebírat a měnit více položek (oprávnění) najednou.
+
+Pro detailnější nápovědu si přečtěte stránku [[doku>acl|oficiální dokumentace ACL]], která Vám může pomoci plně pochopit princip, na kterém řízení přístupu na DokuWiki funguje.
diff --git a/wiki/lib/plugins/acl/lang/cs/lang.php b/wiki/lib/plugins/acl/lang/cs/lang.php
new file mode 100644
index 0000000..1898571
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/cs/lang.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Bohumir Zamecnik <bohumir@zamecnik.org>
+ * @author Zbynek Krivka <zbynek.krivka@seznam.cz>
+ * @author tomas <tomas@valenta.cz>
+ * @author Marek Sacha <sachamar@fel.cvut.cz>
+ * @author Lefty <lefty@multihost.cz>
+ * @author Vojta Beran <xmamut@email.cz>
+ * @author Jakub A. Těšínský (j@kub.cz)
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ */
+$lang['admin_acl']             = 'Správa přístupových práv';
+$lang['acl_group']             = 'Skupina:';
+$lang['acl_user']              = 'Uživatel:';
+$lang['acl_perms']             = 'Práva pro';
+$lang['page']                  = 'Stránka';
+$lang['namespace']             = 'Jmenný prostor';
+$lang['btn_select']            = 'Vybrat';
+$lang['p_user_id']             = 'Uživatel <b class="acluser">%s</b> má nyní na stránku <b class="aclpage">%s</b> následující oprávnění: <i>%s</i>.';
+$lang['p_user_ns']             = 'Uživatel <b class="acluser">%s</b> má nyní na jmenný prostor <b class="aclns">%s</b> následující oprávnění: <i>%s</i>.';
+$lang['p_group_id']            = 'Členové skupiny <b class="aclgroup">%s</b> mají nyní na stránku <b class="aclpage">%s</b> následující oprávnění: <i>%s</i>.';
+$lang['p_group_ns']            = 'Členové skupiny <b class="aclgroup">%s</b> mají nyní na jmenný prostor <b class="aclns">%s</b> následující oprávnění: <i>%s</i>.';
+$lang['p_choose_id']           = 'Prosím, <b>zadejte uživatele nebo skupinu</b> ve formě uvedené výše, abyste mohli prohlížet a editovat množinu oprávnění pro stránku <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Prosím, <b>zadejte uživatele nebo skupinu</b> ve formě uvedené výše, abyste mohli prohlížet a editovat množinu oprávnění pro jmenný prostor <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Poznámka: Tato oprávnění nebyla nastavena explicitně, ale jsou zděděna z jiné skupiny nebo z nadřazeného jmenného prostoru.';
+$lang['p_isadmin']             = 'Poznámka: Vybraná skupina nebo uživatel má vždy plná oprávnění, protože je nastaven jako správce (superuser).';
+$lang['p_include']             = 'Vyšší oprávnění zahrnují nižší oprávnění. Vytvořit, Nahrát a Smazat se vztahují jen k jmenným prostorů, nikoliv ke stránkám.';
+$lang['current']               = 'Aktuální ACL pravidla';
+$lang['where']                 = 'Stránka/Jmenný prostor';
+$lang['who']                   = 'Uživatel/Skupina';
+$lang['perm']                  = 'Oprávnění';
+$lang['acl_perm0']             = 'Žádné';
+$lang['acl_perm1']             = 'Čtení';
+$lang['acl_perm2']             = 'Úpravy';
+$lang['acl_perm4']             = 'Vytvoření';
+$lang['acl_perm8']             = 'Upload';
+$lang['acl_perm16']            = 'Mazání';
+$lang['acl_new']               = 'Přidat novou položku';
+$lang['acl_mod']               = 'Editovat položku';
diff --git a/wiki/lib/plugins/acl/lang/cy/help.txt b/wiki/lib/plugins/acl/lang/cy/help.txt
new file mode 100644
index 0000000..f3d6474
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/cy/help.txt
@@ -0,0 +1,10 @@
+=== Cymorth Byw: ===
+
+Ar y dudalen hon, gallwch chi ychwanegu a dileu hawliau ar gyfer namespaces a thudalennau yn eich wici.
+  * Mae'r panel ar y chwith yn dangos pob namespace a thudalen.
+  * Mae'r ffurflen uchod yn eich galluogi chi i weld a newid hawliau defnyddiwr neu grŵp a ddewiswyd.
+  * Yn y tabl isod, dengys pob rheol rheoli mynediad sydd wedi'u gosod yn bresennol. Gallwch chi ei ddefnyddio i ddileu neu newid sawl rheol ar y tro.
+
+Gall darllen [[doku>acl|dogfennaeth swyddogol ar ACL]] fod o fudd er mwyn eich helpu chi ddeall yn llawn sut mae rheolaeth mynediad yn gweithio mewn DokuWiki.
+
+
diff --git a/wiki/lib/plugins/acl/lang/cy/lang.php b/wiki/lib/plugins/acl/lang/cy/lang.php
new file mode 100644
index 0000000..add3ca4
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/cy/lang.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * welsh language file
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Anika Henke <anika@selfthinker.org>
+ * @author     Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ * @author     Alan Davies <ben.brynsadler@gmail.com>
+ */
+
+$lang['admin_acl']  = 'Rheolaeth Rhestr Rheoli Mynediad';
+$lang['acl_group']  = 'Grŵp:';
+$lang['acl_user']   = 'Defnyddiwr:';
+$lang['acl_perms']  = 'Hawliau';
+$lang['page']       = 'Tudalen';
+$lang['namespace']  = 'Namespace'; //namespace
+
+$lang['btn_select']  = 'Dewis';
+
+$lang['p_user_id']    = 'Mae gan y defnyddiwr <b class="acluser">%s</b> yr hawliau canlynol yn bresennol ar dudalen <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']    = 'Mae gan y defnyddiwr <b class="acluser">%s</b> yr hawliau canlynol yn bresennol mewn namespace <b class="aclns">%s</b>: <i>%s</i>.';//namespace
+$lang['p_group_id']   = 'Mae gan aelodau grŵp <b class="aclgroup">%s</b> yr hawliau canlynol yn bresennol ar dudalen <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']   = 'Mae gan aelodau grŵp <b class="aclgroup">%s</b> yr hawliau canlynol yn bresennol mewn namespace <b class="aclns">%s</b>: <i>%s</i>.';//namespace
+
+$lang['p_choose_id']  = 'Rhowch <b>ddefnyddiwr neu grŵp</b> yn y ffurflen uchod i weld neu golugu\'r hawliau sydd wedi\'u gosod ar gyfer y dudalen <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']  = 'Rhowch <b>ddefnyddiwr neu grŵp</b> yn y ffurflen uchod i weld neu golugu\'r hawliau sydd wedi\'u gosod ar gyfer y namespace <b class="aclns">%s</b>.';//namespace
+
+
+$lang['p_inherited']  = 'Sylw: Doedd yr hawliau hynny heb eu gosod yn uniongyrchol ond cawsant eu hetifeddu o grwpiau eraill neu namespaces uwch.';//namespace
+$lang['p_isadmin']    = 'Sylw: Mae gan y grŵp neu\'r defnyddiwr hawliau llawn oherwydd mae wedi\'i ffurfweddu fel uwchddefnyddiwr.';
+$lang['p_include']    = 'Mae hawliau uwch yn cynnwys rhai is. Mae Creu, Lanlwytho a Dileu yn berthnasol i namespaces yn unig, nid tudalennau.';//namespace
+
+$lang['current'] = 'Rheolau ACL Cyfredol';
+$lang['where'] = 'Tudalen/Namespace';//namespace
+$lang['who']   = 'Defnyddiwr/Grŵp';
+$lang['perm']  = 'Hawliau';
+
+$lang['acl_perm0']  = 'Dim';
+$lang['acl_perm1']  = 'Darllen';
+$lang['acl_perm2']  = 'Golygu';
+$lang['acl_perm4']  = 'Creu';
+$lang['acl_perm8']  = 'Lanlwytho';
+$lang['acl_perm16'] = 'Dileu';
+$lang['acl_new']    = 'Ychwanegu Cofnod Newydd';
+$lang['acl_mod']    = 'Newid Cofnod';
+//Setup VIM: ex: et ts=2 :
diff --git a/wiki/lib/plugins/acl/lang/da/help.txt b/wiki/lib/plugins/acl/lang/da/help.txt
new file mode 100644
index 0000000..c8eedfc
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/da/help.txt
@@ -0,0 +1,11 @@
+=== Vejledning ===
+
+På denne side kan du tilføje og fjerne tilladelser for navnerum og sider i din wiki.
+
+Panelet i venstre side viser alle tilgængelige navnerum og sider.
+
+I kassen for oven giver dig mulighed for at se og ændre tilladelser for en bestemt bruger eller gruppe.
+
+Nedenstående skema viser dig alle de satte regler for adgangskontrol. Du kan bruge den til hurtigt at slette eller ændre nogle af dem.
+
+Ved at læse [[doku>acl|den officielle vejledning til ACL]] kan du opnå yderligere hjælp til at blive sat helt ind i, hvordan adgangskontrol virker i DokuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/da/lang.php b/wiki/lib/plugins/acl/lang/da/lang.php
new file mode 100644
index 0000000..5209b7b
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/da/lang.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author koeppe <koeppe@kazur.dk>
+ * @author Jon Bendtsen <bendtsen@diku.dk>
+ * @author Lars Næsbye Christensen <larsnaesbye@stud.ku.dk>
+ * @author Kalle Sommer Nielsen <kalle@php.net>
+ * @author Esben Laursen <hyber@hyber.dk>
+ * @author Harith <haj@berlingske.dk>
+ * @author Daniel Ejsing-Duun <dokuwiki@zilvador.dk>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author rasmus <rasmus@kinnerup.com>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ */
+$lang['admin_acl']             = 'Rettighedsadministration';
+$lang['acl_group']             = 'Gruppe:';
+$lang['acl_user']              = 'Bruger:';
+$lang['acl_perms']             = 'Rettigheder for';
+$lang['page']                  = 'Dokument';
+$lang['namespace']             = 'Navnerum';
+$lang['btn_select']            = 'Vælg';
+$lang['p_user_id']             = 'Bruger <b class="acluser">%s</b> har følgende adgang på siden <b class="aclpage">%s</b>: <i>%s</i>';
+$lang['p_user_ns']             = 'Bruger <b class="acluser">%s</b> har foreløbig følgende tilladelse i navnerummet <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Medlemmerne af gruppen <b class="aclgroup">%s</b> har foreløbigt de følgende tilladelser på siden <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Medlemmerne af gruppen <b class="aclgroup">%s</b> har foreløbigt de følgende tilladelser i navnerummet <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Venligst <b>udfyld en bruger eller gruppe</b> i ovennævnte formular for at se eller redigere tilladelserne for denne side<b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Venligst <b>udfyld en bruger eller gruppe</b> i ovennævnte formular for at se eller redigere tilladelserne for navnerummet <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Bemærk: Disse tilladelser var ikke lagt entydigt ind, men var arvet fra andre grupper eller højere navnerum.';
+$lang['p_isadmin']             = 'Bemærk: Den valgte gruppe eller bruger har altid fuld adgang, fordi den er sat til at være en supergruppe eller -bruger';
+$lang['p_include']             = 'Højere tilladelse inkluderer også lavere. Tilladelser til at oprette, lægge filer op og slette gælder kun for navnerum, ikke sider.';
+$lang['current']               = 'Aktuelle ACL-regler';
+$lang['where']                 = 'Side/navnerum';
+$lang['who']                   = 'Bruger/gruppe';
+$lang['perm']                  = 'Rettigheder';
+$lang['acl_perm0']             = 'Ingen';
+$lang['acl_perm1']             = 'Læs';
+$lang['acl_perm2']             = 'Skriv';
+$lang['acl_perm4']             = 'Opret';
+$lang['acl_perm8']             = 'Overføre';
+$lang['acl_perm16']            = 'Slet';
+$lang['acl_new']               = 'Tilføj ny post';
+$lang['acl_mod']               = 'Ændre post';
diff --git a/wiki/lib/plugins/acl/lang/de-informal/help.txt b/wiki/lib/plugins/acl/lang/de-informal/help.txt
new file mode 100644
index 0000000..d7930f8
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/de-informal/help.txt
@@ -0,0 +1,11 @@
+=== Schnellhilfe ===
+
+Auf dieser Seite kannst Du Rechte für Namensräume und Seiten in deinem Wiki hinzufügen oder entfernen.
+
+Der linke Bereich zeigt alle Namensräume und Seiten.
+
+Das obere Formular zeigt die die Rechte der ausgewählten Gruppe bzw. Benutzers.
+
+In der Tabelle unten werden alle momentan gesetzten Zugriffsregeln gezeigt. Hier kannst Du schnell mehrere Regeln löschen oder ändern.
+
+Das Lesen von [[doku>acl|official documentation on ACL]] kann Dir helfen zu verstehen, wie die Zugriffskontrole in DokuWiki funktioniert.
diff --git a/wiki/lib/plugins/acl/lang/de-informal/lang.php b/wiki/lib/plugins/acl/lang/de-informal/lang.php
new file mode 100644
index 0000000..9efdecb
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/de-informal/lang.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Alexander Fischer <tbanus@os-forge.net>
+ * @author Juergen Schwarzer <jschwarzer@freenet.de>
+ * @author Marcel Metz <marcel_metz@gmx.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Volker Bödker <volker@boedker.de>
+ */
+$lang['admin_acl']             = 'Zugangsverwaltung';
+$lang['acl_group']             = 'Gruppe:';
+$lang['acl_user']              = 'Benutzer:';
+$lang['acl_perms']             = 'Rechte für';
+$lang['page']                  = 'Seite';
+$lang['namespace']             = 'Namensraum';
+$lang['btn_select']            = 'Auswählen';
+$lang['p_user_id']             = 'Benutzer <b class="acluser">%s</b> hat im Moment folgende Rechte auf der Seite <b class="aclpage">%s</b>: <i>%s</i>';
+$lang['p_user_ns']             = 'Benutzer <b class="acluser">%s</b> hat momentan die folgenden Rechte im Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Die Gruppenmitglieder <b class="aclgroup">%s</b> haben momentan die folgenden Rechte auf der Seite <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Die Mitglieder der Gruppe <b class="aclgroup">%s</b> haben gerade Zugriff in folgenden Namensräumen <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Bitte <b>gib einen Benutzer oder eine Gruppe</b> in das Formular ein, um die Berechtigungen der Seite <b class="aclpage">%s</b> anzusehen oder zu bearbeiten.';
+$lang['p_choose_ns']           = 'Bitte <b>gib einen Benutzer oder eine Gruppe</b> in das Formular ein, um die Berechtigungen des Namenraumes <b class="aclpage">%s</b> anzusehen oder zu bearbeiten.';
+$lang['p_inherited']           = 'Hinweis: Diese Rechte wurden nicht explizit gesetzt, sondern von anderen Gruppen oder übergeordneten Namensräumen geerbt.';
+$lang['p_isadmin']             = 'Hinweis: Die gewählte Gruppe oder der Benutzer haben immer die vollen Rechte, weil sie als Superuser konfiguriert sind.';
+$lang['p_include']             = 'Höhere Rechte schließen kleinere mit ein. Hochlade- und Löschrechte sind nur für Namensräume, nicht für Seiten.';
+$lang['current']               = 'Momentane Zugriffsregeln';
+$lang['where']                 = 'Seite/Namensraum';
+$lang['who']                   = 'Benutzer/Gruppe';
+$lang['perm']                  = 'Rechte';
+$lang['acl_perm0']             = 'Keine';
+$lang['acl_perm1']             = 'Lesen';
+$lang['acl_perm2']             = 'Bearbeiten';
+$lang['acl_perm4']             = 'Erstellen';
+$lang['acl_perm8']             = 'Hochladen';
+$lang['acl_perm16']            = 'Löschen';
+$lang['acl_new']               = 'Neuen Eintrag zufügen';
+$lang['acl_mod']               = 'Eintrag modifizieren';
diff --git a/wiki/lib/plugins/acl/lang/de/help.txt b/wiki/lib/plugins/acl/lang/de/help.txt
new file mode 100644
index 0000000..2a3efe5
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/de/help.txt
@@ -0,0 +1,11 @@
+=== Kurzhilfe ===
+
+Auf dieser Seite können sie Zugriffsberechtigungen für Seiten und Namensräume festlegen und ändern.
+
+Die Liste links zeigt alle verfügbaren Namensräume und Seiten.
+
+Das Formular oben erlaubt Anzeige, Ändern und Hinzufügen von Zugriffsregeln für einen ausgewählten Benutzer oder eine Gruppe.
+
+In der Tabelle unten werden alle bestehenden Regeln aufgeführt und können dort modifiziert oder gelöscht werden.
+
+Für ein tiefergehendes Verständnis wie Zugriffsbeschränkungen in DokuWiki funktionieren, sollten Sie die [[doku>acl|offizielle Dokumentation]] lesen.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/de/lang.php b/wiki/lib/plugins/acl/lang/de/lang.php
new file mode 100644
index 0000000..45d35bc
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/de/lang.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Christof <gagi@fin.de>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ * @author Michael Klier <chi@chimeric.de>
+ * @author Leo Moll <leo@yeasoft.com>
+ * @author Florian Anderiasch <fa@art-core.org>
+ * @author Robin Kluth <commi1993@gmail.com>
+ * @author Arne Pelka <mail@arnepelka.de>
+ * @author Dirk Einecke <dirk@dirkeinecke.de>
+ * @author Blitzi94 <Blitzi94@gmx.de>
+ * @author Robert Bogenschneider <robog@GMX.de>
+ * @author Niels Lange <niels@boldencursief.nl>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Michael Große <grosse@cosmocode.de>
+ */
+$lang['admin_acl']             = 'Zugangsverwaltung';
+$lang['acl_group']             = 'Gruppe:';
+$lang['acl_user']              = 'Benutzer:';
+$lang['acl_perms']             = 'Berechtigungen für';
+$lang['page']                  = 'Seite';
+$lang['namespace']             = 'Namensraum';
+$lang['btn_select']            = 'Auswählen';
+$lang['p_user_id']             = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen im Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für den Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Bitte geben Sie in obigem Formular eine <b>einen Benutzer oder eine Gruppe</b> an, um die Berechtigungen für die Seite <b class="aclpage">%s</b> zu sehen oder zu ändern.';
+$lang['p_choose_ns']           = 'Bitte geben Sie in obigem Formular eine <b>einen Benutzer oder eine Gruppe</b> an, um die Berechtigungen für den Namensraum <b class="aclns">%s</b> zu sehen oder zu ändern.';
+$lang['p_inherited']           = 'Hinweis: Diese Berechtigungen wurden nicht explizit gesetzt, sondern von anderen Gruppen oder höher liegenden Namensräumen geerbt.';
+$lang['p_isadmin']             = 'Hinweis: Die ausgewählte Gruppe oder Benutzer haben immer alle Berechtigungen, da sie als Superuser konfiguriert wurden.';
+$lang['p_include']             = 'Höhere Berechtigungen schließen niedrigere mit ein. Anlegen, Hochladen und Entfernen gilt nur für Namensräume, nicht für einzelne Seiten';
+$lang['current']               = 'Momentane Zugriffsregeln';
+$lang['where']                 = 'Seite/Namensraum';
+$lang['who']                   = 'Nutzer/Gruppe';
+$lang['perm']                  = 'Berechtigungen';
+$lang['acl_perm0']             = 'Keine';
+$lang['acl_perm1']             = 'Lesen';
+$lang['acl_perm2']             = 'Bearbeiten';
+$lang['acl_perm4']             = 'Anlegen';
+$lang['acl_perm8']             = 'Hochladen';
+$lang['acl_perm16']            = 'Entfernen';
+$lang['acl_new']               = 'Eintrag hinzufügen';
+$lang['acl_mod']               = 'Eintrag bearbeiten';
diff --git a/wiki/lib/plugins/acl/lang/el/help.txt b/wiki/lib/plugins/acl/lang/el/help.txt
new file mode 100644
index 0000000..ea2f816
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/el/help.txt
@@ -0,0 +1,10 @@
+=== Γρήγορη Βοήθεια: ===
+
+Στη σελίδα αυτή μπορείτε να προσθέσετε και αφαιρέσετε δικαιώματα πρόσβασης για φακέλους και σελίδες στο wiki σας.
+
+Το αριστερό πλαίσιο δείχνει όλους τους διαθέσιμους φακέλους και αρχεία.
+
+Η παραπάνω φόρμα επιτρέπει να δείτε και να τροποποιήσετε τα διακαιώματα μίας επιλεγμένης ομάδας χρηστών ή ενός χρήστη.
+
+Στον παρακάτω πίνακα εμφανίζονται όλοι οι τρέχοντες κανόνες παραχώρησης δικαιωμάτων πρόσβασης. Μπορείτε να τον χρησιμοποιήσετε ώστε να σβήσετε ή να τροποποιήσετε γρήγορα πολλαπλούς κανόνες.
+Διαβάζοντας την [[doku>acl|επίσημη τεκμηρίωση για τις Λίστες Δικαιωμάτων Πρόσβασης - ACL]] ίσως σας βοηθήσει να καταλάβετε πλήρως το πως αυτές εφαρμόζονται στην DokuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/el/lang.php b/wiki/lib/plugins/acl/lang/el/lang.php
new file mode 100644
index 0000000..75cc415
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/el/lang.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ * @author Thanos Massias <tm@thriasio.gr>
+ * @author Αθανάσιος Νταής <homunculus@wana.gr>
+ * @author Konstantinos Koryllos <koryllos@gmail.com>
+ * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ */
+$lang['admin_acl']             = 'Διαχείριση Δικαιωμάτων Πρόσβασης';
+$lang['acl_group']             = 'Ομάδα:';
+$lang['acl_user']              = 'Χρήστης:';
+$lang['acl_perms']             = 'Δικαιώματα για';
+$lang['page']                  = 'Σελίδα';
+$lang['namespace']             = 'Φάκελος';
+$lang['btn_select']            = 'Επιλογή';
+$lang['p_user_id']             = 'Ο χρήστης <b class="acluser">%s</b> έχει τα ακόλουθα δικαιώματα πρόσβασης στην σελίδα <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Ο χρήστης <b class="acluser">%s</b> έχει τα ακόλουθα δικαιώματα πρόσβασης στον φάκελο <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Τα μέλη της ομάδας <b class="aclgroup">%s</b> έχουν τα ακόλουθα δικαιώματα πρόσβασης στην σελίδα <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Τα μέλη της ομάδας <b class="aclgroup">%s</b> έχουν τα ακόλουθα δικαιώματα πρόσβασης στον φάκελο <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Παρακαλώ <b>δώστε ένα όνομα χρήστη ή ομάδας χρηστών</b> στην παραπάνω μορφή για να δείτε τα αντίστοιχα δικαιώματα πρόσβασης για την σελίδα <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Παρακαλώ <b>δώστε ένα όνομα χρήστη ή ομάδας χρηστών</b> στην παραπάνω μορφή για να δείτε τα αντίστοιχα δικαιώματα πρόσβασης για τον φάκελο <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Σημείωση: Αυτά τα διακαιώματα χρήσης δεν ορίστηκαν άμεσα αλλά κληρονομήθηκαν από άλλες ομάδες χρηστών ή φακέλους σε υψηλότερο επίπεδο.';
+$lang['p_isadmin']             = 'Σημείωση: Η επιλεγμένη ομάδα χρηστών ή χρήστης έχει πάντα πλήρη διακαιώματα πρόσβασης διότι είναι δηλωμένος σαν υπερχρήστης (superuser).';
+$lang['p_include']             = 'Τα υψηλότερα δικαιώματα πρόσβασης περιλαμβάνουν τα χαμηλότερα. Τα δικαιώματα για Δημιουργία, Φόρτωση και Διαγραφή αφορούν μόνο φακέλους και όχι σελίδες. ';
+$lang['current']               = 'Τρέχοντες κανόνες Λίστας Δικαιωμάτων Πρόσβασης - ACL';
+$lang['where']                 = 'Σελίδα/Φάκελος';
+$lang['who']                   = 'Χρήστης/Ομάδα χρηστών';
+$lang['perm']                  = 'Δικαιώματα πρόσβασης';
+$lang['acl_perm0']             = 'Κανένα';
+$lang['acl_perm1']             = 'Ανάγνωση';
+$lang['acl_perm2']             = 'Τροποποίηση';
+$lang['acl_perm4']             = 'Δημιουργία';
+$lang['acl_perm8']             = 'Φόρτωση';
+$lang['acl_perm16']            = 'Διαγραφή';
+$lang['acl_new']               = 'Προσθήκη νέας εγγραφής';
+$lang['acl_mod']               = 'Τροποποίηση εγγραφής';
diff --git a/wiki/lib/plugins/acl/lang/en/help.txt b/wiki/lib/plugins/acl/lang/en/help.txt
new file mode 100644
index 0000000..e865bbb
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/en/help.txt
@@ -0,0 +1,9 @@
+=== Quick Help: ===
+
+On this page you can add and remove permissions for namespaces and pages in your wiki.
+  * The left pane displays all available namespaces and pages.
+  * The form above allows you to see and modify the permissions of a selected user or group.
+  * In the table below all currently set access control rules are shown. You can use it to quickly delete or change multiple rules.
+
+Reading the [[doku>acl|official documentation on ACL]] might help you to fully understand how access control works in DokuWiki.
+
diff --git a/wiki/lib/plugins/acl/lang/en/lang.php b/wiki/lib/plugins/acl/lang/en/lang.php
new file mode 100644
index 0000000..0c86489
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/en/lang.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * english language file
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Anika Henke <anika@selfthinker.org>
+ * @author     Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ */
+
+$lang['admin_acl']  = 'Access Control List Management';
+$lang['acl_group']  = 'Group:';
+$lang['acl_user']   = 'User:';
+$lang['acl_perms']  = 'Permissions for';
+$lang['page']       = 'Page';
+$lang['namespace']  = 'Namespace';
+
+$lang['btn_select']  = 'Select';
+
+$lang['p_user_id']    = 'User <b class="acluser">%s</b> currently has the following permissions on page <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']    = 'User <b class="acluser">%s</b> currently has the following permissions in namespace <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']   = 'Members of group <b class="aclgroup">%s</b> currently have the following permissions on page <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']   = 'Members of group <b class="aclgroup">%s</b> currently have the following permissions in namespace <b class="aclns">%s</b>: <i>%s</i>.';
+
+$lang['p_choose_id']  = 'Please <b>enter a user or group</b> in the form above to view or edit the permissions set for the page <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']  = 'Please <b>enter a user or group</b> in the form above to view or edit the permissions set for the namespace <b class="aclns">%s</b>.';
+
+
+$lang['p_inherited']  = 'Note: Those permissions were not set explicitly but were inherited from other groups or higher namespaces.';
+$lang['p_isadmin']    = 'Note: The selected group or user has always full permissions because it is configured as superuser.';
+$lang['p_include']    = 'Higher permissions include lower ones. Create, Upload and Delete permissions only apply to namespaces, not pages.';
+
+$lang['current'] = 'Current ACL Rules';
+$lang['where'] = 'Page/Namespace';
+$lang['who']   = 'User/Group';
+$lang['perm']  = 'Permissions';
+
+$lang['acl_perm0']  = 'None';
+$lang['acl_perm1']  = 'Read';
+$lang['acl_perm2']  = 'Edit';
+$lang['acl_perm4']  = 'Create';
+$lang['acl_perm8']  = 'Upload';
+$lang['acl_perm16'] = 'Delete';
+$lang['acl_new']    = 'Add new Entry';
+$lang['acl_mod']    = 'Modify Entry';
+//Setup VIM: ex: et ts=2 :
diff --git a/wiki/lib/plugins/acl/lang/eo/help.txt b/wiki/lib/plugins/acl/lang/eo/help.txt
new file mode 100644
index 0000000..488e84a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/eo/help.txt
@@ -0,0 +1,11 @@
+=== Helpeto: ===
+
+En tiu ĉi paĝo vi povas aldoni kaj forigi rajtojn por nomspacoj kaj paĝoj en via vikio.
+
+La maldekstra panelo montras ĉiujn disponeblajn nomspacojn kaj paĝojn.
+
+La suba agordilo permesas al vi rigardi kaj modifi la rajtojn de elektita uzanto aŭ grupo.
+
+En la suba tabelo ĉiuj aktuale difinitaj alirkontrolaj reguloj estas montrataj. Vi povas uzi ĝin por rapide forigi aŭ ŝanĝi multoblajn regulojn.
+
+Legi la [[doku>acl|oficialan dokumentaron pri ACL]] povus helpi vin bone kompreni kiel alirkontrolo funkcias en DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/eo/lang.php b/wiki/lib/plugins/acl/lang/eo/lang.php
new file mode 100644
index 0000000..b59f465
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/eo/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas@uol.com.br>
+ * @author Felipo Kastro <fefcas@gmail.com>
+ * @author Robert Bogenschneider <robog@gmx.de>
+ * @author Erik Pedersen <erik pedersen@shaw.ca>
+ */
+$lang['admin_acl']             = 'Administrado de Alirkontrola Listo (ACL)';
+$lang['acl_group']             = 'Grupo:';
+$lang['acl_user']              = 'Uzanto:';
+$lang['acl_perms']             = 'Rajtoj por';
+$lang['page']                  = 'Paĝo';
+$lang['namespace']             = 'Nomspaco';
+$lang['btn_select']            = 'Elekti';
+$lang['p_user_id']             = 'Uzanto <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la paĝo <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Uzanto <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la paĝo <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Bonvolu <b>enmeti uzanton aŭ grupon</b> en la suban agordilon por rigardi aŭ redakti la aron da rajtoj por la paĝo <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Bonvolu <b>enmeti uzanton aŭ grupon</b> en la suban agordilon por rigardi aŭ redakti la aron da rajtoj por la nomspaco <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Rimarko: tiuj rajtoj ne estas rekte difinitaj, sed ili herediĝas el aliaj pli supraj grupoj aŭ nomspacoj.';
+$lang['p_isadmin']             = 'Rimarko: la elektita grupo aŭ uzanto ĉiam havas plenan rajtaron ĉar ĝi estas difinita kiel superuzanto.';
+$lang['p_include']             = 'Plialtaj permesoj inkluzivas malpli altajn. La permesoj por Krei, Alŝuti kaj Forigi nur aplikeblas al nomspacoj, ne al paĝoj.';
+$lang['current']               = 'Aktuala regularo ACL';
+$lang['where']                 = 'Paĝo/Nomspaco';
+$lang['who']                   = 'Uzanto/Grupo';
+$lang['perm']                  = 'Rajtoj';
+$lang['acl_perm0']             = 'Nenio';
+$lang['acl_perm1']             = 'Legi';
+$lang['acl_perm2']             = 'Redakti';
+$lang['acl_perm4']             = 'Krei';
+$lang['acl_perm8']             = 'Alŝuti';
+$lang['acl_perm16']            = 'Forigi';
+$lang['acl_new']               = 'Aldoni novan enmetaĵon';
+$lang['acl_mod']               = 'Modifi enmetaĵon';
diff --git a/wiki/lib/plugins/acl/lang/es/help.txt b/wiki/lib/plugins/acl/lang/es/help.txt
new file mode 100644
index 0000000..01f7a2e
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/es/help.txt
@@ -0,0 +1,11 @@
+=== Ayuda rápida: ===
+
+En esta página puede agregar o retirar permisos para los espacios de nombres y páginas en su wiki.
+
+El panel de la izquierda muestra todos los espacios de nombres y páginas
+
+El formulario inferior permite  ver y modificar los permisos del usuario o grupo elegido.
+
+En la tabla anterior se muestran todas  las reglas de control de acceso vigentes  Puede usarla para borrar o cambiar varias reglas rápidamente.
+
+Consultar el  [[doku>acl|official documentation on ACL]] puede ayudarle a entender completamente como el control de acceso trabaja en DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/es/lang.php b/wiki/lib/plugins/acl/lang/es/lang.php
new file mode 100644
index 0000000..7518e38
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/es/lang.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Miguel Pagano <miguel.pagano@gmail.com>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Gabriel Castillo <gch@pumas.ii.unam.mx>
+ * @author oliver <oliver@samera.com.py>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Manuel Meco <manuel.meco@gmail.com>
+ * @author VictorCastelan <victorcastelan@gmail.com>
+ * @author Jordan Mero <hack.jord@gmail.com>
+ * @author Felipe Martinez <metalmartinez@gmail.com>
+ * @author Javier Aranda <internet@javierav.com>
+ * @author Zerial <fernando@zerial.org>
+ * @author Marvin Ortega <maty1206@maryanlinux.com>
+ * @author Daniel Castro Alvarado <dancas2@gmail.com>
+ * @author Fernando J. Gómez <fjgomez@gmail.com>
+ * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
+ * @author emezeta <emezeta@infoprimo.com>
+ * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mercè López <mercelz@gmail.com>
+ */
+$lang['admin_acl']             = 'Administración de lista de control de acceso';
+$lang['acl_group']             = 'Grupo:';
+$lang['acl_user']              = 'Usuario:';
+$lang['acl_perms']             = 'Permiso para';
+$lang['page']                  = 'Página';
+$lang['namespace']             = 'Espacio de nombres';
+$lang['btn_select']            = 'Seleccionar';
+$lang['p_user_id']             = 'El usuario <b class="acluser">%s</b> tiene los siguientes permisos sobre la página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'El usuario <b class="acluser">%s</b> tiene los siguientes permisos sobre el espacio de nombres <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Los miembros del grupo <b class="aclgroup">%s</b> tienen actualmente los siguientes permisos sobre la página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Los miembros del grupo <b class="aclgroup">%s</b> tienen actualmente los siguientes permisos sobre el espacio de nombres <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Por favor <b>proporcione un usuario o grupo</b>en el formulario arriba mostrado para ver o editar los permisos asignados sobre la página<b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Por favor <b>proporcione un usuario o grupo</b>en el formulario arriba mostrado para ver o editar los permisos asignados sobre el espacio de nombres <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Nota: Esos permisos no fueron establecidos explícitamente sino que fueron heredados desde otros grupos o espacios de nombres superiores';
+$lang['p_isadmin']             = 'Nota: El grupo o usuario seleccionado simepre tiene permisos totales debido a que se encuentra configurado como superusuario.';
+$lang['p_include']             = 'Los permisos superiores incluyen a los inferiores. Los permisos Crear, Cargar y Eliminar sólo se aplican a los espacios de nombres, no a las páginas.';
+$lang['current']               = 'Reglas ACL vigentes';
+$lang['where']                 = 'Página/Espacio de nombres';
+$lang['who']                   = 'Usuario/Grupo';
+$lang['perm']                  = 'Permisos';
+$lang['acl_perm0']             = 'ninguno';
+$lang['acl_perm1']             = 'Leer';
+$lang['acl_perm2']             = 'Editar';
+$lang['acl_perm4']             = 'Crear';
+$lang['acl_perm8']             = 'Subir un fichero';
+$lang['acl_perm16']            = 'Borrar';
+$lang['acl_new']               = 'Agregar una nueva entrada';
+$lang['acl_mod']               = 'Modificar una entrada';
diff --git a/wiki/lib/plugins/acl/lang/et/help.txt b/wiki/lib/plugins/acl/lang/et/help.txt
new file mode 100644
index 0000000..a2c8e9e
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/et/help.txt
@@ -0,0 +1,9 @@
+=== Kiir-spikker: ===
+
+Käesoleval leheküljel saad oma wiki nimeruumidele ja lehekülgedele lisada ning eemaldada õigusi.
+  * Vasemas paanis on näidatud kõik saada olevad nimeruumid ja leheküljed.
+  * Ülal olev vorm laseb sul vaadelda ja muuta valitud rühma või kasutaja õigusi.
+  * Allolevas tabelis näidatakse kõiki hetkel sättestatud reegleid ligipääsudele.
+Saad seda kasutada reeglite hulgi muutmiseks või kustutamiseks
+
+Mõistmaks paremini DokuWiki ligipääsu halduse toimimist, võiks abiks olla [[doku>acl|ACL-i ametliku dokumentatsiooniga]] tutvumine.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/et/lang.php b/wiki/lib/plugins/acl/lang/et/lang.php
new file mode 100644
index 0000000..d1a047a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/et/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Oliver S6ro <seem.iges@mail.ee>
+ * @author Aari Juhanson <aari@vmg.vil.ee>
+ * @author Kaiko Kaur <kaiko@kultuur.edu.ee>
+ * @author kristian.kankainen@kuu.la
+ * @author Rivo Zängov <eraser@eraser.ee>
+ * @author Janar Leas <janar.leas@eesti.ee>
+ */
+$lang['admin_acl']             = 'Ligipääsukontrolli nimekirja haldamine';
+$lang['acl_group']             = 'Rühm:';
+$lang['acl_user']              = 'Kasutaja:';
+$lang['acl_perms']             = 'Lubatud';
+$lang['page']                  = 'leht';
+$lang['namespace']             = 'Nimeruum';
+$lang['btn_select']            = 'Vali';
+$lang['p_user_ns']             = 'Kasutaja <b class="aclgroup">%s</b> omab nimeruumis <b class="aclns">%s</b>: <i>%s</i> järgmisi õigusi.';
+$lang['p_group_ns']            = 'Rühma <b class="aclgroup">%s</b> liikmed omavad nimeruumis <b class="aclns">%s</b>: <i>%s</i> järgmisi õigusi.';
+$lang['p_choose_id']           = 'Sisesta ülal-olevasse vormi <b>kasutaja või rühm</b> nägemaks leheküljele <b class="aclpage">%s</b> sätestatud volitusi.';
+$lang['p_choose_ns']           = 'Sisesta ülal-olevasse vormi <b>kasutaja või rühm</b> nägemaks nimeruumile <b class="aclpage">%s</b> sätestatud volitusi.';
+$lang['p_inherited']           = 'Teadmiseks: Neid õigusi pole eralti määratletud, vaid on päritud teistest rühmadest või ülemast nimeruumist.';
+$lang['p_isadmin']             = 'Teadmiseks: Valitud rühm või kasutaja omab alati kõiki õigusi, kuna nii on sätestanud ülemkasutaja.';
+$lang['p_include']             = 'Kõrgemad õigused hõlmavad alamaid. Õigus loomine, üleslaadida ja kustutada rakenduvad nimeruumidele, mitte lehekülgedele.';
+$lang['where']                 = 'Lehekülg/nimeruum';
+$lang['who']                   = 'Kasutaja/Grupp';
+$lang['perm']                  = 'Õigused';
+$lang['acl_perm0']             = 'Pole';
+$lang['acl_perm1']             = 'Lugemine';
+$lang['acl_perm2']             = 'Toimetamine';
+$lang['acl_perm4']             = 'Tekitamine';
+$lang['acl_perm8']             = 'Üles laadimine';
+$lang['acl_perm16']            = 'Kustuta';
+$lang['acl_new']               = 'Uue kirje lisamine';
+$lang['acl_mod']               = 'Muuda sissekannet';
diff --git a/wiki/lib/plugins/acl/lang/eu/help.txt b/wiki/lib/plugins/acl/lang/eu/help.txt
new file mode 100644
index 0000000..9e6070a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/eu/help.txt
@@ -0,0 +1,11 @@
+=== Laguntza Bizkorra: ===
+
+Orri honetan wiki-ko orri eta izen-espazioen baimenak gehitu eta kendu ahal ditzakezu.
+
+Ezkerreko panelak eskuragarri dauden orri eta izen-espazioak erakusten ditu.
+
+Goiko formularioak aukeratutako erabiltzaile edo taldearen baimenak ikusi eta aldatzea ahalbidetzen dizu.
+
+Beheko taulan une honetan ezarritako atzipen kontrol arauak daude. Hainbat arau bizkor ezabatu edo aldatzeko erabili dezakezu.
+
+[[doku>acl|Atzipen Kontrol Listen inguruko dokumentazio ofiziala]] irakurtzeak atzipen kontrolak DokuWiki-n nola funtzionatzen duen ulertzen lagundu zaitzaike.
diff --git a/wiki/lib/plugins/acl/lang/eu/lang.php b/wiki/lib/plugins/acl/lang/eu/lang.php
new file mode 100644
index 0000000..722ffd1
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/eu/lang.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Inko Illarramendi <inko.i.a@gmail.com>
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ */
+$lang['admin_acl']             = 'Atzipen Kontrol Listaren Kudeaketa';
+$lang['acl_group']             = 'Taldea:';
+$lang['acl_user']              = 'Erabiltzailea:';
+$lang['acl_perms']             = 'Baimenak honetarako:';
+$lang['page']                  = 'Orria';
+$lang['namespace']             = 'Izen-espazioa';
+$lang['btn_select']            = 'Aukeratu';
+$lang['p_user_id']             = '<b class="acluser">%s</b> erabiltzaileak une honetan honako baimenak ditu <b class="aclpage">%s</b> orrian: <i>%s</i>.';
+$lang['p_user_ns']             = '<b class="acluser">%s</b> erabiltzaileak une honetan honako baimenak ditu <b class="aclns">%s</b> izen-espazioan: <i>%s</i>.';
+$lang['p_group_id']            = '<b class="aclgroup">%s</b> taldeko kideek une honetan honako baimenak dituzte <b class="aclpage">%s</b> orrian: <i>%s</i>.';
+$lang['p_group_ns']            = '<b class="aclgroup">%s</b> taldeko kideek une honetan honako baimenak dituzte <b class="aclns">%s</b> izen-espazioan: <i>%s</i>.';
+$lang['p_choose_id']           = 'Mesedez <b>sartu erabiltzaile edo taldea</b> goiko formularioan <b class="aclpage">%s</b> orrian ezarritako baimenak ikusi edo aldatzeko.';
+$lang['p_choose_ns']           = 'Mesedez <b>sartu erabiltzaile edo taldea</b> goiko formularioan <b class="aclns">%s</b> izen-espazioan ezarritako baimenak ikusi edo aldatzeko.';
+$lang['p_inherited']           = 'Oharra: Baimen horiek ez dira esplizituki jarriak, beste talde batzuetatik edo goragoko izen-espazioetatik heredatuak baizik.';
+$lang['p_isadmin']             = 'Oharra: Aukeratutako talde edo erabiltzaileak beti daika baimen osoa, supererabiltzaile gisa konfiguratuta  baitago.';
+$lang['p_include']             = 'Baimen handiagoek baimen txikiagoak barneratzen dituzte. Sortu, Igo eta Ezabatu baimenak izen-espazioei soilik aplikatzen zaizkie, ez orriei.';
+$lang['current']               = 'Uneko AKL Arauak';
+$lang['where']                 = 'Orria/Izen-espazioa';
+$lang['who']                   = 'Erabiltzailea/Taldea';
+$lang['perm']                  = 'Baimenak';
+$lang['acl_perm0']             = 'Inork';
+$lang['acl_perm1']             = 'Irakurri';
+$lang['acl_perm2']             = 'Editatu';
+$lang['acl_perm4']             = 'Sortu';
+$lang['acl_perm8']             = 'Igo';
+$lang['acl_perm16']            = 'Ezabatu';
+$lang['acl_new']               = 'Sarrera berri bat gehitu';
+$lang['acl_mod']               = 'Aldatu Sarrera';
diff --git a/wiki/lib/plugins/acl/lang/fa/help.txt b/wiki/lib/plugins/acl/lang/fa/help.txt
new file mode 100644
index 0000000..1ec797f
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/fa/help.txt
@@ -0,0 +1,11 @@
+=== راهنما: ===
+
+در این صفحه شما می‌توانید دسترسی صفحات و فضای‌نام‌ها را مدیریت کنید.
+
+در قسمت سمت راست، لیست تمام صفحات و فضای‌نام‌ها را مشاهده می‌کنید.
+
+در فرم بالا می‌توانید دسترسی‌های کاربران و گروه‌های مختلف را مشاهده و ویرایش کنید.
+
+در جدول زیر، تمامی قوانین مدیریتی را مشاهده می‌کنید. شما می‌توانید آن‌ها را حذف یا تعدادی از آن‌ها رو تغییر دهید.
+
+ممکن است خواندن [[doku>acl|مطلب رسمی در مورد مدیریت دسترسی‌ها]] شما را در درک بهتر این قسمت DokuWiki یاری کند.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/fa/lang.php b/wiki/lib/plugins/acl/lang/fa/lang.php
new file mode 100644
index 0000000..2938e1b
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/fa/lang.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author behrad eslamifar <behrad_es@yahoo.com)
+ * @author Mohsen Firoozmandan <info@mambolearn.com>
+ * @author omidmr@gmail.com
+ * @author Omid Mottaghi <omidmr@gmail.com>
+ * @author Mohammad Reza Shoaei <shoaei@gmail.com>
+ * @author Milad DZand <M.DastanZand@gmail.com>
+ * @author AmirH Hassaneini <mytechmix@gmail.com>
+ */
+$lang['admin_acl']             = 'مدیریت کنترل دسترسی‌ها';
+$lang['acl_group']             = 'گروه:';
+$lang['acl_user']              = 'کاربر:';
+$lang['acl_perms']             = 'مجوز برای';
+$lang['page']                  = 'صفحه';
+$lang['namespace']             = 'فضای‌نام';
+$lang['btn_select']            = 'انتخاب';
+$lang['p_user_id']             = 'کاربر <b class="acluser">%s</b> دسترسی‌های زیر را برای صفحه‌ی <b class="aclpage">%s</b> دارد: <i>%s</i>.';
+$lang['p_user_ns']             = 'کاربر <b class="acluser">%s</b> دسترسی‌های زیر را برای فضای‌نام <b class="aclpage">%s</b> دارد: <i>%s</i>.';
+$lang['p_group_id']            = 'اعضای گروه <b class="aclgroup">%s</b> دسترسی‌های زیر را برای صفحه‌ی <b class="aclpage">%s</b> دارند: <i>%s</i>.';
+$lang['p_group_ns']            = 'اعضای گروه <b class="aclgroup">%s</b> دسترسی‌های زیر را برای فضای‌نام <b class="aclpage">%s</b> دارند: <i>%s</i>.';
+$lang['p_choose_id']           = 'خواهشمندیم <b>نام یک کاربر یا گروه</b> را در فرم بالا وارد کنید تا دسترسی‌های آن را برای صفحه‌ی <b class="aclpage">%s</b> ببینید و ویرایش کنید.';
+$lang['p_choose_ns']           = 'خواهشمندیم <b>نام یک کاربر یا گروه</b> را در فرم بالا وارد کنید تا دسترسی‌های آن را برای فضای‌نام <b class="aclpage">%s</b> ببینید و ویرایش کنید.';
+$lang['p_inherited']           = 'توجه: دسترسی‌ها مستقیمن مقداردهی نشده است، بلکه از گروه‌های بالا یا فضای‌نام گرفته شده است.';
+$lang['p_isadmin']             = 'توجه: کاربر یا گروه انتخاب شده همیشه با تمام دسترسی می‌باشد، زیرا به عنوان «superuser» انتخاب شده است.';
+$lang['p_include']             = 'دسترسی‌های بالا، دسترسی‌های پایین را شامل می‌شود. ایجاد، ارسال و حذف فقط به فضای‌نام الحاق می‌شود.';
+$lang['current']               = 'قوانین دسترسی فعلی';
+$lang['where']                 = 'صفحه/فضای‌نام';
+$lang['who']                   = 'کاربر/گروه';
+$lang['perm']                  = 'دسترسی‌ها';
+$lang['acl_perm0']             = 'هیچ‌کدام';
+$lang['acl_perm1']             = 'خواندن';
+$lang['acl_perm2']             = 'ویزایش';
+$lang['acl_perm4']             = 'ایجاد';
+$lang['acl_perm8']             = 'ارسال';
+$lang['acl_perm16']            = 'حذف';
+$lang['acl_new']               = 'اضافه کردن ورودی جدید';
+$lang['acl_mod']               = 'ویرایش ورودی';
diff --git a/wiki/lib/plugins/acl/lang/fi/help.txt b/wiki/lib/plugins/acl/lang/fi/help.txt
new file mode 100644
index 0000000..d821f2d
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/fi/help.txt
@@ -0,0 +1,11 @@
+=== Pika-apu: ===
+
+Tällä sivulla voit lisätä tai poistaa oikeuksia wikisi nimiavaruuksiin tai sivuihin.
+
+Vasen osa näyttää kaikki tarjolla olevat nimiavaruudet ja sivut.
+
+Yllä olevan kaavakkeen avulla voit katsoa ja muokata oikeuksia valitulle käyttäjälle ja ryhmälle.
+
+Alla olevassa taulukossa on näkyvissä päällä olevat pääsyoikeudet. Voit käyttää sitä muokataksesi tai poistaaksesi useita oikeuksia.
+
+[[doku>acl|Virallisen käyttöoikeus (ACL) dokumentaation]]  lukeminen voi helpottaa sinua täysin ymmärtämään mitän käyttöoikeudet toimivat DokuWikissä.
diff --git a/wiki/lib/plugins/acl/lang/fi/lang.php b/wiki/lib/plugins/acl/lang/fi/lang.php
new file mode 100644
index 0000000..2dfc358
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/fi/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author otto@valjakko.net
+ * @author Otto Vainio <otto@valjakko.net>
+ * @author Teemu Mattila <ghcsystems@gmail.com>
+ * @author Sami Olmari <sami@olmari.fi>
+ */
+$lang['admin_acl']             = 'Käyttöoikeudet (ACL)';
+$lang['acl_group']             = 'Ryhmä:';
+$lang['acl_user']              = 'Käyttäjä:';
+$lang['acl_perms']             = 'Oikeudet';
+$lang['page']                  = 'Sivu';
+$lang['namespace']             = 'Nimiavaruus';
+$lang['btn_select']            = 'Valitse';
+$lang['p_user_id']             = 'Käyttäjällä <b class="acluser">%s</b> on tällä hetkellä seuraavat oikeudet sivulla <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Käyttäjällä <b class="acluser">%s</b> on tällä hetkellä seuraavat oikeudet nimiavaruudessa <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Ryhmän <b class="aclgroup">%s</b> jäsenillä on tällä hetkellä seuraavat oikeudet sivulla <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Ryhmän <b class="aclgroup">%s</b> jäsenillä on tällä hetkellä seuraavat oikeudet nimiavaruudessa <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Ole hyvä ja <b>syötä ryhmän nimi</b> yllä olevaan kaavakkeeseen katsoaksesi tai muokataksesi oikeuksia sivulle <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Ole hyvä ja <b>syötä ryhmän nimi</b> yllä olevaan kaavakkeeseen katsoaksesi tai muokataksesi oikeuksia nimiavaruuteen <b class="aclpage">%s</b>.';
+$lang['p_inherited']           = 'Huomaa: Oikeuksia ei ole erikseen asetettu, vaan ne on peritty toiselta ryhmältä tai ylemmältä nimiavaruudelta.';
+$lang['p_isadmin']             = 'Huomaa: Valitulla ryhmällä tai käyttäjällä on aina täydet oikeudet, koska se on määritelty pääkäyttäjäksi (Superuser)';
+$lang['p_include']             = 'Korkeammat oikeudet sisältävät matalammat. Luonti-, Lähetys- ja Poisto-oikeudet vaikuttavat vain nimiavaruuksiin, ei sivuihin.';
+$lang['current']               = 'Tämänhetkiset käyttöoikeudet (ACL)';
+$lang['where']                 = 'Sivu/Nimiavaruus';
+$lang['who']                   = 'Käyttäjä/Ryhmä';
+$lang['perm']                  = 'Oikeudet';
+$lang['acl_perm0']             = 'Ei mitään';
+$lang['acl_perm1']             = 'Luku';
+$lang['acl_perm2']             = 'Muokkaus';
+$lang['acl_perm4']             = 'Luonti';
+$lang['acl_perm8']             = 'Lähetys';
+$lang['acl_perm16']            = 'Poisto';
+$lang['acl_new']               = 'Lisää uusi';
+$lang['acl_mod']               = 'Muokkaa';
diff --git a/wiki/lib/plugins/acl/lang/fr/help.txt b/wiki/lib/plugins/acl/lang/fr/help.txt
new file mode 100644
index 0000000..9fc2af6
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/fr/help.txt
@@ -0,0 +1,11 @@
+=== Aide rapide ===
+
+Cette page vous permet d'ajouter ou de supprimer des autorisations pour les catégories et les pages de votre wiki.
+
+Le panneau de gauche liste toutes les catégories et les pages disponibles.
+
+Le formulaire ci-dessus permet d'afficher et de modifier les autorisations d'un utilisateur ou d'un groupe sélectionné.
+
+Le tableau ci-dessous présente toutes les listes de contrôle d'accès (ACL) actuelles. Vous pouvez l'utiliser pour supprimer ou modifier rapidement plusieurs contrôles d'accès.
+
+La lecture de [[doku>fr:acl|la documentation officielle des contrôles d'accès]] pourra vous permettre de mieux comprendre le fonctionnement du contrôle d'accès dans DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/fr/lang.php b/wiki/lib/plugins/acl/lang/fr/lang.php
new file mode 100644
index 0000000..10ff5cf
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/fr/lang.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sébastien Bauer <sebastien.bauer@advalvas.be>
+ * @author Antoine Fixary <antoine.fixary@freesbee.fr>
+ * @author cumulus <pta-n56@myamail.com>
+ * @author Gwenn Gueguen <contact@demisel.net>
+ * @author Guy Brand <gb@unistra.fr>
+ * @author Fabien Chabreuil <fabien@integralpersonality.com>
+ * @author Stéphane Chamberland <stephane.chamberland@ec.gc.ca>
+ * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
+ * @author stephane.gully <stephane.gully@gmail.com>
+ * @author Guillaume Turri <guillaume.turri@gmail.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author olivier duperray <duperray.olivier@laposte.net>
+ * @author Vincent Feltz <psycho@feltzv.fr>
+ * @author Philippe Bajoit <philippe.bajoit@gmail.com>
+ * @author Florian Gaub <floriang@floriang.net>
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Olivier DUVAL <zorky00@gmail.com>
+ * @author Anael Mobilia <contrib@anael.eu>
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ */
+$lang['admin_acl']             = 'Gestion de la liste des contrôles d\'accès (ACL)';
+$lang['acl_group']             = 'Groupe:';
+$lang['acl_user']              = 'Utilisateur:';
+$lang['acl_perms']             = 'Autorisations pour';
+$lang['page']                  = 'Page';
+$lang['namespace']             = 'Catégorie';
+$lang['btn_select']            = 'Sélectionner';
+$lang['p_user_id']             = 'Autorisations actuelles de l\'utilisateur <strong class="acluser">%s</strong> sur la page <strong class="aclpage">%s</strong> : <em>%s</em>.';
+$lang['p_user_ns']             = 'Autorisations actuelles de l\'utilisateur <strong class="acluser">%s</strong> sur la catégorie <strong class="aclns">%s</strong> : <em>%s</em>.';
+$lang['p_group_id']            = 'Autorisations actuelles des membres du groupe <strong class="aclgroup">%s</strong> sur la page <strong class="aclpage">%s</strong> : <em>%s</em>.';
+$lang['p_group_ns']            = 'Autorisations actuelles des membres du groupe <strong class="aclgroup">%s</strong> sur la catégorie <strong class="aclns">%s</strong> : <em>%s</em>.';
+$lang['p_choose_id']           = 'Saisissez un <strong>nom d\'utilisateur ou de groupe</strong> dans le formulaire ci-dessous pour afficher ou éditer les autorisations relatives à la page <strong class="aclpage">%s</strong>.';
+$lang['p_choose_ns']           = 'Saisissez un <strong>nom d\'utilisateur ou de groupe</strong> dans le formulaire ci-dessous pour afficher ou éditer les autorisations relatives à la catégorie <strong class="aclns">%s</strong>.';
+$lang['p_inherited']           = 'Note : ces autorisations n\'ont pas été explicitement définies mais sont héritées de groupes ou catégories supérieurs.';
+$lang['p_isadmin']             = 'Note : le groupe ou l\'utilisateur sélectionné dispose toujours de toutes les autorisations car il est paramétré en tant que super-utilisateur.';
+$lang['p_include']             = 'Les autorisations les plus élevées incluent les plus faibles. Création, Envoyer et Effacer ne s\'appliquent qu\'aux catégories, pas aux pages.';
+$lang['current']               = 'Contrôles d\'accès actuels';
+$lang['where']                 = 'Page/Catégorie';
+$lang['who']                   = 'Utilisateur/Groupe';
+$lang['perm']                  = 'Autorisations';
+$lang['acl_perm0']             = 'Aucune';
+$lang['acl_perm1']             = 'Lecture';
+$lang['acl_perm2']             = 'Écriture';
+$lang['acl_perm4']             = 'Création';
+$lang['acl_perm8']             = 'Envoyer';
+$lang['acl_perm16']            = 'Effacer';
+$lang['acl_new']               = 'Ajouter une nouvelle entrée';
+$lang['acl_mod']               = 'Modifier l\'entrée';
diff --git a/wiki/lib/plugins/acl/lang/gl/help.txt b/wiki/lib/plugins/acl/lang/gl/help.txt
new file mode 100644
index 0000000..593dcef
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/gl/help.txt
@@ -0,0 +1,11 @@
+=== Axuda Rápida: ===
+
+Nesta páxina podes engadir e eliminar permisos para os nomes de espazo e as páxinas do teu wiki.
+
+O panel da esquerda amosa todos os nomes de espazo e páxinas dispoñíbeis.
+
+O formulario de enriba permíteche ver e modificares os permisos do usuario ou grupo seleccionado.
+
+Na táboa de embaixo amósanse todas as regras de control de accesos estabelecidas. Podes empregala para mudares ou eliminares varias regras dun xeito rápido.
+
+A lectura da [[doku>acl|documentación oficial da ACL]] pode servirche de axuda para comprenderes como funciona o control de accesos no Dokuwiki.
diff --git a/wiki/lib/plugins/acl/lang/gl/lang.php b/wiki/lib/plugins/acl/lang/gl/lang.php
new file mode 100644
index 0000000..74d2a79
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/gl/lang.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Galicianlanguage file
+ *
+ * @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['admin_acl']             = 'Xestión da Lista de Control de Acceso (ACL)';
+$lang['acl_group']             = 'Grupo:';
+$lang['acl_user']              = 'Usuario:';
+$lang['acl_perms']             = 'Permisos para';
+$lang['page']                  = 'Páxina';
+$lang['namespace']             = 'Nome de espazo';
+$lang['btn_select']            = 'Escolle';
+$lang['p_user_id']             = 'O usuario <b class="acluser">%s</b> dispón actualmente dos seguintes permisos na páxina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'O usuario <b class="acluser">%s</b> dispón actualmente dos seguintes permisos no nome de espazo <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Os membros do grupo <b class="aclgroup">%s</b> dispoñen actualmente dos seguintes permisos na páxina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Os membros do grupo <b class="aclgroup">%s</b> cdispoñen actualmente dos seguintes permisos no nome de espazo <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Por favor, <b>insire un usuario ou grupo</b> no formulario de enriba para ver ou editar os permisos establecidos para a páxina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Por favor <b>insire un usuario ou grupo</b> no formulario de enriba para ver ou editar os permisos establecidos no nome de espazo <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Nota: Estes permisos non foron establecidos explicitamente senón que foron herdadas de outros grupos ou nomes de espazo meirandes.';
+$lang['p_isadmin']             = 'Nota: O grupo ou usuario seleccionado terá sempre permisos completos por estar configurado como super-usuario.';
+$lang['p_include']             = 'Os permisos meirandes inclúen os menores. Os permisos de Creación, Subida e Eliminado só se aplican aos nomes de espazo, non ás páxinas.';
+$lang['current']               = 'Regras ACL Actuais';
+$lang['where']                 = 'Páxina/Nome de Espazo';
+$lang['who']                   = 'Usuario/Grupo';
+$lang['perm']                  = 'Permisos';
+$lang['acl_perm0']             = 'Ningún';
+$lang['acl_perm1']             = 'Ler';
+$lang['acl_perm2']             = 'Editar';
+$lang['acl_perm4']             = 'Crear';
+$lang['acl_perm8']             = 'Subir arquivos';
+$lang['acl_perm16']            = 'Eliminar';
+$lang['acl_new']               = 'Engadir nova Entrada';
+$lang['acl_mod']               = 'Modificar Entrada';
diff --git a/wiki/lib/plugins/acl/lang/he/help.txt b/wiki/lib/plugins/acl/lang/he/help.txt
new file mode 100644
index 0000000..33f2933
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/he/help.txt
@@ -0,0 +1,11 @@
+=== עזרה חפוזה: ===
+
+בדף זה ניתן להוסיף ולהסיר הרשאות למרחבי שמות ולדפים בויקי שלך.
+
+הצד השמאלי מציג את כל מרבי השמות והדפים הזמינים.
+
+הטופס מעלה מאפשר לך לראות ולשנות את ההרשאות של משתמש או קבוצה נבחרים.
+
+בטבלה מטה מוצגים כל כללי בקרת הגישה הנוכחיים. ניתן להשתמש בה כדי למחוק או לשנות מספר כללים במהירות.
+
+קריאת [[doku>acl|התיעוד הרשמי ל-ACL ACL]] יכולה לעזור לך להבין באופן מלא כיצד בקרת הגישה עובדת בדוקוויקי.
diff --git a/wiki/lib/plugins/acl/lang/he/lang.php b/wiki/lib/plugins/acl/lang/he/lang.php
new file mode 100644
index 0000000..33ce761
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/he/lang.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author DoK <kamberd@yahoo.com>
+ * @author Moshe Kaplan <mokplan@gmail.com>
+ * @author Yaron Yogev <yaronyogev@gmail.com>
+ * @author Yaron Shahrabani <sh.yaron@gmail.com>
+ */
+$lang['admin_acl']             = 'ניהול רשימת בקרת גישות';
+$lang['acl_group']             = 'קבוצה:';
+$lang['acl_user']              = 'משתמש:';
+$lang['acl_perms']             = 'הרשאות עבור';
+$lang['page']                  = 'דף';
+$lang['namespace']             = 'מרחב שמות';
+$lang['p_user_id']             = 'למשתמש <b class="acluser">%s</b> יש כרגע את ההרשאות הבאות בדף <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'למשתמש <b class="acluser">%s</b> יש כרגע את ההרשאות הבאות במרחב השם <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'לחברי קבוצת <b class="aclgroup">%s</b> יש כרגע את ההרשאות הבאות בדף <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'לחברי קבוצת <b class="aclgroup">%s</b> יש כרגע את ההרשאות הבאות במרחב השם <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'נא <b>להזין משתמש או קבוצה</b> בטופס מעלה כדי לצפות או לערוך את ההרשאות המוגדרות עבור הדף <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'נא <b>להזין משתמש או קבוצה</b> בטופס מעלה כדי לצפות או לערוך את ההרשאות המוגדרות עבור מרחב השם <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'לתשומת לבך: הרשאות אלו לא הוגדרו באופן מפורש אלא נורשו מקבוצות אחרות או ממרחב שמות גבוה יותר.';
+$lang['p_isadmin']             = 'לתשומת לבך: לקבוצה או המשתמש שנבחרו יש תמיד הרשאות מלאות בגלל הגדרתם כמשתמש-על.';
+$lang['current']               = 'חוקי ה-ACL הנוכחיים';
+$lang['where']                 = 'דף/מרחב שם';
+$lang['who']                   = 'משתמש/קבוצה';
+$lang['perm']                  = 'הרשאות';
+$lang['acl_perm0']             = 'ללא';
+$lang['acl_perm1']             = 'קריאה';
+$lang['acl_perm2']             = 'עריכה';
+$lang['acl_perm4']             = 'יצירה';
+$lang['acl_perm8']             = 'העלאה';
+$lang['acl_perm16']            = 'מחיקה';
+$lang['acl_new']               = 'הוספת רשומה חדשה';
+$lang['acl_mod']               = 'שינויי מובאה';
diff --git a/wiki/lib/plugins/acl/lang/hr/help.txt b/wiki/lib/plugins/acl/lang/hr/help.txt
new file mode 100644
index 0000000..4e7cfc3
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/hr/help.txt
@@ -0,0 +1,11 @@
+=== Brza Pomoć: ===
+
+Na ovoj stranici možeš dodavati i brisati dozvole za imenske prostore i stranice u svom wiki-u.
+
+Lijevi prozor prikazuje sve dostupne imenske prostore i stranice.
+
+Forma iznad ti omogućuje pregled i mijenjanje dozvola odabranom korisniku ili grupi.
+
+U tablici ispod prikazana su sva trenutno postavljena pravila kontrole pristupa. Koristite je za višestruko brisanje ili mijenjanje pravila.
+
+Čitanje [[doku>acl|službena dokumentacija o ACL]] može vam pomoći potpuno razumijeti kako kontrola pristupa radi u DokuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/hr/lang.php b/wiki/lib/plugins/acl/lang/hr/lang.php
new file mode 100644
index 0000000..d188176
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/hr/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Branko Rihtman <theney@gmail.com>
+ * @author Dražen Odobašić <dodobasic@gmail.com>
+ * @author Dejan Igrec <dejan.igrec@gmail.com>
+ */
+$lang['admin_acl']             = 'Upravljanje listom kontrole pristupa';
+$lang['acl_group']             = 'Grupa:';
+$lang['acl_user']              = 'Korisnik:';
+$lang['acl_perms']             = 'Dozvole za';
+$lang['page']                  = 'Stranica';
+$lang['namespace']             = 'Imenski prostor';
+$lang['btn_select']            = 'Odaberi';
+$lang['p_user_id']             = 'Korisnik <b class="acluser">%s</b> trenutno ima sljedeće dozvole na stranici <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Korisnik <b class="acluser">%s</b> trenutno ima sljedeće dozvole u imenskom prostoru <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Članovi grupe <b class="aclgroup">%s</b> trenutno imaju sljedeće dozvole na stranici <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Članovi grupe <b class="aclgroup">%s</b> trenutno imaju sljedeće dozvole u imenskom prostoru <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Molim <b>unesti korisnika ili grupu</b> u gornju formu za pregled ili uređivanje dozvola postavljenih za stranicu <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Molim <b>unesti korisnika ili grupu</b> u gornju formu za pregled ili uređivanje dozvola postavljenih za imenski prostor <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Napomena: Ove dozvole nisu postavljene eksplicitno već su naslijeđene od drugih grupa ili nadređenih imenskih prostora.';
+$lang['p_isadmin']             = 'Napomena: Odabrana grupa ili korisnik uvijek ima sve dozvole jer je postavljen kao superuser.';
+$lang['p_include']             = 'Više dozvole uključuju sve niže. Dozvole Kreiraj, Učitaj i Briši se primjenjuju samo na imenske prostore, ne stranice.';
+$lang['current']               = 'Trenutna ACL Pravila';
+$lang['where']                 = 'Stranica/Imenski prostor';
+$lang['who']                   = 'Korisnik/Grupa';
+$lang['perm']                  = 'Dozvole';
+$lang['acl_perm0']             = 'Ništa';
+$lang['acl_perm1']             = 'Čitaj';
+$lang['acl_perm2']             = 'Uredi';
+$lang['acl_perm4']             = 'Kreiraj';
+$lang['acl_perm8']             = 'Učitaj';
+$lang['acl_perm16']            = 'Briši';
+$lang['acl_new']               = 'Dodaj novi Zapis';
+$lang['acl_mod']               = 'Promijeni Zapis';
diff --git a/wiki/lib/plugins/acl/lang/hu/help.txt b/wiki/lib/plugins/acl/lang/hu/help.txt
new file mode 100644
index 0000000..57f16a3
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/hu/help.txt
@@ -0,0 +1,12 @@
+=== Hozzáférési lista (ACL) kezelő ===
+
+Ezen az oldalon jogokat oszthat és vehet el a wiki oldalakhoz és névterekhez.
+
+A bal oldalon látható az összes névtér és oldal.
+
+A felső form segít a kiválasztott felhasználó vagy csoport jogosultságainak megtekintésében vagy változtatásában.
+
+Az alsó táblázat mutatja az összes jelenleg érvényes hozzáférési szabályt. Ennek segítségével gyorsan törölhetők vagy megváltoztathatók a szabályok.
+
+A [[doku>acl|hivatalos ACL dokumentáció]] segíthet a DokuWiki hozzáférés-kezelés működésének megértésében.
+
diff --git a/wiki/lib/plugins/acl/lang/hu/lang.php b/wiki/lib/plugins/acl/lang/hu/lang.php
new file mode 100644
index 0000000..cc35243
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/hu/lang.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Sandor TIHANYI <stihanyi+dw@gmail.com>
+ * @author Siaynoq Mage <siaynoqmage@gmail.com>
+ * @author schilling.janos@gmail.com
+ * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
+ * @author Sándor TIHANYI <stihanyi+dw@gmail.com>
+ * @author David Szabo <szabo.david@gyumolcstarhely.hu>
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['admin_acl']             = 'Hozzáférési lista (ACL) kezelő';
+$lang['acl_group']             = 'Csoport:';
+$lang['acl_user']              = 'Felhasználó:';
+$lang['acl_perms']             = 'Jogosultság ehhez:';
+$lang['page']                  = 'Oldal';
+$lang['namespace']             = 'Névtér';
+$lang['btn_select']            = 'Kiválaszt';
+$lang['p_user_id']             = 'A(z) <b class="acluser">%s</b> felhasználónak jelenleg a következő jogosultsága van ezen az oldalon:  <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'A(z) <b class="acluser">%s</b> felhasználónak jelenleg a következő jogosultsága van ebben a névtérben: <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'A(z) <b class="aclgroup">%s</b> csoport tagjainak jelenleg a következő jogosultsága van ezen az oldalon:  <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'A(z) <b class="aclgroup">%s</b> csoport tagjainak jelenleg a következő jogosultsága van ebben a névtérben: <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'A felső űrlapon <b>adjon meg egy felhasználót vagy csoportot</b>, akinek a(z) <b class="aclpage">%s</b> oldalhoz beállított jogosultságait megtekinteni vagy változtatni szeretné.';
+$lang['p_choose_ns']           = 'A felső űrlapon <b>adj meg egy felhasználót vagy csoportot</b>, akinek a(z) <b class="aclns">%s</b> névtérhez beállított jogosultságait megtekinteni vagy változtatni szeretnéd.';
+$lang['p_inherited']           = 'Megjegyzés: ezek a jogok nem itt lettek explicit beállítva, hanem öröklődtek egyéb csoportokból vagy felsőbb névterekből.';
+$lang['p_isadmin']             = 'Megjegyzés: a kiválasztott csoportnak vagy felhasználónak mindig teljes jogosultsága lesz, mert Adminisztrátornak van beállítva.';
+$lang['p_include']             = 'A magasabb szintű jogok tartalmazzák az alacsonyabbakat. A Létrehozás, Feltöltés és Törlés jogosultságok csak névterekre alkalmazhatók, az egyes oldalakra nem.';
+$lang['current']               = 'Jelenlegi hozzáférési szabályok';
+$lang['where']                 = 'Oldal/Névtér';
+$lang['who']                   = 'Felhasználó/Csoport';
+$lang['perm']                  = 'Jogosultságok';
+$lang['acl_perm0']             = 'Semmi';
+$lang['acl_perm1']             = 'Olvasás';
+$lang['acl_perm2']             = 'Szerkesztés';
+$lang['acl_perm4']             = 'Létrehozás';
+$lang['acl_perm8']             = 'Feltöltés';
+$lang['acl_perm16']            = 'Törlés';
+$lang['acl_new']               = 'Új bejegyzés hozzáadása';
+$lang['acl_mod']               = 'Bejegyzés módosítása';
diff --git a/wiki/lib/plugins/acl/lang/ia/help.txt b/wiki/lib/plugins/acl/lang/ia/help.txt
new file mode 100644
index 0000000..59f5764
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ia/help.txt
@@ -0,0 +1,11 @@
+=== Adjuta rapide: ===
+
+In iste pagina tu pote adder e remover permissiones pro spatios de nomines e paginas in tu wiki.
+
+Le columna sinistre presenta tote le spatios de nomines e paginas disponibile.
+
+Le formulario hic supra permitte vider e modificar le permissiones de un usator o gruppo seligite.
+
+In le tabella hic infra se monstra tote le regulas de controlo de accesso actualmente configurate. Tu pote usar lo pro rapidemente deler o modificar plure regulas.
+
+Es recommendate leger le [[doku>acl|documentation official super ACL]] pro comprender completemente como le controlo de accesso functiona in DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/ia/lang.php b/wiki/lib/plugins/acl/lang/ia/lang.php
new file mode 100644
index 0000000..121424c
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ia/lang.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Interlingua language file
+ *
+ * @author robocap <robocap1@gmail.com>
+ * @author Martijn Dekker <martijn@inlv.org>
+ */
+$lang['admin_acl']             = 'Gestion de listas de controlo de accesso';
+$lang['acl_group']             = 'Gruppo:';
+$lang['acl_user']              = 'Usator:';
+$lang['acl_perms']             = 'Permissiones pro';
+$lang['page']                  = 'Pagina';
+$lang['namespace']             = 'Spatio de nomines';
+$lang['btn_select']            = 'Seliger';
+$lang['p_user_id']             = 'Le usator <b class="acluser">%s</b> ha actualmente le sequente permissiones in le pagina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Le usator <b class="acluser">%s</b> ha actualmente le sequente permissiones in le spatio de nomines <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Le membros del gruppo <b class="aclgroup">%s</b> a actualmente le sequente permissiones in le pagina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Le membros del gruppo <b class="aclgroup">%s</b> ha actualmente le sequente permissiones in le spatio de nomines <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Per favor <b>entra un usator o gruppo</b> in le formulario hic supra pro vider o modificar le permissiones configurate pro le pagina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Per favor <b>entra un usator o gruppo</b> in le formulario hic supra pro vider o modificar le permissiones configurate pro le spatio de nomines <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Nota ben: Iste permissiones non ha essite configurate explicitemente ma ha essite hereditate de altere gruppos o de spatios de nomines superior.';
+$lang['p_isadmin']             = 'Nota ben: Le gruppo o usator seligite ha sempre permissiones integral proque es configurate como superusator.';
+$lang['p_include']             = 'Le permissiones superior include les inferior. Le permissiones de Crear, Incargar e Deler es solmente applicabile a spatios de nomines, non a paginas.';
+$lang['current']               = 'Regulas ACL actual';
+$lang['where']                 = 'Pagina/Spatio de nomines';
+$lang['who']                   = 'Usator/Gruppo';
+$lang['perm']                  = 'Permissiones';
+$lang['acl_perm0']             = 'Nulle';
+$lang['acl_perm1']             = 'Leger';
+$lang['acl_perm2']             = 'Modificar';
+$lang['acl_perm4']             = 'Crear';
+$lang['acl_perm8']             = 'Incargar';
+$lang['acl_perm16']            = 'Deler';
+$lang['acl_new']               = 'Adder nove entrata';
+$lang['acl_mod']               = 'Modificar entrata';
diff --git a/wiki/lib/plugins/acl/lang/id/lang.php b/wiki/lib/plugins/acl/lang/id/lang.php
new file mode 100644
index 0000000..3b0ecf4
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/id/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author mubaidillah <mubaidillah@gmail.com>
+ * @author Yustinus Waruwu <juswaruwu@gmail.com>
+ */
+$lang['admin_acl']             = 'Manajemen Daftar Pengendali Akses';
+$lang['acl_group']             = 'Grup:';
+$lang['acl_user']              = 'User:';
+$lang['acl_perms']             = 'Ijin untuk';
+$lang['page']                  = 'Halaman';
+$lang['namespace']             = 'Namespace';
+$lang['btn_select']            = 'Pilih';
+$lang['acl_perm1']             = 'Baca';
+$lang['acl_perm2']             = 'Ubah';
+$lang['acl_perm4']             = 'Buat';
+$lang['acl_perm8']             = 'Upload';
+$lang['acl_perm16']            = 'Hapus';
+$lang['acl_new']               = 'Tambah Entry baru';
diff --git a/wiki/lib/plugins/acl/lang/is/lang.php b/wiki/lib/plugins/acl/lang/is/lang.php
new file mode 100644
index 0000000..13ed7bf
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/is/lang.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Icelandic language file
+ *
+ * @author Hrannar Baldursson <hrannar.baldursson@gmail.com>
+ * @author Ólafur Gunnlaugsson <oli@audiotools.com>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ */
+$lang['acl_group']             = 'Hópur:';
+$lang['acl_user']              = 'Notandi:';
+$lang['page']                  = 'Síða';
+$lang['namespace']             = 'Nafnrými';
+$lang['btn_select']            = 'Veldu';
+$lang['where']                 = 'Síða/Nafnrými';
+$lang['acl_perm16']            = 'Eyða';
diff --git a/wiki/lib/plugins/acl/lang/it/help.txt b/wiki/lib/plugins/acl/lang/it/help.txt
new file mode 100644
index 0000000..8bf68e8
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/it/help.txt
@@ -0,0 +1,11 @@
+=== Breve Aiuto: ===
+
+In questa pagina puoi aggiungere e rimuovere permessi per categorie e pagine del tuo wiki.
+
+Il pannello di sinistra mostra tutte le categorie e le pagine disponibili.
+
+Il campo sopra ti permette di vedere e modificare i permessi di un utente o gruppo selezionato.
+
+Nella tabella sotto, sono riportate tutte le regole di controllo degli accessi attualmente impostate. Puoi utilizzarla per eliminare o cambiare al volo varie regole.
+
+Leggere la [[doku>acl|documentazione ufficale delle ACL]] può aiutarti a capire pienamente come funziona il controllo degli accessi in DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/it/lang.php b/wiki/lib/plugins/acl/lang/it/lang.php
new file mode 100644
index 0000000..7528d49
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/it/lang.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Giorgio Vecchiocattivi <giorgio@vecchio.it>
+ * @author Roberto Bolli <http://www.rbnet.it/>
+ * @author Pietro Battiston <toobaz@email.it>
+ * @author Lorenzo Breda <lbreda@gmail.com>
+ * @author robocap <robocap1@gmail.com>
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ */
+$lang['admin_acl']             = 'Gestione Lista Controllo Accessi (ACL)';
+$lang['acl_group']             = 'Gruppo:';
+$lang['acl_user']              = 'Utente:';
+$lang['acl_perms']             = 'Permessi per';
+$lang['page']                  = 'Pagina';
+$lang['namespace']             = 'Categoria';
+$lang['btn_select']            = 'Seleziona';
+$lang['p_user_id']             = 'L\'utente <b class="acluser">%s</b> attualmente ha i seguenti permessi sulla pagina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'L\'utente <b class="acluser">%s</b> attualmente ha i seguenti permessi per la categoria <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'I membri del gruppo<b class="aclgroup">%s</b> attualmente hanno i seguenti permessi sulla pagina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'I membri del gruppo<b class="aclgroup">%s</b> attualmente hanno i seguenti permessi per la categoria <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = '<b>Inserisci un utente o gruppo</b> nel campo sopra per modificare i permessi impostati per la pagina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = '<b>Inserisci un utente o un gruppo</b> nel campo sopra per modificare i permessi impostati per la categoria <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Nota: questi permessi non sono stati esplicitamente impostati, ma sono stati ereditati da altri gruppi o da categorie superiori.';
+$lang['p_isadmin']             = 'Nota: il gruppo o utente selezionato ha sempre tutti i permessi perché è configurato come amministratore.';
+$lang['p_include']             = 'I permessi più elevati includono i permessi inferiori. I permessi Crea, Carica ed Elimina si applicano soltanto alle categorie e non alle pagine.';
+$lang['current']               = 'Regole ACL attuali';
+$lang['where']                 = 'Pagina/Categoria';
+$lang['who']                   = 'Utente/Gruppo';
+$lang['perm']                  = 'Permessi';
+$lang['acl_perm0']             = 'Nessuno';
+$lang['acl_perm1']             = 'Lettura';
+$lang['acl_perm2']             = 'Modifica';
+$lang['acl_perm4']             = 'Crea';
+$lang['acl_perm8']             = 'Carica';
+$lang['acl_perm16']            = 'Elimina';
+$lang['acl_new']               = 'Aggiungi nuovo valore';
+$lang['acl_mod']               = 'Modifica valore';
diff --git a/wiki/lib/plugins/acl/lang/ja/help.txt b/wiki/lib/plugins/acl/lang/ja/help.txt
new file mode 100644
index 0000000..a1f03a3
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ja/help.txt
@@ -0,0 +1,8 @@
+=== 操作案内 ===
+
+このページでは、Wiki 内の名前空間とページに対する権限を追加・削除することができます。
+  * 左側のボックスには存在する名前空間とページが表示されています。
+  * 上部のフォームを使って、選択したユーザーもしくはグループの権限を閲覧・変更することができます。
+  * 下部の一覧は、現在設定されているアクセス制御のルールを表示します。この一覧を使って、複数のルールを素早く変更・削除することが可能です。
+
+DokuWiki のアクセス制御については、[[doku>ja:acl|アクセス制御リスト (ACL)の公式解説]]をお読み下さい。
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/ja/lang.php b/wiki/lib/plugins/acl/lang/ja/lang.php
new file mode 100644
index 0000000..24a3639
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ja/lang.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davilin(Yuji Takenaka) <webmaster@davilin.com>
+ * @author Yuji Takenaka <webmaster@davilin.com>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ * @author Daniel Dupriest <kououken@gmail.com>
+ * @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ */
+$lang['admin_acl']             = 'アクセスコントロール管理';
+$lang['acl_group']             = 'グループ:';
+$lang['acl_user']              = 'ユーザー:';
+$lang['acl_perms']             = '権限を追加';
+$lang['page']                  = '文書';
+$lang['namespace']             = '名前空間';
+$lang['btn_select']            = '選択';
+$lang['p_user_id']             = 'ユーザー <b class="acluser">%s</b> は、ページ <b class="aclpage">%s</b> に対して次の権限を持っています: <i>%s</i>';
+$lang['p_user_ns']             = 'ユーザー <b class="acluser">%s</b> は、名前空間 <b class="aclns">%s</b> に対して次の権限を持っています: <i>%s</i>';
+$lang['p_group_id']            = 'グループ <b class="aclgroup">%s</b> のメンバーは、ページ <b class="aclpage">%s</b> に対して次の権限を持っています: <i>%s</i>';
+$lang['p_group_ns']            = 'グループ <b class="aclgroup">%s</b> のメンバーは、名前空間 <b class="aclns">%s</b> に対して次の権限を持っています: <i>%s</i>';
+$lang['p_choose_id']           = 'ページ <b class="aclpage">%s</b> にセットされた権限を閲覧・編集するためには、上記のフォームに<b>ユーザー名もしくはグループ名を入力して下さい</b>。';
+$lang['p_choose_ns']           = '名前空間 <b class="aclns">%s</b> にセットされた権限を閲覧・編集するためには、上記のフォームに<b>ユーザー名もしくはグループ名を入力して下さい</b>。';
+$lang['p_inherited']           = '注意:これらの権限は明示されていませんが、他のグループもしくは上位の名前空間の権限を継承します。';
+$lang['p_isadmin']             = '注意:選択したグループもしくはユーザーはスーパーユーザーであるため、全ての権限があります。';
+$lang['p_include']             = '高次の権限は、それより低次の権限を含みます。作成・アップロード・削除の権限は、ページではなく名前空間のみに適用されます。';
+$lang['current']               = '現在のACLルール';
+$lang['where']                 = 'ページ/名前空間';
+$lang['who']                   = 'ユーザー/グループ';
+$lang['perm']                  = '権限';
+$lang['acl_perm0']             = '無し';
+$lang['acl_perm1']             = '読取';
+$lang['acl_perm2']             = '編集';
+$lang['acl_perm4']             = '作成';
+$lang['acl_perm8']             = 'アップロード';
+$lang['acl_perm16']            = '削除';
+$lang['acl_new']               = '新規エントリ';
+$lang['acl_mod']               = 'エントリの編集';
diff --git a/wiki/lib/plugins/acl/lang/kk/lang.php b/wiki/lib/plugins/acl/lang/kk/lang.php
new file mode 100644
index 0000000..28984fd
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/kk/lang.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * kazakh language file
+ *
+ * @author Nurgozha Kaliaskarov astana08@gmail.com
+ */
+$lang['acl_group']             = 'Группа:';
+$lang['acl_user']              = 'Пайдаланушы:';
+$lang['page']                  = 'Бет';
+$lang['acl_perm1']             = 'Оқу';
diff --git a/wiki/lib/plugins/acl/lang/ko/help.txt b/wiki/lib/plugins/acl/lang/ko/help.txt
new file mode 100644
index 0000000..80069b3
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ko/help.txt
@@ -0,0 +1,8 @@
+=== 빠른 도움말: ===
+
+현재 문서에서 위키 이름공간과 문서에 대한 접근 권한을 추가하거나 삭제할 수 있습니다.
+  * 왼쪽 영역에는 선택 가능한 이름공간과 문서 목록을 보여줍니다.
+  * 위쪽 입력 양식에서 선택된 사용자와 그룹의 접근 권한을 보거나 바꿀 수 있습니다.
+  * 아래 테이블에서 현재 설정된 모든 접근 제어 규칙을 볼 수 있으며, 즉시 여러 규칙을 삭제하거나 바꿀 수 있습니다.
+
+도쿠위키에서 접근 제어가 어떻게 동작되는지 알아보려면 [[doku>ko:acl|ACL 공식 문서]]를 읽어보시기 바랍니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/ko/lang.php b/wiki/lib/plugins/acl/lang/ko/lang.php
new file mode 100644
index 0000000..35f06c4
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ko/lang.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ * @author jk Lee
+ * @author dongnak <dongnak@gmail.com>
+ * @author Song Younghwan <purluno@gmail.com>
+ * @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2 <erial2@gmail.com>
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Garam <rowain8@gmail.com>
+ */
+$lang['admin_acl']             = '접근 제어 목록 관리';
+$lang['acl_group']             = '그룹:';
+$lang['acl_user']              = '사용자:';
+$lang['acl_perms']             = '권한';
+$lang['page']                  = '문서';
+$lang['namespace']             = '이름공간';
+$lang['btn_select']            = '선택';
+$lang['p_user_id']             = '<b class="acluser">%s</b> 사용자는 현재 <b class="aclpage">%s</b>: <i>%s</i> 문서에 접근이 가능합니다.';
+$lang['p_user_ns']             = '<b class="acluser">%s</b> 사용자는 현재 <b class="aclns">%s</b>: <i>%s</i> 이름공간에 접근이 가능합니다.';
+$lang['p_group_id']            = '<b class="aclgroup">%s</b> 그룹 구성원은 현재 <b class="aclpage">%s</b>: <i>%s</i> 문서에 접근이 가능합니다.';
+$lang['p_group_ns']            = '<b class="aclgroup">%s</b> 그룹 구성원은 현재 <b class="aclns">%s</b>: <i>%s</i> 이름공간에 접근이 가능합니다.';
+$lang['p_choose_id']           = '<b class="aclpage">%s</b> 문서 접근 권한을 보거나 바꾸려면 <b>사용자</b>나 <b>그룹</b>을 위 양식에 입력하세요.';
+$lang['p_choose_ns']           = '<b class="aclns">%s</b> 이름공간 접근 권한을 보거나 바꾸려면 <b>사용자</b>나 <b>그룹</b>을 위 양식에 입력하세요.';
+$lang['p_inherited']           = '참고: 권한이 명시적으로 설정되지 않았으므로 다른 그룹이나 상위 이름공간으로부터 가져왔습니다.';
+$lang['p_isadmin']             = '참고: 슈퍼 사용자로 설정되어 있으므로 선택된 그룹이나 사용자는 언제나 모든 접근 권한을 가집니다.';
+$lang['p_include']             = '더 높은 접근 권한은 하위를 포함합니다. 문서가 아닌 이름공간에는 만들기, 올리기, 삭제 권한만 적용됩니다.';
+$lang['current']               = '현재 ACL 규칙';
+$lang['where']                 = '문서/이름공간';
+$lang['who']                   = '사용자/그룹';
+$lang['perm']                  = '권한';
+$lang['acl_perm0']             = '없음';
+$lang['acl_perm1']             = '읽기';
+$lang['acl_perm2']             = '편집';
+$lang['acl_perm4']             = '만들기';
+$lang['acl_perm8']             = '올리기';
+$lang['acl_perm16']            = '삭제';
+$lang['acl_new']               = '새 항목 추가';
+$lang['acl_mod']               = '항목 수정';
diff --git a/wiki/lib/plugins/acl/lang/la/help.txt b/wiki/lib/plugins/acl/lang/la/help.txt
new file mode 100644
index 0000000..553884c
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/la/help.txt
@@ -0,0 +1,11 @@
+=== Auxilium: ===
+
+Hic facultates generum paginarumque addere delereue potes.
+
+Tabella sinistra omnes paginas generaque ostendit.
+
+His campis mutare facultates electorum Sodalium Gregumque potes.
+
+In tabula omnes administrationis leges ostensae sunt. Delere quoque uel mutare plures leges potes.
+
+Si [[doku>acl|official documentation on ACL]] legas, maius auxilium in Vicem mutando habes.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/la/lang.php b/wiki/lib/plugins/acl/lang/la/lang.php
new file mode 100644
index 0000000..3779ba7
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/la/lang.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Latin language file
+ *
+ * @author Massimiliano Vassalli <vassalli.max@gmail.com>
+ */
+$lang['admin_acl']             = 'Administratio Indicis Custodiae Aditus';
+$lang['acl_group']             = 'Grex:';
+$lang['acl_user']              = 'Sodalis:';
+$lang['acl_perms']             = 'Facultas:';
+$lang['page']                  = 'Pagina';
+$lang['namespace']             = 'Genus';
+$lang['btn_select']            = 'eligere';
+$lang['p_user_id']             = 'Sodalis <b class="acluser">%s</b> nunc has facultates paginae "<b class="aclpage">%s</b> habes: <i>%s</i>.';
+$lang['p_user_ns']             = 'Sodalis <b class="acluser">%s</b> nunc has facultates generis "<b class="aclns">%s</b> habes: <i>%s</i>.';
+$lang['p_group_id']            = 'Socius\a gregis <b class="aclgroup">%s</b> nunc has facultates paginae "<b class="aclpage">%s</b> habes: <i>%s</i>.';
+$lang['p_group_ns']            = 'Socius\a gregis <b class="aclgroup">%s</b> nunc has facultates generis "<b class="aclns">%s</b> habes: <i>%s</i>.';
+$lang['p_choose_id']           = '<b>Sodalis grexue</b> in campo insere ut facultates paginae <b class="aclpage">%s</b> uideas.';
+$lang['p_choose_ns']           = '<b>Sodalis grexue</b> in campo insere ut facultates generis <b class="aclns">%s</b> uideas.';
+$lang['p_inherited']           = 'Caue: hae facultates et huic rei et aliis gregibus uel generibus legitimae sunt.';
+$lang['p_isadmin']             = 'Caue: electi greges semper plenum ius habent, eo quod ut magister\stra elegitur.';
+$lang['p_include']             = 'Maiores facultates minores includunt. Creandi, onerandi uel delendi facultates solum generibus, non paginis sunt.';
+$lang['current']               = 'Communes ICA leges';
+$lang['where']                 = 'Pagina/Genus';
+$lang['who']                   = 'Sodalis/Grex';
+$lang['perm']                  = 'Facultates';
+$lang['acl_perm0']             = 'Nihil';
+$lang['acl_perm1']             = 'Legere';
+$lang['acl_perm2']             = 'Recensere';
+$lang['acl_perm4']             = 'Creare';
+$lang['acl_perm8']             = 'Onerare';
+$lang['acl_perm16']            = 'Delere';
+$lang['acl_new']               = 'Nouom addere';
+$lang['acl_mod']               = 'Nouom recensere';
diff --git a/wiki/lib/plugins/acl/lang/lb/help.txt b/wiki/lib/plugins/acl/lang/lb/help.txt
new file mode 100644
index 0000000..e36ed37
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/lb/help.txt
@@ -0,0 +1,11 @@
+=== Séier Hëllef: ===
+
+Op dëser Säit kanns de Rechter fir Namespacen a Säiten an dengem Wiki setzen.
+
+Op der lénkser Säit hues de all d'Namespacen a Säiten.
+
+Am Formulär hei uewendriwwer kanns de d'Rechter vun dem ausgewielte Benotzer oder Grupp änneren
+
+An der Tabell hei ënnendrënner kanns de all d'Reegele gesinn déi de Moment gesat sinn. Du kanns se huelen fir Reegelen ze änneren oder ze läschen.
+
+Déi [[doku>acl|offiziell Dokumentatioun iwwert ACL]] hëlleft der besser ze verstoen wéi déi Reegelen am Dokuwiki funktionéieren.
diff --git a/wiki/lib/plugins/acl/lang/lt/lang.php b/wiki/lib/plugins/acl/lang/lt/lang.php
new file mode 100644
index 0000000..2a1748a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/lt/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Linas Valiukas <shirshegsm@gmail.com>
+ * @author audrius.klevas@gmail.com
+ * @author Arunas Vaitekunas <aras@fan.lt>
+ */
+$lang['admin_acl']             = 'Priėjimo Kontrolės Sąrašų valdymas';
+$lang['acl_group']             = 'Grupė:';
+$lang['acl_user']              = 'Vartotojas:';
+$lang['acl_perms']             = 'Leidimai';
+$lang['page']                  = 'Puslapis';
+$lang['namespace']             = 'Pavadinimas';
+$lang['btn_select']            = 'Rinktis';
+$lang['acl_perm1']             = 'Skaityti';
+$lang['acl_perm2']             = 'Redaguoti';
+$lang['acl_perm4']             = 'Sukurti';
+$lang['acl_perm8']             = 'Atsiųsti';
+$lang['acl_perm16']            = 'Ištrinti';
+$lang['acl_new']               = 'Pridėti naują įrašą';
diff --git a/wiki/lib/plugins/acl/lang/lv/help.txt b/wiki/lib/plugins/acl/lang/lv/help.txt
new file mode 100644
index 0000000..f570d79
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/lv/help.txt
@@ -0,0 +1,11 @@
+=== Īsa palīdzība ===
+
+Šajā lapā var uzdot un noņemt tiesības uz lapām un nodaļām.
+
+Kreisajā pusē parādītas visas pieejamās nodaļas un lapas.
+
+Formā augšpusē var redzēt un grozīt norādītā lietotāja vai grupas tiesības .
+
+Apakšā tabulā  parādīts visu tiesību saraksts. To var lietot, lai ātri mainītu vairākus pieejas tiesību noteikumus.
+
+[[doku>acl|Officiālajos piekļuves tiesību noteikumu dokumentos]] var atrast izvērstu informāciju, kā darbojas DokuWiki sistēmas piekļuves tiesību kontrole.
diff --git a/wiki/lib/plugins/acl/lang/lv/lang.php b/wiki/lib/plugins/acl/lang/lv/lang.php
new file mode 100644
index 0000000..e4ca492
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/lv/lang.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['admin_acl']             = 'Piekļuves tiesību vadība';
+$lang['acl_group']             = 'Grupa:';
+$lang['acl_user']              = 'Lietotājs:';
+$lang['acl_perms']             = 'Tiesības';
+$lang['page']                  = 'Lapa';
+$lang['namespace']             = 'Nodaļa';
+$lang['btn_select']            = 'Izvēlēties';
+$lang['p_user_id']             = 'Lietotājam <b class="acluser">%s</b> ir tiesības <i>%s</i> lapu <b class="aclpage">%s</b> .';
+$lang['p_user_ns']             = 'Lietotājam <b class="acluser">%s</b> nodaļā <b class="aclns">%s</b> ir tiesības <i>%s</i>.';
+$lang['p_group_id']            = 'Grupas <b class="aclgroup">%s</b> biedriem ir tiesības <i>%s</i> lapu <b class="aclpage">%s</b>.';
+$lang['p_group_ns']            = 'Grupas <b class="aclgroup">%s</b> biedriem ir tiesības <i>%s</i> nodaļu  <b class="aclns">%s</b>: .';
+$lang['p_choose_id']           = 'Lūdzu <b>ieraksti lietotāju vai grupu</b> augstāk norādītajā laukā, lai skatītu vai labotu tiesības lapai <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Lūdzu <b>ieraksti lietotāju vai grupu</b> augstāk norādītajā laukā, lai skatītu vai labotu tiesības nodaļai <b class="aclpage">%s</b>.';
+$lang['p_inherited']           = 'Ievēro: Šīs tiesības nav tieši uzdotas, bet mantotas no citām grupām vai augstākām nodaļām. ';
+$lang['p_isadmin']             = 'Ievēro: Norādītajai grupai vai lietotājam vienmēr ir visas tiesības, jo tas konfigurēts kā <i>superuser</i>.';
+$lang['p_include']             = 'Augstāka atļauja iekļauj arī zemākās tiesības. Izveidošanas, augšupielādēšanas un dzēšanas tiesības attiecas tikai uz nodaļām, nevis lapām.';
+$lang['current']               = 'Patreizējo tiesību saraksts (ACL)';
+$lang['where']                 = 'Lapa/nodaļa';
+$lang['who']                   = 'Lietotājs/grupa';
+$lang['perm']                  = 'Tiesības';
+$lang['acl_perm0']             = 'nekādas';
+$lang['acl_perm1']             = 'lasīt';
+$lang['acl_perm2']             = 'labot';
+$lang['acl_perm4']             = 'izveidot';
+$lang['acl_perm8']             = 'augšupielādēt';
+$lang['acl_perm16']            = 'dzēst';
+$lang['acl_new']               = 'pievienot jaunu šķirkli';
+$lang['acl_mod']               = 'labot šķirkli';
diff --git a/wiki/lib/plugins/acl/lang/mk/lang.php b/wiki/lib/plugins/acl/lang/mk/lang.php
new file mode 100644
index 0000000..27f41e7
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/mk/lang.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Macedonian language file
+ *
+ * @author Dimitar Talevski <dimi3.14@gmail.com>
+ */
+$lang['acl_group']             = 'Група:';
+$lang['acl_user']              = 'Корисник:';
+$lang['acl_perms']             = 'Пермисии за';
+$lang['page']                  = 'Страница';
+$lang['btn_select']            = 'Избери';
+$lang['current']               = 'Моментални ACL правила';
+$lang['who']                   = 'Корисник/група';
+$lang['perm']                  = 'Пермисии';
+$lang['acl_perm0']             = 'Ништо';
+$lang['acl_perm1']             = 'Читај';
+$lang['acl_perm2']             = 'Уреди';
+$lang['acl_perm4']             = 'Креирај';
+$lang['acl_perm8']             = 'Качи';
+$lang['acl_perm16']            = 'Избриши';
+$lang['acl_new']               = 'Додај нов запис';
+$lang['acl_mod']               = 'Измени запис';
diff --git a/wiki/lib/plugins/acl/lang/mr/help.txt b/wiki/lib/plugins/acl/lang/mr/help.txt
new file mode 100644
index 0000000..e8aa13b
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/mr/help.txt
@@ -0,0 +1,12 @@
+=== त्वरित मदत ===
+
+या पानावर तुमची तुमच्या विकी मधील पाने किंवा नेमस्पेस वरील परवानग्या बदलू शकता.
+
+डाविकडील मार्जिन मधे सर्व उपलब्ध पाने आणि नेमस्पेस दाखवले आहेत.
+
+वरील फॉर्म वापरून तुमची निवडलेल्या सदस्य किंवा गटाच्या परवानग्या बदलू शकता.
+
+खालील टेबल मधे सध्या सेट असलेले नियम दिलेले आहेत.
+हे टेबल वापरून तुम्ही चटकन हे नियम बदलू शकता.
+
+[[doku>acl| ACL वरील अधिकृत माहितीसंग्रह ]] वाचून तुम्हाला डॉक्युविकिमधे परवानगीची व्यवस्था कशी काम करते ते नीट समजेल.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/mr/lang.php b/wiki/lib/plugins/acl/lang/mr/lang.php
new file mode 100644
index 0000000..1094ed7
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/mr/lang.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Marathi language file
+ *
+ * @author ghatothkach@hotmail.com
+ * @author Padmanabh Kulkarni <kulkarnipadmanabh@gmail.com>
+ * @author Padmanabh Kulkarni<kulkarnipadmanabh@gmail.com>
+ * @author shantanoo@gmail.com
+ */
+$lang['admin_acl']             = 'Access Control List  व्यवस्थापन';
+$lang['acl_group']             = 'गट:';
+$lang['acl_user']              = 'सदस्य:';
+$lang['acl_perms']             = 'परवानगी \'च्या साठी';
+$lang['page']                  = 'पान';
+$lang['namespace']             = 'नेमस्पेस';
+$lang['btn_select']            = 'निवडा';
+$lang['p_user_id']             = '<b class="acluser">%s</b> ह्या सदस्याला सध्या <b class="aclpage">%s</b> या पानावर पुढील परवानग्या आहेत : <i>%s</i>.';
+$lang['p_user_ns']             = '<b class="acluser">%s</b> या सदस्याला सध्या <b class="aclns">%s</b> या नेमस्पेसवर पुढील परवानग्या आहेत : <i>%s</i>.';
+$lang['p_group_id']            = '<b class="aclgroup">%s</b> या गटाच्या सदस्याना सध्या <b class="aclpage">%s</b> या पानावर पुढील परवानग्या आहेत : <i>%s</i>.';
+$lang['p_group_ns']            = '<b class="aclgroup">%s</b> या गटाच्या सदस्याना सध्या <b class="aclns">%s</b> या नेमस्पेसवर पुढील परवानग्या आहेत : <i>%s</i>.';
+$lang['p_choose_id']           = 'वरील फॉर्म मधे एखाद्या <b>सदस्य किंवा गटाचे </b> नाव टाकुन <b class="aclpage">%s</b> या पानासाठी त्यांच्या परवानग्या पाहू/बदलू शकता.';
+$lang['p_choose_ns']           = 'वरील फॉर्म मधे एखाद्या <b>सदस्य किंवा गटाचे </b> नाव टाकुन <b class="aclns">%s</b> या नेमस्पेससाठी त्यांच्या परवानग्या पाहू/बदलू शकता.';
+$lang['p_inherited']           = 'टीप : ह्या परवानग्या प्रत्यक्ष सेट केल्या नसून त्या इतर गट किंवा अधिक उच्च नेमस्पेस कडून वारसाहक्काने  :) आल्या आहेत.';
+$lang['p_isadmin']             = 'टीप : निवडलेल्या सदस्य किंवा गटाला कायम सर्व परवानग्या असतात कारण तो सुपर सदस्य म्हणुन सेट केला आहे.';
+$lang['p_include']             = 'उच्च परवानग्यांमधे त्याखालिल परवानग्या अध्याहृत असतात. क्रिएट, अपलोड आणि डिलीट परवानग्या फ़क्त नामसमुहावर (नेमस्पेस) लागू असतात, पानांवर नाही.';
+$lang['current']               = 'सद्य ACL नियम';
+$lang['where']                 = 'पान/नेमस्पेस';
+$lang['who']                   = 'सदस्य/गट';
+$lang['perm']                  = 'परवानग्या';
+$lang['acl_perm0']             = 'काही नाही.';
+$lang['acl_perm1']             = 'वाचन';
+$lang['acl_perm2']             = 'संपादन';
+$lang['acl_perm4']             = 'निर्माण';
+$lang['acl_perm8']             = 'अपलोड';
+$lang['acl_perm16']            = 'डिलीट';
+$lang['acl_new']               = 'नवीन एंट्री करा';
+$lang['acl_mod']               = 'एंट्री बदला';
diff --git a/wiki/lib/plugins/acl/lang/ne/lang.php b/wiki/lib/plugins/acl/lang/ne/lang.php
new file mode 100644
index 0000000..481b39a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ne/lang.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
+ * @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
+ * @author Saroj Dhakal<lotusnagarkot@yahoo.com>
+ */
+$lang['admin_acl']             = 'एक्सेस कन्ट्रोल लिस्ट व्यवस्थापन';
+$lang['acl_group']             = 'समूह:';
+$lang['acl_user']              = 'प्रोगकर्ता:';
+$lang['acl_perms']             = 'को लागि अनुमति';
+$lang['page']                  = 'पृष्ठ';
+$lang['namespace']             = 'नेमस्पेस';
+$lang['btn_select']            = 'छान्नुहोस्';
+$lang['current']               = 'हालैको ACL नियमहरु ';
+$lang['where']                 = 'पृष्ठ / नेमस्पेस';
+$lang['who']                   = 'प्रयोगकर्ता / समूह ';
+$lang['perm']                  = 'अनुमति';
+$lang['acl_perm0']             = 'कुनै पनि होइन';
+$lang['acl_perm1']             = 'पठन गर्नुहोस्';
+$lang['acl_perm2']             = 'सम्पादन गर्नुहोस्';
+$lang['acl_perm4']             = 'निर्माण गर्नुहोस्';
+$lang['acl_perm8']             = 'अपलोड गर्नुहोस्';
+$lang['acl_perm16']            = 'मेटाउनुहोस्';
+$lang['acl_new']               = 'नयाँ प्रविष्ठि गर्नुहोस्';
+$lang['acl_mod']               = 'प्रविष्ठि सच्याउनुहोस्';
diff --git a/wiki/lib/plugins/acl/lang/nl/help.txt b/wiki/lib/plugins/acl/lang/nl/help.txt
new file mode 100644
index 0000000..14c78e2
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/nl/help.txt
@@ -0,0 +1,8 @@
+=== Snelle hulp: ===
+
+Op deze pagina kun je bevoegdheden toevoegen en verwijderen voor namespaces en pagina's in je wiki.
+  * Het linkerpaneel geeft alle beschikbare namespaces en pagina's weer.
+  * In het formulier hierboven kun je bevoegdheden zien en aanpassen voor een selecteerde gebruiker of groep.
+  * In de tabel hieronder worden alle momenteel ingestelde toegangsregels weergegeven. Je kunt hier snel regels wijzigen of verwijderen.
+
+Lees de  [[doku>acl|documentatie over ACLs]] om de mogelijkheden volledig te begrijpen.
diff --git a/wiki/lib/plugins/acl/lang/nl/lang.php b/wiki/lib/plugins/acl/lang/nl/lang.php
new file mode 100644
index 0000000..7f28170
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/nl/lang.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author François Kooman <fkooman.tuxed.net>
+ * @author Jack van Klaren <dokuwiki@afentoe.xs4all.nl>
+ * @author Riny Heijdendael <riny@heijdendael.nl>
+ * @author Koen Huybrechts <huybkoen@gmail.com>
+ * @author Wouter Schoot <wouter@schoot.org>
+ * @author John de Graaff <john@de-graaff.net>
+ * @author Niels Schoot <niels.schoot@quintiq.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Danny Rotsaert <danny.rotsaert@edpnet.be>
+ * @author Marijn Hofstra <hofstra.m@gmail.com>
+ * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
+ * @author Gerrit <klapinklapin@gmail.com>
+ * @author Remon <no@email.local>
+ */
+$lang['admin_acl']             = 'Toegangsrechten';
+$lang['acl_group']             = 'Groep:';
+$lang['acl_user']              = 'Gebruiker:';
+$lang['acl_perms']             = 'Permissies voor';
+$lang['page']                  = 'Pagina';
+$lang['namespace']             = 'Namespace';
+$lang['btn_select']            = 'Selecteer';
+$lang['p_user_id']             = 'Gebruiker <b class="acluser">%s</b> heeft momenteel de volgende bevoegdheden op pagina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Gebruiker <b class="acluser">%s</b> heeft momenteel de volgende bevoegdheden op namespace <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Leden van groep <b class="aclgroup">%s</b> hebben momenteel de volgende bevoegdheden op pagina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Leden van groep <b class="aclgroup">%s</b> hebben momenteel de volgende bevoegdheden in namespace <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Vul een <b>gebruiker of groep</b> in in het bovenstaande formulier om de bevoegdheden te bekijken of te bewerken voor de pagina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Vul een <b>gebruiker of groep</b> in in het bovenstaande formulier om de bevoegdheden te bekijken of te bewerken voor de namespace <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Let op: Deze permissies zijn niet expliciet ingesteld maar overerfd van andere groepen of hogere namespaces.';
+$lang['p_isadmin']             = 'Let op: De geselecteerde groep of gebruiker heeft altijd volledige toegangsrechten omdat hij als superuser geconfigureerd is.';
+$lang['p_include']             = 'Hogere permissies bevatten ook de lagere. Aanmaken, uploaden en verwijderen gelden alleen voor namespaces, niet voor pagina\'s.';
+$lang['current']               = 'Huidige ACL regels';
+$lang['where']                 = 'Pagina/Namespace';
+$lang['who']                   = 'Gebruiker/Groep';
+$lang['perm']                  = 'Bevoegdheden';
+$lang['acl_perm0']             = 'Geen';
+$lang['acl_perm1']             = 'Lezen';
+$lang['acl_perm2']             = 'Bewerken';
+$lang['acl_perm4']             = 'Aanmaken';
+$lang['acl_perm8']             = 'Uploaden';
+$lang['acl_perm16']            = 'Verwijderen';
+$lang['acl_new']               = 'Nieuwe regel toevoegen';
+$lang['acl_mod']               = 'Regel aanpassen';
diff --git a/wiki/lib/plugins/acl/lang/no/help.txt b/wiki/lib/plugins/acl/lang/no/help.txt
new file mode 100644
index 0000000..c3d3688
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/no/help.txt
@@ -0,0 +1,11 @@
+=== Hurtighjelp: ===
+
+På denne siden kan du legge til og fjerne tillatelser for navnerom og sider i din wiki.
+
+Venstre panel viser alle tilgjengelige navnerom og sider.
+
+Skjemaet over tillater deg å se og modifisere tillatelser for en valgt bruker eller gruppe.
+
+I tabellen nedenfor vises alle nærværende satte adgangskontroll-regler. Du kan bruke den til raskt å slette eller endre mange regler i slengen.
+
+Å lese  [[doku>acl|den offisielle dokumentasjonen for ACL]]  kan hjelpe deg å fullt ut forstå hvordan adgangskontroll fungerer i DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/no/lang.php b/wiki/lib/plugins/acl/lang/no/lang.php
new file mode 100644
index 0000000..13770f4
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/no/lang.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Reidar Mosvold <Reidar.Mosvold@hit.no>
+ * @author Jorge Barrera Grandon <jorge@digitalwolves.org>
+ * @author Thomas Nygreen <nygreen@gmail.com>
+ * @author Arild Burud <arildb@met.no>
+ * @author Torkill Bruland <torkar-b@online.no>
+ * @author Rune M. Andersen <rune.andersen@gmail.com>
+ * @author Jakob Vad Nielsen (me@jakobnielsen.net)
+ * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
+ * @author Knut Staring <knutst@gmail.com>
+ * @author Lisa Ditlefsen <lisa@vervesearch.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
+ */
+$lang['admin_acl']             = 'Administrasjon av lister for adgangskontroll (ACL)';
+$lang['acl_group']             = 'Gruppe:';
+$lang['acl_user']              = 'Bruker:';
+$lang['acl_perms']             = 'Rettigheter for';
+$lang['page']                  = 'Side';
+$lang['namespace']             = 'Navnerom';
+$lang['btn_select']            = 'Velg';
+$lang['p_user_id']             = 'Bruker <b class="acluser">%s</b> har for tiden følgende tillatelser i for siden  <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Bruker <b class="acluser">%s</b> har for tiden følgende tillatelser i navnerom <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Medlemmer av gruppe <b class="aclgroup">%s</b> har for tiden følgende tillatelser i for siden <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Medlemmer av gruppe <b class="aclgroup">%s</b> har for tiden følgende tillatelser i navnerom <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = '<b>Før inn en bruker eller gruppe</b> i skjemaet over for å vise eller redigere tillatelser satt for siden <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = '<b>Før inn en bruker eller gruppe</b> i skjemaet over for å vise eller redigere tillatelser satt for navnerommet <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Merk: Disse tillatelser ble ikke eksplisitt satt, men ble arvet fra andre grupper eller høyere navnerom.';
+$lang['p_isadmin']             = 'Merk: Den valgte gruppen eller bruker har altid fulle tillatelser fordi vedkommende er konfigurert som superbruker.';
+$lang['p_include']             = 'Høyere tillgangsrettigheter inkluderer lavere. Rettigheter for å opprette, laste opp og slette gjelder bare  for navnerom, ikke enkeltsider.';
+$lang['current']               = 'Gjeldende ACL-regler';
+$lang['where']                 = 'Side/Navnerom';
+$lang['who']                   = 'Bruker/Gruppe';
+$lang['perm']                  = 'Rettigheter';
+$lang['acl_perm0']             = 'Ingen';
+$lang['acl_perm1']             = 'Lese';
+$lang['acl_perm2']             = 'Redigere';
+$lang['acl_perm4']             = 'Opprette';
+$lang['acl_perm8']             = 'Laste opp';
+$lang['acl_perm16']            = 'Slette';
+$lang['acl_new']               = 'Legg til ny oppføring';
+$lang['acl_mod']               = 'Endre oppføring';
diff --git a/wiki/lib/plugins/acl/lang/pl/help.txt b/wiki/lib/plugins/acl/lang/pl/help.txt
new file mode 100644
index 0000000..331fd2a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/pl/help.txt
@@ -0,0 +1,11 @@
+=== Pomoc ===
+
+Na tej stronie możesz zmienić uprawnienia do stron i katalogów w wiki.
+
+Lewy panel pokazuje wszystkie dostępne katalogi i strony.
+
+Formularz powyżej pozwala wyświetlać uprawnienia wybranego użytkownika oraz grupy.
+
+W tabeli poniżej znajdują się wszystkie aktywne reguły dotyczące uprawnień.
+
+Więcej informacji na temat uprawnień w DokuWiki możesz znaleźć w [[doku>acl|oficjalnej dokumentacji uprawnień]].
diff --git a/wiki/lib/plugins/acl/lang/pl/lang.php b/wiki/lib/plugins/acl/lang/pl/lang.php
new file mode 100644
index 0000000..2d2f91e
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/pl/lang.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Grzegorz Żur <grzegorz.zur@gmail.com>
+ * @author Mariusz Kujawski <marinespl@gmail.com>
+ * @author Maciej Kurczewski <pipijajko@gmail.com>
+ * @author Sławomir Boczek <slawkens@gmail.com>
+ * @author sleshek <sleshek@wp.pl>
+ * @author Leszek Stachowski <shazarre@gmail.com>
+ * @author maros <dobrimaros@yahoo.pl>
+ * @author Grzegorz Widła <dzesdzes@gmail.com>
+ * @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['admin_acl']             = 'Zarządzanie uprawnieniami';
+$lang['acl_group']             = 'Grupa:';
+$lang['acl_user']              = 'Użytkownik:';
+$lang['acl_perms']             = 'Uprawnienia użytkownika';
+$lang['page']                  = 'Strona';
+$lang['namespace']             = 'Katalog';
+$lang['btn_select']            = 'Wybierz';
+$lang['p_user_id']             = 'Użytkownik <b class="acluser">%s</b> posiada następujące uprawnienia do strony <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Użytkownik <b class="acluser">%s</b> posiada następujące uprawnienia do katalogów <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Członkowie grupy <b class="aclgroup">%s</b> posiadają następujące uprawnienia do strony <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Członkowie grupy <b class="aclgroup">%s</b> posiadają następujące uprawnienia do katalogu <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Podaj <b>nazwę użytkownika lub grupy</b> w powyższym formularzu, by wyświetlić lub zmienić uprawnienia do strony <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Podaj <b>nazwę użytkownika lub grupy</b> w powyższym formularzu, by wyświetlić lub zmienić uprawnienia do katalogu <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Uwaga: Uprawnienia nie zostały nadane wprost ale są dziedziczone z grupy lub katalogu.';
+$lang['p_isadmin']             = 'Uwaga: Wybrana grupa lub użytkownika zawsze dysponuje pełnymi uprawnieniami ponieważ posiada uprawnienia administratora.';
+$lang['p_include']             = 'Szersze uprawnienia zawierają węższe. Tworzenie, przesyłanie plików oraz usuwanie mają znaczenie tylko dla katalogów, nie dla stron.';
+$lang['current']               = 'Aktywne reguły zarządzania uprawnieniami';
+$lang['where']                 = 'Strona/Katalog';
+$lang['who']                   = 'Użytkownik/Grupa';
+$lang['perm']                  = 'Uprawnienie';
+$lang['acl_perm0']             = 'Żadne';
+$lang['acl_perm1']             = 'Czytanie';
+$lang['acl_perm2']             = 'Zmiana';
+$lang['acl_perm4']             = 'Tworzenie';
+$lang['acl_perm8']             = 'Przesyłanie plików';
+$lang['acl_perm16']            = 'Usuwanie';
+$lang['acl_new']               = 'Dodaj nowy wpis';
+$lang['acl_mod']               = 'Zmień wpis';
diff --git a/wiki/lib/plugins/acl/lang/pt-br/help.txt b/wiki/lib/plugins/acl/lang/pt-br/help.txt
new file mode 100644
index 0000000..b2a49a9
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/pt-br/help.txt
@@ -0,0 +1,11 @@
+=== Ajuda rápida: ===
+
+Nessa página você pode adicionar e remover permissões para espaços de nomes e páginas do seu wiki.
+
+O painel à esquerda mostra todos os espaços de nomes e páginas disponíveis.
+
+O formulário acima permite a visualização e modificação das permissões de um determinado usuário ou grupo.
+
+Na tabela abaixo são exibidas todas as regras de controle de acesso definidas. Você pode usá-la para excluir ou mudar rapidamente várias regras.
+
+A leitura da [[doku>acl|documentação oficial sobre ACL]] pode ajudar a compreender melhor como o controle de acessos funciona no DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/pt-br/lang.php b/wiki/lib/plugins/acl/lang/pt-br/lang.php
new file mode 100644
index 0000000..466a2d2
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/pt-br/lang.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Luis Fernando Enciso <lfenciso@certto.com.br>
+ * @author Alauton/Loug
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Felipe Castro <fefcas@gmail.com>
+ * @author Lucien Raven <lucienraven@yahoo.com.br>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Flávio Veras <flaviove@gmail.com>
+ * @author Jeferson Propheta <jeferson.propheta@gmail.com>
+ * @author jair.henrique <jair.henrique@gmail.com>
+ * @author Luis Dantas <luis@dantas.com>
+ * @author Sergio Motta <sergio@cisne.com.br>
+ * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
+ * @author Victor Westmann <victor.westmann@gmail.com>
+ */
+$lang['admin_acl']             = 'Administração da Lista de Controles de Acesso';
+$lang['acl_group']             = 'Grupo:';
+$lang['acl_user']              = 'Usuário:';
+$lang['acl_perms']             = 'Permissões para';
+$lang['page']                  = 'Página';
+$lang['namespace']             = 'Espaço de nomes';
+$lang['btn_select']            = 'Selecionar';
+$lang['p_user_id']             = 'O usuário <b class="acluser">%s</b> possui as seguintes permissões na página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'O usuário <b class="acluser">%s</b> possui as seguintes permissões no espaço de nomes <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Os membros do grupo <b class="aclgroup">%s</b> possuem as seguintes permissões na página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Os membros do grupo <b class="aclgroup">%s</b> possuem as seguintes permissões no espaço de nomes <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Por favor <b>digite um usuário ou grupo</b> no formulário acima para ver ou editar as permissões para a página <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Por favor <b>digite um usuário ou grupo</b> no formulário acima para ver ou editar as permissões para o espaço de nomes <b class="aclpage">%s</b>.';
+$lang['p_inherited']           = 'Nota: Essas permissões não foram definidas explicitamente, mas sim herdadas de outros grupos ou espaço de nomes superiores.';
+$lang['p_isadmin']             = 'Nota: O grupo ou usuário selecionado sempre tem permissões completas, porque ele está configurado como superusuário.';
+$lang['p_include']             = 'As permissões superiores incluem as inferiores. Permissões para Criar, Enviar e Apagar aplicam-se apenas aos espaços de nomes e não às páginas.';
+$lang['current']               = 'Regras atuais da ACL';
+$lang['where']                 = 'Página/Espaço de nomes';
+$lang['who']                   = 'Usuário/Grupo';
+$lang['perm']                  = 'Permissões';
+$lang['acl_perm0']             = 'Nenhuma';
+$lang['acl_perm1']             = 'Ler';
+$lang['acl_perm2']             = 'Editar';
+$lang['acl_perm4']             = 'Criar';
+$lang['acl_perm8']             = 'Enviar';
+$lang['acl_perm16']            = 'Excluir';
+$lang['acl_new']               = 'Adicionar nova entrada';
+$lang['acl_mod']               = 'Modificar a entrada';
diff --git a/wiki/lib/plugins/acl/lang/pt/help.txt b/wiki/lib/plugins/acl/lang/pt/help.txt
new file mode 100644
index 0000000..cf4619d
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/pt/help.txt
@@ -0,0 +1,9 @@
+=== Auxílio Rápido ===
+
+Nesta página podes adicionar e remover permissões para espaço de nomes e páginas no seu wiki.
+
+O painel esquerdo exibe todos os espaço de nomes e páginas. O formulario acima permite a visualização e modificar as permissões de um selecionado utilizador ou grupo.
+
+Na tabela inferior são exibidas todas as actuais regras de controle de acesso. Podes utilisá-la para excluir ou mudar rapidamente várias regras ao mesmo tempo.
+
+A leitura da [[doku>acl|documentação oficial acerca ACL]] pode ajudar a compreender melhor como o controle de acessos funciona no DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/pt/lang.php b/wiki/lib/plugins/acl/lang/pt/lang.php
new file mode 100644
index 0000000..eb77cba
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/pt/lang.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author José Carlos Monteiro <jose.c.monteiro@netcabo.pt>
+ * @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Fil <fil@meteopt.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author José Campos zecarlosdecampos@gmail.com
+ */
+$lang['admin_acl']             = 'Gestão de ACLs';
+$lang['acl_group']             = 'Grupo:';
+$lang['acl_user']              = 'Utilizador:';
+$lang['acl_perms']             = 'Permissão para';
+$lang['page']                  = 'Documento';
+$lang['namespace']             = 'Namespace';
+$lang['btn_select']            = 'Selecionar';
+$lang['p_user_id']             = 'O utilizador <b class="acluser">%s</b> tem as seguintes permissões na página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'O utilizador <b class="acluser">%s</b> tem as seguintes permissões no espaço de nomes <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Os membros do grupo <b class="aclgroup">%s</b> têm as seguintes permissões na página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Os membros do grupo <b class="aclgroup">%s</b> têm as seguintes permissões no espaço de nomes <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Por favor <b>digite um utilizador ou grupo</b> no formulário acima para ver ou editar as permissões para a página <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Por favor <b>digite um utilizador ou grupo</b> no formulário acima para ver ou editar as permissões para o espaço de nomes <b class="aclpage">%s</b>.';
+$lang['p_inherited']           = 'Nota: Essas permissões não foram definidas explicitamente, mas sim herdadas de outros grupos ou espaço de nomes superiores.';
+$lang['p_isadmin']             = 'Nota: O grupo ou utilizador seleccionado tem sempre permissões completas, porque ele está configurado como superutilizador.';
+$lang['p_include']             = 'As permissões superiores incluem as inferiores. Permissões para Criar, Enviar e Apagar aplicam-se apenas aos espaços de nomes e não às páginas.';
+$lang['current']               = 'Regras Actuais ACL';
+$lang['where']                 = 'Página/Espaço de Nomes';
+$lang['who']                   = 'Utilizador/Grupo';
+$lang['perm']                  = 'Permissões';
+$lang['acl_perm0']             = 'Nenhum';
+$lang['acl_perm1']             = 'Ler';
+$lang['acl_perm2']             = 'Editar';
+$lang['acl_perm4']             = 'Criar';
+$lang['acl_perm8']             = 'Carregar';
+$lang['acl_perm16']            = 'Remover';
+$lang['acl_new']               = 'Adicionar nova entrada';
+$lang['acl_mod']               = 'Modificar Entrada';
diff --git a/wiki/lib/plugins/acl/lang/ro/help.txt b/wiki/lib/plugins/acl/lang/ro/help.txt
new file mode 100644
index 0000000..3f76261
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ro/help.txt
@@ -0,0 +1,11 @@
+=== Quick Help: ===
+
+Pe această pagină puteţi adăuga şi elimina autorizaţiile pentru spaţiile de nume şi paginile din wiki.
+
+Panoul din stânga afişează toate spaţiile de nume şi paginile disponibile.
+
+Formularul de sus vă permite să vedeţi şi să modificaţi autorizaţiile unui anume utilizator sau grup.
+
+In tabelul de jos sunt arătate toate regulile de control a accesului setate. Îl puteţi folosi pentru a şterge sau modifica rapid mai multe reguli.
+
+Consultarea [[doku>acl|official documentation on ACL]] vă poate ajuta să înţelegeţi deplin cum funcţionează controlul accesului în DocuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/ro/lang.php b/wiki/lib/plugins/acl/lang/ro/lang.php
new file mode 100644
index 0000000..804bc80
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ro/lang.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sergiu Baltariu <s_baltariu@yahoo.com>
+ * @author s_baltariu@yahoo.com
+ * @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
+ */
+$lang['admin_acl']             = 'Managementul Listei de Control a Accesului';
+$lang['acl_group']             = 'Grup:';
+$lang['acl_user']              = 'Utilizator:';
+$lang['acl_perms']             = 'Autorizare pentru';
+$lang['page']                  = 'Pagina';
+$lang['namespace']             = 'Spaţiu de nume';
+$lang['btn_select']            = 'Selectează';
+$lang['p_user_id']             = 'Utilizatorul <b class="acluser">%s</b> are următoarele autorizaţii pe pagină <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Utilizatorul <b class="acluser">%s</b> are următoarele autorizaţii pe spaţiul de nume <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Membrii grupului <b class="aclgroup">%s</b> au următoarele autorizaţii pe pagină <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Membrii grupului <b class="aclgroup">%s</b> au următoarele autorizaţii pe spaţiul de nume <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = '<b>Introduceţi un utilizator sau un grup</b> în formularul de mai sus pentru a vizualiza sau edita autorizaţiile paginii <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = '<b>Introduceţi un utilizator sau un grup</b> în formularul de mai sus pentru a vizualiza sau edita autorizaţiile spaţiului de nume <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Notă: Aceste autorizaţii nu au fost setate explicit ci au fost moştenite de la alte grupuri sau spaţii de nume superioare ierarhic.';
+$lang['p_isadmin']             = 'Notă: Grupul sau utilizatorul selectat are intotdeauna toate autorizatiile întrucât este configurat ca superutilizator.';
+$lang['p_include']             = 'Permisiunile superioare le includ pe cele inferioare. Permisiunile de Creare, Upload şi Ştergere se aplică doar numelor de spaţiu, nu paginilor.';
+$lang['current']               = 'Reguli ACL actuale';
+$lang['where']                 = 'Pagină/Spaţiu de nume';
+$lang['who']                   = 'Utilizator/Grup';
+$lang['perm']                  = 'Autorizaţii';
+$lang['acl_perm0']             = 'Nici una';
+$lang['acl_perm1']             = 'Citire';
+$lang['acl_perm2']             = 'Editare';
+$lang['acl_perm4']             = 'Creare';
+$lang['acl_perm8']             = 'Încărcare';
+$lang['acl_perm16']            = 'Ştergere';
+$lang['acl_new']               = 'Adaugă intrare nouă';
+$lang['acl_mod']               = 'Modifică intrare';
diff --git a/wiki/lib/plugins/acl/lang/ru/help.txt b/wiki/lib/plugins/acl/lang/ru/help.txt
new file mode 100644
index 0000000..e1b76c2
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ru/help.txt
@@ -0,0 +1,8 @@
+=== Краткая справка ===
+
+На этой странице вы можете добавить или удалить права доступа к пространствам имён и страницам своей вики.
+  * На панели слева отображены доступные пространства имён и страницы.
+  * Форма выше позволяет вам просмотреть и изменить права доступа для выбранного пользователя или группы.
+  * Текущие права доступа отображены в таблице ниже. Вы можете использовать её для быстрого удаления или изменения правил.
+
+Прочтение  [[doku>acl|официальной документации по правам доступа]] может помочь вам в полном понимании работы управления правами доступа в «Докувики».
diff --git a/wiki/lib/plugins/acl/lang/ru/lang.php b/wiki/lib/plugins/acl/lang/ru/lang.php
new file mode 100644
index 0000000..5dfbced
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/ru/lang.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Denis Simakov <akinoame1@gmail.com>
+ * @author Змей Этерийский <evil_snake@eternion.ru>
+ * @author Hikaru Nakajima <jisatsu@mail.ru>
+ * @author Alexei Tereschenko <alexeitlex@yahoo.com>
+ * @author Alexander Sorkin <kibizoid@gmail.com>
+ * @author Kirill Krasnov <krasnovforum@gmail.com>
+ * @author Vlad Tsybenko <vlad.development@gmail.com>
+ * @author Aleksey Osadchiy <rfc@nm.ru>
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
+ */
+$lang['admin_acl']             = 'Управление списками контроля доступа';
+$lang['acl_group']             = 'Группа:';
+$lang['acl_user']              = 'Пользователь:';
+$lang['acl_perms']             = 'Права доступа для';
+$lang['page']                  = 'Страница';
+$lang['namespace']             = 'Пространство имён';
+$lang['btn_select']            = 'Выбрать';
+$lang['p_user_id']             = 'Сейчас пользователь <b class="acluser">%s</b> имеет следующие права на доступ к странице <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Сейчас пользователь <b class="acluser">%s</b> имеет следующие права на доступ к пространству имён <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Сейчас члены группы <b class="aclgroup">%s</b> имеют следующие права на доступ к странице <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Сейчас члены группы <b class="aclgroup">%s</b> имеют следующие права на доступ к пространству имён <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Пожалуйста, <b>введите пользователя или группу</b> в форме выше, чтобы просмотреть или отредактировать права на доступ к странице <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Пожалуйста, <b>введите пользователя или группу</b> в форме выше, чтобы просмотреть или отредактировать права на доступ к пространству имён <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Замечание: эти права доступа не были заданы явно, а были унаследованы от других групп или пространств имён более высокого порядка.';
+$lang['p_isadmin']             = 'Замечание: выбранный пользователь всегда имеет полные права, так как он является суперпользователем.';
+$lang['p_include']             = 'Более высокие права доступа включают в себя более низкие. Права доступа «Создание», «Загрузка» и «Удаление» относятся только к пространствам имён, а не к страницам.';
+$lang['current']               = 'Текущие права ACL';
+$lang['where']                 = 'Страница/Пространство имён';
+$lang['who']                   = 'Пользователь/Группа';
+$lang['perm']                  = 'Права доступа';
+$lang['acl_perm0']             = 'Нет доступа';
+$lang['acl_perm1']             = 'Чтение';
+$lang['acl_perm2']             = 'Правка';
+$lang['acl_perm4']             = 'Создание';
+$lang['acl_perm8']             = 'Загрузка файлов';
+$lang['acl_perm16']            = 'Удаление';
+$lang['acl_new']               = 'Добавить новую запись';
+$lang['acl_mod']               = 'Отредактировать запись';
diff --git a/wiki/lib/plugins/acl/lang/sk/help.txt b/wiki/lib/plugins/acl/lang/sk/help.txt
new file mode 100644
index 0000000..103a034
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sk/help.txt
@@ -0,0 +1,11 @@
+=== Krátka nápoveda: ===
+
+Na tejto stránke môžete pridávať alebo rušiť oprávnenia pre menné priestory a stránky vo Vašej wiki.
+
+Ľavý panel zobrazuje všetky dostupné menné priestory a stránky.
+
+Formulár zobrazený vyššie Vám dovoľuje prehliadať a meniť oprávnenia pre vybraného používateľa alebo skupinu.
+
+V tabuľke nižšie sú zobrazené všetky aktuálne prístupové pravidlá. Môžete v nej rýchlo rušiť alebo meniť viacero pravidiel súčasne.
+
+Prečítanie [[doku>acl|oficiálnej dokumentácie ACL]] Vám môže pomôcť plne pochopiť spôsob ako fungujú prístupové pravidlá (oprávnenia) v DokuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/sk/lang.php b/wiki/lib/plugins/acl/lang/sk/lang.php
new file mode 100644
index 0000000..0434fe5
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sk/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Ondrej Vegh <ov@vsieti.sk>
+ * @author Michal Mesko <michal.mesko@gmail.com>
+ * @author exusik <exusik@gmail.com>
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['admin_acl']             = 'Správa zoznamu prístupových práv';
+$lang['acl_group']             = 'Skupina:';
+$lang['acl_user']              = 'Užívateľ:';
+$lang['acl_perms']             = 'Práva pre';
+$lang['page']                  = 'Stránka';
+$lang['namespace']             = 'Menný priestor';
+$lang['btn_select']            = 'Vybrať';
+$lang['p_user_id']             = 'Používateľ <b class="acluser">%s</b> má aktuálne nasledujúce oprávnenia k stránke <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Používateľ <b class="acluser">%s</b> má aktuálne nasledujúce oprávnenia v mennom priestore <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Členovia skupiny <b class="aclgroup">%s</b> majú aktuálne nasledujúce oprávnenia k stránke <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Členovia skupiny <b class="aclgroup">%s</b> majú aktuálne nasledujúce oprávnenia v mennom priestore <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Prosím <b>zadajte používateľa alebo skupinu</b> do formulára zobrazeného vyššie, aby ste mohli prezerať alebo meniť oprávnenia k stránke <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Prosím <b>zadajte používateľa alebo skupinu</b> do formulára zobrazeného vyššie, aby ste mohli prezerať alebo meniť oprávnenia v mennom priestore <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Poznámka: Tieto oprávnenia neboli nastavené explicitne, ale boli odvodené z inej skupiny alebo nadradeného menného priestoru.';
+$lang['p_isadmin']             = 'Poznámka: Vybraná skupina alebo používateľ má vždy najvyššie oprávnenia, pretože je vedená/vedený ako správca.';
+$lang['p_include']             = 'Vyššie oprávnenia zahŕňajú nižšie. Oprávnenie Vytvoriť, Nahrať a Zmazať sa vzťahujú iba k menným priestorom, nie ku stránkam.';
+$lang['current']               = 'Aktuálne pravidlá prístupu (ACL)';
+$lang['where']                 = 'Stránka/Menný priestor';
+$lang['who']                   = 'Používateľ/Skupina';
+$lang['perm']                  = 'Povolenia';
+$lang['acl_perm0']             = 'Žiadne';
+$lang['acl_perm1']             = 'Čítať';
+$lang['acl_perm2']             = 'Zmeniť';
+$lang['acl_perm4']             = 'Vytvoriť';
+$lang['acl_perm8']             = 'Nahrať súbor';
+$lang['acl_perm16']            = 'Zmazať';
+$lang['acl_new']               = 'Pridať nový záznam';
+$lang['acl_mod']               = 'Upraviť záznam';
diff --git a/wiki/lib/plugins/acl/lang/sl/help.txt b/wiki/lib/plugins/acl/lang/sl/help.txt
new file mode 100644
index 0000000..ff096ae
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sl/help.txt
@@ -0,0 +1,11 @@
+=== Hitra pomoč ===
+
+Na tej strani je mogoče dodajati, odstranjevati in spreminjati dovoljenja za delo z wiki stranmi in imenskimi prostori.
+
+Na veli strani so izpisani vsi imenski prostori in strani.
+
+Na obrazcu zgoraj je mogoče pregledovati in spreminjati dovoljenja za izbranega uporabnika ali skupino.
+
+V preglednici spodaj so prikazana vsa pravila nadzora. Ta je mogoče hitro spreminjati ali brisati.
+
+Več podrobnosti o delovanju nadzora dostopa sistema DokuWiki je mogoče najti v [[doku>acl|uradni dokumentaciji ACL]].
diff --git a/wiki/lib/plugins/acl/lang/sl/lang.php b/wiki/lib/plugins/acl/lang/sl/lang.php
new file mode 100644
index 0000000..9edbe0d
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sl/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Dejan Levec <webphp@gmail.com>
+ * @author Boštjan Seničar <senicar@gmail.com>
+ * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
+ */
+$lang['admin_acl']             = 'Upravljanje dostopa';
+$lang['acl_group']             = 'Skupina:';
+$lang['acl_user']              = 'Uporabnik:';
+$lang['acl_perms']             = 'Dovoljenja za';
+$lang['page']                  = 'Stran';
+$lang['namespace']             = 'Imenski prostor';
+$lang['btn_select']            = 'Izberi';
+$lang['p_user_id']             = 'Uporabnik %s ima naslednja dovoljenja za stran %s: %s.';
+$lang['p_user_ns']             = 'Uporabnik %s ima naslednja dovoljenja za imenski prostor %s: %s.';
+$lang['p_group_id']            = 'Uporabniška skupina %s ima naslednja dovoljenja za stran %s: %s.';
+$lang['p_group_ns']            = 'Uporabniška skupina %s ima naslednja dovoljenja za imenski prostor %s: %s.';
+$lang['p_choose_id']           = 'Vnesite ime <b>uporabnika ali skupine</b> v zgornji obrazec za ogled ali urejanje dovoljenj za stran %s.';
+$lang['p_choose_ns']           = 'Vnesite ime <b>uporabnika ali skupine</b> v zgornji obrazec za ogled ali urejanje dovoljenj za imenski prostor %s.';
+$lang['p_inherited']           = 'Opomba: trenutna dovoljenja niso bila posebej določena, temveč so bila prevzeta iz drugih skupin ali višjih imenskih prostorov.';
+$lang['p_isadmin']             = 'Opomba: izbrana skupina ali uporabnik imajo vsa dovoljenja za spreminjanje, saj so določeni kot skrbniki sistema.';
+$lang['p_include']             = 'Višja dovoljenja vključujejo tudi nižja. ';
+$lang['current']               = 'Trenutna pravila dostopa';
+$lang['where']                 = 'Stran / Imenski prostor';
+$lang['who']                   = 'Uporabnik/Skupina';
+$lang['perm']                  = 'Dovoljenja';
+$lang['acl_perm0']             = 'Nič';
+$lang['acl_perm1']             = 'Preberi';
+$lang['acl_perm2']             = 'Uredi';
+$lang['acl_perm4']             = 'Ustvari';
+$lang['acl_perm8']             = 'Naloži';
+$lang['acl_perm16']            = 'Zbriši';
+$lang['acl_new']               = 'Dodaj nov zapis';
+$lang['acl_mod']               = 'Spremeni zapis';
diff --git a/wiki/lib/plugins/acl/lang/sq/help.txt b/wiki/lib/plugins/acl/lang/sq/help.txt
new file mode 100644
index 0000000..84a567f
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sq/help.txt
@@ -0,0 +1,11 @@
+=== Ndihmë e Shpejtë: ===
+
+Në këtë faqe mund të shtoni ose hiqni të drejta për hapësira emri dhe faqe në wiki-n tuaj.
+
+Paneli i majtë tregon të gjitha faqet dhe hapësirat e emrit të disponueshme.
+
+Forma më sipër ju lejon të shihni dhe ndryshoni lejet për një grup ose përdorues të përzgjedhur.
+
+Në tabelën më poshtë tregohen të gjitha rregullat e vendosjes së aksesit. Mund ta përdorni për të fshirë shpejt ose ndryshuar shumë rregulla njëkohësisht.
+
+Leximi i [[doku>acl|dokumentimit zyrtar mbi ACL]]  mund t'ju ndihmojë për të kuptuar plotësisht sesi funksionin Kontrolli i Aksesit në DokuWiki.
diff --git a/wiki/lib/plugins/acl/lang/sq/lang.php b/wiki/lib/plugins/acl/lang/sq/lang.php
new file mode 100644
index 0000000..3edd709
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sq/lang.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Albanian language file
+ *
+ * @author Leonard Elezi leonard.elezi@depinfo.info
+ */
+$lang['admin_acl']             = 'Menaxhimi i Listës së Kontrollit të Aksesit';
+$lang['acl_group']             = 'Grup:';
+$lang['acl_user']              = 'Përdorues:';
+$lang['acl_perms']             = 'Të drejta për';
+$lang['page']                  = 'Faqe';
+$lang['namespace']             = 'Hapësira e Emrit';
+$lang['btn_select']            = 'Zgjidh';
+$lang['p_user_id']             = 'Përdoruesi <b class="acluser">%s</b> momentalisht ka të drejtat e mëposhtme mbi faqen <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Përdoruesi <b class="acluser">%s</b> momentalisht ka të drejtat e mëposhtme mbi hapësirën e emrit <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Anëtarët e grupit <b class="aclgroup">%s</b> momentalisht kanë të drejtat e mëposhtme mbi faqen <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Anëtarët e grupit <b class="aclgroup">%s</b> momentalisht kanë të drejtat e mëposhtme mbi hapësirën e emrit <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Ju lutemi <b>futni një përdorues ose grup</b> në formën e mësipërme për të parë ose ndryshuar bashkësinë e të drejtave për faqen <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Ju lutemi <b>futni një përdorues ose grup</b> në formën e mësipërme për të parë ose ndryshuar bashkësinë e të drejtave për hapësirën e emrit <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Shënim: Ato të drejta nuk janë vendosur specifikisht por janë të trashëguara nga grupe të tjera ose hapësira emri më të larta.';
+$lang['p_isadmin']             = 'Shënim: Grupi ose përdoruesi i përzgjedhur ka gjithmonë të drejta të plota sepse është konfiguruar si superpërdorues.';
+$lang['p_include']             = 'Të drejtat më të larta i përfshijnë edhe ato më të ultat. Të drejtat Krijo, Ngarko dhe Fshi u aplikohen vetëm hapësirave të emrit, jo faqeve.';
+$lang['current']               = 'Rregullat aktuale ACL';
+$lang['where']                 = 'Faqe/Hapësirë Emri';
+$lang['who']                   = 'Përdorues/Grup';
+$lang['perm']                  = 'Të Drejta';
+$lang['acl_perm0']             = 'Asgjë';
+$lang['acl_perm1']             = 'Lexim';
+$lang['acl_perm2']             = 'Redaktim';
+$lang['acl_perm4']             = 'Krijim';
+$lang['acl_perm8']             = 'Ngarkim';
+$lang['acl_perm16']            = 'Fshi';
+$lang['acl_new']               = 'Shto Hyrje të re';
+$lang['acl_mod']               = 'Ndrysho Hyrje';
diff --git a/wiki/lib/plugins/acl/lang/sr/help.txt b/wiki/lib/plugins/acl/lang/sr/help.txt
new file mode 100644
index 0000000..0ec8921
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sr/help.txt
@@ -0,0 +1,11 @@
+=== Приручна помоћ: ===
+
+На овој страни можете додати или уклонити дозволе за странице и именске просторе на Вашем викију.
+
+Леви панел приказује све доступне именске просторе и странице.
+
+Формулар изнад омогућава приказ и измену дозвола за одабране кориснике или групе.
+
+У табели испод су приказане све тренутно постављене дозволе. Можете је користити за брзо брисање или измену више правила.
+
+Читање [[doku>acl|званичне документације о ACL]] Вам може помоћи у потпуном разумевању рада дозвола приступа у DokuWiki-ју.
diff --git a/wiki/lib/plugins/acl/lang/sr/lang.php b/wiki/lib/plugins/acl/lang/sr/lang.php
new file mode 100644
index 0000000..0ba322a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sr/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Filip Brcic <brcha@users.sourceforge.net>
+ * @author Иван Петровић petrovicivan@ubuntusrbija.org
+ * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Miroslav Šolti <solti.miroslav@gmail.com>
+ */
+$lang['admin_acl']             = 'Управљање листом контроле приступа';
+$lang['acl_group']             = 'Група:';
+$lang['acl_user']              = 'Корисник:';
+$lang['acl_perms']             = 'Дозволе за';
+$lang['page']                  = 'Страница';
+$lang['namespace']             = 'Именски простор';
+$lang['btn_select']            = 'Одабери';
+$lang['p_user_id']             = 'Корисник <b class="acluser">%s</b> тренутно има следеће дозволе за ову страницу <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Корисник <b class="acluser">%s</b> тренутно има следеће дозволе за овај именски простор <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Чланови групе <b class="acluser">%s</b> тренутно имају следеће дозволе за ову страницу <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Чланови групе <b class="acluser">%s</b> тренутно имају следеће дозволе за овај именски простор <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Молим Вас <b>унесите корисника или групу</b> у формулар изнад да бисте приказали или изменили дозволе за страницу <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Молим Вас <b>унесите корисника или групу</b> у формулар изнад да бисте приказали или изменили дозволе за именски простор <b class="aclpage">%s</b>.';
+$lang['p_inherited']           = 'Напомена: Ове дозволе се не постављају експлицитно већ само тамо где се не сударају са осталим групама или вишем иманском простору.';
+$lang['p_isadmin']             = 'Напомена: Одабран корисник или група има увек пуне дозволе јер је постављен за суперкорисника.';
+$lang['p_include']             = 'Више дозволе укључују ниже. Дозволе одавања, слања и брисања ће бити примењене само на именске просторе, не и на стране.';
+$lang['current']               = 'Тренутна правила проступа';
+$lang['where']                 = 'Страница/Именски простор';
+$lang['who']                   = 'Корисник/Група';
+$lang['perm']                  = 'Дозволе';
+$lang['acl_perm0']             = 'Ништа';
+$lang['acl_perm1']             = 'Читање';
+$lang['acl_perm2']             = 'Измена';
+$lang['acl_perm4']             = 'Прављење';
+$lang['acl_perm8']             = 'Слање';
+$lang['acl_perm16']            = 'Брисање';
+$lang['acl_new']               = 'Додај нови унос';
+$lang['acl_mod']               = 'Измени унос';
diff --git a/wiki/lib/plugins/acl/lang/sv/help.txt b/wiki/lib/plugins/acl/lang/sv/help.txt
new file mode 100644
index 0000000..5ba770f
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sv/help.txt
@@ -0,0 +1,8 @@
+=== Hjälp ===
+På den här sidan kan du lägga till och ta bort åtkomsträttigheter för namnrymder och enstaka sidor i din wiki.
+
+Till vänster visas alla tillgängliga namnrymder och sidor du kan välja.  I formuläret ovanför kan du sedan välja användare eller grupp för vilken åtkomsträttigheterna ska visas eller ändras.
+
+Tabellen nedanför visar samtliga uppsatta regler för åtkomsträttigheter. Den kan du använda för att snabbt ta bort eller ändra flera regler på en gång.
+
+Läs gärna [[doku>acl|den officiella dokumentationen för ACL]] som kan hjälpa dig till fullo förstå hur åtkomsträttigheter fungerar i DokuWiki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/sv/lang.php b/wiki/lib/plugins/acl/lang/sv/lang.php
new file mode 100644
index 0000000..176a937
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/sv/lang.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Per Foreby <per@foreby.se>
+ * @author Nicklas Henriksson <nicklas[at]nihe.se>
+ * @author Håkan Sandell <hakan.sandell@home.se>
+ * @author Dennis Karlsson
+ * @author Tormod Otter Johansson <tormod@latast.se>
+ * @author Pontus Bergendahl <pontus.bergendahl@gmail.com>
+ * @author Emil Lind <emil@sys.nu>
+ * @author Bogge Bogge <bogge@bogge.com>
+ * @author Peter Åström <eaustreum@gmail.com>
+ */
+$lang['admin_acl']             = 'Hantera behörighetslistan (ACL)';
+$lang['acl_group']             = 'Grupp:';
+$lang['acl_user']              = 'Användare:';
+$lang['acl_perms']             = 'Behörighet för';
+$lang['page']                  = 'Sida';
+$lang['namespace']             = 'Namnrymd';
+$lang['btn_select']            = 'Välj';
+$lang['p_user_id']             = 'Användaren <b class="acluser">%s</b> har förnärvarande följande rättigheter på sidan <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Användaren <b class="acluser">%s</b> har för närvarande följande rättigheter i namnrymden <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Medlemmar av gruppen <b class="aclgroup">%s</b> har för närvarande följande rättigheter på sidan <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Medlemmar av gruppen <b class="aclgroup">%s</b> har för närvarande följande rättigheter i namnrymden <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Vänligen <b>ange en användare eller grupp</b> i formuläret ovan för att visa eller ändra rättigheterna för sidan <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Vänligen <b>ange en användare eller grupp</b> i formuläret ovan för att visa eller ändra rättigheterna för namnrymden <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Notering: De här rättigheterna är inte explicit satta utan var ärvda från andra grupper eller högre namnrymder.';
+$lang['p_isadmin']             = 'Notering: Den valda gruppen eller användaren har alltid fulla rättigheter på grund av att den är konfigurerad som superanvändare.';
+$lang['p_include']             = 'Högre rättigheter inkluderar lägre. Rättigheter för Skapa, Ladda upp och Radera är endast applicerbara namnrymder, inte sidor.';
+$lang['current']               = 'Nuvarande ACL regler';
+$lang['where']                 = 'Sida/Namnrymd';
+$lang['who']                   = 'Användare/Grupp';
+$lang['perm']                  = 'Rättigheter';
+$lang['acl_perm0']             = 'Inga';
+$lang['acl_perm1']             = 'Läsa';
+$lang['acl_perm2']             = 'Redigera';
+$lang['acl_perm4']             = 'Skapa';
+$lang['acl_perm8']             = 'Ladda upp';
+$lang['acl_perm16']            = 'Radera';
+$lang['acl_new']               = 'Lägg till ny behörighet';
+$lang['acl_mod']               = 'Ändra behörighet';
diff --git a/wiki/lib/plugins/acl/lang/th/help.txt b/wiki/lib/plugins/acl/lang/th/help.txt
new file mode 100644
index 0000000..52edca9
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/th/help.txt
@@ -0,0 +1,11 @@
+=== ตัวช่วยอย่างเร็ว ===
+
+ในหน้านี้คุณสามารถเพิ่มและถอดสิทธิ์สำหรับเนมสเปซ และเพจในวิกิของคุณ
+
+แถบด้านซ้ายจะแสดงรายชื่อเนมสเปซ และเพจที่มีอยู่ทั้งหมด
+
+แบบฟอร์มข้างบนอนุญาติให้คุณมองเห็น และแก้ไขสิทธิ์ของผู้ใช้หรือกลุ่มที่เลือกไว้ได้
+
+ในตารางด้านล่างได้แสดงกฏควบคุมการเข้าถึงทั้งหมดไว้ คุณสามารถใช้มันลบ หรือเปลี่ยนกฏครั้งละหลายๆตัวพร้อมกันได้อย่างรวดเร็ว
+
+การอ่าน [[doku>acl|official documentation on ACL]] น่าจะช่วยให้คุณเข้าใจวิธีควบคุมการเข้าถึงของโดกุวิกิได้อย่างถ่องแท้
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/th/lang.php b/wiki/lib/plugins/acl/lang/th/lang.php
new file mode 100644
index 0000000..55b707b
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/th/lang.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Komgrit Niyomrath <n.komgrit@gmail.com>
+ * @author Kittithat Arnontavilas mrtomyum@gmail.com
+ * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
+ * @author Thanasak Sompaisansin <jombthep@gmail.com>
+ */
+$lang['admin_acl']             = 'จัดการรายชื่อเพื่อควบคุมการเข้าถึง (Access Control List:ACL)';
+$lang['acl_group']             = 'กลุ่ม:';
+$lang['acl_user']              = 'ผู้ใช้:';
+$lang['acl_perms']             = 'สิทธิสำหรับ';
+$lang['page']                  = 'เพจ';
+$lang['namespace']             = 'เนมสเปซ';
+$lang['btn_select']            = 'เลือก';
+$lang['where']                 = 'เพจ/เนมสเปซ';
+$lang['who']                   = 'ผู้ใช้/กลุ่ม';
+$lang['perm']                  = 'สิทธิ์';
+$lang['acl_perm0']             = 'ไร้สิทธิ์';
+$lang['acl_perm1']             = 'อ่าน';
+$lang['acl_perm2']             = 'แก้ไข';
+$lang['acl_perm4']             = 'สร้าง';
+$lang['acl_perm8']             = 'อัพโหลด';
+$lang['acl_perm16']            = 'ลบ';
+$lang['acl_new']               = 'เพิ่มเนื้อหาใหม่';
+$lang['acl_mod']               = 'ปรับแก้เนื้อหา';
diff --git a/wiki/lib/plugins/acl/lang/tr/help.txt b/wiki/lib/plugins/acl/lang/tr/help.txt
new file mode 100644
index 0000000..b467c50
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/tr/help.txt
@@ -0,0 +1,11 @@
+=== Hızlı yardım: ===
+
+Bu sayfada Wiki'nizin namespace ve sayfaları için izinleri belirleyebilirsiniz.
+
+Soldaki kısım varolan namespace ve sayfaları listeler.
+
+Yukarıdaki kısım seçilen bir kullanıcı veya grup için izinleri görüp değiştirmenizi sağlar.
+
+Aşağıdaki tablo ise varolan erişim kontrol kurallarını gösterir. Bu tabloyu birden fazla kuralı hızlıca silip değiştirmek için kullanabilirsiniz.
+
+Resmi ACL dökümanını ([[doku>acl|official documentation on ACL]]) okuyarak erişim kontrolünün nasıl çalıştığını öğrenebilirsiniz.
diff --git a/wiki/lib/plugins/acl/lang/tr/lang.php b/wiki/lib/plugins/acl/lang/tr/lang.php
new file mode 100644
index 0000000..3c3e3db
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/tr/lang.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Selim Farsakoğlu <farsakogluselim@yahoo.de>
+ * @author Aydın Coşkuner <aydinweb@gmail.com>
+ * @author Cihan Kahveci <kahvecicihan@gmail.com>
+ * @author Yavuz Selim <yavuzselim@gmail.com>
+ * @author Caleb Maclennan <caleb@alerque.com>
+ * @author farukerdemoncel@gmail.com
+ */
+$lang['admin_acl']             = 'Erişim Kontrol Listesi (ACL) Yönetimi';
+$lang['acl_group']             = 'Grup:';
+$lang['acl_user']              = 'Kullanıcı:';
+$lang['acl_perms']             = 'Şunun için yetkiler:';
+$lang['page']                  = 'Sayfa';
+$lang['namespace']             = 'Namespace';
+$lang['btn_select']            = 'Seç';
+$lang['p_user_id']             = '<b class="acluser">%s</b> kullanıcısının şu anda <b class="aclpage">%s</b> sayfası için yetkisi: <i>%s</i>.';
+$lang['p_user_ns']             = '<b class="acluser">%s</b> kullanıcısının şu anda <b class="aclns">%s</b> namesapace\'i için yetkisi: <i>%s</i>.';
+$lang['p_group_id']            = '<b class="aclgroup">%s</b> grubunun şu anda <b class="aclpage">%s</b> sayfası için yetkisi: <i>%s</i>.';
+$lang['p_group_ns']            = '<b class="aclgroup">%s</b> grubunun şu anda <b class="aclns">%s</b> namesapace\'i için yetkisi: <i>%s</i>.';
+$lang['p_choose_id']           = 'Lütfen <b class="aclpage">%s</b> sayfasına izin verilen yetkilerini görmek veya değiştirmek için yukarıdaki forma <b>bir kullanıcı veya grup adı</b> girin.';
+$lang['p_choose_ns']           = 'Lütfen <b class="aclpage">%s</b> namespace\'ie izin verilen yetkileri görmek veya değiştirmek için yukarıdaki forma <b>bir kullanıcı veya grup adı</b> girin.';
+$lang['p_inherited']           = 'Not: Bu izinler doğrudan ayarlanmadan başka grup veya üst namespace\'lerden gelmektedir.';
+$lang['p_isadmin']             = 'Not: Seçili grup veya kullanıcı, "Ana kullanıcı" olarak atandığından tüm izinlere sahiptir.';
+$lang['p_include']             = 'Üst seviye izinler alt izinleri içermektedir. Oluşturma, Yükleme ve Silme yetkisi sadece namespace\'e uygulanmaktadır. Bu yetki sayfalara uygulanmaz.';
+$lang['current']               = 'Şimdiki ACL(İzin Kontrol listesi) kuralları';
+$lang['where']                 = 'Sayfa/Namespace';
+$lang['who']                   = 'Kullanıcı/Grup';
+$lang['perm']                  = 'İzinler';
+$lang['acl_perm0']             = 'Yok';
+$lang['acl_perm1']             = 'Okuma';
+$lang['acl_perm2']             = 'Değiştirme';
+$lang['acl_perm4']             = 'Oluşturma';
+$lang['acl_perm8']             = 'Yükleme';
+$lang['acl_perm16']            = 'Silme';
+$lang['acl_new']               = 'Yeni giriş ekle';
+$lang['acl_mod']               = 'Eski girişi değiştirme';
diff --git a/wiki/lib/plugins/acl/lang/uk/help.txt b/wiki/lib/plugins/acl/lang/uk/help.txt
new file mode 100644
index 0000000..d16af0a
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/uk/help.txt
@@ -0,0 +1,11 @@
+=== Швидка довідка: ===
+
+На цій сторінці ви можете додавати чи знищувати права доступу для просторів імен чи сторінок вашої вікі.
+
+Ліва панель показує всі доступні простори імен і сторінки.
+
+Верхня форма дозволяє переглянути і редагувати права доступу для обраного користувача чи групи
+
+В таблиці знизу показані всі оголошені правила доступу. Можете її використовувати для швидкого знищення чи модифікації кількох правил.
+
+Додаткова допомога в [[doku>acl|офіційній документації по ACL]] допоможе вам більше зрозуміти як працює контроль доступу у ДокуВікі.
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/uk/lang.php b/wiki/lib/plugins/acl/lang/uk/lang.php
new file mode 100644
index 0000000..05c2596
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/uk/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oleksiy Voronin <ovoronin@gmail.com>
+ * @author serg_stetsuk <serg_stetsuk@ukr.net>
+ * @author Oleksandr Kunytsia <okunia@gmail.com>
+ */
+$lang['admin_acl']             = 'Керування списками контролю доступу';
+$lang['acl_group']             = 'Група:';
+$lang['acl_user']              = 'Користувач:';
+$lang['acl_perms']             = 'Права доступу для';
+$lang['page']                  = 'Сторінка';
+$lang['namespace']             = 'Простір імен';
+$lang['btn_select']            = 'Вибрати';
+$lang['p_user_id']             = 'Користувач <b class="acluser">%s</b> зараз має такі права доступу до сторінки <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Користувач <b class="acluser">%s</b> зараз має такі права доступу до простору імен <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Члени групи <b class="aclgroup">%s</b> зараз мають такі права для сторінки <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Члени групи <b class="aclgroup">%s</b> зараз мають такі права доступу до простору імен <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Будь-ласка <b>введіть користувача або групу<b> в поле зверху, щоб подивитися чи змінити права доступу до сторінки <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Будь-ласка <b>введіть користувача або групу<b> у вікно зверху, щоб подивитися чи змінити права доступу до сторінки <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Зверніть увагу! Права доступу, не встановлені явно, наслідуються від інших груп чи вищих просторів імен.';
+$lang['p_isadmin']             = 'Зверніть увагу! Обрані група чи користувач завжди мають повні права доступу, оскільки вони є суперкористувачами.';
+$lang['p_include']             = 'Старші права доступу включають молодші. Створення, Завантаження і Вилучення застосовні лише до просторів імен.';
+$lang['current']               = 'Поточні правила ACL';
+$lang['where']                 = 'Сторінка/Простір імен';
+$lang['who']                   = 'Користувач/Група';
+$lang['perm']                  = 'Права доступу';
+$lang['acl_perm0']             = 'Жодних';
+$lang['acl_perm1']             = 'Читання';
+$lang['acl_perm2']             = 'Редагування';
+$lang['acl_perm4']             = 'Створення';
+$lang['acl_perm8']             = 'Завантаження';
+$lang['acl_perm16']            = 'Вилучення';
+$lang['acl_new']               = 'Додати новий запис';
+$lang['acl_mod']               = 'Змінити запис';
diff --git a/wiki/lib/plugins/acl/lang/vi/help.txt b/wiki/lib/plugins/acl/lang/vi/help.txt
new file mode 100644
index 0000000..816e5ee
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/vi/help.txt
@@ -0,0 +1,12 @@
+=== Trợ giúp nhanh: ===
+
+Trang này giúp bạn thêm hoặc xóa quyền được cấp cho 1 thư mục hoặc trang wiki của bạn.
+
+Của sổ bên trái hiển thị tất cả các thư mục và trang văn bản.
+
+Khung trên đây cho phép bạn xem và sửa quyền của một nhóm hoặc thành viên đã chọn.
+
+Bảng bên dưới hiển thị tất cả các quyền được cấp. Bạn có thể sửa hoặc hóa các quyền đó một cách nhanh chóng.
+
+Đọc [[doku>acl|tài liệu chính thức về ACL]] sẽ giúp bạn hiểu hơn về cách phân quyền ở DokuWiki.
+
diff --git a/wiki/lib/plugins/acl/lang/vi/lang.php b/wiki/lib/plugins/acl/lang/vi/lang.php
new file mode 100644
index 0000000..8ca888c
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/vi/lang.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author NukeViet <admin@nukeviet.vn>
+ */
+$lang['admin_acl']             = 'Quản lý danh sách quyền truy cập';
+$lang['acl_group']             = 'Nhóm:';
+$lang['acl_user']              = 'Thành viên:';
+$lang['acl_perms']             = 'Cấp phép cho';
+$lang['page']                  = 'Trang';
+$lang['namespace']             = 'Thư mục';
+$lang['btn_select']            = 'Chọn';
+$lang['p_user_id']             = 'Thành viên <b class="acluser">%s</b> hiện tại được cấp phép cho trang <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Thành viên <b class="acluser">%s</b>  hiện tại được cấp phép cho thư mục <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Thành viên trong nhóm <b class="aclgroup">%s</b> hiện tại được cấp phép cho trang <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Thành viên trong nhóm <b class="aclgroup">%s</b> hiện tại được cấp phép cho thư mục <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Hãy <b>nhập tên thành viên hoặc nhóm</b> vào ô trên đây để xem hoặc sửa quyền đã thiết đặt cho trang <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Hãy <b>nhập tên thành viên hoặc nhóm</b> vào ô trên đây để xem hoặc sửa quyền đã thiết đặt cho thư mục <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Ghi chú: Có những quyền không được thể hiện ở đây nhưng nó được cấp phép từ những nhóm hoặc thư mục cấp cao.';
+$lang['p_isadmin']             = 'Ghi chú: Nhóm hoặc thành viên này luôn được cấp đủ quyền vì họ là Quản trị tối cao';
+$lang['p_include']             = 'Một số quyền thấp được thể hiện ở mức cao hơn. Quyền tạo, tải lên và xóa chỉ dành cho thư mục, không dành cho trang.';
+$lang['current']               = 'Danh sách quyền truy cập hiện tại';
+$lang['where']                 = 'Trang/Thư mục';
+$lang['who']                   = 'Thành viên/Nhóm';
+$lang['perm']                  = 'Quyền';
+$lang['acl_perm0']             = 'Không';
+$lang['acl_perm1']             = 'Đọc';
+$lang['acl_perm2']             = 'Sửa';
+$lang['acl_perm4']             = 'Tạo';
+$lang['acl_perm8']             = 'Tải lên';
+$lang['acl_perm16']            = 'Xóa';
+$lang['acl_new']               = 'Thêm mục mới';
+$lang['acl_mod']               = 'Sửa';
diff --git a/wiki/lib/plugins/acl/lang/zh-tw/help.txt b/wiki/lib/plugins/acl/lang/zh-tw/help.txt
new file mode 100644
index 0000000..2d1c84b
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/zh-tw/help.txt
@@ -0,0 +1,11 @@
+=== 快速指南: ===
+
+你可以用這個頁面,為本 wiki 中的分類名稱或頁面增加或移除權限。
+
+左方面板顯示了所有分類名稱和頁面。
+
+上方表格允許你觀看及修改選取的使用者或群組的權限。
+
+下方表格顯示了目前所有的存取控制表 (ACL),你可以用它快速刪除或更改多項規則。
+
+閱讀 [[doku>acl|official documentation on ACL]] 可以幫助你完整地了解 DokuWiki 存取控制的運作。
\ No newline at end of file
diff --git a/wiki/lib/plugins/acl/lang/zh-tw/lang.php b/wiki/lib/plugins/acl/lang/zh-tw/lang.php
new file mode 100644
index 0000000..c377272
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/zh-tw/lang.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author chinsan <chinsan@mail2000.com.tw>
+ * @author Li-Jiun Huang <ljhuang.tw@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-simptrad.html
+ * @author Wayne San <waynesan@zerozone.tw>
+ * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
+ * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin <danny0838@pchome.com.tw>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author syaoranhinata@gmail.com
+ * @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ */
+$lang['admin_acl']             = '管理存取控制表 (ACL)';
+$lang['acl_group']             = '群組:';
+$lang['acl_user']              = '使用者:';
+$lang['acl_perms']             = '設定權限於';
+$lang['page']                  = '頁面';
+$lang['namespace']             = '分類名稱';
+$lang['btn_select']            = '選擇';
+$lang['p_user_id']             = '使用者 <b class="acluser">%s</b> 目前在頁面 <b class="aclpage">%s</b> 裏擁有以下權限:<i>%s</i>。';
+$lang['p_user_ns']             = '使用者 <b class=\"acluser\">%s</b> 目前在分類名稱 <b class=\"aclns\">%s</b> 裏擁有以下權限:<i>%s</i>。';
+$lang['p_group_id']            = '群組 <b class="aclgroup">%s</b> 的成員目前在頁面 <b class="aclpage">%s</b> 裏擁有以下權限:<i>%s</i>。';
+$lang['p_group_ns']            = '群組 <b class=\"aclgroup\">%s</b> 的成員目前在分類名稱 <b class=\"aclns\">%s</b> 裏擁有以下權限:<i>%s</i>。';
+$lang['p_choose_id']           = '請在上方表格<b>輸入使用者或群組</b>以檢視或編輯頁面 <b class="aclpage">%s</b> 的權限設定。';
+$lang['p_choose_ns']           = '請在上方表格<b>輸入使用者或群組</b>以檢視或編輯分類名稱 <b class=\"aclns\">%s</b> 的權限設定。';
+$lang['p_inherited']           = '注意:這些權限並未明確指定,它們是從群組或上層的分類名稱繼承而來。';
+$lang['p_isadmin']             = '注意:選取的群組或使用者擁有完整權限,因為他或他們已成為超級使用者。';
+$lang['p_include']             = '較高的權限亦包含了較低的權限。新增、上傳與刪除權限只能套用至分類名稱,不能套用至頁面。';
+$lang['current']               = '目前的存取控制規則';
+$lang['where']                 = '頁面/分類名稱';
+$lang['who']                   = '使用者/群組';
+$lang['perm']                  = '權限';
+$lang['acl_perm0']             = '無';
+$lang['acl_perm1']             = '讀取頁面';
+$lang['acl_perm2']             = '編輯頁面';
+$lang['acl_perm4']             = '新增頁面';
+$lang['acl_perm8']             = '上傳圖檔';
+$lang['acl_perm16']            = '刪除檔案';
+$lang['acl_new']               = '增加規則';
+$lang['acl_mod']               = '修改規則';
diff --git a/wiki/lib/plugins/acl/lang/zh/help.txt b/wiki/lib/plugins/acl/lang/zh/help.txt
new file mode 100644
index 0000000..526dcee
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/zh/help.txt
@@ -0,0 +1,11 @@
+=== 快速帮助 ===
+
+本页中您可以添加或移除命名空间或页面的权限。
+
+左边的窗格显示的是全部可用的命名空间和页面。
+
+您可以在上方的表格中查看并修改选定用户或组的权限。
+
+下方的表格中显示的是当前设置的全部访问控制规则。 您可以通过它快速删除或更改多条规则。
+
+参阅 [[doku>acl|official documentation on ACL]] 能帮助您完整地理解 DokuWiki 中的访问控制是如何工作的。
diff --git a/wiki/lib/plugins/acl/lang/zh/lang.php b/wiki/lib/plugins/acl/lang/zh/lang.php
new file mode 100644
index 0000000..3191745
--- /dev/null
+++ b/wiki/lib/plugins/acl/lang/zh/lang.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ZDYX <zhangduyixiong@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-tradsimp.html
+ * @author Simon zhan <simonzhan@21cn.com>
+ * @author ben <ben@livetom.com>
+ * @author lainme <lainme993@gmail.com>
+ * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ */
+$lang['admin_acl']             = '访问控制列表(ACL)管理器';
+$lang['acl_group']             = '组:';
+$lang['acl_user']              = '用户:';
+$lang['acl_perms']             = '许可给';
+$lang['page']                  = '页面';
+$lang['namespace']             = '命名空间';
+$lang['btn_select']            = '選擇';
+$lang['p_user_id']             = '用户 <b class="acluser">%s</b> 当前在页面 <b class="aclpage">%s</b> 拥有以下权限:<i>%s</i>。';
+$lang['p_user_ns']             = '用户 <b class="acluser">%s</b> 当前在命名空间 <b class="aclns">%s</b> 拥有以下权限:<i>%s</i>。';
+$lang['p_group_id']            = '<b class="aclgroup">%s</b> 组成员当前在页面 <b class="aclpage">%s</b> 拥有以下权限:<i>%s</i>。';
+$lang['p_group_ns']            = '<b class="aclgroup">%s</b> 组成员当前在命名空间 <b class="aclns">%s</b> 拥有以下权限:<i>%s</i>。';
+$lang['p_choose_id']           = '请在上表中<b>输入用户名或组名称</b>,来查看或编辑页面 <b class="aclpage">%s</b> 的权限设置。';
+$lang['p_choose_ns']           = '请在上表中<b>输入用户名或组名称</b>,来查看或编辑命名空间 <b class="aclns">%s</b> 的权限设置。';
+$lang['p_inherited']           = '请注意:这些权限并没有明确设定,而是从其他组或更高级的名称空间继承而来。';
+$lang['p_isadmin']             = '请注意:选定的组或用户拥有完全权限,因为它被设定为超级用户。';
+$lang['p_include']             = '高权限包含低权限。创建、上传和删除权限只能应用于名称空间,而不是单个页面。';
+$lang['current']               = '当前 ACL 规则';
+$lang['where']                 = '页面/命名空间';
+$lang['who']                   = '用户/组';
+$lang['perm']                  = '权限';
+$lang['acl_perm0']             = '无';
+$lang['acl_perm1']             = '读取';
+$lang['acl_perm2']             = '编辑';
+$lang['acl_perm4']             = '创建';
+$lang['acl_perm8']             = '上传';
+$lang['acl_perm16']            = '删除';
+$lang['acl_new']               = '添加新条目';
+$lang['acl_mod']               = '编辑条目';
diff --git a/wiki/lib/plugins/acl/pix/group.png b/wiki/lib/plugins/acl/pix/group.png
new file mode 100644
index 0000000..348d4e5
--- /dev/null
+++ b/wiki/lib/plugins/acl/pix/group.png
Binary files differdiff --git a/wiki/lib/plugins/acl/pix/ns.png b/wiki/lib/plugins/acl/pix/ns.png
new file mode 100644
index 0000000..77e03b1
--- /dev/null
+++ b/wiki/lib/plugins/acl/pix/ns.png
Binary files differdiff --git a/wiki/lib/plugins/acl/pix/page.png b/wiki/lib/plugins/acl/pix/page.png
new file mode 100644
index 0000000..b1b7ebe
--- /dev/null
+++ b/wiki/lib/plugins/acl/pix/page.png
Binary files differdiff --git a/wiki/lib/plugins/acl/pix/user.png b/wiki/lib/plugins/acl/pix/user.png
new file mode 100644
index 0000000..8d5d1c2
--- /dev/null
+++ b/wiki/lib/plugins/acl/pix/user.png
Binary files differdiff --git a/wiki/lib/plugins/acl/plugin.info.txt b/wiki/lib/plugins/acl/plugin.info.txt
new file mode 100644
index 0000000..1b2c82c
--- /dev/null
+++ b/wiki/lib/plugins/acl/plugin.info.txt
@@ -0,0 +1,7 @@
+base   acl
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-25
+name   ACL Manager
+desc   Manage Page Access Control Lists
+url    http://dokuwiki.org/plugin:acl
diff --git a/wiki/lib/plugins/acl/remote.php b/wiki/lib/plugins/acl/remote.php
new file mode 100644
index 0000000..27c5c16
--- /dev/null
+++ b/wiki/lib/plugins/acl/remote.php
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * Class remote_plugin_acl
+ */
+class remote_plugin_acl extends DokuWiki_Remote_Plugin {
+
+    /**
+     * Returns details about the remote plugin methods
+     *
+     * @return array Information about all provided methods. {@see RemoteAPI}
+     */
+    public function _getMethods() {
+        return array(
+            'listAcls' => array(
+                'args' => array(),
+                'return' => 'Array of ACLs {scope, user, permission}',
+                'name' => 'listAcls',
+                'doc' => 'Get the list of all ACLs',
+            ),'addAcl' => array(
+                'args' => array('string','string','int'),
+                'return' => 'int',
+                'name' => 'addAcl',
+                'doc' => 'Adds a new ACL rule.'
+            ), 'delAcl' => array(
+                'args' => array('string','string'),
+                'return' => 'int',
+                'name' => 'delAcl',
+                'doc' => 'Delete an existing ACL rule.'
+            ),
+        );
+    }
+
+    /**
+     * List all ACL config entries
+     *
+     * @throws RemoteAccessDeniedException
+     * @return dictionary {Scope: ACL}, where ACL = dictionnary {user/group: permissions_int}
+     */
+    public function listAcls(){
+        if(!auth_isadmin()) {
+         throw new RemoteAccessDeniedException('You are not allowed to access ACLs, superuser permission is required', 114);
+        }
+        /** @var admin_plugin_acl $apa */
+        $apa = plugin_load('admin', 'acl');
+        $apa->_init_acl_config();
+        return $apa->acl;
+    }
+
+    /**
+     * Add a new entry to ACL config
+     *
+     * @param string $scope
+     * @param string $user
+     * @param int    $level see also inc/auth.php
+     * @throws RemoteAccessDeniedException
+     * @return bool
+     */
+    public function addAcl($scope, $user, $level){
+        if(!auth_isadmin()) {
+            throw new RemoteAccessDeniedException('You are not allowed to access ACLs, superuser permission is required', 114);
+        }
+
+        /** @var admin_plugin_acl $apa */
+        $apa = plugin_load('admin', 'acl');
+        return $apa->_acl_add($scope, $user, $level);
+    }
+
+    /**
+     * Remove an entry from ACL config
+     *
+     * @param string $scope
+     * @param string $user
+     * @throws RemoteAccessDeniedException
+     * @return bool
+     */
+    public function delAcl($scope, $user){
+        if(!auth_isadmin()) {
+            throw new RemoteAccessDeniedException('You are not allowed to access ACLs, superuser permission is required', 114);
+        }
+
+        /** @var admin_plugin_acl $apa */
+        $apa = plugin_load('admin', 'acl');
+        return $apa->_acl_del($scope, $user);
+    }
+}
+
diff --git a/wiki/lib/plugins/acl/script.js b/wiki/lib/plugins/acl/script.js
new file mode 100644
index 0000000..86badff
--- /dev/null
+++ b/wiki/lib/plugins/acl/script.js
@@ -0,0 +1,121 @@
+/**
+ * ACL Manager AJAX enhancements
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+var dw_acl = {
+    /**
+     * Initialize the object and attach the event handlers
+     */
+    init: function () {
+        var $tree;
+
+        //FIXME only one underscore!!
+        if (jQuery('#acl_manager').length === 0) {
+            return;
+        }
+
+        jQuery('#acl__user select').change(dw_acl.userselhandler);
+        jQuery('#acl__user button').click(dw_acl.loadinfo);
+
+        $tree = jQuery('#acl__tree');
+        $tree.dw_tree({toggle_selector: 'img',
+                       load_data: function (show_sublist, $clicky) {
+                           // get the enclosed link and the edit form
+                           var $frm = jQuery('#acl__detail form');
+
+                           jQuery.post(
+                               DOKU_BASE + 'lib/exe/ajax.php',
+                               jQuery.extend(dw_acl.parseatt($clicky.parent().find('a')[0].search),
+                                             {call: 'plugin_acl',
+                                              ajax: 'tree',
+                                              current_ns: $frm.find('input[name=ns]').val(),
+                                              current_id: $frm.find('input[name=id]').val()}),
+                               show_sublist,
+                               'html'
+                           );
+                       },
+
+                       toggle_display: function ($clicky, opening) {
+                           $clicky.attr('src',
+                                        DOKU_BASE + 'lib/images/' +
+                                        (opening ? 'minus' : 'plus') + '.gif');
+                       }});
+        $tree.delegate('a', 'click', dw_acl.treehandler);
+    },
+
+    /**
+     * Handle user dropdown
+     *
+     * Hides or shows the user/group entry box depending on what was selected in the
+     * dropdown element
+     */
+    userselhandler: function () {
+        // make entry field visible/invisible
+        jQuery('#acl__user input').toggle(this.value === '__g__' ||
+                                          this.value === '__u__');
+        dw_acl.loadinfo();
+    },
+
+    /**
+     * Load the current permission info and edit form
+     */
+    loadinfo: function () {
+        jQuery('#acl__info')
+            .attr('role', 'alert')
+            .html('<img src="'+DOKU_BASE+'lib/images/throbber.gif" alt="..." />')
+            .load(
+                DOKU_BASE + 'lib/exe/ajax.php',
+                jQuery('#acl__detail form').serialize() + '&call=plugin_acl&ajax=info'
+            );
+        return false;
+    },
+
+    /**
+     * parse URL attributes into a associative array
+     *
+     * @todo put into global script lib?
+     */
+    parseatt: function (str) {
+        if (str[0] === '?') {
+            str = str.substr(1);
+        }
+        var attributes = {};
+        var all = str.split('&');
+        for (var i = 0; i < all.length; i++) {
+            var att = all[i].split('=');
+            attributes[att[0]] = decodeURIComponent(att[1]);
+        }
+        return attributes;
+    },
+
+    /**
+     * Handles clicks to the tree nodes
+     */
+    treehandler: function () {
+        var $link, $frm;
+
+        $link = jQuery(this);
+
+            // remove highlighting
+            jQuery('#acl__tree a.cur').removeClass('cur');
+
+            // add new highlighting
+        $link.addClass('cur');
+
+            // set new page to detail form
+        $frm = jQuery('#acl__detail form');
+        if ($link.hasClass('wikilink1')) {
+            $frm.find('input[name=ns]').val('');
+            $frm.find('input[name=id]').val(dw_acl.parseatt($link[0].search).id);
+        } else if ($link.hasClass('idx_dir')) {
+            $frm.find('input[name=ns]').val(dw_acl.parseatt($link[0].search).ns);
+            $frm.find('input[name=id]').val('');
+            }
+        dw_acl.loadinfo();
+
+        return false;
+    }
+};
+
+jQuery(dw_acl.init);
diff --git a/wiki/lib/plugins/acl/style.css b/wiki/lib/plugins/acl/style.css
new file mode 100644
index 0000000..4233cd3
--- /dev/null
+++ b/wiki/lib/plugins/acl/style.css
@@ -0,0 +1,135 @@
+#acl__tree {
+    font-size: 90%;
+    width: 25%;
+    height: 300px;
+    float: left;
+    overflow: auto;
+    border: 1px solid __border__;
+    text-align: left;
+}
+[dir=rtl] #acl__tree {
+    float: right;
+    text-align: right;
+}
+
+#acl__tree a.cur {
+    background-color: __highlight__;
+    font-weight: bold;
+}
+
+#acl__tree ul {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+}
+
+#acl__tree li {
+    padding-left: 1em;
+    list-style-image: none;
+}
+[dir=rtl] #acl__tree li {
+    padding-left: 0em;
+    padding-right: 1em;
+}
+
+#acl__tree ul img {
+    margin-right: 0.25em;
+    cursor: pointer;
+}
+[dir=rtl] #acl__tree ul img {
+    margin-left: 0.25em;
+    margin-right: 0em;
+}
+
+#acl__detail {
+    width: 73%;
+    height: 300px;
+    float: right;
+    overflow: auto;
+}
+[dir=rtl] #acl__detail {
+    float: left;
+}
+
+#acl__detail fieldset {
+    width: 90%;
+}
+
+#acl__detail div#acl__user {
+    border: 1px solid __border__;
+    padding: 0.5em;
+    margin-bottom: 0.6em;
+}
+
+#acl_manager table.inline {
+    width: 100%;
+    margin: 0;
+}
+
+#acl_manager table .check {
+    text-align: center;
+}
+
+#acl_manager table .action {
+    text-align: right;
+}
+
+#acl_manager .aclgroup {
+    background: transparent url(pix/group.png) 0px 1px no-repeat;
+    padding: 1px 0px 1px 18px;
+}
+[dir=rtl] #acl_manager .aclgroup {
+    background: transparent url(pix/group.png) right 1px no-repeat;
+    padding: 1px 18px 1px 0px;
+}
+
+#acl_manager .acluser {
+    background: transparent url(pix/user.png) 0px 1px no-repeat;
+    padding: 1px 0px 1px 18px;
+}
+[dir=rtl] #acl_manager .acluser {
+    background: transparent url(pix/user.png) right 1px no-repeat;
+    padding: 1px 18px 1px 0px;
+}
+
+#acl_manager .aclpage {
+    background: transparent url(pix/page.png) 0px 1px no-repeat;
+    padding: 1px 0px 1px 18px;
+}
+[dir=rtl] #acl_manager .aclpage {
+    background: transparent url(pix/page.png) right 1px no-repeat;
+    padding: 1px 18px 1px 0px;
+}
+
+#acl_manager .aclns {
+    background: transparent url(pix/ns.png) 0px 1px no-repeat;
+    padding: 1px 0px 1px 18px;
+}
+[dir=rtl] #acl_manager .aclns {
+    background: transparent url(pix/ns.png) right 1px no-repeat;
+    padding: 1px 18px 1px 0px;
+}
+
+#acl_manager label.disabled {
+    opacity: .5;
+    cursor: auto;
+}
+
+#acl_manager label {
+    text-align: left;
+    font-weight: normal;
+    display: inline;
+}
+
+#acl_manager table {
+    margin-left: 10%;
+    width: 80%;
+}
+
+#acl_manager table tr {
+    background-color: inherit;
+}
+
+#acl_manager table tr:hover {
+    background-color: __background_alt__;
+}
diff --git a/wiki/lib/plugins/action.php b/wiki/lib/plugins/action.php
new file mode 100644
index 0000000..23d94a5
--- /dev/null
+++ b/wiki/lib/plugins/action.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Action Plugin Prototype
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Christopher Smith <chris@jalakai.co.uk>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to interfere with the event system
+ * need to inherit from this class
+ */
+class DokuWiki_Action_Plugin extends DokuWiki_Plugin {
+
+    /**
+     * Registers a callback function for a given event
+     *
+     * @param Doku_Event_Handler $controller
+     */
+    public function register(Doku_Event_Handler $controller) {
+        trigger_error('register() not implemented in '.get_class($this), E_USER_WARNING);
+    }
+}
diff --git a/wiki/lib/plugins/admin.php b/wiki/lib/plugins/admin.php
new file mode 100644
index 0000000..4e1cbbb
--- /dev/null
+++ b/wiki/lib/plugins/admin.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Admin Plugin Prototype
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Christopher Smith <chris@jalakai.co.uk>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class DokuWiki_Admin_Plugin extends DokuWiki_Plugin {
+
+    /**
+     * Return the text that is displayed at the main admin menu
+     * (Default localized language string 'menu' is returned, override this function for setting another name)
+     *
+     * @param string $language language code
+     * @return string menu string
+     */
+    public function getMenuText($language) {
+        $menutext = $this->getLang('menu');
+        if (!$menutext) {
+            $info = $this->getInfo();
+            $menutext = $info['name'].' ...';
+        }
+        return $menutext;
+    }
+
+    /**
+     * Return the path to the icon being displayed in the main admin menu.
+     * By default it tries to find an 'admin.svg' file in the plugin directory.
+     * (Override this function for setting another image)
+     *
+     * Important: you have to return a single path, monochrome SVG icon! It has to be
+     * under 2 Kilobytes!
+     *
+     * We recommend icons from https://materialdesignicons.com/ or to use a matching
+     * style.
+     *
+     * @return string full path to the icon file
+     */
+    public function getMenuIcon() {
+        $plugin = $this->getPluginName();
+        return DOKU_PLUGIN . $plugin . '/admin.svg';
+    }
+
+    /**
+     * Determine position in list in admin window
+     * Lower values are sorted up
+     *
+     * @return int
+     */
+    public function getMenuSort() {
+        return 1000;
+    }
+
+    /**
+     * Carry out required processing
+     */
+    public function handle() {
+        trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
+    }
+
+    /**
+     * Output html of the admin page
+     */
+    public function html() {
+        trigger_error('html() not implemented in '.get_class($this), E_USER_WARNING);
+    }
+
+    /**
+     * Return true for access only by admins (config:superuser) or false if managers are allowed as well
+     *
+     * @return bool
+     */
+    public function forAdminOnly() {
+        return true;
+    }
+
+    /**
+     * Return array with ToC items. Items can be created with the html_mktocitem()
+     *
+     * @see html_mktocitem()
+     * @see tpl_toc()
+     *
+     * @return array
+     */
+    public function getTOC(){
+        return array();
+    }
+}
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/auth.php b/wiki/lib/plugins/auth.php
new file mode 100644
index 0000000..0cd965b
--- /dev/null
+++ b/wiki/lib/plugins/auth.php
@@ -0,0 +1,438 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Auth Plugin Prototype
+ *
+ * foundation authorisation class
+ * all auth classes should inherit from this class
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Chris Smith <chris@jalakai.co.uk>
+ * @author     Jan Schumann <js@jschumann-it.com>
+ */
+class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
+    public $success = true;
+
+    /**
+     * Possible things an auth backend module may be able to
+     * do. The things a backend can do need to be set to true
+     * in the constructor.
+     */
+    protected $cando = array(
+        'addUser'      => false, // can Users be created?
+        'delUser'      => false, // can Users be deleted?
+        'modLogin'     => false, // can login names be changed?
+        'modPass'      => false, // can passwords be changed?
+        'modName'      => false, // can real names be changed?
+        'modMail'      => false, // can emails be changed?
+        'modGroups'    => false, // can groups be changed?
+        'getUsers'     => false, // can a (filtered) list of users be retrieved?
+        'getUserCount' => false, // can the number of users be retrieved?
+        'getGroups'    => false, // can a list of available groups be retrieved?
+        'external'     => false, // does the module do external auth checking?
+        'logout'       => true, // can the user logout again? (eg. not possible with HTTP auth)
+    );
+
+    /**
+     * Constructor.
+     *
+     * Carry out sanity checks to ensure the object is
+     * able to operate. Set capabilities in $this->cando
+     * array here
+     *
+     * For future compatibility, sub classes should always include a call
+     * to parent::__constructor() in their constructors!
+     *
+     * Set $this->success to false if checks fail
+     *
+     * @author  Christopher Smith <chris@jalakai.co.uk>
+     */
+    public function __construct() {
+        // the base class constructor does nothing, derived class
+        // constructors do the real work
+    }
+
+    /**
+     * Available Capabilities. [ DO NOT OVERRIDE ]
+     *
+     * For introspection/debugging
+     *
+     * @author  Christopher Smith <chris@jalakai.co.uk>
+     * @return  array
+     */
+    public function getCapabilities(){
+        return array_keys($this->cando);
+    }
+
+    /**
+     * Capability check. [ DO NOT OVERRIDE ]
+     *
+     * Checks the capabilities set in the $this->cando array and
+     * some pseudo capabilities (shortcutting access to multiple
+     * ones)
+     *
+     * ususal capabilities start with lowercase letter
+     * shortcut capabilities start with uppercase letter
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param   string $cap the capability to check
+     * @return  bool
+     */
+    public function canDo($cap) {
+        switch($cap) {
+            case 'Profile':
+                // can at least one of the user's properties be changed?
+                return ($this->cando['modPass'] ||
+                    $this->cando['modName'] ||
+                    $this->cando['modMail']);
+                break;
+            case 'UserMod':
+                // can at least anything be changed?
+                return ($this->cando['modPass'] ||
+                    $this->cando['modName'] ||
+                    $this->cando['modMail'] ||
+                    $this->cando['modLogin'] ||
+                    $this->cando['modGroups'] ||
+                    $this->cando['modMail']);
+                break;
+            default:
+                // print a helping message for developers
+                if(!isset($this->cando[$cap])) {
+                    msg("Check for unknown capability '$cap' - Do you use an outdated Plugin?", -1);
+                }
+                return $this->cando[$cap];
+        }
+    }
+
+    /**
+     * Trigger the AUTH_USERDATA_CHANGE event and call the modification function. [ DO NOT OVERRIDE ]
+     *
+     * You should use this function instead of calling createUser, modifyUser or
+     * deleteUsers directly. The event handlers can prevent the modification, for
+     * example for enforcing a user name schema.
+     *
+     * @author Gabriel Birke <birke@d-scribe.de>
+     * @param string $type   Modification type ('create', 'modify', 'delete')
+     * @param array  $params Parameters for the createUser, modifyUser or deleteUsers method. The content of this array depends on the modification type
+     * @return bool|null|int Result from the modification function or false if an event handler has canceled the action
+     */
+    public function triggerUserMod($type, $params) {
+        $validTypes = array(
+            'create' => 'createUser',
+            'modify' => 'modifyUser',
+            'delete' => 'deleteUsers'
+        );
+        if(empty($validTypes[$type])) {
+            return false;
+        }
+
+        $result = false;
+        $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null);
+        $evt       = new Doku_Event('AUTH_USER_CHANGE', $eventdata);
+        if($evt->advise_before(true)) {
+            $result                           = call_user_func_array(array($this, $validTypes[$type]), $evt->data['params']);
+            $evt->data['modification_result'] = $result;
+        }
+        $evt->advise_after();
+        unset($evt);
+        return $result;
+    }
+
+    /**
+     * Log off the current user [ OPTIONAL ]
+     *
+     * Is run in addition to the ususal logoff method. Should
+     * only be needed when trustExternal is implemented.
+     *
+     * @see     auth_logoff()
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     */
+    public function logOff() {
+    }
+
+    /**
+     * Do all authentication [ OPTIONAL ]
+     *
+     * Set $this->cando['external'] = true when implemented
+     *
+     * If this function is implemented it will be used to
+     * authenticate a user - all other DokuWiki internals
+     * will not be used for authenticating, thus
+     * implementing the checkPass() function is not needed
+     * anymore.
+     *
+     * The function can be used to authenticate against third
+     * party cookies or Apache auth mechanisms and replaces
+     * the auth_login() function
+     *
+     * The function will be called with or without a set
+     * username. If the Username is given it was called
+     * from the login form and the given credentials might
+     * need to be checked. If no username was given it
+     * the function needs to check if the user is logged in
+     * by other means (cookie, environment).
+     *
+     * The function needs to set some globals needed by
+     * DokuWiki like auth_login() does.
+     *
+     * @see     auth_login()
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     *
+     * @param   string  $user    Username
+     * @param   string  $pass    Cleartext Password
+     * @param   bool    $sticky  Cookie should not expire
+     * @return  bool             true on successful auth
+     */
+    public function trustExternal($user, $pass, $sticky = false) {
+        /* some example:
+
+        global $USERINFO;
+        global $conf;
+        $sticky ? $sticky = true : $sticky = false; //sanity check
+
+        // do the checking here
+
+        // set the globals if authed
+        $USERINFO['name'] = 'FIXME';
+        $USERINFO['mail'] = 'FIXME';
+        $USERINFO['grps'] = array('FIXME');
+        $_SERVER['REMOTE_USER'] = $user;
+        $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
+        $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
+        $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
+        return true;
+
+        */
+    }
+
+    /**
+     * Check user+password [ MUST BE OVERRIDDEN ]
+     *
+     * Checks if the given user exists and the given
+     * plaintext password is correct
+     *
+     * May be ommited if trustExternal is used.
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param   string $user the user name
+     * @param   string $pass the clear text password
+     * @return  bool
+     */
+    public function checkPass($user, $pass) {
+        msg("no valid authorisation system in use", -1);
+        return false;
+    }
+
+    /**
+     * Return user info [ MUST BE OVERRIDDEN ]
+     *
+     * Returns info about the given user needs to contain
+     * at least these fields:
+     *
+     * name string  full name of the user
+     * mail string  email address of the user
+     * grps array   list of groups the user is in
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param   string $user the user name
+     * @param   bool $requireGroups whether or not the returned data must include groups
+     * @return  false|array containing user data or false
+     */
+    public function getUserData($user, $requireGroups=true) {
+        if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
+        return false;
+    }
+
+    /**
+     * Create a new User [implement only where required/possible]
+     *
+     * Returns false if the user already exists, null when an error
+     * occurred and true if everything went well.
+     *
+     * The new user HAS TO be added to the default group by this
+     * function!
+     *
+     * Set addUser capability when implemented
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param  string     $user
+     * @param  string     $pass
+     * @param  string     $name
+     * @param  string     $mail
+     * @param  null|array $grps
+     * @return bool|null
+     */
+    public function createUser($user, $pass, $name, $mail, $grps = null) {
+        msg("authorisation method does not allow creation of new users", -1);
+        return null;
+    }
+
+    /**
+     * Modify user data [implement only where required/possible]
+     *
+     * Set the mod* capabilities according to the implemented features
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @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
+     */
+    public function modifyUser($user, $changes) {
+        msg("authorisation method does not allow modifying of user data", -1);
+        return false;
+    }
+
+    /**
+     * Delete one or more users [implement only where required/possible]
+     *
+     * Set delUser capability when implemented
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @param   array  $users
+     * @return  int    number of users deleted
+     */
+    public function deleteUsers($users) {
+        msg("authorisation method does not allow deleting of users", -1);
+        return 0;
+    }
+
+    /**
+     * Return a count of the number of user which meet $filter criteria
+     * [should be implemented whenever retrieveUsers is implemented]
+     *
+     * Set getUserCount capability when implemented
+     *
+     * @author Chris Smith <chris@jalakai.co.uk>
+     * @param  array $filter array of field/pattern pairs, empty array for no filter
+     * @return int
+     */
+    public function getUserCount($filter = array()) {
+        msg("authorisation method does not provide user counts", -1);
+        return 0;
+    }
+
+    /**
+     * Bulk retrieval of user data [implement only where required/possible]
+     *
+     * Set getUsers capability when implemented
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @param   int   $start     index of first user to be returned
+     * @param   int   $limit     max number of users to be returned, 0 for unlimited
+     * @param   array $filter    array of field/pattern pairs, null for no filter
+     * @return  array list of userinfo (refer getUserData for internal userinfo details)
+     */
+    public function retrieveUsers($start = 0, $limit = 0, $filter = null) {
+        msg("authorisation method does not support mass retrieval of user data", -1);
+        return array();
+    }
+
+    /**
+     * Define a group [implement only where required/possible]
+     *
+     * Set addGroup capability when implemented
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @param   string $group
+     * @return  bool
+     */
+    public function addGroup($group) {
+        msg("authorisation method does not support independent group creation", -1);
+        return false;
+    }
+
+    /**
+     * Retrieve groups [implement only where required/possible]
+     *
+     * Set getGroups capability when implemented
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @param   int $start
+     * @param   int $limit
+     * @return  array
+     */
+    public function retrieveGroups($start = 0, $limit = 0) {
+        msg("authorisation method does not support group list retrieval", -1);
+        return array();
+    }
+
+    /**
+     * Return case sensitivity of the backend [OPTIONAL]
+     *
+     * When your backend is caseinsensitive (eg. you can login with USER and
+     * user) then you need to overwrite this method and return false
+     *
+     * @return bool
+     */
+    public function isCaseSensitive() {
+        return true;
+    }
+
+    /**
+     * Sanitize a given username [OPTIONAL]
+     *
+     * This function is applied to any user name that is given to
+     * the backend and should also be applied to any user name within
+     * the backend before returning it somewhere.
+     *
+     * This should be used to enforce username restrictions.
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @param string $user username
+     * @return string the cleaned username
+     */
+    public function cleanUser($user) {
+        return $user;
+    }
+
+    /**
+     * Sanitize a given groupname [OPTIONAL]
+     *
+     * This function is applied to any groupname that is given to
+     * the backend and should also be applied to any groupname within
+     * the backend before returning it somewhere.
+     *
+     * This should be used to enforce groupname restrictions.
+     *
+     * Groupnames are to be passed without a leading '@' here.
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @param  string $group groupname
+     * @return string the cleaned groupname
+     */
+    public function cleanGroup($group) {
+        return $group;
+    }
+
+    /**
+     * Check Session Cache validity [implement only where required/possible]
+     *
+     * DokuWiki caches user info in the user's session for the timespan defined
+     * in $conf['auth_security_timeout'].
+     *
+     * This makes sure slow authentication backends do not slow down DokuWiki.
+     * This also means that changes to the user database will not be reflected
+     * on currently logged in users.
+     *
+     * To accommodate for this, the user manager plugin will touch a reference
+     * file whenever a change is submitted. This function compares the filetime
+     * of this reference file with the time stored in the session.
+     *
+     * This reference file mechanism does not reflect changes done directly in
+     * the backend's database through other means than the user manager plugin.
+     *
+     * Fast backends might want to return always false, to force rechecks on
+     * each page load. Others might want to use their own checking here. If
+     * unsure, do not override.
+     *
+     * @param  string $user - The username
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @return bool
+     */
+    public function useSessionCache($user) {
+        global $conf;
+        return ($_SESSION[DOKU_COOKIE]['auth']['time'] >= @filemtime($conf['cachedir'].'/sessionpurge'));
+    }
+}
diff --git a/wiki/lib/plugins/authad/action.php b/wiki/lib/plugins/authad/action.php
new file mode 100644
index 0000000..bc0f90c
--- /dev/null
+++ b/wiki/lib/plugins/authad/action.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * DokuWiki Plugin addomain (Action Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <gohr@cosmocode.de>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class action_plugin_addomain
+ */
+class action_plugin_authad extends DokuWiki_Action_Plugin {
+
+    /**
+     * Registers a callback function for a given event
+     */
+    public function register(Doku_Event_Handler $controller) {
+
+        $controller->register_hook('AUTH_LOGIN_CHECK', 'BEFORE', $this, 'handle_auth_login_check');
+        $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handle_html_loginform_output');
+
+    }
+
+    /**
+     * Adds the selected domain as user postfix when attempting a login
+     *
+     * @param Doku_Event $event
+     * @param array      $param
+     */
+    public function handle_auth_login_check(Doku_Event &$event, $param) {
+        global $INPUT;
+
+        /** @var auth_plugin_authad $auth */
+        global $auth;
+        if(!is_a($auth, 'auth_plugin_authad')) return; // AD not even used
+
+        if($INPUT->str('dom')) {
+            $usr = $auth->cleanUser($event->data['user']);
+            $dom = $auth->_userDomain($usr);
+            if(!$dom) {
+                $usr = "$usr@".$INPUT->str('dom');
+            }
+            $INPUT->post->set('u', $usr);
+            $event->data['user'] = $usr;
+        }
+    }
+
+    /**
+     * Shows a domain selection in the login form when more than one domain is configured
+     *
+     * @param Doku_Event $event
+     * @param array      $param
+     */
+    public function handle_html_loginform_output(Doku_Event &$event, $param) {
+        global $INPUT;
+        /** @var auth_plugin_authad $auth */
+        global $auth;
+        if(!is_a($auth, 'auth_plugin_authad')) return; // AD not even used
+        $domains = $auth->_getConfiguredDomains();
+        if(count($domains) <= 1) return; // no choice at all
+
+        /** @var Doku_Form $form */
+        $form =& $event->data;
+
+        // any default?
+        $dom = '';
+        if($INPUT->has('u')) {
+            $usr = $auth->cleanUser($INPUT->str('u'));
+            $dom = $auth->_userDomain($usr);
+
+            // update user field value
+            if($dom) {
+                $usr          = $auth->_userName($usr);
+                $pos          = $form->findElementByAttribute('name', 'u');
+                $ele          =& $form->getElementAt($pos);
+                $ele['value'] = $usr;
+            }
+        }
+
+        // add select box
+        $element = form_makeListboxField('dom', $domains, $dom, $this->getLang('domain'), '', 'block');
+        $pos     = $form->findElementByAttribute('name', 'p');
+        $form->insertElement($pos + 1, $element);
+    }
+
+}
+
+// vim:ts=4:sw=4:et:
\ No newline at end of file
diff --git a/wiki/lib/plugins/authad/adLDAP/adLDAP.php b/wiki/lib/plugins/authad/adLDAP/adLDAP.php
new file mode 100644
index 0000000..c84a4f4
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/adLDAP.php
@@ -0,0 +1,949 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 169 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+
+/**
+* Main adLDAP class
+* 
+* Can be initialised using $adldap = new adLDAP();
+* 
+* Something to keep in mind is that Active Directory is a permissions
+* based directory. If you bind as a domain user, you can't fetch as
+* much information on other users as you could as a domain admin.
+* 
+* Before asking questions, please read the Documentation at
+* http://adldap.sourceforge.net/wiki/doku.php?id=api
+*/
+require_once(dirname(__FILE__) . '/collections/adLDAPCollection.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPGroups.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPUsers.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPFolders.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPUtils.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPContacts.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPExchange.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPComputers.php');
+
+class adLDAP {
+    
+    /**
+     * Define the different types of account in AD
+     */
+    const ADLDAP_NORMAL_ACCOUNT = 805306368;
+    const ADLDAP_WORKSTATION_TRUST = 805306369;
+    const ADLDAP_INTERDOMAIN_TRUST = 805306370;
+    const ADLDAP_SECURITY_GLOBAL_GROUP = 268435456;
+    const ADLDAP_DISTRIBUTION_GROUP = 268435457;
+    const ADLDAP_SECURITY_LOCAL_GROUP = 536870912;
+    const ADLDAP_DISTRIBUTION_LOCAL_GROUP = 536870913;
+    const ADLDAP_FOLDER = 'OU';
+    const ADLDAP_CONTAINER = 'CN';
+    
+    /**
+    * The default port for LDAP non-SSL connections
+    */
+    const ADLDAP_LDAP_PORT = '389';
+    /**
+    * The default port for LDAPS SSL connections
+    */
+    const ADLDAP_LDAPS_PORT = '636';
+    
+    /**
+    * The account suffix for your domain, can be set when the class is invoked
+    * 
+    * @var string
+    */   
+        protected $accountSuffix = "@mydomain.local";
+    
+    /**
+    * The base dn for your domain
+    * 
+    * If this is set to null then adLDAP will attempt to obtain this automatically from the rootDSE
+    * 
+    * @var string
+    */
+        protected $baseDn = "DC=mydomain,DC=local"; 
+    
+    /** 
+    * Port used to talk to the domain controllers. 
+    *  
+    * @var int 
+    */ 
+    protected $adPort = self::ADLDAP_LDAP_PORT; 
+        
+    /**
+    * Array of domain controllers. Specifiy multiple controllers if you
+    * would like the class to balance the LDAP queries amongst multiple servers
+    * 
+    * @var array
+    */
+    protected $domainControllers = array("dc01.mydomain.local");
+        
+    /**
+    * Optional account with higher privileges for searching
+    * This should be set to a domain admin account
+    * 
+    * @var string
+    * @var string
+    */
+        protected $adminUsername = NULL;
+    protected $adminPassword = NULL;
+    
+    /**
+    * AD does not return the primary group. http://support.microsoft.com/?kbid=321360
+    * This tweak will resolve the real primary group. 
+    * Setting to false will fudge "Domain Users" and is much faster. Keep in mind though that if
+    * someone's primary group is NOT domain users, this is obviously going to mess up the results
+    * 
+    * @var bool
+    */
+        protected $realPrimaryGroup = true;
+        
+    /**
+    * Use SSL (LDAPS), your server needs to be setup, please see
+    * http://adldap.sourceforge.net/wiki/doku.php?id=ldap_over_ssl
+    * 
+    * @var bool
+    */
+        protected $useSSL = false;
+    
+    /**
+    * Use TLS
+    * If you wish to use TLS you should ensure that $useSSL is set to false and vice-versa
+    * 
+    * @var bool
+    */
+    protected $useTLS = false;
+    
+    /**
+    * Use SSO  
+    * To indicate to adLDAP to reuse password set by the brower through NTLM or Kerberos 
+    * 
+    * @var bool
+    */
+    protected $useSSO = false;
+    
+    /**
+    * When querying group memberships, do it recursively 
+    * eg. User Fred is a member of Group A, which is a member of Group B, which is a member of Group C
+    * user_ingroup("Fred","C") will returns true with this option turned on, false if turned off     
+    * 
+    * @var bool
+    */
+        protected $recursiveGroups = true;
+        
+        // You should not need to edit anything below this line
+        //******************************************************************************************
+        
+        /**
+    * Connection and bind default variables
+    * 
+    * @var mixed
+    * @var mixed
+    */
+        protected $ldapConnection;
+        protected $ldapBind;
+    
+    /**
+    * Get the active LDAP Connection
+    * 
+    * @return resource
+    */
+    public function getLdapConnection() {
+        if ($this->ldapConnection) {
+            return $this->ldapConnection;   
+        }
+        return false;
+    }
+    
+    /**
+    * Get the bind status
+    * 
+    * @return bool
+    */
+    public function getLdapBind() {
+        return $this->ldapBind;
+    }
+    
+    /**
+    * Get the current base DN
+    * 
+    * @return string
+    */
+    public function getBaseDn() {
+        return $this->baseDn;   
+    }
+    
+    /**
+    * The group class
+    * 
+    * @var adLDAPGroups
+    */
+    protected $groupClass;
+    
+    /**
+    * Get the group class interface
+    * 
+    * @return adLDAPGroups
+    */
+    public function group() {
+        if (!$this->groupClass) {
+            $this->groupClass = new adLDAPGroups($this);
+        }   
+        return $this->groupClass;
+    }
+    
+    /**
+    * The user class
+    * 
+    * @var adLDAPUsers
+    */
+    protected $userClass;
+    
+    /**
+    * Get the userclass interface
+    * 
+    * @return adLDAPUsers
+    */
+    public function user() {
+        if (!$this->userClass) {
+            $this->userClass = new adLDAPUsers($this);
+        }   
+        return $this->userClass;
+    }
+    
+    /**
+    * The folders class
+    * 
+    * @var adLDAPFolders
+    */
+    protected $folderClass;
+    
+    /**
+    * Get the folder class interface
+    * 
+    * @return adLDAPFolders
+    */
+    public function folder() {
+        if (!$this->folderClass) {
+            $this->folderClass = new adLDAPFolders($this);
+        }   
+        return $this->folderClass;
+    }
+    
+    /**
+    * The utils class
+    * 
+    * @var adLDAPUtils
+    */
+    protected $utilClass;
+    
+    /**
+    * Get the utils class interface
+    * 
+    * @return adLDAPUtils
+    */
+    public function utilities() {
+        if (!$this->utilClass) {
+            $this->utilClass = new adLDAPUtils($this);
+        }   
+        return $this->utilClass;
+    }
+    
+    /**
+    * The contacts class
+    * 
+    * @var adLDAPContacts
+    */
+    protected $contactClass;
+    
+    /**
+    * Get the contacts class interface
+    * 
+    * @return adLDAPContacts
+    */
+    public function contact() {
+        if (!$this->contactClass) {
+            $this->contactClass = new adLDAPContacts($this);
+        }   
+        return $this->contactClass;
+    }
+    
+    /**
+    * The exchange class
+    * 
+    * @var adLDAPExchange
+    */
+    protected $exchangeClass;
+    
+    /**
+    * Get the exchange class interface
+    * 
+    * @return adLDAPExchange
+    */
+    public function exchange() {
+        if (!$this->exchangeClass) {
+            $this->exchangeClass = new adLDAPExchange($this);
+        }   
+        return $this->exchangeClass;
+    }
+    
+    /**
+    * The computers class
+    * 
+    * @var adLDAPComputers
+    */
+    protected $computersClass;
+    
+    /**
+    * Get the computers class interface
+    * 
+    * @return adLDAPComputers
+    */
+    public function computer() {
+        if (!$this->computerClass) {
+            $this->computerClass = new adLDAPComputers($this);
+        }   
+        return $this->computerClass;
+    }
+
+    /**
+    * Getters and Setters
+    */
+    
+    /**
+    * Set the account suffix
+    * 
+    * @param string $accountSuffix
+    * @return void
+    */
+    public function setAccountSuffix($accountSuffix)
+    {
+          $this->accountSuffix = $accountSuffix;
+    }
+
+    /**
+    * Get the account suffix
+    * 
+    * @return string
+    */
+    public function getAccountSuffix()
+    {
+          return $this->accountSuffix;
+    }
+    
+    /**
+    * Set the domain controllers array
+    * 
+    * @param array $domainControllers
+    * @return void
+    */
+    public function setDomainControllers(array $domainControllers)
+    {
+          $this->domainControllers = $domainControllers;
+    }
+
+    /**
+    * Get the list of domain controllers
+    * 
+    * @return void
+    */
+    public function getDomainControllers()
+    {
+          return $this->domainControllers;
+    }
+    
+    /**
+    * Sets the port number your domain controller communicates over
+    * 
+    * @param int $adPort
+    */
+    public function setPort($adPort) 
+    { 
+        $this->adPort = $adPort; 
+    } 
+    
+    /**
+    * Gets the port number your domain controller communicates over
+    * 
+    * @return int
+    */
+    public function getPort() 
+    { 
+        return $this->adPort; 
+    } 
+    
+    /**
+    * Set the username of an account with higher priviledges
+    * 
+    * @param string $adminUsername
+    * @return void
+    */
+    public function setAdminUsername($adminUsername)
+    {
+          $this->adminUsername = $adminUsername;
+    }
+
+    /**
+    * Get the username of the account with higher priviledges
+    * 
+    * This will throw an exception for security reasons
+    */
+    public function getAdminUsername()
+    {
+          throw new adLDAPException('For security reasons you cannot access the domain administrator account details');
+    }
+    
+    /**
+    * Set the password of an account with higher priviledges
+    * 
+    * @param string $adminPassword
+    * @return void
+    */
+    public function setAdminPassword($adminPassword)
+    {
+          $this->adminPassword = $adminPassword;
+    }
+
+    /**
+    * Get the password of the account with higher priviledges
+    * 
+    * This will throw an exception for security reasons
+    */
+    public function getAdminPassword()
+    {
+          throw new adLDAPException('For security reasons you cannot access the domain administrator account details');
+    }
+    
+    /**
+    * Set whether to detect the true primary group
+    * 
+    * @param bool $realPrimaryGroup
+    * @return void
+    */
+    public function setRealPrimaryGroup($realPrimaryGroup)
+    {
+          $this->realPrimaryGroup = $realPrimaryGroup;
+    }
+
+    /**
+    * Get the real primary group setting
+    * 
+    * @return bool
+    */
+    public function getRealPrimaryGroup()
+    {
+          return $this->realPrimaryGroup;
+    }
+    
+    /**
+    * Set whether to use SSL
+    * 
+    * @param bool $useSSL
+    * @return void
+    */
+    public function setUseSSL($useSSL)
+    {
+          $this->useSSL = $useSSL;
+          // Set the default port correctly 
+          if($this->useSSL) { 
+            $this->setPort(self::ADLDAP_LDAPS_PORT); 
+          }
+          else { 
+            $this->setPort(self::ADLDAP_LDAP_PORT); 
+          } 
+    }
+
+    /**
+    * Get the SSL setting
+    * 
+    * @return bool
+    */
+    public function getUseSSL()
+    {
+          return $this->useSSL;
+    }
+    
+    /**
+    * Set whether to use TLS
+    * 
+    * @param bool $useTLS
+    * @return void
+    */
+    public function setUseTLS($useTLS)
+    {
+          $this->useTLS = $useTLS;
+    }
+
+    /**
+    * Get the TLS setting
+    * 
+    * @return bool
+    */
+    public function getUseTLS()
+    {
+          return $this->useTLS;
+    }
+    
+    /**
+    * Set whether to use SSO
+    * Requires ldap_sasl_bind support. Be sure --with-ldap-sasl is used when configuring PHP otherwise this function will be undefined. 
+    * 
+    * @param bool $useSSO
+    * @return void
+    */
+    public function setUseSSO($useSSO)
+    {
+          if ($useSSO === true && !$this->ldapSaslSupported()) {
+              throw new adLDAPException('No LDAP SASL support for PHP.  See: http://php.net/ldap_sasl_bind');
+          }
+          $this->useSSO = $useSSO;
+    }
+
+    /**
+    * Get the SSO setting
+    * 
+    * @return bool
+    */
+    public function getUseSSO()
+    {
+          return $this->useSSO;
+    }
+    
+    /**
+    * Set whether to lookup recursive groups
+    * 
+    * @param bool $recursiveGroups
+    * @return void
+    */
+    public function setRecursiveGroups($recursiveGroups)
+    {
+          $this->recursiveGroups = $recursiveGroups;
+    }
+
+    /**
+    * Get the recursive groups setting
+    * 
+    * @return bool
+    */
+    public function getRecursiveGroups()
+    {
+          return $this->recursiveGroups;
+    }
+
+    /**
+    * Default Constructor
+    * 
+    * Tries to bind to the AD domain over LDAP or LDAPs
+    * 
+    * @param array $options Array of options to pass to the constructor
+    * @throws Exception - if unable to bind to Domain Controller
+    * @return bool
+    */
+    function __construct($options = array()) {
+        // You can specifically overide any of the default configuration options setup above
+        if (count($options) > 0) {
+            if (array_key_exists("account_suffix",$options)){ $this->accountSuffix = $options["account_suffix"]; }
+            if (array_key_exists("base_dn",$options)){ $this->baseDn = $options["base_dn"]; }
+            if (array_key_exists("domain_controllers",$options)){ 
+                if (!is_array($options["domain_controllers"])) { 
+                    throw new adLDAPException('[domain_controllers] option must be an array');
+                }
+                $this->domainControllers = $options["domain_controllers"]; 
+            }
+            if (array_key_exists("admin_username",$options)){ $this->adminUsername = $options["admin_username"]; }
+            if (array_key_exists("admin_password",$options)){ $this->adminPassword = $options["admin_password"]; }
+            if (array_key_exists("real_primarygroup",$options)){ $this->realPrimaryGroup = $options["real_primarygroup"]; }
+            if (array_key_exists("use_ssl",$options)){ $this->setUseSSL($options["use_ssl"]); }
+            if (array_key_exists("use_tls",$options)){ $this->useTLS = $options["use_tls"]; }
+            if (array_key_exists("recursive_groups",$options)){ $this->recursiveGroups = $options["recursive_groups"]; }
+            if (array_key_exists("ad_port",$options)){ $this->setPort($options["ad_port"]); } 
+            if (array_key_exists("sso",$options)) { 
+                $this->setUseSSO($options["sso"]);
+                if (!$this->ldapSaslSupported()) {
+                    $this->setUseSSO(false);
+                }
+            } 
+        }
+        
+        if ($this->ldapSupported() === false) {
+            throw new adLDAPException('No LDAP support for PHP.  See: http://php.net/ldap');
+        }
+
+        return $this->connect();
+    }
+
+    /**
+    * Default Destructor
+    * 
+    * Closes the LDAP connection
+    * 
+    * @return void
+    */
+    function __destruct() { 
+        $this->close(); 
+    }
+
+    /**
+    * Connects and Binds to the Domain Controller
+    * 
+    * @return bool
+    */
+    public function connect() 
+    {
+        // Connect to the AD/LDAP server as the username/password
+        $domainController = $this->randomController();
+        if ($this->useSSL) {
+            $this->ldapConnection = ldap_connect("ldaps://" . $domainController, $this->adPort);
+        } else {
+            $this->ldapConnection = ldap_connect($domainController, $this->adPort);
+        }
+               
+        // Set some ldap options for talking to AD
+        ldap_set_option($this->ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3);
+        ldap_set_option($this->ldapConnection, LDAP_OPT_REFERRALS, 0);
+        
+        if ($this->useTLS) {
+            ldap_start_tls($this->ldapConnection);
+        }
+               
+        // Bind as a domain admin if they've set it up
+        if ($this->adminUsername !== NULL && $this->adminPassword !== NULL) {
+            $this->ldapBind = @ldap_bind($this->ldapConnection, $this->adminUsername . $this->accountSuffix, $this->adminPassword);
+            if (!$this->ldapBind) {
+                if ($this->useSSL && !$this->useTLS) {
+                    // If you have problems troubleshooting, remove the @ character from the ldapldapBind command above to get the actual error message
+                    throw new adLDAPException('Bind to Active Directory failed. Either the LDAPs connection failed or the login credentials are incorrect. AD said: ' . $this->getLastError());
+                }
+                else {
+                    throw new adLDAPException('Bind to Active Directory failed. Check the login credentials and/or server details. AD said: ' . $this->getLastError());
+                }
+            }
+        }
+        if ($this->useSSO && $_SERVER['REMOTE_USER'] && $this->adminUsername === null && $_SERVER['KRB5CCNAME']) {
+            putenv("KRB5CCNAME=" . $_SERVER['KRB5CCNAME']);  
+            $this->ldapBind = @ldap_sasl_bind($this->ldapConnection, NULL, NULL, "GSSAPI"); 
+            if (!$this->ldapBind){ 
+                throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->getLastError()); 
+            }
+            else {
+                return true;
+            }
+        }
+                
+        
+        if ($this->baseDn == NULL) {
+            $this->baseDn = $this->findBaseDn();   
+        }
+        
+        return true;
+    }
+    
+    /**
+    * Closes the LDAP connection
+    * 
+    * @return void
+    */
+    public function close() {
+        if ($this->ldapConnection) {
+            @ldap_close($this->ldapConnection);
+        }
+    }
+    
+    /**
+    * Validate a user's login credentials
+    * 
+    * @param string $username A user's AD username
+    * @param string $password A user's AD password
+    * @param bool optional $preventRebind
+    * @return bool
+    */
+    public function authenticate($username, $password, $preventRebind = false) {
+        // Prevent null binding
+        if ($username === NULL || $password === NULL) { return false; } 
+        if (empty($username) || empty($password)) { return false; }
+        
+        // Allow binding over SSO for Kerberos
+        if ($this->useSSO && $_SERVER['REMOTE_USER'] && $_SERVER['REMOTE_USER'] == $username && $this->adminUsername === NULL && $_SERVER['KRB5CCNAME']) { 
+            putenv("KRB5CCNAME=" . $_SERVER['KRB5CCNAME']);
+            $this->ldapBind = @ldap_sasl_bind($this->ldapConnection, NULL, NULL, "GSSAPI");
+            if (!$this->ldapBind) {
+                throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->getLastError());
+            }
+            else {
+                return true;
+            }
+        }
+        
+        // Bind as the user        
+        $ret = true;
+        $this->ldapBind = @ldap_bind($this->ldapConnection, $username . $this->accountSuffix, $password);
+        if (!$this->ldapBind){ 
+            $ret = false; 
+        }
+        
+        // Cnce we've checked their details, kick back into admin mode if we have it
+        if ($this->adminUsername !== NULL && !$preventRebind) {
+            $this->ldapBind = @ldap_bind($this->ldapConnection, $this->adminUsername . $this->accountSuffix , $this->adminPassword);
+            if (!$this->ldapBind){
+                // This should never happen in theory
+                throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->getLastError());
+            } 
+        } 
+        
+        return $ret;
+    }
+    
+    /**
+    * Find the Base DN of your domain controller
+    * 
+    * @return string
+    */
+    public function findBaseDn() 
+    {
+        $namingContext = $this->getRootDse(array('defaultnamingcontext'));   
+        return $namingContext[0]['defaultnamingcontext'][0];
+    }
+    
+    /**
+    * Get the RootDSE properties from a domain controller
+    * 
+    * @param array $attributes The attributes you wish to query e.g. defaultnamingcontext
+    * @return array
+    */
+    public function getRootDse($attributes = array("*", "+")) {
+        if (!$this->ldapBind){ return (false); }
+        
+        $sr = @ldap_read($this->ldapConnection, NULL, 'objectClass=*', $attributes);
+        $entries = @ldap_get_entries($this->ldapConnection, $sr);
+        return $entries;
+    }
+
+    /**
+    * Get last error from Active Directory
+    * 
+    * This function gets the last message from Active Directory
+    * This may indeed be a 'Success' message but if you get an unknown error
+    * it might be worth calling this function to see what errors were raised
+    * 
+    * return string
+    */
+    public function getLastError() {
+        return @ldap_error($this->ldapConnection);
+    }
+    
+    /**
+    * Detect LDAP support in php
+    * 
+    * @return bool
+    */    
+    protected function ldapSupported()
+    {
+        if (!function_exists('ldap_connect')) {
+            return false;   
+        }
+        return true;
+    }
+    
+    /**
+    * Detect ldap_sasl_bind support in PHP
+    * 
+    * @return bool
+    */
+    protected function ldapSaslSupported()
+    {
+        if (!function_exists('ldap_sasl_bind')) {
+            return false;
+        }
+        return true;
+    }
+    
+    /**
+    * Schema
+    * 
+    * @param array $attributes Attributes to be queried
+    * @return array
+    */    
+    public function adldap_schema($attributes){
+    
+        // LDAP doesn't like NULL attributes, only set them if they have values
+        // If you wish to remove an attribute you should set it to a space
+        // TO DO: Adapt user_modify to use ldap_mod_delete to remove a NULL attribute
+        $mod=array();
+        
+        // Check every attribute to see if it contains 8bit characters and then UTF8 encode them
+        array_walk($attributes, array($this, 'encode8bit'));
+
+        if ($attributes["address_city"]){ $mod["l"][0]=$attributes["address_city"]; }
+        if ($attributes["address_code"]){ $mod["postalCode"][0]=$attributes["address_code"]; }
+        //if ($attributes["address_country"]){ $mod["countryCode"][0]=$attributes["address_country"]; } // use country codes?
+        if ($attributes["address_country"]){ $mod["c"][0]=$attributes["address_country"]; }
+        if ($attributes["address_pobox"]){ $mod["postOfficeBox"][0]=$attributes["address_pobox"]; }
+        if ($attributes["address_state"]){ $mod["st"][0]=$attributes["address_state"]; }
+        if ($attributes["address_street"]){ $mod["streetAddress"][0]=$attributes["address_street"]; }
+        if ($attributes["company"]){ $mod["company"][0]=$attributes["company"]; }
+        if ($attributes["change_password"]){ $mod["pwdLastSet"][0]=0; }
+        if ($attributes["department"]){ $mod["department"][0]=$attributes["department"]; }
+        if ($attributes["description"]){ $mod["description"][0]=$attributes["description"]; }
+        if ($attributes["display_name"]){ $mod["displayName"][0]=$attributes["display_name"]; }
+        if ($attributes["email"]){ $mod["mail"][0]=$attributes["email"]; }
+        if ($attributes["expires"]){ $mod["accountExpires"][0]=$attributes["expires"]; } //unix epoch format?
+        if ($attributes["firstname"]){ $mod["givenName"][0]=$attributes["firstname"]; }
+        if ($attributes["home_directory"]){ $mod["homeDirectory"][0]=$attributes["home_directory"]; }
+        if ($attributes["home_drive"]){ $mod["homeDrive"][0]=$attributes["home_drive"]; }
+        if ($attributes["initials"]){ $mod["initials"][0]=$attributes["initials"]; }
+        if ($attributes["logon_name"]){ $mod["userPrincipalName"][0]=$attributes["logon_name"]; }
+        if ($attributes["manager"]){ $mod["manager"][0]=$attributes["manager"]; }  //UNTESTED ***Use DistinguishedName***
+        if ($attributes["office"]){ $mod["physicalDeliveryOfficeName"][0]=$attributes["office"]; }
+        if ($attributes["password"]){ $mod["unicodePwd"][0]=$this->user()->encodePassword($attributes["password"]); }
+        if ($attributes["profile_path"]){ $mod["profilepath"][0]=$attributes["profile_path"]; }
+        if ($attributes["script_path"]){ $mod["scriptPath"][0]=$attributes["script_path"]; }
+        if ($attributes["surname"]){ $mod["sn"][0]=$attributes["surname"]; }
+        if ($attributes["title"]){ $mod["title"][0]=$attributes["title"]; }
+        if ($attributes["telephone"]){ $mod["telephoneNumber"][0]=$attributes["telephone"]; }
+        if ($attributes["mobile"]){ $mod["mobile"][0]=$attributes["mobile"]; }
+        if ($attributes["pager"]){ $mod["pager"][0]=$attributes["pager"]; }
+        if ($attributes["ipphone"]){ $mod["ipphone"][0]=$attributes["ipphone"]; }
+        if ($attributes["web_page"]){ $mod["wWWHomePage"][0]=$attributes["web_page"]; }
+        if ($attributes["fax"]){ $mod["facsimileTelephoneNumber"][0]=$attributes["fax"]; }
+        if ($attributes["enabled"]){ $mod["userAccountControl"][0]=$attributes["enabled"]; }
+        if ($attributes["homephone"]){ $mod["homephone"][0]=$attributes["homephone"]; }
+        
+        // Distribution List specific schema
+        if ($attributes["group_sendpermission"]){ $mod["dlMemSubmitPerms"][0]=$attributes["group_sendpermission"]; }
+        if ($attributes["group_rejectpermission"]){ $mod["dlMemRejectPerms"][0]=$attributes["group_rejectpermission"]; }
+        
+        // Exchange Schema
+        if ($attributes["exchange_homemdb"]){ $mod["homeMDB"][0]=$attributes["exchange_homemdb"]; }
+        if ($attributes["exchange_mailnickname"]){ $mod["mailNickname"][0]=$attributes["exchange_mailnickname"]; }
+        if ($attributes["exchange_proxyaddress"]){ $mod["proxyAddresses"][0]=$attributes["exchange_proxyaddress"]; }
+        if ($attributes["exchange_usedefaults"]){ $mod["mDBUseDefaults"][0]=$attributes["exchange_usedefaults"]; }
+        if ($attributes["exchange_policyexclude"]){ $mod["msExchPoliciesExcluded"][0]=$attributes["exchange_policyexclude"]; }
+        if ($attributes["exchange_policyinclude"]){ $mod["msExchPoliciesIncluded"][0]=$attributes["exchange_policyinclude"]; }       
+        if ($attributes["exchange_addressbook"]){ $mod["showInAddressBook"][0]=$attributes["exchange_addressbook"]; }    
+        if ($attributes["exchange_altrecipient"]){ $mod["altRecipient"][0]=$attributes["exchange_altrecipient"]; } 
+        if ($attributes["exchange_deliverandredirect"]){ $mod["deliverAndRedirect"][0]=$attributes["exchange_deliverandredirect"]; }    
+        
+        // This schema is designed for contacts
+        if ($attributes["exchange_hidefromlists"]){ $mod["msExchHideFromAddressLists"][0]=$attributes["exchange_hidefromlists"]; }
+        if ($attributes["contact_email"]){ $mod["targetAddress"][0]=$attributes["contact_email"]; }
+        
+        //echo ("<pre>"); print_r($mod);
+        /*
+        // modifying a name is a bit fiddly
+        if ($attributes["firstname"] && $attributes["surname"]){
+            $mod["cn"][0]=$attributes["firstname"]." ".$attributes["surname"];
+            $mod["displayname"][0]=$attributes["firstname"]." ".$attributes["surname"];
+            $mod["name"][0]=$attributes["firstname"]." ".$attributes["surname"];
+        }
+        */
+
+        if (count($mod)==0){ return (false); }
+        return ($mod);
+    }
+    
+    /**
+    * Convert 8bit characters e.g. accented characters to UTF8 encoded characters
+    */
+    protected function encode8Bit(&$item, $key) {
+        $encode = false;
+        if (is_string($item)) {
+            for ($i=0; $i<strlen($item); $i++) {
+                if (ord($item[$i]) >> 7) {
+                    $encode = true;
+                }
+            }
+        }
+        if ($encode === true && $key != 'password') {
+            $item = utf8_encode($item);   
+        }
+    }
+    
+    /**
+    * Select a random domain controller from your domain controller array
+    * 
+    * @return string
+    */
+    protected function randomController() 
+    {
+        mt_srand(doubleval(microtime()) * 100000000); // For older PHP versions
+        /*if (sizeof($this->domainControllers) > 1) {
+            $adController = $this->domainControllers[array_rand($this->domainControllers)]; 
+            // Test if the controller is responding to pings
+            $ping = $this->pingController($adController); 
+            if ($ping === false) { 
+                // Find the current key in the domain controllers array
+                $key = array_search($adController, $this->domainControllers);
+                // Remove it so that we don't end up in a recursive loop
+                unset($this->domainControllers[$key]);
+                // Select a new controller
+                return $this->randomController(); 
+            }
+            else { 
+                return ($adController); 
+            }
+        } */
+        return $this->domainControllers[array_rand($this->domainControllers)];
+    }  
+    
+    /** 
+    * Test basic connectivity to controller 
+    * 
+    * @return bool
+    */ 
+    protected function pingController($host) {
+        $port = $this->adPort; 
+        fsockopen($host, $port, $errno, $errstr, 10); 
+        if ($errno > 0) {
+            return false;
+        }
+        return true;
+    }
+
+}
+
+/**
+* adLDAP Exception Handler
+* 
+* Exceptions of this type are thrown on bind failure or when SSL is required but not configured
+* Example:
+* try {
+*   $adldap = new adLDAP();
+* }
+* catch (adLDAPException $e) {
+*   echo $e;
+*   exit();
+* }
+*/
+class adLDAPException extends Exception {}
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPComputers.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPComputers.php
new file mode 100644
index 0000000..aabd88f
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPComputers.php
@@ -0,0 +1,153 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Computers
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPComputerCollection.php');  
+
+/**
+* COMPUTER MANAGEMENT FUNCTIONS
+*/
+class adLDAPComputers {
+    
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    /**
+    * Get information about a specific computer. Returned in a raw array format from AD
+    * 
+    * @param string $computerName The name of the computer
+    * @param array $fields Attributes to return
+    * @return array
+    */
+    public function info($computerName, $fields = NULL)
+    {
+        if ($computerName === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+
+        $filter = "(&(objectClass=computer)(cn=" . $computerName . "))";
+        if ($fields === NULL) { 
+            $fields = array("memberof","cn","displayname","dnshostname","distinguishedname","objectcategory","operatingsystem","operatingsystemservicepack","operatingsystemversion"); 
+        }
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+        
+        return $entries;
+    }
+    
+    /**
+    * Find information about the computers. Returned in a raw array format from AD
+    * 
+    * @param string $computerName The name of the computer
+    * @param array $fields Array of parameters to query
+    * @return mixed
+    */
+    public function infoCollection($computerName, $fields = NULL)
+    {
+        if ($computerName === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        $info = $this->info($computerName, $fields);
+        
+        if ($info !== false) {
+            $collection = new adLDAPComputerCollection($info, $this->adldap);
+            return $collection;
+        }
+        return false;
+    }
+    
+    /**
+    * Check if a computer is in a group
+    * 
+    * @param string $computerName The name of the computer
+    * @param string $group The group to check
+    * @param bool $recursive Whether to check recursively
+    * @return array
+    */
+    public function inGroup($computerName, $group, $recursive = NULL)
+    {
+        if ($computerName === NULL) { return false; }
+        if ($group === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // use the default option if they haven't set it
+
+        //get a list of the groups
+        $groups = $this->groups($computerName, array("memberof"), $recursive);
+
+        //return true if the specified group is in the group list
+        if (in_array($group, $groups)){ 
+            return true; 
+        }
+
+        return false;
+    }
+    
+    /**
+    * Get the groups a computer is in
+    * 
+    * @param string $computerName The name of the computer
+    * @param bool $recursive Whether to check recursively
+    * @return array
+    */
+    public function groups($computerName, $recursive = NULL)
+    {
+        if ($computerName === NULL) { return false; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+        if (!$this->adldap->getLdapBind()){ return false; }
+
+        //search the directory for their information
+        $info = @$this->info($computerName, array("memberof", "primarygroupid"));
+        $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); //presuming the entry returned is our guy (unique usernames)
+
+        if ($recursive === true) {
+            foreach ($groups as $id => $groupName){
+              $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
+              $groups = array_merge($groups, $extraGroups);
+            }
+        }
+
+        return $groups;
+    }
+    
+}
+?>
\ No newline at end of file
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPContacts.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPContacts.php
new file mode 100644
index 0000000..42a0d75
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPContacts.php
@@ -0,0 +1,294 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Contacts
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPContactCollection.php');
+
+class adLDAPContacts {
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    //*****************************************************************************************************************
+    // CONTACT FUNCTIONS
+    // * Still work to do in this area, and new functions to write
+    
+    /**
+    * Create a contact
+    * 
+    * @param array $attributes The attributes to set to the contact
+    * @return bool
+    */
+    public function create($attributes)
+    {
+        // Check for compulsory fields
+        if (!array_key_exists("display_name", $attributes)) { return "Missing compulsory field [display_name]"; }
+        if (!array_key_exists("email", $attributes)) { return "Missing compulsory field [email]"; }
+        if (!array_key_exists("container", $attributes)) { return "Missing compulsory field [container]"; }
+        if (!is_array($attributes["container"])) { return "Container attribute must be an array."; }
+
+        // Translate the schema
+        $add = $this->adldap->adldap_schema($attributes);
+        
+        // Additional stuff only used for adding contacts
+        $add["cn"][0] = $attributes["display_name"];
+        $add["objectclass"][0] = "top";
+        $add["objectclass"][1] = "person";
+        $add["objectclass"][2] = "organizationalPerson";
+        $add["objectclass"][3] = "contact"; 
+        if (!isset($attributes['exchange_hidefromlists'])) {
+            $add["msExchHideFromAddressLists"][0] = "TRUE";
+        }
+
+        // Determine the container
+        $attributes["container"] = array_reverse($attributes["container"]);
+        $container= "OU=" . implode(",OU=", $attributes["container"]);
+
+        // Add the entry
+        $result = @ldap_add($this->adldap->getLdapConnection(), "CN=" . $this->adldap->utilities()->escapeCharacters($add["cn"][0]) . ", " . $container . "," . $this->adldap->getBaseDn(), $add);
+        if ($result != true) { 
+            return false; 
+        }
+        
+        return true;
+    }  
+    
+    /**
+    * Determine the list of groups a contact is a member of
+    * 
+    * @param string $distinguisedname The full DN of a contact
+    * @param bool $recursive Recursively check groups
+    * @return array
+    */
+    public function groups($distinguishedName, $recursive = NULL)
+    {
+        if ($distinguishedName === NULL) { return false; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+        if (!$this->adldap->getLdapBind()){ return false; }
+        
+        // Search the directory for their information
+        $info = @$this->info($distinguishedName, array("memberof", "primarygroupid"));
+        $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); //presuming the entry returned is our contact
+
+        if ($recursive === true){
+            foreach ($groups as $id => $groupName){
+                $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
+                $groups = array_merge($groups, $extraGroups);
+            }
+        }
+        
+        return $groups;
+    }
+    
+    /**
+    * Get contact information. Returned in a raw array format from AD
+    * 
+    * @param string $distinguisedname The full DN of a contact
+    * @param array $fields Attributes to be returned
+    * @return array
+    */
+    public function info($distinguishedName, $fields = NULL)
+    {
+        if ($distinguishedName === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+
+        $filter = "distinguishedName=" . $distinguishedName;
+        if ($fields === NULL) { 
+            $fields = array("distinguishedname", "mail", "memberof", "department", "displayname", "telephonenumber", "primarygroupid", "objectsid"); 
+        }
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+        
+        if ($entries[0]['count'] >= 1) {
+            // AD does not return the primary group in the ldap query, we may need to fudge it
+            if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["primarygroupid"][0])){
+                //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
+                $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
+            } else {
+                $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
+            }
+        }
+        
+        $entries[0]["memberof"]["count"]++;
+        return $entries;
+    }
+    
+    /**
+    * Find information about the contacts. Returned in a raw array format from AD
+    * 
+    * @param string $distinguishedName The full DN of a contact 
+    * @param array $fields Array of parameters to query
+    * @return mixed
+    */
+    public function infoCollection($distinguishedName, $fields = NULL)
+    {
+        if ($distinguishedName === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        $info = $this->info($distinguishedName, $fields);
+        
+        if ($info !== false) {
+            $collection = new adLDAPContactCollection($info, $this->adldap);
+            return $collection;
+        }
+        return false;
+    }
+    
+    /**
+    * Determine if a contact is a member of a group
+    * 
+    * @param string $distinguisedName The full DN of a contact
+    * @param string $group The group name to query
+    * @param bool $recursive Recursively check groups
+    * @return bool
+    */
+    public function inGroup($distinguisedName, $group, $recursive = NULL)
+    {
+        if ($distinguisedName === NULL) { return false; }
+        if ($group === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+        
+        // Get a list of the groups
+        $groups = $this->groups($distinguisedName, array("memberof"), $recursive);
+        
+        // Return true if the specified group is in the group list
+        if (in_array($group, $groups)){ 
+            return true; 
+        }
+
+        return false;
+    }          
+    
+    /**
+    * Modify a contact
+    * 
+    * @param string $distinguishedName The contact to query
+    * @param array $attributes The attributes to modify.  Note if you set the enabled attribute you must not specify any other attributes
+    * @return bool
+    */
+    public function modify($distinguishedName, $attributes) {
+        if ($distinguishedName === NULL) { return "Missing compulsory field [distinguishedname]"; }
+        
+        // Translate the update to the LDAP schema                
+        $mod = $this->adldap->adldap_schema($attributes);
+        
+        // Check to see if this is an enabled status update
+        if (!$mod) { 
+            return false; 
+        }
+        
+        // Do the update
+        $result = ldap_modify($this->adldap->getLdapConnection(), $distinguishedName, $mod);
+        if ($result == false) { 
+            return false; 
+        }
+        
+        return true;
+    }
+    
+    /**
+    * Delete a contact
+    * 
+    * @param string $distinguishedName The contact dn to delete (please be careful here!)
+    * @return array
+    */
+    public function delete($distinguishedName) 
+    {
+        $result = $this->folder()->delete($distinguishedName);
+        if ($result != true) { 
+            return false; 
+        }       
+        return true;
+    }
+    
+    /**
+    * Return a list of all contacts
+    * 
+    * @param bool $includeDescription Include a description of a contact
+    * @param string $search The search parameters
+    * @param bool $sorted Whether to sort the results
+    * @return array
+    */
+    public function all($includeDescription = false, $search = "*", $sorted = true) {
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        // Perform the search and grab all their details
+        $filter = "(&(objectClass=contact)(cn=" . $search . "))";
+        $fields = array("displayname","distinguishedname");           
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        $usersArray = array();
+        for ($i=0; $i<$entries["count"]; $i++){
+            if ($includeDescription && strlen($entries[$i]["displayname"][0])>0){
+                $usersArray[$entries[$i]["distinguishedname"][0]] = $entries[$i]["displayname"][0];
+            } elseif ($includeDescription){
+                $usersArray[$entries[$i]["distinguishedname"][0]] = $entries[$i]["distinguishedname"][0];
+            } else {
+                array_push($usersArray, $entries[$i]["distinguishedname"][0]);
+            }
+        }
+        if ($sorted) { 
+            asort($usersArray); 
+        }
+        return $usersArray;
+    }
+    
+    /**
+    * Mail enable a contact
+    * Allows email to be sent to them through Exchange
+    * 
+    * @param string $distinguishedname The contact to mail enable
+    * @param string $emailaddress The email address to allow emails to be sent through
+    * @param string $mailnickname The mailnickname for the contact in Exchange.  If NULL this will be set to the display name
+    * @return bool
+    */
+    public function contactMailEnable($distinguishedName, $emailAddress, $mailNickname = NULL){
+        return $this->adldap->exchange()->contactMailEnable($distinguishedName, $emailAddress, $mailNickname);
+    }
+    
+    
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPExchange.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPExchange.php
new file mode 100644
index 0000000..d70aac7
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPExchange.php
@@ -0,0 +1,390 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Exchange
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+
+/**
+* MICROSOFT EXCHANGE FUNCTIONS
+*/
+class adLDAPExchange {
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    /**
+    * Create an Exchange account
+    * 
+    * @param string $username The username of the user to add the Exchange account to
+    * @param array $storageGroup The mailbox, Exchange Storage Group, for the user account, this must be a full CN
+    *                            If the storage group has a different base_dn to the adLDAP configuration, set it using $base_dn
+    * @param string $emailAddress The primary email address to add to this user
+    * @param string $mailNickname The mail nick name.  If mail nickname is blank, the username will be used
+    * @param bool $mdbUseDefaults Indicates whether the store should use the default quota, rather than the per-mailbox quota.
+    * @param string $baseDn Specify an alternative base_dn for the Exchange storage group
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function createMailbox($username, $storageGroup, $emailAddress, $mailNickname=NULL, $useDefaults=TRUE, $baseDn=NULL, $isGUID=false)
+    {
+        if ($username === NULL){ return "Missing compulsory field [username]"; }     
+        if ($storageGroup === NULL) { return "Missing compulsory array [storagegroup]"; }
+        if (!is_array($storageGroup)) { return "[storagegroup] must be an array"; }
+        if ($emailAddress === NULL) { return "Missing compulsory field [emailAddress]"; }
+        
+        if ($baseDn === NULL) {
+            $baseDn = $this->adldap->getBaseDn();   
+        }
+        
+        $container = "CN=" . implode(",CN=", $storageGroup);
+        
+        if ($mailNickname === NULL) { 
+            $mailNickname = $username; 
+        }
+        $mdbUseDefaults = $this->adldap->utilities()->boolToString($useDefaults);
+        
+        $attributes = array(
+            'exchange_homemdb'=>$container.",".$baseDn,
+            'exchange_proxyaddress'=>'SMTP:' . $emailAddress,
+            'exchange_mailnickname'=>$mailNickname,
+            'exchange_usedefaults'=>$mdbUseDefaults
+        );
+        $result = $this->adldap->user()->modify($username, $attributes, $isGUID);
+        if ($result == false) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Add an X400 address to Exchange
+    * See http://tools.ietf.org/html/rfc1685 for more information.
+    * An X400 Address looks similar to this X400:c=US;a= ;p=Domain;o=Organization;s=Doe;g=John;
+    * 
+    * @param string $username The username of the user to add the X400 to to
+    * @param string $country Country
+    * @param string $admd Administration Management Domain
+    * @param string $pdmd Private Management Domain (often your AD domain)
+    * @param string $org Organization
+    * @param string $surname Surname
+    * @param string $givenName Given name
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function addX400($username, $country, $admd, $pdmd, $org, $surname, $givenName, $isGUID=false) 
+    {
+        if ($username === NULL){ return "Missing compulsory field [username]"; }     
+        
+        $proxyValue = 'X400:';
+            
+        // Find the dn of the user
+        $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+        if ($user[0]["dn"] === NULL) { return false; }
+        $userDn = $user[0]["dn"];
+        
+        // We do not have to demote an email address from the default so we can just add the new proxy address
+        $attributes['exchange_proxyaddress'] = $proxyValue . 'c=' . $country . ';a=' . $admd . ';p=' . $pdmd . ';o=' . $org . ';s=' . $surname . ';g=' . $givenName . ';';
+       
+        // Translate the update to the LDAP schema                
+        $add = $this->adldap->adldap_schema($attributes);
+        
+        if (!$add) { return false; }
+        
+        // Do the update
+        // Take out the @ to see any errors, usually this error might occur because the address already
+        // exists in the list of proxyAddresses
+        $result = @ldap_mod_add($this->adldap->getLdapConnection(), $userDn, $add);
+        if ($result == false) { 
+            return false; 
+        }
+        
+        return true;
+    }
+    
+    /**
+    * Add an address to Exchange
+    * 
+    * @param string $username The username of the user to add the Exchange account to
+    * @param string $emailAddress The email address to add to this user
+    * @param bool $default Make this email address the default address, this is a bit more intensive as we have to demote any existing default addresses
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function addAddress($username, $emailAddress, $default = FALSE, $isGUID = false) 
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }     
+        if ($emailAddress === NULL) { return "Missing compulsory fields [emailAddress]"; }
+        
+        $proxyValue = 'smtp:';
+        if ($default === true) {
+            $proxyValue = 'SMTP:';
+        }
+              
+        // Find the dn of the user
+        $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+        if ($user[0]["dn"] === NULL){ return false; }
+        $userDn = $user[0]["dn"];
+        
+        // We need to scan existing proxy addresses and demote the default one
+        if (is_array($user[0]["proxyaddresses"]) && $default === true) {
+            $modAddresses = array();
+            for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) {
+                if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false) {
+                    $user[0]['proxyaddresses'][$i] = str_replace('SMTP:', 'smtp:', $user[0]['proxyaddresses'][$i]);
+                }
+                if ($user[0]['proxyaddresses'][$i] != '') {
+                    $modAddresses['proxyAddresses'][$i] = $user[0]['proxyaddresses'][$i];
+                }
+            }
+            $modAddresses['proxyAddresses'][(sizeof($user[0]['proxyaddresses'])-1)] = 'SMTP:' . $emailAddress;
+            
+            $result = @ldap_mod_replace($this->adldap->getLdapConnection(), $userDn, $modAddresses);
+            if ($result == false) { 
+                return false; 
+            }
+            
+            return true;
+        }
+        else {
+            // We do not have to demote an email address from the default so we can just add the new proxy address
+            $attributes['exchange_proxyaddress'] = $proxyValue . $emailAddress;
+            
+            // Translate the update to the LDAP schema                
+            $add = $this->adldap->adldap_schema($attributes);
+            
+            if (!$add) { 
+                return false; 
+            }
+            
+            // Do the update
+            // Take out the @ to see any errors, usually this error might occur because the address already
+            // exists in the list of proxyAddresses
+            $result = @ldap_mod_add($this->adldap->getLdapConnection(), $userDn,$add);
+            if ($result == false) { 
+                return false; 
+            }
+            
+            return true;
+        }
+    }
+    
+    /**
+    * Remove an address to Exchange
+    * If you remove a default address the account will no longer have a default, 
+    * we recommend changing the default address first
+    * 
+    * @param string $username The username of the user to add the Exchange account to
+    * @param string $emailAddress The email address to add to this user
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function deleteAddress($username, $emailAddress, $isGUID=false) 
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }     
+        if ($emailAddress === NULL) { return "Missing compulsory fields [emailAddress]"; }
+        
+        // Find the dn of the user
+        $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+        if ($user[0]["dn"] === NULL) { return false; }
+        $userDn = $user[0]["dn"];
+        
+        if (is_array($user[0]["proxyaddresses"])) {
+            $mod = array();
+            for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) {
+                if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false && $user[0]['proxyaddresses'][$i] == 'SMTP:' . $emailAddress) {
+                    $mod['proxyAddresses'][0] = 'SMTP:' . $emailAddress;
+                }
+                elseif (strstr($user[0]['proxyaddresses'][$i], 'smtp:') !== false && $user[0]['proxyaddresses'][$i] == 'smtp:' . $emailAddress) {
+                    $mod['proxyAddresses'][0] = 'smtp:' . $emailAddress;
+                }
+            }
+            
+            $result = @ldap_mod_del($this->adldap->getLdapConnection(), $userDn,$mod);
+            if ($result == false) { 
+                return false; 
+            }
+            
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+    /**
+    * Change the default address
+    * 
+    * @param string $username The username of the user to add the Exchange account to
+    * @param string $emailAddress The email address to make default
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function primaryAddress($username, $emailAddress, $isGUID = false) 
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }     
+        if ($emailAddress === NULL) { return "Missing compulsory fields [emailAddress]"; }
+        
+        // Find the dn of the user
+        $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+        if ($user[0]["dn"] === NULL){ return false; }
+        $userDn = $user[0]["dn"];
+        
+        if (is_array($user[0]["proxyaddresses"])) {
+            $modAddresses = array();
+            for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) {
+                if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false) {
+                    $user[0]['proxyaddresses'][$i] = str_replace('SMTP:', 'smtp:', $user[0]['proxyaddresses'][$i]);
+                }
+                if ($user[0]['proxyaddresses'][$i] == 'smtp:' . $emailAddress) {
+                    $user[0]['proxyaddresses'][$i] = str_replace('smtp:', 'SMTP:', $user[0]['proxyaddresses'][$i]);
+                }
+                if ($user[0]['proxyaddresses'][$i] != '') {
+                    $modAddresses['proxyAddresses'][$i] = $user[0]['proxyaddresses'][$i];
+                }
+            }
+            
+            $result = @ldap_mod_replace($this->adldap->getLdapConnection(), $userDn, $modAddresses);
+            if ($result == false) { 
+                return false; 
+            }
+            
+            return true;
+        }
+        
+    }
+    
+    /**
+    * Mail enable a contact
+    * Allows email to be sent to them through Exchange
+    * 
+    * @param string $distinguishedName The contact to mail enable
+    * @param string $emailAddress The email address to allow emails to be sent through
+    * @param string $mailNickname The mailnickname for the contact in Exchange.  If NULL this will be set to the display name
+    * @return bool
+    */
+    public function contactMailEnable($distinguishedName, $emailAddress, $mailNickname = NULL)
+    {
+        if ($distinguishedName === NULL) { return "Missing compulsory field [distinguishedName]"; }   
+        if ($emailAddress === NULL) { return "Missing compulsory field [emailAddress]"; }  
+        
+        if ($mailNickname !== NULL) {
+            // Find the dn of the user
+            $user = $this->adldap->contact()->info($distinguishedName, array("cn","displayname"));
+            if ($user[0]["displayname"] === NULL) { return false; }
+            $mailNickname = $user[0]['displayname'][0];
+        }
+        
+        $attributes = array("email"=>$emailAddress,"contact_email"=>"SMTP:" . $emailAddress,"exchange_proxyaddress"=>"SMTP:" . $emailAddress,"exchange_mailnickname" => $mailNickname);
+         
+        // Translate the update to the LDAP schema                
+        $mod = $this->adldap->adldap_schema($attributes);
+        
+        // Check to see if this is an enabled status update
+        if (!$mod) { return false; }
+        
+        // Do the update
+        $result = ldap_modify($this->adldap->getLdapConnection(), $distinguishedName, $mod);
+        if ($result == false) { return false; }
+        
+        return true;
+    }
+    
+    /**
+    * Returns a list of Exchange Servers in the ConfigurationNamingContext of the domain
+    * 
+    * @param array $attributes An array of the AD attributes you wish to return
+    * @return array
+    */
+    public function servers($attributes = array('cn','distinguishedname','serialnumber')) 
+    {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        
+        $configurationNamingContext = $this->adldap->getRootDse(array('configurationnamingcontext'));
+        $sr = @ldap_search($this->adldap->getLdapConnection(), $configurationNamingContext[0]['configurationnamingcontext'][0],'(&(objectCategory=msExchExchangeServer))', $attributes);
+        $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+        return $entries;
+    }
+    
+    /**
+    * Returns a list of Storage Groups in Exchange for a given mail server
+    * 
+    * @param string $exchangeServer The full DN of an Exchange server.  You can use exchange_servers() to find the DN for your server
+    * @param array $attributes An array of the AD attributes you wish to return
+    * @param bool $recursive If enabled this will automatically query the databases within a storage group
+    * @return array
+    */
+    public function storageGroups($exchangeServer, $attributes = array('cn','distinguishedname'), $recursive = NULL) 
+    {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        if ($exchangeServer === NULL) { return "Missing compulsory field [exchangeServer]"; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); }
+
+        $filter = '(&(objectCategory=msExchStorageGroup))';
+        $sr = @ldap_search($this->adldap->getLdapConnection(), $exchangeServer, $filter, $attributes);
+        $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        if ($recursive === true) {
+            for ($i=0; $i<$entries['count']; $i++) {
+                $entries[$i]['msexchprivatemdb'] = $this->storageDatabases($entries[$i]['distinguishedname'][0]);       
+            }
+        }
+        
+        return $entries;
+    }
+    
+    /**
+    * Returns a list of Databases within any given storage group in Exchange for a given mail server
+    * 
+    * @param string $storageGroup The full DN of an Storage Group.  You can use exchange_storage_groups() to find the DN 
+    * @param array $attributes An array of the AD attributes you wish to return
+    * @return array
+    */
+    public function storageDatabases($storageGroup, $attributes = array('cn','distinguishedname','displayname')) {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        if ($storageGroup === NULL) { return "Missing compulsory field [storageGroup]"; }
+        
+        $filter = '(&(objectCategory=msExchPrivateMDB))';
+        $sr = @ldap_search($this->adldap->getLdapConnection(), $storageGroup, $filter, $attributes);
+        $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+        return $entries;
+    }
+}
+?>
\ No newline at end of file
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPFolders.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPFolders.php
new file mode 100644
index 0000000..67b1474
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPFolders.php
@@ -0,0 +1,179 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Folders
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+
+/**
+* FOLDER / OU MANAGEMENT FUNCTIONS
+*/
+class adLDAPFolders {
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    /**
+    * Delete a distinguished name from Active Directory
+    * You should never need to call this yourself, just use the wrapper functions user_delete and contact_delete
+    *
+    * @param string $dn The distinguished name to delete
+    * @return bool
+    */
+    public function delete($dn){ 
+        $result = ldap_delete($this->adldap->getLdapConnection(), $dn);
+        if ($result != true) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Returns a folder listing for a specific OU
+    * See http://adldap.sourceforge.net/wiki/doku.php?id=api_folder_functions
+    * 
+    * @param array $folderName An array to the OU you wish to list. 
+    *                           If set to NULL will list the root, strongly recommended to set 
+    *                           $recursive to false in that instance!
+    * @param string $dnType The type of record to list.  This can be ADLDAP_FOLDER or ADLDAP_CONTAINER.
+    * @param bool $recursive Recursively search sub folders
+    * @param bool $type Specify a type of object to search for
+    * @return array
+    */
+    public function listing($folderName = NULL, $dnType = adLDAP::ADLDAP_FOLDER, $recursive = NULL, $type = NULL) 
+    {
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+        if (!$this->adldap->getLdapBind()) { return false; }
+
+        $filter = '(&';
+        if ($type !== NULL) {
+            switch ($type) {
+                case 'contact':
+                    $filter .= '(objectClass=contact)';
+                    break;
+                case 'computer':
+                    $filter .= '(objectClass=computer)';
+                    break;
+                case 'group':
+                    $filter .= '(objectClass=group)';
+                    break;
+                case 'folder':
+                    $filter .= '(objectClass=organizationalUnit)';
+                    break;
+                case 'container':
+                    $filter .= '(objectClass=container)';
+                    break;
+                case 'domain':
+                    $filter .= '(objectClass=builtinDomain)';
+                    break;
+                default:
+                    $filter .= '(objectClass=user)';
+                    break;   
+            }
+        }
+        else {
+            $filter .= '(objectClass=*)';   
+        }
+        // If the folder name is null then we will search the root level of AD
+        // This requires us to not have an OU= part, just the base_dn
+        $searchOu = $this->adldap->getBaseDn();
+        if (is_array($folderName)) {
+            $ou = $dnType . "=" . implode("," . $dnType . "=", $folderName);
+            $filter .= '(!(distinguishedname=' . $ou . ',' . $this->adldap->getBaseDn() . ')))';
+            $searchOu = $ou . ',' . $this->adldap->getBaseDn();
+        }
+        else {
+            $filter .= '(!(distinguishedname=' . $this->adldap->getBaseDn() . ')))';
+        }
+
+        if ($recursive === true) {
+            $sr = ldap_search($this->adldap->getLdapConnection(), $searchOu, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
+            $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+            if (is_array($entries)) {
+                return $entries;
+            }
+        }
+        else {
+            $sr = ldap_list($this->adldap->getLdapConnection(), $searchOu, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
+            $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+            if (is_array($entries)) {
+                return $entries;
+            }
+        }
+        
+        return false;
+    }
+
+    /**
+    * Create an organizational unit
+    * 
+    * @param array $attributes Default attributes of the ou
+    * @return bool
+    */
+    public function create($attributes)
+    {
+        if (!is_array($attributes)){ return "Attributes must be an array"; }
+        if (!is_array($attributes["container"])) { return "Container attribute must be an array."; }
+        if (!array_key_exists("ou_name",$attributes)) { return "Missing compulsory field [ou_name]"; }
+        if (!array_key_exists("container",$attributes)) { return "Missing compulsory field [container]"; }
+        
+        $attributes["container"] = array_reverse($attributes["container"]);
+
+        $add=array();
+        $add["objectClass"] = "organizationalUnit";
+        $add["OU"] = $attributes['ou_name'];
+        $containers = "";
+        if (count($attributes['container']) > 0) {
+            $containers = "OU=" . implode(",OU=", $attributes["container"]) . ",";
+        }
+
+        $containers = "OU=" . implode(",OU=", $attributes["container"]);
+        $result = ldap_add($this->adldap->getLdapConnection(), "OU=" . $add["OU"] . ", " . $containers . $this->adldap->getBaseDn(), $add);
+        if ($result != true) { 
+            return false; 
+        }
+        
+        return true;
+    }
+    
+}
+
+?>
\ No newline at end of file
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPGroups.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPGroups.php
new file mode 100644
index 0000000..94bc048
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPGroups.php
@@ -0,0 +1,631 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Groups
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPGroupCollection.php');
+
+/**
+* GROUP FUNCTIONS
+*/
+class adLDAPGroups {
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    /**
+    * Add a group to a group
+    * 
+    * @param string $parent The parent group name
+    * @param string $child The child group name
+    * @return bool
+    */
+    public function addGroup($parent,$child){
+
+        // Find the parent group's dn
+        $parentGroup = $this->ginfo($parent, array("cn"));
+        if ($parentGroup[0]["dn"] === NULL){
+            return false; 
+        }
+        $parentDn = $parentGroup[0]["dn"];
+        
+        // Find the child group's dn
+        $childGroup = $this->info($child, array("cn"));
+        if ($childGroup[0]["dn"] === NULL){ 
+            return false; 
+        }
+        $childDn = $childGroup[0]["dn"];
+                
+        $add = array();
+        $add["member"] = $childDn;
+        
+        $result = @ldap_mod_add($this->adldap->getLdapConnection(), $parentDn, $add);
+        if ($result == false) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Add a user to a group
+    * 
+    * @param string $group The group to add the user to
+    * @param string $user The user to add to the group
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function addUser($group, $user, $isGUID = false)
+    {
+        // Adding a user is a bit fiddly, we need to get the full DN of the user
+        // and add it using the full DN of the group
+        
+        // Find the user's dn
+        $userDn = $this->adldap->user()->dn($user, $isGUID);
+        if ($userDn === false) { 
+            return false; 
+        }
+        
+        // Find the group's dn
+        $groupInfo = $this->info($group, array("cn"));
+        if ($groupInfo[0]["dn"] === NULL) { 
+            return false; 
+        }
+        $groupDn = $groupInfo[0]["dn"];
+        
+        $add = array();
+        $add["member"] = $userDn;
+        
+        $result = @ldap_mod_add($this->adldap->getLdapConnection(), $groupDn, $add);
+        if ($result == false) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Add a contact to a group
+    * 
+    * @param string $group The group to add the contact to
+    * @param string $contactDn The DN of the contact to add
+    * @return bool
+    */
+    public function addContact($group, $contactDn)
+    {
+        // To add a contact we take the contact's DN
+        // and add it using the full DN of the group
+        
+        // Find the group's dn
+        $groupInfo = $this->info($group, array("cn"));
+        if ($groupInfo[0]["dn"] === NULL) { 
+            return false; 
+        }
+        $groupDn = $groupInfo[0]["dn"];
+        
+        $add = array();
+        $add["member"] = $contactDn;
+        
+        $result = @ldap_mod_add($this->adldap->getLdapConnection(), $groupDn, $add);
+        if ($result == false) { 
+            return false; 
+        }
+        return true;
+    }
+
+    /**
+    * Create a group
+    * 
+    * @param array $attributes Default attributes of the group
+    * @return bool
+    */
+    public function create($attributes)
+    {
+        if (!is_array($attributes)){ return "Attributes must be an array"; }
+        if (!array_key_exists("group_name", $attributes)){ return "Missing compulsory field [group_name]"; }
+        if (!array_key_exists("container", $attributes)){ return "Missing compulsory field [container]"; }
+        if (!array_key_exists("description", $attributes)){ return "Missing compulsory field [description]"; }
+        if (!is_array($attributes["container"])){ return "Container attribute must be an array."; }
+        $attributes["container"] = array_reverse($attributes["container"]);
+
+        //$member_array = array();
+        //$member_array[0] = "cn=user1,cn=Users,dc=yourdomain,dc=com";
+        //$member_array[1] = "cn=administrator,cn=Users,dc=yourdomain,dc=com";
+        
+        $add = array();
+        $add["cn"] = $attributes["group_name"];
+        $add["samaccountname"] = $attributes["group_name"];
+        $add["objectClass"] = "Group";
+        $add["description"] = $attributes["description"];
+        //$add["member"] = $member_array; UNTESTED
+
+        $container = "OU=" . implode(",OU=", $attributes["container"]);
+        $result = ldap_add($this->adldap->getLdapConnection(), "CN=" . $add["cn"] . ", " . $container . "," . $this->adldap->getBaseDn(), $add);
+        if ($result != true) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Delete a group account 
+    * 
+    * @param string $group The group to delete (please be careful here!) 
+    * 
+    * @return array 
+    */
+    public function delete($group) {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        if ($group === null){ return "Missing compulsory field [group]"; }
+        
+        $groupInfo = $this->info($group, array("*"));
+        $dn = $groupInfo[0]['distinguishedname'][0]; 
+        $result = $this->adldap->folder()->delete($dn); 
+        if ($result !== true) { 
+            return false; 
+        } return true;   
+    }
+
+    /**
+    * Remove a group from a group
+    * 
+    * @param string $parent The parent group name
+    * @param string $child The child group name
+    * @return bool
+    */
+    public function removeGroup($parent , $child)
+    {
+    
+        // Find the parent dn
+        $parentGroup = $this->info($parent, array("cn"));
+        if ($parentGroup[0]["dn"] === NULL) { 
+            return false; 
+        }
+        $parentDn = $parentGroup[0]["dn"];
+        
+        // Find the child dn
+        $childGroup = $this->info($child, array("cn"));
+        if ($childGroup[0]["dn"] === NULL) { 
+            return false; 
+        }
+        $childDn = $childGroup[0]["dn"];
+        
+        $del = array();
+        $del["member"] = $childDn;
+        
+        $result = @ldap_mod_del($this->adldap->getLdapConnection(), $parentDn, $del);
+        if ($result == false) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Remove a user from a group
+    * 
+    * @param string $group The group to remove a user from
+    * @param string $user The AD user to remove from the group
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function removeUser($group, $user, $isGUID = false)
+    {
+    
+        // Find the parent dn
+        $groupInfo = $this->info($group, array("cn"));
+        if ($groupInfo[0]["dn"] === NULL){ 
+            return false; 
+        }
+        $groupDn = $groupInfo[0]["dn"];
+        
+        // Find the users dn
+        $userDn = $this->adldap->user()->dn($user, $isGUID);
+        if ($userDn === false) {
+            return false; 
+        }
+
+        $del = array();
+        $del["member"] = $userDn;
+        
+        $result = @ldap_mod_del($this->adldap->getLdapConnection(), $groupDn, $del);
+        if ($result == false) {
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Remove a contact from a group
+    * 
+    * @param string $group The group to remove a user from
+    * @param string $contactDn The DN of a contact to remove from the group
+    * @return bool
+    */
+    public function removeContact($group, $contactDn)
+    {
+    
+        // Find the parent dn
+        $groupInfo = $this->info($group, array("cn"));
+        if ($groupInfo[0]["dn"] === NULL) { 
+            return false; 
+        }
+        $groupDn = $groupInfo[0]["dn"];
+    
+        $del = array();
+        $del["member"] = $contactDn;
+        
+        $result = @ldap_mod_del($this->adldap->getLdapConnection(), $groupDn, $del);
+        if ($result == false) { 
+            return false; 
+        }
+        return true;
+    }
+    
+    /**
+    * Return a list of groups in a group
+    * 
+    * @param string $group The group to query
+    * @param bool $recursive Recursively get groups
+    * @return array
+    */
+    public function inGroup($group, $recursive = NULL)
+    {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        if ($recursive === NULL){ $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it 
+        
+        // Search the directory for the members of a group
+        $info = $this->info($group, array("member","cn"));
+        $groups = $info[0]["member"];
+        if (!is_array($groups)) {
+            return false;   
+        }
+ 
+        $groupArray = array();
+
+        for ($i=0; $i<$groups["count"]; $i++){ 
+             $filter = "(&(objectCategory=group)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($groups[$i]) . "))";
+             $fields = array("samaccountname", "distinguishedname", "objectClass");
+             $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+             $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+             // not a person, look for a group  
+             if ($entries['count'] == 0 && $recursive == true) {  
+                $filter = "(&(objectCategory=group)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($groups[$i]) . "))";  
+                $fields = array("distinguishedname");  
+                $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);  
+                $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);  
+                if (!isset($entries[0]['distinguishedname'][0])) {
+                    continue;  
+                }
+                $subGroups = $this->inGroup($entries[0]['distinguishedname'][0], $recursive);  
+                if (is_array($subGroups)) {
+                    $groupArray = array_merge($groupArray, $subGroups); 
+                    $groupArray = array_unique($groupArray);  
+                }
+                continue;  
+             } 
+
+             $groupArray[] = $entries[0]['distinguishedname'][0];
+        }
+        return $groupArray;
+    }
+    
+    /**
+    * Return a list of members in a group
+    * 
+    * @param string $group The group to query
+    * @param bool $recursive Recursively get group members
+    * @return array
+    */
+    public function members($group, $recursive = NULL)
+    {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        if ($recursive === NULL){ $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it 
+        // Search the directory for the members of a group
+        $info = $this->info($group, array("member","cn"));
+        $users = $info[0]["member"];
+        if (!is_array($users)) {
+            return false;   
+        }
+ 
+        $userArray = array();
+
+        for ($i=0; $i<$users["count"]; $i++){ 
+             $filter = "(&(objectCategory=person)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($users[$i]) . "))";
+             $fields = array("samaccountname", "distinguishedname", "objectClass");
+             $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+             $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+             // not a person, look for a group  
+             if ($entries['count'] == 0 && $recursive == true) {  
+                $filter = "(&(objectCategory=group)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($users[$i]) . "))";  
+                $fields = array("samaccountname");  
+                $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);  
+                $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);  
+                if (!isset($entries[0]['samaccountname'][0])) {
+                    continue;  
+                }
+                $subUsers = $this->members($entries[0]['samaccountname'][0], $recursive);  
+                if (is_array($subUsers)) {
+                    $userArray = array_merge($userArray, $subUsers); 
+                    $userArray = array_unique($userArray);  
+                }
+                continue;  
+             } 
+             else if ($entries['count'] == 0) {   
+                continue; 
+             } 
+
+             if ((!isset($entries[0]['samaccountname'][0]) || $entries[0]['samaccountname'][0] === NULL) && $entries[0]['distinguishedname'][0] !== NULL) {
+                 $userArray[] = $entries[0]['distinguishedname'][0];
+             }
+             else if ($entries[0]['samaccountname'][0] !== NULL) {
+                $userArray[] = $entries[0]['samaccountname'][0];
+             }
+        }
+        return $userArray;
+    }
+    
+    /**
+    * Group Information.  Returns an array of raw information about a group.
+    * The group name is case sensitive
+    * 
+    * @param string $groupName The group name to retrieve info about
+    * @param array $fields Fields to retrieve
+    * @return array
+    */
+    public function info($groupName, $fields = NULL)
+    {
+        if ($groupName === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        if (stristr($groupName, '+')) {
+            $groupName = stripslashes($groupName);   
+        }
+        
+        $filter = "(&(objectCategory=group)(name=" . $this->adldap->utilities()->ldapSlashes($groupName) . "))";
+        if ($fields === NULL) { 
+            $fields = array("member","memberof","cn","description","distinguishedname","objectcategory","samaccountname"); 
+        }
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        return $entries;
+    }
+    
+    /**
+    * Group Information.  Returns an collection
+    * The group name is case sensitive
+    * 
+    * @param string $groupName The group name to retrieve info about
+    * @param array $fields Fields to retrieve
+    * @return adLDAPGroupCollection
+    */
+    public function infoCollection($groupName, $fields = NULL)
+    {
+        if ($groupName === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        $info = $this->info($groupName, $fields);
+        if ($info !== false) {
+            $collection = new adLDAPGroupCollection($info, $this->adldap);
+            return $collection;
+        }
+        return false;
+    }
+    
+    /**
+    * Return a complete list of "groups in groups"
+    * 
+    * @param string $group The group to get the list from
+    * @return array
+    */
+    public function recursiveGroups($group)
+    {
+        if ($group === NULL) { return false; }
+
+        $stack = array(); 
+        $processed = array(); 
+        $retGroups = array(); 
+     
+        array_push($stack, $group); // Initial Group to Start with 
+        while (count($stack) > 0) {
+            $parent = array_pop($stack);
+            array_push($processed, $parent);
+            
+            $info = $this->info($parent, array("memberof"));
+            
+            if (isset($info[0]["memberof"]) && is_array($info[0]["memberof"])) {
+                $groups = $info[0]["memberof"]; 
+                if ($groups) {
+                    $groupNames = $this->adldap->utilities()->niceNames($groups);  
+                    $retGroups = array_merge($retGroups, $groupNames); //final groups to return
+                    foreach ($groupNames as $id => $groupName) { 
+                        if (!in_array($groupName, $processed)) {
+                            array_push($stack, $groupName);
+                        }
+                    }
+                }
+            }
+        }
+        
+        return $retGroups;
+    }
+    
+    /**
+    * Returns a complete list of the groups in AD based on a SAM Account Type  
+    * 
+    * @param string $sAMAaccountType The account type to return
+    * @param bool $includeDescription Whether to return a description
+    * @param string $search Search parameters
+    * @param bool $sorted Whether to sort the results
+    * @return array
+    */
+    public function search($sAMAaccountType = adLDAP::ADLDAP_SECURITY_GLOBAL_GROUP, $includeDescription = false, $search = "*", $sorted = true) {
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        $filter = '(&(objectCategory=group)';
+        if ($sAMAaccountType !== null) {
+            $filter .= '(samaccounttype='. $sAMAaccountType .')';
+        }
+        $filter .= '(cn=' . $search . '))';
+        // Perform the search and grab all their details
+        $fields = array("samaccountname", "description");
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        $groupsArray = array();        
+        for ($i=0; $i<$entries["count"]; $i++){
+            if ($includeDescription && strlen($entries[$i]["description"][0]) > 0 ) {
+                $groupsArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["description"][0];
+            }
+            else if ($includeDescription){
+                $groupsArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["samaccountname"][0];
+            }
+            else {
+                array_push($groupsArray, $entries[$i]["samaccountname"][0]);
+            }
+        }
+        if ($sorted) { 
+            asort($groupsArray); 
+        }
+        return $groupsArray;
+    }
+    
+    /**
+    * Returns a complete list of all groups in AD
+    * 
+    * @param bool $includeDescription Whether to return a description
+    * @param string $search Search parameters
+    * @param bool $sorted Whether to sort the results
+    * @return array
+    */
+    public function all($includeDescription = false, $search = "*", $sorted = true){
+        $groupsArray = $this->search(null, $includeDescription, $search, $sorted);
+        return $groupsArray;
+    }
+    
+    /**
+    * Returns a complete list of security groups in AD
+    * 
+    * @param bool $includeDescription Whether to return a description
+    * @param string $search Search parameters
+    * @param bool $sorted Whether to sort the results
+    * @return array
+    */
+    public function allSecurity($includeDescription = false, $search = "*", $sorted = true){
+        $groupsArray = $this->search(adLDAP::ADLDAP_SECURITY_GLOBAL_GROUP, $includeDescription, $search, $sorted);
+        return $groupsArray;
+    }
+    
+    /**
+    * Returns a complete list of distribution lists in AD
+    * 
+    * @param bool $includeDescription Whether to return a description
+    * @param string $search Search parameters
+    * @param bool $sorted Whether to sort the results
+    * @return array
+    */
+    public function allDistribution($includeDescription = false, $search = "*", $sorted = true){
+        $groupsArray = $this->search(adLDAP::ADLDAP_DISTRIBUTION_GROUP, $includeDescription, $search, $sorted);
+        return $groupsArray;
+    }
+    
+    /**
+    * Coping with AD not returning the primary group
+    * http://support.microsoft.com/?kbid=321360 
+    * 
+    * This is a re-write based on code submitted by Bruce which prevents the 
+    * need to search each security group to find the true primary group
+    * 
+    * @param string $gid Group ID
+    * @param string $usersid User's Object SID
+    * @return mixed
+    */
+    public function getPrimaryGroup($gid, $usersid)
+    {
+        if ($gid === NULL || $usersid === NULL) { return false; }
+        $sr = false;
+
+        $gsid = substr_replace($usersid, pack('V',$gid), strlen($usersid)-4,4);
+        $filter = '(objectsid=' . $this->adldap->utilities()->getTextSID($gsid).')';
+        $fields = array("samaccountname","distinguishedname");
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        if (isset($entries[0]['distinguishedname'][0])) {
+            return $entries[0]['distinguishedname'][0];
+        }
+        return false;
+     }
+     
+     /**
+    * Coping with AD not returning the primary group
+    * http://support.microsoft.com/?kbid=321360 
+    * 
+    * For some reason it's not possible to search on primarygrouptoken=XXX
+    * If someone can show otherwise, I'd like to know about it :)
+    * this way is resource intensive and generally a pain in the @#%^
+    * 
+    * @deprecated deprecated since version 3.1, see get get_primary_group
+    * @param string $gid Group ID
+    * @return string
+    */
+    public function cn($gid){    
+        if ($gid === NULL) { return false; }
+        $sr = false;
+        $r = '';
+        
+        $filter = "(&(objectCategory=group)(samaccounttype=" . adLDAP::ADLDAP_SECURITY_GLOBAL_GROUP . "))";
+        $fields = array("primarygrouptoken", "samaccountname", "distinguishedname");
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+        
+        for ($i=0; $i<$entries["count"]; $i++){
+            if ($entries[$i]["primarygrouptoken"][0] == $gid) {
+                $r = $entries[$i]["distinguishedname"][0];
+                $i = $entries["count"];
+            }
+        }
+
+        return $r;
+    }
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPUsers.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPUsers.php
new file mode 100644
index 0000000..dc3ebd7
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPUsers.php
@@ -0,0 +1,682 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage User
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPUserCollection.php');
+
+/**
+* USER FUNCTIONS
+*/
+class adLDAPUsers {
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    /**
+    * Validate a user's login credentials
+    * 
+    * @param string $username A user's AD username
+    * @param string $password A user's AD password
+    * @param bool optional $prevent_rebind
+    * @return bool
+    */
+    public function authenticate($username, $password, $preventRebind = false) {
+        return $this->adldap->authenticate($username, $password, $preventRebind);
+    }
+    
+    /**
+    * Create a user
+    * 
+    * If you specify a password here, this can only be performed over SSL
+    * 
+    * @param array $attributes The attributes to set to the user account
+    * @return bool
+    */
+    public function create($attributes)
+    {
+        // Check for compulsory fields
+        if (!array_key_exists("username", $attributes)){ return "Missing compulsory field [username]"; }
+        if (!array_key_exists("firstname", $attributes)){ return "Missing compulsory field [firstname]"; }
+        if (!array_key_exists("surname", $attributes)){ return "Missing compulsory field [surname]"; }
+        if (!array_key_exists("email", $attributes)){ return "Missing compulsory field [email]"; }
+        if (!array_key_exists("container", $attributes)){ return "Missing compulsory field [container]"; }
+        if (!is_array($attributes["container"])){ return "Container attribute must be an array."; }
+
+        if (array_key_exists("password",$attributes) && (!$this->adldap->getUseSSL() && !$this->adldap->getUseTLS())){ 
+            throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
+        }
+
+        if (!array_key_exists("display_name", $attributes)) { 
+            $attributes["display_name"] = $attributes["firstname"] . " " . $attributes["surname"]; 
+        }
+
+        // Translate the schema
+        $add = $this->adldap->adldap_schema($attributes);
+        
+        // Additional stuff only used for adding accounts
+        $add["cn"][0] = $attributes["display_name"];
+        $add["samaccountname"][0] = $attributes["username"];
+        $add["objectclass"][0] = "top";
+        $add["objectclass"][1] = "person";
+        $add["objectclass"][2] = "organizationalPerson";
+        $add["objectclass"][3] = "user"; //person?
+        //$add["name"][0]=$attributes["firstname"]." ".$attributes["surname"];
+
+        // Set the account control attribute
+        $control_options = array("NORMAL_ACCOUNT");
+        if (!$attributes["enabled"]) { 
+            $control_options[] = "ACCOUNTDISABLE"; 
+        }
+        $add["userAccountControl"][0] = $this->accountControl($control_options);
+        
+        // Determine the container
+        $attributes["container"] = array_reverse($attributes["container"]);
+        $container = "OU=" . implode(", OU=",$attributes["container"]);
+
+        // Add the entry
+        $result = @ldap_add($this->adldap->getLdapConnection(), "CN=" . $add["cn"][0] . ", " . $container . "," . $this->adldap->getBaseDn(), $add);
+        if ($result != true) { 
+            return false; 
+        }
+        
+        return true;
+    }
+    
+    /**
+    * Account control options
+    *
+    * @param array $options The options to convert to int 
+    * @return int
+    */
+    protected function accountControl($options)
+    {
+        $val=0;
+
+        if (is_array($options)) {
+            if (in_array("SCRIPT",$options)){ $val=$val+1; }
+            if (in_array("ACCOUNTDISABLE",$options)){ $val=$val+2; }
+            if (in_array("HOMEDIR_REQUIRED",$options)){ $val=$val+8; }
+            if (in_array("LOCKOUT",$options)){ $val=$val+16; }
+            if (in_array("PASSWD_NOTREQD",$options)){ $val=$val+32; }
+            //PASSWD_CANT_CHANGE Note You cannot assign this permission by directly modifying the UserAccountControl attribute.
+            //For information about how to set the permission programmatically, see the "Property flag descriptions" section.
+            if (in_array("ENCRYPTED_TEXT_PWD_ALLOWED",$options)){ $val=$val+128; }
+            if (in_array("TEMP_DUPLICATE_ACCOUNT",$options)){ $val=$val+256; }
+            if (in_array("NORMAL_ACCOUNT",$options)){ $val=$val+512; }
+            if (in_array("INTERDOMAIN_TRUST_ACCOUNT",$options)){ $val=$val+2048; }
+            if (in_array("WORKSTATION_TRUST_ACCOUNT",$options)){ $val=$val+4096; }
+            if (in_array("SERVER_TRUST_ACCOUNT",$options)){ $val=$val+8192; }
+            if (in_array("DONT_EXPIRE_PASSWORD",$options)){ $val=$val+65536; }
+            if (in_array("MNS_LOGON_ACCOUNT",$options)){ $val=$val+131072; }
+            if (in_array("SMARTCARD_REQUIRED",$options)){ $val=$val+262144; }
+            if (in_array("TRUSTED_FOR_DELEGATION",$options)){ $val=$val+524288; }
+            if (in_array("NOT_DELEGATED",$options)){ $val=$val+1048576; }
+            if (in_array("USE_DES_KEY_ONLY",$options)){ $val=$val+2097152; }
+            if (in_array("DONT_REQ_PREAUTH",$options)){ $val=$val+4194304; } 
+            if (in_array("PASSWORD_EXPIRED",$options)){ $val=$val+8388608; }
+            if (in_array("TRUSTED_TO_AUTH_FOR_DELEGATION",$options)){ $val=$val+16777216; }
+        }
+        return $val;
+    }
+    
+    /**
+    * Delete a user account
+    * 
+    * @param string $username The username to delete (please be careful here!)
+    * @param bool $isGUID Is the username a GUID or a samAccountName
+    * @return array
+    */
+    public function delete($username, $isGUID = false) 
+    {      
+        $userinfo = $this->info($username, array("*"), $isGUID);
+        $dn = $userinfo[0]['distinguishedname'][0];
+        $result = $this->adldap->folder()->delete($dn);
+        if ($result != true) { 
+            return false;
+        }        
+        return true;
+    }
+    
+    /**
+    * Groups the user is a member of
+    * 
+    * @param string $username The username to query
+    * @param bool $recursive Recursive list of groups
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return array
+    */
+    public function groups($username, $recursive = NULL, $isGUID = false)
+    {
+        if ($username === NULL) { return false; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        // Search the directory for their information
+        $info = @$this->info($username, array("memberof", "primarygroupid"), $isGUID);
+        $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); // Presuming the entry returned is our guy (unique usernames)
+
+        if ($recursive === true){
+            foreach ($groups as $id => $groupName){
+                $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
+                $groups = array_merge($groups, $extraGroups);
+            }
+        }
+        
+        return $groups;
+    }
+    
+    /**
+    * Find information about the users. Returned in a raw array format from AD
+    * 
+    * @param string $username The username to query
+    * @param array $fields Array of parameters to query
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return array
+    */
+    public function info($username, $fields = NULL, $isGUID = false)
+    {
+        if ($username === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+
+        if ($isGUID === true) {
+            $username = $this->adldap->utilities()->strGuidToHex($username);
+            $filter = "objectguid=" . $username;
+        }
+        else if (strstr($username, "@")) {
+             $filter = "userPrincipalName=" . $username;
+        }
+        else {
+             $filter = "samaccountname=" . $username;
+        }
+        $filter = "(&(objectCategory=person)({$filter}))";
+        if ($fields === NULL) { 
+            $fields = array("samaccountname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); 
+        }
+        if (!in_array("objectsid", $fields)) {
+            $fields[] = "objectsid";
+        }
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+        
+        if (isset($entries[0])) {
+            if ($entries[0]['count'] >= 1) {
+                if (in_array("memberof", $fields)) {
+                    // AD does not return the primary group in the ldap query, we may need to fudge it
+                    if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){
+                        //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
+                        $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
+                    } else {
+                        $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
+                    }
+                    if (!isset($entries[0]["memberof"]["count"])) {
+                        $entries[0]["memberof"]["count"] = 0;
+                    }
+                    $entries[0]["memberof"]["count"]++;
+                }
+            }
+            
+            return $entries;
+        }
+        return false;
+    }
+    
+    /**
+    * Find information about the users. Returned in a raw array format from AD
+    * 
+    * @param string $username The username to query
+    * @param array $fields Array of parameters to query
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return mixed
+    */
+    public function infoCollection($username, $fields = NULL, $isGUID = false)
+    {
+        if ($username === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        $info = $this->info($username, $fields, $isGUID);
+        
+        if ($info !== false) {
+            $collection = new adLDAPUserCollection($info, $this->adldap);
+            return $collection;
+        }
+        return false;
+    }
+    
+    /**
+    * Determine if a user is in a specific group
+    * 
+    * @param string $username The username to query
+    * @param string $group The name of the group to check against
+    * @param bool $recursive Check groups recursively
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function inGroup($username, $group, $recursive = NULL, $isGUID = false)
+    {
+        if ($username === NULL) { return false; }
+        if ($group === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it
+        
+        // Get a list of the groups
+        $groups = $this->groups($username, $recursive, $isGUID);
+        
+        // Return true if the specified group is in the group list
+        if (in_array($group, $groups)) { 
+            return true; 
+        }
+
+        return false;
+    }
+    
+    /**
+    * Determine a user's password expiry date
+    * 
+    * @param string $username The username to query
+    * @param book $isGUID Is the username passed a GUID or a samAccountName
+    * @requires bcmath http://php.net/manual/en/book.bc.php
+    * @return array
+    */
+    public function passwordExpiry($username, $isGUID = false) 
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if (!function_exists('bcmod')) { throw new adLDAPException("Missing function support [bcmod] http://php.net/manual/en/book.bc.php"); };
+        
+        $userInfo = $this->info($username, array("pwdlastset", "useraccountcontrol"), $isGUID);
+        $pwdLastSet = $userInfo[0]['pwdlastset'][0];
+        $status = array();
+        
+        if ($userInfo[0]['useraccountcontrol'][0] == '66048') {
+            // Password does not expire
+            return "Does not expire";
+        }
+        if ($pwdLastSet === '0') {
+            // Password has already expired
+            return "Password has expired";
+        }
+        
+         // Password expiry in AD can be calculated from TWO values:
+         //   - User's own pwdLastSet attribute: stores the last time the password was changed
+         //   - Domain's maxPwdAge attribute: how long passwords last in the domain
+         //
+         // Although Microsoft chose to use a different base and unit for time measurements.
+         // This function will convert them to Unix timestamps
+         $sr = ldap_read($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), 'objectclass=*', array('maxPwdAge'));
+         if (!$sr) {
+             return false;
+         }
+         $info = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+         $maxPwdAge = $info[0]['maxpwdage'][0];
+         
+
+         // See MSDN: http://msdn.microsoft.com/en-us/library/ms974598.aspx
+         //
+         // pwdLastSet contains the number of 100 nanosecond intervals since January 1, 1601 (UTC), 
+         // stored in a 64 bit integer. 
+         //
+         // The number of seconds between this date and Unix epoch is 11644473600.
+         //
+         // maxPwdAge is stored as a large integer that represents the number of 100 nanosecond
+         // intervals from the time the password was set before the password expires.
+         //
+         // We also need to scale this to seconds but also this value is a _negative_ quantity!
+         //
+         // If the low 32 bits of maxPwdAge are equal to 0 passwords do not expire
+         //
+         // Unfortunately the maths involved are too big for PHP integers, so I've had to require
+         // BCMath functions to work with arbitrary precision numbers.
+         if (bcmod($maxPwdAge, 4294967296) === '0') {
+            return "Domain does not expire passwords";
+        }
+        
+        // Add maxpwdage and pwdlastset and we get password expiration time in Microsoft's
+        // time units.  Because maxpwd age is negative we need to subtract it.
+        $pwdExpire = bcsub($pwdLastSet, $maxPwdAge);
+    
+        // Convert MS's time to Unix time
+        $status['expiryts'] = bcsub(bcdiv($pwdExpire, '10000000'), '11644473600');
+        $status['expiryformat'] = date('Y-m-d H:i:s', bcsub(bcdiv($pwdExpire, '10000000'), '11644473600'));
+        
+        return $status;
+    }
+    
+    /**
+    * Modify a user
+    * 
+    * @param string $username The username to query
+    * @param array $attributes The attributes to modify.  Note if you set the enabled attribute you must not specify any other attributes
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function modify($username, $attributes, $isGUID = false)
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }
+        if (array_key_exists("password", $attributes) && !$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) { 
+            throw new adLDAPException('SSL/TLS must be configured on your webserver and enabled in the class to set passwords.');
+        }
+
+        // Find the dn of the user
+        $userDn = $this->dn($username, $isGUID);
+        if ($userDn === false) { 
+            return false; 
+        }
+        
+        // Translate the update to the LDAP schema                
+        $mod = $this->adldap->adldap_schema($attributes);
+        
+        // Check to see if this is an enabled status update
+        if (!$mod && !array_key_exists("enabled", $attributes)){ 
+            return false; 
+        }
+        
+        // Set the account control attribute (only if specified)
+        if (array_key_exists("enabled", $attributes)){
+            if ($attributes["enabled"]){ 
+                $controlOptions = array("NORMAL_ACCOUNT"); 
+            }
+            else { 
+                $controlOptions = array("NORMAL_ACCOUNT", "ACCOUNTDISABLE"); 
+            }
+            $mod["userAccountControl"][0] = $this->accountControl($controlOptions);
+        }
+
+        // Do the update
+        $result = @ldap_modify($this->adldap->getLdapConnection(), $userDn, $mod);
+        if ($result == false) { 
+            return false; 
+        }
+        
+        return true;
+    }
+    
+    /**
+    * Disable a user account
+    * 
+    * @param string $username The username to disable
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function disable($username, $isGUID = false)
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }
+        $attributes = array("enabled" => 0);
+        $result = $this->modify($username, $attributes, $isGUID);
+        if ($result == false) { return false; }
+        
+        return true;
+    }
+    
+    /**
+    * Enable a user account
+    * 
+    * @param string $username The username to enable
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function enable($username, $isGUID = false)
+    {
+        if ($username === NULL) { return "Missing compulsory field [username]"; }
+        $attributes = array("enabled" => 1);
+        $result = $this->modify($username, $attributes, $isGUID);
+        if ($result == false) { return false; }
+        
+        return true;
+    }
+    
+    /**
+    * Set the password of a user - This must be performed over SSL
+    * 
+    * @param string $username The username to modify
+    * @param string $password The new password
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return bool
+    */
+    public function password($username, $password, $isGUID = false)
+    {
+        if ($username === NULL) { return false; }
+        if ($password === NULL) { return false; }
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if (!$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) { 
+            throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
+        }
+        
+        $userDn = $this->dn($username, $isGUID);
+        if ($userDn === false) { 
+            return false; 
+        }
+                
+        $add=array();
+        $add["unicodePwd"][0] = $this->encodePassword($password);
+        
+        $result = @ldap_mod_replace($this->adldap->getLdapConnection(), $userDn, $add);
+        if ($result === false){
+            $err = ldap_errno($this->adldap->getLdapConnection());
+            if ($err) {
+                $msg = 'Error ' . $err . ': ' . ldap_err2str($err) . '.';
+                if($err == 53) {
+                    $msg .= ' Your password might not match the password policy.';
+                }
+                throw new adLDAPException($msg);
+            }
+            else {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    /**
+    * Encode a password for transmission over LDAP
+    *
+    * @param string $password The password to encode
+    * @return string
+    */
+    public function encodePassword($password)
+    {
+        $password="\"".$password."\"";
+        $encoded="";
+        for ($i=0; $i <strlen($password); $i++){ $encoded.="{$password{$i}}\000"; }
+        return $encoded;
+    }
+     
+    /**
+    * Obtain the user's distinguished name based on their userid 
+    * 
+    * 
+    * @param string $username The username
+    * @param bool $isGUID Is the username passed a GUID or a samAccountName
+    * @return string
+    */
+    public function dn($username, $isGUID=false)
+    {
+        $user = $this->info($username, array("cn"), $isGUID);
+        if ($user[0]["dn"] === NULL) { 
+            return false; 
+        }
+        $userDn = $user[0]["dn"];
+        return $userDn;
+    }
+    
+    /**
+    * Return a list of all users in AD
+    * 
+    * @param bool $includeDescription Return a description of the user
+    * @param string $search Search parameter
+    * @param bool $sorted Sort the user accounts
+    * @return array
+    */
+    public function all($includeDescription = false, $search = "*", $sorted = true)
+    {
+        if (!$this->adldap->getLdapBind()) { return false; }
+        
+        // Perform the search and grab all their details
+        $filter = "(&(objectClass=user)(samaccounttype=" . adLDAP::ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)(cn=" . $search . "))";
+        $fields = array("samaccountname","displayname");
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        $usersArray = array();
+        for ($i=0; $i<$entries["count"]; $i++){
+            if ($includeDescription && strlen($entries[$i]["displayname"][0])>0){
+                $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["displayname"][0];
+            } elseif ($includeDescription){
+                $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["samaccountname"][0];
+            } else {
+                array_push($usersArray, $entries[$i]["samaccountname"][0]);
+            }
+        }
+        if ($sorted) { 
+            asort($usersArray); 
+        }
+        return $usersArray;
+    }
+    
+    /**
+    * Converts a username (samAccountName) to a GUID
+    * 
+    * @param string $username The username to query
+    * @return string
+    */
+    public function usernameToGuid($username) 
+    {
+        if (!$this->adldap->getLdapBind()){ return false; }
+        if ($username === null){ return "Missing compulsory field [username]"; }
+        
+        $filter = "samaccountname=" . $username; 
+        $fields = array("objectGUID"); 
+        $sr = @ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields); 
+        if (ldap_count_entries($this->adldap->getLdapConnection(), $sr) > 0) { 
+            $entry = @ldap_first_entry($this->adldap->getLdapConnection(), $sr); 
+            $guid = @ldap_get_values_len($this->adldap->getLdapConnection(), $entry, 'objectGUID'); 
+            $strGUID = $this->adldap->utilities()->binaryToText($guid[0]);          
+            return $strGUID; 
+        }
+        return false; 
+    }
+    
+    /**
+    * Return a list of all users in AD that have a specific value in a field
+    *
+    * @param bool $includeDescription Return a description of the user
+    * @param string $searchField Field to search search for
+    * @param string $searchFilter Value to search for in the specified field
+    * @param bool $sorted Sort the user accounts
+    * @return array
+    */
+    public function find($includeDescription = false, $searchField = false, $searchFilter = false, $sorted = true){
+        if (!$this->adldap->getLdapBind()){ return false; }
+          
+        // Perform the search and grab all their details
+        $searchParams = "";
+        if ($searchField) {
+            $searchParams = "(" . $searchField . "=" . $searchFilter . ")";
+        }                           
+        $filter = "(&(objectClass=user)(samaccounttype=" . adLDAP::ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)" . $searchParams . ")";
+        $fields = array("samaccountname","displayname");
+        $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+        $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+        $usersArray = array();
+        for ($i=0; $i < $entries["count"]; $i++) {
+            if ($includeDescription && strlen($entries[$i]["displayname"][0]) > 0) {
+                $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["displayname"][0];
+            }
+            else if ($includeDescription) {
+                $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["samaccountname"][0];
+            }
+            else {
+                array_push($usersArray, $entries[$i]["samaccountname"][0]);
+            }
+        }
+        if ($sorted){ 
+          asort($usersArray); 
+        }
+        return ($usersArray);
+    }
+    
+    /**
+    * Move a user account to a different OU
+    *
+    * @param string $username The username to move (please be careful here!)
+    * @param array $container The container or containers to move the user to (please be careful here!).
+    * accepts containers in 1. parent 2. child order
+    * @return array
+    */
+    public function move($username, $container) 
+    {
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if ($username === null) { return "Missing compulsory field [username]"; }
+        if ($container === null) { return "Missing compulsory field [container]"; }
+        if (!is_array($container)) { return "Container must be an array"; }
+        
+        $userInfo = $this->info($username, array("*"));
+        $dn = $userInfo[0]['distinguishedname'][0];
+        $newRDn = "cn=" . $username;
+        $container = array_reverse($container);
+        $newContainer = "ou=" . implode(",ou=",$container);
+        $newBaseDn = strtolower($newContainer) . "," . $this->adldap->getBaseDn();
+        $result = @ldap_rename($this->adldap->getLdapConnection(), $dn, $newRDn, $newBaseDn, true);
+        if ($result !== true) {
+            return false;
+        }
+        return true;
+    }
+    
+    /**
+    * Get the last logon time of any user as a Unix timestamp
+    * 
+    * @param string $username
+    * @return long $unixTimestamp
+    */
+    public function getLastLogon($username) {
+        if (!$this->adldap->getLdapBind()) { return false; }
+        if ($username === null) { return "Missing compulsory field [username]"; }
+        $userInfo = $this->info($username, array("lastLogonTimestamp"));
+        $lastLogon = adLDAPUtils::convertWindowsTimeToUnixTime($userInfo[0]['lastLogonTimestamp'][0]);
+        return $lastLogon;
+    }
+    
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/classes/adLDAPUtils.php b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPUtils.php
new file mode 100644
index 0000000..6f94fe2
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/classes/adLDAPUtils.php
@@ -0,0 +1,268 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Utils
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+
+/**
+* UTILITY FUNCTIONS
+*/
+class adLDAPUtils {
+    const ADLDAP_VERSION = '4.0.4';
+    
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    public function __construct(adLDAP $adldap) {
+        $this->adldap = $adldap;
+    }
+    
+    
+    /**
+    * Take an LDAP query and return the nice names, without all the LDAP prefixes (eg. CN, DN)
+    *
+    * @param array $groups
+    * @return array
+    */
+    public function niceNames($groups)
+    {
+
+        $groupArray = array();
+        for ($i=0; $i<$groups["count"]; $i++){ // For each group
+            $line = $groups[$i];
+            
+            if (strlen($line)>0) { 
+                // More presumptions, they're all prefixed with CN=
+                // so we ditch the first three characters and the group
+                // name goes up to the first comma
+                $bits=explode(",", $line);
+                $groupArray[] = substr($bits[0], 3, (strlen($bits[0])-3));
+            }
+        }
+        return $groupArray;    
+    }
+    
+    /**
+    * Escape characters for use in an ldap_create function
+    * 
+    * @param string $str
+    * @return string
+    */
+    public function escapeCharacters($str) {
+        $str = str_replace(",", "\,", $str);
+        return $str;
+    }
+    
+    /**
+    * Escape strings for the use in LDAP filters
+    * 
+    * DEVELOPERS SHOULD BE DOING PROPER FILTERING IF THEY'RE ACCEPTING USER INPUT
+    * Ported from Perl's Net::LDAP::Util escape_filter_value
+    *
+    * @param string $str The string the parse
+    * @author Port by Andreas Gohr <andi@splitbrain.org>
+    * @return string
+    */
+    public function ldapSlashes($str) {
+        // see https://github.com/adldap/adLDAP/issues/22
+        return preg_replace_callback(
+            '/([\x00-\x1F\*\(\)\\\\])/',
+            function ($matches) {
+                return "\\".join("", unpack("H2", $matches[1]));
+            },
+            $str
+        );
+    }
+    /**
+    * Converts a string GUID to a hexdecimal value so it can be queried
+    *
+    * @param string $strGUID A string representation of a GUID
+    * @return string
+    */
+    public function strGuidToHex($strGUID)
+    {
+        $strGUID = str_replace('-', '', $strGUID);
+
+        $octet_str = '\\' . substr($strGUID, 6, 2);
+        $octet_str .= '\\' . substr($strGUID, 4, 2);
+        $octet_str .= '\\' . substr($strGUID, 2, 2);
+        $octet_str .= '\\' . substr($strGUID, 0, 2);
+        $octet_str .= '\\' . substr($strGUID, 10, 2);
+        $octet_str .= '\\' . substr($strGUID, 8, 2);
+        $octet_str .= '\\' . substr($strGUID, 14, 2);
+        $octet_str .= '\\' . substr($strGUID, 12, 2);
+        //$octet_str .= '\\' . substr($strGUID, 16, strlen($strGUID));
+        for ($i=16; $i<=(strlen($strGUID)-2); $i++) {
+            if (($i % 2) == 0) {
+                $octet_str .= '\\' . substr($strGUID, $i, 2);
+            }
+        }
+        
+        return $octet_str;
+    }
+    
+    /**
+    * Convert a binary SID to a text SID
+    * 
+    * @param string $binsid A Binary SID
+    * @return string
+    */
+     public function getTextSID($binsid) {
+        $hex_sid = bin2hex($binsid);
+        $rev = hexdec(substr($hex_sid, 0, 2));
+        $subcount = hexdec(substr($hex_sid, 2, 2));
+        $auth = hexdec(substr($hex_sid, 4, 12));
+        $result = "$rev-$auth";
+
+        for ($x=0;$x < $subcount; $x++) {
+            $subauth[$x] =
+                hexdec($this->littleEndian(substr($hex_sid, 16 + ($x * 8), 8)));
+                $result .= "-" . $subauth[$x];
+        }
+
+        // Cheat by tacking on the S-
+        return 'S-' . $result;
+     }
+     
+    /**
+    * Converts a little-endian hex number to one that hexdec() can convert
+    * 
+    * @param string $hex A hex code
+    * @return string
+    */
+     public function littleEndian($hex) 
+     {
+        $result = '';
+        for ($x = strlen($hex) - 2; $x >= 0; $x = $x - 2) {
+            $result .= substr($hex, $x, 2);
+        }
+        return $result;
+     }
+     
+     /**
+    * Converts a binary attribute to a string
+    * 
+    * @param string $bin A binary LDAP attribute
+    * @return string
+    */
+    public function binaryToText($bin) 
+    {
+        $hex_guid = bin2hex($bin); 
+        $hex_guid_to_guid_str = ''; 
+        for($k = 1; $k <= 4; ++$k) { 
+            $hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2); 
+        } 
+        $hex_guid_to_guid_str .= '-'; 
+        for($k = 1; $k <= 2; ++$k) { 
+            $hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2); 
+        } 
+        $hex_guid_to_guid_str .= '-'; 
+        for($k = 1; $k <= 2; ++$k) { 
+            $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2); 
+        } 
+        $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4); 
+        $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20); 
+        return strtoupper($hex_guid_to_guid_str);   
+    }
+    
+    /**
+    * Converts a binary GUID to a string GUID
+    * 
+    * @param string $binaryGuid The binary GUID attribute to convert
+    * @return string
+    */
+    public function decodeGuid($binaryGuid) 
+    {
+        if ($binaryGuid === null){ return "Missing compulsory field [binaryGuid]"; }
+        
+        $strGUID = $this->binaryToText($binaryGuid);          
+        return $strGUID; 
+    }
+    
+    /**
+    * Convert a boolean value to a string
+    * You should never need to call this yourself
+    *
+    * @param bool $bool Boolean value
+    * @return string
+    */
+    public function boolToStr($bool) 
+    {
+        return ($bool) ? 'TRUE' : 'FALSE';
+    }
+    
+    /**
+    * Convert 8bit characters e.g. accented characters to UTF8 encoded characters
+    */
+    public function encode8Bit(&$item, $key) {
+        $encode = false;
+        if (is_string($item)) {
+            for ($i=0; $i<strlen($item); $i++) {
+                if (ord($item[$i]) >> 7) {
+                    $encode = true;
+                }
+            }
+        }
+        if ($encode === true && $key != 'password') {
+            $item = utf8_encode($item);   
+        }
+    }  
+    
+    /**
+    * Get the current class version number
+    * 
+    * @return string
+    */
+    public function getVersion() {
+        return self::ADLDAP_VERSION;
+    }
+    
+    /**
+    * Round a Windows timestamp down to seconds and remove the seconds between 1601-01-01 and 1970-01-01
+    * 
+    * @param long $windowsTime
+    * @return long $unixTime
+    */
+    public static function convertWindowsTimeToUnixTime($windowsTime) {
+      $unixTime = round($windowsTime / 10000000) - 11644477200; 
+      return $unixTime; 
+    }
+}
+
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/collections/adLDAPCollection.php b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPCollection.php
new file mode 100644
index 0000000..433d39f
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPCollection.php
@@ -0,0 +1,137 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Collection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+abstract class adLDAPCollection
+{
+    /**
+    * The current adLDAP connection via dependency injection
+    * 
+    * @var adLDAP
+    */
+    protected $adldap;
+    
+    /**
+    * The current object being modifed / called
+    * 
+    * @var mixed
+    */
+    protected $currentObject;
+    
+    /**
+    * The raw info array from Active Directory
+    * 
+    * @var array
+    */
+    protected $info;
+    
+    public function __construct($info, adLDAP $adldap) 
+    {
+        $this->setInfo($info);   
+        $this->adldap = $adldap;
+    }
+    
+    /**
+    * Set the raw info array from Active Directory
+    * 
+    * @param array $info
+    */
+    public function setInfo(array $info) 
+    {
+        if ($this->info && sizeof($info) >= 1) {
+            unset($this->info);
+        }
+        $this->info = $info;   
+    }
+    
+    /**
+    * Magic get method to retrieve data from the raw array in a formatted way
+    * 
+    * @param string $attribute
+    * @return mixed
+    */
+    public function __get($attribute)
+    {
+        if (isset($this->info[0]) && is_array($this->info[0])) {
+            foreach ($this->info[0] as $keyAttr => $valueAttr) {
+                if (strtolower($keyAttr) == strtolower($attribute)) {
+                    if ($this->info[0][strtolower($attribute)]['count'] == 1) {
+                        return $this->info[0][strtolower($attribute)][0];   
+                    }
+                    else {
+                        $array = array();
+                        foreach ($this->info[0][strtolower($attribute)] as $key => $value) {
+                            if ((string)$key != 'count') {
+                                $array[$key] = $value;
+                            } 
+                        }  
+                        return $array;   
+                    }
+                }   
+            }
+        }
+        else {
+            return NULL;   
+        }
+    }    
+    
+    /**
+    * Magic set method to update an attribute
+    * 
+    * @param string $attribute
+    * @param string $value
+    * @return bool
+    */
+    abstract public function __set($attribute, $value);
+    
+    /** 
+    * Magic isset method to check for the existence of an attribute 
+    * 
+    * @param string $attribute 
+    * @return bool 
+    */ 
+    public function __isset($attribute) {
+        if (isset($this->info[0]) && is_array($this->info[0])) { 
+            foreach ($this->info[0] as $keyAttr => $valueAttr) { 
+                if (strtolower($keyAttr) == strtolower($attribute)) { 
+                    return true; 
+                } 
+            } 
+        } 
+        return false; 
+     } 
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/collections/adLDAPComputerCollection.php b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPComputerCollection.php
new file mode 100644
index 0000000..09f82ca
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPComputerCollection.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage ComputerCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPComputerCollection extends adLDAPCollection 
+{
+    
+    public function __set($attribute, $value)
+    {
+
+    }
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/collections/adLDAPContactCollection.php b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPContactCollection.php
new file mode 100644
index 0000000..a9efad5
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPContactCollection.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage ContactCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPContactCollection extends adLDAPCollection 
+{
+    
+    public function __set($attribute, $value)
+    {
+
+    }
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/collections/adLDAPGroupCollection.php b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPGroupCollection.php
new file mode 100644
index 0000000..ef4af8d
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPGroupCollection.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage GroupCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPGroupCollection extends adLDAPCollection 
+{
+    
+    public function __set($attribute, $value)
+    {
+
+    }
+}
+?>
diff --git a/wiki/lib/plugins/authad/adLDAP/collections/adLDAPUserCollection.php b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPUserCollection.php
new file mode 100644
index 0000000..63fce5f
--- /dev/null
+++ b/wiki/lib/plugins/authad/adLDAP/collections/adLDAPUserCollection.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY 
+ * Version 4.0.4
+ * 
+ * PHP Version 5 with SSL and LDAP support
+ * 
+ * Written by Scott Barnett, Richard Hyland
+ *   email: scott@wiggumworld.com, adldap@richardhyland.com
+ *   http://adldap.sourceforge.net/
+ * 
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * 
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage UserCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPUserCollection extends adLDAPCollection 
+{
+    
+    public function __set($attribute, $value)
+    {
+
+    }
+}
+?>
diff --git a/wiki/lib/plugins/authad/auth.php b/wiki/lib/plugins/authad/auth.php
new file mode 100644
index 0000000..50f7084
--- /dev/null
+++ b/wiki/lib/plugins/authad/auth.php
@@ -0,0 +1,730 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+require_once(DOKU_PLUGIN.'authad/adLDAP/adLDAP.php');
+require_once(DOKU_PLUGIN.'authad/adLDAP/classes/adLDAPUtils.php');
+
+/**
+ * Active Directory authentication backend for DokuWiki
+ *
+ * This makes authentication with a Active Directory server much easier
+ * than when using the normal LDAP backend by utilizing the adLDAP library
+ *
+ * Usage:
+ *   Set DokuWiki's local.protected.php auth setting to read
+ *
+ *   $conf['authtype']       = 'authad';
+ *
+ *   $conf['plugin']['authad']['account_suffix']     = '@my.domain.org';
+ *   $conf['plugin']['authad']['base_dn']            = 'DC=my,DC=domain,DC=org';
+ *   $conf['plugin']['authad']['domain_controllers'] = 'srv1.domain.org,srv2.domain.org';
+ *
+ *   //optional:
+ *   $conf['plugin']['authad']['sso']                = 1;
+ *   $conf['plugin']['authad']['admin_username']     = 'root';
+ *   $conf['plugin']['authad']['admin_password']     = 'pass';
+ *   $conf['plugin']['authad']['real_primarygroup']  = 1;
+ *   $conf['plugin']['authad']['use_ssl']            = 1;
+ *   $conf['plugin']['authad']['use_tls']            = 1;
+ *   $conf['plugin']['authad']['debug']              = 1;
+ *   // warn user about expiring password this many days in advance:
+ *   $conf['plugin']['authad']['expirywarn']         = 5;
+ *
+ *   // get additional information to the userinfo array
+ *   // add a list of comma separated ldap contact fields.
+ *   $conf['plugin']['authad']['additional'] = 'field1,field2';
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author  James Van Lommel <jamesvl@gmail.com>
+ * @link    http://www.nosq.com/blog/2005/08/ldap-activedirectory-and-dokuwiki/
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ * @author  Jan Schumann <js@schumann-it.com>
+ */
+class auth_plugin_authad extends DokuWiki_Auth_Plugin {
+
+    /**
+     * @var array hold connection data for a specific AD domain
+     */
+    protected $opts = array();
+
+    /**
+     * @var array open connections for each AD domain, as adLDAP objects
+     */
+    protected $adldap = array();
+
+    /**
+     * @var bool message state
+     */
+    protected $msgshown = false;
+
+    /**
+     * @var array user listing cache
+     */
+    protected $users = array();
+
+    /**
+     * @var array filter patterns for listing users
+     */
+    protected $_pattern = array();
+
+    protected $_actualstart = 0;
+
+    protected $_grpsusers = array();
+
+    /**
+     * Constructor
+     */
+    public function __construct() {
+        global $INPUT;
+        parent::__construct();
+
+        // we load the config early to modify it a bit here
+        $this->loadConfig();
+
+        // additional information fields
+        if(isset($this->conf['additional'])) {
+            $this->conf['additional'] = str_replace(' ', '', $this->conf['additional']);
+            $this->conf['additional'] = explode(',', $this->conf['additional']);
+        } else $this->conf['additional'] = array();
+
+        // ldap extension is needed
+        if(!function_exists('ldap_connect')) {
+            if($this->conf['debug'])
+                msg("AD Auth: PHP LDAP extension not found.", -1);
+            $this->success = false;
+            return;
+        }
+
+        // Prepare SSO
+        if(!empty($_SERVER['REMOTE_USER'])) {
+
+            // make sure the right encoding is used
+            if($this->getConf('sso_charset')) {
+                $_SERVER['REMOTE_USER'] = iconv($this->getConf('sso_charset'), 'UTF-8', $_SERVER['REMOTE_USER']);
+            } elseif(!utf8_check($_SERVER['REMOTE_USER'])) {
+                $_SERVER['REMOTE_USER'] = utf8_encode($_SERVER['REMOTE_USER']);
+            }
+
+            // trust the incoming user
+            if($this->conf['sso']) {
+                $_SERVER['REMOTE_USER'] = $this->cleanUser($_SERVER['REMOTE_USER']);
+
+                // we need to simulate a login
+                if(empty($_COOKIE[DOKU_COOKIE])) {
+                    $INPUT->set('u', $_SERVER['REMOTE_USER']);
+                    $INPUT->set('p', 'sso_only');
+                }
+            }
+        }
+
+        // other can do's are changed in $this->_loadServerConfig() base on domain setup
+        $this->cando['modName'] = (bool)$this->conf['update_name'];
+        $this->cando['modMail'] = (bool)$this->conf['update_mail'];
+        $this->cando['getUserCount'] = true;
+    }
+
+    /**
+     * Load domain config on capability check
+     *
+     * @param string $cap
+     * @return bool
+     */
+    public function canDo($cap) {
+        //capabilities depend on config, which may change depending on domain
+        $domain = $this->_userDomain($_SERVER['REMOTE_USER']);
+        $this->_loadServerConfig($domain);
+        return parent::canDo($cap);
+    }
+
+    /**
+     * Check user+password [required auth function]
+     *
+     * Checks if the given user exists and the given
+     * plaintext password is correct by trying to bind
+     * to the LDAP server
+     *
+     * @author  James Van Lommel <james@nosq.com>
+     * @param string $user
+     * @param string $pass
+     * @return  bool
+     */
+    public function checkPass($user, $pass) {
+        if($_SERVER['REMOTE_USER'] &&
+            $_SERVER['REMOTE_USER'] == $user &&
+            $this->conf['sso']
+        ) return true;
+
+        $adldap = $this->_adldap($this->_userDomain($user));
+        if(!$adldap) return false;
+
+        return $adldap->authenticate($this->_userName($user), $pass);
+    }
+
+    /**
+     * Return user info [required auth function]
+     *
+     * Returns info about the given user needs to contain
+     * at least these fields:
+     *
+     * name    string  full name of the user
+     * mail    string  email address of the user
+     * grps    array   list of groups the user is in
+     *
+     * This AD specific function returns the following
+     * addional fields:
+     *
+     * dn         string    distinguished name (DN)
+     * uid        string    samaccountname
+     * lastpwd    int       timestamp of the date when the password was set
+     * expires    true      if the password expires
+     * expiresin  int       seconds until the password expires
+     * any fields specified in the 'additional' config option
+     *
+     * @author  James Van Lommel <james@nosq.com>
+     * @param string $user
+     * @param bool $requireGroups (optional) - ignored, groups are always supplied by this plugin
+     * @return array
+     */
+    public function getUserData($user, $requireGroups=true) {
+        global $conf;
+        global $lang;
+        global $ID;
+        $adldap = $this->_adldap($this->_userDomain($user));
+        if(!$adldap) return false;
+
+        if($user == '') return array();
+
+        $fields = array('mail', 'displayname', 'samaccountname', 'lastpwd', 'pwdlastset', 'useraccountcontrol');
+
+        // add additional fields to read
+        $fields = array_merge($fields, $this->conf['additional']);
+        $fields = array_unique($fields);
+        $fields = array_filter($fields);
+
+        //get info for given user
+        $result = $adldap->user()->info($this->_userName($user), $fields);
+        if($result == false){
+            return array();
+        }
+
+        //general user info
+        $info = array();
+        $info['name'] = $result[0]['displayname'][0];
+        $info['mail'] = $result[0]['mail'][0];
+        $info['uid']  = $result[0]['samaccountname'][0];
+        $info['dn']   = $result[0]['dn'];
+        //last password set (Windows counts from January 1st 1601)
+        $info['lastpwd'] = $result[0]['pwdlastset'][0] / 10000000 - 11644473600;
+        //will it expire?
+        $info['expires'] = !($result[0]['useraccountcontrol'][0] & 0x10000); //ADS_UF_DONT_EXPIRE_PASSWD
+
+        // additional information
+        foreach($this->conf['additional'] as $field) {
+            if(isset($result[0][strtolower($field)])) {
+                $info[$field] = $result[0][strtolower($field)][0];
+            }
+        }
+
+        // handle ActiveDirectory memberOf
+        $info['grps'] = $adldap->user()->groups($this->_userName($user),(bool) $this->opts['recursive_groups']);
+
+        if(is_array($info['grps'])) {
+            foreach($info['grps'] as $ndx => $group) {
+                $info['grps'][$ndx] = $this->cleanGroup($group);
+            }
+        }
+
+        // always add the default group to the list of groups
+        if(!is_array($info['grps']) || !in_array($conf['defaultgroup'], $info['grps'])) {
+            $info['grps'][] = $conf['defaultgroup'];
+        }
+
+        // add the user's domain to the groups
+        $domain = $this->_userDomain($user);
+        if($domain && !in_array("domain-$domain", (array) $info['grps'])) {
+            $info['grps'][] = $this->cleanGroup("domain-$domain");
+        }
+
+        // check expiry time
+        if($info['expires'] && $this->conf['expirywarn']){
+            $expiry = $adldap->user()->passwordExpiry($user);
+            if(is_array($expiry)){
+                $info['expiresat'] = $expiry['expiryts'];
+                $info['expiresin'] = round(($info['expiresat'] - time())/(24*60*60));
+
+                // if this is the current user, warn him (once per request only)
+                if(($_SERVER['REMOTE_USER'] == $user) &&
+                    ($info['expiresin'] <= $this->conf['expirywarn']) &&
+                    !$this->msgshown
+                ) {
+                    $msg = sprintf($this->getLang('authpwdexpire'), $info['expiresin']);
+                    if($this->canDo('modPass')) {
+                        $url = wl($ID, array('do'=> 'profile'));
+                        $msg .= ' <a href="'.$url.'">'.$lang['btn_profile'].'</a>';
+                    }
+                    msg($msg);
+                    $this->msgshown = true;
+                }
+            }
+        }
+
+        return $info;
+    }
+
+    /**
+     * Make AD group names usable by DokuWiki.
+     *
+     * Removes backslashes ('\'), pound signs ('#'), and converts spaces to underscores.
+     *
+     * @author  James Van Lommel (jamesvl@gmail.com)
+     * @param string $group
+     * @return string
+     */
+    public function cleanGroup($group) {
+        $group = str_replace('\\', '', $group);
+        $group = str_replace('#', '', $group);
+        $group = preg_replace('[\s]', '_', $group);
+        $group = utf8_strtolower(trim($group));
+        return $group;
+    }
+
+    /**
+     * Sanitize user names
+     *
+     * Normalizes domain parts, does not modify the user name itself (unlike cleanGroup)
+     *
+     * @author Andreas Gohr <gohr@cosmocode.de>
+     * @param string $user
+     * @return string
+     */
+    public function cleanUser($user) {
+        $domain = '';
+
+        // get NTLM or Kerberos domain part
+        list($dom, $user) = explode('\\', $user, 2);
+        if(!$user) $user = $dom;
+        if($dom) $domain = $dom;
+        list($user, $dom) = explode('@', $user, 2);
+        if($dom) $domain = $dom;
+
+        // clean up both
+        $domain = utf8_strtolower(trim($domain));
+        $user   = utf8_strtolower(trim($user));
+
+        // is this a known, valid domain? if not discard
+        if(!is_array($this->conf[$domain])) {
+            $domain = '';
+        }
+
+        // reattach domain
+        if($domain) $user = "$user@$domain";
+        return $user;
+    }
+
+    /**
+     * Most values in LDAP are case-insensitive
+     *
+     * @return bool
+     */
+    public function isCaseSensitive() {
+        return false;
+    }
+
+    /**
+     * Create a Search-String useable by adLDAPUsers::all($includeDescription = false, $search = "*", $sorted = true)
+     *
+     * @param array $filter
+     * @return string
+     */
+    protected function _constructSearchString($filter){
+        if (!$filter){
+            return '*';
+        }
+        $adldapUtils = new adLDAPUtils($this->_adldap(null));
+        $result = '*';
+        if (isset($filter['name'])) {
+            $result .= ')(displayname=*' . $adldapUtils->ldapSlashes($filter['name']) . '*';
+            unset($filter['name']);
+        }
+
+        if (isset($filter['user'])) {
+            $result .= ')(samAccountName=*' . $adldapUtils->ldapSlashes($filter['user']) . '*';
+            unset($filter['user']);
+        }
+
+        if (isset($filter['mail'])) {
+            $result .= ')(mail=*' . $adldapUtils->ldapSlashes($filter['mail']) . '*';
+            unset($filter['mail']);
+        }
+        return $result;
+    }
+
+    /**
+     * Return a count of the number of user which meet $filter criteria
+     *
+     * @param array $filter  $filter array of field/pattern pairs, empty array for no filter
+     * @return int number of users
+     */
+    public function getUserCount($filter = array()) {
+        $adldap = $this->_adldap(null);
+        if(!$adldap) {
+            dbglog("authad/auth.php getUserCount(): _adldap not set.");
+            return -1;
+        }
+        if ($filter == array()) {
+            $result = $adldap->user()->all();
+        } else {
+            $searchString = $this->_constructSearchString($filter);
+            $result = $adldap->user()->all(false, $searchString);
+            if (isset($filter['grps'])) {
+                $this->users = array_fill_keys($result, false);
+                $usermanager = plugin_load("admin", "usermanager", false);
+                $usermanager->setLastdisabled(true);
+                if (!isset($this->_grpsusers[$this->_filterToString($filter)])){
+                    $this->_fillGroupUserArray($filter,$usermanager->getStart() + 3*$usermanager->getPagesize());
+                } elseif (count($this->_grpsusers[$this->_filterToString($filter)]) < $usermanager->getStart() + 3*$usermanager->getPagesize()) {
+                    $this->_fillGroupUserArray($filter,$usermanager->getStart() + 3*$usermanager->getPagesize() - count($this->_grpsusers[$this->_filterToString($filter)]));
+                }
+                $result = $this->_grpsusers[$this->_filterToString($filter)];
+            } else {
+                $usermanager = plugin_load("admin", "usermanager", false);
+                $usermanager->setLastdisabled(false);
+            }
+
+        }
+
+        if (!$result) {
+            return 0;
+        }
+        return count($result);
+    }
+
+    /**
+     *
+     * create a unique string for each filter used with a group
+     *
+     * @param array $filter
+     * @return string
+     */
+    protected function _filterToString ($filter) {
+        $result = '';
+        if (isset($filter['user'])) {
+            $result .= 'user-' . $filter['user'];
+        }
+        if (isset($filter['name'])) {
+            $result .= 'name-' . $filter['name'];
+        }
+        if (isset($filter['mail'])) {
+            $result .= 'mail-' . $filter['mail'];
+        }
+        if (isset($filter['grps'])) {
+            $result .= 'grps-' . $filter['grps'];
+        }
+        return $result;
+    }
+
+    /**
+     * Create an array of $numberOfAdds users passing a certain $filter, including belonging
+     * to a certain group and save them to a object-wide array. If the array
+     * already exists try to add $numberOfAdds further users to it.
+     *
+     * @param array $filter
+     * @param int $numberOfAdds additional number of users requested
+     * @return int number of Users actually add to Array
+     */
+    protected function _fillGroupUserArray($filter, $numberOfAdds){
+        $this->_grpsusers[$this->_filterToString($filter)];
+        $i = 0;
+        $count = 0;
+        $this->_constructPattern($filter);
+        foreach ($this->users as $user => &$info) {
+            if($i++ < $this->_actualstart) {
+                continue;
+            }
+            if($info === false) {
+                $info = $this->getUserData($user);
+            }
+            if($this->_filter($user, $info)) {
+                $this->_grpsusers[$this->_filterToString($filter)][$user] = $info;
+                if(($numberOfAdds > 0) && (++$count >= $numberOfAdds)) break;
+            }
+        }
+        $this->_actualstart = $i;
+        return $count;
+    }
+
+    /**
+     * 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 userinfo (refer getUserData for internal userinfo details)
+     */
+    public function retrieveUsers($start = 0, $limit = 0, $filter = array()) {
+        $adldap = $this->_adldap(null);
+        if(!$adldap) return false;
+
+        if(!$this->users) {
+            //get info for given user
+            $result = $adldap->user()->all(false, $this->_constructSearchString($filter));
+            if (!$result) return array();
+            $this->users = array_fill_keys($result, false);
+        }
+
+        $i     = 0;
+        $count = 0;
+        $result = array();
+
+        if (!isset($filter['grps'])) {
+            $usermanager = plugin_load("admin", "usermanager", false);
+            $usermanager->setLastdisabled(false);
+            $this->_constructPattern($filter);
+            foreach($this->users as $user => &$info) {
+                if($i++ < $start) {
+                    continue;
+                }
+                if($info === false) {
+                    $info = $this->getUserData($user);
+                }
+                $result[$user] = $info;
+                if(($limit > 0) && (++$count >= $limit)) break;
+            }
+        } else {
+            $usermanager = plugin_load("admin", "usermanager", false);
+            $usermanager->setLastdisabled(true);
+            if (!isset($this->_grpsusers[$this->_filterToString($filter)]) || count($this->_grpsusers[$this->_filterToString($filter)]) < ($start+$limit)) {
+                $this->_fillGroupUserArray($filter,$start+$limit - count($this->_grpsusers[$this->_filterToString($filter)]) +1);
+            }
+            if (!$this->_grpsusers[$this->_filterToString($filter)]) return false;
+            foreach($this->_grpsusers[$this->_filterToString($filter)] as $user => &$info) {
+                if($i++ < $start) {
+                    continue;
+                }
+                $result[$user] = $info;
+                if(($limit > 0) && (++$count >= $limit)) break;
+            }
+
+        }
+        return $result;
+    }
+
+    /**
+     * Modify user data
+     *
+     * @param   string $user      nick of the user to be changed
+     * @param   array  $changes   array of field/value pairs to be changed
+     * @return  bool
+     */
+    public function modifyUser($user, $changes) {
+        $return = true;
+        $adldap = $this->_adldap($this->_userDomain($user));
+        if(!$adldap) {
+            msg($this->getLang('connectfail'), -1);
+            return false;
+        }
+
+        // password changing
+        if(isset($changes['pass'])) {
+            try {
+                $return = $adldap->user()->password($this->_userName($user),$changes['pass']);
+            } catch (adLDAPException $e) {
+                if ($this->conf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
+                $return = false;
+            }
+            if(!$return) msg($this->getLang('passchangefail'), -1);
+        }
+
+        // changing user data
+        $adchanges = array();
+        if(isset($changes['name'])) {
+            // get first and last name
+            $parts                     = explode(' ', $changes['name']);
+            $adchanges['surname']      = array_pop($parts);
+            $adchanges['firstname']    = join(' ', $parts);
+            $adchanges['display_name'] = $changes['name'];
+        }
+        if(isset($changes['mail'])) {
+            $adchanges['email'] = $changes['mail'];
+        }
+        if(count($adchanges)) {
+            try {
+                $return = $return & $adldap->user()->modify($this->_userName($user),$adchanges);
+            } catch (adLDAPException $e) {
+                if ($this->conf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
+                $return = false;
+            }
+            if(!$return) msg($this->getLang('userchangefail'), -1);
+        }
+
+        return $return;
+    }
+
+    /**
+     * Initialize the AdLDAP library and connect to the server
+     *
+     * When you pass null as domain, it will reuse any existing domain.
+     * Eg. the one of the logged in user. It falls back to the default
+     * domain if no current one is available.
+     *
+     * @param string|null $domain The AD domain to use
+     * @return adLDAP|bool true if a connection was established
+     */
+    protected function _adldap($domain) {
+        if(is_null($domain) && is_array($this->opts)) {
+            $domain = $this->opts['domain'];
+        }
+
+        $this->opts = $this->_loadServerConfig((string) $domain);
+        if(isset($this->adldap[$domain])) return $this->adldap[$domain];
+
+        // connect
+        try {
+            $this->adldap[$domain] = new adLDAP($this->opts);
+            return $this->adldap[$domain];
+        } catch(adLDAPException $e) {
+            if($this->conf['debug']) {
+                msg('AD Auth: '.$e->getMessage(), -1);
+            }
+            $this->success         = false;
+            $this->adldap[$domain] = null;
+        }
+        return false;
+    }
+
+    /**
+     * Get the domain part from a user
+     *
+     * @param string $user
+     * @return string
+     */
+    public function _userDomain($user) {
+        list(, $domain) = explode('@', $user, 2);
+        return $domain;
+    }
+
+    /**
+     * Get the user part from a user
+     *
+     * @param string $user
+     * @return string
+     */
+    public function _userName($user) {
+        list($name) = explode('@', $user, 2);
+        return $name;
+    }
+
+    /**
+     * Fetch the configuration for the given AD domain
+     *
+     * @param string $domain current AD domain
+     * @return array
+     */
+    protected function _loadServerConfig($domain) {
+        // prepare adLDAP standard configuration
+        $opts = $this->conf;
+
+        $opts['domain'] = $domain;
+
+        // add possible domain specific configuration
+        if($domain && is_array($this->conf[$domain])) foreach($this->conf[$domain] as $key => $val) {
+            $opts[$key] = $val;
+        }
+
+        // handle multiple AD servers
+        $opts['domain_controllers'] = explode(',', $opts['domain_controllers']);
+        $opts['domain_controllers'] = array_map('trim', $opts['domain_controllers']);
+        $opts['domain_controllers'] = array_filter($opts['domain_controllers']);
+
+        // compatibility with old option name
+        if(empty($opts['admin_username']) && !empty($opts['ad_username'])) $opts['admin_username'] = $opts['ad_username'];
+        if(empty($opts['admin_password']) && !empty($opts['ad_password'])) $opts['admin_password'] = $opts['ad_password'];
+        $opts['admin_password'] = conf_decodeString($opts['admin_password']); // deobfuscate
+
+        // we can change the password if SSL is set
+        if($opts['use_ssl'] || $opts['use_tls']) {
+            $this->cando['modPass'] = true;
+        } else {
+            $this->cando['modPass'] = false;
+        }
+
+        // adLDAP expects empty user/pass as NULL, we're less strict FS#2781
+        if(empty($opts['admin_username'])) $opts['admin_username'] = null;
+        if(empty($opts['admin_password'])) $opts['admin_password'] = null;
+
+        // user listing needs admin priviledges
+        if(!empty($opts['admin_username']) && !empty($opts['admin_password'])) {
+            $this->cando['getUsers'] = true;
+        } else {
+            $this->cando['getUsers'] = false;
+        }
+
+        return $opts;
+    }
+
+    /**
+     * Returns a list of configured domains
+     *
+     * The default domain has an empty string as key
+     *
+     * @return array associative array(key => domain)
+     */
+    public function _getConfiguredDomains() {
+        $domains = array();
+        if(empty($this->conf['account_suffix'])) return $domains; // not configured yet
+
+        // add default domain, using the name from account suffix
+        $domains[''] = ltrim($this->conf['account_suffix'], '@');
+
+        // find additional domains
+        foreach($this->conf as $key => $val) {
+            if(is_array($val) && isset($val['account_suffix'])) {
+                $domains[$key] = ltrim($val['account_suffix'], '@');
+            }
+        }
+        ksort($domains);
+
+        return $domains;
+    }
+
+    /**
+     * Check provided user and userinfo for matching patterns
+     *
+     * The patterns are set up with $this->_constructPattern()
+     *
+     * @author Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param string $user
+     * @param array  $info
+     * @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;
+    }
+
+    /**
+     * Create a pattern for $this->_filter()
+     *
+     * @author Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param array $filter
+     */
+    protected function _constructPattern($filter) {
+        $this->_pattern = array();
+        foreach($filter as $item => $pattern) {
+            $this->_pattern[$item] = '/'.str_replace('/', '\/', $pattern).'/i'; // allow regex characters
+        }
+    }
+}
diff --git a/wiki/lib/plugins/authad/conf/default.php b/wiki/lib/plugins/authad/conf/default.php
new file mode 100644
index 0000000..f2834c8
--- /dev/null
+++ b/wiki/lib/plugins/authad/conf/default.php
@@ -0,0 +1,17 @@
+<?php
+
+$conf['account_suffix']     = '';
+$conf['base_dn']            = '';
+$conf['domain_controllers'] = '';
+$conf['sso']                = 0;
+$conf['sso_charset']        = '';
+$conf['admin_username']     = '';
+$conf['admin_password']     = '';
+$conf['real_primarygroup']  = 0;
+$conf['use_ssl']            = 0;
+$conf['use_tls']            = 0;
+$conf['debug']              = 0;
+$conf['expirywarn']         = 0;
+$conf['additional']         = '';
+$conf['update_name']        = 0;
+$conf['update_mail']        = 0;
diff --git a/wiki/lib/plugins/authad/conf/metadata.php b/wiki/lib/plugins/authad/conf/metadata.php
new file mode 100644
index 0000000..6b0fc16
--- /dev/null
+++ b/wiki/lib/plugins/authad/conf/metadata.php
@@ -0,0 +1,17 @@
+<?php
+
+$meta['account_suffix']     = array('string','_caution' => 'danger');
+$meta['base_dn']            = array('string','_caution' => 'danger');
+$meta['domain_controllers'] = array('string','_caution' => 'danger');
+$meta['sso']                = array('onoff','_caution' => 'danger');
+$meta['sso_charset']        = array('string','_caution' => 'danger');
+$meta['admin_username']     = array('string','_caution' => 'danger');
+$meta['admin_password']     = array('password','_caution' => 'danger','_code' => 'base64');
+$meta['real_primarygroup']  = array('onoff','_caution' => 'danger');
+$meta['use_ssl']            = array('onoff','_caution' => 'danger');
+$meta['use_tls']            = array('onoff','_caution' => 'danger');
+$meta['debug']              = array('onoff','_caution' => 'security');
+$meta['expirywarn']         = array('numeric', '_min'=>0,'_caution' => 'danger');
+$meta['additional']         = array('string','_caution' => 'danger');
+$meta['update_name']        = array('onoff','_caution' => 'danger');
+$meta['update_mail']        = array('onoff','_caution' => 'danger');
diff --git a/wiki/lib/plugins/authad/lang/ar/lang.php b/wiki/lib/plugins/authad/lang/ar/lang.php
new file mode 100644
index 0000000..173c80f
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ar/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Mohamed Belhsine <b.mohamed897@gmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
+ */
+$lang['domain']                = 'مجال تسجيل الدخول';
+$lang['authpwdexpire']         = 'ستنتهي صلاحية كلمة السر في %d . عليك بتغييرها سريعا.';
diff --git a/wiki/lib/plugins/authad/lang/ar/settings.php b/wiki/lib/plugins/authad/lang/ar/settings.php
new file mode 100644
index 0000000..d2a2e2a
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ar/settings.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author alhajr <alhajr300@gmail.com>
+ */
+$lang['account_suffix']        = 'لاحقة الحساب الخاص بك. على سبيل المثال. <code>@my.domain.org</code>';
+$lang['domain_controllers']    = 'قائمة مفصولة بفواصل من وحدات التحكم بالمجال. على سبيل المثال. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_password']        = 'كلمة المرور للمستخدم أعلاه.';
+$lang['real_primarygroup']     = 'ينبغي أن تحل المجموعة الأساسية الحقيقية بدلاً من افتراض "Domain Users" (أبطأ).';
+$lang['expirywarn']            = 'عدد الأيام المقدمة لتحذير المستخدم حول كلمة مرور منتهية الصلاحية. (0) للتعطيل.';
diff --git a/wiki/lib/plugins/authad/lang/bg/lang.php b/wiki/lib/plugins/authad/lang/bg/lang.php
new file mode 100644
index 0000000..3de5df6
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/bg/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['authpwdexpire']         = 'Срока на паролата ви ще изтече след %d дни. Препоръчително е да я смените по-скоро.';
diff --git a/wiki/lib/plugins/authad/lang/bg/settings.php b/wiki/lib/plugins/authad/lang/bg/settings.php
new file mode 100644
index 0000000..bf7a2d8
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/bg/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['account_suffix']        = 'Наставка на акаунта Ви. Например <code>@някакъв.домейн.org</code>';
+$lang['base_dn']               = 'Вашият основен DN. Например <code>DC=моят,DC=домейн,DC=org</code>';
+$lang['domain_controllers']    = 'Domain controller списък, разделете сървърите със запетая. Например <code>сървър1.домейн.org,сървър2.домейн.org</code>';
+$lang['admin_username']        = 'Привилегирован Active Directory потребител с достъп до данните на останалите потребители. Не е задължително, но е необходимо за някои функционалности като изпращането на имейл за абонаменти.';
+$lang['admin_password']        = 'Паролата на горния потребител.';
+$lang['sso']                   = 'Да се ползва ли еднократно вписване чрез Kerberos или NTLM?';
+$lang['real_primarygroup']     = 'Да се извлича ли истинската група вместо да се предполага "Domain Users" (по-бавно)';
+$lang['use_ssl']               = 'Ползване на SSL свързаност? Не отбелязвайте TLS (по-долу) ако включите опцията.';
+$lang['use_tls']               = 'Ползване на TLS свързаност? Не отбелязвайте SSL (по-горе) ако включите опцията.';
+$lang['debug']                 = 'Показване на допълнителна debug информация при грешка?';
+$lang['expirywarn']            = 'Предупреждаване на потребителите Х дни преди изтичане валидността на паролата им. Въведете 0 за изключване.';
+$lang['additional']            = 'Списък с допълнителни AD атрибути за извличане от потребителските данни (разделяйте ги със запетая). Ползва се от няколко приставки.';
diff --git a/wiki/lib/plugins/authad/lang/ca/lang.php b/wiki/lib/plugins/authad/lang/ca/lang.php
new file mode 100644
index 0000000..5669205
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ca/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Daniel López Prat <daniel@6temes.cat>
+ * @author Pauet <pauet@gmx.com>
+ * @author controlonline.net <controlonline.net@gmail.com>
+ */
+$lang['domain']                = 'Logo Domini';
+$lang['authpwdexpire']         = 'La vostra contrasenya caducarà en %d dies, l\'hauríeu de canviar aviat.';
+$lang['passchangefail']        = 'Ha fallat el canviar el password. Es possible que no s\'hagi complert la política de passwords';
+$lang['userchangefail']        = 'Ha fallat el canvi d\'atributs. Pot ser no tinguis compte amb permisos per fer canvis.';
+$lang['connectfail']           = 'Ha fallat la connexió amb servidor l\'Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/ca/settings.php b/wiki/lib/plugins/authad/lang/ca/settings.php
new file mode 100644
index 0000000..161f552
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ca/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author controlonline.net <controlonline.net@gmail.com>
+ * @author Àngel Pérez Beroy <aperezberoy@gmail.com>
+ * @author David Surroca <david.tb303@gmail.com>
+ */
+$lang['account_suffix']        = 'El teu nom de compte. Ej.<code>@my.domain.org</code>';
+$lang['base_dn']               = 'Nom base DN. Ej. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Llista separada per coma dels controladors de domini. Ej.<code>DC=my,DC=domain,DC=org</code>';
+$lang['admin_username']        = 'Un usuari de Directori Actiu autoritzat a accedir a les dades de tots els usuaris. Opcional, però necessari per a certes accions, com enviar correus per subscripció.';
+$lang['admin_password']        = 'La contrasenya de l\'usuari referit abans.
+';
+$lang['sso']                   = 'S\'hauria de fer servir Kerberos o NTLM per inici de sessió únic?';
+$lang['debug']                 = 'Mostrar informació addicional de depuració en cas d\'error?';
+$lang['expirywarn']            = 'Dies per endavant en avisar l\'usuari sobre la caducitat de la contrasenya. 0 per desactivar.';
+$lang['update_mail']           = 'Permetre els usuaris actualitzar la seva adreça de correu electrònic?';
diff --git a/wiki/lib/plugins/authad/lang/cs/lang.php b/wiki/lib/plugins/authad/lang/cs/lang.php
new file mode 100644
index 0000000..91e91d0
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/cs/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Miroslav Svoboda <msv@email.cz>
+ */
+$lang['domain']                = 'Přihlašovací doména';
+$lang['authpwdexpire']         = 'Platnost vašeho hesla vyprší za %d dní, měli byste ho změnit co nejdříve.';
+$lang['passchangefail']        = 'Změna hesla selhala. Možná nebyla dodržena pravidla pro jejich tvorbu?';
+$lang['userchangefail']        = 'Změna atributů uživatele selhala. Možná nemá váš účet dostatečná oprávnění pro provádění změn. ';
+$lang['connectfail']           = 'Připojení k serveru Active Directory selhalo.';
diff --git a/wiki/lib/plugins/authad/lang/cs/settings.php b/wiki/lib/plugins/authad/lang/cs/settings.php
new file mode 100644
index 0000000..c0e7895
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/cs/settings.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Daniel Slováček <danslo@danslo.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ */
+$lang['account_suffix']        = 'Přípona vašeho účtu, tj. <code>@moje.domena.org</code>';
+$lang['base_dn']               = 'Vaše doménové jméno DN. tj. <code>DC=moje,DC=domena,DC=org</code>';
+$lang['domain_controllers']    = 'Seznam čárkou oddělených kontrolérů, tj. <code>srv1.domena.org,srv2.domena.org</code>';
+$lang['admin_username']        = 'Privilegovaný uživatel Active Directory s přístupem ke všem datům. Volitelně, ale nutné pro určité akce typu zasílání mailů.';
+$lang['admin_password']        = 'Heslo uživatele výše';
+$lang['sso']                   = 'Chcete přihlašování Single-Sign-On pomocí jádra Kerberos nebo NTLM ( autentizační protokol obvyklý ve Windows)?';
+$lang['sso_charset']           = 'Znaková sada kterou bude webserverem přenášeno uživatelské jméno pro Kerberos nebo NTLM. Prázdné pro UTF-8 nebo latin-1. Vyžaduje rozšíření iconv.';
+$lang['real_primarygroup']     = 'Má být zjištěna primární skupina namísto vyhodnocení hodnoty "doménoví uživatelé" (pomalejší)';
+$lang['use_ssl']               = 'Použít spojení SSL? Pokud ano, nevyužívejte TLS níže.';
+$lang['use_tls']               = 'Použít spojení TLS? Pokud ano, nevyužívejte SSL výše.';
+$lang['debug']                 = 'Zobrazit dodatečné debugovací výstupy při chybách?';
+$lang['expirywarn']            = 'Dny mezi varováním o vypršení hesla uživatele a jeho vypršením. 0 značí vypnuto.';
+$lang['additional']            = 'Čárkou oddělený seznam dodatečných atributů získávaných z uživatelských dat. Využito některými pluginy.';
+$lang['update_name']           = 'Povolit uživatelům upravit jejich AD zobrazované jméno?';
+$lang['update_mail']           = 'Povolit uživatelům upravit svou emailovou adresu?';
diff --git a/wiki/lib/plugins/authad/lang/cy/lang.php b/wiki/lib/plugins/authad/lang/cy/lang.php
new file mode 100644
index 0000000..8cc3746
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/cy/lang.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Welsh language file for addomain plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <gohr@cosmocode.de>
+ * @author Alan Davies <ben.brynsadler@gmail.com>
+ */
+
+$lang['domain']          = 'Parth Mewngofnodi';
+$lang['authpwdexpire']   = 'Bydd eich cyfrinair yn dod i ben mewn %d diwrnod, dylech chi ei newid e\'n fuan.';
+$lang['passchangefail']  = 'Methodd newid y cyfrinair. Posib roedd y cyfrinair yn annilys?';
+$lang['userchangefail']  = 'Methodd newid priodoleddau defnyddiwr. Posib \'sdim hawliau \'da chi i wneud newidiadau?';
+$lang['connectfail']     = 'Methodd y cysylltiad i weinydd yr Active Directory.';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authad/lang/cy/settings.php b/wiki/lib/plugins/authad/lang/cy/settings.php
new file mode 100644
index 0000000..e343485
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/cy/settings.php
@@ -0,0 +1,15 @@
+<?php
+
+$lang['account_suffix']     = 'Olddodiad eich cyfrif. Ee. <code>@my.domain.org</code>';
+$lang['base_dn']            = 'Sail eich DN. Eg. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers'] = 'Rhestr gwahanwyd gan goma o reolwyr Parth. Ee. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']     = 'Defnyddiwr Active Directory breintiedig gyda mynediad i ddata pob defnyddiwr arall. Yn opsiynol, ond yn hanfodol ar gyfer gweithredoedd penodol fel anfon ebyst tanysgrifio.';
+$lang['admin_password']     = 'Cyfrinair y defnyddiwr uchod.';
+$lang['sso']                = 'A ddylai Mewngofnodi-Unigol gan Kerberos neu NTLM gael ei ddefnyddio?';
+$lang['sso_charset']        = 'Y set nod mae\'ch gweinydd gwe yn pasio defnyddair Kerberos neu NTLM ynddi. Gwag ar gyfer UTF-8 neu latin-1. Bydd angen estyniad iconv.';
+$lang['real_primarygroup']  = 'Os ydy\'r prif grŵp real yn cael ei hadfer yn hytrach na thybio "Defnyddwyr Parth" (arafach).';
+$lang['use_ssl']            = 'Defnyddio cysylltiad SSL? Os ydych chi\'n defnyddio hwn, peidiwch â galluogi TLS isod.';
+$lang['use_tls']            = 'Defnyddio cysylltiad TLS? Os ydych chi\'n defnyddio hwn, peidiwch â galluogi SSL uchod.';
+$lang['debug']              = 'Dangos allbwn dadfygio ychwanegol ar wallau?';
+$lang['expirywarn']         = 'Diwrnodau o flaen llaw i rybuddio defnyddwyr o ran cyfrinair yn dod i ben. 0 i analluogi.';
+$lang['additional']         = 'Rhestr a wahanwyd gan goma o briodoleddau AD ychwanegol i nôl o ddata defnyddiwr. Defnyddiwyd gan rai ategion.';
diff --git a/wiki/lib/plugins/authad/lang/da/lang.php b/wiki/lib/plugins/authad/lang/da/lang.php
new file mode 100644
index 0000000..6badbaf
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/da/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ */
+$lang['domain']                = 'Logondomæne';
+$lang['authpwdexpire']         = 'Din adgangskode vil udløbe om %d dage, du bør ændre det snart.';
+$lang['passchangefail']        = 'Kunne ikke skifte adgangskoden. Måske blev adgangskodepolitikken ikke opfyldt?';
+$lang['connectfail']           = 'Kunne ikke forbinde til Active Directory serveren.';
diff --git a/wiki/lib/plugins/authad/lang/da/settings.php b/wiki/lib/plugins/authad/lang/da/settings.php
new file mode 100644
index 0000000..8b2d624
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/da/settings.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Soren Birk <soer9648@hotmail.com>
+ * @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['account_suffix']        = 'Dit konto suffiks. F.eks. <code>@mit.domæne.dk</code>';
+$lang['base_dn']               = 'Dit grund DN. F.eks. <code>DC=mit,DC=domæne,DC=dk</code>';
+$lang['domain_controllers']    = 'En kommasepareret liste over domænecontrollere. F.eks. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'En privilegeret Active Directory bruger med adgang til alle andre brugeres data. Valgfri, men skal bruges til forskellige handlinger såsom at sende abonnement e-mails.';
+$lang['admin_password']        = 'Kodeordet til den ovenstående bruger.';
+$lang['sso']                   = 'Bør Single-Sign-On via Kerberos eller NTLM bruges?';
+$lang['real_primarygroup']     = 'Bør den korrekte primære gruppe findes i stedet for at antage "Domain Users" (langsommere)';
+$lang['use_ssl']               = 'Benyt SSL forbindelse? hvis ja, vælg ikke TLS herunder.';
+$lang['use_tls']               = 'Benyt TLS forbindelse? hvis ja, vælg ikke SSL herover.';
+$lang['debug']                 = 'Vis yderligere debug output ved fejl?';
+$lang['expirywarn']            = 'Dage før brugere skal advares om udløben adgangskode. 0 for at deaktivere.';
+$lang['additional']            = 'En kommasepareret liste over yderligere AD attributter der skal hentes fra brugerdata. Brug af nogen udvidelser.';
+$lang['update_name']           = 'Tillad at brugere opdaterer deres visningnavn i AD?';
+$lang['update_mail']           = 'Tillad at brugere opdaterer deres e-mail adresse?';
diff --git a/wiki/lib/plugins/authad/lang/de-informal/lang.php b/wiki/lib/plugins/authad/lang/de-informal/lang.php
new file mode 100644
index 0000000..3166798
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/de-informal/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <gohr@cosmocode.de>
+ * @author rnck <dokuwiki@rnck.de>
+ */
+$lang['domain']                = 'Login Domäne';
+$lang['authpwdexpire']         = 'Dein Passwort läuft in %d Tag(en) ab. Du solltest es es frühzeitig ändern.';
+$lang['passchangefail']        = 'Das Passwort konnte nicht geändert werden. Eventuell wurde die Passwort-Richtlinie nicht eingehalten.';
+$lang['userchangefail']        = 'Nutzerattribute konnten nicht geändert werden. Möglicherweise hat Dein Account nicht die erforderlichen Berechtigungen.';
+$lang['connectfail']           = 'Verbindung zum Active Directory Server fehlgeschlagen.';
diff --git a/wiki/lib/plugins/authad/lang/de-informal/settings.php b/wiki/lib/plugins/authad/lang/de-informal/settings.php
new file mode 100644
index 0000000..4daa81d
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/de-informal/settings.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Volker Bödker <volker@boedker.de>
+ * @author rnck <dokuwiki@rnck.de>
+ * @author Felix <j.felix@mueller-donath.de>
+ */
+$lang['account_suffix']        = 'Dein Account-Suffix. Z.B. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Dein Base-DN. Z.B. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Eine Komma-separierte Liste von Domänen-Controllern. Z.B. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Ein privilegierter Active Directory-Benutzer mit Zugriff zu allen anderen Benutzerdaten. Optional, aber wird benötigt für Aktionen wie z. B. dass Senden von Benachrichtigungs-Mails.';
+$lang['admin_password']        = 'Das Passwort des obigen Benutzers.';
+$lang['sso']                   = 'Soll Single-Sign-On via Kerberos oder NTLM benutzt werden?';
+$lang['sso_charset']           = 'Der Zeichensatz in dem Kerberos oder NTLM den Usernamen übergibt. Leer lassen für UTF-8 oder latin-1. Erfordert die Erweiterung iconv.';
+$lang['real_primarygroup']     = 'Soll die echte primäre Gruppe aufgelöst werden anstelle der Annahme "Domain Users" (langsamer)';
+$lang['use_ssl']               = 'SSL-Verbindung benutzen? Falls ja, TLS unterhalb nicht aktivieren.';
+$lang['use_tls']               = 'TLS-Verbindung benutzen? Falls ja, SSL oberhalb nicht aktivieren.';
+$lang['debug']                 = 'Zusätzliche Debug-Informationen bei Fehlern anzeigen?';
+$lang['expirywarn']            = 'Tage im Voraus um Benutzer über ablaufende Passwörter zu informieren. 0 zum Ausschalten.';
+$lang['additional']            = 'Eine Komma-separierte Liste von zusätzlichen AD-Attributen, die von den Benutzerobjekten abgefragt werden. Wird von einigen Plugins benutzt.';
+$lang['update_name']           = 'Nutzern erlauben ihren AD Anzeigenamen zu aktualisieren?';
+$lang['update_mail']           = 'Nutzern erlauben ihre E-Mail-Adresse zu aktualisieren?';
diff --git a/wiki/lib/plugins/authad/lang/de/lang.php b/wiki/lib/plugins/authad/lang/de/lang.php
new file mode 100644
index 0000000..335cd61
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/de/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <gohr@cosmocode.de>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ * @author Uwe Benzelrath <uwebenzelrath@gmail.com>
+ */
+$lang['domain']                = 'Anmelde-Domäne';
+$lang['authpwdexpire']         = 'Ihr Passwort läuft in %d Tag(en) ab. Sie sollten es frühzeitig ändern.';
+$lang['passchangefail']        = 'Kennwortänderung fehlgeschlagen. Entspricht das Kennwort der Richtlinie?';
+$lang['userchangefail']        = 'Änderung der Nutzerattribute fehlgeschlagen. Möglicherweise hat ihr Benutzerkonto nicht die nötigen Rechte um diese Änderungen durchzuführen';
+$lang['connectfail']           = 'Verbindung zum Active Directory Server fehlgeschlagen.';
diff --git a/wiki/lib/plugins/authad/lang/de/settings.php b/wiki/lib/plugins/authad/lang/de/settings.php
new file mode 100644
index 0000000..5708411
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/de/settings.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Ben Fey <benedikt.fey@beck-heun.de>
+ * @author Jonas Gröger <jonas.groeger@gmail.com>
+ * @author Carsten Perthel <carsten@cpesoft.com>
+ */
+$lang['account_suffix']        = 'Ihr Account-Suffix. Z. B. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Ihr Base-DN. Z. B. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Eine Komma-separierte Liste von Domänen-Controllern. Z. B. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Ein priviligierter Active Directory-Benutzer mit Zugriff zu allen anderen Benutzerdaten. Optional, aber wird benötigt für Aktionen wie z. B. dass Senden von Benachrichtigungs-Mails.';
+$lang['admin_password']        = 'Das Passwort des obigen Benutzers.';
+$lang['sso']                   = 'Soll Single-Sign-On via Kerberos oder NTLM benutzt werden?';
+$lang['sso_charset']           = 'Der Zeichensatz, mit dem der Server den Kerberos- oder NTLM-Benutzernamen versendet. Leer lassen für UTF-8 oder latin-1. Benötigt die iconv-Erweiterung.';
+$lang['real_primarygroup']     = 'Soll die echte primäre Gruppe aufgelöst werden anstelle der Annahme "Domain Users" (langsamer)';
+$lang['use_ssl']               = 'SSL-Verbindung benutzen? Falls ja, TLS unterhalb nicht aktivieren.';
+$lang['use_tls']               = 'TLS-Verbindung benutzen? Falls ja, SSL oberhalb nicht aktivieren.';
+$lang['debug']                 = 'Zusätzliche Debug-Informationen bei Fehlern anzeigen?';
+$lang['expirywarn']            = 'Tage im Voraus um Benutzer über ablaufende Passwörter zu informieren. 0 zum Ausschalten.';
+$lang['additional']            = 'Eine Komma-separierte Liste von zusätzlichen AD-Attributen, die von den Benutzerobjekten abgefragt werden. Wird von einigen Plugins benutzt.';
+$lang['update_name']           = 'Benutzern erlauben, ihren AD Anzeige-Namen zu ändern?';
+$lang['update_mail']           = 'Benutzern erlauben, ihre E-Mail-Adresse zu ändern?';
diff --git a/wiki/lib/plugins/authad/lang/el/lang.php b/wiki/lib/plugins/authad/lang/el/lang.php
new file mode 100644
index 0000000..c6064f0
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/el/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ */
+$lang['authpwdexpire']         = 'Ο κωδικός πρόσβασης θα λήξει σε %d ημέρες. Προτείνουμε να τον αλλάξετε σύντομα.';
diff --git a/wiki/lib/plugins/authad/lang/el/settings.php b/wiki/lib/plugins/authad/lang/el/settings.php
new file mode 100644
index 0000000..b7608df
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/el/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author chris taklis <ctaklis@gmail.com>
+ */
+$lang['admin_password']        = 'Ο κωδικός του παραπάνω χρήστη.';
diff --git a/wiki/lib/plugins/authad/lang/en/lang.php b/wiki/lib/plugins/authad/lang/en/lang.php
new file mode 100644
index 0000000..3e8a9e2
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/en/lang.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * English language file for addomain plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <gohr@cosmocode.de>
+ */
+
+$lang['domain']          = 'Logon Domain';
+$lang['authpwdexpire']   = 'Your password will expire in %d days, you should change it soon.';
+$lang['passchangefail']  = 'Failed to change the password. Maybe the password policy was not met?';
+$lang['userchangefail']  = 'Failed to change user attributes. Maybe your account does not have permissions to make changes?';
+$lang['connectfail']     = 'Failed to connect to Active Directory server.';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authad/lang/en/settings.php b/wiki/lib/plugins/authad/lang/en/settings.php
new file mode 100644
index 0000000..9e7a7c3
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/en/settings.php
@@ -0,0 +1,17 @@
+<?php
+
+$lang['account_suffix']     = 'Your account suffix. Eg. <code>@my.domain.org</code>';
+$lang['base_dn']            = 'Your base DN. Eg. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers'] = 'A comma separated list of Domain controllers. Eg. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']     = 'A privileged Active Directory user with access to all other user\'s data. Optional, but needed for certain actions like sending subscription mails.';
+$lang['admin_password']     = 'The password of the above user.';
+$lang['sso']                = 'Should Single-Sign-On via Kerberos or NTLM be used?';
+$lang['sso_charset']        = 'The charset your webserver will pass the Kerberos or NTLM username in. Empty for UTF-8 or latin-1. Requires the iconv extension.';
+$lang['real_primarygroup']  = 'Should the real primary group be resolved instead of assuming "Domain Users" (slower).';
+$lang['use_ssl']            = 'Use SSL connection? If used, do not enable TLS below.';
+$lang['use_tls']            = 'Use TLS connection? If used, do not enable SSL above.';
+$lang['debug']              = 'Display additional debugging output on errors?';
+$lang['expirywarn']         = 'Days in advance to warn user about expiring password. 0 to disable.';
+$lang['additional']         = 'A comma separated list of additional AD attributes to fetch from user data. Used by some plugins.';
+$lang['update_name']        = 'Allow users to update their AD display name?';
+$lang['update_mail']        = 'Allow users to update their email address?';
diff --git a/wiki/lib/plugins/authad/lang/eo/lang.php b/wiki/lib/plugins/authad/lang/eo/lang.php
new file mode 100644
index 0000000..94580c6
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/eo/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Robert Bogenschneider <bogi@uea.org>
+ */
+$lang['domain']                = 'Ensaluta domajno';
+$lang['authpwdexpire']         = 'Via pasvorto malvalidos post %d tagoj, prefere ŝanĝu ĝin baldaũ.';
diff --git a/wiki/lib/plugins/authad/lang/eo/settings.php b/wiki/lib/plugins/authad/lang/eo/settings.php
new file mode 100644
index 0000000..cf9cad0
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/eo/settings.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Robert Bogenschneider <bogi@uea.org>
+ */
+$lang['account_suffix']        = 'Via konto-aldonaĵo, ekz. <code>@mia.domajno.lando</code>';
+$lang['base_dn']               = 'Via baza DN, ekz. <code>DC=mia,DC=domajno,DC=lando</code>';
+$lang['domain_controllers']    = 'Komodisigita listo de domajno-serviloj, ekz. <code>srv1.domajno.lando,srv2.domajno.lando</code>';
+$lang['admin_username']        = 'Privilegiita Aktiv-Dosieruja uzanto kun aliro al ĉiuj uzantaj datumoj. Libervole, sed necesa por iuj agadoj kiel sendi abonan retpoŝton.';
+$lang['admin_password']        = 'La pasvorto de tiu uzanto.';
+$lang['sso']                   = 'Ĉu uzi Sola Aliro tra Kerberos aŭ NTLM?';
+$lang['sso_charset']           = 'Per kiu karaktraro via retservilo pludonas uzantonomojn al Kerberos aŭ NTLM? Malplena por UTF-8 aŭ latin-1. Bezonas iconv-aldonaĵon.';
+$lang['real_primarygroup']     = 'Ĉu trovi la veran ĉefan grupon anstataŭ supozi "Domajnuzantoj" (pli malrapida)?';
+$lang['use_ssl']               = 'Ĉu uzi SSL-konekton? Se jes, ne aktivigu TLS sube.';
+$lang['use_tls']               = 'Ĉu uzi TLS-konekton? Se jes, ne aktivigu SSL supre.';
+$lang['debug']                 = 'Ĉu montri aldonajn informojn dum eraroj?';
+$lang['expirywarn']            = 'Tagoj da antaŭaverto pri malvalidiĝonta pasvorto. 0 por malebligi.';
+$lang['additional']            = 'Komodisigita listo de aldonaj AD-atributoj por preni el uzantaj datumoj. Uzita de iuj kromaĵoj.';
diff --git a/wiki/lib/plugins/authad/lang/es/lang.php b/wiki/lib/plugins/authad/lang/es/lang.php
new file mode 100644
index 0000000..381db9f
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/es/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Juan De La Cruz <juann.dlc@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mauricio Segura <maose38@yahoo.es>
+ * @author Romano <romanocl@outlook.com>
+ */
+$lang['domain']                = 'Dominio de inicio';
+$lang['authpwdexpire']         = 'Su contraseña caducara en %d días, debería cambiarla lo antes posible';
+$lang['passchangefail']        = 'Error al cambiar la contraseña. ¿Tal vez no se cumplió la directiva de contraseñas?';
+$lang['userchangefail']        = 'Falló al intentar modificar los atributos del usuario.  Puede ser que su cuenta no tiene permisos para realizar cambios?';
+$lang['connectfail']           = 'Error al conectar con el servidor de Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/es/settings.php b/wiki/lib/plugins/authad/lang/es/settings.php
new file mode 100644
index 0000000..7892222
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/es/settings.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author monica <may.dorado@gmail.com>
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Juan De La Cruz <juann.dlc@gmail.com>
+ * @author Eloy <ej.perezgomez@gmail.com>
+ * @author David Roy <davidroyapp@gmail.com>
+ */
+$lang['account_suffix']        = 'Su cuenta, sufijo. Ejem. <code> @ my.domain.org </code>';
+$lang['base_dn']               = 'Su base DN. Ejem. <code>DC=my,DC=dominio,DC=org</code>';
+$lang['domain_controllers']    = 'Una lista separada por coma de los controladores de dominios. Ejem. <code>srv1.dominio.org,srv2.dominio.org</code>';
+$lang['admin_username']        = 'Un usuario con privilegios de Active Directory con acceso a los datos de cualquier otro usuario. Opcional, pero es necesario para determinadas acciones como el envío de suscripciones de correos electrónicos.';
+$lang['admin_password']        = 'La contraseña del usuario anterior.';
+$lang['sso']                   = 'En caso de inicio de sesión usará ¿Kerberos o NTLM?';
+$lang['sso_charset']           = 'La codificación con que tu servidor web pasará el nombre de usuario Kerberos o NTLM. Si es UTF-8 o latin-1 dejar en blanco. Requiere la extensión iconv.';
+$lang['real_primarygroup']     = 'Resolver el grupo primario real en vez de asumir "Domain Users" (más lento)';
+$lang['use_ssl']               = '¿Usar conexión SSL? Si se usa, no habilitar TLS abajo.';
+$lang['use_tls']               = '¿Usar conexión TLS? Si se usa, no habilitar SSL arriba.';
+$lang['debug']                 = 'Mostrar información adicional de depuración sobre los errores?';
+$lang['expirywarn']            = 'Días por adelantado para avisar al usuario de que contraseña expirará. 0 para deshabilitar.';
+$lang['additional']            = 'Una lista separada por comas de atributos AD adicionales a obtener de los datos de usuario. Usado por algunos plugins.';
+$lang['update_name']           = '¿Permitir a los usuarios actualizar su nombre de AD?';
+$lang['update_mail']           = '¿Permitir a los usuarios actualizar su email?';
diff --git a/wiki/lib/plugins/authad/lang/et/lang.php b/wiki/lib/plugins/authad/lang/et/lang.php
new file mode 100644
index 0000000..94fe9ed
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/et/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Janar Leas <janar.leas@eesti.ee>
+ */
+$lang['authpwdexpire']         = 'Sinu salasõna aegub %d päeva pärast, võiksid seda peatselt muuta.';
diff --git a/wiki/lib/plugins/authad/lang/eu/lang.php b/wiki/lib/plugins/authad/lang/eu/lang.php
new file mode 100644
index 0000000..6c694bb
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/eu/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['authpwdexpire']         = 'Zure pasahitza %d egun barru iraungiko da, laster aldatu beharko zenuke.';
+$lang['connectfail']           = 'Huts egin du Active Directory zerbitzarira konektatzean';
diff --git a/wiki/lib/plugins/authad/lang/eu/settings.php b/wiki/lib/plugins/authad/lang/eu/settings.php
new file mode 100644
index 0000000..e6852b2
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/eu/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['account_suffix']        = 'Zure kontuaren atzizkia. Esaterako <code>@niredomeinua.eus</code>';
+$lang['admin_password']        = 'Goiko erabiltzailearen pasahitza';
+$lang['use_ssl']               = 'SSL konexioa darabilzu? Hala bada, ez gaitu TLS behean.';
+$lang['use_tls']               = 'Erabili TLS konexioa? Erabiltzekotan, ez gaitu SSL goian.';
+$lang['expirywarn']            = 'Pasahitza iraungitzear dagoela abisatzeko aurretia egunetan. 0 desgaitzeko.';
+$lang['update_mail']           = 'Baimendu erabiltzaileei bere email helbidea eguneratzea?';
diff --git a/wiki/lib/plugins/authad/lang/fa/lang.php b/wiki/lib/plugins/authad/lang/fa/lang.php
new file mode 100644
index 0000000..e5ff05d
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/fa/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hamid <zarrabi@sharif.edu>
+ * @author Milad DZand <M.DastanZand@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ */
+$lang['domain']                = 'دامنه‌ی ورود';
+$lang['authpwdexpire']         = 'کلمه عبور شما در %d روز منقضی خواهد شد ، شما باید آن را زود تغییر دهید';
+$lang['passchangefail']        = 'تغیر رمزعبور با خطا مواجه شد. شاید سیاستهای مربوط به گذاشتن نام کاربری درست رعایت نشده است.';
+$lang['userchangefail']        = 'تغییر ویژگی‌های کابر با خطا مواجه شد. شاید حساب کاربری شما مجاز به انجام این تغییرات نیست.';
+$lang['connectfail']           = 'ارتباط با سرور Active Directory با خطا مواجه شد.';
diff --git a/wiki/lib/plugins/authad/lang/fa/settings.php b/wiki/lib/plugins/authad/lang/fa/settings.php
new file mode 100644
index 0000000..79d62e7
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/fa/settings.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['account_suffix']        = 'پسوند حساب کاربری شما. به عنوان مثال <code>@my.domain.org</code>';
+$lang['base_dn']               = 'DN پایه شما. به عنوان مثال <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'لیست کنترل کننده‌های دامنه که با کاما ازهم جدا شده اند. به عنوان مثال <code>srv1.domain.org,srv2.domain.org</code';
+$lang['admin_username']        = 'کاربر دارای دسترسی Active Directory که دارای دسترسی به تمام اطلاعات کاربران است. اختیاریست ولی برای برخی فعالیت‌ها مثل ایمیل‌های عضویت لازم است.';
+$lang['admin_password']        = 'رمز کاربر بالایی ';
+$lang['sso']                   = 'آیا Single-Sign-On از طریق Kerberos یا NTLM استفاده شود؟';
+$lang['sso_charset']           = 'کدبندی نویسه‌ای که وب‌سرورتان نام کاربری NTLM یا Kerberos را به آن منتقل می‌کند. برای انتخاب UTF-8 یا latin-1 خالی بگذارید. لازم است که افزونهٔ iconv نصب باشد.';
+$lang['real_primarygroup']     = 'باید گروه اصلی به جای "دامنهٔ کاربران" برگردد. (کندتر)';
+$lang['use_ssl']               = 'از اس‌اس‌ال استفاده می‌کنید؟ در این صورت تی‌ال‌اس را در پایین فعال نکنید. ';
+$lang['use_tls']               = 'از تی‌ال‌اس استفاده می‌کنید؟ در این صورت اس‌اس‌ال را در بالا فعال نکنید. ';
+$lang['debug']                 = 'داده‌های اضافی خروجی دیباگ در هنگام بروز خطا نمایش داده شود؟';
+$lang['expirywarn']            = 'تعداد روزهایی که پس گذشتن آن برای تغییر رمزعبور به شما هشدار داده شود. باری غیرفعال سازی از مقدار 0 استفاده کنید.';
+$lang['additional']            = 'لیست صفات اضافی AD برای گرفتن از اطلاعات کاربر که توسط برخی از افزونه‌ها استفاده می‌شود. با کاما جدا شود.';
+$lang['update_name']           = 'به کاربران اجازهٔ به روزرسانی نام AD داده شود؟';
+$lang['update_mail']           = 'به کاربران اجازهٔ به روزرسانی ایمیلشان داده شود؟';
diff --git a/wiki/lib/plugins/authad/lang/fi/lang.php b/wiki/lib/plugins/authad/lang/fi/lang.php
new file mode 100644
index 0000000..88a87b8
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/fi/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+$lang['authpwdexpire']         = 'Salasanasi vanhenee %d pv:n päästä, vaihda salasanasi pikaisesti.';
diff --git a/wiki/lib/plugins/authad/lang/fi/settings.php b/wiki/lib/plugins/authad/lang/fi/settings.php
new file mode 100644
index 0000000..e2f432f
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/fi/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Otto Vainio <otto@valjakko.net>
+ */
+$lang['debug']                 = 'Näytä lisää debug-koodia virheistä?';
+$lang['expirywarn']            = 'Montako päivää etukäteen varoitetaan salasanan vanhenemissta. 0 poistaa.';
diff --git a/wiki/lib/plugins/authad/lang/fr/lang.php b/wiki/lib/plugins/authad/lang/fr/lang.php
new file mode 100644
index 0000000..ba51235
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/fr/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ggallon <gwenael.gallon@mac.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ */
+$lang['domain']                = 'Domaine de connexion';
+$lang['authpwdexpire']         = 'Votre mot de passe expirera dans %d jours, vous devriez le changer bientôt.';
+$lang['passchangefail']        = 'Impossible de changer le mot de passe. Il est possible que les règles de sécurité des mots de passe n\'aient pas été respectées.';
+$lang['userchangefail']        = 'Impossible de modifier les attributs de l\'utilisateur. Votre compte n\'a peut-être pas les permissions d\'effectuer des changements.';
+$lang['connectfail']           = 'Impossible de se connecter au serveur Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/fr/settings.php b/wiki/lib/plugins/authad/lang/fr/settings.php
new file mode 100644
index 0000000..f747c08
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/fr/settings.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ * @author Momo50 <c.brothelande@gmail.com>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ */
+$lang['account_suffix']        = 'Le suffixe de votre compte. Ex.: <code>@mon.domaine.org</code>';
+$lang['base_dn']               = 'Votre nom de domaine de base. <code>DC=mon,DC=domaine,DC=org</code>';
+$lang['domain_controllers']    = 'Une liste de contrôleurs de domaine séparés par des virgules. Ex.: <code>srv1.domaine.org,srv2.domaine.org</code>';
+$lang['admin_username']        = 'Un utilisateur Active Directory avec accès aux données de tous les autres utilisateurs. Facultatif, mais nécessaire pour certaines actions telles que l\'envoi de courriels d\'abonnement.';
+$lang['admin_password']        = 'Le mot de passe de l\'utilisateur ci-dessus.';
+$lang['sso']                   = 'Est-ce que la connexion unique (Single-Sign-On) par Kerberos ou NTLM doit être utilisée?';
+$lang['sso_charset']           = 'Le jeu de caractères de votre serveur web va passer le nom d\'utilisateur Kerberos ou NTLM. Vide pour UTF-8 ou latin-1. Nécessite l\'extension iconv.';
+$lang['real_primarygroup']     = 'Est-ce que le véritable groupe principal doit être résolu au lieu de présumer "Domain Users" (plus lent)?';
+$lang['use_ssl']               = 'Utiliser une connexion SSL? Si utilisée, n\'activez pas TLS ci-dessous.';
+$lang['use_tls']               = 'Utiliser une connexion TLS? Si utilisée, n\'activez pas SSL ci-dessus.';
+$lang['debug']                 = 'Afficher des informations de débogage supplémentaires pour les erreurs?';
+$lang['expirywarn']            = 'Jours d\'avance pour l\'avertissement envoyé aux utilisateurs lorsque leur mot de passe va expirer. 0 pour désactiver.';
+$lang['additional']            = 'Une liste séparée par des virgules d\'attributs AD supplémentaires à récupérer dans les données utilisateur. Utilisée par certains modules.';
+$lang['update_name']           = 'Autoriser les utilisateurs à modifier leur nom affiché de l\'AD ?';
+$lang['update_mail']           = 'Autoriser les utilisateurs à modifier leur adresse de courriel ?';
diff --git a/wiki/lib/plugins/authad/lang/gl/lang.php b/wiki/lib/plugins/authad/lang/gl/lang.php
new file mode 100644
index 0000000..b10126a
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/gl/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['authpwdexpire']         = 'A túa contrasinal expirará en %d días, deberías cambiala pronto.';
diff --git a/wiki/lib/plugins/authad/lang/he/lang.php b/wiki/lib/plugins/authad/lang/he/lang.php
new file mode 100644
index 0000000..ac8fbcb
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/he/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author tomer <tomercarolldergicz@gmail.com>
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['authpwdexpire']         = 'הסיסמה שלך תפוג ב %d ימים, אתה צריך לשנות את זה בקרוב.';
+$lang['passchangefail']        = 'שגיאה בשינוי סיסמה. האם הסיסמה תואמת למדיניות המערכת?';
diff --git a/wiki/lib/plugins/authad/lang/he/settings.php b/wiki/lib/plugins/authad/lang/he/settings.php
new file mode 100644
index 0000000..d0d459c
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/he/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['admin_password']        = 'סיסמת המשתמש המוזכן';
diff --git a/wiki/lib/plugins/authad/lang/hr/lang.php b/wiki/lib/plugins/authad/lang/hr/lang.php
new file mode 100644
index 0000000..04268c2
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/hr/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['domain']                = 'Domena za prijavu';
+$lang['authpwdexpire']         = 'Vaša lozinka će isteći za %d dana, trebate ju promijeniti.';
+$lang['passchangefail']        = 'Ne mogu izmijeniti lozinku. Možda nije zadovoljen set pravila za lozinke?';
+$lang['userchangefail']        = 'Greška pri promjeni atributa korisnika. Možda Vaš korisnik nema autorizacije da bi radio promjene?';
+$lang['connectfail']           = 'Ne mogu se povezati s Active Directory poslužiteljem.';
diff --git a/wiki/lib/plugins/authad/lang/hr/settings.php b/wiki/lib/plugins/authad/lang/hr/settings.php
new file mode 100644
index 0000000..a34d89b
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/hr/settings.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['account_suffix']        = 'Vaš sufiks korisničkog imena. Npr. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Vaš bazni DN. Npr. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Zarezom odvojena lista domenskih kontrolera. Npr. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Privilegirani korisnik Active Directory-a s pristupom svim korisničkim podacima. Opcionalno, ali potrebno za određene akcije kao što je slanje pretplatničkih poruka.';
+$lang['admin_password']        = 'Lozinka gore navedenoga korisnika.';
+$lang['sso']                   = 'Da li će Single-Sign-On prijava biti korištena preko Kerberosa ili NTLM-a?';
+$lang['sso_charset']           = 'Znakovni set koji će se koristiti Kerberos ili NTLM pri slanju imena korisnika. Prazno za UTF-8 ili latin-1. Zahtjeva iconv ekstenziju.';
+$lang['real_primarygroup']     = 'Da li da se razluči stvarna primarna grupa umjesto pretpostavke da je to "Domain Users" (sporije !).';
+$lang['use_ssl']               = 'Koristi SSL vezu? Ako da, dolje ne koristi TLS!';
+$lang['use_tls']               = 'Koristi TLS vezu? Ako da, gore ne koristi SSL!';
+$lang['debug']                 = 'Prikaži dodatni debug ispis u slučaju greške? ';
+$lang['expirywarn']            = 'Upozori korisnike o isteku lozinke ovoliko dana. 0 za onemogućavanje. ';
+$lang['additional']            = 'Zarezom odvojena lista dodatnih AD atributa koji se dohvaćaju iz korisničkih podataka. Koristi se u nekim dodatcima (plugin).';
+$lang['update_name']           = 'Omogućiti korisnicima da izmjene svoje ime u AD-u?';
+$lang['update_mail']           = 'Omogućiti korisnicima da izmjene svoju email adresu?';
diff --git a/wiki/lib/plugins/authad/lang/hu/lang.php b/wiki/lib/plugins/authad/lang/hu/lang.php
new file mode 100644
index 0000000..023e6b9
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/hu/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['domain']                = 'Bejelentkezési tartomány';
+$lang['authpwdexpire']         = 'A jelszavad %d nap múlva lejár, hamarosan meg kell változtatnod.';
+$lang['passchangefail']        = 'A jelszó megváltoztatása sikertelen. Lehet, hogy nem felel meg a jelszóházirendnek?';
+$lang['connectfail']           = 'A csatlakozás az Active Directory szerverhez sikertelen.';
diff --git a/wiki/lib/plugins/authad/lang/hu/settings.php b/wiki/lib/plugins/authad/lang/hu/settings.php
new file mode 100644
index 0000000..be0592d
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/hu/settings.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ * @author Marina Vladi <deldadam@gmail.com>
+ */
+$lang['account_suffix']        = 'Felhasználói azonosító végződése, pl. <code>@my.domain.org</code>.';
+$lang['base_dn']               = 'Bázis DN, pl. <code>DC=my,DC=domain,DC=org</code>.';
+$lang['domain_controllers']    = 'Tartománykezelők listája vesszővel elválasztva, pl. <code>srv1.domain.org,srv2.domain.org</code>.';
+$lang['admin_username']        = 'Privilegizált AD felhasználó, aki az összes feéhasználó adatait elérheti. Elhagyható, de bizonyos funkciókhoz, például a feliratkozási e-mailek kiküldéséhez szükséges.';
+$lang['admin_password']        = 'Ehhez tartozó jelszó.';
+$lang['sso']                   = 'Kerberos egyszeri bejelentkezés vagy NTLM használata?';
+$lang['sso_charset']           = 'A webkiszolgáló karakterkészlete megfelel a Kerberos- és NTLM-felhasználóneveknek. Üres UTF-8 és Latin-1-hez. Szükséges az iconv bővítmény.';
+$lang['real_primarygroup']     = 'A valódi elsődleges csoport feloldása a "Tartományfelhasználók" csoport használata helyett? (lassabb)';
+$lang['use_ssl']               = 'SSL használata? Ha használjuk, tiltsuk le a TLS-t!';
+$lang['use_tls']               = 'TLS használata? Ha használjuk, tiltsuk le az SSL-t!';
+$lang['debug']                 = 'További hibakeresési üzenetek megjelenítése hiba esetén';
+$lang['expirywarn']            = 'Felhasználók értesítése ennyi nappal a jelszavuk lejárata előtt. 0 a funkció kikapcsolásához.';
+$lang['additional']            = 'Vesszővel elválasztott lista a további AD attribútumok lekéréséhez. Néhány bővítmény használhatja.';
diff --git a/wiki/lib/plugins/authad/lang/it/lang.php b/wiki/lib/plugins/authad/lang/it/lang.php
new file mode 100644
index 0000000..ee97442
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/it/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['domain']                = 'Dominio di accesso';
+$lang['authpwdexpire']         = 'La tua password scadrà in %d giorni, dovresti cambiarla quanto prima.';
+$lang['passchangefail']        = 'Cambio password fallito. Forse non sono state rispettate le regole adottate per le password';
+$lang['userchangefail']        = 'Cambio attributi utente fallito. Forse il tuo account non ha i permessi per eseguire delle modifiche?';
+$lang['connectfail']           = 'Connessione fallita al server Active Directory';
diff --git a/wiki/lib/plugins/authad/lang/it/settings.php b/wiki/lib/plugins/authad/lang/it/settings.php
new file mode 100644
index 0000000..9fd8235
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/it/settings.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Edmondo Di Tucci <snarchio@gmail.com>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['account_suffix']        = 'Il suffisso del tuo account. Eg. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Il tuo DN. base Eg. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Elenco separato da virgole di Domain Controllers. Eg. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Utente privilegiato di Active Directory con accesso ai dati di tutti gli utenti. Opzionale ma necessario per alcune attività come mandare email di iscrizione.';
+$lang['admin_password']        = 'La password dell\'utente soprascritto.';
+$lang['sso']                   = 'Deve essere usato Single-Sign-On via Kerberos oppure NTLM?';
+$lang['sso_charset']           = 'Il set di caratteri che il tuo web server passera nel nome utente Kerberos o NTLM. Lasciare vuoto per UTF-8 p latin-1. Richiesta estensione iconv. ';
+$lang['real_primarygroup']     = 'Se il vero gruppo primario dovesse essere risolo invece di assumere "Domain Users" (lento).';
+$lang['use_ssl']               = 'Usare la connessione SSL? Se usata, non abilitare TSL qui sotto.';
+$lang['use_tls']               = 'Usare la connessione TSL? Se usata, non abilitare SSL qui sopra.';
+$lang['debug']                 = 'Visualizzare output addizionale di debug per gli errori?';
+$lang['expirywarn']            = 'Giorni di preavviso per la scadenza della password dell\'utente. 0 per disabilitare.';
+$lang['additional']            = 'Valori separati da virgola di attributi AD addizionali da caricare dai dati utente. Usato da alcuni plugin.';
+$lang['update_name']           = 'Permettere agli utenti di aggiornare il loro nome AD visualizzato? ';
+$lang['update_mail']           = 'Permettere agli utenti di aggiornare il loro indirizzo e-mail?';
diff --git a/wiki/lib/plugins/authad/lang/ja/lang.php b/wiki/lib/plugins/authad/lang/ja/lang.php
new file mode 100644
index 0000000..602b079
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ja/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
+ * @author Osaka <mr.osaka@gmail.com>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['domain']                = 'ログオン時のドメイン';
+$lang['authpwdexpire']         = 'あなたのパスワードは、あと%d日で有効期限が切れます。パスワードを変更してください。';
+$lang['passchangefail']        = 'パスワードを変更できませんでした。パスワードのルールに合わなかったのかもしれません。';
+$lang['userchangefail']        = 'ユーザー属性を変更できませんでした。おそらく、変更権限のないアカウントです。';
+$lang['connectfail']           = 'Active Directoryサーバーに接続できませんでした。';
diff --git a/wiki/lib/plugins/authad/lang/ja/settings.php b/wiki/lib/plugins/authad/lang/ja/settings.php
new file mode 100644
index 0000000..0dc5649
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ja/settings.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Hideaki SAWADA <chuno@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
+ */
+$lang['account_suffix']        = 'アカウントの接尾語。例:<code>@my.domain.org</code>';
+$lang['base_dn']               = 'ベースDN。例:<code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'ドメインコントローラのカンマ区切り一覧。例:<code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = '全ユーザーデータへのアクセス権のある特権Active Directoryユーザー。任意ですが、メール通知の登録等の特定の動作に必要。';
+$lang['admin_password']        = '上記ユーザーのパスワード';
+$lang['sso']                   = 'Kerberos か NTLM を使ったシングルサインオン(SSO)をしますか?';
+$lang['sso_charset']           = 'サーバーは空のUTF-8かLatin-1でKerberosかNTLMユーザネームを送信します。iconv拡張モジュールが必要です。';
+$lang['real_primarygroup']     = '"Domain Users" を仮定する代わりに本当のプライマリグループを解決する(低速)';
+$lang['use_ssl']               = 'SSL接続を使用しますか?使用した場合、下のSSLを有効にしないでください。';
+$lang['use_tls']               = 'TLS接続を使用しますか?使用した場合、上のSSLを有効にしないでください。';
+$lang['debug']                 = 'エラー時に追加のデバッグ出力を表示する?';
+$lang['expirywarn']            = '何日前からパスワードの有効期限をユーザーに警告する。0 の場合は無効';
+$lang['additional']            = 'ユーザデータから取得する追加AD属性のカンマ区切り一覧。いくつかのプラグインが使用する。';
+$lang['update_name']           = 'ユーザー自身にAD表示名の変更を許可しますか?';
+$lang['update_mail']           = 'ユーザー自身にメールアドレスの変更を許可しますか?';
diff --git a/wiki/lib/plugins/authad/lang/ka/lang.php b/wiki/lib/plugins/authad/lang/ka/lang.php
new file mode 100644
index 0000000..474906c
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ka/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Luka Lejava <luka.lejava@gmail.com>
+ */
+$lang['authpwdexpire']         = 'თქვენს პაროლს ვადა გაუვა %d დღეში, მალე შეცვლა მოგიწევთ.';
diff --git a/wiki/lib/plugins/authad/lang/ko/lang.php b/wiki/lib/plugins/authad/lang/ko/lang.php
new file mode 100644
index 0000000..0a652ad
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ko/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Erial <erial2@gmail.com>
+ */
+$lang['domain']                = '로그온 도메인';
+$lang['authpwdexpire']         = '비밀번호를 바꾼지 %d일이 지났으며, 비밀번호를 곧 바꿔야 합니다.';
+$lang['passchangefail']        = '비밀번호를 바꾸는 데 실패했습니다. 비밀번호 정책을 따르지 않은 건 아닐까요?';
+$lang['userchangefail']        = '사용자 특성을 바꾸는 데 실패했습니다. 당신의 계정에 바꿀 권한이 없는 건 아닐까요?';
+$lang['connectfail']           = 'Active Directory 서버에 연결하는 데 실패했습니다.';
diff --git a/wiki/lib/plugins/authad/lang/ko/settings.php b/wiki/lib/plugins/authad/lang/ko/settings.php
new file mode 100644
index 0000000..605819f
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ko/settings.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Garam <rowain8@gmail.com>
+ */
+$lang['account_suffix']        = '계정 접미어. 예를 들어 <code>@my.domain.org</code>';
+$lang['base_dn']               = '기본 DN. 예를 들어 <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = '도메인 컨트롤러의 쉼표로 구분한 목록. 예를 들어 <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = '다른 모든 사용자의 데이터에 접근할 수 있는 권한이 있는 Active Directory 사용자. 선택적이지만 구독 메일을 보내는 등의 특정 작업에 필요합니다.';
+$lang['admin_password']        = '위 사용자의 비밀번호.';
+$lang['sso']                   = 'Kerberos나 NTLM을 통해 Single-Sign-On을 사용해야 합니까?';
+$lang['sso_charset']           = '당신의 웹서버의 문자집합은 Kerberos나 NTLM 사용자 이름으로 전달됩니다. UTF-8이나 라린-1이 비어 있습니다. icov 확장 기능이 필요합니다.';
+$lang['real_primarygroup']     = '실제 기본 그룹은 "도메인 사용자"를 가정하는 대신 해결될 것입니다. (느림)';
+$lang['use_ssl']               = 'SSL 연결을 사용합니까? 사용한다면 아래 TLS을 활성화하지 마세요.';
+$lang['use_tls']               = 'TLS 연결을 사용합니까? 사용한다면 위 SSL을 활성화하지 마세요.';
+$lang['debug']                 = '오류에 대한 추가적인 디버그 정보를 보이겠습니까?';
+$lang['expirywarn']            = '미리 비밀번호 만료를 사용자에게 경고할 날짜. 0일 경우 비활성화합니다.';
+$lang['additional']            = '사용자 데이터에서 가져올 추가적인 AD 속성의 쉼표로 구분한 목록. 일부 플러그인이 사용합니다.';
+$lang['update_name']           = '사용자가 자신의 AD 표시 이름을 업데이트할 수 있도록 하겠습니까?';
+$lang['update_mail']           = '사용자가 자신의 이메일 주소를 업데이트할 수 있도록 하겠습니까?';
diff --git a/wiki/lib/plugins/authad/lang/lv/lang.php b/wiki/lib/plugins/authad/lang/lv/lang.php
new file mode 100644
index 0000000..fd20d34
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/lv/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oskars Pakers <oskars.pakers@gmail.com>
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['domain']                = 'Iežurnālēšanās domēns';
+$lang['authpwdexpire']         = 'Tavai parolei pēc %d dienām biegsies termiņš, tā drīzumā jānomaina.';
+$lang['passchangefail']        = 'Neizdevās nomainīt paroli. Varbūt parole neatbilst noteikumiem?';
+$lang['userchangefail']        = 'Neizdevās labot lietotāju. Varbūt jūsu kontam nav nepieciešamās atļaujas?';
+$lang['connectfail']           = 'Neizdevās savienotes ar aktīvās direktorijas serveri.';
diff --git a/wiki/lib/plugins/authad/lang/lv/settings.php b/wiki/lib/plugins/authad/lang/lv/settings.php
new file mode 100644
index 0000000..72b9cf2
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/lv/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oskars Pakers <oskars.pakers@gmail.com>
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['account_suffix']        = 'Jūsu konta sufikss. Piemēram, <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Jūsu bāzes DN. Piemēram, <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Ar komatiem atdalīts domēna kontroleru saraksts. Piemēram, <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_password']        = 'Minētā lietotāja parole.';
+$lang['expirywarn']            = 'Cik dienas iepriekš brīdināt lietotāju par paroles termiņa beigām. Ierakstīt 0, lai atspējotu.';
diff --git a/wiki/lib/plugins/authad/lang/nl/lang.php b/wiki/lib/plugins/authad/lang/nl/lang.php
new file mode 100644
index 0000000..1449b19
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/nl/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Rene <wllywlnt@yahoo.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ * @author Wesley de Weerd <wesleytiel@gmail.com>
+ */
+$lang['domain']                = 'Inlog Domein';
+$lang['authpwdexpire']         = 'Je wachtwoord verloopt in %d dagen, je moet het binnenkort veranderen';
+$lang['passchangefail']        = 'Wijziging van het paswoord is mislukt. Wellicht beantwoord het paswoord niet aan de voorwaarden. ';
+$lang['userchangefail']        = 'Kan gebruiker attributen veranderen . Misschien heeft uw account geen rechten om wijzigingen aan te brengen?';
+$lang['connectfail']           = 'Connectie met Active Directory server mislukt.';
diff --git a/wiki/lib/plugins/authad/lang/nl/settings.php b/wiki/lib/plugins/authad/lang/nl/settings.php
new file mode 100644
index 0000000..c0be12e
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/nl/settings.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Remon <no@email.local>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Sjoerd <sjoerd@sjomar.eu>
+ */
+$lang['account_suffix']        = 'Je account domeinnaam. Bijv <code>@mijn.domein.org</code>';
+$lang['base_dn']               = 'Je basis DN. Bijv. <code>DC=mijn,DC=domein,DC=org</code>';
+$lang['domain_controllers']    = 'Eeen kommagescheiden lijst van domeinservers. Bijv. <code>srv1.domein.org,srv2.domein.org</code>';
+$lang['admin_username']        = 'Een geprivilegeerde Active Directory gebruiker die bij alle gebruikersgegevens kan komen. Dit is optioneel maar kan nodig zijn voor bepaalde acties, zoals het versturen van abonnementsmailtjes.';
+$lang['admin_password']        = 'Het wachtwoord van bovenstaande gebruiker.';
+$lang['sso']                   = 'Wordt voor Single-Sign-on Kerberos of NTLM gebruikt?';
+$lang['sso_charset']           = 'Het tekenset waarin je webserver de Kerberos of NTLM gebruikersnaam doorsturen. Leeglaten voor UTF-8 of latin-1. Vereist de iconv extensie.';
+$lang['real_primarygroup']     = 'Moet de echte primaire groep worden opgezocht in plaats van het aannemen van "Domeingebruikers" (langzamer)';
+$lang['use_ssl']               = 'SSL verbinding gebruiken? Zo ja, activeer dan niet de TLS optie hieronder.';
+$lang['use_tls']               = 'TLS verbinding gebruiken? Zo ja, activeer dan niet de SSL verbinding hierboven.';
+$lang['debug']                 = 'Aanvullende debug informatie tonen bij fouten?';
+$lang['expirywarn']            = 'Waarschuwingstermijn voor vervallen wachtwoord. 0 om te deactiveren.';
+$lang['additional']            = 'Een kommagescheiden lijst van extra AD attributen van de gebruiker. Wordt gebruikt door sommige plugins.';
+$lang['update_name']           = 'Sta gebruikers toe om hun getoonde AD naam bij te werken';
+$lang['update_mail']           = 'Sta gebruikers toe hun email adres bij te werken';
diff --git a/wiki/lib/plugins/authad/lang/no/lang.php b/wiki/lib/plugins/authad/lang/no/lang.php
new file mode 100644
index 0000000..c702e9e
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/no/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Thomas Juberg <Thomas.Juberg@Gmail.com>
+ * @author Danny Buckhof <daniel.raknes@hotmail.no>
+ * @author Patrick Sletvold <patricksletvold@hotmail.com>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['domain']                = 'Loggpå-domene';
+$lang['authpwdexpire']         = 'Ditt passord går ut om %d dager, du bør endre det snarest.';
+$lang['passchangefail']        = 'Feil ved endring av passord. Det kan være at passordet ikke er i tråd med passordpolicyen ';
+$lang['userchangefail']        = 'Klarte ikke å endre brukerattributter. Kanskje gar ikke kontoen din rettigheter til å gjøre endringer?';
+$lang['connectfail']           = 'Feil ved kontakt med Active Directory serveren.';
diff --git a/wiki/lib/plugins/authad/lang/no/settings.php b/wiki/lib/plugins/authad/lang/no/settings.php
new file mode 100644
index 0000000..a374f38
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/no/settings.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Danny Buckhof <daniel.raknes@hotmail.no>
+ * @author Patrick Sletvold <patricksletvold@hotmail.com>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['account_suffix']        = 'Ditt konto-suffiks F. Eks. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Din rot-DN. F.eks. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'En kommaseparert liste over domenekontrollere. Eks. <code>srv1.domene.org,srv2.domene.org</code>';
+$lang['admin_username']        = 'En «Active Directory»-bruker med tilgang til alle andre brukeres data. Valgfritt, men nødvendig for visse handlinger f.eks. for utsendelse av e-poster til abonnenter.';
+$lang['admin_password']        = 'Passordet til brukeren over.';
+$lang['sso']                   = 'Skal engangspålogging via Kerberos eller NTLM bli brukt?';
+$lang['sso_charset']           = 'Tegnsettet din web-server vil bruke for ditt Kerberos- eller NTLM-brukernavn. La stå tomt for UTF-8 eller ISO Latin-1. Avhengig av utvidelsen iconv.';
+$lang['real_primarygroup']     = 'Skal en finne den virkelige gruppen i stedet for å anta at dette er "domene-brukere" (tregere).';
+$lang['use_ssl']               = 'Bruk SSL tilknytning? Hvis denne brukes, ikke aktiver TLS nedenfor.';
+$lang['use_tls']               = 'Bruk TLS tilknytning? Hvis denne brukes, ikke aktiver SSL over.';
+$lang['debug']                 = 'Ved feil, vise tilleggsinformasjon for feilsøking?';
+$lang['expirywarn']            = 'Antall dager på forhånd brukeren varsles om at passordet utgår. 0 for å deaktivere.';
+$lang['additional']            = 'En kommaseparert liste med AD-attributter som skal hentes fra brukerdata. Blir brukt av enkelte programtillegg.';
+$lang['update_name']           = 'Tillate at brukere endrer AD-visningsnavnet sitt?';
+$lang['update_mail']           = 'Tillate at brukere endrer e-postadressen sin?';
diff --git a/wiki/lib/plugins/authad/lang/pl/lang.php b/wiki/lib/plugins/authad/lang/pl/lang.php
new file mode 100644
index 0000000..8ea095a
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/pl/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['domain']                = 'Domena logowania';
+$lang['authpwdexpire']         = 'Twoje hasło wygaśnie za %d dni. Należy je zmienić w krótkim czasie.';
+$lang['passchangefail']        = 'Nie udało się zmienić hasła. Możliwe, że zasady dotyczące haseł nie zostały spełnione.';
+$lang['userchangefail']        = 'Nie udało się zmienić atrybutów użytkownika. Możliwe, że twoje konto nie ma uprawnień do wprowadzania zmian.';
+$lang['connectfail']           = 'Nie można połączyć się z serwerem Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/pl/settings.php b/wiki/lib/plugins/authad/lang/pl/settings.php
new file mode 100644
index 0000000..d5af79c
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/pl/settings.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Max <maxrb146@gmail.com>
+ * @author Tomasz Bosak <bosak.tomasz@gmail.com>
+ * @author Paweł Jan Czochański <czochanski@gmail.com>
+ * @author Mati <mackosa@wp.pl>
+ * @author Maciej Helt <geraldziu@gmail.com>
+ * @author Kris Charatonik <krishary@gmail.com>
+ */
+$lang['account_suffix']        = 'Przyrostek twojej nazwy konta np. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Twoje bazowe DN. Na przykład: <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Podzielona przecinkami lista kontrolerów domen np. <code>srv1.domena.pl,srv2.domena.pl</code>';
+$lang['admin_username']        = 'Uprawniony użytkownik katalogu Active Directory z dostępem do danych wszystkich użytkowników.
+Opcjonalne, ale wymagane dla niektórych akcji np. wysyłania emailowych subskrypcji.';
+$lang['admin_password']        = 'Hasło dla powyższego użytkownika.';
+$lang['sso']                   = 'Czy pojedyncze logowanie powinno korzystać z Kerberos czy NTML?';
+$lang['sso_charset']           = 'Kodowanie znaków wykorzystywane do przesyłania nazwy użytkownika dla Kerberos lub NTLM. Pozostaw puste dla UTF-8 lub latin-1. Wymaga rozszerzenia iconv.';
+$lang['real_primarygroup']     = 'Czy prawdziwa grupa podstawowa powinna zostać pobrana, zamiast  przyjmowania domyślnej wartości "Domain Users" (wolniej).';
+$lang['use_ssl']               = 'Użyć połączenie SSL? Jeśli tak to nie aktywuj TLS poniżej.';
+$lang['use_tls']               = 'Użyć połączenie TLS? Jeśli tak to nie aktywuj SSL powyżej.';
+$lang['debug']                 = 'Wyświetlać dodatkowe informacje do debugowania w przypadku błędów?';
+$lang['expirywarn']            = 'Dni poprzedzających powiadomienie użytkownika o wygasającym haśle. 0 aby wyłączyć.';
+$lang['additional']            = 'Oddzielona przecinkami lista dodatkowych atrybutów AD do pobrania z danych użytkownika. Używane przez niektóre wtyczki.';
+$lang['update_name']           = 'Zezwól użytkownikom na uaktualnianie nazwy wyświetlanej w AD?';
+$lang['update_mail']           = 'Zezwól użytkownikom na uaktualnianie ich adresu email?';
diff --git a/wiki/lib/plugins/authad/lang/pt-br/lang.php b/wiki/lib/plugins/authad/lang/pt-br/lang.php
new file mode 100644
index 0000000..8a30102
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/pt-br/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas@gmail.com>
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Guilherme Cardoso <guicardoso@gmail.com>
+ */
+$lang['domain']                = 'Domínio de "Logon"';
+$lang['authpwdexpire']         = 'Sua senha vai expirar em %d dias. Você deve mudá-la assim que for possível.';
+$lang['passchangefail']        = 'Não foi possível alterar a senha. Pode ser algum conflito com a política de senhas.';
+$lang['userchangefail']        = 'Falha ao mudar os atributos do usuário. Talvez a sua conta não tenha permissões para fazer mudanças.';
+$lang['connectfail']           = 'Não foi possível conectar ao servidor Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/pt-br/settings.php b/wiki/lib/plugins/authad/lang/pt-br/settings.php
new file mode 100644
index 0000000..1231077
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/pt-br/settings.php
@@ -0,0 +1,25 @@
+<?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 Juliano Marconi Lanigra <juliano.marconi@gmail.com>
+ * @author Viliam Dias <viliamjr@gmail.com>
+ */
+$lang['account_suffix']        = 'Sufixo de sua conta. Eg. <code>@meu.domínio.org</code>';
+$lang['base_dn']               = 'Sua base DN. Eg. <code>DC=meu,DC=domínio,DC=org</code>';
+$lang['domain_controllers']    = 'Uma lista de controles de domínios separada por vírgulas. Eg. <code>srv1.domínio.org,srv2.domínio.org</code>';
+$lang['admin_username']        = 'Um usuário do Active Directory com privilégios para acessar os dados de todos os outros usuários. Opcional, mas necessário para realizar certas ações, tais como enviar mensagens de assinatura.';
+$lang['admin_password']        = 'A senha do usuário acima.';
+$lang['sso']                   = 'Usar Single-Sign-On através do Kerberos ou NTLM?';
+$lang['sso_charset']           = 'A codificação de caracteres que seu servidor web passará o nome de usuário Kerberos ou NTLM. Vazio para UTF-8 ou latin-1. Requere a extensão iconv.';
+$lang['real_primarygroup']     = 'O grupo primário real deve ser resolvido ao invés de assumirmos como "Usuários do Domínio" (mais lento)';
+$lang['use_ssl']               = 'Usar conexão SSL? Se usar, não habilitar TLS abaixo.';
+$lang['use_tls']               = 'Usar conexão TLS? se usar, não habilitar SSL acima.';
+$lang['debug']                 = 'Mostrar saída adicional de depuração em mensagens de erros?';
+$lang['expirywarn']            = 'Dias com antecedência para avisar o usuário de uma senha que vai expirar. 0 para desabilitar.';
+$lang['additional']            = 'Uma lista separada de vírgulas de atributos adicionais AD para pegar dados de usuários. Usados por alguns plugins.';
+$lang['update_name']           = 'Permitir aos usuários que atualizem seus nomes de exibição AD?';
+$lang['update_mail']           = 'Permitir aos usuários que atualizem seu endereço de e-mail?';
diff --git a/wiki/lib/plugins/authad/lang/pt/lang.php b/wiki/lib/plugins/authad/lang/pt/lang.php
new file mode 100644
index 0000000..4f8266b
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/pt/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Silva <paulotsilva@yahoo.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ */
+$lang['domain']                = 'Domínio de Início de Sessão';
+$lang['authpwdexpire']         = 'A sua senha expirará dentro de %d dias, deve mudá-la em breve.';
+$lang['passchangefail']        = 'Falha ao alterar a senha. Tente prosseguir com uma senha mais segura.';
+$lang['connectfail']           = 'Falha ao conectar com o servidor Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/pt/settings.php b/wiki/lib/plugins/authad/lang/pt/settings.php
new file mode 100644
index 0000000..b734c48
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/pt/settings.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author André Neves <drakferion@gmail.com>
+ * @author Murilo <muriloricci@hotmail.com>
+ * @author Paulo Silva <paulotsilva@yahoo.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['account_suffix']        = 'O sufixo da sua conta. Por exemplo, <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Sua base DN. Eg. <code> DC=meu, DC=dominio, DC=org </code>';
+$lang['domain_controllers']    = 'Uma lista separada por vírgulas de Controladores de Domínio (AD DC). Ex.: <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Um utilizador com privilégios na Active Directory que tenha acesso aos dados de todos os outros utilizadores. Opcional, mas necessário para certas ações como enviar emails de subscrição.';
+$lang['admin_password']        = 'A senha para o utilizador acima.';
+$lang['sso']                   = 'Deve ser usado o Single-Sign-On via Kerberos ou NTLM?';
+$lang['sso_charset']           = 'O charset do seu servidor web vai passar o nome de usuário Kerberos ou NTLM  vazio para UTF-8 ou latin-1. Requer a extensão iconv.';
+$lang['real_primarygroup']     = 'Deveria ser resolvido, de fato, o grupo primário ao invés de assumir "Usuários de Domínio" (mais lento).';
+$lang['use_ssl']               = 'Usar ligação SSL? Se usada, não ative TLS abaixo.';
+$lang['use_tls']               = 'Usar ligação TLS? Se usada, não ative SSL abaixo.';
+$lang['debug']                 = 'Deve-se mostrar saída adicional de depuração de erros?';
+$lang['expirywarn']            = 'Número de dias de avanço para avisar o utilizador da expiração da senha. 0 para desativar.';
+$lang['additional']            = 'Uma lista separada por vírgula de atributos adicionais de AD para buscar a partir de dados do usuário. Usado por alguns plugins.';
+$lang['update_mail']           = 'Permitir que usuários atualizem seus endereços de e-mail?';
diff --git a/wiki/lib/plugins/authad/lang/ro/lang.php b/wiki/lib/plugins/authad/lang/ro/lang.php
new file mode 100644
index 0000000..f08a22c
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ro/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
+ * @author Adrian Vesa <adrianvesa@dotwikis.com>
+ */
+$lang['authpwdexpire']         = 'Parola va expira în %d zile, ar trebui să o schimbi în curând.';
+$lang['passchangefail']        = 'Parola nu a putu fi schimbata. Poate politica pentru parole nu a fost indeplinita ?';
+$lang['userchangefail']        = 'Nu am putu schimba atributiile pentru acest utilizator. Poate nu ai permisiunea sa faci aceste schimbari ?';
diff --git a/wiki/lib/plugins/authad/lang/ru/lang.php b/wiki/lib/plugins/authad/lang/ru/lang.php
new file mode 100644
index 0000000..0d398f7
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ru/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuriy Skalko <yuriy.skalko@gmail.com>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ * @author Takumo <9206984@mail.ru>
+ * @author dimsharav <dimsharav@gmail.com>
+ */
+$lang['domain']                = 'Домен';
+$lang['authpwdexpire']         = 'Действие вашего пароля истекает через %d дней. Вы должны изменить его как можно скорее.';
+$lang['passchangefail']        = 'Не удалось изменить пароль. Возможно, он не соответствует требованиям к паролю.';
+$lang['userchangefail']        = 'Ошибка при изменении атрибутов пользователя. Возможно, у Вашей учетной записи недостаточно прав?';
+$lang['connectfail']           = 'Невозможно соединиться с сервером Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/ru/settings.php b/wiki/lib/plugins/authad/lang/ru/settings.php
new file mode 100644
index 0000000..d6bc8fc
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/ru/settings.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuriy Skalko <yuriy.skalko@gmail.com>
+ * @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Artur <ncuxxx@gmail.com>
+ * @author Erli Moen <evseev.jr@gmail.com>
+ * @author Владимир <id37736@yandex.ru>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author Radimir <radimir.shevchenko@gmail.com>
+ */
+$lang['account_suffix']        = 'Суффикс вашего аккаунта. Например, <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Ваш базовый DN. Например: <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Список контроллеров домена, разделённых запятой. Например:<code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Привилегированный пользователь Active Directory с доступом ко всем остальным пользовательским данным. Необязательно, однако необходимо для определённых действий вроде отправки почтовой подписки.';
+$lang['admin_password']        = 'Пароль для указанного пользователя.';
+$lang['sso']                   = 'Использовать SSO (Single-Sign-On) через Kerberos или NTLM?';
+$lang['sso_charset']           = 'Кодировка, в которой веб-сервер передаёт имя пользователя Kerberos или NTLM. Для UTF-8 или latin-1 остаётся пустым. Требует расширение iconv.';
+$lang['real_primarygroup']     = 'Должна ли использоваться настоящая первичная группа вместо “Domain Users” (медленнее).';
+$lang['use_ssl']               = 'Использовать SSL? Если да, то не включайте TLS.';
+$lang['use_tls']               = 'Использовать TLS? Если да, то не включайте SSL.';
+$lang['debug']                 = 'Выводить дополнительную информацию при ошибках?';
+$lang['expirywarn']            = 'За сколько дней нужно предупреждать пользователя о необходимости изменить пароль? Для отключения укажите 0 (ноль).';
+$lang['additional']            = 'Дополнительные AD-атрибуты, разделённые запятой, для выборки из данных пользователя. Используется некоторыми плагинами.';
+$lang['update_name']           = 'Разрешить пользователям редактировать свое AD-имя?';
+$lang['update_mail']           = 'Разрешить пользователям редактировать свой электронный адрес?';
diff --git a/wiki/lib/plugins/authad/lang/sk/lang.php b/wiki/lib/plugins/authad/lang/sk/lang.php
new file mode 100644
index 0000000..1ff338d
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sk/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['domain']                = 'Prihlasovacia doména';
+$lang['authpwdexpire']         = 'Platnosť hesla vyprší za %d dní, mali by ste ho zmeniť čo najskôr.';
+$lang['passchangefail']        = 'Nepodarilo sa zmeniť heslo. Možno neboli splnené podmienky';
+$lang['userchangefail']        = 'Nepodarilo sa zmeniť atribúty používateľa. Možno tvoj účet nemá oprávnenia na vykonanie týchto zmien?';
+$lang['connectfail']           = 'Nepodarilo sa pripojiť na Active Directory server.';
diff --git a/wiki/lib/plugins/authad/lang/sk/settings.php b/wiki/lib/plugins/authad/lang/sk/settings.php
new file mode 100644
index 0000000..a8aabc7
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sk/settings.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['account_suffix']        = 'Prípona používateľského účtu. Napr. <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Vaše base DN. Napr. <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = 'Zoznam doménových radičov oddelených čiarkou. Napr. <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Privilegovaný používateľ Active Directory s prístupom ku všetkým dátam ostatných používateľov. Nepovinné nastavenie, ale potrebné pre určité akcie ako napríklad zasielanie mailov o zmenách.';
+$lang['admin_password']        = 'Heslo vyššie uvedeného používateľa.';
+$lang['sso']                   = 'Použiť Single-Sign-On cez Kerberos alebo NTLM?';
+$lang['sso_charset']           = 'Znaková sada, v ktorej bude webserver prenášať meno Kerberos or NTLM používateľa. Prázne pole znamená UTF-8 alebo latin-1. Vyžaduje iconv rozšírenie.';
+$lang['real_primarygroup']     = 'Použiť skutočnú primárnu skupinu používateľa namiesto "Doménoví používatelia" (pomalšie).';
+$lang['use_ssl']               = 'Použiť SSL pripojenie? Ak áno, nepovoľte TLS nižšie.';
+$lang['use_tls']               = 'Použiť TLS pripojenie? Ak áno, nepovoľte SSL vyššie.';
+$lang['debug']                 = 'Zobraziť dodatočné ladiace informácie pri chybe?';
+$lang['expirywarn']            = 'Počet dní pred uplynutím platnosti hesla, počas ktorých používateľ dostáva upozornenie. 0 deaktivuje túto voľbu.';
+$lang['additional']            = 'Zoznam dodatočných AD atribútov oddelených čiarkou získaných z údajov používateľa. Používané niektorými pluginmi.';
+$lang['update_name']           = 'Povoliť používateľom zmenu ich zobrazovaného mena v AD?';
+$lang['update_mail']           = 'Povoliť používateľom zmenu ich emailovej adresy?';
diff --git a/wiki/lib/plugins/authad/lang/sl/lang.php b/wiki/lib/plugins/authad/lang/sl/lang.php
new file mode 100644
index 0000000..b4c8643
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sl/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author matej <mateju@svn.gnome.org>
+ */
+$lang['authpwdexpire']         = 'Geslo bo poteklo v %d dneh. Priporočljivo ga je zamenjati.';
diff --git a/wiki/lib/plugins/authad/lang/sl/settings.php b/wiki/lib/plugins/authad/lang/sl/settings.php
new file mode 100644
index 0000000..f166309
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sl/settings.php
@@ -0,0 +1,11 @@
+<?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['admin_password']        = 'Geslo zgoraj omenjenega uporabnika';
+$lang['use_tls']               = 'Uporabi TLS povezavo? Če da, ne vključi SSL povezave zgoraj.';
+$lang['debug']                 = 'Ali naj bodo prikazane dodatne podrobnosti napak?';
diff --git a/wiki/lib/plugins/authad/lang/sr/lang.php b/wiki/lib/plugins/authad/lang/sr/lang.php
new file mode 100644
index 0000000..d5ac17b
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sr/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['domain']                = 'Домен пријаве';
+$lang['authpwdexpire']         = 'Ваша лозинка ће истећи за %d дан(а), требало би да је промените ускоро.';
+$lang['passchangefail']        = 'Нисам успео да променим лозинку. Можда нису испоштована правила за промену лозинке.';
+$lang['userchangefail']        = 'Нисам успео да променим корисничке особине. Можда ваш налог нема довољно овлашћења за прављење измена?';
+$lang['connectfail']           = 'Нисам успео да се повежем на Active Directory сервер.';
diff --git a/wiki/lib/plugins/authad/lang/sr/settings.php b/wiki/lib/plugins/authad/lang/sr/settings.php
new file mode 100644
index 0000000..5e4409c
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sr/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['account_suffix']        = 'Суфикс на вашем налогу. Нпр.: <code>@moj.domen.rs</code>';
+$lang['base_dn']               = 'Ваше основно име домена. Нпр.: <code>DC=moj,DC=domen,DC=org</code>';
+$lang['domain_controllers']    = 'Списак доменских контролера, одвојених зарезима. Нпр.: <code>srv1.domen.org,srv2.domen.org</code>';
+$lang['admin_username']        = 'Повлашћени Active Directory корисник са приступом подацима свих корисника. Изборно али је потребно за одређене радње као што је слање мејлова о претплаћивању.';
+$lang['admin_password']        = 'Лозинка за корисника изнад.';
+$lang['sso']                   = 'Да ли треба да се користи Single-Sign-On преко Кербероса или NTLM-а?';
+$lang['use_ssl']               = 'Користити SSL везу? Ако се користи, не омогућујте TLS испод.';
+$lang['use_tls']               = 'Користити TLS везу? Ако се користи, не омогућујте SSL испод.';
+$lang['debug']                 = 'Приказати додатан излаз за поправљање грешака код настанка грешака?';
+$lang['expirywarn']            = 'Дана унапред за које треба упозорити корисника на истицање лозинке. 0 за искључивање.';
+$lang['update_name']           = 'Дозволити корисницима да ажурирају њихово AD приказно име?';
+$lang['update_mail']           = 'Дозволити корисницима да ажурирају њихове мејл адрсе?';
diff --git a/wiki/lib/plugins/authad/lang/sv/lang.php b/wiki/lib/plugins/authad/lang/sv/lang.php
new file mode 100644
index 0000000..8c63975
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sv/lang.php
@@ -0,0 +1,13 @@
+<?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['domain']                = 'Inloggningsdomän';
+$lang['authpwdexpire']         = 'Ditt lösenord kommer att bli ogiltigt om %d dagar, du bör ändra det snart.';
+$lang['passchangefail']        = 'Kunde inte ändra lösenord. Kanske var inte lösenordspolicyn uppfylld?';
+$lang['userchangefail']        = 'Kunde inte ändra användaregenskaper. Kanske har ditt konto inte behörighet att göra ändringar?';
+$lang['connectfail']           = 'Kunde inte ansluta till Active Directory-server.';
diff --git a/wiki/lib/plugins/authad/lang/sv/settings.php b/wiki/lib/plugins/authad/lang/sv/settings.php
new file mode 100644
index 0000000..249eb33
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/sv/settings.php
@@ -0,0 +1,20 @@
+<?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['account_suffix']        = 'Ditt konto suffix. T.ex. <code>min.domän.org</code>';
+$lang['base_dn']               = 'Din bas-DN. T ex <code>DC=min,DC=domän,DC=org</code>';
+$lang['domain_controllers']    = 'En kommaseparerad lista av Domain controllers. T ex <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_password']        = 'Lösenord för användare ovan.';
+$lang['sso']                   = 'Ska Single-Sign-On via Kerberos eller NTLM användas?';
+$lang['use_ssl']               = 'Använda SSL anslutning? Om använd, möjliggör inte TLS nedan.';
+$lang['use_tls']               = 'Använda TLS anslutning? Om använd, möjliggör inte SSL ovan.';
+$lang['debug']                 = 'Visa utökad avlusningsinformation för fel?';
+$lang['expirywarn']            = 'Antakl dagar i förväg att varna användare om utgående lösenord. 0 för att inaktivera.';
+$lang['additional']            = 'En komma-separerad lista på extra AT-attibut att hämta från användardata. Används av vissa plugin.';
+$lang['update_name']           = 'Tillåt användare att uppdatera deras AD-visningsnamn?';
+$lang['update_mail']           = 'Tillåt användare att uppdatera deras e-postadresser?';
diff --git a/wiki/lib/plugins/authad/lang/tr/lang.php b/wiki/lib/plugins/authad/lang/tr/lang.php
new file mode 100644
index 0000000..2336e0f
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/tr/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author farukerdemoncel@gmail.com
+ */
+$lang['authpwdexpire']         = 'Şifreniz %d gün sonra geçersiz hale gelecek, yakın bir zamanda değiştirmelisiniz.';
diff --git a/wiki/lib/plugins/authad/lang/uk/lang.php b/wiki/lib/plugins/authad/lang/uk/lang.php
new file mode 100644
index 0000000..7e685a9
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/uk/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Олексій <alexey.furashev@gmail.com>
+ * @author Vitaly <vitaly.balashov@smuzzy.com.ua>
+ * @author Nina Zolotova <nina-z@i.ua>
+ */
+$lang['domain']                = 'Домен';
+$lang['authpwdexpire']         = 'Дія вашого паролю завершится через %d днів, вам необхідно змінити його щонайвшидше.';
+$lang['passchangefail']        = 'Не вдалося змінити пароль. Можливо, політика пароля не була застосована?';
+$lang['userchangefail']        = 'Не вийшло змінити атрибути користувача. Можливо, у вашого акаунту немає дозволу на внесення змін?';
+$lang['connectfail']           = 'Не вийшло з\'єднатися с сервером Active Directory.';
diff --git a/wiki/lib/plugins/authad/lang/uk/settings.php b/wiki/lib/plugins/authad/lang/uk/settings.php
new file mode 100644
index 0000000..0c76e7d
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/uk/settings.php
@@ -0,0 +1,17 @@
+<?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['account_suffix']        = 'Суфікс вашого облікового запису. Щось на шквалт: <code>@my.domain.org</code>';
+$lang['base_dn']               = 'Ваш DN. Щось на шквалт: <code>DC=my,DC=domain,DC=org</code>';
+$lang['admin_password']        = 'Пароль вказаного користувача.';
+$lang['use_ssl']               = 'Використовуєте SSL-з\'єднання? Якщо так, не вмикайте TLS нижче.';
+$lang['use_tls']               = 'Використовуєте TLS-з\'єднання? Якщо так, не вмикайте SSL нижче.';
+$lang['debug']                 = 'Показати додаткові відомості щодо помилок?';
+$lang['expirywarn']            = 'Кількість днів за яких попереджати про закінчення дії пароля користувача. 0 - не попереджати.';
+$lang['update_name']           = 'Дозволити користувачам оновлювати ім\'я AD, яке відображається?';
+$lang['update_mail']           = 'Дозволити користувачам оновлювати їх адреси електронної пошлти?';
diff --git a/wiki/lib/plugins/authad/lang/zh-tw/lang.php b/wiki/lib/plugins/authad/lang/zh-tw/lang.php
new file mode 100644
index 0000000..b2ce485
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/zh-tw/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author June-Hao Hou <junehao@gmail.com>
+ * @author syaoranhinata@gmail.com
+ */
+$lang['domain']                = '登入網域';
+$lang['authpwdexpire']         = '您的密碼將在 %d 天內到期,請馬上更換新密碼。';
diff --git a/wiki/lib/plugins/authad/lang/zh-tw/settings.php b/wiki/lib/plugins/authad/lang/zh-tw/settings.php
new file mode 100644
index 0000000..42cd8c9
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/zh-tw/settings.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author syaoranhinata@gmail.com
+ * @author June-Hao Hou <junehao@gmail.com>
+ */
+$lang['account_suffix']        = '您的帳號後綴。如: <code>@my.domain.org</code>';
+$lang['base_dn']               = '您的基本識別名。如: <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = '以逗號分隔的域名控制器列表。如: <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = 'Active Directory 的特權使用者,可以查看所有使用者的數據。(非必要,但對發送訂閱郵件等活動來說,這是必須的。)';
+$lang['admin_password']        = '上述使用者的密碼。';
+$lang['sso']                   = '是否使用 Kerberos 或 NTLM 的單一登入系統 (Single-Sign-On)?';
+$lang['sso_charset']           = '你的網站伺服器傳遞 Kerberos 或 NTML 帳號名稱所用的語系編碼。空白表示 UTF-8 或 latin-1。此設定需要用到 iconv 套件。';
+$lang['real_primarygroup']     = '是否視作真正的主要群組,而不是假設為網域使用者 (比較慢)';
+$lang['use_ssl']               = '使用 SSL 連接嗎?如果要使用,請不要啟用下方的 TLS。';
+$lang['use_tls']               = '使用 TLS 連接嗎?如果要使用,請不要啟用上方的 SSL。';
+$lang['debug']                 = '有錯誤時,顯示額外除錯資訊嗎?';
+$lang['expirywarn']            = '提前多少天警告使用者密碼即將到期。輸入0表示停用。';
+$lang['additional']            = '從使用者數據中取得額外 AD 屬性列表,以供某些附加元件使用。列表以逗號分隔。';
diff --git a/wiki/lib/plugins/authad/lang/zh/lang.php b/wiki/lib/plugins/authad/lang/zh/lang.php
new file mode 100644
index 0000000..4b2c885
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/zh/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ * @author Errol <errol@hotmail.com>
+ * @author phy25 <git@phy25.com>
+ */
+$lang['domain']                = '登录域';
+$lang['authpwdexpire']         = '您的密码将在 %d 天内过期,请尽快更改。';
+$lang['passchangefail']        = '密码更改失败。是不是密码规则不符合?';
+$lang['userchangefail']        = '更改用户属性失败。或许您的帐号没有做此更改的权限?';
+$lang['connectfail']           = '无法连接到Active Directory服务器。';
diff --git a/wiki/lib/plugins/authad/lang/zh/settings.php b/wiki/lib/plugins/authad/lang/zh/settings.php
new file mode 100644
index 0000000..1ccadd3
--- /dev/null
+++ b/wiki/lib/plugins/authad/lang/zh/settings.php
@@ -0,0 +1,25 @@
+<?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 JellyChen <451453325@qq.com>
+ * @author 高博 <bobnemo1983@gmail.com>
+ */
+$lang['account_suffix']        = '您的账户后缀。例如 <code>@my.domain.org</code>';
+$lang['base_dn']               = '您的基本分辨名。例如 <code>DC=my,DC=domain,DC=org</code>';
+$lang['domain_controllers']    = '逗号分隔的域名控制器列表。例如 <code>srv1.domain.org,srv2.domain.org</code>';
+$lang['admin_username']        = '一个活动目录的特权用户,可以查看其他所有用户的数据。可选,但对某些活动例如发送订阅邮件是必须的。';
+$lang['admin_password']        = '上述用户的密码。';
+$lang['sso']                   = '是否使用经由 Kerberos 和 NTLM 的 Single-Sign-On?';
+$lang['sso_charset']           = '服务器传入 Kerberos 或者 NTLM 用户名的编码。留空为 UTF-8 或 latin-1 。此功能需要服务器支持iconv扩展。';
+$lang['real_primarygroup']     = ' 是否解析真实的主要组,而不是假设为“域用户” (较慢)';
+$lang['use_ssl']               = '使用 SSL 连接?如果是,不要激活下面的 TLS。';
+$lang['use_tls']               = '使用 TLS 连接?如果是 ,不要激活上面的 SSL。';
+$lang['debug']                 = '有错误时显示额外的调试信息?';
+$lang['expirywarn']            = '提前多少天警告用户密码即将到期。0 则禁用。';
+$lang['additional']            = '需要从用户数据中获取的额外 AD 属性的列表,以逗号分隔。用于某些插件。';
+$lang['update_name']           = '允许用户更新其AD显示名称?';
+$lang['update_mail']           = '是否允许用户更新他们的电子邮件地址?';
diff --git a/wiki/lib/plugins/authad/plugin.info.txt b/wiki/lib/plugins/authad/plugin.info.txt
new file mode 100644
index 0000000..57e1387
--- /dev/null
+++ b/wiki/lib/plugins/authad/plugin.info.txt
@@ -0,0 +1,7 @@
+base   authad
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-13
+name   Active Directory Auth Plugin
+desc   Provides user authentication against a Microsoft Active Directory
+url    http://www.dokuwiki.org/plugin:authad
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
diff --git a/wiki/lib/plugins/authmysql/auth.php b/wiki/lib/plugins/authmysql/auth.php
new file mode 100644
index 0000000..999542a
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/auth.php
@@ -0,0 +1,1110 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * MySQL authentication backend
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Chris Smith <chris@jalakai.co.uk>
+ * @author     Matthias Grimm <matthias.grimmm@sourceforge.net>
+ * @author     Jan Schumann <js@schumann-it.com>
+ */
+class auth_plugin_authmysql extends DokuWiki_Auth_Plugin {
+    /** @var resource holds the database connection */
+    protected $dbcon = 0;
+    /** @var int database version*/
+    protected $dbver = 0;
+    /** @var int database revision */
+    protected $dbrev = 0;
+    /** @var int database subrevision */
+    protected $dbsub = 0;
+
+    /** @var array cache to avoid re-reading user info data */
+    protected $cacheUserInfo = array();
+
+    /**
+     * Constructor
+     *
+     * checks if the mysql interface is available, otherwise it will
+     * set the variable $success of the basis class to false
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    public function __construct() {
+        parent::__construct();
+
+        if(!function_exists('mysql_connect')) {
+            $this->_debug("MySQL err: PHP MySQL extension not found.", -1, __LINE__, __FILE__);
+            $this->success = false;
+            return;
+        }
+
+        // set capabilities based upon config strings set
+        if(!$this->getConf('server') || !$this->getConf('user') || !$this->getConf('database')) {
+            $this->_debug("MySQL err: insufficient configuration.", -1, __LINE__, __FILE__);
+
+            $this->success = false;
+            return;
+        }
+
+        $this->cando['addUser']   = $this->_chkcnf(
+            array(
+                 'getUserInfo',
+                 'getGroups',
+                 'addUser',
+                 'getUserID',
+                 'getGroupID',
+                 'addGroup',
+                 'addUserGroup'
+            ), true
+        );
+        $this->cando['delUser']   = $this->_chkcnf(
+            array(
+                 'getUserID',
+                 'delUser',
+                 'delUserRefs'
+            ), true
+        );
+        $this->cando['modLogin']  = $this->_chkcnf(
+            array(
+                 'getUserID',
+                 'updateUser',
+                 'UpdateTarget'
+            ), true
+        );
+        $this->cando['modPass']   = $this->cando['modLogin'];
+        $this->cando['modName']   = $this->cando['modLogin'];
+        $this->cando['modMail']   = $this->cando['modLogin'];
+        $this->cando['modGroups'] = $this->_chkcnf(
+            array(
+                 'getUserID',
+                 'getGroups',
+                 'getGroupID',
+                 'addGroup',
+                 'addUserGroup',
+                 'delGroup',
+                 'getGroupID',
+                 'delUserGroup'
+            ), true
+        );
+        /* getGroups is not yet supported
+           $this->cando['getGroups']    = $this->_chkcnf(array('getGroups',
+           'getGroupID'),false); */
+        $this->cando['getUsers']     = $this->_chkcnf(
+            array(
+                 'getUsers',
+                 'getUserInfo',
+                 'getGroups'
+            ), false
+        );
+        $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'), false);
+
+        if($this->getConf('debug') >= 2) {
+            $candoDebug = '';
+            foreach($this->cando as $cd => $value) {
+                if($value) { $value = 'yes'; } else { $value = 'no'; }
+                $candoDebug .= $cd . ": " . $value . " | ";
+            }
+            $this->_debug("authmysql cando: " . $candoDebug, 0, __LINE__, __FILE__);
+        }
+    }
+
+    /**
+     * Check if the given config strings are set
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string[] $keys
+     * @param   bool  $wop is this a check for a write operation?
+     * @return  bool
+     */
+    protected function _chkcnf($keys, $wop = false) {
+        foreach($keys as $key) {
+            if(!$this->getConf($key)) return false;
+        }
+
+        /* write operation and lock array filled with tables names? */
+        if($wop && (!is_array($this->getConf('TablesToLock')) ||
+            !count($this->getConf('TablesToLock')))
+        ) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Checks if the given user exists and the given plaintext password
+     * is correct. Furtheron it might be checked wether the user is
+     * member of the right group
+     *
+     * Depending on which SQL string is defined in the config, password
+     * checking is done here (getpass) or by the database (passcheck)
+     *
+     * @param  string $user user who would like access
+     * @param  string $pass user's clear text password to check
+     * @return bool
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    public function checkPass($user, $pass) {
+        global $conf;
+        $rc = false;
+
+        if($this->_openDB()) {
+            $sql    = str_replace('%{user}', $this->_escape($user), $this->getConf('checkPass'));
+            $sql    = str_replace('%{pass}', $this->_escape($pass), $sql);
+            $sql    = str_replace('%{dgroup}', $this->_escape($conf['defaultgroup']), $sql);
+            $result = $this->_queryDB($sql);
+
+            if($result !== false && count($result) == 1) {
+                if($this->getConf('forwardClearPass') == 1) {
+                    $rc = true;
+                } else {
+                    $rc = auth_verifyPassword($pass, $result[0]['pass']);
+                }
+            }
+            $this->_closeDB();
+        }
+        return $rc;
+    }
+
+    /**
+     * Return user info
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param string $user user login to get data for
+     * @param bool $requireGroups  when true, group membership information should be included in the returned array;
+     *                             when false, it maybe included, but is not required by the caller
+     * @return array|bool
+     */
+    public function getUserData($user, $requireGroups=true) {
+        if($this->_cacheExists($user, $requireGroups)) {
+            return $this->cacheUserInfo[$user];
+        }
+
+        if($this->_openDB()) {
+            $this->_lockTables("READ");
+            $info = $this->_getUserInfo($user, $requireGroups);
+            $this->_unlockTables();
+            $this->_closeDB();
+        } else {
+            $info = false;
+        }
+        return $info;
+    }
+
+    /**
+     * Create a new User. Returns false if the user already exists,
+     * null when an error occurred and true if everything went well.
+     *
+     * The new user will be added to the default group by this
+     * function if grps are not specified (default behaviour).
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param string $user  nick of the user
+     * @param string $pwd   clear text password
+     * @param string $name  full name of the user
+     * @param string $mail  email address
+     * @param array  $grps  array of groups the user should become member of
+     * @return bool|null
+     */
+    public function createUser($user, $pwd, $name, $mail, $grps = null) {
+        global $conf;
+
+        if($this->_openDB()) {
+            if(($info = $this->_getUserInfo($user)) !== false) {
+                msg($this->getLang('userexists'), -1);
+                return false; // user already exists
+            }
+
+            // set defaultgroup if no groups were given
+            if($grps == null) {
+                $grps = array($conf['defaultgroup']);
+            }
+
+            $this->_lockTables("WRITE");
+            $pwd = $this->getConf('forwardClearPass') ? $pwd : auth_cryptPassword($pwd);
+            $rc  = $this->_addUser($user, $pwd, $name, $mail, $grps);
+            $this->_unlockTables();
+            $this->_closeDB();
+            if(!$rc) {
+                msg($this->getLang('writefail'));
+                return null;
+            }
+            return true;
+        } else {
+            msg($this->getLang('connectfail'), -1);
+        }
+        return null; // return error
+    }
+
+    /**
+     * Modify user data
+     *
+     * An existing user dataset will be modified. Changes are given in an array.
+     *
+     * The dataset update will be rejected if the user name should be changed
+     * to an already existing one.
+     *
+     * The password must be provided unencrypted. Pasword encryption is done
+     * automatically if configured.
+     *
+     * If one or more groups can't be updated, an error will be set. In
+     * this case the dataset might already be changed and we can't rollback
+     * the changes. Transactions would be really useful here.
+     *
+     * modifyUser() may be called without SQL statements defined that are
+     * needed to change group membership (for example if only the user profile
+     * should be modified). In this case we assure that we don't touch groups
+     * even when $changes['grps'] is set by mistake.
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @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
+     */
+    public function modifyUser($user, $changes) {
+        $rc = false;
+
+        if(!is_array($changes) || !count($changes)) {
+            return true; // nothing to change
+        }
+
+        if($this->_openDB()) {
+            $this->_lockTables("WRITE");
+
+            $rc = $this->_updateUserInfo($user, $changes);
+
+            if(!$rc) {
+                msg($this->getLang('usernotexists'), -1);
+            } elseif(isset($changes['grps']) && $this->cando['modGroups']) {
+                $groups = $this->_getGroups($user);
+                $grpadd = array_diff($changes['grps'], $groups);
+                $grpdel = array_diff($groups, $changes['grps']);
+
+                foreach($grpadd as $group) {
+                    if(($this->_addUserToGroup($user, $group, true)) == false) {
+                        $rc = false;
+                    }
+                }
+
+                foreach($grpdel as $group) {
+                    if(($this->_delUserFromGroup($user, $group)) == false) {
+                        $rc = false;
+                    }
+                }
+
+                if(!$rc) msg($this->getLang('writefail'));
+            }
+
+            $this->_unlockTables();
+            $this->_closeDB();
+        } else {
+            msg($this->getLang('connectfail'), -1);
+        }
+        return $rc;
+    }
+
+    /**
+     * [public function]
+     *
+     * Remove one or more users from the list of registered users
+     *
+     * @param   array  $users   array of users to be deleted
+     * @return  int             the number of users deleted
+     *
+     * @author  Christopher Smith <chris@jalakai.co.uk>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    function deleteUsers($users) {
+        $count = 0;
+
+        if($this->_openDB()) {
+            if(is_array($users) && count($users)) {
+                $this->_lockTables("WRITE");
+                foreach($users as $user) {
+                    if($this->_delUser($user)) {
+                        $count++;
+                    }
+                }
+                $this->_unlockTables();
+            }
+            $this->_closeDB();
+        } else {
+            msg($this->getLang('connectfail'), -1);
+        }
+        return $count;
+    }
+
+    /**
+     * Counts users which meet certain $filter criteria.
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  array $filter  filter criteria in item/pattern pairs
+     * @return int count of found users
+     */
+    public function getUserCount($filter = array()) {
+        $rc = 0;
+
+        if($this->_openDB()) {
+            $sql = $this->_createSQLFilter($this->getConf('getUsers'), $filter);
+
+            if($this->dbver >= 4) {
+                $sql = substr($sql, 6); /* remove 'SELECT' or 'select' */
+                $sql = "SELECT SQL_CALC_FOUND_ROWS".$sql." LIMIT 1";
+                $this->_queryDB($sql);
+                $result = $this->_queryDB("SELECT FOUND_ROWS()");
+                $rc     = $result[0]['FOUND_ROWS()'];
+            } else if(($result = $this->_queryDB($sql)))
+                $rc = count($result);
+
+            $this->_closeDB();
+        }
+        return $rc;
+    }
+
+    /**
+     * Bulk retrieval of user data
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  int          $first  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
+     * @return  array userinfo (refer getUserData for internal userinfo details)
+     */
+    public function retrieveUsers($first = 0, $limit = 0, $filter = array()) {
+        $out = array();
+
+        if($this->_openDB()) {
+            $this->_lockTables("READ");
+            $sql = $this->_createSQLFilter($this->getConf('getUsers'), $filter);
+            $sql .= " ".$this->getConf('SortOrder');
+            if($limit) {
+                $sql .= " LIMIT $first, $limit";
+            } elseif($first) {
+                $sql .= " LIMIT $first";
+            }
+            $result = $this->_queryDB($sql);
+
+            if(!empty($result)) {
+                foreach($result as $user) {
+                    if(($info = $this->_getUserInfo($user['user']))) {
+                        $out[$user['user']] = $info;
+                    }
+                }
+            }
+
+            $this->_unlockTables();
+            $this->_closeDB();
+        }
+        return $out;
+    }
+
+    /**
+     * Give user membership of a group
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string $user
+     * @param   string $group
+     * @return  bool   true on success, false on error
+     */
+    protected function joinGroup($user, $group) {
+        $rc = false;
+
+        if($this->_openDB()) {
+            $this->_lockTables("WRITE");
+            $rc = $this->_addUserToGroup($user, $group);
+            $this->_unlockTables();
+            $this->_closeDB();
+        }
+        return $rc;
+    }
+
+    /**
+     * Remove user from a group
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string $user  user that leaves a group
+     * @param   string $group group to leave
+     * @return  bool
+     */
+    protected function leaveGroup($user, $group) {
+        $rc = false;
+
+        if($this->_openDB()) {
+            $this->_lockTables("WRITE");
+            $rc  = $this->_delUserFromGroup($user, $group);
+            $this->_unlockTables();
+            $this->_closeDB();
+        }
+        return $rc;
+    }
+
+    /**
+     * MySQL is case-insensitive
+     */
+    public function isCaseSensitive() {
+        return false;
+    }
+
+    /**
+     * Adds a user to a group.
+     *
+     * If $force is set to true non existing groups would be created.
+     *
+     * The database connection must already be established. Otherwise
+     * this function does nothing and returns 'false'. It is strongly
+     * recommended to call this function only after all participating
+     * tables (group and usergroup) have been locked.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string $user    user to add to a group
+     * @param   string $group   name of the group
+     * @param   bool   $force   create missing groups
+     * @return  bool   true on success, false on error
+     */
+    protected function _addUserToGroup($user, $group, $force = false) {
+        $newgroup = 0;
+
+        if(($this->dbcon) && ($user)) {
+            $gid = $this->_getGroupID($group);
+            if(!$gid) {
+                if($force) { // create missing groups
+                    $sql      = str_replace('%{group}', $this->_escape($group), $this->getConf('addGroup'));
+                    $gid      = $this->_modifyDB($sql);
+                    $newgroup = 1; // group newly created
+                }
+                if(!$gid) return false; // group didn't exist and can't be created
+            }
+
+            $sql = $this->getConf('addUserGroup');
+            if(strpos($sql, '%{uid}') !== false) {
+                $uid = $this->_getUserID($user);
+                $sql = str_replace('%{uid}', $this->_escape($uid), $sql);
+            }
+            $sql = str_replace('%{user}', $this->_escape($user), $sql);
+            $sql = str_replace('%{gid}', $this->_escape($gid), $sql);
+            $sql = str_replace('%{group}', $this->_escape($group), $sql);
+            if($this->_modifyDB($sql) !== false) {
+                $this->_flushUserInfoCache($user);
+                return true;
+            }
+
+            if($newgroup) { // remove previously created group on error
+                $sql = str_replace('%{gid}', $this->_escape($gid), $this->getConf('delGroup'));
+                $sql = str_replace('%{group}', $this->_escape($group), $sql);
+                $this->_modifyDB($sql);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Remove user from a group
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string $user  user that leaves a group
+     * @param   string $group group to leave
+     * @return  bool   true on success, false on error
+     */
+    protected function _delUserFromGroup($user, $group) {
+        $rc = false;
+
+        if(($this->dbcon) && ($user)) {
+            $sql = $this->getConf('delUserGroup');
+            if(strpos($sql, '%{uid}') !== false) {
+                $uid = $this->_getUserID($user);
+                $sql = str_replace('%{uid}', $this->_escape($uid), $sql);
+            }
+            $gid = $this->_getGroupID($group);
+            if($gid) {
+                $sql = str_replace('%{user}', $this->_escape($user), $sql);
+                $sql = str_replace('%{gid}', $this->_escape($gid), $sql);
+                $sql = str_replace('%{group}', $this->_escape($group), $sql);
+                $rc  = $this->_modifyDB($sql) == 0 ? true : false;
+
+                if ($rc) {
+                    $this->_flushUserInfoCache($user);
+                }
+            }
+        }
+        return $rc;
+    }
+
+    /**
+     * Retrieves a list of groups the user is a member off.
+     *
+     * The database connection must already be established
+     * for this function to work. Otherwise it will return
+     * false.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $user user whose groups should be listed
+     * @return bool|array false on error, all groups on success
+     */
+    protected function _getGroups($user) {
+        $groups = array();
+
+        if($this->dbcon) {
+            $sql    = str_replace('%{user}', $this->_escape($user), $this->getConf('getGroups'));
+            $result = $this->_queryDB($sql);
+
+            if($result !== false && count($result)) {
+                foreach($result as $row) {
+                    $groups[] = $row['group'];
+                }
+            }
+            return $groups;
+        }
+        return false;
+    }
+
+    /**
+     * Retrieves the user id of a given user name
+     *
+     * The database connection must already be established
+     * for this function to work. Otherwise it will return
+     * false.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $user user whose id is desired
+     * @return mixed  user id
+     */
+    protected function _getUserID($user) {
+        if($this->dbcon) {
+            $sql    = str_replace('%{user}', $this->_escape($user), $this->getConf('getUserID'));
+            $result = $this->_queryDB($sql);
+            return $result === false ? false : $result[0]['id'];
+        }
+        return false;
+    }
+
+    /**
+     * Adds a new User to the database.
+     *
+     * The database connection must already be established
+     * for this function to work. Otherwise it will return
+     * false.
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $user  login of the user
+     * @param  string $pwd   encrypted password
+     * @param  string $name  full name of the user
+     * @param  string $mail  email address
+     * @param  array  $grps  array of groups the user should become member of
+     * @return bool
+     */
+    protected function _addUser($user, $pwd, $name, $mail, $grps) {
+        if($this->dbcon && is_array($grps)) {
+            $sql = str_replace('%{user}', $this->_escape($user), $this->getConf('addUser'));
+            $sql = str_replace('%{pass}', $this->_escape($pwd), $sql);
+            $sql = str_replace('%{name}', $this->_escape($name), $sql);
+            $sql = str_replace('%{email}', $this->_escape($mail), $sql);
+            $uid = $this->_modifyDB($sql);
+            $gid = false;
+            $group = '';
+
+            if($uid) {
+                foreach($grps as $group) {
+                    $gid = $this->_addUserToGroup($user, $group, true);
+                    if($gid === false) break;
+                }
+
+                if($gid !== false){
+                    $this->_flushUserInfoCache($user);
+                    return true;
+                } else {
+                    /* remove the new user and all group relations if a group can't
+                     * be assigned. Newly created groups will remain in the database
+                     * and won't be removed. This might create orphaned groups but
+                     * is not a big issue so we ignore this problem here.
+                     */
+                    $this->_delUser($user);
+                    $this->_debug("MySQL err: Adding user '$user' to group '$group' failed.", -1, __LINE__, __FILE__);
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Deletes a given user and all his group references.
+     *
+     * The database connection must already be established
+     * for this function to work. Otherwise it will return
+     * false.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $user username of the user to be deleted
+     * @return bool
+     */
+    protected function _delUser($user) {
+        if($this->dbcon) {
+            $uid = $this->_getUserID($user);
+            if($uid) {
+                $sql = str_replace('%{uid}', $this->_escape($uid), $this->getConf('delUserRefs'));
+                $this->_modifyDB($sql);
+                $sql = str_replace('%{uid}', $this->_escape($uid), $this->getConf('delUser'));
+                $sql = str_replace('%{user}', $this->_escape($user), $sql);
+                $this->_modifyDB($sql);
+                $this->_flushUserInfoCache($user);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Flush cached user information
+     *
+     * @author Christopher Smith <chris@jalakai.co.uk>
+     *
+     * @param  string  $user username of the user whose data is to be removed from the cache
+     *                       if null, empty the whole cache
+     */
+    protected function _flushUserInfoCache($user=null) {
+        if (is_null($user)) {
+            $this->cacheUserInfo = array();
+        } else {
+            unset($this->cacheUserInfo[$user]);
+        }
+    }
+
+    /**
+     * Quick lookup to see if a user's information has been cached
+     *
+     * This test does not need a database connection or read lock
+     *
+     * @author Christopher Smith <chris@jalakai.co.uk>
+     *
+     * @param  string  $user  username to be looked up in the cache
+     * @param  bool    $requireGroups  true, if cached info should include group memberships
+     *
+     * @return bool    existence of required user information in the cache
+     */
+    protected function _cacheExists($user, $requireGroups=true) {
+        if (isset($this->cacheUserInfo[$user])) {
+            if (!is_array($this->cacheUserInfo[$user])) {
+                return true;          // user doesn't exist
+            }
+
+            if (!$requireGroups || isset($this->cacheUserInfo[$user]['grps'])) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Get a user's information
+     *
+     * The database connection must already be established for this function to work.
+     *
+     * @author Christopher Smith <chris@jalakai.co.uk>
+     *
+     * @param  string  $user  username of the user whose information is being reterieved
+     * @param  bool    $requireGroups  true if group memberships should be included
+     * @param  bool    $useCache       true if ok to return cached data & to cache returned data
+     *
+     * @return mixed   false|array     false if the user doesn't exist
+     *                                 array containing user information if user does exist
+     */
+    protected function _getUserInfo($user, $requireGroups=true, $useCache=true) {
+        $info = null;
+
+        if ($useCache && isset($this->cacheUserInfo[$user])) {
+            $info = $this->cacheUserInfo[$user];
+        }
+
+        if (is_null($info)) {
+            $info = $this->_retrieveUserInfo($user);
+        }
+
+        if (($requireGroups == true) && $info && !isset($info['grps'])) {
+            $info['grps'] = $this->_getGroups($user);
+        }
+
+        if ($useCache) {
+            $this->cacheUserInfo[$user] = $info;
+        }
+
+        return $info;
+    }
+
+    /**
+     * retrieveUserInfo
+     *
+     * Gets the data for a specific user. The database connection
+     * must already be established for this function to work.
+     * Otherwise it will return 'false'.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $user  user's nick to get data for
+     * @return false|array false on error, user info on success
+     */
+    protected function _retrieveUserInfo($user) {
+        $sql    = str_replace('%{user}', $this->_escape($user), $this->getConf('getUserInfo'));
+        $result = $this->_queryDB($sql);
+        if($result !== false && count($result)) {
+            $info         = $result[0];
+            return $info;
+        }
+        return false;
+    }
+
+    /**
+     * Updates the user info in the database
+     *
+     * Update a user data structure in the database according changes
+     * given in an array. The user name can only be changes if it didn't
+     * exists already. If the new user name exists the update procedure
+     * will be aborted. The database keeps unchanged.
+     *
+     * The database connection has already to be established for this
+     * function to work. Otherwise it will return 'false'.
+     *
+     * The password will be encrypted if necessary.
+     *
+     * @param  string $user    user's nick being updated
+     * @param  array $changes  array of items to change as pairs of item and value
+     * @return bool true on success or false on error
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    protected function _updateUserInfo($user, $changes) {
+        $sql = $this->getConf('updateUser')." ";
+        $cnt = 0;
+        $err = 0;
+
+        if($this->dbcon) {
+            $uid = $this->_getUserID($user);
+            if ($uid === false) {
+                return false;
+            }
+
+            foreach($changes as $item => $value) {
+                if($item == 'user') {
+                    if(($this->_getUserID($changes['user']))) {
+                        $err = 1; /* new username already exists */
+                        break; /* abort update */
+                    }
+                    if($cnt++ > 0) $sql .= ", ";
+                    $sql .= str_replace('%{user}', $value, $this->getConf('UpdateLogin'));
+                } else if($item == 'name') {
+                    if($cnt++ > 0) $sql .= ", ";
+                    $sql .= str_replace('%{name}', $value, $this->getConf('UpdateName'));
+                } else if($item == 'pass') {
+                    if(!$this->getConf('forwardClearPass'))
+                        $value = auth_cryptPassword($value);
+                    if($cnt++ > 0) $sql .= ", ";
+                    $sql .= str_replace('%{pass}', $value, $this->getConf('UpdatePass'));
+                } else if($item == 'mail') {
+                    if($cnt++ > 0) $sql .= ", ";
+                    $sql .= str_replace('%{email}', $value, $this->getConf('UpdateEmail'));
+                }
+            }
+
+            if($err == 0) {
+                if($cnt > 0) {
+                    $sql .= " ".str_replace('%{uid}', $uid, $this->getConf('UpdateTarget'));
+                    if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp.
+                    $this->_modifyDB($sql);
+                    $this->_flushUserInfoCache($user);
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Retrieves the group id of a given group name
+     *
+     * The database connection must already be established
+     * for this function to work. Otherwise it will return
+     * false.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $group   group name which id is desired
+     * @return false|string group id
+     */
+    protected function _getGroupID($group) {
+        if($this->dbcon) {
+            $sql    = str_replace('%{group}', $this->_escape($group), $this->getConf('getGroupID'));
+            $result = $this->_queryDB($sql);
+            return $result === false ? false : $result[0]['id'];
+        }
+        return false;
+    }
+
+    /**
+     * Opens a connection to a database and saves the handle for further
+     * usage in the object. The successful call to this functions is
+     * essential for most functions in this object.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @return bool
+     */
+    protected function _openDB() {
+        if(!$this->dbcon) {
+            $con = @mysql_connect($this->getConf('server'), $this->getConf('user'), conf_decodeString($this->getConf('password')));
+            if($con) {
+                if((mysql_select_db($this->getConf('database'), $con))) {
+                    if((preg_match('/^(\d+)\.(\d+)\.(\d+).*/', mysql_get_server_info($con), $result)) == 1) {
+                        $this->dbver = $result[1];
+                        $this->dbrev = $result[2];
+                        $this->dbsub = $result[3];
+                    }
+                    $this->dbcon = $con;
+                    if($this->getConf('charset')) {
+                        mysql_query('SET CHARACTER SET "'.$this->getConf('charset').'"', $con);
+                    }
+                    return true; // connection and database successfully opened
+                } else {
+                    mysql_close($con);
+                    $this->_debug("MySQL err: No access to database {$this->getConf('database')}.", -1, __LINE__, __FILE__);
+                }
+            } else {
+                $this->_debug(
+                    "MySQL err: Connection to {$this->getConf('user')}@{$this->getConf('server')} not possible.",
+                    -1, __LINE__, __FILE__
+                );
+            }
+
+            return false; // connection failed
+        }
+        return true; // connection already open
+    }
+
+    /**
+     * Closes a database connection.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    protected function _closeDB() {
+        if($this->dbcon) {
+            mysql_close($this->dbcon);
+            $this->dbcon = 0;
+        }
+    }
+
+    /**
+     * Sends a SQL query to the database and transforms the result into
+     * an associative array.
+     *
+     * This function is only able to handle queries that returns a
+     * table such as SELECT.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param string $query  SQL string that contains the query
+     * @return array|false with the result table
+     */
+    protected function _queryDB($query) {
+        if($this->getConf('debug') >= 2) {
+            msg('MySQL query: '.hsc($query), 0, __LINE__, __FILE__);
+        }
+
+        $resultarray = array();
+        if($this->dbcon) {
+            $result = @mysql_query($query, $this->dbcon);
+            if($result) {
+                while(($t = mysql_fetch_assoc($result)) !== false)
+                    $resultarray[] = $t;
+                mysql_free_result($result);
+                return $resultarray;
+            }
+            $this->_debug('MySQL err: '.mysql_error($this->dbcon), -1, __LINE__, __FILE__);
+        }
+        return false;
+    }
+
+    /**
+     * Sends a SQL query to the database
+     *
+     * This function is only able to handle queries that returns
+     * either nothing or an id value such as INPUT, DELETE, UPDATE, etc.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param string $query  SQL string that contains the query
+     * @return int|bool insert id or 0, false on error
+     */
+    protected function _modifyDB($query) {
+        if($this->getConf('debug') >= 2) {
+            msg('MySQL query: '.hsc($query), 0, __LINE__, __FILE__);
+        }
+
+        if($this->dbcon) {
+            $result = @mysql_query($query, $this->dbcon);
+            if($result) {
+                $rc = mysql_insert_id($this->dbcon); //give back ID on insert
+                if($rc !== false) return $rc;
+            }
+            $this->_debug('MySQL err: '.mysql_error($this->dbcon), -1, __LINE__, __FILE__);
+        }
+        return false;
+    }
+
+    /**
+     * Locked a list of tables for exclusive access so that modifications
+     * to the database can't be disturbed by other threads. The list
+     * could be set with $conf['plugin']['authmysql']['TablesToLock'] = array()
+     *
+     * If aliases for tables are used in SQL statements, also this aliases
+     * must be locked. For eg. you use a table 'user' and the alias 'u' in
+     * some sql queries, the array must looks like this (order is important):
+     *   array("user", "user AS u");
+     *
+     * MySQL V3 is not able to handle transactions with COMMIT/ROLLBACK
+     * so that this functionality is simulated by this function. Nevertheless
+     * it is not as powerful as transactions, it is a good compromise in safty.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param string $mode  could be 'READ' or 'WRITE'
+     * @return bool
+     */
+    protected function _lockTables($mode) {
+        if($this->dbcon) {
+            $ttl = $this->getConf('TablesToLock');
+            if(is_array($ttl) && !empty($ttl)) {
+                if($mode == "READ" || $mode == "WRITE") {
+                    $sql = "LOCK TABLES ";
+                    $cnt = 0;
+                    foreach($ttl as $table) {
+                        if($cnt++ != 0) $sql .= ", ";
+                        $sql .= "$table $mode";
+                    }
+                    $this->_modifyDB($sql);
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Unlock locked tables. All existing locks of this thread will be
+     * abrogated.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @return bool
+     */
+    protected function _unlockTables() {
+        if($this->dbcon) {
+            $this->_modifyDB("UNLOCK TABLES");
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Transforms the filter settings in an filter string for a SQL database
+     * The database connection must already be established, otherwise the
+     * original SQL string without filter criteria will be returned.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $sql     SQL string to which the $filter criteria should be added
+     * @param  array $filter  array of filter criteria as pairs of item and pattern
+     * @return string SQL string with attached $filter criteria on success, original SQL string on error
+     */
+    protected function _createSQLFilter($sql, $filter) {
+        $SQLfilter = "";
+        $cnt       = 0;
+
+        if($this->dbcon) {
+            foreach($filter as $item => $pattern) {
+                $tmp = '%'.$this->_escape($pattern).'%';
+                if($item == 'user') {
+                    if($cnt++ > 0) $SQLfilter .= " AND ";
+                    $SQLfilter .= str_replace('%{user}', $tmp, $this->getConf('FilterLogin'));
+                } else if($item == 'name') {
+                    if($cnt++ > 0) $SQLfilter .= " AND ";
+                    $SQLfilter .= str_replace('%{name}', $tmp, $this->getConf('FilterName'));
+                } else if($item == 'mail') {
+                    if($cnt++ > 0) $SQLfilter .= " AND ";
+                    $SQLfilter .= str_replace('%{email}', $tmp, $this->getConf('FilterEmail'));
+                } else if($item == 'grps') {
+                    if($cnt++ > 0) $SQLfilter .= " AND ";
+                    $SQLfilter .= str_replace('%{group}', $tmp, $this->getConf('FilterGroup'));
+                }
+            }
+
+            // we have to check SQLfilter here and must not use $cnt because if
+            // any of cnf['Filter????'] is not defined, a malformed SQL string
+            // would be generated.
+
+            if(strlen($SQLfilter)) {
+                $glue = strpos(strtolower($sql), "where") ? " AND " : " WHERE ";
+                $sql  = $sql.$glue.$SQLfilter;
+            }
+        }
+
+        return $sql;
+    }
+
+    /**
+     * Escape a string for insertion into the database
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     *
+     * @param  string  $string The string to escape
+     * @param  boolean $like   Escape wildcard chars as well?
+     * @return string
+     */
+    protected function _escape($string, $like = false) {
+        if($this->dbcon) {
+            $string = mysql_real_escape_string($string, $this->dbcon);
+        } else {
+            $string = addslashes($string);
+        }
+        if($like) {
+            $string = addcslashes($string, '%_');
+        }
+        return $string;
+    }
+
+    /**
+     * 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/authmysql/conf/default.php b/wiki/lib/plugins/authmysql/conf/default.php
new file mode 100644
index 0000000..427bea2
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/conf/default.php
@@ -0,0 +1,34 @@
+<?php
+
+$conf['charset']          = 'utf8';
+$conf['server']           = '';
+$conf['user']             = '';
+$conf['password']         = '';
+$conf['database']         = '';
+$conf['debug']            = 0;
+$conf['forwardClearPass'] = 0;
+$conf['TablesToLock']     = array();
+$conf['checkPass']        = '';
+$conf['getUserInfo']      = '';
+$conf['getGroups']        = '';
+$conf['getUsers']         = '';
+$conf['FilterLogin']      = '';
+$conf['FilterName']       = '';
+$conf['FilterEmail']      = '';
+$conf['FilterGroup']      = '';
+$conf['SortOrder']        = '';
+$conf['addUser']          = '';
+$conf['addGroup']         = '';
+$conf['addUserGroup']     = '';
+$conf['delGroup']         = '';
+$conf['getUserID']        = '';
+$conf['delUser']          = '';
+$conf['delUserRefs']      = '';
+$conf['updateUser']       = '';
+$conf['UpdateLogin']      = '';
+$conf['UpdatePass']       = '';
+$conf['UpdateEmail']      = '';
+$conf['UpdateName']       = '';
+$conf['UpdateTarget']     = '';
+$conf['delUserGroup']     = '';
+$conf['getGroupID']       = '';
\ No newline at end of file
diff --git a/wiki/lib/plugins/authmysql/conf/metadata.php b/wiki/lib/plugins/authmysql/conf/metadata.php
new file mode 100644
index 0000000..bad34e6
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/conf/metadata.php
@@ -0,0 +1,34 @@
+<?php
+
+$meta['server']           = array('string','_caution' => 'danger');
+$meta['user']             = array('string','_caution' => 'danger');
+$meta['password']         = array('password','_caution' => 'danger','_code' => 'base64');
+$meta['database']         = array('string','_caution' => 'danger');
+$meta['charset']          = array('string','_caution' => 'danger');
+$meta['debug']            = array('multichoice','_choices' => array(0,1,2),'_caution' => 'security');
+$meta['forwardClearPass'] = array('onoff','_caution' => 'danger');
+$meta['TablesToLock']     = array('array','_caution' => 'danger');
+$meta['checkPass']        = array('','_caution' => 'danger');
+$meta['getUserInfo']      = array('','_caution' => 'danger');
+$meta['getGroups']        = array('','_caution' => 'danger');
+$meta['getUsers']         = array('','_caution' => 'danger');
+$meta['FilterLogin']      = array('string','_caution' => 'danger');
+$meta['FilterName']       = array('string','_caution' => 'danger');
+$meta['FilterEmail']      = array('string','_caution' => 'danger');
+$meta['FilterGroup']      = array('string','_caution' => 'danger');
+$meta['SortOrder']        = array('string','_caution' => 'danger');
+$meta['addUser']          = array('','_caution' => 'danger');
+$meta['addGroup']         = array('','_caution' => 'danger');
+$meta['addUserGroup']     = array('','_caution' => 'danger');
+$meta['delGroup']         = array('','_caution' => 'danger');
+$meta['getUserID']        = array('','_caution' => 'danger');
+$meta['delUser']          = array('','_caution' => 'danger');
+$meta['delUserRefs']      = array('','_caution' => 'danger');
+$meta['updateUser']       = array('string','_caution' => 'danger');
+$meta['UpdateLogin']      = array('string','_caution' => 'danger');
+$meta['UpdatePass']       = array('string','_caution' => 'danger');
+$meta['UpdateEmail']      = array('string','_caution' => 'danger');
+$meta['UpdateName']       = array('string','_caution' => 'danger');
+$meta['UpdateTarget']     = array('string','_caution' => 'danger');
+$meta['delUserGroup']     = array('','_caution' => 'danger');
+$meta['getGroupID']       = array('','_caution' => 'danger');
diff --git a/wiki/lib/plugins/authmysql/lang/bg/lang.php b/wiki/lib/plugins/authmysql/lang/bg/lang.php
new file mode 100644
index 0000000..d5837c7
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/bg/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['connectfail']           = 'Свързването с базата данни се провали.';
+$lang['userexists']            = 'За съжаление вече съществува потребител с това име.';
+$lang['usernotexists']         = 'За съжаление не съществува такъв потребител.';
diff --git a/wiki/lib/plugins/authmysql/lang/bg/settings.php b/wiki/lib/plugins/authmysql/lang/bg/settings.php
new file mode 100644
index 0000000..cd63702
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/bg/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ * @author Ivan Peltekov <ivan.peltekov@abv.bg>
+ */
+$lang['server']                = 'Вашият MySQL сървър';
+$lang['user']                  = 'MySQL потребителско име';
+$lang['password']              = 'Парола за горния потребител';
+$lang['database']              = 'Име на базата от данни';
+$lang['charset']               = 'Набор от знаци, който се ползва в базата от данни';
+$lang['debug']                 = 'Показване на допълнителна debug информация';
+$lang['checkPass']             = 'SQL заявка за проверка на паролите';
+$lang['getUserInfo']           = 'SQL заявка за извличане на информация за потребителя н';
+$lang['debug_o_0']             = 'не';
+$lang['debug_o_1']             = 'само при грешка';
+$lang['debug_o_2']             = 'за всяко SQL запитване';
diff --git a/wiki/lib/plugins/authmysql/lang/cs/lang.php b/wiki/lib/plugins/authmysql/lang/cs/lang.php
new file mode 100644
index 0000000..4dd63b4
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/cs/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ */
+$lang['connectfail']           = 'Selhalo připojení k databázi.';
+$lang['userexists']            = 'Omlouváme se, ale uživatel s tímto jménem již existuje.';
+$lang['usernotexists']         = 'Omlouváme se, uživatel tohoto jména neexistuje.';
+$lang['writefail']             = 'Nelze změnit údaje uživatele. Informujte prosím správce wiki';
diff --git a/wiki/lib/plugins/authmysql/lang/cs/settings.php b/wiki/lib/plugins/authmysql/lang/cs/settings.php
new file mode 100644
index 0000000..bc8e136
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/cs/settings.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ */
+$lang['server']                = 'Váš server MySQL';
+$lang['user']                  = 'Uživatelské jméno pro MySQL';
+$lang['password']              = 'Heslo tohoto uživatele';
+$lang['database']              = 'Použtá databáze';
+$lang['charset']               = 'znaková sada použitá v databázi';
+$lang['debug']                 = 'Zobrazit dodatečné debugovací informace';
+$lang['forwardClearPass']      = 'Posílat uživatelské heslo jako čistý text do příkazů SQL namísto využití volby passcrypt.';
+$lang['TablesToLock']          = 'Čárkou oddělený seznam tabulek, které mohou být zamčené během operací zápisu';
+$lang['checkPass']             = 'Příkaz SQL pro kontrolu hesel';
+$lang['getUserInfo']           = 'Příkaz SQL pro získání informací o uživateli';
+$lang['getGroups']             = 'Příkaz SQL pro získání uživatelovy skupiny';
+$lang['getUsers']              = 'Příkaz SQL pro seznam všech uživatelů';
+$lang['FilterLogin']           = 'Příkaz SQL pro filtrování uživatelů podle přihlašovacího jména';
+$lang['FilterName']            = 'Příkaz SQL pro filtrování uživatelů podle celého jména';
+$lang['FilterEmail']           = 'Příkaz SQL pro filtrování uživatelů podle adres e-mailů';
+$lang['FilterGroup']           = 'Příkaz SQL pro filtrování uživatelů podle členství ve skupinách';
+$lang['SortOrder']             = 'Příkaz SQL pro řazení uživatelů';
+$lang['addUser']               = 'Příkaz SQL pro přidání nového uživatele';
+$lang['addGroup']              = 'Příkaz SQL pro přidání nové skupiny';
+$lang['addUserGroup']          = 'Příkaz SQL pro přidání uživatele do existující skupiny';
+$lang['delGroup']              = 'Příkaz SQL pro vymazání skupiny';
+$lang['getUserID']             = 'Příkaz SQL pro získání primárního klíče uživatele';
+$lang['delUser']               = 'Příkaz SQL pro vymazání uživatele';
+$lang['delUserRefs']           = 'Příkaz SQL pro odstranění členství uživatele se všech skupin';
+$lang['updateUser']            = 'Příkaz SQL pro aktualizaci uživatelského profilu';
+$lang['UpdateLogin']           = 'Klauzule pro aktualizaci přihlačovacího jména uživatele';
+$lang['UpdatePass']            = 'Klauzule pro aktualizaci hesla uživatele';
+$lang['UpdateEmail']           = 'Klauzule pro aktualizaci e-mailové adresy uživatele';
+$lang['UpdateName']            = 'Klauzule pro aktualizaci celého jména uživatele';
+$lang['UpdateTarget']          = 'Omezující klauzule pro identifikaci uživatele při aktualizaci';
+$lang['delUserGroup']          = 'Příkaz SQL pro zrušení členství uživatele v dané skupině';
+$lang['getGroupID']            = 'Příkaz SQL pro získání primárního klíče skupiny';
+$lang['debug_o_0']             = 'nic';
+$lang['debug_o_1']             = 'pouze při chybách';
+$lang['debug_o_2']             = 'všechny dotazy SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/cy/lang.php b/wiki/lib/plugins/authmysql/lang/cy/lang.php
new file mode 100644
index 0000000..a96715c
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/cy/lang.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Welsh language file for authmysql plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail']    = 'Method y cysylltiad i\'r databas.';
+$lang['userexists']     = 'Sori, mae defnyddiwr gyda\'r enw mewngofnodi hwn eisoes yn bodoli.';
+$lang['usernotexists']  = 'Sori, \'dyw\'r defnyddiwr hwnnw ddim yn bodoli.';
+$lang['writefail']      = 'Methu â newid data defnyddiwr. Rhowch wybod i Weinyddwr y Wici';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authmysql/lang/cy/settings.php b/wiki/lib/plugins/authmysql/lang/cy/settings.php
new file mode 100644
index 0000000..526cffa
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/cy/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+$lang['server']           = 'Eich gweinydd MySQL';
+$lang['user']             = 'Defnyddair MySQL';
+$lang['password']         = 'Cyfrinair y defnyddiwr uchod';
+$lang['database']         = 'Databas i\'w ddefnyddio';
+$lang['charset']          = 'Set nodau i\'w defnyddio gyda\'r databas';
+$lang['debug']            = 'Dangos gwybodaeth dadfygio ychwanegol';
+$lang['forwardClearPass'] = 'Pasio cyfrineiriau defnyddwyr fel \'cleartext\' i\'r datganiadau SQL isod, yn hytrach na defnyddio\'r opsiwn \'passcrypt\'';
+$lang['TablesToLock']     = 'Rhestr a wahanwyd gan goma o dablau sydd angen eu cloi yn ystod gweithredoedd ysgrifennu';
+$lang['checkPass']        = 'Datganiad SQL i wirio cyfrineiriau';
+$lang['getUserInfo']      = 'Datganiad SQL i nôl gwybodaeth defnyddiwr';
+$lang['getGroups']        = 'Datganiad SQL i nôl aelodaeth grŵp y defnyddiwr';
+$lang['getUsers']         = 'Datganiad SQL i restru pob defnyddiwr';
+$lang['FilterLogin']      = 'Cymal SQL i hidlo defnyddwyr gan enw mewngofnodi';
+$lang['FilterName']       = 'Cymal SQL i hidlo defnyddwyr gan enw llawn';
+$lang['FilterEmail']      = 'Cymal SQL i hidlo defnyddwyr gan gyfeiriad ebost';
+$lang['FilterGroup']      = 'Cymal SQL i hidlo defnyddwyr gan aelodaeth grŵp';
+$lang['SortOrder']        = 'Cymal SQL i drefnu defnyddwyr';
+$lang['addUser']          = 'Datganiad SQL i ychwanegu defnyddiwr newydd';
+$lang['addGroup']         = 'Datganiad SQL i ychwanegu grŵp newydd';
+$lang['addUserGroup']     = 'Datganiad SQL i ychwanegu defnyddiwr newydd i grŵp sy\'n bodoli eisoes';
+$lang['delGroup']         = 'Datganiad SQL i dynnu grŵp';
+$lang['getUserID']        = 'Datganiad SQL i nôl prif allwedd y defnyddiwr';
+$lang['delUser']          = 'Datganiad SQL i ddileu defnyddiwr';
+$lang['delUserRefs']      = 'Datganiad SQL i dynnu defnyddiwr o bob grŵp';
+$lang['updateUser']       = 'Datganiad SQL i ddiweddaru proffil defnyddiwr';
+$lang['UpdateLogin']      = 'Cymal Diweddaru i ddiweddaru enw mewngofnodi defnyddiwr';
+$lang['UpdatePass']       = 'Cymal Diweddaru i ddiweddaru cyfrinair defnyddiwr';
+$lang['UpdateEmail']      = 'Cymal Diweddaru i ddiweddaru cyfeiriad ebost defnyddiwr';
+$lang['UpdateName']       = 'Cymal Diweddaru i ddiweddaru enw llawn defnyddiwr';
+$lang['UpdateTarget']     = 'Cymal Cyfyngu i adnabod y defnyddiwr wrth ddiweddaru';
+$lang['delUserGroup']     = 'Datganiad SQL i dynnu defnyddiwr oddi ar grŵp';
+$lang['getGroupID']       = 'Datganiad SQL i nôl prif allwedd grŵp penodol';
+
+
+$lang['debug_o_0'] = 'dim';
+$lang['debug_o_1'] = 'gyda gwallau yn unig';
+$lang['debug_o_2'] = 'pob ymholiad SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/da/lang.php b/wiki/lib/plugins/authmysql/lang/da/lang.php
new file mode 100644
index 0000000..9806e16
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/da/lang.php
@@ -0,0 +1,12 @@
+<?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']           = 'Kunne ikke forbinde til databasen.';
+$lang['userexists']            = 'Beklager, en bruger med dette login findes allerede.';
+$lang['usernotexists']         = 'Beklager, brugeren eksisterer ikke.';
+$lang['writefail']             = 'Kan ikke ændre brugerdata. Informér venligst wiki-administratoren';
diff --git a/wiki/lib/plugins/authmysql/lang/da/settings.php b/wiki/lib/plugins/authmysql/lang/da/settings.php
new file mode 100644
index 0000000..158765c
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/da/settings.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
+ * @author soer9648 <soer9648@eucl.dk>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['server']                = 'Din MySQL server';
+$lang['user']                  = 'MySQL brugernavn';
+$lang['password']              = 'Kodeord til ovenstående bruger';
+$lang['database']              = 'Database der skal benyttes';
+$lang['charset']               = 'Tegnsæt benyttet i database';
+$lang['debug']                 = 'Vis yderligere debug output';
+$lang['forwardClearPass']      = 'Videregiv bruger adgangskoder i klar tekst til nedenstående SQL statement, i stedet for at benytte passcrypt';
+$lang['TablesToLock']          = 'Kommasepareret liste over tabeller der skal låses under skrivning';
+$lang['checkPass']             = 'SQL-sætning til at kontrollere kodeord';
+$lang['getUserInfo']           = 'SQL-sætning til at hente brugerinformation';
+$lang['getGroups']             = 'SQL statement til at bestemme en brugers medlemskab af grupper';
+$lang['getUsers']              = 'SQL-sætning til at liste alle brugere';
+$lang['addUser']               = 'SQL-sætning til at tilføje en ny bruger';
+$lang['addGroup']              = 'SQL-sætning til at tilføje en ny gruppe';
+$lang['addUserGroup']          = 'SQL-sætning til at tilføje en bruger til en eksisterende gruppe';
+$lang['delGroup']              = 'SQL-sætning til at fjerne en gruppe';
+$lang['delUser']               = 'SQL-sætning til at slette en bruger';
+$lang['delUserRefs']           = 'SQL-sætning til at fjerne en bruger fra alle grupper';
+$lang['updateUser']            = 'SQL-sætning til at opdatere en brugerprofil';
+$lang['debug_o_0']             = 'ingen';
+$lang['debug_o_1']             = 'kun ved fejl';
+$lang['debug_o_2']             = 'alle SQL forespørgsler';
diff --git a/wiki/lib/plugins/authmysql/lang/de-informal/lang.php b/wiki/lib/plugins/authmysql/lang/de-informal/lang.php
new file mode 100644
index 0000000..11b130f
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/de-informal/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author rnck <dokuwiki@rnck.de>
+ */
+$lang['connectfail']           = 'Konnte nicht zur Datenbank verbinden.';
+$lang['userexists']            = 'Entschuldigung, es existiert bereits ein Nutzer mit diesem Login.';
+$lang['usernotexists']         = 'Entschuldigung, dieser Nutzer existiert nicht.';
+$lang['writefail']             = 'Konnte Nutzer-Daten nicht modifizieren. Bitte informiere einen Admin.';
diff --git a/wiki/lib/plugins/authmysql/lang/de-informal/settings.php b/wiki/lib/plugins/authmysql/lang/de-informal/settings.php
new file mode 100644
index 0000000..f6033d3
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/de-informal/settings.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Volker Bödker <volker@boedker.de>
+ */
+$lang['server']                = 'MySQL-Server';
+$lang['user']                  = 'Benutzername für den Zugriff auf den MySQL-Server.';
+$lang['password']              = 'Passwort des angegebenen Benutzers.';
+$lang['database']              = 'Zu verwendende Datenbank.';
+$lang['charset']               = 'Verwendetes Character-Set in der Datenbank.';
+$lang['debug']                 = 'Debug-Informationen anzeigen?';
+$lang['forwardClearPass']      = 'Passwort der DokuWiki-Benutzer im Klartext an die Datenbank übergeben? (Im Normalfall wird die passcrypt-Option angewendet.)';
+$lang['TablesToLock']          = 'Eine Komma-separierte Liste von Tabellen, die vor Schreiboperationen gesperrt werden müssen.';
+$lang['checkPass']             = 'SQL-Kommando zum Überprüfen von Passwörtern.';
+$lang['getUserInfo']           = 'SQL-Kommando um Benutzerinformationen auszulesen.';
+$lang['getGroups']             = 'SQL-Kommando um Gruppen eines Benutzers auszulesen.';
+$lang['getUsers']              = 'SQL-Kommando um alle Benutzer auszulesen.';
+$lang['FilterLogin']           = 'SQL-Bedingung um Benutzer anhand ihres Anmeldenamens zu filtern.';
+$lang['FilterName']            = 'SQL-Bedingung um Benutzer anhand ihres Namens zu filtern.';
+$lang['FilterEmail']           = 'SQL-Bedingung um Benutzer anhand ihrer E-Mail-Adresse zu filtern.';
+$lang['FilterGroup']           = 'SQL-Bedingung um Benutzer anhand ihrer Gruppenzugehörigkeit zu filtern.';
+$lang['SortOrder']             = 'SQL-Bedingung um anhand der die Benutzerliste sortiert wird.';
+$lang['addUser']               = 'SQL-Kommando um einen neuen Benutzer anzulegen.';
+$lang['addGroup']              = 'SQL-Kommando um eine neue Gruppe anzulegen.';
+$lang['addUserGroup']          = 'SQL-Kommando um einen Benutzer zu einer Gruppe hinzuzufügen.';
+$lang['delGroup']              = 'SQL-Kommando um eine Gruppe zu löschen.';
+$lang['getUserID']             = 'SQL-Kommando um den Primärschlüssel des Benutzers auszulesen.';
+$lang['delUser']               = 'SQL-Kommando um einen Benutzer zu löschen.';
+$lang['delUserRefs']           = 'SQL-Kommando um einen Benutzer aus allen Gruppen zu entfernen.';
+$lang['updateUser']            = 'SQL-Kommando um das Profil eines Benutzers zu aktualisieren.';
+$lang['UpdateLogin']           = 'SQL-Bedingung um den Anmeldenamen eines Benutzers zu ändern.';
+$lang['UpdatePass']            = 'SQL-Bedingung um das Passwort eines Benutzers zu ändern.';
+$lang['UpdateEmail']           = 'SQL-Bedingung um die E-Mail-Adresse eines Benutzers zu ändern.';
+$lang['UpdateName']            = 'SQL-Bedingung um den Namen eines Benutzers zu ändern.';
+$lang['UpdateTarget']          = 'SQL-Bedingung zur eindeutigen Identifikation des Benutzers.';
+$lang['delUserGroup']          = 'SQL-Kommando um einen Benutzer aus einer angegeben Gruppe zu entfernen.';
+$lang['getGroupID']            = 'SQL-Kommando um den Primärschlüssel einer Gruppe auszulesen.';
+$lang['debug_o_0']             = 'Keine.';
+$lang['debug_o_1']             = 'Nur Fehler.';
+$lang['debug_o_2']             = 'Alle SQL-Abfragen.';
diff --git a/wiki/lib/plugins/authmysql/lang/de/lang.php b/wiki/lib/plugins/authmysql/lang/de/lang.php
new file mode 100644
index 0000000..b552823
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/de/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Noel Tilliot <noeltilliot@byom.de>
+ * @author Hendrik Diel <diel.hendrik@gmail.com>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ */
+$lang['connectfail']           = 'Verbindung zur Datenbank fehlgeschlagen.';
+$lang['userexists']            = 'Entschuldigung, aber dieser Benutzername ist bereits vergeben.';
+$lang['usernotexists']         = 'Sorry, dieser Nutzer existiert nicht.';
+$lang['writefail']             = 'Die Benutzerdaten konnten nicht geändert werden. Bitte wenden Sie sich an den Wiki-Admin.';
diff --git a/wiki/lib/plugins/authmysql/lang/de/settings.php b/wiki/lib/plugins/authmysql/lang/de/settings.php
new file mode 100644
index 0000000..5b603e2
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/de/settings.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['server']                = 'MySQL-Server';
+$lang['user']                  = 'Benutzername für den Zugriff auf den MySQL-Server.';
+$lang['password']              = 'Passwort des angegebenen Benutzers.';
+$lang['database']              = 'Zu verwendende Datenbank';
+$lang['charset']               = 'Zeichensatz der Datenbank';
+$lang['debug']                 = 'Debug-Informationen anzeigen?';
+$lang['forwardClearPass']      = 'Passwort der DokuWiki-Benutzer im Klartext an die Datenbank übergeben? (Im Normalfall wird die passcrypt-Option angewendet.)';
+$lang['TablesToLock']          = 'Eine Komma-separierte Liste von Tabellen, die vor Schreiboperationen gesperrt werden müssen.';
+$lang['checkPass']             = 'SQL-Kommando zum Überprüfen von Passwörtern.';
+$lang['getUserInfo']           = 'SQL-Kommando um Benutzerinformationen auszulesen.';
+$lang['getGroups']             = 'SQL-Kommando um Gruppen eines Benutzers auszulesen.';
+$lang['getUsers']              = 'SQL-Kommando um alle Benutzer auszulesen.';
+$lang['FilterLogin']           = 'SQL-Bedingung um Benutzer anhand ihres Anmeldenamens zu filtern.';
+$lang['FilterName']            = 'SQL-Bedingung um Benutzer anhand ihres Namens zu filtern.';
+$lang['FilterEmail']           = 'SQL-Bedingung um Benutzer anhand ihrer E-Mail-Adresse zu filtern.';
+$lang['FilterGroup']           = 'SQL-Bedingung um Benutzer anhand ihrer Gruppenzugehörigkeit zu filtern.';
+$lang['SortOrder']             = 'SQL-Bedingung um anhand der die Benutzerliste sortiert wird.';
+$lang['addUser']               = 'SQL-Kommando um einen neuen Benutzer anzulegen.';
+$lang['addGroup']              = 'SQL-Kommando um eine neue Gruppe anzulegen.';
+$lang['addUserGroup']          = 'SQL-Kommando um einen Benutzer zu einer Gruppe hinzuzufügen.';
+$lang['delGroup']              = 'SQL-Kommando um eine Gruppe zu löschen.';
+$lang['getUserID']             = 'SQL-Kommando um den Primärschlüssel des Benutzers auszulesen.';
+$lang['delUser']               = 'SQL-Kommando um einen Benutzer zu löschen.';
+$lang['delUserRefs']           = 'SQL-Kommando um einen Benutzer aus allen Gruppen zu entfernen.';
+$lang['updateUser']            = 'SQL-Kommando um das Profil eines Benutzers zu aktualisieren.';
+$lang['UpdateLogin']           = 'SQL-Bedingung um den Anmeldenamen eines Benutzers zu ändern.';
+$lang['UpdatePass']            = 'SQL-Bedingung um das Passwort eines Benutzers zu ändern.';
+$lang['UpdateEmail']           = 'SQL-Bedingung um die E-Mail-Adresse eines Benutzers zu ändern.';
+$lang['UpdateName']            = 'SQL-Bedingung um den Namen eines Benutzers zu ändern.';
+$lang['UpdateTarget']          = 'SQL-Bedingung zur eindeutigen Identifikation des Benutzers.';
+$lang['delUserGroup']          = 'SQL-Kommando um einen Benutzer aus einer angegeben Gruppe zu entfernen.';
+$lang['getGroupID']            = 'SQL-Kommando um den Primärschlüssel einer Gruppe auszulesen.';
+$lang['debug_o_0']             = 'Keine.';
+$lang['debug_o_1']             = 'Nur Fehler.';
+$lang['debug_o_2']             = 'Alle SQL-Abfragen.';
diff --git a/wiki/lib/plugins/authmysql/lang/en/lang.php b/wiki/lib/plugins/authmysql/lang/en/lang.php
new file mode 100644
index 0000000..8313616
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/en/lang.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * English language file for authmysql plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail']    = 'Failed to connect to database.';
+$lang['userexists']     = 'Sorry, a user with this login already exists.';
+$lang['usernotexists']  = 'Sorry, that user doesn\'t exist.';
+$lang['writefail']      = 'Unable to modify user data. Please inform the Wiki-Admin';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authmysql/lang/en/settings.php b/wiki/lib/plugins/authmysql/lang/en/settings.php
new file mode 100644
index 0000000..b95f397
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/en/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+$lang['server']           = 'Your MySQL server';
+$lang['user']             = 'MySQL user name';
+$lang['password']         = 'Password for above user';
+$lang['database']         = 'Database to use';
+$lang['charset']          = 'Character set used in database';
+$lang['debug']            = 'Display additional debug information';
+$lang['forwardClearPass'] = 'Pass user passwords as cleartext to the SQL statements below, instead of using the passcrypt option';
+$lang['TablesToLock']     = 'Comma separated list of tables that should be locked on write operations';
+$lang['checkPass']        = 'SQL statement for checking passwords';
+$lang['getUserInfo']      = 'SQL statement for retrieving user information';
+$lang['getGroups']        = 'SQL statement for retrieving a user\'s group memberships';
+$lang['getUsers']         = 'SQL statement to list all users';
+$lang['FilterLogin']      = 'SQL clause for filtering users by login name';
+$lang['FilterName']       = 'SQL clause for filtering users by full name';
+$lang['FilterEmail']      = 'SQL clause for filtering users by email address';
+$lang['FilterGroup']      = 'SQL clause for filtering users by group membership';
+$lang['SortOrder']        = 'SQL clause to sort users';
+$lang['addUser']          = 'SQL statement to add a new user';
+$lang['addGroup']         = 'SQL statement to add a new group';
+$lang['addUserGroup']     = 'SQL statement to add a user to an existing group';
+$lang['delGroup']         = 'SQL statement to remove a group';
+$lang['getUserID']        = 'SQL statement to get the primary key of a user';
+$lang['delUser']          = 'SQL statement to delete a user';
+$lang['delUserRefs']      = 'SQL statement to remove a user from all groups';
+$lang['updateUser']       = 'SQL statement to update a user profile';
+$lang['UpdateLogin']      = 'Update clause for updating the user\'s login name';
+$lang['UpdatePass']       = 'Update clause for updating the user\'s password';
+$lang['UpdateEmail']      = 'Update clause for updating the user\'s email address';
+$lang['UpdateName']       = 'Update clause for updating the user\'s full name';
+$lang['UpdateTarget']     = 'Limit clause to identify the user when updating';
+$lang['delUserGroup']     = 'SQL statement to remove a user from a given group';
+$lang['getGroupID']       = 'SQL statement to get the primary key of a given group';
+
+
+$lang['debug_o_0'] = 'none';
+$lang['debug_o_1'] = 'on errors only';
+$lang['debug_o_2'] = 'all SQL queries';
diff --git a/wiki/lib/plugins/authmysql/lang/eo/lang.php b/wiki/lib/plugins/authmysql/lang/eo/lang.php
new file mode 100644
index 0000000..818c392
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/eo/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>
+ */
+$lang['usernotexists']         = 'Pardonu, tiu uzanto ne ekzistas.';
diff --git a/wiki/lib/plugins/authmysql/lang/eo/settings.php b/wiki/lib/plugins/authmysql/lang/eo/settings.php
new file mode 100644
index 0000000..b85f812
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/eo/settings.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['server']                = 'Via MySQL-servilo';
+$lang['user']                  = 'MySQL uzantonomo';
+$lang['password']              = 'Pasvorto por tiu uzanto';
+$lang['database']              = 'Uzenda datumbazo';
+$lang['charset']               = 'Uzata tiparo en la datumbazo';
+$lang['debug']                 = 'Ĉu montri aldonajn erarinformojn?';
+$lang['forwardClearPass']      = 'Ĉu transdoni pasvortojn klartekste al la SQL-frazoj sube anstataŭ uzi pasvortan kaŝon';
+$lang['TablesToLock']          = 'Komodisigita listo de tabeloj, al kiuj ne eblu skribi';
+$lang['checkPass']             = 'SQL-frazo por testi pasvortojn';
+$lang['getUserInfo']           = 'SQL-frazo por ricevi uzantajn informojn';
+$lang['getGroups']             = 'SQL-frazo por ricevi la grupmembrecojn de uzanto';
+$lang['getUsers']              = 'SQL-frazo por listigi ĉiujn uzantojn';
+$lang['FilterLogin']           = 'SQL-frazo por filtri uzantojn je ensaluta nomo';
+$lang['FilterName']            = 'SQL-frazo por filtri uzantojn je plena nomo';
+$lang['FilterEmail']           = 'SQL-frazo por filtri uzantojn je retpoŝtadreso';
+$lang['FilterGroup']           = 'SQL-frazo por filtri uzantojn je grupmembreco';
+$lang['SortOrder']             = 'SQL-frazo por ordigi uzantojn';
+$lang['addUser']               = 'SQL-frazo por aldoni novan uzanton';
+$lang['addGroup']              = 'SQL-frazo por aldoni novan grupon';
+$lang['addUserGroup']          = 'SQL-frazo por aldoni uzanton al ekzistanta grupo';
+$lang['delGroup']              = 'SQL-frazo por forigi grupon';
+$lang['getUserID']             = 'SQL-frazo por ricevi la ĉefan ŝlosilon de uzanto';
+$lang['delUser']               = 'SQL-frazo por forigi uzanton';
+$lang['delUserRefs']           = 'SQL-frazo por forigi uzanton el ĉiuj grupoj';
+$lang['updateUser']            = 'SQL-frazo por aktualigi uzantan profilon';
+$lang['UpdateLogin']           = 'Aktualiga frazo por uzanta ensalutnomo';
+$lang['UpdatePass']            = 'Aktualiga frazo por uzanta pasvorto';
+$lang['UpdateEmail']           = 'Aktualiga frazo por uzanta retpoŝtadreso';
+$lang['UpdateName']            = 'Aktualiga frazo por plena uzanta nomo';
+$lang['UpdateTarget']          = 'Limiga frazo por identigi la uzanton dum aktualigado';
+$lang['delUserGroup']          = 'SQL-frazo por forigi uzanton el indikita grupo';
+$lang['getGroupID']            = 'SQL-frazo por ricevi la ĉefan ŝlosilon de indikita grupo';
+$lang['debug_o_0']             = 'neniu';
+$lang['debug_o_1']             = 'nur dum eraroj';
+$lang['debug_o_2']             = 'ĉiuj SQL-serĉoj';
diff --git a/wiki/lib/plugins/authmysql/lang/es/lang.php b/wiki/lib/plugins/authmysql/lang/es/lang.php
new file mode 100644
index 0000000..3fc8228
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/es/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['connectfail']           = 'Error al conectar con la base de datos.';
+$lang['userexists']            = 'Lo sentimos, ya existe un usuario con ese inicio de sesión.';
+$lang['usernotexists']         = 'Lo sentimos, no existe ese usuario.';
+$lang['writefail']             = 'No es posible modificar los datos del usuario. Por favor, informa al Administrador del Wiki';
diff --git a/wiki/lib/plugins/authmysql/lang/es/settings.php b/wiki/lib/plugins/authmysql/lang/es/settings.php
new file mode 100644
index 0000000..baa991d
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/es/settings.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Eloy <ej.perezgomez@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Alejandro Nunez <nunez.alejandro@gmail.com>
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['server']                = 'Tu servidor MySQL';
+$lang['user']                  = 'Nombre de usuario MySQL';
+$lang['password']              = 'Contraseña para el usuario de arriba.';
+$lang['database']              = 'Base de datos a usar';
+$lang['charset']               = 'Codificación usada en la base de datos';
+$lang['debug']                 = 'Mostrar información adicional para depuración de errores';
+$lang['forwardClearPass']      = 'Enviar las contraseñas de usuario comotexto plano a las siguientes sentencias de SQL, en lugar de utilizar la opción passcrypt';
+$lang['TablesToLock']          = 'Lista separada por comasde las tablas a bloquear durante operaciones de escritura';
+$lang['checkPass']             = 'Sentencia SQL para verificar las contraseñas';
+$lang['getUserInfo']           = 'Sentencia SQL para obtener información del usuario';
+$lang['getGroups']             = 'Sentencia SQL para obtener la pertenencia a grupos de un usuario';
+$lang['getUsers']              = 'Sentencia SQL para listar todos los usuarios';
+$lang['FilterLogin']           = 'Cláusula SQL para filtrar usuarios por su nombre de usuario';
+$lang['FilterName']            = 'Cláusula SQL para filtrar usuarios por su nombre completo';
+$lang['FilterEmail']           = 'Cláusula SQL para filtrar usuarios por su dirección de correo electrónico';
+$lang['FilterGroup']           = 'Cláusula SQL para filtrar usuarios por su pertenencia a grupos';
+$lang['SortOrder']             = 'Cláusula SQL para ordenar usuarios';
+$lang['addUser']               = 'Sentencia SQL para agregar un nuevo usuario';
+$lang['addGroup']              = 'Sentencia SQL para agregar un nuevo grupo';
+$lang['addUserGroup']          = 'Sentencia SQL para agregar un usuario a un grupo existente';
+$lang['delGroup']              = 'Sentencia SQL para eliminar un grupo';
+$lang['getUserID']             = 'Sentencia SQL para obtener la clave primaria de un usuario';
+$lang['delUser']               = 'Sentencia SQL para eliminar un usuario';
+$lang['delUserRefs']           = 'Sentencia SQL para eliminar un usuario de todos los grupos';
+$lang['updateUser']            = 'Sentencia SQL para actualizar un perfil de usuario';
+$lang['UpdateLogin']           = 'Cláusula de actualización para actualizar el login del usuario';
+$lang['UpdatePass']            = 'Cláusula de actualización para actualizar la contraseña del usuario';
+$lang['UpdateEmail']           = 'Cláusula de actualización para actualizar la dirección de correo del usuario';
+$lang['UpdateName']            = 'Cláusula de actualización para actualizar el nomblre completo del usuario';
+$lang['UpdateTarget']          = 'Cláusula limite para identificar al usuario cuando se actualiza';
+$lang['delUserGroup']          = 'Sentencia SQL para eliminar un usuario de un grupo dado';
+$lang['getGroupID']            = 'Sentencia SQL para obtener la clave principal de un grupo dado';
+$lang['debug_o_0']             = 'ninguno';
+$lang['debug_o_1']             = 'sólo errores';
+$lang['debug_o_2']             = 'todas las consultas SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/eu/lang.php b/wiki/lib/plugins/authmysql/lang/eu/lang.php
new file mode 100644
index 0000000..6408324
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/eu/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['connectfail']           = 'Datu-basera konektatzeak huts egin du';
+$lang['userexists']            = 'Badago izen hori duen erabiltzaile bat.';
+$lang['usernotexists']         = 'Ez dago izen hori duen erabiltzailerik.';
diff --git a/wiki/lib/plugins/authmysql/lang/eu/settings.php b/wiki/lib/plugins/authmysql/lang/eu/settings.php
new file mode 100644
index 0000000..2a44a59
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/eu/settings.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['server']                = 'Zure MYSQL zerbitzaria';
+$lang['user']                  = 'MYSQL erabiltzaile-izena';
+$lang['password']              = 'Goiko erabiltzailearen pasahitza';
+$lang['database']              = 'Erabili beharreko datu-basea';
+$lang['charset']               = 'Datu-basean erabilitako karaktere kodeketa';
+$lang['forwardClearPass']      = 'Pasatu erabiltzaileen pasahitza testu argian beheko SQL esaldiei, passcrypt aukera erabili ordez';
+$lang['debug_o_0']             = 'bat ere ez';
diff --git a/wiki/lib/plugins/authmysql/lang/fa/lang.php b/wiki/lib/plugins/authmysql/lang/fa/lang.php
new file mode 100644
index 0000000..b5b8786
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/fa/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['connectfail']           = 'خطا در اتصال به دیتابیس';
+$lang['userexists']            = 'با عرض پوزش، یک کاربر با این نام از قبل وجود دارد.';
+$lang['usernotexists']         = 'با عرض پوزش، آن کاربر وجود نداشت.';
+$lang['writefail']             = 'امکان تغییر داده کاربر وجود نداشت. لطفا مسئول Wiki را آگاه کنید.';
diff --git a/wiki/lib/plugins/authmysql/lang/fa/settings.php b/wiki/lib/plugins/authmysql/lang/fa/settings.php
new file mode 100644
index 0000000..4c708a0
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/fa/settings.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ */
+$lang['server']                = 'سرور MySQL';
+$lang['user']                  = 'نام کاربری MySQL';
+$lang['password']              = 'رمزعبور کاربر بالا';
+$lang['database']              = 'پایگاه داده مورد استفاده';
+$lang['charset']               = 'مجموعه کاراکترهایی (Character set) که در پایگاه داده بکار رفته';
+$lang['debug']                 = 'نمایش اطلاعات بیشتر برای دیباگ';
+$lang['forwardClearPass']      = 'بجای استفاده از گزینه passcrypt، رمزعبورهای کاربر را بصورت آشکار به دستور SQL زیر پاس دهید.';
+$lang['TablesToLock']          = 'لیست جدولهایی که هنگام عملیات نوشتن باید قفل شود که با کاما از هم جدا شده اند';
+$lang['checkPass']             = 'دستور SQL برای بررسی رمزعبورها';
+$lang['getUserInfo']           = 'دستور SQL برای دریافت اطلاعات نام کاربری';
+$lang['getGroups']             = 'دستور SQL برای دریافت گروه‌های عضویت یک کاربر';
+$lang['getUsers']              = 'دستور SQL برای گرفتن لیست تمامی کاربران';
+$lang['FilterLogin']           = 'عبارت SQL برای فیلتر کردن کاربران با نام کاربری (login name)';
+$lang['FilterName']            = 'عبارت SQL برای فیلتر کردن کاربران با نام کامل';
+$lang['FilterEmail']           = 'عبارت SQL برای فیلتر کردن کابران با آدرس ایمیل';
+$lang['FilterGroup']           = 'عبارت SQL برای فیلتر کاربران با گروه عضویتشان';
+$lang['SortOrder']             = 'عبارت SQL برای مرتب کردن کاربران';
+$lang['addUser']               = 'دستور SQL برای اضافه کردن کاربر جدید';
+$lang['addGroup']              = 'دستور SQL برای اضافه کردن گروه جدید';
+$lang['addUserGroup']          = 'دستور SQL برای اضافه کردن یک کاربر به یک گروه موجود از قبل';
+$lang['delGroup']              = 'دستور SQL برای حذف یک گروه';
+$lang['getUserID']             = 'دستور SQL برای گرفتن کلید اصلی (primary key) یک کاربر';
+$lang['delUser']               = 'دستور SQL برای حذف یک کاربر';
+$lang['delUserRefs']           = 'دستور SQL برای حذف یک کابر از تمامی گروه‌ها';
+$lang['updateUser']            = 'دستور SQL برای بروزرسانی پروفایل یک کاربر';
+$lang['UpdateLogin']           = 'عبارت Update برای بروزرسانی نام کاربری (login name)';
+$lang['UpdatePass']            = 'عبارت Update برای بروزرسانی رمزعبور کاربر';
+$lang['UpdateEmail']           = 'عبارت Update برای بروزرسانی ادرسی ایمیل کاربر';
+$lang['UpdateName']            = 'عبارت Update برای بروزرسانی نام کامل کاربر';
+$lang['UpdateTarget']          = 'عبارت Limit برای شناسایی کابر هنگام بروزرسانی';
+$lang['delUserGroup']          = 'دستور SQL برای حذف یک کاربر ';
+$lang['getGroupID']            = 'دستور SQL برای گرفتن کلید اصلی (primary key) گروه داده شده';
+$lang['debug_o_0']             = 'هیچ';
+$lang['debug_o_1']             = 'فقط هنگام خطا';
+$lang['debug_o_2']             = 'تمام پرس‌وجوهای SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/fi/settings.php b/wiki/lib/plugins/authmysql/lang/fi/settings.php
new file mode 100644
index 0000000..3251795
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/fi/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+$lang['server']                = 'Sinun MySQL-serveri';
+$lang['user']                  = 'MySQL-käyttäjänimi';
+$lang['password']              = 'Salasana yläolevalle käyttäjälle';
+$lang['charset']               = 'Käytetty merkistö tietokannassa';
diff --git a/wiki/lib/plugins/authmysql/lang/fr/lang.php b/wiki/lib/plugins/authmysql/lang/fr/lang.php
new file mode 100644
index 0000000..5e9fb69
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/fr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
+ */
+$lang['connectfail']           = 'Impossible de se connecter à la base de données.';
+$lang['userexists']            = 'Désolé, un utilisateur avec cet identifiant existe déjà.';
+$lang['usernotexists']         = 'Désolé, cet utilisateur n\'existe pas.';
+$lang['writefail']             = 'Impossible de modifier les données utilisateur. Veuillez en informer l\'administrateur du Wiki.';
diff --git a/wiki/lib/plugins/authmysql/lang/fr/settings.php b/wiki/lib/plugins/authmysql/lang/fr/settings.php
new file mode 100644
index 0000000..a88b325
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/fr/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ */
+$lang['server']                = 'Votre serveur MySQL';
+$lang['user']                  = 'Nom d\'utilisateur MySQL';
+$lang['password']              = 'Mot de passe pour l\'utilisateur ci-dessus';
+$lang['database']              = 'Base de données à utiliser';
+$lang['charset']               = 'Jeu de caractères utilisé dans la base de données';
+$lang['debug']                 = 'Afficher des informations de débogage supplémentaires';
+$lang['forwardClearPass']      = 'Passer les mots de passe aux requêtes SQL ci-dessous en cleartext plutôt qu\'avec l\'option passcrypt';
+$lang['TablesToLock']          = 'Liste séparée par des virgules des tables devant être verrouillées par les opérations d\'écriture';
+$lang['checkPass']             = 'Requête SQL pour la vérification des mots de passe';
+$lang['getUserInfo']           = 'Requête SQL pour la récupération des informations d\'un utilisateur';
+$lang['getGroups']             = 'Requête SQL pour la récupération des groupes d\'un utilisateur';
+$lang['getUsers']              = 'Requête SQL pour énumérer tous les utilisateurs';
+$lang['FilterLogin']           = 'Clause SQL pour filtrer les utilisateurs par identifiant';
+$lang['FilterName']            = 'Clause SQL pour filtrer les utilisateurs par nom complet';
+$lang['FilterEmail']           = 'Clause SQL pour filtrer les utilisateurs par adresse électronique';
+$lang['FilterGroup']           = 'Clause SQL pour filtrer les utilisateurs par groupes';
+$lang['SortOrder']             = 'Clause SQL pour trier les utilisateurs';
+$lang['addUser']               = 'Requête SQL pour ajouter un nouvel utilisateur';
+$lang['addGroup']              = 'Requête SQL pour ajouter un nouveau groupe';
+$lang['addUserGroup']          = 'Requête SQL pour ajouter un utilisateur à un groupe existant';
+$lang['delGroup']              = 'Requête SQL pour retirer un groupe';
+$lang['getUserID']             = 'Requête SQL pour obtenir la clé primaire d\'un utilisateur';
+$lang['delUser']               = 'Requête SQL pour supprimer un utilisateur';
+$lang['delUserRefs']           = 'Requête SQL pour retirer un utilisateur de tous les groupes';
+$lang['updateUser']            = 'Requête SQL pour mettre à jour le profil d\'un utilisateur';
+$lang['UpdateLogin']           = 'Clause de mise à jour pour mettre à jour l\'identifiant d\'un utilisateur';
+$lang['UpdatePass']            = 'Clause de mise à jour pour mettre à jour le mot de passe d\'un utilisateur';
+$lang['UpdateEmail']           = 'Clause de mise à jour pour mettre à jour l\'adresse électronique d\'un utilisateur';
+$lang['UpdateName']            = 'Clause de mise à jour pour mettre à jour le nom complet d\'un utilisateur';
+$lang['UpdateTarget']          = 'Clause de limite pour identifier l\'utilisateur durant une mise à jour';
+$lang['delUserGroup']          = 'Requête SQL pour retirer un utilisateur d\'un groupe donné';
+$lang['getGroupID']            = 'Requête SQL pour obtenir la clé primaire d\'un groupe donné';
+$lang['debug_o_0']             = 'aucun';
+$lang['debug_o_1']             = 'sur erreur seulement';
+$lang['debug_o_2']             = 'toutes les requêtes SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/he/settings.php b/wiki/lib/plugins/authmysql/lang/he/settings.php
new file mode 100644
index 0000000..22c30e5
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/he/settings.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Menashe Tomer <menashesite@gmail.com>
+ */
+$lang['getUserID']             = 'שאילתת SQL לקבלת מפתח ראשי של המשתמש';
+$lang['UpdateLogin']           = 'שאילתת SQL לעדכון שם המשתמש';
+$lang['UpdatePass']            = 'שאילתת SQL לעדכון סיסמת המשתמש';
+$lang['UpdateEmail']           = 'שאילתת SQL לעדכון כתובת הדוא"ל של המשתמש';
+$lang['UpdateName']            = 'שאילתת SQL לעדכון שם המשתמש';
diff --git a/wiki/lib/plugins/authmysql/lang/hr/lang.php b/wiki/lib/plugins/authmysql/lang/hr/lang.php
new file mode 100644
index 0000000..e839d67
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/hr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['connectfail']           = 'Ne mogu se spojiti na bazu.';
+$lang['userexists']            = 'Oprostite ali korisnik s ovom prijavom već postoji.';
+$lang['usernotexists']         = 'Oprostite ali ovaj korisnik ne postoji.';
+$lang['writefail']             = 'Ne mogu izmijeniti podatke. Molim obavijestite Wiki administratora';
diff --git a/wiki/lib/plugins/authmysql/lang/hr/settings.php b/wiki/lib/plugins/authmysql/lang/hr/settings.php
new file mode 100644
index 0000000..370b645
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/hr/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['server']                = 'Vaš MySQL server';
+$lang['user']                  = 'MySQL korisničko ime';
+$lang['password']              = 'Lozinka gore navedenog korisnika';
+$lang['database']              = 'Baza koja se koristi';
+$lang['charset']               = 'Znakovni set koji se koristi u bazi';
+$lang['debug']                 = 'Prikaz dodatnih debug informacija';
+$lang['forwardClearPass']      = 'Proslijedi korisničku lozinku kao čisti tekst u SQL upitu niže, umjesto korištenja passcrypt opcije';
+$lang['TablesToLock']          = 'Zarezom odvojena lista tabela koje trebaju biti zaključane pri operacijama pisanja';
+$lang['checkPass']             = 'SQL izraz za provjeru lozinki';
+$lang['getUserInfo']           = 'SQL izraz za dohvaćanje informacija o korisniku';
+$lang['getGroups']             = 'SQL izraz za dohvaćanje članstva u grupama';
+$lang['getUsers']              = 'SQL izraz za ispis svih korisnika';
+$lang['FilterLogin']           = 'SQL izraz za izdvajanje korisnika po korisničkom imenu';
+$lang['FilterName']            = 'SQL izraz za izdvajanje korisnika po punom imenu';
+$lang['FilterEmail']           = 'SQL izraz za izdvajanje korisnika po adresi e-pošte';
+$lang['FilterGroup']           = 'SQL izraz za izdvajanje korisnika po članstvu u grupama';
+$lang['SortOrder']             = 'SQL izraz za sortiranje korisnika';
+$lang['addUser']               = 'SQL izraz za dodavanje novih korisnika';
+$lang['addGroup']              = 'SQL izraz za dodavanje novih grupa';
+$lang['addUserGroup']          = 'SQL izraz za dodavanje korisnika u postojeću grupu';
+$lang['delGroup']              = 'SQL izraz za uklanjanje grupe';
+$lang['getUserID']             = 'SQL izraz za dobivanje primarnog ključa korisnika';
+$lang['delUser']               = 'SQL izraz za brisanje korisnika';
+$lang['delUserRefs']           = 'SQL izraz za uklanjanje korisnika iz grupe';
+$lang['updateUser']            = 'SQL izraz za ažuriranje korisničkog profila';
+$lang['UpdateLogin']           = 'UPDATE izraz za ažuriranje korisničkog imena';
+$lang['UpdatePass']            = 'UPDATE izraz za ažuriranje korisničke lozinke';
+$lang['UpdateEmail']           = 'UPDATE izraz za ažuriranje korisničke email adrese';
+$lang['UpdateName']            = 'UPDATE izraz za ažuriranje punog imena korisnika';
+$lang['UpdateTarget']          = 'Limit izraz za identificiranje korisnika pri ažuriranju';
+$lang['delUserGroup']          = 'SQL izraz za uklanjanje korisnika iz zadane grupe';
+$lang['getGroupID']            = 'SQL izraz za dobivanje primarnoga ključa zadane grupe';
+$lang['debug_o_0']             = 'ništa';
+$lang['debug_o_1']             = 'u slučaju greške';
+$lang['debug_o_2']             = 'svi SQL upiti';
diff --git a/wiki/lib/plugins/authmysql/lang/hu/lang.php b/wiki/lib/plugins/authmysql/lang/hu/lang.php
new file mode 100644
index 0000000..3f48da3
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/hu/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['connectfail']           = 'Az adatbázishoz való csatlakozás sikertelen.';
+$lang['userexists']            = 'Sajnos már létezik ilyen azonosítójú felhasználó.';
+$lang['usernotexists']         = 'Sajnos ez a felhasználó nem létezik.';
+$lang['writefail']             = 'A felhasználói adatok módosítása sikertelen. Kérlek, fordulj a wiki rendszergazdájához!';
diff --git a/wiki/lib/plugins/authmysql/lang/hu/settings.php b/wiki/lib/plugins/authmysql/lang/hu/settings.php
new file mode 100644
index 0000000..cf7b26b
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/hu/settings.php
@@ -0,0 +1,43 @@
+<?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']                = 'MySQL-kiszolgáló';
+$lang['user']                  = 'MySQL-felhasználónév';
+$lang['password']              = 'Fenti felhasználó jelszava';
+$lang['database']              = 'Adatbázis';
+$lang['charset']               = 'Az adatbázisban használt karakterkészlet';
+$lang['debug']                 = 'Hibakeresési üzenetek megjelenítése';
+$lang['forwardClearPass']      = 'A jelszó nyílt szövegként történő átadása az alábbi SQL-utasításoknak a passcrypt opció használata helyett';
+$lang['TablesToLock']          = 'Az íráskor zárolni kívánt táblák vesszővel elválasztott listája';
+$lang['checkPass']             = 'SQL-utasítás a jelszavak ellenőrzéséhez';
+$lang['getUserInfo']           = 'SQL-utasítás a felhasználói információk lekérdezéséhez';
+$lang['getGroups']             = 'SQL-utasítás egy felhasználó csoporttagságainak lekérdezéséhez';
+$lang['getUsers']              = 'SQL-utasítás a felhasználók listázásához';
+$lang['FilterLogin']           = 'SQL-kifejezés a felhasználók azonosító alapú szűréséhez';
+$lang['FilterName']            = 'SQL-kifejezés a felhasználók név alapú szűréséhez';
+$lang['FilterEmail']           = 'SQL-kifejezés a felhasználók e-mail cím alapú szűréséhez';
+$lang['FilterGroup']           = 'SQL-kifejezés a felhasználók csoporttagság alapú szűréséhez';
+$lang['SortOrder']             = 'SQL-kifejezés a felhasználók rendezéséhez';
+$lang['addUser']               = 'SQL-utasítás új felhasználó hozzáadásához';
+$lang['addGroup']              = 'SQL-utasítás új csoport hozzáadásához';
+$lang['addUserGroup']          = 'SQL-utasítás egy felhasználó egy meglévő csoporthoz való hozzáadásához';
+$lang['delGroup']              = 'SQL-utasítás egy csoport törléséhez';
+$lang['getUserID']             = 'SQL-utasítás egy felhasználó elsődleges kulcsának lekérdezéséhez';
+$lang['delUser']               = 'SQL-utasítás egy felhasználó törléséhez';
+$lang['delUserRefs']           = 'SQL-utasítás egy felhasználó eltávolításához az összes csoportból';
+$lang['updateUser']            = 'SQL-utasítás egy felhasználó profiljának frissítéséhez';
+$lang['UpdateLogin']           = 'UPDATE-klauzula a felhasználó azonosítójának frissítéséhez';
+$lang['UpdatePass']            = 'UPDATE-klauzula a felhasználó jelszavának frissítéséhez';
+$lang['UpdateEmail']           = 'UPDATE-klauzula a felhasználó e-mail címének frissítéséhez';
+$lang['UpdateName']            = 'UPDATE-klauzula a felhasználó teljes nevének frissítéséhez';
+$lang['UpdateTarget']          = 'LIMIT-klauzula a felhasználó kiválasztásához az adatok frissítésekor';
+$lang['delUserGroup']          = 'SQL-utasítás felhasználó adott csoportból történő törléséhez ';
+$lang['getGroupID']            = 'SQL-utasítás adott csoport elsődleges kulcsának lekérdezéséhez';
+$lang['debug_o_0']             = 'nem';
+$lang['debug_o_1']             = 'csak hiba esetén';
+$lang['debug_o_2']             = 'minden SQL-lekérdezésnél';
diff --git a/wiki/lib/plugins/authmysql/lang/it/lang.php b/wiki/lib/plugins/authmysql/lang/it/lang.php
new file mode 100644
index 0000000..6ba3ef8
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/it/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['connectfail']           = 'Connessione fallita al database.';
+$lang['userexists']            = 'Spiacente, esiste già un utente con queste credenziali.';
+$lang['usernotexists']         = 'Spiacente, quell\'utente non esiste.';
+$lang['writefail']             = 'Non è possibile cambiare le informazioni utente. Si prega di informare l\'Amministratore del wiki';
diff --git a/wiki/lib/plugins/authmysql/lang/it/settings.php b/wiki/lib/plugins/authmysql/lang/it/settings.php
new file mode 100644
index 0000000..ec2d670
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/it/settings.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Claudio Lanconelli <lancos@libero.it>
+ * @author Mirko <malisan.mirko@gmail.com>
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Maurizio <mcannavo@katamail.com>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['server']                = 'Il tuo server MySQL';
+$lang['user']                  = 'User name di MySQL';
+$lang['password']              = 'Password per l\'utente di cui sopra';
+$lang['database']              = 'Database da usare';
+$lang['charset']               = 'Set di caratteri usato nel database';
+$lang['debug']                 = 'Mostra ulteriori informazioni di debug';
+$lang['forwardClearPass']      = 'Fornisci le password utente come testo visibile alle istruzioni SQL qui sotto, invece che usare l\'opzione passcrypt';
+$lang['TablesToLock']          = 'Lista, separata da virgola, delle tabelle che devono essere bloccate in scrittura';
+$lang['checkPass']             = 'Istruzione SQL per il controllo password';
+$lang['getUserInfo']           = 'Istruzione SQL per recuperare le informazioni utente';
+$lang['getGroups']             = 'Istruzione SQL per recuperare il gruppo di appartenenza di un utente';
+$lang['getUsers']              = 'Istruzione SQL per listare tutti gli utenti';
+$lang['FilterLogin']           = 'Condizione SQL per per filtrare gli utenti in funzione del "login name"';
+$lang['FilterName']            = 'Condizione SQL per filtrare gli utenti in base al nome completo';
+$lang['FilterEmail']           = 'Condizione SQL per filtrare gli utenti in base all\'indirizzo e-mail';
+$lang['FilterGroup']           = 'Condizione SQL per filtrare gli utenti in base al gruppo di appartenenza';
+$lang['SortOrder']             = 'Condizione SQL per ordinare gli utenti';
+$lang['addUser']               = 'Istruzione SQL per aggiungere un nuovo utente';
+$lang['addGroup']              = 'Istruzione SQL per aggiungere un nuovo gruppo';
+$lang['addUserGroup']          = 'Istruzione SQL per aggiungere un utente ad un gruppo esistente';
+$lang['delGroup']              = 'Istruzione SQL per imuovere un gruppo';
+$lang['getUserID']             = 'Istruzione SQL per recuperare la primary key di un utente';
+$lang['delUser']               = 'Istruzione SQL per cancellare un utente';
+$lang['delUserRefs']           = 'Istruzione SQL per rimuovere un utente da tutti i gruppi';
+$lang['updateUser']            = 'Istruzione SQL per aggiornare il profilo utente';
+$lang['UpdateLogin']           = 'Condizione SQL per aggiornare il nome di accesso dell\'utente';
+$lang['UpdatePass']            = 'Condizione SQL per aggiornare la password utente';
+$lang['UpdateEmail']           = 'Condizione SQL per aggiornare l\'e-mail utente';
+$lang['UpdateName']            = 'Condizione SQL per aggiornare il nome completo dell\'utente';
+$lang['UpdateTarget']          = 'Condizione SQL per identificare l\'utente quando aggiornato';
+$lang['delUserGroup']          = 'Istruzione SQL per rimuovere un utente da un dato gruppo';
+$lang['getGroupID']            = 'Istruzione SQL per avere la primary key di un dato gruppo';
+$lang['debug_o_0']             = 'Nulla';
+$lang['debug_o_1']             = 'Solo in errore';
+$lang['debug_o_2']             = 'Tutte le query SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/ja/lang.php b/wiki/lib/plugins/authmysql/lang/ja/lang.php
new file mode 100644
index 0000000..55c908b
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/ja/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['connectfail']           = 'データベースへの接続に失敗しました。';
+$lang['userexists']            = 'このログイン名のユーザーが既に存在しています。';
+$lang['usernotexists']         = 'そのユーザーは存在しません。';
+$lang['writefail']             = 'ユーザーデータを変更できません。Wiki の管理者に連絡してください。';
diff --git a/wiki/lib/plugins/authmysql/lang/ja/settings.php b/wiki/lib/plugins/authmysql/lang/ja/settings.php
new file mode 100644
index 0000000..cc0146b
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/ja/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ */
+$lang['server']                = 'MySQL のホスト名';
+$lang['user']                  = 'MySQL 接続用ユーザー名';
+$lang['password']              = 'MySQL 接続用ユーザーのパスワード';
+$lang['database']              = '使用するデータベース名';
+$lang['charset']               = 'データベースの文字コード';
+$lang['debug']                 = 'デバック情報を表示する';
+$lang['forwardClearPass']      = '以下で定義する SQL ステートメントにおいて, パスワード変数 を平文とする(DokiWiki側で暗号化しない)';
+$lang['TablesToLock']          = '書き込み時にロックするテーブル(コンマ区切りで列挙)';
+$lang['checkPass']             = 'パスワードの照合に用いる SQL ステートメント';
+$lang['getUserInfo']           = 'ユーザー情報の取得に用いる SQL ステートメント';
+$lang['getGroups']             = 'ユーザーが所属する全てのグループの取得に用いる SQL ステートメント';
+$lang['getUsers']              = 'ユーザーリストを取得する SQL ステートメント';
+$lang['FilterLogin']           = 'ユーザーリストをログイン名で絞り込む SQL 句';
+$lang['FilterName']            = 'ユーザーリストをフルネームで絞り込む SQL 句';
+$lang['FilterEmail']           = 'ユーザーリストをメールアドレスで絞り込む SQL 句';
+$lang['FilterGroup']           = 'ユーザーリストを所属グループで絞り込む SQL 句';
+$lang['SortOrder']             = 'ユーザーリストのソート方法を指定する SQL 句';
+$lang['addUser']               = '新規ユーザーを追加する SQL ステートメント';
+$lang['addGroup']              = '新規グループを追加する SQL ステートメント';
+$lang['addUserGroup']          = 'ユーザーをグループに配属する SQL ステートメント';
+$lang['delGroup']              = 'グループを削除する SQL ステートメント';
+$lang['getUserID']             = 'ユーザーIDの取得に用いる SQL ステートメント';
+$lang['delUser']               = 'ユーザーを削除する SQL ステートメント';
+$lang['delUserRefs']           = 'ユーザーのグループ所属を全て取り消す SQL ステートメント';
+$lang['updateUser']            = 'ユーザー情報を変更する SQL ステートメント';
+$lang['UpdateLogin']           = '変更後のログイン名を指定する SQL 句';
+$lang['UpdatePass']            = '変更後のパスワードを指定する SQL 句';
+$lang['UpdateEmail']           = '変更後のメールアドレスを指定する SQL 句';
+$lang['UpdateName']            = '変更後のフルネームを指定する SQL 句';
+$lang['UpdateTarget']          = '変更対象のユーザを特定するための SQL 句';
+$lang['delUserGroup']          = 'ユーザーをグループから除名する SQL ステートメント';
+$lang['getGroupID']            = 'グループIDの取得に用いる SQL ステートメント';
+$lang['debug_o_0']             = '表示しない';
+$lang['debug_o_1']             = 'エラー発生時のみ表示';
+$lang['debug_o_2']             = '全ての SQLクエリで表示';
diff --git a/wiki/lib/plugins/authmysql/lang/ko/lang.php b/wiki/lib/plugins/authmysql/lang/ko/lang.php
new file mode 100644
index 0000000..5e96a44
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/ko/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author hyeonsoft <hyeonsoft@live.co.kr>
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['connectfail']           = '데이터베이스에 연결하는 데 실패했습니다.';
+$lang['userexists']            = '죄송하지만 이 계정으로 이미 로그인한 사용자가 있습니다.';
+$lang['usernotexists']         = '죄송하지만 해당 사용자가 존재하지 않습니다.';
+$lang['writefail']             = '사용자 데이터를 수정할 수 없습니다. 위키 관리자에게 문의하시기 바랍니다';
diff --git a/wiki/lib/plugins/authmysql/lang/ko/settings.php b/wiki/lib/plugins/authmysql/lang/ko/settings.php
new file mode 100644
index 0000000..ee7c1ef
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/ko/settings.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Garam <rowain8@gmail.com>
+ */
+$lang['server']                = 'MySQL 서버';
+$lang['user']                  = 'MySQL 사용자 이름';
+$lang['password']              = '위 사용자의 비밀번호';
+$lang['database']              = '사용할 데이터베이스';
+$lang['charset']               = '데이터베이스에 사용하는 문자 집합';
+$lang['debug']                 = '추가적인 디버그 정보 보이기';
+$lang['forwardClearPass']      = 'passcrypt 옵션을 사용하는 대신 아래 SQL 문에 일반 텍스트로 사용자 비밀번호를 전달';
+$lang['TablesToLock']          = '쓰기 작업에 잠궈야 하는 테이블의 쉼표로 구분한 목록';
+$lang['checkPass']             = '비밀번호를 확인하기 위한 SQL 문';
+$lang['getUserInfo']           = '사용자 정보를 가져오기 위한 SQL 문';
+$lang['getGroups']             = '사용자의 그룹 구성원을 가져오기 위한 SQL 문';
+$lang['getUsers']              = '모든 사용자를 나타낼 SQL 문';
+$lang['FilterLogin']           = '로그인 이름별로 사용자를 필터하기 위한 SQL 조항';
+$lang['FilterName']            = '전체 이름별로 사용자를 필터하기 위한 SQL 조항';
+$lang['FilterEmail']           = '이메일 주소별로 사용자를 필터하기 위한 SQL 조항';
+$lang['FilterGroup']           = '그룹 구성원별로 사용자를 필터하기 위한 SQL 조항';
+$lang['SortOrder']             = '사용자를 정렬할 SQL 조항';
+$lang['addUser']               = '새 사용자를 추가할 SQL 문';
+$lang['addGroup']              = '새 그룹을 추가할 SQL 문';
+$lang['addUserGroup']          = '기존 그룹에 사용자를 추가할 SQL 문';
+$lang['delGroup']              = '그룹을 제거할 SQL 문';
+$lang['getUserID']             = '사용자의 기본 키를 얻을 SQL 문';
+$lang['delUser']               = '사용자를 삭제할 SQL 문';
+$lang['delUserRefs']           = '모든 그룹에서 사용자를 제거할 SQL 문';
+$lang['updateUser']            = '사용자 프로필을 업데이트할 SQL 문';
+$lang['UpdateLogin']           = '사용자의 로그인 이름을 업데이트하기 위한 Update 조항';
+$lang['UpdatePass']            = '사용자의 비밀번호를 업데이트하기 위한 Update 조항';
+$lang['UpdateEmail']           = '사용자의 이메일 주소를 업데이트하기 위한 Update 조항';
+$lang['UpdateName']            = '사용자의 전체 이름을 업데이트하기 위한 Update 조항';
+$lang['UpdateTarget']          = '업데이트할 때 사용자를 식별할 Limit 조항';
+$lang['delUserGroup']          = '주어진 그룹에서 사용자를 제거할 SQL 문';
+$lang['getGroupID']            = '주어진 그룹의 기본 키를 얻을 SQL 문';
+$lang['debug_o_0']             = '없음';
+$lang['debug_o_1']             = '오류에만';
+$lang['debug_o_2']             = '모든 SQL 쿼리';
diff --git a/wiki/lib/plugins/authmysql/lang/lv/settings.php b/wiki/lib/plugins/authmysql/lang/lv/settings.php
new file mode 100644
index 0000000..008ef34
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/lv/settings.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oskars Pakers <oskars.pakers@gmail.com>
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['server']                = 'Jūsu MySQL serveris';
+$lang['user']                  = 'MySQL lietotāja vārds';
+$lang['password']              = 'Lietotāja parole';
+$lang['delUser']               = 'SQL pieprasījums lietotāja dzēšanai';
diff --git a/wiki/lib/plugins/authmysql/lang/nl/lang.php b/wiki/lib/plugins/authmysql/lang/nl/lang.php
new file mode 100644
index 0000000..1f6d8af
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/nl/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['connectfail']           = 'Connectie met de database mislukt.';
+$lang['userexists']            = 'Sorry, een gebruiker met deze login bestaat reeds.';
+$lang['usernotexists']         = 'Sorry, deze gebruiker bestaat niet.';
+$lang['writefail']             = 'Onmogelijk om de gebruikers data te wijzigen. Gelieve de Wiki-Admin te informeren.';
diff --git a/wiki/lib/plugins/authmysql/lang/nl/settings.php b/wiki/lib/plugins/authmysql/lang/nl/settings.php
new file mode 100644
index 0000000..a4bab2d
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/nl/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Remon <no@email.local>
+ */
+$lang['server']                = 'De MySQL server';
+$lang['user']                  = 'MySql gebruikersnaam';
+$lang['password']              = 'Wachtwoord van bovenstaande gebruiker';
+$lang['database']              = 'Te gebruiken database';
+$lang['charset']               = 'Tekenset voor database';
+$lang['debug']                 = 'Tonen aanvullende debuginformatie';
+$lang['forwardClearPass']      = 'Wachtwoorden als leesbare tekst in SQL commando\'s opnemen in plaats van versleutelde tekens';
+$lang['TablesToLock']          = 'Kommagescheiden lijst van tabellen die gelocked moeten worden bij schrijfacties';
+$lang['checkPass']             = 'SQL commando voor het verifiëren van wachtwoorden';
+$lang['getUserInfo']           = 'SQL commando voor het ophalen van gebruikersinformatie';
+$lang['getGroups']             = 'SQL commando voor het ophalen van groepslidmaatschappen';
+$lang['getUsers']              = 'SQL commando voor het tonen van alle gebruikers';
+$lang['FilterLogin']           = 'SQL clausule voor het filteren van gebruikers op inlognaam';
+$lang['FilterName']            = 'SQL clausule voor het filteren van gebruikers op volledige naam';
+$lang['FilterEmail']           = 'SQL clausule voor het filteren van gebruikers op e-mailadres';
+$lang['FilterGroup']           = 'SQL clausule voor het filteren van gebruikers op groepslidmaatschap';
+$lang['SortOrder']             = 'SQL clausule voor het sorteren van gebruikers';
+$lang['addUser']               = 'SQL commando om een nieuwe gebruiker toe te voegen';
+$lang['addGroup']              = 'SQL commando om een nieuwe groep toe te voegen';
+$lang['addUserGroup']          = 'SQL commando om een gebruiker aan een bestaande groep toe te voegen';
+$lang['delGroup']              = 'SQL commando om een groep te verwijderen';
+$lang['getUserID']             = 'SQL commando om de de primaire sleutel van een gebruiker op te halen';
+$lang['delUser']               = 'SQL commando om een gebruiker te verwijderen';
+$lang['delUserRefs']           = 'SQL commando om een gebruiker uit alle groepen te verwijderen';
+$lang['updateUser']            = 'SQL commando om een gebruikersprofiel bij te werken';
+$lang['UpdateLogin']           = 'Bijwerkcommando om de inlognaam van de gebruiker bij te werken';
+$lang['UpdatePass']            = 'Bijwerkcommando om het wachtwoord van de gebruiker bij te werken';
+$lang['UpdateEmail']           = 'Bijwerkcommando om het e-mailadres van de gebruiker bij te werken';
+$lang['UpdateName']            = 'Bijwerkcommando om de volledige naam van de gebruiker bij te werken';
+$lang['UpdateTarget']          = 'Beperkingsclausule om de gebruiker te identificeren voor bijwerken';
+$lang['delUserGroup']          = 'SQL commando om een gebruiker uit een bepaalde groep te verwijderen';
+$lang['getGroupID']            = 'SQL commando om de primaire sletel van een bepaalde groep op te halen';
+$lang['debug_o_0']             = 'geen';
+$lang['debug_o_1']             = 'alleen bij fouten';
+$lang['debug_o_2']             = 'alle SQL queries';
diff --git a/wiki/lib/plugins/authmysql/lang/no/lang.php b/wiki/lib/plugins/authmysql/lang/no/lang.php
new file mode 100644
index 0000000..38377b5
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/no/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ */
+$lang['connectfail']           = 'Klarte ikke koble til databasen.';
+$lang['userexists']            = 'Beklager, men en bruker med dette brukernavnet fins fra før.';
+$lang['usernotexists']         = 'Beklager med bruker fins ikke.';
+$lang['writefail']             = 'Klarte ikke endre brukerdata. Dette bør meldes til wikiens administrator';
diff --git a/wiki/lib/plugins/authmysql/lang/no/settings.php b/wiki/lib/plugins/authmysql/lang/no/settings.php
new file mode 100644
index 0000000..6d4134f
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/no/settings.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['server']                = 'Din MySQL-server';
+$lang['user']                  = 'Ditt MySQL-brukernavn';
+$lang['password']              = 'Passord til brukeren';
+$lang['database']              = 'Database som skal brukes';
+$lang['charset']               = 'Tegnsettet som datasen bruker';
+$lang['debug']                 = 'Vis tilleggsinformasjon for feilsøking';
+$lang['forwardClearPass']      = 'Videresendt passord i klartekst til SQL-uttrykket under, i stedet for å bruke det krypterte passordet';
+$lang['TablesToLock']          = 'Kommaseparert liste over tabeller som må låses ved skriveopperasjoner';
+$lang['checkPass']             = 'SQL-uttrykk for å sjekke passord';
+$lang['getUserInfo']           = 'SQL-uttrykk for å hente informasjon om bruker';
+$lang['getGroups']             = 'SQL-uttrykk for å hente gruppene en bruker tilhører';
+$lang['getUsers']              = 'SQL-utrykk for å liste alle brukere';
+$lang['FilterLogin']           = 'SQL-utrykk for å filtrere brukere etter brukernavn';
+$lang['FilterName']            = 'SQL-utrykk for å filtrere brukere etter fult navn';
+$lang['FilterEmail']           = 'SQL-utrykk for å filtrere brukere etter e-postadresse';
+$lang['FilterGroup']           = 'SQL-uttrykk for å filtrere brukere etter hvilken grupper de tilhører';
+$lang['SortOrder']             = 'SQL-utrykk for å sortere brukere';
+$lang['addUser']               = 'SQL-utrykk for å legge til en ny bruker ';
+$lang['addGroup']              = 'SQL-utrykk for å legge til en ny gruppe';
+$lang['addUserGroup']          = 'SQL-uttrykk for å legge til en bruker i en eksisterende gruppe';
+$lang['delGroup']              = 'SQL-uttrykk for å fjerne en gruppe';
+$lang['getUserID']             = 'SQL-uttrykk for å hente primærnøkkel for en bruker';
+$lang['delUser']               = 'SQL-utrykk for å slette en bruker';
+$lang['delUserRefs']           = 'SQL-utrykk for å fjerne en bruke fra alle grupper';
+$lang['updateUser']            = 'SQL-uttrykk for å oppdatere en brukerprofil';
+$lang['UpdateLogin']           = 'Update-utrykk for å oppdatere brukernavn';
+$lang['UpdatePass']            = 'Update-utrykk for å oppdatere brukers passord';
+$lang['UpdateEmail']           = 'Update-utrykk for å oppdatere brukers e-postadresse';
+$lang['UpdateName']            = 'Update-utrykk for å oppdatere brukers fulle navn';
+$lang['UpdateTarget']          = 'Limit-uttrykk for å identifisere brukeren ved oppdatering';
+$lang['delUserGroup']          = 'SQL-uttrykk for å fjerne en bruker fra en gitt gruppe';
+$lang['getGroupID']            = 'SQL-uttrykk for å hente primærnøkkel for en gitt gruppe ';
+$lang['debug_o_0']             = 'ingen';
+$lang['debug_o_1']             = 'bare ved feil';
+$lang['debug_o_2']             = 'alle SQL-spørringer';
diff --git a/wiki/lib/plugins/authmysql/lang/pl/lang.php b/wiki/lib/plugins/authmysql/lang/pl/lang.php
new file mode 100644
index 0000000..14f645e
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/pl/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ */
+$lang['connectfail']           = 'Nie można połączyć się z bazą danych.';
+$lang['userexists']            = 'Niestety, użytkownik o tym loginie już istnieje.';
+$lang['usernotexists']         = 'Niestety, taki użytkownik nie istnieje.';
+$lang['writefail']             = 'Nie można zmodyfikować danych użytkownika. Proszę poinformować administratora Wiki.';
diff --git a/wiki/lib/plugins/authmysql/lang/pl/settings.php b/wiki/lib/plugins/authmysql/lang/pl/settings.php
new file mode 100644
index 0000000..e54372e
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/pl/settings.php
@@ -0,0 +1,45 @@
+<?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 Mati <mackosa@wp.pl>
+ * @author Maciej Helt <geraldziu@gmail.com>
+ */
+$lang['server']                = 'Twój server MySQL';
+$lang['user']                  = 'Nazwa użytkownika MySQL';
+$lang['password']              = 'Hasło dla powyższego użytkownika';
+$lang['database']              = 'Używana baza danych';
+$lang['charset']               = 'Zestaw znaków uzyty w bazie danych';
+$lang['debug']                 = 'Wyświetlaj dodatkowe informacje do debugowania.';
+$lang['forwardClearPass']      = 'Zamiast używać opcji passcrypt, przekazuj hasła użytkowników jako czysty tekst do poniższej instrukcji SQL';
+$lang['TablesToLock']          = 'Rozdzielana przecinkami lista tabel, które powinny być blokowane podczas operacji zapisu';
+$lang['checkPass']             = 'Zapytanie SQL wykorzystywane do sprawdzania haseł.';
+$lang['getUserInfo']           = 'Zapytanie SQL zwracające informacje o użytkowniku';
+$lang['getGroups']             = 'Zapytanie SQL przynależność do grup danego użytkownika';
+$lang['getUsers']              = 'Zapytanie SQL zwracające listę wszystkich użytkowników';
+$lang['FilterLogin']           = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich loginu';
+$lang['FilterName']            = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich pełnej nazwy';
+$lang['FilterEmail']           = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich adresu email';
+$lang['FilterGroup']           = 'Klauzula SQL używana do filtrowania użytkowników na podstawie ich przynależności do grup';
+$lang['SortOrder']             = 'Klauzula SQL używana do sortowania użytkowników';
+$lang['addUser']               = 'Zapytanie SQL dodające nowego użytkownika';
+$lang['addGroup']              = 'Instrukcja SQL dodająca nową grupę';
+$lang['addUserGroup']          = 'Instrukcja SQL dodająca użytkownika do istniejącej grupy';
+$lang['delGroup']              = 'Instrukcja SQL usuwająca grupę';
+$lang['getUserID']             = 'Instrukcja SQL pobierająca klucz główny użytkownika';
+$lang['delUser']               = 'Instrukcja SQL usuwająca użytkownika';
+$lang['delUserRefs']           = 'Instrukcja SQL usuwająca użytkownika ze wszystkich grup';
+$lang['updateUser']            = 'Instrukcja SQL aktualizująca profil użytkownika';
+$lang['UpdateLogin']           = 'Polecenie służące do aktualizacji loginu użytkownika';
+$lang['UpdatePass']            = 'Polecenie służące do aktualizacji hasła użytkownika';
+$lang['UpdateEmail']           = 'Polecenie służące do aktualizacji e-mailu użytkownika';
+$lang['UpdateName']            = 'Polecenie służące do aktualizacji imienia i nazwiska użytkownika';
+$lang['UpdateTarget']          = 'Instrukcja limitu do identyfikacji użytkownika podczas aktualizacji';
+$lang['delUserGroup']          = 'Instrukcja SQL usuwająca użytkownika ze wskazanej grupy';
+$lang['getGroupID']            = 'Instrukcja SQL pobierający klucz główny wskazanej grupy';
+$lang['debug_o_0']             = 'brak';
+$lang['debug_o_1']             = 'tylko w przypadku błędów';
+$lang['debug_o_2']             = 'wszystkie zapytania SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/pt-br/lang.php b/wiki/lib/plugins/authmysql/lang/pt-br/lang.php
new file mode 100644
index 0000000..02c4b9e
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/pt-br/lang.php
@@ -0,0 +1,11 @@
+<?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 banco de dados.';
+$lang['userexists']            = 'Desculpe, mas já existe esse nome de usuário.';
+$lang['usernotexists']         = 'Desculpe, mas esse usuário não existe.';
+$lang['writefail']             = 'Não foi possível modificar os dados do usuário. Por favor, informe ao administrador do Wiki.';
diff --git a/wiki/lib/plugins/authmysql/lang/pt-br/settings.php b/wiki/lib/plugins/authmysql/lang/pt-br/settings.php
new file mode 100644
index 0000000..cc637d6
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/pt-br/settings.php
@@ -0,0 +1,43 @@
+<?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>
+ */
+$lang['server']                = 'Seu servidor MySQL';
+$lang['user']                  = 'usuário MySQL';
+$lang['password']              = 'Senha do usuário acima';
+$lang['database']              = 'Base de dados para usar';
+$lang['charset']               = 'Codificação de caracter usado na base de dados';
+$lang['debug']                 = 'Mostrar informações adicionais de depuração';
+$lang['forwardClearPass']      = 'Passar senhas de usuários como texto puro para comandos SQL abaixo, ao invés de usar opção passcrypt';
+$lang['TablesToLock']          = 'Lista separada por vírgulas para tabelas que devem estar travadas em operações de escrita';
+$lang['checkPass']             = 'Comandos SQL para verificar senhas';
+$lang['getUserInfo']           = 'Comando SQL para obter informações de usuário';
+$lang['getGroups']             = 'Comando SQL para obter as credenciais de grupo de um usuário';
+$lang['getUsers']              = 'Comando SQL para listar todos os usuários';
+$lang['FilterLogin']           = 'Comando SQL para filtrar usuários pelo login';
+$lang['FilterName']            = 'Cláusula SQL para filtrar usuários por nome completo';
+$lang['FilterEmail']           = 'Cláusula SQL para filtrar usuários por endereço de email';
+$lang['FilterGroup']           = 'Cláusula SQL para filtrar usuários por membros de grupos';
+$lang['SortOrder']             = 'Cláusula SQL para ordenar usuários';
+$lang['addUser']               = 'Comando SQL para adicionar um novo usuário';
+$lang['addGroup']              = 'Comando SQL para adicionar um novo grupo';
+$lang['addUserGroup']          = 'Comando SQL para adicionar um usuário a um determinado grupo';
+$lang['delGroup']              = 'Comando SQL para remover um grupo';
+$lang['getUserID']             = 'Comando SQL para obter a chave primária de um usuário';
+$lang['delUser']               = 'Comando SQL para apagar um usuário';
+$lang['delUserRefs']           = 'Comando SQL para apagar um usuário de todos os grupos';
+$lang['updateUser']            = 'Comando SQL para atualizar perfil de usuário';
+$lang['UpdateLogin']           = 'Comando SQL para atualizar o login de um usuário';
+$lang['UpdatePass']            = 'Cláusula de atualização para atualizar senha de usuário';
+$lang['UpdateEmail']           = 'Cláusula de atualização para atualizar email do usuário';
+$lang['UpdateName']            = 'Cláusula de atualização para atualizar nome completo do usuário';
+$lang['UpdateTarget']          = 'Limitar cláusula para identificar usuário quando estiver atualizando';
+$lang['delUserGroup']          = 'Comando SQL para remover um usuário de um grupo determinado';
+$lang['getGroupID']            = 'Comando SQL para obter a chave primária de um grupo determinado';
+$lang['debug_o_0']             = 'nenhum';
+$lang['debug_o_1']             = 'apenas em erros';
+$lang['debug_o_2']             = 'todas as queries SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/pt/lang.php b/wiki/lib/plugins/authmysql/lang/pt/lang.php
new file mode 100644
index 0000000..9e8bd6c
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/pt/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['connectfail']           = 'Falha ao conectar com o banco de dados.';
+$lang['userexists']            = 'Desculpe, esse login já está sendo usado.';
+$lang['usernotexists']         = 'Desculpe, esse login não existe.';
+$lang['writefail']             = 'Incapaz de modificar dados do usuário. Favor informar ao Wiki-Admin.';
diff --git a/wiki/lib/plugins/authmysql/lang/pt/settings.php b/wiki/lib/plugins/authmysql/lang/pt/settings.php
new file mode 100644
index 0000000..2488487
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/pt/settings.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author André Neves <drakferion@gmail.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ */
+$lang['server']                = 'O seu servidor de MySQL';
+$lang['user']                  = 'Utilizador MySQL';
+$lang['password']              = 'Senha para o utilizador acima';
+$lang['database']              = 'Base de dados a usar';
+$lang['charset']               = 'Conjunto de caracteres usado na base de dados';
+$lang['debug']                 = 'Mostrar informação adicional de debug';
+$lang['forwardClearPass']      = 'Passe as senhas do usuário como texto puro para as instruções SQL abaixo, em vez de usar a opção passcrypt';
+$lang['TablesToLock']          = 'Lista de tabelas, separadas por virgula, que devem ser bloqueadas em operações de escrita';
+$lang['checkPass']             = 'Instrução SQL para verificar senhas';
+$lang['getUserInfo']           = 'Instrução SQL para recuperar informações do usuário';
+$lang['getGroups']             = 'Instrução SQL para recuperar os usuários participantes de um grupo';
+$lang['getUsers']              = 'Instrução SQL para listar todos usuários';
+$lang['FilterLogin']           = 'Cláusula SQL para filtrar utilizadores por tipo de login';
+$lang['FilterName']            = 'Cláusula SQL para filtrar utilizadores por nome completo';
+$lang['FilterEmail']           = 'Cláusula SQL para filtrar utilizadores por endereço de email';
+$lang['FilterGroup']           = 'Cláusula SQL para filtrar utilizadores por pertença a grupo';
+$lang['SortOrder']             = 'Cláusula SQL para ordenar utilizadores';
+$lang['addUser']               = 'Instrução SQL para adicionar novo usuário';
+$lang['addGroup']              = 'Instrução SQL para adicionar um novo grupo';
+$lang['addUserGroup']          = 'Instrução SQL para adicionar um usuário a um grupo existente';
+$lang['delGroup']              = 'Instrução SQL para remover um grupo';
+$lang['getUserID']             = 'Instrução SQL para obter a chave principal de um usuário';
+$lang['delUser']               = 'Instrução SQL para excluir um usuário';
+$lang['delUserRefs']           = 'Instrução SQL para excluir um usuário de todos os grupos';
+$lang['updateUser']            = 'Instrução SQL para atualizar um perfil de usuário';
+$lang['UpdateLogin']           = 'Cláusula de atualização para atualizar o nome de login do utilizador';
+$lang['UpdatePass']            = 'Cláusula de atualização para atualizar a senha do utilizador';
+$lang['UpdateEmail']           = 'Cláusula de atualização para atualizar o endereço de email do utilizador';
+$lang['UpdateName']            = 'Cláusula de atualização para atualizar o nome completo do utilizador';
+$lang['UpdateTarget']          = 'Cláusula limite para identificar o usuário ao atualizar';
+$lang['delUserGroup']          = 'Instrução SQL para remover um usuário de um determinado grupo';
+$lang['getGroupID']            = 'Instrução SQL para obter a chave principal de um determinado grupo';
+$lang['debug_o_0']             = 'nenhum';
+$lang['debug_o_1']             = 'só aquando de erros';
+$lang['debug_o_2']             = 'todas as consultas SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/ru/lang.php b/wiki/lib/plugins/authmysql/lang/ru/lang.php
new file mode 100644
index 0000000..27153fd
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/ru/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Takumo <9206984@mail.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ */
+$lang['connectfail']           = 'Ошибка соединения с базой данных.';
+$lang['userexists']            = 'Извините, пользователь с таким логином уже существует.';
+$lang['usernotexists']         = 'Извините, такой пользователь не существует.';
+$lang['writefail']             = 'Невозможно изменить данные пользователя. Сообщите об этом администратору вики.';
diff --git a/wiki/lib/plugins/authmysql/lang/ru/settings.php b/wiki/lib/plugins/authmysql/lang/ru/settings.php
new file mode 100644
index 0000000..8109377
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/ru/settings.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuriy Skalko <yuriy.skalko@gmail.com>
+ * @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Type-kun <workwork-1@yandex.ru>
+ */
+$lang['server']                = 'Ваш MySQL-сервер';
+$lang['user']                  = 'Имя пользователя MySQL';
+$lang['password']              = 'Пароль пользователя MySQL';
+$lang['database']              = 'Имя базы данных';
+$lang['charset']               = 'Используемый набор символов в базе данных';
+$lang['debug']                 = 'Отображение дополнительной отладочной информации';
+$lang['forwardClearPass']      = 'Передача пароля пользователя открытым текстом, вместо зашифрованной формы, в используемом выражении SQL';
+$lang['TablesToLock']          = 'Имена таблиц (через запятую), которым необходимо ограничение для записи';
+$lang['checkPass']             = 'Выражение SQL, осуществляющее проверку пароля';
+$lang['getUserInfo']           = 'Выражение SQL, осуществляющее извлечение информации о пользователе';
+$lang['getGroups']             = 'Выражение SQL, осуществляющее извлечение информации о членстве пользователе в группах';
+$lang['getUsers']              = 'Выражение SQL, осуществляющее извлечение полного списка пользователей';
+$lang['FilterLogin']           = 'Выражение SQL, осуществляющее фильтрацию пользователей по логину';
+$lang['FilterName']            = 'Выражение SQL, осуществляющее фильтрацию пользователей по полному имени';
+$lang['FilterEmail']           = 'Выражение SQL, осуществляющее фильтрацию пользователей по адресу электронной почты';
+$lang['FilterGroup']           = 'Выражение SQL, осуществляющее фильтрацию пользователей согласно членству в группе';
+$lang['SortOrder']             = 'Выражение SQL, осуществляющее сортировку пользователей';
+$lang['addUser']               = 'Выражение SQL, осуществляющее добавление нового пользователя';
+$lang['addGroup']              = 'Выражение SQL, осуществляющее добавление новой группы';
+$lang['addUserGroup']          = 'Выражение SQL, осуществляющее добавление пользователя в существующую группу';
+$lang['delGroup']              = 'Выражение SQL, осуществляющее удаление группы';
+$lang['getUserID']             = 'Выражение SQL, обеспечивающее получение первичного ключа пользователя';
+$lang['delUser']               = 'Выражение SQL, осуществляющее удаление пользователя';
+$lang['delUserRefs']           = 'Выражение SQL, осуществляющее удаление пользователя из всех групп';
+$lang['updateUser']            = 'Выражение SQL, осуществляющее обновление профиля пользователя';
+$lang['UpdateLogin']           = 'Условие для обновления имени пользователя';
+$lang['UpdatePass']            = 'Условие для обновления пароля пользователя';
+$lang['UpdateEmail']           = 'Условие для обновления адреса электронной почты пользователя';
+$lang['UpdateName']            = 'Условие для обновления полного имени пользователя';
+$lang['UpdateTarget']          = 'Выражение \'LIMIT\' для идентификации пользователя при обновлении';
+$lang['delUserGroup']          = 'Выражение SQL, осуществляющее удаление пользователя из указанной группы';
+$lang['getGroupID']            = 'Выражение SQL, обеспечивающее получение первичного ключа указанной группы';
+$lang['debug_o_0']             = 'ни один из вариантов';
+$lang['debug_o_1']             = 'только при возникновении ошибок';
+$lang['debug_o_2']             = 'все SQL-запросы';
diff --git a/wiki/lib/plugins/authmysql/lang/sk/lang.php b/wiki/lib/plugins/authmysql/lang/sk/lang.php
new file mode 100644
index 0000000..9d792b7
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sk/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['connectfail']           = 'Nepodarilo sa pripojiť k databáze.';
+$lang['userexists']            = 'Ľutujem, ale používateľ s týmto prihlasovacím menom už existuje.';
+$lang['usernotexists']         = 'Ľutujem, daný používateľ neexistuje.';
+$lang['writefail']             = 'Nie je možné zmeniť údaje používateľa, informujte prosím administrátora Wiki.';
diff --git a/wiki/lib/plugins/authmysql/lang/sk/settings.php b/wiki/lib/plugins/authmysql/lang/sk/settings.php
new file mode 100644
index 0000000..4def5d6
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sk/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['server']                = 'MySQL server';
+$lang['user']                  = 'Meno používateľa MySQL';
+$lang['password']              = 'Heslo pre vyššie uvedeného používateľa';
+$lang['database']              = 'Použiť databázu';
+$lang['charset']               = 'Znaková sada databázy';
+$lang['debug']                 = 'Zobraziť dodatočné ladiace informácie';
+$lang['forwardClearPass']      = 'Posielať heslo ako nezakódovaný text nižšie uvedenému SQL príkazu namiesto použitia kódovania';
+$lang['TablesToLock']          = 'Zoznam tabuliek oddelených čiarkou, ktoré by mali byť uzamknuté pri operáciách zápisu';
+$lang['checkPass']             = 'SQL príkaz pre kontrolu hesla';
+$lang['getUserInfo']           = 'SQL príkaz pre získanie informácií o používateľovi';
+$lang['getGroups']             = 'SQL príkaz pre získanie informácií o skupinách používateľa';
+$lang['getUsers']              = 'SQL príkaz pre získanie zoznamu používateľov';
+$lang['FilterLogin']           = 'SQL podmienka pre filtrovanie používateľov podľa prihlasovacieho mena';
+$lang['FilterName']            = 'SQL podmienka pre filtrovanie používateľov podľa mena a priezviska';
+$lang['FilterEmail']           = 'SQL podmienka pre filtrovanie používateľov podľa emailovej adresy';
+$lang['FilterGroup']           = 'SQL podmienka pre filtrovanie používateľov podľa skupiny';
+$lang['SortOrder']             = 'SQL podmienka pre usporiadenia používateľov';
+$lang['addUser']               = 'SQL príkaz pre pridanie nového používateľa';
+$lang['addGroup']              = 'SQL príkaz pre pridanie novej skupiny';
+$lang['addUserGroup']          = 'SQL príkaz pre pridanie používateľa do existujúcej skupiny';
+$lang['delGroup']              = 'SQL príkaz pre zrušenie skupiny';
+$lang['getUserID']             = 'SQL príkaz pre získanie primárneho klúča používateľa';
+$lang['delUser']               = 'SQL príkaz pre zrušenie používateľa';
+$lang['delUserRefs']           = 'SQL príkaz pre vyradenie používateľa zo všetkých skupín';
+$lang['updateUser']            = 'SQL príkaz pre aktualizáciu informácií o používateľovi';
+$lang['UpdateLogin']           = 'SQL podmienka pre aktualizáciu prihlasovacieho mena používateľa';
+$lang['UpdatePass']            = 'SQL podmienka pre aktualizáciu hesla používateľa';
+$lang['UpdateEmail']           = 'SQL podmienka pre aktualizáciu emailovej adresy používateľa';
+$lang['UpdateName']            = 'SQL podmienka pre aktualizáciu mena a priezviska používateľa';
+$lang['UpdateTarget']          = 'Podmienka identifikácie používateľa pri aktualizácii';
+$lang['delUserGroup']          = 'SQL príkaz pre vyradenie používateľa z danej skupiny';
+$lang['getGroupID']            = 'SQL príkaz pre získanie primárneho kľúča skupiny';
+$lang['debug_o_0']             = 'žiadne';
+$lang['debug_o_1']             = 'iba pri chybách';
+$lang['debug_o_2']             = 'všetky SQL dopyty';
diff --git a/wiki/lib/plugins/authmysql/lang/sl/settings.php b/wiki/lib/plugins/authmysql/lang/sl/settings.php
new file mode 100644
index 0000000..8e0b58c
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sl/settings.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matej Urbančič <mateju@svn.gnome.org>
+ */
+$lang['database']              = 'Podatkovna zbirka za uporabo';
+$lang['debug_o_0']             = 'brez';
+$lang['debug_o_1']             = 'le ob napakah';
+$lang['debug_o_2']             = 'vse poizvedbe SQL';
diff --git a/wiki/lib/plugins/authmysql/lang/sr/lang.php b/wiki/lib/plugins/authmysql/lang/sr/lang.php
new file mode 100644
index 0000000..7ec2fb6
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['connectfail']           = 'Нисам успео да се повежем на базу.';
+$lang['userexists']            = 'Нажалост, корисник са таквом пријавом већ постоји.';
+$lang['usernotexists']         = 'Нажалост, тај корисник не постоји.';
+$lang['writefail']             = 'Не могу да променим корисничке податке. Обавестите админа викија';
diff --git a/wiki/lib/plugins/authmysql/lang/sr/settings.php b/wiki/lib/plugins/authmysql/lang/sr/settings.php
new file mode 100644
index 0000000..eabdfbc
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sr/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['server']                = 'Ваш MySQL сервер';
+$lang['user']                  = 'MySQL корисничко име';
+$lang['password']              = 'Лозинка корисника изнад';
+$lang['database']              = 'База коју треба користити';
+$lang['charset']               = 'Кодни распоред коришћен у бази';
+$lang['debug']                 = 'Прикажи додатне податке за поправљање грешака';
+$lang['forwardClearPass']      = 'Пренеси корисничке лозинке као чист текст у SQL изјавама испод уместо коришћења passcrypt опције';
+$lang['TablesToLock']          = 'Списак табела одвојених размаком које треба закључати приликом уписивања';
+$lang['checkPass']             = 'SQL упит за проверу лозинки';
+$lang['getUserInfo']           = 'SQL упит за добављање података о кориснику';
+$lang['getGroups']             = 'SQL за добављање корисничких учлањења у групе';
+$lang['getUsers']              = 'SQL упит за излиставање свих корисника';
+$lang['FilterLogin']           = 'SQL услов за филтрирање корисника по имену за пријаву';
+$lang['FilterName']            = 'SQL услов за филтрирање корисника по пуном имену';
+$lang['FilterEmail']           = 'SQL услов за филтрирање корисника по мејл адреси';
+$lang['FilterGroup']           = 'SQL услов за филтрирање корисника по чланству у групама';
+$lang['SortOrder']             = 'SQL услов за сортирање корисника';
+$lang['addUser']               = 'SQL упит за додавање новог корисника';
+$lang['addGroup']              = 'SQL упит за додавање нове групе';
+$lang['addUserGroup']          = 'SQL упит за додавање корисника у постојећу групу';
+$lang['delGroup']              = 'SQL упит за уклањање групе';
+$lang['getUserID']             = 'SQL упит за добављање примарног кључа корисника';
+$lang['delUser']               = 'SQL упит за брисање корисника';
+$lang['delUserRefs']           = 'SQL упит за брисање корисника из свих група';
+$lang['updateUser']            = 'SQL упит за ажурирање корисничког профила';
+$lang['UpdateLogin']           = 'Услов за ажурирање корисничког имена за пријаву';
+$lang['UpdatePass']            = 'Услов за ажурирање корисничке лозинке';
+$lang['UpdateEmail']           = 'Услов за ажурирање корисничке мејл адресе';
+$lang['UpdateName']            = 'Услов за ажурирање корисничког пуног имена';
+$lang['UpdateTarget']          = 'Ограничи услов да би се утврдио корисник приликом ажурирања';
+$lang['delUserGroup']          = 'SQL упит за уклањање корисника из дате групе';
+$lang['getGroupID']            = 'SQL упит за добављање примарног кључа дате групе';
+$lang['debug_o_0']             = 'ништа';
+$lang['debug_o_1']             = 'само на грешкама';
+$lang['debug_o_2']             = 'сви SQL упити';
diff --git a/wiki/lib/plugins/authmysql/lang/sv/lang.php b/wiki/lib/plugins/authmysql/lang/sv/lang.php
new file mode 100644
index 0000000..9c97bd7
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sv/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ */
+$lang['connectfail']           = 'Kunde inte ansluta till databas.';
+$lang['userexists']            = 'Tyvärr, en användare med denna inloggning existerar redan.';
+$lang['usernotexists']         = 'Tyvärr, den användaren existerar inte.';
+$lang['writefail']             = 'Kunde inte ändra användardata. Var god inormera Wiki-administratören.';
diff --git a/wiki/lib/plugins/authmysql/lang/sv/settings.php b/wiki/lib/plugins/authmysql/lang/sv/settings.php
new file mode 100644
index 0000000..aa76b89
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/sv/settings.php
@@ -0,0 +1,29 @@
+<?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 MySQL server';
+$lang['user']                  = 'Användarnamn för MySQL';
+$lang['password']              = 'Lösenord för användare ovan';
+$lang['database']              = 'Databas att använda';
+$lang['charset']               = 'Teckenuppsättning som används i databas';
+$lang['debug']                 = 'Visa ytterligare felsökningsinformation';
+$lang['forwardClearPass']      = 'Skicka användares lösenord i klartext till SQL sats nedan, istället för att använda passcrypt alternativet';
+$lang['checkPass']             = 'SQL sats för kontroll av lösenord';
+$lang['getUserInfo']           = 'SQL sats för att hämta användarinformation';
+$lang['getGroups']             = 'SQL sats för att hämta en användares gruppmedlemskap';
+$lang['getUsers']              = 'SQL sats för att lista alla användare';
+$lang['addUser']               = 'SQL sats för att lägga till en användare';
+$lang['addGroup']              = 'SQL sats för att lägga till en grupp';
+$lang['addUserGroup']          = 'SQL sats för att lägga till en användare i en existerande grupp';
+$lang['delGroup']              = 'SQL sats för att ta bort en grupp';
+$lang['delUser']               = 'SQL sats för att ta bort en användare';
+$lang['delUserRefs']           = 'SQL sats för att ta bort en användare från alla grupper';
+$lang['updateUser']            = 'SQL sats för att uppdatera en användarprofil';
+$lang['delUserGroup']          = 'SQL sats för att ta bort en användare från en angiven grupp';
+$lang['debug_o_0']             = 'ingen';
+$lang['debug_o_1']             = 'enbart för fel';
diff --git a/wiki/lib/plugins/authmysql/lang/tr/lang.php b/wiki/lib/plugins/authmysql/lang/tr/lang.php
new file mode 100644
index 0000000..b5c7b2f
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/tr/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Mete Cuma <mcumax@gmail.com>
+ */
+$lang['connectfail']           = 'Veritabanına bağlantı kurulamadı.';
+$lang['usernotexists']         = 'Üzgünüz, kullanıcı mevcut değil.';
diff --git a/wiki/lib/plugins/authmysql/lang/tr/settings.php b/wiki/lib/plugins/authmysql/lang/tr/settings.php
new file mode 100644
index 0000000..ca6a7c6
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/tr/settings.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author ilker rifat kapaç <irifat@gmail.com>
+ * @author İlker R. Kapaç <irifat@gmail.com>
+ */
+$lang['server']                = 'Sizin MySQL sunucunuz';
+$lang['user']                  = 'MySQL kullanıcısının adı';
+$lang['password']              = 'Üstteki kullanıcı için şifre';
+$lang['database']              = 'Kullanılacak veritabanı';
+$lang['charset']               = 'Veritabanında kullanılacak karakter seti';
+$lang['debug']                 = 'İlave hata ayıklama bilgisini görüntüle';
+$lang['checkPass']             = 'Şifreleri kontrol eden SQL ifadesi';
+$lang['getUserInfo']           = 'Kullanıcı bilgilerini getiren SQL ifadesi';
+$lang['getGroups']             = 'Kullanıcının grup üyeliklerini getiren SQL ifadesi';
+$lang['getUsers']              = 'Tüm kullanıcıları listeleyen SQL ifadesi';
+$lang['FilterLogin']           = 'Kullanıcıları giriş yaptıkları isimlere göre süzmek için SQL şartı';
+$lang['FilterName']            = 'Kullanıcıları tam isimlerine göre süzmek için SQL şartı';
+$lang['FilterEmail']           = 'Kullanıcıları e-posta adreslerine göre süzmek için SQL şartı';
+$lang['FilterGroup']           = 'Kullanıcıları üye oldukları grup isimlerine göre süzmek için SQL şartı';
+$lang['SortOrder']             = 'Kullanıcıları sıralamak için SQL şartı';
+$lang['addUser']               = 'Yeni bir kullanıcı ekleyen SQL ifadesi';
+$lang['addGroup']              = 'Yeni bir grup ekleyen SQL ifadesi';
+$lang['addUserGroup']          = 'Varolan gruba yeni bir kullanıcı ekleyen SQL ifadesi';
+$lang['delGroup']              = 'Grup silen SQL ifadesi';
+$lang['getUserID']             = 'Kullanıcının birincil anahtarını getiren SQL ifadesi';
+$lang['delUser']               = 'Kullanıcı silen SQL ifadesi';
+$lang['delUserRefs']           = 'Kullanıcıyı tüm gruplardan çıkartan SQL ifadesi';
+$lang['updateUser']            = 'Kullanıcı profilini güncelleyen SQL ifadesi';
+$lang['UpdateLogin']           = 'Kullanıcının giriş yaptığı ismi güncelleyen, güncelleme şartı';
+$lang['UpdatePass']            = 'Kullanıcının  şifresini güncelleyen, güncelleme şartı';
+$lang['UpdateEmail']           = 'Kullanıcının e-posta adresini güncelleyen, güncelleme şartı';
+$lang['UpdateName']            = 'Kullanıcının tam adını güncelleyen, güncelleme şartı';
+$lang['UpdateTarget']          = 'Güncelleme esnasında kullanıcıyı belirleyen, sınır şartı';
+$lang['delUserGroup']          = 'Kullanıcıyı verilen gruptan silen SQL ifadesi';
+$lang['getGroupID']            = 'Verilen grubun birincil anahtarını getiren SQL ifadesi';
+$lang['debug_o_0']             = 'hiçbiri';
+$lang['debug_o_1']             = 'sadece hata olduğunda';
+$lang['debug_o_2']             = 'tüm SQL sorguları';
diff --git a/wiki/lib/plugins/authmysql/lang/uk/lang.php b/wiki/lib/plugins/authmysql/lang/uk/lang.php
new file mode 100644
index 0000000..e6cbaf0
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/uk/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Nina Zolotova <nina-z@i.ua>
+ */
+$lang['connectfail']           = 'Не вдалося з\'єднатися з базою даних.';
+$lang['userexists']            = 'Вибачте, користувач з таким логіном вже існує.';
+$lang['usernotexists']         = 'Вибачте, такого користувача не існує.';
diff --git a/wiki/lib/plugins/authmysql/lang/zh-tw/settings.php b/wiki/lib/plugins/authmysql/lang/zh-tw/settings.php
new file mode 100644
index 0000000..3fbee15
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/zh-tw/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author syaoranhinata@gmail.com
+ */
+$lang['server']                = '您的 MySQL 伺服器';
+$lang['user']                  = 'MySQL 使用者名稱';
+$lang['password']              = '上述使用者的密碼';
+$lang['database']              = '使用的資料庫';
+$lang['charset']               = '資料庫使用的字符集';
+$lang['debug']                 = '顯示額外除錯資訊';
+$lang['forwardClearPass']      = '以明文形式,把使用者密碼傳送给下列的 SQL 語句,而不使用 passcrypt 密碼加密選項';
+$lang['TablesToLock']          = '在寫操作時需要鎖定的數據表列表,以逗號分隔';
+$lang['checkPass']             = '檢查密碼的 SQL 語句';
+$lang['getUserInfo']           = '獲取使用者訊息的 SQL 語句';
+$lang['getGroups']             = '獲取使用者群組成員身份的 SQL 語句';
+$lang['getUsers']              = '把所有使用者列出的 SQL 語句';
+$lang['FilterLogin']           = '根據登入名稱來篩選使用者的 SQL 子句';
+$lang['FilterName']            = '根據全名來篩選使用者的 SQL 子句';
+$lang['FilterEmail']           = '根據電郵地址來篩選使用者的 SQL 子句';
+$lang['FilterGroup']           = '根據群組成員身份來篩選使用者的 SQL 子句';
+$lang['SortOrder']             = '對使用者排序的 SQL 子句';
+$lang['addUser']               = '增加新使用者的 SQL 語句';
+$lang['addGroup']              = '增加新群組的 SQL 語句';
+$lang['addUserGroup']          = '把使用者新增至現有群組的 SQL 語句';
+$lang['delGroup']              = '把群組刪除的 SQL 語句';
+$lang['getUserID']             = '取得使用者主鍵的 SQL 語句';
+$lang['delUser']               = '把使用者刪除的 SQL 語句';
+$lang['delUserRefs']           = '把使用者從所有群組裏刪除的 SQL 語句';
+$lang['updateUser']            = '更新使用者訊息的 SQL 語句';
+$lang['UpdateLogin']           = '更新使用者登入名稱的 Update 子句';
+$lang['UpdatePass']            = '更新帳號密碼的 Update 子句';
+$lang['UpdateEmail']           = '更新使用者電郵地址的 Update 子句';
+$lang['UpdateName']            = '更新使用者全名的 Update 子句';
+$lang['UpdateTarget']          = '在更新時識別使用者的 Limit 子句';
+$lang['delUserGroup']          = '把使用者從指定群組中刪除的 SQL 語句';
+$lang['getGroupID']            = '取得指定群組主鍵的 SQL 語句';
+$lang['debug_o_0']             = '無';
+$lang['debug_o_1']             = '僅在有錯誤時';
+$lang['debug_o_2']             = '所有 SQL 查詢';
diff --git a/wiki/lib/plugins/authmysql/lang/zh/lang.php b/wiki/lib/plugins/authmysql/lang/zh/lang.php
new file mode 100644
index 0000000..d96b7ba
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/zh/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Errol <errol@hotmail.com>
+ */
+$lang['connectfail']           = '连接数据库失败';
+$lang['userexists']            = '抱歉,用户名已被使用。';
+$lang['usernotexists']         = '抱歉,用户不存在。';
+$lang['writefail']             = '无法修改用户数据。请通知管理员';
diff --git a/wiki/lib/plugins/authmysql/lang/zh/settings.php b/wiki/lib/plugins/authmysql/lang/zh/settings.php
new file mode 100644
index 0000000..26ecc6b
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/lang/zh/settings.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ */
+$lang['server']                = '您的 MySQL 服务器';
+$lang['user']                  = 'MySQL 用户名';
+$lang['password']              = '上述用户的密码';
+$lang['database']              = '使用的数据库';
+$lang['charset']               = '数据库中使用的字符集';
+$lang['debug']                 = '显示额外调试信息';
+$lang['forwardClearPass']      = '将用户密码以明文形式传送给下面的 SQL 语句,而不使用 passcrypt 密码加密选项';
+$lang['TablesToLock']          = '在写操作时需要锁定的数据表列表,以逗号分隔';
+$lang['checkPass']             = '检查密码的 SQL 语句';
+$lang['getUserInfo']           = '获取用户信息的 SQL 语句';
+$lang['getGroups']             = '或许用户的组成员身份的 SQL 语句';
+$lang['getUsers']              = '列出所有用户的 SQL 语句';
+$lang['FilterLogin']           = '根据登录名筛选用户的 SQL 子句';
+$lang['FilterName']            = '根据全名筛选用户的 SQL 子句';
+$lang['FilterEmail']           = '根据电子邮件地址筛选用户的 SQL 子句';
+$lang['FilterGroup']           = '根据组成员身份筛选用户的 SQL 子句';
+$lang['SortOrder']             = '对用户排序的 SQL 子句';
+$lang['addUser']               = '添加新用户的 SQL 语句';
+$lang['addGroup']              = '添加新组的 SQL 语句';
+$lang['addUserGroup']          = '将用户添加到现有组的 SQL 语句';
+$lang['delGroup']              = '删除组的 SQL 语句';
+$lang['getUserID']             = '获取用户主键的 SQL 语句';
+$lang['delUser']               = '删除用户的 SQL 语句';
+$lang['delUserRefs']           = '从所有组中删除一个用户的 SQL 语句';
+$lang['updateUser']            = '更新用户信息的 SQL 语句';
+$lang['UpdateLogin']           = '更新用户登录名的 Update 子句';
+$lang['UpdatePass']            = '更新用户密码的 Update 子句';
+$lang['UpdateEmail']           = '更新用户电子邮件地址的 Update 子句';
+$lang['UpdateName']            = '更新用户全名的 Update 子句';
+$lang['UpdateTarget']          = '更新时识别用户的 Limit 子句';
+$lang['delUserGroup']          = '从指定组删除用户的 SQL 语句';
+$lang['getGroupID']            = '获取指定组主键的 SQL 语句';
+$lang['debug_o_0']             = '无';
+$lang['debug_o_1']             = '仅在有错误时';
+$lang['debug_o_2']             = '所有 SQL 查询';
diff --git a/wiki/lib/plugins/authmysql/plugin.info.txt b/wiki/lib/plugins/authmysql/plugin.info.txt
new file mode 100644
index 0000000..5f8493d
--- /dev/null
+++ b/wiki/lib/plugins/authmysql/plugin.info.txt
@@ -0,0 +1,7 @@
+base   authmysql
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-13
+name   [DEPRECATED] MYSQL Auth Plugin
+desc   ▶This plugin will be removed from DokuWiki in a future release! Use authpdo instead.◀ Provides user authentication against a MySQL database
+url    http://www.dokuwiki.org/plugin:authmysql
diff --git a/wiki/lib/plugins/authpdo/README b/wiki/lib/plugins/authpdo/README
new file mode 100644
index 0000000..c99bfbf
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/README
@@ -0,0 +1,27 @@
+authpdo Plugin for DokuWiki
+
+Authenticate against a database via PDO
+
+All documentation for this plugin can be found at
+https://www.dokuwiki.org/plugin:authpdo
+
+If you install this plugin manually, make sure it is installed in
+lib/plugins/authpdo/ - if the folder is called different it
+will not work!
+
+Please refer to http://www.dokuwiki.org/plugins for additional info
+on how to install plugins in DokuWiki.
+
+----
+Copyright (C) Andreas Gohr <andi@splitbrain.org>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; version 2 of the License
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+See the COPYING file in your DokuWiki folder for details
diff --git a/wiki/lib/plugins/authpdo/auth.php b/wiki/lib/plugins/authpdo/auth.php
new file mode 100644
index 0000000..dfe1254
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/auth.php
@@ -0,0 +1,781 @@
+<?php
+/**
+ * DokuWiki Plugin authpdo (Auth Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class auth_plugin_authpdo
+ */
+class auth_plugin_authpdo extends DokuWiki_Auth_Plugin {
+
+    /** @var PDO */
+    protected $pdo;
+
+    /** @var null|array The list of all groups */
+    protected $groupcache = null;
+
+    /**
+     * Constructor.
+     */
+    public function __construct() {
+        parent::__construct(); // for compatibility
+
+        if(!class_exists('PDO')) {
+            $this->_debug('PDO extension for PHP not found.', -1, __LINE__);
+            $this->success = false;
+            return;
+        }
+
+        if(!$this->getConf('dsn')) {
+            $this->_debug('No DSN specified', -1, __LINE__);
+            $this->success = false;
+            return;
+        }
+
+        try {
+            $this->pdo = new PDO(
+                $this->getConf('dsn'),
+                $this->getConf('user'),
+                conf_decodeString($this->getConf('pass')),
+                array(
+                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // always fetch as array
+                    PDO::ATTR_EMULATE_PREPARES => true, // emulating prepares allows us to reuse param names
+                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
+                )
+            );
+        } catch(PDOException $e) {
+            $this->_debug($e);
+            msg($this->getLang('connectfail'), -1);
+            $this->success = false;
+            return;
+        }
+
+        // can Users be created?
+        $this->cando['addUser'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'select-groups',
+                'insert-user',
+                'insert-group',
+                'join-group'
+            )
+        );
+
+        // can Users be deleted?
+        $this->cando['delUser'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'select-groups',
+                'leave-group',
+                'delete-user'
+            )
+        );
+
+        // can login names be changed?
+        $this->cando['modLogin'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'update-user-login'
+            )
+        );
+
+        // can passwords be changed?
+        $this->cando['modPass'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'update-user-pass'
+            )
+        );
+
+        // can real names be changed?
+        $this->cando['modName'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'update-user-info:name'
+            )
+        );
+
+        // can real email be changed?
+        $this->cando['modMail'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'update-user-info:mail'
+            )
+        );
+
+        // can groups be changed?
+        $this->cando['modGroups'] = $this->_chkcnf(
+            array(
+                'select-user',
+                'select-user-groups',
+                'select-groups',
+                'leave-group',
+                'join-group',
+                'insert-group'
+            )
+        );
+
+        // can a filtered list of users be retrieved?
+        $this->cando['getUsers'] = $this->_chkcnf(
+            array(
+                'list-users'
+            )
+        );
+
+        // can the number of users be retrieved?
+        $this->cando['getUserCount'] = $this->_chkcnf(
+            array(
+                'count-users'
+            )
+        );
+
+        // can a list of available groups be retrieved?
+        $this->cando['getGroups'] = $this->_chkcnf(
+            array(
+                'select-groups'
+            )
+        );
+
+        $this->success = true;
+    }
+
+    /**
+     * Check user+password
+     *
+     * @param   string $user the user name
+     * @param   string $pass the clear text password
+     * @return  bool
+     */
+    public function checkPass($user, $pass) {
+
+        $userdata = $this->_selectUser($user);
+        if($userdata == false) return false;
+
+        // password checking done in SQL?
+        if($this->_chkcnf(array('check-pass'))) {
+            $userdata['clear'] = $pass;
+            $userdata['hash'] = auth_cryptPassword($pass);
+            $result = $this->_query($this->getConf('check-pass'), $userdata);
+            if($result === false) return false;
+            return (count($result) == 1);
+        }
+
+        // we do password checking on our own
+        if(isset($userdata['hash'])) {
+            // hashed password
+            $passhash = new PassHash();
+            return $passhash->verify_hash($pass, $userdata['hash']);
+        } else {
+            // clear text password in the database O_o
+            return ($pass === $userdata['clear']);
+        }
+    }
+
+    /**
+     * 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
+     *
+     * @param   string $user the user name
+     * @param   bool $requireGroups whether or not the returned data must include groups
+     * @return array|bool containing user data or false
+     */
+    public function getUserData($user, $requireGroups = true) {
+        $data = $this->_selectUser($user);
+        if($data == false) return false;
+
+        if(isset($data['hash'])) unset($data['hash']);
+        if(isset($data['clean'])) unset($data['clean']);
+
+        if($requireGroups) {
+            $data['grps'] = $this->_selectUserGroups($data);
+            if($data['grps'] === false) return false;
+        }
+
+        return $data;
+    }
+
+    /**
+     * Create a new User [implement only where required/possible]
+     *
+     * Returns false if the user already exists, null when an error
+     * occurred and true if everything went well.
+     *
+     * The new user HAS TO be added to the default group by this
+     * function!
+     *
+     * Set addUser capability when implemented
+     *
+     * @param  string $user
+     * @param  string $clear
+     * @param  string $name
+     * @param  string $mail
+     * @param  null|array $grps
+     * @return bool|null
+     */
+    public function createUser($user, $clear, $name, $mail, $grps = null) {
+        global $conf;
+
+        if(($info = $this->getUserData($user, false)) !== false) {
+            msg($this->getLang('userexists'), -1);
+            return false; // user already exists
+        }
+
+        // prepare data
+        if($grps == null) $grps = array();
+        array_unshift($grps, $conf['defaultgroup']);
+        $grps = array_unique($grps);
+        $hash = auth_cryptPassword($clear);
+        $userdata = compact('user', 'clear', 'hash', 'name', 'mail');
+
+        // action protected by transaction
+        $this->pdo->beginTransaction();
+        {
+            // insert the user
+            $ok = $this->_query($this->getConf('insert-user'), $userdata);
+            if($ok === false) goto FAIL;
+            $userdata = $this->getUserData($user, false);
+            if($userdata === false) goto FAIL;
+
+            // create all groups that do not exist, the refetch the groups
+            $allgroups = $this->_selectGroups();
+            foreach($grps as $group) {
+                if(!isset($allgroups[$group])) {
+                    $ok = $this->addGroup($group);
+                    if($ok === false) goto FAIL;
+                }
+            }
+            $allgroups = $this->_selectGroups();
+
+            // add user to the groups
+            foreach($grps as $group) {
+                $ok = $this->_joinGroup($userdata, $allgroups[$group]);
+                if($ok === false) goto FAIL;
+            }
+        }
+        $this->pdo->commit();
+        return true;
+
+        // something went wrong, rollback
+        FAIL:
+        $this->pdo->rollBack();
+        $this->_debug('Transaction rolled back', 0, __LINE__);
+        msg($this->getLang('writefail'), -1);
+        return null; // return error
+    }
+
+    /**
+     * Modify user data
+     *
+     * @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
+     */
+    public function modifyUser($user, $changes) {
+        // secure everything in transaction
+        $this->pdo->beginTransaction();
+        {
+            $olddata = $this->getUserData($user);
+            $oldgroups = $olddata['grps'];
+            unset($olddata['grps']);
+
+            // changing the user name?
+            if(isset($changes['user'])) {
+                if($this->getUserData($changes['user'], false)) goto FAIL;
+                $params = $olddata;
+                $params['newlogin'] = $changes['user'];
+
+                $ok = $this->_query($this->getConf('update-user-login'), $params);
+                if($ok === false) goto FAIL;
+            }
+
+            // changing the password?
+            if(isset($changes['pass'])) {
+                $params = $olddata;
+                $params['clear'] = $changes['pass'];
+                $params['hash'] = auth_cryptPassword($changes['pass']);
+
+                $ok = $this->_query($this->getConf('update-user-pass'), $params);
+                if($ok === false) goto FAIL;
+            }
+
+            // changing info?
+            if(isset($changes['mail']) || isset($changes['name'])) {
+                $params = $olddata;
+                if(isset($changes['mail'])) $params['mail'] = $changes['mail'];
+                if(isset($changes['name'])) $params['name'] = $changes['name'];
+
+                $ok = $this->_query($this->getConf('update-user-info'), $params);
+                if($ok === false) goto FAIL;
+            }
+
+            // changing groups?
+            if(isset($changes['grps'])) {
+                $allgroups = $this->_selectGroups();
+
+                // remove membership for previous groups
+                foreach($oldgroups as $group) {
+                    if(!in_array($group, $changes['grps']) && isset($allgroups[$group])) {
+                        $ok = $this->_leaveGroup($olddata, $allgroups[$group]);
+                        if($ok === false) goto FAIL;
+                    }
+                }
+
+                // create all new groups that are missing
+                $added = 0;
+                foreach($changes['grps'] as $group) {
+                    if(!isset($allgroups[$group])) {
+                        $ok = $this->addGroup($group);
+                        if($ok === false) goto FAIL;
+                        $added++;
+                    }
+                }
+                // reload group info
+                if($added > 0) $allgroups = $this->_selectGroups();
+
+                // add membership for new groups
+                foreach($changes['grps'] as $group) {
+                    if(!in_array($group, $oldgroups)) {
+                        $ok = $this->_joinGroup($olddata, $allgroups[$group]);
+                        if($ok === false) goto FAIL;
+                    }
+                }
+            }
+
+        }
+        $this->pdo->commit();
+        return true;
+
+        // something went wrong, rollback
+        FAIL:
+        $this->pdo->rollBack();
+        $this->_debug('Transaction rolled back', 0, __LINE__);
+        msg($this->getLang('writefail'), -1);
+        return false; // return error
+    }
+
+    /**
+     * Delete one or more users
+     *
+     * Set delUser capability when implemented
+     *
+     * @param   array $users
+     * @return  int    number of users deleted
+     */
+    public function deleteUsers($users) {
+        $count = 0;
+        foreach($users as $user) {
+            if($this->_deleteUser($user)) $count++;
+        }
+        return $count;
+    }
+
+    /**
+     * Bulk retrieval of user data [implement only where required/possible]
+     *
+     * Set getUsers capability when implemented
+     *
+     * @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 list of userinfo (refer getUserData for internal userinfo details)
+     */
+    public function retrieveUsers($start = 0, $limit = -1, $filter = null) {
+        if($limit < 0) $limit = 10000; // we don't support no limit
+        if(is_null($filter)) $filter = array();
+
+        if(isset($filter['grps'])) $filter['group'] = $filter['grps'];
+        foreach(array('user', 'name', 'mail', 'group') as $key) {
+            if(!isset($filter[$key])) {
+                $filter[$key] = '%';
+            } else {
+                $filter[$key] = '%' . $filter[$key] . '%';
+            }
+        }
+        $filter['start'] = (int) $start;
+        $filter['end'] = (int) $start + $limit;
+        $filter['limit'] = (int) $limit;
+
+        $result = $this->_query($this->getConf('list-users'), $filter);
+        if(!$result) return array();
+        $users = array();
+        foreach($result as $row) {
+            if(!isset($row['user'])) {
+                $this->_debug("Statement did not return 'user' attribute", -1, __LINE__);
+                return array();
+            }
+            $users[] = $this->getUserData($row['user']);
+        }
+        return $users;
+    }
+
+    /**
+     * Return a count of the number of user which meet $filter criteria
+     *
+     * @param  array $filter array of field/pattern pairs, empty array for no filter
+     * @return int
+     */
+    public function getUserCount($filter = array()) {
+        if(is_null($filter)) $filter = array();
+
+        if(isset($filter['grps'])) $filter['group'] = $filter['grps'];
+        foreach(array('user', 'name', 'mail', 'group') as $key) {
+            if(!isset($filter[$key])) {
+                $filter[$key] = '%';
+            } else {
+                $filter[$key] = '%' . $filter[$key] . '%';
+            }
+        }
+
+        $result = $this->_query($this->getConf('count-users'), $filter);
+        if(!$result || !isset($result[0]['count'])) {
+            $this->_debug("Statement did not return 'count' attribute", -1, __LINE__);
+        }
+        return (int) $result[0]['count'];
+    }
+
+    /**
+     * Create a new group with the given name
+     *
+     * @param string $group
+     * @return bool
+     */
+    public function addGroup($group) {
+        $sql = $this->getConf('insert-group');
+
+        $result = $this->_query($sql, array(':group' => $group));
+        $this->_clearGroupCache();
+        if($result === false) return false;
+        return true;
+    }
+
+    /**
+     * Retrieve groups
+     *
+     * Set getGroups capability when implemented
+     *
+     * @param   int $start
+     * @param   int $limit
+     * @return  array
+     */
+    public function retrieveGroups($start = 0, $limit = 0) {
+        $groups = array_keys($this->_selectGroups());
+        if($groups === false) return array();
+
+        if(!$limit) {
+            return array_splice($groups, $start);
+        } else {
+            return array_splice($groups, $start, $limit);
+        }
+    }
+
+    /**
+     * Select data of a specified user
+     *
+     * @param string $user the user name
+     * @return bool|array user data, false on error
+     */
+    protected function _selectUser($user) {
+        $sql = $this->getConf('select-user');
+
+        $result = $this->_query($sql, array(':user' => $user));
+        if(!$result) return false;
+
+        if(count($result) > 1) {
+            $this->_debug('Found more than one matching user', -1, __LINE__);
+            return false;
+        }
+
+        $data = array_shift($result);
+        $dataok = true;
+
+        if(!isset($data['user'])) {
+            $this->_debug("Statement did not return 'user' attribute", -1, __LINE__);
+            $dataok = false;
+        }
+        if(!isset($data['hash']) && !isset($data['clear']) && !$this->_chkcnf(array('check-pass'))) {
+            $this->_debug("Statement did not return 'clear' or 'hash' attribute", -1, __LINE__);
+            $dataok = false;
+        }
+        if(!isset($data['name'])) {
+            $this->_debug("Statement did not return 'name' attribute", -1, __LINE__);
+            $dataok = false;
+        }
+        if(!isset($data['mail'])) {
+            $this->_debug("Statement did not return 'mail' attribute", -1, __LINE__);
+            $dataok = false;
+        }
+
+        if(!$dataok) return false;
+        return $data;
+    }
+
+    /**
+     * Delete a user after removing all their group memberships
+     *
+     * @param string $user
+     * @return bool true when the user was deleted
+     */
+    protected function _deleteUser($user) {
+        $this->pdo->beginTransaction();
+        {
+            $userdata = $this->getUserData($user);
+            if($userdata === false) goto FAIL;
+            $allgroups = $this->_selectGroups();
+
+            // remove group memberships (ignore errors)
+            foreach($userdata['grps'] as $group) {
+                if(isset($allgroups[$group])) {
+                    $this->_leaveGroup($userdata, $allgroups[$group]);
+                }
+            }
+
+            $ok = $this->_query($this->getConf('delete-user'), $userdata);
+            if($ok === false) goto FAIL;
+        }
+        $this->pdo->commit();
+        return true;
+
+        FAIL:
+        $this->pdo->rollBack();
+        return false;
+    }
+
+    /**
+     * Select all groups of a user
+     *
+     * @param array $userdata The userdata as returned by _selectUser()
+     * @return array|bool list of group names, false on error
+     */
+    protected function _selectUserGroups($userdata) {
+        global $conf;
+        $sql = $this->getConf('select-user-groups');
+        $result = $this->_query($sql, $userdata);
+        if($result === false) return false;
+
+        $groups = array($conf['defaultgroup']); // always add default config
+        foreach($result as $row) {
+            if(!isset($row['group'])) {
+                $this->_debug("No 'group' field returned in select-user-groups statement");
+                return false;
+            }
+            $groups[] = $row['group'];
+        }
+
+        $groups = array_unique($groups);
+        sort($groups);
+        return $groups;
+    }
+
+    /**
+     * Select all available groups
+     *
+     * @return array|bool list of all available groups and their properties
+     */
+    protected function _selectGroups() {
+        if($this->groupcache) return $this->groupcache;
+
+        $sql = $this->getConf('select-groups');
+        $result = $this->_query($sql);
+        if($result === false) return false;
+
+        $groups = array();
+        foreach($result as $row) {
+            if(!isset($row['group'])) {
+                $this->_debug("No 'group' field returned from select-groups statement", -1, __LINE__);
+                return false;
+            }
+
+            // relayout result with group name as key
+            $group = $row['group'];
+            $groups[$group] = $row;
+        }
+
+        ksort($groups);
+        return $groups;
+    }
+
+    /**
+     * Remove all entries from the group cache
+     */
+    protected function _clearGroupCache() {
+        $this->groupcache = null;
+    }
+
+    /**
+     * Adds the user to the group
+     *
+     * @param array $userdata all the user data
+     * @param array $groupdata all the group data
+     * @return bool
+     */
+    protected function _joinGroup($userdata, $groupdata) {
+        $data = array_merge($userdata, $groupdata);
+        $sql = $this->getConf('join-group');
+        $result = $this->_query($sql, $data);
+        if($result === false) return false;
+        return true;
+    }
+
+    /**
+     * Removes the user from the group
+     *
+     * @param array $userdata all the user data
+     * @param array $groupdata all the group data
+     * @return bool
+     */
+    protected function _leaveGroup($userdata, $groupdata) {
+        $data = array_merge($userdata, $groupdata);
+        $sql = $this->getConf('leave-group');
+        $result = $this->_query($sql, $data);
+        if($result === false) return false;
+        return true;
+    }
+
+    /**
+     * Executes a query
+     *
+     * @param string $sql The SQL statement to execute
+     * @param array $arguments Named parameters to be used in the statement
+     * @return array|int|bool The result as associative array for SELECTs, affected rows for others, false on error
+     */
+    protected function _query($sql, $arguments = array()) {
+        $sql = trim($sql);
+        if(empty($sql)) {
+            $this->_debug('No SQL query given', -1, __LINE__);
+            return false;
+        }
+
+        // execute
+        $params = array();
+        $sth = $this->pdo->prepare($sql);
+        try {
+            // prepare parameters - we only use those that exist in the SQL
+            foreach($arguments as $key => $value) {
+                if(is_array($value)) continue;
+                if(is_object($value)) continue;
+                if($key[0] != ':') $key = ":$key"; // prefix with colon if needed
+                if(strpos($sql, $key) === false) continue; // skip if parameter is missing
+
+                if(is_int($value)) {
+                    $sth->bindValue($key, $value, PDO::PARAM_INT);
+                } else {
+                    $sth->bindValue($key, $value);
+                }
+                $params[$key] = $value; //remember for debugging
+            }
+
+            $sth->execute();
+            if(strtolower(substr($sql, 0, 6)) == 'select') {
+                $result = $sth->fetchAll();
+            } else {
+                $result = $sth->rowCount();
+            }
+        } catch(Exception $e) {
+            // report the caller's line
+            $trace = debug_backtrace();
+            $line = $trace[0]['line'];
+            $dsql = $this->_debugSQL($sql, $params, !defined('DOKU_UNITTEST'));
+            $this->_debug($e, -1, $line);
+            $this->_debug("SQL: <pre>$dsql</pre>", -1, $line);
+            $result = false;
+        }
+        $sth->closeCursor();
+        $sth = null;
+
+        return $result;
+    }
+
+    /**
+     * Wrapper around msg() but outputs only when debug is enabled
+     *
+     * @param string|Exception $message
+     * @param int $err
+     * @param int $line
+     */
+    protected function _debug($message, $err = 0, $line = 0) {
+        if(!$this->getConf('debug')) return;
+        if(is_a($message, 'Exception')) {
+            $err = -1;
+            $msg = $message->getMessage();
+            if(!$line) $line = $message->getLine();
+        } else {
+            $msg = $message;
+        }
+
+        if(defined('DOKU_UNITTEST')) {
+            printf("\n%s, %s:%d\n", $msg, __FILE__, $line);
+        } else {
+            msg('authpdo: ' . $msg, $err, $line, __FILE__);
+        }
+    }
+
+    /**
+     * Check if the given config strings are set
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string[] $keys
+     * @return  bool
+     */
+    protected function _chkcnf($keys) {
+        foreach($keys as $key) {
+            $params = explode(':', $key);
+            $key = array_shift($params);
+            $sql = trim($this->getConf($key));
+
+            // check if sql is set
+            if(!$sql) return false;
+            // check if needed params are there
+            foreach($params as $param) {
+                if(strpos($sql, ":$param") === false) return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * create an approximation of the SQL string with parameters replaced
+     *
+     * @param string $sql
+     * @param array $params
+     * @param bool $htmlescape Should the result be escaped for output in HTML?
+     * @return string
+     */
+    protected function _debugSQL($sql, $params, $htmlescape = true) {
+        foreach($params as $key => $val) {
+            if(is_int($val)) {
+                $val = $this->pdo->quote($val, PDO::PARAM_INT);
+            } elseif(is_bool($val)) {
+                $val = $this->pdo->quote($val, PDO::PARAM_BOOL);
+            } elseif(is_null($val)) {
+                $val = 'NULL';
+            } else {
+                $val = $this->pdo->quote($val);
+            }
+            $sql = str_replace($key, $val, $sql);
+        }
+        if($htmlescape) $sql = hsc($sql);
+        return $sql;
+    }
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/wiki/lib/plugins/authpdo/conf/default.php b/wiki/lib/plugins/authpdo/conf/default.php
new file mode 100644
index 0000000..138ca2f
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/conf/default.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Default settings for the authpdo plugin
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+$conf['debug'] = 0;
+$conf['dsn'] = '';
+$conf['user'] = '';
+$conf['pass'] = '';
+
+/**
+ * statement to select a single user identified by its login name
+ *
+ * input: :user
+ * return: user, name, mail, (clear|hash), [uid], [*]
+ */
+$conf['select-user'] = '';
+
+/**
+ * statement to check the password in SQL, optional when above returned clear or hash
+ *
+ * input: :user, :clear, :hash, [uid], [*]
+ * return: *
+ */
+$conf['check-pass'] = '';
+
+/**
+ * statement to select a single user identified by its login name
+ *
+ * input: :user, [uid]
+ * return: group
+ */
+$conf['select-user-groups'] = '';
+
+/**
+ * Select all the existing group names
+ *
+ * return: group, [gid], [*]
+ */
+$conf['select-groups'] = '';
+
+/**
+ * Create a new user
+ *
+ * input: :user, :name, :mail, (:clear|:hash)
+ */
+$conf['insert-user'] = '';
+
+/**
+ * Remove a user
+ *
+ * input: :user, [:uid], [*]
+ */
+$conf['delete-user'] = '';
+
+/**
+ * list user names matching the given criteria
+ *
+ * Make sure the list is distinct and sorted by user name. Apply the given limit and offset
+ *
+ * input: :user, :name, :mail, :group, :start, :end, :limit
+ * out: user
+ */
+$conf['list-users'] = '';
+
+/**
+ * count user names matching the given criteria
+ *
+ * Make sure the counted list is distinct
+ *
+ * input: :user, :name, :mail, :group
+ * out: count
+ */
+$conf['count-users'] = '';
+
+/**
+ * Update user data (except password and user name)
+ *
+ * input: :user, :name, :mail, [:uid], [*]
+ */
+$conf['update-user-info'] = '';
+
+/**
+ * Update user name aka login
+ *
+ * input: :user, :newlogin, [:uid], [*]
+ */
+$conf['update-user-login'] = '';
+
+/**
+ * Update user password
+ *
+ * input: :user, :clear, :hash, [:uid], [*]
+ */
+$conf['update-user-pass'] = '';
+
+/**
+ * Create a new group
+ *
+ * input: :group
+ */
+$conf['insert-group'] = '';
+
+/**
+ * Make user join group
+ *
+ * input: :user, [:uid], group, [:gid], [*]
+ */
+$conf['join-group'] = '';
+
+/**
+ * Make user leave group
+ *
+ * input: :user, [:uid], group, [:gid], [*]
+ */
+$conf['leave-group'] = '';
diff --git a/wiki/lib/plugins/authpdo/conf/metadata.php b/wiki/lib/plugins/authpdo/conf/metadata.php
new file mode 100644
index 0000000..7c2ee8c
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/conf/metadata.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Options for the authpdo plugin
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+$meta['debug']              = array('onoff', '_caution' => 'security');
+$meta['dsn']                = array('string', '_caution' => 'danger');
+$meta['user']               = array('string', '_caution' => 'danger');
+$meta['pass']               = array('password', '_caution' => 'danger', '_code' => 'base64');
+$meta['select-user']        = array('', '_caution' => 'danger');
+$meta['check-pass']         = array('', '_caution' => 'danger');
+$meta['select-user-groups'] = array('', '_caution' => 'danger');
+$meta['select-groups']      = array('', '_caution' => 'danger');
+$meta['insert-user']        = array('', '_caution' => 'danger');
+$meta['delete-user']        = array('', '_caution' => 'danger');
+$meta['list-users']         = array('', '_caution' => 'danger');
+$meta['count-users']        = array('', '_caution' => 'danger');
+$meta['update-user-info']   = array('', '_caution' => 'danger');
+$meta['update-user-login']  = array('', '_caution' => 'danger');
+$meta['update-user-pass']   = array('', '_caution' => 'danger');
+$meta['insert-group']       = array('', '_caution' => 'danger');
+$meta['join-group']         = array('', '_caution' => 'danger');
+$meta['leave-group']        = array('', '_caution' => 'danger');
+
+
diff --git a/wiki/lib/plugins/authpdo/lang/bg/lang.php b/wiki/lib/plugins/authpdo/lang/bg/lang.php
new file mode 100644
index 0000000..f6532c4
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/bg/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['connectfail']           = 'Свързването с базата данни се провали.';
+$lang['userexists']            = 'За съжаление вече съществува потребител с това име.';
diff --git a/wiki/lib/plugins/authpdo/lang/cs/lang.php b/wiki/lib/plugins/authpdo/lang/cs/lang.php
new file mode 100644
index 0000000..cf52a18
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/cs/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ */
+$lang['connectfail']           = 'Selhalo připojení k databázi.';
+$lang['userexists']            = 'Omlouváme se, ale uživatel s tímto jménem již existuje.';
+$lang['writefail']             = 'Nelze změnit údaje uživatele. Informujte prosím správce wiki';
diff --git a/wiki/lib/plugins/authpdo/lang/cy/lang.php b/wiki/lib/plugins/authpdo/lang/cy/lang.php
new file mode 100644
index 0000000..449e3ef
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/cy/lang.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Welsh language file for authmysql plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail']    = 'Method y cysylltiad i\'r databas.';
+$lang['userexists']     = 'Sori, mae defnyddiwr gyda\'r enw mewngofnodi hwn eisoes yn bodoli.';
+$lang['writefail']      = 'Methu â newid data defnyddiwr. Rhowch wybod i Weinyddwr y Wici';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authpdo/lang/de/lang.php b/wiki/lib/plugins/authpdo/lang/de/lang.php
new file mode 100644
index 0000000..7ae13dd
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/de/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Noel Tilliot <noeltilliot@byom.de>
+ * @author Hendrik Diel <diel.hendrik@gmail.com>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ */
+$lang['connectfail']           = 'Verbindung zur Datenbank fehlgeschlagen.';
+$lang['userexists']            = 'Entschuldigung, aber dieser Benutzername ist bereits vergeben.';
+$lang['writefail']             = 'Die Benutzerdaten konnten nicht geändert werden. Bitte wenden Sie sich an den Wiki-Admin.';
diff --git a/wiki/lib/plugins/authpdo/lang/en/lang.php b/wiki/lib/plugins/authpdo/lang/en/lang.php
new file mode 100644
index 0000000..3e1482e
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/en/lang.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * English language file for authpdo plugin
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+
+$lang['connectfail']    = 'Failed to connect to database.';
+$lang['userexists']     = 'Sorry, a user with this login already exists.';
+$lang['writefail']      = 'Unable to modify user data. Please inform the Wiki-Admin';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/authpdo/lang/en/settings.php b/wiki/lib/plugins/authpdo/lang/en/settings.php
new file mode 100644
index 0000000..1aaaec0
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/en/settings.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * english language file for authpdo plugin
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+$lang['debug']              = 'Print out detailed error messages. Should be disabled after setup.';
+$lang['dsn']                = 'The DSN to connect to the database.';
+$lang['user']               = 'The user for the above database connection (empty for sqlite)';
+$lang['pass']               = 'The password for the above database connection (empty for sqlite)';
+$lang['select-user']        = 'SQL Statement to select the data of a single user';
+$lang['select-user-groups'] = 'SQL Statement to select all groups of a single user';
+$lang['select-groups']      = 'SQL Statement to select all available groups';
+$lang['insert-user']        = 'SQL Statement to insert a new user into the database';
+$lang['delete-user']        = 'SQL Statement to remove a single user from the database';
+$lang['list-users']         = 'SQL Statement to list users matching a filter';
+$lang['count-users']        = 'SQL Statement to count users matching a filter';
+$lang['update-user-info']   = 'SQL Statement to update the full name and email address of a single user';
+$lang['update-user-login']  = 'SQL Statement to update the login name of a single user';
+$lang['update-user-pass']   = 'SQL Statement to update the password of a single user';
+$lang['insert-group']       = 'SQL Statement to insert a new group into the database';
+$lang['join-group']         = 'SQL Statement to add a user to an existing group';
+$lang['leave-group']        = 'SQL Statement to remove a user from a group';
+$lang['check-pass']         = 'SQL Statement to check the password for a user. Can be left empty if password info is fetched in select-user.';
diff --git a/wiki/lib/plugins/authpdo/lang/es/lang.php b/wiki/lib/plugins/authpdo/lang/es/lang.php
new file mode 100644
index 0000000..9bd9211
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/es/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['connectfail']           = 'Error al conectar con la base de datos.';
+$lang['userexists']            = 'Lo sentimos, ya existe un usuario con ese inicio de sesión.';
+$lang['writefail']             = 'No es posible modificar los datos del usuario. Por favor, informa al Administrador del Wiki';
diff --git a/wiki/lib/plugins/authpdo/lang/fa/lang.php b/wiki/lib/plugins/authpdo/lang/fa/lang.php
new file mode 100644
index 0000000..b26e836
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/fa/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['connectfail']           = 'خطا در اتصال به دیتابیس';
+$lang['userexists']            = 'با عرض پوزش، یک کاربر با این نام از قبل وجود دارد.';
+$lang['writefail']             = 'امکان تغییر داده کاربر وجود نداشت. لطفا مسئول Wiki را آگاه کنید.';
diff --git a/wiki/lib/plugins/authpdo/lang/fr/lang.php b/wiki/lib/plugins/authpdo/lang/fr/lang.php
new file mode 100644
index 0000000..ee87b0d
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/fr/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
+ */
+$lang['connectfail']           = 'Impossible de se connecter à la base de données.';
+$lang['userexists']            = 'Désolé, un utilisateur avec cet identifiant existe déjà.';
+$lang['writefail']             = 'Impossible de modifier les données utilisateur. Veuillez en informer l\'administrateur du Wiki.';
diff --git a/wiki/lib/plugins/authpdo/lang/hr/lang.php b/wiki/lib/plugins/authpdo/lang/hr/lang.php
new file mode 100644
index 0000000..3acdbf4
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/hr/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['connectfail']           = 'Ne mogu se spojiti na bazu.';
+$lang['userexists']            = 'Oprostite ali korisnik s ovom prijavom već postoji.';
+$lang['writefail']             = 'Ne mogu izmijeniti podatke. Molim obavijestite Wiki administratora';
diff --git a/wiki/lib/plugins/authpdo/lang/hu/lang.php b/wiki/lib/plugins/authpdo/lang/hu/lang.php
new file mode 100644
index 0000000..1a2098e
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/hu/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['connectfail']           = 'Az adatbázishoz való csatlakozás sikertelen.';
+$lang['userexists']            = 'Sajnos már létezik ilyen azonosítójú felhasználó.';
+$lang['writefail']             = 'A felhasználói adatok módosítása sikertelen. Kérlek, fordulj a wiki rendszergazdájához!';
diff --git a/wiki/lib/plugins/authpdo/lang/it/lang.php b/wiki/lib/plugins/authpdo/lang/it/lang.php
new file mode 100644
index 0000000..5c0a3f1
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/it/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['connectfail']           = 'Connessione fallita al database.';
+$lang['userexists']            = 'Spiacente, esiste già un utente con queste credenziali.';
+$lang['writefail']             = 'Non è possibile cambiare le informazioni utente. Si prega di informare l\'Amministratore del wiki';
diff --git a/wiki/lib/plugins/authpdo/lang/ja/lang.php b/wiki/lib/plugins/authpdo/lang/ja/lang.php
new file mode 100644
index 0000000..1cd441b
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/ja/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['connectfail']           = 'データベースへの接続に失敗しました。';
+$lang['userexists']            = 'このログイン名のユーザーが既に存在しています。';
+$lang['writefail']             = 'ユーザーデータを変更できません。Wiki の管理者に連絡してください。';
diff --git a/wiki/lib/plugins/authpdo/lang/ko/lang.php b/wiki/lib/plugins/authpdo/lang/ko/lang.php
new file mode 100644
index 0000000..0b14197
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/ko/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author hyeonsoft <hyeonsoft@live.co.kr>
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['connectfail']           = '데이터베이스에 연결하는 데 실패했습니다.';
+$lang['userexists']            = '죄송하지만 이 계정으로 이미 로그인한 사용자가 있습니다.';
+$lang['writefail']             = '사용자 데이터를 수정할 수 없습니다. 위키 관리자에게 문의하시기 바랍니다';
diff --git a/wiki/lib/plugins/authpdo/lang/nl/lang.php b/wiki/lib/plugins/authpdo/lang/nl/lang.php
new file mode 100644
index 0000000..b426f6b
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/nl/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['connectfail']           = 'Connectie met de database mislukt.';
+$lang['userexists']            = 'Sorry, een gebruiker met deze login bestaat reeds.';
+$lang['writefail']             = 'Onmogelijk om de gebruikers data te wijzigen. Gelieve de Wiki-Admin te informeren.';
diff --git a/wiki/lib/plugins/authpdo/lang/pt-br/lang.php b/wiki/lib/plugins/authpdo/lang/pt-br/lang.php
new file mode 100644
index 0000000..2008ae6
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/pt-br/lang.php
@@ -0,0 +1,10 @@
+<?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 banco de dados.';
+$lang['userexists']            = 'Desculpe, mas já existe esse nome de usuário.';
+$lang['writefail']             = 'Não foi possível modificar os dados do usuário. Por favor, informe ao administrador do Wiki.';
diff --git a/wiki/lib/plugins/authpdo/lang/pt/lang.php b/wiki/lib/plugins/authpdo/lang/pt/lang.php
new file mode 100644
index 0000000..f2eca8f
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/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']           = 'Falha ao conectar com o banco de dados.';
+$lang['userexists']            = 'Desculpe, esse login já está sendo usado.';
diff --git a/wiki/lib/plugins/authpdo/lang/ru/lang.php b/wiki/lib/plugins/authpdo/lang/ru/lang.php
new file mode 100644
index 0000000..9f75d17
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/ru/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Takumo <9206984@mail.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ */
+$lang['connectfail']           = 'Ошибка соединения с базой данных.';
+$lang['userexists']            = 'Извините, пользователь с таким логином уже существует.';
+$lang['writefail']             = 'Невозможно изменить данные пользователя. Сообщите об этом администратору вики.';
diff --git a/wiki/lib/plugins/authpdo/lang/sk/lang.php b/wiki/lib/plugins/authpdo/lang/sk/lang.php
new file mode 100644
index 0000000..d143bbf
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/sk/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['connectfail']           = 'Nepodarilo sa pripojiť k databáze.';
+$lang['userexists']            = 'Ľutujem, ale používateľ s týmto prihlasovacím menom už existuje.';
+$lang['writefail']             = 'Nie je možné zmeniť údaje používateľa, informujte prosím administrátora Wiki.';
diff --git a/wiki/lib/plugins/authpdo/lang/tr/lang.php b/wiki/lib/plugins/authpdo/lang/tr/lang.php
new file mode 100644
index 0000000..30576c0
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/tr/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Mete Cuma <mcumax@gmail.com>
+ */
+$lang['connectfail']           = 'Veritabanına bağlantı kurulamadı.';
diff --git a/wiki/lib/plugins/authpdo/lang/zh/lang.php b/wiki/lib/plugins/authpdo/lang/zh/lang.php
new file mode 100644
index 0000000..06c258f
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/lang/zh/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Errol <errol@hotmail.com>
+ */
+$lang['connectfail']           = '连接数据库失败';
+$lang['userexists']            = '抱歉,用户名已被使用。';
+$lang['writefail']             = '无法修改用户数据。请通知管理员';
diff --git a/wiki/lib/plugins/authpdo/plugin.info.txt b/wiki/lib/plugins/authpdo/plugin.info.txt
new file mode 100644
index 0000000..e60ff0b
--- /dev/null
+++ b/wiki/lib/plugins/authpdo/plugin.info.txt
@@ -0,0 +1,7 @@
+base   authpdo
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2016-08-20
+name   authpdo plugin
+desc   Authenticate against a database via PDO
+url    https://www.dokuwiki.org/plugin:authpdo
diff --git a/wiki/lib/plugins/authpgsql/auth.php b/wiki/lib/plugins/authpgsql/auth.php
new file mode 100644
index 0000000..7b677d3
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/auth.php
@@ -0,0 +1,431 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * PostgreSQL authentication backend
+ *
+ * This class inherits much functionality from the MySQL class
+ * and just reimplements the Postgres specific parts.
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Chris Smith <chris@jalakai.co.uk>
+ * @author     Matthias Grimm <matthias.grimmm@sourceforge.net>
+ * @author     Jan Schumann <js@schumann-it.com>
+ */
+class auth_plugin_authpgsql extends auth_plugin_authmysql {
+
+    /**
+     * Constructor
+     *
+     * checks if the pgsql interface is available, otherwise it will
+     * set the variable $success of the basis class to false
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     * @author Andreas Gohr <andi@splitbrain.org>
+     */
+    public function __construct() {
+        // we don't want the stuff the MySQL constructor does, but the grandparent might do something
+        DokuWiki_Auth_Plugin::__construct();
+
+        if(!function_exists('pg_connect')) {
+            $this->_debug("PgSQL err: PHP Postgres extension not found.", -1, __LINE__, __FILE__);
+            $this->success = false;
+            return;
+        }
+
+        $this->loadConfig();
+
+        // set capabilities based upon config strings set
+        if(empty($this->conf['user']) ||
+            empty($this->conf['password']) || empty($this->conf['database'])
+        ) {
+            $this->_debug("PgSQL err: insufficient configuration.", -1, __LINE__, __FILE__);
+            $this->success = false;
+            return;
+        }
+
+        $this->cando['addUser']   = $this->_chkcnf(
+            array(
+                 'getUserInfo',
+                 'getGroups',
+                 'addUser',
+                 'getUserID',
+                 'getGroupID',
+                 'addGroup',
+                 'addUserGroup'
+            )
+        );
+        $this->cando['delUser']   = $this->_chkcnf(
+            array(
+                 'getUserID',
+                 'delUser',
+                 'delUserRefs'
+            )
+        );
+        $this->cando['modLogin']  = $this->_chkcnf(
+            array(
+                 'getUserID',
+                 'updateUser',
+                 'UpdateTarget'
+            )
+        );
+        $this->cando['modPass']   = $this->cando['modLogin'];
+        $this->cando['modName']   = $this->cando['modLogin'];
+        $this->cando['modMail']   = $this->cando['modLogin'];
+        $this->cando['modGroups'] = $this->_chkcnf(
+            array(
+                 'getUserID',
+                 'getGroups',
+                 'getGroupID',
+                 'addGroup',
+                 'addUserGroup',
+                 'delGroup',
+                 'getGroupID',
+                 'delUserGroup'
+            )
+        );
+        /* getGroups is not yet supported
+           $this->cando['getGroups']    = $this->_chkcnf(array('getGroups',
+           'getGroupID')); */
+        $this->cando['getUsers']     = $this->_chkcnf(
+            array(
+                 'getUsers',
+                 'getUserInfo',
+                 'getGroups'
+            )
+        );
+        $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'));
+    }
+
+    /**
+     * Check if the given config strings are set
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   string[] $keys
+     * @param   bool  $wop
+     * @return  bool
+     */
+    protected function _chkcnf($keys, $wop = false) {
+        foreach($keys as $key) {
+            if(empty($this->conf[$key])) return false;
+        }
+        return true;
+    }
+
+    /**
+     * Counts users which meet certain $filter criteria.
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  array  $filter  filter criteria in item/pattern pairs
+     * @return int count of found users.
+     */
+    public function getUserCount($filter = array()) {
+        $rc = 0;
+
+        if($this->_openDB()) {
+            $sql = $this->_createSQLFilter($this->conf['getUsers'], $filter);
+
+            // no equivalent of SQL_CALC_FOUND_ROWS in pgsql?
+            if(($result = $this->_queryDB($sql))) {
+                $rc = count($result);
+            }
+            $this->_closeDB();
+        }
+        return $rc;
+    }
+
+    /**
+     * Bulk retrieval of user data
+     *
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param   int   $first     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
+     * @return  array userinfo (refer getUserData for internal userinfo details)
+     */
+    public function retrieveUsers($first = 0, $limit = 0, $filter = array()) {
+        $out = array();
+
+        if($this->_openDB()) {
+            $this->_lockTables("READ");
+            $sql = $this->_createSQLFilter($this->conf['getUsers'], $filter);
+            $sql .= " ".$this->conf['SortOrder'];
+            if($limit) $sql .= " LIMIT $limit";
+            if($first) $sql .= " OFFSET $first";
+            $result = $this->_queryDB($sql);
+
+            foreach($result as $user) {
+                if(($info = $this->_getUserInfo($user['user']))) {
+                    $out[$user['user']] = $info;
+                }
+            }
+
+            $this->_unlockTables();
+            $this->_closeDB();
+        }
+        return $out;
+    }
+
+    // @inherit function joinGroup($user, $group)
+    // @inherit function leaveGroup($user, $group) {
+
+    /**
+     * Adds a user to a group.
+     *
+     * If $force is set to true non existing groups would be created.
+     *
+     * The database connection must already be established. Otherwise
+     * this function does nothing and returns 'false'.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     * @author Andreas Gohr   <andi@splitbrain.org>
+     *
+     * @param   string $user    user to add to a group
+     * @param   string $group   name of the group
+     * @param   bool   $force   create missing groups
+     * @return  bool   true on success, false on error
+     */
+    protected function _addUserToGroup($user, $group, $force = false) {
+        $newgroup = 0;
+
+        if(($this->dbcon) && ($user)) {
+            $gid = $this->_getGroupID($group);
+            if(!$gid) {
+                if($force) { // create missing groups
+                    $sql = str_replace('%{group}', addslashes($group), $this->conf['addGroup']);
+                    $this->_modifyDB($sql);
+                    //group should now exists try again to fetch it
+                    $gid      = $this->_getGroupID($group);
+                    $newgroup = 1; // group newly created
+                }
+            }
+            if(!$gid) return false; // group didn't exist and can't be created
+
+            $sql = $this->conf['addUserGroup'];
+            if(strpos($sql, '%{uid}') !== false) {
+                $uid = $this->_getUserID($user);
+                $sql = str_replace('%{uid}', addslashes($uid), $sql);
+            }
+            $sql = str_replace('%{user}', addslashes($user), $sql);
+            $sql = str_replace('%{gid}', addslashes($gid), $sql);
+            $sql = str_replace('%{group}', addslashes($group), $sql);
+            if($this->_modifyDB($sql) !== false) {
+                $this->_flushUserInfoCache($user);
+                return true;
+            }
+
+            if($newgroup) { // remove previously created group on error
+                $sql = str_replace('%{gid}', addslashes($gid), $this->conf['delGroup']);
+                $sql = str_replace('%{group}', addslashes($group), $sql);
+                $this->_modifyDB($sql);
+            }
+        }
+        return false;
+    }
+
+    // @inherit function _delUserFromGroup($user $group)
+    // @inherit function _getGroups($user)
+    // @inherit function _getUserID($user)
+
+    /**
+     * Adds a new User to the database.
+     *
+     * The database connection must already be established
+     * for this function to work. Otherwise it will return
+     * 'false'.
+     *
+     * @param  string $user  login of the user
+     * @param  string $pwd   encrypted password
+     * @param  string $name  full name of the user
+     * @param  string $mail  email address
+     * @param  array  $grps  array of groups the user should become member of
+     * @return bool
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @author  Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    protected function _addUser($user, $pwd, $name, $mail, $grps) {
+        if($this->dbcon && is_array($grps)) {
+            $sql = str_replace('%{user}', addslashes($user), $this->conf['addUser']);
+            $sql = str_replace('%{pass}', addslashes($pwd), $sql);
+            $sql = str_replace('%{name}', addslashes($name), $sql);
+            $sql = str_replace('%{email}', addslashes($mail), $sql);
+            if($this->_modifyDB($sql)) {
+                $uid = $this->_getUserID($user);
+            } else {
+                return false;
+            }
+
+            $group = '';
+            $gid = false;
+
+            if($uid) {
+                foreach($grps as $group) {
+                    $gid = $this->_addUserToGroup($user, $group, true);
+                    if($gid === false) break;
+                }
+
+                if($gid !== false){
+                    $this->_flushUserInfoCache($user);
+                    return true;
+                } else {
+                    /* remove the new user and all group relations if a group can't
+                     * be assigned. Newly created groups will remain in the database
+                     * and won't be removed. This might create orphaned groups but
+                     * is not a big issue so we ignore this problem here.
+                     */
+                    $this->_delUser($user);
+                    $this->_debug("PgSQL err: Adding user '$user' to group '$group' failed.", -1, __LINE__, __FILE__);
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Opens a connection to a database and saves the handle for further
+     * usage in the object. The successful call to this functions is
+     * essential for most functions in this object.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @return bool
+     */
+    protected function _openDB() {
+        if(!$this->dbcon) {
+            $dsn = $this->conf['server'] ? 'host='.$this->conf['server'] : '';
+            $dsn .= ' port='.$this->conf['port'];
+            $dsn .= ' dbname='.$this->conf['database'];
+            $dsn .= ' user='.$this->conf['user'];
+            $dsn .= ' password='.conf_decodeString($this->conf['password']);
+
+            $con = @pg_connect($dsn);
+            if($con) {
+                $this->dbcon = $con;
+                return true; // connection and database successfully opened
+            } else {
+                $this->_debug(
+                        "PgSQL err: Connection to {$this->conf['user']}@{$this->conf['server']} not possible.",
+                        -1, __LINE__, __FILE__
+                    );
+            }
+            return false; // connection failed
+        }
+        return true; // connection already open
+    }
+
+    /**
+     * Closes a database connection.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     */
+    protected function _closeDB() {
+        if($this->dbcon) {
+            pg_close($this->dbcon);
+            $this->dbcon = 0;
+        }
+    }
+
+    /**
+     * Sends a SQL query to the database and transforms the result into
+     * an associative array.
+     *
+     * This function is only able to handle queries that returns a
+     * table such as SELECT.
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param  string $query  SQL string that contains the query
+     * @return array|false the result table
+     */
+    protected function _queryDB($query) {
+        $resultarray = array();
+        if($this->dbcon) {
+            $result = @pg_query($this->dbcon, $query);
+            if($result) {
+                while(($t = pg_fetch_assoc($result)) !== false)
+                    $resultarray[] = $t;
+                pg_free_result($result);
+                return $resultarray;
+            } else{
+                $this->_debug('PgSQL err: '.pg_last_error($this->dbcon), -1, __LINE__, __FILE__);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Executes an update or insert query. This differs from the
+     * MySQL one because it does NOT return the last insertID
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     *
+     * @param string $query
+     * @return bool
+     */
+    protected function _modifyDB($query) {
+        if($this->dbcon) {
+            $result = @pg_query($this->dbcon, $query);
+            if($result) {
+                pg_free_result($result);
+                return true;
+            }
+            $this->_debug('PgSQL err: '.pg_last_error($this->dbcon), -1, __LINE__, __FILE__);
+        }
+        return false;
+    }
+
+    /**
+     * Start a transaction
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @param string $mode  could be 'READ' or 'WRITE'
+     * @return bool
+     */
+    protected function _lockTables($mode) {
+        if($this->dbcon) {
+            $this->_modifyDB('BEGIN');
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Commit a transaction
+     *
+     * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+     *
+     * @return bool
+     */
+    protected function _unlockTables() {
+        if($this->dbcon) {
+            $this->_modifyDB('COMMIT');
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Escape a string for insertion into the database
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     *
+     * @param  string  $string The string to escape
+     * @param  bool    $like   Escape wildcard chars as well?
+     * @return string
+     */
+    protected function _escape($string, $like = false) {
+        $string = pg_escape_string($string);
+        if($like) {
+            $string = addcslashes($string, '%_');
+        }
+        return $string;
+    }
+}
diff --git a/wiki/lib/plugins/authpgsql/conf/default.php b/wiki/lib/plugins/authpgsql/conf/default.php
new file mode 100644
index 0000000..7f78280
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/conf/default.php
@@ -0,0 +1,33 @@
+<?php
+
+$conf['server']           = '';
+$conf['port']             = 5432;
+$conf['user']             = '';
+$conf['password']         = '';
+$conf['database']         = '';
+$conf['debug']            = 0;
+$conf['forwardClearPass'] = 0;
+$conf['checkPass']        = '';
+$conf['getUserInfo']      = '';
+$conf['getGroups']        = '';
+$conf['getUsers']         = '';
+$conf['FilterLogin']      = '';
+$conf['FilterName']       = '';
+$conf['FilterEmail']      = '';
+$conf['FilterGroup']      = '';
+$conf['SortOrder']        = '';
+$conf['addUser']          = '';
+$conf['addGroup']         = '';
+$conf['addUserGroup']     = '';
+$conf['delGroup']         = '';
+$conf['getUserID']        = '';
+$conf['delUser']          = '';
+$conf['delUserRefs']      = '';
+$conf['updateUser']       = '';
+$conf['UpdateLogin']      = '';
+$conf['UpdatePass']       = '';
+$conf['UpdateEmail']      = '';
+$conf['UpdateName']       = '';
+$conf['UpdateTarget']     = '';
+$conf['delUserGroup']     = '';
+$conf['getGroupID']       = '';
\ No newline at end of file
diff --git a/wiki/lib/plugins/authpgsql/conf/metadata.php b/wiki/lib/plugins/authpgsql/conf/metadata.php
new file mode 100644
index 0000000..cb9c456
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/conf/metadata.php
@@ -0,0 +1,33 @@
+<?php
+
+$meta['server']           = array('string','_caution' => 'danger');
+$meta['port']             = array('numeric','_caution' => 'danger');
+$meta['user']             = array('string','_caution' => 'danger');
+$meta['password']         = array('password','_caution' => 'danger','_code'=>'base64');
+$meta['database']         = array('string','_caution' => 'danger');
+$meta['debug']            = array('onoff','_caution' => 'security');
+$meta['forwardClearPass'] = array('onoff','_caution' => 'danger');
+$meta['checkPass']        = array('','_caution' => 'danger');
+$meta['getUserInfo']      = array('','_caution' => 'danger');
+$meta['getGroups']        = array('');
+$meta['getUsers']         = array('','_caution' => 'danger');
+$meta['FilterLogin']      = array('string','_caution' => 'danger');
+$meta['FilterName']       = array('string','_caution' => 'danger');
+$meta['FilterEmail']      = array('string','_caution' => 'danger');
+$meta['FilterGroup']      = array('string','_caution' => 'danger');
+$meta['SortOrder']        = array('string','_caution' => 'danger');
+$meta['addUser']          = array('','_caution' => 'danger');
+$meta['addGroup']         = array('','_caution' => 'danger');
+$meta['addUserGroup']     = array('','_caution' => 'danger');
+$meta['delGroup']         = array('','_caution' => 'danger');
+$meta['getUserID']        = array('','_caution' => 'danger');
+$meta['delUser']          = array('','_caution' => 'danger');
+$meta['delUserRefs']      = array('','_caution' => 'danger');
+$meta['updateUser']       = array('string','_caution' => 'danger');
+$meta['UpdateLogin']      = array('string','_caution' => 'danger');
+$meta['UpdatePass']       = array('string','_caution' => 'danger');
+$meta['UpdateEmail']      = array('string','_caution' => 'danger');
+$meta['UpdateName']       = array('string','_caution' => 'danger');
+$meta['UpdateTarget']     = array('string','_caution' => 'danger');
+$meta['delUserGroup']     = array('','_caution' => 'danger');
+$meta['getGroupID']       = array('','_caution' => 'danger');
diff --git a/wiki/lib/plugins/authpgsql/lang/bg/settings.php b/wiki/lib/plugins/authpgsql/lang/bg/settings.php
new file mode 100644
index 0000000..bd6ae1c
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/bg/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['server']                = 'Вашият PostgreSQL сървър';
+$lang['port']                  = 'Порт за PostgreSQL сървъра';
+$lang['user']                  = 'PostgreSQL потребител';
+$lang['password']              = 'Парола за горния потребител';
+$lang['database']              = 'Име на базата от данни';
+$lang['debug']                 = 'Показване на допълнителна debug информация';
diff --git a/wiki/lib/plugins/authpgsql/lang/cs/settings.php b/wiki/lib/plugins/authpgsql/lang/cs/settings.php
new file mode 100644
index 0000000..af8b837
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/cs/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ */
+$lang['server']                = 'Váš server PostgreSQL';
+$lang['port']                  = 'Port vašeho serveru PostgreSQL';
+$lang['user']                  = 'Uživatelské jméno pro PostgreSQL';
+$lang['password']              = 'Heslo tohoto uživatele';
+$lang['database']              = 'Použtá databáze';
+$lang['debug']                 = 'Zobrazit dodatečné debugovací informace';
+$lang['forwardClearPass']      = 'Posílat uživatelské heslo jako čistý text do příkazů SQL namísto využití volby passcrypt.';
+$lang['checkPass']             = 'Příkaz SQL pro kontrolu hesel';
+$lang['getUserInfo']           = 'Příkaz SQL pro získání informací o uživateli';
+$lang['getGroups']             = 'Příkaz SQL pro získání členství uživatele ve skupinách';
+$lang['getUsers']              = 'Příkaz SQL pro seznam všech uživatelů';
+$lang['FilterLogin']           = 'Příkaz SQL pro filtrování uživatelů podle přihlašovacího jména';
+$lang['FilterName']            = 'Příkaz SQL pro filtrování uživatelů podle celého jména';
+$lang['FilterEmail']           = 'Příkaz SQL pro filtrování uživatelů podle adres e-mailů';
+$lang['FilterGroup']           = 'Příkaz SQL pro filtrování uživatelů podle členství ve skupinách';
+$lang['SortOrder']             = 'Příkaz SQL pro řazení uživatelů';
+$lang['addUser']               = 'Příkaz SQL pro řazení uživatelů';
+$lang['addGroup']              = 'Příkaz SQL pro přidání nové skupiny';
+$lang['addUserGroup']          = 'Příkaz SQL pro přidání uživatele do existující skupiny';
+$lang['delGroup']              = 'Příkaz SQL pro vymazání skupiny';
+$lang['getUserID']             = 'Příkaz SQL pro získání primárního klíče uživatele';
+$lang['delUser']               = 'Příkaz SQL pro vymazání uživatele';
+$lang['delUserRefs']           = 'Příkaz SQL pro odstranění členství uživatele se všech skupin';
+$lang['updateUser']            = 'Příkaz SQL pro aktualizaci uživatelského profilu';
+$lang['UpdateLogin']           = 'Klauzule pro aktualizaci přihlačovacího jména uživatele';
+$lang['UpdatePass']            = 'Klauzule pro aktualizaci hesla uživatele';
+$lang['UpdateEmail']           = 'Klauzule pro aktualizaci e-mailové adresy uživatele';
+$lang['UpdateName']            = 'Klauzule pro aktualizaci celého jména uživatele';
+$lang['UpdateTarget']          = 'Omezující klauzule pro identifikaci uživatele při aktualizaci';
+$lang['delUserGroup']          = 'Příkaz SQL pro zrušení členství uživatele v dané skupině';
+$lang['getGroupID']            = 'Příkaz SQL pro získání primárního klíče skupiny';
diff --git a/wiki/lib/plugins/authpgsql/lang/cy/settings.php b/wiki/lib/plugins/authpgsql/lang/cy/settings.php
new file mode 100644
index 0000000..0c32ad7
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/cy/settings.php
@@ -0,0 +1,33 @@
+<?php
+
+$lang['server']           = 'Eich gweinydd PostgreSQL';
+$lang['port']             = 'Porth eich gweinydd PostgreSQL';
+$lang['user']             = 'Defnyddair PostgreSQL';
+$lang['password']         = 'Cyfrinair y defnyddiwr uchod';
+$lang['database']         = 'Databas i\'w ddefnyddio';
+$lang['debug']            = 'angos gwybodaeth dadfygio ychwanegol';
+$lang['forwardClearPass'] = 'Pasio cyfrineiriau defnyddwyr fel \'cleartext\' i\'r datganiadau SQL isod, yn hytrach na defnyddio\'r opsiwn \'passcrypt\'';
+$lang['checkPass']        = 'Datganiad SQL i wirio cyfrineiriau';
+$lang['getUserInfo']      = 'Datganiad SQL i nôl gwybodaeth defnyddiwr';
+$lang['getGroups']        = 'Datganiad SQL i nôl aelodaeth grŵp y defnyddiwr';
+$lang['getUsers']         = 'Datganiad SQL i restru pob defnyddiwr';
+$lang['FilterLogin']      = 'Cymal SQL i hidlo defnyddwyr gan enw mewngofnodi';
+$lang['FilterName']       = 'Cymal SQL i hidlo defnyddwyr gan enw llawn';
+$lang['FilterEmail']      = 'Cymal SQL i hidlo defnyddwyr gan gyfeiriad ebost';
+$lang['FilterGroup']      = 'Cymal SQL i hidlo defnyddwyr gan aelodaeth grŵp';
+$lang['SortOrder']        = 'Cymal SQL i drefnu defnyddwyr';
+$lang['addUser']          = 'Datganiad SQL i ychwanegu defnyddiwr newydd';
+$lang['addGroup']         = 'Datganiad SQL i ychwanegu grŵp newydd';
+$lang['addUserGroup']     = 'Datganiad SQL i ychwanegu defnyddiwr newydd i grŵp sy\'n bodoli eisoes';
+$lang['delGroup']         = 'Datganiad SQL i dynnu grŵp';
+$lang['getUserID']        = 'Datganiad SQL i nôl prif allwedd y defnyddiwr';
+$lang['delUser']          = 'Datganiad SQL i ddileu defnyddiwr';
+$lang['delUserRefs']      = 'Datganiad SQL i dynnu defnyddiwr o bob grŵp';
+$lang['updateUser']       = 'Datganiad SQL i ddiweddaru proffil defnyddiwr';
+$lang['UpdateLogin']      = 'Cymal Diweddaru i ddiweddaru enw mewngofnodi defnyddiwr';
+$lang['UpdatePass']       = 'Cymal Diweddaru i ddiweddaru cyfrinair defnyddiwr';
+$lang['UpdateEmail']      = 'Cymal Diweddaru i ddiweddaru cyfeiriad ebost defnyddiwr';
+$lang['UpdateName']       = 'Cymal Diweddaru i ddiweddaru enw llawn defnyddiwr';
+$lang['UpdateTarget']     = 'Cymal Cyfyngu i adnabod y defnyddiwr wrth ddiweddaru';
+$lang['delUserGroup']     = 'Datganiad SQL i dynnu defnyddiwr oddi ar grŵp';
+$lang['getGroupID']       = 'Datganiad SQL i nôl prif allwedd grŵp penodol';
diff --git a/wiki/lib/plugins/authpgsql/lang/da/settings.php b/wiki/lib/plugins/authpgsql/lang/da/settings.php
new file mode 100644
index 0000000..bca2bfb
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/da/settings.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jens Hyllegaard <jens.hyllegaard@gmail.com>
+ * @author soer9648 <soer9648@eucl.dk>
+ */
+$lang['server']                = 'Din PostgresSQL server';
+$lang['port']                  = 'Din PostgresSQL servers port';
+$lang['password']              = 'Kodeord til ovenstående bruger';
+$lang['database']              = 'Database der skal benyttes';
+$lang['debug']                 = 'Vis yderligere debug output';
+$lang['checkPass']             = 'SQL-sætning til at kontrollere kodeord';
+$lang['getUsers']              = 'SQL-sætning til at liste alle brugere';
+$lang['addUser']               = 'SQL-sætning til at tilføje en ny bruger';
+$lang['addGroup']              = 'SQL-sætning til at tilføje en ny gruppe';
+$lang['addUserGroup']          = 'SQL-sætning til at tilføje en bruger til en eksisterende gruppe';
+$lang['delGroup']              = 'SQL-sætning til at fjerne en gruppe';
+$lang['delUser']               = 'SQL-sætning til at slette en bruger';
+$lang['delUserRefs']           = 'SQL-sætning til at fjerne en bruger fra alle grupper';
+$lang['updateUser']            = 'SQL-sætning til at opdatere en brugerprofil';
diff --git a/wiki/lib/plugins/authpgsql/lang/de-informal/settings.php b/wiki/lib/plugins/authpgsql/lang/de-informal/settings.php
new file mode 100644
index 0000000..2547e2c
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/de-informal/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Volker Bödker <volker@boedker.de>
+ */
+$lang['server']                = 'PostgreSQL-Server';
+$lang['port']                  = 'Port des PostgreSQL-Servers.';
+$lang['user']                  = 'Benutzername für den Zugriff auf den PostgreSQL-Server.';
+$lang['password']              = 'Passwort des angegebenen Benutzers.';
+$lang['database']              = 'Zu verwendende Datenbank.';
+$lang['debug']                 = 'Debug-Informationen anzeigen?';
+$lang['forwardClearPass']      = 'Passwort der DokuWiki-Benutzer im Klartext an die Datenbank übergeben? (Im Normalfall wird die passcrypt-Option angewendet.)';
+$lang['checkPass']             = 'SQL-Kommando zum Überprüfen von Passwörtern.';
+$lang['getUserInfo']           = 'SQL-Kommando um Benutzerinformationen auszulesen.';
+$lang['getGroups']             = 'SQL-Kommando um Gruppen eines Benutzers auszulesen.';
+$lang['getUsers']              = 'SQL-Kommando um alle Benutzer auszulesen.';
+$lang['FilterLogin']           = 'SQL-Bedingung um Benutzer anhand ihres Anmeldenamens zu filtern.';
+$lang['FilterName']            = 'SQL-Bedingung um Benutzer anhand ihres Namens zu filtern.';
+$lang['FilterEmail']           = 'SQL-Bedingung um Benutzer anhand ihrer E-Mail-Adresse zu filtern.';
+$lang['FilterGroup']           = 'SQL-Bedingung um Benutzer anhand ihrer Gruppenzugehörigkeit zu filtern.';
+$lang['SortOrder']             = 'SQL-Bedingung um anhand der die Benutzerliste sortiert wird.';
+$lang['addUser']               = 'SQL-Kommando um einen neuen Benutzer anzulegen.';
+$lang['addGroup']              = 'SQL-Kommando um eine neue Gruppe anzulegen.';
+$lang['addUserGroup']          = 'SQL-Kommando um einen Benutzer zu einer Gruppe hinzuzufügen.';
+$lang['delGroup']              = 'SQL-Kommando um eine Gruppe zu löschen.';
+$lang['getUserID']             = 'SQL-Kommando um den Primärschlüssel des Benutzers auszulesen.';
+$lang['delUser']               = 'SQL-Kommando um einen Benutzer zu löschen.';
+$lang['delUserRefs']           = 'SQL-Kommando um einen Benutzer aus allen Gruppen zu entfernen.';
+$lang['updateUser']            = 'SQL-Kommando um das Profil eines Benutzers zu aktualisieren.';
+$lang['UpdateLogin']           = 'SQL-Bedingung um den Anmeldenamen eines Benutzers zu ändern.';
+$lang['UpdatePass']            = 'SQL-Bedingung um das Passwort eines Benutzers zu ändern.';
+$lang['UpdateEmail']           = 'SQL-Bedingung um die E-Mail-Adresse eines Benutzers zu ändern.';
+$lang['UpdateName']            = 'SQL-Bedingung um den Namen eines Benutzers zu ändern.';
+$lang['UpdateTarget']          = 'SQL-Bedingung zur eindeutigen Identifikation des Benutzers.';
+$lang['delUserGroup']          = 'SQL-Kommando um einen Benutzer aus einer angegeben Gruppe zu entfernen.';
+$lang['getGroupID']            = 'SQL-Kommando um den Primärschlüssel einer Gruppe auszulesen.';
diff --git a/wiki/lib/plugins/authpgsql/lang/de/settings.php b/wiki/lib/plugins/authpgsql/lang/de/settings.php
new file mode 100644
index 0000000..6a18811
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/de/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['server']                = 'PostgreSQL-Server';
+$lang['port']                  = 'Port des PostgreSQL-Servers.';
+$lang['user']                  = 'Benutzername für den Zugriff auf den PostgreSQL-Server.';
+$lang['password']              = 'Passwort des angegebenen Benutzers.';
+$lang['database']              = 'Zu verwendende Datenbank.';
+$lang['debug']                 = 'Debug-Informationen anzeigen?';
+$lang['forwardClearPass']      = 'Passwort der DokuWiki-Benutzer im Klartext an die Datenbank übergeben? (Im Normalfall wird die passcrypt-Option angewendet.)';
+$lang['checkPass']             = 'SQL-Kommando zum Überprüfen von Passwörtern.';
+$lang['getUserInfo']           = 'SQL-Kommando um Benutzerinformationen auszulesen.';
+$lang['getGroups']             = 'SQL-Kommando um Gruppen eines Benutzers auszulesen.';
+$lang['getUsers']              = 'SQL-Kommando um alle Benutzer auszulesen.';
+$lang['FilterLogin']           = 'SQL-Bedingung um Benutzer anhand ihres Anmeldenamens zu filtern.';
+$lang['FilterName']            = 'SQL-Bedingung um Benutzer anhand ihres Namens zu filtern.';
+$lang['FilterEmail']           = 'SQL-Bedingung um Benutzer anhand ihrer E-Mail-Adresse zu filtern.';
+$lang['FilterGroup']           = 'SQL-Bedingung um Benutzer anhand ihrer Gruppenzugehörigkeit zu filtern.';
+$lang['SortOrder']             = 'SQL-Bedingung um anhand der die Benutzerliste sortiert wird.';
+$lang['addUser']               = 'SQL-Kommando um einen neuen Benutzer anzulegen.';
+$lang['addGroup']              = 'SQL-Kommando um eine neue Gruppe anzulegen.';
+$lang['addUserGroup']          = 'SQL-Kommando um einen Benutzer zu einer Gruppe hinzuzufügen.';
+$lang['delGroup']              = 'SQL-Kommando um eine Gruppe zu löschen.';
+$lang['getUserID']             = 'SQL-Kommando um den Primärschlüssel des Benutzers auszulesen.';
+$lang['delUser']               = 'SQL-Kommando um einen Benutzer zu löschen.';
+$lang['delUserRefs']           = 'SQL-Kommando um einen Benutzer aus allen Gruppen zu entfernen.';
+$lang['updateUser']            = 'SQL-Kommando um das Profil eines Benutzers zu aktualisieren.';
+$lang['UpdateLogin']           = 'SQL-Bedingung um den Anmeldenamen eines Benutzers zu ändern.';
+$lang['UpdatePass']            = 'SQL-Befehl um das Passwort eines Benutzers zu ändern.';
+$lang['UpdateEmail']           = 'SQL-Befehl um die E-Mail-Adresse eines Benutzers zu ändern.';
+$lang['UpdateName']            = 'SQL-Befehl um den Namen eines Benutzers zu ändern.';
+$lang['UpdateTarget']          = 'SQL-Filter zur eindeutigen Identifikation des Benutzers.';
+$lang['delUserGroup']          = 'SQL-Kommando um einen Benutzer aus einer angegeben Gruppe zu entfernen.';
+$lang['getGroupID']            = 'SQL-Kommando um den Primärschlüssel einer Gruppe auszulesen.';
diff --git a/wiki/lib/plugins/authpgsql/lang/en/settings.php b/wiki/lib/plugins/authpgsql/lang/en/settings.php
new file mode 100644
index 0000000..cfb2686
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/en/settings.php
@@ -0,0 +1,33 @@
+<?php
+
+$lang['server']           = 'Your PostgreSQL server';
+$lang['port']             = 'Your PostgreSQL server\'s port';
+$lang['user']             = 'PostgreSQL user name';
+$lang['password']         = 'Password for above user';
+$lang['database']         = 'Database to use';
+$lang['debug']            = 'Display additional debug information';
+$lang['forwardClearPass'] = 'Pass user passwords as cleartext to the SQL statements below, instead of using the passcrypt option';
+$lang['checkPass']        = 'SQL statement for checking passwords';
+$lang['getUserInfo']      = 'SQL statement for retrieving user information';
+$lang['getGroups']        = 'SQL statement for retrieving a user\'s group memberships';
+$lang['getUsers']         = 'SQL statement to list all users';
+$lang['FilterLogin']      = 'SQL clause for filtering users by login name';
+$lang['FilterName']       = 'SQL clause for filtering users by full name';
+$lang['FilterEmail']      = 'SQL clause for filtering users by email address';
+$lang['FilterGroup']      = 'SQL clause for filtering users by group membership';
+$lang['SortOrder']        = 'SQL clause to sort users';
+$lang['addUser']          = 'SQL statement to add a new user';
+$lang['addGroup']         = 'SQL statement to add a new group';
+$lang['addUserGroup']     = 'SQL statement to add a user to an existing group';
+$lang['delGroup']         = 'SQL statement to remove a group';
+$lang['getUserID']        = 'SQL statement to get the primary key of a user';
+$lang['delUser']          = 'SQL statement to delete a user';
+$lang['delUserRefs']      = 'SQL statement to remove a user from all groups';
+$lang['updateUser']       = 'SQL statement to update a user profile';
+$lang['UpdateLogin']      = 'Update clause for updating the user\'s login name';
+$lang['UpdatePass']       = 'Update clause for updating the user\'s password';
+$lang['UpdateEmail']      = 'Update clause for updating the user\'s email address';
+$lang['UpdateName']       = 'Update clause for updating the user\'s full name';
+$lang['UpdateTarget']     = 'Limit clause to identify the user when updating';
+$lang['delUserGroup']     = 'SQL statement to remove a user from a given group';
+$lang['getGroupID']       = 'SQL statement to get the primary key of a given group';
diff --git a/wiki/lib/plugins/authpgsql/lang/eo/settings.php b/wiki/lib/plugins/authpgsql/lang/eo/settings.php
new file mode 100644
index 0000000..3af6b40
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/eo/settings.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['server']                = 'Via PostgreSQL-servilo';
+$lang['port']                  = 'Via PostgreSQL-servila pordego';
+$lang['user']                  = 'PostgreSQL-uzantonomo';
+$lang['password']              = 'Pasvorto por tiu uzanto';
+$lang['database']              = 'Uzenda datumbazo';
+$lang['debug']                 = 'Ĉu indiki aldonajn erarinformojn';
+$lang['forwardClearPass']      = 'Ĉu transdoni pasvortojn klartekste al la SQL-frazoj sube anstataŭ uzi pasvortan kaŝon';
+$lang['checkPass']             = 'SQL-frazo por testi pasvortojn';
+$lang['getUserInfo']           = 'SQL-frazo por ricevi uzantajn informojn';
+$lang['getGroups']             = 'SQL-frazo por ricevi la grupmembrecojn de uzanto';
+$lang['getUsers']              = 'SQL-frazo por listigi ĉiujn uzantojn';
+$lang['FilterLogin']           = 'SQL-frazo por filtri uzantojn je ensaluta nomo';
+$lang['FilterName']            = 'SQL-frazo por filtri uzantojn je plena nomo';
+$lang['FilterEmail']           = 'SQL-frazo por filtri uzantojn je retpoŝtadreso';
+$lang['FilterGroup']           = 'SQL-frazo por filtri uzantojn je grupmembreco';
+$lang['SortOrder']             = 'SQL-frazo por ordigi uzantojn';
+$lang['addUser']               = 'SQL-frazo por aldoni novan uzanton';
+$lang['addGroup']              = 'SQL-frazo por aldoni novan grupon';
+$lang['addUserGroup']          = 'SQL-frazo por aldoni uzanton al ekzistanta grupo';
+$lang['delGroup']              = 'SQL-frazo por forigi grupon';
+$lang['getUserID']             = 'SQL-frazo por ricevi la ĉefan ŝlosilon de uzanto';
+$lang['delUser']               = 'SQL-frazo por forigi uzanton';
+$lang['delUserRefs']           = 'SQL-frazo por forigi uzanton el ĉiuj grupoj';
+$lang['updateUser']            = 'SQL-frazo por aktualigi uzantan profilon';
+$lang['UpdateLogin']           = 'Aktualiga frazo por uzanta ensalutnomo';
+$lang['UpdatePass']            = 'Aktualiga frazo por uzanta pasvorto';
+$lang['UpdateEmail']           = 'Aktualiga frazo por uzanta retpoŝtadreso';
+$lang['UpdateName']            = 'Aktualiga frazo por plena uzanta nomo';
+$lang['UpdateTarget']          = 'Limiga frazo por identigi la uzanton dum aktualigado';
+$lang['delUserGroup']          = 'SQL-frazo por forigi uzanton el indikita grupo';
+$lang['getGroupID']            = 'SQL-frazo por ricevi la ĉefan ŝlosilon de indikita grupo';
diff --git a/wiki/lib/plugins/authpgsql/lang/es/settings.php b/wiki/lib/plugins/authpgsql/lang/es/settings.php
new file mode 100644
index 0000000..384d798
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/es/settings.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author pokesakura <pokesakura@gmail.com>
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['server']                = 'Su servidor PostgreSQL';
+$lang['port']                  = 'Puerto de su servidor PostgreSQL';
+$lang['user']                  = 'Nombre de usuario PostgreSQL';
+$lang['password']              = 'Contraseña del usuario indicado';
+$lang['database']              = 'Base de datos a usar';
+$lang['debug']                 = 'Muestra la información de depuración adicional';
+$lang['forwardClearPass']      = 'Pasar las contraseñas de usuario en texto plano a las siguientes sentencias de SQL, en lugar de utilizar la opción passcrypt';
+$lang['checkPass']             = 'Sentencia SQL para el control de las contraseñas';
+$lang['getUserInfo']           = 'Sentencia SQL para recuperar información del usuario';
+$lang['getGroups']             = 'Sentencia SQL para recuperar la pertenencia a grupos de un usuario';
+$lang['getUsers']              = 'Sentencia SQL para enumerar todos los usuarios';
+$lang['FilterLogin']           = 'Sentencia SQL para filtrar a los usuarios por su login';
+$lang['FilterName']            = 'Sentencia SQL para filtrar a los usuarios por su nombre completo';
+$lang['FilterEmail']           = 'Sentencia SQL para filtrar a los usuarios por su correo electrónico';
+$lang['FilterGroup']           = 'Sentencia SQL para filtrar a los usuarios por su membresía en un grupo';
+$lang['SortOrder']             = 'Sentencia SQL para ordenar a los usuarios';
+$lang['addUser']               = 'Sentencia de SQL para agregar un nuevo usuario';
+$lang['addGroup']              = 'Sentencia de SQL para agregar un nuevo grupo';
+$lang['addUserGroup']          = 'Sentencia SQL para agregar un usuario a un grupo existente';
+$lang['delGroup']              = 'Instrucción SQL para eliminar un grupo';
+$lang['getUserID']             = 'Sentencia SQL para obtener la clave principal de un usuario';
+$lang['delUser']               = 'Sentencia SQL para eliminar un usuario';
+$lang['delUserRefs']           = 'Sentencia SQL para remover a un usuario de su memebresia en todos los grupos';
+$lang['updateUser']            = 'Sentencia SQL para actualizar los datos del usuario';
+$lang['UpdateLogin']           = 'Sentencia de actualizacion para el login del usuario';
+$lang['UpdatePass']            = 'Sentencia de actualizacion para el password del usuario';
+$lang['UpdateEmail']           = 'Sentencia de actualizacion del correo electrónico del usuario';
+$lang['UpdateName']            = 'Sentencia de actualizacion del nombre completo del usuario';
+$lang['UpdateTarget']          = 'Cláusula limite para identificar al usuario cuando se actualiza';
+$lang['delUserGroup']          = 'Sentencia SQL para eliminar un usuario de un grupo determinado';
+$lang['getGroupID']            = 'Sentencia SQL para obtener la clave principal de un grupo dado';
diff --git a/wiki/lib/plugins/authpgsql/lang/fa/settings.php b/wiki/lib/plugins/authpgsql/lang/fa/settings.php
new file mode 100644
index 0000000..9fe5032
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/fa/settings.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['server']                = 'سرور PostgreSQL شما';
+$lang['port']                  = 'پورت سرور PostgreSQL شما';
+$lang['user']                  = 'نام کاربری PostgreSQL';
+$lang['password']              = 'رمزعبور کابر بالا';
+$lang['database']              = 'پایگاه داده مورد استفاده';
+$lang['debug']                 = 'نمایش اطلاعات بیشتر برای خطایابی';
+$lang['forwardClearPass']      = 'به جای استفاده از امکان رمزنگاری، پسورد کاربران به صورت متنی به دستورات SQL ارسال شود';
+$lang['checkPass']             = 'دستور SQL برای چک کردن پسورد';
+$lang['getUserInfo']           = 'دستور SQL برای دریافت اطلاعات کاربران';
+$lang['getGroups']             = 'دستور SQL برای دریافت گروه‌های یک کاربر';
+$lang['getUsers']              = 'دستور SQL برای فهرست کردن تمام کاربران';
+$lang['FilterLogin']           = 'کلاز SQL برای فیلتر کردن کاربران با نام کاربری';
+$lang['FilterName']            = 'کلاز SQL برای فیلتر کردن کاربران با نام کامل';
+$lang['FilterEmail']           = 'کلاز SQL برای فیلتر کردن کاربران با آدرس ایمیل';
+$lang['FilterGroup']           = 'کلاز SQL برای فیلتر کردن کاربران با عضویت در گروه';
+$lang['SortOrder']             = 'کلاز SQL برای مرتب کردن کاربران';
+$lang['addUser']               = 'دستور SQL برای افزودن کاربر جدید';
+$lang['addGroup']              = 'دستور SQL برای افزودن گروه جدید';
+$lang['addUserGroup']          = 'دستور SQL برای افزودن یک کاربر به یک گروه موجود';
+$lang['delGroup']              = 'دستور SQL برای پاک کردن یک گروه';
+$lang['getUserID']             = 'دستور SQL برای گرفتن کلید اصلی یک کاربر';
+$lang['delUser']               = 'دستور SQL برای حذف یک کاربر';
+$lang['delUserRefs']           = 'دستور SQL برای پاک کردن یک کاربر از تمام گروه‌ها';
+$lang['updateUser']            = 'دستور SQL برای به‌روزرسانی پروفایل کاربر';
+$lang['UpdateLogin']           = 'کلاز Update برای به روز کردن نام کاربری';
+$lang['UpdatePass']            = 'کلاز Update برای به روز کردن پسورد کاربر';
+$lang['UpdateEmail']           = 'کلاز Update برای به روز کردن ایمیل کاربر';
+$lang['UpdateName']            = 'کلاز Update برای به روز کردن نام کامل کاربر';
+$lang['UpdateTarget']          = 'کلاز Limit برای شناسایی کاربر هنگام به روز رسانی';
+$lang['delUserGroup']          = 'دستور SQL برای حذف یک کاربر از یک گروه';
+$lang['getGroupID']            = 'دستور SQL برای گرفتن کلید اصلی یک گروه';
diff --git a/wiki/lib/plugins/authpgsql/lang/fr/settings.php b/wiki/lib/plugins/authpgsql/lang/fr/settings.php
new file mode 100644
index 0000000..8cd9c6a
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/fr/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ */
+$lang['server']                = 'Votre serveur PostgreSQL';
+$lang['port']                  = 'Le port de votre serveur PostgreSQL';
+$lang['user']                  = 'Nom d\'utilisateur PostgreSQL';
+$lang['password']              = 'Mot de passe pour l\'utilisateur ci-dessus';
+$lang['database']              = 'Base de données à utiliser';
+$lang['debug']                 = 'Afficher des informations de débogage supplémentaires';
+$lang['forwardClearPass']      = 'Passer les mots de passe aux requêtes SQL ci-dessous en cleartext plutôt qu\'avec l\'option passcrypt';
+$lang['checkPass']             = 'Requête SQL pour la vérification des mots de passe';
+$lang['getUserInfo']           = 'Requête SQL pour la récupération des informations d\'un utilisateur';
+$lang['getGroups']             = 'Requête SQL pour la récupération des groupes d\'un utilisateur';
+$lang['getUsers']              = 'Requête SQL pour énumérer tous les utilisateurs';
+$lang['FilterLogin']           = 'Clause SQL pour filtrer les utilisateurs par identifiant';
+$lang['FilterName']            = 'Clause SQL pour filtrer les utilisateurs par nom complet';
+$lang['FilterEmail']           = 'Clause SQL pour filtrer les utilisateurs par adresse électronique';
+$lang['FilterGroup']           = 'Clause SQL pour filtrer les utilisateurs par groupes';
+$lang['SortOrder']             = 'Clause SQL pour trier les utilisateurs';
+$lang['addUser']               = 'Requête SQL pour ajouter un nouvel utilisateur';
+$lang['addGroup']              = 'Requête SQL pour ajouter un nouveau groupe';
+$lang['addUserGroup']          = 'Requête SQL pour ajouter un utilisateur à un groupe existant';
+$lang['delGroup']              = 'Requête SQL pour retirer un groupe';
+$lang['getUserID']             = 'Requête SQL pour obtenir la clé primaire d\'un utilisateur';
+$lang['delUser']               = 'Requête SQL pour supprimer un utilisateur';
+$lang['delUserRefs']           = 'Requête SQL pour retirer un utilisateur de tous les groupes';
+$lang['updateUser']            = 'Requête SQL pour mettre à jour le profil d\'un utilisateur';
+$lang['UpdateLogin']           = 'Clause de mise à jour pour mettre à jour l\'identifiant d\'un utilisateur';
+$lang['UpdatePass']            = 'Clause de mise à jour pour mettre à jour le mot de passe d\'un utilisateur';
+$lang['UpdateEmail']           = 'Clause de mise à jour pour mettre à jour l\'adresse électronique d\'un utilisateur';
+$lang['UpdateName']            = 'Clause de mise à jour pour mettre à jour le nom complet d\'un utilisateur';
+$lang['UpdateTarget']          = 'Clause de limite pour identifier l\'utilisateur durant une mise à jour';
+$lang['delUserGroup']          = 'Requête SQL pour retirer un utilisateur d\'un groupe donné';
+$lang['getGroupID']            = 'Requête SQL pour obtenir la clé primaire d\'un groupe donné';
diff --git a/wiki/lib/plugins/authpgsql/lang/hr/settings.php b/wiki/lib/plugins/authpgsql/lang/hr/settings.php
new file mode 100644
index 0000000..2cec4e5
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/hr/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['server']                = 'Vaš PostgreSQL server';
+$lang['port']                  = 'Port vašeg PostgreSQL servera';
+$lang['user']                  = 'PostgreSQL korisničko ime';
+$lang['password']              = 'Lozinka gore navedenoga korisnika';
+$lang['database']              = 'Baza koja se koristi';
+$lang['debug']                 = 'Prikaz dodatnih dijagnostičkih informacija';
+$lang['forwardClearPass']      = 'Proslijed lozinku kao običan tekst u SQL izrazima koji slijede, umjesto korištenja passcrypt opcije';
+$lang['checkPass']             = 'SQL izraz za provjeru lozinke';
+$lang['getUserInfo']           = 'SQL izraz za dohvat korisničkih informacija';
+$lang['getGroups']             = 'SQL izraz za dohvat korisničkog članstva u grupama';
+$lang['getUsers']              = 'SQL izraz za ispis svih korisnika';
+$lang['FilterLogin']           = 'SQL izraz za filtriranje korisnika po korisničkom imenu';
+$lang['FilterName']            = 'SQL izraz za filtriranje korisnika po punom imenu';
+$lang['FilterEmail']           = 'SQL izraz za filtriranje korisnika po email adresi';
+$lang['FilterGroup']           = 'SQL izraz za filtriranje korisnika po članstvu u grupama';
+$lang['SortOrder']             = 'SQL izraz za sortiranje korisnika';
+$lang['addUser']               = 'SQL izraz za dodavanje novog korisnika';
+$lang['addGroup']              = 'SQL izraz za dodavanje nove grupe';
+$lang['addUserGroup']          = 'SQL izraz za dodavanje korisnika u postojeću grupu';
+$lang['delGroup']              = 'SQL izraz za brisanje grupe';
+$lang['getUserID']             = 'SQL izraz za dohvaćanje primarnog ključa korisnika';
+$lang['delUser']               = 'SQL izraz za brisanje korisnika';
+$lang['delUserRefs']           = 'SQL izraz za uklanjanje korisnika iz svih grupa';
+$lang['updateUser']            = 'SQL izraz za ažuriranje korisničkog profila';
+$lang['UpdateLogin']           = 'UPDATE izraz za ažuriranje korisničkog imena';
+$lang['UpdatePass']            = 'UPDATE izraz za ažuriranje korisničke lozinke';
+$lang['UpdateEmail']           = 'UPDATE izraz za ažuriranje korisničke email adrese';
+$lang['UpdateName']            = 'UPDATE izraz za ažuriranje korisničkog punog imena';
+$lang['UpdateTarget']          = 'Limitirajući izraz za identificiranje korisnika pri ažuriranju';
+$lang['delUserGroup']          = 'SQL izraz za uklanjanje korisnika iz navedenih grupa';
+$lang['getGroupID']            = 'SQL izraz za dobivanje primarnog ključa navedene grupe';
diff --git a/wiki/lib/plugins/authpgsql/lang/hu/settings.php b/wiki/lib/plugins/authpgsql/lang/hu/settings.php
new file mode 100644
index 0000000..213fc87
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/hu/settings.php
@@ -0,0 +1,39 @@
+<?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']                = 'PostgreSQL-kiszolgáló';
+$lang['port']                  = 'PostgreSQL-kiszolgáló portja';
+$lang['user']                  = 'PostgreSQL-felhasználónév';
+$lang['password']              = 'Fenti felhasználó jelszava';
+$lang['database']              = 'Adatbázis';
+$lang['debug']                 = 'Hibakeresési üzenetek megjelenítése';
+$lang['forwardClearPass']      = 'A jelszó nyílt szövegben való átadása a következő SQL utasításokban a passcrypt opció használata helyett';
+$lang['checkPass']             = 'SQL-utasítás a jelszavak ellenőrzéséhez';
+$lang['getUserInfo']           = 'SQL-utasítás a felhasználói információk lekérdezéséhez';
+$lang['getGroups']             = 'SQL-utasítás egy felhasználó csoporttagságainak lekérdezéséhez';
+$lang['getUsers']              = 'SQL-utasítás a felhasználók listázásához';
+$lang['FilterLogin']           = 'SQL-kifejezés a felhasználók azonosító alapú szűréséhez';
+$lang['FilterName']            = 'SQL-klauzula a felhasználók név alapú szűréséhez';
+$lang['FilterEmail']           = 'SQL-klauzula a felhasználók e-mail cím alapú szűréséhez';
+$lang['FilterGroup']           = 'SQL-klauzula a felhasználók csoporttagság alapú szűréséhez';
+$lang['SortOrder']             = 'SQL-klauzula a felhasználók rendezéséhez';
+$lang['addUser']               = 'SQL-klauzula új felhasználó hozzáadásához';
+$lang['addGroup']              = 'SQL-klauzula új csoport hozzáadásához';
+$lang['addUserGroup']          = 'SQL-utasítás felhasználó meglévő csoporthoz való hozzáadásához';
+$lang['delGroup']              = 'SQL-utasítás csoport törléséhez';
+$lang['getUserID']             = 'SQL-utasítás felhasználó elsődleges kulcsának lekérdezéséhez';
+$lang['delUser']               = 'SQL-utasítás felhasználó törléséhez';
+$lang['delUserRefs']           = 'SQL-utasítás felhasználó összes csoportból való törléséhez';
+$lang['updateUser']            = 'SQL-utasítás felhasználó profiljának frissítéséhez';
+$lang['UpdateLogin']           = 'UPDATE-klauzula felhasználók azonosítójának frissítéséhez';
+$lang['UpdatePass']            = 'UPDATE-klauzula felhasználók jelszavának frissítéséhez';
+$lang['UpdateEmail']           = 'UPDATE-klauzula felhasználók e-mailcímének frissítéséhez';
+$lang['UpdateName']            = 'SQL-kifejezés a felhasználó nevének frissítéséhez';
+$lang['UpdateTarget']          = 'SQL-kifejezés a felhasználó kiválasztásához az adatok frissítésekor';
+$lang['delUserGroup']          = 'SQL-utasítás egy felhasználó eltávolításához egy adott csoportból';
+$lang['getGroupID']            = 'SQL-utasítás egy csoport elsődleges kulcsának lekérdezéséhez';
diff --git a/wiki/lib/plugins/authpgsql/lang/it/settings.php b/wiki/lib/plugins/authpgsql/lang/it/settings.php
new file mode 100644
index 0000000..365fc47
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/it/settings.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ * @author Maurizio <mcannavo@katamail.com>
+ */
+$lang['server']                = 'Il tuo server PostgreSQL ';
+$lang['port']                  = 'La porta del tuo server PostgreSQL ';
+$lang['user']                  = 'Lo username PostgreSQL';
+$lang['password']              = 'Password dell\'utente summenzionato';
+$lang['database']              = 'Database da usare';
+$lang['debug']                 = 'Visualizza informazioni addizionali di debug';
+$lang['forwardClearPass']      = 'Fornisci le password utente come testo visibile alle istruzioni SQL qui sotto, invece che usare l\'opzione passcrypt';
+$lang['checkPass']             = 'Istruzione SQL per il controllo password';
+$lang['getUserInfo']           = 'Istruzione SQL per recuperare le informazioni utente';
+$lang['getGroups']             = 'Istruzione SQL per recuperare il gruppo di appartenenza di un utente';
+$lang['getUsers']              = 'Istruzione SQL per elencare tutti gli utenti';
+$lang['FilterLogin']           = 'Condizione SQL per filtrare gli utenti in base al nome di accesso';
+$lang['FilterName']            = 'Condizione SQL per filtrare gli utenti in base al nome completo';
+$lang['FilterEmail']           = 'Condizione SQL per filtrare gli utenti in base all\'indirizzo e-mail';
+$lang['FilterGroup']           = 'Condizione SQL per filtrare gli utenti in base al gruppo di appartenenza';
+$lang['SortOrder']             = 'Condizione SQL per ordinare gli utenti';
+$lang['addUser']               = 'Istruzione SQL per aggiungere un nuovo utente';
+$lang['addGroup']              = 'Istruzione SQL per aggiungere un nuovo gruppo';
+$lang['addUserGroup']          = 'Istruzione SQL per aggiungere un utente ad un gruppo esistente';
+$lang['delGroup']              = 'Istruzione SQL per imuovere un gruppo';
+$lang['getUserID']             = 'Istruzione SQL per recuperare la primary key di un utente';
+$lang['delUser']               = 'Istruzione SQL per cancellare un utente';
+$lang['delUserRefs']           = 'Istruzione SQL per rimuovere un utente da tutti i gruppi';
+$lang['updateUser']            = 'Istruzione SQL per aggiornare il profilo utente';
+$lang['UpdateLogin']           = 'Condizione SQL per aggiornare il nome di accesso dell\'utente';
+$lang['UpdatePass']            = 'Condizione SQL per aggiornare la password utente';
+$lang['UpdateEmail']           = 'Condizione SQL per aggiornare l\'e-mail utente';
+$lang['UpdateName']            = 'Condizione SQL per aggiornare il nome completo dell\'utente';
+$lang['UpdateTarget']          = 'Condizione SQL per identificare l\'utente quando aggiornato';
+$lang['delUserGroup']          = 'Istruzione SQL per rimuovere un utente da un dato gruppo';
+$lang['getGroupID']            = 'Istruzione SQL per avere la primary key di un dato gruppo';
diff --git a/wiki/lib/plugins/authpgsql/lang/ja/settings.php b/wiki/lib/plugins/authpgsql/lang/ja/settings.php
new file mode 100644
index 0000000..001008c
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/ja/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ */
+$lang['server']                = 'PostgreSQL のサーバー名';
+$lang['port']                  = 'PostgreSQL サーバーのポート番号';
+$lang['user']                  = 'PostgreSQL 接続用ユーザー名';
+$lang['password']              = 'PostgreSQL 接続用ユーザーのパスワード';
+$lang['database']              = '使用するデータベース名';
+$lang['debug']                 = 'デバック情報を表示する';
+$lang['forwardClearPass']      = '以下で定義する SQL ステートメントにおいて, パスワード変数 を平文とする(DokiWiki側で暗号化しない)';
+$lang['checkPass']             = 'パスワードの照合に用いる SQL ステートメント';
+$lang['getUserInfo']           = 'ユーザー情報の取得に用いる SQL ステートメント';
+$lang['getGroups']             = 'ユーザーが所属する全てのグループの取得に用いる SQL ステートメント';
+$lang['getUsers']              = 'ユーザーリストを取得する SQL ステートメント';
+$lang['FilterLogin']           = 'ユーザーリストをログイン名で絞り込む SQL 句';
+$lang['FilterName']            = 'ユーザーリストをフルネームで絞り込む SQL 句';
+$lang['FilterEmail']           = 'ユーザーリストをメールアドレスで絞り込む SQL 句';
+$lang['FilterGroup']           = 'ユーザーリストを所属グループで絞り込む SQL 句';
+$lang['SortOrder']             = 'ユーザーリストのソート方法を指定する SQL 句';
+$lang['addUser']               = '新規ユーザーを追加する SQL ステートメント';
+$lang['addGroup']              = '新規グループを追加する SQL ステートメント';
+$lang['addUserGroup']          = 'ユーザーをグループに配属する SQL ステートメント';
+$lang['delGroup']              = 'グループを削除する SQL ステートメント';
+$lang['getUserID']             = 'ユーザーIDの取得に用いる SQL ステートメン';
+$lang['delUser']               = 'ユーザーを削除する SQL ステートメント';
+$lang['delUserRefs']           = 'ユーザーのグループ所属を全て取り消す SQL ステートメント';
+$lang['updateUser']            = 'ユーザー情報を変更する SQL ステートメント';
+$lang['UpdateLogin']           = '変更後のログイン名を指定する SQL 句';
+$lang['UpdatePass']            = '変更後のパスワードを指定する SQL 句';
+$lang['UpdateEmail']           = '変更後のメールアドレスを指定する SQL 句';
+$lang['UpdateName']            = '変更後のフルネームを指定する SQL 句';
+$lang['UpdateTarget']          = '変更対象のユーザを特定するための SQL 句';
+$lang['delUserGroup']          = 'ユーザーをグループから除名する SQL ステートメント';
+$lang['getGroupID']            = 'グループIDの取得に用いる SQL ステートメント';
diff --git a/wiki/lib/plugins/authpgsql/lang/ko/settings.php b/wiki/lib/plugins/authpgsql/lang/ko/settings.php
new file mode 100644
index 0000000..fd45bfa
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/ko/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Garam <rowain8@gmail.com>
+ */
+$lang['server']                = 'PostgreSQL 서버';
+$lang['port']                  = 'PostgreSQL 서버의 포트';
+$lang['user']                  = 'PostgreSQL 사용자 이름';
+$lang['password']              = '위 사용자의 비밀번호';
+$lang['database']              = '사용할 데이터베이스';
+$lang['debug']                 = '추가적인 디버그 정보 보이기';
+$lang['forwardClearPass']      = 'passcrypt 옵션을 사용하는 대신 아래 SQL 문에 일반 텍스트로 사용자 비밀번호를 전달';
+$lang['checkPass']             = '비밀번호를 확인하기 위한 SQL 문';
+$lang['getUserInfo']           = '사용자 정보를 가져오기 위한 SQL 문';
+$lang['getGroups']             = '사용자의 그룹 구성원을 가져오기 위한 SQL 문';
+$lang['getUsers']              = '모든 사용자를 나타낼 SQL 문';
+$lang['FilterLogin']           = '로그인 이름별로 사용자를 필터하기 위한 SQL 조항';
+$lang['FilterName']            = '전체 이름별로 사용자를 필터하기 위한 SQL 조항';
+$lang['FilterEmail']           = '이메일 주소별로 사용자를 필터하기 위한 SQL 조항';
+$lang['FilterGroup']           = '그룹 구성원별로 사용자를 필터하기 위한 SQL 조항';
+$lang['SortOrder']             = '사용자를 정렬할 SQL 조항';
+$lang['addUser']               = '새 사용자를 추가할 SQL 문';
+$lang['addGroup']              = '새 그룹을 추가할 SQL 문';
+$lang['addUserGroup']          = '기존 그룹에 사용자를 추가할 SQL 문';
+$lang['delGroup']              = '그룹을 제거할 SQL 문';
+$lang['getUserID']             = '사용자의 기본 키를 얻을 SQL 문';
+$lang['delUser']               = '사용자를 삭제할 SQL 문';
+$lang['delUserRefs']           = '모든 그룹에서 사용자를 제거할 SQL 문';
+$lang['updateUser']            = '사용자 프로필을 업데이트할 SQL 문';
+$lang['UpdateLogin']           = '사용자의 로그인 이름을 업데이트하기 위한 Update 조항';
+$lang['UpdatePass']            = '사용자의 비밀번호를 업데이트하기 위한 Update 조항';
+$lang['UpdateEmail']           = '사용자의 이메일 주소를 업데이트하기 위한 Update 조항';
+$lang['UpdateName']            = '사용자의 전체 이름을 업데이트하기 위한 Update 조항';
+$lang['UpdateTarget']          = '업데이트할 때 사용자를 식별할 Limit 조항';
+$lang['delUserGroup']          = '주어진 그룹에서 사용자를 제거할 SQL 문';
+$lang['getGroupID']            = '주어진 그룹의 기본 키를 얻을 SQL 문';
diff --git a/wiki/lib/plugins/authpgsql/lang/lv/settings.php b/wiki/lib/plugins/authpgsql/lang/lv/settings.php
new file mode 100644
index 0000000..dd63544
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/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['password']              = 'Lietotāja parole';
+$lang['delUser']               = 'SQL pieprasījums lietotāja dzēšanai';
diff --git a/wiki/lib/plugins/authpgsql/lang/nl/settings.php b/wiki/lib/plugins/authpgsql/lang/nl/settings.php
new file mode 100644
index 0000000..7b4ec70
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/nl/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Remon <no@email.local>
+ */
+$lang['server']                = 'Je PostgreSQL server';
+$lang['port']                  = 'Je PostgreSQL server poort';
+$lang['user']                  = 'PostgreSQL gebruikersnaam';
+$lang['password']              = 'Wachtwoord voor bovenstaande gebruiker';
+$lang['database']              = 'Te gebruiken database';
+$lang['debug']                 = 'Tonen aanvullende debuginformatie';
+$lang['forwardClearPass']      = 'Wachtwoorden als leesbare tekst in SQL commando\'s opnemen in plaats van versleuteld';
+$lang['checkPass']             = 'SQL commando voor het verifiëren van wachtwoorden';
+$lang['getUserInfo']           = 'SQL commando voor het ophalen van gebruikersinformatie';
+$lang['getGroups']             = 'SQL commando voor het ophalen van groepslidmaatschappen van gebruikers';
+$lang['getUsers']              = 'SQL commando voor het tonen van alle gebruikers';
+$lang['FilterLogin']           = 'SQL commando voor het filteren van gebruikers op inlognaam';
+$lang['FilterName']            = 'SQL commando voor het filteren van gebruikers op volledige naam';
+$lang['FilterEmail']           = 'SQL commando voor het filteren van gebruikers op e-mailadres';
+$lang['FilterGroup']           = 'SQL commando voor het filteren van gebruikers op groepslidmaatschap';
+$lang['SortOrder']             = 'SQL commando voor het sorteren van gebruikers';
+$lang['addUser']               = 'SQL commando voor het toevoegen van een nieuwe gebruiker';
+$lang['addGroup']              = 'SQL commando voor het toevoegen van een nieuwe groep';
+$lang['addUserGroup']          = 'SQL commando voor toevoegen van een gebruiker aan een bestaande groep';
+$lang['delGroup']              = 'SQL commando voor het verwijderen van een groep';
+$lang['getUserID']             = 'SQL commando om de primaire sleutel van een gebruiker op te halen';
+$lang['delUser']               = 'SQL commando voor het verwijderen van een gebruiker';
+$lang['delUserRefs']           = 'SQL commando om een gebruiker uit alle groepen te verwijderen';
+$lang['updateUser']            = 'SQL commando om een gebruikersprofiel bij te werken';
+$lang['UpdateLogin']           = 'SQL commando om een inlognaam bij te werken';
+$lang['UpdatePass']            = 'SQL commando om een wachtwoord bij te werken';
+$lang['UpdateEmail']           = 'SQL commando om een e-mailadres bij te werken';
+$lang['UpdateName']            = 'SQL commando om een volledige naam bij te werken';
+$lang['UpdateTarget']          = 'Beperkingsclausule om de gebruiker te identificeren bij het bijwerken';
+$lang['delUserGroup']          = 'SQL commando om een gebruiker uit een bepaalde groep te verwijderen';
+$lang['getGroupID']            = 'SQL commando om de primaire sleutel van een bepaalde groep op te halen';
diff --git a/wiki/lib/plugins/authpgsql/lang/no/settings.php b/wiki/lib/plugins/authpgsql/lang/no/settings.php
new file mode 100644
index 0000000..9e84e4d
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/no/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ */
+$lang['server']                = 'Din PostgreSQL-server';
+$lang['port']                  = 'Porten til din PostgreSQL-server';
+$lang['user']                  = 'PostgreSQL-brukernavn';
+$lang['password']              = 'Passord til bruker over';
+$lang['database']              = 'Database som brukes';
+$lang['debug']                 = 'Vis utvidet feilinformasjon';
+$lang['forwardClearPass']      = 'Videresendt passord i klartekst til SQL-uttrykket under, i stedet for å bruke det krypterte passordet';
+$lang['checkPass']             = 'SQL-uttrykk for å sjekke passordet';
+$lang['getUserInfo']           = 'SQL-uttrykk for å hente informasjon om en bruker';
+$lang['getGroups']             = 'SQL-uttrykk for å hente gruppene en bruker tilhører';
+$lang['getUsers']              = 'SQL-uttrykk for å liste alle brukere ';
+$lang['FilterLogin']           = 'SQL-uttrykk for å filtrere brukere etter brukernavn';
+$lang['FilterName']            = 'SQL-uttrykk for å filtrere brukere etter fult navn';
+$lang['FilterEmail']           = 'SQL-uttrykk for å filtrere brukere etter e-postadresse';
+$lang['FilterGroup']           = 'SQL-uttrykk for å filtrere brukere etter hvilken grupper de tilhører';
+$lang['SortOrder']             = 'SQL-uttrykk for å sortere brukere';
+$lang['addUser']               = 'SQL-uttrykk for å legge til en ny bruker';
+$lang['addGroup']              = 'SQL-uttrykk for å legge til en ny gruppe';
+$lang['addUserGroup']          = 'SQL-uttrykk for å legge til en bruker i en eksisterende gruppe';
+$lang['delGroup']              = 'SQL-uttrykk for å fjerne en gruppe ';
+$lang['getUserID']             = 'SQL-uttrykk for å hente primærnøkkel for en gitt bruker';
+$lang['delUser']               = 'SQL-utrykk for å slette en bruker ';
+$lang['delUserRefs']           = 'SQL-utrykk for å fjerne en bruke fra alle grupper';
+$lang['updateUser']            = 'SQL-uttrykk for å oppdatere en brukerprofil';
+$lang['UpdateLogin']           = 'Update-utrykk for å oppdatere brukernavn';
+$lang['UpdatePass']            = 'Update-utrykk for å oppdatere brukers passord';
+$lang['UpdateEmail']           = 'Update-utrykk for å oppdatere brukers e-postadresse';
+$lang['UpdateName']            = 'Update-utrykk for å oppdatere brukers fulle navn';
+$lang['UpdateTarget']          = 'Limit-uttrykk for å identifisere brukeren ved oppdatering';
+$lang['delUserGroup']          = 'SQL-uttrykk for fjerne en bruker fra gitt gruppe';
+$lang['getGroupID']            = 'SQL-uttrykk for å hente primærnøkkel for en gitt gruppe';
diff --git a/wiki/lib/plugins/authpgsql/lang/pl/settings.php b/wiki/lib/plugins/authpgsql/lang/pl/settings.php
new file mode 100644
index 0000000..e89fd91
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/pl/settings.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Max <maxrb146@gmail.com>
+ * @author Mati <mackosa@wp.pl>
+ */
+$lang['server']                = 'Twój serwer PostgreSQL';
+$lang['port']                  = 'Port Twojego serwera PostgreSQL';
+$lang['user']                  = 'Nazwa użytkownika PostgreSQL';
+$lang['password']              = 'Hasła dla powyższego użytkownika';
+$lang['database']              = 'Baza danych do użycia';
+$lang['debug']                 = 'Wyświetl dodatkowe informacje debagowania';
+$lang['forwardClearPass']      = 'Przekazuj do poniższej instrukcji SQL hasła użytkowników jako czysty tekst do instrukcji SQL zamiast używać opcji passcrypt';
+$lang['checkPass']             = 'Instrukcja SQL sprawdzająca hasła';
+$lang['getUserInfo']           = 'Instrukcja SQL pobierająca dane użytkownika';
+$lang['getGroups']             = 'Instrukcja SQL pobierająca przynależność użytkownika do grup';
+$lang['getUsers']              = 'Instrukcja SQL listująca wszystkich użytkowników';
+$lang['FilterLogin']           = 'Instrukcja SQL filtrująca użytkowników po loginie';
+$lang['FilterName']            = 'Instrukcja SQL filtrująca użytkowników po imieniu i nazwisku';
+$lang['FilterEmail']           = 'Instrukcja SQL filtrująca użytkowników po emailu';
+$lang['FilterGroup']           = 'Instrukcja SQL filtrująca użytkowników po przynależności do grupy';
+$lang['SortOrder']             = 'Instrukcja SQL sortująca użytkowników';
+$lang['addUser']               = 'Instrukcja SQL dodająca nowego użytkownika';
+$lang['addGroup']              = 'Instrukcja SQL dodająca nową grupę';
+$lang['addUserGroup']          = 'Instrukcja SQL dodająca użytkownika do istniejącej grupy';
+$lang['delGroup']              = 'Instrukcja SQL usuwająca grupę';
+$lang['getUserID']             = 'Instrukcja SQL pobierająca klucz główny użytkownika';
+$lang['delUser']               = 'Instrukcja SQL usuwająca użytkownika';
+$lang['delUserRefs']           = 'Instrukcja SQL usuwająca użytkownika ze wszystkich grup';
+$lang['updateUser']            = 'Instrukcja SQL aktualizująca profil użytkownika';
+$lang['UpdateLogin']           = 'Polecenie służące do aktualizacji loginu użytkownika';
+$lang['UpdatePass']            = 'Polecenie służące do aktualizacji hasła użytkownika';
+$lang['UpdateEmail']           = 'Polecenie służące do aktualizacji e-mailu użytkownika';
+$lang['UpdateName']            = 'Polecenie służące do aktualizacji imienia i nazwiska użytkownika';
+$lang['UpdateTarget']          = 'Instrukcja limitu do identyfikacji użytkownika podczas aktualizacji';
+$lang['delUserGroup']          = 'Instrukcja SQL usuwająca użytkownika ze wskazanej grupy';
+$lang['getGroupID']            = 'Instrukcja SQL pobierająca klucz główny wskazanej grupy';
diff --git a/wiki/lib/plugins/authpgsql/lang/pt-br/settings.php b/wiki/lib/plugins/authpgsql/lang/pt-br/settings.php
new file mode 100644
index 0000000..a06ce0e
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/pt-br/settings.php
@@ -0,0 +1,39 @@
+<?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>
+ */
+$lang['server']                = 'Seu servidor PostgreSQL';
+$lang['port']                  = 'Sua porta do servidor PostgreSQL';
+$lang['user']                  = 'Nome de usuário PostgreSQL';
+$lang['password']              = 'Senha do usuário acima';
+$lang['database']              = 'Base de dados para usar';
+$lang['debug']                 = 'Mostrar informações adicionais de depuração';
+$lang['forwardClearPass']      = 'Transmitir senhas de usuário como texto puro para comandos SQL abaixo, ao invés de usar a opção passcrypt';
+$lang['checkPass']             = 'Comando SQL para verificar senhas';
+$lang['getUserInfo']           = 'Comando SQL para obter informações do usuário';
+$lang['getGroups']             = 'Comando SQL para obter as credenciais de um usuário de um determinado grupo';
+$lang['getUsers']              = 'Comando SQL para listar todos os usuários';
+$lang['FilterLogin']           = 'Cláusula SQL para filtrar usuários pelo nome de login';
+$lang['FilterName']            = 'Cláusula SQL para filtrar usuários pelo nome completo';
+$lang['FilterEmail']           = 'Cláusula SQL para filtrar usuários pelo endereço de email';
+$lang['FilterGroup']           = 'Cláusula SQL para filtrar usuários pelo grupo que pertencem';
+$lang['SortOrder']             = 'Comando SQL para adicionar novo grupo';
+$lang['addUser']               = 'Comando SQL para adicionar novo usuário';
+$lang['addGroup']              = 'Comando SQL para adicionar novo grupo';
+$lang['addUserGroup']          = 'Comando SQL para adicionar um usuário a um grupo existente';
+$lang['delGroup']              = 'Comando SQL para remover um grupo';
+$lang['getUserID']             = 'Comando SQL para obter chave primária de usuário';
+$lang['delUser']               = 'Comando SQL para apagar usuário';
+$lang['delUserRefs']           = 'Comando SQL para remover um usuário de todos os grupos';
+$lang['updateUser']            = 'Comando SQL para atualizar perfil de usuário';
+$lang['UpdateLogin']           = 'Atualizar cláusula para atualizar o login do usuário';
+$lang['UpdatePass']            = 'Atualizar cláusula para atualizar a senha do usuário';
+$lang['UpdateEmail']           = 'Atualizar cláusula para atualizar o endereço de email';
+$lang['UpdateName']            = 'Atualizar cláusula para atualizar o nome completo do usuário';
+$lang['UpdateTarget']          = 'Limitar cláusula para identificar quando um usuário estiver atualizando';
+$lang['delUserGroup']          = 'Comando SQL para remover um usuário de um determinado grupo';
+$lang['getGroupID']            = 'Comando SQL para obter a chave primária de um determinado grupo';
diff --git a/wiki/lib/plugins/authpgsql/lang/pt/settings.php b/wiki/lib/plugins/authpgsql/lang/pt/settings.php
new file mode 100644
index 0000000..edc4e1a
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/pt/settings.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author André Neves <drakferion@gmail.com>
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ */
+$lang['server']                = 'O seu servidor PostgreSQL';
+$lang['port']                  = 'A porta do seu servidor PostgreSQL';
+$lang['user']                  = 'Nome de utilizador PostgreSQL';
+$lang['password']              = 'Senha do utilizador acima';
+$lang['database']              = 'Base de dados a usar';
+$lang['debug']                 = 'Mostrar informação adicional de debug';
+$lang['forwardClearPass']      = 'Passe as senhas do usuário como texto puro para as instruções SQL abaixo, em vez de usar a opção passcrypt';
+$lang['checkPass']             = 'Instrução SQL para verificar senhas';
+$lang['getUserInfo']           = 'Instrução SQL para recuperar informações de um usuário';
+$lang['getGroups']             = 'Instrução SQL para recuperar os usuários participantes de um grupo';
+$lang['getUsers']              = 'Instrução SQL para listar todos usuários';
+$lang['FilterLogin']           = 'Cláusula SQL para filtrar utilizadores por nome de login';
+$lang['FilterName']            = 'Cláusula SQL para filtrar utilizadores por nome completo';
+$lang['FilterEmail']           = 'Cláusula SQL para filtrar utilizadores por endereço de email';
+$lang['FilterGroup']           = 'Cláusula SQL para filtrar utilizadores por pertença a grupo';
+$lang['SortOrder']             = 'Cláusula SQL para ordenar utilizadores';
+$lang['addUser']               = 'Instrução SQL para adicionar um novo usuário';
+$lang['addGroup']              = 'Instrução SQL para adicionar um novo grupo';
+$lang['addUserGroup']          = 'Instrução SQL para adicionar um usuário a um grupo existente';
+$lang['delGroup']              = 'Instrução SQL para remover um grupo';
+$lang['getUserID']             = 'Instrução SQL para obter a chave principal de um usuário';
+$lang['delUser']               = 'Instrução SQL para remover um usuário';
+$lang['delUserRefs']           = 'Instrução SQL para remover um usuário de todos os grupos';
+$lang['updateUser']            = 'Instrução SQL para atualizar um perfil de usuário';
+$lang['UpdateLogin']           = 'Cláusula de atualização para atualizar o nome de login do utilizador';
+$lang['UpdatePass']            = 'Cláusula de atualização para atualizar a senha do utilizador';
+$lang['UpdateEmail']           = 'Cláusula de atualização para atualizar o endereço de email do utilizador';
+$lang['UpdateName']            = 'Cláusula de atualização para atualizar o nome completo do utilizador';
+$lang['UpdateTarget']          = 'Cláusula limite para identificar o usuário ao atualizar';
+$lang['delUserGroup']          = 'Instrução SQL para remover um usuário de um determinado grupo';
+$lang['getGroupID']            = 'Instrução SQL para obter a chave principal de um determinado grupo';
diff --git a/wiki/lib/plugins/authpgsql/lang/ru/settings.php b/wiki/lib/plugins/authpgsql/lang/ru/settings.php
new file mode 100644
index 0000000..ceb5bd4
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/ru/settings.php
@@ -0,0 +1,42 @@
+<?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 Vitaly Filatenko <kot@hacktest.net>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Alex P <alexander@lanos.co.uk>
+ */
+$lang['server']                = 'Ваш PostgreSQL-сервер';
+$lang['port']                  = 'Порт вашего PostgreSQL-сервера';
+$lang['user']                  = 'Имя пользователя PostgreSQL';
+$lang['password']              = 'Пароль для указанного пользователя';
+$lang['database']              = 'Имя базы данных';
+$lang['debug']                 = 'Отображать дополнительную отладочную информацию';
+$lang['forwardClearPass']      = 'Передать чистым текстом ползовательские пароли в SQL запросы ниже, вместо использование опции passcrypt';
+$lang['checkPass']             = 'Выражение SQL, осуществляющее проверку пароля';
+$lang['getUserInfo']           = 'Выражение SQL, осуществляющее извлечение информации о пользователе';
+$lang['getGroups']             = 'Выражение SQL, осуществляющее извлечение информации о членстве пользователе в группах';
+$lang['getUsers']              = 'Выражение SQL, осуществляющее извлечение полного списка пользователей';
+$lang['FilterLogin']           = 'Выражение SQL, осуществляющее фильтрацию пользователей по логину';
+$lang['FilterName']            = 'Выражение SQL, осуществляющее фильтрацию пользователей по полному имени';
+$lang['FilterEmail']           = 'Выражение SQL, осуществляющее фильтрацию пользователей по адресу электронной почты';
+$lang['FilterGroup']           = 'Выражение SQL, осуществляющее фильтрацию пользователей согласно членству в группе';
+$lang['SortOrder']             = 'Выражение SQL, осуществляющее сортировку пользователей';
+$lang['addUser']               = 'Выражение SQL, осуществляющее добавление нового пользователя';
+$lang['addGroup']              = 'Выражение SQL, осуществляющее добавление новой группы';
+$lang['addUserGroup']          = 'Выражение SQL, осуществляющее добавление пользователя в существующую группу';
+$lang['delGroup']              = 'Выражение SQL, осуществляющее удаление группы';
+$lang['getUserID']             = 'Выражение SQL, обеспечивающее получение первичного ключа пользователя';
+$lang['delUser']               = 'Выражение SQL, осуществляющее удаление пользователя';
+$lang['delUserRefs']           = 'Выражение SQL, осуществляющее удаление пользователя из всех группы';
+$lang['updateUser']            = 'Выражение SQL, осуществляющее обновление профиля пользователя';
+$lang['UpdateLogin']           = 'Измените условие для обновления логина';
+$lang['UpdatePass']            = 'Измените условие для обновления пароля';
+$lang['UpdateEmail']           = 'Измените условие для обновления email';
+$lang['UpdateName']            = 'Условие для обновления полного имени пользователя';
+$lang['UpdateTarget']          = 'Выражение \'LIMIT\' для идентификации пользователя при обновлении';
+$lang['delUserGroup']          = 'Выражение SQL, осуществляющее удаление пользователя из указанной группы';
+$lang['getGroupID']            = 'Выражение SQL, обеспечивающее получение первичного ключа указанной группы';
diff --git a/wiki/lib/plugins/authpgsql/lang/sk/settings.php b/wiki/lib/plugins/authpgsql/lang/sk/settings.php
new file mode 100644
index 0000000..acdc2d7
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/sk/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['server']                = 'PostgreSQL server';
+$lang['port']                  = 'Port PostgreSQL servera';
+$lang['user']                  = 'Meno používateľa PostgreSQL';
+$lang['password']              = 'Heslo pre vyššie uvedeného používateľa';
+$lang['database']              = 'Použiť databázu';
+$lang['debug']                 = 'Zobraziť dodatočné ladiace informácie';
+$lang['forwardClearPass']      = 'Posielať heslo ako nezakódovaný text nižšie uvedenému SQL príkazu namiesto použitia kódovania';
+$lang['checkPass']             = 'SQL príkaz pre kontrolu hesla';
+$lang['getUserInfo']           = 'SQL príkaz pre získanie informácií o používateľovi';
+$lang['getGroups']             = 'SQL príkaz pre získanie informácií o skupinách používateľa';
+$lang['getUsers']              = 'SQL príkaz pre získanie zoznamu používateľov';
+$lang['FilterLogin']           = 'SQL podmienka pre filtrovanie používateľov podľa prihlasovacieho mena';
+$lang['FilterName']            = 'SQL podmienka pre filtrovanie používateľov podľa mena a priezviska';
+$lang['FilterEmail']           = 'SQL podmienka pre filtrovanie používateľov podľa emailovej adresy';
+$lang['FilterGroup']           = 'SQL podmienka pre filtrovanie používateľov podľa skupiny';
+$lang['SortOrder']             = 'SQL podmienka pre usporiadenia používateľov';
+$lang['addUser']               = 'SQL príkaz pre pridanie nového používateľa';
+$lang['addGroup']              = 'SQL príkaz pre pridanie novej skupiny';
+$lang['addUserGroup']          = 'SQL príkaz pre pridanie používateľa do existujúcej skupiny';
+$lang['delGroup']              = 'SQL príkaz pre zrušenie skupiny';
+$lang['getUserID']             = 'SQL príkaz pre získanie primárneho klúča používateľa';
+$lang['delUser']               = 'SQL príkaz pre zrušenie používateľa';
+$lang['delUserRefs']           = 'SQL príkaz pre vyradenie používateľa zo všetkých skupín';
+$lang['updateUser']            = 'SQL príkaz pre aktualizáciu informácií o používateľovi';
+$lang['UpdateLogin']           = 'SQL podmienka pre aktualizáciu prihlasovacieho mena používateľa';
+$lang['UpdatePass']            = 'SQL podmienka pre aktualizáciu hesla používateľa';
+$lang['UpdateEmail']           = 'SQL podmienka pre aktualizáciu emailovej adresy používateľa';
+$lang['UpdateName']            = 'SQL podmienka pre aktualizáciu mena a priezviska používateľa';
+$lang['UpdateTarget']          = 'Podmienka identifikácie používateľa pri aktualizácii';
+$lang['delUserGroup']          = 'SQL príkaz pre vyradenie používateľa z danej skupiny';
+$lang['getGroupID']            = 'SQL príkaz pre získanie primárneho kľúča skupiny';
diff --git a/wiki/lib/plugins/authpgsql/lang/sl/settings.php b/wiki/lib/plugins/authpgsql/lang/sl/settings.php
new file mode 100644
index 0000000..7110a6e
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/sl/settings.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matej Urbančič <mateju@svn.gnome.org>
+ */
+$lang['database']              = 'Podatkovna zbirka za uporabo';
+$lang['addUserGroup']          = 'Ukaz SQL za dodajanje uporabnika v obstoječo skupino';
+$lang['delGroup']              = 'Ukaz SQL za odstranitev skupine';
+$lang['getUserID']             = 'Ukaz SQL za pridobitev osnovnega ključa uporabnika';
+$lang['delUser']               = 'Ukaz SQL za izbris uporabnika';
+$lang['delUserRefs']           = 'Ukaz SQL za odstranitev uporabnika iz vseh skupin';
+$lang['updateUser']            = 'Ukaz SQL za posodobitev profila uporabnika';
+$lang['delUserGroup']          = 'Ukaz SQL za odstranitev uporabnika iz podane skupine';
+$lang['getGroupID']            = 'Ukaz SQL za pridobitev osnovnega ključa podane skupine';
diff --git a/wiki/lib/plugins/authpgsql/lang/sr/settings.php b/wiki/lib/plugins/authpgsql/lang/sr/settings.php
new file mode 100644
index 0000000..4b1cd8b
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/sr/settings.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['server']                = 'Ваш PostgreSQL сервер';
+$lang['port']                  = 'Порт вашег PostgreSQL сервера';
+$lang['user']                  = 'PostgreSQL корисничко име';
+$lang['password']              = 'Лозинка за корисника изнад';
+$lang['database']              = 'База коју треба користити';
+$lang['debug']                 = 'Прикажи додатне податке за поправљање грешака';
+$lang['forwardClearPass']      = 'Пренеси корисничке лозинке као чист текст ка SQL упитима испод уместо коришћења passcrypt опције';
+$lang['checkPass']             = 'SQL упит за проверу лозинки';
+$lang['getUserInfo']           = 'SQL упит за добављање корисничких података';
+$lang['getGroups']             = 'SQL упит за добављање групних учлањења корисника';
+$lang['getUsers']              = 'SQL упит за листање свих корисника';
diff --git a/wiki/lib/plugins/authpgsql/lang/sv/settings.php b/wiki/lib/plugins/authpgsql/lang/sv/settings.php
new file mode 100644
index 0000000..1082583
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/sv/settings.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Smorkster Andersson smorkster@gmail.com
+ */
+$lang['server']                = 'Din PostgreSQL server';
+$lang['port']                  = 'Din PostgreSQL servers port';
+$lang['user']                  = 'PostgreSQL användarnamn';
+$lang['password']              = 'Lösenord för användaren ovan';
+$lang['database']              = 'Databas att använda';
+$lang['debug']                 = 'Visa ytterligare felsökningsinformation';
+$lang['forwardClearPass']      = 'Skicka lösenord för användare som klartext till SQL satserna nedan, istället för att använda krypteringsalternativet';
+$lang['checkPass']             = 'SQL sats för kontroll av lösenord';
+$lang['getUserInfo']           = 'SQL sats för att hämta användarinformation';
+$lang['getGroups']             = 'SQL sats för att hämta en användares gruppmedlemskap';
+$lang['getUsers']              = 'SQL sats för att lista alla användare';
+$lang['FilterLogin']           = 'SQL klausul för att filtrera användare efter inloggningsnamn';
+$lang['FilterName']            = 'SQL klausul för att filtrera användare efter fullt namn';
+$lang['FilterEmail']           = 'SQL klausul för att filtrera användare efter e-post adress';
+$lang['addUser']               = 'SQL sats för att lägga till en ny användare';
+$lang['addGroup']              = 'SQL sats för att lägga till en ny grupp';
+$lang['addUserGroup']          = 'SQL sats för att lägga till en användare i en existerande grupp';
+$lang['delGroup']              = 'SQL sats för att ta bort en grupp';
+$lang['delUser']               = 'SQL sats för att ta bort en användare';
+$lang['delUserRefs']           = 'SQL sats för att ta bort en användare från alla grupper';
+$lang['updateUser']            = 'SQL sats för att uppdatera en användarprofil';
+$lang['delUserGroup']          = 'SQL sats för att ta bort en användare från angiven grupp';
diff --git a/wiki/lib/plugins/authpgsql/lang/tr/settings.php b/wiki/lib/plugins/authpgsql/lang/tr/settings.php
new file mode 100644
index 0000000..f6fef9c
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/tr/settings.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author İlker R. Kapaç <irifat@gmail.com>
+ */
+$lang['server']                = 'PostgreSQL sunucunuz';
+$lang['port']                  = 'PostgreSQL sunucunuzun kapısı (port)';
+$lang['user']                  = 'PostgreSQL kullanıcısının adı';
+$lang['password']              = 'Yukarıdaki kullanıcı için şifre';
+$lang['database']              = 'Kullanılacak veritabanı';
+$lang['debug']                 = 'İlave hata ayıklama bilgisini görüntüle';
diff --git a/wiki/lib/plugins/authpgsql/lang/uk/settings.php b/wiki/lib/plugins/authpgsql/lang/uk/settings.php
new file mode 100644
index 0000000..9a35341
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/uk/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Nina Zolotova <nina-z@i.ua>
+ */
+$lang['database']              = 'Використовувати базу даних';
diff --git a/wiki/lib/plugins/authpgsql/lang/zh-tw/settings.php b/wiki/lib/plugins/authpgsql/lang/zh-tw/settings.php
new file mode 100644
index 0000000..b7dd9c6
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/zh-tw/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author syaoranhinata@gmail.com
+ */
+$lang['server']                = '您的 PostgreSQL 伺服器';
+$lang['port']                  = '您的 PostgreSQL 伺服器端口';
+$lang['user']                  = 'PostgreSQL 使用者名稱';
+$lang['password']              = '上述使用者的密碼';
+$lang['database']              = '使用的資料庫';
+$lang['debug']                 = '顯示額外除錯資訊';
+$lang['forwardClearPass']      = '以明文形式,把使用者密碼傳送给下列的 SQL 語句,而不使用 passcrypt 密碼加密選項';
+$lang['checkPass']             = '檢查密碼的 SQL 語句';
+$lang['getUserInfo']           = '獲取使用者訊息的 SQL 語句';
+$lang['getGroups']             = '獲取使用者群組成員身份的 SQL 語句';
+$lang['getUsers']              = '把所有使用者列出的 SQL 語句';
+$lang['FilterLogin']           = '根據登入名稱來篩選使用者的 SQL 子句';
+$lang['FilterName']            = '根據全名來篩選使用者的 SQL 子句';
+$lang['FilterEmail']           = '根據電郵地址來篩選使用者的 SQL 子句';
+$lang['FilterGroup']           = '根據群組成員身份來篩選使用者的 SQL 子句';
+$lang['SortOrder']             = '對使用者排序的 SQL 子句';
+$lang['addUser']               = '增加新使用者的 SQL 語句';
+$lang['addGroup']              = '增加新群組的 SQL 語句';
+$lang['addUserGroup']          = '把使用者新增至現有群組的 SQL 語句';
+$lang['delGroup']              = '把群組刪除的 SQL 語句';
+$lang['getUserID']             = '取得使用者主鍵的 SQL 語句';
+$lang['delUser']               = '把使用者刪除的 SQL 語句';
+$lang['delUserRefs']           = '把使用者從所有群組裏刪除的 SQL 語句';
+$lang['updateUser']            = '更新使用者訊息的 SQL 語句';
+$lang['UpdateLogin']           = '更新使用者登入名稱的 Update 子句';
+$lang['UpdatePass']            = '更新帳號密碼的 Update 子句';
+$lang['UpdateEmail']           = '更新使用者電郵地址的 Update 子句';
+$lang['UpdateName']            = '更新使用者全名的 Update 子句';
+$lang['UpdateTarget']          = '在更新時識別使用者的 Limit 子句';
+$lang['delUserGroup']          = '把使用者從指定群組中刪除的 SQL 語句';
+$lang['getGroupID']            = '取得指定群組主鍵的 SQL 語句';
diff --git a/wiki/lib/plugins/authpgsql/lang/zh/settings.php b/wiki/lib/plugins/authpgsql/lang/zh/settings.php
new file mode 100644
index 0000000..5140d11
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/lang/zh/settings.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ */
+$lang['server']                = '您的 PostgreSQL 服务器';
+$lang['port']                  = '您的 PostgreSQL 服务器端口';
+$lang['user']                  = 'PostgreSQL 用户名';
+$lang['password']              = '上述用户的密码';
+$lang['database']              = '使用的数据库';
+$lang['debug']                 = '显示额外调试信息';
+$lang['forwardClearPass']      = '将用户密码以明文形式传送给下面的 SQL 语句,而不使用 passcrypt 密码加密选项';
+$lang['checkPass']             = '检查密码的 SQL 语句';
+$lang['getUserInfo']           = '获取用户信息的 SQL 语句';
+$lang['getGroups']             = '获取用户的组成员身份的 SQL 语句';
+$lang['getUsers']              = '列出所有用户的 SQL 语句';
+$lang['FilterLogin']           = '根据登录名筛选用户的 SQL 子句';
+$lang['FilterName']            = '根据全名筛选用户的 SQL 子句';
+$lang['FilterEmail']           = '根据电子邮件地址筛选用户的 SQL 子句';
+$lang['FilterGroup']           = '根据组成员身份筛选用户的 SQL 子句';
+$lang['SortOrder']             = '对用户排序的 SQL 子句';
+$lang['addUser']               = '添加新用户的 SQL 语句';
+$lang['addGroup']              = '添加新组的 SQL 语句';
+$lang['addUserGroup']          = '将用户添加到现有组的 SQL 语句';
+$lang['delGroup']              = '删除组的 SQL 语句';
+$lang['getUserID']             = '获取用户主键的 SQL 语句';
+$lang['delUser']               = '删除用户的 SQL 语句';
+$lang['delUserRefs']           = '从所有组中删除一个用户的 SQL 语句';
+$lang['updateUser']            = '更新用户信息的 SQL 语句';
+$lang['UpdateLogin']           = '更新用户登录名的 Update 子句';
+$lang['UpdatePass']            = '更新用户密码的 Update 子句';
+$lang['UpdateEmail']           = '更新用户电子邮件地址的 Update 子句';
+$lang['UpdateName']            = '更新用户全名的 Update 子句';
+$lang['UpdateTarget']          = '更新时识别用户的 Limit 子句';
+$lang['delUserGroup']          = '从指定组删除用户的 SQL 语句';
+$lang['getGroupID']            = '获取指定组主键的 SQL 语句';
diff --git a/wiki/lib/plugins/authpgsql/plugin.info.txt b/wiki/lib/plugins/authpgsql/plugin.info.txt
new file mode 100644
index 0000000..033c291
--- /dev/null
+++ b/wiki/lib/plugins/authpgsql/plugin.info.txt
@@ -0,0 +1,7 @@
+base   authpgsql
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-13
+name   [DEPRECATED] PostgreSQL Auth Plugin
+desc   ▶This plugin will be removed from DokuWiki in a future release! Use authpdo instead.◀ Provides user authentication against a PostgreSQL database
+url    http://www.dokuwiki.org/plugin:authpgsql
diff --git a/wiki/lib/plugins/authplain/auth.php b/wiki/lib/plugins/authplain/auth.php
new file mode 100644
index 0000000..7dfa43a
--- /dev/null
+++ b/wiki/lib/plugins/authplain/auth.php
@@ -0,0 +1,443 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Plaintext authentication backend
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Chris Smith <chris@jalakai.co.uk>
+ * @author     Jan Schumann <js@schumann-it.com>
+ */
+class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
+    /** @var array user cache */
+    protected $users = null;
+
+    /** @var array filter pattern */
+    protected $_pattern = array();
+
+    /** @var bool safe version of preg_split */
+    protected $_pregsplit_safe = false;
+
+    /**
+     * Constructor
+     *
+     * Carry out sanity checks to ensure the object is
+     * able to operate. Set capabilities.
+     *
+     * @author  Christopher Smith <chris@jalakai.co.uk>
+     */
+    public function __construct() {
+        parent::__construct();
+        global $config_cascade;
+
+        if(!@is_readable($config_cascade['plainauth.users']['default'])) {
+            $this->success = false;
+        } else {
+            if(@is_writable($config_cascade['plainauth.users']['default'])) {
+                $this->cando['addUser']   = true;
+                $this->cando['delUser']   = true;
+                $this->cando['modLogin']  = true;
+                $this->cando['modPass']   = true;
+                $this->cando['modName']   = true;
+                $this->cando['modMail']   = true;
+                $this->cando['modGroups'] = true;
+            }
+            $this->cando['getUsers']     = true;
+            $this->cando['getUserCount'] = true;
+        }
+
+        $this->_pregsplit_safe = version_compare(PCRE_VERSION,'6.7','>=');
+    }
+
+    /**
+     * Check user+password
+     *
+     * Checks if the given user exists and the given
+     * plaintext password is correct
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param string $user
+     * @param string $pass
+     * @return  bool
+     */
+    public function checkPass($user, $pass) {
+        $userinfo = $this->getUserData($user);
+        if($userinfo === false) return false;
+
+        return auth_verifyPassword($pass, $this->users[$user]['pass']);
+    }
+
+    /**
+     * 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
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @param string $user
+     * @param bool $requireGroups  (optional) ignored by this plugin, grps info always supplied
+     * @return array|false
+     */
+    public function getUserData($user, $requireGroups=true) {
+        if($this->users === null) $this->_loadUserData();
+        return isset($this->users[$user]) ? $this->users[$user] : false;
+    }
+
+    /**
+     * Creates a string suitable for saving as a line
+     * in the file database
+     * (delimiters escaped, etc.)
+     *
+     * @param string $user
+     * @param string $pass
+     * @param string $name
+     * @param string $mail
+     * @param array  $grps list of groups the user is in
+     * @return string
+     */
+    protected function _createUserLine($user, $pass, $name, $mail, $grps) {
+        $groups   = join(',', $grps);
+        $userline = array($user, $pass, $name, $mail, $groups);
+        $userline = str_replace('\\', '\\\\', $userline); // escape \ as \\
+        $userline = str_replace(':', '\\:', $userline); // escape : as \:
+        $userline = join(':', $userline)."\n";
+        return $userline;
+    }
+
+    /**
+     * Create a new User
+     *
+     * Returns false if the user already exists, null when an error
+     * occurred and true if everything went well.
+     *
+     * The new user will be added to the default group by this
+     * function if grps are not specified (default behaviour).
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param string $user
+     * @param string $pwd
+     * @param string $name
+     * @param string $mail
+     * @param array  $grps
+     * @return bool|null|string
+     */
+    public function createUser($user, $pwd, $name, $mail, $grps = null) {
+        global $conf;
+        global $config_cascade;
+
+        // user mustn't already exist
+        if($this->getUserData($user) !== false) {
+            msg($this->getLang('userexists'), -1);
+            return false;
+        }
+
+        $pass = auth_cryptPassword($pwd);
+
+        // set default group if no groups specified
+        if(!is_array($grps)) $grps = array($conf['defaultgroup']);
+
+        // prepare user line
+        $userline = $this->_createUserLine($user, $pass, $name, $mail, $grps);
+
+        if(!io_saveFile($config_cascade['plainauth.users']['default'], $userline, true)) {
+            msg($this->getLang('writefail'), -1);
+            return null;
+        }
+
+        $this->users[$user] = compact('pass', 'name', 'mail', 'grps');
+        return $pwd;
+    }
+
+    /**
+     * Modify user data
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     * @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
+     */
+    public function modifyUser($user, $changes) {
+        global $ACT;
+        global $config_cascade;
+
+        // sanity checks, user must already exist and there must be something to change
+        if(($userinfo = $this->getUserData($user)) === false) {
+            msg($this->getLang('usernotexists'), -1);
+            return false;
+        }
+
+        // don't modify protected users
+        if(!empty($userinfo['protected'])) {
+            msg(sprintf($this->getLang('protected'), hsc($user)), -1);
+            return false;
+        }
+
+        if(!is_array($changes) || !count($changes)) return true;
+
+        // update userinfo with new data, remembering to encrypt any password
+        $newuser = $user;
+        foreach($changes as $field => $value) {
+            if($field == 'user') {
+                $newuser = $value;
+                continue;
+            }
+            if($field == 'pass') $value = auth_cryptPassword($value);
+            $userinfo[$field] = $value;
+        }
+
+        $userline = $this->_createUserLine($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $userinfo['grps']);
+
+        if(!io_replaceInFile($config_cascade['plainauth.users']['default'], '/^'.$user.':/', $userline, true)) {
+            msg('There was an error modifying your user data. You may need to register again.', -1);
+            // FIXME, io functions should be fail-safe so existing data isn't lost
+            $ACT = 'register';
+            return false;
+        }
+
+        $this->users[$newuser] = $userinfo;
+        return true;
+    }
+
+    /**
+     * Remove one or more users from the list of registered users
+     *
+     * @author  Christopher Smith <chris@jalakai.co.uk>
+     * @param   array  $users   array of users to be deleted
+     * @return  int             the number of users deleted
+     */
+    public function deleteUsers($users) {
+        global $config_cascade;
+
+        if(!is_array($users) || empty($users)) return 0;
+
+        if($this->users === null) $this->_loadUserData();
+
+        $deleted = array();
+        foreach($users as $user) {
+            // don't delete protected users
+            if(!empty($this->users[$user]['protected'])) {
+                msg(sprintf($this->getLang('protected'), hsc($user)), -1);
+                continue;
+            }
+            if(isset($this->users[$user])) $deleted[] = preg_quote($user, '/');
+        }
+
+        if(empty($deleted)) return 0;
+
+        $pattern = '/^('.join('|', $deleted).'):/';
+        if (!io_deleteFromFile($config_cascade['plainauth.users']['default'], $pattern, true)) {
+            msg($this->getLang('writefail'), -1);
+            return 0;
+        }
+
+        // reload the user list and count the difference
+        $count = count($this->users);
+        $this->_loadUserData();
+        $count -= count($this->users);
+        return $count;
+    }
+
+    /**
+     * Return a count of the number of user which meet $filter criteria
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param array $filter
+     * @return int
+     */
+    public function getUserCount($filter = array()) {
+
+        if($this->users === null) $this->_loadUserData();
+
+        if(!count($filter)) return count($this->users);
+
+        $count = 0;
+        $this->_constructPattern($filter);
+
+        foreach($this->users as $user => $info) {
+            $count += $this->_filter($user, $info);
+        }
+
+        return $count;
+    }
+
+    /**
+     * Bulk retrieval of user data
+     *
+     * @author  Chris Smith <chris@jalakai.co.uk>
+     *
+     * @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
+     * @return  array userinfo (refer getUserData for internal userinfo details)
+     */
+    public function retrieveUsers($start = 0, $limit = 0, $filter = array()) {
+
+        if($this->users === null) $this->_loadUserData();
+
+        ksort($this->users);
+
+        $i     = 0;
+        $count = 0;
+        $out   = array();
+        $this->_constructPattern($filter);
+
+        foreach($this->users as $user => $info) {
+            if($this->_filter($user, $info)) {
+                if($i >= $start) {
+                    $out[$user] = $info;
+                    $count++;
+                    if(($limit > 0) && ($count >= $limit)) break;
+                }
+                $i++;
+            }
+        }
+
+        return $out;
+    }
+
+    /**
+     * Only valid pageid's (no namespaces) for usernames
+     *
+     * @param string $user
+     * @return string
+     */
+    public function cleanUser($user) {
+        global $conf;
+        return cleanID(str_replace(':', $conf['sepchar'], $user));
+    }
+
+    /**
+     * Only valid pageid's (no namespaces) for groupnames
+     *
+     * @param string $group
+     * @return string
+     */
+    public function cleanGroup($group) {
+        global $conf;
+        return cleanID(str_replace(':', $conf['sepchar'], $group));
+    }
+
+    /**
+     * Load all user data
+     *
+     * loads the user file into a datastructure
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     */
+    protected function _loadUserData() {
+        global $config_cascade;
+
+        $this->users = $this->_readUserFile($config_cascade['plainauth.users']['default']);
+
+        // support protected users
+        if(!empty($config_cascade['plainauth.users']['protected'])) {
+            $protected = $this->_readUserFile($config_cascade['plainauth.users']['protected']);
+            foreach(array_keys($protected) as $key) {
+                $protected[$key]['protected'] = true;
+            }
+            $this->users = array_merge($this->users, $protected);
+        }
+    }
+
+    /**
+     * Read user data from given file
+     *
+     * ignores non existing files
+     *
+     * @param string $file the file to load data from
+     * @return array
+     */
+    protected function _readUserFile($file) {
+        $users = array();
+        if(!file_exists($file)) return $users;
+
+        $lines = file($file);
+        foreach($lines as $line) {
+            $line = preg_replace('/#.*$/', '', $line); //ignore comments
+            $line = trim($line);
+            if(empty($line)) continue;
+
+            $row = $this->_splitUserData($line);
+            $row = str_replace('\\:', ':', $row);
+            $row = str_replace('\\\\', '\\', $row);
+
+            $groups = array_values(array_filter(explode(",", $row[4])));
+
+            $users[$row[0]]['pass'] = $row[1];
+            $users[$row[0]]['name'] = urldecode($row[2]);
+            $users[$row[0]]['mail'] = $row[3];
+            $users[$row[0]]['grps'] = $groups;
+        }
+        return $users;
+    }
+
+    protected function _splitUserData($line){
+        // due to a bug in PCRE 6.6, preg_split will fail with the regex we use here
+        // refer github issues 877 & 885
+        if ($this->_pregsplit_safe){
+            return preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5);       // allow for : escaped as \:
+        }
+
+        $row = array();
+        $piece = '';
+        $len = strlen($line);
+        for($i=0; $i<$len; $i++){
+            if ($line[$i]=='\\'){
+                $piece .= $line[$i];
+                $i++;
+                if ($i>=$len) break;
+            } else if ($line[$i]==':'){
+                $row[] = $piece;
+                $piece = '';
+                continue;
+            }
+            $piece .= $line[$i];
+        }
+        $row[] = $piece;
+
+        return $row;
+    }
+
+    /**
+     * return true if $user + $info match $filter criteria, false otherwise
+     *
+     * @author   Chris Smith <chris@jalakai.co.uk>
+     *
+     * @param string $user User login
+     * @param array  $info 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;
+    }
+
+    /**
+     * construct a filter pattern
+     *
+     * @param array $filter
+     */
+    protected function _constructPattern($filter) {
+        $this->_pattern = array();
+        foreach($filter as $item => $pattern) {
+            $this->_pattern[$item] = '/'.str_replace('/', '\/', $pattern).'/i'; // allow regex characters
+        }
+    }
+}
diff --git a/wiki/lib/plugins/authplain/lang/af/lang.php b/wiki/lib/plugins/authplain/lang/af/lang.php
new file mode 100644
index 0000000..29742cf
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/af/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Die gebruikersnaam wat jy gebruik het, is alreeds gebruik. Kies asseblief \'n ander gebruikersnaam.';
diff --git a/wiki/lib/plugins/authplain/lang/ar/lang.php b/wiki/lib/plugins/authplain/lang/ar/lang.php
new file mode 100644
index 0000000..16d59f3
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ar/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'عذرا، يوجد مشترك بنفس الاسم.';
diff --git a/wiki/lib/plugins/authplain/lang/az/lang.php b/wiki/lib/plugins/authplain/lang/az/lang.php
new file mode 100644
index 0000000..8d29d4c
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/az/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Təssüf ki bu ad ilə istifadəçi artıq mövcuddur.';
diff --git a/wiki/lib/plugins/authplain/lang/bg/lang.php b/wiki/lib/plugins/authplain/lang/bg/lang.php
new file mode 100644
index 0000000..62e62dc
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/bg/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['userexists']            = 'Вече съществува потребител с избраното име.';
+$lang['usernotexists']         = 'За съжаление потребителят не съществува.';
diff --git a/wiki/lib/plugins/authplain/lang/bn/lang.php b/wiki/lib/plugins/authplain/lang/bn/lang.php
new file mode 100644
index 0000000..43fe4ca
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/bn/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'দুঃখিত, এই লগইন সঙ্গে একটি ব্যবহারকারী ইতিমধ্যেই বিদ্যমান.';
diff --git a/wiki/lib/plugins/authplain/lang/ca-valencia/lang.php b/wiki/lib/plugins/authplain/lang/ca-valencia/lang.php
new file mode 100644
index 0000000..3e973be
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ca-valencia/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Disculpe, pero ya existix un usuari en este nom.';
diff --git a/wiki/lib/plugins/authplain/lang/ca/lang.php b/wiki/lib/plugins/authplain/lang/ca/lang.php
new file mode 100644
index 0000000..f792817
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ca/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Ja existeix un altre usuari amb aquest nom.';
diff --git a/wiki/lib/plugins/authplain/lang/cs/lang.php b/wiki/lib/plugins/authplain/lang/cs/lang.php
new file mode 100644
index 0000000..4eaacdc
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/cs/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Daniel Slováček <danslo@danslo.cz>
+ */
+$lang['userexists']            = 'Uživatel se stejným jménem už je zaregistrován.';
+$lang['usernotexists']         = 'Omlouváme se, uživatel tohoto jména neexistuje.';
+$lang['writefail']             = 'Nelze změnit údaje uživatele. Informujte prosím správce wiki';
+$lang['protected']             = 'Data pro uživatele %s jsou chráněna a nemůžou být upravena nebo smazána.';
diff --git a/wiki/lib/plugins/authplain/lang/cy/lang.php b/wiki/lib/plugins/authplain/lang/cy/lang.php
new file mode 100644
index 0000000..7f789e5
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/cy/lang.php
@@ -0,0 +1,8 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Sori, mae defnyddiwr gyda\'r enw hwnnw eisoes yn bodoli.';
+$lang['usernotexists']  = 'Sori, \'dyw\'r defnyddiwr hwnnw ddim yn bodoli.';
+$lang['writefail']      = 'Methu â newid data defnyddiwr. Rhowch wybod i Weinydd y Wici';
diff --git a/wiki/lib/plugins/authplain/lang/da/lang.php b/wiki/lib/plugins/authplain/lang/da/lang.php
new file mode 100644
index 0000000..ff683ed
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/da/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kenneth Schack Banner <kescba@gmail.com>
+ */
+$lang['userexists']            = 'Dette brugernavn er allerede i brug.';
+$lang['writefail']             = 'Ude af stand til at redigere bruger data. Kontakt venligst Wiki-Administratoren';
diff --git a/wiki/lib/plugins/authplain/lang/de-informal/lang.php b/wiki/lib/plugins/authplain/lang/de-informal/lang.php
new file mode 100644
index 0000000..c087073
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/de-informal/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author rnck <dokuwiki@rnck.de>
+ */
+$lang['userexists']            = 'Der Benutzername existiert leider schon.';
+$lang['usernotexists']         = 'Entschuldigung, dieser Nutzer existiert nicht.';
+$lang['writefail']             = 'Konnte Nutzer-Daten nicht modifizieren. Bitte informiere einen Admin.';
+$lang['protected']             = 'Die Daten für den Nutzer %s sind geschützt und können nicht verändert oder gelöscht werden.';
diff --git a/wiki/lib/plugins/authplain/lang/de/lang.php b/wiki/lib/plugins/authplain/lang/de/lang.php
new file mode 100644
index 0000000..e524372
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/de/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Carsten Perthel <carsten@cpesoft.com>
+ */
+$lang['userexists']            = 'Der Benutzername existiert leider schon.';
+$lang['usernotexists']         = 'Dieser Benutzer existiert nicht.';
+$lang['writefail']             = 'Kann Benutzerdaten nicht ändern. Bitte informieren Sie den Wiki-Administratoren';
+$lang['protected']             = 'Die Daten des Benutzers %s sind geschützt und können nicht verändert oder gelöscht werden.';
diff --git a/wiki/lib/plugins/authplain/lang/el/lang.php b/wiki/lib/plugins/authplain/lang/el/lang.php
new file mode 100644
index 0000000..1d83eb1
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/el/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Αυτός ο λογαριασμός υπάρχει ήδη.';
diff --git a/wiki/lib/plugins/authplain/lang/en/lang.php b/wiki/lib/plugins/authplain/lang/en/lang.php
new file mode 100644
index 0000000..7108f38
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/en/lang.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Sorry, a user with this login already exists.';
+$lang['usernotexists']  = 'Sorry, that user doesn\'t exist.';
+$lang['writefail']      = 'Unable to modify user data. Please inform the Wiki-Admin';
+$lang['protected']      = 'Data for user %s is protected and can not be modified or deleted.';
diff --git a/wiki/lib/plugins/authplain/lang/eo/lang.php b/wiki/lib/plugins/authplain/lang/eo/lang.php
new file mode 100644
index 0000000..3a3f45c
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/eo/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>
+ */
+$lang['userexists']            = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.';
+$lang['usernotexists']         = 'Pardonu, tiu uzanto ne ekzistas.';
diff --git a/wiki/lib/plugins/authplain/lang/es/lang.php b/wiki/lib/plugins/authplain/lang/es/lang.php
new file mode 100644
index 0000000..b81bbb8
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/es/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ * @author Enny Rodriguez <aquilez.4@gmail.com>
+ */
+$lang['userexists']            = 'Lo siento, ya existe un usuario con este nombre.';
+$lang['usernotexists']         = 'Lo sentimos, no existe ese usuario.';
+$lang['writefail']             = 'No es posible modificar los datos del usuario. Por favor, informa al Administrador del Wiki';
+$lang['protected']             = 'Los datos del usuario %s están protegidos y no pueden ser modificados o eliminados.';
diff --git a/wiki/lib/plugins/authplain/lang/et/lang.php b/wiki/lib/plugins/authplain/lang/et/lang.php
new file mode 100644
index 0000000..7f9f777
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/et/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Tegelikult on sellise nimega kasutaja juba olemas.';
diff --git a/wiki/lib/plugins/authplain/lang/eu/lang.php b/wiki/lib/plugins/authplain/lang/eu/lang.php
new file mode 100644
index 0000000..2c7e853
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/eu/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Barkatu, izen bereko erabiltzailea existitzen da.';
diff --git a/wiki/lib/plugins/authplain/lang/fa/lang.php b/wiki/lib/plugins/authplain/lang/fa/lang.php
new file mode 100644
index 0000000..4c92aea
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/fa/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ * @author sam01 <m.sajad079@gmail.com>
+ */
+$lang['userexists']            = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
+$lang['usernotexists']         = 'متاسفانه این کاربر وجود ندارد.';
+$lang['writefail']             = 'امکان ویرایش اطلاعات کاربر وجود ندارد. لطفا ادمین ویکی را مطلع نمایید.';
+$lang['protected']             = 'داده‌ها برای کاربر %s محافظت شده و قابل تغییر نیست یا حذف شده اند.';
diff --git a/wiki/lib/plugins/authplain/lang/fi/lang.php b/wiki/lib/plugins/authplain/lang/fi/lang.php
new file mode 100644
index 0000000..abdaf67
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/fi/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['userexists']            = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
diff --git a/wiki/lib/plugins/authplain/lang/fo/lang.php b/wiki/lib/plugins/authplain/lang/fo/lang.php
new file mode 100644
index 0000000..a965466
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/fo/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Hetta brúkaranavn er upptiki.';
diff --git a/wiki/lib/plugins/authplain/lang/fr/lang.php b/wiki/lib/plugins/authplain/lang/fr/lang.php
new file mode 100644
index 0000000..b675455
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/fr/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ */
+$lang['userexists']            = 'Désolé, ce nom d\'utilisateur est déjà pris.';
+$lang['usernotexists']         = 'Désolé, cet utilisateur n\'existe pas.';
+$lang['writefail']             = 'Impossible de modifier les données utilisateur. Merci d\'en informer l\'administrateur du wiki.';
+$lang['protected']             = 'Les données du compte d\'utilisateur %s sont protégées et ne peuvent être ni modifiées ni supprimées.';
diff --git a/wiki/lib/plugins/authplain/lang/gl/lang.php b/wiki/lib/plugins/authplain/lang/gl/lang.php
new file mode 100644
index 0000000..35138d3
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/gl/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Sentímolo, mais xa existe un usuario con ese nome.';
diff --git a/wiki/lib/plugins/authplain/lang/he/lang.php b/wiki/lib/plugins/authplain/lang/he/lang.php
new file mode 100644
index 0000000..a2e1324
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/he/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
diff --git a/wiki/lib/plugins/authplain/lang/hr/lang.php b/wiki/lib/plugins/authplain/lang/hr/lang.php
new file mode 100644
index 0000000..f15a25e
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/hr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['userexists']            = 'Korisnik s tim korisničkim imenom već postoji.';
+$lang['usernotexists']         = 'Nažalost korisnik ne postoji';
+$lang['writefail']             = 'Ne mogu izmijeniti korisničke podatke. Molim obavijestite svog Wiki administratora';
+$lang['protected']             = 'Podaci za korisnika %s su zaštićeni i ne mogu biti izmijenjeni ili obrisani.';
diff --git a/wiki/lib/plugins/authplain/lang/hu/lang.php b/wiki/lib/plugins/authplain/lang/hu/lang.php
new file mode 100644
index 0000000..5f684d7
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/hu/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['userexists']            = 'Sajnáljuk, ilyen azonosítójú felhasználónk már van.';
+$lang['usernotexists']         = 'Sajnos ez a felhasználó nem létezik.';
+$lang['writefail']             = 'A felhasználói adatok módosítása sikertelen. Kérlek, fordulj a wiki rendszergazdájához!';
diff --git a/wiki/lib/plugins/authplain/lang/ia/lang.php b/wiki/lib/plugins/authplain/lang/ia/lang.php
new file mode 100644
index 0000000..7596f3f
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ia/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Regrettabilemente, un usator con iste nomine ja existe.';
diff --git a/wiki/lib/plugins/authplain/lang/id-ni/lang.php b/wiki/lib/plugins/authplain/lang/id-ni/lang.php
new file mode 100644
index 0000000..729c9f9
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/id-ni/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Bologö dödöu, no so zangoguna\'ö töi da\'a.';
diff --git a/wiki/lib/plugins/authplain/lang/id/lang.php b/wiki/lib/plugins/authplain/lang/id/lang.php
new file mode 100644
index 0000000..5e6a998
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/id/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Maaf, user dengan user login ini telah ada.';
diff --git a/wiki/lib/plugins/authplain/lang/is/lang.php b/wiki/lib/plugins/authplain/lang/is/lang.php
new file mode 100644
index 0000000..21392ee
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/is/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Afsakið, notandi með þessu nafni er þegar skráður inn.';
diff --git a/wiki/lib/plugins/authplain/lang/it/lang.php b/wiki/lib/plugins/authplain/lang/it/lang.php
new file mode 100644
index 0000000..1627a15
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/it/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Torpedo <dgtorpedo@gmail.com>
+ * @author Riccardo <riccardofila@gmail.com>
+ */
+$lang['userexists']            = 'Il nome utente inserito esiste già.';
+$lang['usernotexists']         = 'Spiacente, quell\'utente non esiste.';
+$lang['writefail']             = 'Impossibile modificare i dati utente. Per favore informa l\'Amministratore del Wiki';
+$lang['protected']             = 'I dati relativi all\'utente %s sono protetti e non possono essere modificati o cancellati.';
diff --git a/wiki/lib/plugins/authplain/lang/ja/lang.php b/wiki/lib/plugins/authplain/lang/ja/lang.php
new file mode 100644
index 0000000..f290cba
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ja/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['userexists']            = 'このユーザー名は既に存在しています。';
+$lang['usernotexists']         = 'このユーザーは未登録です。';
+$lang['writefail']             = 'ユーザーデータを変更できません。管理者に問い合わせてください。';
+$lang['protected']             = 'ユーザ %s のデータは保護されており、変更・削除はできません。';
diff --git a/wiki/lib/plugins/authplain/lang/ka/lang.php b/wiki/lib/plugins/authplain/lang/ka/lang.php
new file mode 100644
index 0000000..1a1a297
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ka/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'მსგავსი ლოგინი უკვე არსებობს';
diff --git a/wiki/lib/plugins/authplain/lang/kk/lang.php b/wiki/lib/plugins/authplain/lang/kk/lang.php
new file mode 100644
index 0000000..95fe532
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/kk/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Кешіріңіз, бұл түпнұскамен де пайдаланушы бар.';
diff --git a/wiki/lib/plugins/authplain/lang/km/lang.php b/wiki/lib/plugins/authplain/lang/km/lang.php
new file mode 100644
index 0000000..322e454
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/km/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'សុំអាទោស​ នាមប្រើនេះមានរួចហើ។';
diff --git a/wiki/lib/plugins/authplain/lang/ko/lang.php b/wiki/lib/plugins/authplain/lang/ko/lang.php
new file mode 100644
index 0000000..402a963
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ko/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['userexists']            = '죄송하지만 같은 이름을 사용하는 사용자가 있습니다.';
+$lang['usernotexists']         = '죄송하지만 해당 사용자가 존재하지 않습니다.';
+$lang['writefail']             = '사용자 데이터를 수정할 수 없습니다. 위키 관리자에게 문의하시기 바랍니다';
+$lang['protected']             = '%s 사용자의 데이터는 잠겨 있어 수정하거나 삭제할 수 없습니다.';
diff --git a/wiki/lib/plugins/authplain/lang/ku/lang.php b/wiki/lib/plugins/authplain/lang/ku/lang.php
new file mode 100644
index 0000000..64cb834
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ku/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Sorry, a user with this login already exists.';
diff --git a/wiki/lib/plugins/authplain/lang/la/lang.php b/wiki/lib/plugins/authplain/lang/la/lang.php
new file mode 100644
index 0000000..5f2eecf
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/la/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Nomen Sodalis ab aliquo iam elegitur.';
diff --git a/wiki/lib/plugins/authplain/lang/lb/lang.php b/wiki/lib/plugins/authplain/lang/lb/lang.php
new file mode 100644
index 0000000..4c760df
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/lb/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Et get schonn e Benotzer mat deem Numm.';
diff --git a/wiki/lib/plugins/authplain/lang/lt/lang.php b/wiki/lib/plugins/authplain/lang/lt/lang.php
new file mode 100644
index 0000000..5ad435a
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/lt/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
diff --git a/wiki/lib/plugins/authplain/lang/lv/lang.php b/wiki/lib/plugins/authplain/lang/lv/lang.php
new file mode 100644
index 0000000..afc89e4
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/lv/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Atvaino, tāds lietotājs jau ir.';
diff --git a/wiki/lib/plugins/authplain/lang/mg/lang.php b/wiki/lib/plugins/authplain/lang/mg/lang.php
new file mode 100644
index 0000000..8472161
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/mg/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Indrisy fa efa nisy namandrika io anarana io.';
diff --git a/wiki/lib/plugins/authplain/lang/mk/lang.php b/wiki/lib/plugins/authplain/lang/mk/lang.php
new file mode 100644
index 0000000..8ebb9fa
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/mk/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Жалам, корисник со ова корисничко име веќе постои.';
diff --git a/wiki/lib/plugins/authplain/lang/mr/lang.php b/wiki/lib/plugins/authplain/lang/mr/lang.php
new file mode 100644
index 0000000..15dcf18
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/mr/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'या नावाने सदस्याची नोंदणी झालेली आहे, कृपया दुसरे सदस्य नाव निवडा.';
diff --git a/wiki/lib/plugins/authplain/lang/ms/lang.php b/wiki/lib/plugins/authplain/lang/ms/lang.php
new file mode 100644
index 0000000..14c3b11
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ms/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Maaf, nama pengguna yang dimasukkan telah diguna. Sila pilih nama yang lain.';
diff --git a/wiki/lib/plugins/authplain/lang/ne/lang.php b/wiki/lib/plugins/authplain/lang/ne/lang.php
new file mode 100644
index 0000000..9427578
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ne/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'यो नामको प्रयोगकर्ता पहिले देखि रहेको छ।';
diff --git a/wiki/lib/plugins/authplain/lang/nl/lang.php b/wiki/lib/plugins/authplain/lang/nl/lang.php
new file mode 100644
index 0000000..e1d81d2
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/nl/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ * @author Sjoerd <sjoerd@sjomar.eu>
+ */
+$lang['userexists']            = 'Er bestaat al een gebruiker met deze loginnaam.';
+$lang['usernotexists']         = 'Sorry, deze gebruiker bestaat niet.';
+$lang['writefail']             = 'Onmogelijk om de gebruikers data te wijzigen. Gelieve de Wiki-Admin te informeren.';
+$lang['protected']             = 'Gegevens van gebruiker %s zijn beschermd en kunnen niet worden veranderd of verwijderd';
diff --git a/wiki/lib/plugins/authplain/lang/no/lang.php b/wiki/lib/plugins/authplain/lang/no/lang.php
new file mode 100644
index 0000000..a92c262
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/no/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ */
+$lang['userexists']            = 'Det finnes allerede en konto med dette brukernavnet.';
+$lang['usernotexists']         = 'Beklager, denne bruker fins ikke.';
+$lang['writefail']             = 'Klarte ikke endre brukerdata. Dette bør meldes til wikiens administrator';
+$lang['protected']             = 'Data for bruker %s er beskyttet og kan ikke endres eller slettes.';
diff --git a/wiki/lib/plugins/authplain/lang/pl/lang.php b/wiki/lib/plugins/authplain/lang/pl/lang.php
new file mode 100644
index 0000000..95b46fe
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/pl/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Max <maxrb146@gmail.com>
+ */
+$lang['userexists']            = 'Użytkownik o tej nazwie już istnieje.';
+$lang['usernotexists']         = 'Przepraszamy, użytkownik nie istnieje';
+$lang['writefail']             = 'Nie można modyfikować danych użytkownika. Proszę skontaktować się z administratorem ';
+$lang['protected']             = 'Dane użytkownika %s są chronione, nie mogą być modyfikowane oraz usuwane';
diff --git a/wiki/lib/plugins/authplain/lang/pt-br/lang.php b/wiki/lib/plugins/authplain/lang/pt-br/lang.php
new file mode 100644
index 0000000..ee42b83
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/pt-br/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Felipe Castro <fefcas@gmail.com>
+ */
+$lang['userexists']            = 'Desculpe, mas já existe um usuário com esse nome.';
+$lang['usernotexists']         = 'Desculpe, mas esse usuário não existe.';
+$lang['writefail']             = 'Não foi possível modificar os dados do usuário. Por favor, informe ao administrador do Wiki.';
+$lang['protected']             = 'Dados para o usuário %s estão protegidos e não podem ser modificados ou apagados.';
diff --git a/wiki/lib/plugins/authplain/lang/pt/lang.php b/wiki/lib/plugins/authplain/lang/pt/lang.php
new file mode 100644
index 0000000..3334ea6
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/pt/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['userexists']            = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
+$lang['usernotexists']         = 'Desculpe, esse login não existe.';
+$lang['writefail']             = 'Incapaz de modificar dados do usuário. Favor informar ao Wiki-Admin.';
diff --git a/wiki/lib/plugins/authplain/lang/ro/lang.php b/wiki/lib/plugins/authplain/lang/ro/lang.php
new file mode 100644
index 0000000..d549e1f
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ro/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Ne pare rău, un utilizator cu acest nume este deja autentificat.';
diff --git a/wiki/lib/plugins/authplain/lang/ru/lang.php b/wiki/lib/plugins/authplain/lang/ru/lang.php
new file mode 100644
index 0000000..0ee34f9
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/ru/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author RainbowSpike <1@2.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ * @author Radimir <radimir.shevchenko@gmail.com>
+ */
+$lang['userexists']            = 'Извините, пользователь с таким логином уже существует.';
+$lang['usernotexists']         = 'Этот пользователь не зарегистрирован.';
+$lang['writefail']             = 'Невозможно обновить данные пользователя. Свяжитесь с администратором вики';
+$lang['protected']             = 'Данные пользователя %s защищены и не могут быть изменены или удалены.';
diff --git a/wiki/lib/plugins/authplain/lang/sk/lang.php b/wiki/lib/plugins/authplain/lang/sk/lang.php
new file mode 100644
index 0000000..d1cfbfd
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/sk/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['userexists']            = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
+$lang['usernotexists']         = 'Ľutujem, daný používateľ neexistuje.';
+$lang['writefail']             = 'Nie je možné zmeniť údaje používateľa, informujte prosím administrátora Wiki.';
+$lang['protected']             = 'Údaje používateľa %s sú chránené a nemôžu by zmenené alebo vymazané.';
diff --git a/wiki/lib/plugins/authplain/lang/sl/lang.php b/wiki/lib/plugins/authplain/lang/sl/lang.php
new file mode 100644
index 0000000..46eb4bf
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/sl/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Uporabnik s tem imenom že obstaja.';
diff --git a/wiki/lib/plugins/authplain/lang/sq/lang.php b/wiki/lib/plugins/authplain/lang/sq/lang.php
new file mode 100644
index 0000000..e3a9350
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/sq/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Na vjen keq, ekziston një përdorues tjetër me të njëjtin emër.';
diff --git a/wiki/lib/plugins/authplain/lang/sr/lang.php b/wiki/lib/plugins/authplain/lang/sr/lang.php
new file mode 100644
index 0000000..19bd8b7
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/sr/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']            = 'Извините, корисник са истим именом већ постоји.';
diff --git a/wiki/lib/plugins/authplain/lang/sv/lang.php b/wiki/lib/plugins/authplain/lang/sv/lang.php
new file mode 100644
index 0000000..83c24d7
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/sv/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ */
+$lang['userexists']            = 'Det finns redan en användare med det användarnamnet.';
+$lang['usernotexists']         = 'Tyvärr, den användaren existerar inte.';
+$lang['writefail']             = 'Kunde inte ändra användardata. Var god informera Wiki-administratören';
diff --git a/wiki/lib/plugins/authplain/lang/th/lang.php b/wiki/lib/plugins/authplain/lang/th/lang.php
new file mode 100644
index 0000000..463a279
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/th/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['userexists']            = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
diff --git a/wiki/lib/plugins/authplain/lang/tr/lang.php b/wiki/lib/plugins/authplain/lang/tr/lang.php
new file mode 100644
index 0000000..6111085
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/tr/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['userexists']            = 'Üzgünüz, bu isime sahip bir kullanıcı zaten mevcut.';
diff --git a/wiki/lib/plugins/authplain/lang/uk/lang.php b/wiki/lib/plugins/authplain/lang/uk/lang.php
new file mode 100644
index 0000000..86ab3d1
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/uk/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Nina Zolotova <nina-z@i.ua>
+ */
+$lang['userexists']            = 'Користувач з таким іменем вже існує.';
+$lang['usernotexists']         = 'Вибачте, такого користувача не існує.';
diff --git a/wiki/lib/plugins/authplain/lang/vi/lang.php b/wiki/lib/plugins/authplain/lang/vi/lang.php
new file mode 100644
index 0000000..7ecb0a2
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/vi/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ */
+$lang['userexists']     = 'Bạn khác đã dùng username này rồi.';
diff --git a/wiki/lib/plugins/authplain/lang/zh-tw/lang.php b/wiki/lib/plugins/authplain/lang/zh-tw/lang.php
new file mode 100644
index 0000000..39578f5
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/zh-tw/lang.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['userexists']            = '很抱歉,有人已使用了這個帳號。';
diff --git a/wiki/lib/plugins/authplain/lang/zh/lang.php b/wiki/lib/plugins/authplain/lang/zh/lang.php
new file mode 100644
index 0000000..1e0dd10
--- /dev/null
+++ b/wiki/lib/plugins/authplain/lang/zh/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ * @author tai <tai_tang@126.com>
+ */
+$lang['userexists']            = '对不起,该用户名已经存在。';
+$lang['usernotexists']         = '抱歉,该用户不存在';
+$lang['writefail']             = '无法修改用户数据。请联系维基管理员';
+$lang['protected']             = '用户 %s 的数据被保护和无法被编辑或删除。';
diff --git a/wiki/lib/plugins/authplain/plugin.info.txt b/wiki/lib/plugins/authplain/plugin.info.txt
new file mode 100644
index 0000000..c09dbcb
--- /dev/null
+++ b/wiki/lib/plugins/authplain/plugin.info.txt
@@ -0,0 +1,7 @@
+base   authplain
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-18
+name   Plain Auth Plugin
+desc   Provides user authentication against DokuWiki's local password storage
+url    http://www.dokuwiki.org/plugin:authplain
diff --git a/wiki/lib/plugins/cli.php b/wiki/lib/plugins/cli.php
new file mode 100644
index 0000000..721f547
--- /dev/null
+++ b/wiki/lib/plugins/cli.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * Base class for CLI plugins
+ *
+ * Provides DokuWiki plugin functionality on top of phpcli
+ */
+abstract class DokuWiki_CLI_Plugin extends \splitbrain\phpcli\CLI implements DokuWiki_PluginInterface {
+    use DokuWiki_PluginTrait;
+
+}
diff --git a/wiki/lib/plugins/config/admin.php b/wiki/lib/plugins/config/admin.php
new file mode 100644
index 0000000..76ecae2
--- /dev/null
+++ b/wiki/lib/plugins/config/admin.php
@@ -0,0 +1,404 @@
+<?php
+/**
+ * Configuration Manager admin plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Christopher Smith <chris@jalakai.co.uk>
+ * @author     Ben Coburn <btcoburn@silicodon.net>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+define('CM_KEYMARKER','____');            // used for settings with multiple dimensions of array indices
+
+define('PLUGIN_SELF',dirname(__FILE__).'/');
+define('PLUGIN_METADATA',PLUGIN_SELF.'settings/config.metadata.php');
+if(!defined('DOKU_PLUGIN_IMAGES')) define('DOKU_PLUGIN_IMAGES',DOKU_BASE.'lib/plugins/config/images/');
+
+require_once(PLUGIN_SELF.'settings/config.class.php');  // main configuration class and generic settings classes
+require_once(PLUGIN_SELF.'settings/extra.class.php');   // settings classes specific to these settings
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class admin_plugin_config extends DokuWiki_Admin_Plugin {
+
+    protected $_file = PLUGIN_METADATA;
+    protected $_config = null;
+    protected $_input = null;
+    protected $_changed = false;          // set to true if configuration has altered
+    protected $_error = false;
+    protected $_session_started = false;
+    protected $_localised_prompts = false;
+
+    /**
+     * @return int
+     */
+    public function getMenuSort() { return 100; }
+
+    /**
+     * handle user request
+     */
+    public function handle() {
+        global $ID, $INPUT;
+
+        if(!$this->_restore_session() || $INPUT->int('save') != 1 || !checkSecurityToken()) {
+            $this->_close_session();
+            return;
+        }
+
+        if(is_null($this->_config)) {
+            $this->_config = new configuration($this->_file);
+        }
+
+        // don't go any further if the configuration is locked
+        if($this->_config->locked) {
+            $this->_close_session();
+            return;
+        }
+
+        $this->_input = $INPUT->arr('config');
+
+        foreach ($this->_config->setting as $key => $value){
+            $input = isset($this->_input[$key]) ? $this->_input[$key] : null;
+            if ($this->_config->setting[$key]->update($input)) {
+                $this->_changed = true;
+            }
+            if ($this->_config->setting[$key]->error()) $this->_error = true;
+        }
+
+        if ($this->_changed  && !$this->_error) {
+            $this->_config->save_settings($this->getPluginName());
+
+            // save state & force a page reload to get the new settings to take effect
+            $_SESSION['PLUGIN_CONFIG'] = array('state' => 'updated', 'time' => time());
+            $this->_close_session();
+            send_redirect(wl($ID,array('do'=>'admin','page'=>'config'),true,'&'));
+            exit();
+        } elseif(!$this->_error) {
+            $this->_config->touch_settings(); // just touch to refresh cache
+        }
+
+        $this->_close_session();
+    }
+
+    /**
+     * output appropriate html
+     */
+    public function html() {
+        $allow_debug = $GLOBALS['conf']['allowdebug']; // avoid global $conf; here.
+        global $lang;
+        global $ID;
+
+        if (is_null($this->_config)) { $this->_config = new configuration($this->_file); }
+        $this->setupLocale(true);
+
+        print $this->locale_xhtml('intro');
+
+        ptln('<div id="config__manager">');
+
+        if ($this->_config->locked)
+            ptln('<div class="info">'.$this->getLang('locked').'</div>');
+        elseif ($this->_error)
+            ptln('<div class="error">'.$this->getLang('error').'</div>');
+        elseif ($this->_changed)
+            ptln('<div class="success">'.$this->getLang('updated').'</div>');
+
+        // POST to script() instead of wl($ID) so config manager still works if
+        // rewrite config is broken. Add $ID as hidden field to remember
+        // current ID in most cases.
+        ptln('<form action="'.script().'" method="post">');
+        ptln('<div class="no"><input type="hidden" name="id" value="'.$ID.'" /></div>');
+        formSecurityToken();
+        $this->_print_h1('dokuwiki_settings', $this->getLang('_header_dokuwiki'));
+
+        /** @var setting[] $undefined_settings */
+        $undefined_settings = array();
+        $in_fieldset = false;
+        $first_plugin_fieldset = true;
+        $first_template_fieldset = true;
+        foreach($this->_config->setting as $setting) {
+            if (is_a($setting, 'setting_hidden')) {
+                // skip hidden (and undefined) settings
+                if ($allow_debug && is_a($setting, 'setting_undefined')) {
+                    $undefined_settings[] = $setting;
+                } else {
+                    continue;
+                }
+            } else if (is_a($setting, 'setting_fieldset')) {
+                // config setting group
+                if ($in_fieldset) {
+                    ptln('  </table>');
+                    ptln('  </div>');
+                    ptln('  </fieldset>');
+                } else {
+                    $in_fieldset = true;
+                }
+                if ($first_plugin_fieldset && substr($setting->_key, 0, 10)=='plugin'.CM_KEYMARKER) {
+                    $this->_print_h1('plugin_settings', $this->getLang('_header_plugin'));
+                    $first_plugin_fieldset = false;
+                } else if ($first_template_fieldset && substr($setting->_key, 0, 7)=='tpl'.CM_KEYMARKER) {
+                    $this->_print_h1('template_settings', $this->getLang('_header_template'));
+                    $first_template_fieldset = false;
+                }
+                ptln('  <fieldset id="'.$setting->_key.'">');
+                ptln('  <legend>'.$setting->prompt($this).'</legend>');
+                ptln('  <div class="table">');
+                ptln('  <table class="inline">');
+            } else {
+                // config settings
+                list($label,$input) = $setting->html($this, $this->_error);
+
+                $class = $setting->is_default() ? ' class="default"' : ($setting->is_protected() ? ' class="protected"' : '');
+                $error = $setting->error() ? ' class="value error"' : ' class="value"';
+                $icon = $setting->caution() ? '<img src="'.DOKU_PLUGIN_IMAGES.$setting->caution().'.png" alt="'.$setting->caution().'" title="'.$this->getLang($setting->caution()).'" />' : '';
+
+                ptln('    <tr'.$class.'>');
+                ptln('      <td class="label">');
+                ptln('        <span class="outkey">'.$setting->_out_key(true, true).'</span>');
+                ptln('        '.$icon.$label);
+                ptln('      </td>');
+                ptln('      <td'.$error.'>'.$input.'</td>');
+                ptln('    </tr>');
+            }
+        }
+
+        ptln('  </table>');
+        ptln('  </div>');
+        if ($in_fieldset) {
+            ptln('  </fieldset>');
+        }
+
+        // show undefined settings list
+        if ($allow_debug && !empty($undefined_settings)) {
+            /**
+             * Callback for sorting settings
+             *
+             * @param setting $a
+             * @param setting $b
+             * @return int if $a is lower/equal/higher than $b
+             */
+            function _setting_natural_comparison($a, $b) {
+                return strnatcmp($a->_key, $b->_key);
+            }
+
+            usort($undefined_settings, '_setting_natural_comparison');
+            $this->_print_h1('undefined_settings', $this->getLang('_header_undefined'));
+            ptln('<fieldset>');
+            ptln('<div class="table">');
+            ptln('<table class="inline">');
+            $undefined_setting_match = array();
+            foreach($undefined_settings as $setting) {
+                if (preg_match('/^(?:plugin|tpl)'.CM_KEYMARKER.'.*?'.CM_KEYMARKER.'(.*)$/', $setting->_key, $undefined_setting_match)) {
+                    $undefined_setting_key = $undefined_setting_match[1];
+                } else {
+                    $undefined_setting_key = $setting->_key;
+                }
+                ptln('  <tr>');
+                ptln('    <td class="label"><span title="$meta[\''.$undefined_setting_key.'\']">$'.$this->_config->_name.'[\''.$setting->_out_key().'\']</span></td>');
+                ptln('    <td>'.$this->getLang('_msg_'.get_class($setting)).'</td>');
+                ptln('  </tr>');
+            }
+            ptln('</table>');
+            ptln('</div>');
+            ptln('</fieldset>');
+        }
+
+        // finish up form
+        ptln('<p>');
+        ptln('  <input type="hidden" name="do"     value="admin" />');
+        ptln('  <input type="hidden" name="page"   value="config" />');
+
+        if (!$this->_config->locked) {
+            ptln('  <input type="hidden" name="save"   value="1" />');
+            ptln('  <button type="submit" name="submit" accesskey="s">'.$lang['btn_save'].'</button>');
+            ptln('  <button type="reset">'.$lang['btn_reset'].'</button>');
+        }
+
+        ptln('</p>');
+
+        ptln('</form>');
+        ptln('</div>');
+    }
+
+    /**
+     * @return boolean   true - proceed with handle, false - don't proceed
+     */
+    protected function _restore_session() {
+
+        // dokuwiki closes the session before act_dispatch. $_SESSION variables are all set,
+        // however they can't be changed without starting the session again
+        if (!headers_sent()) {
+            session_start();
+            $this->_session_started = true;
+        }
+
+        if (!isset($_SESSION['PLUGIN_CONFIG'])) return true;
+
+        $session = $_SESSION['PLUGIN_CONFIG'];
+        unset($_SESSION['PLUGIN_CONFIG']);
+
+        // still valid?
+        if (time() - $session['time'] > 120) return true;
+
+        switch ($session['state']) {
+            case 'updated' :
+                $this->_changed = true;
+                return false;
+        }
+
+        return true;
+    }
+
+    protected function _close_session() {
+      if ($this->_session_started) session_write_close();
+    }
+
+    /**
+     * @param bool $prompts
+     */
+    public function setupLocale($prompts=false) {
+
+        parent::setupLocale();
+        if (!$prompts || $this->_localised_prompts) return;
+
+        $this->_setup_localised_plugin_prompts();
+        $this->_localised_prompts = true;
+
+    }
+
+    /**
+     * @return bool
+     */
+    protected function _setup_localised_plugin_prompts() {
+        global $conf;
+
+        $langfile   = '/lang/'.$conf['lang'].'/settings.php';
+        $enlangfile = '/lang/en/settings.php';
+
+        if ($dh = opendir(DOKU_PLUGIN)) {
+            while (false !== ($plugin = readdir($dh))) {
+                if ($plugin == '.' || $plugin == '..' || $plugin == 'tmp' || $plugin == 'config') continue;
+                if (is_file(DOKU_PLUGIN.$plugin)) continue;
+
+                if (file_exists(DOKU_PLUGIN.$plugin.$enlangfile)){
+                    $lang = array();
+                    @include(DOKU_PLUGIN.$plugin.$enlangfile);
+                    if ($conf['lang'] != 'en') @include(DOKU_PLUGIN.$plugin.$langfile);
+                    foreach ($lang as $key => $value){
+                        $this->lang['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.$key] = $value;
+                    }
+                }
+
+                // fill in the plugin name if missing (should exist for plugins with settings)
+                if (!isset($this->lang['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.'plugin_settings_name'])) {
+                    $this->lang['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.'plugin_settings_name'] =
+                      ucwords(str_replace('_', ' ', $plugin));
+                }
+            }
+            closedir($dh);
+      }
+
+        // the same for the active template
+        $tpl = $conf['template'];
+
+        if (file_exists(tpl_incdir().$enlangfile)){
+            $lang = array();
+            @include(tpl_incdir().$enlangfile);
+            if ($conf['lang'] != 'en') @include(tpl_incdir().$langfile);
+            foreach ($lang as $key => $value){
+                $this->lang['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.$key] = $value;
+            }
+        }
+
+        // fill in the template name if missing (should exist for templates with settings)
+        if (!isset($this->lang['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.'template_settings_name'])) {
+            $this->lang['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.'template_settings_name'] =
+              ucwords(str_replace('_', ' ', $tpl));
+        }
+
+        return true;
+    }
+
+    /**
+     * Generates a two-level table of contents for the config plugin.
+     *
+     * @author Ben Coburn <btcoburn@silicodon.net>
+     *
+     * @return array
+     */
+    public function getTOC() {
+        if (is_null($this->_config)) { $this->_config = new configuration($this->_file); }
+        $this->setupLocale(true);
+
+        $allow_debug = $GLOBALS['conf']['allowdebug']; // avoid global $conf; here.
+
+        // gather toc data
+        $has_undefined = false;
+        $toc = array('conf'=>array(), 'plugin'=>array(), 'template'=>null);
+        foreach($this->_config->setting as $setting) {
+            if (is_a($setting, 'setting_fieldset')) {
+                if (substr($setting->_key, 0, 10)=='plugin'.CM_KEYMARKER) {
+                    $toc['plugin'][] = $setting;
+                } else if (substr($setting->_key, 0, 7)=='tpl'.CM_KEYMARKER) {
+                    $toc['template'] = $setting;
+                } else {
+                    $toc['conf'][] = $setting;
+                }
+            } else if (!$has_undefined && is_a($setting, 'setting_undefined')) {
+                $has_undefined = true;
+            }
+        }
+
+        // build toc
+        $t = array();
+
+        $check = false;
+        $title = $this->getLang('_configuration_manager');
+        $t[] = html_mktocitem(sectionID($title, $check), $title, 1);
+        $t[] = html_mktocitem('dokuwiki_settings', $this->getLang('_header_dokuwiki'), 1);
+        /** @var setting $setting */
+        foreach($toc['conf'] as $setting) {
+            $name = $setting->prompt($this);
+            $t[] = html_mktocitem($setting->_key, $name, 2);
+        }
+        if (!empty($toc['plugin'])) {
+            $t[] = html_mktocitem('plugin_settings', $this->getLang('_header_plugin'), 1);
+        }
+        foreach($toc['plugin'] as $setting) {
+            $name = $setting->prompt($this);
+            $t[] = html_mktocitem($setting->_key, $name, 2);
+        }
+        if (isset($toc['template'])) {
+            $t[] = html_mktocitem('template_settings', $this->getLang('_header_template'), 1);
+            $setting = $toc['template'];
+            $name = $setting->prompt($this);
+            $t[] = html_mktocitem($setting->_key, $name, 2);
+        }
+        if ($has_undefined && $allow_debug) {
+            $t[] = html_mktocitem('undefined_settings', $this->getLang('_header_undefined'), 1);
+        }
+
+        return $t;
+    }
+
+    /**
+     * @param string $id
+     * @param string $text
+     */
+    protected function _print_h1($id, $text) {
+        ptln('<h1 id="'.$id.'">'.$text.'</h1>');
+    }
+
+    /**
+     * Adds a translation to this plugin's language array
+     *
+     * @param string $key
+     * @param string $value
+     */
+    public function addLang($key, $value) {
+        if (!$this->localised) $this->setupLocale();
+        $this->lang[$key] = $value;
+    }
+}
diff --git a/wiki/lib/plugins/config/admin.svg b/wiki/lib/plugins/config/admin.svg
new file mode 100644
index 0000000..ced9871
--- /dev/null
+++ b/wiki/lib/plugins/config/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53c.04-.32.07-.64.07-.97 0-.33-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.31-.61-.22l-2.49 1c-.52-.39-1.06-.73-1.69-.98l-.37-2.65A.506.506 0 0 0 14 2h-4c-.25 0-.46.18-.5.42l-.37 2.65c-.63.25-1.17.59-1.69.98l-2.49-1c-.22-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11c-.04.34-.07.67-.07 1 0 .33.03.65.07.97l-2.11 1.66c-.19.15-.25.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.06.74 1.69.99l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.63-.26 1.17-.59 1.69-.99l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.66z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/config/images/danger.png b/wiki/lib/plugins/config/images/danger.png
new file mode 100644
index 0000000..da06924
--- /dev/null
+++ b/wiki/lib/plugins/config/images/danger.png
Binary files differdiff --git a/wiki/lib/plugins/config/images/security.png b/wiki/lib/plugins/config/images/security.png
new file mode 100644
index 0000000..3ee8476
--- /dev/null
+++ b/wiki/lib/plugins/config/images/security.png
Binary files differdiff --git a/wiki/lib/plugins/config/images/warning.png b/wiki/lib/plugins/config/images/warning.png
new file mode 100644
index 0000000..c1af79f
--- /dev/null
+++ b/wiki/lib/plugins/config/images/warning.png
Binary files differdiff --git a/wiki/lib/plugins/config/lang/af/lang.php b/wiki/lib/plugins/config/lang/af/lang.php
new file mode 100644
index 0000000..cf71576
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/af/lang.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Afrikaans language file
+ *
+ */
+$lang['userewrite']            = 'Gebraik moie URLs';
+$lang['sepchar']               = 'Blydsy naam woord spassie';
+$lang['typography_o_0']        = 'Niks';
+$lang['userewrite_o_0']        = 'niks';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['deaccent_o_0']          = 'aff';
+$lang['gdlib_o_0']             = 'GD Lib nie beskibaar nie';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['compression_o_0']       = 'niks';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'moet nie gebrake nie';
+$lang['useheading_o_0']        = 'Noit';
+$lang['useheading_o_1']        = 'Altyde';
diff --git a/wiki/lib/plugins/config/lang/ar/intro.txt b/wiki/lib/plugins/config/lang/ar/intro.txt
new file mode 100644
index 0000000..1590518
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ar/intro.txt
@@ -0,0 +1,7 @@
+====== مدير الضبط ======
+
+استخدم هذه الصفحة للتحكم باعدادات دوكو ويكي المثبتة عندك. للمساعدة في أمر ما أشر إلى [[doku>config]]. لمعلومات اكثر عن هذه الاضافة انظر [[doku>plugin:config]].
+
+الاعدادات الظاهرة بخلفية حمراء فاتحة اعدادات محمية ولا يمكن تغييرها بهذه الاضافة. الاعدادات الظاهرة بخلفية زرقاء هي القيم الافتراضية والاعدادات الظاهرة بخلفية بيضاء خصصت لهذا التثبيت محليا. الاعدادات الزرقاء والبيضاء يمكن تغييرها.
+
+تأكد من ضغط زر **SAVE** قبل ترك الصفحة وإلا ستضيع تعديلاتك.
diff --git a/wiki/lib/plugins/config/lang/ar/lang.php b/wiki/lib/plugins/config/lang/ar/lang.php
new file mode 100644
index 0000000..69e843f
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ar/lang.php
@@ -0,0 +1,192 @@
+<?php
+/**
+ * Arabic language file
+ *
+ * @author Yaman Hokan <always.smile.yh@hotmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
+ * @author uahello@gmail.com
+ */
+$lang['menu']                  = 'الإعدادات';
+$lang['error']                 = 'لم تحدث الاعدادات بسبب قيمة غير صالحة، رجاء راجع تغييراتك ثم ارسلها.
+<br />القيم الخاطئة ستظهر محاطة بحدود حمراء.';
+$lang['updated']               = 'رفعت الاعدادات بنجاح.';
+$lang['nochoice']              = '(لا خيارات اخرى متاحة)';
+$lang['locked']                = 'تعذر تحديث ملف الاعدادات، إن لم يكن ذلك مقصودا، <br />
+تأكد من صحة اسم و صلاحيات ملف الاعدادات المحلي.';
+$lang['danger']                = 'خطر: تغيير هذا الخيار قد يؤدي إلى تعذر الوصول للويكي و قائمة الاعدادات.';
+$lang['warning']               = 'تحذير: تغييرهذا الخيار قد يؤدي لسلوك غير متوقع.';
+$lang['security']              = 'تحذير أمني: تغيير هذا الخيار قد يؤدي إلى مخاطرة أمنية.';
+$lang['_configuration_manager'] = 'مدير الاعدادات';
+$lang['_header_dokuwiki']      = 'اعدادات دوكو ويكي';
+$lang['_header_plugin']        = 'اعدادات الملحقات';
+$lang['_header_template']      = 'اعدادات القوالب';
+$lang['_header_undefined']     = 'اعدادات غير محددة';
+$lang['_basic']                = 'اعدادات اساسية';
+$lang['_display']              = 'اعدادات العرض';
+$lang['_authentication']       = 'اعدادات المواثقة';
+$lang['_anti_spam']            = 'اعدادات مضاد النفاية';
+$lang['_editing']              = 'اعدادات التحرير';
+$lang['_links']                = 'اعدادات الروابط';
+$lang['_media']                = 'اعدادات الوسائط';
+$lang['_notifications']        = 'اعدادات التنبيه';
+$lang['_advanced']             = 'اعدادات متقدمة';
+$lang['_network']              = 'اعدادات الشبكة';
+$lang['_msg_setting_undefined'] = 'لا بيانات إعدادات.';
+$lang['_msg_setting_no_class'] = 'لا صنف إعدادات.';
+$lang['_msg_setting_no_default'] = 'لا قيمة افتراضية.';
+$lang['title']                 = 'عنوان الويكي';
+$lang['start']                 = 'اسم صفحة البداية';
+$lang['lang']                  = 'لغة الواجهة';
+$lang['template']              = 'القالب';
+$lang['tagline']               = 'Tagline (في حال دعم القالب له)
+';
+$lang['sidebar']               = 'اسم صفحة الشريط الجانبي (في حال دعم القالب له). تركه فارغا يعطل الشريط الجانبي.';
+$lang['license']               = 'تحت أي رخصة تريد اصدار المحتوى؟';
+$lang['savedir']               = 'دليل حفظ البيانات';
+$lang['basedir']               = 'مسار الخادوم (مثال. <code>/dokuwiki/</code>) اترك فارغا للاكتشاف التلقائي.';
+$lang['baseurl']               = 'عنوان الخادوم (مثال. <code>http://www.yourserver.com</code>). اترك فارغا للاكتشاف التلقائي.';
+$lang['cookiedir']             = 'مسار الكعكات. اترك فارغا لاستخدام baseurl.';
+$lang['dmode']                 = 'نمط انشاء المجلدات';
+$lang['fmode']                 = 'نمط انشاء الملفات';
+$lang['allowdebug']            = 'مكّن التنقيح <b>عطّلها إن لم تكن بحاجلة لها!</b>';
+$lang['recent']                = 'أحدث التغييرات';
+$lang['recent_days']           = 'مدة إبقاء أحدث التغييرات (ايام)';
+$lang['breadcrumbs']           = 'عدد العناقيد للزيارات';
+$lang['youarehere']            = 'عناقيد هرمية';
+$lang['fullpath']              = 'اظهر المحتوى الكامل للصفحات في ';
+$lang['typography']            = 'اعمل استبدالات طبوغرافية';
+$lang['dformat']               = 'تنسيق التاريخ (انظر وظيفة PHP,s <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'التوقيع';
+$lang['showuseras']            = 'الذي يعرض لاظهار المستخدم الذي قام بآخر تحرير لصفحة';
+$lang['toptoclevel']           = 'المستوى الأعلى لمحتويات الجدول';
+$lang['tocminheads']           = 'الحد الأدنى من الترويسات لبناء جدول المحتويات';
+$lang['maxtoclevel']           = 'المستوى الأقصى لمحتويات الجدول';
+$lang['maxseclevel']           = 'المستوى الأقصى لتحرير القسم';
+$lang['camelcase']             = 'استخدم CamelCase للروابط';
+$lang['deaccent']              = 'نظّف اسماء الصفحات';
+$lang['useheading']            = 'استخدم اول ترويسة كأسم للصفحة';
+$lang['sneaky_index']          = 'افتراضيا، ستعرض دوكو ويكي كل اسماء النطاقات في عرض الفهرس. تفعيل هذا الخيار سيخفي مالا يملك المستخدم صلاحية قراءته. قد يؤدي هذا إلى اخفاء نطاقات فرعية متاحة. وقد يؤدي لجعل صفحة الفهرس معطلة في بعض اعدادات ACL.';
+$lang['hidepages']             = 'أخف الصفحات المنطبق عليها (تعابير شرطية)';
+$lang['useacl']                = 'استخدم قائمة التحم بالوصول';
+$lang['autopasswd']            = 'ولد كلمات سر تلقائيا';
+$lang['authtype']              = 'آلية المواثقة';
+$lang['passcrypt']             = 'نمط تشفير كلمة السر';
+$lang['defaultgroup']          = 'المجموعة الافتراضية';
+$lang['superuser']             = 'مجموعة المستخدم المتفوق أو مستخدم أو قائمة مفصولة بالفاصلة مستخدم1،@مجموعة، مستخدم2 صلاحيتهم الوصول الكامل لكل الصفحات و الوظائف بغض النظر عن اعدادات ACL';
+$lang['manager']               = 'مجموعة المدراء أو مستخدم أو قائمة مفصولة بالفاصلة مستخدم1،@مجموعة، مستخدم2 صلاحيتهم بعض الوظائف الادارية';
+$lang['profileconfirm']        = 'اكد تغيير اللاحة بكلمة المرور';
+$lang['rememberme']            = 'اسمح بكعكات الدخول الدائم (تذكرني)';
+$lang['disableactions']        = 'عطّل اجراءات دوكو ويكي';
+$lang['disableactions_check']  = 'تحقق';
+$lang['disableactions_subscription'] = 'اشترك/الغ الاشتراك';
+$lang['disableactions_wikicode'] = 'اعرض المصدر/صدّر صرفا';
+$lang['disableactions_other']  = 'اجراءات أخرى (مفصولة بالفاصلة)';
+$lang['auth_security_timeout'] = 'زمن انتهاء أمان المواثقة (ثوان)';
+$lang['securecookie']          = 'هل يفرض على كعكات التصفح المعدة عبر HTTPS ان ترسل فقط عبر HTTPS من قبل المتصفح؟ عطل هذا إن كان الولوج للويكي مؤمنا فقط عبر SSL لكن تصفح الويكي غير مؤمن.';
+$lang['remote']                = 'مكّن نظام API البعيد. يسمح هذا لبرامج أخرى بالوصول للويكي عبر XML-RPC أو آليات أخرى.';
+$lang['remoteuser']            = 'احصر الوصول البعيد ل API لمستخدمين ومجموعات يفصل بينها بالفاصلة هنا. اترك فارغا لتمكين الجميع.';
+$lang['usewordblock']          = 'احجز الغثاء بناء على قائمة كلمات';
+$lang['relnofollow']           = 'استخدم rel="nofollow" للروابط الخارجية';
+$lang['indexdelay']            = 'التأخير قبل الفهرسة (ثوان)';
+$lang['mailguard']             = 'عناوين بريدية مبهمة';
+$lang['iexssprotect']          = 'تحقق الملفات المرفوعة من احتمال وجود أكواد جافاسكربت أو HTML ضارة';
+$lang['usedraft']              = 'احفظ المسودة تلقائيا أثناء التحرير';
+$lang['htmlok']                = 'مكّن تضمين HTML';
+$lang['phpok']                 = 'مكّن تضمين PHP';
+$lang['locktime']              = 'الحد الأعظمي لقفل الملف (ثوان)';
+$lang['cachetime']             = 'الحد الأعظم لعمر المخُبأ (ثوان)';
+$lang['target____wiki']        = 'النافذة الهدف للروابط الداخلية';
+$lang['target____interwiki']   = 'النافذة الهدف للروابط الممرة interwiki';
+$lang['target____extern']      = 'النافذة الهدف للروابط الخارجية';
+$lang['target____media']       = 'النافذة الهدف لروابط الوسائط';
+$lang['target____windows']     = 'النافذة الهدف لروابط النوافذ';
+$lang['mediarevisions']        = 'تفعيل إصدارات الوسائط؟';
+$lang['refcheck']              = 'التحقق من مرجع الوسائط';
+$lang['gdlib']                 = 'اصدار مكتبة GD';
+$lang['im_convert']            = 'المسار إلى اداة تحويل ImageMagick';
+$lang['jpg_quality']           = 'دقة ضغط JPG (0-100)';
+$lang['fetchsize']             = 'الحجم الأعظمي (بايت) ل fetch.php لتنزيله من الخارج';
+$lang['subscribers']           = 'مكن دعم اشتراك الصفحة';
+$lang['subscribe_time']        = 'المهلة بعد ارسال قوائم الاشتراكات والملخصات (ثوان); هذا يجب أن يكون أقل من الوقت المخصص في أيام أحدث التغييرات.';
+$lang['notify']                = 'ارسل تنبيهات التغيير لهذا البريد';
+$lang['registernotify']        = 'ارسل بيانات عن المستخدمين المسجلين جديدا لهذا البريد';
+$lang['mailfrom']              = 'البريد الالكتروني ليستخدم للرسائل الآلية';
+$lang['mailprefix']            = 'بادئة موضوع البريد لتستخدم مع الرسائل الآلية';
+$lang['sitemap']               = 'ولد خرائط موقع جوجل (أيام)';
+$lang['rss_type']              = 'نوع تلقيمات XML';
+$lang['rss_linkto']            = 'تلقيمات XML توصل إلى';
+$lang['rss_content']           = 'مالذي يعرض في عناصر تلقيمات XML؟';
+$lang['rss_update']            = 'تحديث تلقيم XML (ثوان)';
+$lang['rss_show_summary']      = 'تلقيم XML يظهر ملخصا في العنوان';
+$lang['rss_media']             = 'مانوع التغييرات التي ستدرج في تغذية XML؟';
+$lang['updatecheck']           = 'تحقق من التحديثات و تنبيهات الأمان؟ دوكو ويكي ستحتاج للاتصال ب update.dokuwiki.org لأجل ذلك';
+$lang['userewrite']            = 'استعمل عناوين URLs جميلة';
+$lang['useslash']              = 'استخدم الشرطة كفاصل النطاق في العناوين';
+$lang['sepchar']               = 'فاصل كلمة اسم الصفحة';
+$lang['canonical']             = 'استخدم العناوين الشائعة كاملة';
+$lang['fnencode']              = 'نظام ترميز اسماء الملفات بغير الأسكي.';
+$lang['autoplural']            = 'تحقق من صيغ الجمع في الروابط';
+$lang['compression']           = 'طريقة الغضط لملفات attic';
+$lang['gzip_output']           = 'استخدم ترميز-محتوى gzip ل xhtml';
+$lang['compress']              = 'رُص مخرجات CSS و جافا سكربت';
+$lang['cssdatauri']            = 'الحجم بالبايتات للصور المذكورة في CSS التي ستُضمن في صفحة-التنسيق لخفض طلبات HTTP. <code>400</code> إلى <code>600</code> بايت تعد قيمة جيدة. اضبط إلى <code>0</code> لتعطلها.';
+$lang['send404']               = 'ارسل "HTTP 404/Page Not Found" للصفحات غير الموجودة';
+$lang['broken_iua']            = 'هل الوظيفة ignore_user_abort معطلة على جهازك؟ قد يؤدي ذلك لتعطيل فهرسة البحث. IIS+PHP/CGI تعرف بأنها لاتعمل. أنظر <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">العلة 852</a> لمزيد من المعلومات.';
+$lang['xsendfile']             = 'استخدم ترويسة X-Sendfile لتمكين خادم الوب من تقديم ملفات ثابتة؟ يجب أن يكون خادم الوب داعما له.';
+$lang['renderer_xhtml']        = 'المحرك ليستخدم لمخرجات الويكي الأساسية وفق (xhtml).';
+$lang['renderer__core']        = '%s (نواة دوكو ويكي)';
+$lang['renderer__plugin']      = '%s (ملحق)';
+$lang['proxy____host']         = 'اسم خادوم الوكيل';
+$lang['proxy____port']         = 'منفذ الوكيل';
+$lang['proxy____user']         = 'اسم مستخدم الوكيل';
+$lang['proxy____pass']         = 'كلمة سر الوكيل';
+$lang['proxy____ssl']          = 'استخدم ssl للاتصال بالوكيل';
+$lang['proxy____except']       = 'تعبير شرطي لمقابلة العناوين التي ستتجاوز البروكسي.';
+$lang['safemodehack']          = 'مكّن hack الوضع الآمن';
+$lang['ftp____host']           = 'خادوم FTP ل hack الوضع الآمن';
+$lang['ftp____port']           = 'منفذ FTP ل hack الوضع الآمن';
+$lang['ftp____user']           = 'اسم مستخدم FTP ل hack الوضع الآمن';
+$lang['ftp____pass']           = 'كلمة سر FTP ل hack الوضع الآمن';
+$lang['ftp____root']           = 'دليل الجذر ل FTP لأجل hack الوضع الآمن';
+$lang['license_o_']            = 'غير مختار';
+$lang['typography_o_0']        = 'لاشيء';
+$lang['typography_o_1']        = 'استبعاد الاقتباس المفرد';
+$lang['typography_o_2']        = 'تضمين علامات اقتباس مفردة (قد لا يعمل دائما)';
+$lang['userewrite_o_0']        = 'لاشيء';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'دو';
+$lang['deaccent_o_0']          = 'معطل';
+$lang['deaccent_o_1']          = 'أزل اللهجة';
+$lang['deaccent_o_2']          = 'اجعلها لاتينية';
+$lang['gdlib_o_0']             = 'مكتبة GD غير متوفرة';
+$lang['gdlib_o_1']             = 'الاصدار 1.x';
+$lang['gdlib_o_2']             = 'اكتشاف تلقائي';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'أتوم 0.3';
+$lang['rss_type_o_atom1']      = 'أتوم 1.0';
+$lang['rss_content_o_abstract'] = 'خلاصة';
+$lang['rss_content_o_diff']    = 'الفروق الموحدة';
+$lang['rss_content_o_htmldiff'] = 'جدول الفروق بهيئة HTML';
+$lang['rss_content_o_html']    = 'محتوى HTML الكامل للصفحة';
+$lang['rss_linkto_o_diff']     = 'عرض الاختلافات';
+$lang['rss_linkto_o_page']     = 'الصفحة المعدلة';
+$lang['rss_linkto_o_rev']      = 'قائمة بالمراجعات';
+$lang['rss_linkto_o_current']  = 'الصفحة الحالية';
+$lang['compression_o_0']       = 'لا شيء';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'لا تستخدم';
+$lang['xsendfile_o_1']         = 'ترويسة lighttpd مملوكة (قبل الاصدار 1.5)';
+$lang['xsendfile_o_2']         = 'ترويسة X-Sendfile قياسية';
+$lang['xsendfile_o_3']         = 'ترويسة Nginx X-Accel-Redirect مملوكة';
+$lang['showuseras_o_loginname'] = 'اسم الدخول';
+$lang['showuseras_o_username'] = 'اسم المستخدم الكامل';
+$lang['showuseras_o_email']    = 'عنوان بريد المستخدم (مبهم تبعا لاعدادات حارس_البريد)';
+$lang['showuseras_o_email_link'] = 'عنوان بريد المستخدم كـ مالتيو: رابط';
+$lang['useheading_o_0']        = 'أبدا';
+$lang['useheading_o_navigation'] = 'التنقل فقط';
+$lang['useheading_o_content']  = 'محتوى الويكي فقط';
+$lang['useheading_o_1']        = 'دائما';
+$lang['readdircache']          = 'المدة القصوى لتخزين ';
diff --git a/wiki/lib/plugins/config/lang/bg/intro.txt b/wiki/lib/plugins/config/lang/bg/intro.txt
new file mode 100644
index 0000000..db09e68
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/bg/intro.txt
@@ -0,0 +1,7 @@
+====== Диспечер на настройките ======
+
+От тук можете да управлявате настройките на вашето Dokuwiki. За отделните настройки вижте [[doku>config]]. За повече информация относно тази приставка вижте  [[doku>plugin:config]].
+
+Настройките изобразени със светло червен фон са защитени и не могат да бъдат променяни с тази приставка. Настройките показани със син фон са стандартните стойности, а настройките с бял фон са били настроени локално за тази конкретна инсталация. Можете да променяте както сините, така и белите настройки.
+
+Не забравяйте да натиснете бутона **ЗАПИС** преди да напуснете страницата, в противен случай промените няма да бъдат приложени.
diff --git a/wiki/lib/plugins/config/lang/bg/lang.php b/wiki/lib/plugins/config/lang/bg/lang.php
new file mode 100644
index 0000000..75508a5
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/bg/lang.php
@@ -0,0 +1,195 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
+ * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['menu']                  = 'Настройки';
+$lang['error']                 = 'Обновяването на настройките не е възможно, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново.
+                       <br />Неверните стойности ще бъдат обградени с червена рамка.';
+$lang['updated']               = 'Обновяването на настройките е успешно.';
+$lang['nochoice']              = '(няма друг възможен избор)';
+$lang['locked']                = 'Обновяването на файла с настройките не е възможно, ако това не е нарочно, проверете,<br />
+                       дали името на локалния файл с настройки и правата са верни.';
+$lang['danger']                = 'Внимание: промяна на опцията може да направи Wiki-то и менюто за настройване недостъпни.';
+$lang['warning']               = 'Предупреждение: промяна на опцията може предизвика нежелани последици.';
+$lang['security']              = 'Предупреждение: промяна на опцията може да представлява риск за сигурността.';
+$lang['_configuration_manager'] = 'Диспечер на настройките';
+$lang['_header_dokuwiki']      = 'Настройки на DokuWiki';
+$lang['_header_plugin']        = 'Настройки на приставки';
+$lang['_header_template']      = 'Настройки на шаблона';
+$lang['_header_undefined']     = 'Неопределени настройки';
+$lang['_basic']                = 'Основни настройки';
+$lang['_display']              = 'Настройки за изобразяване';
+$lang['_authentication']       = 'Настройки за удостоверяване';
+$lang['_anti_spam']            = 'Настройки за борба със SPAM-ма';
+$lang['_editing']              = 'Настройки за редактиране';
+$lang['_links']                = 'Настройки на препратките';
+$lang['_media']                = 'Настройки на медията';
+$lang['_notifications']        = 'Настройки за известяване';
+$lang['_syndication']          = 'Настройки на RSS емисиите';
+$lang['_advanced']             = 'Допълнителни настройки';
+$lang['_network']              = 'Мрежови настройки';
+$lang['_msg_setting_undefined'] = 'Няма метаданни за настройките.';
+$lang['_msg_setting_no_class'] = 'Няма клас настройки.';
+$lang['_msg_setting_no_default'] = 'Няма стандартна стойност.';
+$lang['title']                 = 'Заглавие за Wiki-то, тоест името';
+$lang['start']                 = 'Име на началната страница';
+$lang['lang']                  = 'Език на интерфейса';
+$lang['template']              = 'Шаблон (определя вида на страниците)';
+$lang['tagline']               = 'Подзаглавие - изобразява се под името на Wiki-то (ако се поддържа от шаблона)';
+$lang['sidebar']               = 'Име на страницата за страничната лента (ако се поддържа от шаблона). Оставите ли полето празно лентата ще бъде изключена';
+$lang['license']               = 'Под какъв лиценз да бъде публикувано съдържанието?';
+$lang['savedir']               = 'Директория за записване на данните';
+$lang['basedir']               = 'Главна директория (напр. <code>/dokuwiki/</code>). Оставете празно, за да бъде засечена автоматично.';
+$lang['baseurl']               = 'URL адрес (напр. <code>http://www.yourserver.com</code>). Оставете празно, за да бъде засечен автоматично.';
+$lang['cookiedir']             = 'Път за бисквитките. Оставите ли полето празно ще се ползва горния URL адрес.';
+$lang['dmode']                 = 'Режим (права) за създаване на директории';
+$lang['fmode']                 = 'Режим (права) за създаване на файлове';
+$lang['allowdebug']            = 'Включване на режи debug - <b>изключете, ако не е нужен!</b>';
+$lang['recent']                = 'Скорошни промени - брой елементи на страница';
+$lang['recent_days']           = 'Колко от скорошните промени да се пазят (дни)';
+$lang['breadcrumbs']           = 'Брой на следите. За изключване на функцията задайте 0.';
+$lang['youarehere']            = 'Йерархични следи (в този случай можете да изключите горната опция)';
+$lang['fullpath']              = 'Показване на пълния път до страниците в долния колонтитул.';
+$lang['typography']            = 'Замяна на последователност от символи с типографски еквивалент';
+$lang['dformat']               = 'Формат на датата (виж. <a href="http://php.net/strftime">strftime</a> функцията на PHP)';
+$lang['signature']             = 'Подпис - какво да внася бутона "Вмъкване на подпис" от редактора';
+$lang['showuseras']            = 'Какво да се показва за потребителя, който последно е променил дадена страницата';
+$lang['toptoclevel']           = 'Главно ниво (заглавие) за съдържанието';
+$lang['tocminheads']           = 'Минимален брой заглавия, определящ дали да бъде създадено съдържание';
+$lang['maxtoclevel']           = 'Максимален брой нива (заглавия) за включване в съдържанието';
+$lang['maxseclevel']           = 'Максимален брой нива предоставяни за самостоятелно редактиране';
+$lang['camelcase']             = 'Ползване на CamelCase за линкове';
+$lang['deaccent']              = 'Почистване имената на страниците (на файловете)';
+$lang['useheading']            = 'Ползване на първото заглавие за име на страница';
+$lang['sneaky_index']          = 'Стандартно DokuWiki ще показва всички именни пространства в индекса. Опцията скрива тези, за които потребителят няма права за четене. Това може да доведе и до скриване на иначе достъпни подименни пространства. С определени настройки на списъците за контрол на достъпа (ACL) може да направи индекса неизползваем. ';
+$lang['hidepages']             = 'Скриване на страниците съвпадащи с този регулярен израз(regular expressions)';
+$lang['useacl']                = 'Ползване на списъци за достъп';
+$lang['autopasswd']            = 'Автоматично генериране на пароли, на нови потребители и пращане по пощата';
+$lang['authtype']              = 'Метод за удостоверяване';
+$lang['passcrypt']             = 'Метод за криптиране на паролите';
+$lang['defaultgroup']          = 'Стандартна група';
+$lang['superuser']             = 'Супер потребител -  група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с пълен достъп до всички страници и функции без значение от настройките на списъците за достъп (ACL)';
+$lang['manager']               = 'Управител - група, потребител или списък със стойности разделени чрез запетая (user1,@group1,user2) с достъп до определени управленски функции ';
+$lang['profileconfirm']        = 'Потвърждаване на промени в профила с парола';
+$lang['rememberme']            = 'Ползване на постоянни бисквитки за вписване (за функцията "Запомни ме")';
+$lang['disableactions']        = 'Изключване функции на DokuWiki';
+$lang['disableactions_check']  = 'Проверка';
+$lang['disableactions_subscription'] = 'Абониране/Отписване';
+$lang['disableactions_wikicode'] = 'Преглед на кода/Експортиране на оригинална версия';
+$lang['disableactions_other']  = 'Други действия (разделени със запетая)';
+$lang['auth_security_timeout'] = 'Автоматично проверяване на удостоверяването всеки (сек)';
+$lang['securecookie']          = 'Да се изпращат ли бисквитките зададени чрез HTTPS, само чрез HTTPS от браузъра? Изключете опцията, когато SSL се ползва само за вписване, а четенето е без SSL.';
+$lang['remote']                = 'Включване на системата за отдалечен API достъп. Това ще позволи на приложения да се свързват с DokuWiki чрез XML-RPC или друг механизъм.';
+$lang['remoteuser']            = 'Ограничаване на отдалечения API достъп - активиране само за следните групи и потребители (отделени със запетая). Ако оставите полето празно всеки ще има достъп достъп.';
+$lang['usewordblock']          = 'Блокиране на SPAM въз основа на на списък от думи';
+$lang['relnofollow']           = 'Ползване на rel="nofollow" за външни препратки';
+$lang['indexdelay']            = 'Забавяне преди индексиране (сек)';
+$lang['mailguard']             = 'Промяна на адресите на ел. поща (във форма непозволяваща пращането на SPAM)';
+$lang['iexssprotect']          = 'Проверяване на качените файлове за вероятен зловреден JavaScript и HTML код';
+$lang['usedraft']              = 'Автоматично запазване на чернова по време на редактиране';
+$lang['htmlok']                = 'Разрешаване вграждането на HTML код';
+$lang['phpok']                 = 'Разрешаване вграждането на PHP код';
+$lang['locktime']              = 'Макс. период за съхраняване на заключените файлове (сек)';
+$lang['cachetime']             = 'Макс. период за съхраняване на кеша (сек)';
+$lang['target____wiki']        = 'Прозорец за вътрешни препратки';
+$lang['target____interwiki']   = 'Прозорец за препратки към други Wiki сайтове';
+$lang['target____extern']      = 'Прозорец за външни препратки';
+$lang['target____media']       = 'Прозорец за медийни препратки';
+$lang['target____windows']     = 'Прозорец за препратки към Windows';
+$lang['mediarevisions']        = 'Да се пазят ли стари версии на качените файлове (Mediarevisions)?';
+$lang['refcheck']              = 'Проверка за препратка към медия, преди да бъде изтрита';
+$lang['gdlib']                 = 'Версия на GD Lib';
+$lang['im_convert']            = 'Път до инструмента за трансформация на ImageMagick';
+$lang['jpg_quality']           = 'Качество на JPG компресията (0-100)';
+$lang['fetchsize']             = 'Максимален размер (байтове), който fetch.php може да сваля';
+$lang['subscribers']           = 'Включване на поддръжката за абониране към страници';
+$lang['subscribe_time']        = 'Време след което абонаментните списъци и обобщения се изпращат (сек); Трябва да е по-малко от времето определено в recent_days.';
+$lang['notify']                = 'Пращане на съобщения за промени по страниците на следната eл. поща';
+$lang['registernotify']        = 'Пращане на информация за нови потребители на следната ел. поща';
+$lang['mailfrom']              = 'Ел. поща, която да се ползва за автоматично изпращане на ел. писма';
+$lang['mailprefix']            = 'Представка за темите (поле subject) на автоматично изпращаните ел. писма';
+$lang['htmlmail']              = 'Изпращане на по-добре изглеждащи, но по-големи по-размер HTML ел. писма. Изключете ако желаете писмата да се изпращат като чист текст.';
+$lang['sitemap']               = 'Генериране на Google sitemap (дни)';
+$lang['rss_type']              = 'Тип на XML емисията';
+$lang['rss_linkto']            = 'XML емисията препраща към';
+$lang['rss_content']           = 'Какво да показват елементите на XML емисията?';
+$lang['rss_update']            = 'Интервал на актуализиране на XML емисията (сек)';
+$lang['rss_show_summary']      = 'Показване на обобщение в заглавието на XML емисията';
+$lang['rss_media']             = 'Кой тип промени да се включват в XML мисията?';
+$lang['updatecheck']           = 'Проверяване за за нови версии и предупреждения за сигурността? Необходимо е Dokiwiki да може да се свързва със update.dokuwiki.org за тази функционалност.';
+$lang['userewrite']            = 'Ползване на nice URL адреси';
+$lang['useslash']              = 'Ползване на наклонена черта за разделител на именните пространства в URL';
+$lang['sepchar']               = 'Разделител между думите в имената на страници';
+$lang['canonical']             = 'Ползване на напълно уеднаквени URL адреси (абсолютни адреси - http://server/path)';
+$lang['fnencode']              = 'Метод за кодиране на не-ASCII именуваните файлове.';
+$lang['autoplural']            = 'Проверяване за множествено число в препратките';
+$lang['compression']           = 'Метод за компресия на attic файлове';
+$lang['gzip_output']           = 'Кодиране на съдържанието с gzip за xhtml';
+$lang['compress']              = 'Компактен CSS и javascript изглед';
+$lang['cssdatauri']            = 'Максимален размер, в байтове, до който изображенията посочени в .CSS файл ще бъдат вграждани в стила (stylesheet), за да се намали броя на HTTP заявките. Техниката не работи за версиите на IE преди 8! Препоръчителни стойности: <code>400</code> до <code>600</code> байта. Въведете <code>0</code> за изключване.';
+$lang['send404']               = 'Пращане на "HTTP 404/Page Not Found" за несъществуващи страници';
+$lang['broken_iua']            = 'Отметнете, ако ignore_user_abort функцията не работи. Може да попречи на търсенето в страниците. Знае се, че комбинацията IIS+PHP/CGI е лоша. Вижте  <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Грешка 852</a> за повече информация.';
+$lang['xsendfile']             = 'Ползване на Х-Sendfile header, за да може уебсървъра да дава статични файлове? Вашият уеб сървър трябва да го поддържа.';
+$lang['renderer_xhtml']        = 'Представяне на основните изходни данни (xhtml) от Wiki-то с';
+$lang['renderer__core']        = '%s (ядрото на DokuWiki)';
+$lang['renderer__plugin']      = '%s (приставка)';
+$lang['dnslookups']            = 'DokuWiki ще търси имената на хостовете, на отдалечени IP адреси, от които потребители редактират страници. НЕ е желателно да ползвате опцията ако имате бавен или неработещ DNS сървър.';
+$lang['proxy____host']         = 'Име на прокси сървър';
+$lang['proxy____port']         = 'Порт за проксито';
+$lang['proxy____user']         = 'Потребител за проксито';
+$lang['proxy____pass']         = 'Парола за проксито';
+$lang['proxy____ssl']          = 'Ползване на SSL при свързване с проксито';
+$lang['proxy____except']       = 'Регулярен израз определящ за кои URL адреси да не се ползва прокси сървър.';
+$lang['safemodehack']          = 'Ползване на хака safemode';
+$lang['ftp____host']           = 'FTP сървър за хака safemode';
+$lang['ftp____port']           = 'FTP порт за хака safemode';
+$lang['ftp____user']           = 'FTP потребител за хака safemode';
+$lang['ftp____pass']           = 'FTP парола за хака safemode';
+$lang['ftp____root']           = 'FTP главна директория за хака safemode';
+$lang['license_o_']            = 'Нищо не е избрано';
+$lang['typography_o_0']        = 'без';
+$lang['typography_o_1']        = 'с изключение на единични кавички';
+$lang['typography_o_2']        = 'включително единични кавички (не винаги работи)';
+$lang['userewrite_o_0']        = 'без';
+$lang['userewrite_o_1']        = 'файлът .htaccess';
+$lang['userewrite_o_2']        = 'вътрешно от DokuWiki ';
+$lang['deaccent_o_0']          = 'изключено';
+$lang['deaccent_o_1']          = 'премахване на акценти';
+$lang['deaccent_o_2']          = 'транслитерация';
+$lang['gdlib_o_0']             = 'GD Lib не е достъпна';
+$lang['gdlib_o_1']             = 'Версия 1.x';
+$lang['gdlib_o_2']             = 'Автоматично разпознаване';
+$lang['rss_type_o_rss']        = 'RSS версия 0.91';
+$lang['rss_type_o_rss1']       = 'RSS версия 1.0';
+$lang['rss_type_o_rss2']       = 'RSS версия 2.0';
+$lang['rss_type_o_atom']       = 'Atom версия 0.3';
+$lang['rss_type_o_atom1']      = 'Atom версия 1.0';
+$lang['rss_content_o_abstract'] = 'Извлечение';
+$lang['rss_content_o_diff']    = 'Обединени разлики';
+$lang['rss_content_o_htmldiff'] = 'Таблица с разликите в HTML формат';
+$lang['rss_content_o_html']    = 'Цялото съдържание на HTML страницата';
+$lang['rss_linkto_o_diff']     = 'изглед на разликите';
+$lang['rss_linkto_o_page']     = 'променената страница';
+$lang['rss_linkto_o_rev']      = 'списък на версиите';
+$lang['rss_linkto_o_current']  = 'текущата страница';
+$lang['compression_o_0']       = 'без';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'без';
+$lang['xsendfile_o_1']         = 'Специфичен lighttpd header (преди версия 1.5)';
+$lang['xsendfile_o_2']         = 'Стандартен X-Sendfile header';
+$lang['xsendfile_o_3']         = 'Специфичен Nginx X-Accel-Redirect header за пренасочване';
+$lang['showuseras_o_loginname'] = 'Име за вписване';
+$lang['showuseras_o_username'] = 'Пълно потребителско име';
+$lang['showuseras_o_email']    = 'Ел, поща (променени според настройките на mailguard)';
+$lang['showuseras_o_email_link'] = 'Ел. поща под формата на връзка тип mailto:';
+$lang['useheading_o_0']        = 'Никога';
+$lang['useheading_o_navigation'] = 'Само за навигация';
+$lang['useheading_o_content']  = 'Само за съдържанието на Wiki-то';
+$lang['useheading_o_1']        = 'Винаги';
+$lang['readdircache']          = 'Максимален период за съхраняване кеша на readdir (сек)';
diff --git a/wiki/lib/plugins/config/lang/ca-valencia/intro.txt b/wiki/lib/plugins/config/lang/ca-valencia/intro.txt
new file mode 100644
index 0000000..6dd461d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ca-valencia/intro.txt
@@ -0,0 +1,10 @@
+====== Gestor de configuració ======
+
+Controle des d'esta pàgina els ajusts de DokuWiki.
+Per a obtindre ajuda sobre cada ajust vaja a [[doku>config]].
+Per a més informació al voltant d'este plúgin vaja a [[doku>config]].
+
+Els ajusts mostrats en un fondo roig claret estan protegits i no els pot
+modificar en este plúgin. Els ajusts mostrats en un fondo blau tenen els valors predeterminats i els ajusts mostrats en un fondo blanc han segut modificats localment per ad esta instalació. Abdós ajusts, blaus i blancs, es poden modificar.
+
+Recorde pulsar el botó **GUARDAR** ans d'anar-se'n d'esta pàgina o perdrà els canvis que haja fet.
diff --git a/wiki/lib/plugins/config/lang/ca-valencia/lang.php b/wiki/lib/plugins/config/lang/ca-valencia/lang.php
new file mode 100644
index 0000000..db86dc9
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ca-valencia/lang.php
@@ -0,0 +1,177 @@
+<?php
+/**
+ * valencian language file
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Bernat Arlandis i Mañó <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@llenguaitecnologia.com>
+ */
+$lang['menu']                  = 'Ajusts de configuració';
+$lang['error']                 = 'Els ajusts no s\'han actualisat per algun valor invàlit, per favor, revise els canvis i torne a guardar.
+<br />Els valors incorrectes es mostraran en una vora roja.';
+$lang['updated']               = 'Els ajusts s\'han actualisat correctament.';
+$lang['nochoice']              = '(no n\'hi ha atres opcions disponibles)';
+$lang['locked']                = 'L\'archiu de configuració no es pot actualisar, si açò no és intencionat,<br /> comprove que els permissos de l\'archiu de configuració local estiguen be.';
+$lang['danger']                = 'Perill: canviant esta opció pot fer inaccessibles el wiki i el menú de configuració.';
+$lang['warning']               = 'Advertència: canviar esta opció pot causar un comportament imprevist.';
+$lang['security']              = 'Advertència de seguritat: canviar esta opció pot presentar un risc de seguritat.';
+$lang['_configuration_manager'] = 'Gestor de configuració';
+$lang['_header_dokuwiki']      = 'Ajusts de DokuWiki';
+$lang['_header_plugin']        = 'Configuració de plúgins';
+$lang['_header_template']      = 'Configuració de plantilles';
+$lang['_header_undefined']     = 'Atres configuracions';
+$lang['_basic']                = 'Ajusts bàsics';
+$lang['_display']              = 'Ajusts de visualisació';
+$lang['_authentication']       = 'Ajusts d\'autenticació';
+$lang['_anti_spam']            = 'Ajusts anti-spam';
+$lang['_editing']              = 'Ajusts d\'edició';
+$lang['_links']                = 'Ajusts de vínculs';
+$lang['_media']                = 'Ajusts de mijos';
+$lang['_advanced']             = 'Ajusts alvançats';
+$lang['_network']              = 'Ajusts de ret';
+$lang['_msg_setting_undefined'] = 'Ajust sense informació.';
+$lang['_msg_setting_no_class'] = 'Ajust sense classe.';
+$lang['_msg_setting_no_default'] = 'Sense valor predeterminat.';
+$lang['fmode']                 = 'Modo de creació d\'archius';
+$lang['dmode']                 = 'Modo de creació de directoris';
+$lang['lang']                  = 'Idioma';
+$lang['basedir']               = 'Directori base';
+$lang['baseurl']               = 'URL base';
+$lang['savedir']               = 'Directori per a guardar senyes';
+$lang['start']                 = 'Nom de la pàgina inicial';
+$lang['title']                 = 'Títul del Wiki';
+$lang['template']              = 'Plantilla';
+$lang['license']               = '¿Baix quina llicència deuen publicar-se els continguts?';
+$lang['fullpath']              = 'Mostrar en el peu el camí complet a les pàgines';
+$lang['recent']                = 'Canvis recents';
+$lang['breadcrumbs']           = 'Llongitut del rastre';
+$lang['youarehere']            = 'Rastre jeràrquic';
+$lang['typography']            = 'Fer substitucions tipogràfiques';
+$lang['htmlok']                = 'Permetre HTML';
+$lang['phpok']                 = 'Permetre PHP';
+$lang['dformat']               = 'Format de data (vore la funció <a href="http://php.net/date">date</a> de PHP)';
+$lang['signature']             = 'Firma';
+$lang['toptoclevel']           = 'Nivell superior de la taula de continguts';
+$lang['tocminheads']           = 'Número mínim de titulars que generen una TDC';
+$lang['maxtoclevel']           = 'Nivell màxim de la taula de continguts';
+$lang['maxseclevel']           = 'Nivell màxim d\'edició de seccions';
+$lang['camelcase']             = 'Utilisar CamelCase per als vínculs';
+$lang['deaccent']              = 'Depurar els noms de pàgines';
+$lang['useheading']            = 'Utilisar el primer titular per al nom de pàgina';
+$lang['refcheck']              = 'Comprovar referències a mijos';
+$lang['allowdebug']            = 'Permetre depurar (<b>¡desactivar quan no es necessite!</b>)';
+$lang['usewordblock']          = 'Bloquejar spam basant-se en una llista de paraules';
+$lang['indexdelay']            = 'Retart abans d\'indexar (seg.)';
+$lang['relnofollow']           = 'Utilisar rel="nofollow" en vínculs externs';
+$lang['mailguard']             = 'Ofuscar les direccions de correu';
+$lang['iexssprotect']          = 'Comprovar que els archius pujats no tinguen possible còdic Javascript o HTML maliciós';
+$lang['showuseras']            = 'Qué mostrar quan aparega l\'últim usuari que ha editat la pàgina';
+$lang['useacl']                = 'Utilisar llistes de control d\'accés';
+$lang['autopasswd']            = 'Generar contrasenyes automàticament';
+$lang['authtype']              = 'Sistema d\'autenticació';
+$lang['passcrypt']             = 'Método de sifrat de la contrasenya';
+$lang['defaultgroup']          = 'Grup predeterminat';
+$lang['superuser']             = 'Super-usuari - grup, usuari o llista separada per comes (usuari1,@grup1,usuari2) en accés total a totes les pàgines i funcions independentment dels ajusts ACL';
+$lang['manager']               = 'Manager - grup, usuari o llista separada per comes (usuari1,@grup1,usuari2) en accés a certes funcions d\'administració';
+$lang['profileconfirm']        = 'Confirmar canvis al perfil en la contrasenya';
+$lang['disableactions']        = 'Desactivar accions de DokuWiki';
+$lang['disableactions_check']  = 'Comprovar';
+$lang['disableactions_subscription'] = 'Subscriure\'s/Desubscriure\'s';
+$lang['disableactions_wikicode'] = 'Vore font/exportar còdic';
+$lang['disableactions_other']  = 'Atres accions (separades per comes)';
+$lang['sneaky_index']          = 'Normalment, DokuWiki mostra tots els espais de noms en la vista d\'índex. Activant esta opció s\'ocultaran aquells per als que l\'usuari no tinga permís de llectura. Açò pot ocultar subespais accessibles i inutilisar l\'índex per a certes configuracions del ACL.';
+$lang['auth_security_timeout'] = 'Temps de seguritat màxim per a l\'autenticació (segons)';
+$lang['securecookie']          = '¿El navegador deuria enviar per HTTPS només les galletes que s\'han generat per HTTPS? Desactive esta opció quan utilise SSL només en la pàgina d\'inici de sessió.';
+$lang['updatecheck']           = '¿Buscar actualisacions i advertències de seguritat? DokuWiki necessita conectar a update.dokuwiki.org per ad açò.';
+$lang['userewrite']            = 'Utilisar URL millorades';
+$lang['useslash']              = 'Utilisar \'/\' per a separar espais de noms en les URL';
+$lang['usedraft']              = 'Guardar automàticament un borrador mentres edite';
+$lang['sepchar']               = 'Separador de paraules en els noms de pàgines';
+$lang['canonical']             = 'Utilisar URL totalment canòniques';
+$lang['autoplural']            = 'Buscar formes en plural en els vínculs';
+$lang['compression']           = 'Método de compressió per als archius de l\'àtic';
+$lang['cachetime']             = 'Edat màxima de la caché (seg.)';
+$lang['locktime']              = 'Edat màxima d\'archius de bloqueig (seg.)';
+$lang['fetchsize']             = 'Tamany màxim (bytes) que fetch.php pot descarregar externament';
+$lang['notify']                = 'Enviar notificacions de canvis ad esta direcció de correu';
+$lang['registernotify']        = 'Enviar informació d\'usuaris recentment registrats ad esta direcció de correu';
+$lang['mailfrom']              = 'Direcció de correu a utilisar per a mensages automàtics';
+$lang['gzip_output']           = 'Utilisar Content-Encoding gzip per a xhtml';
+$lang['gdlib']                 = 'Versió de GD Lib';
+$lang['im_convert']            = 'Ruta a la ferramenta de conversió ImageMagick';
+$lang['jpg_quality']           = 'Calitat de compressió JPG (0-100)';
+$lang['subscribers']           = 'Activar la subscripció a pàgines';
+$lang['compress']              = 'Compactar l\'eixida CSS i Javascript';
+$lang['hidepages']             = 'Amagar les pàgines coincidents (expressions regulars)';
+$lang['send404']               = 'Enviar "HTTP 404/Page Not Found" per a les pàgines que no existixen';
+$lang['sitemap']               = 'Generar sitemap de Google (dies)';
+$lang['broken_iua']            = '¿La funció ignore_user_abort funciona mal en este sistema? Podria ser la causa d\'un índex de busca que no funcione. Es sap que IIS+PHP/CGI té este problema. Veja <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> per a més informació.';
+$lang['xsendfile']             = '¿Utilisar l\'encapçalat X-Sendfile per a que el servidor web servixca archius estàtics? El servidor web ho ha d\'admetre.';
+$lang['renderer_xhtml']        = 'Visualisador a utilisar per a l\'eixida principal del wiki (xhtml)';
+$lang['renderer__core']        = '%s (dokuwiki core)';
+$lang['renderer__plugin']      = '%s (plúgin)';
+$lang['rememberme']            = 'Permetre recordar permanentment la sessió (recordar-me)';
+$lang['rss_type']              = 'Tipo de canal XML';
+$lang['rss_linkto']            = 'El canal XML vincula a';
+$lang['rss_content']           = '¿Qué mostrar en els ítems del canal XML?';
+$lang['rss_update']            = 'Interval d\'actualisació del canal XML (seg.)';
+$lang['recent_days']           = 'Quànts canvis recents guardar (dies)';
+$lang['rss_show_summary']      = 'Que el canal XML mostre el sumari en el títul';
+$lang['target____wiki']        = 'Finestra destí per a vínculs interns';
+$lang['target____interwiki']   = 'Finestra destí per a vínculs d\'interwiki';
+$lang['target____extern']      = 'Finestra destí per a vínculs externs';
+$lang['target____media']       = 'Finestra destí per a vinculs a mijos';
+$lang['target____windows']     = 'Finestra destí per a vínculs a finestres';
+$lang['proxy____host']         = 'Nom del servidor proxy';
+$lang['proxy____port']         = 'Port del proxy';
+$lang['proxy____user']         = 'Nom d\'usuari del proxy';
+$lang['proxy____pass']         = 'Contrasenya del proxy';
+$lang['proxy____ssl']          = 'Utilisar SSL per a conectar al proxy';
+$lang['safemodehack']          = 'Activar \'hack\' de modo segur';
+$lang['ftp____host']           = 'Servidor FTP per al \'hack\' de modo segur';
+$lang['ftp____port']           = 'Port FTP per al \'hack\' de modo segur';
+$lang['ftp____user']           = 'Nom de l\'usuari per al \'hack\' de modo segur';
+$lang['ftp____pass']           = 'Contrasenya FTP per al \'hack\' de modo segur';
+$lang['ftp____root']           = 'Directori base FTP per al \'hack\' de modo segur';
+$lang['license_o_']            = 'Cap triada';
+$lang['typography_o_0']        = 'cap';
+$lang['typography_o_1']        = 'Excloure cometes simples';
+$lang['typography_o_2']        = 'Incloure cometes simples (podria no funcionar sempre)';
+$lang['userewrite_o_0']        = 'cap';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Interna de DokuWiki';
+$lang['deaccent_o_0']          = 'desactivat';
+$lang['deaccent_o_1']          = 'llevar accents';
+$lang['deaccent_o_2']          = 'romanisar';
+$lang['gdlib_o_0']             = 'GD Lib no està disponible';
+$lang['gdlib_o_1']             = 'Versió 1.x';
+$lang['gdlib_o_2']             = 'Autodetecció';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstracte';
+$lang['rss_content_o_diff']    = 'Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'Taula de diferències en format HTML';
+$lang['rss_content_o_html']    = 'Contingut complet de la pàgina en HTML';
+$lang['rss_linkto_o_diff']     = 'mostrar diferències';
+$lang['rss_linkto_o_page']     = 'la pàgina revisada';
+$lang['rss_linkto_o_rev']      = 'llista de revisions';
+$lang['rss_linkto_o_current']  = 'la pàgina actual';
+$lang['compression_o_0']       = 'cap';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'No utilisar';
+$lang['xsendfile_o_1']         = 'Encapçalat propietari lighttpd (abans de la versió 1.5)';
+$lang['xsendfile_o_2']         = 'Encapçalat Standard X-Sendfile';
+$lang['xsendfile_o_3']         = 'Encapçalat propietari Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Nom d\'inici de sessió';
+$lang['showuseras_o_username'] = 'Nom complet de l\'usuari';
+$lang['showuseras_o_email']    = 'Direcció de correu de l\'usuari (oculta segons la configuració)';
+$lang['showuseras_o_email_link'] = 'Direcció de correu de l\'usuari com un víncul mailto:';
+$lang['useheading_o_0']        = 'Mai';
+$lang['useheading_o_navigation'] = 'Només navegació';
+$lang['useheading_o_content']  = 'Només contingut del wiki';
+$lang['useheading_o_1']        = 'Sempre';
diff --git a/wiki/lib/plugins/config/lang/ca/intro.txt b/wiki/lib/plugins/config/lang/ca/intro.txt
new file mode 100644
index 0000000..9ce4e66
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ca/intro.txt
@@ -0,0 +1,7 @@
+====== Gestió de la configuració ======
+
+Utilitzeu aquesta pàgina per controlar els paràmetres de la vostra instal·lació de DokuWiki. Ajuda sobre paràmetres individuals en [[doku>config]]. Més detalls sobre aquest connector en [[doku>plugin:config]].
+
+Els paràmetres que es visualitzen sobre fons vermell clar estan protegits i no es poden modificar amb aquest connector. Els paràmetres que es visualitzen sobre fons blau tenen valors per defecte. Els de fons blanc s'han configurat localment per a aquesta instal·lació. Tant els blaus com els blanc es poden modificar.
+
+Recordeu que cal prémer el botó **DESA** abans de sortir d'aquesta pàgina, o si no es perdrien els canvis.
diff --git a/wiki/lib/plugins/config/lang/ca/lang.php b/wiki/lib/plugins/config/lang/ca/lang.php
new file mode 100644
index 0000000..7ef19e7
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ca/lang.php
@@ -0,0 +1,188 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carles Bellver <carles.bellver@gmail.com>
+ * @author carles.bellver@gmail.com
+ * @author carles.bellver@cent.uji.es
+ * @author Carles Bellver <carles.bellver@cent.uji.es>
+ * @author daniel@6temes.cat
+ * @author controlonline.net <controlonline.net@gmail.com>
+ * @author Pauet <pauet@gmx.com>
+ * @author Àngel Pérez Beroy <aperezberoy@gmail.com>
+ * @author David Surroca <david.tb303@gmail.com>
+ */
+$lang['menu']                  = 'Paràmetres de configuració';
+$lang['error']                 = 'Els paràmetres no s\'han pogut actualitzar per causa d\'un valor incorrecte Reviseu els canvis i torneu a enviar-los.<br />Els valors incorrectes es ressaltaran amb un marc vermell.';
+$lang['updated']               = 'Els paràmetres s\'han actualitzat amb èxit.';
+$lang['nochoice']              = '(no hi altres opcions disponibles)';
+$lang['locked']                = 'El fitxer de paràmetres no es pot actualitzar. Si això és involuntari, <br />
+assegureu-vos que el nom i els permisos del fitxer local de paràmetres són correctes.';
+$lang['danger']                = 'Alerta: si canvieu aquesta opció podeu fer que el wiki i el menú de configuració no siguin accessibles.';
+$lang['warning']               = 'Avís: modificar aquesta opció pot provocar un comportament no desitjat.';
+$lang['security']              = 'Avís de seguretat: modificar aquesta opció pot implicar un risc de seguretat.';
+$lang['_configuration_manager'] = 'Gestió de la configuració';
+$lang['_header_dokuwiki']      = 'Paràmetres de DokuWiki';
+$lang['_header_plugin']        = 'Paràmetres de connectors';
+$lang['_header_template']      = 'Paràmetres de plantilles';
+$lang['_header_undefined']     = 'Paràmetres no definits';
+$lang['_basic']                = 'Paràmetres bàsics';
+$lang['_display']              = 'Paràmetres de visualització';
+$lang['_authentication']       = 'Paràmetres d\'autenticació';
+$lang['_anti_spam']            = 'Paràmetres anti-brossa';
+$lang['_editing']              = 'Paràmetres d\'edició';
+$lang['_links']                = 'Paràmetres d\'enllaços';
+$lang['_media']                = 'Paràmetres de mitjans';
+$lang['_notifications']        = 'Paràmetres de notificació';
+$lang['_syndication']          = 'Paràmetres de sindicació';
+$lang['_advanced']             = 'Paràmetres avançats';
+$lang['_network']              = 'Paràmetres de xarxa';
+$lang['_msg_setting_undefined'] = 'Falten metadades de paràmetre.';
+$lang['_msg_setting_no_class'] = 'Falta classe de paràmetre.';
+$lang['_msg_setting_no_default'] = 'No hi ha valor per defecte.';
+$lang['title']                 = 'Títol del wiki';
+$lang['start']                 = 'Nom de la pàgina d\'inici';
+$lang['lang']                  = 'Idioma';
+$lang['template']              = 'Plantilla';
+$lang['tagline']               = 'Lema (si la plantilla ho suporta)';
+$lang['sidebar']               = 'Nom de la barra lateral (si la plantilla ho suporta). Si ho deixeu buit, la barra lateral es deshabilitarà.';
+$lang['license']               = 'Amb quina llicència voleu publicar el contingut?';
+$lang['savedir']               = 'Directori per desar les dades';
+$lang['basedir']               = 'Directori base';
+$lang['baseurl']               = 'URL base';
+$lang['cookiedir']             = 'Adreça per a les galetes. Si ho deixeu en blanc, es farà servir la URL base.';
+$lang['dmode']                 = 'Mode de creació de directoris';
+$lang['fmode']                 = 'Mode de creació de fitxers';
+$lang['allowdebug']            = 'Permet depuració <strong>inhabiliteu si no és necessari</strong>';
+$lang['recent']                = 'Canvis recents';
+$lang['recent_days']           = 'Quantitat de canvis recents que es mantenen (dies)';
+$lang['breadcrumbs']           = 'Nombre d\'engrunes';
+$lang['youarehere']            = 'Camí d\'engrunes jeràrquic';
+$lang['fullpath']              = 'Mostra el camí complet de les pàgines al peu';
+$lang['typography']            = 'Substitucions tipogràfiques';
+$lang['dformat']               = 'Format de data (vg. la funció PHP <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Signatura';
+$lang['showuseras']            = 'Què cal visualitzar quan es mostra el darrer usuari que ha editat la pàgina';
+$lang['toptoclevel']           = 'Nivell superior per a la taula de continguts';
+$lang['tocminheads']           = 'Quantitat mínima d\'encapçalaments que determina si es construeix o no la taula de continguts.';
+$lang['maxtoclevel']           = 'Nivell màxim per a la taula de continguts';
+$lang['maxseclevel']           = 'Nivell màxim d\'edició de seccions';
+$lang['camelcase']             = 'Utilitza CamelCase per als enllaços';
+$lang['deaccent']              = 'Noms de pàgina nets';
+$lang['useheading']            = 'Utilitza el primer encapçalament per als noms de pàgina';
+$lang['sneaky_index']          = 'Per defecte, DokuWiki mostrarà tots els espai en la visualització d\'índex. Si activeu aquest paràmetre, s\'ocultaran aquells espais en els quals l\'usuari no té accés de lectura. Això pot fer que s\'ocultin subespais que sí que són accessibles. En algunes configuracions ACL pot fer que l\'índex resulti inutilitzable.';
+$lang['hidepages']             = 'Oculta pàgines coincidents (expressions regulars)';
+$lang['useacl']                = 'Utilitza llistes de control d\'accés';
+$lang['autopasswd']            = 'Generació automàtica de contrasenyes';
+$lang['authtype']              = 'Rerefons d\'autenticació';
+$lang['passcrypt']             = 'Mètode d\'encriptació de contrasenyes';
+$lang['defaultgroup']          = 'Grup per defecte';
+$lang['superuser']             = 'Superusuari: un grup o usuari amb accés complet a totes les pàgines i funcions independentment dels paràmetres ACL';
+$lang['manager']               = 'Administrador: un grup o usuari amb accés a certes funcions d\'administració';
+$lang['profileconfirm']        = 'Confirma amb contrasenya els canvis en el perfil';
+$lang['rememberme']            = 'Permet galetes de sessió permanents ("recorda\'m")';
+$lang['disableactions']        = 'Inhabilita accions DokuWiki';
+$lang['disableactions_check']  = 'Revisa';
+$lang['disableactions_subscription'] = 'Subscripció/cancel·lació';
+$lang['disableactions_wikicode'] = 'Mostra/exporta font';
+$lang['disableactions_other']  = 'Altres accions (separades per comes)';
+$lang['auth_security_timeout'] = 'Temps d\'espera de seguretat en l\'autenticació (segons)';
+$lang['securecookie']          = 'Les galetes que s\'han creat via HTTPS, només s\'han d\'enviar des del navegador per HTTPS? Inhabiliteu aquesta opció si només l\'inici de sessió del wiki es fa amb SSL i la navegació del wiki es fa sense seguretat.';
+$lang['usewordblock']          = 'Bloca brossa per llista de paraules';
+$lang['relnofollow']           = 'Utilitza rel="nofollow" en enllaços externs';
+$lang['indexdelay']            = 'Retard abans d\'indexar (segons)';
+$lang['mailguard']             = 'Ofusca les adreces de correu';
+$lang['iexssprotect']          = 'Comprova codi HTML o Javascript maligne en els fitxers penjats';
+$lang['usedraft']              = 'Desa automàticament un esborrany mentre s\'edita';
+$lang['htmlok']                = 'Permet HTML incrustat';
+$lang['phpok']                 = 'Permet PHP incrustat';
+$lang['locktime']              = 'Durada màxima dels fitxers de bloqueig (segons)';
+$lang['cachetime']             = 'Durada màxima de la memòria cau (segons)';
+$lang['target____wiki']        = 'Finestra de destinació en enllaços interns';
+$lang['target____interwiki']   = 'Finestra de destinació en enllaços interwiki';
+$lang['target____extern']      = 'Finestra de destinació en enllaços externs';
+$lang['target____media']       = 'Finestra de destinació en enllaços de mitjans';
+$lang['target____windows']     = 'Finestra de destinació en enllaços de Windows';
+$lang['refcheck']              = 'Comprova la referència en els fitxers de mitjans';
+$lang['gdlib']                 = 'Versió GD Lib';
+$lang['im_convert']            = 'Camí de la utilitat convert d\'ImageMagick';
+$lang['jpg_quality']           = 'Qualitat de compressió JPEG (0-100)';
+$lang['fetchsize']             = 'Mida màxima (bytes) que fetch.php pot baixar d\'un lloc extern';
+$lang['subscribers']           = 'Habilita la subscripció a pàgines';
+$lang['notify']                = 'Envia notificacions de canvis a aquesta adreça de correu';
+$lang['registernotify']        = 'Envia informació sobre nous usuaris registrats a aquesta adreça de correu';
+$lang['mailfrom']              = 'Adreça de correu remitent per a missatges automàtics';
+$lang['sitemap']               = 'Genera mapa del lloc en format Google (dies)';
+$lang['rss_type']              = 'Tipus de canal XML';
+$lang['rss_linkto']            = 'Destinació dels enllaços en el canal XML';
+$lang['rss_content']           = 'Què es mostrarà en els elements del canal XML?';
+$lang['rss_update']            = 'Interval d\'actualització del canal XML (segons)';
+$lang['rss_show_summary']      = 'Mostra resum en els títols del canal XML';
+$lang['updatecheck']           = 'Comprova actualitzacions i avisos de seguretat. DokuWiki necessitarà contactar amb update.dokuwiki.org per utilitzar aquesta característica.';
+$lang['userewrite']            = 'Utilitza URL nets';
+$lang['useslash']              = 'Utilitza la barra / com a separador d\'espais en els URL';
+$lang['sepchar']               = 'Separador de paraules en els noms de pàgina';
+$lang['canonical']             = 'Utilitza URL canònics complets';
+$lang['autoplural']            = 'Comprova formes plurals en els enllaços';
+$lang['compression']           = 'Mètode de compressió per als fitxers de les golfes';
+$lang['gzip_output']           = 'Codifica contingut xhtml com a gzip';
+$lang['compress']              = 'Sortida CSS i Javascript compacta';
+$lang['send404']               = 'Envia "HTTP 404/Page Not Found" per a les pàgines inexistents';
+$lang['broken_iua']            = 'No funciona en el vostre sistema la funció ignore_user_abort? Això podria malmetre l\'índex de cerques. Amb IIS+PHP/CGI se sap que no funciona. Vg. <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> per a més informació.';
+$lang['xsendfile']             = 'Utilitza la capçalera X-Sendfile perquè el servidor web distribueixi fitxers estàtics. No funciona amb tots els servidors web.';
+$lang['renderer_xhtml']        = 'Renderitzador que cal utilitzar per a la sortida principal (xhtml) del wiki';
+$lang['renderer__core']        = '%s (ànima del dokuwiki)';
+$lang['renderer__plugin']      = '%s (connector)';
+$lang['proxy____host']         = 'Nom del servidor intermediari';
+$lang['proxy____port']         = 'Port del servidor intermediari';
+$lang['proxy____user']         = 'Nom d\'usuari del servidor intermediari';
+$lang['proxy____pass']         = 'Contrasenya del servidor intermediari';
+$lang['proxy____ssl']          = 'Utilitza SSL per connectar amb el servidor intermediari';
+$lang['safemodehack']          = 'Utilitza el hack per a safemode';
+$lang['ftp____host']           = 'Servidor FTP per al hack de safemode';
+$lang['ftp____port']           = 'Port FTP per al hack de safemode';
+$lang['ftp____user']           = 'Nom d\'usuari FTP per al hack de safemode';
+$lang['ftp____pass']           = 'Contrasenya FTP per al hack de safemode';
+$lang['ftp____root']           = 'Directori arrel FTP per al hack de safemode';
+$lang['license_o_']            = 'Cap selecció';
+$lang['typography_o_0']        = 'cap';
+$lang['typography_o_1']        = 'només cometes dobles';
+$lang['typography_o_2']        = 'totes les cometes (podria no funcionar sempre)';
+$lang['userewrite_o_0']        = 'cap';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'intern del DokuWiki';
+$lang['deaccent_o_0']          = 'desactivat';
+$lang['deaccent_o_1']          = 'treure accents';
+$lang['deaccent_o_2']          = 'romanització';
+$lang['gdlib_o_0']             = 'GD Lib no està disponible';
+$lang['gdlib_o_1']             = 'Versió 1.x';
+$lang['gdlib_o_2']             = 'Detecció automàtica';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Resum';
+$lang['rss_content_o_diff']    = 'Diff unificat';
+$lang['rss_content_o_htmldiff'] = 'Taula de diferències en format HTML';
+$lang['rss_content_o_html']    = 'Contingut complet de la pàgina en format HTML';
+$lang['rss_linkto_o_diff']     = 'Visualització de diferències';
+$lang['rss_linkto_o_page']     = 'pàgina modificada';
+$lang['rss_linkto_o_rev']      = 'llista de revisions';
+$lang['rss_linkto_o_current']  = 'revisió actual';
+$lang['compression_o_0']       = 'cap';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'no utilitzis';
+$lang['xsendfile_o_1']         = 'Capçalera pròpia de lighttpd (anterior a la versió 1.5)';
+$lang['xsendfile_o_2']         = 'Capçalera X-Sendfile estàndard';
+$lang['xsendfile_o_3']         = 'Capçalera X-Accel-Redirect de propietat de Nginx ';
+$lang['showuseras_o_loginname'] = 'Nom d\'usuari';
+$lang['showuseras_o_username'] = 'Nom complet de l\'usuari';
+$lang['showuseras_o_email']    = 'Adreça de correu electrònic de l\'usuari (ofuscada segons el paràmetre de configuració corresponent)';
+$lang['showuseras_o_email_link'] = 'Adreça de correu electrònic amb enllaç mailto:';
+$lang['useheading_o_0']        = 'Mai';
+$lang['useheading_o_navigation'] = 'Només navegació';
+$lang['useheading_o_content']  = 'Només contingut wiki';
+$lang['useheading_o_1']        = 'Sempre';
diff --git a/wiki/lib/plugins/config/lang/cs/intro.txt b/wiki/lib/plugins/config/lang/cs/intro.txt
new file mode 100644
index 0000000..f98a62a
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/cs/intro.txt
@@ -0,0 +1,7 @@
+====== Správa nastavení ======
+
+Tuto stránku můžete používat ke správě nastavení vaší instalace DokuWiki. Nápovědu pro konkrétní položky nastavení naleznete na [[doku>config]]. Pro další detaily o tomto pluginu viz [[doku>plugin:config]].
+
+Položky se světle červeným pozadím jsou chráněné a nelze je upravovat tímto pluginem.  Položky s modrým pozadím jsou výchozí hodnoty a položky s bílým pozadím byly nastaveny lokálně v této konkrétní instalaci. Modré i bílé položky je možné upravovat.
+
+Než opustíte tuto stránku, nezapomeňte stisknout tlačítko **Uložit**, jinak budou změny ztraceny.
diff --git a/wiki/lib/plugins/config/lang/cs/lang.php b/wiki/lib/plugins/config/lang/cs/lang.php
new file mode 100644
index 0000000..80a9d29
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/cs/lang.php
@@ -0,0 +1,226 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jonáš Dyba <jonas.dyba@gmail.com>
+ * @author Bohumir Zamecnik <bohumir@zamecnik.org>
+ * @author Zbynek Krivka <zbynek.krivka@seznam.cz>
+ * @author tomas <tomas@valenta.cz>
+ * @author Marek Sacha <sachamar@fel.cvut.cz>
+ * @author Lefty <lefty@multihost.cz>
+ * @author Vojta Beran <xmamut@email.cz>
+ * @author Jakub A. Těšínský (j@kub.cz)
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Turkislav <turkislav@blabla.com>
+ * @author Daniel Slováček <danslo@danslo.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ * @author Pavel Krupička <pajdacz@gmail.com>
+ */
+$lang['menu']                  = 'Správa nastavení';
+$lang['error']                 = 'Nastavení nebyla změněna kvůli alespoň jedné neplatné položce,
+zkontrolujte prosím své úpravy a odešlete je znovu.<br />
+Neplatné hodnoty se zobrazí v červeném rámečku.';
+$lang['updated']               = 'Nastavení byla úspěšně upravena.';
+$lang['nochoice']              = '(nejsou k dispozici žádné další volby)';
+$lang['locked']                = 'Nelze upravovat soubor s nastavením. Pokud to není záměrné,
+ujistěte se, <br /> že název a přístupová práva souboru s lokálním
+nastavením jsou v pořádku.';
+$lang['danger']                = 'Pozor: Změna tohoto nastavení může způsobit nedostupnost wiki a konfiguračních menu.';
+$lang['warning']               = 'Varování: Změna nastavení může mít za následek chybné chování.';
+$lang['security']              = 'Bezpečnostní varování: Změna tohoto nastavení může způsobit bezpečnostní riziko.';
+$lang['_configuration_manager'] = 'Správa nastavení';
+$lang['_header_dokuwiki']      = 'Nastavení DokuWiki';
+$lang['_header_plugin']        = 'Nastavení pluginů';
+$lang['_header_template']      = 'Nastavení šablon';
+$lang['_header_undefined']     = 'Další nastavení';
+$lang['_basic']                = 'Základní nastavení';
+$lang['_display']              = 'Nastavení zobrazení';
+$lang['_authentication']       = 'Nastavení autentizace';
+$lang['_anti_spam']            = 'Protispamová nastavení';
+$lang['_editing']              = 'Nastavení editace';
+$lang['_links']                = 'Nastavení odkazů';
+$lang['_media']                = 'Nastavení médií';
+$lang['_notifications']        = 'Nastavení upozornění';
+$lang['_syndication']          = 'Nastavení syndikace';
+$lang['_advanced']             = 'Pokročilá nastavení';
+$lang['_network']              = 'Nastavení sítě';
+$lang['_msg_setting_undefined'] = 'Chybí metadata položky.';
+$lang['_msg_setting_no_class'] = 'Chybí třída položky.';
+$lang['_msg_setting_no_default'] = 'Chybí výchozí hodnota položky.';
+$lang['title']                 = 'Název celé wiki';
+$lang['start']                 = 'Název úvodní stránky';
+$lang['lang']                  = 'Jazyk';
+$lang['template']              = 'Šablona';
+$lang['tagline']               = 'Slogan (pokud ho šablona podporuje)';
+$lang['sidebar']               = 'Jméno stránky s obsahem postranní lišty (pokud ho šablona podporuje). Prázdné pole postranní lištu deaktivuje.';
+$lang['license']               = 'Pod jakou licencí má být tento obsah publikován?';
+$lang['savedir']               = 'Adresář pro ukládání dat';
+$lang['basedir']               = 'Kořenový adresář (např. <code>/dokuwiki/</code>). Pro autodetekci nechte prázdné.';
+$lang['baseurl']               = 'Kořenové URL (např. <code>http://www.yourserver.com</code>). Pro autodetekci nechte prázdné.';
+$lang['cookiedir']             = 'Cesta pro cookie. Není-li vyplněno, použije se kořenové URL.';
+$lang['dmode']                 = 'Přístupová práva pro vytváření adresářů';
+$lang['fmode']                 = 'Přístupová práva pro vytváření souborů';
+$lang['allowdebug']            = 'Povolit debugování. <b>Vypněte, pokud to nepotřebujete!</b>';
+$lang['recent']                = 'Počet položek v nedávných změnách';
+$lang['recent_days']           = 'Jak staré nedávné změny zobrazovat (ve dnech)';
+$lang['breadcrumbs']           = 'Počet odkazů na navštívené stránky';
+$lang['youarehere']            = 'Hierarchická "drobečková" navigace';
+$lang['fullpath']              = 'Ukazovat plnou cestu ke stránkám v patičce';
+$lang['typography']            = 'Provádět typografické nahrazování';
+$lang['dformat']               = 'Formát data (viz PHP funkci <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Podpis';
+$lang['showuseras']            = 'Co se má přesně zobrazit, když se ukazuje uživatel, který naposledy editoval stránku';
+$lang['toptoclevel']           = 'Nejvyšší úroveň, kterou začít automaticky generovaný obsah';
+$lang['tocminheads']           = 'Nejnižší počet hlavních nadpisů, aby se vygeneroval obsah';
+$lang['maxtoclevel']           = 'Maximální počet úrovní v automaticky generovaném obsahu';
+$lang['maxseclevel']           = 'Nejnižší úroveň pro editaci i po sekcích';
+$lang['camelcase']             = 'Používat CamelCase v odkazech';
+$lang['deaccent']              = 'Čistit názvy stránek';
+$lang['useheading']            = 'Používat první nadpis jako název stránky';
+$lang['sneaky_index']          = 'Ve výchozím nastavení DokuWiki zobrazuje v indexu všechny
+jmenné prostory. Zapnutím této volby se skryjí ty jmenné prostory,
+k nimž uživatel nemá právo pro čtení, což může ale způsobit, že
+vnořené jmenné prostory, k nimž právo má, budou přesto skryty.
+To může mít za následek, že index bude při některých
+nastaveních ACL nepoužitelný.';
+$lang['hidepages']             = 'Skrýt stránky odpovídající vzoru (regulární výrazy)';
+$lang['useacl']                = 'Používat přístupová práva (ACL)';
+$lang['autopasswd']            = 'Generovat hesla automaticky';
+$lang['authtype']              = 'Metoda autentizace';
+$lang['passcrypt']             = 'Metoda šifrování hesel';
+$lang['defaultgroup']          = 'Výchozí skupina';
+$lang['superuser']             = 'Superuživatel - skupina nebo uživatel s plnými právy pro přístup ke všem stránkách bez ohledu na nastavení ACL';
+$lang['manager']               = 'Manažer - skupina nebo uživatel s přístupem k některým správcovským funkcím';
+$lang['profileconfirm']        = 'Potvrdit změny v profilu zadáním hesla';
+$lang['rememberme']            = 'Povolit trvaté přihlašovací cookies (zapamatuj si mě)';
+$lang['disableactions']        = 'Vypnout DokuWiki akce';
+$lang['disableactions_check']  = 'Zkontrolovat';
+$lang['disableactions_subscription'] = 'Přihlásit se/Odhlásit se ze seznamu pro odběr změn';
+$lang['disableactions_wikicode'] = 'Prohlížet zdrojové kódy/Export wiki textu';
+$lang['disableactions_profile_delete'] = 'Smazat vlasní účet';
+$lang['disableactions_other']  = 'Další akce (oddělené čárkou)';
+$lang['disableactions_rss']    = 'XMS syndikace (RSS)';
+$lang['auth_security_timeout'] = 'Časový limit pro autentikaci (v sekundách)';
+$lang['securecookie']          = 'Má prohlížeč posílat cookies nastavené přes HTTPS opět jen přes HTTPS? Vypněte tuto volbu, pokud chcete, aby bylo pomocí SSL zabezpečeno pouze přihlašování do wiki, ale obsah budete prohlížet nezabezpečeně.';
+$lang['remote']                = 'Zapne API systému, umožňující jiným aplikacím vzdálený přístup k wiki pomoci XML-RPC nebo jiných mechanizmů.';
+$lang['remoteuser']            = 'Omezit přístup k API na tyto uživatelské skupiny či uživatele (seznam oddělený čárkami). Prázdné pole povolí přístup všem.';
+$lang['usewordblock']          = 'Blokovat spam za použití seznamu známých spamových slov';
+$lang['relnofollow']           = 'Používat rel="nofollow" na externí odkazy';
+$lang['indexdelay']            = 'Časová prodleva před indexací (v sekundách)';
+$lang['mailguard']             = 'Metoda "zamaskování" emailových adres';
+$lang['iexssprotect']          = 'Zkontrolovat nahrané soubory vůči možnému škodlivému JavaScriptu či HTML';
+$lang['usedraft']              = 'Během editace ukládat koncept automaticky';
+$lang['htmlok']                = 'Povolit vložené HTML';
+$lang['phpok']                 = 'Povolit vložené PHP';
+$lang['locktime']              = 'Maximální životnost zámkových souborů (v sekundách)';
+$lang['cachetime']             = 'Maximální životnost cache (v sekundách)';
+$lang['target____wiki']        = 'Cílové okno pro interní odkazy';
+$lang['target____interwiki']   = 'Cílové okno pro interwiki odkazy';
+$lang['target____extern']      = 'Cílové okno pro externí odkazy';
+$lang['target____media']       = 'Cílové okno pro odkazy na média';
+$lang['target____windows']     = 'Cílové okno pro odkazy na windows sdílení';
+$lang['mediarevisions']        = 'Aktivovat revize souborů';
+$lang['refcheck']              = 'Kontrolovat odkazy na média (před vymazáním)';
+$lang['gdlib']                 = 'Verze GD knihovny';
+$lang['im_convert']            = 'Cesta k nástroji convert z balíku ImageMagick';
+$lang['jpg_quality']           = 'Kvalita komprese JPEG (0-100)';
+$lang['fetchsize']             = 'Maximální velikost souboru (v bajtech), co ještě fetch.php bude stahovat z externích zdrojů';
+$lang['subscribers']           = 'Možnost přihlásit se k odběru novinek stránky';
+$lang['subscribe_time']        = 'Časový interval v sekundách, ve kterém jsou posílány změny a souhrny změn. Interval by neměl být kratší než čas uvedený v recent_days.';
+$lang['notify']                = 'Posílat oznámení o změnách na následující emailovou adresu';
+$lang['registernotify']        = 'Posílat informace o nově registrovaných uživatelích na tuto mailovou adresu';
+$lang['mailfrom']              = 'E-mailová adresa, která se bude používat pro automatické maily';
+$lang['mailprefix']            = 'Předpona předmětu e-mailu, která se bude používat pro automatické maily';
+$lang['htmlmail']              = 'Posílat emaily v HTML (hezčí ale větší). Při vypnutí budou posílány jen textové emaily.';
+$lang['sitemap']               = 'Generovat Google sitemap (interval ve dnech)';
+$lang['rss_type']              = 'Typ XML kanálu';
+$lang['rss_linkto']            = 'XML kanál odkazuje na';
+$lang['rss_content']           = 'Co zobrazovat v položkách XML kanálu?';
+$lang['rss_update']            = 'Interval aktualizace XML kanálu (v sekundách)';
+$lang['rss_show_summary']      = 'XML kanál ukazuje souhrn v titulku';
+$lang['rss_media']             = 'Jaký typ změn má být uveden v kanálu XML';
+$lang['rss_media_o_pages']     = 'stránky';
+$lang['rss_media_o_media']     = 'média';
+$lang['updatecheck']           = 'Kontrolovat aktualizace a bezpečnostní varování? DokuWiki potřebuje pro tuto funkci přístup k update.dokuwiki.org';
+$lang['userewrite']            = 'Používat "pěkná" URL';
+$lang['useslash']              = 'Používat lomítko jako oddělovač jmenných prostorů v URL';
+$lang['sepchar']               = 'Znak pro oddělování slov v názvech stránek';
+$lang['canonical']             = 'Používat plně kanonická URL';
+$lang['fnencode']              = 'Metoda pro kódování ne-ASCII názvů souborů';
+$lang['autoplural']            = 'Kontrolovat plurálové tvary v odkazech';
+$lang['compression']           = 'Metoda komprese pro staré verze';
+$lang['gzip_output']           = 'Používat pro xhtml Content-Encoding gzip';
+$lang['compress']              = 'Zahustit CSS a JavaScript výstup';
+$lang['cssdatauri']            = 'Velikost [v bajtech] obrázků odkazovaných v CSS souborech, které budou pro ušetření HTTP požadavku vestavěny do stylu. Doporučená hodnota je mezi <code>400</code> a <code>600</code> bajty. Pro vypnutí nastavte na <code>0</code>.';
+$lang['send404']               = 'Posílat "HTTP 404/Page Not Found" pro neexistují stránky';
+$lang['broken_iua']            = 'Je na vašem systému funkce ignore_user_abort porouchaná? To může způsobovat nefunkčnost vyhledávacího indexu. O kombinaci IIS+PHP/CGI je známo, že nefunguje správně. Viz <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> pro více informací.';
+$lang['xsendfile']             = 'Používat X-Sendfile hlavničky pro download statických souborů z webserveru? Je však požadována podpora této funkce na straně Vašeho webserveru.';
+$lang['renderer_xhtml']        = 'Vykreslovací jádro pro hlavní (xhtml) výstup wiki';
+$lang['renderer__core']        = '%s (jádro DokuWiki)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['search_fragment_o_starts_with'] = 'začíná s';
+$lang['search_fragment_o_ends_with'] = 'končí s';
+$lang['search_fragment_o_contains'] = 'obsahuje';
+$lang['dnslookups']            = 'DokuWiki zjišťuje DNS jména pro vzdálené IP adresy uživatelů, kteří editují stránky. Pokud máte pomalý, nebo nefunkční DNS server, nebo nepotřebujete tuto funkci, tak tuto volbu zrušte.';
+$lang['jquerycdn']             = 'Mají být skripty jQuery a jQuery UI načítány z CDN?
+Vzniknou tím další HTTP dotazy, ale soubory se mohou načíst rychleji a uživatelé je už mohou mít ve vyrovnávací paměti.';
+$lang['jquerycdn_o_0']         = 'Bez CDN, pouze lokální doručení';
+$lang['jquerycdn_o_jquery']    = 'CDN na code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN na cdnjs.com';
+$lang['proxy____host']         = 'Název proxy serveru';
+$lang['proxy____port']         = 'Proxy port';
+$lang['proxy____user']         = 'Proxy uživatelské jméno';
+$lang['proxy____pass']         = 'Proxy heslo';
+$lang['proxy____ssl']          = 'Použít SSL při připojení k proxy';
+$lang['proxy____except']       = 'Regulární výrazy pro URL, pro které bude přeskočena proxy.';
+$lang['safemodehack']          = 'Zapnout safemode hack';
+$lang['ftp____host']           = 'FTP server pro safemode hack';
+$lang['ftp____port']           = 'FTP port pro safemode hack';
+$lang['ftp____user']           = 'FTP uživatelské jméno pro safemode hack';
+$lang['ftp____pass']           = 'FTP heslo pro safemode hack';
+$lang['ftp____root']           = 'FTP kořenový adresář pro safemode hack';
+$lang['license_o_']            = 'Nic nevybráno';
+$lang['typography_o_0']        = 'vypnuto';
+$lang['typography_o_1']        = 'Pouze uvozovky';
+$lang['typography_o_2']        = 'Všechny typy uvozovek a apostrofů (nemusí vždy fungovat)';
+$lang['userewrite_o_0']        = 'vypnuto';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'interní metoda DokuWiki';
+$lang['deaccent_o_0']          = 'vypnuto';
+$lang['deaccent_o_1']          = 'odstranit diakritiku';
+$lang['deaccent_o_2']          = 'převést na latinku';
+$lang['gdlib_o_0']             = 'GD knihovna není k dispozici';
+$lang['gdlib_o_1']             = 'Verze 1.x';
+$lang['gdlib_o_2']             = 'Autodetekce';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstraktní';
+$lang['rss_content_o_diff']    = 'Sjednocený Diff';
+$lang['rss_content_o_htmldiff'] = 'diff tabulka v HTML formátu';
+$lang['rss_content_o_html']    = 'Úplný HTML obsah stránky';
+$lang['rss_linkto_o_diff']     = 'přehled změn';
+$lang['rss_linkto_o_page']     = 'stránku samotnou';
+$lang['rss_linkto_o_rev']      = 'seznam revizí';
+$lang['rss_linkto_o_current']  = 'nejnovější revize';
+$lang['compression_o_0']       = 'vypnuto';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nepoužívat';
+$lang['xsendfile_o_1']         = 'Proprietární hlavička lighttpd (před releasem 1.5)';
+$lang['xsendfile_o_2']         = 'Standardní hlavička X-Sendfile';
+$lang['xsendfile_o_3']         = 'Proprietární hlavička Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Přihlašovací jméno';
+$lang['showuseras_o_username'] = 'Celé jméno uživatele';
+$lang['showuseras_o_username_link'] = 'Celé uživatelské jméno jako odkaz mezi wiki';
+$lang['showuseras_o_email']    = 'E-mailová adresa uživatele ("zamaskována" aktuálně nastavenou metodou)';
+$lang['showuseras_o_email_link'] = 'E-mailová adresa uživatele jako mailto: odkaz';
+$lang['useheading_o_0']        = 'Nikdy';
+$lang['useheading_o_navigation'] = 'Pouze pro navigaci';
+$lang['useheading_o_content']  = 'Pouze pro wiki obsah';
+$lang['useheading_o_1']        = 'Vždy';
+$lang['readdircache']          = 'Maximální stáří readdir cache (sec)';
diff --git a/wiki/lib/plugins/config/lang/cy/intro.txt b/wiki/lib/plugins/config/lang/cy/intro.txt
new file mode 100644
index 0000000..02ccec5
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/cy/intro.txt
@@ -0,0 +1,7 @@
+====== Rheolwr Ffurfwedd ======
+
+Defnyddiwch y dudalen hon i reoli gosodiadau eich arsefydliad DokuWiki.  Am gymorth ar osodiadau unigol ewch i [[doku>config]]. Am wybodaeth bellach ar yr ategyn hwn ewch i [[doku>plugin:config]].
+
+Mae gosodiadau gyda chefndir coch golau wedi\'u hamddiffyn a \'sdim modd eu newid gyda\'r ategyn hwn. Mae gosodiaadau gyda chefndir glas yn dynodi gwerthoedd diofyn ac mae gosodiadau gyda chefndir gwyn wedi\'u gosod yn lleol ar gyfer yr arsefydliad penodol hwn.  Mae modd newid gosodiadau gwyn a glas.
+
+Cofiwch bwyso y botwm **Cadw** cyn gadael y dudalen neu caiff eich newidiadau eu colli.
diff --git a/wiki/lib/plugins/config/lang/cy/lang.php b/wiki/lib/plugins/config/lang/cy/lang.php
new file mode 100644
index 0000000..4fa8ab8
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/cy/lang.php
@@ -0,0 +1,262 @@
+<?php
+/**
+ * welsh language file
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Christopher Smith <chris@jalakai.co.uk>
+ * @author     Matthias Schulte <dokuwiki@lupo49.de>
+ * @author     Alan Davies <ben.brynsadler@gmail.com>
+ */
+
+// for admin plugins, the menu prompt to be displayed in the admin menu
+// if set here, the plugin doesn't need to override the getMenuText() method
+$lang['menu']       = 'Gosodiadau Ffurwedd';
+
+$lang['error']      = 'Gosodiadau heb eu diweddaru oherwydd gwerth annilys, gwiriwch eich newidiadau ac ailgyflwyno.
+                       <br />Caiff y gwerth(oedd) anghywir ei/eu dangos gydag ymyl coch.';
+$lang['updated']    = 'Diweddarwyd gosodiadau\'n llwyddiannus.';
+$lang['nochoice']   = '(dim dewisiadau eraill ar gael)';
+$lang['locked']     = '\'Sdim modd diweddaru\'r ffeil osodiadau, os ydy hyn yn anfwriadol, <br />
+                       sicrhewch fod enw\'r ffeil osodiadau a\'r hawliau lleol yn gywir.';
+
+$lang['danger']     = 'Perygl: Gall newid yr opsiwn hwn wneud eich wici a\'r ddewislen ffurfwedd yn anghyraeddadwy.';
+$lang['warning']    = 'Rhybudd: Gall newid yr opsiwn hwn achosi ymddygiad anfwriadol.';
+$lang['security']   = 'Rhybudd Diogelwch: Gall newid yr opsiwn hwn achosi risg diogelwch.';
+
+/* --- Config Setting Headers --- */
+$lang['_configuration_manager'] = 'Rheolwr Ffurfwedd'; //same as heading in intro.txt
+$lang['_header_dokuwiki'] = 'DokuWiki';
+$lang['_header_plugin'] = 'Ategyn';
+$lang['_header_template'] = 'Templed';
+$lang['_header_undefined'] = 'Gosodiadau Amhenodol';
+
+/* --- Config Setting Groups --- */
+$lang['_basic'] = 'Sylfaenol';
+$lang['_display'] = 'Dangos';
+$lang['_authentication'] = 'Dilysiad';
+$lang['_anti_spam'] = 'Gwrth-Sbam';
+$lang['_editing'] = 'Yn Golygu';
+$lang['_links'] = 'Dolenni';
+$lang['_media'] = 'Cyfrwng';
+$lang['_notifications'] = 'Hysbysiad';
+$lang['_syndication']   = 'Syndication (RSS)'; //angen newid
+$lang['_advanced'] = 'Uwch';
+$lang['_network'] = 'Rhwydwaith';
+
+/* --- Undefined Setting Messages --- */
+$lang['_msg_setting_undefined'] = 'Dim gosodiad metadata.';
+$lang['_msg_setting_no_class'] = 'Dim gosodiad dosbarth.';
+$lang['_msg_setting_no_default'] = 'Dim gwerth diofyn.';
+
+/* -------------------- Config Options --------------------------- */
+
+/* Basic Settings */
+$lang['title']       = 'Teitl y wici h.y. enw\'ch wici';
+$lang['start']       = 'Enw\'r dudalen i\'w defnyddio fel man cychwyn ar gyfer pob namespace'; //namespace
+$lang['lang']        = 'Iaith y rhyngwyneb';
+$lang['template']    = 'Templed h.y. dyluniad y wici.';
+$lang['tagline']     = 'Taglinell (os yw\'r templed yn ei gynnal)';
+$lang['sidebar']     = 'Enw tudalen y bar ochr (os yw\'r templed yn ei gynnal), Mae maes gwag yn analluogi\'r bar ochr';
+$lang['license']     = 'O dan ba drwydded dylai\'ch cynnwys gael ei ryddhau?';
+$lang['savedir']     = 'Ffolder ar gyfer cadw data';
+$lang['basedir']     = 'Llwybr y gweinydd (ee. <code>/dokuwiki/</code>). Gadewch yn wag ar gyfer awtoddatgeliad.';
+$lang['baseurl']     = 'URL y gweinydd (ee. <code>http://www.yourserver.com</code>). Gadewch yn wag ar gyfer awtoddatgeliad.';
+$lang['cookiedir']   = 'Llwybr cwcis. Gadewch yn wag i ddefnyddio \'baseurl\'.';
+$lang['dmode']       = 'Modd creu ffolderi';
+$lang['fmode']       = 'Modd creu ffeiliau';
+$lang['allowdebug']  = 'Caniatáu dadfygio. <b>Analluogwch os nac oes angen hwn!</b>';
+
+/* Display Settings */
+$lang['recent']      = 'Nifer y cofnodion y dudalen yn y newidiadau diweddar';
+$lang['recent_days'] = 'Sawl newid diweddar i\'w cadw (diwrnodau)';
+$lang['breadcrumbs'] = 'Nifer y briwsion "trywydd". Gosodwch i 0 i analluogi.';
+$lang['youarehere']  = 'Defnyddiwch briwsion hierarchaidd (byddwch chi yn debygol o angen analluogi\'r opsiwn uchod wedyn)';
+$lang['fullpath']    = 'Datgelu llwybr llawn y tudalennau yn y troedyn';
+$lang['typography']  = 'Gwnewch amnewidiadau argraffyddol';
+$lang['dformat']     = 'Fformat dyddiad (gweler swyddogaeth <a href="http://php.net/strftime">strftime</a> PHP)';
+$lang['signature']   = 'Yr hyn i\'w mewnosod gyda\'r botwm llofnod yn y golygydd';
+$lang['showuseras']  = 'Yr hyn i\'w harddangos wrth ddangos y defnyddiwr a wnaeth olygu\'r dudalen yn olaf';
+$lang['toptoclevel'] = 'Lefel uchaf ar gyfer tabl cynnwys';
+$lang['tocminheads'] = 'Isafswm y penawdau sy\'n penderfynu os ydy\'r tabl cynnwys yn cael ei adeiladu';
+$lang['maxtoclevel'] = 'Lefel uchaf ar gyfer y tabl cynnwys';
+$lang['maxseclevel'] = 'Lefel uchaf adran olygu';
+$lang['camelcase']   = 'Defnyddio CamelCase ar gyfer dolenni';
+$lang['deaccent']    = 'Sut i lanhau enwau tudalennau';
+$lang['useheading']  = 'Defnyddio\'r pennawd cyntaf ar gyfer enwau tudalennau';
+$lang['sneaky_index'] = 'Yn ddiofyn, bydd DokuWiki yn dangos pob namespace yn y map safle. Bydd galluogi yr opsiwn hwn yn cuddio\'r rheiny lle \'sdim hawliau darllen gan y defnyddiwr. Gall hwn achosi cuddio subnamespaces cyraeddadwy a fydd yn gallu peri\'r indecs i beidio â gweithio gyda gosodiadau ACL penodol.'; //namespace
+$lang['hidepages']   = 'Cuddio tudalennau sy\'n cydweddu gyda\'r mynegiad rheolaidd o\'r chwiliad, y map safle ac indecsau awtomatig eraill';
+
+/* Authentication Settings */
+$lang['useacl']      = 'Defnyddio rhestrau rheoli mynediad';
+$lang['autopasswd']  = 'Awtogeneradu cyfrineiriau';
+$lang['authtype']    = 'Ôl-brosesydd dilysu';
+$lang['passcrypt']   = 'Dull amgryptio cyfrineiriau';
+$lang['defaultgroup']= 'Grŵp diofyn, caiff pob defnyddiwr newydd ei osod yn y grŵp hwn';
+$lang['superuser']   = 'Uwchddefnyddiwr - grŵp, defnyddiwr neu restr gwahanwyd gan goma defnyddiwr1,@group1,defnyddiwr2 gyda mynediad llawn i bob tudalen beth bynnag y gosodiadau ACL';
+$lang['manager']     = 'Rheolwr - grŵp, defnyddiwr neu restr gwahanwyd gan goma defnyddiwr1,@group1,defnyddiwr2 gyda mynediad i swyddogaethau rheoli penodol';
+$lang['profileconfirm'] = 'Cadrnhau newidiadau proffil gyda chyfrinair';
+$lang['rememberme'] = 'Caniatáu cwcis mewngofnodi parhaol (cofio fi)';
+$lang['disableactions'] = 'Analluogi gweithredoedd DokuWiki';
+$lang['disableactions_check'] = 'Gwirio';
+$lang['disableactions_subscription'] = 'Tanysgrifio/Dad-tanysgrifio';
+$lang['disableactions_wikicode'] = 'Dangos ffynhonnell/Allforio Crai';
+$lang['disableactions_profile_delete'] = 'Dileu Cyfrif Eu Hunain';
+$lang['disableactions_other'] = 'Gweithredoedd eraill (gwahanu gan goma)';
+$lang['disableactions_rss'] = 'XML Syndication (RSS)'; //angen newid hwn
+$lang['auth_security_timeout'] = 'Terfyn Amser Diogelwch Dilysiad (eiliadau)';
+$lang['securecookie'] = 'A ddylai cwcis sydd wedi cael eu gosod gan HTTPS gael eu hanfon trwy HTTPS yn unig gan y porwr? Analluogwch yr opsiwn hwn dim ond pan fydd yr unig mewngofnodiad i\'ch wici wedi\'i ddiogelu gydag SSL ond mae pori\'r wici yn cael ei wneud heb ddiogelu.';
+$lang['remote']      = 'Galluogi\'r system API pell. Mae hwn yn galluogi apps eraill i gael mynediad i\'r wici trwy XML-RPC neu fecanweithiau eraill.';
+$lang['remoteuser']  = 'Cyfyngu mynediad API pell i grwpiau neu ddefnydwyr wedi\'u gwahanu gan goma yma. Gadewch yn wag i roi mynediad i bawb.';
+
+/* Anti-Spam Settings */
+$lang['usewordblock']= 'Blocio sbam wedi selio ar restr eiriau';
+$lang['relnofollow'] = 'Defnyddio rel="nofollow" ar ddolenni allanol';
+$lang['indexdelay']  = 'Oediad cyn indecsio (eil)';
+$lang['mailguard']   = 'Tywyllu cyfeiriadau ebost';
+$lang['iexssprotect']= 'Gwirio ffeiliau a lanlwythwyd am JavaScript neu god HTML sydd efallai\'n faleisis';
+
+/* Editing Settings */
+$lang['usedraft']    = 'Cadw drafft yn awtomatig wrth olygu';
+$lang['htmlok']      = 'Caniatáu HTML wedi\'i fewnosod';
+$lang['phpok']       = 'Caniatáu PHP wedi\'i fewnosod';
+$lang['locktime']    = 'Oed mwyaf ar gyfer cloi ffeiliau (eil)';
+$lang['cachetime']   = 'Oed mwyaf ar gyfer y storfa (eil)';
+
+/* Link settings */
+$lang['target____wiki']      = 'Ffenestr darged ar gyfer dolenni mewnol';
+$lang['target____interwiki'] = 'Ffenestr darged ar gyfer dolenni interwiki';
+$lang['target____extern']    = 'Ffenestr darged ar gyfer dolenni allanol';
+$lang['target____media']     = 'Ffenestr darged ar gyfer dolenni cyfrwng';
+$lang['target____windows']   = 'Ffenestr darged ar gyfer dolenni ffenestri';
+
+/* Media Settings */
+$lang['mediarevisions'] = 'Galluogi Mediarevisions?';
+$lang['refcheck']    = 'Gwirio os ydy ffeil gyfrwng yn dal yn cael ei defnydio cyn ei dileu hi';
+$lang['gdlib']       = 'Fersiwn GD Lib';
+$lang['im_convert']  = 'Llwybr i declyn trosi ImageMagick';
+$lang['jpg_quality'] = 'Ansawdd cywasgu JPG (0-100)';
+$lang['fetchsize']   = 'Uchafswm maint (beit) gall fetch.php lawlwytho o URL allanol, ee. i storio ac ailfeintio delweddau allanol.';
+
+/* Notification Settings */
+$lang['subscribers'] = 'Caniatáu defnyddwyr i danysgrifio i newidiadau tudalen gan ebost';
+$lang['subscribe_time'] = 'Yr amser cyn caiff rhestrau tanysgrifio a chrynoadau eu hanfon (eil); Dylai hwn fod yn llai na\'r amser wedi\'i gosod mewn recent_days.';
+$lang['notify']      = 'Wastad anfon hysbysiadau newidiadau i\'r cyfeiriad ebost hwn';
+$lang['registernotify'] = 'Wastad anfon gwybodaeth ar ddefnyddwyr newydd gofrestru i\'r cyfeiriad ebost hwn';
+$lang['mailfrom']    = 'Cyfeiriad anfon ebyst i\'w ddefnyddio ar gyfer pyst awtomatig';
+$lang['mailprefix']  = 'Rhagddodiad testun ebyst i\'w ddefnyddio ar gyfer pyst awtomatig. Gadewch yn wag i ddefnyddio teitl y wici';
+$lang['htmlmail']    = 'Anfonwch ebyst aml-ddarn HTML sydd yn edrych yn well, ond sy\'n fwy mewn maint. Analluogwch ar gyfer pyst testun plaen yn unig.';
+
+/* Syndication Settings */
+$lang['sitemap']     = 'Generadu map safle Google mor aml â hyn (mewn diwrnodau). 0 i anallogi';
+$lang['rss_type']    = 'Math y ffrwd XML';
+$lang['rss_linkto']  = 'Ffrwd XML yn cysylltu â';
+$lang['rss_content'] = 'Beth i\'w ddangos mewn eitemau\'r ffrwd XML?';
+$lang['rss_update']  = 'Cyfnod diwedaru ffrwd XML (eil)';
+$lang['rss_show_summary'] = 'Dangos crynodeb mewn teitl y ffrwd XML';
+$lang['rss_media']   = 'Pa fath newidiadau a ddylai cael eu rhestru yn y ffrwd XML??';
+
+/* Advanced Options */
+$lang['updatecheck'] = 'Gwirio am ddiweddariadau a rhybuddion diogelwch? Mae\'n rhaid i DokuWiki gysylltu ag update.dokuwiki.org ar gyfer y nodwedd hon.';
+$lang['userewrite']  = 'Defnyddio URLs pert';
+$lang['useslash']    = 'Defnyddio slaes fel gwahanydd namespace mewn URL';
+$lang['sepchar']     = 'Gwanahydd geiriau mewn enw tudalennau';
+$lang['canonical']   = 'Defnyddio URLs canonaidd llawn';
+$lang['fnencode']    = 'Dull amgodio enw ffeiliau \'non-ASCII\'.';
+$lang['autoplural']  = 'Gwirio am ffurfiau lluosog mewn dolenni';
+$lang['compression'] = 'Dull cywasgu ar gyfer ffeiliau llofft (hen adolygiadau)';
+$lang['gzip_output'] = 'Defnyddio gzip Content-Encoding ar gyfer xhtml'; //pwy a wyr
+$lang['compress']    = 'Cywasgu allbwn CSS a javascript';
+$lang['cssdatauri']  = 'Uchafswm maint mewn beitiau ar gyfer delweddau i\'w cyfeirio atynt mewn ffeiliau CSS a ddylai cael eu mewnosod i\'r ddalen arddull i leihau gorbenion pennyn cais HTTP. Mae <code>400</code> i <code>600</code> beit yn werth da. Gosodwch i <code>0</code> i\'w analluogi.';
+$lang['send404']     = 'Anfon "HTTP 404/Page Not Found" ar gyfer tudalennau sy ddim yn bodoli';
+$lang['broken_iua']  = 'Ydy\'r swyddogaeth ignore_user_abort wedi torri ar eich system? Gall hwn achosi\'r indecs chwilio i beidio â gweithio. Rydym yn gwybod bod IIS+PHP/CGI wedi torri. Gweler <a href="http://bugs.dokuwiki.org/?do=details&amp;task_id=852">Bug 852</a> am wybodaeth bellach.';
+$lang['xsendfile']   = 'Defnyddio\'r pennyn X-Sendfile i ganiatáu\'r gweinydd gwe i ddanfon ffeiliau statig? Mae\'n rhaid bod eich gweinydd gwe yn caniatáu hyn.';
+$lang['renderer_xhtml']   = 'Cyflwynydd i ddefnyddio ar gyfer prif allbwn (xhtml) y wici';
+$lang['renderer__core']   = '%s (craidd dokuwiki)';
+$lang['renderer__plugin'] = '%s (ategyn)';
+
+/* Network Options */
+$lang['dnslookups'] = 'Bydd DokuWiki yn edrych i fyny enwau gwesteiwyr ar gyfer cyfeiriadau IP pell y defnyddwyr hynny sy\'n golygu tudalennau. Os oes gweinydd DNS sy\'n araf neu sy ddim yn gweithio \'da chi neu \'dych chi ddim am ddefnyddio\'r nodwedd hon, analluogwch yr opsiwn hwn.';
+
+/* Proxy Options */
+$lang['proxy____host']    = 'Enw\'r gweinydd procsi';
+$lang['proxy____port']    = 'Porth procsi';
+$lang['proxy____user']    = 'Defnyddair procsi';
+$lang['proxy____pass']    = 'Cyfrinair procsi';
+$lang['proxy____ssl']     = 'Defnyddio SSL i gysylltu â\'r procsi';
+$lang['proxy____except']  = 'Mynegiad rheolaidd i gydweddu URL ar gyfer y procsi a ddylai cael eu hanwybyddu.';
+
+/* Safemode Hack */
+$lang['safemodehack'] = 'Galluogi safemode hack';
+$lang['ftp____host'] = 'Gweinydd FTP safemode hack';
+$lang['ftp____port'] = 'Porth FTP safemode hack';
+$lang['ftp____user'] = 'Defnyddair FTP safemode hack';
+$lang['ftp____pass'] = 'Cyfrinair FTP safemode hack';
+$lang['ftp____root'] = 'Gwraiddffolder FTP safemode hack';
+
+/* License Options */
+$lang['license_o_'] = 'Dim wedi\'i ddewis';
+
+/* typography options */
+$lang['typography_o_0'] = 'dim';
+$lang['typography_o_1'] = 'eithrio dyfynodau sengl';
+$lang['typography_o_2'] = 'cynnwys dyfynodau sengl (efallai ddim yn gweithio pob tro)';
+
+/* userewrite options */
+$lang['userewrite_o_0'] = 'dim';
+$lang['userewrite_o_1'] = '.htaccess';
+$lang['userewrite_o_2'] = 'DokuWiki mewnol';
+
+/* deaccent options */
+$lang['deaccent_o_0'] = 'bant';
+$lang['deaccent_o_1'] = 'tynnu acenion';
+$lang['deaccent_o_2'] = 'rhufeinio';
+
+/* gdlib options */
+$lang['gdlib_o_0'] = 'GD Lib ddim ar gael';
+$lang['gdlib_o_1'] = 'Fersiwn 1.x';
+$lang['gdlib_o_2'] = 'Awtoddatgeliad';
+
+/* rss_type options */
+$lang['rss_type_o_rss']   = 'RSS 0.91';
+$lang['rss_type_o_rss1']  = 'RSS 1.0';
+$lang['rss_type_o_rss2']  = 'RSS 2.0';
+$lang['rss_type_o_atom']  = 'Atom 0.3';
+$lang['rss_type_o_atom1'] = 'Atom 1.0';
+
+/* rss_content options */
+$lang['rss_content_o_abstract'] = 'Crynodeb';
+$lang['rss_content_o_diff']     = 'Gwahan. Unedig';
+$lang['rss_content_o_htmldiff'] = 'Gwahaniaethau ar ffurf tabl HTML';
+$lang['rss_content_o_html']     = 'Cynnwys tudalen HTML llawn';
+
+/* rss_linkto options */
+$lang['rss_linkto_o_diff']    = 'golwg gwahaniaethau';
+$lang['rss_linkto_o_page']    = 'y dudalen a adolygwyd';
+$lang['rss_linkto_o_rev']     = 'rhestr adolygiadau';
+$lang['rss_linkto_o_current'] = 'y dudalen gyfredol';
+
+/* compression options */
+$lang['compression_o_0']   = 'dim';
+$lang['compression_o_gz']  = 'gzip';
+$lang['compression_o_bz2'] = 'bz2';
+
+/* xsendfile header */
+$lang['xsendfile_o_0'] = "peidio â defnyddio";
+$lang['xsendfile_o_1'] = 'Pennyn perchnogol lighttpd (cyn rhyddhad 1.5)';
+$lang['xsendfile_o_2'] = 'Pennyn safonol X-Sendfile';
+$lang['xsendfile_o_3'] = 'Pennyn perchnogol Nginx X-Accel-Redirect';
+
+/* Display user info */
+$lang['showuseras_o_loginname']     = 'Enw mewngofnodi';
+$lang['showuseras_o_username']      = "Enw llawn y defnyddiwr";
+$lang['showuseras_o_username_link'] = "Enw llawn y defnyddiwr fel dolen defnyddiwr interwiki";
+$lang['showuseras_o_email']         = "Cyfeiriad e-bost y defnyddiwr (tywyllu yn ôl gosodiad mailguard)";
+$lang['showuseras_o_email_link']    = "Cyfeiriad e-bost y defnyddiwr fel dolen mailto:";
+
+/* useheading options */
+$lang['useheading_o_0'] = 'Byth';
+$lang['useheading_o_navigation'] = 'Llywio yn Unig';
+$lang['useheading_o_content'] = 'Cynnwys Wici yn Unig';
+$lang['useheading_o_1'] = 'Wastad';
+
+$lang['readdircache'] = 'Uchafswm amser ar gyfer storfa readdir (eil)';
diff --git a/wiki/lib/plugins/config/lang/da/intro.txt b/wiki/lib/plugins/config/lang/da/intro.txt
new file mode 100644
index 0000000..14cd3d6
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/da/intro.txt
@@ -0,0 +1,7 @@
+====== Opsætningsstyring ======
+
+Brug denne side til at kontrollere indstillingerne for din Dokuwiki-opsætning.  For at få hjælp med specifikke indstillinger, se [[doku>config]]. For flere detaljer om denne udvidelse, se [[doku>plugin:config]].
+
+Indstillinger vist med lys rød baggrund er beskyttede og kan ikke ændres med denne udvidelse. Indstillinger vist med blå baggrund er standardindstillinger og indstillinger vist med hvid baggrund er blevet sat lokalt denne konkrete opsætning.  Både blå og hvide indstillinger kan ændres.
+
+Husk at trykke på **Gem**-knappen før du forlader siden, for at du ikke mister dine ændringer.
diff --git a/wiki/lib/plugins/config/lang/da/lang.php b/wiki/lib/plugins/config/lang/da/lang.php
new file mode 100644
index 0000000..7546264
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/da/lang.php
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kenneth Schack Banner <kescba@gmail.com>
+ * @author Jon Theil Nielsen <jontheil@gmail.com>
+ * @author Lars Næsbye Christensen <larsnaesbye@stud.ku.dk>
+ * @author Kalle Sommer Nielsen <kalle@php.net>
+ * @author Esben Laursen <hyber@hyber.dk>
+ * @author Harith <haj@berlingske.dk>
+ * @author Daniel Ejsing-Duun <dokuwiki@zilvador.dk>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author rasmus <rasmus@kinnerup.com>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['menu']                  = 'Opsætningsindstillinger';
+$lang['error']                 = 'Indstillingerne blev ikke opdateret på grund af en ugyldig værdi, Gennemse venligst dine ændringer og gem dem igen.
+                       <br />Ugyldige værdier vil blive rammet ind med rødt.';
+$lang['updated']               = 'Indstillingerne blev opdateret korrekt.';
+$lang['nochoice']              = '(ingen andre valgmuligheder)';
+$lang['locked']                = 'Indstillingsfilen kunne ikke opdateres, Hvis dette er en fejl, <br />
+sørg da for at navnet på den lokale indstillingsfil samt dens rettigheder er korrekte.';
+$lang['danger']                = 'Fare: Ændring af denne mulighed kan gøre din wiki og opsætningsoversigt utilgængelige.';
+$lang['warning']               = 'Advarsel: Ændring af denne mulighed kan forårsage utilsigtet opførsel.';
+$lang['security']              = 'Sikkerhedsadvarsel: Ændring af denne mulighed kan forårsage en sikkerhedsrisiko.';
+$lang['_configuration_manager'] = 'Opsætningsstyring';
+$lang['_header_dokuwiki']      = 'DokuWiki indstillinger';
+$lang['_header_plugin']        = 'Udvidelsesindstillinger';
+$lang['_header_template']      = 'Skabelonindstillinger';
+$lang['_header_undefined']     = 'Ikke satte indstillinger';
+$lang['_basic']                = 'Grundindstillinger';
+$lang['_display']              = 'Synlighedsindstillinger';
+$lang['_authentication']       = 'Bekræftelsesindstillinger';
+$lang['_anti_spam']            = 'Trafikkontrolsindstillinger';
+$lang['_editing']              = 'Redigeringsindstillinger';
+$lang['_links']                = 'Henvisningsindstillinger';
+$lang['_media']                = 'Medieindstillinger';
+$lang['_notifications']        = 'Notificeringsindstillinger';
+$lang['_advanced']             = 'Avancerede indstillinger';
+$lang['_network']              = 'Netværksindstillinger';
+$lang['_msg_setting_undefined'] = 'Ingen indstillingsmetadata.';
+$lang['_msg_setting_no_class'] = 'Ingen indstillingsklasse.';
+$lang['_msg_setting_no_default'] = 'Ingen standardværdi.';
+$lang['title']                 = 'Wiki titel';
+$lang['start']                 = 'Startsidens navn';
+$lang['lang']                  = 'Sprog';
+$lang['template']              = 'Skabelon';
+$lang['tagline']               = 'Tagline (hvis templaten understøtter det)';
+$lang['sidebar']               = 'Sidebar side navne (hvis templaten understøtter det).';
+$lang['license']               = 'Under hvilken licens skal dit indhold frigives?';
+$lang['savedir']               = 'Katalog til opbevaring af data';
+$lang['basedir']               = 'Grundkatalog';
+$lang['baseurl']               = 'Grundadresse';
+$lang['cookiedir']             = 'Cookie sti.  Hvis tom, bruges baseurl.';
+$lang['dmode']                 = 'Katalogoprettelsestilstand';
+$lang['fmode']                 = 'Filoprettelsestilstand';
+$lang['allowdebug']            = 'Tillad fejlretning <b>slå fra hvis unødvendig!</b>';
+$lang['recent']                = 'Nylige ændringer';
+$lang['recent_days']           = 'Hvor mange nye ændringer der skal beholdes (dage)';
+$lang['breadcrumbs']           = 'Stilængde';
+$lang['youarehere']            = 'Hierarkisk sti';
+$lang['fullpath']              = 'Vis den fulde sti til siderne i bundlinjen';
+$lang['typography']            = 'Typografiske erstatninger';
+$lang['dformat']               = 'Datoformat (se PHP\'s <a href="http://php.net/strftime">strftime</a>-funktion)';
+$lang['signature']             = 'Underskrift';
+$lang['showuseras']            = 'Hvad skal vises når den sidste bruger, der har ændret siden, fremstilles';
+$lang['toptoclevel']           = 'Øverste niveau for indholdsfortegnelse';
+$lang['tocminheads']           = 'Mindste antal overskrifter for at danne Indholdsfortegnelsen';
+$lang['maxtoclevel']           = 'Højeste niveau for indholdsfortegnelse';
+$lang['maxseclevel']           = 'Højeste niveau for redigering af sektioner';
+$lang['camelcase']             = 'Brug KamelKasse til henvisninger';
+$lang['deaccent']              = 'Pæne sidenavne';
+$lang['useheading']            = 'Brug første overskrift til sidenavne';
+$lang['sneaky_index']          = 'DokuWiki vil som standard vise alle navnerum i indholdsfortegnelsen. Ved at slå denne valgmulighed til vil skjule de navnerum, hvor brugeren ikke har læsetilladelse. Dette kan føre til, at tilgængelige undernavnerum bliver skjult. Ligeledes kan det også gøre indholdsfortegnelsen ubrugelig med visse ACL-opsætninger.';
+$lang['hidepages']             = 'Skjul lignende sider (almindelige udtryk)';
+$lang['useacl']                = 'Benyt adgangskontrollister';
+$lang['autopasswd']            = 'Generer adgangskoder automatisk';
+$lang['authtype']              = 'Bekræftelsesgrundlag';
+$lang['passcrypt']             = 'Krypteringsmetode for adgangskoder';
+$lang['defaultgroup']          = 'Standardgruppe';
+$lang['superuser']             = 'Superbruger';
+$lang['manager']               = 'Bestyrer - en gruppe eller bruger med adgang til bestemte styrende funktioner';
+$lang['profileconfirm']        = 'Bekræft profilændringer med kodeord';
+$lang['rememberme']            = 'Tillad varige datafiler for brugernavne (husk mig)';
+$lang['disableactions']        = 'Slå DokuWiki-muligheder fra';
+$lang['disableactions_check']  = 'Tjek';
+$lang['disableactions_subscription'] = 'Tliføj/Fjern opskrivning';
+$lang['disableactions_wikicode'] = 'Vis kilde/Eksporter grundkode';
+$lang['disableactions_other']  = 'Andre muligheder (kommasepareret)';
+$lang['auth_security_timeout'] = 'Tidsudløb for bekræftelse (sekunder)';
+$lang['securecookie']          = 'Skal datafiler skabt af HTTPS kun sendes af HTTPS gennem browseren? Slå denne valgmulighed fra hvis kun brugen af din wiki er SSL-beskyttet, mens den almindelige tilgang udefra ikke er sikret.';
+$lang['remote']                = 'Aktivér fjern APIet.  Dette tillader andre programmer at tilgå wikien via XML-RPC eller andre mekanismer.';
+$lang['remoteuser']            = 'Begræns fjern API adgang til den kommaseparerede liste af grupper eller brugere angivet her.  Efterlad tom for at give adgang til alle.';
+$lang['usewordblock']          = 'Hindr uønsket brug med en ordliste';
+$lang['relnofollow']           = 'Brug rel="nofollow" til udadgående henvisninger';
+$lang['indexdelay']            = 'Tidsforsinkelse før katalogisering (sek.)';
+$lang['mailguard']             = 'Slør elektroniske adresser';
+$lang['iexssprotect']          = 'Gennemse oplagte filer for mulig skadelig JavaScript- eller HTML-kode.';
+$lang['usedraft']              = 'Gem automatisk en kladde under redigering';
+$lang['htmlok']                = 'Tillad indlejret HTML';
+$lang['phpok']                 = 'Tillad indlejret PHP';
+$lang['locktime']              = 'Længste levetid for låsefiler (sek)';
+$lang['cachetime']             = 'Længste levetid for "cache" (sek)';
+$lang['target____wiki']        = 'Målvindue for indre henvisninger';
+$lang['target____interwiki']   = 'Målvindue for egne wikihenvisninger ';
+$lang['target____extern']      = 'Målvindue for udadgående henvisninger';
+$lang['target____media']       = 'Målvindue for mediehenvisninger';
+$lang['target____windows']     = 'Målvindue til Windows-henvisninger';
+$lang['mediarevisions']        = 'Akvtivér media udgaver?';
+$lang['refcheck']              = 'Mediehenvisningerkontrol';
+$lang['gdlib']                 = 'Udgave af GD Lib';
+$lang['im_convert']            = 'Sti til ImageMagick\'s omdannerværktøj';
+$lang['jpg_quality']           = 'JPG komprimeringskvalitet (0-100)';
+$lang['fetchsize']             = 'Største antal (bytes) fetch.php må hente udefra';
+$lang['subscribers']           = 'Slå understøttelse af abonnement på sider til';
+$lang['subscribe_time']        = 'Tid der går før abonnementlister og nyhedsbreve er sendt (i sekunder). Denne værdi skal være mindre end den tid specificeret under recent_days.';
+$lang['notify']                = 'Send ændringsmeddelelser til denne e-adresse';
+$lang['registernotify']        = 'Send info om nyoprettede brugere til denne e-adresse';
+$lang['mailfrom']              = 'E-adresse til brug for automatiske meddelelser';
+$lang['mailprefix']            = 'Præfiks på email subject for automastiske mails.  Efterlad blank for at bruge wiki titlen.';
+$lang['htmlmail']              = 'Send pænere, men større HTML multipart mails.  Deaktivér for at sende rene tekst mails.';
+$lang['sitemap']               = 'Generer Google-"sitemap" (dage)';
+$lang['rss_type']              = 'Type af XML-liste';
+$lang['rss_linkto']            = 'XML-liste henviser til';
+$lang['rss_content']           = 'Hvad skal der vises i XML-listepunkteren?';
+$lang['rss_update']            = 'XML-listens opdateringsinterval (sek)';
+$lang['rss_show_summary']      = 'XML-liste vis referat i overskriften';
+$lang['rss_media']             = 'Hvilke ændringer skal vises i XML listen?';
+$lang['updatecheck']           = 'Kig efter opdateringer og sikkerhedsadvarsler? DokuWiki er nødt til at kontakte update.dokuwiki.org for at tilgå denne funktion.';
+$lang['userewrite']            = 'Brug pæne netadresser';
+$lang['useslash']              = 'Brug skråstreg som navnerumsdeler i netadresser';
+$lang['sepchar']               = 'Orddelingstegn til sidenavne';
+$lang['canonical']             = 'Benyt fuldt kanoniske netadresser';
+$lang['fnencode']              = 'Metode for indkodning af ikke ASCII filnavne';
+$lang['autoplural']            = 'Tjek for flertalsendelser i henvisninger';
+$lang['compression']           = 'Pakningsmetode for attic-filer';
+$lang['gzip_output']           = 'Benyt gzip-Content-Encoding (indholdskryptering) til XHTML';
+$lang['compress']              = 'Komprimer CSS- og JavaScript-filer';
+$lang['send404']               = 'Send "HTTP 404/Page Not Found" for ikke-eksisterende sider';
+$lang['broken_iua']            = 'Er funktionen "ignore_user_abort" uvirksom på dit system? Dette kunne forårsage en ikke virkende søgeoversigt. IIS+PHP/CGI er kendt for ikke at virke. Se <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Fejl 852</a> for flere oplysninger.';
+$lang['xsendfile']             = 'Brug hovedfilen til X-Sendfile for at få netserveren til at sende statiske filer? Din netserver skal understøtte dette for at bruge det.';
+$lang['renderer_xhtml']        = 'Udskriver der skal bruges til størstedelen af wiki-udskriften (XHTML)';
+$lang['renderer__core']        = '%s (dokuwiki-kerne)';
+$lang['renderer__plugin']      = '%s (udvidelse)';
+$lang['proxy____host']         = 'Proxy-servernavn';
+$lang['proxy____port']         = 'Proxy-port';
+$lang['proxy____user']         = 'Proxy-brugernavn';
+$lang['proxy____pass']         = 'Proxy-kodeord';
+$lang['proxy____ssl']          = 'Brug SSL til at forbinde til proxy';
+$lang['proxy____except']       = 'Regular expression til at matche URL\'er for hvilke proxier der skal ignores';
+$lang['safemodehack']          = 'Slå "safemode hack" til ';
+$lang['ftp____host']           = 'FTP-server til "safemode hack"';
+$lang['ftp____port']           = 'FTP-port til "safemode hack"';
+$lang['ftp____user']           = 'FTP-brugernavn til "safemode hack"';
+$lang['ftp____pass']           = 'FTP-adgangskode til "safemode hack"';
+$lang['ftp____root']           = 'FTP-rodmappe til "safemode hack"';
+$lang['license_o_']            = 'Ingen valgt';
+$lang['typography_o_0']        = 'ingen';
+$lang['typography_o_1']        = 'Kun gåseøjne';
+$lang['typography_o_2']        = 'Tillader enkelttegnscitering (vil måske ikke altid virke)';
+$lang['userewrite_o_0']        = 'ingen';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Dokuwiki indre';
+$lang['deaccent_o_0']          = 'fra';
+$lang['deaccent_o_1']          = 'fjern accenttegn';
+$lang['deaccent_o_2']          = 'romaniser';
+$lang['gdlib_o_0']             = 'GD Lib ikke tilstede';
+$lang['gdlib_o_1']             = 'Udgave 1.x';
+$lang['gdlib_o_2']             = 'automatisk sondering';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstrakt';
+$lang['rss_content_o_diff']    = '"Unified Diff" (Sammensat)';
+$lang['rss_content_o_htmldiff'] = 'HTML-formateret diff-tabel';
+$lang['rss_content_o_html']    = 'Fuldt HTML-sideindhold';
+$lang['rss_linkto_o_diff']     = 'liste over forskelle';
+$lang['rss_linkto_o_page']     = 'den redigerede side';
+$lang['rss_linkto_o_rev']      = 'liste over ændringer';
+$lang['rss_linkto_o_current']  = 'den nuværende side';
+$lang['compression_o_0']       = 'ingen';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'brug ikke';
+$lang['xsendfile_o_1']         = 'Proprietær lighttpd-hovedfil (før udgave 1.5)';
+$lang['xsendfile_o_2']         = 'Standard X-Sendfile-hovedfil';
+$lang['xsendfile_o_3']         = 'Proprietær Nginx X-Accel-Redirect hovedfil';
+$lang['showuseras_o_loginname'] = 'Brugernavn';
+$lang['showuseras_o_username'] = 'Brugerens fulde navn';
+$lang['showuseras_o_email']    = 'Brugerens e-adresse (ændret i forhold til mailguard-indstillingerne)';
+$lang['showuseras_o_email_link'] = 'Brugers e-adresse som en mailto:-henvisning';
+$lang['useheading_o_0']        = 'Aldrig';
+$lang['useheading_o_navigation'] = 'Kun navigering';
+$lang['useheading_o_content']  = 'Kun wiki-indhold';
+$lang['useheading_o_1']        = 'Altid';
+$lang['readdircache']          = 'Maksimum alder for readdir hukommelse (sek)';
diff --git a/wiki/lib/plugins/config/lang/de-informal/intro.txt b/wiki/lib/plugins/config/lang/de-informal/intro.txt
new file mode 100644
index 0000000..ce4625c
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/de-informal/intro.txt
@@ -0,0 +1,7 @@
+===== Konfigurations-Manager =====
+
+Benutze diese Seite zur Kontrolle der Einstellungen deiner DokuWiki-Installation. Für Hilfe zu individuellen Einstellungen gehe zu [[doku>config]]. Für mehr Details über diese Erweiterungen siehe [[doku>plugin:config]].
+
+Einstellungen die mit einem hellroten Hintergrund angezeigt werden, können mit dieser Erweiterung nicht verändert werden. Einstellungen mit einem blauen Hintergrund sind Standardwerte und Einstellungen mit einem weißen Hintergrund wurden lokal gesetzt für diese Installation. Sowohl blaue als auch weiße Einstellungen können angepasst werden.
+
+Denke dran **Speichern** zu drücken bevor du die Seite verlässt, andernfalls werden deine Änderungen nicht übernommen.
diff --git a/wiki/lib/plugins/config/lang/de-informal/lang.php b/wiki/lib/plugins/config/lang/de-informal/lang.php
new file mode 100644
index 0000000..6c31e85
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/de-informal/lang.php
@@ -0,0 +1,208 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Alexander Fischer <tbanus@os-forge.net>
+ * @author Juergen Schwarzer <jschwarzer@freenet.de>
+ * @author Marcel Metz <marcel_metz@gmx.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>
+ * @author Volker Bödker <volker@boedker.de>
+ * @author rnck <dokuwiki@rnck.de>
+ */
+$lang['menu']                  = 'Konfiguration';
+$lang['error']                 = 'Konfiguration wurde nicht aktualisiert auf Grund eines ungültigen Wertes. Bitte überprüfe deine Änderungen und versuche es erneut.<br />Die/der ungültige(n) Wert(e) werden durch eine rote Umrandung hervorgehoben.';
+$lang['updated']               = 'Konfiguration erfolgreich aktualisiert.';
+$lang['nochoice']              = '(keine andere Option möglich)';
+$lang['locked']                = 'Die Konfigurationsdatei kann nicht aktualisiert werden. Wenn dies unbeabsichtigt ist stelle sicher, dass der Name und die Zugriffsrechte der Konfigurationsdatei richtig sind.';
+$lang['danger']                = '**Achtung**: Eine Änderung dieser Einstellung kann dein Wiki und das Einstellungsmenü unerreichbar machen.';
+$lang['warning']               = 'Achtung: Eine Änderungen dieser Option kann zu unbeabsichtigtem Verhalten führen.';
+$lang['security']              = 'Sicherheitswarnung: Eine Änderungen dieser Option können ein Sicherheitsrisiko bedeuten.';
+$lang['_configuration_manager'] = 'Konfigurations-Manager';
+$lang['_header_dokuwiki']      = 'DokuWiki';
+$lang['_header_plugin']        = 'Plugin';
+$lang['_header_template']      = 'Template';
+$lang['_header_undefined']     = 'Unbekannte Werte';
+$lang['_basic']                = 'Basis';
+$lang['_display']              = 'Darstellung';
+$lang['_authentication']       = 'Authentifizierung';
+$lang['_anti_spam']            = 'Anti-Spam';
+$lang['_editing']              = 'Bearbeitung';
+$lang['_links']                = 'Links';
+$lang['_media']                = 'Medien';
+$lang['_notifications']        = 'Benachrichtigung';
+$lang['_syndication']          = 'Syndication (RSS)';
+$lang['_advanced']             = 'Erweitert';
+$lang['_network']              = 'Netzwerk';
+$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
+$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
+$lang['_msg_setting_no_default'] = 'Kein Standardwert.';
+$lang['title']                 = 'Wiki Titel';
+$lang['start']                 = 'Name der Startseite';
+$lang['lang']                  = 'Sprache';
+$lang['template']              = 'Vorlage';
+$lang['tagline']               = 'Tag-Linie (nur, wenn vom Template unterstützt)';
+$lang['sidebar']               = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt), ein leeres Feld deaktiviert die Sidebar';
+$lang['license']               = 'Unter welcher Lizenz sollte Ihr Inhalt veröffentlicht werden?';
+$lang['savedir']               = 'Ordner zum Speichern von Daten';
+$lang['basedir']               = 'Installationsverzeichnis';
+$lang['baseurl']               = 'Installationspfad (URL)';
+$lang['cookiedir']             = 'Cookie Pfad. Leer lassen, um die Standard-Url zu belassen.';
+$lang['dmode']                 = 'Zugriffsrechte bei Verzeichniserstellung';
+$lang['fmode']                 = 'Zugriffsrechte bei Dateierstellung';
+$lang['allowdebug']            = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
+$lang['recent']                = 'letzte Änderungen';
+$lang['recent_days']           = 'Wie viele Änderungen sollen vorgehalten werden? (Tage)';
+$lang['breadcrumbs']           = 'Anzahl der Einträge im "Krümelpfad"';
+$lang['youarehere']            = 'Hierarchische Pfadnavigation verwenden';
+$lang['fullpath']              = 'Zeige vollen Pfad der Datei in Fußzeile an';
+$lang['typography']            = 'Mach drucktechnische Ersetzungen';
+$lang['dformat']               = 'Datumsformat (siehe PHPs <a href="http://php.net/strftime">strftime</a> Funktion)';
+$lang['signature']             = 'Signatur';
+$lang['showuseras']            = 'Was angezeigt werden soll, wenn der Benutzer, der zuletzt eine Seite bearbeitet hat, angezeigt wird';
+$lang['toptoclevel']           = 'Inhaltsverzeichnis bei dieser Überschriftengröße beginnen';
+$lang['tocminheads']           = 'Mindestanzahl der Überschriften die entscheidet, ob ein Inhaltsverzeichnis erscheinen soll';
+$lang['maxtoclevel']           = 'Maximale Überschriftengröße für Inhaltsverzeichnis';
+$lang['maxseclevel']           = 'Abschnitte bis zu dieser Stufe einzeln editierbar machen';
+$lang['camelcase']             = 'CamelCase-Verlinkungen verwenden';
+$lang['deaccent']              = 'Seitennamen bereinigen';
+$lang['useheading']            = 'Erste Überschrift als Seitennamen verwenden';
+$lang['sneaky_index']          = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Indexansicht an. Bei Aktivierung dieser Einstellung werden alle Namensräume versteckt, in welchen der Benutzer keine Leserechte hat. Dies könnte dazu führen, dass lesbare Unternamensräume versteckt werden. Dies kann die Indexansicht bei bestimmten Zugangskontrolleinstellungen unbenutzbar machen.';
+$lang['hidepages']             = 'Seiten verstecken (Regulärer Ausdruck)';
+$lang['useacl']                = 'Benutze Zugangskontrollliste';
+$lang['autopasswd']            = 'Automatisch erzeugte Passwörter';
+$lang['authtype']              = 'Authentifizierungsmethode';
+$lang['passcrypt']             = 'Passwortverschlüsselungsmethode';
+$lang['defaultgroup']          = 'Standardgruppe';
+$lang['superuser']             = 'Administrator - Eine Gruppe oder Benutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
+$lang['manager']               = 'Manager - Eine Gruppe oder Benutzer mit Zugriff auf einige Administrationswerkzeuge.';
+$lang['profileconfirm']        = 'Änderungen am Benutzerprofil mit Passwort bestätigen';
+$lang['rememberme']            = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
+$lang['disableactions']        = 'Deaktiviere DokuWiki\'s Zugriffe';
+$lang['disableactions_check']  = 'Check';
+$lang['disableactions_subscription'] = 'Bestellen/Abbestellen';
+$lang['disableactions_wikicode'] = 'Zeige Quelle/Exportiere Rohdaten';
+$lang['disableactions_profile_delete'] = 'Eigenes Benutzerprofil löschen';
+$lang['disableactions_other']  = 'Weitere Aktionen (durch Komma getrennt)';
+$lang['disableactions_rss']    = 'XML Syndication (RSS)';
+$lang['auth_security_timeout'] = 'Zeitüberschreitung bei der Authentifizierung (Sekunden)';
+$lang['securecookie']          = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktiviere diese Option, wenn nur der Login deines Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
+$lang['remote']                = 'Aktiviert den externen API-Zugang. Diese Option erlaubt es externen Anwendungen von außen auf die XML-RPC-Schnittstelle oder anderweitigen Schnittstellen zuzugreifen.';
+$lang['remoteuser']            = 'Zugriff auf die externen Schnittstellen durch kommaseparierte Angabe von Benutzern oder Gruppen einschränken. Ein leeres Feld erlaubt Zugriff für jeden.';
+$lang['usewordblock']          = 'Blockiere Spam basierend auf der Wortliste';
+$lang['relnofollow']           = 'rel="nofollow" verwenden';
+$lang['indexdelay']            = 'Zeit bevor Suchmaschinenindexierung erlaubt ist';
+$lang['mailguard']             = 'E-Mail-Adressen schützen';
+$lang['iexssprotect']          = 'Hochgeladene Dateien auf bösartigen JavaScript- und HTML-Code untersuchen';
+$lang['usedraft']              = 'Speichere automatisch Entwürfe während der Bearbeitung';
+$lang['htmlok']                = 'Erlaube eingebettetes HTML';
+$lang['phpok']                 = 'Erlaube eingebettetes PHP';
+$lang['locktime']              = 'Maximales Alter für Seitensperren (Sekunden)';
+$lang['cachetime']             = 'Maximale Cachespeicherung (Sekunden)';
+$lang['target____wiki']        = 'Zielfenstername für interne Links';
+$lang['target____interwiki']   = 'Zielfenstername für InterWiki-Links';
+$lang['target____extern']      = 'Zielfenstername für externe Links';
+$lang['target____media']       = 'Zielfenstername für Medienlinks';
+$lang['target____windows']     = 'Zielfenstername für Windows-Freigaben-Links';
+$lang['mediarevisions']        = 'Media-Revisionen (ältere Versionen) aktivieren?';
+$lang['refcheck']              = 'Auf Verwendung beim Löschen von Media-Dateien testen';
+$lang['gdlib']                 = 'GD Lib Version';
+$lang['im_convert']            = 'Pfad zu ImageMagicks-Konvertierwerkzeug';
+$lang['jpg_quality']           = 'JPEG Kompressionsqualität (0-100)';
+$lang['fetchsize']             = 'Maximale Größe (in Bytes), die fetch.php von extern herunterladen darf';
+$lang['subscribers']           = 'E-Mail-Abos zulassen';
+$lang['subscribe_time']        = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden; Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
+$lang['notify']                = 'Sende Änderungsbenachrichtigungen an diese E-Mail-Adresse.';
+$lang['registernotify']        = 'Sende Information bei neu registrierten Benutzern an diese E-Mail-Adresse.';
+$lang['mailfrom']              = 'Absenderadresse für automatisch erzeugte E-Mails';
+$lang['mailreturnpath']        = 'Empfänger-E-Mail-Adresse für Unzustellbarkeitsnachricht';
+$lang['mailprefix']            = 'Präfix für E-Mail-Betreff beim automatischen Versand von Benachrichtigungen';
+$lang['htmlmail']              = 'Versendet optisch angenehmere, aber größere E-Mails im HTML-Format (multipart). Deaktivieren, um Text-Mails zu versenden.';
+$lang['sitemap']               = 'Erzeuge Google Sitemaps (Tage)';
+$lang['rss_type']              = 'XML-Feed-Format';
+$lang['rss_linkto']            = 'XML-Feed verlinken auf';
+$lang['rss_content']           = 'Was soll in XML-Feedinhalten angezeigt werden?';
+$lang['rss_update']            = 'Aktualisierungsintervall für XML-Feeds (Sekunden)';
+$lang['rss_show_summary']      = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
+$lang['rss_media']             = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
+$lang['updatecheck']           = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
+$lang['userewrite']            = 'Benutze schöne URLs';
+$lang['useslash']              = 'Benutze Schrägstrich als Namensraumtrenner in URLs';
+$lang['sepchar']               = 'Worttrenner für Seitennamen in URLs';
+$lang['canonical']             = 'Immer Links mit vollständigen URLs erzeugen';
+$lang['fnencode']              = 'Methode um nicht-ASCII Dateinamen zu kodieren.';
+$lang['autoplural']            = 'Bei Links automatisch nach vorhandenen Pluralformen suchen';
+$lang['compression']           = 'Komprimierungsmethode für alte Seitenrevisionen';
+$lang['gzip_output']           = 'Seiten mit gzip komprimiert ausliefern';
+$lang['compress']              = 'JavaScript und Stylesheets komprimieren';
+$lang['cssdatauri']            = 'Größe in Bytes, bis zu der Bilder in css-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. <code>400</code> bis <code>600</code> Bytes sind gute Werte. Setze <code>0</code> für inaktive Funktion.';
+$lang['send404']               = 'Sende "HTTP 404/Seite nicht gefunden" für nicht existierende Seiten';
+$lang['broken_iua']            = 'Falls die Funktion ignore_user_abort auf deinem System nicht funktioniert, könnte der Such-Index nicht funktionieren. IIS+PHP/CGI ist bekannt dafür. Siehe auch <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>.';
+$lang['xsendfile']             = 'Den X-Sendfile-Header nutzen, um Dateien direkt vom Webserver ausliefern zu lassen? Dein Webserver muss dies unterstützen!';
+$lang['renderer_xhtml']        = 'Standard-Renderer für die normale (XHTML) Wiki-Ausgabe.';
+$lang['renderer__core']        = '%s (DokuWiki Kern)';
+$lang['renderer__plugin']      = '%s (Erweiterung)';
+$lang['dnslookups']            = 'DokuWiki löst die IP-Adressen von Benutzern zu deren Hostnamen auf. Wenn du einen langsamen, unbrauchbaren DNS-Server verwendest oder die Funktion nicht benötigst, dann sollte diese Option deaktivert sein.';
+$lang['jquerycdn']             = 'Sollen die jQuery und jQuery UI Skriptdateien von einem CDN geladen werden? Das verursacht zusätzliche HTTP Anfragen, aber die Dateien werden möglicherweise schneller geladen und Nutzer haben sie vielleicht bereits im Cache.';
+$lang['jquerycdn_o_0']         = 'Kein CDN, nur lokale Auslieferung';
+$lang['jquerycdn_o_jquery']    = 'CDN bei code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN bei cdnjs.com';
+$lang['proxy____host']         = 'Proxyadresse';
+$lang['proxy____port']         = 'Proxyport';
+$lang['proxy____user']         = 'Benutzername für den Proxy';
+$lang['proxy____pass']         = 'Passwort von dem Proxybenutzer';
+$lang['proxy____ssl']          = 'SSL verwenden um auf den Proxy zu zugreifen';
+$lang['proxy____except']       = 'Regulärer Ausdruck um Adressen zu beschreiben, für die kein Proxy verwendet werden soll';
+$lang['safemodehack']          = 'Aktiviere safemode Hack';
+$lang['ftp____host']           = 'FTP Server für safemode Hack';
+$lang['ftp____port']           = 'FTP Port für safemode Hack';
+$lang['ftp____user']           = 'FTP Benutzername für safemode Hack';
+$lang['ftp____pass']           = 'FTP Passwort für safemode Hack';
+$lang['ftp____root']           = 'FTP Wurzelverzeichnis für Safemodehack';
+$lang['license_o_']            = 'Nichts ausgewählt';
+$lang['typography_o_0']        = 'nichts';
+$lang['typography_o_1']        = 'ohne einfache Anführungszeichen';
+$lang['typography_o_2']        = 'mit einfachen Anführungszeichen (funktioniert nicht immer)';
+$lang['userewrite_o_0']        = 'nichts';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki intern';
+$lang['deaccent_o_0']          = 'aus';
+$lang['deaccent_o_1']          = 'Entferne Akzente';
+$lang['deaccent_o_2']          = 'romanisieren';
+$lang['gdlib_o_0']             = 'GD lib ist nicht verfügbar';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'Autoerkennung';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Zusammenfassung';
+$lang['rss_content_o_diff']    = 'Vereinigtes Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formatierte Diff-Tabelle';
+$lang['rss_content_o_html']    = 'Vollständiger HTML-Inhalt';
+$lang['rss_linkto_o_diff']     = 'Ansicht der Unterschiede';
+$lang['rss_linkto_o_page']     = 'geänderte Seite';
+$lang['rss_linkto_o_rev']      = 'Liste der Revisionen';
+$lang['rss_linkto_o_current']  = 'Die aktuelle Seite';
+$lang['compression_o_0']       = 'nichts';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'Nicht benutzen';
+$lang['xsendfile_o_1']         = 'Proprietärer lighttpd-Header (vor Release 1.5)';
+$lang['xsendfile_o_2']         = 'Standard X-Sendfile-Header';
+$lang['xsendfile_o_3']         = 'Proprietärer Nginx X-Accel-Redirect-Header';
+$lang['showuseras_o_loginname'] = 'Login-Name';
+$lang['showuseras_o_username'] = 'Voller Name des Benutzers';
+$lang['showuseras_o_username_link'] = 'Kompletter Name des Benutzers als Interwiki-Link';
+$lang['showuseras_o_email']    = 'E-Mail-Adresse des Benutzers (je nach Mailguard-Einstellung verschleiert)';
+$lang['showuseras_o_email_link'] = 'E-Mail-Adresse des Benutzers als mailto:-Link';
+$lang['useheading_o_0']        = 'Niemals';
+$lang['useheading_o_navigation'] = 'Nur Navigation';
+$lang['useheading_o_content']  = 'Nur Wiki-Inhalt';
+$lang['useheading_o_1']        = 'Immer';
+$lang['readdircache']          = 'Maximales Alter des readdir-Caches (Sekunden)';
diff --git a/wiki/lib/plugins/config/lang/de/intro.txt b/wiki/lib/plugins/config/lang/de/intro.txt
new file mode 100644
index 0000000..e743379
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/de/intro.txt
@@ -0,0 +1,7 @@
+====== Konfigurations-Manager ======
+
+Dieses Plugin hilft Ihnen bei der Konfiguration von DokuWiki. Hilfe zu den einzelnen Einstellungen finden Sie unter [[doku>config]]. Mehr Information zu diesem Plugin ist unter [[doku>plugin:config]] erhältlich.
+
+Einstellungen mit einem hellroten Hintergrund sind gesichert und können nicht mit diesem Plugin verändert werden, Einstellungen mit hellblauem Hintergrund sind Voreinstellungen, weiß hinterlegte Felder zeigen lokal veränderte Werte an. Sowohl die blauen als auch die weißen Felder können verändert werden.
+
+Bitte vergessen Sie nicht **Speichern** zu drücken bevor Sie die Seite verlassen, andernfalls gehen Ihre Änderungen verloren.
diff --git a/wiki/lib/plugins/config/lang/de/lang.php b/wiki/lib/plugins/config/lang/de/lang.php
new file mode 100644
index 0000000..65c319b
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/de/lang.php
@@ -0,0 +1,225 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Michael Bohn <mjbohn@gmail.com>
+ * @author Joel Strasser <strasser999@gmail.com>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Michael Klier <chi@chimeric.de>
+ * @author Leo Moll <leo@yeasoft.com>
+ * @author Florian Anderiasch <fa@art-core.org>
+ * @author Robin Kluth <commi1993@gmail.com>
+ * @author Arne Pelka <mail@arnepelka.de>
+ * @author Dirk Einecke <dirk@dirkeinecke.de>
+ * @author Blitzi94 <Blitzi94@gmx.de>
+ * @author Robert Bogenschneider <robog@gmx.de>
+ * @author Niels Lange <niels@boldencursief.nl>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Mateng Schimmerlos <mateng@firemail.de>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Marco Hofmann <xenadmin@meinekleinefarm.net>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['menu']                  = 'Konfiguration';
+$lang['error']                 = 'Die Einstellungen wurden wegen einer fehlerhaften Eingabe nicht gespeichert.<br /> Bitte überprüfen sie die rot umrandeten Eingaben und speichern Sie erneut.';
+$lang['updated']               = 'Einstellungen erfolgreich gespeichert.';
+$lang['nochoice']              = '(keine Auswahlmöglichkeiten vorhanden)';
+$lang['locked']                = 'Die Konfigurationsdatei kann nicht geändert werden. Wenn dies unbeabsichtigt ist, <br />überprüfen Sie, ob die Dateiberechtigungen korrekt gesetzt sind.';
+$lang['danger']                = 'Vorsicht: Die Änderung dieser Option könnte Ihr Wiki und das Konfigurationsmenü unzugänglich machen.';
+$lang['warning']               = 'Hinweis: Die Änderung dieser Option könnte unbeabsichtigtes Verhalten hervorrufen.';
+$lang['security']              = 'Sicherheitswarnung: Die Änderung dieser Option könnte ein Sicherheitsrisiko darstellen.';
+$lang['_configuration_manager'] = 'Konfigurations-Manager';
+$lang['_header_dokuwiki']      = 'DokuWiki';
+$lang['_header_plugin']        = 'Plugin';
+$lang['_header_template']      = 'Template';
+$lang['_header_undefined']     = 'Nicht gesetzte Einstellungen';
+$lang['_basic']                = 'Basis';
+$lang['_display']              = 'Darstellung';
+$lang['_authentication']       = 'Authentifizierung';
+$lang['_anti_spam']            = 'Anti-Spam';
+$lang['_editing']              = 'Bearbeitung';
+$lang['_links']                = 'Links';
+$lang['_media']                = 'Medien';
+$lang['_notifications']        = 'Benachrichtigung';
+$lang['_syndication']          = 'Syndication (RSS)';
+$lang['_advanced']             = 'Erweitert';
+$lang['_network']              = 'Netzwerk';
+$lang['_msg_setting_undefined'] = 'Keine Konfigurationsmetadaten.';
+$lang['_msg_setting_no_class'] = 'Keine Konfigurationsklasse.';
+$lang['_msg_setting_no_default'] = 'Kein Standardwert.';
+$lang['title']                 = 'Titel des Wikis';
+$lang['start']                 = 'Startseitenname';
+$lang['lang']                  = 'Sprache';
+$lang['template']              = 'Designvorlage (Template)';
+$lang['tagline']               = 'Tag-Linie (nur, wenn vom Template unterstützt)';
+$lang['sidebar']               = 'Name der Sidebar-Seite (nur, wenn vom Template unterstützt), ein leeres Feld deaktiviert die Sidebar';
+$lang['license']               = 'Unter welcher Lizenz sollen Ihre Inhalte veröffentlicht werden?';
+$lang['savedir']               = 'Speicherverzeichnis';
+$lang['basedir']               = 'Installationsverzeichnis';
+$lang['baseurl']               = 'Installationspfad (URL)';
+$lang['cookiedir']             = 'Cookiepfad. Frei lassen, um den gleichen Pfad wie "baseurl" zu benutzen.';
+$lang['dmode']                 = 'Berechtigungen für neue Verzeichnisse';
+$lang['fmode']                 = 'Berechtigungen für neue Dateien';
+$lang['allowdebug']            = 'Debug-Ausgaben erlauben <b>Abschalten wenn nicht benötigt!</b>';
+$lang['recent']                = 'Anzahl der Einträge in der Änderungsliste';
+$lang['recent_days']           = 'Wie viele letzte Änderungen sollen einsehbar bleiben? (Tage)';
+$lang['breadcrumbs']           = 'Anzahl der Einträge im "Krümelpfad"';
+$lang['youarehere']            = 'Hierarchische Pfadnavigation verwenden';
+$lang['fullpath']              = 'Den kompletten Dateipfad im Footer anzeigen';
+$lang['typography']            = 'Typographische Ersetzungen';
+$lang['dformat']               = 'Datumsformat (Siehe PHP <a href="http://php.net/strftime">strftime</a> Funktion)';
+$lang['signature']             = 'Signatur';
+$lang['showuseras']            = 'Welche Informationen über einen Benutzer anzeigen, der zuletzt eine Seite bearbeitet hat';
+$lang['toptoclevel']           = 'Inhaltsverzeichnis bei dieser Überschriftengröße beginnen';
+$lang['tocminheads']           = 'Mindestanzahl der Überschriften die entscheidet, ob ein Inhaltsverzeichnis erscheinen soll';
+$lang['maxtoclevel']           = 'Maximale Überschriftengröße für Inhaltsverzeichnis';
+$lang['maxseclevel']           = 'Abschnitte bis zu dieser Stufe einzeln editierbar machen';
+$lang['camelcase']             = 'CamelCase-Verlinkungen verwenden';
+$lang['deaccent']              = 'Seitennamen bereinigen';
+$lang['useheading']            = 'Erste Überschrift als Seitennamen verwenden';
+$lang['sneaky_index']          = 'Standardmäßig zeigt DokuWiki alle Namensräume in der Übersicht. Wenn diese Option aktiviert wird, werden alle Namensräume, für die der Benutzer keine Lese-Rechte hat, nicht angezeigt. Dies kann unter Umständen dazu führen, das lesbare Unter-Namensräume nicht angezeigt werden und macht die Übersicht evtl. unbrauchbar in Kombination mit bestimmten ACL Einstellungen.';
+$lang['hidepages']             = 'Seiten verstecken (Regulärer Ausdruck)';
+$lang['useacl']                = 'Zugangskontrolle verwenden';
+$lang['autopasswd']            = 'Passwort automatisch generieren';
+$lang['authtype']              = 'Authentifizierungsmechanismus';
+$lang['passcrypt']             = 'Verschlüsselungsmechanismus';
+$lang['defaultgroup']          = 'Standardgruppe';
+$lang['superuser']             = 'Administrator - Eine Gruppe oder Benutzer mit vollem Zugriff auf alle Seiten und Administrationswerkzeuge.';
+$lang['manager']               = 'Manager - Eine Gruppe oder Benutzer mit Zugriff auf einige Administrationswerkzeuge.';
+$lang['profileconfirm']        = 'Profiländerung nur nach Passwortbestätigung';
+$lang['rememberme']            = 'Permanente Login-Cookies erlauben (Auf diesem Computer eingeloggt bleiben)';
+$lang['disableactions']        = 'DokuWiki-Aktionen deaktivieren';
+$lang['disableactions_check']  = 'Check';
+$lang['disableactions_subscription'] = 'Seiten-Abonnements';
+$lang['disableactions_wikicode'] = 'Quelltext betrachten/exportieren';
+$lang['disableactions_profile_delete'] = 'Eigenes Benutzerprofil löschen';
+$lang['disableactions_other']  = 'Andere Aktionen (durch Komma getrennt)';
+$lang['disableactions_rss']    = 'XML-Syndikation (RSS)';
+$lang['auth_security_timeout'] = 'Authentifikations-Timeout (Sekunden)';
+$lang['securecookie']          = 'Sollen Cookies, die via HTTPS gesetzt wurden nur per HTTPS versendet werden? Deaktivieren Sie diese Option, wenn nur der Login Ihres Wikis mit SSL gesichert ist, aber das Betrachten des Wikis ungesichert geschieht.';
+$lang['remote']                = 'Aktiviert den externen API-Zugang. Diese Option erlaubt es externen Anwendungen von außen auf die XML-RPC-Schnittstelle oder anderweitigen Schnittstellen zu zugreifen.';
+$lang['remoteuser']            = 'Zugriff auf die externen Schnittstellen durch kommaseparierte Angabe von Benutzern oder Gruppen einschränken. Ein leeres Feld erlaubt Zugriff für jeden.';
+$lang['usewordblock']          = 'Spam-Blocking (nach Wörterliste) benutzen';
+$lang['relnofollow']           = 'rel="nofollow" verwenden';
+$lang['indexdelay']            = 'Zeit bevor Suchmaschinenindexierung erlaubt ist (in Sekunden)';
+$lang['mailguard']             = 'E-Mail-Adressen schützen';
+$lang['iexssprotect']          = 'Hochgeladene Dateien auf bösartigen JavaScript- und HTML-Code untersuchen';
+$lang['usedraft']              = 'Während des Bearbeitens automatisch Zwischenentwürfe speichern';
+$lang['htmlok']                = 'HTML erlauben';
+$lang['phpok']                 = 'PHP erlauben';
+$lang['locktime']              = 'Maximales Alter für Seitensperren (Sekunden)';
+$lang['cachetime']             = 'Maximale Cachespeicherung (Sekunden)';
+$lang['target____wiki']        = 'Zielfenster für interne Links (target Attribut)';
+$lang['target____interwiki']   = 'Zielfenster für InterWiki-Links (target Attribut)';
+$lang['target____extern']      = 'Zielfenster für Externe Links (target Attribut)';
+$lang['target____media']       = 'Zielfenster für (Bild-)Dateien (target Attribut)';
+$lang['target____windows']     = 'Zielfenster für Windows Freigaben (target Attribut)';
+$lang['mediarevisions']        = 'Media-Revisionen (ältere Versionen) aktivieren?';
+$lang['refcheck']              = 'Auf Verwendung beim Löschen von Media-Dateien testen';
+$lang['gdlib']                 = 'GD Lib Version';
+$lang['im_convert']            = 'Pfad zum ImageMagicks-Konvertierwerkzeug';
+$lang['jpg_quality']           = 'JPEG Kompressionsqualität (0-100)';
+$lang['fetchsize']             = 'Maximale Größe (in Bytes), die fetch.php von extern herunterladen darf';
+$lang['subscribers']           = 'E-Mail-Abos zulassen';
+$lang['subscribe_time']        = 'Zeit nach der Zusammenfassungs- und Änderungslisten-E-Mails verschickt werden (Sekunden); Dieser Wert sollte kleiner als die in recent_days konfigurierte Zeit sein.';
+$lang['notify']                = 'Änderungsmitteilungen an diese E-Mail-Adresse versenden';
+$lang['registernotify']        = 'Information über neu registrierte Benutzer an diese E-Mail-Adresse senden';
+$lang['mailfrom']              = 'Absender-E-Mail-Adresse für automatische Mails';
+$lang['mailreturnpath']        = 'Empfänger-E-Mail-Adresse für Unzustellbarkeitsnachricht';
+$lang['mailprefix']            = 'Präfix für E-Mail-Betreff beim automatischen Versand von Benachrichtigungen (Leer lassen um den Wiki-Titel zu verwenden)';
+$lang['htmlmail']              = 'Versendet optisch angenehmere, aber größere E-Mails im HTML-Format (multipart). Deaktivieren, um Text-Mails zu versenden.';
+$lang['sitemap']               = 'Google Sitemap erzeugen (Tage). Mit 0 deaktivieren.';
+$lang['rss_type']              = 'XML-Feed-Format';
+$lang['rss_linkto']            = 'XML-Feed verlinken auf';
+$lang['rss_content']           = 'Welche Inhalte sollen im XML-Feed dargestellt werden?';
+$lang['rss_update']            = 'XML-Feed Aktualisierungsintervall (Sekunden)';
+$lang['rss_show_summary']      = 'Bearbeitungs-Zusammenfassung im XML-Feed anzeigen';
+$lang['rss_media']             = 'Welche Änderungen sollen im XML-Feed angezeigt werden?';
+$lang['rss_media_o_both']      = 'beide';
+$lang['rss_media_o_pages']     = 'Seiten';
+$lang['rss_media_o_media']     = 'Medien';
+$lang['updatecheck']           = 'Automatisch auf Updates und Sicherheitswarnungen prüfen? DokuWiki muss sich dafür mit update.dokuwiki.org verbinden.';
+$lang['userewrite']            = 'Schöne Seitenadressen (URL rewriting)';
+$lang['useslash']              = 'Schrägstrich (/) als Namensraumtrenner in URLs verwenden';
+$lang['sepchar']               = 'Worttrenner für Seitennamen in URLs';
+$lang['canonical']             = 'Immer Links mit vollständigen URLs erzeugen';
+$lang['fnencode']              = 'Methode um nicht-ASCII Dateinamen zu kodieren.';
+$lang['autoplural']            = 'Bei Links automatisch nach vorhandenen Pluralformen suchen';
+$lang['compression']           = 'Komprimierungsmethode für alte Seitenrevisionen';
+$lang['gzip_output']           = 'Seiten mit gzip komprimiert ausliefern';
+$lang['compress']              = 'JavaScript und Stylesheets komprimieren';
+$lang['cssdatauri']            = 'Größe in Bytes, bis zu der Bilder in CSS-Dateien referenziert werden können, um HTTP-Anfragen zu minimieren. Empfohlene Einstellung: <code>400</code> to <code>600</code> Bytes. Setzen Sie die Einstellung auf <code>0</code> um die Funktion zu deaktivieren.';
+$lang['send404']               = 'Bei nicht vorhandenen Seiten mit 404 Fehlercode antworten';
+$lang['broken_iua']            = 'Falls die Funktion ignore_user_abort auf Ihrem System nicht funktioniert, könnte der Such-Index nicht funktionieren. IIS+PHP/CGI ist bekannt dafür. Siehe auch <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>.';
+$lang['xsendfile']             = 'Den X-Sendfile-Header nutzen, um Dateien direkt vom Webserver ausliefern zu lassen? Ihr Webserver muss dies unterstützen!';
+$lang['renderer_xhtml']        = 'Standard-Renderer für die normale (XHTML) Wiki-Ausgabe.';
+$lang['renderer__core']        = '%s (DokuWiki Kern)';
+$lang['renderer__plugin']      = '%s (Plugin)';
+$lang['search_fragment_o_exact'] = 'genaue Treffer';
+$lang['search_fragment_o_starts_with'] = 'beginnt mit';
+$lang['search_fragment_o_ends_with'] = 'endet mit';
+$lang['search_fragment_o_contains'] = 'enthält';
+$lang['dnslookups']            = 'DokuWiki löst die IP-Adressen von Benutzern zu deren Hostnamen auf. Wenn Sie einen langsamen oder unzuverlässigen DNS-Server verwenden oder die Funktion nicht benötigen, dann sollte diese Option deaktiviert sein.';
+$lang['jquerycdn']             = 'Sollen jQuery und jQuery UI Skriptdateien von einem CDN (Contend Delivery Network) geladen werden? Dadurch entstehen zusätzliche HTTP-Anfragen, aber die Daten werden voraussichtlich schneller geladen und eventuell sind sie auch schon beim Benutzer im Cache.';
+$lang['jquerycdn_o_0']         = 'Kein CDN, ausschließlich lokale Auslieferung';
+$lang['jquerycdn_o_jquery']    = 'CDN von code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN von cdnjs.com';
+$lang['proxy____host']         = 'Proxy-Server';
+$lang['proxy____port']         = 'Proxy-Port';
+$lang['proxy____user']         = 'Proxy Benutzername';
+$lang['proxy____pass']         = 'Proxy Passwort';
+$lang['proxy____ssl']          = 'SSL bei Verbindung zum Proxy verwenden';
+$lang['proxy____except']       = 'Regulärer Ausdruck für URLs, bei denen kein Proxy verwendet werden soll';
+$lang['safemodehack']          = 'Safemodehack verwenden';
+$lang['ftp____host']           = 'FTP-Host für Safemodehack';
+$lang['ftp____port']           = 'FTP-Port für Safemodehack';
+$lang['ftp____user']           = 'FTP Benutzername für Safemodehack';
+$lang['ftp____pass']           = 'FTP Passwort für Safemodehack';
+$lang['ftp____root']           = 'FTP Wurzelverzeichnis für Safemodehack';
+$lang['license_o_']            = 'Keine gewählt';
+$lang['typography_o_0']        = 'keine';
+$lang['typography_o_1']        = 'ohne einfache Anführungszeichen';
+$lang['typography_o_2']        = 'mit einfachen Anführungszeichen (funktioniert nicht immer)';
+$lang['userewrite_o_0']        = 'keines';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki intern';
+$lang['deaccent_o_0']          = 'aus';
+$lang['deaccent_o_1']          = 'Akzente und Umlaute umwandeln';
+$lang['deaccent_o_2']          = 'Umschrift';
+$lang['gdlib_o_0']             = 'GD Lib nicht verfügbar';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'Automatisch finden';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstrakt';
+$lang['rss_content_o_diff']    = 'Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formatierte Diff-Tabelle';
+$lang['rss_content_o_html']    = 'Vollständiger HTML-Inhalt';
+$lang['rss_linkto_o_diff']     = 'Änderungen zeigen';
+$lang['rss_linkto_o_page']     = 'geänderte Seite';
+$lang['rss_linkto_o_rev']      = 'Liste aller Änderungen';
+$lang['rss_linkto_o_current']  = 'Aktuelle Seite';
+$lang['compression_o_0']       = 'keine';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nicht benutzen';
+$lang['xsendfile_o_1']         = 'Proprietärer lighttpd-Header (vor Release 1.5)';
+$lang['xsendfile_o_2']         = 'Standard X-Sendfile-Header';
+$lang['xsendfile_o_3']         = 'Proprietärer Nginx X-Accel-Redirect-Header';
+$lang['showuseras_o_loginname'] = 'Login-Name';
+$lang['showuseras_o_username'] = 'Vollständiger Name des Benutzers';
+$lang['showuseras_o_username_link'] = 'Kompletter Name des Benutzers als Interwiki-Link';
+$lang['showuseras_o_email']    = 'E-Mail-Adresse des Benutzers (je nach Mailguard-Einstellung verschleiert)';
+$lang['showuseras_o_email_link'] = 'E-Mail-Adresse des Benutzers als mailto:-Link';
+$lang['useheading_o_0']        = 'Nie';
+$lang['useheading_o_navigation'] = 'Nur Navigation';
+$lang['useheading_o_content']  = 'Nur Wikiinhalt';
+$lang['useheading_o_1']        = 'Immer';
+$lang['readdircache']          = 'Maximales Alter des readdir-Caches (Sekunden)';
diff --git a/wiki/lib/plugins/config/lang/el/intro.txt b/wiki/lib/plugins/config/lang/el/intro.txt
new file mode 100644
index 0000000..f106367
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/el/intro.txt
@@ -0,0 +1,7 @@
+====== Ρυθμίσεις ======
+
+Χρησιμοποιήστε αυτή την σελίδα για να ρυθμίσετε την λειτουργία του Dokuwiki σας. Για βοήθεια σχετικά με τις ρυθμίσεις δείτε την σελίδα [[doku>config]]. Για περισσότερες λεπτομέρειες σχετικά με αυτή την επέκταση δείτε την σελίδα [[doku>plugin:config]].
+
+Οι ρυθμίσεις που εμφανίζονται σε απαλό κόκκινο φόντο είναι κλειδωμένες και δεν μπορούν να τροποποιηθούν μέσω αυτής της επέκτασης. Οι ρυθμίσεις που εμφανίζονται σε μπλε φόντο είναι οι προεπιλεγμένες ενώ οι ρυθμίσεις που εμφανίζονται σε λευκό φόντο είναι αυτές που διαφέρουν από τις προεπιλεγμένες. Και οι ρυθμίσεις που εμφανίζονται σε μπλε φόντο και οι ρυθμίσεις που εμφανίζονται σε λευκό φόντο μπορούν να τροποποιηθούν.
+
+Θυμηθείτε να επιλέξετε **Αποθήκευση** αφού κάνετε τις αλλαγές που θέλετε.
diff --git a/wiki/lib/plugins/config/lang/el/lang.php b/wiki/lib/plugins/config/lang/el/lang.php
new file mode 100644
index 0000000..7904c63
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/el/lang.php
@@ -0,0 +1,199 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @author Thanos Massias <tm@thriasio.gr>
+ * @author Αθανάσιος Νταής <homunculus@wana.gr>
+ * @author Konstantinos Koryllos <koryllos@gmail.com>
+ * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ * @author Zacharias Sdregas <zsdregas@sch.gr>
+ */
+$lang['menu']                  = 'Ρυθμίσεις';
+$lang['error']                 = 'Οι ρυθμίσεις σας δεν έγιναν δεκτές λόγω λανθασμένης τιμής κάποιας ρύθμισης. Διορθώστε την λάθος τιμή και προσπαθήστε ξανά.
+                                      <br />Η λανθασμένη τιμή υποδεικνύεται με κόκκινο πλαίσιο.';
+$lang['updated']               = 'Επιτυχής τροποποίηση ρυθμίσεων.';
+$lang['nochoice']              = '(δεν υπάρχουν άλλες διαθέσιμες επιλογές)';
+$lang['locked']                = 'Το αρχείο ρυθμίσεων δεν μπορεί να τροποποιηθεί. <br />Εάν αυτό δεν είναι επιθυμητό, διορθώστε τα δικαιώματα πρόσβασης του αρχείου ρυθμίσεων';
+$lang['danger']                = 'Κίνδυνος: Η αλλαγή αυτής της επιλογής θα μπορούσε να αποτρέψει την πρόσβαση στο wiki και στις ρυθμίσεις του.';
+$lang['warning']               = 'Προσοχή: Η αλλαγή αυτής της επιλογής θα μπορούσε να προκαλέσει ανεπιθύμητη συμπεριφορά.';
+$lang['security']              = 'Προσοχή: Η αλλαγή αυτής της επιλογής θα μπορούσε να προκαλέσει προβλήματα ασφαλείας.';
+$lang['_configuration_manager'] = 'Ρυθμίσεις';
+$lang['_header_dokuwiki']      = 'Ρυθμίσεις DokuWiki';
+$lang['_header_plugin']        = 'Ρυθμίσεις Επεκτάσεων';
+$lang['_header_template']      = 'Ρυθμίσεις Προτύπων παρουσίασης';
+$lang['_header_undefined']     = 'Διάφορες Ρυθμίσεις';
+$lang['_basic']                = 'Βασικές Ρυθμίσεις';
+$lang['_display']              = 'Ρυθμίσεις Εμφάνισης';
+$lang['_authentication']       = 'Ρυθμίσεις Ασφαλείας';
+$lang['_anti_spam']            = 'Ρυθμίσεις Anti-Spam';
+$lang['_editing']              = 'Ρυθμίσεις Σύνταξης σελίδων';
+$lang['_links']                = 'Ρυθμίσεις Συνδέσμων';
+$lang['_media']                = 'Ρυθμίσεις Αρχείων';
+$lang['_notifications']        = 'Ρυθμίσεις ενημερώσεων';
+$lang['_syndication']          = 'Ρυθμίσεις σύνδεσης';
+$lang['_advanced']             = 'Ρυθμίσεις για Προχωρημένους';
+$lang['_network']              = 'Ρυθμίσεις Δικτύου';
+$lang['_msg_setting_undefined'] = 'Δεν έχουν οριστεί metadata.';
+$lang['_msg_setting_no_class'] = 'Δεν έχει οριστεί κλάση.';
+$lang['_msg_setting_no_default'] = 'Δεν υπάρχει τιμή εξ ορισμού.';
+$lang['title']                 = 'Τίτλος Wiki';
+$lang['start']                 = 'Ονομασία αρχικής σελίδας';
+$lang['lang']                  = 'Γλώσσα';
+$lang['template']              = 'Πρότυπο προβολής';
+$lang['tagline']               = 'Tagline';
+$lang['sidebar']               = 'Sidebar page name';
+$lang['license']               = 'Κάτω από ποια άδεια θέλετε να δημοσιευτεί το υλικό σας?';
+$lang['savedir']               = 'Φάκελος για την αποθήκευση δεδομένων';
+$lang['basedir']               = 'Αρχικός Φάκελος';
+$lang['baseurl']               = 'Αρχικό URL';
+$lang['cookiedir']             = 'Διαδρομή cookie. Αφήστε την κενή για την χρησιμοποίηση της αρχικής URL.';
+$lang['dmode']                 = 'Δικαιώματα πρόσβασης δημιουργούμενων φακέλων';
+$lang['fmode']                 = 'Δικαιώματα πρόσβασης δημιουργούμενων αρχείων';
+$lang['allowdebug']            = 'Δεδομένα εκσφαλμάτωσης (debug) <b>απενεργοποιήστε τα εάν δεν τα έχετε ανάγκη!</b>';
+$lang['recent']                = 'Αριθμός πρόσφατων αλλαγών ανά σελίδα';
+$lang['recent_days']           = 'Πόσο παλιές αλλαγές να εμφανίζονται (ημέρες)';
+$lang['breadcrumbs']           = 'Αριθμός συνδέσμων ιστορικού';
+$lang['youarehere']            = 'Εμφάνιση ιεραρχικής προβολής τρέχουσας σελίδας';
+$lang['fullpath']              = 'Εμφάνιση πλήρους διαδρομής σελίδας στην υποκεφαλίδα';
+$lang['typography']            = 'Μετατροπή ειδικών χαρακτήρων στο τυπογραφικό ισοδύναμό τους';
+$lang['dformat']               = 'Μορφή ημερομηνίας (βλέπε την <a href="http://php.net/strftime">strftime</a> function της PHP)';
+$lang['signature']             = 'Υπογραφή';
+$lang['showuseras']            = 'Τι να εμφανίζεται όταν φαίνεται ο χρήστης που τροποποίησε τελευταίος μία σελίδα';
+$lang['toptoclevel']           = 'Ανώτατο επίπεδο πίνακα περιεχομένων σελίδας';
+$lang['tocminheads']           = 'Ελάχιστος αριθμός κεφαλίδων για την δημιουργία πίνακα περιεχομένων - TOC';
+$lang['maxtoclevel']           = 'Μέγιστο επίπεδο για πίνακα περιεχομένων σελίδας';
+$lang['maxseclevel']           = 'Μέγιστο επίπεδο για εμφάνιση της επιλογής τροποποίησης επιπέδου';
+$lang['camelcase']             = 'Χρήση CamelCase στους συνδέσμους';
+$lang['deaccent']              = 'Αφαίρεση σημείων στίξης από ονόματα σελίδων';
+$lang['useheading']            = 'Χρήση κεφαλίδας πρώτου επιπέδου σαν τίτλο συνδέσμων';
+$lang['sneaky_index']          = 'Εξ ορισμού, η εφαρμογή DokuWiki δείχνει όλους τους φακέλους στην προβολή Καταλόγου. Ενεργοποιώντας αυτή την επιλογή, δεν θα εμφανίζονται οι φάκελοι για τους οποίους ο χρήστης δεν έχει δικαιώματα ανάγνωσης αλλά και οι υπο-φάκελοί τους ανεξαρτήτως δικαιωμάτων πρόσβασης.';
+$lang['hidepages']             = 'Φίλτρο απόκρυψης σελίδων (regular expressions)';
+$lang['useacl']                = 'Χρήση Λίστας Δικαιωμάτων Πρόσβασης (ACL)';
+$lang['autopasswd']            = 'Αυτόματη δημιουργία κωδικού χρήστη';
+$lang['authtype']              = 'Τύπος πιστοποίησης στοιχείων χρήστη';
+$lang['passcrypt']             = 'Μέθοδος κρυπτογράφησης κωδικού χρήστη';
+$lang['defaultgroup']          = 'Προεπιλεγμένη ομάδα χρηστών';
+$lang['superuser']             = 'Υπερ-χρήστης - μία ομάδα ή ένας χρήστης με πλήρη δικαιώματα πρόσβασης σε όλες τις σελίδες και όλες τις λειτουργίες ανεξάρτητα από τις ρυθμίσεις των Λιστών Δικαιωμάτων Πρόσβασης (ACL)';
+$lang['manager']               = 'Διαχειριστής - μία ομάδα ή ένας χρήστης με δικαιώματα πρόσβασης σε ορισμένες από τις λειτουργίες της εφαρμογής';
+$lang['profileconfirm']        = 'Να απαιτείται ο κωδικός χρήστη για την επιβεβαίωση αλλαγών στο προφίλ χρήστη';
+$lang['rememberme']            = 'Να επιτρέπονται τα cookies λογαρισμού χρήστη αορίστου χρόνου (Απομνημόνευση στοιχείων λογαριασμού)';
+$lang['disableactions']        = 'Απενεργοποίηση λειτουργιών DokuWiki';
+$lang['disableactions_check']  = 'Έλεγχος';
+$lang['disableactions_subscription'] = 'Εγγραφή/Διαγραφή χρήστη';
+$lang['disableactions_wikicode'] = 'Προβολή κώδικα σελίδας';
+$lang['disableactions_other']  = 'Άλλες λειτουργίες (διαχωρίστε τις με κόμμα)';
+$lang['auth_security_timeout'] = 'Διάρκεια χρόνου για ασφάλεια πιστοποίησης (δευτερόλεπτα)';
+$lang['securecookie']          = 'Τα cookies που έχουν οριστεί μέσω HTTPS πρέπει επίσης να αποστέλλονται μόνο μέσω HTTPS από τον φυλλομετρητή? Απενεργοποιήστε αυτή την επιλογή όταν μόνο η είσοδος στο wiki σας διασφαλίζεται μέσω SSL αλλά η περιήγηση γίνεται και χωρίς αυτό.';
+$lang['remote']                = 'Ενεργοποίησης απομακρυσμένης προγραμματιστικής διεπαφής εφαρμογών (API). Με αυτό τον τρόπο επιτρέπεται η πρόσβαση στο wiki με το XML-RPC ή με άλλα πρωτόκολλα επικοινωνίας.';
+$lang['remoteuser']            = 'Απενεργοποίησης απομακρυσμένης προγραμματιστικής διεπαφής εφαρμογών (API). Αφήστε το κενό για να είναι δυνατή η πρόσβαση στον οποιοδήποτε.';
+$lang['usewordblock']          = 'Χρήστη λίστα απαγορευμένων λέξεων για καταπολέμηση του spam';
+$lang['relnofollow']           = 'Χρήση rel="nofollow"';
+$lang['indexdelay']            = 'Χρόνος αναμονής προτού επιτραπεί σε μηχανές αναζήτησης να ευρετηριάσουν μια τροποποιημένη σελίδα (sec)';
+$lang['mailguard']             = 'Κωδικοποίηση e-mail διευθύνσεων';
+$lang['iexssprotect']          = 'Έλεγχος μεταφορτώσεων για πιθανώς επικίνδυνο κώδικα JavaScript ή HTML';
+$lang['usedraft']              = 'Αυτόματη αποθήκευση αντιγράφων κατά την τροποποίηση σελίδων';
+$lang['htmlok']                = 'Να επιτρέπεται η ενσωμάτωση HTML';
+$lang['phpok']                 = 'Να επιτρέπεται η ενσωμάτωση PHP';
+$lang['locktime']              = 'Μέγιστος χρόνος κλειδώματος αρχείου υπό τροποποίηση (sec)';
+$lang['cachetime']             = 'Μέγιστη ηλικία cache (sec)';
+$lang['target____wiki']        = 'Παράθυρο-στόχος για εσωτερικούς συνδέσμους';
+$lang['target____interwiki']   = 'Παράθυρο-στόχος για συνδέσμους interwiki';
+$lang['target____extern']      = 'Παράθυρο-στόχος για εξωτερικούς σθνδέσμους';
+$lang['target____media']       = 'Παράθυρο-στόχος για συνδέσμους αρχείων';
+$lang['target____windows']     = 'Παράθυρο-στόχος για συνδέσμους σε Windows shares';
+$lang['mediarevisions']        = 'Ενεργοποίηση Mediarevisions;';
+$lang['refcheck']              = 'Πριν τη διαγραφή ενός αρχείου να ελέγχεται η ύπαρξη σελίδων που το χρησιμοποιούν';
+$lang['gdlib']                 = 'Έκδοση βιβλιοθήκης GD';
+$lang['im_convert']            = 'Διαδρομή προς το εργαλείο μετατροπής εικόνων του ImageMagick';
+$lang['jpg_quality']           = 'Ποιότητα συμπίεσης JPG (0-100)';
+$lang['fetchsize']             = 'Μέγιστο μέγεθος (σε bytes) εξωτερικού αρχείου που επιτρέπεται να μεταφέρει η fetch.php';
+$lang['subscribers']           = 'Να επιτρέπεται η εγγραφή στην ενημέρωση αλλαγών σελίδας';
+$lang['subscribe_time']        = 'Χρόνος μετά τον οποίο οι λίστες ειδοποιήσεων και τα συνοπτικά θα αποστέλλονται (δευτερόλεπτα). Αυτό θα πρέπει να είναι μικρότερο από τον χρόνο που έχει η ρύθμιση recent_days.';
+$lang['notify']                = 'Αποστολή ενημέρωσης για αλλαγές σε αυτή την e-mail διεύθυνση';
+$lang['registernotify']        = 'Αποστολή ενημερωτικών μηνυμάτων σε αυτή την e-mail διεύθυνση κατά την εγγραφή νέων χρηστών';
+$lang['mailfrom']              = 'e-mail διεύθυνση αποστολέα για μηνύματα από την εφαρμογή';
+$lang['mailprefix']            = 'Πρόθεμα θέματος που να χρησιμοποιείται για τα αυτόματα μηνύματα ηλεκτρονικού ταχυδρομείου.';
+$lang['htmlmail']              = 'Αποστολή οπτικά καλύτερου, αλλά μεγαλύτερου σε μέγεθος email με χρήση HTML. Απενεργοποιήστε το για αποστέλλονται μόνο email απλού κειμένου.';
+$lang['sitemap']               = 'Δημιουργία Google sitemap (ημέρες)';
+$lang['rss_type']              = 'Τύπος XML feed';
+$lang['rss_linkto']            = 'Τύπος συνδέσμων στο XML feed';
+$lang['rss_content']           = 'Τι να εμφανίζεται στα XML feed items?';
+$lang['rss_update']            = 'Χρόνος ανανέωσης XML feed (sec)';
+$lang['rss_show_summary']      = 'Να εμφανίζεται σύνοψη του XML feed στον τίτλο';
+$lang['rss_media']             = 'Τι είδους αλλαγές πρέπει να εμφανίζονται στο XLM feed;';
+$lang['updatecheck']           = 'Έλεγχος για ύπαρξη νέων εκδόσεων και ενημερώσεων ασφαλείας της εφαρμογής? Απαιτείται η σύνδεση με το update.dokuwiki.org για να λειτουργήσει σωστά αυτή η επιλογή.';
+$lang['userewrite']            = 'Χρήση ωραίων URLs';
+$lang['useslash']              = 'Χρήση slash σαν διαχωριστικό φακέλων στα URLs';
+$lang['sepchar']               = 'Διαχωριστικός χαρακτήρας για κανονικοποίηση ονόματος σελίδας';
+$lang['canonical']             = 'Πλήρη και κανονικοποιημένα URLs';
+$lang['fnencode']              = 'Μέθοδος κωδικοποίησης για ονόματα αρχείων μη-ASCII';
+$lang['autoplural']            = 'Ταίριασμα πληθυντικού στους συνδέσμους';
+$lang['compression']           = 'Μέθοδος συμπίεσης για αρχεία attic';
+$lang['gzip_output']           = 'Χρήση gzip Content-Encoding για την xhtml';
+$lang['compress']              = 'Συμπίεση αρχείων CSS και javascript';
+$lang['cssdatauri']            = 'Το μέγεθος σε bytes στο οποίο οι εικόνες που αναφέρονται σε CSS αρχεία θα πρέπει να είναι ενσωματωμένες για τη μείωση των απαιτήσεων μιας κεφαλίδας αίτησης HTTP . Αυτή η τεχνική δεν θα λειτουργήσει σε IE <8! <code> 400 </code> με <code> 600 </code> bytes είναι μια καλή τιμή. Ορίστε την τιμή <code> 0 </code> για να το απενεργοποιήσετε.';
+$lang['send404']               = 'Αποστολή "HTTP 404/Page Not Found" για σελίδες που δεν υπάρχουν';
+$lang['broken_iua']            = 'Η συνάρτηση ignore_user_abort δεν λειτουργεί σωστά στο σύστημά σας? Σε αυτή την περίπτωση μπορεί να μην δουλεύει σωστά η λειτουργία Καταλόγου. Ο συνδυασμός IIS+PHP/CGI είναι γνωστό ότι έχει τέτοιο πρόβλημα. Δείτε και <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> για λεπτομέρειες.';
+$lang['xsendfile']             = 'Χρήση της κεφαλίδας X-Sendfile από τον εξυπηρετητή κατά την φόρτωση στατικών αρχείων? Ο εξυπηρετητής σας πρέπει να υποστηρίζει αυτή την δυνατότητα.';
+$lang['renderer_xhtml']        = 'Πρόγραμμα δημιουργίας βασικής (xhtml) εξόδου wiki.';
+$lang['renderer__core']        = '%s (βασικός κώδικας dokuwiki)';
+$lang['renderer__plugin']      = '%s (επέκταση)';
+$lang['dnslookups']            = 'Το DokuWiki θα ψάξει τα ονόματα υπολογιστών που αντιστοιχούν σε διευθύνσεις IP των χρηστών που γράφουν στις σελίδες. Αν ο DNS είναι αργός, δεν δουλεύει ή δεν χρειάζεστε αυτή την λειτουργία, απενεργοποιήστε την.';
+$lang['proxy____host']         = 'Διακομιστής Proxy';
+$lang['proxy____port']         = 'Θύρα Proxy';
+$lang['proxy____user']         = 'Όνομα χρήστη Proxy';
+$lang['proxy____pass']         = 'Κωδικός χρήστη Proxy';
+$lang['proxy____ssl']          = 'Χρήση ssl για σύνδεση με διακομιστή Proxy';
+$lang['proxy____except']       = 'Regular expression για να πιάνει τα URLs για τα οποία θα παρακάμπτεται το proxy.';
+$lang['safemodehack']          = 'Ενεργοποίηση safemode hack';
+$lang['ftp____host']           = 'Διακομιστής FTP για safemode hack';
+$lang['ftp____port']           = 'Θύρα FTP για safemode hack';
+$lang['ftp____user']           = 'Όνομα χρήστη FTP για safemode hack';
+$lang['ftp____pass']           = 'Κωδικός χρήστη FTP για safemode hack';
+$lang['ftp____root']           = 'Αρχικός φάκελος FTP για safemode hack';
+$lang['license_o_']            = 'Δεν επελέγει άδεια';
+$lang['typography_o_0']        = 'κανένα';
+$lang['typography_o_1']        = 'μόνο διπλά εισαγωγικά';
+$lang['typography_o_2']        = 'όλα τα εισαγωγικά (μπορεί να μην λειτουργεί πάντα)';
+$lang['userewrite_o_0']        = 'κανένα';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'από DokuWiki';
+$lang['deaccent_o_0']          = 'όχι';
+$lang['deaccent_o_1']          = 'αφαίρεση σημείων στίξης';
+$lang['deaccent_o_2']          = 'λατινοποίηση';
+$lang['gdlib_o_0']             = 'Δεν υπάρχει βιβλιοθήκη GD στο σύστημα';
+$lang['gdlib_o_1']             = 'Έκδοση 1.x';
+$lang['gdlib_o_2']             = 'Αυτόματος εντοπισμός';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Περίληψη';
+$lang['rss_content_o_diff']    = 'Ενοποιημένο Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML διαμορφωμένος πίνακας diff';
+$lang['rss_content_o_html']    = 'Περιεχόμενο Σελίδας μόνο με HTML';
+$lang['rss_linkto_o_diff']     = 'προβολή αλλαγών';
+$lang['rss_linkto_o_page']     = 'τροποποιημένη σελίδα';
+$lang['rss_linkto_o_rev']      = 'εκδόσεις σελίδας';
+$lang['rss_linkto_o_current']  = 'τρέχουσα σελίδα';
+$lang['compression_o_0']       = 'none';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'να μην χρησιμοποιείται';
+$lang['xsendfile_o_1']         = 'Ιδιοταγής κεφαλίδα lighttpd (πριν από την έκδοση 1.5)';
+$lang['xsendfile_o_2']         = 'Τυπική κεφαλίδα X-Sendfile';
+$lang['xsendfile_o_3']         = 'Ιδιοταγής κεφαλίδα Nginx X-Accel-Redirect ';
+$lang['showuseras_o_loginname'] = 'Όνομα χρήστη';
+$lang['showuseras_o_username'] = 'Ονοματεπώνυμο χρήστη';
+$lang['showuseras_o_email']    = 'e-mail διεύθυνση χρήστη (εμφανίζεται σύμφωνα με την ρύθμιση για την κωδικοποίηση e-mail διευθύνσεων)';
+$lang['showuseras_o_email_link'] = 'Εμφάνιση e-mail διεύθυνσης χρήστη σαν σύνδεσμος mailto:';
+$lang['useheading_o_0']        = 'Ποτέ';
+$lang['useheading_o_navigation'] = 'Μόνο κατά την πλοήγηση';
+$lang['useheading_o_content']  = 'Μόνο για τα περιεχόμενα του wiki';
+$lang['useheading_o_1']        = 'Πάντα';
+$lang['readdircache']          = 'Μέγιστος χρόνος διατήρησης για το cache του readdir (δευτερόλεπτα)';
diff --git a/wiki/lib/plugins/config/lang/en/intro.txt b/wiki/lib/plugins/config/lang/en/intro.txt
new file mode 100644
index 0000000..0108987
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/en/intro.txt
@@ -0,0 +1,7 @@
+====== Configuration Manager ======
+
+Use this page to control the settings of your DokuWiki installation.  For help on individual settings refer to [[doku>config]]. For more details about this plugin see [[doku>plugin:config]].
+
+Settings shown with a light red background are protected and can not be altered with this plugin. Settings shown with a blue background are the default values and settings shown with a white background have been set locally for this particular installation.  Both blue and white settings can be altered.
+
+Remember to press the **Save** button before leaving this page otherwise your changes will be lost.
diff --git a/wiki/lib/plugins/config/lang/en/lang.php b/wiki/lib/plugins/config/lang/en/lang.php
new file mode 100644
index 0000000..356db4e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/en/lang.php
@@ -0,0 +1,279 @@
+<?php
+/**
+ * english language file
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Christopher Smith <chris@jalakai.co.uk>
+ * @author     Matthias Schulte <dokuwiki@lupo49.de>
+ * @author     Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ */
+
+// for admin plugins, the menu prompt to be displayed in the admin menu
+// if set here, the plugin doesn't need to override the getMenuText() method
+$lang['menu']       = 'Configuration Settings';
+
+$lang['error']      = 'Settings not updated due to an invalid value, please review your changes and resubmit.
+                       <br />The incorrect value(s) will be shown surrounded by a red border.';
+$lang['updated']    = 'Settings updated successfully.';
+$lang['nochoice']   = '(no other choices available)';
+$lang['locked']     = 'The settings file can not be updated, if this is unintentional, <br />
+                       ensure the local settings file name and permissions are correct.';
+
+$lang['danger']     = 'Danger: Changing this option could make your wiki and the configuration menu inaccessible.';
+$lang['warning']    = 'Warning: Changing this option could cause unintended behaviour.';
+$lang['security']   = 'Security Warning: Changing this option could present a security risk.';
+
+/* --- Config Setting Headers --- */
+$lang['_configuration_manager'] = 'Configuration Manager'; //same as heading in intro.txt
+$lang['_header_dokuwiki'] = 'DokuWiki';
+$lang['_header_plugin'] = 'Plugin';
+$lang['_header_template'] = 'Template';
+$lang['_header_undefined'] = 'Undefined Settings';
+
+/* --- Config Setting Groups --- */
+$lang['_basic'] = 'Basic';
+$lang['_display'] = 'Display';
+$lang['_authentication'] = 'Authentication';
+$lang['_anti_spam'] = 'Anti-Spam';
+$lang['_editing'] = 'Editing';
+$lang['_links'] = 'Links';
+$lang['_media'] = 'Media';
+$lang['_notifications'] = 'Notification';
+$lang['_syndication']   = 'Syndication (RSS)';
+$lang['_advanced'] = 'Advanced';
+$lang['_network'] = 'Network';
+
+/* --- Undefined Setting Messages --- */
+$lang['_msg_setting_undefined'] = 'No setting metadata.';
+$lang['_msg_setting_no_class'] = 'No setting class.';
+$lang['_msg_setting_no_default'] = 'No default value.';
+
+/* -------------------- Config Options --------------------------- */
+
+/* Basic Settings */
+$lang['title']       = 'Wiki title aka. your wiki\'s name';
+$lang['start']       = 'Page name to use as the starting point for each namespace';
+$lang['lang']        = 'Interface language';
+$lang['template']    = 'Template aka. the design of the wiki.';
+$lang['tagline']     = 'Tagline (if template supports it)';
+$lang['sidebar']     = 'Sidebar page name (if template supports it), empty field disables the sidebar';
+$lang['license']     = 'Under which license should your content be released?';
+$lang['savedir']     = 'Directory for saving data';
+$lang['basedir']     = 'Server path (eg. <code>/dokuwiki/</code>). Leave blank for autodetection.';
+$lang['baseurl']     = 'Server URL (eg. <code>http://www.yourserver.com</code>). Leave blank for autodetection.';
+$lang['cookiedir']   = 'Cookie path. Leave blank for using baseurl.';
+$lang['dmode']       = 'Directory creation mode';
+$lang['fmode']       = 'File creation mode';
+$lang['allowdebug']  = 'Allow debug. <b>Disable if not needed!</b>';
+
+/* Display Settings */
+$lang['recent']      = 'Number of entries per page in the recent changes';
+$lang['recent_days'] = 'How many recent changes to keep (days)';
+$lang['breadcrumbs'] = 'Number of "trace" breadcrumbs. Set to 0 to disable.';
+$lang['youarehere']  = 'Use hierarchical breadcrumbs (you probably want to disable the above option then)';
+$lang['fullpath']    = 'Reveal full path of pages in the footer';
+$lang['typography']  = 'Do typographical replacements';
+$lang['dformat']     = 'Date format (see PHP\'s <a href="http://php.net/strftime">strftime</a> function)';
+$lang['signature']   = 'What to insert with the signature button in the editor';
+$lang['showuseras']  = 'What to display when showing the user that last edited a page';
+$lang['toptoclevel'] = 'Top level for table of contents';
+$lang['tocminheads'] = 'Minimum amount of headlines that determines whether the TOC is built';
+$lang['maxtoclevel'] = 'Maximum level for table of contents';
+$lang['maxseclevel'] = 'Maximum section edit level';
+$lang['camelcase']   = 'Use CamelCase for links';
+$lang['deaccent']    = 'How to clean pagenames';
+$lang['useheading']  = 'Use first heading for pagenames';
+$lang['sneaky_index'] = 'By default, DokuWiki will show all namespaces in the sitemap. Enabling this option will hide those where the user doesn\'t have read permissions. This might result in hiding of accessable subnamespaces which may make the index unusable with certain ACL setups.';
+$lang['hidepages']   = 'Hide pages matching this regular expression from search, the sitemap and other automatic indexes';
+
+/* Authentication Settings */
+$lang['useacl']      = 'Use access control lists';
+$lang['autopasswd']  = 'Autogenerate passwords';
+$lang['authtype']    = 'Authentication backend';
+$lang['passcrypt']   = 'Password encryption method';
+$lang['defaultgroup']= 'Default group, all new users will be placed in this group';
+$lang['superuser']   = 'Superuser - group, user or comma separated list user1,@group1,user2 with full access to all pages and functions regardless of the ACL settings';
+$lang['manager']     = 'Manager - group, user or comma separated list user1,@group1,user2 with access to certain management functions';
+$lang['profileconfirm'] = 'Confirm profile changes with password';
+$lang['rememberme'] = 'Allow permanent login cookies (remember me)';
+$lang['disableactions'] = 'Disable DokuWiki actions';
+$lang['disableactions_check'] = 'Check';
+$lang['disableactions_subscription'] = 'Subscribe/Unsubscribe';
+$lang['disableactions_wikicode'] = 'View source/Export Raw';
+$lang['disableactions_profile_delete'] = 'Delete Own Account';
+$lang['disableactions_other'] = 'Other actions (comma separated)';
+$lang['disableactions_rss'] = 'XML Syndication (RSS)';
+$lang['auth_security_timeout'] = 'Authentication Security Timeout (seconds)';
+$lang['securecookie'] = 'Should cookies set via HTTPS only be sent via HTTPS by the browser? Disable this option when only the login of your wiki is secured with SSL but browsing the wiki is done unsecured.';
+$lang['remote']      = 'Enable the remote API system. This allows other applications to access the wiki via XML-RPC or other mechanisms.';
+$lang['remoteuser']  = 'Restrict remote API access to the comma separated groups or users given here. Leave empty to give access to everyone.';
+
+/* Anti-Spam Settings */
+$lang['usewordblock']= 'Block spam based on wordlist';
+$lang['relnofollow'] = 'Use rel="nofollow" on external links';
+$lang['indexdelay']  = 'Time delay before indexing (sec)';
+$lang['mailguard']   = 'Obfuscate email addresses';
+$lang['iexssprotect']= 'Check uploaded files for possibly malicious JavaScript or HTML code';
+
+/* Editing Settings */
+$lang['usedraft']    = 'Automatically save a draft while editing';
+$lang['htmlok']      = 'Allow embedded HTML';
+$lang['phpok']       = 'Allow embedded PHP';
+$lang['locktime']    = 'Maximum age for lock files (sec)';
+$lang['cachetime']   = 'Maximum age for cache (sec)';
+
+/* Link settings */
+$lang['target____wiki']      = 'Target window for internal links';
+$lang['target____interwiki'] = 'Target window for interwiki links';
+$lang['target____extern']    = 'Target window for external links';
+$lang['target____media']     = 'Target window for media links';
+$lang['target____windows']   = 'Target window for windows links';
+
+/* Media Settings */
+$lang['mediarevisions'] = 'Enable Mediarevisions?';
+$lang['refcheck']    = 'Check if a media file is still in use before deleting it';
+$lang['gdlib']       = 'GD Lib version';
+$lang['im_convert']  = 'Path to ImageMagick\'s convert tool';
+$lang['jpg_quality'] = 'JPG compression quality (0-100)';
+$lang['fetchsize']   = 'Maximum size (bytes) fetch.php may download from external URLs, eg. to cache and resize external images.';
+
+/* Notification Settings */
+$lang['subscribers'] = 'Allow users to subscribe to page changes by email';
+$lang['subscribe_time'] = 'Time after which subscription lists and digests are sent (sec); This should be smaller than the time specified in recent_days.';
+$lang['notify']      = 'Always send change notifications to this email address';
+$lang['registernotify'] = 'Always send info on newly registered users to this email address';
+$lang['mailfrom']    = 'Sender email address to use for automatic mails';
+$lang['mailreturnpath']    = 'Recipient email address for non delivery notifications';
+$lang['mailprefix']  = 'Email subject prefix to use for automatic mails. Leave blank to use the wiki title';
+$lang['htmlmail']    = 'Send better looking, but larger in size HTML multipart emails. Disable for plain text only mails.';
+
+/* Syndication Settings */
+$lang['sitemap']           = 'Generate Google sitemap this often (in days). 0 to disable';
+$lang['rss_type']          = 'XML feed type';
+$lang['rss_linkto']        = 'XML feed links to';
+$lang['rss_content']       = 'What to display in the XML feed items?';
+$lang['rss_update']        = 'XML feed update interval (sec)';
+$lang['rss_show_summary']  = 'XML feed show summary in title';
+$lang['rss_media']         = 'What kind of changes should be listed in the XML feed?';
+$lang['rss_media_o_both']  = 'both';
+$lang['rss_media_o_pages'] = 'pages';
+$lang['rss_media_o_media'] = 'media';
+
+
+/* Advanced Options */
+$lang['updatecheck'] = 'Check for updates and security warnings? DokuWiki needs to contact update.dokuwiki.org for this feature.';
+$lang['userewrite']  = 'Use nice URLs';
+$lang['useslash']    = 'Use slash as namespace separator in URLs';
+$lang['sepchar']     = 'Page name word separator';
+$lang['canonical']   = 'Use fully canonical URLs';
+$lang['fnencode']    = 'Method for encoding non-ASCII filenames.';
+$lang['autoplural']  = 'Check for plural forms in links';
+$lang['compression'] = 'Compression method for attic files';
+$lang['gzip_output'] = 'Use gzip Content-Encoding for xhtml';
+$lang['compress']    = 'Compact CSS and javascript output';
+$lang['cssdatauri']  = 'Size in bytes up to which images referenced in CSS files should be embedded right into the stylesheet to reduce HTTP request header overhead. <code>400</code> to <code>600</code> bytes is a good value. Set <code>0</code> to disable.';
+$lang['send404']     = 'Send "HTTP 404/Page Not Found" for non existing pages';
+$lang['broken_iua']  = 'Is the ignore_user_abort function broken on your system? This could cause a non working search index. IIS+PHP/CGI is known to be broken. See <a href="http://bugs.dokuwiki.org/?do=details&amp;task_id=852">Bug 852</a> for more info.';
+$lang['xsendfile']   = 'Use the X-Sendfile header to let the webserver deliver static files? Your webserver needs to support this.';
+$lang['renderer_xhtml']   = 'Renderer to use for main (xhtml) wiki output';
+$lang['renderer__core']   = '%s (dokuwiki core)';
+$lang['renderer__plugin'] = '%s (plugin)';
+$lang['search_nslimit'] = 'Limit the search to the current X namespaces. When a search is executed from a page within a deeper namespace, the first X namespaces will be added as filter';
+$lang['search_fragment'] = 'Specify the default fragment search behavior';
+$lang['search_fragment_o_exact'] = 'exact';
+$lang['search_fragment_o_starts_with'] = 'starts with';
+$lang['search_fragment_o_ends_with'] = 'ends with';
+$lang['search_fragment_o_contains'] = 'contains';
+
+/* Network Options */
+$lang['dnslookups'] = 'DokuWiki will lookup hostnames for remote IP addresses of users editing pages. If you have a slow or non working DNS server or don\'t want this feature, disable this option';
+$lang['jquerycdn'] = 'Should the jQuery and jQuery UI script files be loaded from a CDN? This adds additional HTTP requests, but files may load faster and users may have them cached already.';
+
+/* jQuery CDN options */
+$lang['jquerycdn_o_0'] = 'No CDN, local delivery only';
+$lang['jquerycdn_o_jquery'] = 'CDN at code.jquery.com';
+$lang['jquerycdn_o_cdnjs'] = 'CDN at cdnjs.com';
+
+/* Proxy Options */
+$lang['proxy____host']    = 'Proxy servername';
+$lang['proxy____port']    = 'Proxy port';
+$lang['proxy____user']    = 'Proxy user name';
+$lang['proxy____pass']    = 'Proxy password';
+$lang['proxy____ssl']     = 'Use SSL to connect to proxy';
+$lang['proxy____except']  = 'Regular expression to match URLs for which the proxy should be skipped.';
+
+/* Safemode Hack */
+$lang['safemodehack'] = 'Enable safemode hack';
+$lang['ftp____host'] = 'FTP server for safemode hack';
+$lang['ftp____port'] = 'FTP port for safemode hack';
+$lang['ftp____user'] = 'FTP user name for safemode hack';
+$lang['ftp____pass'] = 'FTP password for safemode hack';
+$lang['ftp____root'] = 'FTP root directory for safemode hack';
+
+/* License Options */
+$lang['license_o_'] = 'None chosen';
+
+/* typography options */
+$lang['typography_o_0'] = 'none';
+$lang['typography_o_1'] = 'excluding single quotes';
+$lang['typography_o_2'] = 'including single quotes (might not always work)';
+
+/* userewrite options */
+$lang['userewrite_o_0'] = 'none';
+$lang['userewrite_o_1'] = '.htaccess';
+$lang['userewrite_o_2'] = 'DokuWiki internal';
+
+/* deaccent options */
+$lang['deaccent_o_0'] = 'off';
+$lang['deaccent_o_1'] = 'remove accents';
+$lang['deaccent_o_2'] = 'romanize';
+
+/* gdlib options */
+$lang['gdlib_o_0'] = 'GD Lib not available';
+$lang['gdlib_o_1'] = 'Version 1.x';
+$lang['gdlib_o_2'] = 'Autodetection';
+
+/* rss_type options */
+$lang['rss_type_o_rss']   = 'RSS 0.91';
+$lang['rss_type_o_rss1']  = 'RSS 1.0';
+$lang['rss_type_o_rss2']  = 'RSS 2.0';
+$lang['rss_type_o_atom']  = 'Atom 0.3';
+$lang['rss_type_o_atom1'] = 'Atom 1.0';
+
+/* rss_content options */
+$lang['rss_content_o_abstract'] = 'Abstract';
+$lang['rss_content_o_diff']     = 'Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formatted diff table';
+$lang['rss_content_o_html']     = 'Full HTML page content';
+
+/* rss_linkto options */
+$lang['rss_linkto_o_diff']    = 'difference view';
+$lang['rss_linkto_o_page']    = 'the revised page';
+$lang['rss_linkto_o_rev']     = 'list of revisions';
+$lang['rss_linkto_o_current'] = 'the current page';
+
+/* compression options */
+$lang['compression_o_0']   = 'none';
+$lang['compression_o_gz']  = 'gzip';
+$lang['compression_o_bz2'] = 'bz2';
+
+/* xsendfile header */
+$lang['xsendfile_o_0'] = "don't use";
+$lang['xsendfile_o_1'] = 'Proprietary lighttpd header (before release 1.5)';
+$lang['xsendfile_o_2'] = 'Standard X-Sendfile header';
+$lang['xsendfile_o_3'] = 'Proprietary Nginx X-Accel-Redirect header';
+
+/* Display user info */
+$lang['showuseras_o_loginname']     = 'Login name';
+$lang['showuseras_o_username']      = "User's full name";
+$lang['showuseras_o_username_link'] = "User's full name as interwiki user link";
+$lang['showuseras_o_email']         = "User's e-mail addresss (obfuscated according to mailguard setting)";
+$lang['showuseras_o_email_link']    = "User's e-mail addresss as a mailto: link";
+
+/* useheading options */
+$lang['useheading_o_0'] = 'Never';
+$lang['useheading_o_navigation'] = 'Navigation Only';
+$lang['useheading_o_content'] = 'Wiki Content Only';
+$lang['useheading_o_1'] = 'Always';
+
+$lang['readdircache'] = 'Maximum age for readdir cache (sec)';
diff --git a/wiki/lib/plugins/config/lang/eo/intro.txt b/wiki/lib/plugins/config/lang/eo/intro.txt
new file mode 100644
index 0000000..5ed2f0e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/eo/intro.txt
@@ -0,0 +1,7 @@
+====== Administrilo de Agordoj ======
+
+Uzu tiun ĉi paĝon por kontroli la difinojn de via DokuWiki-instalo. Por helpo pri specifaj difinoj aliru al [[doku>config]]. Por pli detaloj pri tiu ĉi kromaĵo, vidu [[doku>plugin:config]].
+
+Difinoj montrataj kun helruĝa fono estas protektitaj kaj ne povas esti modifataj per tiu ĉi kromaĵo. Difinoj kun blua fono estas aprioraj valoroj kaj difinoj montrataj kun blanka fono iam difiniĝis por tiu ĉi specifa instalo. Ambaŭ blua kaj blanka difinoj povas esti modifataj.
+
+Memoru premi la butonon **Registri** antaŭ ol eliri tiun ĉi paĝon, male viaj modifoj perdiĝus.
diff --git a/wiki/lib/plugins/config/lang/eo/lang.php b/wiki/lib/plugins/config/lang/eo/lang.php
new file mode 100644
index 0000000..7201b32
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/eo/lang.php
@@ -0,0 +1,202 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * Esperantolanguage file
+ *
+ * @author Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>
+ * @author Felipe Castro <fefcas@uol.com.br>
+ * @author Felipo Kastro <fefcas@gmail.com>
+ * @author Robert Bogenschneider <robog@gmx.de>
+ * @author Erik Pedersen <erik pedersen@shaw.ca>
+ */
+$lang['menu']                  = 'Agordaj Difinoj';
+$lang['error']                 = 'La difinoj ne estas ĝisdatigitaj pro malvalida valoro: bonvolu revizii viajn ŝanĝojn kaj resubmeti ilin.
+<br />La malkorekta(j) valoro(j) estas ĉirkaŭita(j) de ruĝa kadro.';
+$lang['updated']               = 'La difinoj sukcese ĝisdatiĝis.';
+$lang['nochoice']              = '(neniu alia elekto disponeblas)';
+$lang['locked']                = 'La difin-dosiero ne povas esti ĝisdatigita; se tio ne estas intenca, <br /> certiĝu, ke la dosieroj de lokaj difinoj havas korektajn nomojn kaj permesojn.';
+$lang['danger']                = 'Danĝero: ŝanĝi tiun opcion povus igi vian vikion kaj la agordan menuon neatingebla.';
+$lang['warning']               = 'Averto: ŝanĝi tiun opcion povus rezulti en neatendita konduto.';
+$lang['security']              = 'Sekureca averto: ŝanĝi tiun opcion povus krei sekurecan riskon.';
+$lang['_configuration_manager'] = 'Administrilo de agordoj';
+$lang['_header_dokuwiki']      = 'Difinoj por DokuWiki';
+$lang['_header_plugin']        = 'Difinoj por kromaĵoj';
+$lang['_header_template']      = 'Difinoj por ŝablonoj';
+$lang['_header_undefined']     = 'Ceteraj difinoj';
+$lang['_basic']                = 'Bazaj difinoj';
+$lang['_display']              = 'Difinoj por montrado';
+$lang['_authentication']       = 'Difinoj por identiĝo';
+$lang['_anti_spam']            = 'Kontraŭ-spamaj difinoj';
+$lang['_editing']              = 'Difinoj por redakto';
+$lang['_links']                = 'Difinoj por ligiloj';
+$lang['_media']                = 'Difinoj por aŭdvidaĵoj';
+$lang['_notifications']        = 'Sciigaj agordoj';
+$lang['_syndication']          = 'Kunhavigaj agordoj';
+$lang['_advanced']             = 'Fakaj difinoj';
+$lang['_network']              = 'Difinoj por reto';
+$lang['_msg_setting_undefined'] = 'Neniu difinanta metadatumaro.';
+$lang['_msg_setting_no_class'] = 'Neniu difinanta klaso.';
+$lang['_msg_setting_no_default'] = 'Neniu apriora valoro.';
+$lang['title']                 = 'Titolo de la vikio';
+$lang['start']                 = 'Nomo de la hejmpaĝo';
+$lang['lang']                  = 'Lingvo';
+$lang['template']              = 'Ŝablono';
+$lang['tagline']               = 'Moto (se la ŝablono antaûvidas tion)';
+$lang['sidebar']               = 'Nomo de la flanka paĝo  (se la ŝablono antaûvidas tion), malplena kampo malebligas la flankan paĝon';
+$lang['license']               = 'Laŭ kiu permesilo via enhavo devus esti publikigita?';
+$lang['savedir']               = 'Dosierujo por konservi datumaron';
+$lang['basedir']               = 'Baza dosierujo';
+$lang['baseurl']               = 'Baza URL';
+$lang['cookiedir']             = 'Kuketopado. Lasu malplena por uzi baseurl.';
+$lang['dmode']                 = 'Reĝimo de dosierujo-kreado';
+$lang['fmode']                 = 'Reĝimo de dosiero-kreado';
+$lang['allowdebug']            = 'Ebligi kodumpurigadon <b>malebligu se ne necese!<;/b>';
+$lang['recent']                = 'Freŝaj ŝanĝoj';
+$lang['recent_days']           = 'Kiom da freŝaj ŝanĝoj por teni (tagoj)';
+$lang['breadcrumbs']           = 'Nombro da paderoj';
+$lang['youarehere']            = 'Hierarkiaj paderoj';
+$lang['fullpath']              = 'Montri la kompletan padon de la paĝoj en la piedlinio';
+$lang['typography']            = 'Fari tipografiajn anstataŭigojn';
+$lang['dformat']               = 'Formato de datoj (vidu la PHP-an funkcion <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Subskribo';
+$lang['showuseras']            = 'Kiel indiki la lastan redaktinton';
+$lang['toptoclevel']           = 'Supera nivelo por la enhavtabelo';
+$lang['tocminheads']           = 'Minimuma kvanto da ĉeftitoloj, kiu difinas ĉu la TOC estas kreata.';
+$lang['maxtoclevel']           = 'Maksimuma nivelo por la enhavtabelo';
+$lang['maxseclevel']           = 'Maksimuma nivelo por redakti sekciojn';
+$lang['camelcase']             = 'Uzi KamelUsklecon por ligiloj';
+$lang['deaccent']              = 'Netaj paĝnomoj';
+$lang['useheading']            = 'Uzi unuan titolon por paĝnomoj';
+$lang['sneaky_index']          = 'Apriore, DokuWiki montras ĉiujn nomspacojn en la indeksa modo. Ebligi tiun ĉi elekteblon kaŝus tion, kion la uzanto ne rajtas legi laŭ ACL. Tio povus rezulti ankaŭan kaŝon de alireblaj subnomspacoj. Tiel la indekso estus neuzebla por kelkaj agordoj de ACL.';
+$lang['hidepages']             = 'Kaŝi kongruantajn paĝojn (laŭ regulaj esprimoj)';
+$lang['useacl']                = 'Uzi alirkontrolajn listojn';
+$lang['autopasswd']            = 'Aŭtomate krei pasvortojn';
+$lang['authtype']              = 'Tipo de identiĝo';
+$lang['passcrypt']             = 'Metodo por ĉifri pasvortojn';
+$lang['defaultgroup']          = 'Antaŭdifinita grupo';
+$lang['superuser']             = 'Superanto - grupo, uzanto aŭ listo (disigita per komoj), kiu plene alireblas al ĉiuj paĝoj kaj funkcioj, sendepende de la reguloj ACL';
+$lang['manager']               = 'Administranto - grupo, uzanto aŭ listo (apartite per komoj), kiu havas alirpermeson al kelkaj administraj funkcioj';
+$lang['profileconfirm']        = 'Konfirmi ŝanĝojn en la trajtaro per pasvorto';
+$lang['rememberme']            = 'Permesi longdaŭran ensalutajn kuketojn (rememoru min)';
+$lang['disableactions']        = 'Malebligi DokuWiki-ajn agojn';
+$lang['disableactions_check']  = 'Kontroli';
+$lang['disableactions_subscription'] = 'Aliĝi/Malaliĝi';
+$lang['disableactions_wikicode'] = 'Rigardi vikitekston/Eksporti fontotekston';
+$lang['disableactions_profile_delete'] = 'Forigi la propran konton';
+$lang['disableactions_other']  = 'Aliaj agoj (disigita per komoj)';
+$lang['auth_security_timeout'] = 'Sekureca tempolimo por aŭtentigo (sekundoj)';
+$lang['securecookie']          = 'Ĉu kuketoj difinitaj per HTTPS sendiĝu de la foliumilo nur per HTTPS? Malebligu tiun ĉi opcion kiam nur la ensaluto al via vikio estas sekurigita per SSL, sed foliumado de la vikio estas farita malsekure.';
+$lang['remote']                = 'Ebligu la traretan API-sistemon. Tio ebligas al aliaj aplikaĵoj aliri la vikion pere de XML-RPC aũ aliaj mekanismoj.';
+$lang['remoteuser']            = 'Limigi traretan API-aliron al la komodisigitaj grupoj aũ uzantoj indikitaj jene. Lasu malplena por ebligi aliron al ĉiu ajn.';
+$lang['usewordblock']          = 'Bloki spamon surbaze de vortlisto';
+$lang['relnofollow']           = 'Uzi rel="nofollow" kun eksteraj ligiloj';
+$lang['indexdelay']            = 'Prokrasto antaŭ ol indeksi (en sekundoj)';
+$lang['mailguard']             = 'Nebuligi retadresojn';
+$lang['iexssprotect']          = 'Ekzameni elŝutaĵojn kontraŭ eblaj malicaj ĴavaSkripto aŭ HTML-a kodumaĵo';
+$lang['usedraft']              = 'Aŭtomate konservi skizon dum redaktado';
+$lang['htmlok']                = 'Ebligi enmeton de HTML-aĵoj';
+$lang['phpok']                 = 'Ebligi enmeton de PHP-aĵoj';
+$lang['locktime']              = 'Maksimuma aĝo por serurdosieroj (sek.)';
+$lang['cachetime']             = 'Maksimuma aĝo por provizmemoro (sek.)';
+$lang['target____wiki']        = 'Parametro "target" (celo) por internaj ligiloj';
+$lang['target____interwiki']   = 'Parametro "target" (celo) por intervikiaj ligiloj';
+$lang['target____extern']      = 'Parametro "target" (celo) por eksteraj ligiloj';
+$lang['target____media']       = 'Parametro "target" (celo) por aŭdvidaĵaj ligiloj';
+$lang['target____windows']     = 'Parametro "target" (celo) por Vindozaj ligiloj';
+$lang['mediarevisions']        = 'Ĉu ebligi reviziadon de aŭdvidaĵoj?';
+$lang['refcheck']              = 'Kontrolo por referencoj al aŭdvidaĵoj';
+$lang['gdlib']                 = 'Versio de GD-Lib';
+$lang['im_convert']            = 'Pado al la konvertilo de ImageMagick';
+$lang['jpg_quality']           = 'Kompaktiga kvalito de JPG (0-100)';
+$lang['fetchsize']             = 'Maksimuma grandeco (bitokoj), kiun fetch.php rajtas elŝuti el ekstere';
+$lang['subscribers']           = 'Ebligi subtenon de avizoj pri ŝanĝoj sur paĝoj';
+$lang['subscribe_time']        = 'Tempo, post kiu abonlistoj kaj kolektaĵoj sendiĝas (sek); Tio estu pli malgranda ol la tempo indikita en recent_days.';
+$lang['notify']                = 'Sendi avizojn pri ŝanĝoj al tiu ĉi retadreso';
+$lang['registernotify']        = 'Sendi informon pri ĵusaj aliĝintoj al tiu ĉi retadreso';
+$lang['mailfrom']              = 'Retadreso uzota por aŭtomataj retmesaĝoj ';
+$lang['mailprefix']            = 'Retpoŝta temo-prefikso por uzi en aŭtomataj mesaĝoj';
+$lang['htmlmail']              = 'Sendi pli bele aspektajn, sed pli grandajn plurpartajn HTML-retpoŝtaĵojn. Malebligu por ricevi pure tekstajn mesaĝojn.';
+$lang['sitemap']               = 'Krei Guglan paĝarmapon "sitemap" (po kiom tagoj)';
+$lang['rss_type']              = 'XML-a tipo de novaĵ-fluo';
+$lang['rss_linkto']            = 'La novaĵ-fluo de XML ligiĝas al';
+$lang['rss_content']           = 'Kion montri en la XML-aj novaĵ-flueroj?';
+$lang['rss_update']            = 'Intertempo por ĝisdatigi XML-an novaĵ-fluon (sek.)';
+$lang['rss_show_summary']      = 'XML-a novaĵ-fluo montras resumon en la titolo';
+$lang['rss_media']             = 'Kiaj ŝangoj estu montrataj en la XML-fluo?';
+$lang['rss_media_o_both']      = 'ambaŭ';
+$lang['rss_media_o_pages']     = 'paĝoj';
+$lang['updatecheck']           = 'Ĉu kontroli aktualigojn kaj sekurecajn avizojn? DokuWiki bezonas kontakti update.dokuwiki.org por tiu ĉi trajto.';
+$lang['userewrite']            = 'Uzi netajn URL-ojn';
+$lang['useslash']              = 'Uzi frakcistrekon kiel disigsignaĵon por nomspacoj en URL-oj';
+$lang['sepchar']               = 'Disigsignaĵo de vortoj en paĝnomoj';
+$lang['canonical']             = 'Uzi tute evidentajn URL-ojn';
+$lang['fnencode']              = 'Kodiga metodo por ne-ASCII-aj dosiernomoj.';
+$lang['autoplural']            = 'Kontroli pluralajn formojn en ligiloj';
+$lang['compression']           = 'Kompaktigmetodo por arkivaj dosieroj';
+$lang['gzip_output']           = 'Uzi gzip-an enhav-enkodigon por XHTML';
+$lang['compress']              = 'Kompaktigi CSS-ajn kaj ĵavaskriptajn elmetojn';
+$lang['cssdatauri']            = 'Grandeco en bitokoj, ĝis kiom en CSS-dosieroj referencitaj bildoj enmetiĝu rekte en la stilfolion por malgrandigi vanan HTTP-kapan trafikon.
+<code>400</code> ĝis <code>600</code> bitokoj estas bona grandeco. Indiku <code>0</code> por malebligi enmeton.';
+$lang['send404']               = 'Sendi la mesaĝon "HTTP 404/Paĝo ne trovita" por ne ekzistantaj paĝoj';
+$lang['broken_iua']            = 'Ĉu la funkcio "ignore_user_abort" difektas en via sistemo? Tio povus misfunkciigi la serĉindekson. IIS+PHP/CGI estas konata kiel fuŝaĵo. Vidu <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Cimon 852</a> por pli da informoj.';
+$lang['xsendfile']             = 'Ĉu uzi la kaplinion X-Sendfile por ebligi al la retservilo liveri fiksajn dosierojn? Via retservilo subtenu tion.';
+$lang['renderer_xhtml']        = 'Prezentilo por la ĉefa vikia rezulto (xhtml)';
+$lang['renderer__core']        = '%s (DokuWiki-a kerno)';
+$lang['renderer__plugin']      = '%s (kromaĵo)';
+$lang['dnslookups']            = 'DokuWiki rigardos servilajn nomojn por paĝmodifoj tra fremdaj IP-adresoj. Se vi havas malrapidan aũ nefunkciantan DNS-servilon aũ malŝatas tiun trajton, malebligu tiun opcion';
+$lang['proxy____host']         = 'Retservilnomo de la "Proxy"';
+$lang['proxy____port']         = 'Pordo ĉe la "Proxy"';
+$lang['proxy____user']         = 'Uzantonomo ĉe la "Proxy"';
+$lang['proxy____pass']         = 'Pasvorto ĉe la "Proxy"';
+$lang['proxy____ssl']          = 'Uzi SSL por konekti al la "Proxy"';
+$lang['proxy____except']       = 'Regula esprimo por URL-oj, kiujn la servilo preterrigardu.';
+$lang['safemodehack']          = 'Ebligi sekuran modon';
+$lang['ftp____host']           = 'FTP-a servilo por sekura modo';
+$lang['ftp____port']           = 'FTP-a pordo por sekura modo';
+$lang['ftp____user']           = 'FTP-a uzantonomo por sekura modo';
+$lang['ftp____pass']           = 'FTP-a pasvorto por sekura modo';
+$lang['ftp____root']           = 'FTP-a superuzanta (root) subdosierujo por sekura modo';
+$lang['license_o_']            = 'Nenio elektita';
+$lang['typography_o_0']        = 'nenio';
+$lang['typography_o_1']        = 'Nur duoblaj citiloj';
+$lang['typography_o_2']        = 'Ĉiaj citiloj (eble ne ĉiam funkcios)';
+$lang['userewrite_o_0']        = 'nenio';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Interne de DokuWiki';
+$lang['deaccent_o_0']          = 'ne';
+$lang['deaccent_o_1']          = 'forigi supersignojn';
+$lang['deaccent_o_2']          = 'latinigi';
+$lang['gdlib_o_0']             = 'GD-Lib ne disponeblas';
+$lang['gdlib_o_1']             = 'Versio 1.x';
+$lang['gdlib_o_2']             = 'Aŭtomata detekto';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Resumo';
+$lang['rss_content_o_diff']    = 'Unuigita "Diff"';
+$lang['rss_content_o_htmldiff'] = '"Diff"-tabelo formatita laŭ HTML';
+$lang['rss_content_o_html']    = 'Enhavo laŭ kompleta HTML-paĝo';
+$lang['rss_linkto_o_diff']     = 'diferenca rigardo';
+$lang['rss_linkto_o_page']     = 'la reviziita paĝo';
+$lang['rss_linkto_o_rev']      = 'listo de revizioj';
+$lang['rss_linkto_o_current']  = 'la aktuala paĝo';
+$lang['compression_o_0']       = 'nenio';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ne uzi';
+$lang['xsendfile_o_1']         = 'Propra kaplinio "lighttpd" (antaŭ versio 1.5)';
+$lang['xsendfile_o_2']         = 'Ordinara kaplinio X-Sendfile';
+$lang['xsendfile_o_3']         = 'Propra kaplinio Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Ensalut-nomo';
+$lang['showuseras_o_username'] = 'Kompleta nomo de uzanto';
+$lang['showuseras_o_email']    = 'Retadreso de uzanto (sekur-montrita laŭ agordo de nebuligo)';
+$lang['showuseras_o_email_link'] = 'Retadreso de uzanto kiel mailto:-ligilo';
+$lang['useheading_o_0']        = 'Neniam';
+$lang['useheading_o_navigation'] = 'Nur foliumado';
+$lang['useheading_o_content']  = 'Nur vikia enhavo';
+$lang['useheading_o_1']        = 'Ĉiam';
+$lang['readdircache']          = 'Maksimuma daŭro de la dosieruja kaŝmemoro (sekundoj)';
diff --git a/wiki/lib/plugins/config/lang/es/intro.txt b/wiki/lib/plugins/config/lang/es/intro.txt
new file mode 100644
index 0000000..0b42c6b
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/es/intro.txt
@@ -0,0 +1,7 @@
+====== Administrador de configuración ======
+
+Usa esta página para controlar los parámetros de tu instalación de Dokuwiki. Ayuda sobre [[doku>config|parámetros individuales]]. Más detalles sobre este [[doku>plugin:config|plugin]].
+
+Los parámetros que se muestran sobre un fondo rosado están protegidos y no pueden ser modificados usando este plugin. Los parámetros que se muestran sobre un fondo azul tienen los valores por defecto, y los parámetros mostrados sobre un fondo blanco han sido establecidos para esta instalación en particular. Tanto los parámetros sobre fondo azul y los que están sobre fondo blanco pueden ser modificados.
+
+Recuerda cliquear el boton **Guardar** antes de abandonar la página, sino se perderán los cambios que hayas hecho.
diff --git a/wiki/lib/plugins/config/lang/es/lang.php b/wiki/lib/plugins/config/lang/es/lang.php
new file mode 100644
index 0000000..4d6647e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/es/lang.php
@@ -0,0 +1,228 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ * @author Miguel Pagano <miguel.pagano@gmail.com>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Gabriel Castillo <gch@pumas.ii.unam.mx>
+ * @author oliver <oliver@samera.com.py>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Manuel Meco <manuel.meco@gmail.com>
+ * @author VictorCastelan <victorcastelan@gmail.com>
+ * @author Jordan Mero <hack.jord@gmail.com>
+ * @author Felipe Martinez <metalmartinez@gmail.com>
+ * @author Javier Aranda <internet@javierav.com>
+ * @author Zerial <fernando@zerial.org>
+ * @author Marvin Ortega <maty1206@maryanlinux.com>
+ * @author Daniel Castro Alvarado <dancas2@gmail.com>
+ * @author Fernando J. Gómez <fjgomez@gmail.com>
+ * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
+ * @author emezeta <emezeta@infoprimo.com>
+ * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mercè López <mercelz@gmail.com>
+ */
+$lang['menu']                  = 'Parámetros de configuración';
+$lang['error']                 = 'Los parámetros no han sido actualizados a causa de un valor inválido, por favor revise los cambios y re-envíe el formulario. <br /> Los valores incorrectos se mostrarán con un marco rojo alrededor.';
+$lang['updated']               = 'Los parámetros se actualizaron con éxito.';
+$lang['nochoice']              = '(no hay otras alternativas disponibles)';
+$lang['locked']                = 'El archivo de configuración no ha podido ser actualizado, si esto no es lo deseado, <br /> asegúrese que el nombre del archivo local de configuraciones y los permisos sean los correctos.';
+$lang['danger']                = 'Atención: Cambiar esta opción podría hacer inaccesible el wiki y su menú de configuración.';
+$lang['warning']               = 'Advertencia:  Cambiar esta opción podría causar comportamientos no deseados.';
+$lang['security']              = 'Advertencia de Seguridad: Cambiar esta opción podría representar un riesgo de seguridad.';
+$lang['_configuration_manager'] = 'Administrador de configuración';
+$lang['_header_dokuwiki']      = 'Parámetros de DokuWiki';
+$lang['_header_plugin']        = 'Parámetros de Plugin';
+$lang['_header_template']      = 'Parámetros de Plantillas';
+$lang['_header_undefined']     = 'Parámetros sin categoría';
+$lang['_basic']                = 'Parámetros Básicos';
+$lang['_display']              = 'Parámetros de Presentación';
+$lang['_authentication']       = 'Parámetros de Autenticación';
+$lang['_anti_spam']            = 'Parámetros Anti-Spam';
+$lang['_editing']              = 'Parámetros de Edición';
+$lang['_links']                = 'Parámetros de Enlaces';
+$lang['_media']                = 'Parámetros de Medios';
+$lang['_notifications']        = 'Configuración de notificaciones';
+$lang['_syndication']          = 'Configuración de sindicación';
+$lang['_advanced']             = 'Parámetros Avanzados';
+$lang['_network']              = 'Parámetros de Red';
+$lang['_msg_setting_undefined'] = 'Sin parámetros de metadata.';
+$lang['_msg_setting_no_class'] = 'Sin clase establecida.';
+$lang['_msg_setting_no_default'] = 'Sin valor por defecto.';
+$lang['title']                 = 'Título del wiki';
+$lang['start']                 = 'Nombre de la página inicial';
+$lang['lang']                  = 'Idioma';
+$lang['template']              = 'Plantilla';
+$lang['tagline']               = 'Lema (si la plantilla lo soporta)';
+$lang['sidebar']               = 'Nombre de la barra lateral (si la plantilla lo soporta), un campo vacío la desactiva';
+$lang['license']               = '¿Bajo qué licencia será liberado tu contenido?';
+$lang['savedir']               = 'Directorio para guardar los datos';
+$lang['basedir']               = 'Directorio de base';
+$lang['baseurl']               = 'URL de base';
+$lang['cookiedir']             = 'Ruta para las Cookie. Dejar en blanco para usar la ruta básica.';
+$lang['dmode']                 = 'Modo de creación de directorios';
+$lang['fmode']                 = 'Modo de creación de ficheros';
+$lang['allowdebug']            = 'Permitir debug <b>deshabilítelo si no lo necesita!</b>';
+$lang['recent']                = 'Cambios recientes';
+$lang['recent_days']           = 'Cuántos cambios recientes mantener (días)';
+$lang['breadcrumbs']           = 'Número de pasos de traza';
+$lang['youarehere']            = 'Traza jerárquica';
+$lang['fullpath']              = 'Mostrar ruta completa en el pie de página';
+$lang['typography']            = 'Realizar reemplazos tipográficos';
+$lang['dformat']               = 'Formato de fecha (ver la función de PHP <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Firma';
+$lang['showuseras']            = 'Qué ver al mostrar el último usuario que editó una página';
+$lang['toptoclevel']           = 'Nivel superior para la tabla de contenidos';
+$lang['tocminheads']           = 'La cantidad mínima de titulares que determina si el TOC es construido';
+$lang['maxtoclevel']           = 'Máximo nivel para la tabla de contenidos';
+$lang['maxseclevel']           = 'Máximo nivel para edición de sección';
+$lang['camelcase']             = 'Usar CamelCase para enlaces';
+$lang['deaccent']              = 'Nombres de páginas "limpios"';
+$lang['useheading']            = 'Usar el primer encabezado para nombres de páginas';
+$lang['sneaky_index']          = 'Por defecto, DokuWiki mostrará todos los namespaces en el index. Habilitando esta opción los ocultará si el usuario no tiene permisos de lectura. Los sub-namespaces pueden resultar inaccesibles. El index puede hacerse poco usable dependiendo de las configuraciones ACL.';
+$lang['hidepages']             = 'Ocultar páginas con coincidencias (expresiones regulares)';
+$lang['useacl']                = 'Usar listas de control de acceso (ACL)';
+$lang['autopasswd']            = 'Autogenerar contraseñas';
+$lang['authtype']              = 'Método de Autenticación';
+$lang['passcrypt']             = 'Método de cifrado de contraseñas';
+$lang['defaultgroup']          = 'Grupo por defecto';
+$lang['superuser']             = 'Super-usuario - grupo ó usuario con acceso total a todas las páginas y funciones, configuraciones ACL';
+$lang['manager']               = 'Manager - grupo o usuario con acceso a ciertas tareas de mantenimiento';
+$lang['profileconfirm']        = 'Confirmar cambios en perfil con contraseña';
+$lang['rememberme']            = 'Permitir cookies para acceso permanente (recordarme)';
+$lang['disableactions']        = 'Deshabilitar acciones DokuWiki';
+$lang['disableactions_check']  = 'Controlar';
+$lang['disableactions_subscription'] = 'Suscribirse/Cancelar suscripción';
+$lang['disableactions_wikicode'] = 'Ver la fuente/Exportar en formato raw';
+$lang['disableactions_profile_delete'] = 'Borrar tu propia cuenta';
+$lang['disableactions_other']  = 'Otras acciones (separadas por coma)';
+$lang['disableactions_rss']    = 'Sindicación XML (RSS)';
+$lang['auth_security_timeout'] = 'Tiempo de Autenticación (en segundos), por motivos de seguridad';
+$lang['securecookie']          = 'Las cookies establecidas por HTTPS, ¿el naveagdor solo puede enviarlas por HTTPS? Inhabilite esta opción cuando solo se asegure con SSL la entrada, pero no la navegación de su wiki.';
+$lang['remote']                = 'Activar el sistema API remoto. Esto permite a otras aplicaciones acceder al wiki a traves de XML-RPC u otros mecanismos.';
+$lang['remoteuser']            = 'Restringir el acceso remoto por API a los grupos o usuarios separados por comas que se dan aquí. Dejar en blanco para dar acceso a todo el mundo.';
+$lang['usewordblock']          = 'Bloquear spam usando una lista de palabras';
+$lang['relnofollow']           = 'Usar rel="nofollow" en enlaces externos';
+$lang['indexdelay']            = 'Intervalo de tiempo antes de indexar (segundos)';
+$lang['mailguard']             = 'Ofuscar direcciones de correo electrónico';
+$lang['iexssprotect']          = 'Comprobar posible código malicioso (JavaScript ó HTML) en archivos subidos';
+$lang['usedraft']              = 'Guardar automáticamente un borrador mientras se edita';
+$lang['htmlok']                = 'Permitir HTML embebido';
+$lang['phpok']                 = 'Permitir PHP embebido';
+$lang['locktime']              = 'Edad máxima para archivos de bloqueo (segundos)';
+$lang['cachetime']             = 'Edad máxima para caché (segundos)';
+$lang['target____wiki']        = 'Ventana para enlaces internos';
+$lang['target____interwiki']   = 'Ventana para enlaces interwikis';
+$lang['target____extern']      = 'Ventana para enlaces externos';
+$lang['target____media']       = 'Ventana para enlaces a medios';
+$lang['target____windows']     = 'Ventana para enlaces a ventanas';
+$lang['mediarevisions']        = '¿Habilitar Mediarevisions?';
+$lang['refcheck']              = 'Control de referencia a medios';
+$lang['gdlib']                 = 'Versión de GD Lib';
+$lang['im_convert']            = 'Ruta a la herramienta de conversión de ImageMagick';
+$lang['jpg_quality']           = 'Calidad de compresión de JPG (0-100)';
+$lang['fetchsize']             = 'Tamaño máximo (bytes) que fetch.php puede descargar de sitios externos';
+$lang['subscribers']           = 'Habilitar soporte para suscripción a páginas';
+$lang['subscribe_time']        = 'Tiempo después que alguna lista de suscripción fue enviada (seg); Debe ser menor que el tiempo especificado en días recientes.';
+$lang['notify']                = 'Enviar notificación de cambios a esta dirección de correo electrónico';
+$lang['registernotify']        = 'Enviar información cuando se registran nuevos usuarios a esta dirección de correo electrónico';
+$lang['mailfrom']              = 'Dirección de correo electrónico para emails automáticos';
+$lang['mailreturnpath']        = 'Dirección de correo electrónico del destinatario para las notificaciones de no entrega';
+$lang['mailprefix']            = 'Asunto por defecto que se utilizará en mails automáticos.';
+$lang['htmlmail']              = 'Enviar correos electronicos en HTML con mejor aspecto pero mayor peso. Desactivar para enviar correos electronicos en texto plano.';
+$lang['sitemap']               = 'Generar sitemap de Google (días)';
+$lang['rss_type']              = 'Tipo de resumen (feed) XML';
+$lang['rss_linkto']            = 'Feed XML enlaza a';
+$lang['rss_content']           = '¿Qué mostrar en los items del archivo XML?';
+$lang['rss_update']            = 'Intervalo de actualización de feed XML (segundos)';
+$lang['rss_show_summary']      = 'Feed XML muestra el resumen en el título';
+$lang['rss_media']             = '¿Qué tipo de cambios deberían aparecer en el feed XML?';
+$lang['rss_media_o_both']      = 'ambos';
+$lang['rss_media_o_pages']     = 'páginas';
+$lang['rss_media_o_media']     = 'multimedia';
+$lang['updatecheck']           = '¿Comprobar actualizaciones y advertencias de seguridad? Esta característica requiere que DokuWiki se conecte a update.dokuwiki.org.';
+$lang['userewrite']            = 'Usar URLs bonitas';
+$lang['useslash']              = 'Usar barra (/) como separador de espacios de nombres en las URLs';
+$lang['sepchar']               = 'Separador de palabras en nombres de páginas';
+$lang['canonical']             = 'Usar URLs totalmente canónicas';
+$lang['fnencode']              = 'Método para codificar nombres de archivo no-ASCII.';
+$lang['autoplural']            = 'Controlar plurales en enlaces';
+$lang['compression']           = 'Método de compresión para archivos en el ático';
+$lang['gzip_output']           = 'Usar gzip Content-Encoding para xhtml';
+$lang['compress']              = 'Compactar la salida de CSS y javascript';
+$lang['cssdatauri']            = 'Tamaño en bytes hasta el cual las imágenes referenciadas en archivos CSS deberían ir incrustadas en la hoja de estilos para reducir el número de cabeceras de petición HTTP. ¡Esta técnica no funcionará en IE < 8! De <code>400</code> a <code>600</code> bytes es un valor adecuado. Establezca <code>0</code> para deshabilitarlo.';
+$lang['send404']               = 'Enviar "HTTP 404/Page Not Found" para páginas no existentes';
+$lang['broken_iua']            = '¿Se ha roto (broken) la función ignore_user_abort en su sistema? Esto puede causar que no funcione el index de búsqueda. Se sabe que IIS+PHP/CGI está roto. Vea <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>para más información.';
+$lang['xsendfile']             = '¿Utilizar la cabecera X-Sendfile para permitirle al servidor web enviar archivos estáticos? Su servidor web necesita tener la capacidad para hacerlo.';
+$lang['renderer_xhtml']        = 'Visualizador a usar para salida (xhtml) principal del wiki';
+$lang['renderer__core']        = '%s (núcleo dokuwiki)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['search_nslimit']        = 'Limite la búsqueda a los actuales X espacios de nombres. Cuando se ejecuta una búsqueda desde una página dentro de un espacio de nombres más profundo, los primeros X espacios de nombres se agregarán como filtro';
+$lang['search_fragment']       = 'Especifique el comportamiento predeterminado de la búsqueda de fragmentos';
+$lang['search_fragment_o_exact'] = 'exacto';
+$lang['search_fragment_o_starts_with'] = 'comienza con';
+$lang['search_fragment_o_ends_with'] = 'termina con';
+$lang['search_fragment_o_contains'] = 'contiene';
+$lang['dnslookups']            = 'DokuWiki buscara los hostnames para usuarios editando las páginas con IP remota. Si usted tiene un servidor DNS bastante lento o que no funcione, favor de desactivar esta opción.';
+$lang['jquerycdn']             = '¿Deberían cargarse los ficheros de script jQuery y jQuery UI desde un CDN? Esto añade peticiones HTTP adicionales, pero los ficheros se pueden cargar más rápido y los usuarios pueden tenerlas ya almacenadas en caché.';
+$lang['jquerycdn_o_0']         = 'No CDN, sólo entrega local';
+$lang['jquerycdn_o_jquery']    = 'CDN en code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN en cdnjs.com';
+$lang['proxy____host']         = 'Nombre del servidor Proxy';
+$lang['proxy____port']         = 'Puerto del servidor Proxy';
+$lang['proxy____user']         = 'Nombre de usuario para el servidor Proxy';
+$lang['proxy____pass']         = 'Contraseña para el servidor Proxy';
+$lang['proxy____ssl']          = 'Usar ssl para conectarse al servidor Proxy';
+$lang['proxy____except']       = 'Expresiones regulares para encontrar URLs que el proxy debería omitir.';
+$lang['safemodehack']          = 'Habilitar edición (hack) de modo seguro';
+$lang['ftp____host']           = 'Nombre del servidor FTP  para modo seguro';
+$lang['ftp____port']           = 'Puerto del servidor FTP  para modo seguro';
+$lang['ftp____user']           = 'Nombre de usuario para el servidor FTP para modo seguro';
+$lang['ftp____pass']           = 'Contraseña para el servidor FTP para modo seguro';
+$lang['ftp____root']           = 'Directorio raiz para el servidor FTP para modo seguro';
+$lang['license_o_']            = 'No se eligió ninguna';
+$lang['typography_o_0']        = 'ninguno';
+$lang['typography_o_1']        = 'Dobles comillas solamente';
+$lang['typography_o_2']        = 'Todas las comillas (puede ser que no siempre funcione)';
+$lang['userewrite_o_0']        = 'ninguno';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Interno de DokuWiki';
+$lang['deaccent_o_0']          = 'apagado';
+$lang['deaccent_o_1']          = 'eliminar tildes';
+$lang['deaccent_o_2']          = 'romanizar';
+$lang['gdlib_o_0']             = 'GD Lib no está disponible';
+$lang['gdlib_o_1']             = 'Versión 1.x';
+$lang['gdlib_o_2']             = 'Autodetección';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Resumen';
+$lang['rss_content_o_diff']    = 'Diferencias unificadas';
+$lang['rss_content_o_htmldiff'] = 'Tabla de diferencias en formato HTML';
+$lang['rss_content_o_html']    = 'Página que solo contiene código HTML';
+$lang['rss_linkto_o_diff']     = 'ver las diferencias';
+$lang['rss_linkto_o_page']     = 'la página revisada';
+$lang['rss_linkto_o_rev']      = 'lista de revisiones';
+$lang['rss_linkto_o_current']  = 'la página actual';
+$lang['compression_o_0']       = 'ninguna';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'no utilizar';
+$lang['xsendfile_o_1']         = 'Encabezado propietario de lighttpd (antes de la versión 1.5)';
+$lang['xsendfile_o_2']         = 'Encabezado X-Sendfile estándar';
+$lang['xsendfile_o_3']         = 'Encabezado propietario Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Nombre de entrada';
+$lang['showuseras_o_username'] = 'Nombre completo del usuario';
+$lang['showuseras_o_username_link'] = 'Nombre completo del usuario como enlace de usuario interwiki';
+$lang['showuseras_o_email']    = 'Dirección de correo electrónico del usuario (ofuscada según la configuración de "mailguard")';
+$lang['showuseras_o_email_link'] = 'Dirección de correo de usuario como enlace de envío de correo';
+$lang['useheading_o_0']        = 'Nunca';
+$lang['useheading_o_navigation'] = 'Solamente Navegación';
+$lang['useheading_o_content']  = 'Contenido wiki solamente';
+$lang['useheading_o_1']        = 'Siempre';
+$lang['readdircache']          = 'Tiempo máximo para la cache readdir (en segundos)';
diff --git a/wiki/lib/plugins/config/lang/et/lang.php b/wiki/lib/plugins/config/lang/et/lang.php
new file mode 100644
index 0000000..cce679f
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/et/lang.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Estonian language file
+ *
+ * @author kristian.kankainen@kuu.la
+ * @author Rivo Zängov <eraser@eraser.ee>
+ */
+$lang['menu']                  = 'Seadete haldamine';
+$lang['_configuration_manager'] = 'Seadete haldamine';
+$lang['_basic']                = 'Peamised seaded';
+$lang['_display']              = 'Näitamise seaded';
+$lang['_authentication']       = 'Audentimise seaded';
+$lang['_anti_spam']            = 'Spämmitõrje seaded';
+$lang['_editing']              = 'Muutmise seaded';
+$lang['_links']                = 'Lingi seaded';
+$lang['_media']                = 'Meedia seaded';
+$lang['_advanced']             = 'Laiendatud seaded';
+$lang['_network']              = 'Võrgu seaded';
+$lang['title']                 = 'Wiki pealkiri';
+$lang['template']              = 'Kujundus';
+$lang['recent']                = 'Viimased muudatused';
+$lang['signature']             = 'Allkiri';
+$lang['defaultgroup']          = 'Vaikimisi grupp';
+$lang['disableactions_check']  = 'Kontrolli';
+$lang['compression_o_0']       = 'pole';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ära kasuta';
+$lang['useheading_o_0']        = 'Mitte kunagi';
+$lang['useheading_o_1']        = 'Alati';
diff --git a/wiki/lib/plugins/config/lang/eu/intro.txt b/wiki/lib/plugins/config/lang/eu/intro.txt
new file mode 100644
index 0000000..17edb3e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/eu/intro.txt
@@ -0,0 +1,7 @@
+====== Konfigurazio Kudeatzailea ======
+
+Erabili orri hau zure DokiWiki instalazioaren aukerak kontrolatzeko. Aukera zehatzei buruz laguntza eskuratzeko ikusi [[doku>config]]. Plugin honi buruzko xehetasun gehiago eskuratzeko ikusi [[doku>plugin:config]].
+
+Atzealde gorri argi batez erakusten diren aukerak babestuak daude eta ezin dira plugin honekin aldatu. Atzealde urdin batez erakusten diren aukerak balio lehenetsiak dira eta atzealde zuriz erakutsiak modu lokalean ezarriak izan dira instalazio honentzat. Aukera urdin eta zuriak aldatuak izan daitezke.
+
+Gogoratu **GORDE** botoia sakatzeaz orri hau utzi baino lehen, bestela zure aldaketak galdu egingo baitira.
diff --git a/wiki/lib/plugins/config/lang/eu/lang.php b/wiki/lib/plugins/config/lang/eu/lang.php
new file mode 100644
index 0000000..b48df55
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/eu/lang.php
@@ -0,0 +1,185 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Inko Illarramendi <inko.i.a@gmail.com>
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['menu']                  = 'Konfigurazio Ezarpenak';
+$lang['error']                 = 'Ezarpenak ez dira eguneratu balio oker bat dela eta, mesedez errepasatu aldaketak eta berriz bidali. <br />Balio okerra(k) ertz gorriz inguratuak erakutsiko dira. ';
+$lang['updated']               = 'Ezarpenak arrakastaz eguneratuak.';
+$lang['nochoice']              = '(ez dago beste aukerarik)';
+$lang['locked']                = 'Ezarpenen fitxategia ezin da eguneratu, eta intentzioa hau ez bada, <br />
+ziurtatu ezarpen lokalen izena eta baimenak zuzenak direla.';
+$lang['danger']                = 'Kontuz: Aukera hau aldatzeak zure wikia eta konfigurazio menua eskuraezin utzi dezake.';
+$lang['warning']               = 'Oharra: Aukera hau aldatzeak ustekabeko portaera bat sortu dezake.';
+$lang['security']              = 'Segurtasun Oharra: Aukera hau aldatzeak segurtasun arrisku bat sortu dezake.';
+$lang['_configuration_manager'] = 'Konfigurazio Kudeatzailea';
+$lang['_header_dokuwiki']      = 'DokuWiki Ezarpenak';
+$lang['_header_plugin']        = 'Plugin Ezarpenak';
+$lang['_header_template']      = 'Txantiloi Ezarpenak';
+$lang['_header_undefined']     = 'Zehaztu gabeko Ezarpenak';
+$lang['_basic']                = 'Oinarrizko Ezarpenak';
+$lang['_display']              = 'Aurkezpen Ezarpenak';
+$lang['_authentication']       = 'Kautotze Ezarpenak';
+$lang['_anti_spam']            = 'Anti-Spam Ezarpenak';
+$lang['_editing']              = 'Edizio Ezarpenak';
+$lang['_links']                = 'Esteken Ezarpenak';
+$lang['_media']                = 'Multimedia Ezarpenak';
+$lang['_notifications']        = 'Abisuen ezarpenak';
+$lang['_syndication']          = 'Sindikazio ezarpenak';
+$lang['_advanced']             = 'Ezarpen Aurreratuak';
+$lang['_network']              = 'Sare Ezarpenak';
+$lang['_msg_setting_undefined'] = 'Ezarpen metadaturik ez.';
+$lang['_msg_setting_no_class'] = 'Ezarpen klaserik ez.';
+$lang['_msg_setting_no_default'] = 'Balio lehenetsirik ez.';
+$lang['title']                 = 'Wiki-aren izenburua';
+$lang['start']                 = 'Hasiera orriaren izena';
+$lang['lang']                  = 'Hizkuntza';
+$lang['template']              = 'Txantiloia';
+$lang['license']               = 'Zein lizentziapean argitaratu beharko lirateke edukiak?';
+$lang['savedir']               = 'Datuak gordetzeko direktorioa';
+$lang['basedir']               = 'Oinarri direktorioa';
+$lang['baseurl']               = 'Oinarri URLa';
+$lang['dmode']                 = 'Direktorio sortze modua';
+$lang['fmode']                 = 'Fitxategi sortze modua';
+$lang['allowdebug']            = 'Baimendu debug-a <b>ezgaitu behar ez bada!</b>';
+$lang['recent']                = 'Azken aldaketak';
+$lang['recent_days']           = 'Zenbat azken aldaketa gordeko dira (egunak)';
+$lang['breadcrumbs']           = 'Arrasto pauso kopurua';
+$lang['youarehere']            = 'Arrasto pauso hierarkikoak';
+$lang['fullpath']              = 'Orri oinean orrien bide osoa erakutsi';
+$lang['typography']            = 'Ordezkapen tipografikoak egin';
+$lang['dformat']               = 'Data formatua (ikusi PHPren <a href="http://php.net/strftime">strftime</a> funtzioa)';
+$lang['signature']             = 'Sinadura';
+$lang['showuseras']            = 'Zer azaldu orri bat editatu duen azken erabiltzailea erakusterakoan';
+$lang['toptoclevel']           = 'Eduki taularen goiko maila';
+$lang['tocminheads']           = 'Gutxiengo izenburu kopuru minimoa Edukien Taula-ren sortu dadin.';
+$lang['maxtoclevel']           = 'Eduki taularen maila maximoa';
+$lang['maxseclevel']           = 'Sekzio edizio mailaren maximoa';
+$lang['camelcase']             = 'Estekentzat CamelCase erabili';
+$lang['deaccent']              = 'Orri izen garbiak';
+$lang['useheading']            = 'Erabili lehen izenburua orri izen moduan';
+$lang['sneaky_index']          = 'Lehenespenez, DokuWiki-k izen-espazio guztiak indize bistan erakutsiko ditu. Aukera hau gaituta, erabiltzaieak irakurtzeko baimenik ez dituen izen-espazioak ezkutatuko dira. Honek atzigarriak diren azpi izen-espazioak ezkutatzen ditu. Agian honek indizea erabili ezin ahal izatea eragingo du AKL ezarpen batzuetan.';
+$lang['hidepages']             = 'Ezkutatu kointzidentziak dituzten orriak (espresio erregularrak)';
+$lang['useacl']                = 'Erabili atzipen kontrol listak';
+$lang['autopasswd']            = 'Pasahitzak automatikoki sortu';
+$lang['authtype']              = 'Kautotze backend-a';
+$lang['passcrypt']             = 'Pasahitz enkriptatze metodoa';
+$lang['defaultgroup']          = 'Talde lehenetsia';
+$lang['superuser']             = 'Supererabiltzailea - taldea, erabiltzailea edo komaz bereiztutako zerrenda user1,@group1,user2 orri eta funtzio guztietara atzipen osoarekin, AKL-ren ezarpenetan zehaztutakoa kontutan hartu gabe';
+$lang['manager']               = 'Kudeatzailea - talde, erabiltzaile edo komaz bereiztutako zerrenda user1,@group1,user2 kudeatze funtzio zehatz batzuetara atzipenarekin';
+$lang['profileconfirm']        = 'Profil aldaketak pasahitzaz berretsi';
+$lang['rememberme']            = 'Baimendu saio hasiera cookie iraunkorrak (gogoratu iezaidazu)';
+$lang['disableactions']        = 'DokuWiki ekintzak ezgaitu';
+$lang['disableactions_check']  = 'Egiaztatu';
+$lang['disableactions_subscription'] = 'Harpidetu/Harpidetza utzi';
+$lang['disableactions_wikicode'] = 'Ikusi iturburua/Esportatu Raw';
+$lang['disableactions_other']  = 'Beste ekintzak (komaz bereiztuak)';
+$lang['auth_security_timeout'] = 'Kautotze Segurtasun Denbora-Muga (segunduak)';
+$lang['securecookie']          = 'HTTPS bidez ezarritako cookie-ak HTTPS bidez bakarrik bidali beharko lituzke nabigatzaileak? Ezgaitu aukera hau bakarrik saio hasierak SSL bidezko segurtasuna badu baina wiki-areb nabigazioa modu ez seguruan egiten bada. ';
+$lang['usewordblock']          = 'Blokeatu spam-a hitz zerrenda batean oinarrituta';
+$lang['relnofollow']           = 'Erabili rel="nofollow" kanpo esteketan';
+$lang['indexdelay']            = 'Denbora atzerapena indexatu baino lehen (seg)';
+$lang['mailguard']             = 'Ezkutatu posta-e helbidea';
+$lang['iexssprotect']          = 'Egiaztatu igotako fitxategiak JavaScript edo HTML kode maltzurra detektatzeko';
+$lang['usedraft']              = 'Automatikoki zirriborroa gorde editatze garaian';
+$lang['htmlok']                = 'Enbotatutako HTMLa baimendu';
+$lang['phpok']                 = 'Enbotatutako PHPa baimendu';
+$lang['locktime']              = 'Adin maximoa lock fitxategientzat (seg)';
+$lang['cachetime']             = 'Adin maximoa cachearentzat (seg)';
+$lang['target____wiki']        = 'Barne estekentzat helburu leihoa';
+$lang['target____interwiki']   = 'Interwiki estekentzat helburu leihoa';
+$lang['target____extern']      = 'Kanpo estekentzat helburu leihoa';
+$lang['target____media']       = 'Multimedia estekentzat helburu leihoa';
+$lang['target____windows']     = 'Leihoen estekentzat helburu leihoa';
+$lang['mediarevisions']        = 'Media rebisioak gaitu?';
+$lang['refcheck']              = 'Multimedia erreferentzia kontrolatu';
+$lang['gdlib']                 = 'GD Lib bertsioa';
+$lang['im_convert']            = 'ImageMagick-en aldaketa tresnara bidea';
+$lang['jpg_quality']           = 'JPG konprimitze kalitatea (0-100)';
+$lang['fetchsize']             = 'Kanpo esteketatik fetch.php-k deskargatu dezakeen tamaina maximoa (byteak)';
+$lang['subscribers']           = 'Gaitu orri harpidetza euskarria';
+$lang['subscribe_time']        = 'Harpidetza zerrendak eta laburpenak bidali aurretik pasa beharreko denbora (seg); Denbora honek, recent_days-en ezarritakoa baino txikiagoa behar luke.';
+$lang['notify']                = 'Aldaketen jakinarazpenak posta-e helbide honetara bidali';
+$lang['registernotify']        = 'Erregistratu berri diren erabiltzaileei buruzko informazioa post-e helbide honetara bidali';
+$lang['mailfrom']              = 'Posta automatikoentzat erabiliko den posta-e helbidea';
+$lang['mailprefix']            = 'Posta automatikoen gaientzat erabili beharreko aurrizkia';
+$lang['sitemap']               = 'Sortu Google gune-mapa (egunak)';
+$lang['rss_type']              = 'XML jario mota';
+$lang['rss_linkto']            = 'XML jarioak hona estekatzen du';
+$lang['rss_content']           = 'Zer erakutsi XML jarioetan?';
+$lang['rss_update']            = 'XML jarioaren eguneratze tartea (seg)';
+$lang['rss_show_summary']      = 'XML jarioak laburpena erakusten du izenburuan';
+$lang['updatecheck']           = 'Konprobatu eguneratze eta segurtasun oharrak? DokuWiki-k honetarako update.dokuwiki.org kontaktatu behar du.';
+$lang['userewrite']            = 'Erabili URL politak';
+$lang['useslash']              = 'Erabili barra (/) izen-espazio banatzaile moduan URLetan';
+$lang['sepchar']               = 'Orri izenaren hitz banatzailea';
+$lang['canonical']             = 'Erabili URL erabat kanonikoak';
+$lang['fnencode']              = 'Non-ASCII fitxategi izenak kodetzeko metodoa.';
+$lang['autoplural']            = 'Kontrolatu forma pluralak esteketan';
+$lang['compression']           = 'Trinkotze metodoa attic fitxategientzat';
+$lang['gzip_output']           = 'Gzip Eduki-Kodeketa erabili xhtml-rentzat';
+$lang['compress']              = 'Trinkotu CSS eta javascript irteera';
+$lang['send404']               = 'Bidali "HTTP 404/Ez Da Orria Aurkitu" existitzen ez diren orrientzat';
+$lang['broken_iua']            = 'Zure sisteman ignore_user_abort (erabiltzailearen bertan behera uztea kontuan ez hartu) funtzioa hautsia al dago? Honek funtzionatzen ez duen bilaketa indize bat eragin dezake. ISS+PHP/CGI hautsiak daude. Ikusi <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> informazio gehiago jasotzeko.';
+$lang['xsendfile']             = 'X-Sendfile goiburua erabili web zerbitzariari fitxategi estatikoak bidaltzen uzteko? Zure web zerbitzariak hau ahalbidetuta eduki beharko du.';
+$lang['renderer_xhtml']        = 'Erabiliko den errenderizatzailea wiki irteera (xhtml) nagusiarentzat';
+$lang['renderer__core']        = '%s (dokuwiki-ren nukleoa)';
+$lang['renderer__plugin']      = '%s (plugina)';
+$lang['proxy____host']         = 'Proxy zerbitzari izena';
+$lang['proxy____port']         = 'Proxy portua';
+$lang['proxy____user']         = 'Proxyaren erabiltzaile izena';
+$lang['proxy____pass']         = 'Proxyaren pasahitza ';
+$lang['proxy____ssl']          = 'Erabili SSL Proxyra konektatzeko';
+$lang['proxy____except']       = 'URLak detektatzeko espresio erregularra, zeinentzat Proxy-a sahiestu beharko litzatekeen.';
+$lang['safemodehack']          = 'Gaitu modu segurua hack-a';
+$lang['ftp____host']           = 'FTP zerbitzaria modu seguruarentzat';
+$lang['ftp____port']           = 'FTP portua modu seguruarentzat';
+$lang['ftp____user']           = 'FTP erabiltzailea modu seguruarentzat';
+$lang['ftp____pass']           = 'FTP pasahitza modu seguruarentzat';
+$lang['ftp____root']           = 'FTP erro direktorioa modu seguruarentzat';
+$lang['license_o_']            = 'Bat ere ez hautaturik';
+$lang['typography_o_0']        = 'ezer';
+$lang['typography_o_1']        = 'Komatxo bikoitzak bakarrik';
+$lang['typography_o_2']        = 'Komatxo guztiak (gerta daiteke beti ez funtzionatzea)';
+$lang['userewrite_o_0']        = 'ezer';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWikiren barnekoa';
+$lang['deaccent_o_0']          = 'Izalita';
+$lang['deaccent_o_1']          = 'azentu-markak kendu';
+$lang['deaccent_o_2']          = 'erromanizatu ';
+$lang['gdlib_o_0']             = 'GD Lib ez dago eskuragarri';
+$lang['gdlib_o_1']             = '1.x bertsioa';
+$lang['gdlib_o_2']             = 'Automatikoki detektatu';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Laburpena';
+$lang['rss_content_o_diff']    = 'Bateratutako Diferentziak';
+$lang['rss_content_o_htmldiff'] = 'HTML formatuko diferentzia taula';
+$lang['rss_content_o_html']    = 'Orri edukia guztiz HTML';
+$lang['rss_linkto_o_diff']     = 'Desberdintasunak ikusi';
+$lang['rss_linkto_o_page']     = 'Berrikusitako orria';
+$lang['rss_linkto_o_rev']      = 'Berrikuspen zerrenda';
+$lang['rss_linkto_o_current']  = 'Uneko orria';
+$lang['compression_o_0']       = 'ezer';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ez erabili';
+$lang['xsendfile_o_1']         = 'Jabegodun lighttpd goiburua (1.5 bertsioa baino lehen)';
+$lang['xsendfile_o_2']         = 'X-Sendfile goiburu estandarra';
+$lang['xsendfile_o_3']         = 'Jabegodun Nginx X-Accel-Redirect goiburua';
+$lang['showuseras_o_loginname'] = 'Saio izena';
+$lang['showuseras_o_username'] = 'Erabiltzailearen izen osoa';
+$lang['showuseras_o_email']    = 'Erabiltzailearen posta-e helbidea (ezkutatua posta babeslearen aukeren arabera)';
+$lang['showuseras_o_email_link'] = 'Erabiltzailearen posta-e helbidea mailto: esteka moduan';
+$lang['useheading_o_0']        = 'Inoiz';
+$lang['useheading_o_navigation'] = 'Nabigazioa Bakarrik';
+$lang['useheading_o_content']  = 'Wiki Edukia Bakarrik';
+$lang['useheading_o_1']        = 'Beti';
+$lang['readdircache']          = 'Aintzintasun maximoa readdir cache-rentzat (seg)';
diff --git a/wiki/lib/plugins/config/lang/fa/intro.txt b/wiki/lib/plugins/config/lang/fa/intro.txt
new file mode 100644
index 0000000..31bbaea
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/fa/intro.txt
@@ -0,0 +1,8 @@
+====== تنظیمات پیکربندی ======
+
+از این صفحه برای مدیریت تنظیمات DokuWiki استفاده کنید. برای راهنمایی بیش‌تر به [[doku>config]] مراجعه نماید.
+برای جزییات در مورد این افزونه نیز می‌توانید به [[doku>plugin:config]] مراجعه کنید.
+
+تنظیماتی که با پیش‌زمینه‌ی قرمز مشخص شده‌اند، غیرقابل تغییر می‌باشند. تنظیماتی که به پیش‌زمینه‌ی آبی مشخص شده‌اند نیز حامل مقادیر پیش‌فرض می‌باشند و تنظیماتی که پیش‌زمینه‌ی سفید دارند به طور محلی برای این سیستم تنظیم شده‌اند. تمامی مقادیر آبی و سفید قابلیت تغییر دارند.
+
+به یاد داشته باشید که قبل از ترک صفحه، دکمه‌ی **ذخیره** را بفشارید، در غیر این صورت تنظیمات شما از بین خواهد رفت.
diff --git a/wiki/lib/plugins/config/lang/fa/lang.php b/wiki/lib/plugins/config/lang/fa/lang.php
new file mode 100644
index 0000000..72bbbe1
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/fa/lang.php
@@ -0,0 +1,204 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author behrad eslamifar <behrad_es@yahoo.com)
+ * @author Mohsen Firoozmandan <info@mambolearn.com>
+ * @author omidmr@gmail.com
+ * @author Omid Mottaghi <omidmr@gmail.com>
+ * @author Mohammad Reza Shoaei <shoaei@gmail.com>
+ * @author Milad DZand <M.DastanZand@gmail.com>
+ * @author AmirH Hassaneini <mytechmix@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ * @author sam01 <m.sajad079@gmail.com>
+ */
+$lang['menu']                  = 'تنظیمات پیکر‌بندی';
+$lang['error']                 = 'به دلیل ایراد در مقادیر وارد شده، تنظیمات اعمال نشد، خواهشمندیم تغییرات را مجددن کنترل نمایید و دوباره ارسال کنید.<br/> مقادیر مشکل‌دار با کادر قرمز مشخص شده‌اند.';
+$lang['updated']               = 'تنظیمات با موفقیت به روز رسانی شد.';
+$lang['nochoice']              = '(گزینه‌های دیگری موجود نیست)';
+$lang['locked']                = 'تنظیمات قابلیت به روز رسانی ندارند، اگر نباید چنین باشد، <br/> نام فایل تنظیمات و دسترسی‌های آن را بررسی کنید.';
+$lang['danger']                = 'خطر: ممکن است با تغییر این گزینه دسترسی به منوی تنظیمات قطع شود.';
+$lang['warning']               = 'هشدار: ممکن است با تغییر این گزینه رفتارهای غیرمترقبه‌ای مشاهده کنید.';
+$lang['security']              = 'هشدار امنیتی: تغییر این گزینه ممکن است با خطرات امنیتی همراه باشد.';
+$lang['_configuration_manager'] = 'مدیریت تنظیمات';
+$lang['_header_dokuwiki']      = 'تنظیمات DokuWiki';
+$lang['_header_plugin']        = 'تنظیمات افزونه';
+$lang['_header_template']      = 'تنظیمات قالب';
+$lang['_header_undefined']     = 'تنظیمات تعریف نشده';
+$lang['_basic']                = 'تنظیمات مقدماتی';
+$lang['_display']              = 'تنظیمات نمایش';
+$lang['_authentication']       = 'تنظیمات معتبرسازی';
+$lang['_anti_spam']            = 'تنظیمات ضد-اسپم';
+$lang['_editing']              = 'تنظیمات ویرایش';
+$lang['_links']                = 'تنظیمات پیوند';
+$lang['_media']                = 'تنظیمات رسانه‌ها (فایل‌ها)';
+$lang['_notifications']        = 'تنظیمات آگاه سازی';
+$lang['_syndication']          = 'تنظیمات پیوند';
+$lang['_advanced']             = 'تنظیمات پیشرفته';
+$lang['_network']              = 'تنظیمات شبکه';
+$lang['_msg_setting_undefined'] = 'داده‌نمایی برای تنظیمات وجود ندارد';
+$lang['_msg_setting_no_class'] = 'هیچ دسته‌ای برای تنظیمات وجود ندارد.';
+$lang['_msg_setting_no_default'] = 'بدون مقدار پیش‌فرض';
+$lang['title']                 = 'عنوان ویکی';
+$lang['start']                 = 'نام صفحه‌ی آغازین';
+$lang['lang']                  = 'زبان';
+$lang['template']              = 'قالب';
+$lang['tagline']               = 'خط تگ (اگر قالب از آن پشتیبانی می کند)';
+$lang['sidebar']               = 'نام نوار صفحه کناری (اگر قالب از آن پشتیبانی می کند) ، فیلد خالی نوار کناری غیر فعال خواهد کرد.';
+$lang['license']               = 'لایسنس مطالب ویکی';
+$lang['savedir']               = 'شاخه‌ی ذخیره‌سازی داده‌ها';
+$lang['basedir']               = 'شاخه‌ی اصلی';
+$lang['baseurl']               = 'آدرس اصلی';
+$lang['cookiedir']             = 'مسیر کوکی ها. برای استفاده از آدرس پایه ، آن را خالی بگذارید.';
+$lang['dmode']                 = 'زبان';
+$lang['fmode']                 = 'دسترسی پیش‌فرض فایل‌ها در زمان ایجاد';
+$lang['allowdebug']            = 'امکان کرم‌زدایی (debug) <b>اگر نیازی ندارید، غیرفعال کنید</b>';
+$lang['recent']                = 'تغییرات اخیر';
+$lang['recent_days']           = 'چند تغییر در خوراک نمایش داده شود به روز';
+$lang['breadcrumbs']           = 'تعداد ردپاها';
+$lang['youarehere']            = 'ردپای درختی';
+$lang['fullpath']              = 'نمایش دادن مسیر کامل صفحات در پایین صفحه';
+$lang['typography']            = 'جای‌گزاری متن‌ها انجام شود';
+$lang['dformat']               = 'فرمت تاریخ (راهنمای تابع <a href="http://php.net/strftime">strftime</a> را مشاهده کنید)';
+$lang['signature']             = 'امضا';
+$lang['showuseras']            = 'چگونه آخرین کاربر ویرایش کننده، یک صفحه نمایش داده شود';
+$lang['toptoclevel']           = 'بیشترین عمق برای «فهرست مطالب»';
+$lang['tocminheads']           = 'حداقل مقدار عنوان‌های یک صفحه، برای تشخیص این‌که «فهرست مطالب» (TOC) ایجاد شود';
+$lang['maxtoclevel']           = 'حداکثر عمق «فهرست مطالب»';
+$lang['maxseclevel']           = 'بیش‌ترین سطح ویرایش بخش‌ها';
+$lang['camelcase']             = 'از «حالت شتری» (CamelCase) برای پیوندها استفاده شود';
+$lang['deaccent']              = 'تمیز کردن نام صفحات';
+$lang['useheading']            = 'استفاده از اولین عنوان برای نام صفحه';
+$lang['sneaky_index']          = 'به طور پیش‌فرض، دوکوویکی در فهرست تمامی فضای‌نام‌ها را نمایش می‌دهد. فعال کردن این گزینه، مواردی را که کاربر حق خواندنشان را ندارد مخفی می‌کند. این گزینه ممکن است باعث دیده نشدن زیرفضای‌نام‌هایی شود که دسترسی خواندن به آن‌ها وجود دارد. و ممکن است باعث شود که فهرست در حالاتی از دسترسی‌ها، غیرقابل استفاده شود.';
+$lang['hidepages']             = 'مخفی کردن صفحات با فرمت زیر (از عبارات منظم استفاده شود)';
+$lang['useacl']                = 'استفاده از مدیریت دسترسی‌ها';
+$lang['autopasswd']            = 'ایجاد خودکار گذرواژه‌ها';
+$lang['authtype']              = 'روش معتبرسازی';
+$lang['passcrypt']             = 'روش کد کردن گذرواژه';
+$lang['defaultgroup']          = 'گروه پیش‌فرض';
+$lang['superuser']             = 'کاربر اصلی - گروه، کاربر یا لیستی که توسط ویرگول جدا شده از کاربرها و گروه‌ها (مثل user1,@group1,user2) با دسترسی کامل به همه‌ی صفحات و امکانات سیستم، فارغ از دسترسی‌های آن کاربر.';
+$lang['manager']               = 'مدیر - گروه، کاربر یا لیستی که توسط ویرگول جدا شده از کاربرها و گروه‌ها (مثل user1,@group1,user2) با دسترسی‌های خاص به بخش‌های متفاوت';
+$lang['profileconfirm']        = 'تغییرات پروفایل با وارد کردن گذرواژه تایید شود';
+$lang['rememberme']            = 'امکان ورود دایم، توسط کوکی، وجود داشته باشد (مرا به خاطر بسپار)';
+$lang['disableactions']        = 'غیرفعال کردن فعالیت‌های دوکوویکی';
+$lang['disableactions_check']  = 'بررسی';
+$lang['disableactions_subscription'] = 'عضویت/عدم عضویت';
+$lang['disableactions_wikicode'] = 'نمایش سورس/برون‌بری خام';
+$lang['disableactions_profile_delete'] = 'حذف حساب کاربری خود.';
+$lang['disableactions_other']  = 'فعالیت‌های دیگر (با ویرگول انگلیسی «,» از هم جدا کنید)';
+$lang['disableactions_rss']    = 'خبرخوان (RSS)';
+$lang['auth_security_timeout'] = 'زمان انقضای معتبرسازی به ثانیه';
+$lang['securecookie']          = 'آیا کوکی‌ها باید با قرارداد HTTPS ارسال شوند؟ این گزینه را زمانی که فقط صفحه‌ی ورود ویکی‌تان با SSL امن شده است، اما ویکی را ناامن مرور می‌کنید، غیرفعال نمایید.';
+$lang['remote']                = 'سیستم API راه دور را فعال کنید . این به سایر کاربردها اجازه می دهد که به ویکی از طریق XML-RPC یا سایر مکانیزم ها دسترسی داشته باشند.';
+$lang['remoteuser']            = 'محدود کردن دسترسی API راه دور به گروه های جدا شده با ویرگول یا کاربران داده شده در این جا. برای دادن دسترسی به همه این فیلد را خالی بگذارید.';
+$lang['usewordblock']          = 'اسپم‌ها را براساس لیست کلمات مسدود کن';
+$lang['relnofollow']           = 'از «rel=nofollow» در پیوندهای خروجی استفاده شود';
+$lang['indexdelay']            = 'مقدار تاخیر پیش از فهرست‌بندی (ثانیه)';
+$lang['mailguard']             = 'مبهم کردن آدرس‌های ایمیل';
+$lang['iexssprotect']          = 'بررسی کردن فایل‌های ارسال شده را برای کدهای HTML یا JavaScript مخرب';
+$lang['usedraft']              = 'ایجاد خودکار چرک‌نویس در زمان نگارش';
+$lang['htmlok']                = 'امکان افزودن HTML باشد';
+$lang['phpok']                 = 'امکان افزودن PHP باشد';
+$lang['locktime']              = 'بیشینه‌ی زمان قفل شدن فایل‌ها به ثانیه';
+$lang['cachetime']             = 'بیشینه‌ی زمان حافظه‌ی موقت (cache) به ثانیه';
+$lang['target____wiki']        = 'پنجره‌ی هدف در پیوند‌های داخلی';
+$lang['target____interwiki']   = 'پنجره‌ی هدف در پیوند‌های داخل ویکی';
+$lang['target____extern']      = 'پنجره‌ی هدف در پیوند‌های خارجی';
+$lang['target____media']       = 'پنجره‌ی هدف در پیوند‌های رسانه‌ها';
+$lang['target____windows']     = 'پنجره‌ی هدف در پیوند‌های پنجره‌ای';
+$lang['mediarevisions']        = 'تجدید نظر رسانه ، فعال؟';
+$lang['refcheck']              = 'بررسی کردن مرجع رسانه‌ها';
+$lang['gdlib']                 = 'نگارش کتاب‌خانه‌ی GD';
+$lang['im_convert']            = 'مسیر ابزار convert از برنامه‌ی ImageMagick';
+$lang['jpg_quality']           = 'کیفیت فشرده سازی JPEG (از 0 تا 100)';
+$lang['fetchsize']             = 'بیشینه‌ی حجمی که فایل fetch.php می‌تواند دریافت کند (به بایت)';
+$lang['subscribers']           = 'توانایی عضویت در صفحات باشد';
+$lang['subscribe_time']        = 'زمان مورد نیاز برای ارسال خبر نامه ها (ثانیه); این مقدار می بایست کمتر زمانی باشد که در recent_days تعریف شده است.';
+$lang['notify']                = 'تغییرات به این ایمیل ارسال شود';
+$lang['registernotify']        = 'اطلاعات کاربران تازه وارد به این ایمیل ارسال شود';
+$lang['mailfrom']              = 'آدرس ایمیلی که برای ایمیل‌های خودکار استفاده می‌شود';
+$lang['mailprefix']            = 'پیشوند تیتر ایمیل (جهت ایمیل های خودکار)';
+$lang['htmlmail']              = 'فرستادن با ظاهر بهتر ، امّا با اندازه بیشتر در ایمیل های چند قسمتی HTML.
+برای استفاده از ایمیل متنی ، غیر فعال کنید.';
+$lang['sitemap']               = 'تولید کردن نقشه‌ی سایت توسط گوگل (روز)';
+$lang['rss_type']              = 'نوع خوراک';
+$lang['rss_linkto']            = 'خوراک به کجا لینک شود';
+$lang['rss_content']           = 'چه چیزی در تکه‌های خوراک نمایش داده شود؟';
+$lang['rss_update']            = 'زمان به روز رسانی خوراک به ثانیه';
+$lang['rss_show_summary']      = 'خوراک مختصری از مطلب را در عنوان نمایش دهد';
+$lang['rss_media']             = 'چه نوع تغییراتی باید در خوراک XML لیست شود؟';
+$lang['updatecheck']           = 'هشدارهای به روز رسانی و امنیتی بررسی شود؟ برای این‌کار دوکوویکی با سرور update.dokuwiki.org تماس خواهد گرفت.';
+$lang['userewrite']            = 'از زیباکننده‌ی آدرس‌ها استفاده شود';
+$lang['useslash']              = 'از اسلش «/» برای جداکننده‌ی آدرس فضای‌نام‌ها استفاده شود';
+$lang['sepchar']               = 'کلمه‌ی جداکننده‌ی نام صفحات';
+$lang['canonical']             = 'استفاده از آدرس‌های استاندارد';
+$lang['fnencode']              = 'روش تغییر نام فایل‌هایی با فرمتی غیر از اسکی';
+$lang['autoplural']            = 'بررسی جمع بودن در پیوندها';
+$lang['compression']           = 'روش فشرده‌سازی برای فایل‌های خُرد';
+$lang['gzip_output']           = 'استفاده از gzip برای xhtmlها';
+$lang['compress']              = 'فشرده‌سازی کد‌های CSS و JavaScript';
+$lang['cssdatauri']            = 'اندازه بایت هایی که تصاویر ارجاع شده به فایل های CSS باید به درستی درون stylesheet جایگذاری شود تا سربار سرایند درخواست HTTP را کاهش دهد. مقادیر <code>400</code> تا <code>600</code> بایت مقدار خوبی است. برای غیر فعال کردن <code>0</code> قرار دهید.';
+$lang['send404']               = 'ارسال «HTTP 404/Page Not Found» برای صفحاتی که وجود ندارند';
+$lang['broken_iua']            = 'آیا تابع ignore_user_about در ویکی شما کار نمی‌کند؟ ممکن است فهرست جستجوی شما کار نکند. IIS به همراه PHP/CGI باعث خراب شدن این گزینه می‌شود. برای اطلاعات بیشتر <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">باگ ۸۵۲</a> را مشاهده کنید.';
+$lang['xsendfile']             = 'استفاده از هدر X-Sendfile، تا به وب‌سرور  توانایی ارسال فایل‌های ثابت را بدهد. وب‌سرور شما باید این مورد را پشتیبانی کند.';
+$lang['renderer_xhtml']        = 'مفسری که برای خروجی اصلی ویکی استفاده شود';
+$lang['renderer__core']        = '%s (هسته‌ی dokuwiki)';
+$lang['renderer__plugin']      = '%s (افزونه)';
+$lang['dnslookups']            = 'دوکوویکی نام هاست ها را برای آدرسهای آی‌پی‌های صفحات ویرایشی کاربران ، جستجو می کند. اگر یک سرور DNS کند یا نا کارامد دارید یا این ویژگی را نمی خواهید ، این گزینه را غیر فعال کنید.';
+$lang['proxy____host']         = 'آدرس سرور پروکسی';
+$lang['proxy____port']         = 'پورت پروکسی';
+$lang['proxy____user']         = 'نام کاربری پروکسی';
+$lang['proxy____pass']         = 'گذرواژهي پروکسی';
+$lang['proxy____ssl']          = 'استفاده از SSL برای اتصال به پروکسی';
+$lang['proxy____except']       = 'عبارت منظم برای تطبیق با URLها برای این‌که دریابیم که از روی  چه پروکسی‌ای باید بپریم!';
+$lang['safemodehack']          = 'فعال کردن safemode hack';
+$lang['ftp____host']           = 'آدرس FTP برای safemode hack';
+$lang['ftp____port']           = 'پورت FTP برای safemode hack';
+$lang['ftp____user']           = 'نام کاربری FTP برای safemode hack';
+$lang['ftp____pass']           = 'گذرواژه‌ی FTP برای safemode hack';
+$lang['ftp____root']           = 'شاخه‌ی FTP برای safemode hack';
+$lang['license_o_']            = 'هیچ کدام';
+$lang['typography_o_0']        = 'هیچ';
+$lang['typography_o_1']        = 'حذف کردن single-quote';
+$lang['typography_o_2']        = 'به همراه داشتن single-quote (ممکن است همیشه کار نکند)';
+$lang['userewrite_o_0']        = 'هیچ';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'از طریق DokuWiki';
+$lang['deaccent_o_0']          = 'خاموش';
+$lang['deaccent_o_1']          = 'برداشتن تلفظ‌ها';
+$lang['deaccent_o_2']          = 'لاتین کردن (romanize)';
+$lang['gdlib_o_0']             = 'کتاب‌خانه‌ی GD موجود نیست';
+$lang['gdlib_o_1']             = 'نسخه‌ی 1.X';
+$lang['gdlib_o_2']             = 'انتخاب خودکار';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'انتزاعی';
+$lang['rss_content_o_diff']    = 'یکی کردن تفاوت‌ها';
+$lang['rss_content_o_htmldiff'] = 'جدول تفاوت‌ها با ساختار HTML';
+$lang['rss_content_o_html']    = 'تمامی محتویات صفحه، با ساختار HTML';
+$lang['rss_linkto_o_diff']     = 'نمایه‌های متفاوت';
+$lang['rss_linkto_o_page']     = 'صفحه‌ی تجدید نظر شده';
+$lang['rss_linkto_o_rev']      = 'لیست نگارش‌ها';
+$lang['rss_linkto_o_current']  = 'صفحه‌ی کنونی';
+$lang['compression_o_0']       = 'هیچ';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'استفاده نکنید';
+$lang['xsendfile_o_1']         = 'هدر اختصاصی lighttpd (پیش از نگارش ۱.۵)';
+$lang['xsendfile_o_2']         = 'هدر استاندارد X-Sendfile';
+$lang['xsendfile_o_3']         = 'هدر اختصاصی X-Accel-Redirect در وب سرور Nginx';
+$lang['showuseras_o_loginname'] = 'نام کاربری';
+$lang['showuseras_o_username'] = 'نام کامل کاربران';
+$lang['showuseras_o_username_link'] = 'نام کامل کاربر به عنوان لینک داخلی ویکی';
+$lang['showuseras_o_email']    = 'آدرس ایمیل کاربران (با تنظیمات «نگهبان ایمیل» مبهم می‌شود)';
+$lang['showuseras_o_email_link'] = 'نمایش ایمیل کاربران با افزودن mailto';
+$lang['useheading_o_0']        = 'هرگز';
+$lang['useheading_o_navigation'] = 'فقط ناوبری (navigation)';
+$lang['useheading_o_content']  = 'فقط محتویات ویکی';
+$lang['useheading_o_1']        = 'همیشه';
+$lang['readdircache']          = 'بیش‌ترین عمر برای حافظه‌ی موقت readdir (ثانیه)';
diff --git a/wiki/lib/plugins/config/lang/fi/intro.txt b/wiki/lib/plugins/config/lang/fi/intro.txt
new file mode 100644
index 0000000..2765a18
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/fi/intro.txt
@@ -0,0 +1,7 @@
+====== Asetusten hallinta ======
+
+Käytä tätä sivua hallitaksesi DokuWikisi asetuksia. Apua yksittäisiin asetuksiin löytyy sivulta [[doku>config]]. Lisätietoa tästä liitännäisestä löytyy sivulta [[doku>plugin:config]].
+
+Asetukset, jotka näkyvät vaaleanpunaisella taustalla ovat suojattuja, eikä niitä voi muutta tämän liitännäisen avulla. Asetukset, jotka näkyvät sinisellä taustalla ovat oletusasetuksia. Asetukset valkoisella taustalla ovat asetettu paikallisesti tätä asennusta varten. Sekä sinisiä että valkoisia asetuksia voi muokata.
+
+Muista painaa **TALLENNA**-nappia ennen kuin poistut sivulta. Muuten muutoksesi häviävät.
diff --git a/wiki/lib/plugins/config/lang/fi/lang.php b/wiki/lib/plugins/config/lang/fi/lang.php
new file mode 100644
index 0000000..3389754
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/fi/lang.php
@@ -0,0 +1,198 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author otto@valjakko.net
+ * @author Otto Vainio <otto@valjakko.net>
+ * @author Teemu Mattila <ghcsystems@gmail.com>
+ * @author Sami Olmari <sami@olmari.fi>
+ * @author Wiki Doku <SugarKidder@mailinator.com>
+ */
+$lang['menu']                  = 'Asetukset';
+$lang['error']                 = 'Asetuksia ei päivitetty väärän arvon vuoksi. Tarkista muutokset ja lähetä sivu uudestaan.
+<br />Väärät arvot on merkitty punaisella reunuksella.';
+$lang['updated']               = 'Asetukset päivitetty onnistuneesti.';
+$lang['nochoice']              = '(ei muita valintoja saatavilla)';
+$lang['locked']                = 'Asetustiedosta ei voi päivittää. Jos tämä ei ole tarkoitus <br />
+niin varmista, että paikallisten asetusten tiedoston nimi ja oikeudet ovat kunnossa.';
+$lang['danger']                = 'Vaara: tämän asetuksen muuttaminen saattaa estää wikisi ja asetusvalikon toimimisen.';
+$lang['warning']               = 'Varoitus: tämän asetuksen muuttaminen saattaa aiheuttaa olettamattomia toimintoja.';
+$lang['security']              = 'Turvallisuusvaroitus: tämän asetuksen muuttaminen saattaa aiheuttaa tietoturva-aukon.';
+$lang['_configuration_manager'] = 'Asetusten hallinta';
+$lang['_header_dokuwiki']      = 'DokuWikin asetukset';
+$lang['_header_plugin']        = 'Liitännäisten asetukset';
+$lang['_header_template']      = 'Sivumallin asetukset';
+$lang['_header_undefined']     = 'Määritetelettömät asetukset';
+$lang['_basic']                = 'Perusasetukset';
+$lang['_display']              = 'Näyttöasetukset';
+$lang['_authentication']       = 'Sisäänkirjoittautumisen asetukset';
+$lang['_anti_spam']            = 'Anti-Spam asetukset';
+$lang['_editing']              = 'Sivumuokkauksen asetukset';
+$lang['_links']                = 'Linkkien asetukset';
+$lang['_media']                = 'Media-asetukset';
+$lang['_notifications']        = 'Ilmoitus-asetukset';
+$lang['_syndication']          = 'Syöteasetukset';
+$lang['_advanced']             = 'Lisäasetukset';
+$lang['_network']              = 'Verkkoasetukset';
+$lang['_msg_setting_undefined'] = 'Ei asetusten metadataa.';
+$lang['_msg_setting_no_class'] = 'Ei asetusluokkaa.';
+$lang['_msg_setting_no_default'] = 'Ei oletusarvoa';
+$lang['title']                 = 'Wikin nimi';
+$lang['start']                 = 'Alkusivun nimi';
+$lang['lang']                  = 'Kieli';
+$lang['template']              = 'Sivumalli';
+$lang['tagline']               = 'Apuotsikko - slogan sivustonimen yhteysteen (jos template käyttää)';
+$lang['sidebar']               = 'Sivupalkin sivunimi (jos template tukee sitä), tyhjä arvo poistaa sivupalkin';
+$lang['license']               = 'Millä lisenssillä sisältö pitäisi julkaista?';
+$lang['savedir']               = 'Hakemisto tietojen tallennukseen.';
+$lang['basedir']               = 'Perushakemisto';
+$lang['baseurl']               = 'Perus URL';
+$lang['cookiedir']             = 'Cookien path. Jätä tyhjäksi käyttääksesi baseurl arvoa';
+$lang['dmode']                 = 'Hakemiston luontioikeudet';
+$lang['fmode']                 = 'Tiedoston luontioikeudet';
+$lang['allowdebug']            = 'Salli debuggaus <b>pois, jos ei tarvita!</b>';
+$lang['recent']                = 'Viime muutokset';
+$lang['recent_days']           = 'Montako edellistä muutosta säilytetään (päiviä)';
+$lang['breadcrumbs']           = 'Leivänmurujen määrä';
+$lang['youarehere']            = 'Hierarkkiset leivänmurut';
+$lang['fullpath']              = 'Näytä sivun koko polku sivun alareunassa';
+$lang['typography']            = 'Tee typografiset korvaukset';
+$lang['dformat']               = 'Päivämäärän muoto (katso PHPn <a href="http://php.net/strftime">strftime</a> funktiota)';
+$lang['signature']             = 'Allekirjoitus';
+$lang['showuseras']            = 'Mitä näytetään, kun kerrotaan viimeisen editoijan tiedot';
+$lang['toptoclevel']           = 'Ylätason sisällysluettelo';
+$lang['tocminheads']           = 'Pienin otsikkorivien määrä, jotta sisällysluettelo tehdään';
+$lang['maxtoclevel']           = 'Sisällysluettelon suurin syvyys';
+$lang['maxseclevel']           = 'Kappale-editoinnin suurin syvyys.';
+$lang['camelcase']             = 'Käytä CamelCase linkkejä';
+$lang['deaccent']              = 'Siivoa sivun nimet';
+$lang['useheading']            = 'Käytä ensimmäistä otsikkoriviä sivun nimenä.';
+$lang['sneaky_index']          = 'Oletuksena DokuWiki näyttää kaikki nimiavaruudet index-näkymäsä. Tämä asetus piilottaa ne, joihin käyttäjällä ei ole lukuoikeuksia. Tämä voi piilottaa joitakin sallittuja alinimiavaruuksia. Tästä johtuen index-näkymä voi olla käyttökelvoton joillakin ACL-asetuksilla';
+$lang['hidepages']             = 'Piilota seuraavat sivut (säännönmukainen lauseke)';
+$lang['useacl']                = 'Käytä käyttöoikeuksien hallintaa';
+$lang['autopasswd']            = 'Luo salasana automaattisesti';
+$lang['authtype']              = 'Autentikointijärjestelmä';
+$lang['passcrypt']             = 'Salasanan suojausmenetelmä';
+$lang['defaultgroup']          = 'Oletusryhmä';
+$lang['superuser']             = 'Pääkäyttäjä. Ryhmä tai käyttäjä, jolla on täysi oikeus kaikkiin sivuihin ja toimintoihin käyttöoikeuksista huolimatta';
+$lang['manager']               = 'Ylläpitäjä. Ryhmä tai käyttäjä, jolla on pääsy joihinkin ylläpitotoimintoihin';
+$lang['profileconfirm']        = 'Vahvista profiilin päivitys salasanan avulla';
+$lang['rememberme']            = 'Salli pysyvät kirjautumis-cookiet (muista minut)';
+$lang['disableactions']        = 'Estä DokuWiki-toimintojen käyttö';
+$lang['disableactions_check']  = 'Tarkista';
+$lang['disableactions_subscription'] = 'Tilaa/Peruuta tilaus';
+$lang['disableactions_wikicode'] = 'Näytä lähdekoodi/Vie raakana';
+$lang['disableactions_other']  = 'Muut toiminnot (pilkulla erotettuna)';
+$lang['auth_security_timeout'] = 'Autentikoinnin aikakatkaisu (sekunteja)';
+$lang['securecookie']          = 'Lähetetäänkö HTTPS:n kautta asetetut evästetiedot HTTPS-yhteydellä? Kytke pois, jos vain wikisi kirjautuminen on suojattu SSL:n avulla, mutta muuten wikiä käytetään ilman suojausta.';
+$lang['remote']                = 'Kytke "remote API" käyttöön. Tämä sallii muiden sovellusten päästä wikiin XML-RPC:n avulla';
+$lang['remoteuser']            = 'Salli "remote API" pääsy vain pilkulla erotetuille ryhmille tai käyttäjille tässä. Jätä tyhjäksi, jos haluat sallia käytön kaikille.';
+$lang['usewordblock']          = 'Estä spam sanalistan avulla';
+$lang['relnofollow']           = 'Käytä rel="nofollow" ulkoisille linkeille';
+$lang['indexdelay']            = 'Aikaraja indeksoinnille (sek)';
+$lang['mailguard']             = 'Häivytä email osoite';
+$lang['iexssprotect']          = 'Tarkista lähetetyt tiedostot pahojen javascript- ja html-koodien varalta';
+$lang['usedraft']              = 'Tallenna vedos muokkaustilassa automaattisesti ';
+$lang['htmlok']                = 'Salli upotettu HTML';
+$lang['phpok']                 = 'Salli upotettu PHP';
+$lang['locktime']              = 'Lukitustiedostojen maksimi-ikä (sek)';
+$lang['cachetime']             = 'Välimuisti-tiedostojen maksimi-ikä (sek)';
+$lang['target____wiki']        = 'Kohdeikkuna sisäisissä linkeissä';
+$lang['target____interwiki']   = 'Kohdeikkuna interwiki-linkeissä';
+$lang['target____extern']      = 'Kohdeikkuna ulkoisissa linkeissä';
+$lang['target____media']       = 'Kohdeikkuna media-linkeissä';
+$lang['target____windows']     = 'Kohdeikkuna Windows-linkeissä';
+$lang['mediarevisions']        = 'Otetaan käyttään Media-versiointi';
+$lang['refcheck']              = 'Mediaviitteen tarkistus';
+$lang['gdlib']                 = 'GD Lib versio';
+$lang['im_convert']            = 'ImageMagick-muunnostyökalun polku';
+$lang['jpg_quality']           = 'JPG pakkauslaatu (0-100)';
+$lang['fetchsize']             = 'Suurin koko (bytejä), jonka fetch.php voi ladata ulkopuolisesta lähteestä';
+$lang['subscribers']           = 'Salli tuki sivujen tilaamiselle';
+$lang['subscribe_time']        = 'Aika jonka jälkeen tilauslinkit ja yhteenveto lähetetään (sek). Tämän pitäisi olla pienempi, kuin recent_days aika.';
+$lang['notify']                = 'Lähetä muutosilmoitukset tähän osoitteeseen';
+$lang['registernotify']        = 'Lähetä ilmoitus uusista rekisteröitymisistä tähän osoitteeseen';
+$lang['mailfrom']              = 'Sähköpostiosoite automaattisia postituksia varten';
+$lang['mailprefix']            = 'Etuliite automaattisesti lähetettyihin dähköposteihin';
+$lang['htmlmail']              = 'Lähetä paremman näköisiä, mutta isompia HTML multipart sähköposteja. Ota pois päältä, jos haluat vain tekstimuotoisia posteja.';
+$lang['sitemap']               = 'Luo Google sitemap (päiviä)';
+$lang['rss_type']              = 'XML-syötteen tyyppi';
+$lang['rss_linkto']            = 'XML-syöte kytkeytyy';
+$lang['rss_content']           = 'Mitä XML-syöte näyttää?';
+$lang['rss_update']            = 'XML-syötteen päivitystahti (sek)';
+$lang['rss_show_summary']      = 'XML-syöte näyttää yhteenvedon otsikossa';
+$lang['rss_media']             = 'Millaiset muutokset pitäisi olla mukana XML-syötteessä.';
+$lang['updatecheck']           = 'Tarkista päivityksiä ja turvavaroituksia? Tätä varten DokuWikin pitää ottaa yhteys update.dokuwiki.orgiin.';
+$lang['userewrite']            = 'Käytä siivottuja URLeja';
+$lang['useslash']              = 'Käytä kauttaviivaa nimiavaruuksien erottimena URL-osoitteissa';
+$lang['sepchar']               = 'Sivunimen sanaerotin';
+$lang['canonical']             = 'Käytä kanonisoituja URLeja';
+$lang['fnencode']              = 'Muita kuin ASCII merkkejä sisältävien tiedostonimien koodaustapa.';
+$lang['autoplural']            = 'Etsi monikkomuotoja linkeistä';
+$lang['compression']           = 'Attic-tiedostojen pakkausmenetelmä';
+$lang['gzip_output']           = 'Käytä gzip "Content-Encoding"-otsaketta xhtml-tiedostojen lähettämiseen';
+$lang['compress']              = 'Pakkaa CSS ja javascript';
+$lang['cssdatauri']            = 'Maksimikoko tavuina jossa kuvat joihin viitataan CSS-tiedostoista olisi sisällytettynä suoraan tyylitiedostoon jotta HTTP-kyselyjen kaistaa saataisiin kutistettua. Tämä tekniikka ei toimi IE versiossa aikasempi kuin 8! <code>400:sta</code> <code>600:aan</code> tavua on hyvä arvo. Aseta <code>0</code> kytkeäksesi ominaisuuden pois.';
+$lang['send404']               = 'Lähetä "HTTP 404/Page Not Found" puuttuvista sivuista';
+$lang['broken_iua']            = 'Onko "ignore_user_abort" toiminto rikki järjestelmässäsi? Tämä voi aiheuttaa toimimattoman index-näkymän.
+IIS+PHP/CGI on tunnetusti rikki. Katso <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> lisätietoja varten.';
+$lang['xsendfile']             = 'Käytä X-Sendfile otsikkoa, kun web-palvelin lähettää staattisia tiedostoja? Palvelimesi pitää tukea tätä.';
+$lang['renderer_xhtml']        = 'Renderöinti, jota käytetään wikin pääasialliseen (xhtml) tulostukseen';
+$lang['renderer__core']        = '%s (dokuwiki core)';
+$lang['renderer__plugin']      = '%s (liitännäinen)';
+$lang['dnslookups']            = 'DokuWiki tarkistaa sivun päivittäjän koneen IP-osoitteen isäntänimen. Kytke pois, jos käytät hidasta tai toimimatonta DNS-palvelinta, tai et halua tätä ominaisuutta.';
+$lang['proxy____host']         = 'Proxy-palvelimen nimi';
+$lang['proxy____port']         = 'Proxy portti';
+$lang['proxy____user']         = 'Proxy käyttäjän nimi';
+$lang['proxy____pass']         = 'Proxy salasana';
+$lang['proxy____ssl']          = 'Käytä ssl-yhteyttä kytkeytyäksesi proxy-palvelimeen';
+$lang['proxy____except']       = 'Säännönmukainen lause, URLiin, jolle proxy ohitetaan.';
+$lang['safemodehack']          = 'Käytä safemode kiertoa';
+$lang['ftp____host']           = 'FTP-palvelin safemode kiertoa varten';
+$lang['ftp____port']           = 'FTP-portti safemode kiertoa varten';
+$lang['ftp____user']           = 'FTP-käyttäjä safemode kiertoa varten';
+$lang['ftp____pass']           = 'FTP-salasana safemode kiertoa varten';
+$lang['ftp____root']           = 'FTP-juurihakemisto safemode kiertoa varten';
+$lang['license_o_']            = 'ei mitään valittuna';
+$lang['typography_o_0']        = 'ei mitään';
+$lang['typography_o_1']        = 'ilman yksinkertaisia lainausmerkkejä';
+$lang['typography_o_2']        = 'myös yksinkertaiset lainausmerkit (ei aina toimi)';
+$lang['userewrite_o_0']        = 'ei mitään';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWikin sisäinen';
+$lang['deaccent_o_0']          = 'pois';
+$lang['deaccent_o_1']          = 'Poista aksenttimerkit';
+$lang['deaccent_o_2']          = 'translitteroi';
+$lang['gdlib_o_0']             = 'GD Lib ei ole saatavilla';
+$lang['gdlib_o_1']             = 'Versio 1.x';
+$lang['gdlib_o_2']             = 'Automaattitunnistus';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Yhteenveto';
+$lang['rss_content_o_diff']    = 'Yhdistetty erot';
+$lang['rss_content_o_htmldiff'] = 'HTML-muotoiltu eroavuuslista';
+$lang['rss_content_o_html']    = 'Täysi HTML-sivu';
+$lang['rss_linkto_o_diff']     = 'erot-näkymä';
+$lang['rss_linkto_o_page']     = 'muutettu sivu';
+$lang['rss_linkto_o_rev']      = 'versiolista';
+$lang['rss_linkto_o_current']  = 'nykyinen sivu';
+$lang['compression_o_0']       = 'ei mitään';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'älä käytä';
+$lang['xsendfile_o_1']         = 'Oma lighttpd otsikko (ennen 1.5 julkaisua)';
+$lang['xsendfile_o_2']         = 'Standardi X-sendfile header';
+$lang['xsendfile_o_3']         = 'Oma Nginx X-Accel-Redirect header';
+$lang['showuseras_o_loginname'] = 'Kirjautumisnimi';
+$lang['showuseras_o_username'] = 'Käyttäjän koko nimi';
+$lang['showuseras_o_email']    = 'Käyttäjän sähköpostiosoite (sumennettu mailguard-asetusten mukaisesti)';
+$lang['showuseras_o_email_link'] = 'Käyttäjän sähköpostiosoite mailto: linkkinä';
+$lang['useheading_o_0']        = 'Ei koskaan';
+$lang['useheading_o_navigation'] = 'Vain Navigointi';
+$lang['useheading_o_content']  = 'Vain Wiki-sisältö';
+$lang['useheading_o_1']        = 'Aina';
+$lang['readdircache']          = 'Maksimiaika readdir cachelle (sek)';
diff --git a/wiki/lib/plugins/config/lang/fr/intro.txt b/wiki/lib/plugins/config/lang/fr/intro.txt
new file mode 100644
index 0000000..afc5805
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/fr/intro.txt
@@ -0,0 +1,7 @@
+====== Gestionnaire de configuration ======
+
+Utilisez cette page pour contrôler les paramètres de votre installation de DokuWiki. Pour de l'aide sur chaque paramètre, reportez vous à [[doku>fr:config]]. Pour plus de détails concernant cette extension, reportez vous à [[doku>fr:plugin:config]].
+
+Les paramètres affichés sur un fond rouge sont protégés et ne peuvent être modifiés avec cette extension. Les paramètres affichés sur un fond bleu sont les valeurs par défaut et les valeurs spécifiquement définies pour votre installation sont affichées sur un fond blanc. Seuls les paramètres sur fond bleu ou blanc peuvent être modifiés.
+
+N'oubliez pas d'utiliser le bouton **ENREGISTRER** avant de quitter cette page, sinon vos modifications ne seront pas prises en compte !
diff --git a/wiki/lib/plugins/config/lang/fr/lang.php b/wiki/lib/plugins/config/lang/fr/lang.php
new file mode 100644
index 0000000..520a8bd
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/fr/lang.php
@@ -0,0 +1,233 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Damien Regad <dregad@mantisbt.org>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ * @author Michael Bohn <mjbohn@gmail.com>
+ * @author Guy Brand <gb@unistra.fr>
+ * @author Delassaux Julien <julien@delassaux.fr>
+ * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
+ * @author stephane.gully <stephane.gully@gmail.com>
+ * @author Guillaume Turri <guillaume.turri@gmail.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author olivier duperray <duperray.olivier@laposte.net>
+ * @author Vincent Feltz <psycho@feltzv.fr>
+ * @author Philippe Bajoit <philippe.bajoit@gmail.com>
+ * @author Florian Gaub <floriang@floriang.net>
+ * @author Samuel Dorsaz <samuel.dorsaz@novelion.net>
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Olivier DUVAL <zorky00@gmail.com>
+ * @author Anael Mobilia <contrib@anael.eu>
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ * @author Floriang <antispam@floriang.eu>
+ * @author Simon DELAGE <simon.geekitude@gmail.com>
+ * @author Eric <ericstevenart@netc.fr>
+ * @author Olivier Humbert <trebmuh@tuxfamily.org>
+ */
+$lang['menu']                  = 'Paramètres de configuration';
+$lang['error']                 = 'Paramètres non modifiés en raison d\'une valeur invalide, vérifiez vos réglages puis réessayez. <br />Les valeurs erronées sont entourées d\'une bordure rouge.';
+$lang['updated']               = 'Paramètres mis à jour avec succès.';
+$lang['nochoice']              = '(aucun autre choix possible)';
+$lang['locked']                = 'Le fichier des paramètres ne peut être modifié, si ceci n\'est pas intentionnel, <br /> vérifiez que le nom et les autorisations du fichier sont correctes.';
+$lang['danger']                = 'Danger : modifier cette option pourrait rendre inaccessibles votre wiki et son menu de configuration.';
+$lang['warning']               = 'Attention : modifier cette option pourrait engendrer un comportement indésirable.';
+$lang['security']              = 'Avertissement de sécurité : modifier cette option pourrait induire un risque de sécurité.';
+$lang['_configuration_manager'] = 'Gestionnaire de configuration';
+$lang['_header_dokuwiki']      = 'Paramètres de DokuWiki';
+$lang['_header_plugin']        = 'Paramètres des extensions';
+$lang['_header_template']      = 'Paramètres du thème';
+$lang['_header_undefined']     = 'Paramètres indéfinis';
+$lang['_basic']                = 'Paramètres de base';
+$lang['_display']              = 'Paramètres d\'affichage';
+$lang['_authentication']       = 'Paramètres d\'authentification';
+$lang['_anti_spam']            = 'Paramètres anti-spam';
+$lang['_editing']              = 'Paramètres d\'édition';
+$lang['_links']                = 'Paramètres des liens';
+$lang['_media']                = 'Paramètres des médias';
+$lang['_notifications']        = 'Paramètres de notification';
+$lang['_syndication']          = 'Paramètres de syndication';
+$lang['_advanced']             = 'Paramètres avancés';
+$lang['_network']              = 'Paramètres réseaux';
+$lang['_msg_setting_undefined'] = 'Pas de définition de métadonnées';
+$lang['_msg_setting_no_class'] = 'Pas de définition de paramètres.';
+$lang['_msg_setting_no_default'] = 'Pas de valeur par défaut.';
+$lang['title']                 = 'Titre du wiki (nom du wiki)';
+$lang['start']                 = 'Nom de la page d\'accueil à utiliser pour toutes les catégories';
+$lang['lang']                  = 'Langue de l\'interface';
+$lang['template']              = 'Thème (rendu visuel du wiki)';
+$lang['tagline']               = 'Descriptif du site (si le thème utilise cette fonctionnalité)';
+$lang['sidebar']               = 'Nom du panneau latéral (si le thème utilise cette fonctionnalité). Laisser le champ vide désactive le panneau latéral.';
+$lang['license']               = 'Sous quelle licence doit-être placé le contenu ?';
+$lang['savedir']               = 'Répertoire d\'enregistrement des données';
+$lang['basedir']               = 'Répertoire de base du serveur (par exemple : <code>/dokuwiki/</code>). Laisser vide pour une détection automatique.';
+$lang['baseurl']               = 'URL de base du site (par exemple <code>http://www.example.com</code>). Laisser vide pour une détection automatique.';
+$lang['cookiedir']             = 'Chemin des cookies. Laissez vide pour utiliser l\'URL de base.';
+$lang['dmode']                 = 'Mode de création des répertoires';
+$lang['fmode']                 = 'Mode de création des fichiers';
+$lang['allowdebug']            = 'Debug (<strong>Ne l\'activez que si vous en avez besoin !</strong>)';
+$lang['recent']                = 'Nombre de lignes à afficher - par page - pour les derniers changements';
+$lang['recent_days']           = 'Signaler les pages modifiées depuis (en jours)';
+$lang['breadcrumbs']           = 'Nombre de traces à afficher. 0 désactive cette fonctionnalité.';
+$lang['youarehere']            = 'Utiliser des traces hiérarchiques (vous voulez probablement désactiver l\'option ci-dessus)';
+$lang['fullpath']              = 'Afficher le chemin complet des pages dans le pied de page';
+$lang['typography']            = 'Effectuer des améliorations typographiques';
+$lang['dformat']               = 'Format de date (cf. fonction <a href="http://php.net/strftime">strftime</a> de PHP)';
+$lang['signature']             = 'Données à insérer lors de l\'utilisation du bouton « signature » dans l\'éditeur';
+$lang['showuseras']            = 'Données à afficher concernant le dernier utilisateur ayant modifié une page';
+$lang['toptoclevel']           = 'Niveau le plus haut à afficher dans la table des matières';
+$lang['tocminheads']           = 'Nombre minimum de titres pour qu\'une table des matières soit affichée';
+$lang['maxtoclevel']           = 'Niveau maximum pour figurer dans la table des matières';
+$lang['maxseclevel']           = 'Niveau maximum pour modifier des sections';
+$lang['camelcase']             = 'Utiliser l\'affichage «CamelCase » pour les liens';
+$lang['deaccent']              = 'Retirer les accents dans les noms de pages';
+$lang['useheading']            = 'Utiliser le titre de premier niveau pour le nom de la page';
+$lang['sneaky_index']          = 'Par défaut, DokuWiki affichera toutes les catégories dans la vue par index. Activer cette option permet de cacher les catégories pour lesquelles l\'utilisateur n\'a pas l\'autorisation de lecture. Il peut en résulter le masquage de sous-catégories accessibles. Ceci peut rendre l\'index inutilisable avec certains contrôles d\'accès.';
+$lang['hidepages']             = 'Cacher les pages correspondant à (expression régulière)';
+$lang['useacl']                = 'Utiliser les listes de contrôle d\'accès (ACL)';
+$lang['autopasswd']            = 'Auto-générer les mots de passe';
+$lang['authtype']              = 'Mécanisme d\'authentification';
+$lang['passcrypt']             = 'Méthode de chiffrement des mots de passe';
+$lang['defaultgroup']          = 'Groupe par défaut : tous les nouveaux utilisateurs y seront affectés';
+$lang['superuser']             = 'Super-utilisateur : groupe, utilisateur ou liste séparée par des virgules utilisateur1,@groupe1,utilisateur2 ayant un accès complet à toutes les pages quelque soit le paramétrage des contrôle d\'accès';
+$lang['manager']               = 'Manager:- groupe, utilisateur ou liste séparée par des virgules utilisateur1,@groupe1,utilisateur2 ayant accès à certaines fonctionnalités de gestion';
+$lang['profileconfirm']        = 'Confirmer les modifications de profil par la saisie du mot de passe ';
+$lang['rememberme']            = 'Permettre de conserver de manière permanente les cookies de connexion (mémoriser)';
+$lang['disableactions']        = 'Actions à désactiver dans DokuWiki';
+$lang['disableactions_check']  = 'Vérifier';
+$lang['disableactions_subscription'] = 'Abonnement aux pages';
+$lang['disableactions_wikicode'] = 'Afficher le texte source';
+$lang['disableactions_profile_delete'] = 'Supprimer votre propre compte';
+$lang['disableactions_other']  = 'Autres actions (séparées par des virgules)';
+$lang['disableactions_rss']    = 'Syndication XML (RSS)';
+$lang['auth_security_timeout'] = 'Délai d\'expiration de sécurité (secondes)';
+$lang['securecookie']          = 'Les cookies définis via HTTPS doivent-ils n\'être envoyé par le navigateur que via HTTPS ? Désactivez cette option lorsque seule la connexion à votre wiki est sécurisée avec SSL et que la navigation sur le wiki est effectuée de manière non sécurisée.';
+$lang['remote']                = 'Active l\'API système distante. Ceci permet à d\'autres applications d\'accéder au wiki via XML-RPC ou d\'autres mécanismes.';
+$lang['remoteuser']            = 'Restreindre l\'accès à l\'API à une liste de groupes ou d\'utilisateurs (séparés par une virgule). Laisser vide pour donner l\'accès tout le monde.';
+$lang['usewordblock']          = 'Bloquer le spam selon les mots utilisés';
+$lang['relnofollow']           = 'Utiliser l\'attribut « rel="nofollow" » sur les liens extérieurs';
+$lang['indexdelay']            = 'Délai avant l\'indexation (secondes)';
+$lang['mailguard']             = 'Cacher les adresses de courriel';
+$lang['iexssprotect']          = 'Vérifier, dans les fichiers envoyés, la présence de code JavaScript ou HTML malveillant';
+$lang['usedraft']              = 'Enregistrer automatiquement un brouillon pendant l\'édition';
+$lang['htmlok']                = 'Permettre l\'utilisation de code HTML dans les pages';
+$lang['phpok']                 = 'Permettre l\'utilisation de code PHP dans les pages';
+$lang['locktime']              = 'Âge maximum des fichiers de blocage (secondes)';
+$lang['cachetime']             = 'Âge maximum d\'un fichier en cache (secondes)';
+$lang['target____wiki']        = 'Cible pour liens internes';
+$lang['target____interwiki']   = 'Cible pour liens interwiki';
+$lang['target____extern']      = 'Cible pour liens externes';
+$lang['target____media']       = 'Cible pour liens média';
+$lang['target____windows']     = 'Cible pour liens vers partages Windows';
+$lang['mediarevisions']        = 'Activer les révisions (gestion de versions) des médias';
+$lang['refcheck']              = 'Vérifier si un média est toujours utilisé avant de le supprimer';
+$lang['gdlib']                 = 'Version de la bibliothèque GD';
+$lang['im_convert']            = 'Chemin vers l\'outil de conversion ImageMagick';
+$lang['jpg_quality']           = 'Qualité de la compression JPEG (0-100)';
+$lang['fetchsize']             = 'Taille maximale (en octets) que fetch.php peut télécharger depuis une URL tierce (par exemple pour conserver en cache et redimensionner une image tierce)';
+$lang['subscribers']           = 'Activer l\'abonnement aux pages';
+$lang['subscribe_time']        = 'Délai après lequel les listes d\'abonnement et résumés sont expédiés (en secondes). Devrait être plus petit que le délai précisé dans recent_days.';
+$lang['notify']                = 'Notifier systématiquement les modifications à cette adresse de courriel';
+$lang['registernotify']        = 'Notifier systématiquement les nouveaux utilisateurs enregistrés à cette adresse de courriel';
+$lang['mailfrom']              = 'Adresse de courriel de l\'expéditeur des notifications par courriel du wiki';
+$lang['mailreturnpath']        = 'Adresse de courriel du destinataire pour les notifications de non-remise';
+$lang['mailprefix']            = 'Préfixe à utiliser dans les objets des courriels automatiques. Laisser vide pour utiliser le titre du wiki';
+$lang['htmlmail']              = 'Envoyer des courriel HTML multipart (visuellement plus agréable, mais plus lourd). Désactiver pour utiliser uniquement des courriel plain text';
+$lang['sitemap']               = 'Fréquence de génération du sitemap Google (jours). 0 pour désactiver';
+$lang['rss_type']              = 'Type de flux XML (RSS)';
+$lang['rss_linkto']            = 'Lien du flux XML vers';
+$lang['rss_content']           = 'Quel contenu afficher dans le flux XML?';
+$lang['rss_update']            = 'Fréquence de mise à jour du flux XML (secondes)';
+$lang['rss_show_summary']      = 'Le flux XML affiche le résumé dans le titre';
+$lang['rss_media']             = 'Quels types de changements doivent être listés dans le flux XML?';
+$lang['rss_media_o_both']      = 'les deux';
+$lang['rss_media_o_pages']     = 'pages';
+$lang['rss_media_o_media']     = 'media';
+$lang['updatecheck']           = 'Vérifier les mises à jour et alertes de sécurité? DokuWiki doit pouvoir contacter update.dokuwiki.org';
+$lang['userewrite']            = 'Utiliser des URL esthétiques';
+$lang['useslash']              = 'Utiliser « / » comme séparateur de catégories dans les URL';
+$lang['sepchar']               = 'Séparateur de mots dans les noms de page';
+$lang['canonical']             = 'Utiliser des URL canoniques';
+$lang['fnencode']              = 'Méthode pour l\'encodage des fichiers non-ASCII';
+$lang['autoplural']            = 'Rechercher les formes plurielles dans les liens';
+$lang['compression']           = 'Méthode de compression pour les fichiers attic';
+$lang['gzip_output']           = 'Utiliser gzip pour le Content-Encoding du XHTML';
+$lang['compress']              = 'Compresser les fichiers CSS et JavaScript';
+$lang['cssdatauri']            = 'Taille maximale en octets pour inclure dans les feuilles de styles CSS les images qui y sont référencées. Cette technique réduit le nombre de requêtes HTTP. Cette fonctionnalité ne fonctionne qu\'à partir de la version 8 d\'Internet Explorer! Nous recommandons une valeur entre <code>400</code> et <code>600</code>. <code>0</code> pour désactiver.';
+$lang['send404']               = 'Renvoyer « HTTP 404/Page Not Found » pour les pages inexistantes';
+$lang['broken_iua']            = 'La fonction ignore_user_abort est-elle opérationnelle sur votre système ? Ceci peut empêcher le fonctionnement de l\'index de recherche. IIS+PHP/
+CGI dysfonctionne. Voir le <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">bug 852</a> pour plus d\'informations.';
+$lang['xsendfile']             = 'Utiliser l\'en-tête X-Sendfile pour permettre au serveur web de délivrer les fichiers statiques ? Votre serveur web doit prendre en charge cette technologie.';
+$lang['renderer_xhtml']        = 'Moteur de rendu du format de sortie principal (XHTML)';
+$lang['renderer__core']        = '%s (cœur de DokuWiki)';
+$lang['renderer__plugin']      = '%s (extension)';
+$lang['search_nslimit']        = 'Limiter la recherche aux X catégories courantes. Quand une recherche est effectuée à partir d\'une page dans une catégorie profondément imbriquée, les premières X catégories sont ajoutées comme filtre.';
+$lang['search_fragment']       = 'Spécifier le comportement de recherche fragmentaire par défaut';
+$lang['search_fragment_o_exact'] = 'exact';
+$lang['search_fragment_o_starts_with'] = 'commence par';
+$lang['search_fragment_o_ends_with'] = 'se termine par';
+$lang['search_fragment_o_contains'] = 'contient';
+$lang['dnslookups']            = 'DokuWiki effectuera une résolution du nom d\'hôte sur les adresses IP des utilisateurs modifiant des pages. Si vous ne possédez pas de serveur DNS, que ce dernier est lent ou que vous ne souhaitez pas utiliser cette fonctionnalité : désactivez-la.';
+$lang['jquerycdn']             = 'Faut-il distribuer les scripts JQuery et JQuery UI depuis un CDN ? Cela ajoute une requête HTTP, mais les fichiers peuvent se charger plus vite et les internautes les ont peut-être déjà en cache.';
+$lang['jquerycdn_o_0']         = 'Non : utilisation de votre serveur.';
+$lang['jquerycdn_o_jquery']    = 'Oui : CDN code.jquery.com.';
+$lang['jquerycdn_o_cdnjs']     = 'Oui : CDN cdnjs.com.';
+$lang['proxy____host']         = 'Mandataire (proxy) - Hôte';
+$lang['proxy____port']         = 'Mandataire - Port';
+$lang['proxy____user']         = 'Mandataire - Identifiant';
+$lang['proxy____pass']         = 'Mandataire - Mot de passe';
+$lang['proxy____ssl']          = 'Mandataire - Utilisation de SSL';
+$lang['proxy____except']       = 'Mandataire - Expression régulière de test des URLs pour lesquelles le mandataire (proxy) ne doit pas être utilisé.';
+$lang['safemodehack']          = 'Activer l\'option Mode sans échec';
+$lang['ftp____host']           = 'FTP / Mode sans échec - Serveur hôte';
+$lang['ftp____port']           = 'FTP / Mode sans échec - Port';
+$lang['ftp____user']           = 'FTP / Mode sans échec - Identifiant';
+$lang['ftp____pass']           = 'FTP / Mode sans échec - Mot de passe';
+$lang['ftp____root']           = 'FTP / Mode sans échec - Répertoire racine';
+$lang['license_o_']            = 'Aucune choisie';
+$lang['typography_o_0']        = 'aucun';
+$lang['typography_o_1']        = 'guillemets uniquement';
+$lang['typography_o_2']        = 'tout signe typographique (peut ne pas fonctionner)';
+$lang['userewrite_o_0']        = 'aucun';
+$lang['userewrite_o_1']        = 'Fichier .htaccess';
+$lang['userewrite_o_2']        = 'Interne à DokuWiki';
+$lang['deaccent_o_0']          = 'off';
+$lang['deaccent_o_1']          = 'supprimer les accents';
+$lang['deaccent_o_2']          = 'convertir en caractères latins';
+$lang['gdlib_o_0']             = 'Bibliothèque GD non disponible';
+$lang['gdlib_o_1']             = 'version 1.x';
+$lang['gdlib_o_2']             = 'auto-détectée';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Résumé';
+$lang['rss_content_o_diff']    = 'Diff. unifié';
+$lang['rss_content_o_htmldiff'] = 'Diff. formaté en table HTML';
+$lang['rss_content_o_html']    = 'page complète au format HTML';
+$lang['rss_linkto_o_diff']     = 'liste des différences';
+$lang['rss_linkto_o_page']     = 'page révisée';
+$lang['rss_linkto_o_rev']      = 'liste des révisions';
+$lang['rss_linkto_o_current']  = 'page actuelle';
+$lang['compression_o_0']       = 'aucune';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ne pas utiliser';
+$lang['xsendfile_o_1']         = 'Entête propriétaire lighttpd (avant la version 1.5)';
+$lang['xsendfile_o_2']         = 'Entête standard X-Sendfile';
+$lang['xsendfile_o_3']         = 'En-tête propriétaire Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Identifiant de l\'utilisateur';
+$lang['showuseras_o_username'] = 'Nom de l\'utilisateur';
+$lang['showuseras_o_username_link'] = 'Nom complet de l\'utilisateur en tant que lien interwiki';
+$lang['showuseras_o_email']    = 'Courriel de l\'utilisateur (brouillé suivant les paramètres de brouillage sélectionnés)';
+$lang['showuseras_o_email_link'] = 'Courriel de l\'utilisateur en tant que lien mailto:';
+$lang['useheading_o_0']        = 'Jamais';
+$lang['useheading_o_navigation'] = 'Navigation seulement';
+$lang['useheading_o_content']  = 'Contenu du wiki seulement';
+$lang['useheading_o_1']        = 'Toujours';
+$lang['readdircache']          = 'Durée de vie maximale du cache pour readdir (sec)';
diff --git a/wiki/lib/plugins/config/lang/gl/intro.txt b/wiki/lib/plugins/config/lang/gl/intro.txt
new file mode 100644
index 0000000..cafe28e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/gl/intro.txt
@@ -0,0 +1,7 @@
+====== Xestor de Configuración ======
+
+Usa esta páxina para controlares a configuración da túa instalación do Dokuwiki.  Para atopares axuda verbo de cada opción da configuración vai a [[doku>config]]. Para obteres pormenores desta extensión bota un ollo a [[doku>plugin:config]].
+
+As opcións que amosan un fondo de cor vermella clara están protexidas e non poden ser alteradas con esta extensión. As opcións que amosan un fondo de cor azul son valores predeterminados e as opcións que teñen fondo branco foron configuradas de xeito local para esta instalación en concreto. Ámbalas dúas, as opcións azuis e brancas, poden ser alteradas.
+
+Lembra premer no boton **GARDAR** denantes de saíres desta páxina ou, en caso contrario, os teus trocos perderanse.
diff --git a/wiki/lib/plugins/config/lang/gl/lang.php b/wiki/lib/plugins/config/lang/gl/lang.php
new file mode 100644
index 0000000..5513964
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/gl/lang.php
@@ -0,0 +1,194 @@
+<?php
+/**
+ * Galicianlanguage file
+ *
+ * @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['menu']                  = 'Opcións de Configuración';
+$lang['error']                 = 'Configuración non actualizada debido a un valor inválido, por favor revisa os teus trocos e volta envialos de novo.
+<br />O(s) valor(es) incorrecto(s) amosanse cinguidos por un borde vermello.';
+$lang['updated']               = 'Configuración actualizada correctamente.';
+$lang['nochoice']              = '(non hai outras escollas dispoñibles)';
+$lang['locked']                = 'Non se puido actualizar o arquivo de configuración, se non ocorre como debería ser, <br />
+asegúrate de que o nome do arquivo de configuración local e os permisos son correctos.';
+$lang['danger']                = 'Perigo: mudando esta opción podes facer inaccesíbeis o teu wiki e máis o menú de configuración.';
+$lang['warning']               = 'Ollo: mudando esta opción poden aparecer comportamentos do aplicativo non agardados.';
+$lang['security']              = 'Aviso de seguranza: mudando esta opción poden aparecer riscos de seguranza.';
+$lang['_configuration_manager'] = 'Xestor de Configuración';
+$lang['_header_dokuwiki']      = 'Configuración do DokuWiki';
+$lang['_header_plugin']        = 'Configuración de Extensións';
+$lang['_header_template']      = 'Configuración de Sobreplanta';
+$lang['_header_undefined']     = 'Configuración Indefinida';
+$lang['_basic']                = 'Configuración Básica';
+$lang['_display']              = 'Configuración de Visualización';
+$lang['_authentication']       = 'Configuración de Autenticación';
+$lang['_anti_spam']            = 'Configuración de Anti-Correo-lixo';
+$lang['_editing']              = 'Configuración de Edición';
+$lang['_links']                = 'Configuración de Ligazóns';
+$lang['_media']                = 'Configuración de Media';
+$lang['_notifications']        = 'Opcións de Notificación';
+$lang['_syndication']          = 'Opcións de Sindicación';
+$lang['_advanced']             = 'Configuración Avanzada';
+$lang['_network']              = 'Configuración de Rede';
+$lang['_msg_setting_undefined'] = 'Non hai configuración de metadatos.';
+$lang['_msg_setting_no_class'] = 'Non hai configuración de clase.';
+$lang['_msg_setting_no_default'] = 'Non hai valor predeterminado.';
+$lang['title']                 = 'Título do Wiki';
+$lang['start']                 = 'Nome da páxina inicial';
+$lang['lang']                  = 'Idioma';
+$lang['template']              = 'Sobreplanta';
+$lang['tagline']               = 'Tagline (si a plantilla o soporta)';
+$lang['sidebar']               = 'Nome de páxina da barra lateral (si a platilla o soporta), o campo en baleiro deshabilita a barra lateral';
+$lang['license']               = 'Baixo de que licenza será ceibado o teu contido?';
+$lang['savedir']               = 'Directorio no que se gardarán os datos';
+$lang['basedir']               = 'Directorio base';
+$lang['baseurl']               = 'URL base';
+$lang['cookiedir']             = 'Ruta das cookies. Deixar en blanco para usar a url de base.';
+$lang['dmode']                 = 'Modo de creación de directorios';
+$lang['fmode']                 = 'Modo de creación de arquivos';
+$lang['allowdebug']            = 'Permitir o depurado <b>desactívao se non o precisas!</b>';
+$lang['recent']                = 'Trocos recentes';
+$lang['recent_days']           = 'Número de trocos recentes a manter (días)';
+$lang['breadcrumbs']           = 'Número de niveis da estrutura de navegación';
+$lang['youarehere']            = 'Niveis xerárquicos da estrutura de navegación';
+$lang['fullpath']              = 'Amosar a ruta completa das páxinas no pé das mesmas';
+$lang['typography']            = 'Facer substitucións tipográficas';
+$lang['dformat']               = 'Formato de Data (bótalle un ollo á función <a href="http://php.net/strftime">strftime</a> do PHP)';
+$lang['signature']             = 'Sinatura';
+$lang['showuseras']            = 'Que amosar cando se informe do usuario que fixo a última modificación dunha páxina';
+$lang['toptoclevel']           = 'Nivel superior para a táboa de contidos';
+$lang['tocminheads']           = 'Cantidade mínima de liñas de cabeceira que determinará se a TDC vai ser xerada';
+$lang['maxtoclevel']           = 'Nivel máximo para a táboa de contidos';
+$lang['maxseclevel']           = 'Nivel máximo de edición da sección';
+$lang['camelcase']             = 'Utilizar CamelCase para as ligazóns';
+$lang['deaccent']              = 'Limpar nomes de páxina';
+$lang['useheading']            = 'Utilizar a primeira cabeceira para os nomes de páxina';
+$lang['sneaky_index']          = 'O DokuWiki amosará por defecto todos os nomes de espazo na vista de índice. Se activas isto agocharanse aqueles onde o usuario non teña permisos de lectura.';
+$lang['hidepages']             = 'Agochar páxinas que coincidan (expresións regulares)';
+$lang['useacl']                = 'Utilizar lista de control de acceso';
+$lang['autopasswd']            = 'Xerar contrasinais automaticamente';
+$lang['authtype']              = 'Backend de autenticación';
+$lang['passcrypt']             = 'Método de encriptado do contrasinal';
+$lang['defaultgroup']          = 'Grupo por defecto';
+$lang['superuser']             = 'Super-usuario - un grupo ou usuario con acceso completo a todas as páxinas e funcións independentemente da configuración da ACL';
+$lang['manager']               = 'Xestor - un grupo ou usuario con acceso a certas funcións de xestión';
+$lang['profileconfirm']        = 'Confirmar trocos de perfil mediante contrasinal';
+$lang['rememberme']            = 'Permitir cookies permanentes de inicio de sesión (lembrarme)';
+$lang['disableactions']        = 'Desactivar accións do DokuWiki';
+$lang['disableactions_check']  = 'Comprobar';
+$lang['disableactions_subscription'] = 'Subscribir/Desubscribir';
+$lang['disableactions_wikicode'] = 'Ver fonte/Exportar Datos Raw';
+$lang['disableactions_other']  = 'Outras accións (separadas por comas)';
+$lang['auth_security_timeout'] = 'Tempo Límite de Seguridade de Autenticación (segundos)';
+$lang['securecookie']          = 'Deben enviarse só vía HTTPS polo navegador as cookies configuradas vía HTTPS? Desactiva esta opción cando só o inicio de sesión do teu wiki estea asegurado con SSL pero a navegación do mesmo se faga de xeito inseguro.';
+$lang['remote']                = 'Permite o uso do sistema API remoto. Isto permite a outras aplicacións acceder ao wiki mediante XML-RPC ou outros mecanismos.';
+$lang['remoteuser']            = 'Restrinxe o uso remoto da API aos grupos ou usuarios indicados, separados por comas. Deixar baleiro para dar acceso a todo o mundo.';
+$lang['usewordblock']          = 'Bloquear correo-lixo segundo unha lista de verbas';
+$lang['relnofollow']           = 'Utilizar rel="nofollow" nas ligazóns externas';
+$lang['indexdelay']            = 'Retardo denantes de indexar (seg)';
+$lang['mailguard']             = 'Ofuscar enderezos de correo-e';
+$lang['iexssprotect']          = 'Comprobar arquivos subidos na procura de posíbel código JavaScript ou HTML malicioso';
+$lang['usedraft']              = 'Gardar un borrador automaticamente no tempo da edición';
+$lang['htmlok']                = 'Permitir a inserción de HTML';
+$lang['phpok']                 = 'Permitir a inserción de PHP';
+$lang['locktime']              = 'Tempo máximo para o bloqueo de arquivos (seg.)';
+$lang['cachetime']             = 'Tempo máximo para a caché (seg.)';
+$lang['target____wiki']        = 'Fiestra de destino para as ligazóns internas';
+$lang['target____interwiki']   = 'Fiestra de destino para as ligazóns interwiki';
+$lang['target____extern']      = 'Fiestra de destino para as ligazóns externas';
+$lang['target____media']       = 'Fiestra de destino para as ligazóns de media';
+$lang['target____windows']     = 'Fiestra de destino para as ligazóns de fiestras';
+$lang['mediarevisions']        = 'Habilitar revisións dos arquivos-media?';
+$lang['refcheck']              = 'Comprobar a referencia media';
+$lang['gdlib']                 = 'Versión da Libraría GD';
+$lang['im_convert']            = 'Ruta deica a ferramenta de conversión ImageMagick';
+$lang['jpg_quality']           = 'Calidade de compresión dos JPG (0-100)';
+$lang['fetchsize']             = 'Tamaño máximo (en bytes) que pode descargar fetch.php dende fontes externas';
+$lang['subscribers']           = 'Activar posibilidade de subscrición á páxina';
+$lang['subscribe_time']        = 'Tempo despois do cal se enviarán os resumos e listas de subscrición (seg.): isto debe ser inferior ao tempo especificado en recent_days.';
+$lang['notify']                = 'Enviar notificacións de trocos a este enderezo de correo-e';
+$lang['registernotify']        = 'Enviar información de novos usuarios rexistrados a este enderezo de correo-e';
+$lang['mailfrom']              = 'Enderezo de correo-e a usar para as mensaxes automáticas';
+$lang['mailprefix']            = 'Prefixo de asunto de correo-e para as mensaxes automáticas';
+$lang['htmlmail']              = 'Enviar correos electrónicos HTML multiparte máis estéticos, pero máis grande en tamaño. Deshabilitar para mandar correos electrónicos en texto claro.';
+$lang['sitemap']               = 'Xerar mapa do sitio co Google (días)';
+$lang['rss_type']              = 'Tipo de corrente RSS XML';
+$lang['rss_linkto']            = 'A corrente XML liga para';
+$lang['rss_content']           = 'Que queres amosar nos elementos da corrente XML?';
+$lang['rss_update']            = 'Intervalo de actualización da corrente XML (seg.)';
+$lang['rss_show_summary']      = 'Amosar sumario no título da corrente XML';
+$lang['rss_media']             = 'Qué tipo de cambios deben ser listados no feed XML?';
+$lang['updatecheck']           = 'Comprobar se hai actualizacións e avisos de seguridade? O DokuWiki precisa contactar con update.dokuwiki.org para executar esta característica.';
+$lang['userewrite']            = 'Utilizar URLs amigábeis';
+$lang['useslash']              = 'Utilizar a barra inclinada (/) como separador de nome de espazo nos URLs';
+$lang['sepchar']               = 'Verba separadora do nome de páxina';
+$lang['canonical']             = 'Utilizar URLs completamente canónicos';
+$lang['fnencode']              = 'Método para codificar os nomes de arquivo non-ASCII.';
+$lang['autoplural']            = 'Comprobar formas plurais nas ligazóns';
+$lang['compression']           = 'Método de compresión para arquivos attic';
+$lang['gzip_output']           = 'Utilizar Contido-Codificación gzip para o xhtml';
+$lang['compress']              = 'Saída compacta de CSS e Javascript';
+$lang['cssdatauri']            = 'Tamaño en bytes ata o cal as imaxes referenciadas nos CSS serán incrustadas na folla de estilos para disminuir o tamaño das cabeceiras das solicitudes HTTP. Entre <code>400</code> e <code>600</code> bytes é un valor axeitado. Establecer a <code>0</code> para deshabilitar.';
+$lang['send404']               = 'Enviar "HTTP 404/Páxina non atopada" para as páxinas inexistentes';
+$lang['broken_iua']            = 'Rachou a función ignore_user_abort no teu sistema? Isto podería causar que o índice de procura non funcione. Coñécese que o IIS+PHP/CGI ráchaa. Bótalle un ollo ao <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> para obter máis información.';
+$lang['xsendfile']             = 'Empregar a cabeceira X-Sendfile para que o servidor web envie arquivos estáticos? O teu servidor web precisa soportar isto.';
+$lang['renderer_xhtml']        = 'Intérprete a empregar para a saída principal (XHTML) do Wiki';
+$lang['renderer__core']        = '%s (núcleo do Dokuwiki)';
+$lang['renderer__plugin']      = '%s (extensión)';
+$lang['dnslookups']            = 'DokuWiki resolverá os nomes de host das direccións IP dos usuarios que editan as páxinas. Si contas un servidor DNS lento, que non funciona ou non che interesa esta característica, deshabilita esta opción';
+$lang['proxy____host']         = 'Nome do servidor Proxy';
+$lang['proxy____port']         = 'Porto do Proxy';
+$lang['proxy____user']         = 'Nome de usuario do Proxy';
+$lang['proxy____pass']         = 'Contrasinal do Proxy';
+$lang['proxy____ssl']          = 'Utilizar ssl para conectar ao Proxy';
+$lang['proxy____except']       = 'Expresión regular para atopar URLs que deban ser omitidas polo Proxy.';
+$lang['safemodehack']          = 'Activar hack de modo seguro (safemode)';
+$lang['ftp____host']           = 'Servidor FTP para o hack de modo seguro (safemode)';
+$lang['ftp____port']           = 'Porto FTP para o hack de modo seguro(safemode)';
+$lang['ftp____user']           = 'Nome de usuario FTP para o hack de modo seguro(safemode)';
+$lang['ftp____pass']           = 'Contrasinal FTP para o hack de modo seguro(safemode)';
+$lang['ftp____root']           = 'Directorio raigaña do FTP para o hack de modo seguro(safemode)';
+$lang['license_o_']            = 'Non se escolleu nada';
+$lang['typography_o_0']        = 'ningunha';
+$lang['typography_o_1']        = 'Só dobres aspas';
+$lang['typography_o_2']        = 'Todas as aspas (pode que non funcione sempre)';
+$lang['userewrite_o_0']        = 'ningún';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Interno do DokuWiki';
+$lang['deaccent_o_0']          = 'desconectado';
+$lang['deaccent_o_1']          = 'Eliminar acentos';
+$lang['deaccent_o_2']          = 'romanizar';
+$lang['gdlib_o_0']             = 'Libraría GD non dispoñíbel';
+$lang['gdlib_o_1']             = 'Versión 1.x';
+$lang['gdlib_o_2']             = 'Detección automática';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Sumario';
+$lang['rss_content_o_diff']    = 'Formato Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'Táboa diff formatada en HTML';
+$lang['rss_content_o_html']    = 'Contido HTML completo da páxina';
+$lang['rss_linkto_o_diff']     = 'vista de diferenzas';
+$lang['rss_linkto_o_page']     = 'a páxina revisada';
+$lang['rss_linkto_o_rev']      = 'listaxe de revisións';
+$lang['rss_linkto_o_current']  = 'a páxina actual';
+$lang['compression_o_0']       = 'ningunha';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'non o empregues';
+$lang['xsendfile_o_1']         = 'Cabeceira lighttpd propietaria (denantes da versión 1.5)';
+$lang['xsendfile_o_2']         = 'Cabeceira X-Sendfile estándar';
+$lang['xsendfile_o_3']         = 'Cabeceira X-Accel-Redirect propia de Nginx';
+$lang['showuseras_o_loginname'] = 'Nome de inicio de sesión';
+$lang['showuseras_o_username'] = 'Nome completo do usuario';
+$lang['showuseras_o_email']    = 'Enderezo de correo-e do usuario (ofuscado segundo a configuración mailguard)';
+$lang['showuseras_o_email_link'] = 'Enderezo de correo-e do usuario como ligazón mailto:';
+$lang['useheading_o_0']        = 'Endexamais';
+$lang['useheading_o_navigation'] = 'Só Navegación';
+$lang['useheading_o_content']  = 'Só Contido do Wiki';
+$lang['useheading_o_1']        = 'Sempre';
+$lang['readdircache']          = 'Edad máxima para o directorio de caché (seg)';
diff --git a/wiki/lib/plugins/config/lang/he/intro.txt b/wiki/lib/plugins/config/lang/he/intro.txt
new file mode 100644
index 0000000..d61a938
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/he/intro.txt
@@ -0,0 +1,7 @@
+====== מנהל תצורה ======
+
+ניתן להשתמש בדף זה לשליטה על הגדרות התקנת ה-Dokuwiki שלך.  לעזרה בנוגע להגדרות ספציפיות ניתן לפנות אל [[doku>config]]. למידע נוסף אודות תוסף זה ניתן לפנות אל [[doku>plugin:config]].
+
+הגדרות עם רקע אדום-בהיר מוגנות ואין אפשרות לשנותן עם תוסף זה. הגדרות עם רקע כחול הן בעלות ערך ברירת המחדל והגדרות עם רקע לבן הוגדרו באופן מקומי עבור התקנה זו. ההגדרות בעלות הרקעים הכחול והלבן הן ברות שינוי.
+
+יש לזכור ללחוץ על כפתור ה**שמירה** טרם עזיבת דף זה פן יאבדו השינויים.
diff --git a/wiki/lib/plugins/config/lang/he/lang.php b/wiki/lib/plugins/config/lang/he/lang.php
new file mode 100644
index 0000000..8c986ae
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/he/lang.php
@@ -0,0 +1,166 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guy Yakobovitch <guy.yakobovitch@gmail.com>
+ * @author DoK <kamberd@yahoo.com>
+ * @author Moshe Kaplan <mokplan@gmail.com>
+ * @author Yaron Yogev <yaronyogev@gmail.com>
+ * @author Yaron Shahrabani <sh.yaron@gmail.com>
+ * @author sagi <sagiyosef@gmail.com>
+ */
+$lang['menu']                  = 'הגדרות תצורה';
+$lang['error']                 = 'ההגדרות לא עודכנו בגלל ערך לא תקף, נא לעיין בשינויים ולשלוח שנית.
+                       <br />הערכים שאינם נכונים יסומנו בגבול אדום.';
+$lang['updated']               = 'ההגדרות עודכנו בהצלחה.';
+$lang['nochoice']              = '(אין אפשרויות זמינות נוספות)';
+$lang['locked']                = 'קובץ ההגדרות אינו בר עידכון, אם הדבר אינו מכוון, <br />
+                       יש לודא כי קובץ ההגדרות המקומי וההרשאות נכונים.';
+$lang['_configuration_manager'] = 'מנהל תצורה';
+$lang['_header_dokuwiki']      = 'הגדרות DokuWiki';
+$lang['_header_plugin']        = 'הגדרות תוסף';
+$lang['_header_template']      = 'הגדרות תבנית';
+$lang['_header_undefined']     = 'הגדרות שונות';
+$lang['_basic']                = 'הגדרות בסיסיות';
+$lang['_display']              = 'הגדרות תצוגה';
+$lang['_authentication']       = 'הגדרות הזדהות';
+$lang['_anti_spam']            = 'הגדרות נגד דואר זבל';
+$lang['_editing']              = 'הגדרות עריכה';
+$lang['_links']                = 'הגדרות קישורים';
+$lang['_media']                = 'הגדרות מדיה';
+$lang['_advanced']             = 'הגדרות מתקדמות';
+$lang['_network']              = 'הגדרות רשת';
+$lang['_msg_setting_undefined'] = 'אין מידע-על להגדרה.';
+$lang['_msg_setting_no_class'] = 'אין קבוצה להגדרה.';
+$lang['_msg_setting_no_default'] = 'אין ערך ברירת מחדל.';
+$lang['title']                 = 'כותרת הויקי';
+$lang['start']                 = 'שם דף הפתיחה';
+$lang['lang']                  = 'שפה';
+$lang['template']              = 'תבנית';
+$lang['savedir']               = 'ספריה לשמירת מידע';
+$lang['basedir']               = 'ספרית בסיס';
+$lang['baseurl']               = 'כתובת URL בסיסית';
+$lang['dmode']                 = 'מצב יצירת ספריה';
+$lang['fmode']                 = 'מצב יצירת קובץ';
+$lang['allowdebug']            = 'אפשר דיבוג <b>יש לבטל אם אין צורך!</b>';
+$lang['recent']                = 'שינויים אחרונים';
+$lang['recent_days']           = 'כמה שינויים אחרונים לשמור (ימים)';
+$lang['breadcrumbs']           = 'מספר עקבות להיסטוריה';
+$lang['youarehere']            = 'עקבות היררכיות להיסטוריה';
+$lang['fullpath']              = 'הצגת נתיב מלא לדפים בתחתית';
+$lang['typography']            = 'שימוש בחלופות טיפוגרפיות';
+$lang['dformat']               = 'תסדיר תאריך (נא לפנות לפונקציה <a href="http://php.net/strftime">strftime</a> של PHP)';
+$lang['signature']             = 'חתימה';
+$lang['toptoclevel']           = 'רמה עליונה בתוכן הענינים';
+$lang['maxtoclevel']           = 'רמה מירבית בתוכן הענינים';
+$lang['maxseclevel']           = 'רמה מירבית בעריכת קטעים';
+$lang['camelcase']             = 'השתמש בראשיות גדולות לקישורים';
+$lang['deaccent']              = 'נקה שמות דפים';
+$lang['useheading']            = 'השתמש בכותרת הראשונה לשם הדף';
+$lang['sneaky_index']          = 'כברירת מחדל, דוקוויקי יציג את כל מרחבי השמות בתצוגת תוכן הענינים. בחירה באפשרות זאת תסתיר את אלו שבהם למשתמש אין הרשאות קריאה. התוצאה עלולה להיות הסתרת תת מרחבי שמות אליהם יש למשתמש גישה. באופן זה תוכן הענינים עלול להפוך לחסר תועלת עם הגדרות ACL מסוימות';
+$lang['hidepages']             = 'הסתר דפים תואמים (ביטויים רגולריים)';
+$lang['useacl']                = 'השתמש ברשימות בקרת גישה';
+$lang['autopasswd']            = 'צור סיסמאות באופן אוטומטי';
+$lang['authtype']              = 'מנוע הזדהות';
+$lang['passcrypt']             = 'שיטת הצפנת סיסמאות';
+$lang['defaultgroup']          = 'קבוצת ברירת המחדל';
+$lang['superuser']             = 'משתמש-על';
+$lang['manager']               = 'מנהל - קבוצה, משתמש או רשימה מופרדת בפסיקים משתמש1, @קבוצה1, משתמש2 עם גישה לפעולות ניהול מסוימות.';
+$lang['profileconfirm']        = 'אשר שינוי פרופילים עם סיסמה';
+$lang['disableactions']        = 'בטל פעולות DokuWiki';
+$lang['disableactions_check']  = 'בדיקה';
+$lang['disableactions_subscription'] = 'הרשמה/הסרה מרשימה';
+$lang['disableactions_wikicode'] = 'הצגת המקור/יצוא גולמי';
+$lang['disableactions_other']  = 'פעולות אחרות (מופרדות בפסיק)';
+$lang['auth_security_timeout'] = 'מגבלת אבטח פסק הזמן להזדהות (שניות)';
+$lang['usewordblock']          = 'חסימת דואר זבל לפי רשימת מילים';
+$lang['relnofollow']           = 'השתמש ב- rel="nofollow" לקישורים חיצוניים';
+$lang['indexdelay']            = 'השהיה בטרם הכנסה לאינדקס (שניות)';
+$lang['mailguard']             = 'הגן על כתובות דוא"ל';
+$lang['iexssprotect']          = 'בדוק את הדפים המועלים לחשד ל-JavaScript או קוד HTML זדוני';
+$lang['usedraft']              = 'שמור טיוטות באופן אוטומטי בעת עריכה';
+$lang['htmlok']                = 'אישור שיבוץ HTML';
+$lang['phpok']                 = 'אישור שיבוץ PHP';
+$lang['locktime']              = 'גיל מירבי לקבצי נעילה (שניות)';
+$lang['cachetime']             = 'גיל מירבי לזכרון מטמון (שניות)';
+$lang['target____wiki']        = 'חלון יעד לקישורים פנימיים';
+$lang['target____interwiki']   = 'חלון יעד לקישורים בין מערכות ויקי';
+$lang['target____extern']      = 'חלון יעד לקישורים חיצוניים';
+$lang['target____media']       = 'חלון יעד לקישור למדיה';
+$lang['target____windows']     = 'חלון יעד לתיקיות משותפות';
+$lang['refcheck']              = 'בדוק שיוך מדיה';
+$lang['gdlib']                 = 'גרסת ספרית ה-GD';
+$lang['im_convert']            = 'נתיב לכלי ה-convert של ImageMagick';
+$lang['jpg_quality']           = 'איכות הדחיסה של JPG (0-100)';
+$lang['fetchsize']             = 'גודל הקובץ המירבי (bytes) ש-fetch.php יכול להוריד מבחוץ';
+$lang['subscribers']           = 'התר תמיכה ברישום לדפים';
+$lang['notify']                = 'שלח התראות על שינויים לכתובת דוא"ל זו';
+$lang['registernotify']        = 'שלח מידע על משתמשים רשומים חדשים לכתובת דוא"ל זו';
+$lang['mailfrom']              = 'כתובת הדוא"ל לשימוש בדברי דוא"ל אוטומטיים';
+$lang['sitemap']               = 'צור מפת אתר של Google (ימים)';
+$lang['rss_type']              = 'סוג פלט XML';
+$lang['rss_linkto']            = 'פלט ה-XML מקשר אל';
+$lang['rss_content']           = 'מה להציג בפרטי פלט ה-XML';
+$lang['rss_update']            = 'פלט ה-XML מתעדכן כל (שניות)';
+$lang['rss_show_summary']      = 'פלט ה-XML מציג תקציר בכותרת';
+$lang['updatecheck']           = 'בדיקת עידכוני אבטחה והתראות? על DokuWiki להתקשר אל update.dokuwiki.org לצורך כך.';
+$lang['userewrite']            = 'השתמש בכתובות URL יפות';
+$lang['useslash']              = 'השתמש בלוכסן להגדרת מרחבי שמות בכתובות';
+$lang['sepchar']               = 'מפריד בין מילות שם-דף';
+$lang['canonical']             = 'השתמש בכתובות URL מלאות';
+$lang['autoplural']            = 'בדוק לצורת רבים בקישורים';
+$lang['compression']           = 'אופן דחיסת קבצים ב-attic';
+$lang['gzip_output']           = 'השתמש בקידוד תוכן של gzip עבור xhtml';
+$lang['compress']              = 'פלט קומפקטי של CSS ו-javascript';
+$lang['send404']               = 'שלח "HTTP 404/Page Not Found" עבור דפים שאינם קיימים';
+$lang['broken_iua']            = 'האם הפעולה ignore_user_abort תקולה במערכת שלך? הדבר עלול להביא לתוכן חיפוש שאינו תקין. IIS+PHP/CGI ידוע כתקול. ראה את <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">באג 852</a> למידע נוסף';
+$lang['xsendfile']             = 'להשתמש בכותר X-Sendfile כדי לאפשר לשרת לספק קבצים סטטיים? על השרת שלך לתמוך באפשרות זאת.';
+$lang['renderer_xhtml']        = 'מחולל לשימוש עבור פלט הויקי העיקרי (xhtml)';
+$lang['renderer__core']        = '%s (ליבת דוקוויקי)';
+$lang['renderer__plugin']      = '%s (הרחבות)';
+$lang['proxy____host']         = 'שם השרת המתווך';
+$lang['proxy____port']         = 'שער השרת המתווך';
+$lang['proxy____user']         = 'שם המשתמש בשרת המתווך';
+$lang['proxy____pass']         = 'סיסמת ההשרת המתווך';
+$lang['proxy____ssl']          = 'השתמש ב-ssl כדי להתחבר לשרת המתווך';
+$lang['safemodehack']          = 'אפשר שימוש בפתרון ל-safemode';
+$lang['ftp____host']           = 'שרת FTP עבור פתרון ה-safemode';
+$lang['ftp____port']           = 'שער ה-FTP עבור פתרון ה-safemode';
+$lang['ftp____user']           = 'שם המשתמש ב-FTPעבור פתרון ה-safemode';
+$lang['ftp____pass']           = 'סיסמת ה-FTP לפתרון ה-safemode';
+$lang['ftp____root']           = 'ספרית השורש ב-FTP עבור פתרון ה-safemode';
+$lang['typography_o_0']        = 'ללא';
+$lang['typography_o_1']        = 'רק גרשיים כפולים';
+$lang['typography_o_2']        = 'כל הגרשים (עלול שלא לעבוד לעיתים)';
+$lang['userewrite_o_0']        = 'ללא';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'פנימי של DokuWiki';
+$lang['deaccent_o_0']          = 'כבוי';
+$lang['deaccent_o_1']          = 'הסר ניבים';
+$lang['deaccent_o_2']          = 'הסב ללטינית';
+$lang['gdlib_o_0']             = 'ספרית ה-GD אינה זמינה';
+$lang['gdlib_o_1']             = 'גרסה 1.x';
+$lang['gdlib_o_2']             = 'זיהוי אוטומטי';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'תקציר';
+$lang['rss_content_o_diff']    = 'הבדלים מאוחדים';
+$lang['rss_content_o_htmldiff'] = 'טבלת HTML של ההבדלים';
+$lang['rss_content_o_html']    = 'מלוא תוכן דף HTML';
+$lang['rss_linkto_o_diff']     = 'תצוגת הבדלים';
+$lang['rss_linkto_o_page']     = 'הדף שהשתנה';
+$lang['rss_linkto_o_rev']      = 'גרסאות קודמות';
+$lang['rss_linkto_o_current']  = 'הדף הנוכחי';
+$lang['compression_o_0']       = 'ללא';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'אל תשתמש';
+$lang['xsendfile_o_1']         = 'כותר lighttpd קנייני (לפני גרסה 1.5)';
+$lang['xsendfile_o_2']         = 'כותר X-Sendfile רגיל';
+$lang['xsendfile_o_3']         = 'כותר Nginx X-Accel-Redirect קנייני';
+$lang['useheading_o_navigation'] = 'ניווט בלבד';
+$lang['useheading_o_1']        = 'תמיד';
diff --git a/wiki/lib/plugins/config/lang/hi/lang.php b/wiki/lib/plugins/config/lang/hi/lang.php
new file mode 100644
index 0000000..a224fdf
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/hi/lang.php
@@ -0,0 +1,14 @@
+<?php
+/**
+ * Hindi language file
+ *
+ * @author Abhinav Tyagi <abhinavtyagi11@gmail.com>
+ * @author yndesai@gmail.com
+ */
+$lang['sepchar']               = 'पृष्ठ का नाम शब्द प्रथक्कर';
+$lang['sitemap']               = 'गूगल का सूचना पटल नक्शा बनायें (दिन)';
+$lang['license_o_']            = 'कुछ नहीं चुना';
+$lang['typography_o_0']        = 'कुछ नहीं';
+$lang['showuseras_o_username'] = 'उपयोगकर्ता का पूर्ण नाम';
+$lang['useheading_o_0']        = 'कभी नहीं';
+$lang['useheading_o_1']        = 'हमेशा';
diff --git a/wiki/lib/plugins/config/lang/hr/intro.txt b/wiki/lib/plugins/config/lang/hr/intro.txt
new file mode 100644
index 0000000..66ebdc0
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/hr/intro.txt
@@ -0,0 +1,7 @@
+====== Upravljanje postavkama ======
+
+Koristite ovu stranicu za upravljanje postavkama Vaše DokuWiki instalacije. Za pomoć o pojedinim postavkama pogledajte [[doku>config|konfiguraciju]]. Za više detalja o ovom dodatku pogledajte [[doku>plugin:config]].
+
+Postavke prikazane u svjetlo crvenoj pozadini su zaštićene i ne mogu biti mijenjane pomoću ovog dodatka. Postavke s plavom pozadinom sadrže inicijalno podrazumijevane vrijednosti, dok postavke s bijelom pozadinom sadrže korisnički postavljene vrijednosti. I plave i bijele postavke se mogu mijenjati.
+
+Zapamtite da pritisnete **Pohrani** gumb prije nego napustite ovu stranicu ili će izmjene biti izgubljene.
diff --git a/wiki/lib/plugins/config/lang/hr/lang.php b/wiki/lib/plugins/config/lang/hr/lang.php
new file mode 100644
index 0000000..d6f93b3
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/hr/lang.php
@@ -0,0 +1,210 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['menu']                  = 'Konfiguracijske postavke';
+$lang['error']                 = 'Postavke nisu ažurirane zbog neispravnih vrijednosti, molim provjerite vaše promjene i ponovo ih pohranite.
+                  <br />Neispravne vrijednosti biti će označene crvenim rubom.';
+$lang['updated']               = 'Postavke uspješno izmijenjene.';
+$lang['nochoice']              = '(ne postoje druge mogućnosti odabira)';
+$lang['locked']                = 'Postavke ne mogu biti izmijenjene, ako je to nenamjerno, <br />
+                       osigurajte da su ime datoteke lokalnih postavki i dozvole ispravni.';
+$lang['danger']                = 'Opasnost: Promjena ove opcije može učiniti nedostupnim Vaš wiki i izbornik upravljanja postavkama.';
+$lang['warning']               = 'Upozorenje: Izmjena ove opcije može izazvati neželjeno ponašanje.';
+$lang['security']              = 'Sigurnosno upozorenje: Izmjena ove opcije može izazvati sigurnosni rizik.';
+$lang['_configuration_manager'] = 'Upravljanje postavkama';
+$lang['_header_dokuwiki']      = 'DokuWiki';
+$lang['_header_plugin']        = 'Dodatak';
+$lang['_header_template']      = 'Predložak';
+$lang['_header_undefined']     = 'Nedefinirana postavka';
+$lang['_basic']                = 'Osnovno';
+$lang['_display']              = 'Prikaz';
+$lang['_authentication']       = 'Prijava';
+$lang['_anti_spam']            = 'Protu-Spam';
+$lang['_editing']              = 'Izmjena';
+$lang['_links']                = 'Prečaci';
+$lang['_media']                = 'Mediji';
+$lang['_notifications']        = 'Obavijesti';
+$lang['_syndication']          = 'RSS izvori';
+$lang['_advanced']             = 'Napredno';
+$lang['_network']              = 'Mreža';
+$lang['_msg_setting_undefined'] = 'Nema postavke meta_podatka.';
+$lang['_msg_setting_no_class'] = 'Nema postavke klase.';
+$lang['_msg_setting_no_default'] = 'Nema podrazumijevane vrijednosti.';
+$lang['title']                 = 'Wiki naslov, odnosno naziv Vašeg wikija';
+$lang['start']                 = 'Naziv početne stranice u svakom imenskom prostoru';
+$lang['lang']                  = 'Jezik sučelja';
+$lang['template']              = 'Predložak, odnosno izgled wikija.';
+$lang['tagline']               = 'Opisni redak Wiki naslova (ako ga predložak podržava)';
+$lang['sidebar']               = 'Naziv bočne stranice (ako ga predložak podržava), prazno polje onemogućuje bočnu stranicu';
+$lang['license']               = 'Pod kojom licencom će sadržaj biti objavljen?';
+$lang['savedir']               = 'Pod-direktoriji gdje se pohranjuju podatci';
+$lang['basedir']               = 'Staza poslužitelja (npr. <code>/dokuwiki/</code>). Ostavite prazno za auto-detekciju.';
+$lang['baseurl']               = 'URL poslužitelja (npr. <code>http://www.yourserver.com</code>). Ostavite prazno za auto-detekciju.';
+$lang['cookiedir']             = 'Staza za kolačiće. Ostavite prazno za bazni URL.';
+$lang['dmode']                 = 'Mod kreiranja diretorija';
+$lang['fmode']                 = 'Mod kreiranja datoteka';
+$lang['allowdebug']            = 'Omogući uklanjanje pogrešaka. <b>Onemogiućiti ako nije potrebno!</b>';
+$lang['recent']                = 'Broj unosa po stranici na nedavnim promjenama';
+$lang['recent_days']           = 'Koliko nedavnih promjena da se čuva (dani)';
+$lang['breadcrumbs']           = 'Broj nedavnih stranica koji se prikazuje. Postavite na 0 da biste onemogućili.';
+$lang['youarehere']            = 'Prikaži hijerarhijsku stazu stranice (tada vjerojatno želite onemogućiti gornju opciju)';
+$lang['fullpath']              = 'Prikaži punu putanju u podnožju stranice';
+$lang['typography']            = 'Napravi tipografske zamjene';
+$lang['dformat']               = 'Format datuma (pogledajte PHP <a href="http://php.net/strftime">strftime</a> funkciju)';
+$lang['signature']             = 'Što  ubacuje gumb potpisa u uređivaču';
+$lang['showuseras']            = 'Što da prikažem za korisnika koji je napravio zadnju izmjenu';
+$lang['toptoclevel']           = 'Najviši nivo za sadržaj stranice';
+$lang['tocminheads']           = 'Minimalni broj naslova koji određuje da li će biti prikazan sadržaj stranice';
+$lang['maxtoclevel']           = 'Maksimalni broj nivoa u sadržaju stranice';
+$lang['maxseclevel']           = 'Maksimalni nivo do kojeg se omogućuje izmjena dijela stranice';
+$lang['camelcase']             = 'Koristi CamelCase za poveznice (veliko početno slovo svake riječi)';
+$lang['deaccent']              = 'Kako se pročišćuje naziv stranice';
+$lang['useheading']            = 'Koristi prvi naslov za naziv stranice';
+$lang['sneaky_index']          = 'Inicijalno DokuWiki će prikazati sve imenske prostore u site mapi. Omogućavanjem ove opcije biti će sakriveni oni za koje korisnik nema barem pravo čitanja. Ovo može rezultirati skrivanjem podimenskih prostora koji su inače pristupačni, što može indeks učiniti nekorisnim pod određenim postavkama ACL-a.';
+$lang['hidepages']             = 'Kod potrage mape stranica i drugih automatskih indeksa ne prikazuj stranice koje zadovoljavaju ovaj regularni izraz';
+$lang['useacl']                = 'Koristi kontrolnu listu pristupa';
+$lang['autopasswd']            = 'Auto-generiranje lozinki';
+$lang['authtype']              = 'Mehanizam za identificiranje korisnika';
+$lang['passcrypt']             = 'Metoda šifriranja lozinki';
+$lang['defaultgroup']          = 'Osnovna grupa';
+$lang['superuser']             = 'Superuser - grupa, korisnik ili zarezom odvojena lista  (npr. korisnik1,@grupa1,korisnik2) s punim pravom pristupa svim stranicama i funkcionalnostima neovisno o ACL postavkama';
+$lang['manager']               = 'Manager - grupa, korisnik ili zarezom odvojena lista  (npr. korisnik1,@grupa1,korisnik2) s pristupom određenim upravljačkim funkcijama';
+$lang['profileconfirm']        = 'Potvrdi promjene profila sa lozinkom';
+$lang['rememberme']            = 'Omogući trajne kolačiće za prijavu (zapamti me)';
+$lang['disableactions']        = 'Onemogući određene DokuWiki aktivnosti';
+$lang['disableactions_check']  = 'Provjeri';
+$lang['disableactions_subscription'] = 'Pretplati/Odjavi';
+$lang['disableactions_wikicode'] = 'Vidi izvorni kod/Izvezi sirovi oblik';
+$lang['disableactions_profile_delete'] = 'Obriši svog korisnika';
+$lang['disableactions_other']  = 'Ostale aktivnosti (odvojene zarezom)';
+$lang['disableactions_rss']    = 'XML Syndication (RSS)';
+$lang['auth_security_timeout'] = 'Vremenski limit za prijavu (sekunde)';
+$lang['securecookie']          = 'Da li će kolačići poslani HTTPS-om biti poslani HTTPS-om od strane preglednika? Onemogući ovu opciju kada je samo prijava osigurana SSL-om a ne i pristup stranicama.';
+$lang['remote']                = 'Omogući udaljeni API. Ovo omogućava drugim aplikacijama pristup wikiju korištenjem XML-RPC i drugih mehanizama.';
+$lang['remoteuser']            = 'Ograniči pristup udaljenom API-u samo korisnicima i grupama navedenim ovdje u listi odvojenoj zarezom. Ostavi prazno za pristup omogućen svima.';
+$lang['usewordblock']          = 'Zaustavi spam baziran na listi riječi';
+$lang['relnofollow']           = 'Koristi rel="nofollow" na vanjskim poveznicama';
+$lang['indexdelay']            = 'Čekanje prije indeksiranja (sek.)';
+$lang['mailguard']             = 'Prikrivanje e-mail adresa';
+$lang['iexssprotect']          = 'Provjeri učitane datoteke za potencijalno maliciozni JavaScript ili HTML kod';
+$lang['usedraft']              = 'Automatski pohrani nacrte promjena tijekom uređivanja';
+$lang['htmlok']                = 'Omogući ugrađeni HTML';
+$lang['phpok']                 = 'Omogući ugrađeni PHP';
+$lang['locktime']              = 'Maksimalna trajanje zaključavanja (sek.)';
+$lang['cachetime']             = 'Maksimalno trajanje priručne pohrane (sek.)';
+$lang['target____wiki']        = 'Odredišni prozor za interne poveznice';
+$lang['target____interwiki']   = 'Odredišni prozor za interwiki poveznice';
+$lang['target____extern']      = 'Odredišni prozor za vanjske poveznice';
+$lang['target____media']       = 'Odredišni prozor za medijske poveznice';
+$lang['target____windows']     = 'Odredišni prozor za windows poveznice';
+$lang['mediarevisions']        = 'Omogućiti revizije medijskih datoteka?';
+$lang['refcheck']              = 'Provjeri prije brisanja da li se medijska datoteka još uvijek koristi';
+$lang['gdlib']                 = 'Inačica GD Lib';
+$lang['im_convert']            = 'Staza do ImageMagick\'s konverzijskog alata';
+$lang['jpg_quality']           = 'Kvaliteta kompresije JPG-a (0-100)';
+$lang['fetchsize']             = 'Maksimalna veličina (bajtovi) koju fetch.php može učitati iz vanjskih URL-ova. npr. za pohranu i promjenu veličine vanjskih slika.';
+$lang['subscribers']           = 'Omogući korisnicima preplatu na promjene preko e-pošte';
+$lang['subscribe_time']        = 'Vrijeme (sek.) nakon kojeg se šalju pretplatne liste. Trebalo bi biti manje od od vremena navedenog u recent_days parametru.';
+$lang['notify']                = 'Uvijek šalji obavijesti o promjenama na ovu adresu epošte';
+$lang['registernotify']        = 'Uvijek šalji obavijesti o novo-kreiranim korisnicima na ovu adresu epošte';
+$lang['mailfrom']              = 'Adresa pošiljatelja epošte koja se koristi pri slanju automatskih poruka';
+$lang['mailreturnpath']        = 'Adresa e-pošte primatelja za obavijesti o ne-isporuci';
+$lang['mailprefix']            = 'Prefiks predmeta poruke kod automatskih poruka. Ostaviti prazno za korištenje naslova wikija';
+$lang['htmlmail']              = 'Šalji ljepše, ali i veće poruke u HTML obliku. Onemogući za slanje poruka kao običan tekst.';
+$lang['sitemap']               = 'Generiraj Google mapu stranica svakih (dana). 0 za onemogućivanje';
+$lang['rss_type']              = 'tip XML feed-a';
+$lang['rss_linkto']            = 'XML feed povezuje na';
+$lang['rss_content']           = 'Što da se prikazuje u stavkama XML feed-a?';
+$lang['rss_update']            = 'Interval obnavljanja XML feed-a (sek.)';
+$lang['rss_show_summary']      = 'Prikaz sažetka u naslovu XML feed-a';
+$lang['rss_media']             = 'Koje vrste promjena trebaju biti prikazane u XML feed-u?';
+$lang['rss_media_o_both']      = 'oboje';
+$lang['rss_media_o_pages']     = 'stranice';
+$lang['rss_media_o_media']     = 'medij';
+$lang['updatecheck']           = 'Provjera za nadogradnje i sigurnosna upozorenja? DokuWiki treba imati pristup do dokuwiki.org za ovo.';
+$lang['userewrite']            = 'Koristi jednostavne URL-ove';
+$lang['useslash']              = 'Koristi kosu crtu kao separator imenskih prostora u URL-ovima';
+$lang['sepchar']               = 'Separator riječi u nazivu stranice';
+$lang['canonical']             = 'Uvije koristi puni kanonski oblik URL-ova (puna apsolutna staza)';
+$lang['fnencode']              = 'Metoda kodiranja ne-ASCII imena datoteka.';
+$lang['autoplural']            = 'Provjera izraza u množini u poveznicama';
+$lang['compression']           = 'Vrsta kompresije za pohranu attic datoteka';
+$lang['gzip_output']           = 'Koristi gzip Content-Encoding za xhtml';
+$lang['compress']              = 'Sažmi CSS i javascript izlaz';
+$lang['cssdatauri']            = 'Veličina u bajtovima do koje slike navedene u CSS datotekama će biti ugrađene u stylesheet kako bi se smanjilo prekoračenje zaglavlja HTTP zathjeva . <code>400</code> do <code>600</code> bajtova je dobra vrijednost. Postavi <code>0</code> za onemogućavanje.';
+$lang['send404']               = 'Pošalji "HTTP 404/Page Not Found" za nepostojeće stranice';
+$lang['broken_iua']            = 'Da li je ignore_user_abort funkcija neispravna na vašem sustavu? Ovo može izazvati neispravan indeks pretrage. IIS+PHP/CGI je poznat po neispravnosti. Pogledaj <a href="http://bugs.dokuwiki.org/?do=details&amp;task_id=852">Bug 852</a> za više informacija.';
+$lang['xsendfile']             = 'Koristi X-Sendfile zaglavlje da se dopusti web poslužitelj dostavu statičkih datoteka? Vaš web poslužitelj ovo mora podržavati.';
+$lang['renderer_xhtml']        = 'Mehanizam koji se koristi za slaganje osnovnog (xhtml) wiki izlaza';
+$lang['renderer__core']        = '%s (dokuwiki jezgra)';
+$lang['renderer__plugin']      = '%s (dodatak)';
+$lang['search_nslimit']        = 'Ograniči potragu na trenutnih X imenskih prostora. Kada se potraga izvrši s strane unutar dubljeg imenskog prostora, prvih X imenskih prostora će biti dodano u filtar';
+$lang['search_fragment']       = 'Odredi podrazumijevani način djelomične pretrage';
+$lang['search_fragment_o_exact'] = 'identično';
+$lang['search_fragment_o_starts_with'] = 'počinje s';
+$lang['search_fragment_o_ends_with'] = 'završava s';
+$lang['search_fragment_o_contains'] = 'sadrži';
+$lang['dnslookups']            = 'Da li da DokuWiki potraži ime računala za udaljenu IP adresu korisnik koji je izmijenio stranicu. Ako imate spor ili neispravan DNS server, nemojte koristiti ovu funkcionalnost, onemogućite ovu opciju';
+$lang['jquerycdn']             = 'Da li da se jQuery i jQuery UI script datoteke učitavaju sa CDN? To proizvodi dodatne HTTP zahtjeve, ali datoteke se mogu brže učitati i korisnici ih već mogu imati učitane u od ranije.';
+$lang['jquerycdn_o_0']         = 'Bez CDN, samo lokalna dostava';
+$lang['jquerycdn_o_jquery']    = 'CDN na code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN na cdnjs.com';
+$lang['proxy____host']         = 'Proxy poslužitelj - adresa';
+$lang['proxy____port']         = 'Proxy poslužitelj - port';
+$lang['proxy____user']         = 'Proxy poslužitelj - korisničko ime';
+$lang['proxy____pass']         = 'Proxy poslužitelj - lozinka';
+$lang['proxy____ssl']          = 'Koristi SSL za vezu prema proxy poslužitelju';
+$lang['proxy____except']       = 'Preskoči proxy za URL-ove koji odgovaraju ovom regularnom izrazu.';
+$lang['safemodehack']          = 'Omogući safemode hack';
+$lang['ftp____host']           = 'FTP poslužitelj za safemode hack';
+$lang['ftp____port']           = 'FTP port za safemode hack';
+$lang['ftp____user']           = 'FTP korisničko ime za safemode hack';
+$lang['ftp____pass']           = 'FTP lozinka za safemode hack';
+$lang['ftp____root']           = 'FTP root direktorij za safemode hack';
+$lang['license_o_']            = 'Ništa odabrano';
+$lang['typography_o_0']        = 'ništa';
+$lang['typography_o_1']        = 'isključivši jednostruke navodnike';
+$lang['typography_o_2']        = 'uključivši jednostruke navodnike (ne mora uvijek raditi)';
+$lang['userewrite_o_0']        = 'ništa';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki interno';
+$lang['deaccent_o_0']          = 'isključeno';
+$lang['deaccent_o_1']          = 'ukloni akcente';
+$lang['deaccent_o_2']          = 'romanizacija';
+$lang['gdlib_o_0']             = 'GD Lib nije dostupna';
+$lang['gdlib_o_1']             = 'Inačica 1.x';
+$lang['gdlib_o_2']             = 'Autodetekcija';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Sažetak';
+$lang['rss_content_o_diff']    = 'Unificirani Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formatirana diff tabela';
+$lang['rss_content_o_html']    = 'Puni HTML sadržaj stranice';
+$lang['rss_linkto_o_diff']     = 'pregled razlika';
+$lang['rss_linkto_o_page']     = 'izmijenjena stranica';
+$lang['rss_linkto_o_rev']      = 'lista izmjena';
+$lang['rss_linkto_o_current']  = 'tekuća stranica';
+$lang['compression_o_0']       = 'ništa';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ne koristi';
+$lang['xsendfile_o_1']         = 'Posebno lighttpd zaglavlje (prije inačice 1.5)';
+$lang['xsendfile_o_2']         = 'Standardno X-Sendfile zaglavlje';
+$lang['xsendfile_o_3']         = 'Posebno Nginx X-Accel-Redirect zaglavlje';
+$lang['showuseras_o_loginname'] = 'Korisničko ime';
+$lang['showuseras_o_username'] = 'Puno ime korisnika';
+$lang['showuseras_o_username_link'] = 'Puno ime korisnika kao interwiki poveznica';
+$lang['showuseras_o_email']    = 'Korisnikova adresa epošte (prikrivanje prema mailguard postavci)';
+$lang['showuseras_o_email_link'] = 'Korisnikova adresa epošte kao mailto: poveznica';
+$lang['useheading_o_0']        = 'Nikad';
+$lang['useheading_o_navigation'] = 'Samo navigacija';
+$lang['useheading_o_content']  = 'Samo wiki sadržaj';
+$lang['useheading_o_1']        = 'Uvijek';
+$lang['readdircache']          = 'Maksimalna starost za readdir međuspremnik (sek.)';
diff --git a/wiki/lib/plugins/config/lang/hu/intro.txt b/wiki/lib/plugins/config/lang/hu/intro.txt
new file mode 100644
index 0000000..b6b9149
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/hu/intro.txt
@@ -0,0 +1,9 @@
+====== Beállító központ ======
+
+Ezzel az oldallal finomhangolhatod a DokuWiki rendszeredet. Az egyes beállításokhoz [[doku>config|itt]] kaphatsz segítséget. A bővítmények (pluginek) beállításaihoz [[doku>plugin:config|ezt]] az oldalt látogasd meg.
+
+A világospiros hátterű beállítások védettek, ezzel a bővítménnyel nem módosíthatóak.
+
+A kék hátterű beállítások az alapértelmezett értékek, a fehér hátterűek módosítva lettek ebben a rendszerben. Mindkét hátterű beállítások módosíthatóak.
+
+Ne felejtsd a **Mentés** gombot megnyomni, mielőtt elhagyod az oldalt, különben a módosításaid elvesznek!
diff --git a/wiki/lib/plugins/config/lang/hu/lang.php b/wiki/lib/plugins/config/lang/hu/lang.php
new file mode 100644
index 0000000..972a731
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/hu/lang.php
@@ -0,0 +1,202 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sandor TIHANYI <stihanyi+dw@gmail.com>
+ * @author Siaynoq Mage <siaynoqmage@gmail.com>
+ * @author schilling.janos@gmail.com
+ * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
+ * @author Sándor TIHANYI <stihanyi+dw@gmail.com>
+ * @author David Szabo <szabo.david@gyumolcstarhely.hu>
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['menu']                  = 'Beállítóközpont';
+$lang['error']                 = 'Helytelen érték miatt a módosítások nem mentődtek. Nézd át a módosításokat, és ments újra.
+<br />A helytelen érték(ek)et piros kerettel jelöljük.';
+$lang['updated']               = 'A módosítások sikeresen beállítva.';
+$lang['nochoice']              = '(nincs egyéb lehetőség)';
+$lang['locked']                = 'A beállításokat tartalmazó fájlt nem tudtam frissíteni.<br />
+Nézd meg, hogy a fájl neve és jogosultságai helyesen vannak-e beállítva!';
+$lang['danger']                = 'Figyelem: ezt a beállítást megváltoztatva a konfigurációs menü hozzáférhetetlenné válhat.';
+$lang['warning']               = 'Figyelmeztetés: a beállítás megváltoztatása nem kívánt viselkedést okozhat.';
+$lang['security']              = 'Biztonsági figyelmeztetés: a beállítás megváltoztatása biztonsági veszélyforrást okozhat.';
+$lang['_configuration_manager'] = 'Beállítóközpont';
+$lang['_header_dokuwiki']      = 'DokuWiki beállítások';
+$lang['_header_plugin']        = 'Bővítmények beállításai';
+$lang['_header_template']      = 'Sablon beállítások';
+$lang['_header_undefined']     = 'Nem definiált értékek';
+$lang['_basic']                = 'Alap beállítások';
+$lang['_display']              = 'Megjelenítés beállításai';
+$lang['_authentication']       = 'Azonosítás beállításai';
+$lang['_anti_spam']            = 'Anti-Spam beállítások';
+$lang['_editing']              = 'Szerkesztési beállítások';
+$lang['_links']                = 'Link beállítások';
+$lang['_media']                = 'Média beállítások';
+$lang['_notifications']        = 'Értesítési beállítások';
+$lang['_syndication']          = 'Hírfolyam beállítások';
+$lang['_advanced']             = 'Haladó beállítások';
+$lang['_network']              = 'Hálózati beállítások';
+$lang['_msg_setting_undefined'] = 'Nincs beállított metaadat.';
+$lang['_msg_setting_no_class'] = 'Nincs beállított osztály.';
+$lang['_msg_setting_no_default'] = 'Nincs alapértelmezett érték.';
+$lang['title']                 = 'Wiki neve';
+$lang['start']                 = 'Kezdőoldal neve';
+$lang['lang']                  = 'Nyelv';
+$lang['template']              = 'Sablon';
+$lang['tagline']               = 'Lábléc (ha a sablon támogatja)';
+$lang['sidebar']               = 'Oldalsáv oldal neve (ha a sablon támogatja), az üres mező letiltja az oldalsáv megjelenítését';
+$lang['license']               = 'Milyen licenc alatt érhető el a tartalom?';
+$lang['savedir']               = 'Könyvtár az adatok mentésére';
+$lang['basedir']               = 'Báziskönyvtár (pl. <code>/dokuwiki/</code>). Hagyd üresen az automatikus beállításhoz!';
+$lang['baseurl']               = 'Báziscím (pl. <code>http://www.yourserver.com</code>). Hagyd üresen az automatikus beállításhoz!';
+$lang['cookiedir']             = 'Sütik címe. Hagy üresen a báziscím használatához!';
+$lang['dmode']                 = 'Könyvtár létrehozási maszk';
+$lang['fmode']                 = 'Fájl létrehozási maszk';
+$lang['allowdebug']            = 'Debug üzemmód <b>Kapcsold ki, hacsak biztos nem szükséges!</b>';
+$lang['recent']                = 'Utolsó változatok száma';
+$lang['recent_days']           = 'Hány napig tartsuk meg a korábbi változatokat?';
+$lang['breadcrumbs']           = 'Nyomvonal elemszám';
+$lang['youarehere']            = 'Hierarchikus nyomvonal';
+$lang['fullpath']              = 'Az oldalak teljes útvonalának mutatása a láblécben';
+$lang['typography']            = 'Legyen-e tipográfiai csere';
+$lang['dformat']               = 'Dátum formázás (lásd a PHP <a href="http://php.net/strftime">strftime</a> függvényt)';
+$lang['signature']             = 'Aláírás';
+$lang['showuseras']            = 'A felhasználó melyik adatát mutassunk az utolsó változtatás adatainál?';
+$lang['toptoclevel']           = 'A tartalomjegyzék felső szintje';
+$lang['tocminheads']           = 'Legalább ennyi címsor hatására generálódjon tartalomjegyzék';
+$lang['maxtoclevel']           = 'A tartalomjegyzék mélysége';
+$lang['maxseclevel']           = 'A szakasz-szerkesztés maximális szintje';
+$lang['camelcase']             = 'CamelCase használata hivatkozásként';
+$lang['deaccent']              = 'Oldalnevek ékezettelenítése';
+$lang['useheading']            = 'Az első fejléc legyen az oldalnév';
+$lang['sneaky_index']          = 'Alapértelmezetten minden névtér látszik a DokuWiki áttekintő (index) oldalán. Ezen opció bekapcsolása után azok nem jelennek meg, melyekhez a felhasználónak nincs olvasás joga. De ezzel eltakarhatunk egyébként elérhető al-névtereket is, így bizonyos ACL beállításoknál használhatatlan indexet eredményez ez a beállítás.';
+$lang['hidepages']             = 'Az itt megadott oldalak elrejtése (reguláris kifejezés)';
+$lang['useacl']                = 'Hozzáférési listák (ACL) használata';
+$lang['autopasswd']            = 'Jelszavak automatikus generálása';
+$lang['authtype']              = 'Authentikációs háttérrendszer';
+$lang['passcrypt']             = 'Jelszó titkosítási módszer';
+$lang['defaultgroup']          = 'Alapértelmezett csoport';
+$lang['superuser']             = 'Adminisztrátor - csoport vagy felhasználó, aki teljes hozzáférési joggal rendelkezik az oldalakhoz és funkciókhoz, a hozzáférési jogosultságoktól függetlenül';
+$lang['manager']               = 'Menedzser - csoport vagy felhasználó, aki bizonyos menedzsment funkciókhoz hozzáfér';
+$lang['profileconfirm']        = 'Beállítások változtatásának megerősítése jelszóval';
+$lang['rememberme']            = 'Állandó sütik engedélyezése (az "emlékezz rám" funkcióhoz)';
+$lang['disableactions']        = 'Bizonyos DokuWiki tevékenységek (action) tiltása';
+$lang['disableactions_check']  = 'Ellenőrzés';
+$lang['disableactions_subscription'] = 'Feliratkozás/Leiratkozás';
+$lang['disableactions_wikicode'] = 'Forrás megtekintése/Nyers adat exportja';
+$lang['disableactions_profile_delete'] = 'Saját felhasználó törlése';
+$lang['disableactions_other']  = 'Egyéb tevékenységek (vesszővel elválasztva)';
+$lang['disableactions_rss']    = 'XML hírfolyam (RSS)';
+$lang['auth_security_timeout'] = 'Authentikációs biztonsági időablak (másodperc)';
+$lang['securecookie']          = 'A böngészők a HTTPS felett beállított sütijüket csak HTTPS felett küldhetik? Kapcsoljuk ki ezt az opciót, ha csak a bejelentkezést védjük SSL-lel, a wiki tartalmának böngészése nyílt forgalommal történik.';
+$lang['remote']                = 'Távoli API engedélyezése. Ezzel más alkalmazások XML-RPC-n keresztül hozzáférhetnek a wikihez.';
+$lang['remoteuser']            = 'A távoli API hozzáférés korlátozása a következő felhasználókra vagy csoportokra. Hagyd üresen, ha mindenki számára elérhető!';
+$lang['usewordblock']          = 'Szólista alapú spam-szűrés';
+$lang['relnofollow']           = 'rel="nofollow" beállítás használata külső hivatkozásokra';
+$lang['indexdelay']            = 'Várakozás indexelés előtt (másodperc)';
+$lang['mailguard']             = 'Email címek olvashatatlanná tétele címgyűjtők számára';
+$lang['iexssprotect']          = 'Feltöltött fájlok ellenőrzése kártékony JavaScript vagy HTML kód elkerülésére';
+$lang['usedraft']              = 'Piszkozat automatikus mentése szerkesztés alatt';
+$lang['htmlok']                = 'Beágyazott HTML engedélyezése';
+$lang['phpok']                 = 'Beágyazott PHP engedélyezése';
+$lang['locktime']              = 'Oldal-zárolás maximális időtartama (másodperc)';
+$lang['cachetime']             = 'A gyorsítótár maximális élettartama (másodperc)';
+$lang['target____wiki']        = 'Cél-ablak belső hivatkozásokhoz';
+$lang['target____interwiki']   = 'Cél-ablak interwiki hivatkozásokhoz';
+$lang['target____extern']      = 'Cél-ablak külső hivatkozásokhoz';
+$lang['target____media']       = 'Cél-ablak média-fájl hivatkozásokhoz';
+$lang['target____windows']     = 'Cél-ablak Windows hivatkozásokhoz';
+$lang['mediarevisions']        = 'Médiafájlok verziókövetésének engedélyezése';
+$lang['refcheck']              = 'Médiafájlok hivatkozásainak ellenőrzése';
+$lang['gdlib']                 = 'GD Lib verzió';
+$lang['im_convert']            = 'Útvonal az ImageMagick csomag convert parancsához';
+$lang['jpg_quality']           = 'JPG tömörítés minősége (0-100)';
+$lang['fetchsize']             = 'Maximális méret (bájtban), amit a fetch.php letölthet kívülről';
+$lang['subscribers']           = 'Oldalváltozás-listára feliratkozás engedélyezése';
+$lang['subscribe_time']        = 'Az értesítések kiküldésének késleltetése (másodperc); Érdemes kisebbet választani, mint a változások megőrzésének maximális ideje.';
+$lang['notify']                = 'Az oldal-változásokat erre az e-mail címre küldje';
+$lang['registernotify']        = 'Értesítés egy újonnan regisztrált felhasználóról erre az e-mail címre';
+$lang['mailfrom']              = 'Az automatikusan küldött levelekben használt e-mail cím';
+$lang['mailprefix']            = 'Előtag az automatikus e-mailek tárgyában';
+$lang['htmlmail']              = 'Szebb, de nagyobb méretű HTML multipart e-mailek küldése. Tiltsd le a nyers szöveges üzenetekhez!';
+$lang['sitemap']               = 'Hány naponként generáljunk Google sitemap-ot?';
+$lang['rss_type']              = 'XML hírfolyam típus';
+$lang['rss_linkto']            = 'XML hírfolyam hivatkozás';
+$lang['rss_content']           = 'Mit mutassunk az XML hírfolyam elemekben?';
+$lang['rss_update']            = 'Hány másodpercenként frissítsük az XML hírfolyamot?';
+$lang['rss_show_summary']      = 'A hírfolyam címébe összefoglaló helyezése';
+$lang['rss_media']             = 'Milyen változások legyenek felsorolva az XML hírfolyamban?';
+$lang['updatecheck']           = 'Frissítések és biztonsági figyelmeztetések figyelése. Ehhez a DokuWikinek kapcsolatba kell lépnie a update.dokuwiki.org-gal.';
+$lang['userewrite']            = 'Szép URL-ek használata';
+$lang['useslash']              = 'Per-jel használata névtér-elválasztóként az URL-ekben';
+$lang['sepchar']               = 'Szó elválasztó az oldalnevekben';
+$lang['canonical']             = 'Teljesen kanonikus URL-ek használata';
+$lang['fnencode']              = 'A nem ASCII fájlnevek dekódolási módja';
+$lang['autoplural']            = 'Többes szám ellenőrzés a hivatkozásokban (angol)';
+$lang['compression']           = 'Tömörítés használata a törölt lapokhoz';
+$lang['gzip_output']           = 'gzip tömörítés használata xhtml-hez (Content-Encoding)';
+$lang['compress']              = 'CSS és JavaScript fájlok tömörítése';
+$lang['cssdatauri']            = 'Mérethatár bájtokban, ami alatti CSS-ben hivatkozott fájlok közvetlenül beágyazódjanak a stíluslapba. <code>400</code>-<code>600</code> bájt ideális érték. Állítsd <code>0</code>-ra a beágyazás kikapcsolásához!';
+$lang['send404']               = '"HTTP 404/Page Not Found" küldése nemlétező oldalak esetén';
+$lang['broken_iua']            = 'Az ignore_user_abort függvény hibát dob a rendszereden? Ez nem működő keresési indexet eredményezhet. Az IIS+PHP/CGI összeállításról tudjuk, hogy hibát dob. Lásd a <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> oldalt a további infóért.';
+$lang['xsendfile']             = 'Használjuk az X-Sendfile fejlécet, hogy a webszerver statikus állományokat tudjon küldeni? A webszervernek is támogatnia kell ezt a funkciót.';
+$lang['renderer_xhtml']        = 'Az elsődleges (xhtml) wiki kimenet generálója';
+$lang['renderer__core']        = '%s (dokuwiki mag)';
+$lang['renderer__plugin']      = '%s (bővítmény)';
+$lang['dnslookups']            = 'A DokuWiki megpróbál hosztneveket keresni a távoli IP-címekhez. Amennyiben lassú, vagy nem működő DNS-szervered van vagy csak nem szeretnéd ezt a funkciót, tiltsd le ezt az opciót!';
+$lang['proxy____host']         = 'Proxy-szerver neve';
+$lang['proxy____port']         = 'Proxy port';
+$lang['proxy____user']         = 'Proxy felhasználó név';
+$lang['proxy____pass']         = 'Proxy jelszó';
+$lang['proxy____ssl']          = 'SSL használata a proxyhoz csatlakozáskor';
+$lang['proxy____except']       = 'URL szabály azokra a webcímekre, amit szeretnél, hogy ne kezeljen a proxy.';
+$lang['safemodehack']          = 'A PHP safemode beállítás megkerülésének engedélyezése';
+$lang['ftp____host']           = 'FTP szerver a safemode megkerüléshez';
+$lang['ftp____port']           = 'FTP port a safemode megkerüléshez';
+$lang['ftp____user']           = 'FTP felhasználó név a safemode megkerüléshez';
+$lang['ftp____pass']           = 'FTP jelszó a safemode megkerüléshez';
+$lang['ftp____root']           = 'FTP gyökérkönyvtár a safemode megkerüléshez';
+$lang['license_o_']            = 'Nincs kiválasztva';
+$lang['typography_o_0']        = 'nem';
+$lang['typography_o_1']        = 'Csak a dupla idézőjelet';
+$lang['typography_o_2']        = 'Minden idézőjelet (előfordulhat, hogy nem mindig működik)';
+$lang['userewrite_o_0']        = 'nem';
+$lang['userewrite_o_1']        = '.htaccess-szel';
+$lang['userewrite_o_2']        = 'DokuWiki saját módszerével';
+$lang['deaccent_o_0']          = 'kikapcsolva';
+$lang['deaccent_o_1']          = 'ékezetek eltávolítása';
+$lang['deaccent_o_2']          = 'távirati stílus';
+$lang['gdlib_o_0']             = 'GD Lib nem elérhető';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'Auto felismerés';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Kivonat';
+$lang['rss_content_o_diff']    = 'Unified diff formátum';
+$lang['rss_content_o_htmldiff'] = 'HTML formázott változás tábla';
+$lang['rss_content_o_html']    = 'Teljes HTML oldal tartalom';
+$lang['rss_linkto_o_diff']     = 'a változás nézetre';
+$lang['rss_linkto_o_page']     = 'az átdolgozott oldalra';
+$lang['rss_linkto_o_rev']      = 'a változatok listájára';
+$lang['rss_linkto_o_current']  = 'a jelenlegi oldalra';
+$lang['compression_o_0']       = 'nincs tömörítés';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nincs használatban';
+$lang['xsendfile_o_1']         = 'Lighttpd saját fejléc (1.5-ös verzió előtti)';
+$lang['xsendfile_o_2']         = 'Standard X-Sendfile fejléc';
+$lang['xsendfile_o_3']         = 'Nginx saját X-Accel-Redirect fejléce';
+$lang['showuseras_o_loginname'] = 'Azonosító';
+$lang['showuseras_o_username'] = 'Teljes név';
+$lang['showuseras_o_username_link'] = 'A felhasználó teljes neve belső wiki-hivatkozásként';
+$lang['showuseras_o_email']    = 'E-mail cím (olvashatatlanná téve az e-mailcím védelem beállítása szerint)';
+$lang['showuseras_o_email_link'] = 'E-mail cím mailto: linkként';
+$lang['useheading_o_0']        = 'Soha';
+$lang['useheading_o_navigation'] = 'Csak navigációhoz';
+$lang['useheading_o_content']  = 'Csak Wiki tartalomhoz';
+$lang['useheading_o_1']        = 'Mindig';
+$lang['readdircache']          = 'A könyvtár olvasás gyorsítótárának maximális tárolási ideje (másodperc)';
diff --git a/wiki/lib/plugins/config/lang/ia/intro.txt b/wiki/lib/plugins/config/lang/ia/intro.txt
new file mode 100644
index 0000000..eb2e105
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ia/intro.txt
@@ -0,0 +1,7 @@
+====== Gestion de configurationes ======
+
+Usa iste pagina pro controlar le configurationes de tu installation de DokuWiki. Pro adjuta re configurationes individual, refere te a [[doku>config]].
+
+Le configurationes monstrate super un fundo rubie clar es protegite e non pote esser alterate con iste plug-in. Le configurationes monstrate super un fundo blau es le valores predefinite e le configurationes monstrate super un fundo blanc ha essite definite localmente pro iste particular installation. Le configurationes blau e blanc pote esser alterate.
+
+Rememora de premer le button **SALVEGUARDAR** ante de quitar iste pagina, alteremente tu modificationes essera perdite.
diff --git a/wiki/lib/plugins/config/lang/ia/lang.php b/wiki/lib/plugins/config/lang/ia/lang.php
new file mode 100644
index 0000000..511d081
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ia/lang.php
@@ -0,0 +1,175 @@
+<?php
+/**
+ * Interlingua language file
+ *
+ * @author robocap <robocap1@gmail.com>
+ * @author Martijn Dekker <martijn@inlv.org>
+ */
+$lang['menu']                  = 'Configurationes';
+$lang['error']                 = 'Le configurationes non poteva esser actualisate a causa de un valor invalide; per favor revide tu cambiamentos e resubmitte los.<br />Le valor(es) incorrecte essera monstrate circumferite per un bordo rubie.';
+$lang['updated']               = 'Actualisation del configurationes succedite.';
+$lang['nochoice']              = '(nulle altere option disponibile)';
+$lang['locked']                = 'Le file de configuration non pote esser actualisate; si isto non es intentional, <br /> assecura te que le nomine e permissiones del file local de configuration es correcte.';
+$lang['danger']                = 'Periculo: Cambiar iste option pote render tu wiki e le menu de configuration inaccessibile!';
+$lang['warning']               = 'Attention: Cambiar iste option pote causar functionamento indesirate.';
+$lang['security']              = 'Advertimento de securitate: Cambiar iste option pote causar un risco de securitate.';
+$lang['_configuration_manager'] = 'Gestion de configurationes';
+$lang['_header_dokuwiki']      = 'Configurationes de DokuWiki';
+$lang['_header_plugin']        = 'Configurationes de plug-ins';
+$lang['_header_template']      = 'Configurationes de patronos';
+$lang['_header_undefined']     = 'Configurationes non definite';
+$lang['_basic']                = 'Configurationes de base';
+$lang['_display']              = 'Configurationes de visualisation';
+$lang['_authentication']       = 'Configurationes de authentication';
+$lang['_anti_spam']            = 'Configurationes anti-spam';
+$lang['_editing']              = 'Configurationes de modification';
+$lang['_links']                = 'Configurationes de ligamines';
+$lang['_media']                = 'Configurationes de multimedia';
+$lang['_advanced']             = 'Configurationes avantiate';
+$lang['_network']              = 'Configurationes de rete';
+$lang['_msg_setting_undefined'] = 'Nulle metadatos de configuration.';
+$lang['_msg_setting_no_class'] = 'Nulle classe de configuration.';
+$lang['_msg_setting_no_default'] = 'Nulle valor predefinite.';
+$lang['fmode']                 = 'Permissiones al creation de files';
+$lang['dmode']                 = 'Permissiones al creation de directorios';
+$lang['lang']                  = 'Lingua del interfacie';
+$lang['basedir']               = 'Cammino al servitor (p.ex.. <code>/dokuwiki/</code>). Lassa vacue pro autodetection.';
+$lang['baseurl']               = 'URL del servitor (p.ex. <code>http://www.yourserver.com</code>). Lassa vacue pro autodetection.';
+$lang['savedir']               = 'Directorio pro salveguardar datos';
+$lang['start']                 = 'Nomine del pagina initial';
+$lang['title']                 = 'Titulo del wiki';
+$lang['template']              = 'Patrono';
+$lang['license']               = 'Sub qual licentia debe tu contento esser publicate?';
+$lang['fullpath']              = 'Revelar le cammino complete del paginas in le pede';
+$lang['recent']                = 'Modificationes recente';
+$lang['breadcrumbs']           = 'Numero de micas de pan';
+$lang['youarehere']            = 'Micas de pan hierarchic';
+$lang['typography']            = 'Face substitutiones typographic';
+$lang['htmlok']                = 'Permitter incorporation de HTML';
+$lang['phpok']                 = 'Permitter incorporation de PHP';
+$lang['dformat']               = 'Formato del datas (vide le function <a href="http://php.net/strftime">strftime</a> de PHP)';
+$lang['signature']             = 'Signatura';
+$lang['toptoclevel']           = 'Nivello principal pro tabula de contento';
+$lang['tocminheads']           = 'Numero minimal de titulos requirite pro inserer tabula de contento';
+$lang['maxtoclevel']           = 'Nivello maximal pro tabula de contento';
+$lang['maxseclevel']           = 'Nivello maximal pro modification de sectiones';
+$lang['camelcase']             = 'Usar CamelCase pro ligamines';
+$lang['deaccent']              = 'Nomines nette de paginas';
+$lang['useheading']            = 'Usar le prime titulo como nomine de pagina';
+$lang['refcheck']              = 'Verification de referentias multimedia';
+$lang['allowdebug']            = 'Permitter debugging <b>disactiva si non necessari!</b>';
+$lang['usewordblock']          = 'Blocar spam a base de lista de parolas';
+$lang['indexdelay']            = 'Retardo ante generation de indice (secundas)';
+$lang['relnofollow']           = 'Usar rel="nofollow" pro ligamines externe';
+$lang['mailguard']             = 'Offuscar adresses de e-mail';
+$lang['iexssprotect']          = 'Verificar files incargate pro codice HTML o JavaScript possibilemente malitiose';
+$lang['showuseras']            = 'Como monstrar le usator que faceva le ultime modification de un pagina';
+$lang['useacl']                = 'Usar listas de controlo de accesso';
+$lang['autopasswd']            = 'Automaticamente generar contrasignos';
+$lang['authtype']              = 'Servicio de authentication';
+$lang['passcrypt']             = 'Methodo de cryptographia de contrasignos';
+$lang['defaultgroup']          = 'Gruppo predefinite';
+$lang['superuser']             = 'Superusator: le gruppo, usator o lista separate per commas ("usator1,@gruppo1,usator2") con accesso integral a tote le paginas e functiones sin reguardo del ACL';
+$lang['manager']               = 'Administrator: le gruppo, usator o lista separate per commas ("usator1,@gruppo1,usator2") con accesso a certe functiones administrative';
+$lang['profileconfirm']        = 'Confirmar modificationes del profilo con contrasigno';
+$lang['disableactions']        = 'Disactivar actiones DokuWiki';
+$lang['disableactions_check']  = 'Verificar';
+$lang['disableactions_subscription'] = 'Subscriber/Cancellar subscription';
+$lang['disableactions_wikicode'] = 'Vider codice-fonte/Exportar texto crude';
+$lang['disableactions_other']  = 'Altere actiones (separate per commas)';
+$lang['sneaky_index']          = 'Normalmente, DokuWiki monstra tote le spatios de nomines in le vista del indice. Si iste option es active, illos ubi le usator non ha le permission de lectura essera celate. Isto pote resultar in le celamento de subspatios de nomines accessibile. Isto pote render le indice inusabile con certe configurationes de ACL.';
+$lang['auth_security_timeout'] = 'Expiration pro securitate de authentication (secundas)';
+$lang['securecookie']          = 'Debe le cookies definite via HTTPS solmente esser inviate via HTTPS per le navigator? Disactiva iste option si solmente le apertura de sessiones a tu wiki es protegite con SSL ma le navigation del wiki es facite sin securitate.';
+$lang['updatecheck']           = 'Verificar si existe actualisationes e advertimentos de securitate? DokuWiki debe contactar update.dokuwiki.org pro exequer iste function.';
+$lang['userewrite']            = 'Usar URLs nette';
+$lang['useslash']              = 'Usar le barra oblique ("/") como separator de spatios de nomines in URLs';
+$lang['usedraft']              = 'Automaticamente salveguardar un version provisori durante le modification';
+$lang['sepchar']               = 'Separator de parolas in nomines de paginas';
+$lang['canonical']             = 'Usar URLs completemente canonic';
+$lang['autoplural']            = 'Verificar si il ha formas plural in ligamines';
+$lang['compression']           = 'Methodo de compression pro files a mansarda';
+$lang['cachetime']             = 'Etate maximal pro le cache (secundas)';
+$lang['locktime']              = 'Etate maximal pro le files de serratura (secundas)';
+$lang['fetchsize']             = 'Numero maximal de bytes per file que fetch.php pote discargar de sitos externe';
+$lang['notify']                = 'Inviar notificationes de cambios a iste adresse de e-mail';
+$lang['registernotify']        = 'Inviar informationes super usatores novemente registrate a iste adresse de e-mail';
+$lang['mailfrom']              = 'Adresse de e-mail a usar pro messages automatic';
+$lang['gzip_output']           = 'Usar Content-Encoding gzip pro xhtml';
+$lang['gdlib']                 = 'Version de GD Lib';
+$lang['im_convert']            = 'Cammino al programma "convert" de ImageMagick';
+$lang['jpg_quality']           = 'Qualitate del compression JPEG (0-100)';
+$lang['subscribers']           = 'Activar le possibilitate de subscriber se al paginas';
+$lang['subscribe_time']        = 'Tempore post le qual le listas de subscription e le digestos es inviate (in secundas); isto debe esser minor que le tempore specificate in recent_days.';
+$lang['compress']              = 'Compactar le output CSS e JavaScript';
+$lang['hidepages']             = 'Celar paginas correspondente (expressiones regular)';
+$lang['send404']               = 'Inviar "HTTP 404/Pagina non trovate" pro paginas non existente';
+$lang['sitemap']               = 'Generar mappa de sito Google (dies)';
+$lang['broken_iua']            = 'Es le function ignore_user_abort defectuose in tu systema? Isto pote resultar in un indice de recerca que non functiona. Vide <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> pro plus info.';
+$lang['xsendfile']             = 'Usar le capite X-Sendfile pro lassar le servitor web livrar files static? Tu navigator del web debe supportar isto.';
+$lang['renderer_xhtml']        = 'Renditor a usar pro le output wiki principal (xhtml)';
+$lang['renderer__core']        = '%s (nucleo dokuwiki)';
+$lang['renderer__plugin']      = '%s (plug-in)';
+$lang['rememberme']            = 'Permitter cookies de session permanente (memorar me)';
+$lang['rss_type']              = 'Typo de syndication XML';
+$lang['rss_linkto']            = 'Syndication XML liga verso';
+$lang['rss_content']           = 'Que monstrar in le entratas de syndication XML?';
+$lang['rss_update']            = 'Intervallo de actualisation pro syndicationes XML (secundas)';
+$lang['recent_days']           = 'Retener quante modificationes recente? (dies)';
+$lang['rss_show_summary']      = 'Monstrar summario in titulo de syndication XML';
+$lang['target____wiki']        = 'Fenestra de destination pro ligamines interne';
+$lang['target____interwiki']   = 'Fenestra de destination pro ligamines interwiki';
+$lang['target____extern']      = 'Fenestra de destination pro ligamines externe';
+$lang['target____media']       = 'Fenestra de destination pro ligamines multimedia';
+$lang['target____windows']     = 'Fenestra de destination pro ligamines a fenestras';
+$lang['proxy____host']         = 'Nomine de servitor proxy';
+$lang['proxy____port']         = 'Porto del proxy';
+$lang['proxy____user']         = 'Nomine de usator pro le proxy';
+$lang['proxy____pass']         = 'Contrasigno pro le proxy';
+$lang['proxy____ssl']          = 'Usar SSL pro connecter al proxy';
+$lang['safemodehack']          = 'Permitter truco de modo secur';
+$lang['ftp____host']           = 'Servitor FTP pro truco de modo secur';
+$lang['ftp____port']           = 'Porto FTP pro truco de modo secur';
+$lang['ftp____user']           = 'Nomine de usator FTP pro truco de modo secur';
+$lang['ftp____pass']           = 'Contrasigno FTP pro truco de modo secur';
+$lang['ftp____root']           = 'Directorio radice FTP pro truco de modo securr';
+$lang['license_o_']            = 'Nihil seligite';
+$lang['typography_o_0']        = 'nulle';
+$lang['typography_o_1']        = 'excludente ';
+$lang['typography_o_2']        = 'includente virgulettas singule (pote non sempre functionar)';
+$lang['userewrite_o_0']        = 'nulle';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'interne a DokuWIki';
+$lang['deaccent_o_0']          = 'disactivate';
+$lang['deaccent_o_1']          = 'remover accentos';
+$lang['deaccent_o_2']          = 'romanisar';
+$lang['gdlib_o_0']             = 'GD Lib non disponibile';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'Autodetection';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstracte';
+$lang['rss_content_o_diff']    = 'In formato Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'Tabella de diff in formato HTML';
+$lang['rss_content_o_html']    = 'Contento complete del pagina in HTML';
+$lang['rss_linkto_o_diff']     = 'vista de differentias';
+$lang['rss_linkto_o_page']     = 'le pagina revidite';
+$lang['rss_linkto_o_rev']      = 'lista de versiones';
+$lang['rss_linkto_o_current']  = 'le pagina actual';
+$lang['compression_o_0']       = 'nulle';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'non usar';
+$lang['xsendfile_o_1']         = 'Capite proprietari "lighttpd" (ante version 1.5)';
+$lang['xsendfile_o_2']         = 'Capite standard "X-Sendfile"';
+$lang['xsendfile_o_3']         = 'Capite proprietari "X-Accel-Redirect" de Nginx';
+$lang['showuseras_o_loginname'] = 'Nomine de usator';
+$lang['showuseras_o_username'] = 'Nomine real del usator';
+$lang['showuseras_o_email']    = 'Adresse de e-mail del usator (offuscate secundo le configuration de Mailguard)';
+$lang['showuseras_o_email_link'] = 'Adresse de e-mail del usator como ligamine "mailto:"';
+$lang['useheading_o_0']        = 'Nunquam';
+$lang['useheading_o_navigation'] = 'Navigation solmente';
+$lang['useheading_o_content']  = 'Contento wiki solmente';
+$lang['useheading_o_1']        = 'Sempre';
diff --git a/wiki/lib/plugins/config/lang/id-ni/intro.txt b/wiki/lib/plugins/config/lang/id-ni/intro.txt
new file mode 100644
index 0000000..cd77caa
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/id-ni/intro.txt
@@ -0,0 +1,7 @@
+====== Fakake famöfö'ö ======
+
+Plugin da'e itolo ba wangehaogö fakake moroi ba DokuWiki. Fanolo bawamöfö'ö tesöndra tou [[doku>config]]. Lala wangiila Plugin tanöbö'ö tesöndra tou ba [[doku>plugin:config]].
+
+Famöfö'ö zura furi la'a soyo no laproteksi, lötesöndra bakha ba Plugin andre. Famöfö'ö zura furi la'a sobalau ya'ia wamöfö'ö sito'ölö...
+
+Böi olifu ndra'ugö ba wofetugö **Irö'ö** fatua lö öröi fakake wamöfö'ö soguna bawangirö'ö wamöfö'ö safuria.
diff --git a/wiki/lib/plugins/config/lang/id-ni/lang.php b/wiki/lib/plugins/config/lang/id-ni/lang.php
new file mode 100644
index 0000000..7b7e14c
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/id-ni/lang.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * idni language file
+ *
+ * @author Harefa <fidelis@harefa.com>
+ * @author Yustinus Waruwu <juswaruwu@gmail.com>
+ */
+$lang['renderer_xhtml']        = 'Fake Renderer ba zito\'ölö (XHTML) Wiki-output.';
+$lang['renderer__core']        = '%s (dokuwiki core)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['rss_type']              = 'Tipe XML feed';
+$lang['rss_linkto']            = 'XML feed links khö';
+$lang['rss_content']           = 'Hadia wangoromaö nifake ba XML-Feed?';
+$lang['rss_update']            = 'XML feed (sec) inötö wamohouni';
+$lang['recent_days']           = 'Hawa\'oya laforoma\'ö moroi bazibohou? (Hari)';
+$lang['rss_show_summary']      = 'XML feed foromaö summary ba title';
+$lang['target____wiki']        = 'Lala window ba internal links';
+$lang['target____interwiki']   = 'Lala window ba interwiki links';
+$lang['target____extern']      = 'Lala window ba external links';
+$lang['target____media']       = 'Lala window ba media links';
+$lang['target____windows']     = 'Lala window ba windows links';
+$lang['proxy____host']         = 'Töi server proxy';
+$lang['proxy____port']         = 'Port proxy';
+$lang['proxy____user']         = 'Töi proxy';
+$lang['proxy____pass']         = 'Kode proxy';
+$lang['proxy____ssl']          = 'Fake ssl ba connect awö Proxy';
+$lang['safemodehack']          = 'Orifi safemode hack';
+$lang['ftp____host']           = 'FTP server khö safemode hack';
+$lang['ftp____port']           = 'FTP port khö safemode hack';
+$lang['ftp____user']           = 'Töi FTP khö safemode hack';
+$lang['ftp____pass']           = 'FTP kode khö safemode hack';
+$lang['ftp____root']           = 'FTP root directory for safemode hack';
+$lang['typography_o_0']        = 'lö\'ö';
+$lang['typography_o_1']        = 'Ha sitombua kutip';
+$lang['typography_o_2']        = 'Fefu nikutip (itataria lömohalöwö)';
+$lang['userewrite_o_0']        = 'lö\'ö';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki bakha';
+$lang['deaccent_o_0']          = 'ofolai';
+$lang['deaccent_o_1']          = 'heta aksen';
+$lang['deaccent_o_2']          = 'romanize';
+$lang['gdlib_o_0']             = 'GD Lib lötesöndra';
+$lang['gdlib_o_1']             = 'Versi 1.x';
+$lang['gdlib_o_2']             = 'Otomatis';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstrak';
+$lang['rss_content_o_diff']    = 'Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formatted diff table';
+$lang['rss_content_o_html']    = 'Fefu HTML format diff table';
+$lang['rss_linkto_o_diff']     = 'foromaö difference';
+$lang['rss_linkto_o_page']     = 'Refisi nga\'örö';
+$lang['rss_linkto_o_rev']      = 'Daftar nihaogö';
+$lang['rss_linkto_o_current']  = 'Nga\'örö safuria';
+$lang['compression_o_0']       = 'Lö\'ö';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'böi fake';
+$lang['xsendfile_o_1']         = 'Proprieteri lighttpd Header (furi Release 1.5)';
+$lang['xsendfile_o_2']         = 'Standar X-Sendfile header';
+$lang['xsendfile_o_3']         = 'Proprieteri Nginx X-Accel-Redirect header';
+$lang['showuseras_o_loginname'] = 'Töi';
+$lang['showuseras_o_username'] = 'Töi safönu';
+$lang['showuseras_o_email']    = 'Fake döi imele (obfuscated according to mailguard setting)';
+$lang['showuseras_o_email_link'] = 'Fake döi imele sifao mailto: link';
diff --git a/wiki/lib/plugins/config/lang/id/intro.txt b/wiki/lib/plugins/config/lang/id/intro.txt
new file mode 100644
index 0000000..296206d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/id/intro.txt
@@ -0,0 +1,5 @@
+====== Manajemen Konfigurasi ======
+
+Gunakan halaman ini untuk mengatur konfigurasi instalasi DokuWiki Anda. Untuk bantuan dalam konfigurasi, silahkan lihat di [[doku>config]]. Unuk mengetahui lebih lanjut tentang plugin in silahkan lihat [[doku>plugin:config]].
+
+Konfigurasi dengan warna merah dilindungi dan tidak bisa diubah dengan plugin ini. Konfigurasi dengan warna biru adalah nilai default, dan konfigurasi dengan latar putih telah diset khusus untuk instalasi ini. Konfigurasi berwarna putih atau b
diff --git a/wiki/lib/plugins/config/lang/is/lang.php b/wiki/lib/plugins/config/lang/is/lang.php
new file mode 100644
index 0000000..4f49446
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/is/lang.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Icelandic language file
+ *
+ * @author Hrannar Baldursson <hrannar.baldursson@gmail.com>
+ * @author Ólafur Gunnlaugsson <oli@audiotools.com>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ */
+$lang['menu']                  = 'Stillingar';
+$lang['error']                 = 'Stillingum ekki breitt þar sem rangar upplýsingar voru settar inn, vinsamlegast yfirfarið stillingar merktar með rauðu';
+$lang['updated']               = 'Stillingum breitt';
+$lang['nochoice']              = '(engir aðrir valmöguleikar fyrir hendi)';
+$lang['_display']              = 'Skjástillingar';
+$lang['_anti_spam']            = 'Stillingar gegn ruslpósti';
+$lang['_editing']              = 'Útgáfastillingar';
+$lang['lang']                  = 'Tungumál';
+$lang['title']                 = 'Heiti wikis';
+$lang['template']              = 'Mát';
+$lang['recent']                = 'Nýlegar breytingar';
+$lang['breadcrumbs']           = 'Fjöldi brauðmolar';
+$lang['youarehere']            = 'Stigveldisá brauðmolar';
+$lang['typography']            = 'Gera stað fyrir leturgerðir';
+$lang['htmlok']                = 'Fella HTML inn';
+$lang['phpok']                 = 'Fella PHP inn';
+$lang['dformat']               = 'Dagsetningarsnið (sjá PHP-aðgerð <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Undirskrift';
+$lang['passcrypt']             = 'Dulritunaraðferð aðgangsorðs';
+$lang['defaultgroup']          = 'Sjálfgefinn hópur';
+$lang['superuser']             = 'Hópur kerfisstjóra ';
+$lang['profileconfirm']        = 'Staðfestu breytingar með aðgangsorði';
+$lang['mailfrom']              = 'Rafpóstfang fyrir sjálfvirkar póstsendingar';
+$lang['gdlib']                 = 'Útgáfa af GD Lib';
+$lang['jpg_quality']           = 'JPG gæðastilling (0-100)';
+$lang['proxy____host']         = 'Heiti staðgengilsþjóns';
+$lang['proxy____port']         = 'Staðgengilstengi';
+$lang['proxy____user']         = 'Staðgengill notendanafn';
+$lang['proxy____pass']         = 'Staðgengilsaðgangsorð';
+$lang['proxy____ssl']          = 'Nýta SSL til að tengjast staðgengill';
+$lang['license_o_']            = 'Ekkert valið';
+$lang['typography_o_0']        = 'engin';
+$lang['userewrite_o_0']        = 'engin';
+$lang['deaccent_o_0']          = 'slökkt';
+$lang['deaccent_o_1']          = 'fjarlægja broddi';
+$lang['deaccent_o_2']          = 'gera rómverskt';
+$lang['gdlib_o_0']             = 'GD Lib ekki til staðar';
+$lang['gdlib_o_1']             = 'Útgáfa 1,x';
+$lang['gdlib_o_2']             = 'Sjálfvirk leit';
+$lang['rss_type_o_rss']        = 'RSS 0,91';
+$lang['rss_type_o_rss1']       = 'RSS 1,0';
+$lang['rss_type_o_rss2']       = 'RSS 2,0';
+$lang['rss_type_o_atom']       = 'Atom 0,3';
+$lang['rss_type_o_atom1']      = 'Atom 1,0';
+$lang['compression_o_0']       = 'engin';
+$lang['showuseras_o_loginname'] = 'Innskránafn';
+$lang['showuseras_o_username'] = 'Fullt notendanafn';
+$lang['useheading_o_0']        = 'Aldrei';
+$lang['useheading_o_1']        = 'Alltaf';
diff --git a/wiki/lib/plugins/config/lang/it/intro.txt b/wiki/lib/plugins/config/lang/it/intro.txt
new file mode 100644
index 0000000..02984ba
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/it/intro.txt
@@ -0,0 +1,7 @@
+====== Configurazione Wiki ======
+
+Usa questa pagina per gestire la configurazione della tua installazione DokuWiki. Per la guida sulle singole impostazioni fai riferimento alla pagina [[doku>config|Configurazione]]. Per ulteriori dettagli su questo plugin vedi [[doku>plugin:config|Plugin di configurazione]].
+
+Le impostazioni con lo sfondo rosso chiaro sono protette e non possono essere modificate con questo plugin. Le impostazioni con lo sfondo blu contengono i valori predefiniti, e le impostazioni con lo sfondo bianco sono relative solo a questa particolare installazione. Sia le impostazioni su sfondo blu che quelle su sfondo bianco possono essere modificate.
+
+Ricordati di premere il pulsante **SALVA** prima di lasciare questa pagina altrimenti le modifiche andranno perse.
diff --git a/wiki/lib/plugins/config/lang/it/lang.php b/wiki/lib/plugins/config/lang/it/lang.php
new file mode 100644
index 0000000..9e9ece4
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/it/lang.php
@@ -0,0 +1,214 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author damiano <damiano@spagnuolo.eu>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @author Silvia Sargentoni <polinnia@tin.it>
+ * @author Pietro Battiston <toobaz@email.it>
+ * @author Lorenzo Breda <lbreda@gmail.com>
+ * @author robocap <robocap1@gmail.com>
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ * @author Riccardo <riccardofila@gmail.com>
+ * @author Paolo <paolopoz12@gmail.com>
+ */
+$lang['menu']                  = 'Configurazione Wiki';
+$lang['error']                 = 'Impostazioni non aggiornate a causa di un valore non corretto, controlla le modifiche apportate e salva di nuovo.
+<br />I valori non corretti sono evidenziati da un riquadro rosso.';
+$lang['updated']               = 'Aggiornamento impostazioni riuscito.';
+$lang['nochoice']              = '(nessun\'altra scelta disponibile)';
+$lang['locked']                = 'Il file di configurazione non può essere aggiornato, se questo non è intenzionale, <br />
+assicurati che il nome e i permessi del file contenente la configurazione locale siano corretti.';
+$lang['danger']                = 'Attenzione: cambiare questa opzione può rendere inaccessibile il wiki e il menu di configurazione.';
+$lang['warning']               = 'Avviso: cambiare questa opzione può causare comportamenti indesiderati.';
+$lang['security']              = 'Avviso di sicurezza: vambiare questa opzione può esporre a rischi di sicurezza.';
+$lang['_configuration_manager'] = 'Configurazione Wiki';
+$lang['_header_dokuwiki']      = 'Impostazioni DokuWiki';
+$lang['_header_plugin']        = 'Impostazioni Plugin';
+$lang['_header_template']      = 'Impostazioni Modello';
+$lang['_header_undefined']     = 'Impostazioni non definite';
+$lang['_basic']                = 'Impostazioni Base';
+$lang['_display']              = 'Impostazioni Visualizzazione';
+$lang['_authentication']       = 'Impostazioni Autenticazione';
+$lang['_anti_spam']            = 'Impostazioni Anti-Spam';
+$lang['_editing']              = 'Impostazioni Modifica';
+$lang['_links']                = 'Impostazioni Collegamenti';
+$lang['_media']                = 'Impostazioni File';
+$lang['_notifications']        = 'Impostazioni di notifica';
+$lang['_syndication']          = 'Impostazioni di collaborazione';
+$lang['_advanced']             = 'Impostazioni Avanzate';
+$lang['_network']              = 'Impostazioni Rete';
+$lang['_msg_setting_undefined'] = 'Nessun metadato definito.';
+$lang['_msg_setting_no_class'] = 'Nessuna classe definita.';
+$lang['_msg_setting_no_default'] = 'Nessun valore predefinito.';
+$lang['title']                 = 'Titolo del wiki';
+$lang['start']                 = 'Nome della pagina iniziale';
+$lang['lang']                  = 'Lingua';
+$lang['template']              = 'Modello';
+$lang['tagline']               = 'Tagline (se il template lo supporta)';
+$lang['sidebar']               = 'Nome pagina in barra laterale (se il template lo supporta), il campo vuoto disabilita la barra laterale';
+$lang['license']               = 'Sotto quale licenza vorresti rilasciare il tuo contenuto?';
+$lang['savedir']               = 'Directory per il salvataggio dei dati';
+$lang['basedir']               = 'Directory di base';
+$lang['baseurl']               = 'URL di base';
+$lang['cookiedir']             = 'Percorso cookie. Lascia in bianco per usare baseurl.';
+$lang['dmode']                 = 'Permessi per le nuove directory';
+$lang['fmode']                 = 'Permessi per i nuovi file';
+$lang['allowdebug']            = 'Abilita il debug <b>(disabilitare se non serve!)</b>';
+$lang['recent']                = 'Ultime modifiche';
+$lang['recent_days']           = 'Quante modifiche recenti tenere (giorni)';
+$lang['breadcrumbs']           = 'Numero di breadcrumb';
+$lang['youarehere']            = 'Breadcrumb gerarchici';
+$lang['fullpath']              = 'Mostra il percorso completo delle pagine';
+$lang['typography']            = 'Abilita la sostituzione tipografica';
+$lang['dformat']               = 'Formato delle date (vedi la funzione <a href="http://php.net/strftime">strftime</a> di PHP)';
+$lang['signature']             = 'Firma';
+$lang['showuseras']            = 'Cosa visualizzare quando si mostra l\'ultimo utente che ha modificato una pagina';
+$lang['toptoclevel']           = 'Livello superiore per l\'indice';
+$lang['tocminheads']           = 'Ammontare minimo di intestazioni che determinano la creazione del TOC';
+$lang['maxtoclevel']           = 'Numero massimo di livelli per l\'indice';
+$lang['maxseclevel']           = 'Livello massimo per le sezioni modificabili';
+$lang['camelcase']             = 'Usa CamelCase per i collegamenti';
+$lang['deaccent']              = 'Pulizia dei nomi di pagina';
+$lang['useheading']            = 'Usa la prima intestazione come nome di pagina';
+$lang['sneaky_index']          = 'Normalmente, DokuWiki mostra tutte le categorie nella vista indice. Abilitando questa opzione, saranno nascoste quelle per cui l\'utente non ha il permesso in lettura. Questo potrebbe far sì che alcune sottocategorie accessibili siano nascoste. La pagina indice potrebbe quindi diventare inutilizzabile con alcune configurazioni dell\'ACL.';
+$lang['hidepages']             = 'Nascondi le pagine che soddisfano la condizione (inserire un\'espressione regolare)';
+$lang['useacl']                = 'Usa lista di controllo accessi (ACL)';
+$lang['autopasswd']            = 'Genera password in automatico';
+$lang['authtype']              = 'Sistema di autenticazione';
+$lang['passcrypt']             = 'Metodo di cifratura password';
+$lang['defaultgroup']          = 'Gruppo predefinito';
+$lang['superuser']             = 'Amministratore - gruppo, utente o elenco di utenti separati da virgole (user1,@group1,user2) con accesso completo a tutte le pagine e le funzioni che riguardano le  impostazioni ACL';
+$lang['manager']               = 'Gestore - gruppo, utente o elenco di utenti separati da virgole (user1,@group1,user2) con accesso a determinate funzioni di gestione';
+$lang['profileconfirm']        = 'Richiedi la password per modifiche al profilo';
+$lang['rememberme']            = 'Permetti i cookies di accesso permanenti (ricordami)';
+$lang['disableactions']        = 'Disabilita azioni DokuWiki';
+$lang['disableactions_check']  = 'Controlla';
+$lang['disableactions_subscription'] = 'Sottoscrivi/Rimuovi sottoscrizione';
+$lang['disableactions_wikicode'] = 'Mostra sorgente/Esporta Raw';
+$lang['disableactions_profile_delete'] = 'Elimina il proprio account';
+$lang['disableactions_other']  = 'Altre azioni (separate da virgola)';
+$lang['disableactions_rss']    = 'XML Syndication (RSS)';
+$lang['auth_security_timeout'] = 'Tempo di sicurezza per l\'autenticazione (secondi)';
+$lang['securecookie']          = 'Devono i cookies impostati tramite HTTPS essere inviati al browser solo tramite HTTPS? Disattiva questa opzione solo quando l\'accesso al tuo wiki viene effettuato con il protocollo SSL ma la navigazione del wiki non risulta sicura.';
+$lang['remote']                = 'Abilita il sistema di API remoto. Questo permette ad altre applicazioni di accedere al wiki tramite XML-RPC o altri meccanismi.';
+$lang['remoteuser']            = 'Restringi l\'accesso dell\'aPI remota ai gruppi o utenti qui specificati separati da virgola. Lascia vuoto per dare accesso a chiunque.';
+$lang['usewordblock']          = 'Blocca lo spam in base alla blacklist';
+$lang['relnofollow']           = 'Usa rel="nofollow" nei collegamenti esterni';
+$lang['indexdelay']            = 'Intervallo di tempo prima dell\'indicizzazione';
+$lang['mailguard']             = 'Oscuramento indirizzi email';
+$lang['iexssprotect']          = 'Controlla i file caricati in cerca di possibile codice JavaScript o HTML maligno.';
+$lang['usedraft']              = 'Salva una bozza in automatico in fase di modifica';
+$lang['htmlok']                = 'Consenti HTML incorporato';
+$lang['phpok']                 = 'Consenti PHP incorporato';
+$lang['locktime']              = 'Durata dei file di lock (sec)';
+$lang['cachetime']             = 'Durata della cache (sec)';
+$lang['target____wiki']        = 'Finestra di destinazione per i collegamenti interni';
+$lang['target____interwiki']   = 'Finestra di destinazione per i collegamenti interwiki';
+$lang['target____extern']      = 'Finestra di destinazione per i collegamenti esterni';
+$lang['target____media']       = 'Finestra di destinazione per i collegamenti ai file';
+$lang['target____windows']     = 'Finestra di destinazione per i collegamenti alle risorse condivise';
+$lang['mediarevisions']        = 'Abilita Mediarevisions?';
+$lang['refcheck']              = 'Controlla i riferimenti ai file';
+$lang['gdlib']                 = 'Versione GD Lib ';
+$lang['im_convert']            = 'Percorso per il convertitore di ImageMagick';
+$lang['jpg_quality']           = 'Qualità di compressione JPG (0-100)';
+$lang['fetchsize']             = 'Dimensione massima (bytes) scaricabile da fetch.php da extern';
+$lang['subscribers']           = 'Permetti agli utenti la sottoscrizione alle modifiche delle pagine via e-mail';
+$lang['subscribe_time']        = 'Tempo dopo il quale le liste di sottoscrizione e i riassunti vengono inviati (sec); Dovrebbe essere inferiore al tempo specificato in recent_days.';
+$lang['notify']                = 'Invia notifiche sulle modifiche a questo indirizzo';
+$lang['registernotify']        = 'Invia informazioni sui nuovi utenti registrati a questo indirizzo email';
+$lang['mailfrom']              = 'Mittente per le mail automatiche';
+$lang['mailreturnpath']        = 'Indirizzo email destinatario per notifica di mancati recapiti';
+$lang['mailprefix']            = 'Prefisso da inserire nell\'oggetto delle mail automatiche';
+$lang['htmlmail']              = 'Invia email HTML multipart più gradevoli ma più ingombranti in dimensione. Disabilita per mail in puro testo.';
+$lang['sitemap']               = 'Genera una sitemap Google (giorni)';
+$lang['rss_type']              = 'Tipo di feed XML';
+$lang['rss_linkto']            = 'Collega i feed XML a';
+$lang['rss_content']           = 'Cosa mostrare negli elementi dei feed XML?';
+$lang['rss_update']            = 'Intervallo di aggiornamento dei feed XML (sec)';
+$lang['rss_show_summary']      = 'I feed XML riportano un sommario nel titolo';
+$lang['rss_media']             = 'Quale tipo di cambiamento dovrebbe essere elencato nel feed XML?';
+$lang['rss_media_o_both']      = 'entrambi';
+$lang['rss_media_o_pages']     = 'pagine';
+$lang['rss_media_o_media']     = 'media';
+$lang['updatecheck']           = 'Controllare aggiornamenti e avvisi di sicurezza? DokuWiki deve contattare update.dokuwiki.org per questa funzione.';
+$lang['userewrite']            = 'Usa il rewrite delle URL';
+$lang['useslash']              = 'Usa la barra rovescia (slash) come separatore nelle URL';
+$lang['sepchar']               = 'Separatore di parole nei nomi di pagina';
+$lang['canonical']             = 'Usa URL canoniche';
+$lang['fnencode']              = 'Metodo per codificare i filenames non-ASCII.';
+$lang['autoplural']            = 'Controlla il plurale nei collegamenti';
+$lang['compression']           = 'Usa la compressione per i file dell\'archivio';
+$lang['gzip_output']           = 'Usa il Content-Encoding gzip per xhtml';
+$lang['compress']              = 'Comprimi i file CSS e javascript';
+$lang['cssdatauri']            = 'Dimensione massima in byte di un\'immagine che può essere integrata nel CSS per ridurre l\'overhead delle richieste HTTP. Da <code>400</code> a <code>600</code> bytes è un buon valore. Impostare a <code>0</code> per disabilitare.';
+$lang['send404']               = 'Invia "HTTP 404/Pagina non trovata" per le pagine inesistenti';
+$lang['broken_iua']            = 'La funzione ignore_user_abort non funziona sul tuo sistema? Questo potrebbe far sì che l\'indice di ricerca sia inutilizzabile. È noto che nella configurazione IIS+PHP/CGI non funziona. Vedi il<a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> per maggiori informazioni.';
+$lang['xsendfile']             = 'Usare l\'header X-Sendfile per permettere al webserver di fornire file statici? Questa funzione deve essere supportata dal tuo webserver.';
+$lang['renderer_xhtml']        = 'Renderer da usare per la visualizzazione del wiki (xhtml)';
+$lang['renderer__core']        = '%s (dokuwiki)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['dnslookups']            = 'Dokuwiki farà il lookup dei nomi host per ricavare l\'indirizzo IP remoto degli utenti che modificano le pagine. Se hai un DNS lento o non funzionante o se non vuoi questa funzione, disabilita l\'opzione';
+$lang['jquerycdn']             = 'Vuoi che gli script jQuery e jQuery UI siano caricati da una CDN? Questo richiederà richieste HTTP aggiuntive ma i file potrebbero caricarsi più velocemente e gli utenti potrebbero averli già in cache.';
+$lang['jquerycdn_o_0']         = 'Nessuna CDN, solo consegna locale';
+$lang['jquerycdn_o_jquery']    = 'CDN presso code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN presso cdnjs.com';
+$lang['proxy____host']         = 'Nome server proxy';
+$lang['proxy____port']         = 'Porta proxy';
+$lang['proxy____user']         = 'Nome utente proxy';
+$lang['proxy____pass']         = 'Password proxy';
+$lang['proxy____ssl']          = 'Usa SSL per connetterti al proxy';
+$lang['proxy____except']       = 'Espressioni regolari per far corrispondere le URLs per i quali i proxy dovrebbero essere ommessi.';
+$lang['safemodehack']          = 'Abilita safemode hack';
+$lang['ftp____host']           = 'Server FTP per safemode hack';
+$lang['ftp____port']           = 'Porta FTP per safemode hack';
+$lang['ftp____user']           = 'Nome utente FTP per safemode hack';
+$lang['ftp____pass']           = 'Password FTP per safemode hack';
+$lang['ftp____root']           = 'Directory principale FTP per safemode hack';
+$lang['license_o_']            = 'Nessuna scelta';
+$lang['typography_o_0']        = 'nessuno';
+$lang['typography_o_1']        = 'Solo virgolette';
+$lang['typography_o_2']        = 'Tutti (potrebbe non funzionare sempre)';
+$lang['userewrite_o_0']        = 'nessuno';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki';
+$lang['deaccent_o_0']          = 'disabilitata';
+$lang['deaccent_o_1']          = 'rimuovi gli accenti';
+$lang['deaccent_o_2']          = 'romanizza';
+$lang['gdlib_o_0']             = 'GD Lib non disponibile';
+$lang['gdlib_o_1']             = 'Versione 1.x';
+$lang['gdlib_o_2']             = 'Rileva automaticamente';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Sunto';
+$lang['rss_content_o_diff']    = 'Diff unificata';
+$lang['rss_content_o_htmldiff'] = 'Tabella delle diff formattata HTML';
+$lang['rss_content_o_html']    = 'Tutto il contenuto della pagina in HTML';
+$lang['rss_linkto_o_diff']     = 'vista differenze';
+$lang['rss_linkto_o_page']     = 'pagina revisionata';
+$lang['rss_linkto_o_rev']      = 'elenco revisioni';
+$lang['rss_linkto_o_current']  = 'pagina attuale';
+$lang['compression_o_0']       = 'nessuna';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'non usare';
+$lang['xsendfile_o_1']         = 'Header proprietario lighttpd (prima della versione 1.5)';
+$lang['xsendfile_o_2']         = 'Header standard X-Sendfile';
+$lang['xsendfile_o_3']         = 'Header proprietario Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Nome utente';
+$lang['showuseras_o_username'] = 'Nome completo dell\'utente';
+$lang['showuseras_o_username_link'] = 'Nome completo dell\'utente come link interwiki';
+$lang['showuseras_o_email']    = 'Indirizzo email dell\'utente (offuscato in base alle impostazioni di sicurezza posta)';
+$lang['showuseras_o_email_link'] = 'Indirizzo email dell\'utente come collegamento mailto:';
+$lang['useheading_o_0']        = 'Mai';
+$lang['useheading_o_navigation'] = 'Solo navigazione';
+$lang['useheading_o_content']  = 'Solo contenuto wiki';
+$lang['useheading_o_1']        = 'Sempre';
+$lang['readdircache']          = 'Tempo massimo per le readdir cache (sec)';
diff --git a/wiki/lib/plugins/config/lang/ja/intro.txt b/wiki/lib/plugins/config/lang/ja/intro.txt
new file mode 100644
index 0000000..4d98dd3
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ja/intro.txt
@@ -0,0 +1,11 @@
+====== 設定管理 ======
+
+この画面で、Dokuwikiの設定を管理することが出来ます。
+個々の設定に関しては[[doku>ja:config|DokuWiki の設定]]を参照してください。
+このプラグインに関する詳細な情報は[[doku>ja:plugin:config|設定管理プラグイン]]を参照してください。
+
+背景が薄い赤の場合、その設定は変更することが出来ません。
+背景が青の場合はデフォルト設定、背景が白の場合はサイト固有の設定になっており、どちら設定も変更が可能です。
+
+設定の変更後は必ず **保存** ボタンを押して変更を確定してください。
+ボタンを押さなかった場合、変更は破棄されます。
diff --git a/wiki/lib/plugins/config/lang/ja/lang.php b/wiki/lib/plugins/config/lang/ja/lang.php
new file mode 100644
index 0000000..9475f90
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ja/lang.php
@@ -0,0 +1,207 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuji Takenaka <webmaster@davilin.com>
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ * @author Daniel Dupriest <kououken@gmail.com>
+ * @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['menu']                  = 'サイト設定';
+$lang['error']                 = '不正な値が存在するため、設定は更新されませんでした。入力値を確認してから、再度更新してください。
+                       <br />不正な値が入力されている項目は赤い線で囲まれています。';
+$lang['updated']               = '設定は正しく更新されました。';
+$lang['nochoice']              = '(他の選択肢はありません)';
+$lang['locked']                = '設定用ファイルを更新できません。もし意図して変更不可にしているのでなければ、<br />
+                       ローカル設定ファイルの名前と権限を確認して下さい。';
+$lang['danger']                = '危険:この設定を変更するとウィキや設定管理画面にアクセスできなくなる恐れがあります。';
+$lang['warning']               = '注意:この設定を変更すると意図しない作動につながる可能性があります。';
+$lang['security']              = '警告:この設定を変更するとセキュリティに悪影響する恐れがあります。';
+$lang['_configuration_manager'] = '設定管理';
+$lang['_header_dokuwiki']      = 'DokuWiki';
+$lang['_header_plugin']        = 'プラグイン';
+$lang['_header_template']      = 'テンプレート';
+$lang['_header_undefined']     = 'その他';
+$lang['_basic']                = '基本';
+$lang['_display']              = '表示';
+$lang['_authentication']       = '認証';
+$lang['_anti_spam']            = 'スパム対策';
+$lang['_editing']              = '編集';
+$lang['_links']                = 'リンク';
+$lang['_media']                = 'メディア';
+$lang['_notifications']        = '通知設定';
+$lang['_syndication']          = 'RSS配信設定';
+$lang['_advanced']             = '高度な設定';
+$lang['_network']              = 'ネットワーク';
+$lang['_msg_setting_undefined'] = '設定のためのメタデータがありません。';
+$lang['_msg_setting_no_class'] = '設定クラスがありません。';
+$lang['_msg_setting_no_default'] = '初期値が設定されていません。';
+$lang['title']                 = 'WIKIタイトル';
+$lang['start']                 = 'スタートページ名';
+$lang['lang']                  = '使用言語';
+$lang['template']              = 'テンプレート';
+$lang['tagline']               = 'キャッチフレーズ (テンプレートが対応していれば)';
+$lang['sidebar']               = 'サイドバー用ページ名 (テンプレートが対応していれば)。空欄でサイドバー無効。';
+$lang['license']               = '作成した内容をどのライセンスでリリースしますか?';
+$lang['savedir']               = '保存ディレクトリ';
+$lang['basedir']               = 'サーバのパス (例: <code>/dokuwiki/</code>)。空欄にすると自動的に検出します。';
+$lang['baseurl']               = 'サーバの URL (例: <code>http://www.yourserver.com</code>)。空欄にすると自動的に検出します。';
+$lang['cookiedir']             = 'Cookie のパス。空欄にすると baseurl を使用します。';
+$lang['dmode']                 = 'フォルダ作成マスク';
+$lang['fmode']                 = 'ファイル作成マスク';
+$lang['allowdebug']            = 'デバッグモード(<b>必要で無いときは無効にしてください</b>)';
+$lang['recent']                = '最近の変更表示数';
+$lang['recent_days']           = '最近の変更とする期間(日数)';
+$lang['breadcrumbs']           = 'トレース(パンくず)表示数';
+$lang['youarehere']            = '現在位置を表示';
+$lang['fullpath']              = 'ページのフッターに絶対パスを表示';
+$lang['typography']            = 'タイポグラフィー変換';
+$lang['dformat']               = '日付フォーマット(PHPの<a href="http://php.net/strftime">strftime</a>関数を参照)';
+$lang['signature']             = '署名';
+$lang['showuseras']            = '最終編集者の情報として表示する内容';
+$lang['toptoclevel']           = '目次 トップレベル見出し';
+$lang['tocminheads']           = '目次を生成するための最小見出し数';
+$lang['maxtoclevel']           = '目次 表示限度見出し';
+$lang['maxseclevel']           = '編集可能見出し';
+$lang['camelcase']             = 'キャメルケースリンク';
+$lang['deaccent']              = 'ページ名の変換方法';
+$lang['useheading']            = '最初の見出しをページ名とする';
+$lang['sneaky_index']          = 'デフォルトでは索引にすべての名前空間を表示しますが、この機能はユーザーに閲覧権限のない名前空間を非表示にします。ただし、閲覧が可能な副名前空間まで表示されなくなるため、ACLの設定が適正でない場合は索引機能が使えなくなる場合があります。';
+$lang['hidepages']             = '検索、サイトマップ、その他の自動インデックスの結果に表示しないページ(Regex)';
+$lang['useacl']                = 'アクセス管理を行う(ACL)';
+$lang['autopasswd']            = 'パスワードの自動生成(ACL)';
+$lang['authtype']              = '認証方法(ACL)';
+$lang['passcrypt']             = '暗号化方法(ACL)';
+$lang['defaultgroup']          = 'デフォルトグループ(ACL)';
+$lang['superuser']             = 'スーパーユーザー(ACL)';
+$lang['manager']               = 'マネージャー(特定の管理機能を使用可能なユーザーもしくはグループ)';
+$lang['profileconfirm']        = 'プロフィール変更時に現在のパスワードを要求(ACL)';
+$lang['rememberme']            = 'ログイン用クッキーを永久に保持することを許可(ログインを保持)';
+$lang['disableactions']        = 'DokuWiki の動作を無効にする';
+$lang['disableactions_check']  = 'チェック';
+$lang['disableactions_subscription'] = '変更履歴配信の登録・解除';
+$lang['disableactions_wikicode'] = 'ソース閲覧 / 生データ出力';
+$lang['disableactions_profile_delete'] = '自分のアカウントの抹消';
+$lang['disableactions_other']  = 'その他の動作(カンマ区切り)';
+$lang['disableactions_rss']    = 'XML 配信(RSS)';
+$lang['auth_security_timeout'] = '認証タイムアウト設定(秒)';
+$lang['securecookie']          = 'クッキーをHTTPSにてセットする場合は、ブラウザよりHTTPS経由で送信された場合にみに制限しますか?ログインのみをSSLで行う場合は、この機能を無効にしてください。';
+$lang['remote']                = 'リモートAPIを有効化します。有効化するとXML-RPCまたは他の手段でwikiにアプリケーションがアクセスすることを許可します。';
+$lang['remoteuser']            = 'カンマ区切りで書かれたグループ名、またはユーザ名だけにリモートAPIへのアクセスを許可します。空白の場合は、すべてのユーザにアクセスを許可します。';
+$lang['usewordblock']          = '単語リストに基づくスパムブロック';
+$lang['relnofollow']           = 'rel="nofollow"を付加';
+$lang['indexdelay']            = 'インデックスを許可(何秒後)';
+$lang['mailguard']             = 'メールアドレス保護';
+$lang['iexssprotect']          = 'アップロードファイルに悪意のあるJavaScriptやHTMLが含まれていないかチェックする';
+$lang['usedraft']              = '編集中の自動保存(ドラフト)機能を使用';
+$lang['htmlok']                = 'HTML埋め込み';
+$lang['phpok']                 = 'PHP埋め込み';
+$lang['locktime']              = 'ファイルロック期限(秒)';
+$lang['cachetime']             = 'キャッシュ保持時間(秒)';
+$lang['target____wiki']        = '内部リンクの表示先';
+$lang['target____interwiki']   = 'InterWikiリンクの表示先';
+$lang['target____extern']      = '外部リンクの表示先';
+$lang['target____media']       = 'メディアリンクの表示先';
+$lang['target____windows']     = 'Windowsリンクの表示先';
+$lang['mediarevisions']        = 'メディアファイルの履歴を有効にしますか?';
+$lang['refcheck']              = 'メディア参照元チェック';
+$lang['gdlib']                 = 'GDlibバージョン';
+$lang['im_convert']            = 'ImageMagick変換ツールへのパス';
+$lang['jpg_quality']           = 'JPG圧縮品質(0-100)';
+$lang['fetchsize']             = '外部からのダウンロード最大サイズ';
+$lang['subscribers']           = '更新通知機能';
+$lang['subscribe_time']        = '購読リストと概要を送信する期間(秒)。「最近の変更とする期間」で指定した期間より小さくしてください。';
+$lang['notify']                = '変更を通知するメールアドレス';
+$lang['registernotify']        = '新規ユーザー登録を通知するメールアドレス';
+$lang['mailfrom']              = 'メール送信時の送信元アドレス';
+$lang['mailprefix']            = '自動メールの題名に使用する接頭語';
+$lang['htmlmail']              = 'メールをテキスト形式ではなく、HTML形式で送信する。';
+$lang['sitemap']               = 'Googleサイトマップ作成頻度(日数)';
+$lang['rss_type']              = 'RSSフィード形式';
+$lang['rss_linkto']            = 'RSS内リンク先';
+$lang['rss_content']           = 'XMLフィードに何を表示させますか?';
+$lang['rss_update']            = 'RSSフィードの更新間隔(秒)';
+$lang['rss_show_summary']      = 'フィードのタイトルにサマリーを表示';
+$lang['rss_media']             = 'XMLフィードで、どんな種類の変更を記載するか';
+$lang['updatecheck']           = 'DokuWikiの更新とセキュリティに関する情報をチェックしますか? この機能は update.dokuwiki.org への接続が必要です。';
+$lang['userewrite']            = 'URLの書き換え';
+$lang['useslash']              = 'URL上の名前空間の区切りにスラッシュを使用';
+$lang['sepchar']               = 'ページ名の単語区切り文字';
+$lang['canonical']             = 'canonical URL(正準URL)を使用';
+$lang['fnencode']              = '非アスキーファイル名のエンコーディング方法';
+$lang['autoplural']            = '自動複数形処理';
+$lang['compression']           = 'アーカイブファイルの圧縮方法';
+$lang['gzip_output']           = 'xhtmlに対するコンテンツ圧縮(gzip)を使用';
+$lang['compress']              = 'CSSとJavaScriptを圧縮';
+$lang['cssdatauri']            = 'HTTP リクエスト数によるオーバーヘッドを減らすため、CSS ファイルから参照される画像ファイルのサイズがここで指定するバイト数以内の場合は CSS ファイル内に Data URI として埋め込みます。 <code>400</code> から <code>600</code> バイトがちょうどよい値です。<code>0</code> を指定すると埋め込み処理は行われません。';
+$lang['send404']               = '文書が存在しないページに"HTTP404/Page Not Found"を使用';
+$lang['broken_iua']            = 'ignore_user_abort関数が破損している恐れがあります。そのため、検索インデックスが動作しない可能性があります。IIS+PHP/CGIの組み合わせで破損することが判明しています。詳しくは<a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>を参照してください。';
+$lang['xsendfile']             = 'ウェブサーバーが静的ファイルを生成するために X-Sendfile ヘッダーを使用しますか?なお、この機能をウェブサーバーがサポートしている必要があります。';
+$lang['renderer_xhtml']        = 'Wikiの出力(xhtml)にレンダラーを使用する';
+$lang['renderer__core']        = '%s (Dokuwikiコア)';
+$lang['renderer__plugin']      = '%s (プラグイン)';
+$lang['dnslookups']            = 'ページを編集しているユーザーのIPアドレスからホスト名を逆引きする。利用できるDNSサーバーがない、あるいはこの機能が不要な場合にはオフにします。';
+$lang['jquerycdn']             = 'コンテンツ・デリバリー・ネットワーク (CDN) の選択:jQuery と jQuery UI スクリプトを CDN からロードさせる場合には、追加的な HTTP リクエストが発生しますが、ブラウザキャッシュが使用されるため、表示速度の向上が期待できます。';
+$lang['jquerycdn_o_0']         = 'CDN を使用しない(または利用できない)';
+$lang['jquerycdn_o_jquery']    = 'CDN: code.jquery.com を使用';
+$lang['jquerycdn_o_cdnjs']     = 'CDN: cdnjs.com を使用';
+$lang['proxy____host']         = 'プロキシ - サーバー名';
+$lang['proxy____port']         = 'プロキシ - ポート';
+$lang['proxy____user']         = 'プロキシ - ユーザー名';
+$lang['proxy____pass']         = 'プロキシ - パスワード';
+$lang['proxy____ssl']          = 'プロキシへの接続にsslを使用';
+$lang['proxy____except']       = 'スキップするプロキシのURL正規表現';
+$lang['safemodehack']          = 'セーフモード対策を行う';
+$lang['ftp____host']           = 'FTP サーバー名(セーフモード対策)';
+$lang['ftp____port']           = 'FTP ポート(セーフモード対策)';
+$lang['ftp____user']           = 'FTP ユーザー名(セーフモード対策)';
+$lang['ftp____pass']           = 'FTP パスワード(セーフモード対策)';
+$lang['ftp____root']           = 'FTP ルートディレクトリ(セーフモード対策)';
+$lang['license_o_']            = '選択されていません';
+$lang['typography_o_0']        = '変換しない';
+$lang['typography_o_1']        = '二重引用符(ダブルクオート)のみ';
+$lang['typography_o_2']        = 'すべての引用符(動作しない場合があります)';
+$lang['userewrite_o_0']        = '使用しない';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWikiによる設定';
+$lang['deaccent_o_0']          = '変換しない';
+$lang['deaccent_o_1']          = 'アクセント付きの文字を変換する';
+$lang['deaccent_o_2']          = 'ローマ字化';
+$lang['gdlib_o_0']             = 'GDを利用できません';
+$lang['gdlib_o_1']             = 'バージョン 1.x';
+$lang['gdlib_o_2']             = '自動検出';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = '概要';
+$lang['rss_content_o_diff']    = '差分(Unified Diff)';
+$lang['rss_content_o_htmldiff'] = '差分(HTML形式)';
+$lang['rss_content_o_html']    = '完全なHTMLページ';
+$lang['rss_linkto_o_diff']     = '変更点のリスト';
+$lang['rss_linkto_o_page']     = '変更されたページ';
+$lang['rss_linkto_o_rev']      = 'リビジョンのリスト';
+$lang['rss_linkto_o_current']  = '現在のページ';
+$lang['compression_o_0']       = '圧縮しない';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = '使用しない';
+$lang['xsendfile_o_1']         = 'lighttpd ヘッダー(リリース1.5以前)';
+$lang['xsendfile_o_2']         = '標準 X-Sendfile ヘッダー';
+$lang['xsendfile_o_3']         = 'Nginx X-Accel-Redirect ヘッダー';
+$lang['showuseras_o_loginname'] = 'ログイン名';
+$lang['showuseras_o_username'] = 'ユーザーのフルネーム';
+$lang['showuseras_o_username_link'] = 'user という InterWiki リンクになったユーザーのフルネーム';
+$lang['showuseras_o_email']    = 'ユーザーのメールアドレス(メールガード設定による難読化)';
+$lang['showuseras_o_email_link'] = 'ユーザーのメールアドレスをリンクにする';
+$lang['useheading_o_0']        = '使用しない';
+$lang['useheading_o_navigation'] = 'ナビゲーションのみ';
+$lang['useheading_o_content']  = 'Wikiの内容のみ';
+$lang['useheading_o_1']        = '常に使用する';
+$lang['readdircache']          = 'readdir キャッシュの最大保持期間(秒)';
diff --git a/wiki/lib/plugins/config/lang/ko/intro.txt b/wiki/lib/plugins/config/lang/ko/intro.txt
new file mode 100644
index 0000000..b05264a
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ko/intro.txt
@@ -0,0 +1,7 @@
+====== 환경 설정 관리자 ======
+
+설치된 도쿠위키의 설정을 제어하려면 이 페이지를 사용하세요. 개별 설정에 대한 도움말은 [[doku>ko:config]]를 참조하세요. 이 플러그인에 대한 자세한 내용은 [[doku>ko:plugin:config]]를 참조하세요.
+
+밝은 빨간색 배경으로 보이는 설정은 이 플러그인으로 바꿀 수 없도록 보호되어 있습니다. 파란색 배경으로 보이는 설정은 기본값이며 하얀색 배경으로 보이는 설정은 특정 설치에 대해 로컬로 설정되어 있습니다. 파란색과 하얀색 배경으로 된 설정은 바꿀 수 있습니다.
+
+이 페이지를 떠나기 전에 **저장** 버튼을 누르지 않으면 바뀜이 사라지는 것에 주의하세요.
\ No newline at end of file
diff --git a/wiki/lib/plugins/config/lang/ko/lang.php b/wiki/lib/plugins/config/lang/ko/lang.php
new file mode 100644
index 0000000..cfca442
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ko/lang.php
@@ -0,0 +1,211 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Seungheon Song <esketch@gmail.com>
+ * @author jk Lee
+ * @author dongnak <dongnak@gmail.com>
+ * @author Song Younghwan <purluno@gmail.com>
+ * @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2 <erial2@gmail.com>
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author S.H. Lee <tuders@naver.com>
+ */
+$lang['menu']                  = '환경 설정';
+$lang['error']                 = '잘못된 값 때문에 설정을 바꿀 수 없습니다, 바뀜을 검토하고 다시 제출하세요.
+                       <br />잘못된 값은 빨간 선으로 둘러싸여 보여집니다.';
+$lang['updated']               = '설정이 성공적으로 바뀌었습니다.';
+$lang['nochoice']              = '(다른 선택은 할 수 없습니다)';
+$lang['locked']                = '설정 파일을 바꿀 수 없습니다, 의도하지 않았다면, <br />
+                       로컬 설정 파일 이름과 권한이 맞는지 확인하세요.';
+$lang['danger']                = '위험: 이 옵션을 바꾸면 위키와 환경 설정 메뉴에 접근할 수 없을 수도 있습니다.';
+$lang['warning']               = '경고: 이 옵션을 바꾸면 의도하지 않는 동작을 일으킬 수 있습니다.';
+$lang['security']              = '보안 경고: 이 옵션을 바꾸면 보안 위험이 있을 수 있습니다.';
+$lang['_configuration_manager'] = '환경 설정 관리자';
+$lang['_header_dokuwiki']      = '도쿠위키';
+$lang['_header_plugin']        = '플러그인';
+$lang['_header_template']      = '템플릿';
+$lang['_header_undefined']     = '정의되지 않은 설정';
+$lang['_basic']                = '기본';
+$lang['_display']              = '보이기';
+$lang['_authentication']       = '인증';
+$lang['_anti_spam']            = '스팸 방지';
+$lang['_editing']              = '편집';
+$lang['_links']                = '링크';
+$lang['_media']                = '미디어';
+$lang['_notifications']        = '알림';
+$lang['_syndication']          = '신디케이션 (RSS)';
+$lang['_advanced']             = '고급';
+$lang['_network']              = '네트워크';
+$lang['_msg_setting_undefined'] = '설정에 메타데이터가 없습니다.';
+$lang['_msg_setting_no_class'] = '설정에 클래스가 없습니다.';
+$lang['_msg_setting_no_default'] = '기본값이 없습니다.';
+$lang['title']                 = '위키 제목 (위키 이름)';
+$lang['start']                 = '각 이름공간에 시작점으로 사용할 문서 이름';
+$lang['lang']                  = '인터페이스 언어';
+$lang['template']              = '템플릿 (위키 디자인)';
+$lang['tagline']               = '태그라인 (템플릿이 지원할 경우)';
+$lang['sidebar']               = '사이드바 문서 이름 (템플릿이 지원할 경우), 필드를 비우면 사이드바를 비활성화';
+$lang['license']               = '내용을 배포할 때 어떤 라이선스에 따라야 합니까?';
+$lang['savedir']               = '데이터를 저장할 디렉터리';
+$lang['basedir']               = '서버 경로 (예 <code>/dokuwiki/</code>). 자동 감지를 하려면 비워 두세요.';
+$lang['baseurl']               = '서버 URL (예 <code>http://www.yourserver.com</code>). 자동 감지를 하려면 비워 두세요.';
+$lang['cookiedir']             = '쿠키 경로. 기본 URL 위치로 지정하려면 비워 두세요.';
+$lang['dmode']                 = '디렉터리 만들기 모드';
+$lang['fmode']                 = '파일 만들기 모드';
+$lang['allowdebug']            = '디버그 허용. <b>필요하지 않으면 비활성화하세요!</b>';
+$lang['recent']                = '최근 바뀜에서 문서당 항목 수';
+$lang['recent_days']           = '최근 바뀜을 유지할 기한 (일)';
+$lang['breadcrumbs']           = '이동 경로 "추적" 수. 비활성화하려면 0으로 설정하세요.';
+$lang['youarehere']            = '계층적 이동 경로 사용 (다음에 위 옵션을 비활성화하기를 원할 겁니다)';
+$lang['fullpath']              = '바닥글에 문서의 전체 경로 밝히기';
+$lang['typography']            = '타이포그래피 대체';
+$lang['dformat']               = '날짜 형식 (PHP의 <a href="http://php.net/strftime">strftime</a> 함수 참고)';
+$lang['signature']             = '편집기에서 서명 버튼을 누를 때 넣을 내용';
+$lang['showuseras']            = '문서를 마지막으로 편집한 사용자를 보여줄지 여부';
+$lang['toptoclevel']           = '목차의 최상위 단계';
+$lang['tocminheads']           = '목차를 넣을 여부를 결정할 최소 문단 수';
+$lang['maxtoclevel']           = '목차의 최대 단계';
+$lang['maxseclevel']           = '문단의 최대 편집 단계';
+$lang['camelcase']             = '링크에 CamelCase 사용';
+$lang['deaccent']              = '문서 이름을 지우는 방법';
+$lang['useheading']            = '문서 이름을 첫 문단 제목으로 사용';
+$lang['sneaky_index']          = '기본적으로, 도쿠위키는 사이트맵에 모든 이름공간을 보여줍니다. 이 옵션을 활성화하면 사용자가 읽기 권한이 없는 이름공간을 숨기게 됩니다. 특정 ACL 설정으로 색인을 사용할 수 없게 할 수 있는 접근할 수 있는 하위 이름공간을 숨기면 설정됩니다.';
+$lang['hidepages']             = '검색, 사이트맵 및 다른 자동 색인에서 이 정규 표현식과 일치하는 문서 숨기기';
+$lang['useacl']                = '접근 제어 목록 (ACL) 사용';
+$lang['autopasswd']            = '자동 생성 비밀번호';
+$lang['authtype']              = '인증 백엔드';
+$lang['passcrypt']             = '비밀번호 암호화 방법';
+$lang['defaultgroup']          = '기본 그룹, 모든 새 사용자는 이 그룹에 속하게 됩니다';
+$lang['superuser']             = '슈퍼유저 - ACL 설정과 상관없이 모든 문서와 기능에 완전히 접근할 수 있는 그룹, 사용자 또는 쉼표로 구분된 목록 사용자1,@그룹1,사용자2';
+$lang['manager']               = '관리자 - 특정 관리 기능에 접근할 수 있는 그룹, 사용자 또는 쉼표로 구분된 목록 사용자1,@그룹1,사용자2';
+$lang['profileconfirm']        = '프로필을 바꿀 때 비밀번호로 확인';
+$lang['rememberme']            = '영구적으로 로그인 쿠키 허용 (기억하기)';
+$lang['disableactions']        = '도쿠위키 동작 비활성화';
+$lang['disableactions_check']  = '검사';
+$lang['disableactions_subscription'] = '구독/구독 취소';
+$lang['disableactions_wikicode'] = '원본 보기/원본 내보내기';
+$lang['disableactions_profile_delete'] = '자신의 계정 삭제';
+$lang['disableactions_other']  = '다른 동작 (쉼표로 구분)';
+$lang['disableactions_rss']    = 'XML 신디케이션 (RSS)';
+$lang['auth_security_timeout'] = '인증 보안 시간 초과 (초)';
+$lang['securecookie']          = 'HTTPS를 통해 설정된 쿠키는 HTTPS를 통해서만 보내져야 합니까? 위키 로그인에만 SSL로 보호하고 위키를 둘러보는 것에는 보호하지 않게 하려면 이 옵션을 비활성화하세요.';
+$lang['remote']                = '원격 API 시스템 활성화. 다른 어플리케이션이 XML-RPC 또는 다른 메커니즘을 통해 위키에 접근할 수 있습니다.';
+$lang['remoteuser']            = '여기에 입력한 쉼표로 구분된 그룹 또는 사용자에게 원격 API 접근을 제한합니다. 모두에게 접근 권한을 주려면 비워 두세요.';
+$lang['usewordblock']          = '낱말 목록을 바탕으로 스팸 막기';
+$lang['relnofollow']           = '바깥 링크에 rel="nofollow" 사용';
+$lang['indexdelay']            = '색인 전 지연 시간 (초)';
+$lang['mailguard']             = '이메일 주소를 알아볼 수 없게 하기';
+$lang['iexssprotect']          = '올린 파일의 악성 자바스크립트, HTML 코드 가능성 여부를 검사';
+$lang['usedraft']              = '편집하는 동안 자동으로 초안 저장';
+$lang['htmlok']                = 'HTML 포함 허용';
+$lang['phpok']                 = 'PHP 포함 허용';
+$lang['locktime']              = '파일 잠그기에 대한 최대 시간 (초)';
+$lang['cachetime']             = '캐시에 대한 최대 시간 (초)';
+$lang['target____wiki']        = '안쪽 링크에 대한 타겟 창';
+$lang['target____interwiki']   = '인터위키 링크에 대한 타겟 창';
+$lang['target____extern']      = '바깥 링크에 대한 타겟 창';
+$lang['target____media']       = '미디어 링크에 대한 타겟 창';
+$lang['target____windows']     = 'Windows 링크에 대한 타겟 창';
+$lang['mediarevisions']        = '미디어 판을 활성화하겠습니까?';
+$lang['refcheck']              = '미디어 파일을 삭제하기 전에 아직 사용하고 있는지 검사';
+$lang['gdlib']                 = 'GD 라이브러리 버전';
+$lang['im_convert']            = 'ImageMagick의 변환 도구의 경로';
+$lang['jpg_quality']           = 'JPG 압축 품질 (0-100)';
+$lang['fetchsize']             = 'fetch.php가 바깥 URL에서 다운로드할 수 있는 최대 크기 (바이트), 예를 들어 바깥 그림을 캐시하고 크기 조절할 때.';
+$lang['subscribers']           = '사용자가 이메일로 문서 바뀜을 구독할 수 있도록 하기';
+$lang['subscribe_time']        = '구독 목록과 요약이 보내질 경과 시간 (초); recent_days에 지정된 시간보다 작아야 합니다.';
+$lang['notify']                = '항상 이 이메일 주소로 바뀜 알림을 보냄';
+$lang['registernotify']        = '항상 이 이메일 주소로 새로 등록한 사용자의 정보를 보냄';
+$lang['mailfrom']              = '자동으로 보내는 메일에 사용할 보내는 사람 이메일 주소';
+$lang['mailreturnpath']        = '배달 불가 안내를 위한 수신자 메일 주소';
+$lang['mailprefix']            = '자동으로 보내는 메일에 사용할 이메일 제목 접두어. 위키 제목을 사용하려면 비워 두세요';
+$lang['htmlmail']              = '보기에는 더 좋지만 크키가 조금 더 큰 HTML 태그가 포함된 이메일을 보내기. 일반 텍스트만으로 된 메일을 보내려면 비활성화하세요.';
+$lang['sitemap']               = 'Google 사이트맵 생성 날짜 빈도 (일). 비활성화하려면 0';
+$lang['rss_type']              = 'XML 피드 형식';
+$lang['rss_linkto']            = 'XML 피드 링크 정보';
+$lang['rss_content']           = 'XML 피드 항목에 보여주는 내용은 무엇입니까?';
+$lang['rss_update']            = 'XML 피드 업데이트 간격 (초)';
+$lang['rss_show_summary']      = 'XML 피드의 제목에서 요악 보여주기';
+$lang['rss_media']             = '어떤 규격으로 XML 피드에 바뀜을 나열해야 합니까?';
+$lang['rss_media_o_both']      = '양방향';
+$lang['rss_media_o_pages']     = '쪽';
+$lang['rss_media_o_media']     = '미디어';
+$lang['updatecheck']           = '업데이트와 보안 경고를 검사할까요? 도쿠위키는 이 기능을 위해 update.dokuwiki.org에 연결이 필요합니다.';
+$lang['userewrite']            = '멋진 URL 사용';
+$lang['useslash']              = 'URL에서 이름공간 구분자로 슬래시 사용';
+$lang['sepchar']               = '문서 이름 낱말 구분자';
+$lang['canonical']             = '완전한 canonical URL 사용';
+$lang['fnencode']              = 'ASCII가 아닌 파일 이름을 인코딩하는 방법.';
+$lang['autoplural']            = '링크에서 복수형 검사';
+$lang['compression']           = '첨부 파일의 압축 방법';
+$lang['gzip_output']           = 'xhtml에 대해 gzip 내용 인코딩 사용';
+$lang['compress']              = 'CSS 및 자바스크립트를 압축하여 출력';
+$lang['cssdatauri']            = 'CSS 파일에서 그림이 참조되는 최대 바이트 크기를 스타일시트에 규정해야 HTTP 요청 헤더 오버헤드 크기를 줄일 수 있습니다. <code>400</code>에서 <code>600</code> 바이트 정도면 좋은 효율을 가져옵니다. 비활성화하려면 <code>0</code>으로 설정하세요.';
+$lang['send404']               = '존재하지 않는 문서에 "HTTP 404/페이지를 찾을 수 없습니다" 보내기';
+$lang['broken_iua']            = '시스템에서 ignore_user_abort 함수에 문제가 있습니까? 문제가 있다면 검색 색인이 동작하지 않는 원인이 됩니다. 이 함수가 IIS+PHP/CGI에서 문제가 있는 것으로 알려져 있습니다. 자세한 정보는 <a href="http://bugs.dokuwiki.org/?do=details&amp;task_id=852">버그 852</a>를 참조하시기 바랍니다.';
+$lang['xsendfile']             = '웹 서버가 정적 파일을 제공할 수 있도록 X-Sendfile 헤더를 사용하겠습니까? 웹 서버가 이 기능을 지원해야 합니다.';
+$lang['renderer_xhtml']        = '주요 (xhtml) 위키 출력에 사용할 렌더러';
+$lang['renderer__core']        = '%s (도쿠위키 코어)';
+$lang['renderer__plugin']      = '%s (플러그인)';
+$lang['dnslookups']            = '도쿠위키가 문서를 편집하는 사용자의 원격 IP 주소에 대한 호스트 이름을 조회합니다. 서버가 느리거나 DNS 서버를 작동하지 않거나 이 기능을 원하지 않으면, 이 옵션을 비활성화하세요';
+$lang['jquerycdn']             = '제이쿼리(jQuery)와 제이쿼리UI 스크립트 파일을 컨텐츠전송네트워크(CDN)에서 불러와야만 합니까? 이것은 추가적인 HTTP요청을 합니다. 하지만 파일이 빨리 불러지고 캐쉬에 저장되게 할 수 있습니다.';
+$lang['jquerycdn_o_0']         = '컨텐츠전송네트워크(CDN) 사용 안 함. 로컬 전송만 함';
+$lang['jquerycdn_o_jquery']    = '\'code.jquery.com\' 의 컨텐츠전송네트워크(CDN) 사용';
+$lang['jquerycdn_o_cdnjs']     = '\'cdnjs.com\' 의 컨텐츠전송네트워크(CDN) 사용';
+$lang['proxy____host']         = '프록시 서버 이름';
+$lang['proxy____port']         = '프록시 포트';
+$lang['proxy____user']         = '프록시 사용자 이름';
+$lang['proxy____pass']         = '프록시 비밀번호';
+$lang['proxy____ssl']          = '프록시로 연결하는 데 SSL 사용';
+$lang['proxy____except']       = '프록시가 건너뛰어야 할 일치하는 URL의 정규 표현식.';
+$lang['safemodehack']          = 'safemode hack 활성화';
+$lang['ftp____host']           = 'safemode hack의 FTP 서버';
+$lang['ftp____port']           = 'safemode hack의 FTP 포트';
+$lang['ftp____user']           = 'safemode hack의 FTP 사용자 이름';
+$lang['ftp____pass']           = 'safemode hack의 FTP 비밀번호';
+$lang['ftp____root']           = 'safemode hack의 FTP 루트 디렉터리';
+$lang['license_o_']            = '선택하지 않음';
+$lang['typography_o_0']        = '없음';
+$lang['typography_o_1']        = '작은따옴표를 제외';
+$lang['typography_o_2']        = '작은따옴표를 포함 (항상 동작하지 않을 수도 있음)';
+$lang['userewrite_o_0']        = '없음';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = '도쿠위키 내부';
+$lang['deaccent_o_0']          = '끄기';
+$lang['deaccent_o_1']          = '악센트 제거';
+$lang['deaccent_o_2']          = '로마자화';
+$lang['gdlib_o_0']             = 'GD 라이브러리를 사용할 수 없음';
+$lang['gdlib_o_1']             = '버전 1.x';
+$lang['gdlib_o_2']             = '자동 감지';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = '개요';
+$lang['rss_content_o_diff']    = '통합 차이';
+$lang['rss_content_o_htmldiff'] = 'HTML 형식의 차이 표';
+$lang['rss_content_o_html']    = '전체 HTML 페이지 내용';
+$lang['rss_linkto_o_diff']     = '차이 보기';
+$lang['rss_linkto_o_page']     = '개정된 문서';
+$lang['rss_linkto_o_rev']      = '판의 목록';
+$lang['rss_linkto_o_current']  = '현재 문서';
+$lang['compression_o_0']       = '없음';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = '사용하지 않음';
+$lang['xsendfile_o_1']         = '사유 lighttpd 헤더 (릴리스 1.5 이전)';
+$lang['xsendfile_o_2']         = '표준 X-Sendfile 헤더';
+$lang['xsendfile_o_3']         = '사유 Nginx X-Accel-Redirect 헤더';
+$lang['showuseras_o_loginname'] = '로그인 이름';
+$lang['showuseras_o_username'] = '사용자의 실명';
+$lang['showuseras_o_username_link'] = '인터위키 사용자 링크로 된 사용자의 실명';
+$lang['showuseras_o_email']    = '사용자의 이메일 주소 (메일 주소 설정에 따라 안보일 수 있음)';
+$lang['showuseras_o_email_link'] = 'mailto: 링크로 된 사용자의 이메일 주소';
+$lang['useheading_o_0']        = '전혀 없음';
+$lang['useheading_o_navigation'] = '둘러보기에만';
+$lang['useheading_o_content']  = '위키 내용에만';
+$lang['useheading_o_1']        = '항상';
+$lang['readdircache']          = 'readdir 캐시의 최대 시간 (초)';
diff --git a/wiki/lib/plugins/config/lang/la/intro.txt b/wiki/lib/plugins/config/lang/la/intro.txt
new file mode 100644
index 0000000..51d8c3d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/la/intro.txt
@@ -0,0 +1,7 @@
+====== Optionum Administratio ======
+
+In hac pagina administratoris optiones mutare et inspicere potes. Auxilia in pagina [[doku>config|conformationis]] sunt, si singulas res uidere uis, i ad paginam [[doku>plugin:config|conformationis]].
+
+Optiones ostensae rubro colore tutae et non nunc mutabiles sunt. Optiones ostensae caeruleo colore praecipuae sunt et optiones ostensae in area alba singulares huic uici sunt. Et caerulae et albae optiones mutabiles sunt.
+
+Memento premere **SERVA** ante quam nouam paginam eas: si hoc non facias, mutata amissa sunt.
diff --git a/wiki/lib/plugins/config/lang/la/lang.php b/wiki/lib/plugins/config/lang/la/lang.php
new file mode 100644
index 0000000..515aa95
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/la/lang.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Latin language file
+ *
+ * @author Massimiliano Vassalli <vassalli.max@gmail.com>
+ */
+$lang['menu']                  = 'Optiones Administrationis';
+$lang['error']                 = 'Optiones non nouatae ob errores: rursum temptat. Errores rubro colore signati sunt.';
+$lang['updated']               = 'Optiones feliciter nouatae.';
+$lang['nochoice']              = '(nulla optio est)';
+$lang['locked']                = 'Optio documenti non nouata est, <br/> optiones et facultates documenti inspicis.';
+$lang['danger']                = 'CAVE: si has optiones mutabis, in administrationis indicem non inire potes.';
+$lang['warning']               = 'CAVE: si hae optiones mutabis, graues errores erunt.';
+$lang['security']              = 'CAVE: si hae optiones mutabis, graues errores erunt.';
+$lang['_configuration_manager'] = 'Optionum administratio';
+$lang['_header_dokuwiki']      = 'Vicis Optiones';
+$lang['_header_plugin']        = 'Addendorum Optiones';
+$lang['_header_template']      = 'Vicis Formae Optiones';
+$lang['_header_undefined']     = 'Variae Optiones';
+$lang['_basic']                = 'Praecipuae Optiones';
+$lang['_display']              = 'Speciei Optiones';
+$lang['_authentication']       = 'Confirmationis Optiones';
+$lang['_anti_spam']            = 'In Mala Optiones';
+$lang['_editing']              = 'Recensendi Optiones';
+$lang['_links']                = 'Nexi Optiones';
+$lang['_media']                = 'Visiuorum Optiones';
+$lang['_advanced']             = 'Maiores Optiones';
+$lang['_network']              = 'Interretis Optiones';
+$lang['_msg_setting_undefined'] = 'Res codicum sine optionibus.';
+$lang['_msg_setting_no_class'] = 'Classes sine optionibus';
+$lang['_msg_setting_no_default'] = 'Nihil';
+$lang['fmode']                 = 'Documentum creandum ratio';
+$lang['dmode']                 = 'Scrinia creandam ratio';
+$lang['lang']                  = 'Linguae optiones';
+$lang['basedir']               = 'Computatoris seruitoris domicilium (ex. <code>/dokuwiki/</code>). Nihil scribere si id machinatione agnoscere uis.';
+$lang['baseurl']               = 'Computatoris seruitoris VRL (ex. <code>http://www.yourserver.com</code>). Nihil scribere si id machinatione agnoscere uis.';
+$lang['savedir']               = 'Documentorum seruatorum domicilium';
+$lang['start']                 = 'Nomen paginae dominicae';
+$lang['title']                 = 'Vicis titulus';
+$lang['template']              = 'Vicis forma';
+$lang['license']               = 'Sub quibus legibus uicem creare uin?';
+$lang['fullpath']              = 'Totum domicilium paginae in pedibus scribis.';
+$lang['recent']                = 'Extremae mutationes';
+$lang['breadcrumbs']           = 'Numerus uestigiorum';
+$lang['youarehere']            = 'Ordo uestigiorum';
+$lang['typography']            = 'Signa supponentes';
+$lang['htmlok']                = 'HTML aptum facere';
+$lang['phpok']                 = 'PHP aptum facere';
+$lang['dformat']               = 'Forma diei (uide paginam <a href="http://php.net/strftime">de diebus</a>)';
+$lang['signature']             = 'Subscriptio';
+$lang['toptoclevel']           = 'Gradus maior tabularum argumentorum';
+$lang['tocminheads']           = 'Minimus numerus capitum';
+$lang['maxtoclevel']           = 'Maximus numerus tabularum argumentorum';
+$lang['maxseclevel']           = 'Maxima pars gradus recensendi';
+$lang['camelcase']             = 'SignaContinua nexis apta facere';
+$lang['deaccent']              = 'Titulus paginarum abrogare';
+$lang['useheading']            = 'Capite primo ut titulo paginae uti';
+$lang['refcheck']              = 'Documenta uisiua inspicere';
+$lang['allowdebug']            = '<b>ineptum facias si non necessarium!</b> aptum facere';
+$lang['usewordblock']          = 'Malum interretiale ob uerba delere';
+$lang['indexdelay']            = 'Tempus transitum in ordinando (sec)';
+$lang['relnofollow']           = 'rel="nofollow" externis nexis uti';
+$lang['mailguard']             = 'Cursus interretiales abscondere';
+$lang['iexssprotect']          = 'Documenta nouata ob mala JavaScript uel HTML inspicere';
+$lang['showuseras']            = 'Quid, cum Sodalem, qui extremus paginam recensuit, ostendat, scribere';
+$lang['useacl']                = 'Aditus inspectionis indicibus uti';
+$lang['autopasswd']            = 'Tessera machinatione generata';
+$lang['authtype']              = 'Confirmationis finis';
+$lang['passcrypt']             = 'Ratio tesserae tuendae';
+$lang['defaultgroup']          = 'Grex communis';
+$lang['superuser']             = 'Magister\stra - grex, Sodalis uel index diuisus a uigulis sodalis1,@grex,sodalis2 cum plenis facultatibus sine ICA optionum termino';
+$lang['manager']               = 'Administrator - grex, Sodalis uel index diuisus a uigulis sodalis1,@grex,sodalis2 cum certis facultatibus';
+$lang['profileconfirm']        = 'Mutationes tessera confirmanda sunt';
+$lang['disableactions']        = 'Vicis actiones ineptas facere';
+$lang['disableactions_check']  = 'Inspicere';
+$lang['disableactions_subscription'] = 'Inscribe/Delere';
+$lang['disableactions_wikicode'] = 'Fontem uidere/Rudem transcribere';
+$lang['disableactions_other']  = 'Aliae actiones (uirgulis diuisae)';
+$lang['sneaky_index']          = 'Hic uicis omnia genera in indice inserit. Si ineptam hanc optionem facias, solum ea, quae Sodales uidere possunt, in indice erunt. Hoc suggreges et suggenera abscondere potest.';
+$lang['auth_security_timeout'] = 'Confirmationis Tempus (secundis)';
+$lang['securecookie']          = 'Formulae HTTPS mittine solum per HTTPS possunt? Ineptam hanc optio facias, si accessus uicis tutus est, sed interretis non.';
+$lang['updatecheck']           = 'Nouationes et fiducias inspicerene? Hic uicis connectere update.dokuwiki.org debes.';
+$lang['userewrite']            = 'VRL formosis uti';
+$lang['useslash']              = 'Repagula in URL, ut genera diuidas, uti';
+$lang['usedraft']              = 'Propositum in recensione machinatione seruatur';
+$lang['sepchar']               = 'Signum, quod paginas diuidit';
+$lang['canonical']             = 'VRL perfecto uti';
+$lang['fnencode']              = 'Ratio quae nomen documentorum non-ASCII codificit';
+$lang['autoplural']            = 'Pluralia in nexis inspicere';
+$lang['compression']           = 'Ratio compressionis documentis "attic"';
+$lang['cachetime']             = 'Maximum tempus formulis (sec)';
+$lang['locktime']              = 'Maximum tempus documentis inclusis (sec)';
+$lang['fetchsize']             = 'Maximum pondus (bytes), quod fetch.php ab externis onerare potest';
+$lang['notify']                = 'Adnotationis mutationes ad hunc cursum mittere';
+$lang['registernotify']        = 'De nouis Sodalibus ad hunc cursum notas mittere';
+$lang['mailfrom']              = 'Cursus interretialis, quo in cursibus uti';
+$lang['gzip_output']           = 'gzip Argumentum-Codificans xhtml uti';
+$lang['gdlib']                 = 'GD Lib forma';
+$lang['im_convert']            = 'Domicilium machinae ImageMagick\'s';
+$lang['jpg_quality']           = 'JPG compressio colorum (0-100)';
+$lang['subscribers']           = 'Inscriptionis paginarum auxilium aptus facere';
+$lang['subscribe_time']        = 'Tempus post quod inscriptionum index et summa missa sunt (sec); Hic minor quam tempus declaratum fortasse est.';
+$lang['compress']              = 'CSS et javascript dimissio';
+$lang['hidepages']             = 'Paginas congruentes abscondere (uerba regularia)';
+$lang['send404']               = 'Mitte "HTTP 404/ Pagina non reperta" si paginae non sunt.';
+$lang['sitemap']               = 'Google formam situs gignere (dies)';
+$lang['broken_iua']            = 'ignore_user_abort functio inepta estne? Hoc indicem quaestionum, quae non aptae sunt, creare non potest. IIS+PHP/CGI ineptum est. Vide <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>';
+$lang['xsendfile']             = 'X-Sendfile utine ut seruitor interretialis documenta firma creet? Tuus seruitor interretialis hunc pati debes.';
+$lang['renderer_xhtml']        = 'Quid dimittere ut hoc in principio uicis (xhtml) utaris';
+$lang['renderer__core']        = '%s (uicis nucleus)';
+$lang['renderer__plugin']      = '%s (addenda)';
+$lang['rememberme']            = 'Formulas aditus aptas facere (memento me)';
+$lang['rss_type']              = 'XML summae genus';
+$lang['rss_linkto']            = 'XML summae connectio';
+$lang['rss_content']           = 'Quid in XML summis uidere?';
+$lang['rss_update']            = 'XML summae renouationis interuallum temporis';
+$lang['recent_days']           = 'Numerus mutationum recentium tenendorum (dies)';
+$lang['rss_show_summary']      = 'XML summa titulos ostendit';
+$lang['target____wiki']        = 'Fenestra nexis internis';
+$lang['target____interwiki']   = 'Fenestra nexis inter uicem';
+$lang['target____extern']      = 'Fenestra nexis externis';
+$lang['target____media']       = 'Fenestra nexis uisiuis';
+$lang['target____windows']     = 'Fenestra nexis fenestrarum';
+$lang['proxy____host']         = 'Proxis seruitoris nomen';
+$lang['proxy____port']         = 'Proxis portus';
+$lang['proxy____user']         = 'Proxis nomen sodalis';
+$lang['proxy____pass']         = 'Proxis tessera';
+$lang['proxy____ssl']          = 'SSL ut connectas uti';
+$lang['proxy____except']       = 'Verba, ut VRL inspicias, quibus Proxis non agnoscitur.';
+$lang['safemodehack']          = 'Ad tempus conseruatio apta facere';
+$lang['ftp____host']           = 'FTP computator seruitor ad tempus seruatis';
+$lang['ftp____port']           = 'FTP ianua ad tempus seruatis';
+$lang['ftp____user']           = 'FTP Sodalis ad tempus seruatis';
+$lang['ftp____pass']           = 'FTP tessera ad tempus seruatis';
+$lang['ftp____root']           = 'FTP domicilium ad tempus seruatis';
+$lang['license_o_']            = 'Nihil electum';
+$lang['typography_o_0']        = 'neuter';
+$lang['typography_o_1']        = 'sine singulis uirgulis';
+$lang['typography_o_2']        = 'cum singulis uirgulis';
+$lang['userewrite_o_0']        = 'neuter';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki domesticus';
+$lang['deaccent_o_0']          = 'ex';
+$lang['deaccent_o_1']          = 'accentum tollere';
+$lang['deaccent_o_2']          = 'Latinis litteris';
+$lang['gdlib_o_0']             = 'GD Lib inepta';
+$lang['gdlib_o_1']             = 'Forma 1.x';
+$lang['gdlib_o_2']             = 'Machinatione inspicere';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Summa';
+$lang['rss_content_o_diff']    = 'Comparatio una';
+$lang['rss_content_o_htmldiff'] = 'Tabulae HTML formatae comparatae';
+$lang['rss_content_o_html']    = 'Pagina cum HTML';
+$lang['rss_linkto_o_diff']     = 'discrimina uidere';
+$lang['rss_linkto_o_page']     = 'pagina recensita';
+$lang['rss_linkto_o_rev']      = 'recensionum index';
+$lang['rss_linkto_o_current']  = 'hic pagina';
+$lang['compression_o_0']       = 'neuter';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'Noli uti';
+$lang['xsendfile_o_2']         = 'Praecipuus X-Sendfile';
+$lang['xsendfile_o_3']         = 'Proprietarius Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Sodalis nomen';
+$lang['showuseras_o_username'] = 'Sodalis nomen uerum';
+$lang['showuseras_o_email']    = 'Sodalis cursus interretialis (absconditus ut is tueratur)';
+$lang['showuseras_o_email_link'] = 'Sodalis cursus interretialis ut mailto: nexum';
+$lang['useheading_o_0']        = 'Numquam';
+$lang['useheading_o_navigation'] = 'Solum adspicere';
+$lang['useheading_o_content']  = 'Solum uicis argumentum';
+$lang['useheading_o_1']        = 'Semper';
+$lang['readdircache']          = 'Maximum tempus readdir (sec)';
diff --git a/wiki/lib/plugins/config/lang/lb/intro.txt b/wiki/lib/plugins/config/lang/lb/intro.txt
new file mode 100644
index 0000000..964ee85
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/lb/intro.txt
@@ -0,0 +1,7 @@
+====== Konfiguratioun ======
+
+Dëses Plugin hëlleft der bei der Konfiguratioun vun DokuWiki. Hëllef zu deenen eenzelnen Astellungen fënns de ënner [[doku>config]]. Méi Informatiounen zu dësem Plugin kriss de ënner [[doku>plugin:config]].
+
+Astellungen mat engem hellrouden Hannergrond si geséchert a kënnen net mat dësem Plugin verännert ginn. Astellungen mat hellbloem Hannergrond si Virastellungen, wäiss hannerluechte Felder weisen lokal verännert Werter un. Souwuel dié blo wéi och déi wäiss Felder kënne verännert ginn.
+
+Vergiess w.e.g. net **Späicheren** ze drécken iers de d'Säit verléiss, anescht ginn all deng Ännerungen verluer.
diff --git a/wiki/lib/plugins/config/lang/lt/intro.txt b/wiki/lib/plugins/config/lang/lt/intro.txt
new file mode 100644
index 0000000..ac3c2f6
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/lt/intro.txt
@@ -0,0 +1,7 @@
+====== Konfiguracijos Administravimas ======
+
+Naudokite šį puslapį Dokuwiki instaliacijos tvarkymui. Pagalba individualiems nustatymams [[doku>config]]. Daugiau informacijos apie šį priedą [[doku>plugin:config]].
+
+Nustatymai raudoname fone yra apsaugoti nuo pakeitimų ir negali būti pakeisti šio įrankio pagalba. Nustatymai mėlyname fone nustatyti pagal nutylėjimą, o baltame fone nustatyti lokaliai būtent šiai instaliacijai. Nustatymai mėlyname ir baltame fone gali būti keičiami.
+
+Prieš paliekant ši puslapį, nepamirškite išsaugoti pakeitimus, tai galite padaryti nuspaudę **SAVE** mygtuką, kitu atveju pakeitimai nebus išsaugoti.
diff --git a/wiki/lib/plugins/config/lang/lt/lang.php b/wiki/lib/plugins/config/lang/lt/lang.php
new file mode 100644
index 0000000..eff7f0e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/lt/lang.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Lithuanian language file
+ *
+ * @author audrius.klevas@gmail.com
+ * @author Arunas Vaitekunas <aras@fan.lt>
+ */
+$lang['lang']                  = 'Kalba';
+$lang['template']              = 'Paruoštukas';
+$lang['recent']                = 'Paskutiniai taisymai';
+$lang['disableactions_check']  = 'Patikrinti';
+$lang['xsendfile_o_1']         = 'Firminė lighthttpd antraštė (prieš 1.5 išleidimą)';
+$lang['xsendfile_o_2']         = 'Standartinė X-Sendfile antraštė';
+$lang['xsendfile_o_3']         = 'Firminė Nginx X-Accel-Redirect antraštė';
+$lang['showuseras_o_loginname'] = 'Prisijungimo vardas';
+$lang['showuseras_o_username'] = 'Vartotojo pilnas vardas';
+$lang['showuseras_o_email']    = 'Vartotojo el. pašto adresas (pasak pašto apsaugos yra netinkamas)';
+$lang['showuseras_o_email_link'] = 'Vartotojo el. pašto adresas kaip mailto: nuoroda';
+$lang['useheading_o_0']        = 'Niekada';
+$lang['useheading_o_navigation'] = 'Tik Navigacija';
+$lang['useheading_o_content']  = 'Tik Wiki Turinys';
+$lang['useheading_o_1']        = 'Visada';
diff --git a/wiki/lib/plugins/config/lang/lv/intro.txt b/wiki/lib/plugins/config/lang/lv/intro.txt
new file mode 100644
index 0000000..e4d8d45
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/lv/intro.txt
@@ -0,0 +1,7 @@
+====== Konfigurācijas vednis ======
+
+Lapā var uzdot DokuWiki instalācijas iestatījumus. Palīdzību par atsevišķiem iestatījumiem meklēt [[doku>config]]. Sīkākas ziņas par šo moduli skatīt  [[doku>plugin:config]].
+
+Ar sarkanu fonu parādītie iestatījumi ir aizsargāti un ar šo moduli nav labojami. Ar zilu fonu parādītie iestatījumi ir noklusētās vērtības, bet uz balta fona parādīti programmas lokālie iestatījumi . Gan zilos, gan baltos var labot.
+
+Pirms aizej no šīs lapas, atceries nopsiest pogu **SAGLABĀT**, lai nezustu veiktās izmaiņas.
diff --git a/wiki/lib/plugins/config/lang/lv/lang.php b/wiki/lib/plugins/config/lang/lv/lang.php
new file mode 100644
index 0000000..8caba8e
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/lv/lang.php
@@ -0,0 +1,185 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * Latvian, Lettish language file
+ *
+ * @author Oskars Pakers <oskars.pakers@gmail.com>
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['menu']                  = 'Konfigurācijas iestatījumi.';
+$lang['error']                 = 'Iestatījumi nav saglabāti, jo uzdotas aplamas vērtības. Lūdzu pārskatīt izmaiņas un saglabāt atkārtoti.
+<br /> Aplamās vērtības izceltas sarkanā rāmī.';
+$lang['updated']               = 'Iestatījumi veiksmīgi saglabāti.';
+$lang['nochoice']              = '(citu iespēju nav)';
+$lang['locked']                = 'Iestatījumu fails nav grozāms, ja tā nevajag būt, <br />
+pārliecinies, ka ir pareizs lokālo iestatījuma faila vārds un tiesības.';
+$lang['danger']                = 'Bīstami: Šī parametra maiņa var padarīt wiki sistēmu un konfigurācijas izvēlni nepieejamu.';
+$lang['warning']               = 'Brīdinājums: Šī parametra maiņa var izraisīt negaidītu programmas uzvedību.';
+$lang['security']              = 'Drošības brīdinājums: Šī parametra maiņa var būt riskanta drošībai.';
+$lang['_configuration_manager'] = 'Konfigurācijas pārvaldnieks';
+$lang['_header_dokuwiki']      = 'Dokuwiki iestatījumi';
+$lang['_header_plugin']        = 'Moduļu iestatījumi';
+$lang['_header_template']      = 'Šablonu iestatījumi';
+$lang['_header_undefined']     = 'Citi iestatījumi';
+$lang['_basic']                = 'Pamatiestatījumi';
+$lang['_display']              = 'Izskata iestatījumi';
+$lang['_authentication']       = 'Autentifikācija';
+$lang['_anti_spam']            = 'Pretspama iestatījumi';
+$lang['_editing']              = 'Labošanas iestatījumi';
+$lang['_links']                = 'Saišu iestatījumi';
+$lang['_media']                = 'Mēdiju iestatījumi';
+$lang['_notifications']        = 'Brīdinājumu iestatījumi';
+$lang['_advanced']             = 'Smalkāka iestatīšana';
+$lang['_network']              = 'Tīkla iestatījumi';
+$lang['_msg_setting_undefined'] = 'Nav atrodami iestatījumu metadati';
+$lang['_msg_setting_no_class'] = 'Nav iestatījumu klases';
+$lang['_msg_setting_no_default'] = 'Nav noklusētās vērtības';
+$lang['title']                 = 'Wiki virsraksts';
+$lang['start']                 = 'Sākumlapas vārds';
+$lang['lang']                  = 'Valoda';
+$lang['template']              = 'Šablons';
+$lang['license']               = 'Ar kādu licenci saturs tiks publicēts?';
+$lang['savedir']               = 'Direktorija datu glabāšanai';
+$lang['basedir']               = 'Saknes direktorija';
+$lang['baseurl']               = 'Saknes adrese (URL)';
+$lang['dmode']                 = 'Tiesības izveidotajām direktorijām';
+$lang['fmode']                 = 'Tiesības izveidotajiem failiem';
+$lang['allowdebug']            = 'Ieslēgt atkļūdošanu. <b>Izslēdz!</b>';
+$lang['recent']                = 'Jaunākie grozījumi';
+$lang['recent_days']           = 'Cik dienas glabāt jaunākās izmaiņas';
+$lang['breadcrumbs']           = 'Apmeklējumu vēstures garums';
+$lang['youarehere']            = 'Rādīt "tu atrodies šeit"';
+$lang['fullpath']              = 'Norādīt kājenē pilnu lapas ceļu';
+$lang['typography']            = 'Veikt tipogrāfijas aizvietošanu';
+$lang['dformat']               = 'Datuma formāts (sk. PHP <a href="http://php.net/strftime">strftime</a> funkciju)';
+$lang['signature']             = 'Paraksts';
+$lang['showuseras']            = 'Kā rādīt pēdējo lietotāju, ka labojis lapu';
+$lang['toptoclevel']           = 'Satura rādītāja pirmais līmenis';
+$lang['tocminheads']           = 'Mazākais virsrakstu skaits, no kuriem jāveido satura rādītājs.';
+$lang['maxtoclevel']           = 'Satura rādītāja dziļākais līmenis';
+$lang['maxseclevel']           = 'Dziļākais sekciju labošanas līmenis';
+$lang['camelcase']             = 'Lietot saitēm CamelCase';
+$lang['deaccent']              = 'Lapu nosaukumu transliterācija';
+$lang['useheading']            = 'Izmantot pirmo virsrakstu lapu nosaukumiem';
+$lang['sneaky_index']          = 'Pēc noklusētā DokuWiki lapu sarakstā parāda visu nodaļu lapas. Ieslēdzot šo parametru, noslēps tās nodaļas, kuras apmeklētājam nav tiesības lasīt. Bet tad  tiks arī paslēptas dziļākas, bet atļautas nodaļas. Atsevišķos pieejas tiesību konfigurācijas gadījumos lapu saraksts var nedarboties.';
+$lang['hidepages']             = 'Slēpt lapas (regulāras izteiksmes)';
+$lang['useacl']                = 'Izmantot piekļuves tiesības';
+$lang['autopasswd']            = 'Automātiski ģenerēt paroles';
+$lang['authtype']              = 'Autentifikācijas mehānisms';
+$lang['passcrypt']             = 'Paroļu šifrēšanas metode';
+$lang['defaultgroup']          = 'Noklusētā grupa';
+$lang['superuser']             = 'Administrators - grupa, lietotājs vai to saraksts ( piem.: user1,@group1,user2), kam ir pilnas tiesības.';
+$lang['manager']               = 'Pārziņi - grupa, lietotājs vai to saraksts ( piem.: user1,@group1,user2), kam ir pieeja pie dažām administrēšanas funkcijām.';
+$lang['profileconfirm']        = 'Profila labošanai vajag paroli';
+$lang['rememberme']            = 'Atļaut pastāvīgas ielogošanās sīkdatnes ("atceries mani")';
+$lang['disableactions']        = 'Bloķēt Dokuwiki darbības';
+$lang['disableactions_check']  = 'atzīmēt';
+$lang['disableactions_subscription'] = 'abonēt/atteikties';
+$lang['disableactions_wikicode'] = 'skatīt/eksportēt izejtekstu';
+$lang['disableactions_other']  = 'citas darbības (atdalīt ar komatiem)';
+$lang['auth_security_timeout'] = 'Autorizācijas drošības intervāls (sekundēs)';
+$lang['securecookie']          = 'Vai pa HTTPS sūtāmās sīkdatnes sūtīt tikai pa HTTPS? Atslēdz šo iespēju, kad tikai pieteikšanās wiki sistēmā notiek pa SSL šifrētu savienojumu, bet skatīšana  - pa nešifrētu.';
+$lang['usewordblock']          = 'Bloķēt spamu pēc slikto vārdu saraksta.';
+$lang['relnofollow']           = 'rel="nofollow" ārējām saitēm';
+$lang['indexdelay']            = 'Laika aizture pirms indeksācijas (sekundēs)';
+$lang['mailguard']             = 'Slēpt epasta adreses';
+$lang['iexssprotect']          = 'Pārbaudīt, vai augšupielādētajā failā nav nav potenciāli bīstamā JavaScript vai HTML koda.';
+$lang['usedraft']              = 'Labojot automātiski saglabāt melnrakstu';
+$lang['htmlok']                = 'Atļaut iekļautu HTTP';
+$lang['phpok']                 = 'Atļaut iekļautu PHP';
+$lang['locktime']              = 'Bloķēšanas failu maksimālais vecums';
+$lang['cachetime']             = 'Bufera maksimālais vecums (sek)';
+$lang['target____wiki']        = 'Kur atvērt iekšējās saites';
+$lang['target____interwiki']   = 'Kur atvērt saites strap wiki';
+$lang['target____extern']      = 'Kur atvērt ārējās saites';
+$lang['target____media']       = 'Kur atvērt mēdiju saites';
+$lang['target____windows']     = 'Kur atvērt saites uz tīkla mapēm';
+$lang['refcheck']              = 'Pārbaudīt saites uz mēdiju failiem';
+$lang['gdlib']                 = 'GD Lib versija';
+$lang['im_convert']            = 'Ceļš uz ImageMagick convert rīku';
+$lang['jpg_quality']           = 'JPG saspiešanas kvalitāte';
+$lang['fetchsize']             = 'Maksimālais faila apjoms baitos, ko fetch.php var ielādēt no interneta.';
+$lang['subscribers']           = 'Atļaut abonēt izmaiņas';
+$lang['subscribe_time']        = 'Pēc cik ilga laika izsūtīt abonētos sarakstus un kopsavilkumus (sekundes); jābūt mazākam par laiku, kas norādīts "recent_days".';
+$lang['notify']                = 'Nosūtīt izmaiņu paziņojumu uz epasta adresi';
+$lang['registernotify']        = 'Nosūtīt paziņojumu par jauniem lietotājiem uz epasta adresi';
+$lang['mailfrom']              = 'Epasta adrese automātiskajiem paziņojumiem';
+$lang['mailprefix']            = 'E-pasta temata prefikss automātiskajiem paziņojumiem';
+$lang['sitemap']               = 'Lapas karte priekš Google (dienas)';
+$lang['rss_type']              = 'XML barotnes veids';
+$lang['rss_linkto']            = 'XML barotnes uz ';
+$lang['rss_content']           = 'Ko attēlot XML barotnē?';
+$lang['rss_update']            = 'XML barotnes atjaunošanas intervāls (sec)';
+$lang['rss_show_summary']      = 'Rādīt visrakstos XML barotnes kopsavilkumu ';
+$lang['updatecheck']           = 'Pārbaudīt, vai pieejami atjauninājumi un drošības brīdinājumi? Dokuwiki sazināsies ar update.dokuwiki.org';
+$lang['userewrite']            = 'Ērti lasāmas adreses (URL)';
+$lang['useslash']              = 'Lietot slīpiņu  par URL atdalītāju';
+$lang['sepchar']               = 'Lapas nosaukuma vārdu atdalītājs';
+$lang['canonical']             = 'Lietot kanoniskus URL';
+$lang['fnencode']              = 'Ne ASCII failvārdu kodēšanas metode:';
+$lang['autoplural']            = 'Automātisks daudzskaitlis';
+$lang['compression']           = 'Saspiešanas metode vecajiem failiem';
+$lang['gzip_output']           = 'Lietot gzip Content-Encoding priekš xhtml';
+$lang['compress']              = 'Saspiest CSS un javascript failus';
+$lang['send404']               = 'Par neesošām lapām atbildēt "HTTP 404/Page Not Found" ';
+$lang['broken_iua']            = 'Varbūt tavā serverī nedarbojas funkcija ignore_user_abort? Tā dēļ var nestādāt meklēšanas indeksācija. Šī problēma sastopama, piemēram, IIS ar PHP/CGI. Papildus informāciju skatīt <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Kļūdā Nr.852</a>.';
+$lang['xsendfile']             = 'Lietot X-Sendfile virsrakstu, augšupielādējot failu serverī? ';
+$lang['renderer_xhtml']        = 'Galveno (xhtml) wiki saturu renderēt ar ';
+$lang['renderer__core']        = '%s (dokuwiki kodols)';
+$lang['renderer__plugin']      = '%s (modulis)';
+$lang['proxy____host']         = 'Proxy servera vārds';
+$lang['proxy____port']         = 'Proxy ports';
+$lang['proxy____user']         = 'Proxy lietotāja vārds';
+$lang['proxy____pass']         = 'Proxy parole';
+$lang['proxy____ssl']          = 'Lietot SSL savienojumu ar proxy';
+$lang['proxy____except']       = 'Regulārā izteiksme tiem URL, kam nevar lietot proxy.';
+$lang['safemodehack']          = 'Lietot safemode apeju';
+$lang['ftp____host']           = 'FTP serveris safemode apejai';
+$lang['ftp____port']           = 'FTP ports safemode apejai';
+$lang['ftp____user']           = 'FTP lietotājvārds safemode apejai';
+$lang['ftp____pass']           = 'FTP parole safemode apejai';
+$lang['ftp____root']           = 'FTP saknes diektorija safemode apejai';
+$lang['license_o_']            = 'Ar nekādu';
+$lang['typography_o_0']        = 'neko';
+$lang['typography_o_1']        = 'tikai dubultpēdiņas';
+$lang['typography_o_2']        = 'visas pēdiņas (ne vienmēr strādā)';
+$lang['userewrite_o_0']        = 'nē';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki līdzekļi';
+$lang['deaccent_o_0']          = 'nē';
+$lang['deaccent_o_1']          = 'atmest diakritiku';
+$lang['deaccent_o_2']          = 'pārrakstīt latīņu burtiem';
+$lang['gdlib_o_0']             = 'GD Lib nav pieejama';
+$lang['gdlib_o_1']             = 'versija 1.x';
+$lang['gdlib_o_2']             = 'noteikt automātiksi';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstract';
+$lang['rss_content_o_diff']    = 'apvienotu diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formatētu diff tabulu';
+$lang['rss_content_o_html']    = 'pilnu HTML lapas saturu';
+$lang['rss_linkto_o_diff']     = 'atšķirības';
+$lang['rss_linkto_o_page']     = 'grozītās lapas';
+$lang['rss_linkto_o_rev']      = 'grozījumu sarakstu';
+$lang['rss_linkto_o_current']  = 'patreizējo lapu';
+$lang['compression_o_0']       = 'nav';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nelietot';
+$lang['xsendfile_o_1']         = 'lighttpd  (pirms laidiena 1.5) veida galvene';
+$lang['xsendfile_o_2']         = 'Standarta X-Sendfile galvene';
+$lang['xsendfile_o_3']         = 'Nginx X-Accel-Redirect veida galvene';
+$lang['showuseras_o_loginname'] = 'Login vārds';
+$lang['showuseras_o_username'] = 'Pilns lietotāja vārds';
+$lang['showuseras_o_email']    = 'Lietotāja epasta adrese (slēpta ar norādīto paņēmienu)';
+$lang['showuseras_o_email_link'] = 'Lietot epasta adreses kā mailto: saites';
+$lang['useheading_o_0']        = 'Nekad';
+$lang['useheading_o_navigation'] = 'Tikai navigācija';
+$lang['useheading_o_content']  = 'Tikai Wiki saturs';
+$lang['useheading_o_1']        = 'Vienmēr';
+$lang['readdircache']          = 'Maksimālais readdir kesš dzīves laiks (sek.)';
diff --git a/wiki/lib/plugins/config/lang/mr/intro.txt b/wiki/lib/plugins/config/lang/mr/intro.txt
new file mode 100644
index 0000000..e068295
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/mr/intro.txt
@@ -0,0 +1,10 @@
+====== कॉन्फिगरेशन व्यवस्थापक ====== 
+
+तुमच्या डॉक्युविकीची सेटिंग बदलान्यासाथी हे पान वापरा.
+विशिष्ठ सेटिंग विषयी माहिती पाहिजे असल्यास [[doku>config]] पहा.
+प्लगिन विषयी अधिक माहितीसाठी [[doku>plugin:config]] पहा.
+हलक्या लाल पार्श्वभूमिमधे दाखवलेले सेटिंग सुरक्षित आहेत व या प्लगिन द्वारा बदलता येणार नाहीत.
+निळ्या पार्श्वभूमीमधे दाखवलेले सेटिंग आपोआप सेट होणार्या किमती आहेत आणि पांढर्या पार्श्वभूमीमधे 
+दाखवलेले सेटिंग या इन्स्टॉलेशनसाठी ख़ास सेट केलेले आहेत. निळे आणि पांढरे दोन्ही सेटिंग बदलता येतील.
+
+ह्या पानावरून बाहर जाण्याआधी "Save" चे बटन क्लिक करायला विसरू नका नाहीतर सर्व बदल नाहीसे होतील.
diff --git a/wiki/lib/plugins/config/lang/mr/lang.php b/wiki/lib/plugins/config/lang/mr/lang.php
new file mode 100644
index 0000000..5dbb8ec
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/mr/lang.php
@@ -0,0 +1,177 @@
+<?php
+/**
+ * Marathi language file
+ *
+ * @author ghatothkach@hotmail.com
+ * @author Padmanabh Kulkarni <kulkarnipadmanabh@gmail.com>
+ * @author Padmanabh Kulkarni<kulkarnipadmanabh@gmail.com>
+ * @author shantanoo@gmail.com
+ */
+$lang['menu']                  = 'कॉन्फिगरेशन सेटिंग';
+$lang['error']                 = 'चुकीचा शब्द टाकल्यामुळे सेटिंग अद्ययावत केलेली नाहीत. कृपया तुमचे बदल परत तपासा आणि परत सबमिट करा. <br /> चुकीच्या शब्दांभोवती लाल बॉर्डर दाखवली जाईल.';
+$lang['updated']               = 'सेटिंग अद्ययावत केली आहेत.';
+$lang['nochoice']              = '( इतर काही पर्याय नाहीत )';
+$lang['locked']                = 'सेटिंगची फाइल अद्ययावत करू शकलो नाही. जर हे सहेतुक नसेल तर, <br />
+सेटिंग च्या फाइल चे नाव व त्यावरील परवानग्या बरोबर असल्याची खात्री करा.';
+$lang['danger']                = 'सावधान : हा पर्याय बदलल्यास तुमची विकी आणि तिचे कॉनफिगरेशन निकामी होऊ शकते.';
+$lang['warning']               = 'सावघान: येथील पर्याय बदल्यास, अनपेक्षीत गोष्टी होऊ शकतात.';
+$lang['security']              = 'सुरक्षा संबंधी सूचना : हा पर्याय बदलल्यास तुमची साईट असुरक्षित होऊ शकते.';
+$lang['_configuration_manager'] = 'कॉन्फिगरेशन व्यवस्थापक';
+$lang['_header_dokuwiki']      = 'डॉक्युविकि सेटिंग';
+$lang['_header_plugin']        = 'प्लगिन सेटिंग';
+$lang['_header_template']      = 'टेम्पलेट (नमुना) सेटिंग';
+$lang['_header_undefined']     = 'अनिश्चित सेटिंग';
+$lang['_basic']                = 'पायाभूत सेटिंग';
+$lang['_display']              = 'डिसप्ले सेटिंग';
+$lang['_authentication']       = 'अधिकृत करण्याविषयी सेटिंग';
+$lang['_anti_spam']            = 'भंकस-विरोधी सेटिंग';
+$lang['_editing']              = 'संपादन सेटिंग';
+$lang['_links']                = 'लिंक सेटिंग';
+$lang['_media']                = 'दृक्श्राव्य माध्यम सेटिंग';
+$lang['_advanced']             = 'सविस्तर सेटिंग';
+$lang['_network']              = 'नेटवर्क सेटिंग';
+$lang['_msg_setting_undefined'] = 'सेटिंगविषयी उप-डेटा उपलब्ध नाही.';
+$lang['_msg_setting_no_class'] = 'सेटिंगचा क्लास उपलब्ध नाही';
+$lang['_msg_setting_no_default'] = 'आपोआप किम्मत नाही';
+$lang['fmode']                 = 'फाइल निर्मिती मोड';
+$lang['dmode']                 = 'डिरेक्टरी निर्मिती मोड';
+$lang['lang']                  = 'भाषा';
+$lang['basedir']               = 'पायाभूत डिरेक्टरी';
+$lang['baseurl']               = 'पायाभूत URL';
+$lang['savedir']               = 'डेटा साठवण्यासाठीची डिरेक्टरी';
+$lang['start']                 = 'सुरुवातीच्या पानाचे नाव';
+$lang['title']                 = 'विकीचे शीर्षक';
+$lang['template']              = 'नमुना';
+$lang['license']               = 'कुठल्या लायसंसच्या अंतर्गत तुमचा मजकूर रिलीज़ केला गेला पाहिजे ?';
+$lang['fullpath']              = 'पानांचा पूर्ण पत्ता फूटर मधे दाखव';
+$lang['recent']                = 'अलीकडील बदल';
+$lang['breadcrumbs']           = 'ब्रेडक्रम्बची संख्या';
+$lang['youarehere']            = 'प्रतवार ब्रेडक्रम्ब';
+$lang['typography']            = 'अनवधानाने झालेल्या चुका बदला';
+$lang['htmlok']                = 'अंतर्गत HTML टाकायची परवानगी असू दे';
+$lang['phpok']                 = 'अंतर्गत PHP टाकायची परवानगी असू दे';
+$lang['dformat']               = 'दिनांकाची पद्धत ( PHP चं <a href="http://php.net/strftime">strftime</a> हे फंक्शन पाहा )';
+$lang['signature']             = 'हस्ताक्षर';
+$lang['toptoclevel']           = 'अनुक्रमणिकेची सर्वोच्च पातळी';
+$lang['tocminheads']           = 'कमीत कमी किती शीर्षके असल्यास अनुक्रमणिका बनवावी';
+$lang['maxtoclevel']           = 'अनुक्रमणिकेची जास्तीत जास्त पातळी  ';
+$lang['maxseclevel']           = 'विभागीय संपादनाची जास्तीतजास्त पातळी';
+$lang['camelcase']             = 'लिंकसाठी कॅमलकेस वापरा.';
+$lang['deaccent']              = 'सरळ्सोट पृष्ठ नाम';
+$lang['useheading']            = 'पहिलं शीर्षक पृष्ठ नाम म्हणुन वापरा';
+$lang['refcheck']              = 'दृक्श्राव्य माध्यमाचा संदर्भ तपासा';
+$lang['allowdebug']            = 'डिबगची परवानगी <b> गरज नसल्यास बंद ठेवा !</b>';
+$lang['usewordblock']          = 'भंकस मजकूर थोपवण्यासाठी शब्दसमुह वापरा';
+$lang['indexdelay']            = 'सूचीकरणापूर्वीचा अवकाश ( सेकंदात )';
+$lang['relnofollow']           = 'बाह्य लिन्कसाठी rel=nofollow  वापरा';
+$lang['mailguard']             = 'ईमेल दुर्बोध करा';
+$lang['iexssprotect']          = 'अपलोड केलेल्या फाइल हानिकारक जावास्क्रिप्ट किंवा HTML साठी तपासा';
+$lang['showuseras']            = 'पानाचं शेवटचं संपादन करणार्या सदस्याला काय दाखवायचं';
+$lang['useacl']                = 'ACL  वापरा';
+$lang['autopasswd']            = 'पासवर्ड आपोआप बनवा';
+$lang['authtype']              = 'अधिकृत करण्याच्या व्यवस्थेचे बॅक-एंड';
+$lang['passcrypt']             = 'पासवर्ड गुप्त ठेवण्याची पद्धत';
+$lang['defaultgroup']          = 'डिफॉल्ट गट';
+$lang['superuser']             = 'सुपर सदस्य - गट, सदस्य किंवा स्वल्पविरामाने अलग केलेली यादी ( उदा. सदस्य१, गट१, सदस्य२ ) ज्यांना ACL च्या सेटिंग व्यतिरिक्त सर्व पानांवर पूर्ण हक्क असतो.';
+$lang['manager']               = 'व्यवस्थापक - गट, सदस्य किंवा स्वल्पविरामाने अलग केलेली यादी ( उदा. सदस्य१, गट१, सदस्य२ ) ज्यांना व्यवस्थापनाच्या निवडक सुविधा उपलब्ध असतात.';
+$lang['profileconfirm']        = 'प्रोफाइल मधील बदल पासवर्ड वापरून नक्की करा';
+$lang['disableactions']        = 'डॉक्युविकीच्या क्रिया बंद ठेवा';
+$lang['disableactions_check']  = 'तपासा';
+$lang['disableactions_subscription'] = 'सब्सक्राईब / अन्-सब्सक्राईब';
+$lang['disableactions_wikicode'] = 'स्त्रोत पहा / कच्च्या स्वरूपात एक्सपोर्ट करा';
+$lang['disableactions_other']  = 'इतर क्रिया ( स्वल्पविरामाने अलग केलेल्या )';
+$lang['sneaky_index']          = 'सूची दृश्यामधे डिफॉल्ट स्वरूपात डॉक्युविकी सगळे नेमस्पेस दाखवते. हा पर्याय चालू केल्यास सदस्याला वाचण्याची परवानगी नसलेले नेमस्पेस दिसणार नाहीत. यामुळे परवानगी असलेले उप - नेमस्पेस न दिसण्याची शक्यता आहे. यामुळे काही विशिष्ठ ACL सेटिंगसाठी सूची वापरता येण्यासारखी राहणार नाही.';
+$lang['auth_security_timeout'] = 'अधिकृत करण्याच्या प्रक्रियेची कालमर्यादा';
+$lang['securecookie']          = 'HTTPS वापरून सेट केलेले कूकीज ब्राउजरने HTTPS द्वाराच पाठवले पाहिजेत का? जर तुमच्या विकीचं फ़क्त लॉगिन पानच SSL वापरून सुरक्षित केलं असेल व पानांचं ब्राउजिंग असुरक्षित असेल तर हा पर्याय चालू करू नका.';
+$lang['updatecheck']           = 'अपडेट आणि सुरक्षिततेविशयी सूचनान्वर पाळत ठेऊ का? या सुविधेसाठी डॉक्युविकीला update.dokuwiki.org शी संपर्क साधावा लागेल.';
+$lang['userewrite']            = 'छान छान URL वापर';
+$lang['useslash']              = 'URL  मधे नेमस्पेस अलग करण्यासाठी \'/\' चिह्न वापरा';
+$lang['usedraft']              = 'संपादन करताना मसुदा आपोआप सुरक्षित करा';
+$lang['sepchar']               = 'पानाच्या नावातील शब्द अलग करण्याचे चिह्न';
+$lang['canonical']             = 'पूर्णपणे सुटसुटीत URL वापरा';
+$lang['autoplural']            = 'लिंकमधिल अनेकवचने तपासा';
+$lang['compression']           = 'अडगळीतल्या फाइल संकुचित करण्याची पद्धत';
+$lang['cachetime']             = 'कॅशचे जास्तीतजास्त वयोमान ( सेकंदात )';
+$lang['locktime']              = 'लॉक फाइलचे जास्तीतजास्त वयोमान ( सेकंदात )';
+$lang['fetchsize']             = 'बाह्य स्त्रोताकडून जास्तीतजास्त किती डाउनलोड fecth.php  करू शकतो ( बाइट्स मधे )';
+$lang['notify']                = 'बदलाच्या सूचना ह्या ईमेल वर पाठवा';
+$lang['registernotify']        = 'नवीन नोंदणी केलेल्या सदस्यांची माहिती ह्या ईमेल वर पाठवा';
+$lang['mailfrom']              = 'आपोआप ईमेल पाठवण्यासाठी वापरायचा ईमेल';
+$lang['gzip_output']           = 'xhtml साठी gzip Content-encoding  वापरा';
+$lang['gdlib']                 = 'gzip लायब्ररीची आवृत्ती';
+$lang['im_convert']            = 'ImageMagik च्या परिवर्तन करणार्या टूलचा पाथ';
+$lang['jpg_quality']           = 'JPG संकुचित करण्याचा दर्जा ( १ - १०० )';
+$lang['subscribers']           = 'पानाची पुरवणी देण्याची सुविधा चालू करा';
+$lang['compress']              = 'CSS आणि जावास्क्रिप्टचे आउट्पुट संकुचित करा';
+$lang['hidepages']             = 'समान पाने लपवा';
+$lang['send404']               = 'अस्तित्वात नसलेल्या पानांसाठी "HTTP 404/Page not found" संदेश पाठवा';
+$lang['sitemap']               = 'गूगल साईट-मॅप बनवा';
+$lang['broken_iua']            = 'ignore_user_abort फंक्शन तुमच्या सिस्टम वर चालत नाही का? यामुळे शोध सूची निकामी होऊ शकते. IIS + PHP/CGI वर हे काम करत नाही हे नक्की झाले आहे. अधिक माहितीसाठी <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">बग ८५२</a> पहा.';
+$lang['xsendfile']             = 'सर्वर कडून स्थिर फाइल पाठवली जाण्यासाठी X-Sendfile शीर्षक ( header ) वापरू का ? तुमच्या वेब सर्वर मधे ही सुविधा असली पाहिजे.';
+$lang['renderer_xhtml']        = 'मुख्य ( xhtml ) विकी आउट्पुट साथी वापरायचा चित्रक ( renderer )';
+$lang['renderer__core']        = '%s (डॉक्युविकीचा मूलभूत)';
+$lang['renderer__plugin']      = '%s (प्लगिन)';
+$lang['rememberme']            = 'कायमच्या लॉगिन कुकीजला परवानगी दया ( लक्षात ठेवा )';
+$lang['rss_type']              = 'XML पुरवणीचा प्रकार';
+$lang['rss_linkto']            = 'XML पुरवणीची लिंक येथे जाते';
+$lang['rss_content']           = 'XML पुरवणीतल्या मुद्द्यामधे काय काय दाखवायचं?';
+$lang['rss_update']            = 'XML पुरवणी अद्ययावत करण्याचा कालखंड ( सेकंदात )';
+$lang['recent_days']           = 'किती अलीकडील बदल ठेवायचे? ( दिवसात )';
+$lang['rss_show_summary']      = 'XML पुरावानीच्या शीर्षकात सारांश दाखवा';
+$lang['target____wiki']        = 'अंतर्गत लिंकसाठीची विंडो';
+$lang['target____interwiki']   = 'आंतरविकि लिंकसाठीची विंडो';
+$lang['target____extern']      = 'बाह्य लिंकसाठीची विंडो';
+$lang['target____media']       = 'दृक्श्राव्य लिंकसाठीची विंडो';
+$lang['target____windows']     = 'विंडो लिंकसाठीची विंडो';
+$lang['proxy____host']         = 'छद्म ( proxy ) सर्वरचे नाव';
+$lang['proxy____port']         = 'छद्म ( proxy ) सर्वरचे पोर्ट';
+$lang['proxy____user']         = 'छद्म ( proxy ) सर्वरचे सदस्यनाम';
+$lang['proxy____pass']         = 'छद्म ( proxy ) सर्वरचा पासवर्ड';
+$lang['proxy____ssl']          = 'छद्म सर्वरला संपर्क साधण्यासाठी SSL वापरा';
+$lang['safemodehack']          = 'सेफमोड़ हॅक चालू करा';
+$lang['ftp____host']           = 'सेफमोड़ हॅक साठी FTP सर्वर';
+$lang['ftp____port']           = 'सेफमोड़ हॅक साठी FTP पोर्ट';
+$lang['ftp____user']           = 'सेफमोड़ हॅक साठी FTP सदस्यनाम';
+$lang['ftp____pass']           = 'सेफमोड़ हॅक साठी FTP पासवर्ड';
+$lang['ftp____root']           = 'सेफमोड़ हॅक साठी FTP मूळ डिरेक्टरी';
+$lang['license_o_']            = 'काही निवडले नाही';
+$lang['typography_o_0']        = 'काही नाही';
+$lang['typography_o_1']        = 'फक्त दुहेरी अवतरण चिह्न';
+$lang['typography_o_2']        = 'सर्व प्रकारची अवतरण चिन्हे ( नेहेमी चालेलच असं नाही )';
+$lang['userewrite_o_0']        = 'कुठेही नाही';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'डॉक्युविकी अंतर्गत';
+$lang['deaccent_o_0']          = 'बंद';
+$lang['deaccent_o_1']          = 'एक्सेंट काढून टाका';
+$lang['deaccent_o_2']          = 'रोमन लिपित बदला';
+$lang['gdlib_o_0']             = 'GD Lib  उपलब्ध नाही';
+$lang['gdlib_o_1']             = 'आवृत्ती १.x';
+$lang['gdlib_o_2']             = 'आपोआप ओळखा';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'सारांश';
+$lang['rss_content_o_diff']    = 'एकत्रित फरक';
+$lang['rss_content_o_htmldiff'] = 'HTML पद्धतीचा फरकांचा तक्ता';
+$lang['rss_content_o_html']    = 'पानाचा पूर्ण HTML मजकूर';
+$lang['rss_linkto_o_diff']     = 'फरक दृश्य';
+$lang['rss_linkto_o_page']     = 'उजळणी केलेले पान';
+$lang['rss_linkto_o_rev']      = 'आवृत्त्यांची यादी';
+$lang['rss_linkto_o_current']  = 'सद्य पान';
+$lang['compression_o_0']       = 'काही नाही';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'वापरू नका';
+$lang['xsendfile_o_1']         = 'lighttpd चा प्रोप्रायटरी शीर्षक (हेडर)';
+$lang['xsendfile_o_2']         = 'स्टॅण्डर्ड X-sendfile शीर्षक';
+$lang['xsendfile_o_3']         = ' Nginx चा प्रोप्रायटरी Accel-Redirect शीर्षक';
+$lang['showuseras_o_loginname'] = 'लॉगिन  नाम';
+$lang['showuseras_o_username'] = 'सदस्याचे पूर्ण नाव';
+$lang['showuseras_o_email']    = 'सदस्याचा ईमेल ( मेल सुरक्षिततेच्या सेटिंग अनुसार दुर्बोध केलेला ) ';
+$lang['showuseras_o_email_link'] = 'सदस्याचा ईमेल maito: लिंक   स्वरूपात';
+$lang['useheading_o_0']        = 'कधीच नाही';
+$lang['useheading_o_navigation'] = 'फ़क्त मार्गदर्शन';
+$lang['useheading_o_content']  = 'फ़क्त विकी मजकूर';
+$lang['useheading_o_1']        = 'नेहमी';
diff --git a/wiki/lib/plugins/config/lang/ne/lang.php b/wiki/lib/plugins/config/lang/ne/lang.php
new file mode 100644
index 0000000..ffa7713
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ne/lang.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Nepali language file
+ *
+ * @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
+ * @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
+ * @author Saroj Dhakal<lotusnagarkot@yahoo.com>
+ */
+$lang['nochoice']              = '(अरु विकल्पहरु अनुपलव्ध)';
+$lang['_configuration_manager'] = 'नियन्त्रण व्यवस्थापक';
+$lang['_header_dokuwiki']      = 'DokuWiki सेटिंङ्ग';
+$lang['_header_plugin']        = 'प्लगइन सेटिंङ्ग';
+$lang['_header_template']      = 'टेम्प्लेट सेटिंङ्ग';
+$lang['_header_undefined']     = 'नखुलेको सेटिंङ्ग';
+$lang['_basic']                = 'आधारभूत सेटिंङ्ग';
+$lang['_display']              = 'प्रदर्शन सेटिंङ्ग';
+$lang['_authentication']       = 'आधिकारिकता 	सेटिंङ्ग';
+$lang['_anti_spam']            = 'स्प्याम विरुद्धको सेटिंङ्ग';
+$lang['_editing']              = 'सम्पादन सेटिंङ्ग';
+$lang['_links']                = 'लिङ्क सेटिंङ्ग';
+$lang['_media']                = 'मिडिया सेटिंङ्ग';
+$lang['_advanced']             = 'विशिष्ठ सेटिंङ्ग';
+$lang['_network']              = 'सञ्जाल सेटिंङ्ग';
+$lang['_msg_setting_undefined'] = 'सेटिंङ्ग मेटाडाटा नभएको';
+$lang['_msg_setting_no_class'] = 'सेटिंङ्ग वर्ग नभएको';
+$lang['_msg_setting_no_default'] = 'कुनै पूर्व निर्धारित मान छैन ।';
+$lang['fmode']                 = 'फाइल निर्माण स्थिति';
+$lang['dmode']                 = 'डाइरेक्टरी निर्माण स्थिति';
+$lang['lang']                  = 'भाषा';
+$lang['basedir']               = 'आधार डाइरेक्टरी';
+$lang['baseurl']               = 'आधार URL';
+$lang['savedir']               = 'सामग्री वचत गर्ने डाइरेक्टरी';
+$lang['start']                 = 'पृष्ट नाम सुरुगर्नुहोस्';
+$lang['title']                 = 'विकि शिर्षक';
+$lang['template']              = 'ढाँचा';
+$lang['license']               = 'कुन प्रमाण पत्रको आधारमा सामग्री प्रकाशन गरिनु पर्छ ?';
+$lang['fullpath']              = 'पष्ठको पूरा बाटो निम्नशिर्षकमा देखाउने';
+$lang['recent']                = 'हालैको परिवर्तन';
+$lang['htmlok']                = 'इम्बेडगरिएको HTML खुला गर्नुहोस ।';
+$lang['phpok']                 = 'इम्बेडगरिएको PHP खुला गर्नुहोस ।';
+$lang['signature']             = 'दस्तखत';
+$lang['renderer__core']        = '	%s (dokuwiki core)';
+$lang['renderer__plugin']      = '	%s (plugin)';
+$lang['rss_type']              = 'XML फिड प्रकार';
+$lang['rss_linkto']            = 'को XML फिड';
+$lang['gdlib_o_1']             = 'संस्करण १.x';
+$lang['gdlib_o_2']             = 'आफै पत्तालगाउनु होस् ';
+$lang['rss_type_o_rss']        = 'आरसस ०॒.९१';
+$lang['rss_type_o_rss1']       = 'आरसस १.०';
+$lang['rss_type_o_rss2']       = 'आरसस २.०';
+$lang['rss_type_o_atom']       = 'एटम ०.३';
+$lang['rss_type_o_atom1']      = 'एटम १.०';
+$lang['rss_content_o_abstract'] = 'सारांस';
+$lang['rss_content_o_diff']    = 'एकिकृत फरक';
+$lang['rss_content_o_htmldiff'] = 'HTML ढाँचाको फरक सुची';
+$lang['rss_content_o_html']    = 'पूरा HTML पृष्टमा रहेको वस्तु';
+$lang['rss_linkto_o_diff']     = 'फरक अवलोकन';
+$lang['rss_linkto_o_rev']      = 'पुन:संस्करण सुची';
+$lang['rss_linkto_o_current']  = 'चालु पृष्ठ';
+$lang['compression_o_0']       = 'कुनै पनि होइन ';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'प्रयोग नगर्नुहोस्';
+$lang['showuseras_o_loginname'] = 'प्रवेश नाम';
+$lang['showuseras_o_username'] = 'प्रयोगकर्ताको पूरा नाम';
+$lang['useheading_o_0']        = 'कहिले पनि ';
+$lang['useheading_o_content']  = 'विकी विषयवस्तु मात्र';
+$lang['useheading_o_1']        = 'सधैँ';
diff --git a/wiki/lib/plugins/config/lang/nl/intro.txt b/wiki/lib/plugins/config/lang/nl/intro.txt
new file mode 100644
index 0000000..4d72b69
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/nl/intro.txt
@@ -0,0 +1,7 @@
+====== Configuratie Manager ======
+
+Gebruik deze pagina om de instellingen van je DokuWiki te bekijken en/of te wijzigen. Voor hulp over specifieke instellingen kun je kijken op  [[doku>config]]. Voor meer informatie over deze plugin zie [[doku>plugin:config]].
+
+Instellingen met een rode achtergond kunnen niet worden gewijzigd met deze plugin. Instellingen met een blauwe achtergrond hebben de default waarde, en instellingen met een witte achtergrond zijn lokaal gewijzigd voor deze specifieke installatie. Zowel blauwe als witte instellingen kunnen worden gewijzigd.
+
+Vergeet niet op **Opslaan** te drukken alvorens de pagina te verlaten, anders gaan je wijzigingen verloren.
diff --git a/wiki/lib/plugins/config/lang/nl/lang.php b/wiki/lib/plugins/config/lang/nl/lang.php
new file mode 100644
index 0000000..8fdd76c
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/nl/lang.php
@@ -0,0 +1,219 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Harriet Neitz <harrietneitz@gmail.com>
+ * @author mark prins <mprins@users.sf.net>
+ * @author Pieter van der Meulen <pieter@vdmeulen.net>
+ * @author Wouter Schoot <wouter@schoot.org>
+ * @author John de Graaff <john@de-graaff.net>
+ * @author Niels Schoot <niels.schoot@quintiq.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Danny Rotsaert <danny.rotsaert@edpnet.be>
+ * @author Marijn Hofstra <hofstra.m@gmail.com>
+ * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
+ * @author Gerrit <klapinklapin@gmail.com>
+ * @author Hugo Smet <hugo.smet@scarlet.be>
+ */
+$lang['menu']                  = 'Configuratie-instellingen';
+$lang['error']                 = 'De instellingen zijn niet gewijzigd wegens een incorrecte waarde, kijk je wijzigingen na en sla dan opnieuw op.<br />Je kunt de incorrecte waarde(s) herkennen aan de rode rand.';
+$lang['updated']               = 'Instellingen met succes opgeslagen.';
+$lang['nochoice']              = '(geen andere keuzemogelijkheden)';
+$lang['locked']                = 'Het bestand met instellingen kan niet worden gewijzigd. Als dit niet de bedoeling <br /> is, controleer dan de naam en de permissies voor het lokale installingenbestand.';
+$lang['danger']                = 'Gevaar: Het wijzigen van deze optie kan er voor zorgen dat uw wiki en het configuratiemenu niet langer toegankelijk zijn.';
+$lang['warning']               = 'Waarschuwing: Het wijzigen van deze optie kan onverwachte gedragingen veroorzaken.';
+$lang['security']              = 'Beveiligingswaarschuwing: Het wijzigen van deze optie kan een beveiligingsrisico inhouden.';
+$lang['_configuration_manager'] = 'Configuratiemanager';
+$lang['_header_dokuwiki']      = 'DokuWiki-instellingen';
+$lang['_header_plugin']        = 'Plugin-instellingen';
+$lang['_header_template']      = 'Template-instellingen';
+$lang['_header_undefined']     = 'Ongedefinieerde instellingen';
+$lang['_basic']                = 'Basisinstellingen';
+$lang['_display']              = 'Beeldinstellingen';
+$lang['_authentication']       = 'Authenticatie-instellingen';
+$lang['_anti_spam']            = 'Anti-spaminstellingen';
+$lang['_editing']              = 'Pagina-wijzigingsinstellingen';
+$lang['_links']                = 'Link-instellingen';
+$lang['_media']                = 'Media-instellingen';
+$lang['_notifications']        = 'Meldingsinstellingen';
+$lang['_syndication']          = 'Syndication-instellingen';
+$lang['_advanced']             = 'Geavanceerde instellingen';
+$lang['_network']              = 'Netwerkinstellingen';
+$lang['_msg_setting_undefined'] = 'Geen metadata voor deze instelling.';
+$lang['_msg_setting_no_class'] = 'Geen class voor deze instelling.';
+$lang['_msg_setting_no_default'] = 'Geen standaard waarde.';
+$lang['title']                 = 'Titel van de wiki';
+$lang['start']                 = 'Naam startpagina';
+$lang['lang']                  = 'Taal';
+$lang['template']              = 'Template ofwel het design van de wiki.';
+$lang['tagline']               = 'Ondertitel (als het template dat ondersteunt)';
+$lang['sidebar']               = 'Zijbalk-paginanaam (als het template dat ondersteunt), leeg veld betekent geen zijbalk';
+$lang['license']               = 'Onder welke licentie zou je tekst moeten worden gepubliceerd?';
+$lang['savedir']               = 'Directory om data op te slaan';
+$lang['basedir']               = 'Basisdirectory';
+$lang['baseurl']               = 'Basis-URL';
+$lang['cookiedir']             = 'Cookie pad. Laat leeg om de basis URL te gebruiken.';
+$lang['dmode']                 = 'Directory-aanmaak-modus (directory creation mode)';
+$lang['fmode']                 = 'Bestandaanmaak-modus (file creation mode)';
+$lang['allowdebug']            = 'Debug toestaan <b>uitzetten indien niet noodzakelijk!</b>';
+$lang['recent']                = 'Het aantal regels in Recente wijzigingen';
+$lang['recent_days']           = 'Hoeveel recente wijzigingen bewaren (dagen)';
+$lang['breadcrumbs']           = 'Aantal broodkruimels. Zet dit op 0 om uit te schakelen.';
+$lang['youarehere']            = 'Gebruik hiërarchische broodkruimels (waarschijnlijk wil je dan de optie hierboven uitschakelen)';
+$lang['fullpath']              = 'Volledig pad van pagina\'s in de footer weergeven';
+$lang['typography']            = 'Breng typografische wijzigingen aan';
+$lang['dformat']               = 'Datum formaat (zie de PHP <a href="http://php.net/strftime">strftime</a> functie)';
+$lang['signature']             = 'Tekst die ingevoegd wordt met de Handtekening-knop in het bewerkvenster.';
+$lang['showuseras']            = 'Hoe de gebruiker die de pagina het laatst wijzigde weergeven';
+$lang['toptoclevel']           = 'Bovenste niveau voor inhoudsopgave';
+$lang['tocminheads']           = 'Minimum aantal koppen dat bepaald of een index gemaakt wordt';
+$lang['maxtoclevel']           = 'Laagste niveau voor inhoudsopgave';
+$lang['maxseclevel']           = 'Laagste sectiewijzigingsniveau';
+$lang['camelcase']             = 'CamelCase gebruiken voor links';
+$lang['deaccent']              = 'Paginanamen ontdoen van vreemde tekens';
+$lang['useheading']            = 'Eerste kopje voor paginanaam gebruiken';
+$lang['sneaky_index']          = 'Met de standaardinstellingen zal DokuWiki alle namespaces laten zien in de index. Het inschakelen van deze optie zorgt ervoor dat de namespaces waar de gebruiker geen leestoegang tot heeft, verborgen worden. Dit kan resulteren in het verbergen van subnamespaces waar de gebruiker wel toegang to heeft. Dit kan de index onbruikbaar maken met bepaalde ACL-instellingen.';
+$lang['hidepages']             = 'Verberg deze pagina\'s in zoekresultaten, de index en andere automatische indexen (regular expressions)';
+$lang['useacl']                = 'Gebruik access control lists';
+$lang['autopasswd']            = 'Zelf wachtwoorden genereren';
+$lang['authtype']              = 'Authenticatiemechanisme';
+$lang['passcrypt']             = 'Encryptie-methode voor wachtwoord ';
+$lang['defaultgroup']          = 'Standaardgroep, alle nieuwe gebruikers worden hierin geplaatst';
+$lang['superuser']             = 'Superuser - een groep of gebruiker of kommalijst (gebruiker1,@groep1,gebruiker2) met volledige toegang tot alle pagina\'s en functies, ongeacht de ACL instellingen';
+$lang['manager']               = 'Beheerder - een groep of gebruiker of kommalijst (gebruiker1,@groep1,gebruiker2) met toegang tot bepaalde beheersfunctionaliteit';
+$lang['profileconfirm']        = 'Bevestig profielwijzigingen met wachtwoord';
+$lang['rememberme']            = 'Permanente login cookie toestaan (onthoud mij)';
+$lang['disableactions']        = 'Aangevinkte DokuWiki-akties uitschakelen';
+$lang['disableactions_check']  = 'Controleer';
+$lang['disableactions_subscription'] = 'Inschrijven/opzeggen';
+$lang['disableactions_wikicode'] = 'Bron bekijken/exporteer rauw';
+$lang['disableactions_profile_delete'] = 'Schrap eigen account';
+$lang['disableactions_other']  = 'Andere akties (gescheiden door komma\'s)';
+$lang['disableactions_rss']    = 'XML Syndication (RSS)';
+$lang['auth_security_timeout'] = 'Authenticatiebeveiligings-timeout (seconden)';
+$lang['securecookie']          = 'Moeten cookies die via HTTPS gezet zijn alleen via HTTPS verzonden worden door de browser? Zet deze optie uit als alleen het inloggen op de wiki beveiligd is, maar het gebruik verder niet.';
+$lang['remote']                = 'Activeer het remote API-systeem. Hiermee kunnen andere applicaties de wiki benaderen via XML-RPC of andere mechanismen.';
+$lang['remoteuser']            = 'Beperk toegang tot de remote API tot deze komma-lijst van groepen of gebruikers. Leeg betekent toegang voor iedereen.';
+$lang['usewordblock']          = 'Blokkeer spam op basis van woordenlijst';
+$lang['relnofollow']           = 'Gebruik rel="nofollow" voor externe links';
+$lang['indexdelay']            = 'Uitstel voor indexeren (sec)';
+$lang['mailguard']             = 'E-mailadressen onherkenbaar maken';
+$lang['iexssprotect']          = 'Controleer geüploade bestanden op mogelijk schadelijke JavaScript of HTML code';
+$lang['usedraft']              = 'Sla automatisch een concept op tijdens het wijzigen';
+$lang['htmlok']                = 'Embedded HTML toestaan';
+$lang['phpok']                 = 'Embedded PHP toestaan';
+$lang['locktime']              = 'Maximum leeftijd voor lockbestanden (sec)';
+$lang['cachetime']             = 'Maximum leeftijd voor cache (sec)';
+$lang['target____wiki']        = 'Doelvenster voor interne links';
+$lang['target____interwiki']   = 'Doelvenster voor interwiki-links';
+$lang['target____extern']      = 'Doelvenster voor externe links';
+$lang['target____media']       = 'Doelvenster voor medialinks';
+$lang['target____windows']     = 'Doelvenster voor windows links';
+$lang['mediarevisions']        = 'Mediarevisies activeren?';
+$lang['refcheck']              = 'Controleer of er verwijzingen bestaan naar een mediabestand voor het wijderen';
+$lang['gdlib']                 = 'Versie GD Lib ';
+$lang['im_convert']            = 'Path naar ImageMagick\'s convert tool';
+$lang['jpg_quality']           = 'JPG compressiekwaliteit (0-100)';
+$lang['fetchsize']             = 'Maximum grootte (bytes) die fetch.php mag downloaden van externe URLs, bijv. voor cachen of herschalen van externe afbeeldingen.';
+$lang['subscribers']           = 'Ondersteuning pagina-inschrijving aanzetten';
+$lang['subscribe_time']        = 'Inschrijvingsmeldingen en samenvattingen worden na deze tijdsduur (in seconden) verzonden. Deze waarde dient kleiner te zijn dan de tijd ingevuld bij "Hoeveel recente wijzigingen bewaren (dagen)"';
+$lang['notify']                = 'Stuur altijd e-mailnotificaties naar dit adres';
+$lang['registernotify']        = 'Stuur altijd informatie over nieuw geregistreerde gebruikers naar dit e-mailadres';
+$lang['mailfrom']              = 'E-mailadres van afzender voor automatische e-mail';
+$lang['mailreturnpath']        = 'Email adres voor de ontvanger van meldingen van niet-afleverbare berichten';
+$lang['mailprefix']            = 'Te gebruiken voorvoegsel voor onderwerp automatische email. Leeglaten gebruik de wikititel.';
+$lang['htmlmail']              = 'Zend multipart HTML e-mail. Dit ziet er beter uit, maar is groter. Uitschakelen betekent e-mail in platte tekst.';
+$lang['sitemap']               = 'Genereer Google sitemap (dagen). 0 betekent uitschakelen.';
+$lang['rss_type']              = 'XML feed type';
+$lang['rss_linkto']            = 'XML feed linkt naar';
+$lang['rss_content']           = 'Wat moet er in de XML feed items weergegeven worden?';
+$lang['rss_update']            = 'XML feed verversingsinterval (sec)';
+$lang['rss_show_summary']      = 'XML feed samenvatting in titel weergeven';
+$lang['rss_media']             = 'Welk type verandering moet in de XML feed worden weergegeven?';
+$lang['rss_media_o_both']      = 'beide';
+$lang['rss_media_o_pages']     = 'pagina\'s';
+$lang['rss_media_o_media']     = 'media';
+$lang['updatecheck']           = 'Controleer op nieuwe versies en beveiligingswaarschuwingen? DokuWiki moet hiervoor contact opnemen met update.dokuwiki.org.';
+$lang['userewrite']            = 'Gebruik nette URL\'s';
+$lang['useslash']              = 'Gebruik slash (/) als scheiding tussen namepaces in URL\'s';
+$lang['sepchar']               = 'Woordscheider in paginanamen';
+$lang['canonical']             = 'Herleid URL\'s tot hun basisvorm';
+$lang['fnencode']              = 'Methode om niet-ASCII bestandsnamen te coderen.';
+$lang['autoplural']            = 'Controleer op meervoudsvormen in links';
+$lang['compression']           = 'Compressiemethode voor attic-bestanden';
+$lang['gzip_output']           = 'Gebruik gzip Content-Encoding voor xhtml';
+$lang['compress']              = 'Compacte CSS en javascript output';
+$lang['cssdatauri']            = 'Maximale omvang in bytes van in CSS gelinkte afbeeldingen die bij de stylesheet moeten worden ingesloten ter reductie van de HTTP request header overhead. <code>400</code> tot <code>600</code> is een geschikte omvang. Stel de omvang in op <code>0</code> om deze functionaliteit uit te schakelen.';
+$lang['send404']               = 'Stuur "HTTP 404/Page Not Found" voor niet-bestaande pagina\'s';
+$lang['broken_iua']            = 'Is de ignore_user_abort functie onbruikbaar op uw systeem? Dit kan een onbruikbare zoekindex tot gevolg hebben. IIS+PHP/CGI staat hier bekend om. Zie <a href="http://bugs.dokuwiki.org/?do=details&amp;task_id=852">Bug 852</a> voor meer informatie.';
+$lang['xsendfile']             = 'Gebruik de X-Sendfile header om de webserver statische content te laten versturen? De webserver moet dit wel ondersteunen.';
+$lang['renderer_xhtml']        = 'Weergavesysteem voor de standaard (xhtml) wiki-uitvoer';
+$lang['renderer__core']        = '%s (dokuwiki core)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['search_nslimit']        = 'Beperk het zoeken tot de huidige X namespaces. Wanneer het zoeken wordt uitgevoerd vanaf een pagina binnen een diepere namespace, worden de eerste X aantal namespaces toegevoegd als filter';
+$lang['search_fragment_o_exact'] = 'exact';
+$lang['search_fragment_o_starts_with'] = 'begint met';
+$lang['search_fragment_o_ends_with'] = 'eindigt op';
+$lang['search_fragment_o_contains'] = 'bevat';
+$lang['dnslookups']            = 'DokuWiki zoekt de hostnamen van IP-adressen van gebruikers die pagina wijzigen op. Schakel deze optie uit als je geen of een langzame DNS server hebt.';
+$lang['jquerycdn']             = 'Moet er een CDN gebruikt worden om de jQuery en jQuery UI bestanden te laden. Dit zorgt voor extra HTTP verzoeken, maar bestanden laden mogelijk sneller en zitten misschien al in de cache van de gebruiker.';
+$lang['jquerycdn_o_0']         = 'Geen CDN gebruiken';
+$lang['jquerycdn_o_jquery']    = 'Gebruik code.jquery.com CDN';
+$lang['jquerycdn_o_cdnjs']     = 'Gebruik cdnjs.com CDN';
+$lang['proxy____host']         = 'Proxy server';
+$lang['proxy____port']         = 'Proxy port';
+$lang['proxy____user']         = 'Proxy gebruikersnaam';
+$lang['proxy____pass']         = 'Proxy wachtwoord';
+$lang['proxy____ssl']          = 'Gebruik SSL om een verbinding te maken met de proxy';
+$lang['proxy____except']       = 'Reguliere expressie om URL\'s te bepalen waarvoor de proxy overgeslagen moet worden.';
+$lang['safemodehack']          = 'Safemode hack aanzetten';
+$lang['ftp____host']           = 'FTP server voor safemode hack';
+$lang['ftp____port']           = 'FTP port voor safemode hack';
+$lang['ftp____user']           = 'FTP gebruikersnaam voor safemode hack';
+$lang['ftp____pass']           = 'FTP wachtwoord voor safemode hack';
+$lang['ftp____root']           = 'FTP root directory voor safemode hack';
+$lang['license_o_']            = 'Geen gekozen';
+$lang['typography_o_0']        = 'geen';
+$lang['typography_o_1']        = 'Alleen dubbele aanhalingstekens';
+$lang['typography_o_2']        = 'Alle aanhalingstekens (functioneert mogelijk niet altijd)';
+$lang['userewrite_o_0']        = 'geen';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki intern';
+$lang['deaccent_o_0']          = 'uit';
+$lang['deaccent_o_1']          = 'accenten verwijderen';
+$lang['deaccent_o_2']          = 'romaniseer';
+$lang['gdlib_o_0']             = 'GD Lib niet beschikbaar';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'Autodetectie';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstract';
+$lang['rss_content_o_diff']    = 'Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'Diff-tabel in HTML';
+$lang['rss_content_o_html']    = 'Volledige pagina-inhoud in HTML';
+$lang['rss_linkto_o_diff']     = 'verschillen';
+$lang['rss_linkto_o_page']     = 'de gewijzigde pagina';
+$lang['rss_linkto_o_rev']      = 'lijst van revisies';
+$lang['rss_linkto_o_current']  = 'de huidige pagina';
+$lang['compression_o_0']       = 'geen';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'niet gebruiken';
+$lang['xsendfile_o_1']         = 'Merkgebonden lighttpd header (voor release 1.5)';
+$lang['xsendfile_o_2']         = 'Standaard X-Sendfile header';
+$lang['xsendfile_o_3']         = 'Merkgebonden Nginx X-Accel-Redirect header';
+$lang['showuseras_o_loginname'] = 'Loginnaam';
+$lang['showuseras_o_username'] = 'Volledige naam';
+$lang['showuseras_o_username_link'] = 'Gebruikers volledige naam als interwiki gebruikers link';
+$lang['showuseras_o_email']    = 'E-mailadres (onherkenbaar gemaakt volgens mailguard-instelling)';
+$lang['showuseras_o_email_link'] = 'E-mailadres als mailto: link';
+$lang['useheading_o_0']        = 'Nooit';
+$lang['useheading_o_navigation'] = 'Alleen navigatie';
+$lang['useheading_o_content']  = 'Alleen wiki inhoud';
+$lang['useheading_o_1']        = 'Altijd';
+$lang['readdircache']          = 'Maximale leeftijd voor readdir cache (in seconden)';
diff --git a/wiki/lib/plugins/config/lang/no/intro.txt b/wiki/lib/plugins/config/lang/no/intro.txt
new file mode 100644
index 0000000..5684a90
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/no/intro.txt
@@ -0,0 +1,7 @@
+====== Konfigurasjonsinnstillinger ======
+
+Bruk denne siden for å kontrollere innstillingene for din DokuWiki. For hjelp om hver enkelt innstilling, se [[doku>config]]. For mer detaljer om denne innstillingssiden, se [[doku>plugin:config]].
+
+Innstillinger vist med lys rød bakgrunn er beskyttet og kan ikke endres på denne siden. Innstillinger vist med blå bakgrunn er standardverdier og innstillinger med hvit bakgrunn har blitt satt lokalt for denne installasjonen. Både blå og hvite innstillinger kan endres.
+
+Husk å trykke på **Lagre**-knappen før du forlater siden. Hvis ikke går dine endringer tapt.
diff --git a/wiki/lib/plugins/config/lang/no/lang.php b/wiki/lib/plugins/config/lang/no/lang.php
new file mode 100644
index 0000000..ae61280
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/no/lang.php
@@ -0,0 +1,214 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Thomas Nygreen <nygreen@gmail.com>
+ * @author Arild Burud <arildb@met.no>
+ * @author Torkill Bruland <torkar-b@online.no>
+ * @author Rune M. Andersen <rune.andersen@gmail.com>
+ * @author Jakob Vad Nielsen (me@jakobnielsen.net)
+ * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
+ * @author Knut Staring <knutst@gmail.com>
+ * @author Lisa Ditlefsen <lisa@vervesearch.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ * @author Patrick Sletvold <patricksletvold@hotmail.com>
+ */
+$lang['menu']                  = 'Konfigurasjonsinnstillinger';
+$lang['error']                 = 'Innstillingene ble ikke oppdatert på grunn av en eller flere ugyldig verdier. Vennligst se gjennom endringene og prøv på nytt.
+<br />Ugyldige verdi(er) vil vises i rød ramme.';
+$lang['updated']               = 'Innstillingene ble oppdatert.';
+$lang['nochoice']              = '(ingen andre mulige valg)';
+$lang['locked']                = 'Innstillingene kan ikke oppdateres. Hvis dette ikke er meningen,<br />
+forsikre deg om at fila med de lokale innstillingene har korrekt filnavn<br/>
+og tillatelser.';
+$lang['danger']                = 'Advarsel: Endring av dette valget kan føre til at wiki og konfigurasjonsmenyen ikke blir tilgjengelig.';
+$lang['warning']               = 'Advarsel: Endring av dette valget kan føre til utilsiktet atferd.
+
+';
+$lang['security']              = 'Sikkerhetsadvarsel: Endring av dette valget kan innebære en sikkerhetsrisiko.';
+$lang['_configuration_manager'] = 'Konfigurasjonsinnstillinger';
+$lang['_header_dokuwiki']      = 'Innstillinger for DokuWiki';
+$lang['_header_plugin']        = 'Innstillinger for programtillegg';
+$lang['_header_template']      = 'Innstillinger for maler';
+$lang['_header_undefined']     = 'Udefinerte innstillinger';
+$lang['_basic']                = 'Grunnleggende innstillinger';
+$lang['_display']              = 'Innstillinger for visning av sider';
+$lang['_authentication']       = 'Innstillinger for autentisering';
+$lang['_anti_spam']            = 'Anti-Spam innstillinger';
+$lang['_editing']              = 'Innstillinger for redigering';
+$lang['_links']                = 'Innstillinger for lenker';
+$lang['_media']                = 'Innstillinger for mediafiler';
+$lang['_notifications']        = 'Melding';
+$lang['_syndication']          = 'Informasjonsstrøm (RSS)';
+$lang['_advanced']             = 'Avanserte innstillinger';
+$lang['_network']              = 'Nettverksinnstillinger';
+$lang['_msg_setting_undefined'] = 'Ingen innstillingsmetadata';
+$lang['_msg_setting_no_class'] = 'Ingen innstillingsklasse';
+$lang['_msg_setting_no_default'] = 'Ingen standard verdi';
+$lang['title']                 = 'Navn på Wikien';
+$lang['start']                 = 'Sidenavn på forsiden';
+$lang['lang']                  = 'Språk';
+$lang['template']              = 'Mal';
+$lang['tagline']               = 'Slagord (dersom malen støtter dette)';
+$lang['sidebar']               = 'Sidestolpens navn (dersom malen støtter dette), la stå tomt for å slå av sidestolpen';
+$lang['license']               = 'Under hvilken lisens skal ditt innhold utgis?';
+$lang['savedir']               = 'Mappe for lagring av data';
+$lang['basedir']               = 'Sti til hovekatalog (eks. <code>/dokuwiki/</code>). La stå blank for automatisk deteksjon.';
+$lang['baseurl']               = 'Nettadresse til server (eks. <code>http://www.yourserver.com</code>).  La stå blank for automatisk deteksjon.';
+$lang['cookiedir']             = 'Sti for informasjonskapsler. La stå blankt for å bruke nettadresse til server.';
+$lang['dmode']                 = 'Rettigheter for nye mapper';
+$lang['fmode']                 = 'Rettigheter for nye filer';
+$lang['allowdebug']            = 'Tillat feilsøking <b>skru av om det ikke behøves!</b>';
+$lang['recent']                = 'Siste endringer';
+$lang['recent_days']           = 'Hvor lenge skal nylige endringer beholdes (dager)';
+$lang['breadcrumbs']           = 'Antall nylig besøkte sider som vises';
+$lang['youarehere']            = 'Vis hvor i hvilke(t) navnerom siden er';
+$lang['fullpath']              = 'Vis full sti til sider i bunnteksten';
+$lang['typography']            = 'Gjør typografiske erstatninger';
+$lang['dformat']               = 'Datoformat (se <a href="http://php.net/strftime">PHPs datofunksjon</a>)';
+$lang['signature']             = 'Signatur';
+$lang['showuseras']            = 'Hva som skal med når man viser brukeren som sist redigerte en side.';
+$lang['toptoclevel']           = 'Toppnivå for innholdsfortegnelse';
+$lang['tocminheads']           = 'Minimum antall overskrifter som bestemmer om innholdsbetegnelse skal bygges.';
+$lang['maxtoclevel']           = 'Maksimalt antall nivåer i innholdsfortegnelse';
+$lang['maxseclevel']           = 'Maksimalt nivå for redigering av seksjon';
+$lang['camelcase']             = 'Gjør KamelKasse til lenke automatisk';
+$lang['deaccent']              = 'Rensk sidenavn';
+$lang['useheading']            = 'Bruk første overskrift som tittel';
+$lang['sneaky_index']          = 'DokuWiki vil som standard vise alle navnerom i innholdsfortegnelsen. Hvis du skrur på dette alternativet vil brukere bare se de navnerommene der de har lesetilgang. Dette kan føre til at tilgjengelige undernavnerom skjules. Det kan gjøre innholdsfortegnelsen ubrukelig med enkelte ACL-oppsett.';
+$lang['hidepages']             = 'Skjul sider fra automatiske lister (regulære uttrykk)';
+$lang['useacl']                = 'Bruk lister for adgangskontroll (ACL)';
+$lang['autopasswd']            = 'Generer passord automatisk';
+$lang['authtype']              = 'Autentiseringsmetode';
+$lang['passcrypt']             = 'Metode for kryptering av passord';
+$lang['defaultgroup']          = 'Standardgruppe';
+$lang['superuser']             = 'Superbruker - en gruppe, bruker eller liste (kommaseparert) med full tilgang til alle sider og funksjoner uavhengig av ACL-innstillingene';
+$lang['manager']               = 'Administrator - en gruppe, bruker eller liste (kommaseparert) med tilgang til visse administratorfunksjoner';
+$lang['profileconfirm']        = 'Bekreft profilendringer med passord';
+$lang['rememberme']            = 'Tillat permanente informasjonskapsler for innlogging (husk meg)';
+$lang['disableactions']        = 'Skru av følgende DokuWiki-kommandoer';
+$lang['disableactions_check']  = 'Sjekk';
+$lang['disableactions_subscription'] = 'Meld på/av';
+$lang['disableactions_wikicode'] = 'Vis kildekode/eksporter rådata';
+$lang['disableactions_profile_delete'] = 'Slett egen konto';
+$lang['disableactions_other']  = 'Andre kommandoer (kommaseparert)';
+$lang['disableactions_rss']    = 'XML-informasjonsstrøm (RSS)';
+$lang['auth_security_timeout'] = 'Autentisering utløper etter (sekunder)';
+$lang['securecookie']          = 'Skal informasjonskapsler satt via HTTPS kun sendes via HTTPS av nettleseren? Skal ikke velges dersom bare innloggingen til din wiki er sikret med SSL, og annen navigering  på wikien er usikret.';
+$lang['remote']                = 'Slå på det eksterne API-grensesnittet. Dette gir andre program tilgang til denne wikien via XML-RPC, eller via andre mekanismer.';
+$lang['remoteuser']            = 'Begrens ekstern API-tilgang til bare å gjelde denne kommaseparerte listen med grupper eller brukere. La stå tomt for å gi tilgang for alle.';
+$lang['usewordblock']          = 'Blokker søppel basert på ordliste';
+$lang['relnofollow']           = 'Bruk rel="nofollow" på eksterne lenker';
+$lang['indexdelay']            = 'Forsinkelse før indeksering (sekunder)';
+$lang['mailguard']             = 'Beskytt e-postadresser';
+$lang['iexssprotect']          = 'Sjekk om opplastede filer inneholder skadelig JavaScrips- eller HTML-kode';
+$lang['usedraft']              = 'Lagre kladd automatisk ved redigering';
+$lang['htmlok']                = 'Tillat HTML';
+$lang['phpok']                 = 'Tillat PHP';
+$lang['locktime']              = 'Maksimal alder på låsefiler (sekunder)';
+$lang['cachetime']             = 'Maksimal alder på hurtiglager (sekunder)';
+$lang['target____wiki']        = 'Mål for interne lenker';
+$lang['target____interwiki']   = 'Mål for interwiki-lenker';
+$lang['target____extern']      = 'Mål for eksterne lenker';
+$lang['target____media']       = 'Mål for lenker til mediafiler';
+$lang['target____windows']     = 'Mål for lenker til nettverksstasjoner i Windows';
+$lang['mediarevisions']        = 'Slå på mediaversjonering?';
+$lang['refcheck']              = 'Sjekk referanser før mediafiler slettes';
+$lang['gdlib']                 = 'Versjon av libGD';
+$lang['im_convert']            = 'Sti til ImageMagicks konverteringsverktøy';
+$lang['jpg_quality']           = 'JPEG-kvalitet (0-100)';
+$lang['fetchsize']             = 'Maksimal størrelse (i byte) fetch.php kan laste eksternt';
+$lang['subscribers']           = 'Åpne for abonnement på endringer av en side';
+$lang['subscribe_time']        = 'Hvor lenge det skal gå mellom utsending av e-poster med endringer (i sekunder). Denne verdien bør være mindre enn verdien i recent_days.';
+$lang['notify']                = 'Send meldinger om endringer til denne e-postadressen';
+$lang['registernotify']        = 'Send info om nylig registrerte brukere til denne e-postadressen';
+$lang['mailfrom']              = 'Avsenderadresse for automatiske e-poster';
+$lang['mailprefix']            = 'Tekst å henge på i starten av emne-feltet i automatiske e-poster. La stå blank for å bruke wikiens tittel. ';
+$lang['htmlmail']              = 'Send e-poster som HTMLmultipart-form, e-postene vil da se bedre ut. Skru av for å sende e-poster i ren-tekstform.';
+$lang['sitemap']               = 'Lag Google-sidekart (dager)';
+$lang['rss_type']              = 'Type XML-feed';
+$lang['rss_linkto']            = 'XML-feed lenker til';
+$lang['rss_content']           = 'Hva skal vises i XML-feed elementer?';
+$lang['rss_update']            = 'Intervall for oppdatering av XML-feed (sekunder)';
+$lang['rss_show_summary']      = 'Vis redigeringskommentar i tittelen på elementer i XML-feed ';
+$lang['rss_media']             = 'Hvilke typer endringer skal listes i XML-strømmen?';
+$lang['updatecheck']           = 'Se etter oppdateringer og sikkerhetsadvarsler? Denne funksjonen er avhengig av å kontakte update.dokuwiki.org.';
+$lang['userewrite']            = 'Bruk pene URLer';
+$lang['useslash']              = 'Bruk / som skilletegn mellom navnerom i URLer';
+$lang['sepchar']               = 'Skilletegn mellom ord i sidenavn';
+$lang['canonical']             = 'Bruk fulle URLer (i stedet for relative)';
+$lang['fnencode']              = 'Metode for å kode ikke-ASCII-filnavn';
+$lang['autoplural']            = 'Se etter flertallsformer i lenker';
+$lang['compression']           = 'Metode for komprimering av gamle filer';
+$lang['gzip_output']           = 'Bruk gzip Content-Encoding for XHTML';
+$lang['compress']              = 'Kompakt CSS og JavaScript';
+$lang['cssdatauri']            = 'Opp til denne størrelsen (i byte) skal bilder som er vist til i CSS-filer kodes direkte inn i fila for å redusere antall HTTP-forespørsler. Denne teknikken fungerer ikke i IE < 8! Mellom <code>400</code> og <code>600</code> bytes er fornuftige verdier. Bruk <code>0</code> for å skru av funksjonen.';
+$lang['send404']               = 'Send "HTTP 404/Page Not Found" for ikke-eksisterende sider';
+$lang['broken_iua']            = 'Er funksjonen ignore_user_abort på ditt system ødelagt? Dette kan gjøre at indeksering av søk ikke fungerer. Dette er et kjent problem med IIS+PHP/CGI. Se <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> for mer informasjon.';
+$lang['xsendfile']             = 'Bruk X-Sendfile header for å la webserver levere statiske filer? Din webserver må støtte dette.';
+$lang['renderer_xhtml']        = 'Renderer til bruk for wiki-output (XHTML)';
+$lang['renderer__core']        = '%s (dokuwikikjerne)';
+$lang['renderer__plugin']      = '%s (programutvidelse)';
+$lang['dnslookups']            = 'Dokuwiki vil, for sider som blir redigert, slå opp vertsnavn for brukere med eksterne IP-adresse Hvis du har en treg, eller en ikke fungerende DNS-server  bør du deaktivere dette alternativet';
+$lang['proxy____host']         = 'Navn på proxyserver';
+$lang['proxy____port']         = 'Port på på proxyserver';
+$lang['proxy____user']         = 'Brukernavn på proxyserver';
+$lang['proxy____pass']         = 'Passord på proxyserver';
+$lang['proxy____ssl']          = 'Bruk SSL for å koble til proxyserver';
+$lang['proxy____except']       = 'Regulært uttrykk for URLer som ikke trenger bruk av proxy';
+$lang['safemodehack']          = 'Bruk safemode-hack';
+$lang['ftp____host']           = 'FTP-server for safemode-hack';
+$lang['ftp____port']           = 'FTP-port for safemode-hack';
+$lang['ftp____user']           = 'FTP-brukernavn for safemode-hack';
+$lang['ftp____pass']           = 'FTP-passord for safemode-hack';
+$lang['ftp____root']           = 'FTP-rotmappe for safemode-hack';
+$lang['license_o_']            = 'Ingen valgt';
+$lang['typography_o_0']        = 'ingen';
+$lang['typography_o_1']        = 'Kun doble anførselstegn';
+$lang['typography_o_2']        = 'Alle anførselstegn (virker ikke alltid)';
+$lang['userewrite_o_0']        = 'ingen';
+$lang['userewrite_o_1']        = 'Apache (.htaccess)';
+$lang['userewrite_o_2']        = 'DokuWiki internt';
+$lang['deaccent_o_0']          = 'av';
+$lang['deaccent_o_1']          = 'fjern aksenter';
+$lang['deaccent_o_2']          = 'bytt til kun latinske bokstaver';
+$lang['gdlib_o_0']             = 'GD lib ikke tilgjengelig';
+$lang['gdlib_o_1']             = 'Versjon 1.x';
+$lang['gdlib_o_2']             = 'Oppdag automatisk';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Ingress';
+$lang['rss_content_o_diff']    = 'Ulikh. sammenslått';
+$lang['rss_content_o_htmldiff'] = 'HTML-formatert endr. tabell';
+$lang['rss_content_o_html']    = 'Full HTML sideinnhold';
+$lang['rss_linkto_o_diff']     = 'endringsvisning';
+$lang['rss_linkto_o_page']     = 'den endrede siden';
+$lang['rss_linkto_o_rev']      = 'liste over endringer';
+$lang['rss_linkto_o_current']  = 'den nåværende siden';
+$lang['compression_o_0']       = 'ingen';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ikke bruk';
+$lang['xsendfile_o_1']         = 'Proprietær lighttpd header (før release 1.5)';
+$lang['xsendfile_o_2']         = 'Standard X-Sendfile header';
+$lang['xsendfile_o_3']         = 'Proprietær Nginx X-Accel-Redirect header';
+$lang['showuseras_o_loginname'] = 'Brukernavn';
+$lang['showuseras_o_username'] = 'Brukerens fulle navn';
+$lang['showuseras_o_username_link'] = 'Brukers fulle navn som interwiki-brukerlenke';
+$lang['showuseras_o_email']    = 'Brukerens e-postadresse (tilpasset i henhold til mailguar-instilling)';
+$lang['showuseras_o_email_link'] = 'Brukerens e-postaddresse som "mailto:"-lenke';
+$lang['useheading_o_0']        = 'Aldri';
+$lang['useheading_o_navigation'] = 'Kun navigering';
+$lang['useheading_o_content']  = 'Kun wiki-innhold';
+$lang['useheading_o_1']        = 'Alltid';
+$lang['readdircache']          = 'Maksimal alder for mellomlagring av mappen med søkeindekser (sekunder)';
diff --git a/wiki/lib/plugins/config/lang/pl/intro.txt b/wiki/lib/plugins/config/lang/pl/intro.txt
new file mode 100644
index 0000000..9d85c7a
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/pl/intro.txt
@@ -0,0 +1,7 @@
+====== Menadżer konfiguracji ======
+
+Na tej stronie można zmienić ustawienia tej instalacji DokuWiki. W celu uzyskania pomocy na temat ustawień zajrzyj na stronę o [[doku>config|konfiguracji]]. W celu uzyskania informacji o tej wtyczce zajrzyj na stronę o [[doku>plugin:config|wtyczce]].
+
+Ustawienia w kolorze jasnoczerwonym są chronione i nie mogą być zmienioną z użyciem tej wtyczki. Ustawienia w kolorze niebieskim mają domyślne wartości. Ustawienia w kolorze białym są specyficzne dla tej instalacji. Ustawienia w kolorach niebieskim i białym mogą być zmienione.
+
+W celu zapisania nowej konfiguracji naciśnij **zapisz** przed opuszczeniem tej strony.
diff --git a/wiki/lib/plugins/config/lang/pl/lang.php b/wiki/lib/plugins/config/lang/pl/lang.php
new file mode 100644
index 0000000..0a3df55
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/pl/lang.php
@@ -0,0 +1,215 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Max <maxrb146@gmail.com>
+ * @author Grzegorz Żur <grzegorz.zur@gmail.com>
+ * @author Mariusz Kujawski <marinespl@gmail.com>
+ * @author Maciej Kurczewski <pipijajko@gmail.com>
+ * @author Sławomir Boczek <slawkens@gmail.com>
+ * @author Piotr JANKOWSKI <jankowski.piotr@gmail.com>
+ * @author sleshek <sleshek@wp.pl>
+ * @author Leszek Stachowski <shazarre@gmail.com>
+ * @author maros <dobrimaros@yahoo.pl>
+ * @author Grzegorz Widła <dzesdzes@gmail.com>
+ * @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['menu']                  = 'Ustawienia';
+$lang['error']                 = 'Ustawienia nie zostały zapisane z powodu błędnych wartości, przejrzyj je i ponów próbę zapisu. <br/> Niepoprawne wartości są wyróżnione kolorem czerwonym.';
+$lang['updated']               = 'Ustawienia zostały zmienione.';
+$lang['nochoice']              = '(brak innych możliwości)';
+$lang['locked']                = 'Plik ustawień nie mógł zostać zmieniony, upewnij się, czy uprawnienia do pliku są odpowiednie.';
+$lang['danger']                = 'Uwaga: Zmiana tej opcji może uniemożliwić dostęp do twojej wiki oraz konfiguracji.';
+$lang['warning']               = 'Ostrzeżenie: Zmiana tej opcji może spowodować nieporządane skutki.';
+$lang['security']              = 'Alert bezpieczeństwa: Zmiana tej opcji może obniżyć bezpieczeństwo.';
+$lang['_configuration_manager'] = 'Menadżer konfiguracji';
+$lang['_header_dokuwiki']      = 'Ustawienia DokuWiki';
+$lang['_header_plugin']        = 'Ustawienia wtyczek';
+$lang['_header_template']      = 'Ustawienia motywu';
+$lang['_header_undefined']     = 'Inne ustawienia';
+$lang['_basic']                = 'Podstawowe';
+$lang['_display']              = 'Wygląd';
+$lang['_authentication']       = 'Autoryzacja';
+$lang['_anti_spam']            = 'Spam';
+$lang['_editing']              = 'Edycja';
+$lang['_links']                = 'Odnośniki';
+$lang['_media']                = 'Media';
+$lang['_notifications']        = 'Ustawienia powiadomień';
+$lang['_syndication']          = 'Ustawienia RSS';
+$lang['_advanced']             = 'Zaawansowane';
+$lang['_network']              = 'Sieć';
+$lang['_msg_setting_undefined'] = 'Brak danych o ustawieniu.';
+$lang['_msg_setting_no_class'] = 'Brak kategorii ustawień.';
+$lang['_msg_setting_no_default'] = 'Brak wartości domyślnej.';
+$lang['title']                 = 'Tytuł wiki';
+$lang['start']                 = 'Tytuł strony początkowej';
+$lang['lang']                  = 'Język';
+$lang['template']              = 'Motyw';
+$lang['tagline']               = 'Motto (jeśli szablon daje taką możliwość)';
+$lang['sidebar']               = 'Nazwa strony paska bocznego (jeśli szablon je obsługuje), puste pole wyłącza pasek boczny';
+$lang['license']               = 'Pod jaką licencją publikować treści wiki?';
+$lang['savedir']               = 'Katalog z danymi';
+$lang['basedir']               = 'Katalog główny';
+$lang['baseurl']               = 'Główny URL';
+$lang['cookiedir']             = 'Ścieżka plików ciasteczek. Zostaw puste by użyć baseurl.';
+$lang['dmode']                 = 'Tryb tworzenia katalogu';
+$lang['fmode']                 = 'Tryb tworzenia pliku';
+$lang['allowdebug']            = 'Debugowanie (niebezpieczne!)';
+$lang['recent']                = 'Ilość ostatnich zmian';
+$lang['recent_days']           = 'Ilość ostatnich zmian (w dniach)';
+$lang['breadcrumbs']           = 'Długość śladu';
+$lang['youarehere']            = 'Ślad według struktury';
+$lang['fullpath']              = 'Wyświetlanie pełnych ścieżek';
+$lang['typography']            = 'Konwersja cudzysłowu, myślników itp.';
+$lang['dformat']               = 'Format daty';
+$lang['signature']             = 'Podpis';
+$lang['showuseras']            = 'Sposób wyświetlania nazwy użytkownika, który ostatnio edytował stronę';
+$lang['toptoclevel']           = 'Minimalny poziom spisu treści';
+$lang['tocminheads']           = 'Minimalna liczba nagłówków niezbędna do wytworzenia spisu treści.';
+$lang['maxtoclevel']           = 'Maksymalny poziom spisu treści';
+$lang['maxseclevel']           = 'Maksymalny poziom podziału na sekcje edycyjne';
+$lang['camelcase']             = 'Bikapitalizacja odnośników (CamelCase)';
+$lang['deaccent']              = 'Podmieniaj znaki spoza ASCII w nazwach';
+$lang['useheading']            = 'Pierwszy nagłówek jako tytuł';
+$lang['sneaky_index']          = 'Domyślnie, Dokuwiki pokazuje wszystkie katalogi w indeksie. Włączenie tej opcji ukryje katalogi, do których użytkownik nie ma praw. Może to spowodować ukrycie podkatalogów, do których użytkownik ma prawa. Ta opcja może spowodować błędne działanie indeksu w połączeniu z pewnymi konfiguracjami praw dostępu.';
+$lang['hidepages']             = 'Ukrywanie stron pasujących do wzorca (wyrażenie regularne)';
+$lang['useacl']                = 'Kontrola uprawnień ACL';
+$lang['autopasswd']            = 'Automatyczne generowanie haseł';
+$lang['authtype']              = 'Typ autoryzacji';
+$lang['passcrypt']             = 'Kodowanie hasła';
+$lang['defaultgroup']          = 'Domyślna grupa';
+$lang['superuser']             = 'Administrator - grupa lub użytkownik z pełnymi uprawnieniami';
+$lang['manager']               = 'Menadżer - grupa lub użytkownik z uprawnieniami do zarządzania wiki';
+$lang['profileconfirm']        = 'Potwierdzanie zmiany profilu hasłem';
+$lang['rememberme']            = 'Pozwól na ciasteczka automatycznie logujące (pamiętaj mnie)';
+$lang['disableactions']        = 'Wyłącz akcje DokuWiki';
+$lang['disableactions_check']  = 'Sprawdzanie';
+$lang['disableactions_subscription'] = 'Subskrypcje';
+$lang['disableactions_wikicode'] = 'Pokazywanie źródeł';
+$lang['disableactions_profile_delete'] = 'Usuń własne konto ';
+$lang['disableactions_other']  = 'Inne akcje (oddzielone przecinkiem)';
+$lang['disableactions_rss']    = 'XML Syndication (RSS)';
+$lang['auth_security_timeout'] = 'Czas wygaśnięcia uwierzytelnienia (w sekundach)';
+$lang['securecookie']          = 'Czy ciasteczka wysłane do przeglądarki przez HTTPS powinny być przez nią odsyłane też tylko przez HTTPS? Odznacz tę opcję tylko wtedy, gdy logowanie użytkowników jest zabezpieczone SSL, ale przeglądanie stron odbywa się bez zabezpieczenia.';
+$lang['remote']                = 'Włącz API zdalnego dostępu. Pozwoli to innym aplikacjom na dostęp do wiki poprzez XML-RPC lub inne mechanizmy.';
+$lang['remoteuser']            = 'Ogranicz dostęp poprzez API zdalnego dostępu do podanych grup lub użytkowników, oddzielonych przecinkami. Pozostaw to pole puste by pozwolić na dostęp be ograniczeń.';
+$lang['usewordblock']          = 'Blokowanie spamu na podstawie słów';
+$lang['relnofollow']           = 'Nagłówek rel="nofollow" dla odnośników zewnętrznych';
+$lang['indexdelay']            = 'Okres indeksowania w sekundach';
+$lang['mailguard']             = 'Utrudnianie odczytu adresów e-mail';
+$lang['iexssprotect']          = 'Wykrywanie złośliwego kodu JavaScript i HTML w plikach';
+$lang['usedraft']              = 'Automatyczne zapisywanie szkicu podczas edycji';
+$lang['htmlok']                = 'Wstawki HTML';
+$lang['phpok']                 = 'Wstawki PHP';
+$lang['locktime']              = 'Maksymalny wiek blokad w sekundach';
+$lang['cachetime']             = 'Maksymalny wiek cache w sekundach';
+$lang['target____wiki']        = 'Okno docelowe odnośników wewnętrznych';
+$lang['target____interwiki']   = 'Okno docelowe odnośników do innych wiki';
+$lang['target____extern']      = 'Okno docelowe odnośników zewnętrznych';
+$lang['target____media']       = 'Okno docelowe odnośników do plików';
+$lang['target____windows']     = 'Okno docelowe odnośników zasobów Windows';
+$lang['mediarevisions']        = 'Włączyć wersjonowanie multimediów?';
+$lang['refcheck']              = 'Sprawdzanie odwołań przed usunięciem pliku';
+$lang['gdlib']                 = 'Wersja biblioteki GDLib';
+$lang['im_convert']            = 'Ścieżka do programu imagemagick';
+$lang['jpg_quality']           = 'Jakość kompresji JPG (0-100)';
+$lang['fetchsize']             = 'Maksymalny rozmiar pliku (w bajtach) jaki można pobrać z zewnątrz';
+$lang['subscribers']           = 'Subskrypcja';
+$lang['subscribe_time']        = 'Czas po którym są wysyłane listy subskrypcji i streszczenia (sek.); Powinna być to wartość większa niż podana w zmiennej recent_days.';
+$lang['notify']                = 'Wysyłanie powiadomień na adres e-mail';
+$lang['registernotify']        = 'Prześlij informacje o nowych użytkownikach na adres e-mail';
+$lang['mailfrom']              = 'Adres e-mail tego wiki';
+$lang['mailreturnpath']        = 'Adres e-mail odbiorcy dla powiadomień o niedostarczeniu';
+$lang['mailprefix']            = 'Prefiks tematu e-mail do automatycznych wiadomości';
+$lang['htmlmail']              = 'Wysyłaj wiadomości e-mail w formacie HTML, które wyglądają lepiej, lecz ich rozmiar jest większy. Wyłącz wysyłanie wiadomości zawierających tekst niesformatowany.';
+$lang['sitemap']               = 'Okres generowania Google Sitemap (w dniach)';
+$lang['rss_type']              = 'Typ RSS';
+$lang['rss_linkto']            = 'Odnośniki w RSS';
+$lang['rss_content']           = 'Rodzaj informacji wyświetlanych w RSS ';
+$lang['rss_update']            = 'Okres aktualizacji RSS (w sekundach)';
+$lang['rss_show_summary']      = 'Podsumowanie w tytule';
+$lang['rss_media']             = 'Rodzaj zmian wyświetlanych w RSS';
+$lang['rss_media_o_both']      = 'oba';
+$lang['rss_media_o_pages']     = 'strony';
+$lang['rss_media_o_media']     = 'media';
+$lang['updatecheck']           = 'Sprawdzanie aktualizacji i bezpieczeństwa. DokuWiki będzie kontaktować się z serwerem update.dokuwiki.org.';
+$lang['userewrite']            = 'Proste adresy URL';
+$lang['useslash']              = 'Używanie ukośnika jako separatora w adresie URL';
+$lang['sepchar']               = 'Znak rozdzielający wyrazy nazw';
+$lang['canonical']             = 'Kanoniczne adresy URL';
+$lang['fnencode']              = 'Metoda kodowana nazw pików bez użycia ASCII.';
+$lang['autoplural']            = 'Automatyczne tworzenie liczby mnogiej';
+$lang['compression']           = 'Metoda kompresji dla usuniętych plików';
+$lang['gzip_output']           = 'Używaj kodowania GZIP dla zawartości XHTML';
+$lang['compress']              = 'Kompresja arkuszy CSS i plików JavaScript';
+$lang['cssdatauri']            = 'Rozmiar w bajtach, poniżej którego odwołania do obrazów w plikach CSS powinny być osadzone bezpośrednio w arkuszu stylów by zmniejszyć ogólne żądania nagłówków HTTP. <code>400</code> do <code>600</code> bajtów jest dobrą wartością. Ustaw <code>0</code> aby wyłączyć.';
+$lang['send404']               = 'Nagłówek "HTTP 404/Page Not Found" dla nieistniejących stron';
+$lang['broken_iua']            = 'Czy funkcja "ignore_user_abort" działa? Jeśli nie, może to powodować problemy z indeksem przeszukiwania. Funkcja nie działa przy konfiguracji oprogramowania IIS+PHP/CGI. Szczegółowe informacje: <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>.';
+$lang['xsendfile']             = 'Użyj nagłówka HTTP X-Sendfile w celu przesyłania statycznych plików. Serwer HTTP musi obsługiwać ten nagłówek.';
+$lang['renderer_xhtml']        = 'Mechanizm renderowania głównej treści strony (xhtml)';
+$lang['renderer__core']        = '%s (dokuwiki)';
+$lang['renderer__plugin']      = '%s (wtyczka)';
+$lang['dnslookups']            = 'DokiWiki wyszuka nazwy hostów dla zdalnych adresów IP użytkowników edytujących strony. Jeśli twój serwer DNS działa zbyt wolno, uległ awarii lub nie chcesz używać wyszukiwania, wyłącz tę opcję.';
+$lang['jquerycdn']             = 'Czy pliki skryptów jQuery i jQuery UI powinny być ładowane z CDN? Powoduje to dodanie dodatkowych żądań HTTP, ale pliki mogą być ładowane szybciej, a użytkownicy mogą już je mieć zbuforowane.';
+$lang['jquerycdn_o_0']         = 'Bez CDN, tylko lokalne zasoby';
+$lang['jquerycdn_o_jquery']    = 'CDN z code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN z cdnjs.com';
+$lang['proxy____host']         = 'Proxy - serwer';
+$lang['proxy____port']         = 'Proxy - port';
+$lang['proxy____user']         = 'Proxy - nazwa użytkownika';
+$lang['proxy____pass']         = 'Proxy - hasło';
+$lang['proxy____ssl']          = 'Proxy - SSL';
+$lang['proxy____except']       = 'Wyrażenie regularne określające adresy URL, do których nie należy używać proxy.';
+$lang['safemodehack']          = 'Bezpieczny tryb (przez FTP)';
+$lang['ftp____host']           = 'FTP - serwer';
+$lang['ftp____port']           = 'FTP - port';
+$lang['ftp____user']           = 'FTP - nazwa użytkownika';
+$lang['ftp____pass']           = 'FTP - hasło';
+$lang['ftp____root']           = 'FTP - katalog główny';
+$lang['license_o_']            = 'Nie wybrano żadnej';
+$lang['typography_o_0']        = 'brak';
+$lang['typography_o_1']        = 'tylko podwójne cudzysłowy';
+$lang['typography_o_2']        = 'wszystkie cudzysłowy (nie działa we wszystkich przypadkach)';
+$lang['userewrite_o_0']        = 'brak';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'dokuwiki';
+$lang['deaccent_o_0']          = 'zostaw oryginalną pisownię';
+$lang['deaccent_o_1']          = 'usuń litery';
+$lang['deaccent_o_2']          = 'zamień na ASCII';
+$lang['gdlib_o_0']             = 'biblioteka GDLib niedostępna';
+$lang['gdlib_o_1']             = 'wersja 1.x';
+$lang['gdlib_o_2']             = 'automatyczne wykrywanie';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Streszczenie';
+$lang['rss_content_o_diff']    = 'Różnice';
+$lang['rss_content_o_htmldiff'] = 'Różnice w postaci HTML';
+$lang['rss_content_o_html']    = 'Pełna strona w postaci HTML';
+$lang['rss_linkto_o_diff']     = 'różnice';
+$lang['rss_linkto_o_page']     = 'zmodyfikowana strona';
+$lang['rss_linkto_o_rev']      = 'lista zmian';
+$lang['rss_linkto_o_current']  = 'aktualna strona';
+$lang['compression_o_0']       = 'brak';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nie używaj';
+$lang['xsendfile_o_1']         = 'Specyficzny nagłówek lightttpd (poniżej wersji 1.5)';
+$lang['xsendfile_o_2']         = 'Standardowy nagłówek HTTP X-Sendfile';
+$lang['xsendfile_o_3']         = 'Specyficzny nagłówek Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Login użytkownika';
+$lang['showuseras_o_username'] = 'Pełne nazwisko użytkownika';
+$lang['showuseras_o_username_link'] = 'Imię i nazwisko użytkownika jako połączenie między wiki';
+$lang['showuseras_o_email']    = 'E-mail użytkownika (ukrywanie według ustawień mailguard)';
+$lang['showuseras_o_email_link'] = 'Adresy e-mail użytkowników w formie linku mailto:';
+$lang['useheading_o_0']        = 'Nigdy';
+$lang['useheading_o_navigation'] = 'W nawigacji';
+$lang['useheading_o_content']  = 'W treści';
+$lang['useheading_o_1']        = 'Zawsze';
+$lang['readdircache']          = 'Maksymalny czas dla bufora readdir (w sek).';
diff --git a/wiki/lib/plugins/config/lang/pt-br/intro.txt b/wiki/lib/plugins/config/lang/pt-br/intro.txt
new file mode 100644
index 0000000..db31de4
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/pt-br/intro.txt
@@ -0,0 +1,7 @@
+====== Gerenciador de Configurações ======
+
+Use essa página para controlar as configurações da instalação do seu DokuWiki. Para ajuda acerca dos itens, consulte [[doku>config]]. Para mais detalhes sobre esse plug-in, veja [[doku>plugin:config]].
+
+Definições que apresentem um fundo vermelho claro são protegidas e não podem ser alteradas com esse plug-in. As definições com um fundo azul são o padrão e as com um fundo branco foram configuradas localmente para essa instalação em particular. Tanto as definições em azul quanto as em branco podem ser alteradas.
+
+Lembre-se de pressionar o botão **Salvar** antes de sair dessa página, caso contrário, suas configurações serão perdidas.
diff --git a/wiki/lib/plugins/config/lang/pt-br/lang.php b/wiki/lib/plugins/config/lang/pt-br/lang.php
new file mode 100644
index 0000000..fe532fb
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/pt-br/lang.php
@@ -0,0 +1,217 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Felipe Castro <fefcas@gmail.com>
+ * @author Lucien Raven <lucienraven@yahoo.com.br>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Flávio Veras <flaviove@gmail.com>
+ * @author Jeferson Propheta <jeferson.propheta@gmail.com>
+ * @author jair.henrique <jair.henrique@gmail.com>
+ * @author Luis Dantas <luis@dantas.com>
+ * @author Sergio Motta <sergio@cisne.com.br>
+ * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
+ * @author Victor Westmann <victor.westmann@gmail.com>
+ * @author Guilherme Cardoso <guicardoso@gmail.com>
+ * @author Viliam Dias <viliamjr@gmail.com>
+ */
+$lang['menu']                  = 'Configurações do DokuWiki';
+$lang['error']                 = 'As configurações não foram atualizadas devido a um valor inválido. Por favor, reveja suas alterações e reenvie-as.<br />O(s) valor(es) incorreto(s) serão exibidos contornados por uma borda vermelha.';
+$lang['updated']               = 'As configurações foram atualizadas com sucesso.';
+$lang['nochoice']              = '(nenhuma outra opção disponível)';
+$lang['locked']                = 'Não foi possível atualizar o arquivo de configurações. Se isso <br />
+não for intencional, certifique-se de que o nome do arquivo e as <br />
+e as suas permissões estejam corretos.';
+$lang['danger']                = 'Perigo: Alterar esta opção poderá tornar o seu wiki e menu de configuração inacessíveis.';
+$lang['warning']               = 'Aviso: A alteração desta opção pode causar um comportamento indesejável.';
+$lang['security']              = 'Aviso de segurança: A alteração desta opção pode representar um risco de segurança.';
+$lang['_configuration_manager'] = 'Gerenciador de configurações';
+$lang['_header_dokuwiki']      = 'Configurações do DokuWiki';
+$lang['_header_plugin']        = 'Configurações de plug-ins';
+$lang['_header_template']      = 'Configurações de modelos';
+$lang['_header_undefined']     = 'Configurações indefinidas';
+$lang['_basic']                = 'Configurações básicas';
+$lang['_display']              = 'Configurações de exibição';
+$lang['_authentication']       = 'Configurações de autenticação';
+$lang['_anti_spam']            = 'Configurações do anti-spam';
+$lang['_editing']              = 'Configurações de edição';
+$lang['_links']                = 'Configurações de link';
+$lang['_media']                = 'Configurações de mídia';
+$lang['_notifications']        = 'Configurações de notificação';
+$lang['_syndication']          = 'Configurações de sindicância';
+$lang['_advanced']             = 'Configurações avançadas';
+$lang['_network']              = 'Configurações de rede';
+$lang['_msg_setting_undefined'] = 'Nenhum metadado configurado.';
+$lang['_msg_setting_no_class'] = 'Nenhuma classe definida.';
+$lang['_msg_setting_no_default'] = 'Nenhum valor padrão.';
+$lang['title']                 = 'Título do wiki';
+$lang['start']                 = 'Nome da página inicial';
+$lang['lang']                  = 'Idioma';
+$lang['template']              = 'Modelo, ou a aparência do wiki.';
+$lang['tagline']               = 'Slogan (caso o modelo suporte isso)';
+$lang['sidebar']               = 'Nome da página da barra lateral (caso o modelo suporte isso). Deixe em branco para desabilitar a barra lateral.';
+$lang['license']               = 'Sob qual licença o seu conteúdo deve ser disponibilizado?';
+$lang['savedir']               = 'Diretório para salvar os dados';
+$lang['basedir']               = 'Diretório base';
+$lang['baseurl']               = 'URL base';
+$lang['cookiedir']             = 'Caminhos dos cookies. Deixe em branco para usar a url base.';
+$lang['dmode']                 = 'Modo de criação do diretório';
+$lang['fmode']                 = 'Modo de criação do arquivo';
+$lang['allowdebug']            = 'Habilitar a depuração <b>(desabilite se não for necessário!)</b>';
+$lang['recent']                = 'Modificações recentes';
+$lang['recent_days']           = 'Quantas mudanças recentes devem ser mantidas (dias)?';
+$lang['breadcrumbs']           = 'Número de elementos na trilha de páginas visitadas';
+$lang['youarehere']            = 'Trilha hierárquica';
+$lang['fullpath']              = 'Indica o caminho completo das páginas no rodapé';
+$lang['typography']            = 'Efetuar modificações tipográficas';
+$lang['dformat']               = 'Formato da data (veja a função <a href="http://php.net/strftime">strftime</a> do PHP)';
+$lang['signature']             = 'Assinatura';
+$lang['showuseras']            = 'O que exibir quando mostrar o usuário que editou a página pela última vez';
+$lang['toptoclevel']           = 'Nível mais alto para a tabela de conteúdos';
+$lang['tocminheads']           = 'Quantidade mínima de cabeçalhos para a construção da tabela de conteúdos.';
+$lang['maxtoclevel']           = 'Nível máximo para entrar na tabela de conteúdos';
+$lang['maxseclevel']           = 'Nível máximo para gerar uma seção de edição';
+$lang['camelcase']             = 'Usar CamelCase para links';
+$lang['deaccent']              = '"Limpar" os nomes das páginas';
+$lang['useheading']            = 'Usar o primeiro cabeçalho como nome da página';
+$lang['sneaky_index']          = 'Por padrão, o DokuWiki irá exibir todos os espaços de nomes na visualização do índice. Ao habilitar essa opção, serão escondidos aqueles que o usuário não tiver permissão de leitura. Isso pode resultar na omissão de subespaços de nomes, tornando o índice inútil para certas configurações de ACL.';
+$lang['hidepages']             = 'Esconder páginas correspondentes (expressão regular)';
+$lang['useacl']                = 'Usar listas de controle de acesso';
+$lang['autopasswd']            = 'Gerar senhas automaticamente';
+$lang['authtype']              = 'Método de autenticação';
+$lang['passcrypt']             = 'Método de criptografia da senha';
+$lang['defaultgroup']          = 'Grupo padrão';
+$lang['superuser']             = 'Superusuário - um grupo, usuário ou uma lista separada por vírgulas (usuário1,@grupo1,usuário2) que tenha acesso completo a todas as páginas e funções, independente das definições da ACL';
+$lang['manager']               = 'Gerente - um grupo, usuário ou uma lista separada por vírgulas (usuário1,@grupo1,usuário2) que tenha acesso a certas funções de gerenciamento';
+$lang['profileconfirm']        = 'Confirmar mudanças no perfil com a senha';
+$lang['rememberme']            = 'Permitir cookies de autenticação permanentes ("Lembre-se de mim")';
+$lang['disableactions']        = 'Desabilitar as ações do DokuWiki';
+$lang['disableactions_check']  = 'Verificação';
+$lang['disableactions_subscription'] = 'Monitoramento';
+$lang['disableactions_wikicode'] = 'Ver a fonte/Exportar sem processamento';
+$lang['disableactions_profile_delete'] = 'Excluir a própria conta';
+$lang['disableactions_other']  = 'Outras ações (separadas por vírgula)';
+$lang['disableactions_rss']    = 'Sindicância XML (RSS)';
+$lang['auth_security_timeout'] = 'Tempo limite de segurança para autenticações (seg)';
+$lang['securecookie']          = 'Os cookies definidos via HTTPS devem ser enviados para o navegador somente via HTTPS? Desabilite essa opção quando somente a autenticação do seu wiki for realizada de maneira segura via SSL e a navegação, de maneira insegura.';
+$lang['remote']                = 'Habilitar o sistema de API remota. Isso permite que outras aplicações acessem o wiki via XML-RPC ou outros mecanismos.';
+$lang['remoteuser']            = 'Restringir o acesso à API remota aos grupos ou usuários definidos aqui (separados por vírgulas). Deixe em branco para permitir o acesso a qualquer um.';
+$lang['usewordblock']          = 'Bloquear spam baseado em lista de palavras';
+$lang['relnofollow']           = 'Usar rel="nofollow" em links externos';
+$lang['indexdelay']            = 'Tempo de espera antes da indexação (seg)';
+$lang['mailguard']             = 'Obscurecer endereços de e-mail';
+$lang['iexssprotect']          = 'Verificar a existência de possíveis códigos maliciosos em HTML ou JavaScript nos arquivos enviados';
+$lang['usedraft']              = 'Salvar o rascunho automaticamente durante a edição';
+$lang['htmlok']                = 'Permitir incorporação de HTML';
+$lang['phpok']                 = 'Permitir incorporação de PHP';
+$lang['locktime']              = 'Tempo máximo para o bloqueio de arquivos (seg)';
+$lang['cachetime']             = 'Tempo máximo para o cache (seg)';
+$lang['target____wiki']        = 'Parâmetro "target" para links internos';
+$lang['target____interwiki']   = 'Parâmetro "target" para links interwiki';
+$lang['target____extern']      = 'Parâmetro "target" para links externos';
+$lang['target____media']       = 'Parâmetro "target" para links de mídia';
+$lang['target____windows']     = 'Parâmetro "target" para links do Windows';
+$lang['mediarevisions']        = 'Habilitar revisões de mídias?';
+$lang['refcheck']              = 'Verificação de referência da mídia';
+$lang['gdlib']                 = 'Versão da biblioteca "GD Lib"';
+$lang['im_convert']            = 'Caminho para a ferramenta de conversão ImageMagick';
+$lang['jpg_quality']           = 'Qualidade de compressão do JPG (0-100)';
+$lang['fetchsize']             = 'Tamanho máximo (em bytes) que o "fetch.php" pode transferir do exterior';
+$lang['subscribers']           = 'Habilitar o suporte ao monitoramento de páginas';
+$lang['subscribe_time']        = 'Tempo de espera antes do envio das listas e mensagens de monitoramento (segundos); este tempo deve ser menor que o especificado no parâmetro recent_days';
+$lang['notify']                = 'Enviar notificações de mudança para esse endereço de e-mail';
+$lang['registernotify']        = 'Enviar informações de usuários registrados para esse endereço de e-mail';
+$lang['mailfrom']              = 'Endereço de e-mail a ser utilizado para mensagens automáticas';
+$lang['mailreturnpath']        = 'Endereço de e-mail do destinatário para notificações de falha de entrega';
+$lang['mailprefix']            = 'Prefixo do assunto dos e-mails de envio automático';
+$lang['htmlmail']              = 'Enviar e-mail HTML multipartes, que têm uma aparência melhor, mas um tamanho maior. Desabilite para enviar e-mails em texto puro.';
+$lang['sitemap']               = 'Gerar Google Sitemap (dias)';
+$lang['rss_type']              = 'Tipo de fonte XML';
+$lang['rss_linkto']            = 'Os links da fonte XML apontam para';
+$lang['rss_content']           = 'O que deve ser exibido nos itens da fonte XML?';
+$lang['rss_update']            = 'Intervalo de atualização da fonte XML (seg)';
+$lang['rss_show_summary']      = 'Resumo de exibição da fonte XML no título';
+$lang['rss_media']             = 'Que tipo de alterações devem ser listadas na fonte XML?';
+$lang['rss_media_o_both']      = 'ambos';
+$lang['rss_media_o_pages']     = 'páginas';
+$lang['rss_media_o_media']     = 'mídia';
+$lang['updatecheck']           = 'Verificar atualizações e avisos de segurança? O DokuWiki precisa contactar o "splitbrain.org" para efetuar esse recurso.';
+$lang['userewrite']            = 'Usar URLs "limpas"';
+$lang['useslash']              = 'Usar a barra como separador de espaços de nomes nas URLs';
+$lang['sepchar']               = 'Separador de palavras no nome da página';
+$lang['canonical']             = 'Usar URLs absolutas (http://servidor/caminho)';
+$lang['fnencode']              = 'Método de codificação não-ASCII de nome de arquivos.';
+$lang['autoplural']            = 'Verificar formas plurais nos links';
+$lang['compression']           = 'Método de compressão para arquivos antigos';
+$lang['gzip_output']           = 'Usar "Content-Encoding" do gzip para o código xhtml';
+$lang['compress']              = 'Compactar as saídas de CSS e JavaScript';
+$lang['cssdatauri']            = 'Tamanho máximo em bytes para o qual as imagens referenciadas em arquivos CSS devam ser incorporadas na folha de estilos (o arquivo CSS) para reduzir o custo dos pedidos HTTP. Essa técnica não funcionará na versões do IE < 8!  Valores de <code>400</code> a <code>600</code> são bons. Defina o valor <code>0</code> para desativar.';
+$lang['send404']               = 'Enviar "HTTP 404/Página não encontrada" para páginas não existentes';
+$lang['broken_iua']            = 'A função "ignore_user_abort" está com defeito no seu sistema? Isso pode causar um índice de busca defeituoso. IIS+PHP/CGI reconhecidamente possui esse erro. Veja o <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">bug 852</a> para mais informações.';
+$lang['xsendfile']             = 'Usar o cabeçalho "X-Sendfile" para permitir que o servidor web encaminhe arquivos estáticos? Seu servidor web precisa ter suporte a isso.';
+$lang['renderer_xhtml']        = 'Renderizador a ser utilizado para a saída principal (xhtml) do wiki';
+$lang['renderer__core']        = '%s (núcleo do DokuWiki)';
+$lang['renderer__plugin']      = '%s ("plug-in")';
+$lang['dnslookups']            = 'O DokuWiki procurará pelo nome de host dos endereços IP remotos dos usuários que estão editando as páginas. Caso você tenha um DNS lento, ele não esteja funcionando ou, ainda, você não queira esse recurso, desabilite essa opção.';
+$lang['jquerycdn']             = 'Os scripts jQuery e jQuery UI devem ser carregados a partir de uma CND? Isso adiciona requisições HTTP adicionais, mas os arquivos podem carregar mais rapidamente e os usuários podem já tê-los no cache.';
+$lang['jquerycdn_o_0']         = 'Sem CDN, somente entrega local';
+$lang['jquerycdn_o_jquery']    = 'CDN em code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN em cdnjs.com';
+$lang['proxy____host']         = 'Nome do servidor proxy';
+$lang['proxy____port']         = 'Porta do proxy';
+$lang['proxy____user']         = 'Nome de usuário do proxy';
+$lang['proxy____pass']         = 'Senha do proxy';
+$lang['proxy____ssl']          = 'Usar SSL para conectar ao proxy';
+$lang['proxy____except']       = 'Expressões regulares de URL para excessão de proxy.';
+$lang['safemodehack']          = 'Habilitar o contorno de segurança';
+$lang['ftp____host']           = 'Servidor FTP para o contorno de segurança';
+$lang['ftp____port']           = 'Porta do FTP para o contorno de segurança';
+$lang['ftp____user']           = 'Nome do usuário FTP para o contorno de segurança';
+$lang['ftp____pass']           = 'Senha do usuário FTP para o contorno de segurança';
+$lang['ftp____root']           = 'Diretório raiz do FTP para o contorno de segurança';
+$lang['license_o_']            = 'Nenhuma escolha';
+$lang['typography_o_0']        = 'nenhuma';
+$lang['typography_o_1']        = 'excluir aspas simples';
+$lang['typography_o_2']        = 'incluir aspas simples (nem sempre funciona)';
+$lang['userewrite_o_0']        = 'não';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'interno do DokuWiki';
+$lang['deaccent_o_0']          = 'não';
+$lang['deaccent_o_1']          = 'remover acentos';
+$lang['deaccent_o_2']          = 'romanizar';
+$lang['gdlib_o_0']             = 'a "GD Lib" não está disponível';
+$lang['gdlib_o_1']             = 'versão 1.x';
+$lang['gdlib_o_2']             = 'detecção automática';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'resumo';
+$lang['rss_content_o_diff']    = 'diff unificado';
+$lang['rss_content_o_htmldiff'] = 'tabela de diff formatada em HTML';
+$lang['rss_content_o_html']    = 'conteúdo completo da página em HTML';
+$lang['rss_linkto_o_diff']     = 'visualização das diferenças';
+$lang['rss_linkto_o_page']     = 'página revisada';
+$lang['rss_linkto_o_rev']      = 'lista de revisões';
+$lang['rss_linkto_o_current']  = 'página atual';
+$lang['compression_o_0']       = 'nenhum';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'não usar';
+$lang['xsendfile_o_1']         = 'cabeçalho proprietário lighttpd (anterior à versão 1.5)';
+$lang['xsendfile_o_2']         = 'cabeçalho "X-Sendfile" padrão';
+$lang['xsendfile_o_3']         = 'cabeçalho proprietário "Nginx X-Accel-Redirect"';
+$lang['showuseras_o_loginname'] = 'nome de usuário';
+$lang['showuseras_o_username'] = 'nome completo do usuário';
+$lang['showuseras_o_username_link'] = 'Nome completo do usuário como um link de usuário interwiki';
+$lang['showuseras_o_email']    = 'endereço de e-mail do usuário (obscurecido segundo a definição anterior)';
+$lang['showuseras_o_email_link'] = 'endereço de e-mail de usuário como um link "mailto:"';
+$lang['useheading_o_0']        = 'nunca';
+$lang['useheading_o_navigation'] = 'somente a navegação';
+$lang['useheading_o_content']  = 'somente o conteúdo do wiki';
+$lang['useheading_o_1']        = 'sempre';
+$lang['readdircache']          = 'Tempo máximo para cache readdir (segundos)';
diff --git a/wiki/lib/plugins/config/lang/pt/intro.txt b/wiki/lib/plugins/config/lang/pt/intro.txt
new file mode 100644
index 0000000..06a68c4
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/pt/intro.txt
@@ -0,0 +1,7 @@
+====== Gerenciador de Configurações ======
+
+Use esta página para controlar as definições da instalação do seu DokuWiki. Para ajuda acerca dos itens, consulte [[doku>config]]. Para mais detalhes sobre este plugin, veja [[doku>plugin:config]].
+
+Definições que apresentem um fundo vermelho claro são protegidas e não podem ser alteradas com este plugin. Definições com um fundo azul são padrão e definições com um fundo branco foram configuradas localmente para essa instalação em particular. Tanto as definições em azul como em branco podem ser alteradas.
+
+Lembre-se de pressionar o botão **Guardar** antes de sair desta página, caso contrário, as suas definições serão perdidas.
diff --git a/wiki/lib/plugins/config/lang/pt/lang.php b/wiki/lib/plugins/config/lang/pt/lang.php
new file mode 100644
index 0000000..ba0ab0b
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/pt/lang.php
@@ -0,0 +1,193 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Fil <fil@meteopt.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author José Campos zecarlosdecampos@gmail.com
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ * @author Alfredo Silva <alfredo.silva@sky.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['menu']                  = 'Configuração';
+$lang['error']                 = 'Parâmetros de Configuração não actualizados devido a valores inválidos. Por favor, reveja as modificações que pretende efectuar antes de re-submetê-las.<br /> Os valores incorrectos serão mostrados dentro de uma "moldura" vermelha.';
+$lang['updated']               = 'Parâmetros de Configuração actualizados com sucesso.';
+$lang['nochoice']              = '(não existem outras escolhas disponíveis)';
+$lang['locked']                = 'O ficheiro de configuração não pôde ser actualizado, se isso foi não intencional, <br />certifique-se que o nome e as permissões do ficheiro de configuração estejam correctas.
+';
+$lang['danger']                = 'Perigo: Alterar esta opção poderá tornar o seu wiki e o menu de configuração inacessíveis.';
+$lang['warning']               = 'Aviso: A alteração desta opção poderá causar comportamento involuntário.';
+$lang['security']              = 'Aviso de segurança: Alterar esta opção pode apresentar um risco de segurança.';
+$lang['_configuration_manager'] = 'Gestor de Parâmetros de Configuração';
+$lang['_header_dokuwiki']      = 'Parâmetros DokuWiki';
+$lang['_header_plugin']        = 'Parâmetros dos Plugins';
+$lang['_header_template']      = 'Parâmetros das Templates';
+$lang['_header_undefined']     = 'Parâmetros não definidos';
+$lang['_basic']                = 'Configurações Básicas';
+$lang['_display']              = 'Configuração de Apresentação';
+$lang['_authentication']       = 'Configuração de Autenticação';
+$lang['_anti_spam']            = 'Configuração Anti-Spam';
+$lang['_editing']              = 'Configuração de Edição';
+$lang['_links']                = 'Configuração de Ligações';
+$lang['_media']                = 'Configuração de Media';
+$lang['_notifications']        = 'Notificação';
+$lang['_syndication']          = 'Sindicação (RSS)';
+$lang['_advanced']             = 'Configurações Avançadas';
+$lang['_network']              = 'Configuração de Rede';
+$lang['_msg_setting_undefined'] = 'Nenhum metadado configurado.';
+$lang['_msg_setting_no_class'] = 'Nenhuma classe definida.';
+$lang['_msg_setting_no_default'] = 'Sem valor por omissão.';
+$lang['title']                 = 'Título deste Wiki';
+$lang['start']                 = 'Nome da Página Inicial';
+$lang['lang']                  = 'Idioma';
+$lang['template']              = 'Template';
+$lang['license']               = 'Sob que licença o seu conteúdo deverá ser disponibilizado?';
+$lang['savedir']               = 'Pasta para guardar dados';
+$lang['basedir']               = 'Pasta Base';
+$lang['baseurl']               = 'URL Base';
+$lang['dmode']                 = 'Modo de criação de pastas.';
+$lang['fmode']                 = 'Modo de criação de ficheiros.';
+$lang['allowdebug']            = 'Permitir depuração <b>desabilite se não for necessário!</b>';
+$lang['recent']                = 'Alterações recentes';
+$lang['recent_days']           = 'Quantas mudanças recentes devem ser mantidas? (dias)';
+$lang['breadcrumbs']           = 'Número máximo de breadcrumbs';
+$lang['youarehere']            = 'Breadcrumbs hierárquicas';
+$lang['fullpath']              = 'Revelar caminho completo no rodapé';
+$lang['typography']            = 'Executar substituições tipográficas';
+$lang['dformat']               = 'Formato de Data (ver função PHP\'s <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Assinatura';
+$lang['showuseras']            = 'O que exibir quando mostrar o utilizador que editou a página pela última vez';
+$lang['toptoclevel']           = 'Nível de topo para a tabela de conteúdo';
+$lang['tocminheads']           = 'Quantidade mínima de cabeçalhos para a construção da tabela de conteúdos.';
+$lang['maxtoclevel']           = 'Máximo nível para a tabela de conteúdo';
+$lang['maxseclevel']           = 'Máximo nível para editar secção';
+$lang['camelcase']             = 'Usar CamelCase';
+$lang['deaccent']              = 'Nomes das páginas sem acentos';
+$lang['useheading']            = 'Usar o primeiro cabeçalho para o nome da página';
+$lang['sneaky_index']          = 'Por norma, o DokuWiki irá exibir todos os espaços de nomes na visualização do índice. Ao habilitar essa opção, serão escondidos aqueles em que o utilizador não tenha permissão de leitura. Isto pode resultar na omissão de sub-ramos acessíveis, que poderá tornar o índice inútil para certas configurações de ACL.';
+$lang['hidepages']             = 'Esconder páginas correspondentes (expressões regulares)';
+$lang['useacl']                = 'Usar ACL - Listas de Controlo de Acessos';
+$lang['autopasswd']            = 'Auto-gerar senhas';
+$lang['authtype']              = 'Método de autenticação';
+$lang['passcrypt']             = 'Método de cifragem da senha';
+$lang['defaultgroup']          = 'Grupo por omissão';
+$lang['superuser']             = 'Superutilizador - um grupo, utilizador ou uma lista separada por vírgulas usuário1,@grupo1,usuário2 que tem acesso completo a todas as páginas e funções, independente das definições da ACL';
+$lang['manager']               = 'Gestor - um grupo, utilizador ou uma lista separada por vírgulas usuário1,@grupo1,usuário2 que tem acesso a certas funções de gestão';
+$lang['profileconfirm']        = 'Confirmar mudanças no perfil com a senha';
+$lang['rememberme']            = 'Permitir cookies de autenticação permanentes (Memorizar?)';
+$lang['disableactions']        = 'Desactivar acções DokuWiki';
+$lang['disableactions_check']  = 'Checar';
+$lang['disableactions_subscription'] = 'Subscrever/Não Subscrver';
+$lang['disableactions_wikicode'] = 'Ver fonte/Exportar em bruto';
+$lang['disableactions_profile_delete'] = 'Deletar Sua Conta.';
+$lang['disableactions_other']  = 'Outras acções (separadas por vírgula)';
+$lang['disableactions_rss']    = 'Sindicação XML (RSS)';
+$lang['auth_security_timeout'] = 'Tempo limite de segurança para autenticações (seg)';
+$lang['securecookie']          = 'Os cookies definidos via HTTPS deverão ser enviados para o navegador somente via HTTPS? Desabilite essa opção quando somente a autenticação do seu wiki for realizada de maneira segura via SSL e a navegação de maneira insegura.';
+$lang['usewordblock']          = 'Bloquear spam baseado em lista de palavras (wordlist)';
+$lang['relnofollow']           = 'Usar rel="nofollow" em links externos';
+$lang['indexdelay']            = 'Tempo de espera antes da indexação (seg)';
+$lang['mailguard']             = 'Obscurecer endereços de email';
+$lang['iexssprotect']          = 'Verificar os arquivos enviados contra possíveis códigos maliciosos em HTML ou JavaScript';
+$lang['usedraft']              = 'Guardar o rascunho automaticamente durante a edição';
+$lang['htmlok']                = 'Permitir embeber HTML';
+$lang['phpok']                 = 'Permitir embeber PHP';
+$lang['locktime']              = 'Idade máxima para locks (seg.)';
+$lang['cachetime']             = 'Idade máxima para cache (seg.)';
+$lang['target____wiki']        = 'Parâmetro "target" para links internos';
+$lang['target____interwiki']   = 'Parâmetro "target" para links entre wikis';
+$lang['target____extern']      = 'Parâmetro "target" para links externos';
+$lang['target____media']       = 'Parâmetro "target" para links de media';
+$lang['target____windows']     = 'Parâmetro "target" para links do Windows';
+$lang['mediarevisions']        = 'Ativar Mediarevisions?';
+$lang['refcheck']              = 'Verificação de referência da media';
+$lang['gdlib']                 = 'Versão GD Lib';
+$lang['im_convert']            = 'Caminho para a ferramenta "convert" do ImageMagick';
+$lang['jpg_quality']           = 'Compressão/Qualidade JPG (0-100)';
+$lang['fetchsize']             = 'Tamanho máximo (bytes) que o fetch.php pode transferir do exterior';
+$lang['subscribers']           = 'Habilitar o suporte a subscrição de páginas ';
+$lang['subscribe_time']        = 'Tempo após o qual as listas de subscrição e "digests" são enviados (seg.); Isto deve ser inferior ao tempo especificado em recent_days.';
+$lang['notify']                = 'Enviar notificações de mudanças para este endereço de email';
+$lang['registernotify']        = 'Enviar informações de utilizadores registados para este endereço de email';
+$lang['mailfrom']              = 'Endereço de email a ser utilizado para mensagens automáticas';
+$lang['mailprefix']            = 'Prefixo de email a ser utilizado para mensagens automáticas';
+$lang['sitemap']               = 'Gerar Sitemap Google (dias)';
+$lang['rss_type']              = 'Tipo de feed XML';
+$lang['rss_linkto']            = 'Links de feed XML ara';
+$lang['rss_content']           = 'O que deve ser exibido nos itens do alimentador XML?';
+$lang['rss_update']            = 'Intervalo de actualização do alimentador XML (seg)';
+$lang['rss_show_summary']      = 'Resumo de exibição do alimentador XML no título';
+$lang['updatecheck']           = 'Verificar por actualizações e avisos de segurança? O DokuWiki precisa contactar o "splitbrain.org" para efectuar esta verificação.';
+$lang['userewrite']            = 'Usar URLs SEO';
+$lang['useslash']              = 'Usar a barra como separador de espaços de nomes nas URLs';
+$lang['sepchar']               = 'Separador de palavras no nome da página';
+$lang['canonical']             = 'Usar URLs absolutas (http://servidor/caminho)';
+$lang['fnencode']              = 'Método de codificar nomes de ficheiro não-ASCII.';
+$lang['autoplural']            = 'Verificar formas plurais nos links';
+$lang['compression']           = 'Método de compressão para histórico';
+$lang['gzip_output']           = 'Usar "Content-Encoding" do gzip para o código xhtml';
+$lang['compress']              = 'Compactar as saídas de CSS e JavaScript';
+$lang['cssdatauri']            = 'Tamanho em bytes até ao qual as imagens referenciadas em ficheiros CSS devem ser embutidas diretamente no CSS para reduzir a carga de pedidos HTTP extra. <code>400</code> a <code>600</code> bytes é um bom valor. Escolher <code>0</code> para desativar.';
+$lang['send404']               = 'Enviar "HTTP 404/Página não encontrada" para páginas não existentes';
+$lang['broken_iua']            = 'A função "ignore_user_abort" não está a funcionar no seu sistema? Isso pode causar um índice de busca defeituoso. Sistemas com IIS+PHP/CGI são conhecidos por possuírem este problema. Veja o <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">bug 852</a> para mais informações.';
+$lang['xsendfile']             = 'Usar o cabeçalho "X-Sendfile" para permitir o servidor de internet encaminhar ficheiros estáticos? O seu servidor de internet precisa ter suporte a isso.';
+$lang['renderer_xhtml']        = 'Renderizador a ser utilizado para a saída principal do wiki (xhtml)';
+$lang['renderer__core']        = '%s (núcleo dokuwiki)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['proxy____host']         = 'Nome do servidor proxy';
+$lang['proxy____port']         = 'Porta de Proxy';
+$lang['proxy____user']         = 'Nome de utilizador Proxy';
+$lang['proxy____pass']         = 'Password de Proxy ';
+$lang['proxy____ssl']          = 'Usar SSL para conectar ao proxy';
+$lang['proxy____except']       = 'Expressão regular para condizer URLs para os quais o proxy deve ser saltado.';
+$lang['safemodehack']          = 'Habilitar modo de segurança';
+$lang['ftp____host']           = 'Servidor FTP para o modo de segurança';
+$lang['ftp____port']           = 'Porta de FTP para o modo de segurança';
+$lang['ftp____user']           = 'Nome do utilizador FTP para o modo de segurança';
+$lang['ftp____pass']           = 'Senha do utilizador FTP para o modo de segurança';
+$lang['ftp____root']           = 'Directoria raiz do FTP para o modo de segurança';
+$lang['license_o_']            = 'Nenhuma escolha';
+$lang['typography_o_0']        = 'nenhum';
+$lang['typography_o_1']        = 'Apenas entre aspas';
+$lang['typography_o_2']        = 'Entre aspas e apóstrofes';
+$lang['userewrite_o_0']        = 'nenhum';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'interno (DokuWiki)';
+$lang['deaccent_o_0']          = 'desligado';
+$lang['deaccent_o_1']          = 'remover acentos';
+$lang['deaccent_o_2']          = 'romanizar';
+$lang['gdlib_o_0']             = 'A GD Lib não está disponível';
+$lang['gdlib_o_1']             = 'Versão 1.x';
+$lang['gdlib_o_2']             = 'Auto-detecção';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstracto';
+$lang['rss_content_o_diff']    = 'Diferenças Unificadas';
+$lang['rss_content_o_htmldiff'] = 'Tabela de diff formatada em HTML';
+$lang['rss_content_o_html']    = 'Conteúdo completo da página em HTML';
+$lang['rss_linkto_o_diff']     = 'vista de diferenças';
+$lang['rss_linkto_o_page']     = 'página revista';
+$lang['rss_linkto_o_rev']      = 'lista de revisões';
+$lang['rss_linkto_o_current']  = 'página actual';
+$lang['compression_o_0']       = 'Sem Compressão';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'não usar';
+$lang['xsendfile_o_1']         = 'Cabeçalho proprietário lighttpd (anterior à versão 1.5)';
+$lang['xsendfile_o_2']         = 'Cabeçalho "X-Sendfile" padrão';
+$lang['xsendfile_o_3']         = 'Cabeçalho proprietário "Nginx X-Accel-Redirect"';
+$lang['showuseras_o_loginname'] = 'Nome de utilizador';
+$lang['showuseras_o_username'] = 'Nome completo do utilizador';
+$lang['showuseras_o_email']    = 'Endereço email do utilizador (ofuscado de acordo com a configuração mailguard)';
+$lang['showuseras_o_email_link'] = 'Endereço de e-mail de usuário como um link "mailto:"';
+$lang['useheading_o_0']        = 'Nunca';
+$lang['useheading_o_navigation'] = 'Apenas Navegação';
+$lang['useheading_o_content']  = 'Apenas Conteúdo Wiki';
+$lang['useheading_o_1']        = 'Sempre';
+$lang['readdircache']          = 'Idade máxima para a cache de "readdir" (seg)';
diff --git a/wiki/lib/plugins/config/lang/ro/intro.txt b/wiki/lib/plugins/config/lang/ro/intro.txt
new file mode 100644
index 0000000..f5cbbe8
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ro/intro.txt
@@ -0,0 +1,7 @@
+====== Manager Configurare ======
+
+Folosiţi această pagină pentru a controla setările instalării DokuWiki. Pentru ajutor la probleme punctuale, consultaţi [[doku>config]]. Pentru mai multe detalii privind acest plugin, consultaţi [[doku>plugin:config]].
+
+Setările pe un fond roşu-deschis sunt protejate şi nu pot fi modificate cu acest plugin. Setările pe un fond albastru sunt valori implicite iar cele pe fond alb au fost setate local pentru această instalare individualizată. Setările pe fond albastru şi alb pot fi modificate.
+
+Nu uitaţi să apăsaţi butonul **SALVEAZĂ** înainte de a părăsi această pagină; altfel, modificările aduse se vor pierde.
diff --git a/wiki/lib/plugins/config/lang/ro/lang.php b/wiki/lib/plugins/config/lang/ro/lang.php
new file mode 100644
index 0000000..649954d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ro/lang.php
@@ -0,0 +1,195 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sergiu Baltariu <s_baltariu@yahoo.com>
+ * @author s_baltariu@yahoo.com
+ * @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
+ */
+$lang['menu']                  = 'Setări de Configurare';
+$lang['error']                 = 'Setări nu au fost actualizate datorită unei valori incorecte; verificaţi modificările şi încercaţi din nou. <br /> Valorile incorecte vor apărea într-un chenar roşu.';
+$lang['updated']               = 'Setările au fost actualizate cu succes.';
+$lang['nochoice']              = '(nici o altă opţiune nu este disponibilă)';
+$lang['locked']                = 'Fişierul de setări nu poate fi actualizat. Dacă nu s-a dorit aceasta, asiguraţi-vă că numele şi drepturile de acces ale fişierului de setări localizate sunt corecte.';
+$lang['danger']                = 'Pericol: Modificarea aceastei opțiuni poate conduce la imposibilitatea accesării wiki-ului și a meniului de configurare!';
+$lang['warning']               = 'Atenție: Modificarea aceastei opțiuni poate duce la evenimente nedorite!';
+$lang['security']              = 'Alertă de securitate: Modificarea acestei opțiuni poate prezenta un risc de securitate!';
+$lang['_configuration_manager'] = 'Manager Configurare';
+$lang['_header_dokuwiki']      = 'Setări DokuWiki';
+$lang['_header_plugin']        = 'Setări Plugin-uri';
+$lang['_header_template']      = 'Setări Şabloane';
+$lang['_header_undefined']     = 'Setări Nedefinite';
+$lang['_basic']                = 'Setări de Bază';
+$lang['_display']              = 'Setări Afişare';
+$lang['_authentication']       = 'Setări Autentificare';
+$lang['_anti_spam']            = 'Setări Anti-Spam';
+$lang['_editing']              = 'Setări Editare';
+$lang['_links']                = 'Setări Legături';
+$lang['_media']                = 'Setări Media';
+$lang['_advanced']             = 'Setări Avansate';
+$lang['_network']              = 'Setări Reţea';
+$lang['_msg_setting_undefined'] = 'Nesetat metadata';
+$lang['_msg_setting_no_class'] = 'Nesetat class';
+$lang['_msg_setting_no_default'] = 'Nici o valoare implicită';
+$lang['title']                 = 'Titlul wiki';
+$lang['start']                 = 'Numele paginii de start';
+$lang['lang']                  = 'Limbă';
+$lang['template']              = 'Şablon';
+$lang['tagline']               = 'Slogan (dacă templateul suportă opțiunea)';
+$lang['sidebar']               = 'Numele paginii barei laterale (dacă templateul suportă opțiunea), câmpul lăsat gol dezactivează bara laterală';
+$lang['license']               = 'Sub ce licenţă va fi publicat conţinutul?';
+$lang['savedir']               = 'Director pentru salvarea datelor';
+$lang['basedir']               = 'Director bază';
+$lang['baseurl']               = 'URL bază ';
+$lang['cookiedir']             = 'Cale Cookie. Lăsați gol pentru a utiliza baseurl.';
+$lang['dmode']                 = 'Mod creare director';
+$lang['fmode']                 = 'Mod creare fişier';
+$lang['allowdebug']            = 'Permite depanarea <b>dezactivaţi dacă cu e necesar!</b>';
+$lang['recent']                = 'Modificări recente';
+$lang['recent_days']           = 'Câte modificări recente să se păstreze?';
+$lang['breadcrumbs']           = 'Numărul de "urme" lăsate';
+$lang['youarehere']            = 'Structura ierarhică a "urmelor" lăsate';
+$lang['fullpath']              = 'Arată calea completă a paginii în subsol';
+$lang['typography']            = 'Fă înlocuiri topografice';
+$lang['dformat']               = 'Format dată (vezi funcţia PHP <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Semnătura';
+$lang['showuseras']            = 'Ce se afişează la indicarea utilizatorului care a editat ultimul o pagină';
+$lang['toptoclevel']           = 'Primul nivel pentru cuprins';
+$lang['tocminheads']           = 'Numărul minim de titluri ce determină dacă se alcătuieşte Tabelul de Cuprins (TOC)';
+$lang['maxtoclevel']           = 'Nivelul maxim pentru cuprins';
+$lang['maxseclevel']           = 'Nivelul maxim de editare al secţiunii';
+$lang['camelcase']             = 'Foloseşte CamelCase pentru legături';
+$lang['deaccent']              = 'numedepagină curate';
+$lang['useheading']            = 'Foloseşte primul titlu pentru numele paginii';
+$lang['sneaky_index']          = 'Implicit, DokuWiki va arăta toate numele de spaţii la vizualizarea indexului. Activând această opţiune vor fi ascunse acelea la care utilizatorul nu are drepturi de citire. Aceasta poate determina ascunderea sub-numelor de spaţii accesibile. Aceasta poate face index-ul  inutilizabil cu anumite setări ale ACL';
+$lang['hidepages']             = 'Ascunde paginile pereche (expresii regulate)';
+$lang['useacl']                = 'Utilizează liste de control al accesului';
+$lang['autopasswd']            = 'Parole autogenerate';
+$lang['authtype']              = 'Autentificare backend';
+$lang['passcrypt']             = 'Metoda de criptare a parolei';
+$lang['defaultgroup']          = 'Grup implicit';
+$lang['superuser']             = 'Superuser - un grup sau un utilizator cu acces complet la toate paginile şi funcţiile indiferent de setările ACL';
+$lang['manager']               = 'Manager - un grup sau un utilizator cu acces la anumite funcţii de management';
+$lang['profileconfirm']        = 'Confirmă schimbarea profilului cu parola';
+$lang['rememberme']            = 'Permiteţi cookies permanente la login (ţine-mă minte)';
+$lang['disableactions']        = 'Dezactivează acţiunile DokuWiki';
+$lang['disableactions_check']  = 'Verifică';
+$lang['disableactions_subscription'] = 'Subscrie/Anulează subscrierea';
+$lang['disableactions_wikicode'] = 'Vizualizează sursa/Export Raw';
+$lang['disableactions_other']  = 'Alte acţiuni (separate prin virgulă)';
+$lang['auth_security_timeout'] = 'Timpul de expirare al Autentificării Securizate (secunde)';
+$lang['securecookie']          = 'Cookies-urile setate via HTTPS să fie trimise doar via HTTPS de către browser? Dezactivaţi această opţiune numai când login-ul wiki-ului este securizat cu SSL dar navigarea wiki-ului se realizează nesecurizat.';
+$lang['remote']                = 'Activează sistemul remote API. Acesta permite altor aplicații să acceseze wiki-ul via XML-RPC sau alte mecanisme.';
+$lang['remoteuser']            = 'Restricționează accesul sistemului remote API la grupurile sau utilizatorii următori (separați prin virgulă). Lăsați câmpul gol pentru a da acces către toți.';
+$lang['usewordblock']          = 'Blochează spam-ul pe baza listei de cuvinte';
+$lang['relnofollow']           = 'Folosiţi rel="nofollow" pentru legăturile externe';
+$lang['indexdelay']            = 'Timpul de întârziere înainte de indexare (sec)';
+$lang['mailguard']             = 'Adrese de email acoperite';
+$lang['iexssprotect']          = 'Verifică fişierele încărcate pentru posibil cod periculos JavaScript sau HTML';
+$lang['usedraft']              = 'Salvează automat o schiţă în timpul editării';
+$lang['htmlok']                = 'Permite intercalare cod HTML';
+$lang['phpok']                 = 'Permite intercalare cod PHP';
+$lang['locktime']              = 'Durata maximă pentru blocarea fişierelor (secunde)';
+$lang['cachetime']             = 'Durata maximă pentru cache (secunde)';
+$lang['target____wiki']        = 'Fereastra ţintă pentru legăturile interne';
+$lang['target____interwiki']   = 'Fereastra ţintă pentru legăturile interwiki';
+$lang['target____extern']      = 'Fereastra ţintă pentru legăturile externe';
+$lang['target____media']       = 'Fereastra ţintă pentru legăturile media';
+$lang['target____windows']     = 'Fereastra ţintă pentru legăturile windows';
+$lang['mediarevisions']        = 'Activare Revizii Media?';
+$lang['refcheck']              = 'Verificare referinţă media';
+$lang['gdlib']                 = 'Versiunea GD Lib';
+$lang['im_convert']            = 'Calea către instrumentul de conversie ImageMagick';
+$lang['jpg_quality']           = 'Calitatea compresiei JPG (0-100)';
+$lang['fetchsize']             = 'Dimensiunea maximă (byte) pe care fetch.php poate să descarce din exterior';
+$lang['subscribers']           = 'Activează suportul pentru subscrierea paginii';
+$lang['subscribe_time']        = 'Timpul după care lista de abonare şi digestie sunt trimise (sec); Aceasta ar trebui să fie mai mic decât timpul specificat în recent_days.';
+$lang['notify']                = 'Trimite notificări privind modificările pe această adresă de email';
+$lang['registernotify']        = 'Trimite informare noilor utilizatori înregistraţi pe această adresă de email';
+$lang['mailfrom']              = 'Adresa de email utilizată pentru mailuri automate';
+$lang['mailprefix']            = 'Prefix subiect e-mail de folosit pentru mail-uri automate';
+$lang['sitemap']               = 'Generează Google sitemap (zile)';
+$lang['rss_type']              = 'Tip flux XML';
+$lang['rss_linkto']            = 'Fluxul XML se leagă la';
+$lang['rss_content']           = 'Ce să afişez în obiectele fluxurilor XML';
+$lang['rss_update']            = 'Intervalul de actualizare a fluxului XML (sec)';
+$lang['rss_show_summary']      = 'Fluxul XML arată rezumat în titlu';
+$lang['rss_media']             = 'Ce fel de modificări ar trebui afișate în fluxul XML?';
+$lang['updatecheck']           = 'Verificare actualizări şi avertismente privind securitatea? DokuWiki trebuie să contacteze update.dokuwiki.org pentru această facilitate.';
+$lang['userewrite']            = 'Folosire URL-uri "nice"';
+$lang['useslash']              = 'Foloseşte slash-ul ca separator de spaţii de nume în URL-uri';
+$lang['sepchar']               = 'Separator cuvinte în numele paginii';
+$lang['canonical']             = 'Foloseşte URL-uri canonice';
+$lang['fnencode']              = 'Metoda de encodare a numelor fişierelor non-ASCII.';
+$lang['autoplural']            = 'Verifică formele de plural în legături';
+$lang['compression']           = 'Metoda de criptare a fişierelor pod';
+$lang['gzip_output']           = 'Foloseşte gzip pentru codarea conţinutului xhtml';
+$lang['compress']              = 'Compactează codul CSS şi javascript produs';
+$lang['cssdatauri']            = 'Dimensiunea în octeți până la care imaginile regasite în fișierele CSS ar trebui să fie incluse direct în stylesheet pentru a reduce supraîncărcarea antetului cererii HTTP. Această tehnică nu va funcționa în IE < 8! <code>400</code> până la <code>600</code> octeți sunt suficienți. Introduceți <code>0</code> pentru a dezactiva această opțiune.';
+$lang['send404']               = 'Trimite mesajul "HTTP 404/Page Not Found" pentru paginile inexistente';
+$lang['broken_iua']            = 'Funcţia ignore_user_abort nu funcţionează pe sistemul dumneavoastră? Aceasta poate determina nefuncţionarea indexului de căutare. IIS+PHP/CGI sunt cunoscute ca fiind nefuncţionale. Mai multe detalii găsiţi la <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a>';
+$lang['xsendfile']             = 'Folosiţi header-ul X-Send pentru a-i permite serverului web să trimită fişiere statice? Serverul web trebuie să permită aceasta.';
+$lang['renderer_xhtml']        = 'Motorul de randare principal folosit pentru afişarea wiki în format xhtml';
+$lang['renderer__core']        = '%s (nucleu dokuwiki)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['proxy____host']         = 'Nume server Proxy';
+$lang['proxy____port']         = 'Port Proxy';
+$lang['proxy____user']         = 'Nume utilizator Proxy';
+$lang['proxy____pass']         = 'Parolă Proxy';
+$lang['proxy____ssl']          = 'Foloseşte SSL pentru conectare la Proxy';
+$lang['proxy____except']       = 'Expresie regulară de potrivit cu URL-uri pentru care proxy-ul trebuie păsuit.';
+$lang['safemodehack']          = 'Activează safemode hack';
+$lang['ftp____host']           = 'Server FTP pentru safemode hack';
+$lang['ftp____port']           = 'Port FTP pentru safemode hack';
+$lang['ftp____user']           = 'Nume utilizator pentru safemode hack';
+$lang['ftp____pass']           = 'Parolă FTP pentru safemode hack';
+$lang['ftp____root']           = 'Director rădăcină FTP pentru safemode hack';
+$lang['license_o_']            = 'Nici una aleasă';
+$lang['typography_o_0']        = 'nimic';
+$lang['typography_o_1']        = 'Numai ghilimele duble';
+$lang['typography_o_2']        = 'Toate ghilimelele (s-ar putea să nu fucţioneze întotdeauna)';
+$lang['userewrite_o_0']        = 'nimic';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki intern';
+$lang['deaccent_o_0']          = 'închis';
+$lang['deaccent_o_1']          = 'înlătură accentele';
+$lang['deaccent_o_2']          = 'romanizează';
+$lang['gdlib_o_0']             = 'biblioteca GD Lib nu este disponibilă';
+$lang['gdlib_o_1']             = 'Versiunea 1.x';
+$lang['gdlib_o_2']             = 'Detectare automată';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstract';
+$lang['rss_content_o_diff']    = 'Diferenţe unificate';
+$lang['rss_content_o_htmldiff'] = 'Tabel diferenţe în format HTML';
+$lang['rss_content_o_html']    = 'Conţinut pagină complet HTML';
+$lang['rss_linkto_o_diff']     = 'vizualizare diferenţe';
+$lang['rss_linkto_o_page']     = 'pagina revizuită';
+$lang['rss_linkto_o_rev']      = 'lista revizuirilor';
+$lang['rss_linkto_o_current']  = 'pagina curentă';
+$lang['compression_o_0']       = 'nici una';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nu se foloseşte';
+$lang['xsendfile_o_1']         = 'Header proprietar lighttpd (înaintea versiunii 1.5)';
+$lang['xsendfile_o_2']         = 'Header standard X-Sendfile';
+$lang['xsendfile_o_3']         = 'Header proprietar Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Numele de login';
+$lang['showuseras_o_username'] = 'Numele complet al utilizatorului';
+$lang['showuseras_o_email']    = 'Adresa de e-mail a utilizatorului (mascată conform setărilor de protecţie)';
+$lang['showuseras_o_email_link'] = 'Adresa de e-mail a utilizatorului ca mailto: link';
+$lang['useheading_o_0']        = 'Niciodată';
+$lang['useheading_o_navigation'] = 'Doar navigare';
+$lang['useheading_o_content']  = 'Doar conţinutul Wiki';
+$lang['useheading_o_1']        = 'Întotdeauna';
+$lang['readdircache']          = 'Vârsta maximă depozitare readdir (sec)';
diff --git a/wiki/lib/plugins/config/lang/ru/intro.txt b/wiki/lib/plugins/config/lang/ru/intro.txt
new file mode 100644
index 0000000..2b4fe3d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ru/intro.txt
@@ -0,0 +1,7 @@
+====== Настройки вики ======
+
+Здесь вы можете изменить настройки своей «Докувики». Для справки по конкретным опциям смотрите [[doku>config|Конфигурирование «Докувики»]]. Дополнительные детали об этом плагине доступны здесь: [[doku>plugin:config]].
+
+Настройки, отображаемые на светло-красном фоне, защищены от изменений и не могут быть отредактированы с помощью этого плагина.  Голубым фоном отмечены настройки со значениями по умолчанию, а белым фоном — настройки, которые были локально изменены для этой конкретной «Докувики». Как голубые, так и белые настройки доступны для изменения.
+
+Не забудьте нажать кнопку «**Сохранить**» перед тем, как покинуть эту страницу, иначе все ваши изменения будут потеряны.
diff --git a/wiki/lib/plugins/config/lang/ru/lang.php b/wiki/lib/plugins/config/lang/ru/lang.php
new file mode 100644
index 0000000..3d6914d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/ru/lang.php
@@ -0,0 +1,222 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuriy Skalko <yuriy.skalko@gmail.com>
+ * @author Zhassulan <zyesmukanov@gmail.com>
+ * @author Denis Simakov <akinoame1@gmail.com>
+ * @author Andrew Pleshakov <beotiger@mail.ru>
+ * @author Змей Этерийский <evil_snake@eternion.ru>
+ * @author Hikaru Nakajima <jisatsu@mail.ru>
+ * @author Alexei Tereschenko <alexeitlex@yahoo.com>
+ * @author Alexander Sorkin <kibizoid@gmail.com>
+ * @author Kirill Krasnov <krasnovforum@gmail.com>
+ * @author Vlad Tsybenko <vlad.development@gmail.com>
+ * @author Aleksey Osadchiy <rfc@nm.ru>
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
+ * @author RainbowSpike <1@2.ru>
+ * @author alexey <xeenych@gmail.com>
+ */
+$lang['menu']                  = 'Настройки вики';
+$lang['error']                 = 'Настройки не были сохранены из-за ошибки в одном из значений. Пожалуйста, проверьте свои изменения и попробуйте ещё раз.<br />Неправильные значения будут обведены красной рамкой.';
+$lang['updated']               = 'Настройки успешно сохранены.';
+$lang['nochoice']              = '(нет других вариантов)';
+$lang['locked']                = 'Файл настройки недоступен для изменения. Если это не специально, <br />убедитесь, что файл локальной настройки имеет правильное имя и права доступа.';
+$lang['danger']                = 'Внимание: изменение этой опции может сделать вашу вики и меню конфигурации недоступными.';
+$lang['warning']               = 'Предостережение: изменение этой опции может вызвать непредсказуемое поведение.';
+$lang['security']              = 'Предостережение по безопасности: изменение этой опции может вызвать риск, связанный с безопасностью.';
+$lang['_configuration_manager'] = 'Настройки вики';
+$lang['_header_dokuwiki']      = 'Параметры «Докувики»';
+$lang['_header_plugin']        = 'Параметры плагинов';
+$lang['_header_template']      = 'Параметры шаблонов';
+$lang['_header_undefined']     = 'Прочие параметры';
+$lang['_basic']                = 'Основные параметры';
+$lang['_display']              = 'Параметры отображения';
+$lang['_authentication']       = 'Параметры аутентификации';
+$lang['_anti_spam']            = 'Параметры блокировки спама';
+$lang['_editing']              = 'Параметры правки';
+$lang['_links']                = 'Параметры ссылок';
+$lang['_media']                = 'Параметры медиафайлов';
+$lang['_notifications']        = 'Параметры уведомлений';
+$lang['_syndication']          = 'Параметры синдикаций (RSS)';
+$lang['_advanced']             = 'Тонкая настройка';
+$lang['_network']              = 'Параметры сети';
+$lang['_msg_setting_undefined'] = 'Не найдены метаданные настроек.';
+$lang['_msg_setting_no_class'] = 'Не найден класс настроек.';
+$lang['_msg_setting_no_default'] = 'Не задано значение по умолчанию.';
+$lang['title']                 = 'Название вики';
+$lang['start']                 = 'Имя стартовой страницы';
+$lang['lang']                  = 'Язык';
+$lang['template']              = 'Шаблон';
+$lang['tagline']               = 'Слоган (если поддерживается шаблоном)';
+$lang['sidebar']               = 'Боковая панель; пустое поле отключает боковую панель.';
+$lang['license']               = 'На условиях какой лицензии будет предоставляться содержимое вики?';
+$lang['savedir']               = 'Директория для данных';
+$lang['basedir']               = 'Корневая директория (например, <code>/dokuwiki/</code>). Оставьте пустым для автоопределения.';
+$lang['baseurl']               = 'Корневой адрес (URL) (например, <code>http://www.yourserver.ru</code>). Оставьте пустым для автоопределения.';
+$lang['cookiedir']             = 'Директория для cookie. Оставьте пустым для автоопределения.';
+$lang['dmode']                 = 'Права для создаваемых директорий';
+$lang['fmode']                 = 'Права для создаваемых файлов';
+$lang['allowdebug']            = 'Включить отладку. <b>Отключите, если она вам не нужна!</b>';
+$lang['recent']                = 'Недавние изменения (кол-во)';
+$lang['recent_days']           = 'На сколько дней назад сохранять недавние изменения';
+$lang['breadcrumbs']           = 'Вы посетили (кол-во). Поставьте 0 (ноль) для отключения.';
+$lang['youarehere']            = 'Показывать «Вы находитесь здесь»';
+$lang['fullpath']              = 'Полный путь к документу';
+$lang['typography']            = 'Выполнять замену на типографские символы';
+$lang['dformat']               = 'Формат даты и времени (см. функцию PHP <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Шаблон подписи';
+$lang['showuseras']            = 'Что отображать при показе пользователя, редактировавшего страницу последним';
+$lang['toptoclevel']           = 'Мин. уровень в содержании';
+$lang['tocminheads']           = 'Мин. количество заголовков, при котором будет составлено содержание';
+$lang['maxtoclevel']           = 'Макс. уровень в содержании';
+$lang['maxseclevel']           = 'Макс. уровень для правки';
+$lang['camelcase']             = 'Использовать ВикиРегистр для ссылок';
+$lang['deaccent']              = 'Транслитерация в именах страниц';
+$lang['useheading']            = 'Первый заголовок вместо имени страницы';
+$lang['sneaky_index']          = 'По умолчанию, «Докувики» показывает в индексе страниц все пространства имён. Включение этой опции скроет пространства имён, для которых пользователь не имеет прав чтения. Это может привести к скрытию доступных вложенных пространств имён и потере функциональности индекса страниц при некоторых конфигурациях прав доступа.';
+$lang['hidepages']             = 'Скрыть страницы (регулярное выражение)';
+$lang['useacl']                = 'Использовать списки прав доступа';
+$lang['autopasswd']            = 'Автогенерация паролей';
+$lang['authtype']              = 'Механизм аутентификации';
+$lang['passcrypt']             = 'Метод шифрования пароля';
+$lang['defaultgroup']          = 'Группа по умолчанию. Все новые пользователю будут добавляться в эту группу.';
+$lang['superuser']             = 'Суперпользователь — группа или пользователь с полным доступом ко всем страницам и функциям администрирования, независимо от установок списков прав доступа. Перечень разделяйте запятыми: user1,@group1,user2';
+$lang['manager']               = 'Менеджер — группа или пользователь с доступом к определённым функциям управления. Перечень разделяйте запятыми: user1,@group1,user2';
+$lang['profileconfirm']        = 'Пароль для изменения профиля';
+$lang['rememberme']            = 'Разрешить перманентные куки (cookies) для входа («запомнить меня»)';
+$lang['disableactions']        = 'Заблокировать операции «Докувики»';
+$lang['disableactions_check']  = 'Проверка';
+$lang['disableactions_subscription'] = 'Подписка/Отмена подписки';
+$lang['disableactions_wikicode'] = 'Показ/экспорт исходного текста';
+$lang['disableactions_profile_delete'] = 'Удалить свой аккаунт';
+$lang['disableactions_other']  = 'Другие операции (через запятую)';
+$lang['disableactions_rss']    = 'XML-синдикация (RSS)';
+$lang['auth_security_timeout'] = 'Интервал для безопасности авторизации (сек.)';
+$lang['securecookie']          = 'Должны ли куки (cookies), выставленные через HTTPS, отправляться браузером только через HTTPS. Отключите эту опцию в случае, когда только логин вашей вики передаётся через SSL, а обычный просмотр осуществляется в небезопасном режиме.';
+$lang['remote']                = 'Включить систему API для подключений. Это позволит другим приложениям получить доступ к вики через XML-RPC или другие механизмы.';
+$lang['remoteuser']            = 'Дать права для удалённого API-доступа пользователям, указанным здесь (разделяйте запятыми). Оставьте поле пустым для предоставления доступа всем.';
+$lang['usewordblock']          = 'Блокировать спам по ключевым словам';
+$lang['relnofollow']           = 'Использовать rel="nofollow" для внешних ссылок';
+$lang['indexdelay']            = 'Задержка перед индексированием (сек.)';
+$lang['mailguard']             = 'Кодировать адреса электронной почты';
+$lang['iexssprotect']          = 'Проверять закачанные файлы на наличие потенциально опасного кода JavaScript или HTML';
+$lang['usedraft']              = 'Автоматически сохранять черновик во время правки';
+$lang['htmlok']                = 'Разрешить HTML';
+$lang['phpok']                 = 'Разрешить PHP';
+$lang['locktime']              = 'Время блокировки страницы (сек.)';
+$lang['cachetime']             = 'Время жизни кэш-файла (сек.)';
+$lang['target____wiki']        = 'target для внутренних ссылок';
+$lang['target____interwiki']   = 'target для ссылок между вики';
+$lang['target____extern']      = 'target для внешних ссылок';
+$lang['target____media']       = 'target для ссылок на медиафайлы';
+$lang['target____windows']     = 'target для ссылок на сетевые каталоги';
+$lang['mediarevisions']        = 'Включение версий медиафайлов';
+$lang['refcheck']              = 'Проверять ссылки на медиафайлы';
+$lang['gdlib']                 = 'Версия LibGD';
+$lang['im_convert']            = 'Путь к ImageMagick';
+$lang['jpg_quality']           = 'Качество сжатия JPG (0–100). Значение по умолчанию — 70.';
+$lang['fetchsize']             = 'Максимальный размер файла (в байтах), который fetch.php может скачивать с внешнего источника';
+$lang['subscribers']           = 'Разрешить подписку на изменения';
+$lang['subscribe_time']        = 'Интервал рассылки подписок и сводок (сек.). Должен быть меньше, чем значение, указанное в recent_days.';
+$lang['notify']                = 'Всегда отправлять сообщения об изменениях на этот электронный адрес';
+$lang['registernotify']        = 'Всегода отправлять информацию о новых зарегистрированных пользователях на этот электронный адрес';
+$lang['mailfrom']              = 'Электронный адрес вики (От:)';
+$lang['mailreturnpath']        = 'Адрес электронной почты для доставки отчета о недоставленных сообщений';
+$lang['mailprefix']            = 'Префикс, используемый для автоматического письма, станет темой сообщения. Оставьте поле пустым для использования названия вики.';
+$lang['htmlmail']              = 'Отправлять красивые, но более крупные HTML-письма. Отключите для отправки простых текстовых писем.';
+$lang['sitemap']               = 'Число дней, через которое нужно создавать (обновлять) карту сайта для поисковиков (Гугл, Яндекс и др.). Укажите 0 (ноль) для отключения.';
+$lang['rss_type']              = 'Тип XML-ленты';
+$lang['rss_linkto']            = 'Ссылки в XML-ленте указывают на';
+$lang['rss_content']           = 'Что показывать в XML-ленте?';
+$lang['rss_update']            = 'Интервал обновления XML-ленты (сек.)';
+$lang['rss_show_summary']      = 'Показывать краткую выдержку в заголовках XML-ленты';
+$lang['rss_media']             = 'Какие изменения должны быть отображены в XML-ленте?';
+$lang['rss_media_o_both']      = 'оба';
+$lang['rss_media_o_pages']     = 'страницы';
+$lang['rss_media_o_media']     = 'медиа';
+$lang['updatecheck']           = 'Проверять наличие обновлений и предупреждений о безопасности? Для этого «Докувики» потребуется связываться с update.dokuwiki.org.';
+$lang['userewrite']            = 'Удобочитаемые адреса (URL)';
+$lang['useslash']              = 'Использовать слэш разделителем пространств имён в URL';
+$lang['sepchar']               = 'Разделитель слов в имени страницы';
+$lang['canonical']             = 'Полные канонические адреса (URL)';
+$lang['fnencode']              = 'Метод кодирования имён файлов, записанных не ASCII-символами.';
+$lang['autoplural']            = 'Проверять можественную форму имени страницы в ссылках';
+$lang['compression']           = 'Метод сжатия для архивных файлов';
+$lang['gzip_output']           = 'Использовать gzip-сжатие для xhtml (Content-Encoding)';
+$lang['compress']              = 'Сжимать файлы CSS и javascript';
+$lang['cssdatauri']            = 'Размер в байтах, до которого изображения, указанные в CSS-файлах, должны быть встроены прямо в таблицу стилей, для уменьшения избыточных HTTP-запросов. Этот метод не будет работать в IE версии 7 и ниже! Установка от <code>400</code> до <code>600</code> байт является хорошим показателем. Установите <code>0</code>, чтобы отключить.';
+$lang['send404']               = 'Посылать «HTTP 404/Страница не найдена» для несуществующих страниц';
+$lang['broken_iua']            = 'Возможно, функция ignore_user_abort не работает в вашей системе? Это может привести к потере функциональности индексирования поиска. Эта проблема присутствует, например, в IIS+PHP/CGI. Для дополнительной информации смотрите <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">баг 852</a>.';
+$lang['xsendfile']             = 'Используете заголовок X-Sendfile для загрузки файлов на веб-сервер? Ваш веб-сервер должен поддерживать это.';
+$lang['renderer_xhtml']        = 'Обработчик основного (xhtml) вывода вики';
+$lang['renderer__core']        = '%s (ядро «Докувики»)';
+$lang['renderer__plugin']      = '%s (плагин)';
+$lang['search_fragment_o_exact'] = 'точно';
+$lang['search_fragment_o_starts_with'] = 'начинается на';
+$lang['search_fragment_o_ends_with'] = 'заканчивается';
+$lang['search_fragment_o_contains'] = 'содержит';
+$lang['dnslookups']            = '«Докувики» ищет DNS-имена пользователей, редактирующих страницы. Если у вас нет DNS-сервера или он работает медленно, рекомендуем отключить эту опцию.';
+$lang['jquerycdn']             = 'Требуется ли загрузка jQuery-скриптов (включая jQuery UI-скрипты) из CDN сети? Данная функция увеличивает количество HTTP запросов, но загрузка файлов будет проходить быстрее и пользователи смогут кэшировать запросы.';
+$lang['jquerycdn_o_0']         = 'Не использовать CDN. Использовать только локальную доставку';
+$lang['jquerycdn_o_jquery']    = 'Использовать CDN с code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'Использовать CDN с cdnjs.com';
+$lang['proxy____host']         = 'proxy-адрес';
+$lang['proxy____port']         = 'proxy-порт';
+$lang['proxy____user']         = 'proxy-имя пользователя';
+$lang['proxy____pass']         = 'proxy-пароль';
+$lang['proxy____ssl']          = 'Использовать SSL для соединения с прокси';
+$lang['proxy____except']       = 'Регулярное выражение для адресов (URL), для которых прокси должен быть пропущен.';
+$lang['safemodehack']          = 'Включить обход safemode (хак)';
+$lang['ftp____host']           = 'ftp-адрес';
+$lang['ftp____port']           = 'ftp-порт';
+$lang['ftp____user']           = 'ftp-имя пользователя';
+$lang['ftp____pass']           = 'ftp-пароль';
+$lang['ftp____root']           = 'ftp-корневая директория';
+$lang['license_o_']            = 'Не выбрано';
+$lang['typography_o_0']        = 'нет';
+$lang['typography_o_1']        = 'только двойные кавычки';
+$lang['typography_o_2']        = 'все кавычки (может не всегда работать)';
+$lang['userewrite_o_0']        = '(нет)';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'средствами «Докувики»';
+$lang['deaccent_o_0']          = 'отключить';
+$lang['deaccent_o_1']          = 'убирать только диакр. знаки';
+$lang['deaccent_o_2']          = 'полная транслитерация';
+$lang['gdlib_o_0']             = 'GD Lib недоступна';
+$lang['gdlib_o_1']             = 'версия 1.x';
+$lang['gdlib_o_2']             = 'автоопределение';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'абстрактный';
+$lang['rss_content_o_diff']    = 'объединённый diff';
+$lang['rss_content_o_htmldiff'] = 'HTML-форматированная таблица diff';
+$lang['rss_content_o_html']    = 'полное содержимое HTML-страницы';
+$lang['rss_linkto_o_diff']     = 'отличия от текущей';
+$lang['rss_linkto_o_page']     = 'текст страницы';
+$lang['rss_linkto_o_rev']      = 'история правок';
+$lang['rss_linkto_o_current']  = 'текущая версия';
+$lang['compression_o_0']       = 'без сжатия';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'не используется';
+$lang['xsendfile_o_1']         = 'Проприетарный lighttpd-заголовок (до релиза 1.5)';
+$lang['xsendfile_o_2']         = 'Стандартный заголовок X-Sendfile';
+$lang['xsendfile_o_3']         = 'Проприетарный заголовок Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'логин';
+$lang['showuseras_o_username'] = 'полное имя пользователя';
+$lang['showuseras_o_username_link'] = 'полное имя пользователя как интервики-ссылка';
+$lang['showuseras_o_email']    = 'адрес эл. почты в шифрованном виде (см. mailguard)';
+$lang['showuseras_o_email_link'] = 'адрес эл. почты в виде ссылки mailto:';
+$lang['useheading_o_0']        = 'никогда';
+$lang['useheading_o_navigation'] = 'только в навигации';
+$lang['useheading_o_content']  = 'только в содержимом вики';
+$lang['useheading_o_1']        = 'всегда';
+$lang['readdircache']          = 'Максимальное время жизни кэша readdir (сек.)';
diff --git a/wiki/lib/plugins/config/lang/sk/intro.txt b/wiki/lib/plugins/config/lang/sk/intro.txt
new file mode 100644
index 0000000..a3d15bf
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sk/intro.txt
@@ -0,0 +1,7 @@
+====== Správa konfigurácie ======
+
+Túto stránku môžete používať na zmenu nastavení Vašej DokuWiki inštalácie. Popis jednotlivých nastavení je uvedený v [[doku>config]]. Viac detailov o tomto plugine nájdete v [[doku>plugin:config]].
+
+Nastavenia zobrazené na červenom pozadí sú neprístupné a nemôžu byť týmto pluginom zmenené. Nastavenia s modrým pozadím obsahujú prednastavené hodnoty a nastavenia s bielym pozadím boli nastavené lokálne pre túto konkrétnu inštaláciu. Nastavenia s modrým a bielym pozadím môžu byť zmenené.
+
+Nezabudnite stlačiť tlačidlo **Uložiť** pred opustením stránky, inak budú vaše zmeny stratené.
diff --git a/wiki/lib/plugins/config/lang/sk/lang.php b/wiki/lib/plugins/config/lang/sk/lang.php
new file mode 100644
index 0000000..79054aa
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sk/lang.php
@@ -0,0 +1,198 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ * @author Michal Mesko <michal.mesko@gmail.com>
+ * @author exusik <exusik@gmail.com>
+ */
+$lang['menu']                  = 'Nastavenia konfigurácie';
+$lang['error']                 = 'Nastavenia neboli aktualizované kvôli neplatnej hodnote, prosím skontrolujte vaše zmeny a znovu ich pošlite. <br />Nesprávna hodnota(y) bude ohraničená červeným okrajom.';
+$lang['updated']               = 'Nastavenia úspešne aktualizované.';
+$lang['nochoice']              = '(žiadne ďalšie dostupné voľby)';
+$lang['locked']                = 'Súbor s nastaveniami nemôže byť aktualizovaný, ak toto nie je zámerom, <br />
+uistite sa, že názov a práva lokálneho súboru sú správne.';
+$lang['danger']                = 'Nebezpečie: Zmeny tohto nastavenia môžu spôsobiť nedostupnosť wiki a nastavovacieho menu.';
+$lang['warning']               = 'Varovanie: Zmena tohto nastavenia môže viesť neželanému správaniu.';
+$lang['security']              = 'Bezpečnostné riziko: Zmenou tohto nastavenie môže vzniknúť bezpečnostné riziko.';
+$lang['_configuration_manager'] = 'Správa konfigurácie';
+$lang['_header_dokuwiki']      = 'Nastavenia DokuWiki';
+$lang['_header_plugin']        = 'Nastavenia plug-inov';
+$lang['_header_template']      = 'Nastavenia šablóny';
+$lang['_header_undefined']     = 'Nešpecifikované nastavenia';
+$lang['_basic']                = 'Základné nastavenia';
+$lang['_display']              = 'Nastavenia zobrazovania';
+$lang['_authentication']       = 'Nastavenia zabezpečenia';
+$lang['_anti_spam']            = 'Nastavenia anti-spamu';
+$lang['_editing']              = 'Nastavenia úprav';
+$lang['_links']                = 'Nastavenia odkazov';
+$lang['_media']                = 'Nastavenia médií';
+$lang['_notifications']        = 'Nastavenie upozornení';
+$lang['_syndication']          = 'Nastavenie poskytovania obsahu';
+$lang['_advanced']             = 'Rozšírené nastavenia';
+$lang['_network']              = 'Nastavenia siete';
+$lang['_msg_setting_undefined'] = 'Nenastavené metadata.';
+$lang['_msg_setting_no_class'] = 'Nenastavená trieda.';
+$lang['_msg_setting_no_default'] = 'Žiadna predvolená hodnota.';
+$lang['title']                 = 'Názov wiki';
+$lang['start']                 = 'Názov štartovacej stránky';
+$lang['lang']                  = 'Jazyk';
+$lang['template']              = 'Šablóna';
+$lang['tagline']               = 'Slogan (ak ho šablóna podporuje)';
+$lang['sidebar']               = 'Meno bočného panela (ak ho šablóna podporuje), prázdne pole deaktivuje bočný panel';
+$lang['license']               = 'Pod ktorou licenciou bude publikovaný obsah stránky?';
+$lang['savedir']               = 'Adresár pre ukladanie dát';
+$lang['basedir']               = 'Hlavný adresár (napr. <code>/dokuwiki/</code>). Prázdna hodnota znamená použitie autodetekcie.';
+$lang['baseurl']               = 'Adresa servera (napr. <code>http://www.yourserver.com</code>). Prázdna hodnota znamená použitie autodetekcie.';
+$lang['cookiedir']             = 'Cesta k cookies. Prázdna hodnota znamená použitie adresy servera.';
+$lang['dmode']                 = 'Spôsob vytvárania adresárov';
+$lang['fmode']                 = 'Spôsob vytvárania súborov';
+$lang['allowdebug']            = 'Povoliť ladenie chýb <b>deaktivujte, ak nie je potrebné!</b>';
+$lang['recent']                = 'Posledné zmeny';
+$lang['recent_days']           = 'Koľko posledných zmien uchovávať (dni)';
+$lang['breadcrumbs']           = 'Počet záznamov histórie';
+$lang['youarehere']            = 'Nachádzate sa';
+$lang['fullpath']              = 'Zobrazovať plnú cestu k stránkam v pätičke';
+$lang['typography']            = 'Vykonať typografické zmeny';
+$lang['dformat']               = 'Formát dátumu (pozri funkciu PHP <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Podpis';
+$lang['showuseras']            = 'Čo použiť pri zobrazení používateľa, ktorý posledný upravoval stránku';
+$lang['toptoclevel']           = 'Najvyššia úroveň pre generovanie obsahu.';
+$lang['tocminheads']           = 'Minimálny počet nadpisov pre generovanie obsahu';
+$lang['maxtoclevel']           = 'Maximálna úroveň pre generovanie obsahu.';
+$lang['maxseclevel']           = 'Maximálna úroveň sekcie pre editáciu';
+$lang['camelcase']             = 'Použiť CamelCase pre odkazy';
+$lang['deaccent']              = 'Upraviť názvy stránok';
+$lang['useheading']            = 'Použiť nadpis pre názov stránky';
+$lang['sneaky_index']          = 'DokuWiki implicitne ukazuje v indexe všetky menné priestory. Povolením tejto voľby sa nezobrazia menné priestory, ku ktorým nemá používateľ právo na čítanie. Dôsledkom môže byť nezobrazenie vnorených prístupných menných priestorov. Táto voľba môže mať za následok nepoužiteľnosť indexu s určitými ACL nastaveniami.';
+$lang['hidepages']             = 'Skryť zodpovedajúce stránky (regulárne výrazy)';
+$lang['useacl']                = 'Použiť kontrolu prístupu (ACL)';
+$lang['autopasswd']            = 'Autogenerovanie hesla';
+$lang['authtype']              = 'Systém autentifikácie (back-end)';
+$lang['passcrypt']             = 'Spôsob šifrovania hesiel';
+$lang['defaultgroup']          = 'Predvolená skupina';
+$lang['superuser']             = 'Správca - skupina, používateľ alebo čiarkou oddelený zoznam "pouzivatel1,@skupina1,pouzivatel2" s plným prístupom ku všetkým stránkam a funkciám nezávisle od ACL nastavení';
+$lang['manager']               = 'Manažér - skupina, používateľ alebo čiarkou oddelený zoznam "pouzivatel1,@skupina1,pouzivatel2" s prístupom k vybraným správcovským funkciám';
+$lang['profileconfirm']        = 'Potvrdzovať zmeny profilu heslom';
+$lang['rememberme']            = 'Povoliť trvalé prihlasovacie cookies (zapamätaj si ma)';
+$lang['disableactions']        = 'Zakázať DokuWiki akcie';
+$lang['disableactions_check']  = 'Skontrolovať';
+$lang['disableactions_subscription'] = 'Povoliť/Zrušiť informovanie o zmenách stránky';
+$lang['disableactions_wikicode'] = 'Pozrieť zdroj/Exportovať zdroj';
+$lang['disableactions_other']  = 'Iné akcie (oddelené čiarkou)';
+$lang['auth_security_timeout'] = 'Časový limit pri prihlasovaní (v sekundách)';
+$lang['securecookie']          = 'Mal by prehliadač posielať cookies nastavené cez HTTPS posielať iba cez HTTPS (bezpečné) pripojenie? Vypnite túto voľbu iba v prípade, ak je prihlasovanie do Vašej wiki zabezpečené SSL, ale prezeranie wiki je nezabezpečené.';
+$lang['remote']                = 'Povolenie vzdialeného API. Umožnuje iným aplikáciám pristupovať k wiki cez XML-RPC alebo iným spôsobom.';
+$lang['remoteuser']            = 'Obmedzenie použitia vzdialeného API skupinám alebo používateľom oddelených čiarkami. Prázdne pole poskytuje prístup pre každého používateľa.';
+$lang['usewordblock']          = 'Blokovať spam na základe zoznamu známych slov';
+$lang['relnofollow']           = 'Používať rel="nofollow" pre externé odkazy';
+$lang['indexdelay']            = 'Časové oneskorenie pred indexovaním (sek)';
+$lang['mailguard']             = 'Zamaskovať e-mailovú adresu';
+$lang['iexssprotect']          = 'Kontrolovať nahraté súbory na prítomnosť nebezpečného JavaScript alebo HTML kódu';
+$lang['usedraft']              = 'Automaticky ukladať koncept počas úpravy stránky';
+$lang['htmlok']                = 'Umožniť vkladanie HTML';
+$lang['phpok']                 = 'Umožniť vkladanie PHP';
+$lang['locktime']              = 'Maximálne trvanie blokovacích súborov (sek)';
+$lang['cachetime']             = 'Maximálne trvanie cache (sek)';
+$lang['target____wiki']        = 'Cieľové okno (target) pre interné odkazy';
+$lang['target____interwiki']   = 'Cieľové okno (target) pre interwiki odkazy';
+$lang['target____extern']      = 'Cieľové okno (target) pre externé odkazy';
+$lang['target____media']       = 'Cieľové okno (target) pre media odkazy';
+$lang['target____windows']     = 'Cieľové okno (target) pre windows odkazy';
+$lang['mediarevisions']        = 'Povoliť verzie súborov?';
+$lang['refcheck']              = 'Kontrolovať odkazy na médiá (pred vymazaním)';
+$lang['gdlib']                 = 'Verzia GD Lib';
+$lang['im_convert']            = 'Cesta k ImageMagick convert tool';
+$lang['jpg_quality']           = 'Kvalita JPG kompresie (0-100)';
+$lang['fetchsize']             = 'Maximálna veľkosť (v bajtoch) pri sťahovaní z externých zdrojov';
+$lang['subscribers']           = 'Povoliť podporu informovania o zmenách stránky';
+$lang['subscribe_time']        = 'Časový inteval, po uplynutí ktorého sú zasielané informácie o zmenách stránky alebo menného priestoru (sek); hodnota by mala byť menšia ako čas zadaný pri položke recent_days.';
+$lang['notify']                = 'Posielať upozornenia na zmeny na túto e-mailovú adresu';
+$lang['registernotify']        = 'Posielať informáciu o nových užívateľoch na túto e-mailovú adresu';
+$lang['mailfrom']              = 'E-mailová adresa na automatické e-maily';
+$lang['mailprefix']            = 'Prefix predmetu emailovej spravy zasielanej automaticky';
+$lang['htmlmail']              = 'Posielanie lepšie vyzerajúceho ale objemnejšieho HTML mailu. Deaktivovaním sa budú posielať iba textové maily.';
+$lang['sitemap']               = 'Generovať Google sitemap (dni)';
+$lang['rss_type']              = 'Typ XML feedu';
+$lang['rss_linkto']            = 'XML zdroj odkazuje na';
+$lang['rss_content']           = 'Čo zobrazovať v XML feede?';
+$lang['rss_update']            = 'Časový interval obnovy XML feedu (sek.)';
+$lang['rss_show_summary']      = 'XML zdroj ukáže prehľad v názve';
+$lang['rss_media']             = 'Aký typ zmien by mal byť zobrazený v XML feede?';
+$lang['updatecheck']           = 'Kontrolovať aktualizácie a bezpečnostné upozornenia? DokuWiki potrebuje pre túto funkciu prístup k update.dokuwiki.org.';
+$lang['userewrite']            = 'Používať nice URLs';
+$lang['useslash']              = 'Používať lomku (/) ako oddeľovač v URL';
+$lang['sepchar']               = 'Oddeľovač slov v názvoch stránok';
+$lang['canonical']             = 'Používať plne kanonické URL názvy';
+$lang['fnencode']              = 'Spôsob kódovania non-ASCII mien súborov.';
+$lang['autoplural']            = 'Kontrolovať množné číslo v odkazoch';
+$lang['compression']           = 'Metóda kompresie pre staré verzie stránok';
+$lang['gzip_output']           = 'Používať gzip Content-Encoding pre xhtml';
+$lang['compress']              = 'Komprimovať CSS a javascript výstup';
+$lang['cssdatauri']            = 'Veľkosť v bytoch, do ktorej by mali byť obrázky s odkazom v CSS vložené priamo do štýlu z dôvodu obmedzenia HTTP požiadaviek. Vhodná hodnota je od <code>400</code> do <code>600</code> bytov. Hodnota <code>0</code> deaktivuje túto metódu.';
+$lang['send404']               = 'Poslať "HTTP 404/Page Not Found" pre neexistujúce stránky';
+$lang['broken_iua']            = 'Je vo Vašom systéme funkcia ignore_user_abort poškodená? Môže to mať za následok nefunkčnosť vyhľadávania v indexe. IIS+PHP/CGI je známy tým, že nefunguje správne. Pozrite <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> pre dalšie informácie.';
+$lang['xsendfile']             = 'Používať X-Sendfile hlavičku pre doručenie statických súborov webserverom? Webserver musí túto funkcionalitu podporovať.';
+$lang['renderer_xhtml']        = 'Používané vykresľovacie jadro pre hlavný (xhtml) wiki výstup';
+$lang['renderer__core']        = '%s (dokuwiki jadro)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['dnslookups']            = 'DokuWiki hľadá mená vzdialených IP adries používateľov editujúcich stránky. Ak máte pomalý alebo nefunkčný DNS server alebo nechcete túto možnosť, deaktivujte túto voľbu';
+$lang['jquerycdn']             = 'Mali by byť jQuery a jQuery UI skripty načítané z CDN? Voľba zvýši počet dodatočných HTTP požiadaviek, ale súbory sa môžu načítať rýchlejšie a používatelia ich už môžu mať vo vyrovnávacej pamäti.';
+$lang['jquerycdn_o_0']         = 'Nepoužívať CDN, iba lokálne súbory';
+$lang['jquerycdn_o_jquery']    = 'CDN code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN cdnjs.com';
+$lang['proxy____host']         = 'Proxy server - názov';
+$lang['proxy____port']         = 'Proxy server - port';
+$lang['proxy____user']         = 'Proxy server - používateľské meno';
+$lang['proxy____pass']         = 'Proxy server - heslo';
+$lang['proxy____ssl']          = 'Proxy server - použiť SSL';
+$lang['proxy____except']       = 'Regulárny výraz popisujúci URL odkazy, pre ktoré by proxy nemala byť použitá.';
+$lang['safemodehack']          = 'Povoliť "safemode hack"';
+$lang['ftp____host']           = 'FTP server pre "safemode hack"';
+$lang['ftp____port']           = 'FTP port pre "safemode hack"';
+$lang['ftp____user']           = 'FTP používateľ pre "safemode hack"';
+$lang['ftp____pass']           = 'FTP heslo pre "safemode hack"';
+$lang['ftp____root']           = 'FTP hlavný adresár pre "safemode hack"';
+$lang['license_o_']            = 'žiadna';
+$lang['typography_o_0']        = 'žiadne';
+$lang['typography_o_1']        = 'okrem jednoduchých úvodzoviek';
+$lang['typography_o_2']        = 'vrátane jednoduchých úvodzoviek (nemusí to vždy fungovať)';
+$lang['userewrite_o_0']        = 'žiadne';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki interné';
+$lang['deaccent_o_0']          = 'vypnuté';
+$lang['deaccent_o_1']          = 'odstrániť diakritiku';
+$lang['deaccent_o_2']          = 'romanizovať (do latinky)';
+$lang['gdlib_o_0']             = 'GD Lib nie je dostupná';
+$lang['gdlib_o_1']             = 'Verzia 1.x';
+$lang['gdlib_o_2']             = 'Autodetekcia';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstrakt';
+$lang['rss_content_o_diff']    = 'Normalizovaný Diff';
+$lang['rss_content_o_htmldiff'] = 'Tabuľka zmien v HTML formáte';
+$lang['rss_content_o_html']    = 'Obsah stránky v HTML formáte';
+$lang['rss_linkto_o_diff']     = 'prehľad zmien';
+$lang['rss_linkto_o_page']     = 'upravená stránka';
+$lang['rss_linkto_o_rev']      = 'zoznam zmien';
+$lang['rss_linkto_o_current']  = 'aktuálna stránka';
+$lang['compression_o_0']       = 'žiadna';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'nepoužívať';
+$lang['xsendfile_o_1']         = 'Proprietárna lighttpd hlavička (pre vydaním 1.5)';
+$lang['xsendfile_o_2']         = 'Štandardná X-Sendfile hlavička';
+$lang['xsendfile_o_3']         = 'Proprietárna Nginx X-Accel-Redirect hlavička';
+$lang['showuseras_o_loginname'] = 'Prihlasovacie meno';
+$lang['showuseras_o_username'] = 'Celé meno používateľa';
+$lang['showuseras_o_email']    = 'E-mailová adresa používateľa (zamaskovaná podľa nastavenia)';
+$lang['showuseras_o_email_link'] = 'E-mailová adresa používateľa vo forme odkazu mailto:';
+$lang['useheading_o_0']        = 'Nikdy';
+$lang['useheading_o_navigation'] = 'Iba navigácia';
+$lang['useheading_o_content']  = 'Iba Wiki obsah';
+$lang['useheading_o_1']        = 'Vždy';
+$lang['readdircache']          = 'Maximálne trvanie readdir cache (sek)';
diff --git a/wiki/lib/plugins/config/lang/sl/intro.txt b/wiki/lib/plugins/config/lang/sl/intro.txt
new file mode 100644
index 0000000..506cd34
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sl/intro.txt
@@ -0,0 +1,7 @@
+====== Splošne nastavitve ======
+
+Na tej strani je mogoče spreminjati nastavitve sistema DokuWiki. Pomoč o posameznih nastavitvah je na voljo med [[doku>config|nastavitvami]]. Več podrobnosti o vstavku je na voljo na [[doku>plugin:config|nastavitvami vstavka]].
+
+Nastavitve označene s svetlo rdečim ozadjem so zaščitene in jih s tem vstavkom ni mogoče spreminjati. Nastavitve označene s svetlo modrim ozadjem so privzete vrednosti in nastavitve z belim ozadjem so tiste, ki so bile določene krajevno posebej za to nastavitev. Spreminjati je mogoče vrednosti označene z modrimi in belim ozadjem.
+
+Spremembe je treba **shraniti**, da se uveljavijo, sicer se spremembe prezrejo.
diff --git a/wiki/lib/plugins/config/lang/sl/lang.php b/wiki/lib/plugins/config/lang/sl/lang.php
new file mode 100644
index 0000000..7db4b4b
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sl/lang.php
@@ -0,0 +1,189 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * Slovenian language file
+ *
+ * @author Dejan Levec <webphp@gmail.com>
+ * @author Boštjan Seničar <senicar@gmail.com>
+ * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
+ */
+$lang['menu']                  = 'Splošne nastavitve';
+$lang['error']                 = 'Nastavitve niso shranjene zaradi neveljavne vrednosti.<br />Neveljavna vrednost je označena z rdečim robom vnosnega polja.';
+$lang['updated']               = 'Nastavitve so uspešno posodobljene.';
+$lang['nochoice']              = '(ni drugih možnosti na voljo)';
+$lang['locked']                = 'Nastavitvene datoteke ni mogoče posodobiti.<br />Preverite dovoljenja za spreminjanje in ime nastavitvene datoteke.';
+$lang['danger']                = 'Opozorilo: spreminjanje te možnosti lahko povzroči težave v delovanju sistema wiki.';
+$lang['warning']               = 'Opozorilo: spreminjanje te možnosti lahko vpliva na pravilno delovanje sistema wiki.';
+$lang['security']              = 'Varnostno opozorilo: spreminjanje te možnosti lahko vpliva na varnost sistema.';
+$lang['_configuration_manager'] = 'Upravljalnik nastavitev';
+$lang['_header_dokuwiki']      = 'Nastavitve DokuWiki';
+$lang['_header_plugin']        = 'Nastavitve vstavkov';
+$lang['_header_template']      = 'Nastavitve predlog';
+$lang['_header_undefined']     = 'Neopredeljene nastavitve';
+$lang['_basic']                = 'Osnovne nastavitve';
+$lang['_display']              = 'Nastavitve prikazovanja';
+$lang['_authentication']       = 'Nastavitve overjanja';
+$lang['_anti_spam']            = 'Nastavitve neželenih sporočil (Anti-Spam)';
+$lang['_editing']              = 'Nastavitve urejanja';
+$lang['_links']                = 'Nastavitve povezav';
+$lang['_media']                = 'Predstavne nastavitve';
+$lang['_advanced']             = 'Napredne nastavitve';
+$lang['_network']              = 'Omrežne nastavitve';
+$lang['_msg_setting_undefined'] = 'Ni nastavitvenih metapodatkov.';
+$lang['_msg_setting_no_class'] = 'Ni nastavitvenega razreda.';
+$lang['_msg_setting_no_default'] = 'Ni privzete vrednosti.';
+$lang['title']                 = 'Naslov Wiki spletišča';
+$lang['start']                 = 'Ime začetne strani wiki';
+$lang['lang']                  = 'Jezik vmesnika';
+$lang['template']              = 'Predloga';
+$lang['tagline']               = 'Označna vrstica (ob podpori predloge)';
+$lang['sidebar']               = 'Ime strani stranske vrstice (ob podpori predloge); prazno polje onemogoči stransko vrstico.';
+$lang['license']               = 'Pod pogoji katerega dovoljenja je objavljena vsebina?';
+$lang['savedir']               = 'Mapa za shranjevanje podatkov';
+$lang['basedir']               = 'Pot do strežnika (npr. /dokuwiki/). Prazno polje določa samodejno zaznavanje';
+$lang['baseurl']               = 'Naslov URL strežnika (npr. http://www.streznik.si). Prazno polje določa samodejno zaznavanje';
+$lang['cookiedir']             = 'Pot do piškotka. Prazno polje določa uporabo osnovnega naslova (baseurl)';
+$lang['dmode']                 = 'Način ustvarjanja map';
+$lang['fmode']                 = 'Način ustvarjanja datotek';
+$lang['allowdebug']            = 'Dovoli razhroščevanje (po potrebi!)';
+$lang['recent']                = 'Nedavne spremembe';
+$lang['recent_days']           = 'Koliko nedavnih sprememb naj se ohrani (v dnevih)';
+$lang['breadcrumbs']           = 'Število drobtinic poti';
+$lang['youarehere']            = 'Hierarhične drobtinice poti';
+$lang['fullpath']              = 'Pokaži polno pot strani v nogi strani';
+$lang['typography']            = 'Omogoči tipografske zamenjave';
+$lang['dformat']               = 'Oblika zapisa časa (funkcija PHP <a href="http://php.net/strftime">strftime</a>)';
+$lang['signature']             = 'Podpis';
+$lang['showuseras']            = 'Kaj prikazati za prikaz uporabnika, ki je zadnji urejal stran';
+$lang['toptoclevel']           = 'Vrhnja raven kazala';
+$lang['tocminheads']           = 'Najmanjše število naslovov za izgradnjo kazala';
+$lang['maxtoclevel']           = 'Najvišja raven kazala';
+$lang['maxseclevel']           = 'Največja raven urejanja odseka';
+$lang['camelcase']             = 'Uporabi EnoBesedni zapisa za povezave';
+$lang['deaccent']              = 'Počisti imena strani';
+$lang['useheading']            = 'Uporabi prvi naslov za ime strani';
+$lang['sneaky_index']          = 'Privzeto pokaže sistem DokuWiki vse imenske prostore v pogledu kazala. Z omogočanjem te možnosti bodo skriti vsi imenski prostori, v katere prijavljen uporabnik nima dovoljenj dostopa. S tem je mogoče preprečiti dostop do podrejenih strani. Možnost lahko vpliva na uporabnost nastavitev nadzora dostopa ACL.';
+$lang['hidepages']             = 'Skrij skladne strani (logični izraz)';
+$lang['useacl']                = 'Uporabi seznam nadzora dostopa (ACL)';
+$lang['autopasswd']            = 'Samodejno ustvari gesla';
+$lang['authtype']              = 'Ozadnji način overitve';
+$lang['passcrypt']             = 'Način šifriranja gesel';
+$lang['defaultgroup']          = 'Privzeta skupina';
+$lang['superuser']             = 'Skrbnik - skupina, uporabnik ali z vejico ločen seznam uporabnik1,@skupina1,uporabnik2 s polnim dostopom do vseh strani in možnosti, neodvisno od nastavitev nadzora dostopa ACL';
+$lang['manager']               = 'Upravljavec - skupina, uporabnik ali z vejico ločen seznam uporabnik1,@skupina1,uporabnik2 z dovoljenji za dostop do nekaterih možnosti upravljanja';
+$lang['profileconfirm']        = 'Potrdi spremembe profila z geslom';
+$lang['rememberme']            = 'Dovoli trajne prijavne piškotke (trajno pomnenje prijave)';
+$lang['disableactions']        = 'Onemogoči dejanja DokuWiki';
+$lang['disableactions_check']  = 'Preveri';
+$lang['disableactions_subscription'] = 'Naročanje/Preklic naročnine';
+$lang['disableactions_wikicode'] = 'Pogled izvorne kode/Surovi izvoz';
+$lang['disableactions_other']  = 'Druga dejanja (z vejico ločen seznam)';
+$lang['auth_security_timeout'] = 'Varnostna časovna omejitev overitve (v sekundah)';
+$lang['securecookie']          = 'Ali naj se piškotki poslani preko varne povezave HTTPS v brskalniku pošiljajo le preko HTTPS? Onemogočanje možnosti je priporočljivo le takrat, ko je prijava varovana s protokolom  SSL, brskanje po strani pa ni posebej zavarovano.';
+$lang['usewordblock']          = 'Zaustavi neželeno besedilo glede na seznam besed';
+$lang['relnofollow']           = 'Uporabni možnost rel="nofollow" pri zunanjih povezavah';
+$lang['indexdelay']            = 'Časovni zamik pred ustvarjanjem kazala (v sekundah)';
+$lang['mailguard']             = 'Šifriraj elektronske naslove';
+$lang['iexssprotect']          = 'Preveri poslane datoteke za zlonamerno kodo JavaScript ali HTML';
+$lang['usedraft']              = 'Samodejno shrani osnutek med urejanjem strani';
+$lang['htmlok']                = 'Dovoli vstavljeno kodo HTML';
+$lang['phpok']                 = 'Dovoli vstavljeno kodo PHP';
+$lang['locktime']              = 'Največja dovoljena starost datotek zaklepa (v sekundah)';
+$lang['cachetime']             = 'Največja dovoljena starost predpomnilnika (v sekundah)';
+$lang['target____wiki']        = 'Ciljno okno za notranje povezave';
+$lang['target____interwiki']   = 'Ciljno okno za notranje wiki povezave';
+$lang['target____extern']      = 'Ciljno okno za zunanje povezave';
+$lang['target____media']       = 'Ciljno okno za predstavne povezave';
+$lang['target____windows']     = 'Ciljno okno za povezave oken';
+$lang['mediarevisions']        = 'Ali naj se omogočijo objave predstavnih vsebin?';
+$lang['refcheck']              = 'Preverjanje sklica predstavnih datotek';
+$lang['gdlib']                 = 'Različica GD Lib';
+$lang['im_convert']            = 'Pot do orodja za pretvarjanje slik ImageMagick';
+$lang['jpg_quality']           = 'Kakovost stiskanja datotek JPG (0-100)';
+$lang['fetchsize']             = 'največja dovoljena velikost zunanjega prejemanja z datoteko fetch.php (v bajtih)';
+$lang['subscribers']           = 'Omogoči podporo naročanju na strani';
+$lang['subscribe_time']        = 'Čas po katerem so poslani povzetki sprememb (v sekundah); Vrednost mora biti krajša od časa, ki je določen z nedavno_dni.';
+$lang['notify']                = 'Pošlji obvestila o spremembah na določen elektronski naslov';
+$lang['registernotify']        = 'Pošlji obvestila o novih vpisanih uporabnikih na določen elektronski naslov';
+$lang['mailfrom']              = 'Elektronski naslov za samodejno poslana sporočila';
+$lang['mailprefix']            = 'Predpona zadeve elektronskega sporočila za samodejna sporočila.';
+$lang['sitemap']               = 'Ustvari Google kazalo strani (v dnevih)';
+$lang['rss_type']              = 'Vrsta virov XML';
+$lang['rss_linkto']            = 'XML viri so povezani z';
+$lang['rss_content']           = 'Kaj prikazati med predmeti virov XML?';
+$lang['rss_update']            = 'Časovni razmik posodobitve virov XML (v sekundah)';
+$lang['rss_show_summary']      = 'Viri XML so povzeti v naslovu';
+$lang['updatecheck']           = 'Ali naj sistem preveri za posodobitve in varnostna opozorila.';
+$lang['userewrite']            = 'Uporabi olepšan zapis naslovov URL';
+$lang['useslash']              = 'Uporabi poševnico kot ločilnik imenskih prostorov v naslovih URL';
+$lang['sepchar']               = 'Ločilnik besed imen strani';
+$lang['canonical']             = 'Uporabi polni kanonični zapis naslova URL';
+$lang['fnencode']              = 'Način kodiranja ne-ASCII imen datotek.';
+$lang['autoplural']            = 'Preveri množinske oblike povezav';
+$lang['compression']           = 'Način stiskanja za arhivirane datoteke';
+$lang['gzip_output']           = 'Uporabi stiskanje gzip vsebine za xhtml';
+$lang['compress']              = 'Združi odvod CSS in JavaScript v brskalniku';
+$lang['cssdatauri']            = 'Velikost sklicanih slik v bajtih, ki so navedene v datotekah CSS za zmanjšanje zahtev osveževanja strežnika HTTP. Ustrezne vrednosti so <code>400</code> do <code>600</code> bajtov. Vrednost <code>0</code> onemogoči možnost.';
+$lang['send404']               = 'Pošlji "HTTP 404/Strani ni mogoče najti" pri dostopu do neobstoječih strani';
+$lang['broken_iua']            = 'Ali je možnost ignore_user_abort okvarjena na sistemu? Napaka lahko vpliva na delovanje iskalnika. Napake so pogoste ob uporabi IIS+PHP/CGI. Več o tem si je mogoče prebrati v <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">poročilu o hrošču 852</a>.';
+$lang['xsendfile']             = 'Uporabi glavo X-Sendfile za prejemanje statičnih datotek. Spletni strežnik mora možnost podpirati.';
+$lang['renderer_xhtml']        = 'Izrisovalnik za odvod Wiki strani (xhtml)';
+$lang['renderer__core']        = '%s (jedro dokuwiki)';
+$lang['renderer__plugin']      = '%s (vstavek)';
+$lang['proxy____host']         = 'Ime posredniškega strežnika';
+$lang['proxy____port']         = 'Vrata posredniškega strežnika';
+$lang['proxy____user']         = 'Uporabniško ime posredniškega strežnika';
+$lang['proxy____pass']         = 'Geslo posredniškega strežnika';
+$lang['proxy____ssl']          = 'Uporabi varno povezavo SSL za povezavo z posredniškim strežnikom';
+$lang['proxy____except']       = 'Logični izrazi morajo biti skladni z naslovi URL, ki gredo mimo posredniškega strežnika.';
+$lang['safemodehack']          = 'Omogoči obhod načina SafeMode PHP';
+$lang['ftp____host']           = 'Strežnik FTP za obhod načina SafeMode';
+$lang['ftp____port']           = 'Vrata strežnika FTP za obhod načina SafeMode';
+$lang['ftp____user']           = 'Uporabniško ime za FTP za obhod načina SafeMode';
+$lang['ftp____pass']           = 'Geslo za strežnik FTP za obhod načina SafeMode';
+$lang['ftp____root']           = 'Korenska mapa FTP za obhod načina SafeMode';
+$lang['license_o_']            = 'Ni izbranega dovoljenja';
+$lang['typography_o_0']        = 'brez';
+$lang['typography_o_1']        = 'izloči enojne narekovaje';
+$lang['typography_o_2']        = 'z enojnimi narekovaji (lahko včasih ne deluje)';
+$lang['userewrite_o_0']        = 'brez';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'notranji DokuWiki';
+$lang['deaccent_o_0']          = 'onemogočeno';
+$lang['deaccent_o_1']          = 'odstrani naglasne oznake';
+$lang['deaccent_o_2']          = 'pretvori v romanski zapis';
+$lang['gdlib_o_0']             = 'Knjižnica GD Lib ni na voljo';
+$lang['gdlib_o_1']             = 'Različica 1.x';
+$lang['gdlib_o_2']             = 'Samodejno zaznavanje';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Povzetek';
+$lang['rss_content_o_diff']    = 'Poenotena primerjava';
+$lang['rss_content_o_htmldiff'] = 'HTML oblikovana preglednica primerjave';
+$lang['rss_content_o_html']    = 'Polna HTML vsebina strani';
+$lang['rss_linkto_o_diff']     = 'primerjalni pogled';
+$lang['rss_linkto_o_page']     = 'pregledana stran';
+$lang['rss_linkto_o_rev']      = 'seznam pregledovanj';
+$lang['rss_linkto_o_current']  = 'trenutna stran';
+$lang['compression_o_0']       = 'brez';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ne uporabi';
+$lang['xsendfile_o_1']         = 'lastniška glava lighttpd (pred različico 1.5)';
+$lang['xsendfile_o_2']         = 'običajna glava X-Sendfile';
+$lang['xsendfile_o_3']         = 'lastniška glava Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Prijavno ime';
+$lang['showuseras_o_username'] = 'Polno ime uporabnika';
+$lang['showuseras_o_email']    = 'Elektronski naslov uporabnika (šifriran po določilih varovanja)';
+$lang['showuseras_o_email_link'] = 'Elektronski naslov uporabnika kot povezava mailto:';
+$lang['useheading_o_0']        = 'nikoli';
+$lang['useheading_o_navigation'] = 'le za krmarjenje';
+$lang['useheading_o_content']  = 'le za vsebino Wiki';
+$lang['useheading_o_1']        = 'vedno';
+$lang['readdircache']          = 'Največja dovoljena starost predpomnilnika prebranih map (v sekundah)';
diff --git a/wiki/lib/plugins/config/lang/sq/intro.txt b/wiki/lib/plugins/config/lang/sq/intro.txt
new file mode 100644
index 0000000..d2bab0f
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sq/intro.txt
@@ -0,0 +1,7 @@
+====== Menaxheri Konfigurimit ======
+
+Përdoreni këtë faqe për të kontrolluar kuadrot e instalimit të DokuWiki-t tuaj. Për ndihmë mbi kuadro individuale referojuni  [[doku>config]]. Për më tepër detaje rreth këtij plugin-i shih [[doku>plugin:config]].
+
+Kuadrot e treguara me një backgroudn me një ngjyrë të kuqe të lehtë janë të mbrojtura dhe nuk mund të ndryshohen me këtë plugin. Kuadrot e treguara me një background blu janë vlerat default dhe kuadrot e treguara me një background të bardhë janë vendosur lokalisht për këtë instalim të caktuar. Si kuadrot blu, ashtu edhe ato të bardhë mund të ndryshohen.
+
+Kujtohuni të shtypni butonin **Ruaj** para se të dilni nga kjo faqe ose ndryshimet tuaja do të humbasin.
diff --git a/wiki/lib/plugins/config/lang/sq/lang.php b/wiki/lib/plugins/config/lang/sq/lang.php
new file mode 100644
index 0000000..72c500a
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sq/lang.php
@@ -0,0 +1,175 @@
+<?php
+/**
+ * Albanian language file
+ *
+ * @author Leonard Elezi leonard.elezi@depinfo.info
+ */
+$lang['menu']                  = 'Konfigurimi i Kuadrove';
+$lang['error']                 = 'Kuadrot nuk u përditësuan për shkak të një vlere të palejuar, ju lutem rishikoni ndryshimet tuaja dhe ridorëzojeni.
+<br />Vlerat e pasakta tregohen të rrethuara nga një kornizë e kuqe.';
+$lang['updated']               = 'Kuadrot u përditësuan me sukses.';
+$lang['nochoice']              = '(asnjë zgjedhje tjetër e disponueshme)';
+$lang['locked']                = 'Skedari i kuadrove nuk mund të përditësohet, nëse kjo është e paqëllimshme, <br /> sigurohuni që emri i skedarit të kuadrove lokale dhe të drejtat të jenë të sakta.';
+$lang['danger']                = 'Rrezik: Ndrishimi i kësaj alternative mund ta bëjë wiki-n dhe menunë tuaj të konfigurimit të pa aksesueshme.';
+$lang['warning']               = 'Paralajmërim: Ndryshimi i kësaj alternative mund të shkaktojë sjellje të padëshiruara.';
+$lang['security']              = 'Paralajmërim Sigurie: Ndryshimi i kësaj alternative mund të paraqesë një rrezik në siguri.';
+$lang['_configuration_manager'] = 'Menaxhuesi i Kuadrove';
+$lang['_header_dokuwiki']      = 'Kuadrot e DokuWiki-t';
+$lang['_header_plugin']        = 'Kuadrot e Plugin-eve';
+$lang['_header_template']      = 'Kuadrot e Template-eve';
+$lang['_header_undefined']     = 'Kuadro të Papërcaktuara';
+$lang['_basic']                = 'Kuadro Elementare';
+$lang['_display']              = 'Kuadrot e Shfaqjes';
+$lang['_authentication']       = 'Kuadrot e Autentikimit';
+$lang['_anti_spam']            = 'Kuadrot Anti-Spam';
+$lang['_editing']              = 'Kuadrot e Redaktimit';
+$lang['_links']                = 'Kuadrot e Link-eve';
+$lang['_media']                = 'Kuadrot e Medias';
+$lang['_advanced']             = 'Kuadro të Avancuara';
+$lang['_network']              = 'Kuadrot e Rrjetit';
+$lang['_msg_setting_undefined'] = 'Metadata pa kuadro.';
+$lang['_msg_setting_no_class'] = 'Klasë pa kuadro.';
+$lang['_msg_setting_no_default'] = 'Asnjë vlerë default.';
+$lang['fmode']                 = 'Mënyra krijim skedari';
+$lang['dmode']                 = 'Mënyra krijim dosjeje.';
+$lang['lang']                  = 'Gjuha e ndërfaqes';
+$lang['basedir']               = 'Path-i i Serverit (psh <code>/dokuwiki/</code>). Lëre bosh për ta gjetur automatikisht.';
+$lang['baseurl']               = 'URL-ja serverit (psh <code>http://www.serveriyt.com</code>). Lëre bosh për ta gjetur automatikisht.';
+$lang['savedir']               = 'Direktoria për të ruajtur të dhënat';
+$lang['start']                 = 'Emri i faqes së fillimit';
+$lang['title']                 = 'Titulli i Wiki-t';
+$lang['template']              = 'Template';
+$lang['license']               = 'Nën cilën liçensë duhet të vihet përmbajtja juar?';
+$lang['fullpath']              = 'Trego adresën e plotë të faqeve në footer.';
+$lang['recent']                = 'Ndryshimet më të fundit';
+$lang['breadcrumbs']           = 'Numri i gjurmëve';
+$lang['youarehere']            = 'Gjurmë hierarkike';
+$lang['typography']            = 'Bëj zëvendësime tipografike';
+$lang['htmlok']                = 'Lejo HTML të ngulitura';
+$lang['phpok']                 = 'Lejo PHP të ngulitura';
+$lang['dformat']               = 'Formati i Datës (shiko funksionin <a href="http://php.net/strftime">strftime</a> e PHP-së)';
+$lang['signature']             = 'Firma';
+$lang['toptoclevel']           = 'Niveli i Kreut për tabelën e përmbajtjes';
+$lang['tocminheads']           = 'Sasia minimum e titrave që përcaktojnë nëse TOC ndërtohet ose jo';
+$lang['maxtoclevel']           = 'Niveli maksimum për tabelën e përmbajtjes';
+$lang['maxseclevel']           = 'Niveli maksimum për redaktim të seksionit';
+$lang['camelcase']             = 'Përdor CamelCase (shkronja e parë e çdo fjale është kapitale) për linke-t';
+$lang['deaccent']              = 'Emra faqesh të pastër';
+$lang['useheading']            = 'Përdor titra të nivelit të parë për faqet e emrave';
+$lang['refcheck']              = 'Kontroll për referim mediash';
+$lang['allowdebug']            = 'Lejo debug <b>çaktivizoje nëse nuk nevojitet!</b>';
+$lang['usewordblock']          = 'Blloko spam-in duke u bazuar mbi listë fjalësh';
+$lang['indexdelay']            = 'Vonesa në kohë para index-imit (sekonda)';
+$lang['relnofollow']           = 'Përdor rel="nofollow" në linke të jashtëm';
+$lang['mailguard']             = 'Errëso adresat e email-it';
+$lang['iexssprotect']          = 'Kontrollo skedarët e ngarkuar për kod të mundshëm dashakeqës JavaScript ose HTML';
+$lang['showuseras']            = 'Cfarë të shfaqësh kur t\'i tregosh përdoruesit faqen e fundit të redaktuar';
+$lang['useacl']                = 'Përdor lista kontrolli të aksesit';
+$lang['autopasswd']            = 'Autogjenero fjalëkalime';
+$lang['authtype']              = 'Backend autentikimi';
+$lang['passcrypt']             = 'Metoda e enkriptimit të fjalëkalimit';
+$lang['defaultgroup']          = 'Grupi default';
+$lang['superuser']             = 'Superpërdorues - grup, përdorues ose listë e ndarë me presje user1, @group1,user2 me akses të plotë në të gjitha faqet dhe funksionet pavarësisht kuadrove të ACL';
+$lang['manager']               = 'Menaxher - grup, përdorues ose listë e ndarë me presje user1,@group1,user2 me akses në disa funksione të caktuara menaxhimi';
+$lang['profileconfirm']        = 'Konfirmo ndryshimet ne profil me fjalëkalim';
+$lang['disableactions']        = 'Caktivizo veprimet e DokuWiki-it';
+$lang['disableactions_check']  = 'Kontrollo';
+$lang['disableactions_subscription'] = 'Abonohu/Fshi Abonim';
+$lang['disableactions_wikicode'] = 'Shiku kodin burim/ Eksportoje të Papërpunuar';
+$lang['disableactions_other']  = 'Veprime të tjera (të ndarë me presje)';
+$lang['sneaky_index']          = 'Vetiu DokuWiki tregon të gjithë hapësirat e emrit në shikimin e index-it. Aktivizimi i kësaj alternative do të fshehë ato ku përdoruesi nuk ka të drejta leximi. Kjo mund të përfundojë në fshehje të nënhapësirave të emrit të aksesueshme. Kjo mund ta bëjë index-in të papërdorshëm me disa konfigurime të caktuara të ACL-së.';
+$lang['auth_security_timeout'] = 'Koha e Përfundimit për Autentikim (sekonda)';
+$lang['securecookie']          = 'A duhet që cookies të vendosura nëpërmjet HTTPS të dërgohen vetëm nëpërmjet HTTPS nga shfletuesit? Caktivizojeni këtë alternativë kur vetëm hyrja në wiki-n tuaj sigurohet me SSL por shfletimi i wiki-t bëhet në mënyrë të pasigurtë.';
+$lang['updatecheck']           = 'Kontrollo për përditësime dhe paralajmërime sigurie? DokuWiki duhet të kontaktojë me update.dokuwiki.org për këtë veti.';
+$lang['userewrite']            = 'Përdor URL të këndshme.';
+$lang['useslash']              = 'Përdor / si ndarës të hapësirave të emrit në URL';
+$lang['usedraft']              = 'Ruaj automatikisht një skicë gjatë redaktimit';
+$lang['sepchar']               = 'Fjala ndarëse për emrin e faqes';
+$lang['canonical']             = 'Përdor URL kanonike të plota';
+$lang['autoplural']            = 'Kontrollo për forma shumës në link-e';
+$lang['compression']           = 'Metoda kompresimit për skedarët atikë';
+$lang['cachetime']             = 'Mosha maksimale për cache (sekonda)';
+$lang['locktime']              = 'Mosha maksimale për kyçjen e skedarëve (sekonda)';
+$lang['fetchsize']             = 'Madhësia maksimale (bytes) që fetch.php mund të shkarkojë nga jashtë';
+$lang['notify']                = 'Dërgo lajmërim për ndryshime te kjo adresë email-i';
+$lang['registernotify']        = 'Dërgo info për përdoruesit e sapo regjistruar te kjo adresë email-i';
+$lang['mailfrom']              = 'Adresa e email-it që do të përdoret për dërgimin e email-eve automatikë';
+$lang['gzip_output']           = 'Përdor gzip Content-Encoding për xhtml';
+$lang['gdlib']                 = 'Versioni i GD Lib';
+$lang['im_convert']            = 'Path-i për tek mjeti i konvertimit ImageMagick';
+$lang['jpg_quality']           = 'Cilësia e kompresimit JPG (0-100)';
+$lang['subscribers']           = 'Aktivizo suportin për abonim faqesh';
+$lang['subscribe_time']        = 'Koha pas së cilës listat e abonimeve dhe konsumimet dërgohen (sekonda); Kjo duhet të jetë më e vogël se koha e specifikuar në ditët më të fundit';
+$lang['compress']              = 'Kompaktëso daljet CSS dhe JavaScript ';
+$lang['hidepages']             = 'Fshi faqet që përkojnë (shprehjet e rregullta)';
+$lang['send404']               = 'Dërgo "HTTP 404/Page Not Found" për faqe që nuk ekzistojnë';
+$lang['sitemap']               = 'Gjenero Google sitemap (ditë)';
+$lang['broken_iua']            = 'Funksioni ignore_user_abort është i prishur në sistemin tuaj? Kjo mund të shkaktojë një indeks kërkimi jo funksional. IIS+PHP/CGI njihen si të prishura. Shiko <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> për më shumë info.';
+$lang['xsendfile']             = 'Përdor kokën X-Sendfile për të lejuar webserver-in të dërgojë skedarë statikë? Kjo duhet të suportohet nga webserver-i juaj.';
+$lang['renderer_xhtml']        = 'Riprodhuesi i përdorur për daljen wiki kryesore (xhtml)';
+$lang['renderer__core']        = '%s (dokuwiki core)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['rememberme']            = 'Lejo cookies hyrjeje të përhershme (më kujto mua)';
+$lang['rss_type']              = 'Tipi feed XML';
+$lang['rss_linkto']            = 'XML feed lidhet me';
+$lang['rss_content']           = 'Cfarë të shfaqësh në objektet XML feed?';
+$lang['rss_update']            = 'Intervali i përditësimit XML feed (sekonda)';
+$lang['recent_days']           = 'Sa ndryshime të fundit duhen mbajtur (ditë)';
+$lang['rss_show_summary']      = 'XML feed trego përmbledhjen në titull';
+$lang['target____wiki']        = 'Dritarja target për link-e të brendshëm';
+$lang['target____interwiki']   = 'Dritarja target për link-e interwiki';
+$lang['target____extern']      = 'Dritarja target për link-e të jashtme';
+$lang['target____media']       = 'Dritarja target për link-e mediash';
+$lang['target____windows']     = 'Dritarja target për link-e windows-i';
+$lang['proxy____host']         = 'Emri i serverit të proxy-t';
+$lang['proxy____port']         = 'Porta e proxy-t';
+$lang['proxy____user']         = 'Emri i përdoruesit për proxy-n';
+$lang['proxy____pass']         = 'Fjalëkalimi proxy-t';
+$lang['proxy____ssl']          = 'Përdor SSL për tu lidhur me proxy-n';
+$lang['safemodehack']          = 'Aktivizo hack në safemode';
+$lang['ftp____host']           = 'Server FTP për safemode hack';
+$lang['ftp____port']           = 'Porta FTP për safemode hack';
+$lang['ftp____user']           = 'Emri përdoruesit për safemode hack';
+$lang['ftp____pass']           = 'Fjalëkalimi FTP për safemode hack';
+$lang['ftp____root']           = 'Direktoria rrënjë për safemode hack';
+$lang['license_o_']            = 'Nuk u zgjodh asgjë';
+$lang['typography_o_0']        = 'Asgjë';
+$lang['typography_o_1']        = 'përjashtim i thonjëzave teke';
+$lang['typography_o_2']        = 'përfshirje e thonjëzave teke (nuk punon gjithmonë) ';
+$lang['userewrite_o_0']        = 'asgjë';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Brendësia DokuWiki';
+$lang['deaccent_o_0']          = 'fikur';
+$lang['deaccent_o_1']          = 'hiq theksin';
+$lang['deaccent_o_2']          = 'romanizo';
+$lang['gdlib_o_0']             = 'GD Lib nuk është e disponueshme';
+$lang['gdlib_o_1']             = 'Versioni 1.x';
+$lang['gdlib_o_2']             = 'Dallim automatik';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstrakte';
+$lang['rss_content_o_diff']    = 'Ndryshime të njësuara';
+$lang['rss_content_o_htmldiff'] = 'Tabelë ndryshimesh e formatuar në HTML';
+$lang['rss_content_o_html']    = 'Përmbajtje e plotë faqeje HTML';
+$lang['rss_linkto_o_diff']     = 'shikimi ndryshimit';
+$lang['rss_linkto_o_page']     = 'faqja e rishikuar';
+$lang['rss_linkto_o_rev']      = 'lista e rishikimeve';
+$lang['rss_linkto_o_current']  = 'faqja aktuale';
+$lang['compression_o_0']       = 'asgjë';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'mos e përdor';
+$lang['xsendfile_o_1']         = 'Proprietary lighttpd header (para lëshimit 1.5)';
+$lang['xsendfile_o_2']         = 'X-Sendfile header standard';
+$lang['xsendfile_o_3']         = 'Proprietary Nginx X-Accel-Redirect header';
+$lang['showuseras_o_loginname'] = 'Emri hyrjes';
+$lang['showuseras_o_username'] = 'Emri i plotë i përdoruesit';
+$lang['showuseras_o_email']    = 'Adresa e email-it e përdoruesit (errësuar sipas kuadros mailguard)';
+$lang['showuseras_o_email_link'] = 'Adresa email e përdoruesit si një mailto: link';
+$lang['useheading_o_0']        = 'Kurrë';
+$lang['useheading_o_navigation'] = 'Vetëm për Navigim';
+$lang['useheading_o_content']  = 'Vetëm për Përmbajtje Wiki';
+$lang['useheading_o_1']        = 'Gjithmonë';
diff --git a/wiki/lib/plugins/config/lang/sr/intro.txt b/wiki/lib/plugins/config/lang/sr/intro.txt
new file mode 100644
index 0000000..0ee76ed
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sr/intro.txt
@@ -0,0 +1,7 @@
+====== Управљач подешавањима ======
+
+Ову страну користите за контролу подешавања вашег DokuWiki-ја. За помоћ о индивидуалним поставкама погледајте [[doku>config]]. За више информација о додацима погледајте [[doku>plugin:config]].
+
+Подешавања која имају светло црвену позадину су заштићена и не могу се мењати овим додатком. Подешавања која имају светло плаву позадину су подразумеване вредности и подешавања са белом позадином су локална за ову вики инсталацију. И плава и бела подешавања се могу мењати.
+
+Не заборавите да притиснете дугме **Сачувај** када завршите са изменама, у супротном ће ваше измене бити изгубљене.
diff --git a/wiki/lib/plugins/config/lang/sr/lang.php b/wiki/lib/plugins/config/lang/sr/lang.php
new file mode 100644
index 0000000..e8f3b83
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sr/lang.php
@@ -0,0 +1,185 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Иван Петровић petrovicivan@ubuntusrbija.org
+ * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Miroslav Šolti <solti.miroslav@gmail.com>
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['menu']                  = 'Подешавања';
+$lang['error']                 = 'Подешавања нису прихваћена јер постоји вредност са грешком, проверите измене које сте извршили и поновите слање.<br />Вредност(и) са грешком су приказане са црвеним оквиром.';
+$lang['updated']               = 'Измене су сачуване.';
+$lang['nochoice']              = '(не постоји други избор)';
+$lang['locked']                = 'Датотека са подешавањима не може да се ажурира, ако вам то није намера проверите да ли су дозволе исправно постављене.';
+$lang['danger']                = 'Опасно: Променом ове опције може се десити да ваш вики и мени за подешавања буде недоступан.';
+$lang['warning']               = 'Упозорење: Промена ове опције може проузроковати нежељене ефекте.';
+$lang['security']              = 'Сигурносно упозорење: Промена ове опције може да проузрокује сигурносни ризик.';
+$lang['_configuration_manager'] = 'Управљач подешавањима';
+$lang['_header_dokuwiki']      = 'Подешавања Dokuwiki-ја';
+$lang['_header_plugin']        = 'Подешавања за додатке';
+$lang['_header_template']      = 'Подешавања за шаблоне';
+$lang['_header_undefined']     = 'Неразврстана подешавања';
+$lang['_basic']                = 'Основна подешавања';
+$lang['_display']              = 'Подешавања приказа';
+$lang['_authentication']       = 'Подешавања провере';
+$lang['_anti_spam']            = 'Подешавања за борбу против спама';
+$lang['_editing']              = 'Подешавања измена';
+$lang['_links']                = 'Подешавања линковања';
+$lang['_media']                = 'Подешавања медија';
+$lang['_advanced']             = 'Напредна подешавања';
+$lang['_network']              = 'Подешавања мреже';
+$lang['_msg_setting_undefined'] = 'Нема метаподатака подешавања';
+$lang['_msg_setting_no_class'] = 'Нема класе подешавања';
+$lang['_msg_setting_no_default'] = 'Нема подразумеване вредности';
+$lang['title']                 = 'Назив викија';
+$lang['start']                 = 'Назив почетне странице';
+$lang['lang']                  = 'Језик';
+$lang['template']              = 'Шаблон';
+$lang['license']               = 'Под којом лиценцом желите да ваш материјал буде објављен?';
+$lang['savedir']               = 'Фасцикла у којој ће се чувати подаци';
+$lang['basedir']               = 'Основна фасцикла';
+$lang['baseurl']               = 'Основни УРЛ';
+$lang['dmode']                 = 'Начин прављења фасцикла';
+$lang['fmode']                 = 'Начин прављења датотека';
+$lang['allowdebug']            = 'Укључи дебаговање <b>искључи ако није потребно!</b>';
+$lang['recent']                = 'Последње промене';
+$lang['recent_days']           = 'Колико последњих промена чувати (дани)';
+$lang['breadcrumbs']           = 'Број пређених корака (страница)';
+$lang['youarehere']            = 'Хиерархијске кораке (странице)';
+$lang['fullpath']              = 'Објави целу путању странице у заглављу на дну стране';
+$lang['typography']            = 'Уради типографске замене';
+$lang['dformat']               = 'Облик датума (погледајте ПХПову <a href="http://php.net/strftime">strftime</a> функцију)';
+$lang['signature']             = 'Потпис';
+$lang['showuseras']            = 'Шта приказати за исписивање корисника који је последњи вршио измене';
+$lang['toptoclevel']           = 'Највиши ниво за садржај';
+$lang['tocminheads']           = 'Минималан број наслова који одређују да ли ће Садржај бити направљен';
+$lang['maxtoclevel']           = 'Максимални ниво за садржај';
+$lang['maxseclevel']           = 'Максималан број секција које се мењају';
+$lang['camelcase']             = 'Користи CamelCase за линкове';
+$lang['deaccent']              = 'Чисти имена страница';
+$lang['useheading']            = 'Преузми наслов првог нивоа за назив странице';
+$lang['sneaky_index']          = 'По инсталацији DokuWiki ће у индексу приказати све именске просторе. Укључивањем ове опције именски простори у којима корисник нема право читања ће бити сакривени. Консеквенца је да ће и доступни подпростори бити сакривени. Ово доводи до неупотребљивости Права приступа у неким поставкама.';
+$lang['hidepages']             = 'Сакриј подударне странице (на основу регуларних израза)';
+$lang['useacl']                = 'Користи листу права приступа';
+$lang['autopasswd']            = 'Аутогенерисане лозинки';
+$lang['authtype']              = 'Позадински систем аутентификације';
+$lang['passcrypt']             = 'Метода шифровања лозинки';
+$lang['defaultgroup']          = 'Подразумевана група';
+$lang['superuser']             = 'Суперкорисник - група, корисник или зарезом одвојена листа корисника корисник1,@група1,корисник2 са отвореним проступом свим страницама и функцијама без обзира на поставке Контроле приступа';
+$lang['manager']               = 'Управник - група, корисник или зарезом одвојена листа корисника корисник1,@група1,корисник2 са отвореним проступом неким функцијама за управљање';
+$lang['profileconfirm']        = 'Потврди промене у профилу куцањем лозинке';
+$lang['rememberme']            = 'Дозволи стални колачић за пријављивање (запамти ме)';
+$lang['disableactions']        = 'Искључи DokuWiki наредбе';
+$lang['disableactions_check']  = 'Провера';
+$lang['disableactions_subscription'] = 'Претплата';
+$lang['disableactions_wikicode'] = 'Прикажи извор/Извези сирово';
+$lang['disableactions_other']  = 'Остале наредбе (раздвојене зарезом)';
+$lang['auth_security_timeout'] = 'Временска пауза у аутентификацији (секунде)';
+$lang['securecookie']          = 'Да ли колачићи који су постављени преко ХТТПС треба слати веб читачу само преко ХТТПС? Искључите ову опцију само ако је пријављивање на вики заштићено ССЛом а остали део викија незаштићен.';
+$lang['usewordblock']          = 'Блокирај спам на основу листе речи';
+$lang['relnofollow']           = 'Користи rel="nofollow" за спољне линкове';
+$lang['indexdelay']            = 'Одлагање индексирања (секунде)';
+$lang['mailguard']             = 'Замутити Е-адресе';
+$lang['iexssprotect']          = 'Провера потенцијално малициозног кода у Јаваскрипт или ХТМЛ коду';
+$lang['usedraft']              = 'Аутоматски сачувај скицу у току писања измена';
+$lang['htmlok']                = 'Дозволи угњежђени ХТМЛ';
+$lang['phpok']                 = 'Дозволи угњежђени ПХП';
+$lang['locktime']              = 'МАксимално трајање закључавања датотека (сек)';
+$lang['cachetime']             = 'Максимално трајање оставе (сек)';
+$lang['target____wiki']        = 'Циљни прозор за интерне линкове';
+$lang['target____interwiki']   = 'Циљни прозор за међувики линкове';
+$lang['target____extern']      = 'Циљни прозор за спољне линкове';
+$lang['target____media']       = 'Циљни прозор за медијске линкове';
+$lang['target____windows']     = 'Циљни прозор за Виндоуз линкове';
+$lang['refcheck']              = 'Провери референце медијских датотека';
+$lang['gdlib']                 = 'ГД Либ верзија';
+$lang['im_convert']            = 'Путања до алатке за коверзију ИмиџМеџик ';
+$lang['jpg_quality']           = 'ЈПГ квалитет компресије (0-100)';
+$lang['fetchsize']             = 'Максимална величина (у бајтима) коју може да преузме fetch.php од споља';
+$lang['subscribers']           = 'Укључи могућност претплате за странице';
+$lang['subscribe_time']        = 'Време након ког се спискови претплатника и сижеи шаљу (у секундама); Ова цифра би требало да буде мања од цифре наведене под recent_days';
+$lang['notify']                = 'Пошаљи обавештења о променама на ову е-адресу';
+$lang['registernotify']        = 'Пошаљи обавештење о новорегистрованим корисницима на ову е-адресу';
+$lang['mailfrom']              = 'Е-адреса која се користи као пошиљаоц за аутоматске е-поруке';
+$lang['sitemap']               = 'Генериши Гугл мапу сајта (дан)';
+$lang['rss_type']              = 'Врста ИксМЛ довода';
+$lang['rss_linkto']            = 'ИксМЛ довод линкује на';
+$lang['rss_content']           = 'Шта треба приказати у ИксМЛ доводу?';
+$lang['rss_update']            = 'ИксМЛ';
+$lang['rss_show_summary']      = 'ИксМЛ довод приказује збир у наслову';
+$lang['updatecheck']           = 'Провера надоградњи и сигурносних упозорења? Dokuwiki мора да контактира update.dokuwiki.org ради добијања информација.';
+$lang['userewrite']            = 'Направи леп УРЛ';
+$lang['useslash']              = 'Користи косу црту у УРЛу за раздвајање именских простора ';
+$lang['sepchar']               = 'Раздвајање речи у називу странице';
+$lang['canonical']             = 'Користи правилне УРЛове';
+$lang['fnencode']              = 'Метод кодирања не-ASCII имена фајлова:';
+$lang['autoplural']            = 'Провери облик множине у линковима';
+$lang['compression']           = 'Метод компресије за attic датотеке';
+$lang['gzip_output']           = 'Користи гзип шифрирање за иксХТМЛ';
+$lang['compress']              = 'Сажимај ЦСС и јаваскрипт';
+$lang['send404']               = 'Пошаљи поруку "ХТТП 404/Страница не постоји" за непостојеће странице';
+$lang['broken_iua']            = 'Да ли је функција ignore_user_abort function не ради на вашем систему? Ово може проузроковати неиндексирање података за претрагу. ИИС+ПХП/ЦГИ је често ван функције. Погледајте <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">баг 852</a> за више информација.';
+$lang['xsendfile']             = 'Користи заглавље X-Sendfile да би веб сервер могао да испоручује статичке датотеке? Веб сервер треба да подржава ову функцију.';
+$lang['renderer_xhtml']        = 'Исцртавање користи главни (xhtml) вики испис';
+$lang['renderer__core']        = '%s (dokuwiki језгро)';
+$lang['renderer__plugin']      = '%s (додатак)';
+$lang['jquerycdn_o_0']         = 'Без CDN-a, само локална достава';
+$lang['jquerycdn_o_jquery']    = 'CDN на адреси code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN на cdnjs.com';
+$lang['proxy____host']         = 'Назив посредника (проксија)';
+$lang['proxy____port']         = 'Порт посредника (проксија)';
+$lang['proxy____user']         = 'Корисничко име на посреднику (проксију)';
+$lang['proxy____pass']         = 'Лозинка на посреднику (проксију)';
+$lang['proxy____ssl']          = 'Користи ССЛ за повезивање са посредником (проксијем)';
+$lang['proxy____except']       = 'Редован израз који би требало да се подудара са веб адресом странице за коју треба прескочити посредника (прокси).';
+$lang['safemodehack']          = 'Укључи преправку за безбедни режим';
+$lang['ftp____host']           = 'ФТП сервер за безбедни режим';
+$lang['ftp____port']           = 'ФТП порт за безбедни режим';
+$lang['ftp____user']           = 'ФТП корисничко име за безбедни режим';
+$lang['ftp____pass']           = 'ФТП лозинка за безбедни режим';
+$lang['ftp____root']           = 'ФТП основна фасцикла за безбедни режим';
+$lang['license_o_']            = 'Није одабрано';
+$lang['typography_o_0']        = 'не';
+$lang['typography_o_1']        = 'Само дупли наводници';
+$lang['typography_o_2']        = 'Сви наводници (неће увек радити)';
+$lang['userewrite_o_0']        = 'не';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki интерно';
+$lang['deaccent_o_0']          = 'искључено';
+$lang['deaccent_o_1']          = 'уклони акценте';
+$lang['deaccent_o_2']          = 'романизуј';
+$lang['gdlib_o_0']             = 'ГД Либ није доступан';
+$lang['gdlib_o_1']             = 'Верзија 1.*';
+$lang['gdlib_o_2']             = 'Аутопроналажење';
+$lang['rss_type_o_rss']        = 'РСС 0.91';
+$lang['rss_type_o_rss1']       = 'РСС 1.0';
+$lang['rss_type_o_rss2']       = 'РСС 2.0';
+$lang['rss_type_o_atom']       = 'Атом 0.3';
+$lang['rss_type_o_atom1']      = 'Атом 1.0';
+$lang['rss_content_o_abstract'] = 'Издвојити';
+$lang['rss_content_o_diff']    = 'Једностране разлике';
+$lang['rss_content_o_htmldiff'] = 'ХТМЛ форматирана табела разлика';
+$lang['rss_content_o_html']    = 'ХТМЛ садржај странице';
+$lang['rss_linkto_o_diff']     = 'приказ разлика';
+$lang['rss_linkto_o_page']     = 'исправљена страница';
+$lang['rss_linkto_o_rev']      = 'листа исправки';
+$lang['rss_linkto_o_current']  = 'тренутна страница';
+$lang['compression_o_0']       = 'не';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'не';
+$lang['xsendfile_o_1']         = 'Власничко lighttpd заглавље (пре верзије 1.5)';
+$lang['xsendfile_o_2']         = 'Стандардно заглавље X-Sendfile';
+$lang['xsendfile_o_3']         = 'Власничко заглавље Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Корисничко име';
+$lang['showuseras_o_username'] = 'Име и презиме корисника';
+$lang['showuseras_o_username_link'] = 'Пуно име корисника као корисничка веза међувикија';
+$lang['showuseras_o_email']    = 'Е-адреса (замућено по подешавањима mailguard-а)';
+$lang['showuseras_o_email_link'] = 'Корисничка Е-адреса као mailto: веза';
+$lang['useheading_o_0']        = 'Никада';
+$lang['useheading_o_navigation'] = 'Сами навигација';
+$lang['useheading_o_content']  = 'Само за садржај викија';
+$lang['useheading_o_1']        = 'Увек';
+$lang['readdircache']          = 'Максимално време трајања за readdir cache (у секундама)';
diff --git a/wiki/lib/plugins/config/lang/sv/intro.txt b/wiki/lib/plugins/config/lang/sv/intro.txt
new file mode 100644
index 0000000..fd77634
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sv/intro.txt
@@ -0,0 +1,7 @@
+====== Hantera inställningar ======
+
+Använd den här sidan för att göra inställningar i din Dokuwiki. För hjälp angående specifika inställningar, se [[doku>config]]. För mer detaljer om den här insticksmodulen, se [[doku>plugin:config]].
+
+Inställningar med en rosa bakgrund är skyddade och kan inte ändras med den här insticksmodulen. Inställningar med en blå bakgrund är standardvärden, och inställningar som visas med en vit bakgrund har ändrats i den här installationen. Både blåa och vita inställningar kan ändras.
+
+Kom i håg att trycka på knappen **Spara** innan du lämnar den här sidan, annars kommer ändringarna att gå förlorade.
diff --git a/wiki/lib/plugins/config/lang/sv/lang.php b/wiki/lib/plugins/config/lang/sv/lang.php
new file mode 100644
index 0000000..268cc36
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/sv/lang.php
@@ -0,0 +1,197 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ * @author Per Foreby <per@foreby.se>
+ * @author Nicklas Henriksson <nicklas[at]nihe.se>
+ * @author Håkan Sandell <hakan.sandell[at]mydata.se>
+ * @author Dennis Karlsson
+ * @author Tormod Otter Johansson <tormod@latast.se>
+ * @author Pontus Bergendahl <pontus.bergendahl@gmail.com>
+ * @author Emil Lind <emil@sys.nu>
+ * @author Bogge Bogge <bogge@bogge.com>
+ * @author Peter Åström <eaustreum@gmail.com>
+ */
+$lang['menu']                  = 'Hantera inställningar';
+$lang['error']                 = 'Inställningarna uppdaterades inte på grund av ett felaktigt värde. Titta igenom dina ändringar och försök sedan spara igen.
+                       <br />Felaktiga värden är omgivna av en röd ram.';
+$lang['updated']               = 'Inställningarna uppdaterade.';
+$lang['nochoice']              = '(inga andra val tillgängliga)';
+$lang['locked']                = 'Filen med inställningar kan inte uppdateras. Om det inte är meningen att det ska vara så, <br />
+                       kontrollera att filen med lokala inställningar har rätt namn och filskydd.';
+$lang['danger']                = 'Risk: Denna förändring kan göra wikin och inställningarna otillgängliga.';
+$lang['warning']               = 'Varning: Denna förändring kan orsaka icke åsyftade resultat.';
+$lang['security']              = 'Säkerhetsvarning: Denna förändring kan innebära en säkerhetsrisk.';
+$lang['_configuration_manager'] = 'Hantera inställningar';
+$lang['_header_dokuwiki']      = 'Inställningar för DokuWiki';
+$lang['_header_plugin']        = 'Inställningar för insticksmoduler';
+$lang['_header_template']      = 'Inställningar för mallar';
+$lang['_header_undefined']     = 'Odefinierade inställningar';
+$lang['_basic']                = 'Grundläggande inställningar';
+$lang['_display']              = 'Inställningar för presentation';
+$lang['_authentication']       = 'Inställningar för autentisering';
+$lang['_anti_spam']            = 'Inställningar för anti-spam';
+$lang['_editing']              = 'Inställningar för redigering';
+$lang['_links']                = 'Inställningar för länkar';
+$lang['_media']                = 'Inställningar för medier';
+$lang['_notifications']        = 'Noterings inställningar';
+$lang['_syndication']          = 'Syndikats inställningar';
+$lang['_advanced']             = 'Avancerade inställningar';
+$lang['_network']              = 'Nätverksinställningar';
+$lang['_msg_setting_undefined'] = 'Ingen inställningsmetadata.';
+$lang['_msg_setting_no_class'] = 'Ingen inställningsklass.';
+$lang['_msg_setting_no_default'] = 'Inget standardvärde.';
+$lang['title']                 = 'Wikins namn';
+$lang['start']                 = 'Startsidans namn';
+$lang['lang']                  = 'Språk';
+$lang['template']              = 'Mall';
+$lang['license']               = 'Under vilken licens skall ditt innehåll publiceras?';
+$lang['savedir']               = 'Katalog för att spara data';
+$lang['basedir']               = 'Grundkatalog';
+$lang['baseurl']               = 'Grund-webbadress';
+$lang['cookiedir']             = 'Cookie sökväg. Lämna blankt för att använda basurl.';
+$lang['dmode']                 = 'Filskydd för nya kataloger';
+$lang['fmode']                 = 'Filskydd för nya filer';
+$lang['allowdebug']            = 'Tillåt felsökning <b>stäng av om det inte behövs!</b>';
+$lang['recent']                = 'Antal poster under "Nyligen ändrat"';
+$lang['recent_days']           = 'Hur många ändringar som ska sparas (dagar)';
+$lang['breadcrumbs']           = 'Antal spår';
+$lang['youarehere']            = 'Hierarkiska spår';
+$lang['fullpath']              = 'Visa fullständig sökväg i sidfoten';
+$lang['typography']            = 'Aktivera typografiska ersättningar';
+$lang['dformat']               = 'Datumformat (se PHP:s <a href="http://php.net/strftime">strftime</a>-funktion)';
+$lang['signature']             = 'Signatur';
+$lang['showuseras']            = 'Vad som skall visas när man visar den användare som senast redigerade en sida';
+$lang['toptoclevel']           = 'Toppnivå för innehållsförteckning';
+$lang['tocminheads']           = 'Minimalt antal rubriker för att avgöra om innehållsförteckning byggs';
+$lang['maxtoclevel']           = 'Maximal nivå för innehållsförteckning';
+$lang['maxseclevel']           = 'Maximal nivå för redigering av rubriker';
+$lang['camelcase']             = 'Använd CamelCase för länkar';
+$lang['deaccent']              = 'Rena sidnamn';
+$lang['useheading']            = 'Använda första rubriken som sidnamn';
+$lang['sneaky_index']          = 'Som standard visar DokuWiki alla namnrymder på indexsidan. Genom att aktivera det här valet döljer man namnrymder som användaren inte har behörighet att läsa. Det kan leda till att man döljer åtkomliga undernamnrymder, och gör indexet oanvändbart med vissa ACL-inställningar.';
+$lang['hidepages']             = 'Dölj matchande sidor (reguljära uttryck)';
+$lang['useacl']                = 'Använd behörighetslista (ACL)';
+$lang['autopasswd']            = 'Autogenerera lösenord';
+$lang['authtype']              = 'System för autentisering';
+$lang['passcrypt']             = 'Metod för kryptering av lösenord';
+$lang['defaultgroup']          = 'Förvald grupp';
+$lang['superuser']             = 'Huvudadministratör - en grupp eller en användare med full tillgång till alla sidor och funktioner, oavsett behörighetsinställningars';
+$lang['manager']               = 'Administratör -- en grupp eller användare med tillgång till vissa administrativa funktioner.';
+$lang['profileconfirm']        = 'Bekräfta ändringarna i profilen med lösenordet';
+$lang['rememberme']            = 'Tillåt permanenta inloggningscookies (kom ihåg mig)';
+$lang['disableactions']        = 'Stäng av funktioner i DokuWiki';
+$lang['disableactions_check']  = 'Kontroll';
+$lang['disableactions_subscription'] = 'Prenumerera/Säg upp prenumeration';
+$lang['disableactions_wikicode'] = 'Visa källkod/Exportera råtext';
+$lang['disableactions_profile_delete'] = 'Ta bort eget konto';
+$lang['disableactions_other']  = 'Andra funktioner (kommaseparerade)';
+$lang['auth_security_timeout'] = 'Autentisieringssäkerhets timeout (sekunder)';
+$lang['securecookie']          = 'Skall cookies som sätts via HTTPS endast skickas via HTTPS från webbläsaren? Avaktivera detta alternativ endast om inloggningen till din wiki är säkrad med SSL men läsning av wikin är osäkrad.';
+$lang['usewordblock']          = 'Blockera spam baserat på ordlista';
+$lang['relnofollow']           = 'Använd rel="nofollow" för externa länkar';
+$lang['indexdelay']            = 'Tidsfördröjning före indexering (sek)';
+$lang['mailguard']             = 'Koda e-postadresser';
+$lang['iexssprotect']          = 'Kontrollera om uppladdade filer innehåller eventuellt skadlig JavaScript eller HTML-kod';
+$lang['usedraft']              = 'Spara utkast automatiskt under redigering';
+$lang['htmlok']                = 'Tillåt inbäddad HTML';
+$lang['phpok']                 = 'Tillåt inbäddad PHP';
+$lang['locktime']              = 'Maximal livslängd för fillåsning (sek)';
+$lang['cachetime']             = 'Maximal livslängd för cache (sek)';
+$lang['target____wiki']        = 'Målfönster för interna länkar';
+$lang['target____interwiki']   = 'Målfönster för interwiki-länkar';
+$lang['target____extern']      = 'Målfönster för externa länkar';
+$lang['target____media']       = 'Målfönster för medialänkar';
+$lang['target____windows']     = 'Målfönster för windowslänkar';
+$lang['refcheck']              = 'Kontrollera referenser till mediafiler';
+$lang['gdlib']                 = 'Version av GD-biblioteket';
+$lang['im_convert']            = 'Sökväg till ImageMagicks konverteringsverktyg';
+$lang['jpg_quality']           = 'Kvalitet för JPG-komprimering (0-100)';
+$lang['fetchsize']             = 'Maximal storlek (bytes) som fetch.php får ladda ned  externt';
+$lang['subscribers']           = 'Aktivera stöd för prenumeration på ändringar';
+$lang['notify']                = 'Skicka meddelande om ändrade sidor till den här e-postadressen';
+$lang['registernotify']        = 'Skicka meddelande om nyregistrerade användare till en här e-postadressen';
+$lang['mailfrom']              = 'Avsändaradress i automatiska e-postmeddelanden';
+$lang['mailprefix']            = 'Prefix i början på ämnesraden vid automatiska e-postmeddelanden';
+$lang['sitemap']               = 'Skapa Google sitemap (dagar)';
+$lang['rss_type']              = 'Typ av XML-flöde';
+$lang['rss_linkto']            = 'XML-flöde pekar på';
+$lang['rss_content']           = 'Vad ska visas för saker i XML-flödet?';
+$lang['rss_update']            = 'Uppdateringsintervall för XML-flöde (sek)';
+$lang['rss_show_summary']      = 'XML-flöde visar sammanfattning i rubriken';
+$lang['rss_media']             = 'Vilka ändringar ska listas i XML flödet?';
+$lang['updatecheck']           = 'Kontrollera uppdateringar och säkerhetsvarningar? DokuWiki behöver kontakta update.dokuwiki.org för den här funktionen.';
+$lang['userewrite']            = 'Använd rena webbadresser';
+$lang['useslash']              = 'Använd snedstreck för att separera namnrymder i webbadresser';
+$lang['sepchar']               = 'Ersätt blanktecken i webbadresser med';
+$lang['canonical']             = 'Använd fullständiga webbadresser';
+$lang['fnencode']              = 'Metod för kodning av icke-ASCII filnamn.';
+$lang['autoplural']            = 'Leta efter pluralformer av länkar';
+$lang['compression']           = 'Metod för komprimering av gamla versioner';
+$lang['gzip_output']           = 'Använd gzip Content-Encoding för xhtml';
+$lang['compress']              = 'Komprimera CSS och javascript';
+$lang['send404']               = 'Skicka "HTTP 404/Page Not Found" för sidor som inte finns';
+$lang['broken_iua']            = 'Är funktionen ignore_user_abort trasig på ditt system? Det kan i så fall leda till att indexering av sökningar inte fungerar. Detta är ett känt problem med IIS+PHP/CGI. Se <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> för mer info.';
+$lang['xsendfile']             = 'Använd X-Sendfile huvudet för att låta webservern leverera statiska filer? Din webserver behöver stöd för detta.';
+$lang['renderer_xhtml']        = 'Generera för användning i huvudwikipresentation (xhtml)';
+$lang['renderer__core']        = '%s (dokuwiki core)';
+$lang['renderer__plugin']      = '%s (plugin)';
+$lang['jquerycdn_o_jquery']    = 'CDN på code.jquery.com';
+$lang['jquerycdn_o_cdnjs']     = 'CDN på cdnjs.com';
+$lang['proxy____host']         = 'Proxyserver';
+$lang['proxy____port']         = 'Proxyport';
+$lang['proxy____user']         = 'Användarnamn för proxy';
+$lang['proxy____pass']         = 'Lösenord för proxy';
+$lang['proxy____ssl']          = 'Använd ssl för anslutning till proxy';
+$lang['proxy____except']       = 'Regular expression för matchning av URL som proxy ska hoppa över.';
+$lang['safemodehack']          = 'Aktivera safemode hack';
+$lang['ftp____host']           = 'FTP-server för safemode hack';
+$lang['ftp____port']           = 'FTP-port för safemode hack';
+$lang['ftp____user']           = 'FTP-användarnamn för safemode hack';
+$lang['ftp____pass']           = 'FTP-lösenord för safemode hack';
+$lang['ftp____root']           = 'FTP-rotkatalog för safemode hack';
+$lang['license_o_']            = 'Ingen vald';
+$lang['typography_o_0']        = 'Inga';
+$lang['typography_o_1']        = 'enbart dubbla citattecken';
+$lang['typography_o_2']        = 'både dubbla och enkla citattecken (fungerar inte alltid)';
+$lang['userewrite_o_0']        = 'av';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki internt';
+$lang['deaccent_o_0']          = 'av';
+$lang['deaccent_o_1']          = 'ta bort accenter';
+$lang['deaccent_o_2']          = 'romanisera';
+$lang['gdlib_o_0']             = 'GD-bibliotek inte tillgängligt';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'Automatisk detektering';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Abstrakt';
+$lang['rss_content_o_diff']    = 'Unified Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML formaterad diff tabell';
+$lang['rss_content_o_html']    = 'Sidans innehåll i full HTML';
+$lang['rss_linkto_o_diff']     = 'lista på skillnader';
+$lang['rss_linkto_o_page']     = 'den reviderade sidan';
+$lang['rss_linkto_o_rev']      = 'lista över ändringar';
+$lang['rss_linkto_o_current']  = 'den aktuella sidan';
+$lang['compression_o_0']       = 'ingen';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'använd ej';
+$lang['xsendfile_o_1']         = 'Proprietär lighttpd-header (före version 1.5)';
+$lang['xsendfile_o_2']         = 'Standard X-Sendfile-huvud';
+$lang['xsendfile_o_3']         = 'Proprietär Nginx X-Accel-Redirect header';
+$lang['showuseras_o_loginname'] = 'Användarnamn';
+$lang['showuseras_o_username'] = 'Namn';
+$lang['showuseras_o_username_link'] = 'Användarens fullständiga namn som interwiki-användarlänk';
+$lang['showuseras_o_email']    = 'Användarens e-postadress (obfuskerad enligt inställningarna i mailguard)';
+$lang['showuseras_o_email_link'] = 'Användarens e-postadress som mailto: länk';
+$lang['useheading_o_0']        = 'Aldrig';
+$lang['useheading_o_navigation'] = 'Endst navigering';
+$lang['useheading_o_content']  = 'Endast innehåll i wiki';
+$lang['useheading_o_1']        = 'Alltid';
+$lang['readdircache']          = 'Max ålder för readdir cache (sek)';
diff --git a/wiki/lib/plugins/config/lang/th/lang.php b/wiki/lib/plugins/config/lang/th/lang.php
new file mode 100644
index 0000000..ce1d30d
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/th/lang.php
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Komgrit Niyomrath <n.komgrit@gmail.com>
+ * @author Kittithat Arnontavilas mrtomyum@gmail.com
+ * @author Arthit Suriyawongkul <arthit@gmail.com>
+ * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
+ * @author Thanasak Sompaisansin <jombthep@gmail.com>
+ */
+$lang['menu']                  = 'ตั้งค่าการปรับแต่ง';
+$lang['updated']               = 'การปรับแต่งค่าถูกบันทึกเรียบร้อย';
+$lang['_configuration_manager'] = 'จัดการการปรับตั้งค่า';
+$lang['_header_dokuwiki']      = 'การตั้งค่า DokuWiki';
+$lang['_header_plugin']        = 'การตั้งค่า Plugin';
+$lang['_header_template']      = 'การตั้งค่าเทมเพลต';
+$lang['_basic']                = 'การตั้งค่าพื้นฐาน';
+$lang['_display']              = 'การตั้งค่าการแสดงผล';
+$lang['_authentication']       = 'การตั้งค่าสิทธิ์การเข้าถึง';
+$lang['_anti_spam']            = 'การตั้งค่าป้องกันสแปม';
+$lang['_editing']              = 'การตั้งค่าการแก้ไขปรับปรุง';
+$lang['_links']                = 'การตั้งค่าลิงก์';
+$lang['_media']                = 'การตั้งค่าภาพ-เสียง';
+$lang['_advanced']             = 'การตั้งค่าขั้นสูง';
+$lang['_network']              = 'การตั้งค่าเครือข่าย';
+$lang['start']                 = 'ชื่อหน้าเริ่มต้น';
+$lang['lang']                  = 'ภาษา';
+$lang['savedir']               = 'ไดเรคทอรีที่บันทึกข้อมูล';
+$lang['basedir']               = 'ไดเรคทอรีพื้นฐาน';
+$lang['baseurl']               = 'URL พื้นฐาน';
+$lang['recent']                = 'การเปลี่ยนแปลงล่าสุด';
+$lang['recent_days']           = 'จำนวนวันที่เก็บรายการที่ถูกแก้ไขล่าสุด';
+$lang['signature']             = 'ลายเซนต์';
+$lang['hidepages']             = 'ซ่อนหน้าที่เข้ากันได้ (regular expressions)';
+$lang['autopasswd']            = 'สร้างรหัสผ่านให้อัตโนมัติ';
+$lang['passcrypt']             = 'กระบวนการเข้ารหัส สำหรับเก็บบันทึกรหัสผ่าน';
+$lang['defaultgroup']          = 'กลุ่มมาตรฐาน';
+$lang['profileconfirm']        = 'ใส่รหัสผ่านเพื่อยืนยันการเปลี่ยนแปลงข้อมูล';
+$lang['rememberme']            = 'อนุญาตให้จดจำการ login แบบถาวร';
+$lang['disableactions_check']  = 'ตรวจสอบ';
+$lang['auth_security_timeout'] = 'ระยะเวลาที่จะตัดการเชื่อมต่อแบบการใช้งานด้วยสิทธิ์ผู้ใช้ (วินาที)';
+$lang['usewordblock']          = 'คำที่จะถือว่าเป็นสแปม';
+$lang['relnofollow']           = 'ใช้ rel="nofollow" สำหรับลิงก์ภายนอก';
+$lang['htmlok']                = 'อนุญาตให้ใช้ HTML';
+$lang['phpok']                 = 'อนุญาตให้ใช้ PHP';
+$lang['locktime']              = 'ระยะเวลานานสุด ที่จะล็อคไม่ให้แก้ไขไฟล์ (วินาที)';
+$lang['cachetime']             = 'ระยะเวลาสำหรับการเก็บแคช (วินาที)';
+$lang['target____wiki']        = 'เปิดแสดงลิงก์ภายใน ในหน้าเว็บแบบใด';
+$lang['target____interwiki']   = 'เปิดแสดงลิงก์ interwiki ในหน้าเว็บแบบใด';
+$lang['target____extern']      = 'เปิดแสดงลิงก์ภายนอก ในหน้าเว็บแบบใด';
+$lang['target____media']       = 'เปิดแสดงลิงก์ของมีเดีย ในหน้าเว็บแบบใด';
+$lang['target____windows']     = 'เปิดแสดงลิงก์ของวินโดวส์ ในหน้าเว็บแบบใด';
+$lang['gdlib']                 = 'เลขรุ่นของ GD Library';
+$lang['fetchsize']             = 'ขนาดไฟล์ใหญ่สุด (bytes) fetch.php ที่จะดาวน์โหลดจากภายนอก';
+$lang['notify']                = 'ส่งการแจ้งเตือนไปยังที่อยู่อีเมลนี้';
+$lang['sitemap']               = 'สร้าง กูเกิ้ล ไซต์แมพ (จำนวนวัน)';
+$lang['rss_type']              = 'ชนิดของ XML feed';
+$lang['rss_linkto']            = 'ลิงก์เชื่อมโยงไปยัง XML feed';
+$lang['rss_content']           = 'ต้องการให้มีอะไรแสดงอยู่ใน XML feed บ้าง?';
+$lang['rss_update']            = 'ความถี่ในการอัพเดท XML feed (เป็นวินาที)';
+$lang['rss_show_summary']      = 'ไตเติ้ลของบทสรุปย่อของ XML feed';
+$lang['userewrite']            = 'แสดงที่อยู่เว็บ (URL) แบบอ่านเข้าใจง่าย';
+$lang['gzip_output']           = 'ใช้ gzip Content-Encoding สำหรับ xhtml';
+$lang['compress']              = 'บีบย่อ CSS และ javascript (เพื่อให้แสดงหน้าเว็บเร็วขึ้น)';
+$lang['send404']               = 'ให้แสดง "HTTP 404/Page Not Found" เมื่อไม่พบข้อมูลหน้านั้น';
+$lang['renderer__core']        = '%s (แกนหลักของ dokuwiki)';
+$lang['renderer__plugin']      = '%s (โปรแกรมเสริม - plugin)';
+$lang['proxy____host']         = 'ชื่อ server ของ proxy';
+$lang['proxy____port']         = 'port ของ proxy';
+$lang['proxy____user']         = 'user name ของ proxy';
+$lang['proxy____pass']         = 'รหัสผ่านของ proxy';
+$lang['proxy____ssl']          = 'ใช้ ssl ในการเชื่อมต่อกับ proxy';
+$lang['license_o_']            = 'ไม่ถูกเลือก';
+$lang['typography_o_0']        = 'ไม่มี';
+$lang['typography_o_1']        = 'ไม่รวมเครื่องหมายอัญประกาศเดี่ยว';
+$lang['typography_o_2']        = 'รวมเครื่องหมายอัญประกาศเดี่ยว (อาจใช้ไม่ได้ในบางครั้ง)';
+$lang['userewrite_o_0']        = 'ไม่มี';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['deaccent_o_0']          = 'ปิด';
+$lang['gdlib_o_1']             = 'Version 1.x';
+$lang['gdlib_o_2']             = 'ตรวจสอบอัตโนมัติ';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'บทคัดย่อ';
+$lang['rss_content_o_html']    = 'หน้าเนื้อหาแบบแสดง HTML เต็มรูปแบบ';
+$lang['rss_linkto_o_diff']     = 'มุมมองที่แตกต่าง';
+$lang['rss_linkto_o_rev']      = 'รายการของการปรับแก้ไข';
+$lang['rss_linkto_o_current']  = 'หน้าปัจจุบัน';
+$lang['compression_o_0']       = 'ไม่มีการบีบอัด';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'ไม่ใช้';
+$lang['xsendfile_o_2']         = 'หัวเอกสารแบบ Standard X-Sendfile';
+$lang['xsendfile_o_3']         = 'หัวเอกสารแบบ Proprietary Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'ชื่อผู้ใช้';
+$lang['showuseras_o_username'] = 'ชื่อ-นามสกุล';
+$lang['showuseras_o_email_link'] = 'อีเมลของผู้ใช้ ที่จะปรากฏ ณ mailto: link';
+$lang['useheading_o_0']        = 'ไม่เลย';
+$lang['useheading_o_navigation'] = 'เฉพาะตัวนำทาง';
+$lang['useheading_o_content']  = 'เฉพาะเนื้อหาวิกิ';
+$lang['useheading_o_1']        = 'เสมอ';
diff --git a/wiki/lib/plugins/config/lang/tr/intro.txt b/wiki/lib/plugins/config/lang/tr/intro.txt
new file mode 100644
index 0000000..2602fb3
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/tr/intro.txt
@@ -0,0 +1,7 @@
+====== Site Ayarları Yönetimi ======
+
+Bu sayfayı DokuWiki kurulumunun ayarlarını değiştirmek için kullanabilirsiniz. Ayarların ayrıntıları için [[doku>config]] sayfasını kullanınız. Bu eklenti ile ilgili daha ayrıntılı bilgi için [[doku>plugin:config]] sayfasına bakınız.
+
+Açık kırmızı renkle gösterilenler bu eklenti ile değiştirilemez. Mavi ile gösterilenler varsayılan değerlerdir. Beyaz altyazı ile gösterilenler is bu kuruluma özel değiştirilmiş ayarlardır. Mavi ve beyaz ayarlar değiştirilebilir.
+
+Değişiklik yapmanız durumunda **Kaydet** tuşuna basmayı unutmayınız. Aksi takdirde sayfayı kapattığınızda tüm ayarlar silinecektir.
diff --git a/wiki/lib/plugins/config/lang/tr/lang.php b/wiki/lib/plugins/config/lang/tr/lang.php
new file mode 100644
index 0000000..3e83d45
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/tr/lang.php
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Aydın Coşkuner <aydinweb@gmail.com>
+ * @author Cihan Kahveci <kahvecicihan@gmail.com>
+ * @author Yavuz Selim <yavuzselim@gmail.com>
+ * @author Caleb Maclennan <caleb@alerque.com>
+ * @author farukerdemoncel@gmail.com
+ * @author Mete Cuma <mcumax@gmail.com>
+ */
+$lang['menu']                  = 'Site Ayarları';
+$lang['error']                 = 'Ayarlar yanlış bir değer girildiği için güncellenemedi. Lütfen değişikliklerinizi gözden geçirin ve tekrar gönderin.
+<br />Yanlış değer(ler) kırmızı çerçeve içinde gösterilecektir.';
+$lang['updated']               = 'Ayarlar başarıyla güncellendi.';
+$lang['nochoice']              = '(başka seçim bulunmamaktadır)';
+$lang['locked']                = 'Ayar dosyası güncellenemedi. <br />
+dosya adı ve yetkilerininin doğru olduğuna emin olun.';
+$lang['danger']                = 'Tehlike: Bu özelliği değiştirirseniz, wiki\'nize ve konfigürasyon menunüze ulaşamayabilirsiniz.';
+$lang['warning']               = 'Uyarı: Bu özelliği değiştirmek istenmeyen davranışa sebep olabilir.';
+$lang['security']              = 'Güvenlik Uyarısı: Bu özelliği değiştirmek güvenlik riski çıkartabilir.';
+$lang['_configuration_manager'] = 'Site Ayarları Yönetimi';
+$lang['_header_dokuwiki']      = 'DokuWiki Ayarları';
+$lang['_header_plugin']        = 'Eklenti Ayarları';
+$lang['_header_template']      = 'Şablon (Template) Ayarları';
+$lang['_header_undefined']     = 'Tanımsız Ayarlar';
+$lang['_basic']                = 'Ana Ayarlar';
+$lang['_display']              = 'Gösterim Ayarları';
+$lang['_authentication']       = 'Onaylama Ayarları';
+$lang['_anti_spam']            = 'Spam Engelleme Ayarları';
+$lang['_editing']              = 'Sayfa Yazımı Ayarları';
+$lang['_links']                = 'Bağlantı Ayarları';
+$lang['_media']                = 'Medya Ayarları';
+$lang['_advanced']             = 'Gelişmiş Ayarlar';
+$lang['_network']              = 'Ağ Ayarları';
+$lang['_msg_setting_undefined'] = 'Ayar üstverisi yok.';
+$lang['_msg_setting_no_class'] = 'Ayar sınıfı yok.';
+$lang['_msg_setting_no_default'] = 'Varsayılan değer yok.';
+$lang['title']                 = 'Wiki başlığı';
+$lang['start']                 = 'Ana sayfa adı';
+$lang['lang']                  = 'Dil';
+$lang['template']              = 'Şablon (Template)';
+$lang['license']               = 'İçeriğinizi hangi lisans altında yayınlansın?';
+$lang['savedir']               = 'Verileri kaydetmek için kullanılacak klasör';
+$lang['basedir']               = 'Kök dizin';
+$lang['baseurl']               = 'Kök URL';
+$lang['dmode']                 = 'Klasör oluşturma yetkisi';
+$lang['fmode']                 = 'Dosya oluşturma yetkisi';
+$lang['allowdebug']            = 'Yanlış ayıklamasına izin ver <b>lazım değilse etkisiz kıl!</b>';
+$lang['recent']                = 'En son değiştirilenler';
+$lang['breadcrumbs']           = 'Ekmek kırıntıların sayısı';
+$lang['youarehere']            = 'hiyerarşik ekmek kırıntıları';
+$lang['fullpath']              = 'sayfaların tüm patikasını (full path) göster';
+$lang['typography']            = 'Tipografik değiştirmeleri yap';
+$lang['dformat']               = 'Tarih biçimi (PHP\'nin <a href="http://php.net/strftime">strftime</a> fonksiyonuna bakın)';
+$lang['signature']             = 'İmza';
+$lang['showuseras']            = 'Bir sayfayı en son düzenleyen kullanıcıya ne gösterilsin';
+$lang['toptoclevel']           = 'İçindekiler için en üst seviye';
+$lang['tocminheads']           = 'İçindekilerin oluşturulması için gereken (en az) başlık sayısı';
+$lang['maxtoclevel']           = 'İçindekiler için en fazla seviye';
+$lang['maxseclevel']           = 'Bölümün azami düzenleme düzeyi';
+$lang['camelcase']             = 'Linkler için CamelCase kullan';
+$lang['deaccent']              = 'Sayfa adlarınız temizle';
+$lang['useheading']            = 'Sayfa isimleri için ilk başlığı kullan';
+$lang['useacl']                = 'Erişim kontrol listesini kullan';
+$lang['autopasswd']            = 'Parolaları otamatikmen üret';
+$lang['authtype']              = 'Kimlik denetleme arka uç';
+$lang['passcrypt']             = 'Parola şifreleme metodu';
+$lang['defaultgroup']          = 'Varsayılan grup';
+$lang['disableactions']        = 'DokuWiki eylemlerini etkisiz kıl';
+$lang['disableactions_check']  = 'Kontrol et';
+$lang['disableactions_subscription'] = 'Abone ol/Abonelikten vazgeç';
+$lang['usewordblock']          = 'Wordlistesine göre spam engelle';
+$lang['relnofollow']           = 'Dışsal linkler rel="nofollow" kullan';
+$lang['indexdelay']            = 'Indekslemeden evvel zaman gecikmesi (saniye)';
+$lang['mailguard']             = 'Email adreslerini karart';
+$lang['iexssprotect']          = 'Yüklenmiş dosyaları muhtemel kötu niyetli JavaScript veya HTML koduna kontrol et';
+$lang['htmlok']                = 'Gömülü HTML koduna izin ver';
+$lang['phpok']                 = 'Gömülü PHP koduna izin ver';
+$lang['refcheck']              = 'Araç kaynak denetimi';
+$lang['gdlib']                 = 'GD Lib sürümü';
+$lang['jpg_quality']           = 'JPG sıkıştırma kalitesi [0-100]';
+$lang['mailfrom']              = 'Otomatik e-postalar için kullanılacak e-posta adresi';
+$lang['sitemap']               = 'Google site haritası oluştur (gün)';
+$lang['rss_content']           = 'XML beslemesinde ne gösterilsin?';
+$lang['rss_update']            = 'XML beslemesini güncelleme aralığı';
+$lang['rss_show_summary']      = 'XML beslemesinde özeti başlıkta göster';
+$lang['canonical']             = 'Tamolarak kurallara uygun URL\'leri kullan';
+$lang['renderer__core']        = '%s (dokuwiki çekirdeği)';
+$lang['renderer__plugin']      = '%s (eklenti)';
+$lang['proxy____host']         = 'Proxy sunucu adı';
+$lang['proxy____user']         = 'Proxy kullanıcı adı';
+$lang['proxy____pass']         = 'Proxy şifresi';
+$lang['proxy____ssl']          = 'Proxy ile bağlanırken ssl kullan';
+$lang['safemodehack']          = 'Safemod hackını etkili kıl';
+$lang['ftp____host']           = 'Safemod hackı için kullanılacak FTP suncusu';
+$lang['ftp____user']           = 'Safemod hackı için kullanılacak FTP kullanıcı adı';
+$lang['ftp____pass']           = 'Safemod hackı için kullanılacak FTP parolası';
+$lang['license_o_']            = 'Seçilmedi';
+$lang['typography_o_0']        = 'Yok';
+$lang['userewrite_o_0']        = 'hiçbiri';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki dahili';
+$lang['deaccent_o_0']          = 'Kapalı';
+$lang['deaccent_o_1']          = 'aksan işaretlerini kaldır';
+$lang['deaccent_o_2']          = 'roman harfleri kullan';
+$lang['gdlib_o_0']             = 'GD Lib mevcut değil';
+$lang['gdlib_o_1']             = 'Versiyon 1.x';
+$lang['gdlib_o_2']             = 'Otomatik tesbit';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Soyut';
+$lang['rss_content_o_diff']    = 'Birleştirilmiş Diff';
+$lang['rss_content_o_htmldiff'] = 'HTML biçimlendirilmiş diff tablosu';
+$lang['rss_content_o_html']    = 'Tüm HTML sayfa içeriği';
+$lang['rss_linkto_o_diff']     = 'görünümü değiştir';
+$lang['rss_linkto_o_page']     = 'gözden geçirilmiş sayfa';
+$lang['rss_linkto_o_rev']      = 'sürümlerin listesi';
+$lang['rss_linkto_o_current']  = 'Șu anki sayfa';
+$lang['compression_o_0']       = 'hiçbiri';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'kullanma';
+$lang['showuseras_o_loginname'] = 'Kullanıcı adı';
+$lang['showuseras_o_username'] = 'Kullanıcının tam adı';
+$lang['showuseras_o_email']    = 'Kullanıcının mail adresi (mailguard ayarlarına göre karartılıyor)';
+$lang['showuseras_o_email_link'] = 'Kullanıcının mail adresi mailto: linki şeklinde';
+$lang['useheading_o_0']        = 'Hiçbir zaman';
+$lang['useheading_o_navigation'] = 'Sadece Navigasyon';
+$lang['useheading_o_content']  = 'Sadece Wiki içeriği';
+$lang['useheading_o_1']        = 'Her zaman';
diff --git a/wiki/lib/plugins/config/lang/uk/intro.txt b/wiki/lib/plugins/config/lang/uk/intro.txt
new file mode 100644
index 0000000..87abe1b
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/uk/intro.txt
@@ -0,0 +1,7 @@
+====== Налаштування Вікі ======
+
+Використовуйте цю сторінку для налаштування ДокуВікі. Для довідок щодо конкретних параметрів дивіться [[doku>config]]. Для більш детальної інформації про цей доданок дивіться [[doku>plugin:config]].
+
+Параметри, що виділені червоним кольором тла захищені та не можуть бути змінені за допомогою цього доданка. Параметри, з синім кольором тла мають значення по замовчуванню, а параметри з білим тлом були встановлені для цієї локальної інсталяції. Сині та білі параметри можуть бути змінені.
+
+Не забувайте натискати кнопку **ЗБЕРЕГТИ** до того, як покинути цю сторінку, інакше всі зміни буде втрачено.
diff --git a/wiki/lib/plugins/config/lang/uk/lang.php b/wiki/lib/plugins/config/lang/uk/lang.php
new file mode 100644
index 0000000..d8b1d5b
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/uk/lang.php
@@ -0,0 +1,189 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oleksii <alexey.furashev@gmail.com>
+ * @author Vitaly <vitaly.balashov@smuzzy.com.ua>
+ * @author Oleksiy Voronin <ovoronin@gmail.com>
+ * @author serg_stetsuk <serg_stetsuk@ukr.net>
+ * @author Oleksandr Kunytsia <okunia@gmail.com>
+ * @author Maksim <nikropol@yandex.ru>
+ * @author Nina Zolotova <nina-z@i.ua>
+ * @author Roman <vsmemorial@gmail.com>
+ */
+$lang['menu']                  = 'Налаштування Вікі';
+$lang['error']                 = 'Параметри не збережено через помилкові значення. Будь ласка, перегляньте ваші зміни та спробуйте ще раз
+<br />Помилкові значення будуть виділені червоною рамкою.';
+$lang['updated']               = 'Параметри успішно збережено.';
+$lang['nochoice']              = '(інших варіантів не існує)';
+$lang['locked']                = 'Неможливо записати файл налаштувань. Переконайтеся, <br />
+що ім\'я та права доступу для локального файлу вказано правильно.';
+$lang['danger']                = 'УВАГА! Зміна цього параметру може призвести до недоступності вашої Вікі та меню конфігурації.';
+$lang['warning']               = 'УВАГА! Зміна цього параметру може призвести до непередбачуваних наслідків.';
+$lang['security']              = 'УВАГА! Зміна цього параметру може призвести до послаблення безпеки вашої Вікі.';
+$lang['_configuration_manager'] = 'Управління конфігурацією';
+$lang['_header_dokuwiki']      = 'Налаштування ДокуВікі';
+$lang['_header_plugin']        = 'Налаштування Доданків';
+$lang['_header_template']      = 'Налаштування шаблонів';
+$lang['_header_undefined']     = 'Невизначені налаштування';
+$lang['_basic']                = 'Базові налаштування';
+$lang['_display']              = 'Налаштування відображення';
+$lang['_authentication']       = 'Налаштування автентифікації';
+$lang['_anti_spam']            = 'Налаштування Анти-спаму';
+$lang['_editing']              = 'Налаштування редагування';
+$lang['_links']                = 'Налаштування посилань';
+$lang['_media']                = 'Налаштування медіа';
+$lang['_notifications']        = 'Налаштування сповіщень';
+$lang['_advanced']             = 'Розширені налаштування';
+$lang['_network']              = 'Налаштування мережі';
+$lang['_msg_setting_undefined'] = 'Немає метаданих параметру.';
+$lang['_msg_setting_no_class'] = 'Немає класу параметру.';
+$lang['_msg_setting_no_default'] = 'Немає значення за замовчуванням.';
+$lang['title']                 = 'Назва Вікі';
+$lang['start']                 = 'Назва стартової сторінки';
+$lang['lang']                  = 'Мова';
+$lang['template']              = 'Шаблон';
+$lang['license']               = 'Під якою ліцензією слід публікувати вміст?';
+$lang['savedir']               = 'Папка для збереження даних';
+$lang['basedir']               = 'Коренева папка';
+$lang['baseurl']               = 'Кореневий URL';
+$lang['dmode']                 = 'Права для створених папок';
+$lang['fmode']                 = 'Права для створених файлів';
+$lang['allowdebug']            = 'Дозволити відлагодження <b>вимкніть, якщо не потрібно!</b>';
+$lang['recent']                = 'Останні зміни';
+$lang['recent_days']           = 'Скільки останніх змін пам\'ятати (дні)';
+$lang['breadcrumbs']           = 'Ви відвідали (кількість сторінок, що показується)';
+$lang['youarehere']            = 'Показувати "Ви тут"';
+$lang['fullpath']              = 'Повний шлях до документу';
+$lang['typography']            = 'Замінювати типографські символи';
+$lang['dformat']               = 'Формат дати (дивіться функцію <a href="http://php.net/strftime">strftime</a> PHP)';
+$lang['signature']             = 'Підпис';
+$lang['showuseras']            = 'Що вказувати при відображенні користувача, який востаннє редагував сторінку';
+$lang['toptoclevel']           = 'Мінімальний рівень для змісту';
+$lang['tocminheads']           = 'Мінімальна кількість заголовків, необхідна для створення таблиці змісту';
+$lang['maxtoclevel']           = 'Максимальний рівень для таблиці змісту';
+$lang['maxseclevel']           = 'Максимальний рівень секції для редагування';
+$lang['camelcase']             = 'Використовувати CamelCase';
+$lang['deaccent']              = 'Транслітерація в іменах сторінок';
+$lang['useheading']            = 'Першій заголовок замість імені';
+$lang['sneaky_index']          = 'За замовчуванням, ДокуВікі показує всі простори імен в змісті. Активація цієї опції сховає ті простори, де користувач не має прав на читання. Результатом може бути неможливість доступу до певних відкритих просторів імен. Це зробить неможливим використання змісту при певних конфігураціях.';
+$lang['hidepages']             = 'Ховати сторінки (regular expressions)';
+$lang['useacl']                = 'Використовувати ACL';
+$lang['autopasswd']            = 'Автоматичне створення паролів';
+$lang['authtype']              = 'Аутентифікація';
+$lang['passcrypt']             = 'Метод шифрування паролів';
+$lang['defaultgroup']          = 'Група за замовчуванням';
+$lang['superuser']             = 'Суперкористувач';
+$lang['manager']               = 'Менеджер - група, користувач чи розділений комами список user1,@group1,user2 з правами до певних функцій керування';
+$lang['profileconfirm']        = 'Підтверджувати зміни профілю паролем';
+$lang['rememberme']            = 'Дозволити постійні файли cookies для входу (Запам\'ятати мене)';
+$lang['disableactions']        = 'Заборонити дії ДокуВікі';
+$lang['disableactions_check']  = 'Перевірити';
+$lang['disableactions_subscription'] = 'Підписатись/Відписатись';
+$lang['disableactions_wikicode'] = 'Переглянути код/Експорт';
+$lang['disableactions_other']  = 'Інші дії (розділені комами)';
+$lang['auth_security_timeout'] = 'Таймаут аутентифікації (в секундах)';
+$lang['securecookie']          = 'Чи повинен браузер надсилати файли cookies тільки через HTTPS? Вимкніть цей параметр, лише тоді, якщо вхід до Вікі захищено SSL, але перегляд сторінок відбувається у незахищеному режимі.';
+$lang['usewordblock']          = 'Блокувати спам по списку слів';
+$lang['relnofollow']           = 'Використовувати rel="nofollow"';
+$lang['indexdelay']            = 'Затримка перед індексацією';
+$lang['mailguard']             = 'Кодувати адреси e-mail';
+$lang['iexssprotect']          = 'Перевірте оновлені файли на можливі заборонені Javascript чи HTML коди';
+$lang['usedraft']              = 'Автоматично зберігати чернетку при редагуванні';
+$lang['htmlok']                = 'Дозволити HTML';
+$lang['phpok']                 = 'Дозволити PHP';
+$lang['locktime']              = 'Час блокування (сек)';
+$lang['cachetime']             = 'Максимальний вік кешу (сек)';
+$lang['target____wiki']        = 'Target для внутрішніх посилань';
+$lang['target____interwiki']   = 'Target для інтерВікі-посилань';
+$lang['target____extern']      = 'Target для зовнішніх посилань';
+$lang['target____media']       = 'Target для медіа-посилань';
+$lang['target____windows']     = 'Target для посилань на мережеві папки';
+$lang['refcheck']              = 'Перевіряти посилання на медіа-файлі';
+$lang['gdlib']                 = 'Версія GD Lib';
+$lang['im_convert']            = 'Шлях до ImageMagick';
+$lang['jpg_quality']           = 'Якість компресії JPG (0-100)';
+$lang['fetchsize']             = 'Максимальний розмір (в байтах), що fetch.php може завантажувати з зовні';
+$lang['subscribers']           = 'Підписка на зміни';
+$lang['subscribe_time']        = 'Час, після якого список підписки та дайджести будуть надіслані (сек.); Має бути меншим за час, вказаний у перемінній recent_days';
+$lang['notify']                = 'E-mail для сповіщень';
+$lang['registernotify']        = 'Надсилати інформацію про нових користувачів на цю адресу';
+$lang['mailfrom']              = 'E-mail для автоматичних повідомлень';
+$lang['mailprefix']            = 'Префікс теми повідомлення, що використовується в автоматичній розсилці електронних листів';
+$lang['sitemap']               = 'Створювати мапу сайту для Google (дні)';
+$lang['rss_type']              = 'тип RSS';
+$lang['rss_linkto']            = 'посилання в RSS';
+$lang['rss_content']           = 'Що відображати в пунктах XML-feed';
+$lang['rss_update']            = 'Інтервал оновлення RSS (сек)';
+$lang['rss_show_summary']      = 'Показувати підсумки змін в заголовку XML-feed';
+$lang['updatecheck']           = 'Перевірити наявність оновлень чи попереджень безпеки? Для цього ДокуВікі необхідно зв\'язатися зі update.dokuwiki.org.';
+$lang['userewrite']            = 'Красиві URL';
+$lang['useslash']              = 'Слеш, як розділювач просторів імен в URL';
+$lang['sepchar']               = 'Розділювач слів у імені сторінки';
+$lang['canonical']             = 'Канонічні URL';
+$lang['fnencode']              = 'Метод для кодування імен файлів, що містять не ASCII символи.';
+$lang['autoplural']            = 'Перевіряти множину у посиланнях';
+$lang['compression']           = 'Метод стиснення attic файлів';
+$lang['gzip_output']           = 'Використовувати gzip, як Content-Encoding для xhtml';
+$lang['compress']              = 'Стискати файли CSS та javascript';
+$lang['send404']               = 'Надсилати "HTTP 404/Сторінка не знайдена " для неіснуючих сторінок';
+$lang['broken_iua']            = 'У вашій системі зіпсована функція ignore_user_abort? Це може зіпсувати пошукову систему. IIS+PHP/CGI не працює. Дивіться <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> для отримання додаткової інформації';
+$lang['xsendfile']             = 'Використовувати заголовок X-Sendfile для доставки статичних файлів веб сервером? Ваш веб сервер повинен підтримувати цю функцію.';
+$lang['renderer_xhtml']        = 'Транслятор (Renderer) для основного виводу wiki (xhtml)';
+$lang['renderer__core']        = '%s (ядро докуВікі)';
+$lang['renderer__plugin']      = '%s (доданок)';
+$lang['proxy____host']         = 'Адреса Proxy';
+$lang['proxy____port']         = 'Порт Proxy';
+$lang['proxy____user']         = 'Користувач Proxy';
+$lang['proxy____pass']         = 'Пароль Proxy';
+$lang['proxy____ssl']          = 'Використовувати ssl для з\'єднання з Proxy';
+$lang['proxy____except']       = 'Регулярний вираз для веб-адреси, яку проксі-сервер пропустить.';
+$lang['safemodehack']          = 'Увімкнути хак safemode';
+$lang['ftp____host']           = 'FTP-сервер для хаку safemode';
+$lang['ftp____port']           = 'FTP-порт для хаку safemode';
+$lang['ftp____user']           = 'Користувач FTP для хаку safemode';
+$lang['ftp____pass']           = 'Пароль FTP для хаку safemode';
+$lang['ftp____root']           = 'Коренева папка FTP для хаку safemode';
+$lang['license_o_']            = 'не вибрано';
+$lang['typography_o_0']        = 'жодного';
+$lang['typography_o_1']        = 'Лише подвійні лапки';
+$lang['typography_o_2']        = 'Всі лапки (може не завжди працювати)';
+$lang['userewrite_o_0']        = 'немає';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'Засобами ДокуВікі';
+$lang['deaccent_o_0']          = 'вимкнено';
+$lang['deaccent_o_1']          = 'вилучати діакритичні знаки';
+$lang['deaccent_o_2']          = 'транслітерація';
+$lang['gdlib_o_0']             = 'GD Lib не доступна';
+$lang['gdlib_o_1']             = 'Версія 1.x';
+$lang['gdlib_o_2']             = 'Автовизначення';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = 'Короткий зміст';
+$lang['rss_content_o_diff']    = 'Уніфіковані зміни (diff)';
+$lang['rss_content_o_htmldiff'] = 'Таблиця змін у форматі HTML';
+$lang['rss_content_o_html']    = 'Повний зміст сторінки HTML';
+$lang['rss_linkto_o_diff']     = 'перегляд відмінностей';
+$lang['rss_linkto_o_page']     = 'текст сторінки';
+$lang['rss_linkto_o_rev']      = 'перелік ревізій';
+$lang['rss_linkto_o_current']  = 'поточна сторінка';
+$lang['compression_o_0']       = 'немає';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = 'не використовувати';
+$lang['xsendfile_o_1']         = 'Фірмовий заголовок lighthttpd (до версії 1.5)';
+$lang['xsendfile_o_2']         = 'Стандартний X-Sendfile заголовок';
+$lang['xsendfile_o_3']         = 'Фірмовий заголовок Nginx X-Accel-Redirect';
+$lang['showuseras_o_loginname'] = 'Логін';
+$lang['showuseras_o_username'] = 'Повне ім’я користувача';
+$lang['showuseras_o_email']    = 'E-mail користувача (прихована відповідно до налаштувань)';
+$lang['showuseras_o_email_link'] = 'E-mail користувача як посилання mailto:';
+$lang['useheading_o_0']        = 'Ніколи';
+$lang['useheading_o_navigation'] = 'Лише для навігації';
+$lang['useheading_o_content']  = 'Лише у змісті';
+$lang['useheading_o_1']        = 'Завжди';
+$lang['readdircache']          = 'Максимальний вік для файлів кешу (сек.)';
diff --git a/wiki/lib/plugins/config/lang/zh-tw/intro.txt b/wiki/lib/plugins/config/lang/zh-tw/intro.txt
new file mode 100644
index 0000000..e131ec3
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/zh-tw/intro.txt
@@ -0,0 +1,7 @@
+====== 設定管理器 ======
+
+使用本頁控制您的 Dokuwiki 設定。您可以參閱 [[doku>config]],查看每個獨立設定的相關訊息。要知道更多設定管理器的資訊,請瀏覽 [[doku>plugin:config]]。
+
+淡紅色背景的項目是受到保護的,不能通過這管理器更改。藍色背景的項目是系統的預設值,白色背景的項目是您更改過的。藍色和白色的設定項目都可以更改。
+
+離開本頁之前,不要忘記點擊最下面的 **儲存** 按鈕,否則您的修改不會生效。
diff --git a/wiki/lib/plugins/config/lang/zh-tw/lang.php b/wiki/lib/plugins/config/lang/zh-tw/lang.php
new file mode 100644
index 0000000..6723fe4
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/zh-tw/lang.php
@@ -0,0 +1,201 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Li-Jiun Huang <ljhuang.tw@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-simptrad.html
+ * @author Wayne San <waynesan@zerozone.tw>
+ * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
+ * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author syaoranhinata@gmail.com
+ * @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ * @author Liou, Jhe-Yu <lioujheyu@gmail.com>
+ */
+$lang['menu']                  = '系統設定';
+$lang['error']                 = '因為含有不合規格的設定值,故未能更新設定。請檢查您的更改並重新送出。
+<br />不正確的設定值,會以紅色方框包住。';
+$lang['updated']               = '設定已更新。';
+$lang['nochoice']              = '(無其他可用選項)';
+$lang['locked']                = '設定檔無法更新,若非故意,請確認本地檔名及權限正確。';
+$lang['danger']                = '危險:改變此選項,可能使您無法存取本 wiki 及設定選單。';
+$lang['warning']               = '警告:改變此選項可能導致不可預期的行為。';
+$lang['security']              = '安全性警告:改變此選項可能造成安全風險。';
+$lang['_configuration_manager'] = '設定管理器';
+$lang['_header_dokuwiki']      = 'DokuWiki 設定';
+$lang['_header_plugin']        = '附加元件設定';
+$lang['_header_template']      = '樣板設定';
+$lang['_header_undefined']     = '未定義設定';
+$lang['_basic']                = '基本設定';
+$lang['_display']              = '顯示設定';
+$lang['_authentication']       = '認證設定';
+$lang['_anti_spam']            = '反垃圾設定';
+$lang['_editing']              = '編輯設定';
+$lang['_links']                = '連結設定';
+$lang['_media']                = '媒體設定';
+$lang['_notifications']        = '提醒設定';
+$lang['_syndication']          = '聚合設定';
+$lang['_advanced']             = '進階設定';
+$lang['_network']              = '網路設定';
+$lang['_msg_setting_undefined'] = '設定的後設數據不存在。';
+$lang['_msg_setting_no_class'] = '設定的分類不存在。';
+$lang['_msg_setting_no_default'] = '無預設值';
+$lang['title']                 = '本 wiki 的標題';
+$lang['start']                 = '開始頁面的名稱';
+$lang['lang']                  = '語系';
+$lang['template']              = '樣板';
+$lang['tagline']               = '副標題 (若樣板支援此功能)';
+$lang['sidebar']               = '側欄的頁面名稱 (若樣板支援此功能) 。若把它留空,則會停用側欄';
+$lang['license']               = '您希望您的內容採用哪種授權方式?';
+$lang['savedir']               = '儲存資料的目錄';
+$lang['basedir']               = '根目錄';
+$lang['baseurl']               = '根路徑 (URL)';
+$lang['cookiedir']             = 'Cookie 路徑。設定空白則使用 baseurl。';
+$lang['dmode']                 = '目錄建立模式';
+$lang['fmode']                 = '檔案建立模式';
+$lang['allowdebug']            = '允許除錯 <b>(不需要請停用!)</b>';
+$lang['recent']                = '最近更新';
+$lang['recent_days']           = '儲存多少天內的變更';
+$lang['breadcrumbs']           = '導覽路徑數量。輸入0表示停用。';
+$lang['youarehere']            = '顯示階層式導覽路徑 (若要用此功能,建議停用上方的選項)';
+$lang['fullpath']              = '顯示完整的路徑於頁面底部';
+$lang['typography']            = '進行字元替換';
+$lang['dformat']               = '日期格式 (參見 PHP 的 <a href="http://php.net/strftime">strftime</a> 函數)';
+$lang['signature']             = '簽名';
+$lang['showuseras']            = '將最後編輯頁面的使用者顯示為:';
+$lang['toptoclevel']           = '目錄表的最上層級';
+$lang['tocminheads']           = '決定是否建立目錄表的最少標題數量';
+$lang['maxtoclevel']           = '目錄表顯示的最大層級';
+$lang['maxseclevel']           = '可編輯段落的最大層級';
+$lang['camelcase']             = '對連結使用 CamelCase';
+$lang['deaccent']              = '清理頁面名稱';
+$lang['useheading']            = '使用第一個標題作頁面名稱';
+$lang['sneaky_index']          = '預設情況下,DokuWiki 會在索引頁會顯示所有分類名稱。啟用此選項,會隱藏使用者沒有閱讀權限的頁面,但也可能將他可以閱讀的子頁面一併隱藏。在特定 ACL 設定下,這可能導致索引無法使用。';
+$lang['hidepages']             = '隱藏匹配的界面 (正規式)';
+$lang['useacl']                = '使用存取控制名單';
+$lang['autopasswd']            = '自動產生密碼';
+$lang['authtype']              = '認證後台管理方式';
+$lang['passcrypt']             = '密碼加密方式';
+$lang['defaultgroup']          = '預設群組';
+$lang['superuser']             = '超級使用者 —— 不論 ACL 如何設定,都能訪問所有頁面與功能的群組或使用者';
+$lang['manager']               = '管理員 —— 能訪問相應管理功能的群組或使用者';
+$lang['profileconfirm']        = '修改個人資料時需要確認密碼';
+$lang['rememberme']            = '允許自動登入 (記住我)';
+$lang['disableactions']        = '停用的 DokuWiki 動作';
+$lang['disableactions_check']  = '檢查';
+$lang['disableactions_subscription'] = '訂閱/取消訂閱';
+$lang['disableactions_wikicode'] = '檢視原始碼/匯出原始檔';
+$lang['disableactions_other']  = '其他功能 (逗號分隔)';
+$lang['auth_security_timeout'] = '安全認證的計時 (秒)';
+$lang['securecookie']          = 'HTTPS 頁面設定的 cookie 是否只能由瀏覽器經 HTTPS 傳送?取消此選項後,只有登入本 wiki 才會受 SSL 保護,瀏覽時則不受保護。';
+$lang['remote']                = '啟用遠程 API 系统。這允許其他程式經 XML-RPC 或其他機制來訪問本 wiki 。';
+$lang['remoteuser']            = '將遠程 API 的訪問權限,限制在指定的群組或使用者中。以逗號分隔群組或使用者。留空表示允許任何人訪問。';
+$lang['usewordblock']          = '根據字詞表阻擋垃圾訊息';
+$lang['relnofollow']           = '外部連結使用 rel="nofollow"';
+$lang['indexdelay']            = '建立索引前的延遲時間 (秒)';
+$lang['mailguard']             = '自動弄亂使用者的電郵地址,以作保護';
+$lang['iexssprotect']          = '檢查上傳的檔案中是否隱含惡意的 JavaScript 或 HTML 碼';
+$lang['usedraft']              = '編輯時自動儲存草稿';
+$lang['htmlok']                = '允許嵌入式 HTML';
+$lang['phpok']                 = '允許嵌入式 PHP';
+$lang['locktime']              = '檔案的最大鎖定時間 (秒)';
+$lang['cachetime']             = '緩存的最大存在時間 (秒)';
+$lang['target____wiki']        = '內部連結的目標視窗';
+$lang['target____interwiki']   = 'Wiki間互連的目標視窗';
+$lang['target____extern']      = '外部連結的目標視窗';
+$lang['target____media']       = '媒體連結的目標視窗';
+$lang['target____windows']     = 'Windows 連結的目標視窗';
+$lang['mediarevisions']        = '啟用媒體修訂歷史嗎?';
+$lang['refcheck']              = '媒體連結檢查';
+$lang['gdlib']                 = 'GD Lib 版本';
+$lang['im_convert']            = 'ImageMagick 的轉換工具路徑';
+$lang['jpg_quality']           = 'JPG 壓縮品質(0-100)';
+$lang['fetchsize']             = 'fetch.php 可以從外部下載的最大檔案尺寸 (bytes)';
+$lang['subscribers']           = '啟用頁面訂閱';
+$lang['subscribe_time']        = '訂閱列表和摘要發送的時間間隔 (秒);這個值應該小於指定的最近更改保留時間 (recent_days)。';
+$lang['notify']                = '寄送變更通知信到這個電郵地址';
+$lang['registernotify']        = '寄送新使用者註冊資訊到這個電郵地址';
+$lang['mailfrom']              = '自動發送郵件時使用的郵件地址';
+$lang['mailprefix']            = '自動發送郵件時使用的標題前綴';
+$lang['htmlmail']              = '發送更加美觀,但體積會更大的 HTML 多部份電郵。若停用它,表示只發送純文字電郵。';
+$lang['sitemap']               = '產生 Google 網站地圖 (以多少天計算) 。輸入0表示停用';
+$lang['rss_type']              = 'XML feed 類型';
+$lang['rss_linkto']            = 'XML feed 連結到';
+$lang['rss_content']           = 'XML feed 項目中顯示什麼呢?';
+$lang['rss_update']            = 'XML feed 更新間隔時間 (秒)';
+$lang['rss_show_summary']      = '於標題中顯示簡要的 XML feed';
+$lang['rss_media']             = '在 XML feed 中應列出哪些變更?';
+$lang['updatecheck']           = '檢查更新與安全性警告?DokuWiki 需要聯繫 update.dokuwiki.org 才能使用此功能。';
+$lang['userewrite']            = '使用好看的 URL';
+$lang['useslash']              = '在 URL 中使用斜線作分類名稱的分隔字元';
+$lang['sepchar']               = '頁面名稱中單字的分隔字元';
+$lang['canonical']             = '使用最典型的 URL';
+$lang['fnencode']              = '非 ASCII 文件名稱的編輯方法。';
+$lang['autoplural']            = '檢查複數形式的連結 (英文)';
+$lang['compression']           = 'attic 文件的壓縮方式';
+$lang['gzip_output']           = '對 xhtml 使用 gzip 內容編碼';
+$lang['compress']              = '壓縮 CSS 與 JavaScript 的輸出';
+$lang['cssdatauri']            = '假如 CSS 中所引用的圖片小於該數字大小(bytes),圖片將被直接嵌入 CSS 中,以減少 HTTP Request 的發送。 推薦把此數值設定成 <code>400</code> 至 <code>600</code> bytes 之間。若輸入 <code>0</code> 則停用此功能。';
+$lang['send404']               = '存取不存在的頁面時送出 "HTTP 404/Page Not Found"';
+$lang['broken_iua']            = 'ignore_user_abort 功能失效了?這有可能導致搜索索引不可用。IIS+PHP/CGI 已損壞。請參閱 <a href=\"http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> 獲取更多訊息。';
+$lang['xsendfile']             = '使用 X-Sendfile 頭讓網頁伺服器發送狀態文件?您的網頁伺服器需要支持該功能。';
+$lang['renderer_xhtml']        = '主要 wiki 輸出 (xhtml) 的渲染器';
+$lang['renderer__core']        = '%s (dokuwiki 核心)';
+$lang['renderer__plugin']      = '%s (附加元件)';
+$lang['dnslookups']            = 'Dokuwiki 將查詢使用者編輯頁面的遠程 IP 位址主機名稱。若您的 DNS 伺服器速度較慢、失效,或者您不想要此功能,请停用此選項';
+$lang['proxy____host']         = 'Proxy 伺服器名稱';
+$lang['proxy____port']         = 'Proxy 連接埠';
+$lang['proxy____user']         = 'Proxy 使用者名稱';
+$lang['proxy____pass']         = 'Proxy 密碼';
+$lang['proxy____ssl']          = '使用 SSL 連接到 Proxy';
+$lang['proxy____except']       = '比對 proxy 代理時應跳過的地址的正規式。';
+$lang['safemodehack']          = '啟用 Safemode Hack';
+$lang['ftp____host']           = 'Safemode Hack 的 FTP 伺服器';
+$lang['ftp____port']           = 'Safemode Hack 的 FTP 端口';
+$lang['ftp____user']           = 'Safemode Hack 的 FTP 帳戶';
+$lang['ftp____pass']           = 'Safemode Hack 的 FTP 密碼';
+$lang['ftp____root']           = 'Safemode Hack 的 FTP 根路徑';
+$lang['license_o_']            = '未選擇';
+$lang['typography_o_0']        = '無';
+$lang['typography_o_1']        = '只限雙引號';
+$lang['typography_o_2']        = '包括單引號 (未必能運作)';
+$lang['userewrite_o_0']        = '無';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki 內部控制';
+$lang['deaccent_o_0']          = '關閉';
+$lang['deaccent_o_1']          = '移除重音符號';
+$lang['deaccent_o_2']          = '羅馬字母轉寫';
+$lang['gdlib_o_0']             = 'GD Lib 無法使用';
+$lang['gdlib_o_1']             = '版本 1.x';
+$lang['gdlib_o_2']             = '自動偵測';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = '摘要';
+$lang['rss_content_o_diff']    = '統一的差異';
+$lang['rss_content_o_htmldiff'] = 'HTML 格式的差異對照表';
+$lang['rss_content_o_html']    = '完整的 HTML 頁面內容';
+$lang['rss_linkto_o_diff']     = '差異檢視';
+$lang['rss_linkto_o_page']     = '已修訂的頁面';
+$lang['rss_linkto_o_rev']      = '版本清單';
+$lang['rss_linkto_o_current']  = '目前頁面';
+$lang['compression_o_0']       = '無';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = '不使用';
+$lang['xsendfile_o_1']         = '專有 lighttpd 標頭 (1.5 發佈前)';
+$lang['xsendfile_o_2']         = '標準 X-Sendfile 標頭';
+$lang['xsendfile_o_3']         = '專有 Nginx X-Accel-Redirect 標頭';
+$lang['showuseras_o_loginname'] = '登入名稱';
+$lang['showuseras_o_username'] = '完整姓名';
+$lang['showuseras_o_email']    = '使用者的電郵地址 (根據郵件監控設定混淆化)';
+$lang['showuseras_o_email_link'] = '使用者的電郵地址標示成 mailto: 連結';
+$lang['useheading_o_0']        = '永不';
+$lang['useheading_o_navigation'] = '僅導覽';
+$lang['useheading_o_content']  = '僅本 wiki 內容';
+$lang['useheading_o_1']        = '總是';
+$lang['readdircache']          = 'readdir 緩存的最大存在時間 (秒)';
diff --git a/wiki/lib/plugins/config/lang/zh/intro.txt b/wiki/lib/plugins/config/lang/zh/intro.txt
new file mode 100644
index 0000000..43aa0a9
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/zh/intro.txt
@@ -0,0 +1,7 @@
+====== 配置管理器 ======
+
+使用本页中的内容来控制您的 DokuWiki 设置。  每个单独设置的相关信息请参阅 [[doku>config]]。 配置管理器的更多信息请参阅 [[doku>plugin:config]]。
+
+淡红色背景的项目被保护,不能通过这个管理器更改。 蓝色背景的项目是系统的默认值,白色背景的项目是您作出更改的项目。蓝色和白色的设置项目都可以更改。
+
+离开本页之前不要忘记点击最后的 **保存** 按钮,否则您做的修改不会生效。
diff --git a/wiki/lib/plugins/config/lang/zh/lang.php b/wiki/lib/plugins/config/lang/zh/lang.php
new file mode 100644
index 0000000..6da00ee
--- /dev/null
+++ b/wiki/lib/plugins/config/lang/zh/lang.php
@@ -0,0 +1,221 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lempel <riverlempel@hotmail.com>
+ * @author ZDYX <zhangduyixiong@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-tradsimp.html
+ * @author Simon zhan <simonzhan@21cn.com>
+ * @author ben <ben@livetom.com>
+ * @author lainme <lainme993@gmail.com>
+ * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author Garfield <garfield_550@outlook.com>
+ * @author JellyChen <451453325@qq.com>
+ * @author tai <tai_tang@126.com>
+ * @author 高博 <bobnemo1983@gmail.com>
+ * @author hznupeter <qiujiongtao@163.com>
+ * @author kuma <kuma000@qq.com>
+ * @author phy25 <git@phy25.com>
+ */
+$lang['menu']                  = '配置设置';
+$lang['error']                 = '由于非法参数,设置没有更新。请检查您做的改动并重新提交。
+                       <br />非法参数会用红框包围显示。';
+$lang['updated']               = '设置更新成功。';
+$lang['nochoice']              = '(没有其他可用选项)';
+$lang['locked']                = '设置文件无法更新。如果这是您没有意料到的,<br />
+                       请确保本地设置文件的名称和权限设置正确。';
+$lang['danger']                = '危险:更改这个选项可能会使用你的Wiki页面和配置菜单无法进入。';
+$lang['warning']               = '注意:更改这个选项可能会造成未知结果。';
+$lang['security']              = '安全提示:更改这个选项可能会有安全隐患。';
+$lang['_configuration_manager'] = '配置管理器';
+$lang['_header_dokuwiki']      = 'DokuWiki 设置';
+$lang['_header_plugin']        = '插件设置';
+$lang['_header_template']      = '模板设置';
+$lang['_header_undefined']     = '其他设置';
+$lang['_basic']                = '基本设置';
+$lang['_display']              = '显示设置';
+$lang['_authentication']       = '认证设置';
+$lang['_anti_spam']            = '反垃圾邮件/评论设置';
+$lang['_editing']              = '编辑设置';
+$lang['_links']                = '链接设置';
+$lang['_media']                = '媒体设置';
+$lang['_notifications']        = '通知设置';
+$lang['_syndication']          = '聚合设置';
+$lang['_advanced']             = '高级设置';
+$lang['_network']              = '网络设置';
+$lang['_msg_setting_undefined'] = '设置的元数据不存在。';
+$lang['_msg_setting_no_class'] = '设置的分类不存在。';
+$lang['_msg_setting_no_default'] = '设置的默认值不存在。';
+$lang['title']                 = '维基站点的标题';
+$lang['start']                 = '开始页面的名称';
+$lang['lang']                  = '语言';
+$lang['template']              = '模版';
+$lang['tagline']               = '副标题 (如果模板支持此功能)';
+$lang['sidebar']               = '侧边栏的页面名称 (如果模板支持此功能),留空以禁用侧边栏';
+$lang['license']               = '您愿意让你贡献的内容在何种许可方式下发布?';
+$lang['savedir']               = '保存数据的目录';
+$lang['basedir']               = '根目录';
+$lang['baseurl']               = '根路径(URL)';
+$lang['cookiedir']             = 'Cookie 路径。留空以使用 baseurl。';
+$lang['dmode']                 = '文件夹的创建模式';
+$lang['fmode']                 = '文件的创建模式';
+$lang['allowdebug']            = '允许调试 <b>如果您不需要调试,请勿勾选!</b>';
+$lang['recent']                = '最近更新';
+$lang['recent_days']           = '保留多少天的最近更改(天)';
+$lang['breadcrumbs']           = '显示“足迹”的数量';
+$lang['youarehere']            = '显示“您在这里”';
+$lang['fullpath']              = '在页面底部显示完整路径';
+$lang['typography']            = '进行字符替换';
+$lang['dformat']               = '日期格式(参见 PHP 的 <a href="http://php.net/strftime">strftime</a> 功能)';
+$lang['signature']             = '签名样式';
+$lang['showuseras']            = '显示用户为';
+$lang['toptoclevel']           = '目录的最顶层';
+$lang['tocminheads']           = '头条数目的最小数目,这将用于决定是否创建目录列表(TOC)';
+$lang['maxtoclevel']           = '目录的最多层次';
+$lang['maxseclevel']           = '段落编辑的最多层次';
+$lang['camelcase']             = '对链接使用 CamelCase';
+$lang['deaccent']              = '清理页面名称';
+$lang['useheading']            = '使用“标题 H1”作为页面名称';
+$lang['sneaky_index']          = '默认情况下,DokuWiki 在索引页会显示所有 namespace。启用该选项能隐藏那些用户没有权限阅读的页面。但也可能将用户能够阅读的子页面一并隐藏。这有可能导致在特定 ACL 设置下,索引功能不可用。';
+$lang['hidepages']             = '隐藏匹配的界面(正则表达式)';
+$lang['useacl']                = '使用访问控制列表(ACL)';
+$lang['autopasswd']            = '自动生成密码';
+$lang['authtype']              = '认证后台管理方式';
+$lang['passcrypt']             = '密码加密方法';
+$lang['defaultgroup']          = '默认组';
+$lang['superuser']             = '超级用户 - 不论 ACL 如何设置,都能访问所有页面与功能的用户组/用户';
+$lang['manager']               = '管理员 - 能访问相应管理功能的用户组/用户';
+$lang['profileconfirm']        = '更新个人信息时需要输入当前密码';
+$lang['rememberme']            = '允许在本地机长期保留登录cookies信息(记住我)';
+$lang['disableactions']        = '停用 DokuWiki 功能';
+$lang['disableactions_check']  = '检查';
+$lang['disableactions_subscription'] = '订阅/退订';
+$lang['disableactions_wikicode'] = '查看源文件/导出源文件';
+$lang['disableactions_profile_delete'] = '删除自己的账户';
+$lang['disableactions_other']  = '其他功能(用英文逗号分隔)';
+$lang['disableactions_rss']    = 'XML 同步 (RSS)';
+$lang['auth_security_timeout'] = '认证安全超时(秒)';
+$lang['securecookie']          = '要让浏览器须以HTTPS方式传送在HTTPS会话中设置的cookies吗?请只在登录过程为SSL加密而浏览维基为明文的情况下打开此选项。';
+$lang['remote']                = '激活远程 API 系统。这允许其他程序通过 XML-RPC 或其他机制来访问维基。';
+$lang['remoteuser']            = '将远程 API 的访问权限限制在指定的组或用户中,以逗号分隔。留空则允许任何人访问。';
+$lang['usewordblock']          = '根据 wordlist 阻止垃圾评论';
+$lang['relnofollow']           = '对外部链接使用 rel="nofollow" 标签';
+$lang['indexdelay']            = '构建索引前的时间延滞(秒)';
+$lang['mailguard']             = '弄乱邮件地址(保护用户的邮件地址)';
+$lang['iexssprotect']          = '检验上传的文件以避免可能存在的恶意 JavaScript 或 HTML 代码';
+$lang['usedraft']              = '编辑时自动保存一份草稿';
+$lang['htmlok']                = '允许嵌入式 HTML';
+$lang['phpok']                 = '允许嵌入式 PHP';
+$lang['locktime']              = '独有编辑权/文件锁定的最长时间(秒)';
+$lang['cachetime']             = '缓存的最长时间(秒)';
+$lang['target____wiki']        = '内部链接的目标窗口';
+$lang['target____interwiki']   = 'Interwiki 链接的目标窗口';
+$lang['target____extern']      = '外部链接的目标窗口';
+$lang['target____media']       = '媒体文件链接的目标窗口';
+$lang['target____windows']     = 'Windows 链接的目标窗口';
+$lang['mediarevisions']        = '激活媒体修订历史?';
+$lang['refcheck']              = '检查媒体与页面的挂钩情况';
+$lang['gdlib']                 = 'GD 库版本';
+$lang['im_convert']            = 'ImageMagick 转换工具的路径';
+$lang['jpg_quality']           = 'JPG 压缩质量(0-100)';
+$lang['fetchsize']             = 'fetch.php 能从外部下载的最大文件大小(字节)';
+$lang['subscribers']           = '启用页面订阅支持';
+$lang['subscribe_time']        = '订阅列表和摘要发送的时间间隔(秒);这应当小于指定的最近更改保留时间(recent_days)。
+';
+$lang['notify']                = '发送更改通知给这个邮件地址';
+$lang['registernotify']        = '发送新注册用户的信息给这个邮件地址';
+$lang['mailfrom']              = '自动发送邮件时使用的邮件地址';
+$lang['mailreturnpath']        = '非投递通知的收件人邮箱地址';
+$lang['mailprefix']            = '自动发送邮件时使用的邮件地址前缀';
+$lang['htmlmail']              = '发送更加美观,但体积更大的 HTML 多部分邮件。禁用则发送纯文本邮件。';
+$lang['sitemap']               = '生成 Google sitemap(天)';
+$lang['rss_type']              = 'XML feed 类型';
+$lang['rss_linkto']            = 'XML feed 链接到';
+$lang['rss_content']           = 'XML feed 项目中显示什么呢?';
+$lang['rss_update']            = 'XML feed 升级间隔(秒)';
+$lang['rss_show_summary']      = 'XML feed 在标题中显示摘要';
+$lang['rss_media']             = '在 XML 源中应该列出何种类型的更改?';
+$lang['rss_media_o_both']      = '两者均可';
+$lang['rss_media_o_pages']     = '页面';
+$lang['rss_media_o_media']     = '媒体';
+$lang['updatecheck']           = '自动检查更新并接收安全警告吗?开启该功能后 DokuWiki 将自动访问 splitbrain.org。';
+$lang['userewrite']            = '使用更整洁的 URL';
+$lang['useslash']              = '在 URL 中使用斜杠作为命名空间的分隔符';
+$lang['sepchar']               = '页面名称中的单词分隔符';
+$lang['canonical']             = '使用完全标准的 URL';
+$lang['fnencode']              = '非 ASCII 文件名的编码方法。';
+$lang['autoplural']            = '在链接中检查多种格式';
+$lang['compression']           = 'attic 文件的压缩方式';
+$lang['gzip_output']           = '对 xhtml 使用 gzip 内容编码';
+$lang['compress']              = '使 CSS 和 javascript 的输出更紧密';
+$lang['cssdatauri']            = '字节数。CSS 文件引用的图片若小于该字节,则被直接嵌入样式表中来减少 HTTP 请求头的开销。这个技术在 IE 中不起作用。<code>400</code> 到 <code>600</code> 字节是不错的值。设置为 <code>0</code> 则禁用。';
+$lang['send404']               = '发送 "HTTP 404/页面没有找到" 错误信息给不存在的页面';
+$lang['broken_iua']            = 'ignore_user_abort 功能失效了?这有可能导致搜索索引不可用。IIS+PHP/CGI 已损坏。请参阅 <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Bug 852</a> 获取更多信息。';
+$lang['xsendfile']             = '使用 X-Sendfile 头让服务器发送状态文件?您的服务器需要支持该功能。';
+$lang['renderer_xhtml']        = '主维基页面 (xhtml) 输出使用的渲染';
+$lang['renderer__core']        = '%s(DokuWiki 内核)';
+$lang['renderer__plugin']      = '%s(插件)';
+$lang['dnslookups']            = 'DokuWiki 将会查询用户编辑页面的远程 IP 地址的主机名。如果您的 DNS 服务器比较缓慢或者不工作,或者您不想要这个功能,请禁用此选项。';
+$lang['jquerycdn']             = 'jQuery和jQuery UI脚本文件应该从CDN加载吗?
+这会增加额外的HTTP请求,但文件加载可能会更快,且用户可能已经缓存过。';
+$lang['jquerycdn_o_0']         = '不使用CDN,只使用本地库';
+$lang['jquerycdn_o_jquery']    = '在code.jquery.com上的CDN';
+$lang['jquerycdn_o_cdnjs']     = '在cdnjs.com上的CDN';
+$lang['proxy____host']         = '代理服务器的名称';
+$lang['proxy____port']         = '代理服务器的端口';
+$lang['proxy____user']         = '代理服务器的用户名';
+$lang['proxy____pass']         = '代理服务器的密码';
+$lang['proxy____ssl']          = '使用 SSL 连接到代理服务器';
+$lang['proxy____except']       = '用来匹配代理应跳过的地址的正则表达式。';
+$lang['safemodehack']          = '启用 Safemode Hack';
+$lang['ftp____host']           = 'Safemode Hack 的 FTP 服务器';
+$lang['ftp____port']           = 'Safemode Hack 的 FTP 端口';
+$lang['ftp____user']           = 'Safemode Hack 的 FTP 用户名';
+$lang['ftp____pass']           = 'Safemode Hack 的 FTP 密码';
+$lang['ftp____root']           = 'Safemode Hack 的 FTP 根路径';
+$lang['license_o_']            = '什么都没有选';
+$lang['typography_o_0']        = '无';
+$lang['typography_o_1']        = '仅限双引号';
+$lang['typography_o_2']        = '所有引号(不一定能正常运行)';
+$lang['userewrite_o_0']        = '无';
+$lang['userewrite_o_1']        = '.htaccess';
+$lang['userewrite_o_2']        = 'DokuWiki 内部控制';
+$lang['deaccent_o_0']          = '关闭';
+$lang['deaccent_o_1']          = '移除重音符号';
+$lang['deaccent_o_2']          = '用罗马字拼写';
+$lang['gdlib_o_0']             = 'GD 库不可用';
+$lang['gdlib_o_1']             = '1.x 版';
+$lang['gdlib_o_2']             = '自动检测';
+$lang['rss_type_o_rss']        = 'RSS 0.91';
+$lang['rss_type_o_rss1']       = 'RSS 1.0';
+$lang['rss_type_o_rss2']       = 'RSS 2.0';
+$lang['rss_type_o_atom']       = 'Atom 0.3';
+$lang['rss_type_o_atom1']      = 'Atom 1.0';
+$lang['rss_content_o_abstract'] = '摘要';
+$lang['rss_content_o_diff']    = '统一差异';
+$lang['rss_content_o_htmldiff'] = 'HTML 格式化的差异表';
+$lang['rss_content_o_html']    = '完整的 hTML 页面内容';
+$lang['rss_linkto_o_diff']     = '差别查看';
+$lang['rss_linkto_o_page']     = '已修订的页面';
+$lang['rss_linkto_o_rev']      = '修订列表';
+$lang['rss_linkto_o_current']  = '当前页面';
+$lang['compression_o_0']       = '无';
+$lang['compression_o_gz']      = 'gzip';
+$lang['compression_o_bz2']     = 'bz2';
+$lang['xsendfile_o_0']         = '不要使用';
+$lang['xsendfile_o_1']         = '专有 lighttpd 头(1.5 发布前)';
+$lang['xsendfile_o_2']         = '标准 X-Sendfile 头';
+$lang['xsendfile_o_3']         = '专有 Nginx X-Accel-Redirect 头';
+$lang['showuseras_o_loginname'] = '登录名';
+$lang['showuseras_o_username'] = '用户全名';
+$lang['showuseras_o_username_link'] = '使用用户全名作为维基内的用户链接';
+$lang['showuseras_o_email']    = '用户的电子邮箱(按邮箱保护设置加扰)';
+$lang['showuseras_o_email_link'] = '以mailto:形式显示用户的电子邮箱';
+$lang['useheading_o_0']        = '从不';
+$lang['useheading_o_navigation'] = '仅限导航';
+$lang['useheading_o_content']  = '仅限维基内容内';
+$lang['useheading_o_1']        = '一直';
+$lang['readdircache']          = 'readdir缓存的最长寿命(秒)';
diff --git a/wiki/lib/plugins/config/plugin.info.txt b/wiki/lib/plugins/config/plugin.info.txt
new file mode 100644
index 0000000..ddd7265
--- /dev/null
+++ b/wiki/lib/plugins/config/plugin.info.txt
@@ -0,0 +1,7 @@
+base   config
+author Christopher Smith
+email  chris@jalakai.co.uk
+date   2015-07-18
+name   Configuration Manager
+desc   Manage Dokuwiki's Configuration Settings
+url    http://dokuwiki.org/plugin:config
diff --git a/wiki/lib/plugins/config/settings/config.class.php b/wiki/lib/plugins/config/settings/config.class.php
new file mode 100644
index 0000000..3196d75
--- /dev/null
+++ b/wiki/lib/plugins/config/settings/config.class.php
@@ -0,0 +1,1430 @@
+<?php
+/**
+ * Configuration Class and generic setting classes
+ *
+ * @author  Chris Smith <chris@jalakai.co.uk>
+ * @author  Ben Coburn <btcoburn@silicodon.net>
+ */
+
+
+if(!defined('CM_KEYMARKER')) define('CM_KEYMARKER','____');
+
+if (!class_exists('configuration')) {
+    /**
+     * Class configuration
+     */
+    class configuration {
+
+        var $_name = 'conf';           // name of the config variable found in the files (overridden by $config['varname'])
+        var $_format = 'php';          // format of the config file, supported formats - php (overridden by $config['format'])
+        var $_heading = '';            // heading string written at top of config file - don't include comment indicators
+        var $_loaded = false;          // set to true after configuration files are loaded
+        var $_metadata = array();      // holds metadata describing the settings
+        /** @var setting[]  */
+        var $setting = array();        // array of setting objects
+        var $locked = false;           // configuration is considered locked if it can't be updated
+        var $show_disabled_plugins = false;
+
+        // configuration filenames
+        var $_default_files  = array();
+        var $_local_files = array();      // updated configuration is written to the first file
+        var $_protected_files = array();
+
+        var $_plugin_list = null;
+
+        /**
+         * constructor
+         *
+         * @param string $datafile path to config metadata file
+         */
+        public function __construct($datafile) {
+            global $conf, $config_cascade;
+
+            if (!file_exists($datafile)) {
+                msg('No configuration metadata found at - '.htmlspecialchars($datafile),-1);
+                return;
+            }
+            $meta = array();
+            include($datafile);
+
+            if (isset($config['varname'])) $this->_name = $config['varname'];
+            if (isset($config['format'])) $this->_format = $config['format'];
+            if (isset($config['heading'])) $this->_heading = $config['heading'];
+
+            $this->_default_files = $config_cascade['main']['default'];
+            $this->_local_files = $config_cascade['main']['local'];
+            $this->_protected_files = $config_cascade['main']['protected'];
+
+            $this->locked = $this->_is_locked();
+            $this->_metadata = array_merge($meta, $this->get_plugintpl_metadata($conf['template']));
+            $this->retrieve_settings();
+        }
+
+        /**
+         * Retrieve and stores settings in setting[] attribute
+         */
+        public function retrieve_settings() {
+            global $conf;
+            $no_default_check = array('setting_fieldset', 'setting_undefined', 'setting_no_class');
+
+            if (!$this->_loaded) {
+                $default = array_merge($this->get_plugintpl_default($conf['template']), $this->_read_config_group($this->_default_files));
+                $local = $this->_read_config_group($this->_local_files);
+                $protected = $this->_read_config_group($this->_protected_files);
+
+                $keys = array_merge(array_keys($this->_metadata),array_keys($default), array_keys($local), array_keys($protected));
+                $keys = array_unique($keys);
+
+                $param = null;
+                foreach ($keys as $key) {
+                    if (isset($this->_metadata[$key])) {
+                        $class = $this->_metadata[$key][0];
+
+                        if($class && class_exists('setting_'.$class)){
+                            $class = 'setting_'.$class;
+                        } else {
+                            if($class != '') {
+                                $this->setting[] = new setting_no_class($key,$param);
+                            }
+                            $class = 'setting';
+                        }
+
+                        $param = $this->_metadata[$key];
+                        array_shift($param);
+                    } else {
+                        $class = 'setting_undefined';
+                        $param = null;
+                    }
+
+                    if (!in_array($class, $no_default_check) && !isset($default[$key])) {
+                        $this->setting[] = new setting_no_default($key,$param);
+                    }
+
+                    $this->setting[$key] = new $class($key,$param);
+
+                    $d = array_key_exists($key, $default) ? $default[$key] : null;
+                    $l = array_key_exists($key, $local) ? $local[$key] : null;
+                    $p = array_key_exists($key, $protected) ? $protected[$key] : null;
+
+                    $this->setting[$key]->initialize($d,$l,$p);
+                }
+
+                $this->_loaded = true;
+            }
+        }
+
+        /**
+         * Stores setting[] array to file
+         *
+         * @param string $id     Name of plugin, which saves the settings
+         * @param string $header Text at the top of the rewritten settings file
+         * @param bool $backup   backup current file? (remove any existing backup)
+         * @return bool succesful?
+         */
+        public function save_settings($id, $header='', $backup=true) {
+            global $conf;
+
+            if ($this->locked) return false;
+
+            // write back to the last file in the local config cascade
+            $file = end($this->_local_files);
+
+            // backup current file (remove any existing backup)
+            if (file_exists($file) && $backup) {
+                if (file_exists($file.'.bak')) @unlink($file.'.bak');
+                if (!io_rename($file, $file.'.bak')) return false;
+            }
+
+            if (!$fh = @fopen($file, 'wb')) {
+                io_rename($file.'.bak', $file);     // problem opening, restore the backup
+                return false;
+            }
+
+            if (empty($header)) $header = $this->_heading;
+
+            $out = $this->_out_header($id,$header);
+
+            foreach ($this->setting as $setting) {
+                $out .= $setting->out($this->_name, $this->_format);
+            }
+
+            $out .= $this->_out_footer();
+
+            @fwrite($fh, $out);
+            fclose($fh);
+            if($conf['fperm']) chmod($file, $conf['fperm']);
+            return true;
+        }
+
+        /**
+         * Update last modified time stamp of the config file
+         *
+         * @return bool
+         */
+        public function touch_settings(){
+            if ($this->locked) return false;
+            $file = end($this->_local_files);
+            return @touch($file);
+        }
+
+        /**
+         * Read and merge given config files
+         *
+         * @param array $files file paths
+         * @return array config settings
+         */
+        protected function _read_config_group($files) {
+            $config = array();
+            foreach ($files as $file) {
+                $config = array_merge($config, $this->_read_config($file));
+            }
+
+            return $config;
+        }
+
+        /**
+         * Return an array of config settings
+         *
+         * @param string $file file path
+         * @return array config settings
+         */
+        function _read_config($file) {
+
+            if (!$file) return array();
+
+            $config = array();
+
+            if ($this->_format == 'php') {
+
+                if(file_exists($file)){
+                    $contents = @php_strip_whitespace($file);
+                }else{
+                    $contents = '';
+                }
+                $pattern = '/\$'.$this->_name.'\[[\'"]([^=]+)[\'"]\] ?= ?(.*?);(?=[^;]*(?:\$'.$this->_name.'|$))/s';
+                $matches=array();
+                preg_match_all($pattern,$contents,$matches,PREG_SET_ORDER);
+
+                for ($i=0; $i<count($matches); $i++) {
+                    $value = $matches[$i][2];
+
+                    // correct issues with the incoming data
+                    // FIXME ... for now merge multi-dimensional array indices using ____
+                    $key = preg_replace('/.\]\[./',CM_KEYMARKER,$matches[$i][1]);
+
+                    // handle arrays
+                    if(preg_match('/^array ?\((.*)\)/', $value, $match)){
+                        $arr = explode(',', $match[1]);
+
+                        // remove quotes from quoted strings & unescape escaped data
+                        $len = count($arr);
+                        for($j=0; $j<$len; $j++){
+                            $arr[$j] = trim($arr[$j]);
+                            $arr[$j] = $this->_readValue($arr[$j]);
+                        }
+
+                        $value = $arr;
+                    }else{
+                        $value = $this->_readValue($value);
+                    }
+
+                    $config[$key] = $value;
+                }
+            }
+
+            return $config;
+        }
+
+        /**
+         * Convert php string into value
+         *
+         * @param string $value
+         * @return bool|string
+         */
+        protected function _readValue($value) {
+            $removequotes_pattern = '/^(\'|")(.*)(?<!\\\\)\1$/s';
+            $unescape_pairs = array(
+                '\\\\' => '\\',
+                '\\\'' => '\'',
+                '\\"' => '"'
+            );
+
+            if($value == 'true') {
+                $value = true;
+            } elseif($value == 'false') {
+                $value = false;
+            } else {
+                // remove quotes from quoted strings & unescape escaped data
+                $value = preg_replace($removequotes_pattern,'$2',$value);
+                $value = strtr($value, $unescape_pairs);
+            }
+            return $value;
+        }
+
+        /**
+         * Returns header of rewritten settings file
+         *
+         * @param string $id plugin name of which generated this output
+         * @param string $header additional text for at top of the file
+         * @return string text of header
+         */
+        protected function _out_header($id, $header) {
+            $out = '';
+            if ($this->_format == 'php') {
+                $out .= '<'.'?php'."\n".
+                      "/*\n".
+                      " * ".$header."\n".
+                      " * Auto-generated by ".$id." plugin\n".
+                      " * Run for user: ".$_SERVER['REMOTE_USER']."\n".
+                      " * Date: ".date('r')."\n".
+                      " */\n\n";
+            }
+
+            return $out;
+        }
+
+        /**
+         * Returns footer of rewritten settings file
+         *
+         * @return string text of footer
+         */
+        protected function _out_footer() {
+            $out = '';
+            if ($this->_format == 'php') {
+                $out .= "\n// end auto-generated content\n";
+            }
+
+            return $out;
+        }
+
+        /**
+         * Configuration is considered locked if there is no local settings filename
+         * or the directory its in is not writable or the file exists and is not writable
+         *
+         * @return bool true: locked, false: writable
+         */
+        protected function _is_locked() {
+            if (!$this->_local_files) return true;
+
+            $local = $this->_local_files[0];
+
+            if (!is_writable(dirname($local))) return true;
+            if (file_exists($local) && !is_writable($local)) return true;
+
+            return false;
+        }
+
+        /**
+         * not used ... conf's contents are an array!
+         * reduce any multidimensional settings to one dimension using CM_KEYMARKER
+         *
+         * @param $conf
+         * @param string $prefix
+         * @return array
+         */
+        protected function _flatten($conf,$prefix='') {
+
+            $out = array();
+
+            foreach($conf as $key => $value) {
+                if (!is_array($value)) {
+                    $out[$prefix.$key] = $value;
+                    continue;
+                }
+
+                $tmp = $this->_flatten($value,$prefix.$key.CM_KEYMARKER);
+                $out = array_merge($out,$tmp);
+            }
+
+            return $out;
+        }
+
+        /**
+         * Returns array of plugin names
+         *
+         * @return array plugin names
+         * @triggers PLUGIN_CONFIG_PLUGINLIST event
+         */
+        function get_plugin_list() {
+            if (is_null($this->_plugin_list)) {
+                $list = plugin_list('',$this->show_disabled_plugins);
+
+                // remove this plugin from the list
+                $idx = array_search('config',$list);
+                unset($list[$idx]);
+
+                trigger_event('PLUGIN_CONFIG_PLUGINLIST',$list);
+                $this->_plugin_list = $list;
+            }
+
+            return $this->_plugin_list;
+        }
+
+        /**
+         * load metadata for plugin and template settings
+         *
+         * @param string $tpl name of active template
+         * @return array metadata of settings
+         */
+        function get_plugintpl_metadata($tpl){
+            $file     = '/conf/metadata.php';
+            $class    = '/conf/settings.class.php';
+            $metadata = array();
+
+            foreach ($this->get_plugin_list() as $plugin) {
+                $plugin_dir = plugin_directory($plugin);
+                if (file_exists(DOKU_PLUGIN.$plugin_dir.$file)){
+                    $meta = array();
+                    @include(DOKU_PLUGIN.$plugin_dir.$file);
+                    @include(DOKU_PLUGIN.$plugin_dir.$class);
+                    if (!empty($meta)) {
+                        $metadata['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.'plugin_settings_name'] = array('fieldset');
+                    }
+                    foreach ($meta as $key => $value){
+                        if ($value[0]=='fieldset') { continue; } //plugins only get one fieldset
+                        $metadata['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.$key] = $value;
+                    }
+                }
+            }
+
+            // the same for the active template
+            if (file_exists(tpl_incdir().$file)){
+                $meta = array();
+                @include(tpl_incdir().$file);
+                @include(tpl_incdir().$class);
+                if (!empty($meta)) {
+                    $metadata['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.'template_settings_name'] = array('fieldset');
+                }
+                foreach ($meta as $key => $value){
+                    if ($value[0]=='fieldset') { continue; } //template only gets one fieldset
+                    $metadata['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.$key] = $value;
+                }
+            }
+
+            return $metadata;
+        }
+
+        /**
+         * Load default settings for plugins and templates
+         *
+         * @param string $tpl name of active template
+         * @return array default settings
+         */
+        function get_plugintpl_default($tpl){
+            $file    = '/conf/default.php';
+            $default = array();
+
+            foreach ($this->get_plugin_list() as $plugin) {
+                $plugin_dir = plugin_directory($plugin);
+                if (file_exists(DOKU_PLUGIN.$plugin_dir.$file)){
+                    $conf = $this->_read_config(DOKU_PLUGIN.$plugin_dir.$file);
+                    foreach ($conf as $key => $value){
+                        $default['plugin'.CM_KEYMARKER.$plugin.CM_KEYMARKER.$key] = $value;
+                    }
+                }
+            }
+
+            // the same for the active template
+            if (file_exists(tpl_incdir().$file)){
+                $conf = $this->_read_config(tpl_incdir().$file);
+                foreach ($conf as $key => $value){
+                    $default['tpl'.CM_KEYMARKER.$tpl.CM_KEYMARKER.$key] = $value;
+                }
+            }
+
+            return $default;
+        }
+
+    }
+}
+
+if (!class_exists('setting')) {
+    /**
+     * Class setting
+     */
+    class setting {
+
+        var $_key = '';
+        var $_default = null;
+        var $_local = null;
+        var $_protected = null;
+
+        var $_pattern = '';
+        var $_error = false;            // only used by those classes which error check
+        var $_input = null;             // only used by those classes which error check
+        var $_caution = null;           // used by any setting to provide an alert along with the setting
+                                        // valid alerts, 'warning', 'danger', 'security'
+                                        // images matching the alerts are in the plugin's images directory
+
+        static protected $_validCautions = array('warning','danger','security');
+
+        /**
+         * @param string $key
+         * @param array|null $params array with metadata of setting
+         */
+        public function __construct($key, $params=null) {
+            $this->_key = $key;
+
+            if (is_array($params)) {
+                foreach($params as $property => $value) {
+                    $this->$property = $value;
+                }
+            }
+        }
+
+        /**
+         * Receives current values for the setting $key
+         *
+         * @param mixed $default   default setting value
+         * @param mixed $local     local setting value
+         * @param mixed $protected protected setting value
+         */
+        public function initialize($default, $local, $protected) {
+            if (isset($default)) $this->_default = $default;
+            if (isset($local)) $this->_local = $local;
+            if (isset($protected)) $this->_protected = $protected;
+        }
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        public function update($input) {
+            if (is_null($input)) return false;
+            if ($this->is_protected()) return false;
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            if ($this->_pattern && !preg_match($this->_pattern,$input)) {
+                $this->_error = true;
+                $this->_input = $input;
+                return false;
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        public function html(admin_plugin_config $plugin, $echo=false) {
+            $disable = '';
+
+            if ($this->is_protected()) {
+                $value = $this->_protected;
+                $disable = 'disabled="disabled"';
+            } else {
+                if ($echo && $this->_error) {
+                    $value = $this->_input;
+                } else {
+                    $value = is_null($this->_local) ? $this->_default : $this->_local;
+                }
+            }
+
+            $key = htmlspecialchars($this->_key);
+            $value = formText($value);
+
+            $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+            $input = '<textarea rows="3" cols="40" id="config___'.$key.'" name="config['.$key.']" class="edit" '.$disable.'>'.$value.'</textarea>';
+            return array($label,$input);
+        }
+
+        /**
+         * Generate string to save setting value to file according to $fmt
+         *
+         * @param string $var name of variable
+         * @param string $fmt save format
+         * @return string
+         */
+        public function out($var, $fmt='php') {
+
+            if ($this->is_protected()) return '';
+            if (is_null($this->_local) || ($this->_default == $this->_local)) return '';
+
+            $out = '';
+
+            if ($fmt=='php') {
+                $tr = array("\\" => '\\\\', "'" => '\\\'');
+
+                $out =  '$'.$var."['".$this->_out_key()."'] = '".strtr( cleanText($this->_local), $tr)."';\n";
+            }
+
+            return $out;
+        }
+
+        /**
+         * Returns the localized prompt
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @return string text
+         */
+        public function prompt(admin_plugin_config $plugin) {
+            $prompt = $plugin->getLang($this->_key);
+            if (!$prompt) $prompt = htmlspecialchars(str_replace(array('____','_'),' ',$this->_key));
+            return $prompt;
+        }
+
+        /**
+         * Is setting protected
+         *
+         * @return bool
+         */
+        public function is_protected() { return !is_null($this->_protected); }
+
+        /**
+         * Is setting the default?
+         *
+         * @return bool
+         */
+        public function is_default() { return !$this->is_protected() && is_null($this->_local); }
+
+        /**
+         * Has an error?
+         *
+         * @return bool
+         */
+        public function error() { return $this->_error; }
+
+        /**
+         * Returns caution
+         *
+         * @return false|string caution string, otherwise false for invalid caution
+         */
+        public function caution() {
+            if (!empty($this->_caution)) {
+                if (!in_array($this->_caution, setting::$_validCautions)) {
+                    trigger_error('Invalid caution string ('.$this->_caution.') in metadata for setting "'.$this->_key.'"', E_USER_WARNING);
+                    return false;
+                }
+                return $this->_caution;
+            }
+            // compatibility with previous cautionList
+            // TODO: check if any plugins use; remove
+            if (!empty($this->_cautionList[$this->_key])) {
+                $this->_caution = $this->_cautionList[$this->_key];
+                unset($this->_cautionList);
+
+                return $this->caution();
+            }
+            return false;
+        }
+
+        /**
+         * Returns setting key, eventually with referer to config: namespace at dokuwiki.org
+         *
+         * @param bool $pretty create nice key
+         * @param bool $url    provide url to config: namespace
+         * @return string key
+         */
+        public function _out_key($pretty=false,$url=false) {
+            if($pretty){
+                $out = str_replace(CM_KEYMARKER,"»",$this->_key);
+                if ($url && !strstr($out,'»')) {//provide no urls for plugins, etc.
+                    if ($out == 'start') //one exception
+                        return '<a href="http://www.dokuwiki.org/config:startpage">'.$out.'</a>';
+                    else
+                        return '<a href="http://www.dokuwiki.org/config:'.$out.'">'.$out.'</a>';
+                }
+                return $out;
+            }else{
+                return str_replace(CM_KEYMARKER,"']['",$this->_key);
+            }
+        }
+    }
+}
+
+
+if (!class_exists('setting_array')) {
+    /**
+     * Class setting_array
+     */
+    class setting_array extends setting {
+
+        /**
+         * Create an array from a string
+         *
+         * @param string $string
+         * @return array
+         */
+        protected function _from_string($string){
+            $array = explode(',', $string);
+            $array = array_map('trim', $array);
+            $array = array_filter($array);
+            $array = array_unique($array);
+            return $array;
+        }
+
+        /**
+         * Create a string from an array
+         *
+         * @param array $array
+         * @return string
+         */
+        protected function _from_array($array){
+            return join(', ', (array) $array);
+        }
+
+        /**
+         * update setting with user provided value $input
+         * if value fails error check, save it
+         *
+         * @param string $input
+         * @return bool true if changed, false otherwise (incl. on error)
+         */
+        function update($input) {
+            if (is_null($input)) return false;
+            if ($this->is_protected()) return false;
+
+            $input = $this->_from_string($input);
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            foreach($input as $item){
+                if ($this->_pattern && !preg_match($this->_pattern,$item)) {
+                    $this->_error = true;
+                    $this->_input = $input;
+                    return false;
+                }
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+
+        /**
+         * Escaping
+         *
+         * @param string $string
+         * @return string
+         */
+        protected function _escape($string) {
+            $tr = array("\\" => '\\\\', "'" => '\\\'');
+            return "'".strtr( cleanText($string), $tr)."'";
+        }
+
+        /**
+         * Generate string to save setting value to file according to $fmt
+         *
+         * @param string $var name of variable
+         * @param string $fmt save format
+         * @return string
+         */
+        function out($var, $fmt='php') {
+
+            if ($this->is_protected()) return '';
+            if (is_null($this->_local) || ($this->_default == $this->_local)) return '';
+
+            $out = '';
+
+            if ($fmt=='php') {
+                $vals = array_map(array($this, '_escape'), $this->_local);
+                $out =  '$'.$var."['".$this->_out_key()."'] = array(".join(', ',$vals).");\n";
+            }
+
+            return $out;
+        }
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo=false) {
+            $disable = '';
+
+            if ($this->is_protected()) {
+                $value = $this->_protected;
+                $disable = 'disabled="disabled"';
+            } else {
+                if ($echo && $this->_error) {
+                    $value = $this->_input;
+                } else {
+                    $value = is_null($this->_local) ? $this->_default : $this->_local;
+                }
+            }
+
+            $key = htmlspecialchars($this->_key);
+            $value = htmlspecialchars($this->_from_array($value));
+
+            $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+            $input = '<input id="config___'.$key.'" name="config['.$key.']" type="text" class="edit" value="'.$value.'" '.$disable.'/>';
+            return array($label,$input);
+        }
+    }
+}
+
+if (!class_exists('setting_string')) {
+    /**
+     * Class setting_string
+     */
+    class setting_string extends setting {
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo=false) {
+            $disable = '';
+
+            if ($this->is_protected()) {
+                $value = $this->_protected;
+                $disable = 'disabled="disabled"';
+            } else {
+                if ($echo && $this->_error) {
+                    $value = $this->_input;
+                } else {
+                    $value = is_null($this->_local) ? $this->_default : $this->_local;
+                }
+            }
+
+            $key = htmlspecialchars($this->_key);
+            $value = htmlspecialchars($value);
+
+            $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+            $input = '<input id="config___'.$key.'" name="config['.$key.']" type="text" class="edit" value="'.$value.'" '.$disable.'/>';
+            return array($label,$input);
+        }
+    }
+}
+
+if (!class_exists('setting_password')) {
+    /**
+     * Class setting_password
+     */
+    class setting_password extends setting_string {
+
+        var $_code = 'plain';  // mechanism to be used to obscure passwords
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            if ($this->is_protected()) return false;
+            if (!$input) return false;
+
+            if ($this->_pattern && !preg_match($this->_pattern,$input)) {
+                $this->_error = true;
+                $this->_input = $input;
+                return false;
+            }
+
+            $this->_local = conf_encodeString($input,$this->_code);
+            return true;
+        }
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo=false) {
+
+            $disable = $this->is_protected() ? 'disabled="disabled"' : '';
+
+            $key = htmlspecialchars($this->_key);
+
+            $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+            $input = '<input id="config___'.$key.'" name="config['.$key.']" autocomplete="off" type="password" class="edit" value="" '.$disable.' />';
+            return array($label,$input);
+        }
+    }
+}
+
+if (!class_exists('setting_email')) {
+    /**
+     * Class setting_email
+     */
+    class setting_email extends setting_string {
+        var $_multiple = false;
+        var $_placeholders = false;
+
+        /**
+         * update setting with user provided value $input
+         * if value fails error check, save it
+         *
+         * @param mixed $input
+         * @return boolean true if changed, false otherwise (incl. on error)
+         */
+        function update($input) {
+            if (is_null($input)) return false;
+            if ($this->is_protected()) return false;
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+            if($input === ''){
+                $this->_local = $input;
+                return true;
+            }
+            $mail = $input;
+
+            if($this->_placeholders){
+                // replace variables with pseudo values
+                $mail = str_replace('@USER@','joe',$mail);
+                $mail = str_replace('@NAME@','Joe Schmoe',$mail);
+                $mail = str_replace('@MAIL@','joe@example.com',$mail);
+            }
+
+            // multiple mail addresses?
+            if ($this->_multiple) {
+                $mails = array_filter(array_map('trim', explode(',', $mail)));
+            } else {
+                $mails = array($mail);
+            }
+
+            // check them all
+            foreach ($mails as $mail) {
+                // only check the address part
+                if(preg_match('#(.*?)<(.*?)>#', $mail, $matches)){
+                    $addr = $matches[2];
+                }else{
+                    $addr = $mail;
+                }
+
+                if (!mail_isvalid($addr)) {
+                    $this->_error = true;
+                    $this->_input = $input;
+                    return false;
+                }
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
+
+if (!class_exists('setting_numeric')) {
+    /**
+     * Class setting_numeric
+     */
+    class setting_numeric extends setting_string {
+        // This allows for many PHP syntax errors...
+        // var $_pattern = '/^[-+\/*0-9 ]*$/';
+        // much more restrictive, but should eliminate syntax errors.
+        var $_pattern = '/^[-+]? *[0-9]+ *(?:[-+*] *[0-9]+ *)*$/';
+        var $_min = null;
+        var $_max = null;
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            $local = $this->_local;
+            $valid = parent::update($input);
+            if ($valid && !(is_null($this->_min) && is_null($this->_max))) {
+                $numeric_local = (int) eval('return '.$this->_local.';');
+                if ((!is_null($this->_min) && $numeric_local < $this->_min) ||
+                    (!is_null($this->_max) && $numeric_local > $this->_max)) {
+                    $this->_error = true;
+                    $this->_input = $input;
+                    $this->_local = $local;
+                    $valid = false;
+                }
+            }
+            return $valid;
+        }
+
+        /**
+         * Generate string to save setting value to file according to $fmt
+         *
+         * @param string $var name of variable
+         * @param string $fmt save format
+         * @return string
+         */
+        function out($var, $fmt='php') {
+
+            if ($this->is_protected()) return '';
+            if (is_null($this->_local) || ($this->_default == $this->_local)) return '';
+
+            $out = '';
+
+            if ($fmt=='php') {
+                $local = $this->_local === '' ? "''" : $this->_local;
+                $out .=  '$'.$var."['".$this->_out_key()."'] = ".$local.";\n";
+            }
+
+            return $out;
+        }
+    }
+}
+
+if (!class_exists('setting_numericopt')) {
+    /**
+     * Class setting_numericopt
+     */
+    class setting_numericopt extends setting_numeric {
+        // just allow an empty config
+        var $_pattern = '/^(|[-]?[0-9]+(?:[-+*][0-9]+)*)$/';
+
+
+        /**
+         * Empty string is valid for numericopt
+         *
+         * @param mixed $input
+         *
+         * @return bool
+         */
+        function update($input) {
+            if ($input === '') {
+                return true;
+            }
+
+            return parent::update($input);
+        }
+    }
+}
+
+if (!class_exists('setting_onoff')) {
+    /**
+     * Class setting_onoff
+     */
+    class setting_onoff extends setting_numeric {
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo = false) {
+            $disable = '';
+
+            if ($this->is_protected()) {
+                $value = $this->_protected;
+                $disable = ' disabled="disabled"';
+            } else {
+                $value = is_null($this->_local) ? $this->_default : $this->_local;
+            }
+
+            $key = htmlspecialchars($this->_key);
+            $checked = ($value) ? ' checked="checked"' : '';
+
+            $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+            $input = '<div class="input"><input id="config___'.$key.'" name="config['.$key.']" type="checkbox" class="checkbox" value="1"'.$checked.$disable.'/></div>';
+            return array($label,$input);
+        }
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            if ($this->is_protected()) return false;
+
+            $input = ($input) ? 1 : 0;
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
+
+if (!class_exists('setting_multichoice')) {
+    /**
+     * Class setting_multichoice
+     */
+    class setting_multichoice extends setting_string {
+        var $_choices = array();
+        var $lang; //some custom language strings are stored in setting
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo = false) {
+            $disable = '';
+            $nochoice = '';
+
+            if ($this->is_protected()) {
+                $value = $this->_protected;
+                $disable = ' disabled="disabled"';
+            } else {
+                $value = is_null($this->_local) ? $this->_default : $this->_local;
+            }
+
+            // ensure current value is included
+            if (!in_array($value, $this->_choices)) {
+                $this->_choices[] = $value;
+            }
+            // disable if no other choices
+            if (!$this->is_protected() && count($this->_choices) <= 1) {
+                $disable = ' disabled="disabled"';
+                $nochoice = $plugin->getLang('nochoice');
+            }
+
+            $key = htmlspecialchars($this->_key);
+
+            $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+
+            $input = "<div class=\"input\">\n";
+            $input .= '<select class="edit" id="config___'.$key.'" name="config['.$key.']"'.$disable.'>'."\n";
+            foreach ($this->_choices as $choice) {
+                $selected = ($value == $choice) ? ' selected="selected"' : '';
+                $option = $plugin->getLang($this->_key.'_o_'.$choice);
+                if (!$option && isset($this->lang[$this->_key.'_o_'.$choice])) $option = $this->lang[$this->_key.'_o_'.$choice];
+                if (!$option) $option = $choice;
+
+                $choice = htmlspecialchars($choice);
+                $option = htmlspecialchars($option);
+                $input .= '  <option value="'.$choice.'"'.$selected.' >'.$option.'</option>'."\n";
+            }
+            $input .= "</select> $nochoice \n";
+            $input .= "</div>\n";
+
+            return array($label,$input);
+        }
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            if (is_null($input)) return false;
+            if ($this->is_protected()) return false;
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            if (!in_array($input, $this->_choices)) return false;
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
+
+
+if (!class_exists('setting_dirchoice')) {
+    /**
+     * Class setting_dirchoice
+     */
+    class setting_dirchoice extends setting_multichoice {
+
+        var $_dir = '';
+
+        /**
+         * Receives current values for the setting $key
+         *
+         * @param mixed $default   default setting value
+         * @param mixed $local     local setting value
+         * @param mixed $protected protected setting value
+         */
+        function initialize($default,$local,$protected) {
+
+            // populate $this->_choices with a list of directories
+            $list = array();
+
+            if ($dh = @opendir($this->_dir)) {
+                while (false !== ($entry = readdir($dh))) {
+                    if ($entry == '.' || $entry == '..') continue;
+                    if ($this->_pattern && !preg_match($this->_pattern,$entry)) continue;
+
+                    $file = (is_link($this->_dir.$entry)) ? readlink($this->_dir.$entry) : $this->_dir.$entry;
+                    if (is_dir($file)) $list[] = $entry;
+                }
+                closedir($dh);
+            }
+            sort($list);
+            $this->_choices = $list;
+
+            parent::initialize($default,$local,$protected);
+        }
+    }
+}
+
+
+if (!class_exists('setting_hidden')) {
+    /**
+     * Class setting_hidden
+     */
+    class setting_hidden extends setting {
+        // Used to explicitly ignore a setting in the configuration manager.
+    }
+}
+
+if (!class_exists('setting_fieldset')) {
+    /**
+     * Class setting_fieldset
+     */
+    class setting_fieldset extends setting {
+        // A do-nothing class used to detect the 'fieldset' type.
+        // Used to start a new settings "display-group".
+    }
+}
+
+if (!class_exists('setting_undefined')) {
+    /**
+     * Class setting_undefined
+     */
+    class setting_undefined extends setting_hidden {
+        // A do-nothing class used to detect settings with no metadata entry.
+        // Used internaly to hide undefined settings, and generate the undefined settings list.
+    }
+}
+
+if (!class_exists('setting_no_class')) {
+    /**
+     * Class setting_no_class
+     */
+    class setting_no_class extends setting_undefined {
+        // A do-nothing class used to detect settings with a missing setting class.
+        // Used internaly to hide undefined settings, and generate the undefined settings list.
+    }
+}
+
+if (!class_exists('setting_no_default')) {
+    /**
+     * Class setting_no_default
+     */
+    class setting_no_default extends setting_undefined {
+        // A do-nothing class used to detect settings with no default value.
+        // Used internaly to hide undefined settings, and generate the undefined settings list.
+    }
+}
+
+if (!class_exists('setting_multicheckbox')) {
+    /**
+     * Class setting_multicheckbox
+     */
+    class setting_multicheckbox extends setting_string {
+
+        var $_choices = array();
+        var $_combine = array();
+        var $_other = 'always';
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            if ($this->is_protected()) return false;
+
+            // split any combined values + convert from array to comma separated string
+            $input = ($input) ? $input : array();
+            $input = $this->_array2str($input);
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            if ($this->_pattern && !preg_match($this->_pattern,$input)) {
+                $this->_error = true;
+                $this->_input = $input;
+                return false;
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show input value, when error occurred, otherwise the stored setting
+         * @return string[] with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo=false) {
+
+            $disable = '';
+
+            if ($this->is_protected()) {
+                $value = $this->_protected;
+                $disable = 'disabled="disabled"';
+            } else {
+                if ($echo && $this->_error) {
+                    $value = $this->_input;
+                } else {
+                    $value = is_null($this->_local) ? $this->_default : $this->_local;
+                }
+            }
+
+            $key = htmlspecialchars($this->_key);
+
+            // convert from comma separated list into array + combine complimentary actions
+            $value = $this->_str2array($value);
+            $default = $this->_str2array($this->_default);
+
+            $input = '';
+            foreach ($this->_choices as $choice) {
+                $idx = array_search($choice, $value);
+                $idx_default = array_search($choice,$default);
+
+                $checked = ($idx !== false) ? 'checked="checked"' : '';
+
+                // @todo ideally this would be handled using a second class of "default"
+                $class = (($idx !== false) == (false !== $idx_default)) ? " selectiondefault" : "";
+
+                $prompt = ($plugin->getLang($this->_key.'_'.$choice) ?
+                                $plugin->getLang($this->_key.'_'.$choice) : htmlspecialchars($choice));
+
+                $input .= '<div class="selection'.$class.'">'."\n";
+                $input .= '<label for="config___'.$key.'_'.$choice.'">'.$prompt."</label>\n";
+                $input .= '<input id="config___'.$key.'_'.$choice.'" name="config['.$key.'][]" type="checkbox" class="checkbox" value="'.$choice.'" '.$disable.' '.$checked."/>\n";
+                $input .= "</div>\n";
+
+                // remove this action from the disabledactions array
+                if ($idx !== false) unset($value[$idx]);
+                if ($idx_default !== false) unset($default[$idx_default]);
+            }
+
+            // handle any remaining values
+            if ($this->_other != 'never'){
+                $other = join(',',$value);
+                // test equivalent to ($this->_other == 'always' || ($other && $this->_other == 'exists')
+                // use != 'exists' rather than == 'always' to ensure invalid values default to 'always'
+                if ($this->_other != 'exists' || $other) {
+
+                    $class = ((count($default) == count($value)) && (count($value) == count(array_intersect($value,$default)))) ?
+                                    " selectiondefault" : "";
+
+                    $input .= '<div class="other'.$class.'">'."\n";
+                    $input .= '<label for="config___'.$key.'_other">'.$plugin->getLang($key.'_other')."</label>\n";
+                    $input .= '<input id="config___'.$key.'_other" name="config['.$key.'][other]" type="text" class="edit" value="'.htmlspecialchars($other).'" '.$disable." />\n";
+                    $input .= "</div>\n";
+                }
+            }
+            $label = '<label>'.$this->prompt($plugin).'</label>';
+            return array($label,$input);
+        }
+
+        /**
+         * convert comma separated list to an array and combine any complimentary values
+         *
+         * @param string $str
+         * @return array
+         */
+        function _str2array($str) {
+            $array = explode(',',$str);
+
+            if (!empty($this->_combine)) {
+                foreach ($this->_combine as $key => $combinators) {
+                    $idx = array();
+                    foreach ($combinators as $val) {
+                        if  (($idx[] = array_search($val, $array)) === false) break;
+                    }
+
+                    if (count($idx) && $idx[count($idx)-1] !== false) {
+                        foreach ($idx as $i) unset($array[$i]);
+                        $array[] = $key;
+                    }
+                }
+            }
+
+            return $array;
+        }
+
+        /**
+         * convert array of values + other back to a comma separated list, incl. splitting any combined values
+         *
+         * @param array $input
+         * @return string
+         */
+        function _array2str($input) {
+
+            // handle other
+            $other = trim($input['other']);
+            $other = !empty($other) ? explode(',',str_replace(' ','',$input['other'])) : array();
+            unset($input['other']);
+
+            $array = array_unique(array_merge($input, $other));
+
+            // deconstruct any combinations
+            if (!empty($this->_combine)) {
+                foreach ($this->_combine as $key => $combinators) {
+
+                    $idx = array_search($key,$array);
+                    if ($idx !== false) {
+                        unset($array[$idx]);
+                        $array = array_merge($array, $combinators);
+                    }
+                }
+            }
+
+            return join(',',array_unique($array));
+        }
+    }
+}
+
+if (!class_exists('setting_regex')){
+    /**
+     * Class setting_regex
+     */
+    class setting_regex extends setting_string {
+
+        var $_delimiter = '/';    // regex delimiter to be used in testing input
+        var $_pregflags = 'ui';   // regex pattern modifiers to be used in testing input
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (incl. on error)
+         */
+        function update($input) {
+
+            // let parent do basic checks, value, not changed, etc.
+            $local = $this->_local;
+            if (!parent::update($input)) return false;
+            $this->_local = $local;
+
+            // see if the regex compiles and runs (we don't check for effectiveness)
+            $regex = $this->_delimiter . $input . $this->_delimiter . $this->_pregflags;
+            $lastError = error_get_last();
+            @preg_match($regex,'testdata');
+            if (preg_last_error() != PREG_NO_ERROR || error_get_last() != $lastError) {
+                $this->_input = $input;
+                $this->_error = true;
+                return false;
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
diff --git a/wiki/lib/plugins/config/settings/config.metadata.php b/wiki/lib/plugins/config/settings/config.metadata.php
new file mode 100644
index 0000000..acdf93b
--- /dev/null
+++ b/wiki/lib/plugins/config/settings/config.metadata.php
@@ -0,0 +1,240 @@
+<?php
+/**
+ * Metadata for configuration manager plugin
+ *
+ * Note:  This file should be included within a function to ensure it
+ *        doesn't clash with the settings it is describing.
+ *
+ * Format:
+ *   $meta[<setting name>] = array(<handler class id>,<param name> => <param value>);
+ *
+ *   <handler class id>  is the handler class name without the "setting_" prefix
+ *
+ * Defined classes:
+ *   Generic (source: settings/config.class.php)
+ *   -------------------------------------------
+ *   ''             - default class ('setting'), textarea, minimal input validation, setting output in quotes
+ *   'string'       - single line text input, minimal input validation, setting output in quotes
+ *   'numeric'      - text input, accepts numbers and arithmetic operators, setting output without quotes
+ *                    if given the '_min' and '_max' parameters are used for validation
+ *   'numericopt'   - like above, but accepts empty values
+ *   'onoff'        - checkbox input, setting output  0|1
+ *   'multichoice'  - select input (single choice), setting output with quotes, required _choices parameter
+ *   'email'        - text input, input must conform to email address format, supports optional '_multiple'
+ *                    parameter for multiple comma separated email addresses
+ *   'password'     - password input, minimal input validation, setting output text in quotes, maybe encoded
+ *                    according to the _code parameter
+ *   'dirchoice'    - as multichoice, selection choices based on folders found at location specified in _dir
+ *                    parameter (required). A pattern can be used to restrict the folders to only those which
+ *                    match the pattern.
+ *   'multicheckbox'- a checkbox for each choice plus an "other" string input, config file setting is a comma
+ *                    separated list of checked choices
+ *   'fieldset'     - used to group configuration settings, but is not itself a setting. To make this clear in
+ *                    the language files the keys for this type should start with '_'.
+ *   'array'        - a simple (one dimensional) array of string values, shown as comma separated list in the
+ *                    config manager but saved as PHP array(). Values may not contain commas themselves.
+ *                    _pattern matching on the array values supported.
+ *   'regex'        - regular expression string, normally without delimiters; as for string, in addition tested
+ *                    to see if will compile & run as a regex.  in addition to _pattern, also accepts _delimiter
+ *                    (default '/') and _pregflags (default 'ui')
+ *
+ *  Single Setting (source: settings/extra.class.php)
+ *  -------------------------------------------------
+ *   'savedir'     - as 'setting', input tested against initpath() (inc/init.php)
+ *   'sepchar'     - as multichoice, selection constructed from string of valid values
+ *   'authtype'    - as 'setting', input validated against a valid php file at expected location for auth files
+ *   'im_convert'  - as 'setting', input must exist and be an im_convert module
+ *   'disableactions' - as 'setting'
+ *   'compression' - no additional parameters. checks php installation supports possible compression alternatives
+ *   'licence'     - as multichoice, selection constructed from licence strings in language files
+ *   'renderer'    - as multichoice, selection constructed from enabled renderer plugins which canRender()
+ *   'authtype'    - as multichoice, selection constructed from the enabled auth plugins
+ *
+ *  Any setting commented or missing will use 'setting' class - text input, minimal validation, quoted output
+ *
+ * Defined parameters:
+ *   '_caution'    - no value (default) or 'warning', 'danger', 'security'. display an alert along with the setting
+ *   '_pattern'    - string, a preg pattern. input is tested against this pattern before being accepted
+ *                   optional all classes, except onoff & multichoice which ignore it
+ *   '_choices'    - array of choices. used to populate a selection box. choice will be replaced by a localised
+ *                   language string, indexed by  <setting name>_o_<choice>, if one exists
+ *                   required by 'multichoice' & 'multicheckbox' classes, ignored by others
+ *   '_dir'        - location of directory to be used to populate choice list
+ *                   required by 'dirchoice' class, ignored by other classes
+ *   '_combine'    - complimentary output setting values which can be combined into a single display checkbox
+ *                   optional for 'multicheckbox', ignored by other classes
+ *   '_code'       - encoding method to use, accepted values: 'base64','uuencode','plain'.  defaults to plain.
+ *   '_min'        - minimum numeric value, optional for 'numeric' and 'numericopt', ignored by others
+ *   '_max'        - maximum numeric value, optional for 'numeric' and 'numericopt', ignored by others
+ *   '_delimiter'  - string, default '/', a single character used as a delimiter for testing regex input values
+ *   '_pregflags'  - string, default 'ui', valid preg pattern modifiers used when testing regex input values, for more
+ *                   information see http://php.net/manual/en/reference.pcre.pattern.modifiers.php
+ *   '_multiple'   - bool, allow multiple comma separated email values; optional for 'email', ignored by others
+ *   '_other'      - how to handle other values (not listed in _choices). accepted values: 'always','exists','never'
+ *                   default value 'always'. 'exists' only shows 'other' input field when the setting contains value(s)
+ *                   not listed in choices (e.g. due to manual editing or update changing _choices).  This is safer than
+ *                   'never' as it will not discard unknown/other values.
+ *                   optional for 'multicheckbox', ignored by others
+ *
+ *
+ * @author    Chris Smith <chris@jalakai.co.uk>
+ */
+// ---------------[ settings for settings ]------------------------------
+$config['format']  = 'php';      // format of setting files, supported formats: php
+$config['varname'] = 'conf';     // name of the config variable, sans $
+
+// this string is written at the top of the rewritten settings file,
+// !! do not include any comment indicators !!
+// this value can be overriden when calling save_settings() method
+$config['heading'] = 'Dokuwiki\'s Main Configuration File - Local Settings';
+
+// test value (FIXME, remove before publishing)
+//$meta['test']     = array('multichoice','_choices' => array(''));
+
+// --------------[ setting metadata ]------------------------------------
+// - for description of format and fields see top of file
+// - order the settings in the order you wish them to appear
+// - any settings not mentioned will come after the last setting listed and
+//   will use the default class with no parameters
+
+$meta['_basic']   = array('fieldset');
+$meta['title']    = array('string');
+$meta['start']    = array('string','_caution' => 'warning','_pattern' => '!^[^:;/]+$!'); // don't accept namespaces
+$meta['lang']     = array('dirchoice','_dir' => DOKU_INC.'inc/lang/');
+$meta['template'] = array('dirchoice','_dir' => DOKU_INC.'lib/tpl/','_pattern' => '/^[\w-]+$/');
+$meta['tagline']  = array('string');
+$meta['sidebar']  = array('string');
+$meta['license']  = array('license');
+$meta['savedir']  = array('savedir','_caution' => 'danger');
+$meta['basedir']  = array('string','_caution' => 'danger');
+$meta['baseurl']  = array('string','_caution' => 'danger');
+$meta['cookiedir'] = array('string','_caution' => 'danger');
+$meta['dmode']    = array('numeric','_pattern' => '/0[0-7]{3,4}/'); // only accept octal representation
+$meta['fmode']    = array('numeric','_pattern' => '/0[0-7]{3,4}/'); // only accept octal representation
+$meta['allowdebug']  = array('onoff','_caution' => 'security');
+
+$meta['_display']    = array('fieldset');
+$meta['recent']      = array('numeric');
+$meta['recent_days'] = array('numeric');
+$meta['breadcrumbs'] = array('numeric','_min' => 0);
+$meta['youarehere']  = array('onoff');
+$meta['fullpath']    = array('onoff','_caution' => 'security');
+$meta['typography']  = array('multichoice','_choices' => array(0,1,2));
+$meta['dformat']     = array('string');
+$meta['signature']   = array('string');
+$meta['showuseras']  = array('multichoice','_choices' => array('loginname','username','username_link','email','email_link'));
+$meta['toptoclevel'] = array('multichoice','_choices' => array(1,2,3,4,5));   // 5 toc levels
+$meta['tocminheads'] = array('multichoice','_choices' => array(0,1,2,3,4,5,10,15,20));
+$meta['maxtoclevel'] = array('multichoice','_choices' => array(0,1,2,3,4,5));
+$meta['maxseclevel'] = array('multichoice','_choices' => array(0,1,2,3,4,5)); // 0 for no sec edit buttons
+$meta['camelcase']   = array('onoff','_caution' => 'warning');
+$meta['deaccent']    = array('multichoice','_choices' => array(0,1,2),'_caution' => 'warning');
+$meta['useheading']  = array('multichoice','_choices' => array(0,'navigation','content',1));
+$meta['sneaky_index'] = array('onoff');
+$meta['hidepages']   = array('regex');
+
+$meta['_authentication'] = array('fieldset');
+$meta['useacl']      = array('onoff','_caution' => 'danger');
+$meta['autopasswd']  = array('onoff');
+$meta['authtype']    = array('authtype','_caution' => 'danger');
+$meta['passcrypt']   = array('multichoice','_choices' => array(
+    'smd5','md5','apr1','sha1','ssha','lsmd5','crypt','mysql','my411','kmd5','pmd5','hmd5',
+    'mediawiki','bcrypt','djangomd5','djangosha1','djangopbkdf2_sha1','djangopbkdf2_sha256','sha512'
+));
+$meta['defaultgroup']= array('string');
+$meta['superuser']   = array('string','_caution' => 'danger');
+$meta['manager']     = array('string');
+$meta['profileconfirm'] = array('onoff');
+$meta['rememberme'] = array('onoff');
+$meta['disableactions'] = array('disableactions',
+                                '_choices' => array('backlink','index','recent','revisions','search','subscription','register','resendpwd','profile','profile_delete','edit','wikicode','check', 'rss'),
+                                '_combine' => array('subscription' => array('subscribe','unsubscribe'), 'wikicode' => array('source','export_raw')));
+$meta['auth_security_timeout'] = array('numeric');
+$meta['securecookie'] = array('onoff');
+$meta['remote']       = array('onoff','_caution' => 'security');
+$meta['remoteuser']   = array('string');
+
+$meta['_anti_spam']  = array('fieldset');
+$meta['usewordblock']= array('onoff');
+$meta['relnofollow'] = array('onoff');
+$meta['indexdelay']  = array('numeric');
+$meta['mailguard']   = array('multichoice','_choices' => array('visible','hex','none'));
+$meta['iexssprotect']= array('onoff','_caution' => 'security');
+
+$meta['_editing']    = array('fieldset');
+$meta['usedraft']    = array('onoff');
+$meta['htmlok']      = array('onoff','_caution' => 'security');
+$meta['phpok']       = array('onoff','_caution' => 'security');
+$meta['locktime']    = array('numeric');
+$meta['cachetime']   = array('numeric');
+
+$meta['_links']    = array('fieldset');
+$meta['target____wiki']      = array('string');
+$meta['target____interwiki'] = array('string');
+$meta['target____extern']    = array('string');
+$meta['target____media']     = array('string');
+$meta['target____windows']   = array('string');
+
+$meta['_media']      = array('fieldset');
+$meta['mediarevisions']  = array('onoff');
+$meta['gdlib']       = array('multichoice','_choices' => array(0,1,2));
+$meta['im_convert']  = array('im_convert');
+$meta['jpg_quality'] = array('numeric','_pattern' => '/^100$|^[1-9]?[0-9]$/');  //(0-100)
+$meta['fetchsize']   = array('numeric');
+$meta['refcheck']    = array('onoff');
+
+$meta['_notifications'] = array('fieldset');
+$meta['subscribers']    = array('onoff');
+$meta['subscribe_time'] = array('numeric');
+$meta['notify']         = array('email', '_multiple' => true);
+$meta['registernotify'] = array('email', '_multiple' => true);
+$meta['mailfrom']       = array('email', '_placeholders' => true);
+$meta['mailreturnpath']       = array('email', '_placeholders' => true);
+$meta['mailprefix']     = array('string');
+$meta['htmlmail']       = array('onoff');
+
+$meta['_syndication'] = array('fieldset');
+$meta['sitemap']     = array('numeric');
+$meta['rss_type']    = array('multichoice','_choices' => array('rss','rss1','rss2','atom','atom1'));
+$meta['rss_linkto']  = array('multichoice','_choices' => array('diff','page','rev','current'));
+$meta['rss_content'] = array('multichoice','_choices' => array('abstract','diff','htmldiff','html'));
+$meta['rss_media']   = array('multichoice','_choices' => array('both','pages','media'));
+$meta['rss_update']  = array('numeric');
+$meta['rss_show_summary'] = array('onoff');
+
+$meta['_advanced']   = array('fieldset');
+$meta['updatecheck'] = array('onoff');
+$meta['userewrite']  = array('multichoice','_choices' => array(0,1,2),'_caution' => 'danger');
+$meta['useslash']    = array('onoff');
+$meta['sepchar']     = array('sepchar','_caution' => 'warning');
+$meta['canonical']   = array('onoff');
+$meta['fnencode']    = array('multichoice','_choices' => array('url','safe','utf-8'),'_caution' => 'warning');
+$meta['autoplural']  = array('onoff');
+$meta['compress']    = array('onoff');
+$meta['cssdatauri']  = array('numeric','_pattern' => '/^\d+$/');
+$meta['gzip_output'] = array('onoff');
+$meta['send404']     = array('onoff');
+$meta['compression'] = array('compression','_caution' => 'warning');
+$meta['broken_iua']  = array('onoff');
+$meta['xsendfile']   = array('multichoice','_choices' => array(0,1,2,3),'_caution' => 'warning');
+$meta['renderer_xhtml'] = array('renderer','_format' => 'xhtml','_choices' => array('xhtml'),'_caution' => 'warning');
+$meta['readdircache'] = array('numeric');
+$meta['search_nslimit'] = array('numeric', '_min' => 0);
+$meta['search_fragment'] = array('multichoice','_choices' => array('exact', 'starts_with', 'ends_with', 'contains'),);
+
+$meta['_network']    = array('fieldset');
+$meta['dnslookups']  = array('onoff');
+$meta['jquerycdn']   = array('multichoice', '_choices' => array(0,'jquery', 'cdnjs'));
+$meta['proxy____host'] = array('string','_pattern' => '#^(|[a-z0-9\-\.+]+)$#i');
+$meta['proxy____port'] = array('numericopt');
+$meta['proxy____user'] = array('string');
+$meta['proxy____pass'] = array('password','_code' => 'base64');
+$meta['proxy____ssl']  = array('onoff');
+$meta['proxy____except'] = array('string');
+$meta['safemodehack'] = array('onoff');
+$meta['ftp____host']  = array('string','_pattern' => '#^(|[a-z0-9\-\.+]+)$#i');
+$meta['ftp____port']  = array('numericopt');
+$meta['ftp____user']  = array('string');
+$meta['ftp____pass']  = array('password','_code' => 'base64');
+$meta['ftp____root']  = array('string');
+
diff --git a/wiki/lib/plugins/config/settings/extra.class.php b/wiki/lib/plugins/config/settings/extra.class.php
new file mode 100644
index 0000000..41af422
--- /dev/null
+++ b/wiki/lib/plugins/config/settings/extra.class.php
@@ -0,0 +1,309 @@
+<?php
+/**
+ * additional setting classes specific to these settings
+ *
+ * @author    Chris Smith <chris@jalakai.co.uk>
+ */
+
+if (!class_exists('setting_sepchar')) {
+    /**
+     * Class setting_sepchar
+     */
+    class setting_sepchar extends setting_multichoice {
+
+        /**
+         * @param string $key
+         * @param array|null $param array with metadata of setting
+         */
+        function __construct($key,$param=null) {
+            $str = '_-.';
+            for ($i=0;$i<strlen($str);$i++) $this->_choices[] = $str{$i};
+
+            // call foundation class constructor
+            parent::__construct($key,$param);
+        }
+    }
+}
+
+if (!class_exists('setting_savedir')) {
+    /**
+     * Class setting_savedir
+     */
+    class setting_savedir extends setting_string {
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            if ($this->is_protected()) return false;
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            if (!init_path($input)) {
+                $this->_error = true;
+                $this->_input = $input;
+                return false;
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
+
+if (!class_exists('setting_authtype')) {
+    /**
+     * Class setting_authtype
+     */
+    class setting_authtype extends setting_multichoice {
+
+        /**
+         * Receives current values for the setting $key
+         *
+         * @param mixed $default   default setting value
+         * @param mixed $local     local setting value
+         * @param mixed $protected protected setting value
+         */
+        function initialize($default,$local,$protected) {
+            /** @var $plugin_controller Doku_Plugin_Controller */
+            global $plugin_controller;
+
+            // retrieve auth types provided by plugins
+            foreach ($plugin_controller->getList('auth') as $plugin) {
+                $this->_choices[] = $plugin;
+            }
+
+            parent::initialize($default,$local,$protected);
+        }
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            /** @var $plugin_controller Doku_Plugin_Controller */
+            global $plugin_controller;
+
+            // is an update possible/requested?
+            $local = $this->_local;                       // save this, parent::update() may change it
+            if (!parent::update($input)) return false;    // nothing changed or an error caught by parent
+            $this->_local = $local;                       // restore original, more error checking to come
+
+            // attempt to load the plugin
+            $auth_plugin = $plugin_controller->load('auth', $input);
+
+            // @TODO: throw an error in plugin controller instead of returning null
+            if (is_null($auth_plugin)) {
+                $this->_error = true;
+                msg('Cannot load Auth Plugin "' . $input . '"', -1);
+                return false;
+            }
+
+            // verify proper instantiation (is this really a plugin?) @TODO use instanceof? implement interface?
+            if (is_object($auth_plugin) && !method_exists($auth_plugin, 'getPluginName')) {
+                $this->_error = true;
+                msg('Cannot create Auth Plugin "' . $input . '"', -1);
+                return false;
+            }
+
+            // did we change the auth type? logout
+            global $conf;
+            if($conf['authtype'] != $input) {
+                msg('Authentication system changed. Please re-login.');
+                auth_logoff();
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
+
+if (!class_exists('setting_im_convert')) {
+    /**
+     * Class setting_im_convert
+     */
+    class setting_im_convert extends setting_string {
+
+        /**
+         * update changed setting with user provided value $input
+         * - if changed value fails error check, save it to $this->_input (to allow echoing later)
+         * - if changed value passes error check, set $this->_local to the new value
+         *
+         * @param  mixed   $input   the new value
+         * @return boolean          true if changed, false otherwise (also on error)
+         */
+        function update($input) {
+            if ($this->is_protected()) return false;
+
+            $input = trim($input);
+
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+            if ($value == $input) return false;
+
+            if ($input && !file_exists($input)) {
+                $this->_error = true;
+                $this->_input = $input;
+                return false;
+            }
+
+            $this->_local = $input;
+            return true;
+        }
+    }
+}
+
+if (!class_exists('setting_disableactions')) {
+    /**
+     * Class setting_disableactions
+     */
+    class setting_disableactions extends setting_multicheckbox {
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return array with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo=false) {
+            global $lang;
+
+            // make some language adjustments (there must be a better way)
+            // transfer some DokuWiki language strings to the plugin
+            $plugin->addLang($this->_key.'_revisions', $lang['btn_revs']);
+            foreach ($this->_choices as $choice) {
+              if (isset($lang['btn_'.$choice])) $plugin->addLang($this->_key.'_'.$choice, $lang['btn_'.$choice]);
+            }
+
+            return parent::html($plugin, $echo);
+        }
+    }
+}
+
+if (!class_exists('setting_compression')) {
+    /**
+     * Class setting_compression
+     */
+    class setting_compression extends setting_multichoice {
+
+        var $_choices = array('0');      // 0 = no compression, always supported
+
+        /**
+         * Receives current values for the setting $key
+         *
+         * @param mixed $default   default setting value
+         * @param mixed $local     local setting value
+         * @param mixed $protected protected setting value
+         */
+        function initialize($default,$local,$protected) {
+
+            // populate _choices with the compression methods supported by this php installation
+            if (function_exists('gzopen')) $this->_choices[] = 'gz';
+            if (function_exists('bzopen')) $this->_choices[] = 'bz2';
+
+            parent::initialize($default,$local,$protected);
+        }
+    }
+}
+
+if (!class_exists('setting_license')) {
+    /**
+     * Class setting_license
+     */
+    class setting_license extends setting_multichoice {
+
+        var $_choices = array('');      // none choosen
+
+        /**
+         * Receives current values for the setting $key
+         *
+         * @param mixed $default   default setting value
+         * @param mixed $local     local setting value
+         * @param mixed $protected protected setting value
+         */
+        function initialize($default,$local,$protected) {
+            global $license;
+
+            foreach($license as $key => $data){
+                $this->_choices[] = $key;
+                $this->lang[$this->_key.'_o_'.$key] = $data['name']; // stored in setting
+            }
+
+            parent::initialize($default,$local,$protected);
+        }
+    }
+}
+
+
+if (!class_exists('setting_renderer')) {
+    /**
+     * Class setting_renderer
+     */
+    class setting_renderer extends setting_multichoice {
+        var $_prompts = array();
+        var $_format = null;
+
+        /**
+         * Receives current values for the setting $key
+         *
+         * @param mixed $default   default setting value
+         * @param mixed $local     local setting value
+         * @param mixed $protected protected setting value
+         */
+        function initialize($default,$local,$protected) {
+            $format = $this->_format;
+
+            foreach (plugin_list('renderer') as $plugin) {
+                $renderer = plugin_load('renderer',$plugin);
+                if (method_exists($renderer,'canRender') && $renderer->canRender($format)) {
+                    $this->_choices[] = $plugin;
+
+                    $info = $renderer->getInfo();
+                    $this->_prompts[$plugin] = $info['name'];
+                }
+            }
+
+            parent::initialize($default,$local,$protected);
+        }
+
+        /**
+         * Build html for label and input of setting
+         *
+         * @param admin_plugin_config $plugin object of config plugin
+         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @return array with content array(string $label_html, string $input_html)
+         */
+        function html(admin_plugin_config $plugin, $echo=false) {
+
+            // make some language adjustments (there must be a better way)
+            // transfer some plugin names to the config plugin
+            foreach($this->_choices as $choice) {
+                if(!$plugin->getLang($this->_key . '_o_' . $choice)) {
+                    if(!isset($this->_prompts[$choice])) {
+                        $plugin->addLang(
+                            $this->_key . '_o_' . $choice,
+                            sprintf($plugin->getLang('renderer__core'), $choice)
+                        );
+                    } else {
+                        $plugin->addLang(
+                            $this->_key . '_o_' . $choice,
+                            sprintf($plugin->getLang('renderer__plugin'), $this->_prompts[$choice])
+                        );
+                    }
+                }
+            }
+            return parent::html($plugin, $echo);
+        }
+    }
+}
diff --git a/wiki/lib/plugins/config/style.css b/wiki/lib/plugins/config/style.css
new file mode 100644
index 0000000..054021e
--- /dev/null
+++ b/wiki/lib/plugins/config/style.css
@@ -0,0 +1,167 @@
+/* plugin:configmanager */
+#config__manager div.success,
+#config__manager div.error,
+#config__manager div.info {
+  background-position: 0.5em;
+  padding: 0.5em;
+  text-align: center;
+}
+
+#config__manager fieldset {
+  margin: 1em;
+  width: auto;
+  margin-bottom: 2em;
+  background-color: __background_alt__;
+  color: __text__;
+  padding: 0 1em;
+}
+[dir=rtl] #config__manager fieldset {
+    clear: both;
+}
+#config__manager legend {
+    font-size: 1.25em;
+}
+
+#config__manager form { }
+#config__manager table {
+    margin: 1em 0;
+    width: 100%;
+}
+
+#config__manager fieldset td {
+    text-align: left;
+}
+[dir=rtl] #config__manager fieldset td {
+    text-align: right;
+}
+#config__manager fieldset td.value {
+    /* fixed data column width */
+    width: 31em;
+}
+
+[dir=rtl] #config__manager label {
+    text-align: right;
+}
+[dir=rtl] #config__manager td.value input.checkbox {
+    float: right;
+    padding-left: 0;
+    padding-right: 0.7em;
+}
+[dir=rtl] #config__manager td.value label {
+    float: left;
+}
+
+#config__manager td.label {
+    padding: 0.8em 0 0.6em 1em;
+    vertical-align: top;
+}
+[dir=rtl] #config__manager td.label {
+    padding: 0.8em 1em 0.6em 0;
+}
+
+#config__manager td.label label {
+    clear: left;
+    display: block;
+}
+[dir=rtl] #config__manager td.label label {
+    clear: right;
+}
+#config__manager td.label img {
+    padding: 0 10px;
+    vertical-align: middle;
+    float: right;
+}
+[dir=rtl] #config__manager td.label img {
+    float: left;
+}
+
+#config__manager td.label span.outkey {
+    font-size: 70%;
+    margin-top: -1.7em;
+    margin-left: -1em;
+    display: block;
+    background-color: __background__;
+    color: __text_neu__;
+    float: left;
+    padding: 0 0.1em;
+    position: relative;
+    z-index: 1;
+}
+[dir=rtl] #config__manager td.label span.outkey {
+    float: right;
+    margin-right: 1em;
+}
+
+#config__manager td input.edit {
+    width: 30em;
+}
+#config__manager td .input {
+    width: 30.8em;
+}
+#config__manager td select.edit { }
+#config__manager td textarea.edit {
+    width: 27.5em;
+    height: 4em;
+}
+
+#config__manager td textarea.edit:focus {
+    height: 10em;
+}
+
+#config__manager tr .input,
+#config__manager tr input,
+#config__manager tr textarea,
+#config__manager tr select {
+  background-color: #fff;
+  color: #000;
+}
+
+#config__manager tr.default .input,
+#config__manager tr.default input,
+#config__manager tr.default textarea,
+#config__manager tr.default select,
+#config__manager .selectiondefault {
+  background-color: #ccddff;
+  color: #000;
+}
+
+#config__manager tr.protected .input,
+#config__manager tr.protected input,
+#config__manager tr.protected textarea,
+#config__manager tr.protected select,
+#config__manager tr.protected .selection {
+  background-color: #ffcccc!important;
+  color: #000 !important;
+}
+
+#config__manager td.error  { background-color: red; color: #000; }
+
+#config__manager .selection {
+  width: 14.8em;
+  float: left;
+  margin: 0 0.3em 2px 0;
+}
+[dir=rtl] #config__manager .selection {
+  width: 14.8em;
+  float: right;
+  margin: 0 0 2px 0.3em;
+}
+
+#config__manager .selection label {
+  float: right;
+  width: 14em;
+  font-size: 90%;
+}
+
+
+#config__manager .other {
+  clear: both;
+  padding-top: 0.5em;
+}
+
+#config__manager .other label {
+  padding-left: 2px;
+  font-size: 90%;
+}
+
+/* end plugin:configmanager */
diff --git a/wiki/lib/plugins/extension/action.php b/wiki/lib/plugins/extension/action.php
new file mode 100644
index 0000000..9e48f13
--- /dev/null
+++ b/wiki/lib/plugins/extension/action.php
@@ -0,0 +1,85 @@
+<?php
+/** DokuWiki Plugin extension (Action Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+class action_plugin_extension extends DokuWiki_Action_Plugin {
+
+    /**
+     * Registers a callback function for a given event
+     *
+     * @param Doku_Event_Handler $controller DokuWiki's event controller object
+     * @return void
+     */
+    public function register(Doku_Event_Handler $controller) {
+
+        $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'info');
+
+    }
+
+    /**
+     * Create the detail info for a single plugin
+     *
+     * @param Doku_Event $event
+     * @param            $param
+     */
+    public function info(Doku_Event &$event, $param) {
+        global $USERINFO;
+        global $INPUT;
+
+        if($event->data != 'plugin_extension') return;
+        $event->preventDefault();
+        $event->stopPropagation();
+
+        if(empty($_SERVER['REMOTE_USER']) || !auth_isadmin($_SERVER['REMOTE_USER'], $USERINFO['grps'])) {
+            http_status(403);
+            echo 'Forbidden';
+            exit;
+        }
+
+        $ext = $INPUT->str('ext');
+        if(!$ext) {
+            http_status(400);
+            echo 'no extension given';
+            return;
+        }
+
+        /** @var helper_plugin_extension_extension $extension */
+        $extension = plugin_load('helper', 'extension_extension');
+        $extension->setExtension($ext);
+
+        $act = $INPUT->str('act');
+        switch($act) {
+            case 'enable':
+            case 'disable':
+                $json = new JSON();
+                $extension->$act(); //enables/disables
+
+                $reverse = ($act == 'disable') ? 'enable' : 'disable';
+
+                $return = array(
+                    'state'   => $act.'d', // isn't English wonderful? :-)
+                    'reverse' => $reverse,
+                    'label'   => $extension->getLang('btn_'.$reverse)
+                );
+
+                header('Content-Type: application/json');
+                echo $json->encode($return);
+                break;
+
+            case 'info':
+            default:
+                /** @var helper_plugin_extension_list $list */
+                $list = plugin_load('helper', 'extension_list');
+                header('Content-Type: text/html; charset=utf-8');
+                echo $list->make_info($extension);
+        }
+    }
+
+}
+
diff --git a/wiki/lib/plugins/extension/admin.php b/wiki/lib/plugins/extension/admin.php
new file mode 100644
index 0000000..71257cf
--- /dev/null
+++ b/wiki/lib/plugins/extension/admin.php
@@ -0,0 +1,159 @@
+<?php
+/**
+ * DokuWiki Plugin extension (Admin Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Michael Hamann <michael@content-space.de>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Admin part of the extension manager
+ */
+class admin_plugin_extension extends DokuWiki_Admin_Plugin {
+    protected $infoFor = null;
+    /** @var  helper_plugin_extension_gui */
+    protected $gui;
+
+    /**
+     * Constructor
+     *
+     * loads additional helpers
+     */
+    public function __construct() {
+        $this->gui = plugin_load('helper', 'extension_gui');
+    }
+
+    /**
+     * @return int sort number in admin menu
+     */
+    public function getMenuSort() {
+        return 0;
+    }
+
+    /**
+     * @return bool true if only access for superuser, false is for superusers and moderators
+     */
+    public function forAdminOnly() {
+        return true;
+    }
+
+    /**
+     * Execute the requested action(s) and initialize the plugin repository
+     */
+    public function handle() {
+        global $INPUT;
+        // initialize the remote repository
+        /* @var helper_plugin_extension_repository $repository */
+        $repository = $this->loadHelper('extension_repository');
+
+        if(!$repository->hasAccess()) {
+            $url = $this->gui->tabURL('', array('purge' => 1));
+            msg($this->getLang('repo_error').' [<a href="'.$url.'">'.$this->getLang('repo_retry').'</a>]', -1);
+        }
+
+        if(!in_array('ssl', stream_get_transports())) {
+            msg($this->getLang('nossl'), -1);
+        }
+
+        /* @var helper_plugin_extension_extension $extension */
+        $extension = $this->loadHelper('extension_extension');
+
+        try {
+            if($INPUT->post->has('fn') && checkSecurityToken()) {
+                $actions = $INPUT->post->arr('fn');
+                foreach($actions as $action => $extensions) {
+                    foreach($extensions as $extname => $label) {
+                        switch($action) {
+                            case 'install':
+                            case 'reinstall':
+                            case 'update':
+                                $extension->setExtension($extname);
+                                $installed = $extension->installOrUpdate();
+                                foreach($installed as $ext => $info) {
+                                    msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1);
+                                }
+                                break;
+                            case 'uninstall':
+                                $extension->setExtension($extname);
+                                $status = $extension->uninstall();
+                                if($status) {
+                                    msg(sprintf($this->getLang('msg_delete_success'), hsc($extension->getDisplayName())), 1);
+                                } else {
+                                    msg(sprintf($this->getLang('msg_delete_failed'), hsc($extension->getDisplayName())), -1);
+                                }
+                                break;
+                            case 'enable';
+                                $extension->setExtension($extname);
+                                $status = $extension->enable();
+                                if($status !== true) {
+                                    msg($status, -1);
+                                } else {
+                                    msg(sprintf($this->getLang('msg_enabled'), hsc($extension->getDisplayName())), 1);
+                                }
+                                break;
+                            case 'disable';
+                                $extension->setExtension($extname);
+                                $status = $extension->disable();
+                                if($status !== true) {
+                                    msg($status, -1);
+                                } else {
+                                    msg(sprintf($this->getLang('msg_disabled'), hsc($extension->getDisplayName())), 1);
+                                }
+                                break;
+                        }
+                    }
+                }
+                send_redirect($this->gui->tabURL('', array(), '&', true));
+            } elseif($INPUT->post->str('installurl') && checkSecurityToken()) {
+                $installed = $extension->installFromURL($INPUT->post->str('installurl'));
+                foreach($installed as $ext => $info) {
+                    msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1);
+                }
+                send_redirect($this->gui->tabURL('', array(), '&', true));
+            } elseif(isset($_FILES['installfile']) && checkSecurityToken()) {
+                $installed = $extension->installFromUpload('installfile');
+                foreach($installed as $ext => $info) {
+                    msg(sprintf($this->getLang('msg_'.$info['type'].'_'.$info['action'].'_success'), $info['base']), 1);
+                }
+                send_redirect($this->gui->tabURL('', array(), '&', true));
+            }
+
+        } catch(Exception $e) {
+            msg($e->getMessage(), -1);
+            send_redirect($this->gui->tabURL('', array(), '&', true));
+        }
+
+    }
+
+    /**
+     * Render HTML output
+     */
+    public function html() {
+        ptln('<h1>'.$this->getLang('menu').'</h1>');
+        ptln('<div id="extension__manager">');
+
+        $this->gui->tabNavigation();
+
+        switch($this->gui->currentTab()) {
+            case 'search':
+                $this->gui->tabSearch();
+                break;
+            case 'templates':
+                $this->gui->tabTemplates();
+                break;
+            case 'install':
+                $this->gui->tabInstall();
+                break;
+            case 'plugins':
+            default:
+                $this->gui->tabPlugins();
+        }
+
+        ptln('</div>');
+    }
+}
+
+// vim:ts=4:sw=4:et:
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/admin.svg b/wiki/lib/plugins/extension/admin.svg
new file mode 100644
index 0000000..6bd7c0d
--- /dev/null
+++ b/wiki/lib/plugins/extension/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.5 11H19V7a2 2 0 0 0-2-2h-4V3.5A2.5 2.5 0 0 0 10.5 1 2.5 2.5 0 0 0 8 3.5V5H4a2 2 0 0 0-2 2v3.8h1.5c1.5 0 2.7 1.2 2.7 2.7 0 1.5-1.2 2.7-2.7 2.7H2V20a2 2 0 0 0 2 2h3.8v-1.5c0-1.5 1.2-2.7 2.7-2.7 1.5 0 2.7 1.2 2.7 2.7V22H17a2 2 0 0 0 2-2v-4h1.5a2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/all.less b/wiki/lib/plugins/extension/all.less
new file mode 100644
index 0000000..3d9688e
--- /dev/null
+++ b/wiki/lib/plugins/extension/all.less
@@ -0,0 +1,37 @@
+
+@media only screen and (max-width: 600px) {
+
+#extension__list .legend {
+    > div {
+        padding-left: 0;
+    }
+
+    div.screenshot {
+        margin: 0 .5em .5em 0;
+    }
+
+    h2 {
+        width: auto;
+        float: none;
+    }
+
+    div.linkbar {
+        clear: left;
+    }
+}
+
+[dir=rtl] #extension__list .legend {
+    > div {
+        padding-right: 0;
+    }
+
+    div.screenshot {
+        margin: 0 0 .5em .5em;
+    }
+
+    div.linkbar {
+        clear: right;
+    }
+}
+
+} /* /@media */
diff --git a/wiki/lib/plugins/extension/helper/extension.php b/wiki/lib/plugins/extension/helper/extension.php
new file mode 100644
index 0000000..e77528b
--- /dev/null
+++ b/wiki/lib/plugins/extension/helper/extension.php
@@ -0,0 +1,1162 @@
+<?php
+/**
+ * DokuWiki Plugin extension (Helper Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Michael Hamann <michael@content-space.de>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+if(!defined('DOKU_TPLLIB')) define('DOKU_TPLLIB', DOKU_INC.'lib/tpl/');
+
+/**
+ * Class helper_plugin_extension_extension represents a single extension (plugin or template)
+ */
+class helper_plugin_extension_extension extends DokuWiki_Plugin {
+    private $id;
+    private $base;
+    private $is_template = false;
+    private $localInfo;
+    private $remoteInfo;
+    private $managerData;
+    /** @var helper_plugin_extension_repository $repository */
+    private $repository = null;
+
+    /** @var array list of temporary directories */
+    private $temporary = array();
+
+    /**
+     * Destructor
+     *
+     * deletes any dangling temporary directories
+     */
+    public function __destruct() {
+        foreach($this->temporary as $dir){
+            io_rmdir($dir, true);
+        }
+    }
+
+    /**
+     * @return bool false, this component is not a singleton
+     */
+    public function isSingleton() {
+        return false;
+    }
+
+    /**
+     * Set the name of the extension this instance shall represents, triggers loading the local and remote data
+     *
+     * @param string $id  The id of the extension (prefixed with template: for templates)
+     * @return bool If some (local or remote) data was found
+     */
+    public function setExtension($id) {
+        $id = cleanID($id);
+        $this->id   = $id;
+        $this->base = $id;
+
+        if(substr($id, 0 , 9) == 'template:'){
+            $this->base = substr($id, 9);
+            $this->is_template = true;
+        } else {
+            $this->is_template = false;
+        }
+
+        $this->localInfo = array();
+        $this->managerData = array();
+        $this->remoteInfo = array();
+
+        if ($this->isInstalled()) {
+            $this->readLocalData();
+            $this->readManagerData();
+        }
+
+        if ($this->repository == null) {
+            $this->repository = $this->loadHelper('extension_repository');
+        }
+
+        $this->remoteInfo = $this->repository->getData($this->getID());
+
+        return ($this->localInfo || $this->remoteInfo);
+    }
+
+    /**
+     * If the extension is installed locally
+     *
+     * @return bool If the extension is installed locally
+     */
+    public function isInstalled() {
+        return is_dir($this->getInstallDir());
+    }
+
+    /**
+     * If the extension is under git control
+     *
+     * @return bool
+     */
+    public function isGitControlled() {
+        if(!$this->isInstalled()) return false;
+        return is_dir($this->getInstallDir().'/.git');
+    }
+
+    /**
+     * If the extension is bundled
+     *
+     * @return bool If the extension is bundled
+     */
+    public function isBundled() {
+        if (!empty($this->remoteInfo['bundled'])) return $this->remoteInfo['bundled'];
+        return in_array($this->id,
+                        array(
+                            'authad', 'authldap', 'authmysql', 'authpdo', 'authpgsql', 'authplain', 'acl', 'info', 'extension',
+                            'revert', 'popularity', 'config', 'safefnrecode', 'styling', 'testing', 'template:dokuwiki'
+                        )
+        );
+    }
+
+    /**
+     * If the extension is protected against any modification (disable/uninstall)
+     *
+     * @return bool if the extension is protected
+     */
+    public function isProtected() {
+        // never allow deinstalling the current auth plugin:
+        global $conf;
+        if ($this->id == $conf['authtype']) return true;
+
+        /** @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+        $cascade = $plugin_controller->getCascade();
+        return (isset($cascade['protected'][$this->id]) && $cascade['protected'][$this->id]);
+    }
+
+    /**
+     * If the extension is installed in the correct directory
+     *
+     * @return bool If the extension is installed in the correct directory
+     */
+    public function isInWrongFolder() {
+        return $this->base != $this->getBase();
+    }
+
+    /**
+     * If the extension is enabled
+     *
+     * @return bool If the extension is enabled
+     */
+    public function isEnabled() {
+        global $conf;
+        if($this->isTemplate()){
+            return ($conf['template'] == $this->getBase());
+        }
+
+        /* @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+        return !$plugin_controller->isdisabled($this->base);
+    }
+
+    /**
+     * If the extension should be updated, i.e. if an updated version is available
+     *
+     * @return bool If an update is available
+     */
+    public function updateAvailable() {
+        if(!$this->isInstalled()) return false;
+        if($this->isBundled()) return false;
+        $lastupdate = $this->getLastUpdate();
+        if ($lastupdate === false) return false;
+        $installed  = $this->getInstalledVersion();
+        if ($installed === false || $installed === $this->getLang('unknownversion')) return true;
+        return $this->getInstalledVersion() < $this->getLastUpdate();
+    }
+
+    /**
+     * If the extension is a template
+     *
+     * @return bool If this extension is a template
+     */
+    public function isTemplate() {
+        return $this->is_template;
+    }
+
+    /**
+     * Get the ID of the extension
+     *
+     * This is the same as getName() for plugins, for templates it's getName() prefixed with 'template:'
+     *
+     * @return string
+     */
+    public function getID() {
+        return $this->id;
+    }
+
+    /**
+     * Get the name of the installation directory
+     *
+     * @return string The name of the installation directory
+     */
+    public function getInstallName() {
+        return $this->base;
+    }
+
+    // Data from plugin.info.txt/template.info.txt or the repo when not available locally
+    /**
+     * Get the basename of the extension
+     *
+     * @return string The basename
+     */
+    public function getBase() {
+        if (!empty($this->localInfo['base'])) return $this->localInfo['base'];
+        return $this->base;
+    }
+
+    /**
+     * Get the display name of the extension
+     *
+     * @return string The display name
+     */
+    public function getDisplayName() {
+        if (!empty($this->localInfo['name'])) return $this->localInfo['name'];
+        if (!empty($this->remoteInfo['name'])) return $this->remoteInfo['name'];
+        return $this->base;
+    }
+
+    /**
+     * Get the author name of the extension
+     *
+     * @return string|bool The name of the author or false if there is none
+     */
+    public function getAuthor() {
+        if (!empty($this->localInfo['author'])) return $this->localInfo['author'];
+        if (!empty($this->remoteInfo['author'])) return $this->remoteInfo['author'];
+        return false;
+    }
+
+    /**
+     * Get the email of the author of the extension if there is any
+     *
+     * @return string|bool The email address or false if there is none
+     */
+    public function getEmail() {
+        // email is only in the local data
+        if (!empty($this->localInfo['email'])) return $this->localInfo['email'];
+        return false;
+    }
+
+    /**
+     * Get the email id, i.e. the md5sum of the email
+     *
+     * @return string|bool The md5sum of the email if there is any, false otherwise
+     */
+    public function getEmailID() {
+        if (!empty($this->remoteInfo['emailid'])) return $this->remoteInfo['emailid'];
+        if (!empty($this->localInfo['email'])) return md5($this->localInfo['email']);
+        return false;
+    }
+
+    /**
+     * Get the description of the extension
+     *
+     * @return string The description
+     */
+    public function getDescription() {
+        if (!empty($this->localInfo['desc'])) return $this->localInfo['desc'];
+        if (!empty($this->remoteInfo['description'])) return $this->remoteInfo['description'];
+        return '';
+    }
+
+    /**
+     * Get the URL of the extension, usually a page on dokuwiki.org
+     *
+     * @return string The URL
+     */
+    public function getURL() {
+        if (!empty($this->localInfo['url'])) return $this->localInfo['url'];
+        return 'https://www.dokuwiki.org/'.($this->isTemplate() ? 'template' : 'plugin').':'.$this->getBase();
+    }
+
+    /**
+     * Get the installed version of the extension
+     *
+     * @return string|bool The version, usually in the form yyyy-mm-dd if there is any
+     */
+    public function getInstalledVersion() {
+        if (!empty($this->localInfo['date'])) return $this->localInfo['date'];
+        if ($this->isInstalled()) return $this->getLang('unknownversion');
+        return false;
+    }
+
+    /**
+     * Get the install date of the current version
+     *
+     * @return string|bool The date of the last update or false if not available
+     */
+    public function getUpdateDate() {
+        if (!empty($this->managerData['updated'])) return $this->managerData['updated'];
+        return $this->getInstallDate();
+    }
+
+    /**
+     * Get the date of the installation of the plugin
+     *
+     * @return string|bool The date of the installation or false if not available
+     */
+    public function getInstallDate() {
+        if (!empty($this->managerData['installed'])) return $this->managerData['installed'];
+        return false;
+    }
+
+    /**
+     * Get the names of the dependencies of this extension
+     *
+     * @return array The base names of the dependencies
+     */
+    public function getDependencies() {
+        if (!empty($this->remoteInfo['dependencies'])) return $this->remoteInfo['dependencies'];
+        return array();
+    }
+
+    /**
+     * Get the names of the missing dependencies
+     *
+     * @return array The base names of the missing dependencies
+     */
+    public function getMissingDependencies() {
+        /* @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+        $dependencies = $this->getDependencies();
+        $missing_dependencies = array();
+        foreach ($dependencies as $dependency) {
+            if ($plugin_controller->isdisabled($dependency)) {
+                $missing_dependencies[] = $dependency;
+            }
+        }
+        return $missing_dependencies;
+    }
+
+    /**
+     * Get the names of all conflicting extensions
+     *
+     * @return array The names of the conflicting extensions
+     */
+    public function getConflicts() {
+        if (!empty($this->remoteInfo['conflicts'])) return $this->remoteInfo['conflicts'];
+        return array();
+    }
+
+    /**
+     * Get the names of similar extensions
+     *
+     * @return array The names of similar extensions
+     */
+    public function getSimilarExtensions() {
+        if (!empty($this->remoteInfo['similar'])) return $this->remoteInfo['similar'];
+        return array();
+    }
+
+    /**
+     * Get the names of the tags of the extension
+     *
+     * @return array The names of the tags of the extension
+     */
+    public function getTags() {
+        if (!empty($this->remoteInfo['tags'])) return $this->remoteInfo['tags'];
+        return array();
+    }
+
+    /**
+     * Get the popularity information as floating point number [0,1]
+     *
+     * @return float|bool The popularity information or false if it isn't available
+     */
+    public function getPopularity() {
+        if (!empty($this->remoteInfo['popularity'])) return $this->remoteInfo['popularity'];
+        return false;
+    }
+
+
+    /**
+     * Get the text of the security warning if there is any
+     *
+     * @return string|bool The security warning if there is any, false otherwise
+     */
+    public function getSecurityWarning() {
+        if (!empty($this->remoteInfo['securitywarning'])) return $this->remoteInfo['securitywarning'];
+        return false;
+    }
+
+    /**
+     * Get the text of the security issue if there is any
+     *
+     * @return string|bool The security issue if there is any, false otherwise
+     */
+    public function getSecurityIssue() {
+        if (!empty($this->remoteInfo['securityissue'])) return $this->remoteInfo['securityissue'];
+        return false;
+    }
+
+    /**
+     * Get the URL of the screenshot of the extension if there is any
+     *
+     * @return string|bool The screenshot URL if there is any, false otherwise
+     */
+    public function getScreenshotURL() {
+        if (!empty($this->remoteInfo['screenshoturl'])) return $this->remoteInfo['screenshoturl'];
+        return false;
+    }
+
+    /**
+     * Get the URL of the thumbnail of the extension if there is any
+     *
+     * @return string|bool The thumbnail URL if there is any, false otherwise
+     */
+    public function getThumbnailURL() {
+        if (!empty($this->remoteInfo['thumbnailurl'])) return $this->remoteInfo['thumbnailurl'];
+        return false;
+    }
+    /**
+     * Get the last used download URL of the extension if there is any
+     *
+     * @return string|bool The previously used download URL, false if the extension has been installed manually
+     */
+    public function getLastDownloadURL() {
+        if (!empty($this->managerData['downloadurl'])) return $this->managerData['downloadurl'];
+        return false;
+    }
+
+    /**
+     * Get the download URL of the extension if there is any
+     *
+     * @return string|bool The download URL if there is any, false otherwise
+     */
+    public function getDownloadURL() {
+        if (!empty($this->remoteInfo['downloadurl'])) return $this->remoteInfo['downloadurl'];
+        return false;
+    }
+
+    /**
+     * If the download URL has changed since the last download
+     *
+     * @return bool If the download URL has changed
+     */
+    public function hasDownloadURLChanged() {
+        $lasturl = $this->getLastDownloadURL();
+        $currenturl = $this->getDownloadURL();
+        return ($lasturl && $currenturl && $lasturl != $currenturl);
+    }
+
+    /**
+     * Get the bug tracker URL of the extension if there is any
+     *
+     * @return string|bool The bug tracker URL if there is any, false otherwise
+     */
+    public function getBugtrackerURL() {
+        if (!empty($this->remoteInfo['bugtracker'])) return $this->remoteInfo['bugtracker'];
+        return false;
+    }
+
+    /**
+     * Get the URL of the source repository if there is any
+     *
+     * @return string|bool The URL of the source repository if there is any, false otherwise
+     */
+    public function getSourcerepoURL() {
+        if (!empty($this->remoteInfo['sourcerepo'])) return $this->remoteInfo['sourcerepo'];
+        return false;
+    }
+
+    /**
+     * Get the donation URL of the extension if there is any
+     *
+     * @return string|bool The donation URL if there is any, false otherwise
+     */
+    public function getDonationURL() {
+        if (!empty($this->remoteInfo['donationurl'])) return $this->remoteInfo['donationurl'];
+        return false;
+    }
+
+    /**
+     * Get the extension type(s)
+     *
+     * @return array The type(s) as array of strings
+     */
+    public function getTypes() {
+        if (!empty($this->remoteInfo['types'])) return $this->remoteInfo['types'];
+        if ($this->isTemplate()) return array(32 => 'template');
+        return array();
+    }
+
+    /**
+     * Get a list of all DokuWiki versions this extension is compatible with
+     *
+     * @return array The versions in the form yyyy-mm-dd => ('label' => label, 'implicit' => implicit)
+     */
+    public function getCompatibleVersions() {
+        if (!empty($this->remoteInfo['compatible'])) return $this->remoteInfo['compatible'];
+        return array();
+    }
+
+    /**
+     * Get the date of the last available update
+     *
+     * @return string|bool The last available update in the form yyyy-mm-dd if there is any, false otherwise
+     */
+    public function getLastUpdate() {
+        if (!empty($this->remoteInfo['lastupdate'])) return $this->remoteInfo['lastupdate'];
+        return false;
+    }
+
+    /**
+     * Get the base path of the extension
+     *
+     * @return string The base path of the extension
+     */
+    public function getInstallDir() {
+        if ($this->isTemplate()) {
+            return DOKU_TPLLIB.$this->base;
+        } else {
+            return DOKU_PLUGIN.$this->base;
+        }
+    }
+
+    /**
+     * The type of extension installation
+     *
+     * @return string One of "none", "manual", "git" or "automatic"
+     */
+    public function getInstallType() {
+        if (!$this->isInstalled()) return 'none';
+        if (!empty($this->managerData)) return 'automatic';
+        if (is_dir($this->getInstallDir().'/.git')) return 'git';
+        return 'manual';
+    }
+
+    /**
+     * If the extension can probably be installed/updated or uninstalled
+     *
+     * @return bool|string True or error string
+     */
+    public function canModify() {
+        if($this->isInstalled()) {
+            if(!is_writable($this->getInstallDir())) {
+                return 'noperms';
+            }
+        }
+
+        if($this->isTemplate() && !is_writable(DOKU_TPLLIB)) {
+            return 'notplperms';
+
+        } elseif(!is_writable(DOKU_PLUGIN)) {
+            return 'nopluginperms';
+        }
+        return true;
+    }
+
+    /**
+     * Install an extension from a user upload
+     *
+     * @param string $field name of the upload file
+     * @throws Exception when something goes wrong
+     * @return array The list of installed extensions
+     */
+    public function installFromUpload($field){
+        if($_FILES[$field]['error']){
+            throw new Exception($this->getLang('msg_upload_failed').' ('.$_FILES[$field]['error'].')');
+        }
+
+        $tmp = $this->mkTmpDir();
+        if(!$tmp) throw new Exception($this->getLang('error_dircreate'));
+
+        // filename may contain the plugin name for old style plugins...
+        $basename = basename($_FILES[$field]['name']);
+        $basename = preg_replace('/\.(tar\.gz|tar\.bz|tar\.bz2|tar|tgz|tbz|zip)$/', '', $basename);
+        $basename = preg_replace('/[\W]+/', '', $basename);
+
+        if(!move_uploaded_file($_FILES[$field]['tmp_name'], "$tmp/upload.archive")){
+            throw new Exception($this->getLang('msg_upload_failed'));
+        }
+
+        try {
+            $installed = $this->installArchive("$tmp/upload.archive", true, $basename);
+            $this->updateManagerData('', $installed);
+            $this->removeDeletedfiles($installed);
+            // purge cache
+            $this->purgeCache();
+        }catch (Exception $e){
+            throw $e;
+        }
+        return $installed;
+    }
+
+    /**
+     * Install an extension from a remote URL
+     *
+     * @param string $url
+     * @throws Exception when something goes wrong
+     * @return array The list of installed extensions
+     */
+    public function installFromURL($url){
+        try {
+            $path      = $this->download($url);
+            $installed = $this->installArchive($path, true);
+            $this->updateManagerData($url, $installed);
+            $this->removeDeletedfiles($installed);
+
+            // purge cache
+            $this->purgeCache();
+        }catch (Exception $e){
+            throw $e;
+        }
+        return $installed;
+    }
+
+    /**
+     * Install or update the extension
+     *
+     * @throws \Exception when something goes wrong
+     * @return array The list of installed extensions
+     */
+    public function installOrUpdate() {
+        $url       = $this->getDownloadURL();
+        $path      = $this->download($url);
+        $installed = $this->installArchive($path, $this->isInstalled(), $this->getBase());
+        $this->updateManagerData($url, $installed);
+
+        // refresh extension information
+        if (!isset($installed[$this->getID()])) {
+            throw new Exception('Error, the requested extension hasn\'t been installed or updated');
+        }
+        $this->removeDeletedfiles($installed);
+        $this->setExtension($this->getID());
+        $this->purgeCache();
+        return $installed;
+    }
+
+    /**
+     * Uninstall the extension
+     *
+     * @return bool If the plugin was sucessfully uninstalled
+     */
+    public function uninstall() {
+        $this->purgeCache();
+        return io_rmdir($this->getInstallDir(), true);
+    }
+
+    /**
+     * Enable the extension
+     *
+     * @return bool|string True or an error message
+     */
+    public function enable() {
+        if ($this->isTemplate()) return $this->getLang('notimplemented');
+        if (!$this->isInstalled()) return $this->getLang('notinstalled');
+        if ($this->isEnabled()) return $this->getLang('alreadyenabled');
+
+        /* @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+        if ($plugin_controller->enable($this->base)) {
+            $this->purgeCache();
+            return true;
+        } else {
+            return $this->getLang('pluginlistsaveerror');
+        }
+    }
+
+    /**
+     * Disable the extension
+     *
+     * @return bool|string True or an error message
+     */
+    public function disable() {
+        if ($this->isTemplate()) return $this->getLang('notimplemented');
+
+        /* @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+        if (!$this->isInstalled()) return $this->getLang('notinstalled');
+        if (!$this->isEnabled()) return $this->getLang('alreadydisabled');
+        if ($plugin_controller->disable($this->base)) {
+            $this->purgeCache();
+            return true;
+        } else {
+            return $this->getLang('pluginlistsaveerror');
+        }
+    }
+
+    /**
+     * Purge the cache by touching the main configuration file
+     */
+    protected function purgeCache() {
+        global $config_cascade;
+
+        // expire dokuwiki caches
+        // touching local.php expires wiki page, JS and CSS caches
+        @touch(reset($config_cascade['main']['local']));
+    }
+
+    /**
+     * Read local extension data either from info.txt or getInfo()
+     */
+    protected function readLocalData() {
+        if ($this->isTemplate()) {
+            $infopath = $this->getInstallDir().'/template.info.txt';
+        } else {
+            $infopath = $this->getInstallDir().'/plugin.info.txt';
+        }
+
+        if (is_readable($infopath)) {
+            $this->localInfo = confToHash($infopath);
+        } elseif (!$this->isTemplate() && $this->isEnabled()) {
+            global $plugin_types;
+            $path       = $this->getInstallDir().'/';
+            $plugin     = null;
+
+            foreach($plugin_types as $type) {
+                if(file_exists($path.$type.'.php')) {
+                    $plugin = plugin_load($type, $this->base);
+                    if ($plugin) break;
+                }
+
+                if($dh = @opendir($path.$type.'/')) {
+                    while(false !== ($cp = readdir($dh))) {
+                        if($cp == '.' || $cp == '..' || strtolower(substr($cp, -4)) != '.php') continue;
+
+                        $plugin = plugin_load($type, $this->base.'_'.substr($cp, 0, -4));
+                        if ($plugin) break;
+                    }
+                    if ($plugin) break;
+                    closedir($dh);
+                }
+            }
+
+            if ($plugin) {
+                /* @var DokuWiki_Plugin $plugin */
+                $this->localInfo = $plugin->getInfo();
+            }
+        }
+    }
+
+    /**
+     * Save the given URL and current datetime in the manager.dat file of all installed extensions
+     *
+     * @param string $url       Where the extension was downloaded from. (empty for manual installs via upload)
+     * @param array  $installed Optional list of installed plugins
+     */
+    protected function updateManagerData($url = '', $installed = null) {
+        $origID = $this->getID();
+
+        if(is_null($installed)) {
+            $installed = array($origID);
+        }
+
+        foreach($installed as $ext => $info) {
+            if($this->getID() != $ext) $this->setExtension($ext);
+            if($url) {
+                $this->managerData['downloadurl'] = $url;
+            } elseif(isset($this->managerData['downloadurl'])) {
+                unset($this->managerData['downloadurl']);
+            }
+            if(isset($this->managerData['installed'])) {
+                $this->managerData['updated'] = date('r');
+            } else {
+                $this->managerData['installed'] = date('r');
+            }
+            $this->writeManagerData();
+        }
+
+        if($this->getID() != $origID) $this->setExtension($origID);
+    }
+
+    /**
+     * Read the manager.dat file
+     */
+    protected function readManagerData() {
+        $managerpath = $this->getInstallDir().'/manager.dat';
+        if (is_readable($managerpath)) {
+            $file = @file($managerpath);
+            if(!empty($file)) {
+                foreach($file as $line) {
+                    list($key, $value) = explode('=', trim($line, DOKU_LF), 2);
+                    $key = trim($key);
+                    $value = trim($value);
+                    // backwards compatible with old plugin manager
+                    if($key == 'url') $key = 'downloadurl';
+                    $this->managerData[$key] = $value;
+                }
+            }
+        }
+    }
+
+    /**
+     * Write the manager.data file
+     */
+    protected function writeManagerData() {
+        $managerpath = $this->getInstallDir().'/manager.dat';
+        $data = '';
+        foreach ($this->managerData as $k => $v) {
+            $data .= $k.'='.$v.DOKU_LF;
+        }
+        io_saveFile($managerpath, $data);
+    }
+
+    /**
+     * Returns a temporary directory
+     *
+     * The directory is registered for cleanup when the class is destroyed
+     *
+     * @return false|string
+     */
+    protected function mkTmpDir(){
+        $dir = io_mktmpdir();
+        if(!$dir) return false;
+        $this->temporary[] = $dir;
+        return $dir;
+    }
+
+    /**
+     * Download an archive to a protected path
+     *
+     * @param string $url  The url to get the archive from
+     * @throws Exception   when something goes wrong
+     * @return string The path where the archive was saved
+     */
+    public function download($url) {
+        // check the url
+        if(!preg_match('/https?:\/\//i', $url)){
+            throw new Exception($this->getLang('error_badurl'));
+        }
+
+        // try to get the file from the path (used as plugin name fallback)
+        $file = parse_url($url, PHP_URL_PATH);
+        if(is_null($file)){
+            $file = md5($url);
+        }else{
+            $file = utf8_basename($file);
+        }
+
+        // create tmp directory for download
+        if(!($tmp = $this->mkTmpDir())) {
+            throw new Exception($this->getLang('error_dircreate'));
+        }
+
+        // download
+        if(!$file = io_download($url, $tmp.'/', true, $file, 0)) {
+            io_rmdir($tmp, true);
+            throw new Exception(sprintf($this->getLang('error_download'), '<bdi>'.hsc($url).'</bdi>'));
+        }
+
+        return $tmp.'/'.$file;
+    }
+
+    /**
+     * @param string $file      The path to the archive that shall be installed
+     * @param bool   $overwrite If an already installed plugin should be overwritten
+     * @param string $base      The basename of the plugin if it's known
+     * @throws Exception        when something went wrong
+     * @return array            list of installed extensions
+     */
+    public function installArchive($file, $overwrite=false, $base = '') {
+        $installed_extensions = array();
+
+        // create tmp directory for decompression
+        if(!($tmp = $this->mkTmpDir())) {
+            throw new Exception($this->getLang('error_dircreate'));
+        }
+
+        // add default base folder if specified to handle case where zip doesn't contain this
+        if($base && !@mkdir($tmp.'/'.$base)) {
+            throw new Exception($this->getLang('error_dircreate'));
+        }
+
+        // decompress
+        $this->decompress($file, "$tmp/".$base);
+
+        // search $tmp/$base for the folder(s) that has been created
+        // move the folder(s) to lib/..
+        $result = array('old'=>array(), 'new'=>array());
+        $default = ($this->isTemplate() ? 'template' : 'plugin');
+        if(!$this->find_folders($result, $tmp.'/'.$base, $default)) {
+            throw new Exception($this->getLang('error_findfolder'));
+        }
+
+        // choose correct result array
+        if(count($result['new'])) {
+            $install = $result['new'];
+        }else{
+            $install = $result['old'];
+        }
+
+        if(!count($install)){
+            throw new Exception($this->getLang('error_findfolder'));
+        }
+
+        // now install all found items
+        foreach($install as $item) {
+            // where to install?
+            if($item['type'] == 'template') {
+                $target_base_dir = DOKU_TPLLIB;
+            }else{
+                $target_base_dir = DOKU_PLUGIN;
+            }
+
+            if(!empty($item['base'])) {
+                // use base set in info.txt
+            } elseif($base && count($install) == 1) {
+                $item['base'] = $base;
+            } else {
+                // default - use directory as found in zip
+                // plugins from github/master without *.info.txt will install in wrong folder
+                // but using $info->id will make 'code3' fail (which should install in lib/code/..)
+                $item['base'] = basename($item['tmp']);
+            }
+
+            // check to make sure we aren't overwriting anything
+            $target = $target_base_dir.$item['base'];
+            if(!$overwrite && file_exists($target)) {
+                // TODO remember our settings, ask the user to confirm overwrite
+                continue;
+            }
+
+            $action = file_exists($target) ? 'update' : 'install';
+
+            // copy action
+            if($this->dircopy($item['tmp'], $target)) {
+                // return info
+                $id = $item['base'];
+                if($item['type'] == 'template') {
+                    $id = 'template:'.$id;
+                }
+                $installed_extensions[$id] = array(
+                    'base' => $item['base'],
+                    'type' => $item['type'],
+                    'action' => $action
+                );
+            } else {
+                throw new Exception(sprintf($this->getLang('error_copy').DOKU_LF, '<bdi>'.$item['base'].'</bdi>'));
+            }
+        }
+
+        // cleanup
+        if($tmp) io_rmdir($tmp, true);
+
+        return $installed_extensions;
+    }
+
+    /**
+     * Find out what was in the extracted directory
+     *
+     * Correct folders are searched recursively using the "*.info.txt" configs
+     * as indicator for a root folder. When such a file is found, it's base
+     * setting is used (when set). All folders found by this method are stored
+     * in the 'new' key of the $result array.
+     *
+     * For backwards compatibility all found top level folders are stored as
+     * in the 'old' key of the $result array.
+     *
+     * When no items are found in 'new' the copy mechanism should fall back
+     * the 'old' list.
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @param array $result - results are stored here
+     * @param string $directory - the temp directory where the package was unpacked to
+     * @param string $default_type - type used if no info.txt available
+     * @param string $subdir - a subdirectory. do not set. used by recursion
+     * @return bool - false on error
+     */
+    protected function find_folders(&$result, $directory, $default_type='plugin', $subdir='') {
+        $this_dir = "$directory$subdir";
+        $dh       = @opendir($this_dir);
+        if(!$dh) return false;
+
+        $found_dirs           = array();
+        $found_files          = 0;
+        $found_template_parts = 0;
+        while (false !== ($f = readdir($dh))) {
+            if($f == '.' || $f == '..') continue;
+
+            if(is_dir("$this_dir/$f")) {
+                $found_dirs[] = "$subdir/$f";
+
+            } else {
+                // it's a file -> check for config
+                $found_files++;
+                switch ($f) {
+                    case 'plugin.info.txt':
+                    case 'template.info.txt':
+                        // we have  found a clear marker, save and return
+                        $info = array();
+                        $type = explode('.', $f, 2);
+                        $info['type'] = $type[0];
+                        $info['tmp']  = $this_dir;
+                        $conf = confToHash("$this_dir/$f");
+                        $info['base'] = basename($conf['base']);
+                        $result['new'][] = $info;
+                        return true;
+
+                    case 'main.php':
+                    case 'details.php':
+                    case 'mediamanager.php':
+                    case 'style.ini':
+                        $found_template_parts++;
+                        break;
+                }
+            }
+        }
+        closedir($dh);
+
+        // files where found but no info.txt - use old method
+        if($found_files){
+            $info            = array();
+            $info['tmp']     = $this_dir;
+            // does this look like a template or should we use the default type?
+            if($found_template_parts >= 2) {
+                $info['type']    = 'template';
+            } else {
+                $info['type']    = $default_type;
+            }
+
+            $result['old'][] = $info;
+            return true;
+        }
+
+        // we have no files yet -> recurse
+        foreach ($found_dirs as $found_dir) {
+            $this->find_folders($result, $directory, $default_type, "$found_dir");
+        }
+        return true;
+    }
+
+    /**
+     * Decompress a given file to the given target directory
+     *
+     * Determines the compression type from the file extension
+     *
+     * @param string $file   archive to extract
+     * @param string $target directory to extract to
+     * @throws Exception
+     * @return bool
+     */
+    private function decompress($file, $target) {
+        // decompression library doesn't like target folders ending in "/"
+        if(substr($target, -1) == "/") $target = substr($target, 0, -1);
+
+        $ext = $this->guess_archive($file);
+        if(in_array($ext, array('tar', 'bz', 'gz'))) {
+
+            try {
+                $tar = new \splitbrain\PHPArchive\Tar();
+                $tar->open($file);
+                $tar->extract($target);
+            } catch (\splitbrain\PHPArchive\ArchiveIOException $e) {
+                throw new Exception($this->getLang('error_decompress').' '.$e->getMessage());
+            }
+
+            return true;
+        } elseif($ext == 'zip') {
+
+            try {
+                $zip = new \splitbrain\PHPArchive\Zip();
+                $zip->open($file);
+                $zip->extract($target);
+            } catch (\splitbrain\PHPArchive\ArchiveIOException $e) {
+                throw new Exception($this->getLang('error_decompress').' '.$e->getMessage());
+            }
+
+            return true;
+        }
+
+        // the only case when we don't get one of the recognized archive types is when the archive file can't be read
+        throw new Exception($this->getLang('error_decompress').' Couldn\'t read archive file');
+    }
+
+    /**
+     * Determine the archive type of the given file
+     *
+     * Reads the first magic bytes of the given file for content type guessing,
+     * if neither bz, gz or zip are recognized, tar is assumed.
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @param string $file The file to analyze
+     * @return string|false false if the file can't be read, otherwise an "extension"
+     */
+    private function guess_archive($file) {
+        $fh = fopen($file, 'rb');
+        if(!$fh) return false;
+        $magic = fread($fh, 5);
+        fclose($fh);
+
+        if(strpos($magic, "\x42\x5a") === 0) return 'bz';
+        if(strpos($magic, "\x1f\x8b") === 0) return 'gz';
+        if(strpos($magic, "\x50\x4b\x03\x04") === 0) return 'zip';
+        return 'tar';
+    }
+
+    /**
+     * Copy with recursive sub-directory support
+     *
+     * @param string $src filename path to file
+     * @param string $dst filename path to file
+     * @return bool|int|string
+     */
+    private function dircopy($src, $dst) {
+        global $conf;
+
+        if(is_dir($src)) {
+            if(!$dh = @opendir($src)) return false;
+
+            if($ok = io_mkdir_p($dst)) {
+                while ($ok && (false !== ($f = readdir($dh)))) {
+                    if($f == '..' || $f == '.') continue;
+                    $ok = $this->dircopy("$src/$f", "$dst/$f");
+                }
+            }
+
+            closedir($dh);
+            return $ok;
+
+        } else {
+            $exists = file_exists($dst);
+
+            if(!@copy($src, $dst)) return false;
+            if(!$exists && !empty($conf['fperm'])) chmod($dst, $conf['fperm']);
+            @touch($dst, filemtime($src));
+        }
+
+        return true;
+    }
+
+    /**
+     * Delete outdated files from updated plugins
+     *
+     * @param array $installed
+     */
+    private function removeDeletedfiles($installed) {
+        foreach($installed as $id => $extension) {
+            // only on update
+            if($extension['action'] == 'install') continue;
+
+            // get definition file
+            if($extension['type'] == 'template') {
+                $extensiondir = DOKU_TPLLIB;
+            }else{
+                $extensiondir = DOKU_PLUGIN;
+            }
+            $extensiondir = $extensiondir . $extension['base'] .'/';
+            $definitionfile = $extensiondir . 'deleted.files';
+            if(!file_exists($definitionfile)) continue;
+
+            // delete the old files
+            $list = file($definitionfile);
+
+            foreach($list as $line) {
+                $line = trim(preg_replace('/#.*$/', '', $line));
+                if(!$line) continue;
+                $file = $extensiondir . $line;
+                if(!file_exists($file)) continue;
+
+                io_rmdir($file, true);
+            }
+        }
+    }
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/wiki/lib/plugins/extension/helper/gui.php b/wiki/lib/plugins/extension/helper/gui.php
new file mode 100644
index 0000000..4ec6fec
--- /dev/null
+++ b/wiki/lib/plugins/extension/helper/gui.php
@@ -0,0 +1,193 @@
+<?php
+/**
+ * DokuWiki Plugin extension (Helper Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class helper_plugin_extension_list takes care of the overall GUI
+ */
+class helper_plugin_extension_gui extends DokuWiki_Plugin {
+
+    protected $tabs = array('plugins', 'templates', 'search', 'install');
+
+    /** @var string the extension that should have an open info window FIXME currently broken */
+    protected $infoFor = '';
+
+    /**
+     * Constructor
+     *
+     * initializes requested info window
+     */
+    public function __construct() {
+        global $INPUT;
+        $this->infoFor = $INPUT->str('info');
+    }
+
+    /**
+     * display the plugin tab
+     */
+    public function tabPlugins() {
+        /* @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+
+        echo '<div class="panelHeader">';
+        echo $this->locale_xhtml('intro_plugins');
+        echo '</div>';
+
+        $pluginlist = $plugin_controller->getList('', true);
+        sort($pluginlist);
+        /* @var helper_plugin_extension_extension $extension */
+        $extension = $this->loadHelper('extension_extension');
+        /* @var helper_plugin_extension_list $list */
+        $list = $this->loadHelper('extension_list');
+        $list->start_form();
+        foreach($pluginlist as $name) {
+            $extension->setExtension($name);
+            $list->add_row($extension, $extension->getID() == $this->infoFor);
+        }
+        $list->end_form();
+        $list->render();
+    }
+
+    /**
+     * Display the template tab
+     */
+    public function tabTemplates() {
+        echo '<div class="panelHeader">';
+        echo $this->locale_xhtml('intro_templates');
+        echo '</div>';
+
+        // FIXME do we have a real way?
+        $tpllist = glob(DOKU_INC.'lib/tpl/*', GLOB_ONLYDIR);
+        $tpllist = array_map('basename', $tpllist);
+        sort($tpllist);
+
+        /* @var helper_plugin_extension_extension $extension */
+        $extension = $this->loadHelper('extension_extension');
+        /* @var helper_plugin_extension_list $list */
+        $list = $this->loadHelper('extension_list');
+        $list->start_form();
+        foreach($tpllist as $name) {
+            $extension->setExtension("template:$name");
+            $list->add_row($extension, $extension->getID() == $this->infoFor);
+        }
+        $list->end_form();
+        $list->render();
+    }
+
+    /**
+     * Display the search tab
+     */
+    public function tabSearch() {
+        global $INPUT;
+        echo '<div class="panelHeader">';
+        echo $this->locale_xhtml('intro_search');
+        echo '</div>';
+
+        $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'class' => 'search'));
+        $form->addElement(form_makeTextField('q', $INPUT->str('q'), $this->getLang('search_for')));
+        $form->addElement(form_makeButton('submit', '', $this->getLang('search')));
+        $form->printForm();
+
+        if(!$INPUT->bool('q')) return;
+
+        /* @var helper_plugin_extension_repository $repository FIXME should we use some gloabl instance? */
+        $repository = $this->loadHelper('extension_repository');
+        $result     = $repository->search($INPUT->str('q'));
+
+        /* @var helper_plugin_extension_extension $extension */
+        $extension = $this->loadHelper('extension_extension');
+        /* @var helper_plugin_extension_list $list */
+        $list = $this->loadHelper('extension_list');
+        $list->start_form();
+        if($result){
+            foreach($result as $name) {
+                $extension->setExtension($name);
+                $list->add_row($extension, $extension->getID() == $this->infoFor);
+            }
+        } else {
+            $list->nothing_found();
+        }
+        $list->end_form();
+        $list->render();
+
+    }
+
+    /**
+     * Display the template tab
+     */
+    public function tabInstall() {
+        echo '<div class="panelHeader">';
+        echo $this->locale_xhtml('intro_install');
+        echo '</div>';
+
+        $form = new Doku_Form(array('action' => $this->tabURL('', array(), '&'), 'enctype' => 'multipart/form-data', 'class' => 'install'));
+        $form->addElement(form_makeTextField('installurl', '', $this->getLang('install_url'), '', 'block'));
+        $form->addElement(form_makeFileField('installfile', $this->getLang('install_upload'), '', 'block'));
+        $form->addElement(form_makeButton('submit', '', $this->getLang('btn_install')));
+        $form->printForm();
+    }
+
+    /**
+     * Print the tab navigation
+     *
+     * @fixme style active one
+     */
+    public function tabNavigation() {
+        echo '<ul class="tabs">';
+        foreach($this->tabs as $tab) {
+            $url = $this->tabURL($tab);
+            if($this->currentTab() == $tab) {
+                $class = ' active';
+            } else {
+                $class = '';
+            }
+            echo '<li class="'.$tab.$class.'"><a href="'.$url.'">'.$this->getLang('tab_'.$tab).'</a></li>';
+        }
+        echo '</ul>';
+    }
+
+    /**
+     * Return the currently selected tab
+     *
+     * @return string
+     */
+    public function currentTab() {
+        global $INPUT;
+
+        $tab = $INPUT->str('tab', 'plugins', true);
+        if(!in_array($tab, $this->tabs)) $tab = 'plugins';
+        return $tab;
+    }
+
+    /**
+     * Create an URL inside the extension manager
+     *
+     * @param string $tab      tab to load, empty for current tab
+     * @param array  $params   associative array of parameter to set
+     * @param string $sep      seperator to build the URL
+     * @param bool   $absolute create absolute URLs?
+     * @return string
+     */
+    public function tabURL($tab = '', $params = array(), $sep = '&amp;', $absolute = false) {
+        global $ID;
+        global $INPUT;
+
+        if(!$tab) $tab = $this->currentTab();
+        $defaults = array(
+            'do'   => 'admin',
+            'page' => 'extension',
+            'tab'  => $tab,
+        );
+        if($tab == 'search') $defaults['q'] = $INPUT->str('q');
+
+        return wl($ID, array_merge($defaults, $params), $absolute, $sep);
+    }
+
+}
diff --git a/wiki/lib/plugins/extension/helper/list.php b/wiki/lib/plugins/extension/helper/list.php
new file mode 100644
index 0000000..656b4ea
--- /dev/null
+++ b/wiki/lib/plugins/extension/helper/list.php
@@ -0,0 +1,567 @@
+<?php
+/**
+ * DokuWiki Plugin extension (Helper Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Michael Hamann <michael@content-space.de>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class helper_plugin_extension_list takes care of creating a HTML list of extensions
+ */
+class helper_plugin_extension_list extends DokuWiki_Plugin {
+    protected $form = '';
+    /** @var  helper_plugin_extension_gui */
+    protected $gui;
+
+    /**
+     * Constructor
+     *
+     * loads additional helpers
+     */
+    public function __construct(){
+        $this->gui = plugin_load('helper', 'extension_gui');
+    }
+
+    function start_form() {
+        $this->form .= '<form id="extension__list" accept-charset="utf-8" method="post" action="">';
+        $hidden = array(
+            'do'=>'admin',
+            'page'=>'extension',
+            'sectok'=>getSecurityToken()
+        );
+        $this->add_hidden($hidden);
+        $this->form .= '<ul class="extensionList">';
+    }
+    /**
+     * Build single row of extension table
+     * @param helper_plugin_extension_extension  $extension The extension that shall be added
+     * @param bool                               $showinfo  Show the info area
+     */
+    function add_row(helper_plugin_extension_extension $extension, $showinfo = false) {
+        $this->start_row($extension);
+        $this->populate_column('legend', $this->make_legend($extension, $showinfo));
+        $this->populate_column('actions', $this->make_actions($extension));
+        $this->end_row();
+    }
+
+    /**
+     * Adds a header to the form
+     *
+     * @param string $id     The id of the header
+     * @param string $header The content of the header
+     * @param int    $level  The level of the header
+     */
+    function add_header($id, $header, $level = 2) {
+        $this->form .='<h'.$level.' id="'.$id.'">'.hsc($header).'</h'.$level.'>'.DOKU_LF;
+    }
+
+    /**
+     * Adds a paragraph to the form
+     *
+     * @param string $data The content
+     */
+    function add_p($data) {
+        $this->form .= '<p>'.hsc($data).'</p>'.DOKU_LF;
+    }
+
+    /**
+     * Add hidden fields to the form with the given data
+     * @param array $array
+     */
+    function add_hidden(array $array) {
+        $this->form .= '<div class="no">';
+        foreach ($array as $key => $value) {
+            $this->form .= '<input type="hidden" name="'.hsc($key).'" value="'.hsc($value).'" />';
+        }
+        $this->form .= '</div>'.DOKU_LF;
+    }
+
+    /**
+     * Add closing tags
+     */
+    function end_form() {
+        $this->form .= '</ul>';
+        $this->form .= '</form>'.DOKU_LF;
+    }
+
+    /**
+     * Show message when no results are found
+     */
+    function nothing_found() {
+        global $lang;
+        $this->form .= '<li class="notfound">'.$lang['nothingfound'].'</li>';
+    }
+
+    /**
+     * Print the form
+     */
+    function render() {
+        echo $this->form;
+    }
+
+    /**
+     * Start the HTML for the row for the extension
+     *
+     * @param helper_plugin_extension_extension $extension The extension
+     */
+    private function start_row(helper_plugin_extension_extension $extension) {
+        $this->form .= '<li id="extensionplugin__'.hsc($extension->getID()).'" class="'.$this->make_class($extension).'">';
+    }
+
+    /**
+     * Add a column with the given class and content
+     * @param string $class The class name
+     * @param string $html  The content
+     */
+    private function populate_column($class, $html) {
+        $this->form .= '<div class="'.$class.' col">'.$html.'</div>'.DOKU_LF;
+    }
+
+    /**
+     * End the row
+     */
+    private function end_row() {
+        $this->form .= '</li>'.DOKU_LF;
+    }
+
+    /**
+     * Generate the link to the plugin homepage
+     *
+     * @param helper_plugin_extension_extension $extension The extension
+     * @return string The HTML code
+     */
+    function make_homepagelink(helper_plugin_extension_extension $extension) {
+        $text = $this->getLang('homepage_link');
+        $url = hsc($extension->getURL());
+        return '<a href="'.$url.'" title="'.$url.'" class ="urlextern">'.$text.'</a> ';
+    }
+
+    /**
+     * Generate the class name for the row of the extensio
+     *
+     * @param helper_plugin_extension_extension $extension The extension object
+     * @return string The class name
+     */
+    function make_class(helper_plugin_extension_extension $extension) {
+        $class = ($extension->isTemplate()) ? 'template' : 'plugin';
+        if($extension->isInstalled()) {
+            $class.=' installed';
+            $class.= ($extension->isEnabled()) ? ' enabled':' disabled';
+            if($extension->updateAvailable()) $class .= ' updatable';
+        }
+        if(!$extension->canModify()) $class.= ' notselect';
+        if($extension->isProtected()) $class.=  ' protected';
+        //if($this->showinfo) $class.= ' showinfo';
+        return $class;
+    }
+
+    /**
+     * Generate a link to the author of the extension
+     *
+     * @param helper_plugin_extension_extension $extension The extension object
+     * @return string The HTML code of the link
+     */
+    function make_author(helper_plugin_extension_extension $extension) {
+        global $ID;
+
+        if($extension->getAuthor()) {
+
+            $mailid = $extension->getEmailID();
+            if($mailid){
+                $url = $this->gui->tabURL('search', array('q' => 'authorid:'.$mailid));
+                return '<bdi><a href="'.$url.'" class="author" title="'.$this->getLang('author_hint').'" ><img src="//www.gravatar.com/avatar/'.$mailid.'?s=20&amp;d=mm" width="20" height="20" alt="" /> '.hsc($extension->getAuthor()).'</a></bdi>';
+
+            }else{
+                return '<bdi><span class="author">'.hsc($extension->getAuthor()).'</span></bdi>';
+            }
+        }
+        return "<em class=\"author\">".$this->getLang('unknown_author')."</em>".DOKU_LF;
+    }
+
+    /**
+     * Get the link and image tag for the screenshot/thumbnail
+     *
+     * @param helper_plugin_extension_extension $extension The extension object
+     * @return string The HTML code
+     */
+    function make_screenshot(helper_plugin_extension_extension $extension) {
+        $screen = $extension->getScreenshotURL();
+        $thumb = $extension->getThumbnailURL();
+
+        if($screen) {
+            // use protocol independent URLs for images coming from us #595
+            $screen = str_replace('http://www.dokuwiki.org', '//www.dokuwiki.org', $screen);
+            $thumb = str_replace('http://www.dokuwiki.org', '//www.dokuwiki.org', $thumb);
+
+            $title = sprintf($this->getLang('screenshot'), hsc($extension->getDisplayName()));
+            $img = '<a href="'.hsc($screen).'" target="_blank" class="extension_screenshot">'.
+                '<img alt="'.$title.'" width="120" height="70" src="'.hsc($thumb).'" />'.
+                '</a>';
+        } elseif($extension->isTemplate()) {
+            $img = '<img alt="" width="120" height="70" src="'.DOKU_BASE.'lib/plugins/extension/images/template.png" />';
+
+        } else {
+            $img = '<img alt="" width="120" height="70" src="'.DOKU_BASE.'lib/plugins/extension/images/plugin.png" />';
+        }
+        return '<div class="screenshot" >'.$img.'<span></span></div>'.DOKU_LF;
+    }
+
+    /**
+     * Extension main description
+     *
+     * @param helper_plugin_extension_extension $extension The extension object
+     * @param bool                              $showinfo  Show the info section
+     * @return string The HTML code
+     */
+    function make_legend(helper_plugin_extension_extension $extension, $showinfo = false) {
+        $return  = '<div>';
+        $return .= '<h2>';
+        $return .= sprintf($this->getLang('extensionby'), '<bdi>'.hsc($extension->getDisplayName()).'</bdi>', $this->make_author($extension));
+        $return .= '</h2>'.DOKU_LF;
+
+        $return .= $this->make_screenshot($extension);
+
+        $popularity = $extension->getPopularity();
+        if ($popularity !== false && !$extension->isBundled()) {
+            $popularityText = sprintf($this->getLang('popularity'), round($popularity*100, 2));
+            $return .= '<div class="popularity" title="'.$popularityText.'"><div style="width: '.($popularity * 100).'%;"><span class="a11y">'.$popularityText.'</span></div></div>'.DOKU_LF;
+        }
+
+        if($extension->getDescription()) {
+            $return .= '<p><bdi>';
+            $return .=  hsc($extension->getDescription()).' ';
+            $return .= '</bdi></p>'.DOKU_LF;
+        }
+
+        $return .= $this->make_linkbar($extension);
+
+        if($showinfo){
+            $url = $this->gui->tabURL('');
+            $class = 'close';
+        }else{
+            $url = $this->gui->tabURL('', array('info' => $extension->getID()));
+            $class = '';
+        }
+        $return .= ' <a href="'.$url.'#extensionplugin__'.$extension->getID().'" class="info '.$class.'" title="'.$this->getLang('btn_info').'" data-extid="'.$extension->getID().'">'.$this->getLang('btn_info').'</a>';
+
+        if ($showinfo) {
+            $return .= $this->make_info($extension);
+        }
+        $return .= $this->make_noticearea($extension);
+        $return .= '</div>'.DOKU_LF;
+        return $return;
+    }
+
+    /**
+     * Generate the link bar HTML code
+     *
+     * @param helper_plugin_extension_extension $extension The extension instance
+     * @return string The HTML code
+     */
+    function make_linkbar(helper_plugin_extension_extension $extension) {
+        $return  = '<div class="linkbar">';
+        $return .= $this->make_homepagelink($extension);
+        if ($extension->getBugtrackerURL()) {
+            $return .= ' <a href="'.hsc($extension->getBugtrackerURL()).'" title="'.hsc($extension->getBugtrackerURL()).'" class ="bugs">'.$this->getLang('bugs_features').'</a> ';
+        }
+        if ($extension->getTags()){
+            $first = true;
+            $return .= '<span class="tags">'.$this->getLang('tags').' ';
+            foreach ($extension->getTags() as $tag) {
+                if (!$first){
+                    $return .= ', ';
+                } else {
+                    $first = false;
+                }
+                $url = $this->gui->tabURL('search', array('q' => 'tag:'.$tag));
+                $return .= '<bdi><a href="'.$url.'">'.hsc($tag).'</a></bdi>';
+            }
+            $return .= '</span>';
+        }
+        $return .= '</div>'.DOKU_LF;
+        return $return;
+    }
+
+    /**
+     * Notice area
+     *
+     * @param helper_plugin_extension_extension $extension The extension
+     * @return string The HTML code
+     */
+    function make_noticearea(helper_plugin_extension_extension $extension) {
+        $return = '';
+        $missing_dependencies = $extension->getMissingDependencies();
+        if(!empty($missing_dependencies)) {
+            $return .= '<div class="msg error">'.
+                sprintf($this->getLang('missing_dependency'), '<bdi>'.implode(', ', /*array_map(array($this->helper, 'make_extensionsearchlink'),*/ $missing_dependencies).'</bdi>').
+                '</div>';
+        }
+        if($extension->isInWrongFolder()) {
+            $return .= '<div class="msg error">'.
+                sprintf($this->getLang('wrong_folder'), '<bdi>'.hsc($extension->getInstallName()).'</bdi>', '<bdi>'.hsc($extension->getBase()).'</bdi>').
+                '</div>';
+        }
+        if(($securityissue = $extension->getSecurityIssue()) !== false) {
+            $return .= '<div class="msg error">'.
+                sprintf($this->getLang('security_issue'), '<bdi>'.hsc($securityissue).'</bdi>').
+                '</div>';
+        }
+        if(($securitywarning = $extension->getSecurityWarning()) !== false) {
+            $return .= '<div class="msg notify">'.
+                sprintf($this->getLang('security_warning'), '<bdi>'.hsc($securitywarning).'</bdi>').
+                '</div>';
+        }
+        if($extension->updateAvailable()) {
+            $return .=  '<div class="msg notify">'.
+                sprintf($this->getLang('update_available'), hsc($extension->getLastUpdate())).
+                '</div>';
+        }
+        if($extension->hasDownloadURLChanged()) {
+            $return .=  '<div class="msg notify">'.
+                sprintf($this->getLang('url_change'), '<bdi>'.hsc($extension->getDownloadURL()).'</bdi>', '<bdi>'.hsc($extension->getLastDownloadURL()).'</bdi>').
+                '</div>';
+        }
+        return $return.DOKU_LF;
+    }
+
+    /**
+     * Create a link from the given URL
+     *
+     * Shortens the URL for display
+     *
+     * @param string $url
+     * @return string  HTML link
+     */
+    function shortlink($url){
+        $link = parse_url($url);
+
+        $base = $link['host'];
+        if(!empty($link['port'])) $base .= $base.':'.$link['port'];
+        $long = $link['path'];
+        if(!empty($link['query'])) $long .= $link['query'];
+
+        $name = shorten($base, $long, 55);
+
+        return '<a href="'.hsc($url).'" class="urlextern">'.hsc($name).'</a>';
+    }
+
+    /**
+     * Plugin/template details
+     *
+     * @param helper_plugin_extension_extension $extension The extension
+     * @return string The HTML code
+     */
+    function make_info(helper_plugin_extension_extension $extension) {
+        $default = $this->getLang('unknown');
+        $return = '<dl class="details">';
+
+        $return .= '<dt>'.$this->getLang('status').'</dt>';
+        $return .= '<dd>'.$this->make_status($extension).'</dd>';
+
+        if ($extension->getDonationURL()) {
+            $return .= '<dt>'.$this->getLang('donate').'</dt>';
+            $return .= '<dd>';
+            $return .= '<a href="'.$extension->getDonationURL().'" class="donate">'.$this->getLang('donate_action').'</a>';
+            $return .= '</dd>';
+        }
+
+        if (!$extension->isBundled()) {
+            $return .= '<dt>'.$this->getLang('downloadurl').'</dt>';
+            $return .= '<dd><bdi>';
+            $return .= ($extension->getDownloadURL() ? $this->shortlink($extension->getDownloadURL()) : $default);
+            $return .= '</bdi></dd>';
+
+            $return .= '<dt>'.$this->getLang('repository').'</dt>';
+            $return .= '<dd><bdi>';
+            $return .= ($extension->getSourcerepoURL() ? $this->shortlink($extension->getSourcerepoURL()) : $default);
+            $return .= '</bdi></dd>';
+        }
+
+        if ($extension->isInstalled()) {
+            if ($extension->getInstalledVersion()) {
+                $return .= '<dt>'.$this->getLang('installed_version').'</dt>';
+                $return .= '<dd>';
+                $return .= hsc($extension->getInstalledVersion());
+                $return .= '</dd>';
+            }
+            if (!$extension->isBundled()) {
+                $return .= '<dt>'.$this->getLang('install_date').'</dt>';
+                $return .= '<dd>';
+                $return .= ($extension->getUpdateDate() ? hsc($extension->getUpdateDate()) : $this->getLang('unknown'));
+                $return .= '</dd>';
+            }
+        }
+        if (!$extension->isInstalled() || $extension->updateAvailable()) {
+            $return .= '<dt>'.$this->getLang('available_version').'</dt>';
+            $return .= '<dd>';
+            $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown'));
+            $return .= '</dd>';
+        }
+
+        $return .= '<dt>'.$this->getLang('provides').'</dt>';
+        $return .= '<dd><bdi>';
+        $return .= ($extension->getTypes() ? hsc(implode(', ', $extension->getTypes())) : $default);
+        $return .= '</bdi></dd>';
+
+        if(!$extension->isBundled() && $extension->getCompatibleVersions()) {
+            $return .= '<dt>'.$this->getLang('compatible').'</dt>';
+            $return .= '<dd>';
+            foreach ($extension->getCompatibleVersions() as $date => $version) {
+                $return .= '<bdi>'.$version['label'].' ('.$date.')</bdi>, ';
+            }
+            $return = rtrim($return, ', ');
+            $return .= '</dd>';
+        }
+        if($extension->getDependencies()) {
+            $return .= '<dt>'.$this->getLang('depends').'</dt>';
+            $return .= '<dd>';
+            $return .= $this->make_linklist($extension->getDependencies());
+            $return .= '</dd>';
+        }
+
+        if($extension->getSimilarExtensions()) {
+            $return .= '<dt>'.$this->getLang('similar').'</dt>';
+            $return .= '<dd>';
+            $return .= $this->make_linklist($extension->getSimilarExtensions());
+            $return .= '</dd>';
+        }
+
+        if($extension->getConflicts()) {
+            $return .= '<dt>'.$this->getLang('conflicts').'</dt>';
+            $return .= '<dd>';
+            $return .= $this->make_linklist($extension->getConflicts());
+            $return .= '</dd>';
+        }
+        $return .= '</dl>'.DOKU_LF;
+        return $return;
+    }
+
+    /**
+     * Generate a list of links for extensions
+     *
+     * @param array $ext The extensions
+     * @return string The HTML code
+     */
+    function make_linklist($ext) {
+        $return = '';
+        foreach ($ext as $link) {
+            $return .= '<bdi><a href="'.$this->gui->tabURL('search', array('q'=>'ext:'.$link)).'">'.hsc($link).'</a></bdi>, ';
+        }
+        return rtrim($return, ', ');
+    }
+
+    /**
+     * Display the action buttons if they are possible
+     *
+     * @param helper_plugin_extension_extension $extension The extension
+     * @return string The HTML code
+     */
+    function make_actions(helper_plugin_extension_extension $extension) {
+        global $conf;
+        $return = '';
+        $errors = '';
+
+        if ($extension->isInstalled()) {
+            if (($canmod = $extension->canModify()) === true) {
+                if (!$extension->isProtected()) {
+                    $return .= $this->make_action('uninstall', $extension);
+                }
+                if ($extension->getDownloadURL()) {
+                    if ($extension->updateAvailable()) {
+                        $return .= $this->make_action('update', $extension);
+                    } else {
+                        $return .= $this->make_action('reinstall', $extension);
+                    }
+                }
+            }else{
+                $errors .= '<p class="permerror">'.$this->getLang($canmod).'</p>';
+            }
+
+            if (!$extension->isProtected() && !$extension->isTemplate()) { // no enable/disable for templates
+                if ($extension->isEnabled()) {
+                    $return .= $this->make_action('disable', $extension);
+                } else {
+                    $return .= $this->make_action('enable', $extension);
+                }
+            }
+
+            if ($extension->isGitControlled()){
+                $errors .= '<p class="permerror">'.$this->getLang('git').'</p>';
+            }
+
+            if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['authtype'] != $extension->getID()) {
+                $errors .= '<p class="permerror">'.$this->getLang('auth').'</p>';
+            }
+
+        }else{
+            if (($canmod = $extension->canModify()) === true) {
+                if ($extension->getDownloadURL()) {
+                    $return .= $this->make_action('install', $extension);
+                }
+            }else{
+                $errors .= '<div class="permerror">'.$this->getLang($canmod).'</div>';
+            }
+        }
+
+        if (!$extension->isInstalled() && $extension->getDownloadURL()) {
+            $return .= ' <span class="version">'.$this->getLang('available_version').' ';
+            $return .= ($extension->getLastUpdate() ? hsc($extension->getLastUpdate()) : $this->getLang('unknown')).'</span>';
+        }
+
+        return $return.' '.$errors.DOKU_LF;
+    }
+
+    /**
+     * Display an action button for an extension
+     *
+     * @param string                            $action    The action
+     * @param helper_plugin_extension_extension $extension The extension
+     * @return string The HTML code
+     */
+    function make_action($action, $extension) {
+        $title = '';
+
+        switch ($action) {
+            case 'install':
+            case 'reinstall':
+                $title = 'title="'.hsc($extension->getDownloadURL()).'"';
+                break;
+        }
+
+        $classes = 'button '.$action;
+        $name    = 'fn['.$action.']['.hsc($extension->getID()).']';
+
+        return '<button class="'.$classes.'" name="'.$name.'" type="submit" '.$title.'>'.$this->getLang('btn_'.$action).'</button> ';
+    }
+
+    /**
+     * Plugin/template status
+     *
+     * @param helper_plugin_extension_extension $extension The extension
+     * @return string The description of all relevant statusses
+     */
+    function make_status(helper_plugin_extension_extension $extension) {
+        $status = array();
+
+
+        if ($extension->isInstalled()) {
+            $status[] = $this->getLang('status_installed');
+            if ($extension->isProtected()) {
+                $status[] = $this->getLang('status_protected');
+            } else {
+                $status[] = $extension->isEnabled() ? $this->getLang('status_enabled') : $this->getLang('status_disabled');
+            }
+        } else {
+            $status[] = $this->getLang('status_not_installed');
+        }
+        if(!$extension->canModify()) $status[] = $this->getLang('status_unmodifiable');
+        if($extension->isBundled()) $status[] = $this->getLang('status_bundled');
+        $status[] = $extension->isTemplate() ? $this->getLang('status_template') : $this->getLang('status_plugin');
+        return join(', ', $status);
+    }
+
+}
diff --git a/wiki/lib/plugins/extension/helper/repository.php b/wiki/lib/plugins/extension/helper/repository.php
new file mode 100644
index 0000000..5dc2707
--- /dev/null
+++ b/wiki/lib/plugins/extension/helper/repository.php
@@ -0,0 +1,191 @@
+<?php
+/**
+ * DokuWiki Plugin extension (Helper Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Michael Hamann <michael@content-space.de>
+ */
+
+#define('EXTENSION_REPOSITORY_API', 'http://localhost/dokuwiki/lib/plugins/pluginrepo/api.php');
+
+if (!defined('EXTENSION_REPOSITORY_API_ENDPOINT'))
+    define('EXTENSION_REPOSITORY_API', 'http://www.dokuwiki.org/lib/plugins/pluginrepo/api.php');
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class helper_plugin_extension_repository provides access to the extension repository on dokuwiki.org
+ */
+class helper_plugin_extension_repository extends DokuWiki_Plugin {
+    private $loaded_extensions = array();
+    private $has_access = null;
+    /**
+     * Initialize the repository (cache), fetches data for all installed plugins
+     */
+    public function init() {
+        /* @var Doku_Plugin_Controller $plugin_controller */
+        global $plugin_controller;
+        if ($this->hasAccess()) {
+            $list = $plugin_controller->getList('', true);
+            $request_data = array('fmt' => 'php');
+            $request_needed = false;
+            foreach ($list as $name) {
+                $cache = new cache('##extension_manager##'.$name, '.repo');
+
+                if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) {
+                    $this->loaded_extensions[$name] = true;
+                    $request_data['ext'][] = $name;
+                    $request_needed = true;
+                }
+            }
+
+            if ($request_needed) {
+                $httpclient = new DokuHTTPClient();
+                $data = $httpclient->post(EXTENSION_REPOSITORY_API, $request_data);
+                if ($data !== false) {
+                    $extensions = unserialize($data);
+                    foreach ($extensions as $extension) {
+                        $cache = new cache('##extension_manager##'.$extension['plugin'], '.repo');
+                        $cache->storeCache(serialize($extension));
+                    }
+                } else {
+                    $this->has_access = false;
+                }
+            }
+        }
+    }
+
+    /**
+     * If repository access is available
+     *
+     * @return bool If repository access is available
+     */
+    public function hasAccess() {
+        if ($this->has_access === null) {
+            $cache = new cache('##extension_manager###hasAccess', '.repo');
+
+            if (!$cache->useCache(array('age' => 3600 * 24, 'purge'=>1))) {
+                $httpclient = new DokuHTTPClient();
+                $httpclient->timeout = 5;
+                $data = $httpclient->get(EXTENSION_REPOSITORY_API.'?cmd=ping');
+                if ($data !== false) {
+                    $this->has_access = true;
+                    $cache->storeCache(1);
+                } else {
+                    $this->has_access = false;
+                    $cache->storeCache(0);
+                }
+            } else {
+                $this->has_access = ($cache->retrieveCache(false) == 1);
+            }
+        }
+        return $this->has_access;
+    }
+
+    /**
+     * Get the remote data of an individual plugin or template
+     *
+     * @param string $name  The plugin name to get the data for, template names need to be prefix by 'template:'
+     * @return array The data or null if nothing was found (possibly no repository access)
+     */
+    public function getData($name) {
+        $cache = new cache('##extension_manager##'.$name, '.repo');
+
+        if (!isset($this->loaded_extensions[$name]) && $this->hasAccess() && !$cache->useCache(array('age' => 3600 * 24))) {
+            $this->loaded_extensions[$name] = true;
+            $httpclient = new DokuHTTPClient();
+            $data = $httpclient->get(EXTENSION_REPOSITORY_API.'?fmt=php&ext[]='.urlencode($name));
+            if ($data !== false) {
+                $result = unserialize($data);
+                $cache->storeCache(serialize($result[0]));
+                return $result[0];
+            } else {
+                $this->has_access = false;
+            }
+        }
+        if (file_exists($cache->cache)) {
+            return unserialize($cache->retrieveCache(false));
+        }
+        return array();
+    }
+
+    /**
+     * Search for plugins or templates using the given query string
+     *
+     * @param string $q the query string
+     * @return array a list of matching extensions
+     */
+    public function search($q){
+        $query = $this->parse_query($q);
+        $query['fmt'] = 'php';
+
+        $httpclient = new DokuHTTPClient();
+        $data = $httpclient->post(EXTENSION_REPOSITORY_API, $query);
+        if ($data === false) return array();
+        $result = unserialize($data);
+
+        $ids = array();
+
+        // store cache info for each extension
+        foreach($result as $ext){
+            $name = $ext['plugin'];
+            $cache = new cache('##extension_manager##'.$name, '.repo');
+            $cache->storeCache(serialize($ext));
+            $ids[] = $name;
+        }
+
+        return $ids;
+    }
+
+    /**
+     * Parses special queries from the query string
+     *
+     * @param string $q
+     * @return array
+     */
+    protected function parse_query($q){
+        $parameters = array(
+            'tag'  => array(),
+            'mail' => array(),
+            'type' => array(),
+            'ext'  => array()
+        );
+
+        // extract tags
+        if(preg_match_all('/(^|\s)(tag:([\S]+))/', $q, $matches, PREG_SET_ORDER)){
+            foreach($matches as $m){
+                $q = str_replace($m[2], '', $q);
+                $parameters['tag'][] = $m[3];
+            }
+        }
+        // extract author ids
+        if(preg_match_all('/(^|\s)(authorid:([\S]+))/', $q, $matches, PREG_SET_ORDER)){
+            foreach($matches as $m){
+                $q = str_replace($m[2], '', $q);
+                $parameters['mail'][] = $m[3];
+            }
+        }
+        // extract extensions
+        if(preg_match_all('/(^|\s)(ext:([\S]+))/', $q, $matches, PREG_SET_ORDER)){
+            foreach($matches as $m){
+                $q = str_replace($m[2], '', $q);
+                $parameters['ext'][] = $m[3];
+            }
+        }
+        // extract types
+        if(preg_match_all('/(^|\s)(type:([\S]+))/', $q, $matches, PREG_SET_ORDER)){
+            foreach($matches as $m){
+                $q = str_replace($m[2], '', $q);
+                $parameters['type'][] = $m[3];
+            }
+        }
+
+        // FIXME make integer from type value
+
+        $parameters['q'] = trim($q);
+        return $parameters;
+    }
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/wiki/lib/plugins/extension/images/bug.gif b/wiki/lib/plugins/extension/images/bug.gif
new file mode 100644
index 0000000..08c1ca1
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/bug.gif
Binary files differdiff --git a/wiki/lib/plugins/extension/images/disabled.png b/wiki/lib/plugins/extension/images/disabled.png
new file mode 100644
index 0000000..9c18b04
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/disabled.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/donate.png b/wiki/lib/plugins/extension/images/donate.png
new file mode 100644
index 0000000..a76dfaa
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/donate.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/down.png b/wiki/lib/plugins/extension/images/down.png
new file mode 100644
index 0000000..8e399a9
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/down.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/enabled.png b/wiki/lib/plugins/extension/images/enabled.png
new file mode 100644
index 0000000..edbbb5b
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/enabled.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/icons.xcf b/wiki/lib/plugins/extension/images/icons.xcf
new file mode 100644
index 0000000..ab69b30
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/icons.xcf
Binary files differdiff --git a/wiki/lib/plugins/extension/images/license.txt b/wiki/lib/plugins/extension/images/license.txt
new file mode 100644
index 0000000..44e176a
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/license.txt
@@ -0,0 +1,4 @@
+enabled.png - CC0, (c) Tanguy Ortolo
+disabled.png - public domain, (c) Tango Desktop Project http://commons.wikimedia.org/wiki/File:Dialog-information.svg
+plugin.png - public domain, (c) nicubunu, http://openclipart.org/detail/15093/blue-jigsaw-piece-07-by-nicubunu
+template.png - public domain, (c) mathec, http://openclipart.org/detail/166596/palette-by-mathec
diff --git a/wiki/lib/plugins/extension/images/overlay.png b/wiki/lib/plugins/extension/images/overlay.png
new file mode 100644
index 0000000..5414206
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/overlay.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/plugin.png b/wiki/lib/plugins/extension/images/plugin.png
new file mode 100644
index 0000000..62424b2
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/plugin.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/tag.png b/wiki/lib/plugins/extension/images/tag.png
new file mode 100644
index 0000000..1b1dd75
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/tag.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/template.png b/wiki/lib/plugins/extension/images/template.png
new file mode 100644
index 0000000..67240d1
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/template.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/up.png b/wiki/lib/plugins/extension/images/up.png
new file mode 100644
index 0000000..531b2dd
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/up.png
Binary files differdiff --git a/wiki/lib/plugins/extension/images/warning.png b/wiki/lib/plugins/extension/images/warning.png
new file mode 100644
index 0000000..c1af79f
--- /dev/null
+++ b/wiki/lib/plugins/extension/images/warning.png
Binary files differdiff --git a/wiki/lib/plugins/extension/lang/bg/intro_install.txt b/wiki/lib/plugins/extension/lang/bg/intro_install.txt
new file mode 100644
index 0000000..34b9248
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/bg/intro_install.txt
@@ -0,0 +1 @@
+От тук можете да инсталирате ръчно приставки и шаблони като качите архив или посочите URL за сваляне на архива.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/bg/intro_plugins.txt b/wiki/lib/plugins/extension/lang/bg/intro_plugins.txt
new file mode 100644
index 0000000..927f617
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/bg/intro_plugins.txt
@@ -0,0 +1 @@
+Това са инсталираните приставки. От тук можете да ги включвате и изключвате както и да ги деинсталирате. Тук ще виждате и наличните актуализации, като преди всяка такава прочетете документацията на съответната приставка.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/bg/intro_search.txt b/wiki/lib/plugins/extension/lang/bg/intro_search.txt
new file mode 100644
index 0000000..cec4cd2
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/bg/intro_search.txt
@@ -0,0 +1 @@
+От тук имате достъп до всички налични приставки и шаблони за DokuWiki, които са дело на трети лица. Имайте предвид, че кодът им е потенциален **риск за сигурността на сървъра**! Повече по  темата можете да прочетете в [[doku>security#plugin_security|plugin security]] first.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/bg/intro_templates.txt b/wiki/lib/plugins/extension/lang/bg/intro_templates.txt
new file mode 100644
index 0000000..8824b4d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/bg/intro_templates.txt
@@ -0,0 +1 @@
+Това са инсталираните шаблони. Можете да определите кой шаблон да се ползва от [[?do=admin&page=config|Настройки]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/bg/lang.php b/wiki/lib/plugins/extension/lang/bg/lang.php
new file mode 100644
index 0000000..dda69a4
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/bg/lang.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['menu']                  = 'Диспечер на приставки';
+$lang['tab_plugins']           = 'Инсталирани приставки';
+$lang['tab_templates']         = 'Инсталирани шаблони';
+$lang['tab_search']            = 'Търсене и инсталиране';
+$lang['tab_install']           = 'Ръчно инсталиране';
+$lang['notimplemented']        = 'Функционалността все още не реализирана';
+$lang['notinstalled']          = 'Приставката не е инсталирана';
+$lang['alreadyenabled']        = 'Приставката е включена';
+$lang['alreadydisabled']       = 'Приставката е изключена';
+$lang['pluginlistsaveerror']   = 'Възникна грешка при записването на списъка с приставки';
+$lang['unknownauthor']         = 'Неизвестен автор';
+$lang['unknownversion']        = 'Неизвестна версия';
+$lang['btn_info']              = 'Повече информация';
+$lang['btn_update']            = 'Актуализиране';
+$lang['btn_uninstall']         = 'Деинсталиране';
+$lang['btn_enable']            = 'Включване';
+$lang['btn_disable']           = 'Изключване';
+$lang['btn_install']           = 'Инсталиране';
+$lang['btn_reinstall']         = 'Преинсталиране';
+$lang['js']['reallydel']       = 'Наистина ли желаете приставката да бъде деинсталирана?';
+$lang['js']['display_viewoptions'] = 'Филтриране:';
+$lang['js']['display_enabled'] = 'включени';
+$lang['js']['display_disabled'] = 'изключени';
+$lang['js']['display_updatable'] = 'с налични актуализации';
+$lang['search_for']            = 'Търсене за приставки:';
+$lang['search']                = 'Търсене';
+$lang['extensionby']           = '<strong>%s</strong> от %s';
+$lang['popularity']            = 'Популярност: %s%%';
+$lang['homepage_link']         = 'Документи';
+$lang['tags']                  = 'Етикети:';
+$lang['author_hint']           = 'Търсене за други приставки от този автор';
+$lang['installed']             = 'Инсталирано:';
+$lang['downloadurl']           = 'Сваляне от URL:';
+$lang['repository']            = 'Хранилище:';
+$lang['unknown']               = '<em>неизвестно</em>';
+$lang['installed_version']     = 'Инсталирана версия:';
+$lang['install_date']          = 'Посл. актуализиране:';
+$lang['available_version']     = 'Налична версия:';
+$lang['compatible']            = 'Съвместимост с:';
+$lang['depends']               = 'Изисква:';
+$lang['similar']               = 'Наподобява:';
+$lang['conflicts']             = 'В кофликт с:';
+$lang['donate']                = 'Харесва ли ви?';
+$lang['donate_action']         = 'Купете на автора кафе!';
+$lang['repo_retry']            = 'Повторен опит';
+$lang['provides']              = 'Осигурява:';
+$lang['status']                = 'Състояние:';
+$lang['status_installed']      = 'инсталирана';
+$lang['status_not_installed']  = 'неинсталирана';
+$lang['status_protected']      = 'защитена';
+$lang['status_enabled']        = 'включена';
+$lang['status_disabled']       = 'изключена';
+$lang['status_plugin']         = 'приставка';
+$lang['status_template']       = 'шаблон';
+$lang['msg_enabled']           = 'Приставката "%s" е включена';
+$lang['msg_disabled']          = 'Приставката "%s" е изключена';
+$lang['msg_delete_success']    = 'Приставката "%s" е деинсталирана';
+$lang['msg_delete_failed']     = 'Деинсталирането на приставката "%s" се провали ';
+$lang['msg_template_install_success'] = 'Шаблонът "%s" е инсталиран успешно';
+$lang['msg_template_update_success'] = 'Шаблонът "%s" е актуализиран успешно';
+$lang['msg_plugin_install_success'] = 'Приставката "%s" е инсталирана успешно';
+$lang['msg_plugin_update_success'] = 'Приставката "%s" е актуализирана успешно';
+$lang['msg_upload_failed']     = 'Качването на файлът се провали';
+$lang['missing_dependency']    = '<strong>Изискван компонент липсва или е изключен:</strong> %s';
+$lang['security_issue']        = '<strong>Проблем със сигурността:</strong> %s';
+$lang['security_warning']      = '<strong>Предупреждние за сигурността:</strong> %s';
+$lang['update_available']      = '<strong>Актуализация:</strong> Налична е нова версия - %s';
+$lang['wrong_folder']          = '<strong>Некоректно инсталирана приставка:</strong> Преименувайте директорията "%s" на "%s".';
+$lang['error_badurl']          = 'URL адресите трябва да започват с http или https';
+$lang['error_dircreate']       = 'Създаването на временна поапка за получаване на файла не е възможно';
+$lang['error_download']        = 'Невъзможност за сваляне на файл: %s';
+$lang['noperms']               = 'Директория на разширението не е достъпна за писане';
+$lang['notplperms']            = 'Директория на шаблона не е достъпна за писане';
+$lang['nopluginperms']         = 'Директория на приставката не е достъпна за писане';
+$lang['install_url']           = 'Инсталиране от URL:';
+$lang['install_upload']        = 'Качване:';
+$lang['repo_error']            = 'Няма връзка с хранилището на добавката. Проверете възможна ли е комуникацията www.dokuwiki.org и прокси настройките.';
diff --git a/wiki/lib/plugins/extension/lang/cs/intro_install.txt b/wiki/lib/plugins/extension/lang/cs/intro_install.txt
new file mode 100644
index 0000000..b274959
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cs/intro_install.txt
@@ -0,0 +1 @@
+Zde můžete ručně instalovat zásuvné moduly a šablony vzhledu, buď nahráním, nebo zadáním přímé URL pro stažení.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/cs/intro_plugins.txt b/wiki/lib/plugins/extension/lang/cs/intro_plugins.txt
new file mode 100644
index 0000000..a6f6274
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cs/intro_plugins.txt
@@ -0,0 +1 @@
+Toto je seznam momentálně nainstalovaných zásuvných modulů vaší DokuWiki. V tomto seznamu je lze zapínat, vypínat nebo kompletně odinstalovat. Jsou zde také vidět dostupné aktualizace pro moduly, ale před jejich případným aktualizováním si vždy přečtěte jejich dokumentaci.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/cs/intro_search.txt b/wiki/lib/plugins/extension/lang/cs/intro_search.txt
new file mode 100644
index 0000000..4258ac4
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cs/intro_search.txt
@@ -0,0 +1 @@
+Tato záložka poskytuje náhled na všechny dostupné moduly a šablony třetích stran pro DokuWiki. Jejich instalací se múžete vystavit **bezpečnostním rizikům** o kterých se můžete více dočíst v oddíle [[doku>security#plugin_security|plugin security]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/cs/intro_templates.txt b/wiki/lib/plugins/extension/lang/cs/intro_templates.txt
new file mode 100644
index 0000000..45abe95
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cs/intro_templates.txt
@@ -0,0 +1 @@
+Toto jsou šablony, které jsou momentálně nainstalovány v této DokuWiki. Aktuálně používanu šablonu lze vybrat ve [[?do=admin&page=config|Správci rozšíření]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/cs/lang.php b/wiki/lib/plugins/extension/lang/cs/lang.php
new file mode 100644
index 0000000..4438376
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cs/lang.php
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Viktor Zavadil <vzavadil@newps.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Turkislav <turkislav@blabla.com>
+ * @author Martin Růžička <martinr@post.cz>
+ */
+$lang['menu']                  = 'Správa rozšíření';
+$lang['tab_plugins']           = 'Instalované moduly';
+$lang['tab_templates']         = 'Instalované šablony';
+$lang['tab_search']            = 'Vyhledej a instaluj';
+$lang['tab_install']           = 'Ruční instalace';
+$lang['notimplemented']        = 'Tato vychytávka není dosud implementována';
+$lang['notinstalled']          = 'Toto rozšíření není instalováno';
+$lang['alreadyenabled']        = 'Toto rozšíření je již povoleno';
+$lang['alreadydisabled']       = 'Toto rozšíření je již vypnuto';
+$lang['pluginlistsaveerror']   = 'Došlo k chybě při ukládání seznamu zásuvných modulů';
+$lang['unknownauthor']         = 'Neznámý autor';
+$lang['unknownversion']        = 'Neznámá verze';
+$lang['btn_info']              = 'Zobrazit více informací';
+$lang['btn_update']            = 'Aktualizovat';
+$lang['btn_uninstall']         = 'Odinstalovat';
+$lang['btn_enable']            = 'Povolit';
+$lang['btn_disable']           = 'Zakázat';
+$lang['btn_install']           = 'Instalovat';
+$lang['btn_reinstall']         = 'Přeinstalovat';
+$lang['js']['reallydel']       = 'Opravdu odinstalovat toto rozšíření?';
+$lang['js']['display_viewoptions'] = 'Zobrazit možnosti:';
+$lang['js']['display_enabled'] = 'povolit';
+$lang['js']['display_disabled'] = 'zakázat';
+$lang['js']['display_updatable'] = 'aktualizovatelné';
+$lang['search_for']            = 'Hledat rozšíření:';
+$lang['search']                = 'Hledat';
+$lang['extensionby']           = '<strong>%s</strong> od %s';
+$lang['screenshot']            = 'Screenshot %s';
+$lang['popularity']            = 'Popularita: %s%%';
+$lang['homepage_link']         = 'Dokumenty';
+$lang['bugs_features']         = 'Chyby';
+$lang['tags']                  = 'Štítky:';
+$lang['author_hint']           = 'Vyhledat rozšíření podle tohoto autora';
+$lang['installed']             = 'Nainstalováno:';
+$lang['downloadurl']           = 'URL stahování:';
+$lang['repository']            = 'Repozitář:';
+$lang['unknown']               = '<em>neznámý</em>';
+$lang['installed_version']     = 'Nainstalovaná verze:';
+$lang['install_date']          = 'Poslední aktualizace';
+$lang['available_version']     = 'Dostupná verze:';
+$lang['compatible']            = 'Kompatibilní s:';
+$lang['depends']               = 'Závisí na:';
+$lang['similar']               = 'Podobný jako:';
+$lang['conflicts']             = 'Koliduje s:';
+$lang['donate']                = 'Líbí se ti to?';
+$lang['donate_action']         = 'Kup autorovi kávu!';
+$lang['repo_retry']            = 'Opakovat';
+$lang['provides']              = 'Poskytuje:';
+$lang['status']                = 'Stav:';
+$lang['status_installed']      = 'instalovaný';
+$lang['status_not_installed']  = 'nenainstalovaný';
+$lang['status_protected']      = 'chráněný';
+$lang['status_enabled']        = 'povolený';
+$lang['status_disabled']       = 'zakázaný';
+$lang['status_unmodifiable']   = 'neměnný';
+$lang['status_plugin']         = 'zásuvný modul';
+$lang['status_template']       = 'šablona';
+$lang['status_bundled']        = 'svázaný';
+$lang['msg_enabled']           = 'Zásuvný modul %s povolen';
+$lang['msg_disabled']          = 'Zásuvný modul %s zakázán';
+$lang['msg_delete_success']    = 'Rozšíření %s odinstalováno';
+$lang['msg_delete_failed']     = 'Odinstalování rozšíření %s selhalo';
+$lang['msg_template_install_success'] = 'Šablona %s úspěšně nainstalována';
+$lang['msg_template_update_success'] = 'Šablona %s úspěšně aktualizována';
+$lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.';
+$lang['msg_plugin_update_success'] = 'Zásuvný modul %s úspěšně aktualizován.';
+$lang['msg_upload_failed']     = 'Nahrávání souboru selhalo';
+$lang['missing_dependency']    = '<strong>Chybějící nebo zakázaná závislost:</strong> %s';
+$lang['security_issue']        = '<strong>Bezpečnostní problém:</strong> %s';
+$lang['security_warning']      = '<strong>Bezpečnostní varování:</strong> %s';
+$lang['update_available']      = '<strong>Aktualizace:</strong> Je dostupná nová verze %s.';
+$lang['wrong_folder']          = '<strong>Zásuvný modul nesprávně nainstalován:</strong> Přejmenujte adresář modulu "%s" na "%s".';
+$lang['url_change']            = '<strong>URL se změnila:</strong> URL pro stahování se změnila od poslední aktualizace. Před další aktualizací tohoto rozšíření ověřte správnost nové URL.<br />Nová: %s<br />Stará: %s';
+$lang['error_badurl']          = 'Adresy URL by měly začínat s http nebo https';
+$lang['error_dircreate']       = 'Nelze vytvořit dočasný adresář pro přijetí stahování';
+$lang['error_download']        = 'Nelze stáhnout soubor: %s';
+$lang['error_decompress']      = 'Selhalo rozbalení staženého souboru. Toto je nejspíš důsledek poškození souboru při přenosu, zkuste soubor stáhnout znovu; případně nemusel být rozpoznán formát sbaleného souboru a bude třeba přistoupit k ruční instalaci. ';
+$lang['error_findfolder']      = 'Nelze rozpoznat adresář pro rozšíření, je třeba stáhnout a instalovat ručně';
+$lang['error_copy']            = 'Došlo k chybě kopírování souborů při pokusu nainstalovat soubory do adresáře <em>%s</em>: může být plný disk nebo špatně nastavena přístupová práva. Tato chyba mohla zapříčinit pouze částečnou instalaci zásuvného modulu a uvést wiki do nestabilního stavu.';
+$lang['noperms']               = 'Nelze zapisovat do adresáře pro rozšíření';
+$lang['notplperms']            = 'Nelze zapisovat do odkládacího adresáře';
+$lang['nopluginperms']         = 'Nelze zapisovat do adresáře se zásuvnými moduly';
+$lang['git']                   = 'Toto rozšíření bylo nainstalováno přes git. Touto cestou ho nejspíš tady aktualizovat nechcete.';
+$lang['auth']                  = 'Tento ověřovací zásuvný modul není povolen v nastavení, zvažte jeho deaktivaci.';
+$lang['install_url']           = 'Nainstalovat z URL:';
+$lang['install_upload']        = 'Nahrát rozšíření:';
+$lang['repo_error']            = 'Nelze kontaktovat repozitář se zásuvnými moduly. Ujistěte se, že váš server může kontaktovat www.dokuwiki.org a zkontrolujte nastavení proxy.';
+$lang['nossl']                 = 'Použité PHP pravděpodobně nepodporuje SSL. Stažení mnoha DokuWiki rozšíření nebude fungovat.';
diff --git a/wiki/lib/plugins/extension/lang/cy/intro_install.txt b/wiki/lib/plugins/extension/lang/cy/intro_install.txt
new file mode 100644
index 0000000..2bc933e
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cy/intro_install.txt
@@ -0,0 +1 @@
+Gallwch chi arsefydlu ategion a thempledau gan law yma, naill ai gan eu lanlwytho neu gan gyflwyno URL lawrlwytho uniongyrchol.
diff --git a/wiki/lib/plugins/extension/lang/cy/intro_plugins.txt b/wiki/lib/plugins/extension/lang/cy/intro_plugins.txt
new file mode 100644
index 0000000..dd49a7a
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cy/intro_plugins.txt
@@ -0,0 +1 @@
+Dyma'r ategion sydd wedi\'u harsefydlu yn eich DokuWiki yn bresennol. Gallwch chi eu galluogi neu eu hanalluogi nhw neu hyd yn oed eu dad-arsefydlu yn llwyr yma. Caiff diweddariadau'r ategion eu dangos yma hefyd, sicrhewch eich bod chi'n darllen dogfennaeth yr ategyn cyn diweddaru.
diff --git a/wiki/lib/plugins/extension/lang/cy/intro_search.txt b/wiki/lib/plugins/extension/lang/cy/intro_search.txt
new file mode 100644
index 0000000..8aef960
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cy/intro_search.txt
@@ -0,0 +1 @@
+Mae'r tab hwn yn rhoi mynediad i bob ategyn a thempled 3ydd parti ar gael ar gyfer DokuWiki. Sylwch fod arsefydlu cod 3ydd parti yn achosi **risg diogelwch**. Efallai hoffech chi ddarllen mwy ar [[doku>security#plugin_security|ddiogelwch ategion]] yn gyntaf.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/cy/intro_templates.txt b/wiki/lib/plugins/extension/lang/cy/intro_templates.txt
new file mode 100644
index 0000000..4947145
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cy/intro_templates.txt
@@ -0,0 +1 @@
+Dyma'r templedau sydd wedi'u harsefydlu yn eich DokuWiki yn bresennol. Gallwch chi ddewis y templed i'w ddefnyddio yn y [[?do=admin&page=config|Rheolwr Ffurfwedd]].
diff --git a/wiki/lib/plugins/extension/lang/cy/lang.php b/wiki/lib/plugins/extension/lang/cy/lang.php
new file mode 100644
index 0000000..2a2a8c8
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/cy/lang.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Welsh language file for extension plugin
+ *
+ * @author Michael Hamann <michael@content-space.de>
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @author Alan Davies <ben.brynsadler@gmail.com>
+ */
+
+$lang['menu']                         = 'Rheolwr Estyniadau';
+
+$lang['tab_plugins']                  = 'Ategion a Arsefydlwyd';
+$lang['tab_templates']                = 'Templedau a Arsefydlwyd';
+$lang['tab_search']                   = 'Chwilio ac Arsefydlu';
+$lang['tab_install']                  = 'Arsefydlu gan Law';
+
+$lang['notimplemented']               = '\'Dyw\'r nodwedd hon heb ei rhoi ar waith eto';
+$lang['notinstalled']                 = '\'Dyw\'r estyniad hwn heb ei arsefydlu';
+$lang['alreadyenabled']               = 'Cafodd yr estyniad hwn ei alluogi';
+$lang['alreadydisabled']              = 'Cafodd yr estyniad hwn ei analluogi';
+$lang['pluginlistsaveerror']          = 'Roedd gwall wrth gadw\'r rhestr ategion';
+$lang['unknownauthor']                = 'Awdur anhysbys';
+$lang['unknownversion']               = 'Fersiwn anhysbys';
+
+$lang['btn_info']                     = 'Dangos wybodaeth bellach';
+$lang['btn_update']                   = 'Diweddaru';
+$lang['btn_uninstall']                = 'Dad-arsefydlu';
+$lang['btn_enable']                   = 'Galluogi';
+$lang['btn_disable']                  = 'Analluogi';
+$lang['btn_install']                  = 'Arsyfydlu';
+$lang['btn_reinstall']                = 'Ail-arsefydlu';
+
+$lang['js']['reallydel']              = 'Ydych chi wir am ddad-arsefydlu\'r estyniad hwn?';
+
+$lang['search_for']                   = 'Chwilio Estyniadau:';
+$lang['search']                       = 'Chwilio';
+
+$lang['extensionby']                  = '<strong>%s</strong> gan %s';
+$lang['screenshot']                   = 'Sgrinlun %s';
+$lang['popularity']                   = 'Poblogrwydd: %s%%';
+$lang['homepage_link']                = 'Dogfennau';
+$lang['bugs_features']                = 'Bygiau';
+$lang['tags']                         = 'Tagiau:';
+$lang['author_hint']                  = 'Chwilio estyniadau gan awdur';
+$lang['installed']                    = 'Arsefydlwyd:';
+$lang['downloadurl']                  = 'URL Lawlwytho:';
+$lang['repository']                   = 'Ystorfa:';
+$lang['unknown']                      = '<em>anhysbys</em>';
+$lang['installed_version']            = 'Fersiwn a arsefydlwyd:';
+$lang['install_date']                 = 'Eich diweddariad diwethaf:';
+$lang['available_version']            = 'Fersiwn ar gael:';
+$lang['compatible']                   = 'Yn gydnaws â:';
+$lang['depends']                      = 'Yn dibynnu ar:';
+$lang['similar']                      = 'Yn debyg i:';
+$lang['conflicts']                    = 'Y gwrthdaro â:';
+$lang['donate']                       = 'Fel hwn?';
+$lang['donate_action']                = 'Prynwch goffi i\'r awdur!';
+$lang['repo_retry']                   = 'Ailgeisio';
+$lang['provides']                     = 'Darparu:';
+$lang['status']                       = 'Statws:';
+$lang['status_installed']             = 'arsefydlwyd';
+$lang['status_not_installed']         = 'heb ei arsefydlu';
+$lang['status_protected']             = 'amddiffynwyd';
+$lang['status_enabled']               = 'galluogwyd';
+$lang['status_disabled']              = 'analluogwyd';
+$lang['status_unmodifiable']          = 'methu addasu';
+$lang['status_plugin']                = 'ategyn';
+$lang['status_template']              = 'templed';
+$lang['status_bundled']               = 'bwndlwyd';
+
+$lang['msg_enabled']                  = 'Galluogwyd ategyn %s';
+$lang['msg_disabled']                 = 'Analluogwyd ategyn %s';
+$lang['msg_delete_success']           = 'Dad-arsefydlwyd estyniad %s';
+$lang['msg_delete_failed']            = 'Methodd dad-arsefydlu estyniad %s';
+$lang['msg_template_install_success'] = 'Arsefydlwyd templed %s yn llwyddiannus';
+$lang['msg_template_update_success']  = 'Diweddarwyd templed %s yn llwyddiannus';
+$lang['msg_plugin_install_success']   = 'Arsefydlwyd ategyn %s yn llwyddiannus';
+$lang['msg_plugin_update_success']    = 'Diweddarwyd ategyn %s yn llwyddiannus';
+$lang['msg_upload_failed']            = 'Methodd lanlwytho\'r ffeil';
+
+$lang['missing_dependency']           = '<strong>Missing or disabled dependency:</strong> %s';
+$lang['security_issue']               = '<strong>Mater Diogelwch:</strong> %s';
+$lang['security_warning']             = '<strong>Rhybudd Diogelwch:</strong> %s';
+$lang['update_available']             = '<strong>Diweddariad:</strong> Mae fersiwn newydd %s ar gael.';
+$lang['wrong_folder']                 = '<strong>Ategyn wedi\'i arsefydlu\'n anghywir:</strong> Ailenwch ffolder yr ategyn o "%s" i "%s".';
+$lang['url_change']                   = '<strong>Newid i\'r URL:</strong> Newidiodd yr URL lawlwytho ers y diweddariad diwethaf. Gwiriwch i weld os yw\'r URL newydd yn ddilys cyn diweddaru\'r estyniad.<br />Newydd: %s<br />Hen: %s';
+
+$lang['error_badurl']                 = 'Dylai URL ddechrau gyda http neu https';
+$lang['error_dircreate']              = 'Methu â chreu ffolder dros dro er mwyn derbyn y lawrlwythiad';
+$lang['error_download']               = 'Methu lawrlwytho\'r ffeil: %s';
+$lang['error_decompress']             = 'Methu datgywasgu\'r ffeil a lawrlwythwyd. Gall hwn fod o ganlyniad i lawrlwythiad gwael, felly ceisiwch eto; neu gall fod fformat y cywasgiad fod yn anhysbys, felly bydd yn rhaid i chi lawlwytho ac arsefydlu gan law.';
+$lang['error_findfolder']             = 'Methu ag adnabod ffolder yr estyniad, bydd angen lawrlwytho ac arsefydlu gan law';
+$lang['error_copy']                   = 'Roedd gwall copïo ffeil wrth geisio arsefydlu ffeiliau i\'r ffolder <em>%s</em>: gall fod y ddisgen yn llawn neu gall hawliau mynediad i ffeiliau fod yn anghywir. Gall hwn fod wedi achosi ategyn sydd wedi arsefydlu\'n rhannol ac sydd wedi ansefydlogi\'ch arsefydliad wici';
+
+$lang['noperms']                      = '\'Sdim modd ysgrifennu i\'r ffolder estyniadau';
+$lang['notplperms']                   = '\'Sdim modd ysgrifennu i\'r ffolder templedau';
+
+$lang['nopluginperms']                = '\'Sdim modd ysgrifennu i\'r ffolder ategion';
+$lang['git']                          = 'Cafodd yr estyniad hwn ei arsefydlu gan git, mae\'n bosib na fyddwch chi am ei ddiweddaru yma.';
+$lang['auth']                         = '\'Dyw\'r ategyn dilysu hwn heb ei alluogi yn y ffurfwedd, ystyriwch ei analluogi.';
+
+$lang['install_url']                  = 'Arsefydlu o URL:';
+$lang['install_upload']               = 'Lanlwytho Estyniad:';
+
+$lang['repo_error']                   = 'Doedd dim modd cysylltu â\'r ystorfa ategion. Sicrhewch fod hawl gan eich gweinydd i gysylltu â www.dokuwiki.org a gwiriwch eich gosodiadau procsi.';
+$lang['nossl']                        = 'Mae\'n debyg \'dyw eich PHP ddim yn cynnal SSL. Na fydd lawrlwytho yn gweithio ar gyfer nifer o estyniadau DokuWiki.';
+
+$lang['js']['display_viewoptions']    = 'Opsiynau Golwg:';
+$lang['js']['display_enabled']        = 'galluogwyd';
+$lang['js']['display_disabled']       = 'analluogwyd';
+$lang['js']['display_updatable']      = 'gallu diweddaru';
diff --git a/wiki/lib/plugins/extension/lang/da/intro_install.txt b/wiki/lib/plugins/extension/lang/da/intro_install.txt
new file mode 100644
index 0000000..e5657f2
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/da/intro_install.txt
@@ -0,0 +1 @@
+Her kan du installerer plugins eller templates manuelt, ved enten at uploade dem eller angive en direkte URL til download.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/da/intro_plugins.txt b/wiki/lib/plugins/extension/lang/da/intro_plugins.txt
new file mode 100644
index 0000000..5d9deaf
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/da/intro_plugins.txt
@@ -0,0 +1 @@
+Dette er de plugins du aktuelt har installeret i din DokuWiki. Du kan aktivere, deaktiver eller fjerne plugins fra denne side. Opdateringer til plugins vises også her - husk at læse dokumentationen til et plugin inden du opdaterer det.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/da/intro_templates.txt b/wiki/lib/plugins/extension/lang/da/intro_templates.txt
new file mode 100644
index 0000000..1914500
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/da/intro_templates.txt
@@ -0,0 +1 @@
+Dette er de templates du aktuelt har installeret i din DokuWiki. Du kan vælge det template du vil benytte under [[?do=admin&page=config|Opsætningsstyring]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/da/lang.php b/wiki/lib/plugins/extension/lang/da/lang.php
new file mode 100644
index 0000000..5d31357
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/da/lang.php
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Søren Birk <soer9648@eucl.dk>
+ * @author Jacob Palm <mail@jacobpalm.dk>
+ */
+$lang['tab_plugins']           = 'Installerede plugins';
+$lang['tab_templates']         = 'Installerede templates';
+$lang['tab_search']            = 'Søg og installer';
+$lang['tab_install']           = 'Manuel installation';
+$lang['notimplemented']        = 'Denne funktion er ikke implementeret endnu';
+$lang['unknownauthor']         = 'Ukendt udgiver';
+$lang['unknownversion']        = 'Ukendt version';
+$lang['btn_info']              = 'Vis mere information';
+$lang['btn_update']            = 'Opdater';
+$lang['btn_uninstall']         = 'Afinstaller';
+$lang['btn_enable']            = 'Aktiver';
+$lang['btn_disable']           = 'Deaktiver';
+$lang['btn_install']           = 'Installer';
+$lang['btn_reinstall']         = 'Geninstaller';
+$lang['js']['reallydel']       = 'Er du sikker på at du vil afinstallere denne udvidelse?';
+$lang['search_for']            = 'Søg efter udvidelse:';
+$lang['search']                = 'Søg';
+$lang['extensionby']           = '<strong>%s</strong> af %s';
+$lang['screenshot']            = 'Skærmbillede af %s';
+$lang['popularity']            = 'Popularitet: %s%%';
+$lang['homepage_link']         = 'Dokumenter';
+$lang['bugs_features']         = 'Fejl';
+$lang['tags']                  = 'Tags:';
+$lang['author_hint']           = 'Søg efter udvidelse af denne udgiver';
+$lang['installed']             = 'Installeret:';
+$lang['downloadurl']           = 'Download URL:';
+$lang['unknown']               = '<em>ukendt</em>';
+$lang['installed_version']     = 'Installeret version:';
+$lang['install_date']          = 'Din sidste opdatering:';
+$lang['available_version']     = 'Tilgængelig version:';
+$lang['compatible']            = 'Kompatibel med:';
+$lang['depends']               = 'Afhængig af:';
+$lang['similar']               = 'Ligner:';
+$lang['donate']                = 'Synes du om denne?';
+$lang['donate_action']         = 'Køb en kop kaffe til udvikleren!';
+$lang['repo_retry']            = 'Førsøg igen';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'installeret';
+$lang['status_not_installed']  = 'ikke installeret';
+$lang['status_protected']      = 'beskyttet';
+$lang['status_enabled']        = 'aktiveret';
+$lang['status_disabled']       = 'deaktiveret';
+$lang['status_unmodifiable']   = 'låst for ændringer';
+$lang['status_plugin']         = 'plugin';
+$lang['status_template']       = 'template';
+$lang['msg_enabled']           = 'Plugin %s aktiveret';
+$lang['msg_disabled']          = 'Plugin %s deaktiveret';
+$lang['msg_delete_success']    = 'Udvidelse %s afinstalleret';
+$lang['msg_delete_failed']     = 'Kunne ikke afinstallere udvidelsen %s';
+$lang['msg_template_install_success'] = 'Template %s blev installeret';
+$lang['msg_template_update_success'] = 'Template %s blev opdateret';
+$lang['msg_plugin_install_success'] = 'Plugin %s blev installeret';
+$lang['msg_plugin_update_success'] = 'Plugin %s blev opdateret';
+$lang['msg_upload_failed']     = 'Kunne ikke uploade filen';
+$lang['update_available']      = '<strong>Opdatering:</strong> Ny version %s er tilgængelig.';
+$lang['wrong_folder']          = '<strong>Plugin ikke installeret korrekt:</strong> Omdøb plugin-mappe "%s" til "%s".';
+$lang['url_change']            = '<strong>URL ændret:</strong> Download-URL er blevet ændret siden sidste download. Kontrollér om den nye URL er valid, inden udvidelsen opdateres.<br />Ny: %s<br />Gammel: %s';
+$lang['error_badurl']          = 'URL\'er skal starte med http eller https';
+$lang['error_dircreate']       = 'Ikke i stand til at oprette midlertidig mappe til modtagelse af download';
+$lang['error_download']        = 'Ikke i stand til at downloade filen: %s';
+$lang['error_decompress']      = 'Ikke i stand til at dekomprimere den downloadede fil. Dette kan være et resultat af en dårlig download, hvor du i så fald bør du prøve igen; eller komprimeringsformatet kan være ukendt, hvor du i så fald bliver nød til at downloade og installere manuelt.';
+$lang['error_findfolder']      = 'Ikke i stand til at identificere udvidelsesmappe - du bliver nød til at downloade og installere manuelt.';
+$lang['error_copy']            = 'Der opstod en kopieringsfejl under installation af filer til mappen <em>%s</em>: disken kan være fuld, eller mangel på fil-tilladelser. Dette kan have resulteret i et delvist installeret plugin, og efterladt din wiki-installation ustabil.';
+$lang['noperms']               = 'Udvidelsesmappe er ikke skrivbar';
+$lang['notplperms']            = 'Skabelonmappe er ikke skrivbar';
+$lang['nopluginperms']         = 'Pluginmappe er ikke skrivbar';
+$lang['git']                   = 'Udvidelsen blev installeret via git - du vil muligvis ikke opdatere herfra.';
+$lang['auth']                  = 'Auth-plugin er ikke aktiveret i konfigurationen - overvej at deaktivere den.';
+$lang['install_url']           = 'Installér fra URL:';
+$lang['install_upload']        = 'Upload Udvidelse:';
+$lang['repo_error']            = 'Plugin-arkivet kunne ikke kontaktes. Kontrollér at din server kan kontakte www.dokuwiki.org kontrollér dine proxy-indstillinger.';
+$lang['nossl']                 = 'Din PHP lader til at mangle understøttelse for SSL. Mange DokuWiki udvidelser vil ikke kunne downloades.';
diff --git a/wiki/lib/plugins/extension/lang/de-informal/intro_install.txt b/wiki/lib/plugins/extension/lang/de-informal/intro_install.txt
new file mode 100644
index 0000000..2aa2e06
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de-informal/intro_install.txt
@@ -0,0 +1 @@
+Hier kannst Du Plugins und Templates von Hand installieren indem Du sie hochlädst oder eine Download-URL angibst. 
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de-informal/intro_plugins.txt b/wiki/lib/plugins/extension/lang/de-informal/intro_plugins.txt
new file mode 100644
index 0000000..13ba705
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de-informal/intro_plugins.txt
@@ -0,0 +1 @@
+Dies sind die Plugins, die bereits installiert sind. Du kannst sie hier an- oder abschalten oder sie komplett deinstallieren. Außerdem werden hier Updates zu den installiereten Plugins angezeigt. Bitte lies vor einem Update die zugehörige Dokumentation.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de-informal/intro_search.txt b/wiki/lib/plugins/extension/lang/de-informal/intro_search.txt
new file mode 100644
index 0000000..9300f9e
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de-informal/intro_search.txt
@@ -0,0 +1 @@
+Dieser Tab gibt Dir Zugriff auf alle vorhandenen Plugins und Templates für DokuWiki. Bitte bedenke, dass jede installierte Erweiterung ein Sicherheitsrisiko darstellen kann. Du solltest vor einer Installation die [[doku>security#plugin_security|Plugin Security]] Informationen lesen.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de-informal/intro_templates.txt b/wiki/lib/plugins/extension/lang/de-informal/intro_templates.txt
new file mode 100644
index 0000000..aac2643
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de-informal/intro_templates.txt
@@ -0,0 +1 @@
+Die folgenden Templates sind momentan in deinem DokuWiki installiert. Du kannst das zu verwendende Template im [[?do=admin&page=config|Konfigurations-Manager]] auswählen.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de-informal/lang.php b/wiki/lib/plugins/extension/lang/de-informal/lang.php
new file mode 100644
index 0000000..4daec7f
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de-informal/lang.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felix <j.felix@mueller-donath.de>
+ */
+$lang['menu']                  = 'Erweiterungen verwalten';
+$lang['tab_plugins']           = 'Installierte Plugins';
+$lang['tab_templates']         = 'Installierte Templates';
+$lang['tab_search']            = 'Suchen und installieren';
+$lang['tab_install']           = 'Manuelle Installation';
+$lang['notimplemented']        = 'Dieses Feature wurde leider noch nicht eingebaut';
+$lang['notinstalled']          = 'Diese Erweiterung ist nicht installiert';
+$lang['alreadyenabled']        = 'Diese Erweiterung wurde bereits aktiviert';
+$lang['alreadydisabled']       = 'Diese Erweiterung wurde bereits deaktiviert';
+$lang['pluginlistsaveerror']   = 'Fehler beim Speichern der Plugin-Liste';
+$lang['unknownauthor']         = 'Unbekannter Autor';
+$lang['unknownversion']        = 'Unbekannte Version';
+$lang['btn_info']              = 'Zeige mehr Infos';
+$lang['btn_update']            = 'Update';
+$lang['btn_uninstall']         = 'Deinstallation';
+$lang['btn_enable']            = 'Aktivieren';
+$lang['btn_disable']           = 'Deaktivieren';
+$lang['btn_install']           = 'Installation';
+$lang['btn_reinstall']         = 'Neuinstallation';
+$lang['js']['reallydel']       = 'Möchtest du diese Erweiterung wirklich deinstallieren';
+$lang['js']['display_viewoptions'] = 'Einstellungen anzeigen:';
+$lang['js']['display_enabled'] = 'aktiviert';
+$lang['js']['display_disabled'] = 'deaktiviert';
+$lang['js']['display_updatable'] = 'Update verfügbar';
+$lang['search_for']            = 'Suche Erweiterung:';
+$lang['search']                = 'Suche';
+$lang['extensionby']           = '<strong>%s</strong> von %s';
+$lang['screenshot']            = 'Screenshot von %s';
+$lang['popularity']            = 'Popularität: %s%%';
+$lang['homepage_link']         = 'Doku';
+$lang['bugs_features']         = 'Bugs';
+$lang['tags']                  = 'Schlagworte:';
+$lang['author_hint']           = 'Suche Erweiterungen dieses Autors';
+$lang['installed']             = 'Installiert:';
+$lang['downloadurl']           = 'URL zum Herunterladen:';
+$lang['repository']            = 'Quelle:';
+$lang['unknown']               = '<em>unbekannt</em>';
+$lang['installed_version']     = 'Installierte Version:';
+$lang['install_date']          = 'Dein letztes Update:';
+$lang['available_version']     = 'Verfügbare Version:';
+$lang['compatible']            = 'Kompatibel mit:';
+$lang['depends']               = 'Abhängig von:';
+$lang['similar']               = 'Ähnlich wie:';
+$lang['conflicts']             = 'Nicht kompatibel mit:';
+$lang['donate']                = 'Nützlich?';
+$lang['donate_action']         = 'Spendiere dem Autor einen Kaffee!';
+$lang['repo_retry']            = 'Wiederholen';
+$lang['provides']              = 'Enthält:';
+$lang['status']                = 'Status';
+$lang['status_installed']      = 'installiert';
+$lang['status_not_installed']  = 'nicht installiert';
+$lang['status_protected']      = 'geschützt';
+$lang['status_enabled']        = 'aktiviert';
+$lang['status_disabled']       = 'deaktiviert';
+$lang['status_unmodifiable']   = 'unveränderlich';
+$lang['status_plugin']         = 'Plugin';
+$lang['status_template']       = 'Template';
+$lang['status_bundled']        = 'gebündelt';
+$lang['msg_enabled']           = 'Plugin %s ist aktiviert';
+$lang['msg_disabled']          = 'Erweiterung %s ist deaktiviert';
+$lang['msg_delete_success']    = 'Erweiterung %s wurde entfernt';
+$lang['msg_delete_failed']     = 'Deinstallation der Erweiterung %s fehlgeschlagen';
+$lang['msg_template_install_success'] = 'Das Template %s wurde erfolgreich installiert';
+$lang['msg_template_update_success'] = 'Das Update des Templates %s war erfolgreich ';
+$lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installiert';
+$lang['msg_plugin_update_success'] = 'Das Update des Plugins %s war erfolgreich';
+$lang['msg_upload_failed']     = 'Fehler beim Hochladen der Datei';
+$lang['missing_dependency']    = '<strong>Fehlende oder deaktivierte Abhängigkeit:<strong>%s';
+$lang['security_issue']        = '<strong>Sicherheitsproblem:</strong> %s';
+$lang['security_warning']      = '<strong>Sicherheitswarnung:</strong> %s';
+$lang['update_available']      = '<strong>Update:</strong> Version %s steht zum Download bereit.';
+$lang['wrong_folder']          = '<strong>Plugin wurde nicht korrekt installiert:</strong> Benenne das Plugin-Verzeichnis "%s" in "%s" um.';
+$lang['url_change']            = '<strong>URL geändert:</strong> Die Download URL wurde seit dem letzten Download geändert. Internetadresse vor Aktualisierung der Erweiterung auf Gültigkeit prüfen.<br />Neu: %s<br />Alt: %s';
+$lang['error_badurl']          = 'URLs sollten mit http oder https beginnen';
+$lang['error_dircreate']       = 'Temporärer Ordner konnte nicht erstellt werden um Download zu abzuspeichern';
+$lang['error_download']        = 'Download der Datei: %s nicht möglich.';
+$lang['error_decompress']      = 'Die heruntergeladene Datei konnte nicht entpackt werden. Dies kann die Folge eines fehlerhaften Downloads sein. In diesem Fall solltest du versuchen den Vorgang zu wiederholen. Es kann auch die Folge eines unbekannten Kompressionsformates sein, in diesem ​​Fall musst du die Datei selber herunterladen und manuell installieren.';
+$lang['error_findfolder']      = 'Das Erweiterungs-Verzeichnis konnte nicht identifiziert werden, lade die Datei herunter und installiere sie manuell.';
+$lang['error_copy']            = 'Beim Versuch Dateien in den Ordner <em>%s</em>: zu installieren trat ein Kopierfehler auf. Die Dateizugriffsberechtigungen könnten falsch sein. Dies kann an einem unvollständig installierten Plugin liegen und beeinträchtigt somit die Stabilität deiner Wiki-Installation.';
+$lang['noperms']               = 'Das Erweiterungs-Verzeichnis ist schreibgeschützt';
+$lang['notplperms']            = 'Das Template-Verzeichnis ist schreibgeschützt';
+$lang['nopluginperms']         = 'Das Plugin-Verzeichnis ist schreibgeschützt';
+$lang['git']                   = 'Diese Erweiterung wurde über git installiert und sollte daher nicht hier aktualisiert werden.';
+$lang['auth']                  = 'Dieses Auth Plugin ist in der Konfiguration nicht aktiviert, Du solltest es deaktivieren.';
+$lang['install_url']           = 'Von URL installieren:';
+$lang['install_upload']        = 'Erweiterung hochladen:';
+$lang['repo_error']            = 'Es konnte keine Verbindung zum Plugin-Verzeichnis hergestellt werden. Stelle sicher dass der Server Verbindung mit www.dokuwiki.org aufnehmen darf und überprüfe deine Proxy-Einstellungen.';
+$lang['nossl']                 = 'Deine PHP-Installation scheint SSL nicht zu unterstützen. Das Herunterladen vieler DokuWiki Erweiterungen wird scheitern.';
diff --git a/wiki/lib/plugins/extension/lang/de/intro_install.txt b/wiki/lib/plugins/extension/lang/de/intro_install.txt
new file mode 100644
index 0000000..4ecebe9
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de/intro_install.txt
@@ -0,0 +1 @@
+Hier können Sie Plugins und Templates von Hand installieren indem Sie sie hochladen oder eine Download-URL angeben.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de/intro_plugins.txt b/wiki/lib/plugins/extension/lang/de/intro_plugins.txt
new file mode 100644
index 0000000..1a15210
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de/intro_plugins.txt
@@ -0,0 +1 @@
+Dies sind die Plugins, die bereits installiert sind. Sie können sie hier an- oder abschalten oder sie komplett deinstallieren. Außerdem werden hier Updates zu den installiereten Plugins angezeigt. Bitte lesen Sie vor einem Update die zugehörige Dokumentation.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de/intro_search.txt b/wiki/lib/plugins/extension/lang/de/intro_search.txt
new file mode 100644
index 0000000..366925b
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de/intro_search.txt
@@ -0,0 +1 @@
+Dieser Tab gibt Ihnen Zugriff auf alle vorhandenen Plugins und Templates für DokuWiki. Bitte bedenken Sie, dass jede installierte Erweiterung ein Sicherheitsrisiko darstellen kann. Sie sollten vor einer Installation die [[doku>security#plugin_security|Plugin Security]] Informationen lesen.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de/intro_templates.txt b/wiki/lib/plugins/extension/lang/de/intro_templates.txt
new file mode 100644
index 0000000..d71ce62
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de/intro_templates.txt
@@ -0,0 +1 @@
+Dies sind die in Ihrem Dokuwiki installierten Templates. Sie können das gewünschte Template im [[?do=admin&page=config|Konfigurations Manager]] aktivieren.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/de/lang.php b/wiki/lib/plugins/extension/lang/de/lang.php
new file mode 100644
index 0000000..68ce0ad
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/de/lang.php
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author H. Richard <wanderer379@t-online.de>
+ * @author Joerg <scooter22@gmx.de>
+ * @author Simon <st103267@stud.uni-stuttgart.de>
+ * @author Hoisl <hoisl@gmx.at>
+ * @author Dominik Mahr <drache.mahr@gmx.de>
+ * @author Noel Tilliot <noeltilliot@byom.de>
+ * @author Philip Knack <p.knack@stollfuss.de>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['menu']                  = 'Erweiterungen verwalten';
+$lang['tab_plugins']           = 'Installierte Plugins';
+$lang['tab_templates']         = 'Installierte Templates';
+$lang['tab_search']            = 'Suchen und Installieren';
+$lang['tab_install']           = 'Manuell installieren';
+$lang['notimplemented']        = 'Dieses Fähigkeit/Eigenschaft wurde noch nicht implementiert';
+$lang['notinstalled']          = 'Diese Erweiterung ist nicht installiert';
+$lang['alreadyenabled']        = 'Diese Erweiterung ist bereits aktiviert';
+$lang['alreadydisabled']       = 'Diese Erweiterung ist bereits deaktiviert';
+$lang['pluginlistsaveerror']   = 'Es gab einen Fehler beim Speichern der Plugin-Liste';
+$lang['unknownauthor']         = 'Unbekannter Autor';
+$lang['unknownversion']        = 'Unbekannte Version';
+$lang['btn_info']              = 'Zeige weitere Info';
+$lang['btn_update']            = 'Update';
+$lang['btn_uninstall']         = 'Deinstallation';
+$lang['btn_enable']            = 'Aktivieren';
+$lang['btn_disable']           = 'Deaktivieren';
+$lang['btn_install']           = 'Installieren';
+$lang['btn_reinstall']         = 'Neu installieren';
+$lang['js']['reallydel']       = 'Wollen Sie diese Erweiterung wirklich löschen?';
+$lang['js']['display_viewoptions'] = 'Optionen anzeigen';
+$lang['js']['display_enabled'] = 'aktiviert';
+$lang['js']['display_disabled'] = 'deaktiviert';
+$lang['js']['display_updatable'] = 'aktualisierbar';
+$lang['search_for']            = 'Erweiterung suchen:';
+$lang['search']                = 'Suchen';
+$lang['extensionby']           = '<strong>%s</strong> von %s';
+$lang['screenshot']            = 'Bildschirmfoto von %s';
+$lang['popularity']            = 'Popularität: %s%%';
+$lang['homepage_link']         = 'Doku';
+$lang['bugs_features']         = 'Bugs';
+$lang['tags']                  = 'Schlagworte';
+$lang['author_hint']           = 'Suche weitere Erweiterungen dieses Autors';
+$lang['installed']             = 'Installiert:';
+$lang['downloadurl']           = 'URL zum Herunterladen:';
+$lang['repository']            = 'Quelle:';
+$lang['unknown']               = '<em>unbekannt</em>';
+$lang['installed_version']     = 'Installierte Version:';
+$lang['install_date']          = 'Ihr letztes Update:';
+$lang['available_version']     = 'Verfügbare Version: ';
+$lang['compatible']            = 'Kompatibel mit:';
+$lang['depends']               = 'Benötigt:';
+$lang['similar']               = 'Ist ähnlich zu:';
+$lang['conflicts']             = 'Nicht kompatibel mit:';
+$lang['donate']                = 'Nützlich?';
+$lang['donate_action']         = 'Spendieren Sie dem Autor einen Kaffee!';
+$lang['repo_retry']            = 'Neu versuchen';
+$lang['provides']              = 'Enthält';
+$lang['status']                = 'Status';
+$lang['status_installed']      = 'installiert';
+$lang['status_not_installed']  = 'nicht installiert';
+$lang['status_protected']      = 'geschützt';
+$lang['status_enabled']        = 'aktiviert';
+$lang['status_disabled']       = 'deaktiviert';
+$lang['status_unmodifiable']   = 'unveränderlich';
+$lang['status_plugin']         = 'Plugin';
+$lang['status_template']       = 'Template';
+$lang['status_bundled']        = 'gebündelt';
+$lang['msg_enabled']           = 'Plugin %s ist aktiviert';
+$lang['msg_disabled']          = 'Erweiterung %s ist deaktiviert';
+$lang['msg_delete_success']    = 'Erweiterung %s wurde entfernt';
+$lang['msg_delete_failed']     = 'Deinstallation der Erweiterung %s fehlgeschlagen';
+$lang['msg_template_install_success'] = 'Das Template %s wurde erfolgreich installiert';
+$lang['msg_template_update_success'] = 'Das Update des Templates %s war erfolgreich ';
+$lang['msg_plugin_install_success'] = 'Das Plugin %s wurde erfolgreich installiert';
+$lang['msg_plugin_update_success'] = 'Das Update des Plugins %s war erfolgreich';
+$lang['msg_upload_failed']     = 'Fehler beim Hochladen der Datei';
+$lang['missing_dependency']    = '<strong>fehlende oder deaktivierte Abhängigkeit:<strong>%s';
+$lang['security_issue']        = '<strong>Sicherheitsproblem:</strong> %s';
+$lang['security_warning']      = '<strong>Sicherheitswarnung:</strong> %s';
+$lang['update_available']      = '<strong>Update:</strong> Version %s steht zum Download bereit.';
+$lang['wrong_folder']          = '<strong>Plugin wurde nicht korrekt installiert:</strong> Benennen Sie das Plugin-Verzeichnis "%s" in "%s" um.';
+$lang['url_change']            = '<strong>URL geändert:</strong> Die Download URL wurde seit dem letzten Download geändert. Internetadresse vor Aktualisierung der Erweiterung auf Gültigkeit prüfen.<br />Neu: %s<br />Alt: %s';
+$lang['error_badurl']          = 'URLs sollten mit http oder https beginnen';
+$lang['error_dircreate']       = 'Temporärer Ordner konnte nicht erstellt werden, um Download zu abzuspeichern';
+$lang['error_download']        = 'Download der Datei: %s nicht möglich.';
+$lang['error_decompress']      = 'Die heruntergeladene Datei konnte nicht entpackt werden. Dies kann die Folge eines fehlerhaften Downloads sein. In diesem Fall sollten Sie versuchen den Vorgang zu wiederholen. Es kann auch die Folge eines unbekannten Kompressionsformates sein, in diesem ​​Fall müssen Sie die Datei selber herunterladen und manuell installieren.';
+$lang['error_findfolder']      = 'Das Erweiterungs-Verzeichnis konnte nicht identifiziert werden, laden und installieren Sie die Datei manuell.';
+$lang['error_copy']            = 'Beim Versuch Dateien in den Ordner <em>%s</em>: zu installieren trat ein Kopierfehler auf. Die Dateizugriffsberechtigungen könnten falsch sein. Dies kann an einem unvollständig installierten Plugin liegen und beeinträchtigt somit die Stabilität Ihre Wiki-Installation.';
+$lang['noperms']               = 'Das Erweiterungs-Verzeichnis ist schreibgeschützt';
+$lang['notplperms']            = 'Das Template-Verzeichnis ist schreibgeschützt';
+$lang['nopluginperms']         = 'Das Plugin-Verzeichnis ist schreibgeschützt';
+$lang['git']                   = 'Diese Erweiterung wurde über git installiert und sollte daher nicht hier aktualisiert werden.';
+$lang['auth']                  = 'Dieses Auth Plugin ist in der Konfiguration nicht aktiviert, Sie sollten es deaktivieren.';
+$lang['install_url']           = 'Von Webadresse (URL) installieren';
+$lang['install_upload']        = 'Erweiterung hochladen:';
+$lang['repo_error']            = 'Es konnte keine Verbindung zum Plugin-Verzeichnis hergestellt werden. Stellen sie sicher das der Server Verbindung mit www.dokuwiki.org aufnehmen darf und überprüfen sie ihre Proxy Einstellungen.';
+$lang['nossl']                 = 'Ihr PHP scheint SSL nicht zu unterstützen. Das Herunterladen vieler DokuWiki Erweiterungen wird scheitern.';
diff --git a/wiki/lib/plugins/extension/lang/en/intro_install.txt b/wiki/lib/plugins/extension/lang/en/intro_install.txt
new file mode 100644
index 0000000..a5d5ab0
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/en/intro_install.txt
@@ -0,0 +1 @@
+Here you can manually install plugins and templates by either uploading them or providing a direct download URL.
diff --git a/wiki/lib/plugins/extension/lang/en/intro_plugins.txt b/wiki/lib/plugins/extension/lang/en/intro_plugins.txt
new file mode 100644
index 0000000..4e42efe
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/en/intro_plugins.txt
@@ -0,0 +1 @@
+These are the plugins currently installed in your DokuWiki. You can enable or disable or even completely uninstall them here. Plugin updates are shown here as well, be sure to read the plugin's documentation before updating.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/en/intro_search.txt b/wiki/lib/plugins/extension/lang/en/intro_search.txt
new file mode 100644
index 0000000..244cd68
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/en/intro_search.txt
@@ -0,0 +1 @@
+This tab gives you access to all available 3rd party plugins and templates for DokuWiki. Please be aware that installing 3rd party code may pose a **security risk**, you may want to read about [[doku>security#plugin_security|plugin security]] first.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/en/intro_templates.txt b/wiki/lib/plugins/extension/lang/en/intro_templates.txt
new file mode 100644
index 0000000..012a749
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/en/intro_templates.txt
@@ -0,0 +1 @@
+These are the templates currently installed in your DokuWiki. You can select the template to be used in the [[?do=admin&page=config|Configuration Manager]].
diff --git a/wiki/lib/plugins/extension/lang/en/lang.php b/wiki/lib/plugins/extension/lang/en/lang.php
new file mode 100644
index 0000000..79f6436
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/en/lang.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * English language file for extension plugin
+ *
+ * @author Michael Hamann <michael@content-space.de>
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ */
+
+$lang['menu']                         = 'Extension Manager';
+
+$lang['tab_plugins']                  = 'Installed Plugins';
+$lang['tab_templates']                = 'Installed Templates';
+$lang['tab_search']                   = 'Search and Install';
+$lang['tab_install']                  = 'Manual Install';
+
+$lang['notimplemented']               = 'This feature hasn\'t been implemented yet';
+$lang['notinstalled']                 = 'This extension is not installed';
+$lang['alreadyenabled']               = 'This extension has already been enabled';
+$lang['alreadydisabled']              = 'This extension has already been disabled';
+$lang['pluginlistsaveerror']          = 'There was an error saving the plugin list';
+$lang['unknownauthor']                = 'Unknown author';
+$lang['unknownversion']               = 'Unknown version';
+
+$lang['btn_info']                     = 'Show more info';
+$lang['btn_update']                   = 'Update';
+$lang['btn_uninstall']                = 'Uninstall';
+$lang['btn_enable']                   = 'Enable';
+$lang['btn_disable']                  = 'Disable';
+$lang['btn_install']                  = 'Install';
+$lang['btn_reinstall']                = 'Re-install';
+
+$lang['js']['reallydel']              = 'Really uninstall this extension?';
+
+$lang['search_for']                   = 'Search Extension:';
+$lang['search']                       = 'Search';
+
+$lang['extensionby']                  = '<strong>%s</strong> by %s';
+$lang['screenshot']                   = 'Screenshot of %s';
+$lang['popularity']                   = 'Popularity: %s%%';
+$lang['homepage_link']                = 'Docs';
+$lang['bugs_features']                = 'Bugs';
+$lang['tags']                         = 'Tags:';
+$lang['author_hint']                  = 'Search extensions by this author';
+$lang['installed']                    = 'Installed:';
+$lang['downloadurl']                  = 'Download URL:';
+$lang['repository']                   = 'Repository:';
+$lang['unknown']                      = '<em>unknown</em>';
+$lang['installed_version']            = 'Installed version:';
+$lang['install_date']                 = 'Your last update:';
+$lang['available_version']            = 'Available version:';
+$lang['compatible']                   = 'Compatible with:';
+$lang['depends']                      = 'Depends on:';
+$lang['similar']                      = 'Similar to:';
+$lang['conflicts']                    = 'Conflicts with:';
+$lang['donate']                       = 'Like this?';
+$lang['donate_action']                = 'Buy the author a coffee!';
+$lang['repo_retry']                   = 'Retry';
+$lang['provides']                     = 'Provides:';
+$lang['status']                       = 'Status:';
+$lang['status_installed']             = 'installed';
+$lang['status_not_installed']         = 'not installed';
+$lang['status_protected']             = 'protected';
+$lang['status_enabled']               = 'enabled';
+$lang['status_disabled']              = 'disabled';
+$lang['status_unmodifiable']          = 'unmodifiable';
+$lang['status_plugin']                = 'plugin';
+$lang['status_template']              = 'template';
+$lang['status_bundled']               = 'bundled';
+
+$lang['msg_enabled']                  = 'Plugin %s enabled';
+$lang['msg_disabled']                 = 'Plugin %s disabled';
+$lang['msg_delete_success']           = 'Extension %s uninstalled';
+$lang['msg_delete_failed']            = 'Uninstalling Extension %s failed';
+$lang['msg_template_install_success'] = 'Template %s installed successfully';
+$lang['msg_template_update_success']  = 'Template %s updated successfully';
+$lang['msg_plugin_install_success']   = 'Plugin %s installed successfully';
+$lang['msg_plugin_update_success']    = 'Plugin %s updated successfully';
+$lang['msg_upload_failed']            = 'Uploading the file failed';
+
+$lang['missing_dependency']           = '<strong>Missing or disabled dependency:</strong> %s';
+$lang['security_issue']               = '<strong>Security Issue:</strong> %s';
+$lang['security_warning']             = '<strong>Security Warning:</strong> %s';
+$lang['update_available']             = '<strong>Update:</strong> New version %s is available.';
+$lang['wrong_folder']                 = '<strong>Plugin installed incorrectly:</strong> Rename plugin directory "%s" to "%s".';
+$lang['url_change']                   = '<strong>URL changed:</strong> Download URL has changed since last download. Check if the new URL is valid before updating the extension.<br />New: %s<br />Old: %s';
+
+$lang['error_badurl']                 = 'URLs should start with http or https';
+$lang['error_dircreate']              = 'Unable to create temporary folder to receive download';
+$lang['error_download']               = 'Unable to download the file: %s';
+$lang['error_decompress']             = 'Unable to decompress the downloaded file. This maybe as a result of a bad download, in which case you should try again; or the compression format may be unknown, in which case you will need to download and install manually.';
+$lang['error_findfolder']             = 'Unable to identify extension directory, you need to download and install manually';
+$lang['error_copy']                   = 'There was a file copy error while attempting to install files for directory <em>%s</em>: the disk could be full or file access permissions may be incorrect. This may have resulted in a partially installed plugin and leave your wiki installation unstable';
+
+$lang['noperms']                      = 'Extension directory is not writable';
+$lang['notplperms']                   = 'Template directory is not writable';
+$lang['nopluginperms']                = 'Plugin directory is not writable';
+$lang['git']                          = 'This extension was installed via git, you may not want to update it here.';
+$lang['auth']                         = 'This auth plugin is not enabled in configuration, consider disabling it.';
+
+$lang['install_url']                  = 'Install from URL:';
+$lang['install_upload']               = 'Upload Extension:';
+
+$lang['repo_error']                   = 'The plugin repository could not be contacted. Make sure your server is allowed to contact www.dokuwiki.org and check your proxy settings.';
+$lang['nossl']                        = 'Your PHP seems to miss SSL support. Downloading will not work for many DokuWiki extensions.';
+
+$lang['js']['display_viewoptions']    = 'View Options:';
+$lang['js']['display_enabled']        = 'enabled';
+$lang['js']['display_disabled']       = 'disabled';
+$lang['js']['display_updatable']      = 'updatable';
diff --git a/wiki/lib/plugins/extension/lang/eo/intro_install.txt b/wiki/lib/plugins/extension/lang/eo/intro_install.txt
new file mode 100644
index 0000000..d9c63da
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/eo/intro_install.txt
@@ -0,0 +1 @@
+Tie vi povas permane instali kromaĵojn kaj ŝablonojn tra alŝuto aŭ indiko de URL por rekta elŝuto.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/eo/intro_plugins.txt b/wiki/lib/plugins/extension/lang/eo/intro_plugins.txt
new file mode 100644
index 0000000..cc7ae66
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/eo/intro_plugins.txt
@@ -0,0 +1 @@
+Jenaj kromaĵoj momente estas instalitaj en via DokuWiki. Vi povas ebligi, malebligi aŭ eĉ tute malinstali ilin tie. Ankaŭ montriĝos aktualigoj de kromaĵoj -- certiĝu, ke vi legis la dokumentadon de la kromaĵo antaŭ aktualigo.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/eo/intro_search.txt b/wiki/lib/plugins/extension/lang/eo/intro_search.txt
new file mode 100644
index 0000000..5d19494
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/eo/intro_search.txt
@@ -0,0 +1 @@
+Tiu tabelo donas aliron al ĉiuj haveblaj eksteraj kromaĵoj kaj ŝablonoj por DokuWiki. Bonvolu konscii, ke instali eksteran kodaĵon povas enkonduki **sekurecriskon**, prefere legu antaŭe pri [[doku>security#plugin_security|sekureco de kromaĵo]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/eo/intro_templates.txt b/wiki/lib/plugins/extension/lang/eo/intro_templates.txt
new file mode 100644
index 0000000..6dc0ef6
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/eo/intro_templates.txt
@@ -0,0 +1 @@
+Jenaj ŝablonoj momente instaliĝis en via DokuWiki. Elektu la ŝablonon por uzi en la [[?do=admin&page=config|Opcia administrilo]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/eo/lang.php b/wiki/lib/plugins/extension/lang/eo/lang.php
new file mode 100644
index 0000000..bcac85d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/eo/lang.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>
+ * @author Robert Bogenschneider <bogi@uea.org>
+ */
+$lang['menu']                  = 'Aldonaĵa administrado';
+$lang['tab_plugins']           = 'Instalitaj kromaĵoj';
+$lang['tab_templates']         = 'Instalitaj ŝablonoj';
+$lang['tab_search']            = 'Serĉi kaj instali';
+$lang['tab_install']           = 'Permana instalado';
+$lang['notimplemented']        = 'Tiu funkcio ankoraŭ ne realiĝis';
+$lang['notinstalled']          = 'Tiu aldonaĵo ne estas instalita';
+$lang['alreadyenabled']        = 'Tiu aldonaĵo jam ebliĝis';
+$lang['alreadydisabled']       = 'Tiu aldonaĵo jam malebliĝis';
+$lang['pluginlistsaveerror']   = 'Okazis eraro dum la kromaĵlisto konserviĝis';
+$lang['unknownauthor']         = 'Nekonata aŭtoro';
+$lang['unknownversion']        = 'Nekonata versio';
+$lang['btn_info']              = 'Montri pliajn informojn';
+$lang['btn_update']            = 'Aktualigi';
+$lang['btn_uninstall']         = 'Malinstali';
+$lang['btn_enable']            = 'Ebligi';
+$lang['btn_disable']           = 'Malebligi';
+$lang['btn_install']           = 'Instali';
+$lang['btn_reinstall']         = 'Re-instali';
+$lang['js']['reallydel']       = 'Ĉu vere malinstali la aldonaĵon?';
+$lang['js']['display_updatable'] = 'ĝisdatigebla';
+$lang['search_for']            = 'Serĉi la aldonaĵon:';
+$lang['search']                = 'Serĉi';
+$lang['extensionby']           = '<strong>%s</strong> fare de %s';
+$lang['screenshot']            = 'Ekrankopio de %s';
+$lang['popularity']            = 'Populareco: %s%%';
+$lang['homepage_link']         = 'Dokumentoj';
+$lang['bugs_features']         = 'Cimoj';
+$lang['tags']                  = 'Etikedoj:';
+$lang['author_hint']           = 'Serĉi aldonaĵojn laŭ tiu aŭtoro:';
+$lang['installed']             = 'Instalitaj:';
+$lang['downloadurl']           = 'URL por elŝuti:';
+$lang['repository']            = 'Kodbranĉo:';
+$lang['unknown']               = '<em>nekonata</em>';
+$lang['installed_version']     = 'Instalita versio:';
+$lang['install_date']          = 'Via lasta aktualigo:';
+$lang['available_version']     = 'Havebla versio:';
+$lang['compatible']            = 'Kompatibla kun:';
+$lang['depends']               = 'Dependas de:';
+$lang['similar']               = 'Simila al:';
+$lang['conflicts']             = 'Konfliktas kun:';
+$lang['donate']                = 'Ĉu vi ŝatas tion?';
+$lang['donate_action']         = 'Aĉetu kafon al la aŭtoro!';
+$lang['repo_retry']            = 'Reprovi';
+$lang['provides']              = 'Provizas per:';
+$lang['status']                = 'Statuso:';
+$lang['status_installed']      = 'instalita';
+$lang['status_not_installed']  = 'ne instalita';
+$lang['status_protected']      = 'protektita';
+$lang['status_enabled']        = 'ebligita';
+$lang['status_disabled']       = 'malebligita';
+$lang['status_unmodifiable']   = 'neŝanĝebla';
+$lang['status_plugin']         = 'kromaĵo';
+$lang['status_template']       = 'ŝablono';
+$lang['status_bundled']        = 'kunliverita';
+$lang['msg_enabled']           = 'Kromaĵo %s ebligita';
+$lang['msg_disabled']          = 'Kromaĵo %s malebligita';
+$lang['msg_delete_success']    = 'Aldonaĵo %s malinstaliĝis';
+$lang['msg_template_install_success'] = 'Ŝablono %s sukcese instaliĝis';
+$lang['msg_template_update_success'] = 'Ŝablono %s sukcese aktualiĝis';
+$lang['msg_plugin_install_success'] = 'Kromaĵo %s sukcese instaliĝis';
+$lang['msg_plugin_update_success'] = 'Kromaĵo %s sukcese aktualiĝis';
+$lang['msg_upload_failed']     = 'Ne eblis alŝuti la dosieron';
+$lang['missing_dependency']    = '<strong>Mankanta aŭ malebligita dependeco:</strong> %s';
+$lang['security_issue']        = '<strong>Sekureca problemo:</strong> %s';
+$lang['security_warning']      = '<strong>Sekureca averto:</strong> %s';
+$lang['update_available']      = '<strong>Aktualigo:</strong> Nova versio %s haveblas.';
+$lang['wrong_folder']          = '<strong>Kromaĵo instalita malĝuste:</strong> Renomu la kromaĵdosierujon "%s" al "%s".';
+$lang['url_change']            = '<strong>URL ŝanĝita:</strong> La elŝuta URL ŝanĝiĝis ekde la lasta elŝuto. Kontrolu, ĉu la nova URL validas antaŭ aktualigi aldonaĵon.<br />Nova: %s<br />Malnova: %s';
+$lang['error_badurl']          = 'URLoj komenciĝu per http aŭ https';
+$lang['error_dircreate']       = 'Ne eblis krei portempan dosierujon por akcepti la elŝuton';
+$lang['error_download']        = 'Ne eblis elŝuti la dosieron: %s';
+$lang['error_decompress']      = 'Ne eblis malpaki la elŝutitan dosieron. Kialo povus esti fuŝa elŝuto, kaj vi reprovu; aŭ la pakiga formato estas nekonata, kaj vi devas elŝuti kaj instali permane.';
+$lang['error_findfolder']      = 'Ne eblis rekoni la aldonaĵ-dosierujon, vi devas elŝuti kaj instali permane';
+$lang['error_copy']            = 'Okazis kopiad-eraro dum la provo instali dosierojn por la dosierujo <em>%s</em>: la disko povus esti plena aŭ la alirpermesoj por dosieroj malĝustaj. Rezulto eble estas nur parte instalita kromaĵo, kiu malstabiligas vian vikion';
+$lang['noperms']               = 'La aldonaĵ-dosierujo ne estas skribebla';
+$lang['notplperms']            = 'La ŝablon-dosierujo ne estas skribebla';
+$lang['nopluginperms']         = 'La kromaĵ-dosierujo ne estas skribebla';
+$lang['git']                   = 'Tiu aldonaĵo estis instalita pere de git, eble vi ne aktualigu ĝin ĉi tie.';
+$lang['install_url']           = 'Instali de URL:';
+$lang['install_upload']        = 'Alŝuti aldonaĵon:';
diff --git a/wiki/lib/plugins/extension/lang/es/intro_install.txt b/wiki/lib/plugins/extension/lang/es/intro_install.txt
new file mode 100644
index 0000000..533396b
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/es/intro_install.txt
@@ -0,0 +1 @@
+Aquí se puede instalar manualmente los plugins y las plantillas, ya sea cargándolos o dando una URL de descarga directa.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/es/intro_plugins.txt b/wiki/lib/plugins/extension/lang/es/intro_plugins.txt
new file mode 100644
index 0000000..4805021
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/es/intro_plugins.txt
@@ -0,0 +1 @@
+Estos son los plugins actualmente instalados en su DokuWiki. Puede activar, desactivar o incluso desinstalar completamente desde aquí. Actualizaciones de los Plugin se muestran también aquí, asegúrese de leer la documentación del plugin antes de actualizar.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/es/intro_search.txt b/wiki/lib/plugins/extension/lang/es/intro_search.txt
new file mode 100644
index 0000000..f59bb33
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/es/intro_search.txt
@@ -0,0 +1 @@
+Esta pestaña te da acceso a todos los plugins de 3as partes disponibles y plantillas para DokuWiki. Tenga en cuenta que la instalación de código de terceras partes puede plantear un **riesgo de seguridad**, es posible que desee leer primero sobre [[doku>security#plugin_security|plugin security]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/es/intro_templates.txt b/wiki/lib/plugins/extension/lang/es/intro_templates.txt
new file mode 100644
index 0000000..4ede9a1
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/es/intro_templates.txt
@@ -0,0 +1 @@
+Estas son las plantillas actualmente instalados en su DokuWiki. Puede seleccionar la plantilla que se utilizará en [[?do=admin&page=config|Configuration Manager]]
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/es/lang.php b/wiki/lib/plugins/extension/lang/es/lang.php
new file mode 100644
index 0000000..b7adf8f
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/es/lang.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Jonathan Hernández <me@jhalicea.com>
+ * @author Álvaro Iradier <airadier@gmail.com>
+ * @author Mauricio Segura <maose38@yahoo.es>
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['menu']                  = 'Administrador de Extensiones ';
+$lang['tab_plugins']           = 'Plugins instalados';
+$lang['tab_templates']         = 'Plantillas instaladas';
+$lang['tab_search']            = 'Buscar e instalar';
+$lang['tab_install']           = 'Instalación manual';
+$lang['notimplemented']        = 'Esta característica no se ha implementado aún';
+$lang['notinstalled']          = 'Esta expensión no está instalada';
+$lang['alreadyenabled']        = 'Esta extensión ya había sido activada';
+$lang['alreadydisabled']       = 'Esta extensión ya había sido desactivada';
+$lang['pluginlistsaveerror']   = 'Se ha producido un error al guardar la lista de plugins';
+$lang['unknownauthor']         = 'autor desconocido';
+$lang['unknownversion']        = 'versión desconocida';
+$lang['btn_info']              = 'Mostrar más información';
+$lang['btn_update']            = 'Actualizar';
+$lang['btn_uninstall']         = 'Desinstalar';
+$lang['btn_enable']            = 'Activar';
+$lang['btn_disable']           = 'Desactivar';
+$lang['btn_install']           = 'Instalar';
+$lang['btn_reinstall']         = 'Reinstalar';
+$lang['js']['reallydel']       = '¿Realmente quiere desinstalar esta extensión?';
+$lang['js']['display_viewoptions'] = 'Ver opciones:';
+$lang['js']['display_enabled'] = 'habilitado';
+$lang['js']['display_disabled'] = 'deshabilitado';
+$lang['js']['display_updatable'] = 'actualizable';
+$lang['search_for']            = 'Extensión de búsqueda :';
+$lang['search']                = 'Buscar';
+$lang['extensionby']           = '<strong>%s</strong> por %s';
+$lang['screenshot']            = 'Captura de %s';
+$lang['popularity']            = 'Popularidad:%s%%';
+$lang['homepage_link']         = 'Documentos';
+$lang['bugs_features']         = 'Bugs';
+$lang['tags']                  = 'Etiquetas:';
+$lang['author_hint']           = 'Buscar extensiones de este autor';
+$lang['installed']             = 'Instalado:';
+$lang['downloadurl']           = 'URL de descarga:';
+$lang['repository']            = 'Repositorio:';
+$lang['unknown']               = '<em>desconocido</em>';
+$lang['installed_version']     = 'Versión instalada:';
+$lang['install_date']          = 'Tú última actualización:';
+$lang['available_version']     = 'Versión disponible:';
+$lang['compatible']            = 'Compatible con:';
+$lang['depends']               = 'Dependencias:';
+$lang['similar']               = 'Similar a:';
+$lang['conflicts']             = 'Conflictos con:';
+$lang['donate']                = '¿Cómo está?';
+$lang['donate_action']         = '¡Págale un café al autor!';
+$lang['repo_retry']            = 'Trate otra vez';
+$lang['provides']              = 'Provee: ';
+$lang['status']                = 'Estado:';
+$lang['status_installed']      = 'instalado';
+$lang['status_not_installed']  = 'no instalado';
+$lang['status_protected']      = 'protegido';
+$lang['status_enabled']        = 'activado';
+$lang['status_disabled']       = 'desactivado';
+$lang['status_unmodifiable']   = 'no modificable';
+$lang['status_plugin']         = 'plugin';
+$lang['status_template']       = 'plantilla';
+$lang['status_bundled']        = 'agrupado';
+$lang['msg_enabled']           = 'Plugin %s activado';
+$lang['msg_disabled']          = 'Plugin %s desactivado';
+$lang['msg_delete_success']    = 'Extensión %s desinstalada';
+$lang['msg_delete_failed']     = 'La desinstalación de la extensión %s ha fallado';
+$lang['msg_template_install_success'] = 'Plantilla %s instalada con éxito';
+$lang['msg_template_update_success'] = 'Plantilla %s actualizada con éxito';
+$lang['msg_plugin_install_success'] = 'Plugin %s instalado con éxito';
+$lang['msg_plugin_update_success'] = 'Plugin %s actualizado con éxito';
+$lang['msg_upload_failed']     = 'Falló la carga del archivo';
+$lang['missing_dependency']    = '<strong>Dependencia deshabilitada o perdida:</strong> %s';
+$lang['security_issue']        = '<strong>Problema de seguridad:</strong> %s';
+$lang['security_warning']      = '<strong>Aviso de seguridad:</strong> %s';
+$lang['update_available']      = '<strong>Actualizar:</strong> Nueva versión %s disponible.';
+$lang['wrong_folder']          = '<strong>"Plugin" instalado incorrectamente:</strong> Cambie el nombre del directorio del plugin "%s" a "%s".';
+$lang['url_change']            = '<strong>URL actualizada:</strong> El Download URL ha cambiado desde el último download. Verifica si el nuevo URL es valido antes de actualizar la extensión .<br />Nuevo: %s<br />Viejo: %s';
+$lang['error_badurl']          = 'URLs deberían empezar con http o https';
+$lang['error_dircreate']       = 'No es posible de crear un directorio temporero para poder recibir el download';
+$lang['error_download']        = 'No es posible descargar el documento: %s';
+$lang['error_decompress']      = 'No se pudo descomprimir el fichero descargado. Puede ser a causa de una descarga incorrecta, en cuyo caso puedes intentarlo de nuevo; o puede que el formato de compresión sea desconocido, en cuyo caso necesitarás descargar e instalar manualmente.';
+$lang['error_findfolder']      = 'No se ha podido identificar el directorio de la extensión, es necesario descargar e instalar manualmente';
+$lang['error_copy']            = 'Hubo un error durante la copia de archivos al intentar instalar los archivos del directorio <em>%s</em>: el disco puede estar lleno o los permisos de acceso a los archivos pueden ser incorrectos. Esto puede haber dado lugar a un plugin instalado parcialmente y dejar su instalación wiki inestable';
+$lang['noperms']               = 'El directorio de extensiones no tiene permiso de escritura.';
+$lang['notplperms']            = 'El directorio de plantillas no tiene permiso de escritura.';
+$lang['nopluginperms']         = 'No se puede escribir en el directorio de plugins';
+$lang['git']                   = 'Esta extensión fue instalada a través de git, quizás usted no quiera actualizarla aquí mismo.';
+$lang['auth']                  = 'Este plugin de autenticación no está habilitada en la configuración, considere la posibilidad de desactivarlo.';
+$lang['install_url']           = 'Instalar desde URL:';
+$lang['install_upload']        = 'Subir Extensión:';
+$lang['repo_error']            = 'El repositorio de plugins no puede ser contactado. Asegúrese que su servidor pueda contactar www.dokuwiki.org y verificar la configuración de su proxy.';
+$lang['nossl']                 = 'Tu PHP parece no tener soporte SSL. Las descargas no funcionaran para muchas extensiones de DokuWiki.';
diff --git a/wiki/lib/plugins/extension/lang/fa/intro_install.txt b/wiki/lib/plugins/extension/lang/fa/intro_install.txt
new file mode 100644
index 0000000..93c2b97
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fa/intro_install.txt
@@ -0,0 +1 @@
+در اینجا می‌توانید افزونه‌ها و قالب‌ها را به صورت دستی از طریق آپلودشان یا با ارائهٔ لینک مستقیم دانلود نصب کنید.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fa/intro_plugins.txt b/wiki/lib/plugins/extension/lang/fa/intro_plugins.txt
new file mode 100644
index 0000000..7d7d331
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fa/intro_plugins.txt
@@ -0,0 +1 @@
+این‌ها افزونه‌هایی است که اکنون روی داکو ویکی شما نصب می‌باشند. از اینجا می‌توانید آن‌ها را غیرفعال، فعال یا به طور کامل حذف نمایید. به‌روزرسانی افزونه‌ها نیز در اینجا نمایش داده می‌شود. پیش از به‌روزرسانی مطمئن شوید که مستندات افزونه را مطالعه نموده‌اید.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fa/intro_search.txt b/wiki/lib/plugins/extension/lang/fa/intro_search.txt
new file mode 100644
index 0000000..07fde76
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fa/intro_search.txt
@@ -0,0 +1 @@
+این شاخه به تمام افزونه‌ها و قالب‌های نسل سوم داکو ویکی دسترسی می‌دهد. لطفا دقت کنید که نصب کد نسل سوم یک **ریسک امنیتی** است برای همین بهتر است که ابتدا [[doku>security#plugin_security|امنیت افزونه]] را مطالعه نمایید.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fa/intro_templates.txt b/wiki/lib/plugins/extension/lang/fa/intro_templates.txt
new file mode 100644
index 0000000..1a127c0
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fa/intro_templates.txt
@@ -0,0 +1 @@
+این‌ها قالب‌هاییست که اکنون در داکو ویکی شما نصب می‌باشد. شما می‌توانید قالبی که می‌خواهید استفاده شود را در [[?do=admin&page=config|تنظیمات پیکربندی]] انتخاب نمایید.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fa/lang.php b/wiki/lib/plugins/extension/lang/fa/lang.php
new file mode 100644
index 0000000..63345fd
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fa/lang.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ * @author Sam01 <m.sajad079@gmail.com>
+ */
+$lang['menu']                  = 'مدیریت افزونه ها';
+$lang['tab_plugins']           = 'پلاگین های نصب شده';
+$lang['tab_templates']         = 'قالب های نصب شده';
+$lang['tab_search']            = 'جستجو و نصب';
+$lang['tab_install']           = 'نصب دستی';
+$lang['notimplemented']        = 'این قابلیت هنوز پیاده‌سازی نشده';
+$lang['notinstalled']          = 'این افزونه نصب نشده است';
+$lang['alreadyenabled']        = 'این افزونه فعال شده است';
+$lang['alreadydisabled']       = 'این افزونه غیرفعال شده است';
+$lang['pluginlistsaveerror']   = 'یک خطا هنگام ذخیره‌سازی این افزونه رخ داده';
+$lang['unknownauthor']         = 'نویسنده نامشخص';
+$lang['unknownversion']        = 'نسخه ناشناخته';
+$lang['btn_info']              = 'نمایش اطلاعات بیشتر';
+$lang['btn_update']            = 'به روز رسانی';
+$lang['btn_uninstall']         = 'حذف';
+$lang['btn_enable']            = 'فعال';
+$lang['btn_disable']           = 'غیرفعال';
+$lang['btn_install']           = 'نصب';
+$lang['btn_reinstall']         = 'نصب مجدد';
+$lang['js']['reallydel']       = 'واقعا می‌خواهید این افزونه را حذف کنید؟';
+$lang['js']['display_viewoptions'] = 'نمایش گزینه‌ها:';
+$lang['js']['display_enabled'] = 'فعال';
+$lang['js']['display_disabled'] = 'غیرفعال';
+$lang['js']['display_updatable'] = 'قابل به‌روزرسانی';
+$lang['search_for']            = 'جستجوی افزونه:';
+$lang['search']                = 'جستجو';
+$lang['extensionby']           = '<strong>%s</strong> به وسیلهٔ %s';
+$lang['screenshot']            = 'اسکرین شات %s';
+$lang['popularity']            = 'محبوبیت: %s%%';
+$lang['homepage_link']         = 'مستندات';
+$lang['bugs_features']         = 'اشکالات';
+$lang['tags']                  = 'برچسب ها:';
+$lang['author_hint']           = 'جستجوی افزونه‌های این نویسنده';
+$lang['installed']             = 'نصب شده:';
+$lang['downloadurl']           = 'لینک دانلود:';
+$lang['repository']            = 'مخزن:';
+$lang['unknown']               = '<em>ناشناخته</em>';
+$lang['installed_version']     = 'نسخه نصب شده:';
+$lang['install_date']          = 'آخرین به‌روزرسانی شما:';
+$lang['available_version']     = 'نسخه در دسترس:';
+$lang['compatible']            = 'سازگار با:';
+$lang['depends']               = 'وابسته به:';
+$lang['similar']               = 'شبیه به:';
+$lang['conflicts']             = 'تداخل دارد با:';
+$lang['donate']                = 'به این علاقه‌مندید؟';
+$lang['donate_action']         = 'برای نویسنده یک فنجان قهوه بخرید!';
+$lang['repo_retry']            = 'دوباره';
+$lang['provides']              = 'شامل می‌شود:';
+$lang['status']                = 'وضعیت';
+$lang['status_installed']      = 'نصب شده';
+$lang['status_not_installed']  = 'نصب نشده';
+$lang['status_protected']      = 'محافظت شده';
+$lang['status_enabled']        = 'فعال';
+$lang['status_disabled']       = 'غیرفعال';
+$lang['status_unmodifiable']   = 'غیرقابل تغییر';
+$lang['status_plugin']         = 'پلاگین';
+$lang['status_template']       = 'قالب';
+$lang['status_bundled']        = 'باندل شده';
+$lang['msg_enabled']           = 'افزونه %s فعال شده';
+$lang['msg_disabled']          = 'افزونه %s غیرفعال شده';
+$lang['msg_delete_success']    = 'افزونه %s حذف شده';
+$lang['msg_delete_failed']     = 'حذف افزونه %s ناموفق بود';
+$lang['msg_template_install_success'] = 'قالب %s با موفقیت نصب شد';
+$lang['msg_template_update_success'] = 'قالب %s با موفقیت به‌روزرسانی شد';
+$lang['msg_plugin_install_success'] = 'افزونهٔ %s با موفقیت نصب شد';
+$lang['msg_plugin_update_success'] = 'افزونهٔ %s با موفقیت نصب شد';
+$lang['msg_upload_failed']     = 'بارگذاری فایل ناموفق بود';
+$lang['missing_dependency']    = '<strong>نیازمندی وجود ندارد یا غیرفعال است:</strong> %s';
+$lang['security_issue']        = '<strong>اشکال امنیتی:</strong> %s';
+$lang['security_warning']      = '<strong>اخطار امنیتی:</strong> %s';
+$lang['update_available']      = '<strong>به‌روزرسانی</strong> نسخهٔ جدید %s موجود است.';
+$lang['wrong_folder']          = '<strong>افزونه اشتباه نصب شده:</strong> نام پوشهٔ افزونه را از "%s" به "%s" تغییر دهید.';
+$lang['url_change']            = '<strong>لینک تغییر کرد:</strong> لینک دانلود از آخرین دانلود تغییر کرد. پیش از به‌روزرسانی افزونه، چک کنید که لینک جدید درست باشد.<br />جدید: %s<br />قدیمی: %s';
+$lang['error_badurl']          = 'لینک‌ها باید با http یا https شروع شوند';
+$lang['error_dircreate']       = 'امکان ایجاد پوشهٔ موقت برای دریافت دانلود وجود ندارد';
+$lang['error_download']        = 'امکان دانلود فایل وجود ندارد: %s';
+$lang['error_decompress']      = 'امکان خارج کردن فایل دانلود شده از حالت فشرده وجود ندارد. این می‌توانید در اثر دانلود ناقص باشد که در اینصورت باید دوباره تلاش کنید؛ یا اینکه فرمت فشرده‌سازی نامعلوم است که در اینصورت باید به صورت دستی دانلود و نصب نمایید.';
+$lang['error_findfolder']      = 'امکان تشخیص پوشهٔ افزونه وجود ندارد. باید به صورت دستی دانلود و نصب کنید.';
+$lang['error_copy']            = 'هنگام تلاش برای نصب فایل‌ها برای پوشهٔ <em>%s</em> خطای کپی فایل وجود دارد: رسانه ذخیره‌سازی می‌تواند پر باشد یا پرمیشن‌های فایل نادرست است. این می‌تواند باعث نصب بخشی از افزونه شده باشد و ویکی را ناپایدار نماید.';
+$lang['noperms']               = 'پوشه افزونه ها قابل نوشتن نیست';
+$lang['notplperms']            = 'پوشه قالب ها قابل نوشتن نیست';
+$lang['nopluginperms']         = 'پوشه پلاگین ها قابل نوشتن نیست';
+$lang['git']                   = 'این افزونه از طریق گیت نصب شده، شما نباید آن را از اینجا به‌روزرسانی کنید.';
+$lang['auth']                  = 'این افزونهٔ auth در بخش تنظیمات فعال نشده، غیرفعالش کنید.';
+$lang['install_url']           = 'نصب از آدرس:';
+$lang['install_upload']        = 'بارگذاری افزونه:';
+$lang['repo_error']            = 'امکان ارتباط با مخزن افزونه‌ها وجود ندارد. مطمئن شوید که سرور شما اجازهٔ ارتباط با www.dokuwiki.org را دارد و تنظیمات پراکسی را چک کنید.';
+$lang['nossl']                 = 'به نظر می‌آید که PHP شما از SSL پشتیبانی نمی‌کند. دانلود کردن برای بسیاری از افزونه‌های داکو ویکی کار نمی‌کند.';
diff --git a/wiki/lib/plugins/extension/lang/fi/lang.php b/wiki/lib/plugins/extension/lang/fi/lang.php
new file mode 100644
index 0000000..a154f25
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fi/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+$lang['tab_plugins']           = 'Asennetut liitännäiset';
+$lang['tab_search']            = 'Etsi ja asenna';
+$lang['tab_install']           = 'Manuaalinen asennus';
+$lang['notimplemented']        = 'Tätä ominaisuutta ei ole vielä toteutettu';
+$lang['notinstalled']          = 'Tätä laajennusta ei ole asennettu';
+$lang['alreadyenabled']        = 'Tämä laajennus on jo käytössä';
+$lang['alreadydisabled']       = 'Tämä laajennus on jo otettu pois käytöstä';
+$lang['pluginlistsaveerror']   = 'Tapahtui virhe tallentaessa liitännäislistaa';
+$lang['unknownauthor']         = 'Tuntematon tekijä';
+$lang['unknownversion']        = 'Tuntematon versio';
+$lang['btn_info']              = 'Näytä lisää tietoa';
+$lang['btn_update']            = 'Päivitä';
+$lang['btn_enable']            = 'Ota käyttöön';
+$lang['btn_disable']           = 'Poista käytöstä';
+$lang['btn_install']           = 'Asenna';
+$lang['btn_reinstall']         = 'Uudelleenasenna';
+$lang['js']['reallydel']       = 'Haluatko varmasti poistaa tämän laajennuksen?';
+$lang['search_for']            = 'Etsi laajennusta:';
+$lang['search']                = 'Etsi';
+$lang['downloadurl']           = 'Lataa URL-osoite';
+$lang['installed_version']     = 'Asennettu versio';
+$lang['install_date']          = 'Sinun viimeinen päivitys:';
+$lang['available_version']     = 'Saatavissa oleva versio:';
+$lang['status_installed']      = 'asennettu';
+$lang['status_protected']      = 'suojattu';
+$lang['status_enabled']        = 'otettu käyttöön';
+$lang['status_disabled']       = 'otettu pois käytöstä';
+$lang['status_plugin']         = 'liitännäinen';
+$lang['install_url']           = 'Asenna URL-osoitteesta:';
+$lang['install_upload']        = 'Ladattu laajennus:';
diff --git a/wiki/lib/plugins/extension/lang/fr/intro_install.txt b/wiki/lib/plugins/extension/lang/fr/intro_install.txt
new file mode 100644
index 0000000..5d287b8
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fr/intro_install.txt
@@ -0,0 +1 @@
+Ici, vous pouvez installer des extensions, greffons et thèmes. Soit en les téléversant, soit en indiquant un URL de téléchargement.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fr/intro_plugins.txt b/wiki/lib/plugins/extension/lang/fr/intro_plugins.txt
new file mode 100644
index 0000000..a40b863
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fr/intro_plugins.txt
@@ -0,0 +1 @@
+Voilà la liste des extensions actuellement installées. À partir d'ici, vous pouvez les activer, les désactiver ou même les désinstaller complètement. Cette page affiche également les mises à jour. Assurez vous de lire la documentation avant de faire la mise à jour.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fr/intro_search.txt b/wiki/lib/plugins/extension/lang/fr/intro_search.txt
new file mode 100644
index 0000000..418e359
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fr/intro_search.txt
@@ -0,0 +1 @@
+Cet onglet vous donne accès à toutes les extensions de tierces parties. Restez conscients qu'installer du code de tierce partie peut poser un problème de **sécurité**.  Vous voudrez peut-être au préalable lire l'article sur la [[doku>fr:security##securite_des_plugins|sécurité des plugins]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fr/intro_templates.txt b/wiki/lib/plugins/extension/lang/fr/intro_templates.txt
new file mode 100644
index 0000000..a0a1336
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fr/intro_templates.txt
@@ -0,0 +1 @@
+Voici la liste des thèmes actuellement installés. Le [[?do=admin&page=config|gestionnaire de configuration]] vous permet de choisir le thème à utiliser.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/fr/lang.php b/wiki/lib/plugins/extension/lang/fr/lang.php
new file mode 100644
index 0000000..9a57851
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/fr/lang.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Damien Regad <dregad@mantisbt.org>
+ * @author Schplurtz le Déboulonné <schplurtz@laposte.net>
+ * @author Yves Grandvalet <Yves.Grandvalet@laposte.net>
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ */
+$lang['menu']                  = 'Gestionnaire d\'extensions';
+$lang['tab_plugins']           = 'Greffons installés';
+$lang['tab_templates']         = 'Thèmes installés';
+$lang['tab_search']            = 'Rechercher et installer';
+$lang['tab_install']           = 'Installation manuelle';
+$lang['notimplemented']        = 'Cette fonctionnalité n\'est pas encore installée';
+$lang['notinstalled']          = 'Cette extension n\'est pas installée';
+$lang['alreadyenabled']        = 'Cette extension a déjà été installée';
+$lang['alreadydisabled']       = 'Cette extension a déjà été désactivée';
+$lang['pluginlistsaveerror']   = 'Une erreur s\'est produite lors de l\'enregistrement de la liste des greffons.';
+$lang['unknownauthor']         = 'Auteur inconnu';
+$lang['unknownversion']        = 'Version inconnue';
+$lang['btn_info']              = 'Montrer plus d\'informations';
+$lang['btn_update']            = 'Mettre à jour';
+$lang['btn_uninstall']         = 'Désinstaller';
+$lang['btn_enable']            = 'Activer';
+$lang['btn_disable']           = 'Désactiver';
+$lang['btn_install']           = 'Installer';
+$lang['btn_reinstall']         = 'Réinstaller';
+$lang['js']['reallydel']       = 'Vraiment désinstaller cette extension';
+$lang['js']['display_viewoptions'] = 'Voir les options:';
+$lang['js']['display_enabled'] = 'activé';
+$lang['js']['display_disabled'] = 'désactivé';
+$lang['js']['display_updatable'] = 'Mise à jour possible';
+$lang['search_for']            = 'Rechercher l\'extension :';
+$lang['search']                = 'Chercher';
+$lang['extensionby']           = '<strong>%s</strong> de %s';
+$lang['screenshot']            = 'Aperçu de %s';
+$lang['popularity']            = 'Popularité : %s%%';
+$lang['homepage_link']         = 'Documentation';
+$lang['bugs_features']         = 'Bogues';
+$lang['tags']                  = 'Étiquettes :';
+$lang['author_hint']           = 'Chercher les extensions de cet auteur';
+$lang['installed']             = 'Installés :';
+$lang['downloadurl']           = 'URL de téléchargement :';
+$lang['repository']            = 'Dépôt : ';
+$lang['unknown']               = '<em>inconnu</em>';
+$lang['installed_version']     = 'Version installée :';
+$lang['install_date']          = 'Votre dernière mise à jour :';
+$lang['available_version']     = 'Version disponible :';
+$lang['compatible']            = 'Compatible avec :';
+$lang['depends']               = 'Dépend de :';
+$lang['similar']               = 'Similaire à :';
+$lang['conflicts']             = 'En conflit avec :';
+$lang['donate']                = 'Vous aimez ?';
+$lang['donate_action']         = 'Payer un café à l\'auteur !';
+$lang['repo_retry']            = 'Réessayer';
+$lang['provides']              = 'Fournit :';
+$lang['status']                = 'État :';
+$lang['status_installed']      = 'installé';
+$lang['status_not_installed']  = 'non installé';
+$lang['status_protected']      = 'protégé';
+$lang['status_enabled']        = 'activé';
+$lang['status_disabled']       = 'désactivé';
+$lang['status_unmodifiable']   = 'non modifiable';
+$lang['status_plugin']         = 'greffon';
+$lang['status_template']       = 'thème';
+$lang['status_bundled']        = 'fourni';
+$lang['msg_enabled']           = 'Greffon %s activé';
+$lang['msg_disabled']          = 'Greffon %s désactivé';
+$lang['msg_delete_success']    = 'Extension %s désinstallée.';
+$lang['msg_delete_failed']     = 'Échec de la désinstallation de l\'extension %s';
+$lang['msg_template_install_success'] = 'Thème %s installé avec succès';
+$lang['msg_template_update_success'] = 'Thème %s mis à jour avec succès';
+$lang['msg_plugin_install_success'] = 'Greffon %s installé avec succès';
+$lang['msg_plugin_update_success'] = 'Greffon %s mis à jour avec succès';
+$lang['msg_upload_failed']     = 'Téléversement échoué';
+$lang['missing_dependency']    = '<strong>Dépendance absente ou désactivée :</strong> %s';
+$lang['security_issue']        = '<strong>Problème de sécurité :</strong> %s';
+$lang['security_warning']      = '<strong>Avertissement de sécurité :</strong> %s';
+$lang['update_available']      = '<strong>Mise à jour :</strong> la version %s est disponible.';
+$lang['wrong_folder']          = '<strong>Greffon installé incorrectement :</strong> renommer le dossier du greffon "%s" en "%s".';
+$lang['url_change']            = '<strong>URL modifié :</strong> L\'URL de téléchargement a changé depuis le dernier téléchargement. Vérifiez si l\'URL est valide avant de mettre à jour l\'extension.<br />Nouvel URL : %s<br />Ancien : %s';
+$lang['error_badurl']          = 'Les URL doivent commencer par http ou https';
+$lang['error_dircreate']       = 'Impossible de créer le dossier temporaire pour le téléchargement.';
+$lang['error_download']        = 'Impossible de télécharger le fichier : %s';
+$lang['error_decompress']      = 'Impossible de décompresser le fichier téléchargé. C\'est peut être le résultat d\'une erreur de téléchargement, auquel cas vous devriez réessayer. Le format de compression est peut-être inconnu. Dans ce cas il vous faudra procéder à une installation manuelle.';
+$lang['error_findfolder']      = 'Impossible d\'identifier le dossier de l\'extension. Vous devez procéder à une installation manuelle.';
+$lang['error_copy']            = 'Une erreur de copie de fichier s\'est produite lors de l\'installation des fichiers dans le dossier <em>%s</em>. Il se peut que le disque soit plein, ou que les permissions d\'accès aux fichiers soient incorrectes. Il est possible que le greffon soit partiellement installé et que cela laisse votre installation de DokuWiki instable.';
+$lang['noperms']               = 'Impossible d\'écrire dans le dossier des extensions.';
+$lang['notplperms']            = 'Impossible d\'écrire dans le dossier des thèmes.';
+$lang['nopluginperms']         = 'Impossible d\'écrire dans le dossier des greffons.';
+$lang['git']                   = 'Cette extension a été installé via git, vous voudrez peut-être ne pas la mettre à jour ici.';
+$lang['auth']                  = 'Votre configuration n\'utilise pas ce greffon d\'authentification. Vous devriez songer à le désactiver.';
+$lang['install_url']           = 'Installez depuis l\'URL :';
+$lang['install_upload']        = 'Téléversez l\'extension :';
+$lang['repo_error']            = 'Le dépôt d\'extensions est injoignable. Veuillez vous assurer que le server web est autorisé à contacter www.dokuwiki.org et vérifier les réglages de proxy.';
+$lang['nossl']                 = 'Votre version de PHP semble ne pas prendre en charge SSL. Le téléchargement de nombreuses extensions va échouer.';
diff --git a/wiki/lib/plugins/extension/lang/he/lang.php b/wiki/lib/plugins/extension/lang/he/lang.php
new file mode 100644
index 0000000..ecdc19c
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/he/lang.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guy Yakobovitch <guy.yakobovitch@gmail.com>
+ */
+$lang['menu']                  = 'מנהל הרחבות';
+$lang['tab_plugins']           = 'תוספים מותקנים';
+$lang['tab_templates']         = 'תבניות מותקנות';
+$lang['tab_install']           = 'התקנה ידנית';
+$lang['notinstalled']          = 'הרחבה זו לא מותקנת';
+$lang['status_not_installed']  = 'לא מותקן';
+$lang['status_protected']      = 'מוגן';
+$lang['status_enabled']        = 'מופעל';
+$lang['status_disabled']       = 'מושבת';
+$lang['status_unmodifiable']   = 'לא ניתן לשינוי';
+$lang['status_plugin']         = 'תוסף';
+$lang['status_template']       = 'תבנית';
+$lang['msg_enabled']           = 'תוסף %s מופעל';
+$lang['msg_disabled']          = 'תוסף %s מושבת';
+$lang['msg_delete_success']    = 'הרחבה %s הוסרה';
+$lang['msg_delete_failed']     = 'הסרת ההרחבה %s נכשלה';
+$lang['msg_template_install_success'] = 'תבנית %s הותקנה בהצלחה';
+$lang['msg_template_update_success'] = 'תבנית %s עודכנה בהצלחה';
+$lang['error_download']        = 'לא ניתן להוריד את הקובץ: %s';
diff --git a/wiki/lib/plugins/extension/lang/hr/intro_install.txt b/wiki/lib/plugins/extension/lang/hr/intro_install.txt
new file mode 100644
index 0000000..f3274b0
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hr/intro_install.txt
@@ -0,0 +1 @@
+Ovdje možete ručno postaviti dodatak (plugin) i predložak (template) bilo učitavanjem ili navođenjem URL adrese za direktno učitavanje.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hr/intro_plugins.txt b/wiki/lib/plugins/extension/lang/hr/intro_plugins.txt
new file mode 100644
index 0000000..0c458ee
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hr/intro_plugins.txt
@@ -0,0 +1 @@
+Ovo su dodaci (plugin) trenutno postavljeni na Vašem DokuWiku-u. Možete ih omogućiti, onemogućiti ili u potpunosti ukloniti. Nadogradnje dodataka su također prikazane, obavezno pročitajte dokumentaciju  dodatka prije nadogradnje.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hr/intro_search.txt b/wiki/lib/plugins/extension/lang/hr/intro_search.txt
new file mode 100644
index 0000000..4056905
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hr/intro_search.txt
@@ -0,0 +1 @@
+Ovdje možete potražiti i druge dostupne dodatke i predloške za DokuWiki. Molimo budite svjesni da postavljanje koda razvijenog od treće strane može biti **sigurnosni rizik**, možda želite prvo pročitati o [[doku>security#plugin_security|sigurnosti dodataka]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hr/intro_templates.txt b/wiki/lib/plugins/extension/lang/hr/intro_templates.txt
new file mode 100644
index 0000000..76dafe6
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hr/intro_templates.txt
@@ -0,0 +1 @@
+Ovo su predlošci trenutno postavljeni na Vašem DokuWiki-u. Koji se predložak koristi možete odabrati na [[?do=admin&page=config|Upravitelju postavki]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hr/lang.php b/wiki/lib/plugins/extension/lang/hr/lang.php
new file mode 100644
index 0000000..697806d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hr/lang.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['menu']                  = 'Upravitelj proširenja';
+$lang['tab_plugins']           = 'Ugrađeni dodatci';
+$lang['tab_templates']         = 'Ugrađeni predlošci';
+$lang['tab_search']            = 'Potraži i ugradi';
+$lang['tab_install']           = 'Ručna ugradnja';
+$lang['notimplemented']        = 'Ova mogućnost još nije napravljena';
+$lang['notinstalled']          = 'Proširenje nije ugrađeno';
+$lang['alreadyenabled']        = 'Ovo proširenje je već omogućeno';
+$lang['alreadydisabled']       = 'Ovo proširenje je već onemogućeno';
+$lang['pluginlistsaveerror']   = 'Dogodila se greška pri snimanju liste dodataka';
+$lang['unknownauthor']         = 'Nepoznat autor';
+$lang['unknownversion']        = 'Nepoznata inačica';
+$lang['btn_info']              = 'Prikaži više informacija';
+$lang['btn_update']            = 'Ažuriraj';
+$lang['btn_uninstall']         = 'Ukloni';
+$lang['btn_enable']            = 'Omogući';
+$lang['btn_disable']           = 'Onemogući';
+$lang['btn_install']           = 'Ugradi';
+$lang['btn_reinstall']         = 'Ponovno ugradi';
+$lang['js']['reallydel']       = 'Zaista ukloniti ovo proširenje?';
+$lang['js']['display_viewoptions'] = 'Opcije pregleda:';
+$lang['js']['display_enabled'] = 'omogućen';
+$lang['js']['display_disabled'] = 'onemogućen';
+$lang['js']['display_updatable'] = 'izmjenjiv';
+$lang['search_for']            = 'Pretraži proširenja';
+$lang['search']                = 'Pretraži';
+$lang['extensionby']           = '<strong>%s</strong> po %s';
+$lang['screenshot']            = 'Slika zaslona od %s';
+$lang['popularity']            = 'Popularnost: %s%%';
+$lang['homepage_link']         = 'Upute';
+$lang['bugs_features']         = 'Greške';
+$lang['tags']                  = 'Oznake:';
+$lang['author_hint']           = 'Potraži proširenja od ovog autora';
+$lang['installed']             = 'Ugrađeno:';
+$lang['downloadurl']           = 'URL adresa preuzimanja:';
+$lang['repository']            = 'Repozitorij:';
+$lang['unknown']               = '<em>nepoznat</em>';
+$lang['installed_version']     = 'Ugrađena inačica:';
+$lang['install_date']          = 'Vaše zadnje osvježavanje:';
+$lang['available_version']     = 'Dostupna inačica';
+$lang['compatible']            = 'Kompatibilan s:';
+$lang['depends']               = 'Zavisi o:';
+$lang['similar']               = 'Sličan s:';
+$lang['conflicts']             = 'U sukobu s:';
+$lang['donate']                = 'Poput ovog?';
+$lang['donate_action']         = 'Kupite autoru kavu!';
+$lang['repo_retry']            = 'Ponovi';
+$lang['provides']              = 'Osigurava:';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'ugrađen';
+$lang['status_not_installed']  = 'nije ugrađen';
+$lang['status_protected']      = 'zaštićen';
+$lang['status_enabled']        = 'omogućen';
+$lang['status_disabled']       = 'onemogućen';
+$lang['status_unmodifiable']   = 'neizmjenjiv';
+$lang['status_plugin']         = 'dodatak';
+$lang['status_template']       = 'predložak';
+$lang['status_bundled']        = 'ugrađen';
+$lang['msg_enabled']           = 'Dodatak %s omogućen';
+$lang['msg_disabled']          = 'Dodatak %s onemogućen';
+$lang['msg_delete_success']    = 'Proširenje %s uklonjeno';
+$lang['msg_delete_failed']     = 'Uklanjanje proširenja %s nije uspjelo';
+$lang['msg_template_install_success'] = 'Predložak %s uspješno ugrađen';
+$lang['msg_template_update_success'] = 'Predložak %s uspješno nadograđen';
+$lang['msg_plugin_install_success'] = 'Dodatak %s uspješno ugrađen';
+$lang['msg_plugin_update_success'] = 'Dodatak %s uspješno nadograđen';
+$lang['msg_upload_failed']     = 'Učitavanje datoteke nije uspjelo';
+$lang['missing_dependency']    = '<strong>Nedostaje ili onemogućena zavisnost:</strong> %s';
+$lang['security_issue']        = '<strong>Sigurnosno pitanje:</strong> %s';
+$lang['security_warning']      = '<strong>Sigurnosno upozorenje:</strong> %s';
+$lang['update_available']      = '<strong>Nadogranja:</strong> Nova inačica %s je dostupna.';
+$lang['wrong_folder']          = '<strong>Dodatak neispravno ugrađen:</strong> Preimenujte mapu dodatka iz "%s" u "%s".';
+$lang['url_change']            = '<strong>URL izmijenjen:</strong> Adresa za preuzimanje je promijenjena od zadnjeg preuzimanja. Provjerite da li je novu URL valjan prije nadogradnje proširenja.<br />Novi: %s<br />Stari: %s';
+$lang['error_badurl']          = 'URL adrese trebaju započinjati sa http ili https';
+$lang['error_dircreate']       = 'Ne mogu napraviti privremenu mapu za prihvat preuzimanja';
+$lang['error_download']        = 'Ne mogu preuzeti datoteku: %s';
+$lang['error_decompress']      = 'Ne mogu raspakirati preuzetu datoteku. To može biti rezultati lošeg preuzimanja i tada treba pokušati ponovo; ili format sažimanja je nepoznat i u tom slučaju treba datoteku ručno preuzeti i ugraditi.';
+$lang['error_findfolder']      = 'Ne mogu odrediti mapu proširenja, trebate ga ručno preuzeti i ugraditi';
+$lang['error_copy']            = 'Dogodila se greška pri kopiranju dok je pokušavanja ugradnja datoteka u mapu <em>%s</em>: disk može biti pun ili dozvole pristupa nisu dobre. Ovo može rezultirati djelomično ugrađenim dodatkom i može učiniti Vaš wiki nestabilnim';
+$lang['noperms']               = 'Nije moguće pisati u mapu proširanja';
+$lang['notplperms']            = 'Nije moguće pisati u mapu predloška';
+$lang['nopluginperms']         = 'Nije moguće pisati u mapu dodatka';
+$lang['git']                   = 'Proširenje je ugrađeno preko Git-a, možda ga ne želite nadograđivati ovdje.';
+$lang['auth']                  = 'Autorizacijski dodatak nije podešen, razmotrite njegovo onemogućavanje kao dodatka.';
+$lang['install_url']           = 'Ugradi s URL-a:';
+$lang['install_upload']        = 'Učitaj proširenje:';
+$lang['repo_error']            = 'Repozitorij dodataka nije dostupan. Budite sigurni da server može pristupiti www.dokuwiki.org i provjerite proxy postavke.';
+$lang['nossl']                 = 'Izgleda da korišteni PHP ne podržava SSL. Učitavanje neće raditi na mnogim DokuWiki dodatcima.';
diff --git a/wiki/lib/plugins/extension/lang/hu/intro_install.txt b/wiki/lib/plugins/extension/lang/hu/intro_install.txt
new file mode 100644
index 0000000..8427e7d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hu/intro_install.txt
@@ -0,0 +1 @@
+Itt új modulokat és sablonokat telepíthetsz feltöltéssel vagy a csomagra hivatkozó URL megadásával.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hu/intro_plugins.txt b/wiki/lib/plugins/extension/lang/hu/intro_plugins.txt
new file mode 100644
index 0000000..8a3e92d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hu/intro_plugins.txt
@@ -0,0 +1 @@
+A DokuWiki rendszerben telepített modulok az alábbiak. Engedélyezheted, letilthatod vagy teljesen le is törölheted ezeket. A modulokhoz tartozó frissítések is itt láthatók, viszont frissítés előtt mindenképp olvasd el az utasításokat a modul dokumentációjában is!
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hu/intro_search.txt b/wiki/lib/plugins/extension/lang/hu/intro_search.txt
new file mode 100644
index 0000000..87a2a5d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hu/intro_search.txt
@@ -0,0 +1 @@
+Ezen a fülön harmadik fél által készített modulokat és sablonokat találsz a DokuWiki-hez. Ne feledd, hogy a harmadik féltől származó kódok **biztonsági kockázatot** jelenthetnek, ennek a [[doku>security#plugin_security|modulok biztonsága]] oldalon olvashatsz utána a telepítés előtt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hu/intro_templates.txt b/wiki/lib/plugins/extension/lang/hu/intro_templates.txt
new file mode 100644
index 0000000..c0ad92b
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hu/intro_templates.txt
@@ -0,0 +1 @@
+A DokuWiki rendszerben telepített sablonok az alábbiak. A használt sablont a [[?do=admin&page=config|Beállítóközpontban]] választhatod ki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/hu/lang.php b/wiki/lib/plugins/extension/lang/hu/lang.php
new file mode 100644
index 0000000..7d531e1
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/hu/lang.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['menu']                  = 'Bővítménykezelő';
+$lang['tab_plugins']           = 'Telepített modulok';
+$lang['tab_templates']         = 'Telepített sablonok';
+$lang['tab_search']            = 'Keresés és telepítés';
+$lang['tab_install']           = 'Kézi telepítés';
+$lang['notimplemented']        = 'Ez a funkció még nincs implementálva';
+$lang['notinstalled']          = 'Ez a bővítmény nincs telepítve';
+$lang['alreadyenabled']        = 'Ez a bővítmény már engedélyezve van';
+$lang['alreadydisabled']       = 'Ez a bővítmény már le van tiltva';
+$lang['pluginlistsaveerror']   = 'Hiba történt a modulok listájának mentésekor';
+$lang['unknownauthor']         = 'Ismeretlen szerző';
+$lang['unknownversion']        = 'Ismeretlen verzió';
+$lang['btn_info']              = 'További információk megjelenítése';
+$lang['btn_update']            = 'Frissítés';
+$lang['btn_uninstall']         = 'Törlés';
+$lang['btn_enable']            = 'Engedélyezés';
+$lang['btn_disable']           = 'Letiltás';
+$lang['btn_install']           = 'Telepítés';
+$lang['btn_reinstall']         = 'Újratelepítés';
+$lang['js']['reallydel']       = 'Biztosan törlöd ezt a bővítményt?';
+$lang['js']['display_viewoptions'] = 'Nézet beállításai:';
+$lang['js']['display_enabled'] = 'engedélyezve';
+$lang['js']['display_disabled'] = 'letiltva';
+$lang['js']['display_updatable'] = 'frissíthető';
+$lang['search_for']            = 'Bővítmények keresése:';
+$lang['search']                = 'Keresés';
+$lang['extensionby']           = '<strong>%s</strong>, %s szerzőtől';
+$lang['screenshot']            = '%s képernyőképe';
+$lang['popularity']            = 'Népszerűség: %s%%';
+$lang['homepage_link']         = 'Dokumentáció';
+$lang['bugs_features']         = 'Hibák';
+$lang['tags']                  = 'Címkék:';
+$lang['author_hint']           = 'Bővítmények keresése ettől a szerzőtől';
+$lang['installed']             = 'Telepítve:';
+$lang['downloadurl']           = 'Csomag URL:';
+$lang['repository']            = 'Repository:';
+$lang['unknown']               = '<em>ismeretlen</em>';
+$lang['installed_version']     = 'Telepített verzió:';
+$lang['install_date']          = 'Utoljára frissítve:';
+$lang['available_version']     = 'Elérhető verzió:';
+$lang['compatible']            = 'Kompatibilis rendszerek:';
+$lang['depends']               = 'Függőségek:';
+$lang['similar']               = 'Hasonló bővítmények:';
+$lang['conflicts']             = 'Ütközést okozó bővítmények:';
+$lang['donate']                = 'Tetszik?';
+$lang['donate_action']         = 'Hívd meg a szerzőjét egy kávéra!';
+$lang['repo_retry']            = 'Újra';
+$lang['provides']              = 'Szolgáltatások:';
+$lang['status']                = 'Állapot:';
+$lang['status_installed']      = 'telepítve';
+$lang['status_not_installed']  = 'nincs telepítve';
+$lang['status_protected']      = 'védett';
+$lang['status_enabled']        = 'engedélyezve';
+$lang['status_disabled']       = 'letiltva';
+$lang['status_unmodifiable']   = 'nem lehet módosítani';
+$lang['status_plugin']         = 'modul';
+$lang['status_template']       = 'sablon';
+$lang['status_bundled']        = 'beépített';
+$lang['msg_enabled']           = 'A(z) %s modul engedélyezve';
+$lang['msg_disabled']          = 'A(z) %s modul letiltva';
+$lang['msg_delete_success']    = 'A bővítmény %s törölve';
+$lang['msg_delete_failed']     = 'A(z) %s bővítmény eltávolítása sikertelen';
+$lang['msg_template_install_success'] = 'A(z) %s sablon sikeresen telepítve';
+$lang['msg_template_update_success'] = 'A(z) %s sablon sikeresen frissítve';
+$lang['msg_plugin_install_success'] = 'A(z) %s modul sikeresen telepítve';
+$lang['msg_plugin_update_success'] = 'A(z) %s modul sikeresen frissítve';
+$lang['msg_upload_failed']     = 'A fájl feltöltése sikertelen';
+$lang['missing_dependency']    = '<strong>Hiányzó vagy letiltott függőség:</strong> %s';
+$lang['security_issue']        = '<strong>Biztonsági probléma:</strong> %s';
+$lang['security_warning']      = '<strong>Biztonsági figyelmeztetés:</strong> %s';
+$lang['update_available']      = '<strong>Frissítés:</strong> Elérhető %s új verziója.';
+$lang['wrong_folder']          = '<strong>A modul telepítése sikertelen:</strong> Nevezd át a modul könyvtárát "%s" névről "%s" névre!';
+$lang['url_change']            = '<strong>Az URL megváltozott:</strong> A csomag URL-je megváltozott az utolsó letöltés óta. A bővítmény frissítése előtt ellenőrizd az új URL helyességét!<br />Új: %s<br />Régi: %s';
+$lang['error_badurl']          = 'Az URL-nek "http"-vel vagy "https"-sel kell kezdődnie';
+$lang['error_dircreate']       = 'A letöltéshez az ideiglenes könyvtár létrehozása sikertelen';
+$lang['error_download']        = 'A(z) %s fájl letöltése sikertelen';
+$lang['error_decompress']      = 'A letöltött fájlt nem lehet kicsomagolni. Ezt okozhatja a fájl sérülése (ebben az esetben próbáld újra letölteni) vagy egy ismeretlen tömörítési formátum használata (ilyenkor kézzel kell telepítened).';
+$lang['error_findfolder']      = 'A bővítményhez tartozó könyvtárat nem sikerült megállapítani, kézzel kell letöltened és telepítened';
+$lang['error_copy']            = 'Egy fájl másolása közben hiba történt a <em>%s</em> könyvtárban: lehet, hogy a lemez megtelt vagy nincsenek megfelelő írási jogaid. A telepítés megszakadása a modul hibás működését eredményezheti és instabil állapotba hozhatja a wikit';
+$lang['noperms']               = 'A bővítmény könyvtára nem írható';
+$lang['notplperms']            = 'A sablon könyvtára nem írható';
+$lang['nopluginperms']         = 'A modul könyvtára nem írható';
+$lang['git']                   = 'Ezt a bővítményt git-tel telepítették, lehet, hogy nem itt célszerű frissíteni';
+$lang['auth']                  = 'Ez az autentikációs modul nincs engedélyezve a beállításokban, érdemes lehet letiltani.';
+$lang['install_url']           = 'Telepítés erről az URL-ről:';
+$lang['install_upload']        = 'Bővítmény feltöltése:';
+$lang['repo_error']            = 'A modul repository-ja nem érhető el. Bizonyosodj meg róla, hogy a szervereden engedélyezett a www.dokuwiki.org cím elérése és ellenőrizd a proxy beállításaidat!';
+$lang['nossl']                 = 'Úgy tűnik, a PHP konfigurációd nem támogatja az SSL-t. Néhány DokuWiki bővítmény letöltése sikertelen lehet.';
diff --git a/wiki/lib/plugins/extension/lang/it/intro_install.txt b/wiki/lib/plugins/extension/lang/it/intro_install.txt
new file mode 100644
index 0000000..5106500
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/it/intro_install.txt
@@ -0,0 +1 @@
+Qui potete installare manualmente plugin e template, sia caricandoli in upload sia fornendo una URL per scaricarli direttamente.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/it/intro_plugins.txt b/wiki/lib/plugins/extension/lang/it/intro_plugins.txt
new file mode 100644
index 0000000..cd7825f
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/it/intro_plugins.txt
@@ -0,0 +1 @@
+Questi sono i plugin attualmente installati nel vostro DokuWiki. Qui potete abilitarli o disabilitarli o addirittura disinstallarli completamente. Qui sono mostrati anche gli aggiornamenti dei plugin, assicurativi di leggere la relativa documentazione prima di aggiornarli.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/it/intro_search.txt b/wiki/lib/plugins/extension/lang/it/intro_search.txt
new file mode 100644
index 0000000..fb77d36
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/it/intro_search.txt
@@ -0,0 +1 @@
+Questa sezione ti da accesso a tutti i plugin e temi di terze parti disponibili per DokuWiki. Sappi che l'installazione di codice di terze parti potrebbe rappresentare un **rischio di sicurezza**, quindi, forse, prima vorresti informarti a proposito della [[doku>security#plugin_security|sicurezza dei plugin]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/it/intro_templates.txt b/wiki/lib/plugins/extension/lang/it/intro_templates.txt
new file mode 100644
index 0000000..a38d868
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/it/intro_templates.txt
@@ -0,0 +1 @@
+Questi sono i temi attualmente installati nel tuo DokuWiki. Puoi selezionare il tema da usare in [[?do=admin&page=config|Configurazione Wiki]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/it/lang.php b/wiki/lib/plugins/extension/lang/it/lang.php
new file mode 100644
index 0000000..3d414a4
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/it/lang.php
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Fabio <fabioslurp@yahoo.it>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ * @author Maurizio <mcannavo@katamail.com>
+ */
+$lang['menu']                  = 'Manager delle Extension';
+$lang['tab_plugins']           = 'Plugin Installati';
+$lang['tab_templates']         = 'Template Installati';
+$lang['tab_search']            = 'Ricerca e Installazione';
+$lang['tab_install']           = 'Installazione Manuale';
+$lang['notimplemented']        = 'Questa funzionalità non è ancora stata implementata';
+$lang['notinstalled']          = 'Questa extension non è installata';
+$lang['alreadyenabled']        = 'Questa extension è già stata abilitata';
+$lang['alreadydisabled']       = 'Questa extension à già stata disabilitata';
+$lang['pluginlistsaveerror']   = 'Si è verificato un errore durante il salvataggio dell\'elenco dei plugin';
+$lang['unknownauthor']         = 'Autore sconosciuto';
+$lang['unknownversion']        = 'Revisione sconosciuta';
+$lang['btn_info']              = 'Mostra maggiori informazioni';
+$lang['btn_update']            = 'Aggiorna';
+$lang['btn_uninstall']         = 'Disinstalla';
+$lang['btn_enable']            = 'Abilita';
+$lang['btn_disable']           = 'Disabilita';
+$lang['btn_install']           = 'Installa';
+$lang['btn_reinstall']         = 'Reinstalla';
+$lang['js']['reallydel']       = 'Sicuro di disinstallare questa estensione?';
+$lang['js']['display_viewoptions'] = 'Opzioni di Visualizzazione:';
+$lang['js']['display_enabled'] = 'abilitato';
+$lang['js']['display_disabled'] = 'disabilitato';
+$lang['js']['display_updatable'] = 'aggiornabile';
+$lang['search_for']            = 'Extension di Ricerca:';
+$lang['search']                = 'Cerca';
+$lang['extensionby']           = '<strong>%s</strong> da %s';
+$lang['screenshot']            = 'Screenshot di %s';
+$lang['popularity']            = 'Popolarità: %s%%';
+$lang['homepage_link']         = 'Documenti';
+$lang['bugs_features']         = 'Bug';
+$lang['tags']                  = 'Tag:';
+$lang['author_hint']           = 'Cerca estensioni per questo autore';
+$lang['installed']             = 'Installato:';
+$lang['downloadurl']           = 'URL download:';
+$lang['repository']            = 'Repository';
+$lang['unknown']               = '<em>sconosciuto</em>';
+$lang['installed_version']     = 'Versione installata';
+$lang['install_date']          = 'Il tuo ultimo aggiornamento:';
+$lang['available_version']     = 'Versione disponibile:';
+$lang['compatible']            = 'Compatibile con:';
+$lang['depends']               = 'Dipende da:';
+$lang['similar']               = 'Simile a:';
+$lang['conflicts']             = 'Conflitto con:';
+$lang['donate']                = 'Simile a questo?';
+$lang['donate_action']         = 'Paga un caffè all\'autore!';
+$lang['repo_retry']            = 'Riprova';
+$lang['provides']              = 'Fornisce:';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'installato';
+$lang['status_not_installed']  = 'non installato';
+$lang['status_protected']      = 'protetto';
+$lang['status_enabled']        = 'abilitato';
+$lang['status_disabled']       = 'disabilitato';
+$lang['status_unmodifiable']   = 'inmodificabile';
+$lang['status_plugin']         = 'plugin';
+$lang['status_template']       = 'modello';
+$lang['status_bundled']        = 'accoppiato';
+$lang['msg_enabled']           = 'Plugin %s abilitato';
+$lang['msg_disabled']          = 'Plugin %s disabilitato';
+$lang['msg_delete_success']    = 'Estensione %s disinstallata';
+$lang['msg_delete_failed']     = 'Disinstallazione dell\'Extension %s fallita';
+$lang['msg_template_install_success'] = 'Il template %s è stato installato correttamente';
+$lang['msg_template_update_success'] = 'Il Template %s è stato aggiornato correttamente';
+$lang['msg_plugin_install_success'] = 'Plugin %s installato con successo';
+$lang['msg_plugin_update_success'] = 'Plugin %s aggiornato con successo';
+$lang['msg_upload_failed']     = 'Caricamento del file fallito';
+$lang['missing_dependency']    = '<strong>Dipendenza mancante o disabilitata: </strong> %s';
+$lang['security_issue']        = '<strong>Problema di sicurezza:</strong> %s';
+$lang['security_warning']      = '<strong>Avvertimento di sicurezza:</strong> %s';
+$lang['update_available']      = '<strong>Aggiornamento:</strong> Nuova versione %s disponibile.';
+$lang['wrong_folder']          = '<strong>Plugin non installato correttamente:</strong> rinomina la directory del plugin "%s" in "%s".';
+$lang['url_change']            = '<strong>URL cambiato:</strong> l\'URL per il download è cambiato dall\'ultima volta che è stato utilizzato. Controlla se il nuovo URL è valido prima di aggiornare l\'estensione.<br />Nuovo: %s<br />Vecchio: %s';
+$lang['error_badurl']          = 'URLs deve iniziare con http o https';
+$lang['error_dircreate']       = 'Impossibile creare una cartella temporanea per ricevere il download';
+$lang['error_download']        = 'Impossibile scaricare il file: %s';
+$lang['error_decompress']      = 'Impossibile decomprimere il file scaricato. Ciò può dipendere da errori in fase di download, nel qual caso dovreste ripetere l\'operazione; oppure il formato di compressione è sconosciuto, e in questo caso dovrete scaricare e installare manualmente.';
+$lang['error_findfolder']      = 'Impossibile identificare la directory dell\'extension, dovrete scaricare e installare manualmente';
+$lang['error_copy']            = 'C\'è stato un errore di copia dei file mentre si tentava di copiare i file per la directory <em>%s</em>: il disco potrebbe essere pieno o i pemessi di accesso ai file potrebbero essere sbagliati. Questo potrebbe aver causato una parziale installazione dei plugin lasciando il tuo wiki instabile';
+$lang['noperms']               = 'La directory Extension non è scrivibile';
+$lang['notplperms']            = 'Il modello di cartella non è scrivibile';
+$lang['nopluginperms']         = 'La cartella plugin non è scrivibile';
+$lang['git']                   = 'Questa extension è stata installata da git, potreste non volerla aggiornare qui.';
+$lang['auth']                  = 'Questo plugin di autenticazione non è abilitato nella configurazione, considera di disabilitarlo.';
+$lang['install_url']           = 'Installa da URL:';
+$lang['install_upload']        = 'Caricamento Extension:';
+$lang['repo_error']            = 'Il repository dei plugin non può essere raggiunto. Assicuratevi che il vostro server sia abilitato a contattare l\'indirizzo www.dokuwiki.org e controllate le impostazioni del vostro proxy.';
+$lang['nossl']                 = 'La tua installazione PHP sembra mancare del supporto SSL. I download per molte estensioni di DokuWiki non funzioneranno.';
diff --git a/wiki/lib/plugins/extension/lang/ja/intro_install.txt b/wiki/lib/plugins/extension/lang/ja/intro_install.txt
new file mode 100644
index 0000000..9f99b82
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ja/intro_install.txt
@@ -0,0 +1 @@
+アップロードするかダウンロードURLを指定して、手動でプラグインやテンプレートをインストールできます。
diff --git a/wiki/lib/plugins/extension/lang/ja/intro_plugins.txt b/wiki/lib/plugins/extension/lang/ja/intro_plugins.txt
new file mode 100644
index 0000000..b8251c7
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ja/intro_plugins.txt
@@ -0,0 +1 @@
+このDokuWikiに現在インストールされているプラグインです。これらプラグインを有効化、無効化、アンインストールできます。更新はできる場合のみ表示されます。更新前に、プラグインの解説をお読みください。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ja/intro_search.txt b/wiki/lib/plugins/extension/lang/ja/intro_search.txt
new file mode 100644
index 0000000..66d977b
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ja/intro_search.txt
@@ -0,0 +1 @@
+このタブでは、DokuWiki用の利用可能なすべてのサードパーティのプラグインとテンプレートにアクセスできます。サードパーティ製のコードには、**セキュリティ上のリスク**の可能性があることに注意してください、最初に[[doku>ja:security#プラグインのセキュリティ|プラグインのセキュリティ]]を読むことをお勧めします。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ja/intro_templates.txt b/wiki/lib/plugins/extension/lang/ja/intro_templates.txt
new file mode 100644
index 0000000..5de6d2f
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ja/intro_templates.txt
@@ -0,0 +1 @@
+このDokuWikiに現在インストールされているテンプレートです。使用するテンプレートは[[?do=admin&page=config|設定管理]]で選択できます。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ja/lang.php b/wiki/lib/plugins/extension/lang/ja/lang.php
new file mode 100644
index 0000000..6b3ef67
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ja/lang.php
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ * @author PzF_X <jp_minecraft@yahoo.co.jp>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ */
+$lang['menu']                  = '拡張機能管理';
+$lang['tab_plugins']           = 'インストール済プラグイン';
+$lang['tab_templates']         = 'インストール済テンプレート';
+$lang['tab_search']            = '検索とインストール';
+$lang['tab_install']           = '手動インストール';
+$lang['notimplemented']        = 'この機能は未実装です。';
+$lang['notinstalled']          = 'この拡張機能はインストールされていません。';
+$lang['alreadyenabled']        = 'この拡張機能は有効です。';
+$lang['alreadydisabled']       = 'この拡張機能は無効です。';
+$lang['pluginlistsaveerror']   = 'プラグイン一覧の保存中にエラーが発生しました。';
+$lang['unknownauthor']         = '作者不明';
+$lang['unknownversion']        = 'バージョン不明';
+$lang['btn_info']              = '詳細情報を表示する。';
+$lang['btn_update']            = '更新';
+$lang['btn_uninstall']         = 'アンインストール';
+$lang['btn_enable']            = '有効化';
+$lang['btn_disable']           = '無効化';
+$lang['btn_install']           = 'インストール';
+$lang['btn_reinstall']         = '再インストール';
+$lang['js']['reallydel']       = 'この拡張機能を本当にアンインストールしますか?';
+$lang['js']['display_viewoptions'] = '表示オプション: ';
+$lang['js']['display_enabled'] = '有効';
+$lang['js']['display_disabled'] = '無効';
+$lang['js']['display_updatable'] = '更新可能';
+$lang['search_for']            = '拡張機能の検索:';
+$lang['search']                = '検索';
+$lang['extensionby']           = '<strong>%s</strong> 作者: %s';
+$lang['screenshot']            = '%s のスクリーンショット';
+$lang['popularity']            = '利用状況:%s%%';
+$lang['homepage_link']         = '解説';
+$lang['bugs_features']         = 'バグ';
+$lang['tags']                  = 'タグ:';
+$lang['author_hint']           = 'この作者で拡張機能を検索';
+$lang['installed']             = 'インストール済:';
+$lang['downloadurl']           = 'ダウンロード URL:';
+$lang['repository']            = 'リポジトリ:';
+$lang['unknown']               = '<em>不明</em>';
+$lang['installed_version']     = 'インストール済バージョン:';
+$lang['install_date']          = '最終更新日:';
+$lang['available_version']     = '利用可能バージョン:';
+$lang['compatible']            = '互換:';
+$lang['depends']               = '依存:';
+$lang['similar']               = '類似:';
+$lang['conflicts']             = '競合:';
+$lang['donate']                = 'お気に入り?';
+$lang['donate_action']         = '寄付先';
+$lang['repo_retry']            = '再実行';
+$lang['provides']              = '提供:';
+$lang['status']                = '状態:';
+$lang['status_installed']      = 'インストール済';
+$lang['status_not_installed']  = '未インストール';
+$lang['status_protected']      = '保護されています';
+$lang['status_enabled']        = '有効';
+$lang['status_disabled']       = '無効';
+$lang['status_unmodifiable']   = '編集不可';
+$lang['status_plugin']         = 'プラグイン';
+$lang['status_template']       = 'テンプレート';
+$lang['status_bundled']        = '同梱';
+$lang['msg_enabled']           = '%s プラグインを有効化しました。';
+$lang['msg_disabled']          = '%s プラグインを無効化しました。';
+$lang['msg_delete_success']    = '拡張機能 %s をアンインストールしました。';
+$lang['msg_delete_failed']     = '拡張機能 %s のアンインストールに失敗しました。';
+$lang['msg_template_install_success'] = '%s テンプレートをインストールできました。';
+$lang['msg_template_update_success'] = '%s テンプレートを更新できました。';
+$lang['msg_plugin_install_success'] = '%s プラグインをインストールできました。';
+$lang['msg_plugin_update_success'] = '%s プラグインを更新できました。';
+$lang['msg_upload_failed']     = 'ファイルのアップロードに失敗しました。';
+$lang['missing_dependency']    = '<strong>依存関係が欠落または無効:</strong> %s';
+$lang['security_issue']        = '<strong>セキュリティ問題:</strong> %s';
+$lang['security_warning']      = '<strong>セキュリティ警告:</strong> %s';
+$lang['update_available']      = '<strong>更新:</strong> %sの新バージョンが利用可能です。';
+$lang['wrong_folder']          = '<strong>プラグインは正しくインストールされませんでした:</strong> プラグインのディレクトリを "%s" から "%s" へ変更して下さい。';
+$lang['url_change']            = '<strong>URL が変更されました:</strong> 最後にダウンロードした後、ダウンロード URL が変更されました。拡張機能のアップデート前に新 URL が正しいかを確認して下さい。<br />新:%s<br />旧:%s';
+$lang['error_badurl']          = 'URLはhttpかhttpsで始まる必要があります。';
+$lang['error_dircreate']       = 'ダウンロード用の一時フォルダが作成できません。';
+$lang['error_download']        = 'ファイルをダウンロードできません:%s';
+$lang['error_decompress']      = 'ダウンロードしたファイルを解凍できません。ダウンロードの失敗の結果であれば、再度試して下さい。圧縮形式が不明の場合は、手動でダウンロード・インストールしてください。';
+$lang['error_findfolder']      = '拡張機能ディレクトリを認識できません。手動でダウンロード・インストールしてください。';
+$lang['error_copy']            = '<em>%s</em> ディレクトリのファイルをインストールしようとした時、ファイルコピーエラーが発生しました:ディスクがいっぱいかもしれませんし、ファイルのアクセス権が正しくないかもしれません。プラグインが一部分インストールされ、wiki が不安定になるかもしれません。';
+$lang['noperms']               = '拡張機能ディレクトリが書き込み不可です。';
+$lang['notplperms']            = 'テンプレートディレクトリが書き込み不可です。';
+$lang['nopluginperms']         = 'プラグインディレクトリが書き込み不可です。';
+$lang['git']                   = 'この拡張機能は Git 経由でインストールされており、ここで更新すべきでないかもしれません。';
+$lang['auth']                  = 'この認証プラグインは設定管理画面で無効化されています。';
+$lang['install_url']           = 'URL からインストール:';
+$lang['install_upload']        = '拡張機能をアップロード:';
+$lang['repo_error']            = 'プラグインのリポジトリに接続できません。サーバーが www.dokuwiki.org に接続できることやプロキシの設定を確認して下さい。';
+$lang['nossl']                 = 'PHP機能がSSLをサポートしていないため、拡張機能のダウンロードが正常に動作しません。';
diff --git a/wiki/lib/plugins/extension/lang/ko/intro_install.txt b/wiki/lib/plugins/extension/lang/ko/intro_install.txt
new file mode 100644
index 0000000..269df29
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ko/intro_install.txt
@@ -0,0 +1 @@
+여기에 플러그인과 템플릿을 수동으로 올리거나 직접 다운로드 URL을 제공하여 수동으로 설치할 수 있습니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ko/intro_plugins.txt b/wiki/lib/plugins/extension/lang/ko/intro_plugins.txt
new file mode 100644
index 0000000..9ac7a3d
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ko/intro_plugins.txt
@@ -0,0 +1 @@
+도쿠위키에 현재 설치된 플러그인입니다. 여기에서 플러그인을 활성화 또는 비활성화하거나 심지어 완전히 제거할 수 있습니다. 또한 플러그인 업데이트는 여기에 보여집니다. 업데이트하기 전에 플러그인의 설명문서를 읽으십시오.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ko/intro_search.txt b/wiki/lib/plugins/extension/lang/ko/intro_search.txt
new file mode 100644
index 0000000..b676026
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ko/intro_search.txt
@@ -0,0 +1 @@
+이 탭은 도쿠위키를 위한 사용할 수 있는 모든 타사 플러그인과 템플릿에 접근하도록 제공합니다. 타사 코드를 설치하면 **보안 위험에 노출**될 수 있음을 유의하십시오, 먼저 [[doku>security#plugin_security|플러그인 보안]]에 대해 읽을 수 있습니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ko/intro_templates.txt b/wiki/lib/plugins/extension/lang/ko/intro_templates.txt
new file mode 100644
index 0000000..d4320b8
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ko/intro_templates.txt
@@ -0,0 +1 @@
+도쿠위키에 현재 설치된 템플릿입니다. [[?do=admin&page=config|환경 설정 관리자]]에서 사용하는 템플릿을 선택할 수 있습니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ko/lang.php b/wiki/lib/plugins/extension/lang/ko/lang.php
new file mode 100644
index 0000000..50ec739
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ko/lang.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Young gon Cha <garmede@gmail.com>
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author hyeonsoft <hyeonsoft@live.co.kr>
+ */
+$lang['menu']                  = '확장 기능 관리자';
+$lang['tab_plugins']           = '설치된 플러그인';
+$lang['tab_templates']         = '설치된 템플릿';
+$lang['tab_search']            = '검색하고 설치';
+$lang['tab_install']           = '수동 설치';
+$lang['notimplemented']        = '이 기능은 아직 구현되지 않았습니다';
+$lang['notinstalled']          = '이 확장 기능은 설치되어 있지 않습니다';
+$lang['alreadyenabled']        = '이 확장 기능이 이미 활성화되어 있습니다';
+$lang['alreadydisabled']       = '이 확장 기능이 이미 비활성화되어 있습니다';
+$lang['pluginlistsaveerror']   = '플러그인 목록을 저장하는 중 오류가 있었습니다';
+$lang['unknownauthor']         = '알 수 없는 저자';
+$lang['unknownversion']        = '알 수 없는 버전';
+$lang['btn_info']              = '정보 더 보기';
+$lang['btn_update']            = '업데이트';
+$lang['btn_uninstall']         = '제거';
+$lang['btn_enable']            = '활성화';
+$lang['btn_disable']           = '비활성화';
+$lang['btn_install']           = '설치';
+$lang['btn_reinstall']         = '다시 설치';
+$lang['js']['reallydel']       = '정말 이 확장 기능을 제거하겠습니까?';
+$lang['js']['display_viewoptions'] = '보기 옵션:';
+$lang['js']['display_enabled'] = '활성화됨';
+$lang['js']['display_disabled'] = '비활성화됨';
+$lang['js']['display_updatable'] = '업데이트할 수 있음';
+$lang['search_for']            = '확장 기능 검색:';
+$lang['search']                = '검색';
+$lang['extensionby']           = '<strong>%s</strong> (저자 %s)';
+$lang['screenshot']            = '%s의 스크린샷';
+$lang['popularity']            = '인기: %s%%';
+$lang['homepage_link']         = '문서';
+$lang['bugs_features']         = '버그';
+$lang['tags']                  = '태그:';
+$lang['author_hint']           = '이 저자로 확장 기능 검색';
+$lang['installed']             = '설치됨:';
+$lang['downloadurl']           = '다운로드 URL:';
+$lang['repository']            = '저장소:';
+$lang['unknown']               = '<em>알 수 없음</em>';
+$lang['installed_version']     = '설치된 버전:';
+$lang['install_date']          = '마지막 업데이트:';
+$lang['available_version']     = '가능한 버전:';
+$lang['compatible']            = '다음과의 호환성:';
+$lang['depends']               = '다음에 의존:';
+$lang['similar']               = '다음과 비슷:';
+$lang['conflicts']             = '다음과 충돌:';
+$lang['donate']                = '이것이 좋나요?';
+$lang['donate_action']         = '저자에게 커피를 사주세요!';
+$lang['repo_retry']            = '다시 시도';
+$lang['provides']              = '제공:';
+$lang['status']                = '상태:';
+$lang['status_installed']      = '설치됨';
+$lang['status_not_installed']  = '설치되지 않음';
+$lang['status_protected']      = '보호됨';
+$lang['status_enabled']        = '활성화됨';
+$lang['status_disabled']       = '비활성화됨';
+$lang['status_unmodifiable']   = '수정할 수 없음';
+$lang['status_plugin']         = '플러그인';
+$lang['status_template']       = '템플릿';
+$lang['status_bundled']        = '포함';
+$lang['msg_enabled']           = '%s 플러그인이 활성화되었습니다';
+$lang['msg_disabled']          = '%s 플러그인이 비활성화되었습니다';
+$lang['msg_delete_success']    = '%s 확장 기능이 제거되었습니다';
+$lang['msg_delete_failed']     = '%s 확장 기능 제거에 실패했습니다';
+$lang['msg_template_install_success'] = '%s 템플릿을 성공적으로 설치했습니다';
+$lang['msg_template_update_success'] = '%s 템플릿을 성공적으로 업데이트했습니다';
+$lang['msg_plugin_install_success'] = '%s 플러그인을 성공적으로 설치했습니다';
+$lang['msg_plugin_update_success'] = '%s 플러그인을 성공적으로 업데이트했습니다';
+$lang['msg_upload_failed']     = '파일 올리기에 실패했습니다';
+$lang['missing_dependency']    = '<strong>의존성을 잃었거나 비활성화되어 있습니다:</strong> %s';
+$lang['security_issue']        = '<strong>보안 문제:</strong> %s';
+$lang['security_warning']      = '<strong>보안 경고:</strong> %s';
+$lang['update_available']      = '<strong>업데이트:</strong> 새 버전 %s(을)를 사용할 수 있습니다.';
+$lang['wrong_folder']          = '<strong>플러그인이 올바르지 않게 설치됨:</strong> 플러그인 디렉터리를 "%s"에서 "%s"로 이름을 바꾸세요.';
+$lang['url_change']            = '<strong>URL이 바뀜:</strong> 다운로드 URL이 최신 다운로드 이래로 바뀌었습니다. 확장 기능을 업데이트하기 전에 새 URL이 올바른지 확인하세요.<br />새 URL: %s<br />오래된 URL: %s';
+$lang['error_badurl']          = 'URL은 http나 https로 시작해야 합니다';
+$lang['error_dircreate']       = '다운로드를 받을 임시 폴더를 만들 수 없습니다';
+$lang['error_download']        = '파일을 다운로드할 수 없습니다: %s';
+$lang['error_decompress']      = '다운로드한 파일의 압축을 풀 수 없습니다. 이는 아마도 잘못된 다운로드의 결과로, 이럴 경우 다시 시도해야 합니다; 또는 압축 형식을 알 수 없으며, 이럴 경우 수동으로 다운로드하고 설치해야 합니다.';
+$lang['error_findfolder']      = '확장 기능 디렉터리를 식별할 수 없습니다, 수동으로 다운로드하고 설치해야 합니다';
+$lang['error_copy']            = '<em>%s</em> 디렉터리에 파일을 설치하는 동안 파일 복사 오류가 발생했습니다: 디스크가 꽉 찼거나 파일 접근 권한이 잘못되었을 수도 있습니다. 플러그인이 부분적으로 설치되어 위키가 불안정할지도 모릅니다';
+$lang['noperms']               = '확장 기능 디렉터리에 쓸 수 없습니다';
+$lang['notplperms']            = '임시 디렉터리에 쓸 수 없습니다';
+$lang['nopluginperms']         = '플러그인 디렉터리에 쓸 수 없습니다';
+$lang['git']                   = '이 확장 기능은 git를 통해 설치되었으며, 여기에서 업데이트할 수 없을 수 있습니다.';
+$lang['auth']                  = '이 인증 플러그인은 환경 설정에서 활성화할 수 없습니다, 그것을 비활성화하는 것을 고려하세요.';
+$lang['install_url']           = 'URL에서 설치:';
+$lang['install_upload']        = '확장 기능 올리기:';
+$lang['repo_error']            = '플러그인 저장소에 연결할 수 없습니다. 서버가 www.dokuwiki.org에 연결할 수 있는지 확인하고 프록시 설정을 확인하세요.';
+$lang['nossl']                 = 'PHP가 SSL 지원을 하지 않는 것으로 보입니다. 많은 도쿠위키 확장 기능의 다운로드가 작동하지 않을 것입니다.';
diff --git a/wiki/lib/plugins/extension/lang/lv/intro_templates.txt b/wiki/lib/plugins/extension/lang/lv/intro_templates.txt
new file mode 100644
index 0000000..1014c7c
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/lv/intro_templates.txt
@@ -0,0 +1 @@
+DokuWiki ir instalēti šādi šabloni. Lietojamo šablonu var norādīt  [[?do=admin&page=config|Konfigurācijas lapā]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/lv/lang.php b/wiki/lib/plugins/extension/lang/lv/lang.php
new file mode 100644
index 0000000..b3e5ce0
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/lv/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['msg_delete_success']    = 'Papildinājums %s atinstalēts';
diff --git a/wiki/lib/plugins/extension/lang/nl/intro_install.txt b/wiki/lib/plugins/extension/lang/nl/intro_install.txt
new file mode 100644
index 0000000..6a0b410
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/nl/intro_install.txt
@@ -0,0 +1 @@
+Hier kunt u handmatig plugins en templates installeren door deze te uploaden of door een directe download URL op te geven.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/nl/intro_plugins.txt b/wiki/lib/plugins/extension/lang/nl/intro_plugins.txt
new file mode 100644
index 0000000..e12bdf0
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/nl/intro_plugins.txt
@@ -0,0 +1 @@
+Dit zijn de momenteel in uw Dokuwiki geïnstalleerde plugins. U kunt deze hier aan of uitschakelen danwel geheel deïnstalleren. Plugin updates zijn hier ook opgenomen, lees de plugin documentatie voordat u update.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/nl/intro_search.txt b/wiki/lib/plugins/extension/lang/nl/intro_search.txt
new file mode 100644
index 0000000..f0c8d74
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/nl/intro_search.txt
@@ -0,0 +1 @@
+Deze tab verschaft u toegang tot alle plugins en templates vervaardigd door derden en bestemd voor Dokuwiki. Houdt er rekening mee dat indien u Plugins van derden installeert deze een **veiligheids risico ** kunnen bevatten, geadviseerd wordt om eerst te lezen [[doku>security#plugin_security|plugin security]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/nl/intro_templates.txt b/wiki/lib/plugins/extension/lang/nl/intro_templates.txt
new file mode 100644
index 0000000..52c96ce
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/nl/intro_templates.txt
@@ -0,0 +1 @@
+Deze templates zijn thans in DokuWiki geïnstalleerd. U kunt een template selecteren middels [[?do=admin&page=config|Configuration Manager]] .
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/nl/lang.php b/wiki/lib/plugins/extension/lang/nl/lang.php
new file mode 100644
index 0000000..4fe8359
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/nl/lang.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Rene <wllywlnt@yahoo.com>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Johan Vervloet <johan.vervloet@gmail.com>
+ * @author Mijndert <mijndert@mijndertstuij.nl>
+ * @author Johan Wijnker <johan@wijnker.eu>
+ * @author Mark C. Prins <mprins@users.sf.net>
+ * @author hugo smet <hugo.smet@scarlet.be>
+ */
+$lang['menu']                  = 'Uitbreidingen';
+$lang['tab_plugins']           = 'Geïnstalleerde Plugins';
+$lang['tab_templates']         = 'Geïnstalleerde Templates';
+$lang['tab_search']            = 'Zoek en installeer';
+$lang['tab_install']           = 'Handmatige installatie';
+$lang['notimplemented']        = 'Deze toepassing is nog niet geïnstalleerd';
+$lang['notinstalled']          = 'Deze uitbreiding is nog niet geïnstalleerd';
+$lang['alreadyenabled']        = 'Deze uitbreiding is reeds ingeschakeld';
+$lang['alreadydisabled']       = 'Deze uitbreiding is reeds uitgeschakeld';
+$lang['pluginlistsaveerror']   = 'Fout bij het opslaan van de plugin lijst';
+$lang['unknownauthor']         = 'Onbekende auteur';
+$lang['unknownversion']        = 'Onbekende versie';
+$lang['btn_info']              = 'Toon meer informatie';
+$lang['btn_update']            = 'Update';
+$lang['btn_uninstall']         = 'Deinstalleer';
+$lang['btn_enable']            = 'Schakel aan';
+$lang['btn_disable']           = 'Schakel uit';
+$lang['btn_install']           = 'Installeer';
+$lang['btn_reinstall']         = 'Her-installeer';
+$lang['js']['reallydel']       = 'Wilt u deze uitbreiding deinstalleren?';
+$lang['js']['display_viewoptions'] = 'Weergave opties:';
+$lang['js']['display_enabled'] = 'ingeschakeld';
+$lang['js']['display_disabled'] = 'uitgeschakeld';
+$lang['js']['display_updatable'] = 'update beschikbaar';
+$lang['search_for']            = 'Zoek Uitbreiding:';
+$lang['search']                = 'Zoek';
+$lang['extensionby']           = '<strong>%s</strong> by %s';
+$lang['screenshot']            = 'Schermafdruk bij %s';
+$lang['popularity']            = 'Populariteit: %s%%';
+$lang['homepage_link']         = 'Documentatie';
+$lang['bugs_features']         = 'Bugs';
+$lang['tags']                  = 'Tags:';
+$lang['author_hint']           = 'Zoek uitbreidingen van deze auteur:';
+$lang['installed']             = 'Geinstalleerd:';
+$lang['downloadurl']           = 'Download URL:';
+$lang['repository']            = 'Centrale opslag:';
+$lang['unknown']               = '<em>onbekend</em>';
+$lang['installed_version']     = 'Geïnstalleerde versie:';
+$lang['install_date']          = 'Uw laatste update:';
+$lang['available_version']     = 'Beschikbare versie:';
+$lang['compatible']            = 'Compatible met:';
+$lang['depends']               = 'Afhankelijk van:';
+$lang['similar']               = 'Soortgelijk:';
+$lang['conflicts']             = 'Conflicteerd met:';
+$lang['donate']                = 'Vindt u dit leuk?';
+$lang['donate_action']         = 'Koop een kop koffie voor de auteur!';
+$lang['repo_retry']            = 'Herhaal';
+$lang['provides']              = 'Zorgt voor:';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'Geïnstalleerd';
+$lang['status_not_installed']  = 'niet geïnstalleerd ';
+$lang['status_protected']      = 'beschermd';
+$lang['status_enabled']        = 'ingeschakeld';
+$lang['status_disabled']       = 'uitgeschakeld';
+$lang['status_unmodifiable']   = 'Niet wijzigbaar';
+$lang['status_plugin']         = 'plugin';
+$lang['status_template']       = 'template';
+$lang['status_bundled']        = 'Gebundeld';
+$lang['msg_enabled']           = 'Plugin %s ingeschakeld';
+$lang['msg_disabled']          = 'Plugin %s uitgeschakeld';
+$lang['msg_delete_success']    = 'Uitbreiding %s gedeinstalleerd';
+$lang['msg_delete_failed']     = 'Het deïnstalleren van de extensie %s is mislukt.';
+$lang['msg_template_install_success'] = 'Template %s werd succesvol geïnstalleerd';
+$lang['msg_template_update_success'] = 'Template %s werd succesvol geüpdatet';
+$lang['msg_plugin_install_success'] = 'Plugin %s werd succesvol geïnstalleerd';
+$lang['msg_plugin_update_success'] = 'Plugin %s werd succesvol geüpdatet';
+$lang['msg_upload_failed']     = 'Uploaden van het bestand is mislukt';
+$lang['missing_dependency']    = '<strong>niet aanwezige of uitgeschakelde afhankelijkheid</strong> %s';
+$lang['security_issue']        = '<strong>Veiligheids kwestie:</strong> %s';
+$lang['security_warning']      = '<strong>Veiligheids Waarschuwing</strong> %s';
+$lang['update_available']      = '<strong>Update:</strong> Nieuwe versie %s is beschikbaar.';
+$lang['wrong_folder']          = '<strong>Plugin onjuist geïnstalleerd:</strong> Hernoem de plugin directory van "%s" naar "%s"';
+$lang['url_change']            = '<strong>URL gewijzigd:</strong> Download URL is gewijzigd sinds de laatste download. Controleer of de nieuwe URL juist is voordat u de uitbreiding updatet. <br />Nieuw:%s<Br /> Vorig: %s';
+$lang['error_badurl']          = 'URLs moeten beginnen met http of https';
+$lang['error_dircreate']       = 'De tijdelijke map kon niet worden gemaakt om de download te ontvangen';
+$lang['error_download']        = 'Het is niet mogelijk het bestand te downloaden: %s';
+$lang['error_decompress']      = 'Onmogelijk om het gedownloade bestand uit te pakken. Dit is wellicht het gevolg van een onvolledige/onjuiste download, in welk geval u het nog eens moet proberen; of het compressie formaat is onbekend in welk geval u het bestand handmatig moet downloaden en installeren.';
+$lang['error_findfolder']      = 'Onmogelijk om de uitbreidings directory te vinden, u moet het zelf downloaden en installeren';
+$lang['error_copy']            = 'Er was een bestand kopieer fout tijdens het installeren van bestanden in directory <em>%s</em>: de schijf kan vol zijn of de bestand toegangs rechten kunnen onjuist zijn. Dit kan tot gevolg hebben dat de plugin slechts gedeeltelijk werd geïnstalleerd waardoor uw wiki installatie onstabiel is ';
+$lang['noperms']               = 'Uitbreidings directory is niet schrijfbaar';
+$lang['notplperms']            = 'Template directory is niet schrijfbaar';
+$lang['nopluginperms']         = 'Plugin directory is niet schrijfbaar';
+$lang['git']                   = 'De uitbreiding werd geïnstalleerd via git, u wilt deze hier wellicht niet aanpassen.';
+$lang['auth']                  = 'Deze auth plugin is niet geactiveerd in de configuratie, overweeg het om uit te schakelen.';
+$lang['install_url']           = 'Installeer vanaf URL:';
+$lang['install_upload']        = 'Upload Uitbreiding:';
+$lang['repo_error']            = 'Er kon geen verbinding worden gemaakt met de centrale plugin opslag. Controleer of de server verbinding mag maken met www.dokuwiki.org en controleer de proxy instellingen.';
+$lang['nossl']                 = 'Je PHP mist SSL ondersteuning. Downloaden werkt niet met veel DokuWiki extensies.';
diff --git a/wiki/lib/plugins/extension/lang/no/intro_install.txt b/wiki/lib/plugins/extension/lang/no/intro_install.txt
new file mode 100644
index 0000000..6453cae
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/no/intro_install.txt
@@ -0,0 +1 @@
+Her kan du manuellt installere programtillegg eller maler, enten ved å laste de opp, eller ved å skrive inn nettadressen til utvidelsen
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/no/intro_plugins.txt b/wiki/lib/plugins/extension/lang/no/intro_plugins.txt
new file mode 100644
index 0000000..e9e34d1
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/no/intro_plugins.txt
@@ -0,0 +1 @@
+Her finner du de programtillegg som er installert i din DokuWiki. Du kan slå av/på, eller avistallere dine programtillegg her. Oppdatering av programtillegg vil også vises her, men du bør lese dokumentasjonen for disse før du oppdaterere.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/no/intro_search.txt b/wiki/lib/plugins/extension/lang/no/intro_search.txt
new file mode 100644
index 0000000..d139fe9
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/no/intro_search.txt
@@ -0,0 +1 @@
+Denne fanen gir deg tillgang til alle tilgjengelige tredjeparts programtillegg og maler for DokuWiki. Merk at det å installere tillegg fra tredjepart kan innebære en **sikerhetsrisiko**. Les mer om [[doku>security#plugin_security|sikkerhet og tillegg ]] før installasjon av disse.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/no/intro_templates.txt b/wiki/lib/plugins/extension/lang/no/intro_templates.txt
new file mode 100644
index 0000000..0649620
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/no/intro_templates.txt
@@ -0,0 +1,2 @@
+Her finner du malene som nå er installert i denne DokuWikien. Her velger du malen som brukes i siden for [[?do=admin&page=config|konfigurasjonsinnstillinger]].
+
diff --git a/wiki/lib/plugins/extension/lang/no/lang.php b/wiki/lib/plugins/extension/lang/no/lang.php
new file mode 100644
index 0000000..0ceec58
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/no/lang.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['menu']                  = 'Utvidelsesbehandling';
+$lang['tab_plugins']           = 'Installerte programtillegg';
+$lang['tab_templates']         = 'Installerte maler';
+$lang['tab_search']            = 'Søk og installer';
+$lang['tab_install']           = 'Manuell installasjon';
+$lang['notimplemented']        = 'Denne funksjon er ikke laget ennå';
+$lang['notinstalled']          = 'Denne utvidelsen er ikke installert ';
+$lang['alreadyenabled']        = 'Denne utvidelsen er allerede slått på';
+$lang['alreadydisabled']       = 'Denne utvidelsen er allerede slått av';
+$lang['pluginlistsaveerror']   = 'Det oppsto en feil ved lagring av programlisten';
+$lang['unknownauthor']         = 'Ukjent utvikler';
+$lang['unknownversion']        = 'Ukjent versjon';
+$lang['btn_info']              = 'Vis mer info';
+$lang['btn_update']            = 'Oppdater';
+$lang['btn_uninstall']         = 'Avinstaller';
+$lang['btn_enable']            = 'Slå på';
+$lang['btn_disable']           = 'Slå av';
+$lang['btn_install']           = 'Installer';
+$lang['btn_reinstall']         = 'Installer på nytt';
+$lang['js']['reallydel']       = 'Vil du virkelig avinstallere denne utvidelsen?';
+$lang['js']['display_viewoptions'] = 'Filtrer etter:';
+$lang['js']['display_enabled'] = 'slått på';
+$lang['js']['display_disabled'] = 'slått av';
+$lang['js']['display_updatable'] = 'Oppdaterbar';
+$lang['search_for']            = 'Finn programtillegg:';
+$lang['search']                = 'Søk';
+$lang['extensionby']           = '<strong>%s</strong> av %s';
+$lang['screenshot']            = 'Skjermbilde av %s';
+$lang['popularity']            = 'Popularitet: %s%%';
+$lang['homepage_link']         = 'Dok.';
+$lang['bugs_features']         = 'Feilm.';
+$lang['tags']                  = 'Stikkord:';
+$lang['author_hint']           = 'Let etter programmtilleg fra denne utvikler';
+$lang['installed']             = 'Installert:';
+$lang['downloadurl']           = 'URL for nedlasting:';
+$lang['repository']            = 'Lager:';
+$lang['unknown']               = '<em>ukjent</em>';
+$lang['installed_version']     = 'Installert versjon';
+$lang['install_date']          = 'Sist oppdatert:';
+$lang['available_version']     = 'Tilgengelig versjon:';
+$lang['compatible']            = 'Kompatibel med:';
+$lang['depends']               = 'Avhenger av:';
+$lang['similar']               = 'Ligner på:';
+$lang['conflicts']             = 'I konflikt med:';
+$lang['donate']                = 'Liker du denne?';
+$lang['donate_action']         = 'Kjøp en kaffe til utvikleren!';
+$lang['repo_retry']            = 'Forsøk igjen';
+$lang['provides']              = 'Tilbyr:';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'installert';
+$lang['status_not_installed']  = 'ikke installert';
+$lang['status_protected']      = 'beskyttet';
+$lang['status_enabled']        = 'slått på ';
+$lang['status_disabled']       = 'slått av';
+$lang['status_unmodifiable']   = 'ikke-modifiserbar';
+$lang['status_plugin']         = 'programtillegg';
+$lang['status_template']       = 'mal';
+$lang['status_bundled']        = 'pakke';
+$lang['msg_enabled']           = 'Programtillegg %s er slått på ';
+$lang['msg_disabled']          = 'Programtillegg %s er slått av ';
+$lang['msg_delete_success']    = 'Utvidelse %s ble avinstallert';
+$lang['msg_delete_failed']     = 'Avinstallering av utvidelse %s feilet';
+$lang['msg_template_install_success'] = 'Mal %s ble installert';
+$lang['msg_template_update_success'] = 'Mal %s ble oppdatert';
+$lang['msg_plugin_install_success'] = 'Programtillegg %s ble installert';
+$lang['msg_plugin_update_success'] = 'Programtillegg %s ble oppdatert';
+$lang['msg_upload_failed']     = 'Opplasting av fil feilet';
+$lang['missing_dependency']    = '<strong>Manglende eller avslått avhengighet:</strong> %s';
+$lang['security_issue']        = '<strong>Sikerhetsproblem:</strong> %s';
+$lang['security_warning']      = '<strong>Sikerhetsvarsel:</strong> %s';
+$lang['update_available']      = '<strong>Oppdater:</strong> Ny versjon %s er tilgjengelig.';
+$lang['wrong_folder']          = '<strong>Programtillegg  feil installert:</strong> Døp om mappen for programtillegg "%s" til "%s".';
+$lang['url_change']            = '<strong>URL er endret:</strong> URL for nedlasning er blitt endret sidene siste nedlastning. Sjekk at den nye URLen er gyldig før du oppdatere utvidelsen.<br />Ny: %s<br />Gammel: %s';
+$lang['error_badurl']          = 'URLer bør starte med http eller https';
+$lang['error_dircreate']       = 'Klarte ikke opprette midlertidig mappe nedlasting';
+$lang['error_download']        = 'Klarte ikke laste ned filen: %s';
+$lang['error_decompress']      = 'Klarte ikke pakke ut nedlastet fil. Muligens fordi nedlastingen feilet, da bør du prøve igjen; eller så kan komprimeringsformatet være ukjent, i så fall må du laste ned og installere utvidelsen manuelt.';
+$lang['error_findfolder']      = 'Klarte ikke finne utvidelsesmappen, du må laste ned og installere manuelt';
+$lang['error_copy']            = 'Det oppsto en kopieringsfeil ved installasjon av filer i katalogen <em>%s </ em>: disken kan være full eller filens tilgangsrettigheter kan være feil. Denne feilen kan ha resultert i en delvis installert programtillegg, og kan føre til at din wiki vil være ustabil.';
+$lang['noperms']               = 'Mappen for utvidelser er ikke skrivbar';
+$lang['notplperms']            = 'Mappen for maler er ikke skrivbar';
+$lang['nopluginperms']         = 'Mappen for programtillegg er ikke skrivbar';
+$lang['git']                   = 'Denne utvidelsen ble installert via git, du vl kanskje ikke oppdatere den herfra.';
+$lang['auth']                  = 'Denne autentiseringsutvidelser er i konfigurasjonsinstillingene ikke slått på. vurder å slå den av.';
+$lang['install_url']           = 'Installer fra URL:';
+$lang['install_upload']        = 'Last opp utvidelse:';
+$lang['repo_error']            = 'Lagret for programtillegg kunne ikke kontaktes. Kontroller at din server har rettigheter til å kontakte www.dokuwiki.org, sjekk også instillinger for hurtiglager (proxy).';
+$lang['nossl']                 = 'DIn PHP-installasjon mangler støtte for SSL. Nedlastning vil derfor ikke virke for mange DokuWIki-utvidelser.';
diff --git a/wiki/lib/plugins/extension/lang/pl/intro_install.txt b/wiki/lib/plugins/extension/lang/pl/intro_install.txt
new file mode 100644
index 0000000..338d939
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pl/intro_install.txt
@@ -0,0 +1 @@
+Tutaj możesz ręcznie zainstalować wtyczki i szablony, przesyłając je lub podając bezpośredni adres URL do pobrania.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pl/intro_plugins.txt b/wiki/lib/plugins/extension/lang/pl/intro_plugins.txt
new file mode 100644
index 0000000..d228485
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pl/intro_plugins.txt
@@ -0,0 +1 @@
+Są to wtyczki aktualnie zainstalowane w twoim DokuWiki. Możesz je tutaj włączyć lub wyłączyć, a nawet całkowicie odinstalować. Znajdziesz tu również informację o nowych wersjach. Przed aktualizacją koniecznie przeczytaj dokumentację wtyczki.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pl/intro_search.txt b/wiki/lib/plugins/extension/lang/pl/intro_search.txt
new file mode 100644
index 0000000..d1773fa
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pl/intro_search.txt
@@ -0,0 +1 @@
+W tej zakładka znajdziesz wszystkie wtyczki i szablony przygotowane dla DokuWiki przez osoby trzecie. Należy pamiętać, że instalacja kodu zewnętrznego może stwarzać ** zagrożenie bezpieczeństwa **. Koniecznie przeczytaj o [[doku>security#plugin_security|bezpieczeństwie wtyczek]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pl/intro_templates.txt b/wiki/lib/plugins/extension/lang/pl/intro_templates.txt
new file mode 100644
index 0000000..ef90cbf
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pl/intro_templates.txt
@@ -0,0 +1 @@
+Są to szablony aktualnie zainstalowane w twoim DokuWiki. [[?do=admin&page=config|Menadżer konfiguracji]] pozwala wybrać używany szablon.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pl/lang.php b/wiki/lib/plugins/extension/lang/pl/lang.php
new file mode 100644
index 0000000..7191dcb
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pl/lang.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Max <maxrb146@gmail.com>
+ * @author Mati <mackosa@wp.pl>
+ */
+$lang['menu']                  = 'Menedżer rozszerzeń';
+$lang['tab_plugins']           = 'Zainstalowane dodatki';
+$lang['tab_templates']         = 'Zainstalowane Szablony';
+$lang['tab_search']            = 'Znajdź i zainstaluj';
+$lang['tab_install']           = 'Instalacja ręczna';
+$lang['notimplemented']        = 'Ta funkcja nie została jeszcze zaimplementowana';
+$lang['notinstalled']          = 'Te rozszerzenie nie zostało zainstalowane';
+$lang['alreadyenabled']        = 'Te rozszerzenie jest już uruchomione';
+$lang['alreadydisabled']       = 'Rozszerzenie zostało wyłączone';
+$lang['pluginlistsaveerror']   = 'Wystąpił błąd podczas zapisywania listy wtyczek';
+$lang['unknownauthor']         = 'Nieznany autor';
+$lang['unknownversion']        = 'Nieznana wersja';
+$lang['btn_info']              = 'Pokaż więcej informacji';
+$lang['btn_update']            = 'Aktualizuj';
+$lang['btn_uninstall']         = 'Odinstaluj';
+$lang['btn_enable']            = 'Uruchom';
+$lang['btn_disable']           = 'Wyłącz';
+$lang['btn_install']           = 'Instaluj';
+$lang['btn_reinstall']         = 'Ponowna instalacja';
+$lang['js']['reallydel']       = 'Naprawdę odinstalować te rozszerzenie?';
+$lang['js']['display_viewoptions'] = 'Zobacz Opcje';
+$lang['js']['display_enabled'] = 'włącz';
+$lang['js']['display_disabled'] = 'wyłącz';
+$lang['js']['display_updatable'] = 'do aktualizacji';
+$lang['search_for']            = 'Szukaj rozszerzenia:';
+$lang['search']                = 'Szukaj';
+$lang['extensionby']           = '<strong>%s</strong> przez %s';
+$lang['screenshot']            = 'Zrzut ekranu z %s';
+$lang['popularity']            = 'Popularność: %s%%';
+$lang['homepage_link']         = 'Dokumenty';
+$lang['bugs_features']         = 'Błędy';
+$lang['tags']                  = 'Tagi:';
+$lang['author_hint']           = 'Szukaj rozszerzenia po autorze';
+$lang['installed']             = 'Zainstalowano:';
+$lang['downloadurl']           = 'Pobierz URL';
+$lang['repository']            = 'Repozytorium';
+$lang['unknown']               = '<em>nie znany</em>';
+$lang['installed_version']     = 'Zainstalowana wersja:';
+$lang['install_date']          = 'Twoja ostatnia aktualizacja:';
+$lang['available_version']     = 'Dostępna wersja:';
+$lang['compatible']            = 'Zgodny z:';
+$lang['depends']               = 'Zależy od:';
+$lang['similar']               = 'Podobny do:';
+$lang['conflicts']             = 'Konflikt z:';
+$lang['donate']                = 'Lubisz to?';
+$lang['donate_action']         = 'Kup autorowi kawę!';
+$lang['repo_retry']            = 'Ponów';
+$lang['provides']              = 'Dostawcy:';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'zainstalowano';
+$lang['status_not_installed']  = 'nie zainstalowano';
+$lang['status_protected']      = 'chroniony';
+$lang['status_enabled']        = 'uruchomione';
+$lang['status_disabled']       = 'wyłączone';
+$lang['status_unmodifiable']   = 'niemodyfikowalny';
+$lang['status_plugin']         = 'dodatek';
+$lang['status_template']       = 'szablon';
+$lang['status_bundled']        = 'paczka';
+$lang['msg_enabled']           = 'Dodatek %s włączony';
+$lang['msg_disabled']          = 'Dodatek %s wyłączony';
+$lang['msg_delete_success']    = 'Rozszerzenie %s odinstalowane';
+$lang['msg_delete_failed']     = 'Odinstalowywanie rozszerzenia %s nie powiodło się';
+$lang['msg_template_install_success'] = 'Szablon %s został zainstalowany';
+$lang['msg_template_update_success'] = 'Szablon %s został zaktualizowany';
+$lang['msg_plugin_install_success'] = 'Dodatek %s został zainstalowany';
+$lang['msg_plugin_update_success'] = 'Dodatek %s został zaktualizowany';
+$lang['msg_upload_failed']     = 'Ładowanie pliku nie powiodło się';
+$lang['missing_dependency']    = '<strong>Brakująca lub wyłączona zależność:</strong> %s';
+$lang['security_issue']        = '<strong>Problemy bezpieczeństwa:</strong> %s';
+$lang['security_warning']      = '<strong>Alert Bezpieczeństwa:</strong>%s';
+$lang['update_available']      = '<strong>Uaktualnij</strong> Nowa wersja %s jest dostępna.';
+$lang['wrong_folder']          = '<strong>Nieprawidłowo zainstalowana wtyczka:</strong> Zmień nazwę katalogu wtyczek z "%s" na "%s".';
+$lang['url_change']            = '<strong>URL został zmieniony:</strong>URL zmienił się od czasu ostatniego pobrania. Przed aktualizacją rozszerzenia, sprawdź czy nowy adres URL jest prawidłowy.<br />Nowy: %s<br />Stary: %s';
+$lang['error_badurl']          = 'URL powinien zaczynać się od http lub https';
+$lang['error_dircreate']       = 'Nie można utworzyć tymczasowego folderu pobierania ';
+$lang['error_download']        = 'Nie można pobrać pliku %s';
+$lang['error_decompress']      = 'Nie można rozpakować pobranego pliku. Może to być spowodowane złym pobieraniem, w takim przypadku powinieneś spróbować ponownie; lub format kompresji może być nieznany, w takim przypadku należy ręcznie pobrać i zainstalować.';
+$lang['error_findfolder']      = 'Nie można zidentyfikować katalogu z rozszerzeniami, musisz pobrać i zainstalować ręcznie';
+$lang['error_copy']            = 'Wystąpił błąd kopiowania pliku podczas próby zainstalowania plików dla katalogu <em>%s</em>: dysk może być pełny lub uprawnienia dostępu do pliku mogą być niepoprawne. Mogło to spowodować częściowo zainstalowaną wtyczkę i pozostawić twoją instalację wiki niestabilną';
+$lang['noperms']               = 'Katalog z rozszerzeniami nie posiada uprawnień zapisu';
+$lang['notplperms']            = 'Katalog z szablonami nie posiada uprawnień zapisu';
+$lang['nopluginperms']         = 'Katalog z wtyczkami nie posiada uprawnień zapisu';
+$lang['git']                   = 'To rozszerzenie zostało zainstalowane przez git, możesz nie chcieć go aktualizować tutaj.';
+$lang['auth']                  = 'Ta wtyczka autoryzacji nie jest włączona w konfiguracji, rozważ jej wyłączenie.';
+$lang['install_url']           = 'Instaluj z URL:';
+$lang['install_upload']        = 'Załaduj Rozszerzenie ';
+$lang['repo_error']            = 'Nie można skontaktować się z repozytorium wtyczek. Upewnij się, że twój serwer może skontaktować się z www.dokuwiki.org i sprawdzić ustawienia serwera proxy.';
+$lang['nossl']                 = 'Twój PHP wydaje się nie obsługiwać protokołu SSL. Pobieranie nie zadziała dla wielu rozszerzeń DokuWiki.';
diff --git a/wiki/lib/plugins/extension/lang/pt-br/intro_install.txt b/wiki/lib/plugins/extension/lang/pt-br/intro_install.txt
new file mode 100644
index 0000000..08527b0
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt-br/intro_install.txt
@@ -0,0 +1 @@
+Aqui você pode instalar extensões e modelos manualmente, ou subindo eles ou submetendo uma URL de baixar diretamente.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt-br/intro_plugins.txt b/wiki/lib/plugins/extension/lang/pt-br/intro_plugins.txt
new file mode 100644
index 0000000..e0a8c7f
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt-br/intro_plugins.txt
@@ -0,0 +1 @@
+Estas são as extensões instaladas atualmente no seu DokuWiki. Você pode habilitar ou desabilitar ou desinstalar completamente elas aqui. Atualizações das extensões também são mostradas, certifique-se de ler a documentação da extensão antes de atualizá-la.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt-br/intro_search.txt b/wiki/lib/plugins/extension/lang/pt-br/intro_search.txt
new file mode 100644
index 0000000..f2101d7
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt-br/intro_search.txt
@@ -0,0 +1 @@
+Esta aba lhe dá acesso a extensões e modelos disponibilizados por terceiros para o DokuWiki. Favor ter cuidado pois instalar código de terceiros pode acarretar um **risco de segurança**, você poderia ler sobre [[doku>security#plugin_security|segurança de extensões]] primeiramente.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt-br/intro_templates.txt b/wiki/lib/plugins/extension/lang/pt-br/intro_templates.txt
new file mode 100644
index 0000000..aa3e07f
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt-br/intro_templates.txt
@@ -0,0 +1 @@
+Estes são os modelos instalados atualmente no seu DokuWiki. Você pode selecionar o modelo a ser usado no [[?do=admin&page=config|Configuration Manager]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt-br/lang.php b/wiki/lib/plugins/extension/lang/pt-br/lang.php
new file mode 100644
index 0000000..ce4c3b8
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt-br/lang.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas@gmail.com>
+ * @author Hudson FAS <hudsonfas@gmail.com>
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['menu']                  = 'Gerenciador de extensões';
+$lang['tab_plugins']           = 'Extensões instaladas';
+$lang['tab_templates']         = 'Modelos instalados';
+$lang['tab_search']            = 'Procurar e instalar';
+$lang['tab_install']           = 'Instalar manualmente';
+$lang['notimplemented']        = 'Esta função ainda não foi implementada';
+$lang['notinstalled']          = 'Esta extensão não está instalada';
+$lang['alreadyenabled']        = 'Esta extensão já foi habilitada';
+$lang['alreadydisabled']       = 'Esta extensão já foi desabilitada';
+$lang['pluginlistsaveerror']   = 'Houve um erro ao salvar a lista de extensões';
+$lang['unknownauthor']         = 'Autor desconhecido';
+$lang['unknownversion']        = 'Versão desconhecida';
+$lang['btn_info']              = 'Mostrar mais informações';
+$lang['btn_update']            = 'Atualizar';
+$lang['btn_uninstall']         = 'Desinstalar';
+$lang['btn_enable']            = 'Habilitar';
+$lang['btn_disable']           = 'Desabilitar';
+$lang['btn_install']           = 'Instalar';
+$lang['btn_reinstall']         = 'Re-instalar';
+$lang['js']['reallydel']       = 'Quer mesmo desinstalar esta extensão?';
+$lang['js']['display_viewoptions'] = 'Opções de visualização:';
+$lang['js']['display_enabled'] = 'habilitado';
+$lang['js']['display_disabled'] = 'desabilitado';
+$lang['js']['display_updatable'] = 'atualizável';
+$lang['search_for']            = 'Procurar extensão:';
+$lang['search']                = 'Procurar';
+$lang['extensionby']           = '<strong>%s</strong> de %s';
+$lang['screenshot']            = 'Tela congelada de %s';
+$lang['popularity']            = 'Popularidade: %s%%';
+$lang['homepage_link']         = 'Docs';
+$lang['bugs_features']         = 'Erros';
+$lang['tags']                  = 'Etiquetas:';
+$lang['author_hint']           = 'Procurar extensões deste autor';
+$lang['installed']             = 'Instalado:';
+$lang['downloadurl']           = 'URL para baixar:';
+$lang['repository']            = 'Repositório:';
+$lang['unknown']               = '<em>desconhecido</em>';
+$lang['installed_version']     = 'Versão instalada:';
+$lang['install_date']          = 'Sua última atualização:';
+$lang['available_version']     = 'Versão disponível:';
+$lang['compatible']            = 'Compatível com:';
+$lang['depends']               = 'Depende de:';
+$lang['similar']               = 'Similar a:';
+$lang['conflicts']             = 'Colide com:';
+$lang['donate']                = 'Gostou deste?';
+$lang['donate_action']         = 'Pague um café ao autor!';
+$lang['repo_retry']            = 'Tentar de novo';
+$lang['provides']              = 'Disponibiliza:';
+$lang['status']                = 'Estado:';
+$lang['status_installed']      = 'instalado';
+$lang['status_not_installed']  = 'não instalado';
+$lang['status_protected']      = 'protegido';
+$lang['status_enabled']        = 'habilitado';
+$lang['status_disabled']       = 'desabilitado';
+$lang['status_unmodifiable']   = 'não modificável';
+$lang['status_plugin']         = 'extensão';
+$lang['status_template']       = 'modelo';
+$lang['status_bundled']        = 'agrupado';
+$lang['msg_enabled']           = 'Extensão %s habilitada';
+$lang['msg_disabled']          = 'Extensão %s desabilitada';
+$lang['msg_delete_success']    = 'Extensão %s desinstalada';
+$lang['msg_delete_failed']     = 'Falha na desinstalação da extensão %s';
+$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso';
+$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso';
+$lang['msg_plugin_install_success'] = 'Extensão %s instalada com sucesso';
+$lang['msg_plugin_update_success'] = 'Extensão %s atualizada com sucesso';
+$lang['msg_upload_failed']     = 'Subida do arquivo falhou';
+$lang['missing_dependency']    = '<strong>Dependência faltante ou desabilitada:</strong> %s';
+$lang['security_issue']        = '<strong>Problema com segurança:</strong> %s';
+$lang['security_warning']      = '<strong>Aviso sobre segurança:</strong> %s';
+$lang['update_available']      = '<strong>Atualização:</strong> Nova versão %s está disponível.';
+$lang['wrong_folder']          = '<strong>Extensão instalada incorretamente:</strong> Renomeie o diretório de extensões "%s" para "%s".';
+$lang['url_change']            = '<strong>URL mudou:</strong> A URL para baixar mudou desde a última baixada. Verifique se a nova URL é válida antes de atualizar a extensão.<br />Novo: %s<br />Velho: %s';
+$lang['error_badurl']          = 'O URL deve começar com http ou https';
+$lang['error_dircreate']       = 'Impossível criar pasta temporária para receber o download';
+$lang['error_download']        = 'Impossável baixar o arquivo: %s';
+$lang['error_decompress']      = 'Impossável descompimir o arquivo baixado. Isso pode ser resultado de um download ruim que neste caso pode ser tentado novamente; ou o formato da compressão pode ser desconhecido, neste caso baixe e instale manualmente.';
+$lang['error_findfolder']      = 'Impossíl identificar a extensão do diretório, você deve baixar e instalar manualmente.';
+$lang['error_copy']            = 'Houve um erro de cópia de arquivo durante a tentativa de instalar os arquivos para o diretório <em>%s</em> : o disco pode estar cheio ou as permissões de acesso ao arquivo podem estar incorreta. Isso pode ter resultado em um plugin parcialmente instalado e deixar a sua instalação wiki instável';
+$lang['noperms']               = 'Diretório de extensão não é gravável';
+$lang['notplperms']            = 'Diretório de modelo (Template) não é gravável';
+$lang['nopluginperms']         = 'Diretório de plugin não é gravável';
+$lang['git']                   = 'A extensão foi instalada via git, você talvez não queira atualizá-lo aqui.';
+$lang['auth']                  = 'O plugin auth não está ativado na configuração, considere desativá-lo.';
+$lang['install_url']           = 'Instale a partir do URL:';
+$lang['install_upload']        = 'Publicar Extensão:';
+$lang['repo_error']            = 'O repositório de plugin não pode ser contactado. Certifique-se de que o servidor pode acessar www.dokuwiki.org e confira suas configurações de proxy.';
+$lang['nossl']                 = 'Sua instalação PHP parece que não suporta SSL. Algumas extensões DokuWiki não serão baixadas.';
diff --git a/wiki/lib/plugins/extension/lang/pt/intro_install.txt b/wiki/lib/plugins/extension/lang/pt/intro_install.txt
new file mode 100644
index 0000000..5e58713
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt/intro_install.txt
@@ -0,0 +1 @@
+Aqui você pode instalar manualmente plugins e modelos ou enviando-os (upload) ou fornecendo uma URL de download direto.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt/intro_plugins.txt b/wiki/lib/plugins/extension/lang/pt/intro_plugins.txt
new file mode 100644
index 0000000..fcfaa5c
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt/intro_plugins.txt
@@ -0,0 +1 @@
+Estes são os plugins instalados atualmente em seu DokuWiki. Você pode ativar ou desativar ou desinstala-los completamente aqui. Atualizações de plugins também são mostradas aqui, não se esqueça de ler a documentação do plug-in antes de atualizar.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt/intro_search.txt b/wiki/lib/plugins/extension/lang/pt/intro_search.txt
new file mode 100644
index 0000000..be39a98
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt/intro_search.txt
@@ -0,0 +1 @@
+Esta guia lhe dá acesso a todos os plugins e modelos de terceiros disponíveis DokuWiki. Por favor, esteja ciente de que a instalação de componentes de terceiros pode representar um risco de segurança ** **, você pode querer ler sobre [[doku> segurança # plugin_security | segurança plug-in]] antes de realizar a instalação de módulos de terceiros.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/pt/intro_templates.txt b/wiki/lib/plugins/extension/lang/pt/intro_templates.txt
new file mode 100644
index 0000000..02bc336
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt/intro_templates.txt
@@ -0,0 +1 @@
+Estes são os modelos atualmente instalados em seu DokuWiki. Você pode selecionar o modelo a ser usado no [[?do=admin&page=config|Configuration Manager]].
diff --git a/wiki/lib/plugins/extension/lang/pt/lang.php b/wiki/lib/plugins/extension/lang/pt/lang.php
new file mode 100644
index 0000000..e31907c
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/pt/lang.php
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Romulo Pereira <romuloccomp@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ * @author Alfredo Silva <alfredo.silva@sky.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['menu']                  = 'Gerenciador de Extensões';
+$lang['tab_plugins']           = 'Plugins Instalados';
+$lang['tab_templates']         = 'Modelos Instalados';
+$lang['tab_search']            = 'Pesquisar e Instalar';
+$lang['tab_install']           = 'Instalação Manual';
+$lang['notimplemented']        = 'Este recurso não foi implementado ainda';
+$lang['notinstalled']          = 'Esta extensão não está instalada';
+$lang['alreadyenabled']        = 'Esta extensão já foi ativada';
+$lang['alreadydisabled']       = 'Esta extensão já foi desativada';
+$lang['pluginlistsaveerror']   = 'Houve um erro ao salvar a lista de plugins';
+$lang['unknownauthor']         = 'Autor desconhecido';
+$lang['unknownversion']        = 'Versão desconhecida';
+$lang['btn_info']              = 'Mostrar mais informações';
+$lang['btn_update']            = 'Atualizar';
+$lang['btn_uninstall']         = 'Desinstalar';
+$lang['btn_enable']            = 'Habilitar';
+$lang['btn_disable']           = 'Desabilitar';
+$lang['btn_install']           = 'Instalar';
+$lang['btn_reinstall']         = 'Reinstalar';
+$lang['js']['reallydel']       = 'Confirma a desinstalação desta extensão?';
+$lang['js']['display_viewoptions'] = 'Ver Opções:';
+$lang['js']['display_enabled'] = 'ativado';
+$lang['js']['display_disabled'] = 'desativado';
+$lang['js']['display_updatable'] = 'atualizável';
+$lang['search_for']            = 'Pesquisar Extensão:';
+$lang['search']                = 'Pesquisar';
+$lang['extensionby']           = '<strong>%s</strong> by %s';
+$lang['screenshot']            = 'Screenshot of %s';
+$lang['popularity']            = 'Popularidade: %s%%';
+$lang['homepage_link']         = 'Documentos';
+$lang['bugs_features']         = 'Erros';
+$lang['tags']                  = 'Tags:';
+$lang['author_hint']           = 'Pesquisar extensões deste autor';
+$lang['installed']             = 'Instalado:
+';
+$lang['downloadurl']           = 'Baixar URL:
+';
+$lang['repository']            = 'Repositório:
+';
+$lang['unknown']               = '<em> desconhecido </em>
+';
+$lang['installed_version']     = 'Versão instalada:';
+$lang['install_date']          = 'Sua última atualização:';
+$lang['available_version']     = 'Versão disponível:
+';
+$lang['compatible']            = 'Compatível com:';
+$lang['depends']               = 'Depende de:
+';
+$lang['similar']               = 'Semelhante a:
+';
+$lang['conflicts']             = 'Conflitos com:
+';
+$lang['donate']                = 'Assim?
+';
+$lang['donate_action']         = 'Pague um café para o autor!';
+$lang['repo_retry']            = 'Tentar novamente
+';
+$lang['provides']              = 'Fornece:
+';
+$lang['status']                = 'Status:
+';
+$lang['status_installed']      = 'instalado
+';
+$lang['status_not_installed']  = 'não instalado
+';
+$lang['status_protected']      = 'protegido
+';
+$lang['status_enabled']        = 'habilitado';
+$lang['status_disabled']       = 'desabilitado';
+$lang['status_unmodifiable']   = 'imodificável
+';
+$lang['status_plugin']         = 'plugin
+';
+$lang['status_template']       = 'modelo
+';
+$lang['status_bundled']        = 'empacotado
+';
+$lang['msg_enabled']           = 'Plugin %s habilitado
+';
+$lang['msg_disabled']          = 'Plugin %s desabilitado';
+$lang['msg_delete_success']    = 'Extensão %s desinstalada';
+$lang['msg_delete_failed']     = 'Desinstalar Extensão %s falhou
+';
+$lang['msg_template_install_success'] = 'Modelo %s instalado com sucesso';
+$lang['msg_template_update_success'] = 'Modelo %s atualizado com sucesso
+';
+$lang['msg_plugin_install_success'] = 'Plugin %s instalado com sucesso
+';
+$lang['msg_plugin_update_success'] = 'Plugin %s atualizado com sucesso
+';
+$lang['msg_upload_failed']     = 'Enviando o arquivo falhou
+';
+$lang['missing_dependency']    = '<strong>dependência ausente ou desabilitada:</strong> %s
+';
+$lang['security_issue']        = '<strong> Questão de segurança:</strong> %s
+';
+$lang['security_warning']      = '<strong> Aviso de segurança:</strong> %s';
+$lang['update_available']      = '<strong>Atualização:</strong> Nova versão %s está disponível.
+';
+$lang['wrong_folder']          = '<strong>Plugin instalado incorretamente: </strong> Renomear pasta de plugins de "%s" para "%s".
+';
+$lang['url_change']            = '<strong>URL mudou: </strong> URL para download mudou desde o último download. Verifique se a nova URL é válida antes de atualizar a extensão <br/> Nova:%s<br/>Antiga:%s
+';
+$lang['error_badurl']          = 'URLs deve começar com http ou https
+';
+$lang['error_dircreate']       = 'Não é possível criar pasta temporária para receber o download
+';
+$lang['error_download']        = 'Não é possível baixar o arquivo:%s
+';
+$lang['error_decompress']      = 'Não é possível descompactar o arquivo baixado. Talvez seja resultado de um download ruim, nesse caso, você deve tentar novamente; ou o formato de compressão pode ser desconhecido, nesse caso, você precisará baixar e instalar manualmente.';
+$lang['error_findfolder']      = 'Não foi possível identificar diretório de extensão, você precisa baixar e instalar manualmente
+';
+$lang['error_copy']            = 'Houve um erro na cópia do arquivo durante a tentativa de instalar os arquivos para o diretório <em>%s </em>: o disco pode estar cheio ou as permissões de acesso ao arquivo podem estar incorretas. Isso pode ter resultado em um plugin parcialmente instalado e tornar instável a sua instalação wiki
+';
+$lang['noperms']               = 'Diretório da extensão não é gravável
+';
+$lang['notplperms']            = 'Diretório do modelo não é gravável
+';
+$lang['nopluginperms']         = 'Diretório do plugin não é gravável
+';
+$lang['git']                   = 'Esta extensão foi instalada via git, você não pode querer atualizá-la aqui.
+';
+$lang['auth']                  = 'Este plugin não está habilitado na configuração, considere desabilita-lo.';
+$lang['install_url']           = 'Instalar a partir da URL:';
+$lang['install_upload']        = 'Publique a Extensão:';
+$lang['repo_error']            = 'O repositório do plugin não pôde ser conectado. Verifique se o seu servidor está autorizado a conectar com www.dokuwiki.org e verifique as configurações de proxy do servidor.
+';
+$lang['nossl']                 = 'Seu PHP parece que perdeu o suporte a SSL. O download não vai funcionar para muitas extensões DokuWiki.
+';
diff --git a/wiki/lib/plugins/extension/lang/ru/intro_install.txt b/wiki/lib/plugins/extension/lang/ru/intro_install.txt
new file mode 100644
index 0000000..0c555ae
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ru/intro_install.txt
@@ -0,0 +1 @@
+Здесь вы можете самостоятельно установить плагины и шаблоны, загрузив их или предоставив прямой URL для скачивания.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ru/intro_plugins.txt b/wiki/lib/plugins/extension/lang/ru/intro_plugins.txt
new file mode 100644
index 0000000..96d1742
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ru/intro_plugins.txt
@@ -0,0 +1 @@
+Плагины, установленные в вашей «Докувики». Здесь вы можете их включить/отключить или даже полностью удалить. Также здесь показываются обновления плагинов; обязательно прочтите документацию плагина перед обновлением.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ru/intro_search.txt b/wiki/lib/plugins/extension/lang/ru/intro_search.txt
new file mode 100644
index 0000000..609985b
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ru/intro_search.txt
@@ -0,0 +1 @@
+Вкладка даёт вам доступ ко всем имеющимся сторонним плагинам и шаблонам для «Докувики». Имейте в виду, что установка стороннего кода может представлять **угрозу безопасности,** возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]].
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ru/intro_templates.txt b/wiki/lib/plugins/extension/lang/ru/intro_templates.txt
new file mode 100644
index 0000000..a71ad67
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ru/intro_templates.txt
@@ -0,0 +1 @@
+Шаблоны (темы оформления), установленные в вашей «Докувики». Шаблон, который нужно использовать, выбирается в [[?do=admin&page=config|настройках вики]]
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/ru/lang.php b/wiki/lib/plugins/extension/lang/ru/lang.php
new file mode 100644
index 0000000..97ad123
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/ru/lang.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
+ * @author Igor Degraf <igordegraf@gmail.com>
+ * @author Type-kun <workwork-1@yandex.ru>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author Alex P <alexander@lanos.co.uk>
+ * @author Takumo <9206984@mail.ru>
+ */
+$lang['menu']                  = 'Управление дополнениями';
+$lang['tab_plugins']           = 'Установленные плагины';
+$lang['tab_templates']         = 'Установленные шаблоны';
+$lang['tab_search']            = 'Поиск и установка';
+$lang['tab_install']           = 'Ручная установка';
+$lang['notimplemented']        = 'Эта возможность ещё не реализована';
+$lang['notinstalled']          = 'Это дополнение не установлено';
+$lang['alreadyenabled']        = 'Это дополнение уже включено';
+$lang['alreadydisabled']       = 'Это дополнение уже отключено';
+$lang['pluginlistsaveerror']   = 'Ошибка при сохранении списка плагинов';
+$lang['unknownauthor']         = 'Автор неизвестен';
+$lang['unknownversion']        = 'Версия неизвестна';
+$lang['btn_info']              = 'Подробнее';
+$lang['btn_update']            = 'Обновить';
+$lang['btn_uninstall']         = 'Удалить';
+$lang['btn_enable']            = 'Включить';
+$lang['btn_disable']           = 'Отключить';
+$lang['btn_install']           = 'Установить';
+$lang['btn_reinstall']         = 'Переустановить';
+$lang['js']['reallydel']       = 'Действительно удалить это дополнение?';
+$lang['js']['display_viewoptions'] = 'Показать как:';
+$lang['js']['display_enabled'] = 'включён';
+$lang['js']['display_disabled'] = 'отключён';
+$lang['js']['display_updatable'] = 'обновление';
+$lang['search_for']            = 'Поиск дополнения';
+$lang['search']                = 'Найти';
+$lang['extensionby']           = '<strong>%s</strong> %s';
+$lang['screenshot']            = 'Скриншот: %s';
+$lang['popularity']            = 'Популярность: %s%%';
+$lang['homepage_link']         = 'Описание';
+$lang['bugs_features']         = 'Баг-трекер';
+$lang['tags']                  = 'Метки:';
+$lang['author_hint']           = 'Найти дополнения этого автора';
+$lang['installed']             = 'Установлен';
+$lang['downloadurl']           = 'URL скачивания';
+$lang['repository']            = 'Репозиторий';
+$lang['unknown']               = '<em>неизвестно</em>';
+$lang['installed_version']     = 'Версия';
+$lang['install_date']          = 'Обновлено';
+$lang['available_version']     = 'Доступная версия';
+$lang['compatible']            = 'Совместимость';
+$lang['depends']               = 'Зависит от';
+$lang['similar']               = 'Похож на';
+$lang['conflicts']             = 'Конфликтует с';
+$lang['donate']                = 'Нравится?';
+$lang['donate_action']         = 'Купить автору кофе!';
+$lang['repo_retry']            = 'Повторить';
+$lang['provides']              = 'Предоставляет';
+$lang['status']                = 'Статус';
+$lang['status_installed']      = 'установлен';
+$lang['status_not_installed']  = 'не установлен';
+$lang['status_protected']      = 'защищён';
+$lang['status_enabled']        = 'включён';
+$lang['status_disabled']       = 'отключён';
+$lang['status_unmodifiable']   = 'неизменяем';
+$lang['status_plugin']         = 'плагин';
+$lang['status_template']       = 'шаблон';
+$lang['status_bundled']        = 'в комплекте';
+$lang['msg_enabled']           = 'Плагин %s включён';
+$lang['msg_disabled']          = 'Плагин %s отключён';
+$lang['msg_delete_success']    = 'Дополнение %s удалено';
+$lang['msg_delete_failed']     = 'Не удалось удалить дополнение %s';
+$lang['msg_template_install_success'] = 'Шаблон %s успешно установлен';
+$lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён';
+$lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен';
+$lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён';
+$lang['msg_upload_failed']     = 'Не удалось загрузить файл';
+$lang['missing_dependency']    = '<strong>Отсутствует или отключена зависимость:</strong> %s';
+$lang['security_issue']        = '<strong>Проблема безопасности:</strong> %s';
+$lang['security_warning']      = '<strong>Предупреждение безопасности:</strong> %s';
+$lang['update_available']      = '<strong>Обновление:</strong> доступна новая версия %s';
+$lang['wrong_folder']          = '<strong>Плагин установлен неправильно:</strong> переименуйте директорию плагина из %s в %s';
+$lang['url_change']            = '<strong>Ссылка изменилась:</strong> ссылка для загрузки изменилась с&nbsp;прошлого раза. Проверьте новую ссылку прежде, чем обновлять дополнение.<br />Новая: %s<br />Старая: %s';
+$lang['error_badurl']          = 'Ссылка должна начинаться с&nbsp;http или https';
+$lang['error_dircreate']       = 'Не удалось создать временную директорию для загрузки';
+$lang['error_download']        = 'Не удалось загрузить файл: %s';
+$lang['error_decompress']      = 'Не удалось распаковать загруженный файл. Возможно, файл был повреждён при загрузке — тогда нужно попробовать ещё раз. Либо неизвестен формат архива — тогда загрузку и установку надо произвести вручную';
+$lang['error_findfolder']      = 'Не удалось определить директорию для дополнения, загрузку и установку надо произвести вручную.';
+$lang['error_copy']            = 'Возникла ошибка копирования файлов в директорию <em>%s</em>: возможно, диск переполнен, или неверно выставлены права доступа. Это могло привести к неполной установке плагина и нарушить работу вашей вики.';
+$lang['noperms']               = 'Директория для дополнений недоступна для записи';
+$lang['notplperms']            = 'Директория для шаблонов недоступна для записи';
+$lang['nopluginperms']         = 'Директория для плагинов недоступна для записи';
+$lang['git']                   = 'Это дополнение было установлено через git. Вы не можете обновить его тут.';
+$lang['auth']                  = 'Этот auth-плагин не включён в конфигурации, подумайте об его отключении';
+$lang['install_url']           = 'Установить с адреса';
+$lang['install_upload']        = 'Загрузить дополнение';
+$lang['repo_error']            = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения прокси.';
+$lang['nossl']                 = 'Ваша PHP-конфигурация не имеет SSL-поддержки. Это нарушит скачивание для многих дополнений.';
diff --git a/wiki/lib/plugins/extension/lang/sk/lang.php b/wiki/lib/plugins/extension/lang/sk/lang.php
new file mode 100644
index 0000000..775e89a
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/sk/lang.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['tab_plugins']           = 'Inštalované pluginy';
+$lang['tab_templates']         = 'Inštalované šablóny';
+$lang['tab_search']            = 'Hľadanie e inštalácia';
+$lang['tab_install']           = 'Manuálna inštalácia';
+$lang['notimplemented']        = 'Táto vlastnosť ešte nebola implementovaná';
+$lang['unknownauthor']         = 'Neznámy autor';
+$lang['unknownversion']        = 'Neznáma verzia';
+$lang['btn_info']              = 'Viac informácií';
+$lang['btn_update']            = 'Aktualizácia';
+$lang['btn_uninstall']         = 'Odinštalovanie';
+$lang['btn_enable']            = 'Povolenie';
+$lang['btn_disable']           = 'Zablokovanie';
+$lang['btn_install']           = 'Inštalácia';
+$lang['btn_reinstall']         = 'Re-Inštalácia';
+$lang['search']                = 'Vyhľadávanie';
+$lang['extensionby']           = '<strong>%s</strong> od %s';
+$lang['screenshot']            = 'Obrázok od %s';
+$lang['popularity']            = 'Popularita: %s%%';
+$lang['homepage_link']         = 'Dokumentácia';
+$lang['bugs_features']         = 'Chyby:';
+$lang['tags']                  = 'Kľúčové slová:';
+$lang['unknown']               = '<em>neznámy</em>';
+$lang['installed_version']     = 'Inštalovaná verzia:';
+$lang['install_date']          = 'Posledná aktualizácia:';
+$lang['available_version']     = 'Dostupné verzie:';
+$lang['compatible']            = 'Kompaktibilita:';
+$lang['similar']               = 'Podobné:';
+$lang['conflicts']             = 'V konflikte:';
+$lang['status_installed']      = 'inštalovaný';
+$lang['status_not_installed']  = 'neinštalovaný';
+$lang['status_protected']      = 'chránený';
+$lang['status_enabled']        = 'povolený';
+$lang['status_disabled']       = 'nepovolený';
+$lang['status_plugin']         = 'plugin';
+$lang['status_template']       = 'šablóna';
+$lang['msg_enabled']           = 'Plugin %s povolený';
+$lang['msg_disabled']          = 'Plugin %s nepovolený';
+$lang['msg_template_install_success'] = 'Šablóna %s úspešne nainštalovaná';
+$lang['msg_template_update_success'] = 'Šablóna %s úspešne aktualizovaná';
+$lang['msg_plugin_install_success'] = 'Plugin %s úspešne nainštalovaný';
+$lang['msg_plugin_update_success'] = 'Plugin %s úspešne aktualizovaný';
+$lang['msg_upload_failed']     = 'Nahrávanie súboru zlyhalo';
+$lang['missing_dependency']    = '<strong>Chýbajúca alebo nepovolená závislosť:</strong> %s';
+$lang['security_issue']        = '<strong>Bezpečnostný problém:</strong> %s';
+$lang['security_warning']      = '<strong>Bezpečnostné upozornenie:</strong> %s';
+$lang['update_available']      = '<strong>Aktualizácia:</strong> Nová verzia %s.';
+$lang['wrong_folder']          = '<strong>Plugin nesprávne nainštalovaný:</strong> Premenujte adresár s pluginom "%s" na "%s".';
+$lang['error_badurl']          = 'URL by mali mať na začiatku http alebo https';
+$lang['error_dircreate']       = 'Nie je možné vytvoriť dočasný adresár pre uloženie sťahovaného súboru';
+$lang['error_download']        = 'Nie je možné stiahnuť súbor: %s';
+$lang['error_decompress']      = 'Nie je možné dekomprimovať stiahnutý súbor. Môže to byť dôvodom chyby sťahovania (v tom prípade to skúste znova) alebo neznámym kompresným formátom (v tom prípade musíte stiahnuť a inštalovať manuálne).';
+$lang['error_copy']            = 'Chyba kopírovania pri inštalácii do adresára <em>%s</em>: disk môže byť plný alebo nemáte potrebné prístupové oprávnenie. Dôsledkom može byť čiastočne inštalovaný plugin a nestabilná wiki inštalácia.';
+$lang['nopluginperms']         = 'Adresár s pluginom nie je zapisovateľný.';
+$lang['install_url']           = 'Inštalácia z URL:';
diff --git a/wiki/lib/plugins/extension/lang/sr/intro_install.txt b/wiki/lib/plugins/extension/lang/sr/intro_install.txt
new file mode 100644
index 0000000..b05dc2c
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/sr/intro_install.txt
@@ -0,0 +1 @@
+Овде можете ручно инсталирати прикључке и шаблоне тако што ћете их отпремити или унети адресу за директно преузимање.
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/sr/lang.php b/wiki/lib/plugins/extension/lang/sr/lang.php
new file mode 100644
index 0000000..a4fc884
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/sr/lang.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Марко М. Костић <marko.m.kostic@gmail.com>
+ */
+$lang['menu']                  = 'Управник проширења';
+$lang['tab_plugins']           = 'Инсталирани прикључци';
+$lang['tab_templates']         = 'Инсталирани шаблони';
+$lang['tab_search']            = 'Тражи и инсталирај';
+$lang['tab_install']           = 'Ручно инсталирање';
+$lang['notimplemented']        = 'Ова могућност још није израђена';
+$lang['notinstalled']          = 'Ово проширење још није инсталирано';
+$lang['alreadyenabled']        = 'Ово проширење је већ омогућено';
+$lang['alreadydisabled']       = 'Ово проширење је већ онемогућено';
+$lang['pluginlistsaveerror']   = 'Догодила се грешка приликом чувања списка прикључака';
+$lang['unknownauthor']         = 'Непознат творац';
+$lang['unknownversion']        = 'Непознато издање';
+$lang['btn_info']              = 'Прикажи још података';
+$lang['btn_update']            = 'Ажурирај';
+$lang['btn_uninstall']         = 'Деинсталирај';
+$lang['btn_enable']            = 'Омогући';
+$lang['btn_disable']           = 'Онемогући';
+$lang['btn_install']           = 'Инсталирај';
+$lang['btn_reinstall']         = 'Поново инсталирај';
+$lang['js']['reallydel']       = 'Заиста деинсталирати ово проширење?';
+$lang['js']['display_viewoptions'] = 'Опције приказа:';
+$lang['js']['display_enabled'] = 'омогућено';
+$lang['js']['display_disabled'] = 'онемогућено';
+$lang['js']['display_updatable'] = 'могуће ажурирати';
+$lang['search_for']            = 'Претражи проширење:';
+$lang['search']                = 'Претрага';
+$lang['screenshot']            = 'Снимак екрана од %s';
+$lang['popularity']            = 'Популарност: %s%%';
+$lang['homepage_link']         = 'Документа';
+$lang['bugs_features']         = 'Грешке';
+$lang['tags']                  = 'Ознаке:';
+$lang['author_hint']           = 'Претражи проширења овог творца';
+$lang['installed']             = 'Инсталирано:';
+$lang['downloadurl']           = 'Адреса за преузимање:';
+$lang['repository']            = 'Ризница:';
+$lang['unknown']               = '<em>непознато</em>';
+$lang['installed_version']     = 'Инсталирано издање:';
+$lang['install_date']          = 'Ваше последње ажурирање:';
+$lang['available_version']     = 'Доступно издање:';
+$lang['compatible']            = 'Подударно са:';
+$lang['depends']               = 'Зависи од:';
+$lang['similar']               = 'Слично као:';
+$lang['conflicts']             = 'У сукобу са:';
+$lang['donate']                = 'Свиђа вам се?';
+$lang['donate_action']         = 'Купите творцу шољицу кафе!';
+$lang['repo_retry']            = 'Поново покушај';
+$lang['provides']              = 'Пружа:';
+$lang['status']                = 'Стање:';
+$lang['status_installed']      = 'инсталирано';
+$lang['status_not_installed']  = 'није инсталирано';
+$lang['status_protected']      = 'заштићено';
+$lang['status_enabled']        = 'омогућено';
+$lang['status_disabled']       = 'онемогућено';
+$lang['status_unmodifiable']   = 'неизмењиво';
+$lang['status_plugin']         = 'прикључак';
+$lang['status_template']       = 'шаблон';
+$lang['status_bundled']        = 'упаковано';
+$lang['msg_enabled']           = 'Прикључак %s је омогућен';
+$lang['msg_disabled']          = 'Прикључак %s је онемогућен';
diff --git a/wiki/lib/plugins/extension/lang/sv/lang.php b/wiki/lib/plugins/extension/lang/sv/lang.php
new file mode 100644
index 0000000..92d21f2
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/sv/lang.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ */
+$lang['tab_templates']         = 'Installerade templat';
+$lang['tab_search']            = 'Sök och installera';
+$lang['tab_install']           = 'Manuell installation';
+$lang['notimplemented']        = 'Denna funktion har ännu inte implementerats';
+$lang['unknownauthor']         = 'Okänd skapare';
+$lang['unknownversion']        = 'Okänd version';
+$lang['btn_info']              = 'Visa mer info';
+$lang['btn_update']            = 'Uppdatera';
+$lang['btn_uninstall']         = 'Avinstallera';
+$lang['btn_enable']            = 'Aktivera';
+$lang['btn_disable']           = 'Avaktivera';
+$lang['btn_install']           = 'Installera';
+$lang['btn_reinstall']         = 'Ominstallera';
+$lang['js']['reallydel']       = 'Vill du verkligen avinstallera detta tillägg?';
+$lang['js']['display_viewoptions'] = 'Visa alternativ:';
+$lang['js']['display_enabled'] = 'aktivera';
+$lang['js']['display_disabled'] = 'avaktivera';
+$lang['js']['display_updatable'] = 'möjlig att uppdatera';
+$lang['search']                = 'Sök';
+$lang['screenshot']            = 'Skärmdump av %s';
+$lang['popularity']            = 'Populatitet: %s%%';
+$lang['homepage_link']         = 'Dokumentation';
+$lang['bugs_features']         = 'Buggar';
+$lang['tags']                  = 'Taggar:';
+$lang['installed']             = 'Installerat:';
+$lang['downloadurl']           = 'Nedladdningslänk:';
+$lang['unknown']               = '<em>okänd</em>';
+$lang['installed_version']     = 'Installerad version:';
+$lang['install_date']          = 'Din senaste uppdatering:';
+$lang['available_version']     = 'Tillgänglig version:';
+$lang['compatible']            = 'Kompatibel med:';
+$lang['depends']               = 'Beroende av:';
+$lang['similar']               = 'Liknande som:';
+$lang['conflicts']             = 'Konflikt med:';
+$lang['donate']                = 'Som denna?';
+$lang['donate_action']         = 'Köp en kaffe till skaparen';
+$lang['repo_retry']            = 'Försök igen';
+$lang['status']                = 'Status:';
+$lang['status_installed']      = 'installerad';
+$lang['status_not_installed']  = 'inte installerad';
+$lang['status_protected']      = 'skyddad';
+$lang['status_enabled']        = 'aktiverad';
+$lang['status_disabled']       = 'avaktiverad';
+$lang['status_unmodifiable']   = 'ej modifierbar';
+$lang['msg_enabled']           = 'Tillägg %s aktiverat';
+$lang['msg_disabled']          = 'Tillägg %s avaktiverat';
+$lang['msg_template_install_success'] = 'Templat %s installerades framgångsrikt';
+$lang['msg_template_update_success'] = 'Templat %s uppdaterades framgångsrikt';
+$lang['msg_upload_failed']     = 'Uppladdning av filen misslyckades';
+$lang['security_warning']      = '<strong>Säkerhetsvarning:</strong> %s';
+$lang['update_available']      = '<strong>Uppdatering:</strong> Ny version av %s är tillgänglig.';
+$lang['url_change']            = '<strong>URL ändrad:</strong> Nedladdningslänken har ändrats sedan senaste nedladdning. Kontrollera om den nya sökvägen är giltig innan du uppdaterar tillägget.<br />Ny sökväg: %s<br />Gammal sökväg: %s';
+$lang['error_badurl']          = 'URL:er borde inledas med http eller https';
+$lang['error_dircreate']       = 'Kunde inte skapa temporär katalog för nedladdning';
+$lang['error_download']        = 'Kunde inte ladda ner filen: %s';
+$lang['notplperms']            = 'Templatkatalogen är inte skrivbar';
+$lang['nopluginperms']         = 'Tilläggskatalogen är inte skrivbar';
+$lang['install_url']           = 'Installera från URL:';
+$lang['install_upload']        = 'Ladda upp tillägg:';
+$lang['nossl']                 = 'Din PHP tycks sakna SSL-stöd. Nedladdning kommer inte att fungera för många DokuWiki-tillägg.';
diff --git a/wiki/lib/plugins/extension/lang/tr/lang.php b/wiki/lib/plugins/extension/lang/tr/lang.php
new file mode 100644
index 0000000..c90b7b1
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/tr/lang.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author İlker R. Kapaç <irifat@gmail.com>
+ * @author Mete Cuma <mcumax@gmail.com>
+ */
+$lang['menu']                  = 'Genişletme Yöneticisi';
+$lang['tab_plugins']           = 'Kurulmuş Eklentiler';
+$lang['tab_templates']         = 'Kurulmuş Şablonlar';
+$lang['tab_search']            = 'Ara ve Kur';
+$lang['tab_install']           = 'Elle Kurulum';
+$lang['notimplemented']        = 'Bu özellik henüz uygulamaya geçmemiştir';
+$lang['notinstalled']          = 'Bu genişletme yüklü değildir';
+$lang['alreadyenabled']        = 'Bu genişletme zaten etkinleştirilmiştir.';
+$lang['alreadydisabled']       = 'Bu genişletme zaten pasifleştirilmiştir';
+$lang['pluginlistsaveerror']   = 'Eklenti listesini kaydederken bir hata oluştu.';
+$lang['unknownauthor']         = 'Bilinmeyen yazar';
+$lang['unknownversion']        = 'Bilinmeyen sürüm';
+$lang['btn_info']              = 'Daha fazla bilgi göster';
+$lang['btn_update']            = 'Güncelle';
+$lang['btn_uninstall']         = 'Kaldır';
+$lang['btn_enable']            = 'Etkinleştir';
+$lang['btn_disable']           = 'Pasifleştir';
+$lang['btn_install']           = 'Kur';
+$lang['btn_reinstall']         = 'Yeniden kur';
+$lang['js']['reallydel']       = 'Genişletme gerçekten kaldırılsın mı?';
+$lang['search_for']            = 'Genişletme Ara:';
+$lang['search']                = 'Ara';
+$lang['extensionby']           = '<strong>%s</strong> tarafından %s';
+$lang['screenshot']            = '%s ekran görüntüsü';
+$lang['popularity']            = 'Rağbet: %s%%';
+$lang['homepage_link']         = 'Belgeler';
+$lang['bugs_features']         = 'Hatalar';
+$lang['tags']                  = 'Etiketler:';
+$lang['author_hint']           = 'Bu yazarın genişletmelerini ara.';
+$lang['installed']             = 'Kurulu:';
+$lang['downloadurl']           = 'İndirme bağlantısı:';
+$lang['repository']            = 'Veri havuzu:';
+$lang['unknown']               = '<em>bilinmeyen</em>';
+$lang['installed_version']     = 'Kurulu sürüm:';
+$lang['install_date']          = 'Son güncellemeniz:';
+$lang['available_version']     = 'Müsait sürüm:';
+$lang['compatible']            = 'Şununla uyumlu:';
+$lang['depends']               = 'Şuna bağımlı';
+$lang['similar']               = 'Şununla benzer';
+$lang['conflicts']             = 'Şununla çelişir:';
+$lang['donate']                = 'Beğendiniz mi?';
+$lang['donate_action']         = 'Yazara bir kahve ısmarlayın!';
+$lang['repo_retry']            = 'Yeniden dene';
+$lang['provides']              = 'Sağlar:';
+$lang['status']                = 'Durum:';
+$lang['status_installed']      = 'kurulu';
+$lang['status_not_installed']  = 'kurulu değil';
+$lang['status_protected']      = 'korunmuş';
+$lang['status_enabled']        = 'etkin';
+$lang['status_disabled']       = 'hizmet dışı';
+$lang['status_unmodifiable']   = 'değiştirilemez';
+$lang['status_plugin']         = 'eklenti';
+$lang['status_template']       = 'şablon';
diff --git a/wiki/lib/plugins/extension/lang/zh-tw/intro_install.txt b/wiki/lib/plugins/extension/lang/zh-tw/intro_install.txt
new file mode 100644
index 0000000..3ba93f5
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh-tw/intro_install.txt
@@ -0,0 +1 @@
+在此你可以透過檔案上傳或提供下載網址的方式,進行手動安裝外掛與版型風格。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/zh-tw/intro_plugins.txt b/wiki/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
new file mode 100644
index 0000000..b5b77a2
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
@@ -0,0 +1 @@
+已經有一些外掛套件被安裝在你的DokuWiki之中。你可以在這裡啟用、禁用,甚至是完全移除它們。如外掛可更新也同時會顯示在這裡,請確保在更新前先閱讀過該套件之文件。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/zh-tw/lang.php b/wiki/lib/plugins/extension/lang/zh-tw/lang.php
new file mode 100644
index 0000000..8087778
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh-tw/lang.php
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Stan <talktostan@gmail.com>
+ * @author June-Hao Hou <junehao@gmail.com>
+ * @author lioujheyu <lioujheyu@gmail.com>
+ * @author Liou, Jhe-Yu <lioujheyu@gmail.com>
+ */
+$lang['menu']                  = '延伸功能管理';
+$lang['tab_plugins']           = '已安裝外掛';
+$lang['tab_templates']         = '已安裝裝模版
+';
+$lang['tab_search']            = '搜尋與安裝';
+$lang['tab_install']           = '手動安裝';
+$lang['notimplemented']        = '此功能尚未完成';
+$lang['notinstalled']          = '此延伸功能尚未安裝';
+$lang['alreadyenabled']        = '此延伸功能已經安裝';
+$lang['alreadydisabled']       = '此延伸功能停用';
+$lang['unknownauthor']         = '作者未知';
+$lang['unknownversion']        = '版本未知';
+$lang['btn_info']              = '顯示更多訊息';
+$lang['btn_update']            = '更新';
+$lang['btn_uninstall']         = '移除安裝';
+$lang['btn_enable']            = '啟用';
+$lang['btn_disable']           = '停用';
+$lang['btn_install']           = '安裝';
+$lang['btn_reinstall']         = '重新安裝';
+$lang['js']['reallydel']       = '確定要移除此延伸功能?';
+$lang['js']['display_enabled'] = '啟用';
+$lang['js']['display_disabled'] = '禁用';
+$lang['js']['display_updatable'] = '可更新';
+$lang['search_for']            = '搜尋延伸功能:';
+$lang['search']                = '搜尋';
+$lang['homepage_link']         = '文件';
+$lang['tags']                  = '標籤:';
+$lang['author_hint']           = '搜尋相同作者的延伸功能';
+$lang['installed']             = '已安裝:';
+$lang['downloadurl']           = '下載網址:';
+$lang['unknown']               = '<em>未知</em>';
+$lang['installed_version']     = '已安裝版本:';
+$lang['install_date']          = '你最後一次更新: ';
+$lang['available_version']     = '可用版本:';
+$lang['compatible']            = '相容於:';
+$lang['depends']               = '依賴於: ';
+$lang['similar']               = '類似於: ';
+$lang['conflicts']             = '相衝突於: ';
+$lang['donate']                = '像這樣?';
+$lang['donate_action']         = '請作者一杯咖啡!';
+$lang['repo_retry']            = '再試一次';
+$lang['status']                = '狀態:';
+$lang['status_installed']      = '已安裝';
+$lang['status_not_installed']  = '未安裝';
+$lang['status_protected']      = '已保護';
+$lang['status_enabled']        = '作用中';
+$lang['status_disabled']       = '停用中';
+$lang['status_unmodifiable']   = '不可更動';
+$lang['status_plugin']         = '外掛';
+$lang['status_template']       = '模板';
+$lang['status_bundled']        = '已綑綁內附';
+$lang['msg_enabled']           = '外掛 %s 已啟用';
+$lang['msg_disabled']          = '外掛 %s 已禁用';
+$lang['msg_delete_failed']     = '解除安裝 %s 失敗';
+$lang['msg_template_install_success'] = '模板 %s 以成功安裝';
+$lang['msg_template_update_success'] = '模板 %s 以成功更新';
+$lang['msg_plugin_install_success'] = '外掛 %s 以成功安裝';
+$lang['msg_plugin_update_success'] = '外掛 %s 以成功更新';
+$lang['msg_upload_failed']     = '上傳檔案失敗';
+$lang['missing_dependency']    = '<strong>遺失或禁用相依性套件:</strong> %s';
+$lang['security_issue']        = '<strong>安全性問題:</strong> %s';
+$lang['security_warning']      = '<strong>安全問題警告:</strong> %s';
+$lang['update_available']      = '<strong>更新:</strong> 已可取得 %s 的新版本';
+$lang['wrong_folder']          = '<strong>外掛安裝不正確:</strong> 將外掛資料夾從 "%s" 更名至 "%s"。';
+$lang['url_change']            = '<strong>網址已變更:</strong> 自從上次下載後下載網址已變更。在更新延伸功能前請先檢查新網址是否可用。<br />新: %s<br />舊: %s';
+$lang['error_dircreate']       = '無法建立暫存目錄以接收下載檔案';
+$lang['error_download']        = '無法下載檔案:%s';
+$lang['error_decompress']      = '無法解壓縮檔案。這可能是下載品質不佳所致,在這個情況下你應該再試一次;也有可能是因為無法辨識的壓縮格式,在這個情況下你應該自行下載並手動安裝';
+$lang['error_findfolder']      = '無法辨認延伸功能資料夾,你必須自行下載並手動安裝';
+$lang['noperms']               = '延伸功能資料夾無法寫入';
+$lang['notplperms']            = '版型資料夾無法寫入';
+$lang['nopluginperms']         = '外掛資料夾無法寫入';
+$lang['git']                   = '此延伸功能是透過git安裝的,最好不要用上傳方式。';
+$lang['install_url']           = '透過網址安裝:';
+$lang['install_upload']        = '上傳延伸功能:';
diff --git a/wiki/lib/plugins/extension/lang/zh/intro_install.txt b/wiki/lib/plugins/extension/lang/zh/intro_install.txt
new file mode 100644
index 0000000..6408393
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh/intro_install.txt
@@ -0,0 +1 @@
+你可以通过上传或直接提供下载链接来安装插件和模板。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/zh/intro_plugins.txt b/wiki/lib/plugins/extension/lang/zh/intro_plugins.txt
new file mode 100644
index 0000000..69cb343
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh/intro_plugins.txt
@@ -0,0 +1 @@
+这些是你当前已经安装的插件。你可以在这里启用和禁用甚至卸载它们。插件的更新信息也显示在这,请一定在更新之前阅读插件的文档。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/zh/intro_search.txt b/wiki/lib/plugins/extension/lang/zh/intro_search.txt
new file mode 100644
index 0000000..ebc7e99
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh/intro_search.txt
@@ -0,0 +1 @@
+这个标签会为你展示所有 DokuWiki 的第三方插件和模板。但你需要知道这些由第三方提供的代码可能会给你带来**安全方面的风险**,你最好先读一下[[doku>security#plugin_security|插件安全性]]。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/zh/intro_templates.txt b/wiki/lib/plugins/extension/lang/zh/intro_templates.txt
new file mode 100644
index 0000000..10c1bed
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh/intro_templates.txt
@@ -0,0 +1 @@
+DokuWiki 当前所使用的模板已经安装了,你可以在[[?do=admin&page=config|配置管理器]]里选择你要的模板。
\ No newline at end of file
diff --git a/wiki/lib/plugins/extension/lang/zh/lang.php b/wiki/lib/plugins/extension/lang/zh/lang.php
new file mode 100644
index 0000000..622a007
--- /dev/null
+++ b/wiki/lib/plugins/extension/lang/zh/lang.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lempel <riverlempel@hotmail.com>
+ * @author Cupen <Cupenoruler@foxmail.com>
+ * @author xiqingongzi <Xiqingongzi@Gmail.com>
+ * @author qinghao <qingxianhao@gmail.com>
+ * @author lainme <lainme993@gmail.com>
+ * @author Errol <errol@hotmail.com>
+ * @author phy25 <git@phy25.com>
+ */
+$lang['menu']                  = '扩展管理器';
+$lang['tab_plugins']           = '安装插件';
+$lang['tab_templates']         = '安装模板';
+$lang['tab_search']            = '搜索和安装';
+$lang['tab_install']           = '手动安装';
+$lang['notimplemented']        = '未实现的特性';
+$lang['notinstalled']          = '该扩展未安装';
+$lang['alreadyenabled']        = '该扩展已激活';
+$lang['alreadydisabled']       = '该扩展已关闭';
+$lang['pluginlistsaveerror']   = '保存插件列表时碰到个错误';
+$lang['unknownauthor']         = '未知作者';
+$lang['unknownversion']        = '未知版本';
+$lang['btn_info']              = '查看更多信息';
+$lang['btn_update']            = '更新';
+$lang['btn_uninstall']         = '卸载';
+$lang['btn_enable']            = '激活';
+$lang['btn_disable']           = '关闭';
+$lang['btn_install']           = '安装';
+$lang['btn_reinstall']         = '重新安装';
+$lang['js']['reallydel']       = '确定卸载这个扩展么?';
+$lang['js']['display_viewoptions'] = '查看选项:';
+$lang['js']['display_enabled'] = '启用';
+$lang['js']['display_disabled'] = '禁用';
+$lang['js']['display_updatable'] = '可更新';
+$lang['search_for']            = '搜索扩展';
+$lang['search']                = '搜索';
+$lang['extensionby']           = '<strong>%s</strong> by %s';
+$lang['screenshot']            = '%s 的截图';
+$lang['popularity']            = '人气: %s%%';
+$lang['homepage_link']         = '文档';
+$lang['bugs_features']         = '错误';
+$lang['tags']                  = '标签:';
+$lang['author_hint']           = '搜索这个作者的插件';
+$lang['installed']             = '已安装的:';
+$lang['downloadurl']           = '下载地址:';
+$lang['repository']            = '版本库:';
+$lang['unknown']               = '<em>未知的</em>';
+$lang['installed_version']     = '已安装版本:';
+$lang['install_date']          = '您的最后一次升级:';
+$lang['available_version']     = '可用版本:';
+$lang['compatible']            = '兼容于:';
+$lang['depends']               = '依赖于:';
+$lang['similar']               = '相似于:';
+$lang['conflicts']             = '冲突于:';
+$lang['donate']                = '喜欢?';
+$lang['donate_action']         = '捐给作者一杯咖啡钱!';
+$lang['repo_retry']            = '重试';
+$lang['provides']              = '提供:';
+$lang['status']                = '现状:';
+$lang['status_installed']      = '已安装的';
+$lang['status_not_installed']  = '未安装';
+$lang['status_protected']      = '受保护';
+$lang['status_enabled']        = '启用';
+$lang['status_disabled']       = '禁用';
+$lang['status_unmodifiable']   = '不可修改';
+$lang['status_plugin']         = '插件';
+$lang['status_template']       = '模板';
+$lang['status_bundled']        = '内建';
+$lang['msg_enabled']           = '插件 %s 已启用';
+$lang['msg_disabled']          = '插件 %s 已禁用';
+$lang['msg_delete_success']    = '%s 扩展没有安装';
+$lang['msg_delete_failed']     = '卸载扩展 %s 失败';
+$lang['msg_template_install_success'] = '模板 %s 安装成功';
+$lang['msg_template_update_success'] = '模板 %s 更新成功';
+$lang['msg_plugin_install_success'] = '插件 %s 安装成功';
+$lang['msg_plugin_update_success'] = '插件 %s 更新成功';
+$lang['msg_upload_failed']     = '上传文件失败';
+$lang['missing_dependency']    = '<strong>缺少或者被禁用依赖:</strong> %s';
+$lang['security_issue']        = '<strong>安全问题:</strong> %s';
+$lang['security_warning']      = '<strong>安全警告:</strong> %s';
+$lang['update_available']      = '<strong>更新:</strong>新版本 %s 已经可用。';
+$lang['wrong_folder']          = '<strong>插件安装不正确:</strong>重命名插件目录 "%s" 为 "%s"。';
+$lang['url_change']            = '<strong>URL已改变:</strong>自上次下载以来的下载 URL 已经改变。请在更新扩展前检查新 URL 是否有效。<br />新的:%s<br />旧的:%s';
+$lang['error_badurl']          = 'URL 应当以 http 或者 https 作为开头';
+$lang['error_dircreate']       = '无法创建用于保存下载的临时文件夹';
+$lang['error_download']        = '无法下载文件:%s';
+$lang['error_decompress']      = '无法解压下载的文件。这可能是由于文件损坏,在这种情况下您可以重试。这也可能是由于压缩格式是未知的,在这种情况下您需要手动下载并且安装。';
+$lang['error_findfolder']      = '无法识别扩展目录,您需要手动下载和安装';
+$lang['error_copy']            = '在尝试安装文件到目录 <em>%s</em> 时出现文件复制错误:磁盘可能已满或者文件访问权限不正确。这可能导致插件被部分安装并使您的维基处在不稳定状态';
+$lang['noperms']               = '扩展目录不可写';
+$lang['notplperms']            = '模板目录不可写';
+$lang['nopluginperms']         = '插件目录不可写';
+$lang['git']                   = '这个扩展是通过 Git 安装的,您可能不想在这里升级它';
+$lang['auth']                  = '这个认证插件没有在配置中启用,请考虑禁用它。';
+$lang['install_url']           = '从 URL 安装:';
+$lang['install_upload']        = '上传扩展:';
+$lang['repo_error']            = '无法连接到插件仓库。请确定您的服务器可以连接 www.dokuwiki.org 并检查您的代理设置。';
+$lang['nossl']                 = '您的 PHP 似乎不支持 SSL。很多 DokuWiki 扩展将无法下载。';
diff --git a/wiki/lib/plugins/extension/plugin.info.txt b/wiki/lib/plugins/extension/plugin.info.txt
new file mode 100644
index 0000000..7ee84dc
--- /dev/null
+++ b/wiki/lib/plugins/extension/plugin.info.txt
@@ -0,0 +1,7 @@
+base   extension
+author Michael Hamann
+email  michael@content-space.de
+date   2015-07-26
+name   Extension Manager
+desc   Allows managing and installing plugins and templates
+url    https://www.dokuwiki.org/plugin:extension
diff --git a/wiki/lib/plugins/extension/script.js b/wiki/lib/plugins/extension/script.js
new file mode 100644
index 0000000..8627db4
--- /dev/null
+++ b/wiki/lib/plugins/extension/script.js
@@ -0,0 +1,145 @@
+jQuery(function(){
+
+    var $extmgr = jQuery('#extension__manager');
+
+    /**
+     * Confirm uninstalling
+     */
+    $extmgr.find('button.uninstall').click(function(e){
+        if(!window.confirm(LANG.plugins.extension.reallydel)){
+            e.preventDefault();
+            return false;
+        }
+        return true;
+    });
+
+    /**
+     * very simple lightbox
+     * @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/
+     */
+    $extmgr.find('a.extension_screenshot').click(function(e) {
+        e.preventDefault();
+
+        //Get clicked link href
+        var image_href = jQuery(this).attr("href");
+
+        // create lightbox if needed
+        var $lightbox = jQuery('#plugin__extensionlightbox');
+        if(!$lightbox.length){
+            $lightbox = jQuery('<div id="plugin__extensionlightbox"><p>Click to close</p><div></div></div>')
+                .appendTo(jQuery('body'))
+                .hide()
+                .click(function(){
+                    $lightbox.hide();
+                });
+        }
+
+        // fill and show it
+        $lightbox
+            .show()
+            .find('div').html('<img src="' + image_href + '" />');
+
+
+        return false;
+    });
+
+    /**
+     * Enable/Disable extension via AJAX
+     */
+    $extmgr.find('button.disable, button.enable').click(function (e) {
+        e.preventDefault();
+        var $btn = jQuery(this);
+
+        // get current state
+        var extension = $btn.attr('name').split('[')[2];
+        extension = extension.substr(0, extension.length - 1);
+        var act = ($btn.hasClass('disable')) ? 'disable' : 'enable';
+
+        // disable while we wait
+        $btn.attr('disabled', 'disabled');
+        $btn.css('cursor', 'wait');
+
+        // execute
+        jQuery.get(
+            DOKU_BASE + 'lib/exe/ajax.php',
+            {
+                call: 'plugin_extension',
+                ext:  extension,
+                act:  act
+            },
+            function (data) {
+                $btn.css('cursor', '')
+                    .removeAttr('disabled')
+                    .removeClass('disable')
+                    .removeClass('enable')
+                    .text(data.label)
+                    .addClass(data.reverse)
+                .parents('li')
+                    .removeClass('disabled')
+                    .removeClass('enabled')
+                    .addClass(data.state);
+            }
+        );
+    });
+
+    /**
+     * AJAX detail infos
+     */
+    $extmgr.find('a.info').click(function(e){
+        e.preventDefault();
+
+        var $link = jQuery(this);
+        var $details = $link.parent().find('dl.details');
+        if($details.length){
+            $link.toggleClass('close');
+            $details.toggle();
+            return;
+        }
+
+        $link.addClass('close');
+        jQuery.get(
+            DOKU_BASE + 'lib/exe/ajax.php',
+            {
+                call: 'plugin_extension',
+                ext: $link.data('extid'),
+                act: 'info'
+            },
+            function(data){
+                $link.parent().append(data);
+            }
+        );
+    });
+
+    /**
+        Create section for enabling/disabling viewing options
+     */
+    if ( $extmgr.find('.plugins, .templates').hasClass('active') ) {
+        var $extlist = jQuery('#extension__list');
+        $extlist.addClass('hasDisplayOptions');
+
+        var $displayOpts = jQuery('<p>', { id: 'extension__viewoptions'} ).appendTo($extmgr.find( '.panelHeader' ));
+        $displayOpts.append(LANG.plugins.extension.display_viewoptions);
+
+        var displayOptionsHandler = function(){
+            $extlist.toggleClass( this.name );
+            DokuCookie.setValue('ext_'+this.name, $extlist.hasClass(this.name) ? '1' : '0');
+        };
+
+        jQuery(['enabled', 'disabled', 'updatable']).each(function(index, chkName){
+            var $label = jQuery( '<label></label>' )
+                .appendTo($displayOpts);
+            var $input = jQuery( '<input />', { type: 'checkbox', name: chkName })
+                .change(displayOptionsHandler)
+                .appendTo($label);
+
+            var previous = DokuCookie.getValue('ext_'+chkName);
+            if(typeof previous === "undefined" || previous == '1') {
+                $input.click();
+            }
+
+            jQuery( '<span/>' )
+                .append(' '+LANG.plugins.extension['display_'+chkName])
+                .appendTo($label);
+        });
+    }
+});
diff --git a/wiki/lib/plugins/extension/style.less b/wiki/lib/plugins/extension/style.less
new file mode 100644
index 0000000..261fa1c
--- /dev/null
+++ b/wiki/lib/plugins/extension/style.less
@@ -0,0 +1,386 @@
+/*
+ * Extension plugin styles
+ *
+ * @author  Christopher Smith <chris@jalakai.co.uk>
+ * @author  Piyush Mishra <me@piyushmishra.com>
+ * @author  Håkan Sandell <sandell.hakan@gmail.com>
+ * @author  Anika Henke <anika@selfthinker.org>
+ */
+
+/**
+ * very simple lightbox
+ * @link http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/super-simple-lightbox-with-css-and-jquery/
+ */
+#plugin__extensionlightbox {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background: url(images/overlay.png) repeat;
+    text-align: center;
+    cursor: pointer;
+    z-index: 9999;
+
+    p {
+        text-align: right;
+        color: #fff;
+        margin-right: 20px;
+        font-size: 12px;
+    }
+
+    img {
+        box-shadow: 0 0 25px #111;
+        max-width: 90%;
+        max-height: 90%;
+    }
+}
+
+/**
+ * general styles
+ */
+#extension__manager {
+    // tab layout - most of it is in the main template
+    ul.tabs li.active a {
+        background-color: @ini_background_alt;
+        border-bottom: solid 1px @ini_background_alt;
+        z-index: 2;
+    }
+    .panelHeader {
+        background-color: @ini_background_alt;
+        margin: 0 0 10px 0;
+        padding: 10px 10px 8px;
+        overflow: hidden;
+    }
+
+    // message spacing
+    div.msg {
+        margin: 0.4em 0 0 0;
+    }
+}
+
+/*
+ * extensions table
+ */
+#extension__list {
+    ul.extensionList {
+        margin-left: 0;
+        margin-right: 0;
+        padding: 0;
+        list-style: none;
+    }
+
+    ul.extensionList li {
+        margin: 0 0 .5em;
+        padding: 0 0 .5em;
+        color: @ini_text;
+        border-bottom: 1px solid @ini_border;
+        overflow: hidden;
+    }
+
+    button {
+        margin-bottom: .3em;
+    }
+}
+
+/**
+ * extension table left column
+ */
+#extension__list .legend {
+    position: relative;
+    width: 75%;
+    float: left;
+
+    // padding
+    > div {
+        padding: 0 .5em 0 132px;
+        border-right: 1px solid @ini_background_alt;
+        overflow: hidden;
+    }
+
+    // screenshot
+    div.screenshot {
+        margin-top: 4px;
+        margin-left: -132px;
+        max-width: 120px;
+        float: left;
+        position: relative;
+
+        img {
+            width: 120px;
+            height: 70px;
+            border-radius: 5px;
+            box-shadow: 2px 2px 2px #666;
+        }
+
+        span {
+            min-height: 24px;
+            min-width: 24px;
+            position: absolute;
+            left: 0;
+            top: 0;
+        }
+    }
+
+    // plugin headline
+    h2 {
+        width: 100%;
+        float: right;
+        margin: 0.2em 0 0.5em;
+        font-size: 100%;
+        font-weight: normal;
+        border: none;
+
+        strong {
+            font-size: 120%;
+            font-weight: bold;
+            vertical-align: baseline;
+        }
+    }
+
+    // description
+    p {
+        margin: 0 0 0.6em 0;
+    }
+
+    // popularity bar
+    div.popularity {
+        background-color: @ini_background;
+        border: 1px solid silver;
+        height: .4em;
+        margin: 0 auto;
+        padding: 1px;
+        width: 5.5em;
+        position: absolute;
+        right: .5em;
+        top: 0.2em;
+
+        div {
+            background-color: @ini_border;
+            height: 100%;
+        }
+    }
+
+    // Docs, Bugs, Tags
+    div.linkbar {
+        font-size: 85%;
+
+        span.tags {
+            padding-left: 18px;
+            background: transparent url(images/tag.png) no-repeat 0 0;
+        }
+
+        a.bugs {
+            padding-left: 18px;
+            background: transparent url(images/bug.gif) no-repeat 0 0;
+        }
+    }
+
+    // more info button
+    a.info {
+        background: transparent url(images/down.png) no-repeat 0 0;
+        border-width: 0;
+        height: 13px;
+        width: 13px;
+        text-indent: -9999px;
+        float: right;
+        margin: .5em 0 0;
+        overflow: hidden;
+
+        &.close {
+            background: transparent url(images/up.png) no-repeat 0 0;
+        }
+    }
+
+    // detailed info box
+    dl.details {
+        margin: 0.4em 0 0 0;
+        font-size: 85%;
+        border-top: 1px solid @ini_background_alt;
+        clear: both;
+
+        dt {
+            clear: left;
+            float: left;
+            width: 25%;
+            margin: 0;
+            text-align: right;
+            font-weight: normal;
+            padding: 0.2em 5px 0 0;
+            font-weight: bold;
+        }
+
+        dd {
+            margin-left: 25%;
+            padding: 0.2em 0 0 5px;
+
+            a.donate {
+                padding-left: 18px;
+                background: transparent url(images/donate.png) left center no-repeat;
+            }
+        }
+    }
+}
+
+[dir=rtl] #extension__list .legend {
+    float: right;
+
+    > div {
+        padding: 0 132px 0 .5em;
+        border-left: 1px solid @ini_background_alt;
+        border-right-width: 0;
+    }
+
+    div.screenshot {
+        margin-left: 0;
+        margin-right: -132px;
+        float: right;
+
+        span {
+            left: auto;
+            right: 0;
+        }
+    }
+
+    h2 {
+        float: left;
+    }
+
+    div.popularity {
+        right: auto;
+        left: .5em;
+    }
+
+    div.linkbar span.tags,
+    dl.details dd a.donate {
+        padding-left: 0;
+        padding-right: 18px;
+        background-position: top right;
+    }
+
+    a.info {
+        float: left;
+    }
+
+    dl.details {
+        dt {
+            clear: right;
+            float: right;
+            text-align: left;
+            padding-left: 5px;
+            padding-right: 0;
+        }
+
+        dd {
+            margin-left: 0;
+            margin-right: 25%;
+            padding-left: 0;
+            padding-right: 5px;
+        }
+    }
+}
+
+/*
+ * Enabled/Disabled overrides
+ */
+#extension__list {
+
+    &.hasDisplayOptions {
+        .enabled,
+        .disabled,
+        .updatable {
+            display: none;
+        }
+
+        &.enabled .enabled,
+        &.disabled .disabled,
+        &.updatable .updatable {
+            display: block;
+        }
+    }
+
+    .enabled div.screenshot span {
+        background: transparent url(images/enabled.png) no-repeat 2px 2px;
+    }
+
+    .disabled div.screenshot span {
+        background: transparent url(images/disabled.png) no-repeat 2px 2px;
+    }
+
+    .disabled .legend {
+        opacity: 0.7;
+    }
+}
+
+/**
+ * extension table right column
+ */
+#extension__manager .actions {
+    padding: 0;
+    font-size: 95%;
+    width: 25%;
+    float: right;
+    text-align: right;
+
+    .version {
+        display: block;
+    }
+
+    p {
+        margin: 0.2em 0;
+        text-align: center;
+    }
+
+    p.permerror {
+        margin-left: 0.4em;
+        text-align: left;
+        padding-left: 19px;
+        background: transparent url(images/warning.png) center left no-repeat;
+        line-height: 18px;
+        font-size: 12px;
+    }
+}
+
+[dir=rtl] #extension__manager .actions {
+    float: left;
+    text-align: left;
+
+    p.permerror {
+        margin-left: 0;
+        margin-right: 0.4em;
+        text-align: right;
+        padding-left: 0;
+        padding-right: 19px;
+        background-position: center right;
+    }
+}
+
+/**
+ * Search form
+ */
+#extension__manager form.search {
+    display: block;
+    margin-bottom: 2em;
+
+    span {
+        font-weight: bold;
+    }
+
+    input.edit {
+        width: 25em;
+    }
+}
+
+/**
+ * Install form
+ */
+#extension__manager form.install {
+    text-align: center;
+    display: block;
+    width: 60%;
+}
+
+#extension__viewoptions label {
+    margin-left: 1em;
+    vertical-align: baseline;
+}
diff --git a/wiki/lib/plugins/index.html b/wiki/lib/plugins/index.html
new file mode 100644
index 0000000..977f90e
--- /dev/null
+++ b/wiki/lib/plugins/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="refresh" content="0; URL=../../" />
+<meta name="robots" content="noindex" />
+<title>nothing here...</title>
+</head>
+<body>
+<!-- this is just here to prevent directory browsing -->
+</body>
+</html>
diff --git a/wiki/lib/plugins/info/plugin.info.txt b/wiki/lib/plugins/info/plugin.info.txt
new file mode 100644
index 0000000..3f05391
--- /dev/null
+++ b/wiki/lib/plugins/info/plugin.info.txt
@@ -0,0 +1,7 @@
+base info
+author Andreas Gohr
+email andi@splitbrain.org
+date 2014-10-01
+name Info Plugin
+desc Displays information about various DokuWiki internals
+url http://dokuwiki.org/plugin:info
diff --git a/wiki/lib/plugins/info/syntax.php b/wiki/lib/plugins/info/syntax.php
new file mode 100644
index 0000000..773256f
--- /dev/null
+++ b/wiki/lib/plugins/info/syntax.php
@@ -0,0 +1,294 @@
+<?php
+/**
+ * Info Plugin: Displays information about various DokuWiki internals
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ * @author     Esther Brunner <wikidesign@gmail.com>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
+
+    /**
+     * What kind of syntax are we?
+     */
+    function getType(){
+        return 'substition';
+    }
+
+    /**
+     * What about paragraphs?
+     */
+    function getPType(){
+        return 'block';
+    }
+
+    /**
+     * Where to sort in?
+     */
+    function getSort(){
+        return 155;
+    }
+
+
+    /**
+     * Connect pattern to lexer
+     */
+    function connectTo($mode) {
+        $this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info');
+    }
+
+    /**
+     * Handle the match
+     *
+     * @param   string       $match   The text matched by the patterns
+     * @param   int          $state   The lexer state for the match
+     * @param   int          $pos     The character position of the matched text
+     * @param   Doku_Handler $handler The Doku_Handler object
+     * @return  array Return an array with all data you want to use in render
+     */
+    function handle($match, $state, $pos, Doku_Handler $handler){
+        $match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end
+        return array(strtolower($match));
+    }
+
+    /**
+     * Create output
+     *
+     * @param string $format   string     output format being rendered
+     * @param Doku_Renderer    $renderer  the current renderer object
+     * @param array            $data      data created by handler()
+     * @return  boolean                 rendered correctly?
+     */
+    function render($format, Doku_Renderer $renderer, $data) {
+        if($format == 'xhtml'){
+            /** @var Doku_Renderer_xhtml $renderer */
+            //handle various info stuff
+            switch ($data[0]){
+                case 'syntaxmodes':
+                    $renderer->doc .= $this->_syntaxmodes_xhtml();
+                    break;
+                case 'syntaxtypes':
+                    $renderer->doc .= $this->_syntaxtypes_xhtml();
+                    break;
+                case 'syntaxplugins':
+                    $this->_plugins_xhtml('syntax', $renderer);
+                    break;
+                case 'adminplugins':
+                    $this->_plugins_xhtml('admin', $renderer);
+                    break;
+                case 'actionplugins':
+                    $this->_plugins_xhtml('action', $renderer);
+                    break;
+                case 'rendererplugins':
+                    $this->_plugins_xhtml('renderer', $renderer);
+                    break;
+                case 'helperplugins':
+                    $this->_plugins_xhtml('helper', $renderer);
+                    break;
+                case 'authplugins':
+                    $this->_plugins_xhtml('auth', $renderer);
+                    break;
+                case 'remoteplugins':
+                    $this->_plugins_xhtml('remote', $renderer);
+                    break;
+                case 'helpermethods':
+                    $this->_helpermethods_xhtml($renderer);
+                    break;
+                default:
+                    $renderer->doc .= "no info about ".htmlspecialchars($data[0]);
+            }
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * list all installed plugins
+     *
+     * uses some of the original renderer methods
+     *
+     * @param string $type
+     * @param Doku_Renderer_xhtml $renderer
+     */
+    function _plugins_xhtml($type, Doku_Renderer_xhtml $renderer){
+        global $lang;
+        $renderer->doc .= '<ul>';
+
+        $plugins = plugin_list($type);
+        $plginfo = array();
+
+        // remove subparts
+        foreach($plugins as $p){
+            if (!$po = plugin_load($type,$p)) continue;
+            list($name,/* $part */) = explode('_',$p,2);
+            $plginfo[$name] = $po->getInfo();
+        }
+
+        // list them
+        foreach($plginfo as $info){
+            $renderer->doc .= '<li><div class="li">';
+            $renderer->externallink($info['url'],$info['name']);
+            $renderer->doc .= ' ';
+            $renderer->doc .= '<em>'.$info['date'].'</em>';
+            $renderer->doc .= ' ';
+            $renderer->doc .= $lang['by'];
+            $renderer->doc .= ' ';
+            $renderer->emaillink($info['email'],$info['author']);
+            $renderer->doc .= '<br />';
+            $renderer->doc .= strtr(hsc($info['desc']),array("\n"=>"<br />"));
+            $renderer->doc .= '</div></li>';
+            unset($po);
+        }
+
+        $renderer->doc .= '</ul>';
+    }
+
+    /**
+     * list all installed plugins
+     *
+     * uses some of the original renderer methods
+     *
+     * @param Doku_Renderer_xhtml $renderer
+     */
+    function _helpermethods_xhtml(Doku_Renderer_xhtml $renderer){
+        $plugins = plugin_list('helper');
+        foreach($plugins as $p){
+            if (!$po = plugin_load('helper',$p)) continue;
+
+            if (!method_exists($po, 'getMethods')) continue;
+            $methods = $po->getMethods();
+            $info = $po->getInfo();
+
+            $hid = $this->_addToTOC($info['name'], 2, $renderer);
+            $doc = '<h2><a name="'.$hid.'" id="'.$hid.'">'.hsc($info['name']).'</a></h2>';
+            $doc .= '<div class="level2">';
+            $doc .= '<p>'.strtr(hsc($info['desc']), array("\n"=>"<br />")).'</p>';
+            $doc .= '<pre class="code">$'.$p." = plugin_load('helper', '".$p."');</pre>";
+            $doc .= '</div>';
+            foreach ($methods as $method){
+                $title = '$'.$p.'->'.$method['name'].'()';
+                $hid = $this->_addToTOC($title, 3, $renderer);
+                $doc .= '<h3><a name="'.$hid.'" id="'.$hid.'">'.hsc($title).'</a></h3>';
+                $doc .= '<div class="level3">';
+                $doc .= '<div class="table"><table class="inline"><tbody>';
+                $doc .= '<tr><th>Description</th><td colspan="2">'.$method['desc'].
+                    '</td></tr>';
+                if ($method['params']){
+                    $c = count($method['params']);
+                    $doc .= '<tr><th rowspan="'.$c.'">Parameters</th><td>';
+                    $params = array();
+                    foreach ($method['params'] as $desc => $type){
+                        $params[] = hsc($desc).'</td><td>'.hsc($type);
+                    }
+                    $doc .= join($params, '</td></tr><tr><td>').'</td></tr>';
+                }
+                if ($method['return']){
+                    $doc .= '<tr><th>Return value</th><td>'.hsc(key($method['return'])).
+                        '</td><td>'.hsc(current($method['return'])).'</td></tr>';
+                }
+                $doc .= '</tbody></table></div>';
+                $doc .= '</div>';
+            }
+            unset($po);
+
+            $renderer->doc .= $doc;
+        }
+    }
+
+    /**
+     * lists all known syntax types and their registered modes
+     *
+     * @return string
+     */
+    function _syntaxtypes_xhtml(){
+        global $PARSER_MODES;
+        $doc  = '';
+
+        $doc .= '<div class="table"><table class="inline"><tbody>';
+        foreach($PARSER_MODES as $mode => $modes){
+            $doc .= '<tr>';
+            $doc .= '<td class="leftalign">';
+            $doc .= $mode;
+            $doc .= '</td>';
+            $doc .= '<td class="leftalign">';
+            $doc .= join(', ',$modes);
+            $doc .= '</td>';
+            $doc .= '</tr>';
+        }
+        $doc .= '</tbody></table></div>';
+        return $doc;
+    }
+
+    /**
+     * lists all known syntax modes and their sorting value
+     *
+     * @return string
+     */
+    function _syntaxmodes_xhtml(){
+        $modes = p_get_parsermodes();
+
+        $compactmodes = array();
+        foreach($modes as $mode){
+            $compactmodes[$mode['sort']][] = $mode['mode'];
+        }
+        $doc  = '';
+        $doc .= '<div class="table"><table class="inline"><tbody>';
+
+        foreach($compactmodes as $sort => $modes){
+            $rowspan = '';
+            if(count($modes) > 1) {
+                $rowspan = ' rowspan="'.count($modes).'"';
+            }
+
+            foreach($modes as $index => $mode) {
+                $doc .= '<tr>';
+                $doc .= '<td class="leftalign">';
+                $doc .= $mode;
+                $doc .= '</td>';
+
+                if($index === 0) {
+                    $doc .= '<td class="rightalign" '.$rowspan.'>';
+                    $doc .= $sort;
+                    $doc .= '</td>';
+                }
+                $doc .= '</tr>';
+            }
+        }
+
+        $doc .= '</tbody></table></div>';
+        return $doc;
+    }
+
+    /**
+     * Adds a TOC item
+     *
+     * @param string $text
+     * @param int $level
+     * @param Doku_Renderer_xhtml $renderer
+     * @return string
+     */
+    protected function _addToTOC($text, $level, Doku_Renderer_xhtml $renderer){
+        global $conf;
+
+        $hid = '';
+        if (($level >= $conf['toptoclevel']) && ($level <= $conf['maxtoclevel'])){
+            $hid  = $renderer->_headerToLink($text, true);
+            $renderer->toc[] = array(
+                'hid'   => $hid,
+                'title' => $text,
+                'type'  => 'ul',
+                'level' => $level - $conf['toptoclevel'] + 1
+            );
+        }
+        return $hid;
+    }
+}
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/popularity/action.php b/wiki/lib/plugins/popularity/action.php
new file mode 100644
index 0000000..d5ec0f5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/action.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Popularity Feedback Plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+require_once(DOKU_PLUGIN.'action.php');
+require_once(DOKU_PLUGIN.'popularity/admin.php');
+
+class action_plugin_popularity extends Dokuwiki_Action_Plugin {
+
+    /**
+     * @var helper_plugin_popularity
+     */
+    var $helper;
+
+    function __construct(){
+        $this->helper = $this->loadHelper('popularity', false);
+    }
+
+    /**
+     * Register its handlers with the dokuwiki's event controller
+     */
+    function register(Doku_Event_Handler $controller) {
+        $controller->register_hook('INDEXER_TASKS_RUN', 'AFTER',  $this, '_autosubmit', array());
+    }
+
+    function _autosubmit(Doku_Event &$event, $param){
+        //Do we have to send the data now
+        if ( !$this->helper->isAutosubmitEnabled() || $this->_isTooEarlyToSubmit() ){
+            return;
+        }
+
+        //Actually send it
+        $status = $this->helper->sendData( $this->helper->gatherAsString() );
+
+        if ( $status !== '' ){
+            //If an error occured, log it
+            io_saveFile( $this->helper->autosubmitErrorFile, $status );
+        } else {
+            //If the data has been sent successfully, previous log of errors are useless
+            @unlink($this->helper->autosubmitErrorFile);
+            //Update the last time we sent data
+            touch ( $this->helper->autosubmitFile );
+        }
+
+        $event->stopPropagation();
+        $event->preventDefault();
+    }
+
+    /**
+     * Check if it's time to send autosubmit data
+     * (we should have check if autosubmit is enabled first)
+     */
+    function _isTooEarlyToSubmit(){
+        $lastSubmit = $this->helper->lastSentTime();
+        return $lastSubmit + 24*60*60*30 > time();
+    }
+}
diff --git a/wiki/lib/plugins/popularity/admin.php b/wiki/lib/plugins/popularity/admin.php
new file mode 100644
index 0000000..0cf174e
--- /dev/null
+++ b/wiki/lib/plugins/popularity/admin.php
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Popularity Feedback Plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class admin_plugin_popularity extends DokuWiki_Admin_Plugin {
+
+    /**
+     * @var helper_plugin_popularity
+     */
+    var $helper;
+    var $sentStatus = null;
+
+    function __construct(){
+        $this->helper = $this->loadHelper('popularity', false);
+    }
+
+    /**
+     * return prompt for admin menu
+     */
+    function getMenuText($language) {
+        return $this->getLang('name');
+    }
+
+    /**
+     * return sort order for position in admin menu
+     */
+    function getMenuSort() {
+        return 2000;
+    }
+
+    /**
+     * Accessible for managers
+     */
+    function forAdminOnly() {
+        return false;
+    }
+
+
+    /**
+     * handle user request
+     */
+    function handle() {
+        global $INPUT;
+
+        //Send the data
+        if ( $INPUT->has('data') ){
+            $this->sentStatus = $this->helper->sendData( $INPUT->str('data') );
+            if ( $this->sentStatus === '' ){
+                //Update the last time we sent the data
+                touch ( $this->helper->popularityLastSubmitFile );
+            }
+            //Deal with the autosubmit option
+            $this->_enableAutosubmit( $INPUT->has('autosubmit') );
+        }
+    }
+
+    /**
+     * Enable or disable autosubmit
+     * @param bool $enable If TRUE, it will enable autosubmit. Else, it will disable it.
+     */
+    function _enableAutosubmit( $enable ){
+        if ( $enable ){
+            io_saveFile( $this->helper->autosubmitFile, ' ');
+        } else {
+            @unlink($this->helper->autosubmitFile);
+        }
+    }
+
+    /**
+     * Output HTML form
+     */
+    function html() {
+        global $INPUT;
+
+        if ( ! $INPUT->has('data') ){
+            echo $this->locale_xhtml('intro');
+
+            //If there was an error the last time we tried to autosubmit, warn the user
+            if ( $this->helper->isAutoSubmitEnabled() ){
+                if ( file_exists($this->helper->autosubmitErrorFile) ){
+                    echo $this->getLang('autosubmitError');
+                    echo io_readFile( $this->helper->autosubmitErrorFile );
+                }
+            }
+
+            flush();
+            echo $this->buildForm('server');
+
+            //Print the last time the data was sent
+            $lastSent = $this->helper->lastSentTime();
+            if ( $lastSent !== 0 ){
+                echo $this->getLang('lastSent') . ' ' . datetime_h($lastSent);
+            }
+        } else {
+            //If we just submitted the form
+            if ( $this->sentStatus === '' ){
+                //If we successfully sent the data
+                echo $this->locale_xhtml('submitted');
+            } else {
+                //If we failed to submit the data, try directly with the browser
+                echo $this->getLang('submissionFailed') . $this->sentStatus . '<br />';
+                echo $this->getLang('submitDirectly');
+                echo $this->buildForm('browser', $INPUT->str('data'));
+            }
+        }
+    }
+
+
+    /**
+     * Build the form which presents the data to be sent
+     * @param string $submissionMode How is the data supposed to be sent? (may be: 'browser' or 'server')
+     * @param string $data   The popularity data, if it has already been computed. NULL otherwise.
+     * @return string The form, as an html string
+     */
+    function buildForm($submissionMode, $data = null){
+        $url = ($submissionMode === 'browser' ? $this->helper->submitUrl : script());
+        if ( is_null($data) ){
+            $data = $this->helper->gatherAsString();
+        }
+
+        $form = '<form method="post" action="'. $url  .'" accept-charset="utf-8">'
+            .'<fieldset style="width: 60%;">'
+            .'<textarea class="edit" rows="10" cols="80" readonly="readonly" name="data">'
+            .$data
+            .'</textarea><br />';
+
+        //If we submit via the server, we give the opportunity to suscribe to the autosubmission option
+        if ( $submissionMode !== 'browser' ){
+            $form .= '<label for="autosubmit">'
+                .'<input type="checkbox" name="autosubmit" id="autosubmit" '
+                .($this->helper->isAutosubmitEnabled() ? 'checked' : '' )
+                .'/> ' . $this->getLang('autosubmit') .'<br />'
+                .'</label>'
+                .'<input type="hidden" name="do" value="admin" />'
+                .'<input type="hidden" name="page" value="popularity" />';
+        }
+        $form .= '<button type="submit">'.$this->getLang('submit').'</button>'
+            .'</fieldset>'
+            .'</form>';
+        return $form;
+    }
+}
diff --git a/wiki/lib/plugins/popularity/admin.svg b/wiki/lib/plugins/popularity/admin.svg
new file mode 100644
index 0000000..820fc8c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2 21l21-9L2 3v7l15 2-15 2v7z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/helper.php b/wiki/lib/plugins/popularity/helper.php
new file mode 100644
index 0000000..b81ab70
--- /dev/null
+++ b/wiki/lib/plugins/popularity/helper.php
@@ -0,0 +1,340 @@
+<?php
+/**
+ * Popularity Feedback Plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+class helper_plugin_popularity extends Dokuwiki_Plugin {
+    /**
+     * The url where the data should be sent
+     */
+    var $submitUrl = 'http://update.dokuwiki.org/popularity.php';
+
+    /**
+     * Name of the file which determine if the the autosubmit is enabled,
+     * and when it was submited for the last time
+     */
+    var $autosubmitFile;
+
+    /**
+     * File where the last error which happened when we tried to autosubmit, will be log
+     */
+    var $autosubmitErrorFile;
+
+    /**
+     * Name of the file which determine when the popularity data was manually
+     * submitted for the last time
+     * (If this file doesn't exist, the data has never been sent)
+     */
+    var $popularityLastSubmitFile;
+
+
+    function __construct(){
+        global $conf;
+        $this->autosubmitFile = $conf['cachedir'].'/autosubmit.txt';
+        $this->autosubmitErrorFile = $conf['cachedir'].'/autosubmitError.txt';
+        $this->popularityLastSubmitFile = $conf['cachedir'].'/lastSubmitTime.txt';
+    }
+
+    /**
+     * Return methods of this helper
+     *
+     * @return array with methods description
+     */
+    function getMethods(){
+        $result = array();
+        $result[] = array(
+                'name'   => 'isAutoSubmitEnabled',
+                'desc'   => 'Check if autosubmit is enabled',
+                'params' => array(),
+                'return' => array('result' => 'bool')
+                );
+        $result[] = array(
+                'name'   => 'sendData',
+                'desc'   => 'Send the popularity data',
+                'params' => array('data' => 'string'),
+                'return' => array()
+                );
+        $result[] = array(
+                'name' => 'gatherAsString',
+                'desc' => 'Gather the popularity data',
+                'params' => array(),
+                'return' => array('data' => 'string')
+                );
+        $result[] = array(
+                'name'   => 'lastSentTime',
+                'desc'   => 'Compute the last time popularity data was sent',
+                'params' => array(),
+                'return' => array('data' => 'int')
+                );
+        return $result;
+
+    }
+
+    /**
+     * Check if autosubmit is enabled
+     *
+     * @return boolean TRUE if we should send data once a month, FALSE otherwise
+     */
+    function isAutoSubmitEnabled(){
+        return file_exists($this->autosubmitFile);
+    }
+
+    /**
+     * Send the data, to the submit url
+     *
+     * @param string $data The popularity data
+     * @return string An empty string if everything worked fine, a string describing the error otherwise
+     */
+    function sendData($data){
+        $error = '';
+        $httpClient = new DokuHTTPClient();
+        $status = $httpClient->sendRequest($this->submitUrl, array('data' => $data), 'POST');
+        if ( ! $status ){
+            $error = $httpClient->error;
+        }
+        return $error;
+    }
+
+    /**
+     * Compute the last time the data was sent. If it has never been sent, we return 0.
+     *
+     * @return int
+     */
+    function lastSentTime(){
+        $manualSubmission = @filemtime($this->popularityLastSubmitFile);
+        $autoSubmission   = @filemtime($this->autosubmitFile);
+
+        return max((int) $manualSubmission, (int) $autoSubmission);
+    }
+
+    /**
+     * Gather all information
+     *
+     * @return string The popularity data as a string
+     */
+    function gatherAsString(){
+        $data = $this->_gather();
+        $string = '';
+        foreach($data as $key => $val){
+            if(is_array($val)) foreach($val as $v){
+                $string .=  hsc($key)."\t".hsc($v)."\n";
+            }else{
+                $string .= hsc($key)."\t".hsc($val)."\n";
+            }
+        }
+        return $string;
+    }
+
+    /**
+     * Gather all information
+     *
+     * @return array The popularity data as an array
+     */
+    function _gather(){
+        global $conf;
+        /** @var $auth DokuWiki_Auth_Plugin */
+        global $auth;
+        $data = array();
+        $phptime = ini_get('max_execution_time');
+        @set_time_limit(0);
+        $pluginInfo = $this->getInfo();
+
+        // version
+        $data['anon_id'] = md5(auth_cookiesalt());
+        $data['version'] = getVersion();
+        $data['popversion'] = $pluginInfo['date'];
+        $data['language'] = $conf['lang'];
+        $data['now']      = time();
+        $data['popauto']  = (int) $this->isAutoSubmitEnabled();
+
+        // some config values
+        $data['conf_useacl']   = $conf['useacl'];
+        $data['conf_authtype'] = $conf['authtype'];
+        $data['conf_template'] = $conf['template'];
+
+        // number and size of pages
+        $list = array();
+        search($list,$conf['datadir'],array($this,'_search_count'),array('all'=>false),'');
+        $data['page_count']    = $list['file_count'];
+        $data['page_size']     = $list['file_size'];
+        $data['page_biggest']  = $list['file_max'];
+        $data['page_smallest'] = $list['file_min'];
+        $data['page_nscount']  = $list['dir_count'];
+        $data['page_nsnest']   = $list['dir_nest'];
+        if($list['file_count']) $data['page_avg'] = $list['file_size'] / $list['file_count'];
+        $data['page_oldest']   = $list['file_oldest'];
+        unset($list);
+
+        // number and size of media
+        $list = array();
+        search($list,$conf['mediadir'],array($this,'_search_count'),array('all'=>true));
+        $data['media_count']    = $list['file_count'];
+        $data['media_size']     = $list['file_size'];
+        $data['media_biggest']  = $list['file_max'];
+        $data['media_smallest'] = $list['file_min'];
+        $data['media_nscount']  = $list['dir_count'];
+        $data['media_nsnest']   = $list['dir_nest'];
+        if($list['file_count']) $data['media_avg'] = $list['file_size'] / $list['file_count'];
+        unset($list);
+
+        // number and size of cache
+        $list = array();
+        search($list,$conf['cachedir'],array($this,'_search_count'),array('all'=>true));
+        $data['cache_count']    = $list['file_count'];
+        $data['cache_size']     = $list['file_size'];
+        $data['cache_biggest']  = $list['file_max'];
+        $data['cache_smallest'] = $list['file_min'];
+        if($list['file_count']) $data['cache_avg'] = $list['file_size'] / $list['file_count'];
+        unset($list);
+
+        // number and size of index
+        $list = array();
+        search($list,$conf['indexdir'],array($this,'_search_count'),array('all'=>true));
+        $data['index_count']    = $list['file_count'];
+        $data['index_size']     = $list['file_size'];
+        $data['index_biggest']  = $list['file_max'];
+        $data['index_smallest'] = $list['file_min'];
+        if($list['file_count']) $data['index_avg'] = $list['file_size'] / $list['file_count'];
+        unset($list);
+
+        // number and size of meta
+        $list = array();
+        search($list,$conf['metadir'],array($this,'_search_count'),array('all'=>true));
+        $data['meta_count']    = $list['file_count'];
+        $data['meta_size']     = $list['file_size'];
+        $data['meta_biggest']  = $list['file_max'];
+        $data['meta_smallest'] = $list['file_min'];
+        if($list['file_count']) $data['meta_avg'] = $list['file_size'] / $list['file_count'];
+        unset($list);
+
+        // number and size of attic
+        $list = array();
+        search($list,$conf['olddir'],array($this,'_search_count'),array('all'=>true));
+        $data['attic_count']    = $list['file_count'];
+        $data['attic_size']     = $list['file_size'];
+        $data['attic_biggest']  = $list['file_max'];
+        $data['attic_smallest'] = $list['file_min'];
+        if($list['file_count']) $data['attic_avg'] = $list['file_size'] / $list['file_count'];
+        $data['attic_oldest']   = $list['file_oldest'];
+        unset($list);
+
+        // user count
+        if($auth && $auth->canDo('getUserCount')){
+            $data['user_count'] = $auth->getUserCount();
+        }
+
+        // calculate edits per day
+        $list = @file($conf['metadir'].'/_dokuwiki.changes');
+        $count = count($list);
+        if($count > 2){
+            $first = (int) substr(array_shift($list),0,10);
+            $last  = (int) substr(array_pop($list),0,10);
+            $dur = ($last - $first)/(60*60*24); // number of days in the changelog
+            $data['edits_per_day'] = $count/$dur;
+        }
+        unset($list);
+
+        // plugins
+        $data['plugin'] = plugin_list();
+
+        // pcre info
+        if(defined('PCRE_VERSION')) $data['pcre_version'] = PCRE_VERSION;
+        $data['pcre_backtrack'] = ini_get('pcre.backtrack_limit');
+        $data['pcre_recursion'] = ini_get('pcre.recursion_limit');
+
+        // php info
+        $data['os'] = PHP_OS;
+        $data['webserver'] = $_SERVER['SERVER_SOFTWARE'];
+        $data['php_version'] = phpversion();
+        $data['php_sapi'] = php_sapi_name();
+        $data['php_memory'] = $this->_to_byte(ini_get('memory_limit'));
+        $data['php_exectime'] = $phptime;
+        $data['php_extension'] = get_loaded_extensions();
+
+        // plugin usage data
+        $this->_add_plugin_usage_data($data);
+
+        return $data;
+    }
+
+    protected function _add_plugin_usage_data(&$data){
+        $pluginsData = array();
+        trigger_event('PLUGIN_POPULARITY_DATA_SETUP', $pluginsData);
+        foreach($pluginsData as $plugin => $d){
+           if ( is_array($d) ) {
+               foreach($d as $key => $value){
+                   $data['plugin_' . $plugin . '_' . $key] = $value;
+               }
+           } else {
+               $data['plugin_' . $plugin] = $d;
+           }
+        }
+    }
+
+    /**
+     * Callback to search and count the content of directories in DokuWiki
+     *
+     * @param array &$data  Reference to the result data structure
+     * @param string $base  Base usually $conf['datadir']
+     * @param string $file  current file or directory relative to $base
+     * @param string $type  Type either 'd' for directory or 'f' for file
+     * @param int    $lvl   Current recursion depht
+     * @param array  $opts  option array as given to search()
+     * @return bool
+     */
+    function _search_count(&$data,$base,$file,$type,$lvl,$opts){
+        // traverse
+        if($type == 'd'){
+            if($data['dir_nest'] < $lvl) $data['dir_nest'] = $lvl;
+            $data['dir_count']++;
+            return true;
+        }
+
+        //only search txt files if 'all' option not set
+        if($opts['all'] || substr($file,-4) == '.txt'){
+            $size = filesize($base.'/'.$file);
+            $date = filemtime($base.'/'.$file);
+            $data['file_count']++;
+            $data['file_size'] += $size;
+            if(!isset($data['file_min']) || $data['file_min'] > $size) $data['file_min'] = $size;
+            if($data['file_max'] < $size) $data['file_max'] = $size;
+            if(!isset($data['file_oldest']) || $data['file_oldest'] > $date) $data['file_oldest'] = $date;
+        }
+
+        return false;
+    }
+
+    /**
+     * Convert php.ini shorthands to byte
+     *
+     * @author <gilthans dot NO dot SPAM at gmail dot com>
+     * @link   http://php.net/manual/en/ini.core.php#79564
+     *
+     * @param string $v
+     * @return int|string
+     */
+    function _to_byte($v){
+        $l = substr($v, -1);
+        $ret = substr($v, 0, -1);
+        switch(strtoupper($l)){
+            /** @noinspection PhpMissingBreakStatementInspection */
+            case 'P':
+                $ret *= 1024;
+            /** @noinspection PhpMissingBreakStatementInspection */
+            case 'T':
+                $ret *= 1024;
+            /** @noinspection PhpMissingBreakStatementInspection */
+            case 'G':
+                $ret *= 1024;
+            /** @noinspection PhpMissingBreakStatementInspection */
+            case 'M':
+                $ret *= 1024;
+            case 'K':
+                $ret *= 1024;
+            break;
+        }
+        return $ret;
+    }
+}
diff --git a/wiki/lib/plugins/popularity/lang/af/lang.php b/wiki/lib/plugins/popularity/lang/af/lang.php
new file mode 100644
index 0000000..ab5e4f6
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/af/lang.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * Afrikaans language file
+ *
+ */
+$lang['submit']                = 'Stuir Data';
diff --git a/wiki/lib/plugins/popularity/lang/ar/intro.txt b/wiki/lib/plugins/popularity/lang/ar/intro.txt
new file mode 100644
index 0000000..a81fede
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ar/intro.txt
@@ -0,0 +1,9 @@
+====== Popularity Feedback ======
+
+تجمع هذه الأداة بيانات مجهولة الاسم وتسمح لك بردها لمطوري دوكو ويكي. يساعدهم ذلك على معرفة كيفية استخدام دوكو ويكي من المستخدمين والتأكد من أن التطويرات المستقبلية مدعومة بتقارير استخدام حقيقية.
+
+نشجعك على تكرار هذه الخطوة من وقت لآخر لابقاء المطورين على علم بنمو الويكي خاصتك. بياناتك المرسلة مكررا ستحتفظ ب ID بلا اسماء يميزها.
+
+البيانات المرسلة تحتوي معلومات مثل اصدار دوكو ويكي، عدد وحجم صفحاتك وملفاتك، الاضافات المركبة و معلومات عن PHP عندك.
+
+البيانات التي سترسل معروضة صرفا أسفله. رجاء استخدم زر "أرسل البيانات" لنقل المعلومات.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ar/lang.php b/wiki/lib/plugins/popularity/lang/ar/lang.php
new file mode 100644
index 0000000..c3e2186
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ar/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Yaman Hokan <always.smile.yh@hotmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
+ * @author uahello@gmail.com
+ */
+$lang['name']                  = 'رد الشعبية (قد يأخذ بعض الوقت ليحمل)';
+$lang['submit']                = 'أرسل البيانات';
+$lang['autosubmit']            = 'ارسل البيانات آليا كل شهر';
+$lang['submissionFailed']      = 'تعذر إرسال البيانات بسبب الخطأ التالي:';
+$lang['submitDirectly']        = 'يمكنك إرسال البيانات يدويا بارسال النموذج التالي.';
+$lang['autosubmitError']       = 'فشلت آخر محاولة للإرسال، بسبب الخطأ التالي:';
+$lang['lastSent']              = 'أرسلت البيانات';
diff --git a/wiki/lib/plugins/popularity/lang/ar/submitted.txt b/wiki/lib/plugins/popularity/lang/ar/submitted.txt
new file mode 100644
index 0000000..085e3bd
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ar/submitted.txt
@@ -0,0 +1,3 @@
+====== رد الشعبية ======
+
+أرسلت البيانات بنجاح.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/bg/intro.txt b/wiki/lib/plugins/popularity/lang/bg/intro.txt
new file mode 100644
index 0000000..35023b8
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/bg/intro.txt
@@ -0,0 +1,9 @@
+====== Обратна връзка ======
+
+Инструментът събира данни за вашето Wiki и ви позволява да ги изпратите да разработчиците на DokuWiki. Информацията ще им помогне да разберат как DokuWiki се ползва от потребителите и че статистиката е в подкрепа на поетата насока за развитие.
+
+Моля, ползвайте функцията, от време на време, когато уебстраницата ви се разраства, за да информирате разработчиците. Изпратените данни ще бъдат идентифицирани с анонимен идентификатор.
+
+Събираните данни съдържат информация като версията на DokuWiki, броя и размера на вашите страници и файлове, инсталирани приставки и информация за локалната инсталация на PHP.
+
+Данните, които ще бъдат изпратени са изобразени отдолу. Моля, натиснете бутона "Изпращане на данните", за да бъдат изпратени.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/bg/lang.php b/wiki/lib/plugins/popularity/lang/bg/lang.php
new file mode 100644
index 0000000..963b50e
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/bg/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['name']                  = 'Обратна връзка (зареждането изисква време)';
+$lang['submit']                = 'Изпращане на данните';
+$lang['autosubmit']            = 'Автоматично изпращане на данните веднъж в месеца';
+$lang['submissionFailed']      = 'Данните не могат да бъдат изпратени поради следната грешка:';
+$lang['submitDirectly']        = 'Можете да изпратите данните ръчно чрез следния формуляр.';
+$lang['autosubmitError']       = 'Последното автоматично изпращане се провали, поради следната грешка:';
+$lang['lastSent']              = 'Данните са изпратени';
diff --git a/wiki/lib/plugins/popularity/lang/bg/submitted.txt b/wiki/lib/plugins/popularity/lang/bg/submitted.txt
new file mode 100644
index 0000000..3ecd24f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/bg/submitted.txt
@@ -0,0 +1,3 @@
+====== Обратна връзка ======
+
+Данните са изпратени успешно.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ca-valencia/intro.txt b/wiki/lib/plugins/popularity/lang/ca-valencia/intro.txt
new file mode 100644
index 0000000..cf14e08
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ca-valencia/intro.txt
@@ -0,0 +1,9 @@
+====== Retroalimentació de popularitat ======
+
+Esta ferramenta arreplega senyes anònimes sobre el wiki i permet enviar-les als desenrolladors de DokuWiki. Açò els ajuda a comprendre cóm utilisen DokuWiki els usuaris i assegura que les decisions futures de desenroll estaran recolzades per estadístiques d'us real.
+
+L'animem a que repetixca este procés de tant en tant per a mantindre informats als desenrolladors quan el wiki creixca. Els seus conjunts reiteratius de senyes s'identificaran en un ID anònim.
+
+Les senyes arreplegades contenen informació com la versió del DokuWiki, el número i tamany de les pàgines i els archius, plúgins instalats i informació sobre l'instalació de PHP.
+
+Les senyes reals que s'enviaran es mostren ací avall. Per favor, utilise el botó "Enviar senyes" per a transferir l'informació.
diff --git a/wiki/lib/plugins/popularity/lang/ca-valencia/lang.php b/wiki/lib/plugins/popularity/lang/ca-valencia/lang.php
new file mode 100644
index 0000000..1bbe5e5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ca-valencia/lang.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * Valencian language file
+ *
+ * @author Bernat Arlandis <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@llenguaitecnologia.com>
+ */
+$lang['name']                  = 'Retro-alimentació de popularitat (pot tardar un poc en carregar)';
+$lang['submit']                = 'Enviar senyes';
diff --git a/wiki/lib/plugins/popularity/lang/ca/intro.txt b/wiki/lib/plugins/popularity/lang/ca/intro.txt
new file mode 100644
index 0000000..f5ded3f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ca/intro.txt
@@ -0,0 +1,9 @@
+====== Retroacció sobre popularitat ======
+
+Aquesta eina recull dades anònimes sobre el vostre wiki i us permet enviar-les als desenvolupadors de DokuWiki. Això els ajudarà a entendre com utilitzen DokuWiki els usuaris i farà que futures decisions de desenvolupament es prenguin sobre la base d'estadístiques d'ús reals.
+
+Els desenvolupadors de DokuWiki us preguen que repetiu aquest pas de tant en tant per tal de mantenir-los ben informats a mesura que creix el vostre wiki. Els conjunts de dades que envieu al llarg del temps quedaran identificats per un ID anònim.
+
+Les dades que es recullen contenen informació com ara la vostra versió de DokuWiki, el nombre i la mida de pàgines i fitxers, els connectors instal·lats i informació sobre la vostra instal·lació de PHP.
+
+Més avall es mostren les dades crues que s'enviaran. Feu servir el botó "Envia dades" per transferir aquesta informació.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ca/lang.php b/wiki/lib/plugins/popularity/lang/ca/lang.php
new file mode 100644
index 0000000..9c17597
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ca/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carles Bellver <carles.bellver@cent.uji.es>
+ * @author Carles Bellver <carles.bellver@gmail.com>
+ * @author carles.bellver@cent.uji.es
+ * @author daniel@6temes.cat
+ */
+$lang['name']                  = 'Retroacció sobre popularitat (pot trigar una mica a carregar)';
+$lang['submit']                = 'Envia dades';
diff --git a/wiki/lib/plugins/popularity/lang/cs/intro.txt b/wiki/lib/plugins/popularity/lang/cs/intro.txt
new file mode 100644
index 0000000..4b38656
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/cs/intro.txt
@@ -0,0 +1,9 @@
+===== Průzkum používání =====
+
+Tento nástroj jednorázově shromáždí anonymní data o vaší wiki a umožní vám odeslat je vývojářům DokuWiki. To jim pomůže lépe porozumět, jak uživatelé DokuWiki používají, a jejich rozhodnutí při dalším vývoji budou založena na statistikách z reálného používání DokuWiki.
+
+Chcete-li pomoci vývojářům, čas od času, jak vaše wiki poroste, použijte tento nástroj. Vaše data budou pokaždé označena stejným anonymním identifikátorem.
+
+Shromážděná data budou obsahovat informace, jako je instalovaná verze DokuWiki, počet a velikosti stránek a souborů, instalované pluginy a informace o nainstalovaném PHP.
+
+Čistá data, která se odešlou, budou vidět níže. K odeslání informací použijte prosím tlačítko "Odeslat data".
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/cs/lang.php b/wiki/lib/plugins/popularity/lang/cs/lang.php
new file mode 100644
index 0000000..4c6b10b
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/cs/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Bohumir Zamecnik <bohumir@zamecnik.org>
+ * @author tomas <tomas@valenta.cz>
+ * @author Marek Sacha <sachamar@fel.cvut.cz>
+ * @author Lefty <lefty@multihost.cz>
+ * @author Vojta Beran <xmamut@email.cz>
+ * @author zbynek.krivka <zbynek.krivka@seznam.cz>
+ * @author Jakub A. Těšínský (j@kub.cz)
+ * @author mkucera66 <mkucera66@seznam.cz>
+ */
+$lang['name']                  = 'Průzkum používání (může chviličku trvat, než se natáhne)';
+$lang['submit']                = 'Odeslat data';
+$lang['autosubmit']            = 'Automaticky odesílat data jednou měsíčně';
+$lang['submissionFailed']      = 'Data nemohla být odeslána kvůli následující chybě:';
+$lang['submitDirectly']        = 'Data můžete odeslat ručně zasláním následujícího formuláře.';
+$lang['autosubmitError']       = 'Poslední automatické odeslání selhalo kvůli následující chybě:';
+$lang['lastSent']              = 'Data byla odeslána.';
diff --git a/wiki/lib/plugins/popularity/lang/cs/submitted.txt b/wiki/lib/plugins/popularity/lang/cs/submitted.txt
new file mode 100644
index 0000000..ff1f41c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/cs/submitted.txt
@@ -0,0 +1,3 @@
+===== Průzkum používání =====
+
+Data byla úspěšně odeslána.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/cy/intro.txt b/wiki/lib/plugins/popularity/lang/cy/intro.txt
new file mode 100644
index 0000000..187dfe0
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/cy/intro.txt
@@ -0,0 +1,11 @@
+====== Adborth Poblogrwydd ======
+
+Mae'r [[doku>popularity|teclyn]] hwn yn casglu data anhysbys am eich wici ac yn eich galluogi chi i'w anfon yn ôl i ddatblygwyr DokuWiki. Mae hwn yn eu helpu nhw i ddeall sut mae DokuWiki yn cael ei ddefnyddio gan ei ddefnyddwyr ac mae\'n sicrhau bod penderfyniadau datblygu yn y dyfodol yn cael eu cefnogi gan ystadegau defnydd go iawn.
+
+Cewch eich annog i ailadrodd y cam hwn o dro i dro er mwyn hysbysu datblygwyr wrth i'ch wici dyfu. Caiff eich setiau data eilfydd eu hadnabod gan ID anhysbys.
+
+Mae'r data sy'n cael ei gasglu yn cynnwys pethau fel fersiwn eich DokuWiki, nifer a maint eich tudalennau a'ch ffeiliau chi, ategion sydd wedi'u harsefydlu a gwybodaeth parthed eich arsefydliad PHP.
+
+Caiff y data crai i'w anfon ei ddangos isod. Pwyswch fotwm "Anfon Data" i drosglwyddo'r wybodaeth.
+
+
diff --git a/wiki/lib/plugins/popularity/lang/cy/lang.php b/wiki/lib/plugins/popularity/lang/cy/lang.php
new file mode 100644
index 0000000..7bee7bd
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/cy/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+$lang['name']             = 'Adborth Poblogrwydd (gall gymryd ychydig o amser i lwytho)';
+$lang['submit']           = 'Anfon Data';
+$lang['autosubmit']       = 'Anfon data yn awtomatig unwaith y mis';
+$lang['submissionFailed'] = 'Doedd dim modd anfon y data oherwydd y gwall canlynol:';
+$lang['submitDirectly']   = 'Gallwch chi anfon y data gan law gan gyflwyno\'r ffurflen ganlynol.';
+$lang['autosubmitError']  = 'Methodd yr awtogyflwyniad diwethaf oherwydd y gwall canlynol: ';
+$lang['lastSent']         = 'Anfonwyd y data';
diff --git a/wiki/lib/plugins/popularity/lang/cy/submitted.txt b/wiki/lib/plugins/popularity/lang/cy/submitted.txt
new file mode 100644
index 0000000..eb6fd81
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/cy/submitted.txt
@@ -0,0 +1,3 @@
+====== Adborth Poblogrwydd ======
+
+Cafodd y data ei anfon yn llwyddiannus.
diff --git a/wiki/lib/plugins/popularity/lang/da/intro.txt b/wiki/lib/plugins/popularity/lang/da/intro.txt
new file mode 100644
index 0000000..e2122c9
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/da/intro.txt
@@ -0,0 +1,9 @@
+====== Tilbagemelding om popularitet ======
+
+Dette værktøj samler anonyme oplysninge rom din wiki og giver dig mulighed for at sende det tilbage til DokuWiki-udviklerne. Dette hjælper dem til at sætte sig ind i, hvordan DokuWiki bruges af dets brugere og sikrer, at fremtidige beslutninger inden for udviklingen har grund i faktiske brugsstatistikker.
+
+Vi anbefaler dig til at gentage dette trin fra tid til anden for at holde udviklerne underrettede eftersom din wiki vokser. Dine anonyme datasamlinger vil blive tilkendegivet ved et anonymt navn.
+
+Opsamlede data indeholder oplysninger som eksempelvis din udgave af DokuWiki, antallet og størrelsen af dens sider, tilføjede udvidelse og oplysninger om din PHP-opsætning.
+
+De egentlige data, som vil blive sendt, er vist herunder. Brug venligst knappen 'Send Data' for at videresende oplysningerne.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/da/lang.php b/wiki/lib/plugins/popularity/lang/da/lang.php
new file mode 100644
index 0000000..715d6ac
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/da/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kalle Sommer Nielsen <kalle@php.net>
+ * @author Esben Laursen <hyber@hyber.dk>
+ * @author Harith <haj@berlingske.dk>
+ * @author Daniel Ejsing-Duun <dokuwiki@zilvador.dk>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author rasmus <rasmus@kinnerup.com>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ */
+$lang['name']                  = 'Tilbagemelding om popularitet (vil måske tage en del tid at indlæse)';
+$lang['submit']                = 'Send data';
+$lang['autosubmit']            = 'Automatisk sende data en gang om måneden';
+$lang['submissionFailed']      = 'Dataene kunne ikke sendes pga. følgende fejl:';
+$lang['submitDirectly']        = 'Du kan sende dataene manuelt ved at sende følgende formular.';
+$lang['autosubmitError']       = 'Den sidste automatiske fremsendelse fejlede pga. følgende fejl:';
+$lang['lastSent']              = 'Dataene er blevet sendt.';
diff --git a/wiki/lib/plugins/popularity/lang/da/submitted.txt b/wiki/lib/plugins/popularity/lang/da/submitted.txt
new file mode 100644
index 0000000..88e9ba0
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/da/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitetsfeedback ======
+
+Dataene er blevet sendt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/de-informal/intro.txt b/wiki/lib/plugins/popularity/lang/de-informal/intro.txt
new file mode 100644
index 0000000..a414b66
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/de-informal/intro.txt
@@ -0,0 +1,9 @@
+===== Rückmeldung zur Zufriedenheit =====
+
+Dieses Werkzeug sammelt anonym Daten über dein Wiki und erlaubt es dir diese an die Entwickler von DokuWiki zu senden. Dies hilft ihnen zu verstehen, wie DokuWiki von den Benutzern verwendet wird und stellt somit sicher, dass Entscheidungen für zukünftige Entwicklungen mit reellen Nutzungsstatistiken belegbar sind.
+
+Bitte wiederhole diesen Schritt von Zeit zu Zeit, um die Entwickler zu informieren wenn dein Wiki wächst. Deine aktuelleren Datensätze werden anhand einer anonymen Identifikationsnummer zugeordnet.
+
+Die gesammelten Daten enthalten Informationen über deine Version von DokuWiki, die Anzahl und Größe der Seiten und Dateien, installierte Erweiterungen und Informationen über deine PHP-Version.
+
+Die Rohdaten die gesendet werden, werden unten gezeigt. Bitte nutze den "Sende Daten" Knopf um die Informationen zu übermitteln.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/de-informal/lang.php b/wiki/lib/plugins/popularity/lang/de-informal/lang.php
new file mode 100644
index 0000000..ad533ab
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/de-informal/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Alexander Fischer <tbanus@os-forge.net>
+ * @author Juergen Schwarzer <jschwarzer@freenet.de>
+ * @author Marcel Metz <marcel_metz@gmx.de>
+ * @author Matthias Schulte <post@lupo49.de>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Volker Bödker <volker@boedker.de>
+ */
+$lang['name']                  = 'Popularitätsrückmeldung (kann eine Weile dauern, bis es fertig geladen wurde)';
+$lang['submit']                = 'Sende Daten';
+$lang['autosubmit']            = 'Daten einmal im Monat automatisch senden';
+$lang['submissionFailed']      = 'Die Daten konnten aufgrund des folgenden Fehlers nicht gesendet werden: ';
+$lang['submitDirectly']        = 'Du kannst die Daten durch Betätigung des Buttons manuell versenden.';
+$lang['autosubmitError']       = 'Beim letzten automatischen Versuch die Daten zu senden, ist folgender Fehler aufgetreten: ';
+$lang['lastSent']              = 'Die Daten wurden gesendet';
diff --git a/wiki/lib/plugins/popularity/lang/de-informal/submitted.txt b/wiki/lib/plugins/popularity/lang/de-informal/submitted.txt
new file mode 100644
index 0000000..e7b45b5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/de-informal/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitäts-Feedback ======
+
+Die Daten wurden erfolgreich versandt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/de/intro.txt b/wiki/lib/plugins/popularity/lang/de/intro.txt
new file mode 100644
index 0000000..ba88ce2
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/de/intro.txt
@@ -0,0 +1,11 @@
+====== Popularitäts-Feedback ======
+
+Dieses [[doku>popularity|Werkzeug]] sammelt verschiedene anonyme Daten über Ihr Wiki und erlaubt es Ihnen, diese an die DokuWiki-Entwickler zurückzusenden. Diese Daten helfen den Entwicklern besser zu verstehen, wie DokuWiki eingesetzt wird und stellt sicher, dass zukünftige, die Weiterentwicklung von DokuWiki betreffende, Entscheidungen auf Basis echter Benutzerdaten getroffen werden.
+
+Bitte wiederholen Sie das Versenden der Daten von Zeit zu Zeit, um die Entwickler über das Wachstum Ihres Wikis auf dem Laufenden zu halten. Ihre wiederholten Dateneinsendungen werden über eine anonyme ID identifiziert.
+
+Die gesammelten Daten enthalten Informationen wie Ihre DokuWiki-Version, die Anzahl und Größe Ihrer Seiten und Dateien, installierte Plugins und die eingesetzte PHP-Installation.
+
+Die zu übertragenen Roh-Daten werden in der untenstehenden Box angezeigt. Bitte drücken Sie die "Daten senden" Schaltfläche um die Information zu übertragen.
+
+
diff --git a/wiki/lib/plugins/popularity/lang/de/lang.php b/wiki/lib/plugins/popularity/lang/de/lang.php
new file mode 100644
index 0000000..2394581
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/de/lang.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Leo Moll <leo@yeasoft.com>
+ * @author Florian Anderiasch <fa@art-core.org>
+ * @author Robin Kluth <commi1993@gmail.com>
+ * @author Arne Pelka <mail@arnepelka.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Dirk Einecke <dirk@dirkeinecke.de>
+ * @author Blitzi94 <Blitzi94@gmx.de>
+ * @author Robert Bogenschneider <robog@GMX.de>
+ * @author Niels Lange <niels@boldencursief.nl>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['name']                  = 'Popularitäts-Feedback (längere Ladezeit möglich)';
+$lang['submit']                = 'Daten senden';
+$lang['autosubmit']            = 'Daten einmal im Monat automatisch senden';
+$lang['submissionFailed']      = 'Die Daten konnten aufgrund des folgenden Fehlers nicht gesendet werden: ';
+$lang['submitDirectly']        = 'Sie können die Daten durch Betätigung des Buttons manuell versenden.';
+$lang['autosubmitError']       = 'Beim letzten automatischen Versuch die Daten zu senden, ist folgender Fehler aufgetreten: ';
+$lang['lastSent']              = 'Die Daten wurden gesendet';
diff --git a/wiki/lib/plugins/popularity/lang/de/submitted.txt b/wiki/lib/plugins/popularity/lang/de/submitted.txt
new file mode 100644
index 0000000..e7b45b5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/de/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitäts-Feedback ======
+
+Die Daten wurden erfolgreich versandt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/el/intro.txt b/wiki/lib/plugins/popularity/lang/el/intro.txt
new file mode 100644
index 0000000..22d5429
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/el/intro.txt
@@ -0,0 +1,9 @@
+====== Αναφορά Δημοτικότητας ======
+
+Το εργαλείο αυτό συλλέγει ανώνυμα δεδομένα για το wiki σας και σας επιτρέπει να τα στείλετε στους δημιουργούς της εφαρμογής DokuWiki. Αυτό τους βοηθά να καταλάβουν με ποιούς τρόπους χρησιμοποιείται η εφαρμογή DokuWiki από τους χρήστες της και εξασφαλίζει ότι οι μελλοντικές αποφάσεις σχεδίασης θα στηρίζονται σε πραγματικά δεδομένα χρήσης.
+
+Σας προτρέπουμε να επαναλαμβάνετε αυτή τη διαδικασία κατά διαστήματα ώστε οι δημιουργοί της εφαρμογής DokuWiki να μένουν ενήμεροι όταν το wiki σας μεγαλώνει. Τα διαδοχικά σύνολα δεδομένων που αποστέλλετε αναγνωρίζονται από έναν ανώνυμο κωδικό.
+
+Τα δεδομένα περιέχουν πληροφορίες όπως η έκδοση του DokuWiki σας, ο αριθμός και το μέγεθος των σελίδων και αρχείων σας, οι εγκατεστημένες επεκτάσεις και στοιχεία για την PHP που χρησιμοποιείτε.
+
+Τα ακριβή δεδομένα τα οποία θα αποσταλούν εμφανίζονται παρακάτω. Παρακαλούμε πατήστε στο κουμπί "Αποστολή Δεδομένων" για να τα αποστείλετε.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/el/lang.php b/wiki/lib/plugins/popularity/lang/el/lang.php
new file mode 100644
index 0000000..fe38a98
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/el/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Konstantinos Koryllos <koryllos@gmail.com>
+ * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ */
+$lang['name']                  = 'Αναφορά Δημοτικότητας (ίσως αργήσει λίγο να εμφανιστεί)';
+$lang['submit']                = 'Αποστολή Δεδομένων';
+$lang['autosubmit']            = 'Να αποστέλονται τα δεδομένα αυτόματα μια φορά το μήνα.';
+$lang['submissionFailed']      = 'Τα δεδομένα δεν ήταν δυνατό να αποσταλλούν λόγω του παρακάτω σφάλματος:';
+$lang['submitDirectly']        = 'Μπορείτε να αποστείλλετε τα δεδομένα χειροκίνητα με την υποβολή της παρακάτω φόρμας.';
+$lang['autosubmitError']       = 'Η τελευταία αυτόματη υποβολή των δεδομένων απέτυχε με το παρακάτω μήνυμα σφάλματος:';
+$lang['lastSent']              = 'Τα δεδομένα έχουν σταλεί.';
diff --git a/wiki/lib/plugins/popularity/lang/el/submitted.txt b/wiki/lib/plugins/popularity/lang/el/submitted.txt
new file mode 100644
index 0000000..8004f99
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/el/submitted.txt
@@ -0,0 +1,3 @@
+====== Αποτέλεσμα Υποβολής Δημοσιότητας ======
+
+Τα δεδομένα στάλθηκαν επιτυχώς.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/en/intro.txt b/wiki/lib/plugins/popularity/lang/en/intro.txt
new file mode 100644
index 0000000..e1d6d94
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/en/intro.txt
@@ -0,0 +1,11 @@
+====== Popularity Feedback ======
+
+This [[doku>popularity|tool]] gathers anonymous data about your wiki and allows you to send it back to the DokuWiki developers. This helps them to understand them how DokuWiki is used by its users and makes sure future development decisions are backed up by real world usage statistics.
+
+You are encouraged to repeat this step from time to time to keep developers informed when your wiki grows. Your repeated data sets will be identified by an anonymous ID.
+
+Data collected contains information like your DokuWiki version, the number and size of your pages and files, installed plugins and information about your PHP install.
+
+The raw data that will be send is shown below. Please use the "Send Data" button to transfer the information.
+
+
diff --git a/wiki/lib/plugins/popularity/lang/en/lang.php b/wiki/lib/plugins/popularity/lang/en/lang.php
new file mode 100644
index 0000000..af6797c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/en/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+$lang['name']             = 'Popularity Feedback (may take some time to load)';
+$lang['submit']           = 'Send Data';
+$lang['autosubmit']       = 'Automatically send data once a month';
+$lang['submissionFailed'] = 'The data couldn\'t be sent due to the following error:';
+$lang['submitDirectly']   = 'You can send the data manually by submitting the following form.';
+$lang['autosubmitError']  = 'The last autosubmit failed, because of the following error: ';
+$lang['lastSent']         = 'The data has been sent';
diff --git a/wiki/lib/plugins/popularity/lang/en/submitted.txt b/wiki/lib/plugins/popularity/lang/en/submitted.txt
new file mode 100644
index 0000000..30f2784
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/en/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularity Feedback ======
+
+The data has been sent succesfully.
diff --git a/wiki/lib/plugins/popularity/lang/eo/intro.txt b/wiki/lib/plugins/popularity/lang/eo/intro.txt
new file mode 100644
index 0000000..fd37efc
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/eo/intro.txt
@@ -0,0 +1,9 @@
+====== Populareca enketo ======
+
+Tiu ĉi ilo prenas anoniman datenaron pri via vikio kaj ebligas al vi sendi ĝin reen al la kodumantoj de DokuWiki. Tio helpas al ili kompreni kiel DokuWiki estas uzata kaj certigas ke estontaj disvolviĝaj decidoj estos subtenataj de statistikoj pri reala aplikado.
+
+Ni instigas vin ripeti tiun agon iam kaj tiam por teni la disvolvigantojn informitaj, dum via vikio kreskas. Viaj resendotaj datenaroj estos identigitaj per anonima ID.
+
+La kolektita datumaro enhavas informon pri versio de la instalita DokuWiki, nombro kaj grandeco de la paĝoj kaj dosieroj, instalitaj kromaĵoj kaj informoj pri via PHP-sistemo.
+
+La kruda datumaro sendota estas montrita sube. Bonvolu uzi la butonon "Sendi datumaron" por transŝuti tiun informaron.
diff --git a/wiki/lib/plugins/popularity/lang/eo/lang.php b/wiki/lib/plugins/popularity/lang/eo/lang.php
new file mode 100644
index 0000000..a0492c6
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/eo/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipo Kastro <fefcas@gmail.com>
+ * @author Robert Bogenschneider <robog@gmx.de>
+ * @author Erik Pedersen <erik pedersen@shaw.ca>
+ */
+$lang['name']                  = 'Populareca enketo (eble la ŝargo prokrastos iomete)';
+$lang['submit']                = 'Sendi datumaron';
+$lang['autosubmit']            = 'Aŭtomate sendi datumaron monate';
+$lang['submissionFailed']      = 'La datumaro ne povis esti sendata tial:';
+$lang['submitDirectly']        = 'Vi povas sendi vi mem la datumaron per la sekva informilo.';
+$lang['autosubmitError']       = 'La lasta aŭtomata sendo malsukcesis, tial:';
+$lang['lastSent']              = 'La datumaro sendiĝis';
diff --git a/wiki/lib/plugins/popularity/lang/eo/submitted.txt b/wiki/lib/plugins/popularity/lang/eo/submitted.txt
new file mode 100644
index 0000000..095439b
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/eo/submitted.txt
@@ -0,0 +1,3 @@
+====== Enketo pri Populareco ======
+
+La datumoj sendiĝis sukcese.
diff --git a/wiki/lib/plugins/popularity/lang/es/intro.txt b/wiki/lib/plugins/popularity/lang/es/intro.txt
new file mode 100644
index 0000000..cc776a3
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/es/intro.txt
@@ -0,0 +1,10 @@
+====== Retroalimentación (feedback) del plugin Popularity ======
+
+Esta herramienta recopila datos anónimos sobre tu wiki y te permite enviarlos a los desarrolladores de DokuWiki. Esto les ayuda a comprender cómo usan DokuWiki sus usuarios y asegura que las decisiones del desarrollo futuro del programa estén basadas en las estadísticas de uso del mundo real.
+
+Te animamos a repetir este paso de vez en cuando para mantener informados a los desarrolladores a medida que tu wiki crece. Tus paquetes repetidos de datos se identifican por un ID anónimo.
+
+Los datos recopilados contienen información como tu versión de DokuWiki, el número y tamaño de tus páginas y ficheros, plugins instalados e información sobre tu instalación de PHP.
+
+Los datos que se enviarán se muestran más abajo. Por favor, usa el botón "Enviar Datos" para transferir la información.
+
diff --git a/wiki/lib/plugins/popularity/lang/es/lang.php b/wiki/lib/plugins/popularity/lang/es/lang.php
new file mode 100644
index 0000000..2498bcc
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/es/lang.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author oliver <oliver@samera.com.py>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Manuel Meco <manuel.meco@gmail.com>
+ * @author VictorCastelan <victorcastelan@gmail.com>
+ * @author Jordan Mero <hack.jord@gmail.com>
+ * @author Felipe Martinez <metalmartinez@gmail.com>
+ * @author Javier Aranda <internet@javierav.com>
+ * @author Zerial <fernando@zerial.org>
+ * @author Marvin Ortega <maty1206@maryanlinux.com>
+ * @author Daniel Castro Alvarado <dancas2@gmail.com>
+ * @author Fernando J. Gómez <fjgomez@gmail.com>
+ * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author emezeta <emezeta@infoprimo.com>
+ * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mercè López <mercelz@gmail.com>
+ */
+$lang['name']                  = 'Retroinformación (Feedback) plugin Popularity';
+$lang['submit']                = 'Enviar datos';
+$lang['autosubmit']            = 'Enviar automáticamente datos una vez al mes';
+$lang['submissionFailed']      = 'Los datos no se pudo enviar debido al error siguiente:';
+$lang['submitDirectly']        = 'Puede enviar los datos de forma manual mediante la presentación de la siguiente forma.';
+$lang['autosubmitError']       = 'El último auto no pudo presentar, debido al error siguiente:';
+$lang['lastSent']              = 'Los datos se han enviado';
diff --git a/wiki/lib/plugins/popularity/lang/es/submitted.txt b/wiki/lib/plugins/popularity/lang/es/submitted.txt
new file mode 100644
index 0000000..bb1754c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/es/submitted.txt
@@ -0,0 +1,3 @@
+====== Retroinformación Popularity ======
+
+Los datos se han enviado con éxito.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/eu/intro.txt b/wiki/lib/plugins/popularity/lang/eu/intro.txt
new file mode 100644
index 0000000..2d2846f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/eu/intro.txt
@@ -0,0 +1,9 @@
+====== Popularitate Feedback-a ======
+
+Tresna honek datu anonimoak hartzen ditu zure wiki-ari buruz eta hauek DokuWiki garatzaileei bidaltzea ahalbidetzen dizu. Honek, DokuWiki erabiltzaileek nola erabiltzen duten ulertzen laguntzen die, etorkizuneko garapen erabakiak mundu errealeko erabilpen estatistikekin indartuz.
+
+Pauso hau denboran zehar errepikatzera animatzen zaitugu, modu horretan garatzaileak informatuz zure wiki-a handitzen den ahala. Zure datu bidalketak identifikatzaile anonimo batez identifikatuak izango dira.
+
+Jasotako datuek daramaten informazioa DokuWiki bertsioa, zure orri eta fitxategien kopuru eta tamaina, instalatutako plugin-ak, zure PHP instalazioari buruzko informazioa eta antzerako informazioa da.
+
+Bidaliko diren prozesatu gabeko datuak behean erakusten dira. Mesedez, erabili "Datuak Bidali" botoia informazioa bidaltzeko.
diff --git a/wiki/lib/plugins/popularity/lang/eu/lang.php b/wiki/lib/plugins/popularity/lang/eu/lang.php
new file mode 100644
index 0000000..4f0b667
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/eu/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Inko Illarramendi <inko.i.a@gmail.com>
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ */
+$lang['name']                  = 'Popularitate Feedback-a (denbora dezente iraun dezake kargatzen)';
+$lang['submit']                = 'Datuak Bidali';
+$lang['autosubmit']            = 'Automatikoki bidali informazioa hilabetean behin';
+$lang['submissionFailed']      = 'Informazioa ezin izan da bidali ondorengo errorea dela eta:';
+$lang['submitDirectly']        = 'Informazioa eskuz bidali dezakezu ondorengo formularioa bidaliz.';
+$lang['autosubmitError']       = 'Azken bidalketa automatikoak huts egin zuen ondorengo errorea dela eta:';
+$lang['lastSent']              = 'Informazioa bidalia izan da';
diff --git a/wiki/lib/plugins/popularity/lang/eu/submitted.txt b/wiki/lib/plugins/popularity/lang/eu/submitted.txt
new file mode 100644
index 0000000..94c81a5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/eu/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitate Feedback-a ======
+
+Informazioa arrakastaz bidalia izan da.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/fa/intro.txt b/wiki/lib/plugins/popularity/lang/fa/intro.txt
new file mode 100644
index 0000000..e8521af
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fa/intro.txt
@@ -0,0 +1,9 @@
+====== بازخورد محبوبیت ======
+
+این ابزار اطلاعات ناشناسی از ویکی شما را برای توسعه‌دهندگان DokuWiki ارسال می‌کند. این اطلاعات به توسعه‌دهندگان کمک می‌کند تا بفهمند کاربران DokuWiki از آن چگونه استفاده می‌کنند تا بتوانند در نسخه‌های آتی، تصمیمات بهتری اتخاذ کنند.
+
+ما امیدواریم شما این حرکت را در زمان‌های مختلف که ویکی‌تان بزرگ‌تر شد، انجام دهید و این اطلاعات ناشناس ارسال خواهد شد.
+
+اطلاعات جمع‌آوری شده حامل اطلاعاتی مثل نسخه‌ی DokuWiki، تعداد و حجم صفحات و فایل‌ها، افزونه‌های نصب شده و اطلاعات PHP سرور می‌باشد.
+
+اطلاعات خامی که ارسال می‌شود در زیر آمده است. خواهشمندیم از دکمه‌ی «ارسال اطلاعات» برای فرستاده شدن استفاده کنید.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/fa/lang.php b/wiki/lib/plugins/popularity/lang/fa/lang.php
new file mode 100644
index 0000000..e6c642d
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fa/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author behrad eslamifar <behrad_es@yahoo.com)
+ * @author Mohsen Firoozmandan <info@mambolearn.com>
+ * @author omidmr@gmail.com
+ * @author Omid Mottaghi <omidmr@gmail.com>
+ * @author Mohammad Reza Shoaei <shoaei@gmail.com>
+ * @author Milad DZand <M.DastanZand@gmail.com>
+ * @author AmirH Hassaneini <mytechmix@gmail.com>
+ */
+$lang['name']                  = 'بازخورد محبوبیت (ممکن است اندکی زمان ببرد)';
+$lang['submit']                = 'ارسال اطلاعات';
+$lang['autosubmit']            = 'ارسال خودکار اطلاعات به صورت ماهیانه';
+$lang['submissionFailed']      = 'اطلاعات به علت بروز خطای زیر قابل ارسال نیستند:';
+$lang['submitDirectly']        = 'شما میتوانید اطلاعات را با تکمیل این فرم به صورت دستی ارسال کنید.';
+$lang['autosubmitError']       = 'آخرین ارسال خودکار با خطای مواجه شد, به علت زیر:';
+$lang['lastSent']              = 'اطلاعات ارسال شد.';
diff --git a/wiki/lib/plugins/popularity/lang/fa/submitted.txt b/wiki/lib/plugins/popularity/lang/fa/submitted.txt
new file mode 100644
index 0000000..63eec47
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fa/submitted.txt
@@ -0,0 +1,2 @@
+====== بازخورد محبوبیت ======
+اطلاعات ارسال شد.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/fi/intro.txt b/wiki/lib/plugins/popularity/lang/fi/intro.txt
new file mode 100644
index 0000000..f68c2b8
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fi/intro.txt
@@ -0,0 +1,9 @@
+====== Suosion palaute ======
+
+Tämä työkalu kerää tietoja wikistäsi ilman tunnistetietoja, jotka voit lähettää DokuWikin kehittäjille. Tämä auttaa heitä ymmärtämään, kuinka DokuWikiä käytetään ja varmistaa, että tulevaisuuden kehityspäätökset tehdään tosielämän käyttökokemusten perusteella.
+
+Toivomme sinun toistavan tämän aiheen silloin tällöin, jotta kehittäjät pysyvät tietoisina, miten wikisi kehittyy. Uudelleenlähettämäsi tiedot identifioidaan tunnisteella, jota ei voida jäljittää takaisin sinuun.
+
+Kerätty tieto pitää sisällään tietoa esimerkiksi DokuWikisi versiosta, sivujen koosta ja lukumäärästä, asennetuista liitännäisistä, sekä PHP asennuksestasi.
+
+Raaka tieto, joka lähetetään näkyy alla. Lähetä tieto painamalla "Lähetä tiedot" nappia.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/fi/lang.php b/wiki/lib/plugins/popularity/lang/fi/lang.php
new file mode 100644
index 0000000..ec0fc40
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fi/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Otto Vainio <otto@valjakko.net>
+ * @author Teemu Mattila <ghcsystems@gmail.com>
+ * @author Sami Olmari <sami@olmari.fi>
+ */
+$lang['name']                  = 'Suosion palaute (voi kestää jonkun aikaa latautua)';
+$lang['submit']                = 'Lähetä tiedot';
+$lang['autosubmit']            = 'Lähetä tiedot automaattisesti kerran kuussa';
+$lang['submissionFailed']      = 'Tietoja ei voitu lähettää seuraavan virheen vuoksi:';
+$lang['submitDirectly']        = 'Voit lähettää tiedot käsin seuraavan kaavakkeen avulla';
+$lang['autosubmitError']       = 'Edellinen automaattilähetys epäonnistui seuraavan virheen vuoksi:';
+$lang['lastSent']              = 'Tiedot on lähetetty';
diff --git a/wiki/lib/plugins/popularity/lang/fi/submitted.txt b/wiki/lib/plugins/popularity/lang/fi/submitted.txt
new file mode 100644
index 0000000..31059c8
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fi/submitted.txt
@@ -0,0 +1,3 @@
+====== Suosion palaute ======
+
+Tiedot lähetettiin onnistuneesti.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/fr/intro.txt b/wiki/lib/plugins/popularity/lang/fr/intro.txt
new file mode 100644
index 0000000..5985234
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fr/intro.txt
@@ -0,0 +1,10 @@
+====== Enquête de popularité ======
+
+Cet [[doku>popularity|outil]] collecte des données anonymes concernant votre wiki et vous permet de les expédier aux développeurs de DokuWiki. Ceci leur permet de mieux comprendre comment DokuWiki est utilisé par ses utilisateurs et d'orienter les décisions sur les développements futurs en tenant compte des statistiques d'usage réel.
+
+Vous êtes encouragé à répéter cette opération de temps à autres afin de tenir informés les développeurs de l'évolution de votre wiki. L'ensemble de vos contributions seront recensées via un identifiant anonyme.
+
+Les données collectées contiennent des informations telles votre version de DokuWiki, le nombre et la taille de vos pages et fichiers, les extensions installées ainsi que des informations sur la version de PHP installée.
+
+Les données brutes qui sont envoyées sont affichées ci dessous. Merci d'utiliser le bouton « Envoyer les données » pour expédier l'information.
+
diff --git a/wiki/lib/plugins/popularity/lang/fr/lang.php b/wiki/lib/plugins/popularity/lang/fr/lang.php
new file mode 100644
index 0000000..1e94df4
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fr/lang.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guy Brand <gb@unistra.fr>
+ * @author stephane.gully <stephane.gully@gmail.com>
+ * @author Guillaume Turri <guillaume.turri@gmail.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author olivier duperray <duperray.olivier@laposte.net>
+ * @author Vincent Feltz <psycho@feltzv.fr>
+ * @author Philippe Bajoit <philippe.bajoit@gmail.com>
+ * @author Florian Gaub <floriang@floriang.net>
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Olivier DUVAL <zorky00@gmail.com>
+ * @author Anael Mobilia <contrib@anael.eu>
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ */
+$lang['name']                  = 'Enquête de popularité (peut nécessiter un certain temps pour être chargée)';
+$lang['submit']                = 'Envoyer les données';
+$lang['autosubmit']            = 'Envoyer les données automatiquement une fois par mois';
+$lang['submissionFailed']      = 'Les données ne peuvent pas être expédiées à cause des erreurs suivantes :';
+$lang['submitDirectly']        = 'Vous pouvez envoyer les données manuellement en soumettant ce formulaire.';
+$lang['autosubmitError']       = 'La dernière soumission automatique a échoué pour les raisons suivantes :';
+$lang['lastSent']              = 'Les données ont été expédiées';
diff --git a/wiki/lib/plugins/popularity/lang/fr/submitted.txt b/wiki/lib/plugins/popularity/lang/fr/submitted.txt
new file mode 100644
index 0000000..edb5e21
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/fr/submitted.txt
@@ -0,0 +1,3 @@
+====== Enquête de popularité ======
+
+Les données ont été expédiées avec succès.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/gl/intro.txt b/wiki/lib/plugins/popularity/lang/gl/intro.txt
new file mode 100644
index 0000000..72f03e0
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/gl/intro.txt
@@ -0,0 +1,10 @@
+====== Resposta de Popularidade ======
+
+Esta ferramenta recolle datos anónimos verbo do teu wiki e permíteche enviarllos aos desenvolvedores do DokuWiki. Isto axudaralles a ter unha idea do xeito en que se emprega o DokuWiki por parte dos seus usuarios, e asegura que as decisións de desenvolvemento futuro coincidan coas estatísticas de uso no mundo real.
+
+Animámoste a levar a cabo este proceso de cando en vez para manteres informados aos desenvolvedores a medida que o teu wiki vaia medrando. Os teus xogos de datos repetidos seran identificados por un ID anónimo.
+
+Os datos recompilados conteñen información como a versión do teu Dokuwiki, o número e tamaño das túas páxinas e arquivos, as extensións instaladas e información verbo da túa instalación do PHP.
+
+Os datos en bruto que serán enviados amósanse embaixo. Por favor, emprega o botón "Enviar Datos" para transferires a información.
+
diff --git a/wiki/lib/plugins/popularity/lang/gl/lang.php b/wiki/lib/plugins/popularity/lang/gl/lang.php
new file mode 100644
index 0000000..86cd34d
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/gl/lang.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Galician language file
+ *
+ * @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['name']                  = 'Resposta de Popularidade (pode demorar un tempo a cargar)';
+$lang['submit']                = 'Enviar Datos';
+$lang['autosubmit']            = 'Enviar datos automáticamente unha vez por mes';
+$lang['submissionFailed']      = 'Os datos non se poden enviar debido ao seguinte erro:';
+$lang['submitDirectly']        = 'Podes enviar os datos de forma manual co seguinte formulario.';
+$lang['autosubmitError']       = 'O último envío automático fallou debido ao seguinte erro:';
+$lang['lastSent']              = 'Os datos foron enviados';
diff --git a/wiki/lib/plugins/popularity/lang/gl/submitted.txt b/wiki/lib/plugins/popularity/lang/gl/submitted.txt
new file mode 100644
index 0000000..0dec55e
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/gl/submitted.txt
@@ -0,0 +1,3 @@
+====== Resposta de Popularidade ======
+
+Os datos foron enviados satisfactoriamente.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/he/intro.txt b/wiki/lib/plugins/popularity/lang/he/intro.txt
new file mode 100644
index 0000000..1f2e318
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/he/intro.txt
@@ -0,0 +1,9 @@
+====== משוב פופלריות ======
+
+כלי זה אוסף מידע אנונימי אודות הויקי שלך ומאפשר לך לשלוח אותו חזרה למפתחי דוקוויקי. מידע זה יסיע להם להבין את השימוש שעושים משתמשי דוקוויקי במערכת ויבטיח שהחלטות עתידיות לגבי הפיתוח יתבססו על סטטיסטיקות שימוש אמיתי.
+
+נודה אם תחזור על הפעולה מהעת לעת כדי לודא המפתחים מיודעים כשהויקי שלך גדל. המידע שישלח יזוהה על ידי תג אנונימי.
+
+המידע שנאסף כולל פרטים כמו גרסת הדוקוויקי, מספר וגודל הדפים והקבצים שלך, הרחבות מותקנות ומידע אודות התקנת ה-PHP שלך.
+
+המידע הגולמי שישלח מופיע מטה. נא השתמש בכפתור "שלח מידע" כדי להעבירו.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/he/lang.php b/wiki/lib/plugins/popularity/lang/he/lang.php
new file mode 100644
index 0000000..e9f75b7
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/he/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Dotan Kamber <kamberd@yahoo.com>
+ * @author Moshe Kaplan <mokplan@gmail.com>
+ * @author Yaron Yogev <yaronyogev@gmail.com>
+ * @author Yaron Shahrabani <sh.yaron@gmail.com>
+ */
+$lang['name']                  = 'משוב פופולריות (יתכן זמן טעינה ארוך)';
+$lang['submit']                = 'שלח מידע';
diff --git a/wiki/lib/plugins/popularity/lang/hi/lang.php b/wiki/lib/plugins/popularity/lang/hi/lang.php
new file mode 100644
index 0000000..c818c7a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hi/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Abhinav Tyagi <abhinavtyagi11@gmail.com>
+ * @author yndesai@gmail.com
+ */
+$lang['submit']                = 'डेटा भेजे';
diff --git a/wiki/lib/plugins/popularity/lang/hr/intro.txt b/wiki/lib/plugins/popularity/lang/hr/intro.txt
new file mode 100644
index 0000000..c7c3eba
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hr/intro.txt
@@ -0,0 +1,7 @@
+====== Povratna informacija o popularnosti ======
+
+Ovaj [[doku>popularity|alat]] prikupla anonimne podatke o Vašem wiki i omogućava Vam da ih pošaljete DokuWiki razvojnom timu. To im pomaže da bolje razumiju kako korisnici koriste DokuWiki i osigurava kvalitetnije odluke o budućem razvoju u skladu s stvarnim korištenjem.
+
+Pozivamo Vas da ponavljate ovaj korak s vremena na vrijeme kako bi razvojni tim bio obaviješten o razvoju Vašeg wiki-a. Vaši novi podaci biti će identificirani putem anonimne oznake.
+
+Prikupljeni podatci sadrže informacije kako što je DokuWiki inačica, broj i veličina vaših stranica i datoteka, ugrađeni dodatci i PHP-u koji se koristi. Sirovi podatci koji će biti poslani su prikazani niže. Molim koristite gumb "Pošalji podatke" da bi ste poslali ove informacije.
diff --git a/wiki/lib/plugins/popularity/lang/hr/lang.php b/wiki/lib/plugins/popularity/lang/hr/lang.php
new file mode 100644
index 0000000..3dd9f11
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hr/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['name']                  = 'Povratna informacija o popularnosti (može proteći neko vrijeme dok se učita)';
+$lang['submit']                = 'Pošalji podatke';
+$lang['autosubmit']            = 'Šalji podatke automatski jednom mjesečno';
+$lang['submissionFailed']      = 'Podatci ne mogu biti poslani zbog slijedeće greške:';
+$lang['submitDirectly']        = 'Podatke možete poslati ručno potvrđivanjem forme u nastavku.';
+$lang['autosubmitError']       = 'Zadnje automatsko slanje nije uspješno zbog slijedeće greške:';
+$lang['lastSent']              = 'Podatci su poslani';
diff --git a/wiki/lib/plugins/popularity/lang/hr/submitted.txt b/wiki/lib/plugins/popularity/lang/hr/submitted.txt
new file mode 100644
index 0000000..8c841b3
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hr/submitted.txt
@@ -0,0 +1,3 @@
+====== Povratna informacija o popularnosti ======
+
+Podatci su uspješno poslani.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/hu/intro.txt b/wiki/lib/plugins/popularity/lang/hu/intro.txt
new file mode 100644
index 0000000..17bb6fc
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hu/intro.txt
@@ -0,0 +1,9 @@
+====== Visszajelzés a DokuWiki használatáról ======
+
+Ez az eszköz anonimizált adatokat gyűjt a wikidről, és lehetővé teszi, hogy elküldd a DokuWiki fejlesztőinek. Ez segít meglátni, hogy a felhasználók hogyan használják a DokuWikijüket, ezáltal biztosítja, hogy a későbbi fejlesztési döntések hátterében valós használati statisztikák álljanak.
+
+Szeretnénk megkérni, hogy időről időre ismételd meg ezt a műveletet, hogy a fejlesztők értesülhessenek, hogyan nő a wikid mérete. Az ismételt adatküldéseid egy anoním ID-vel lesznek azonosítva.
+
+Ilyen és hasonló információkat gyűjtünk: DokuWiki verziószáma, a lapok, fájlok mérete és darabszáma, feltelepített bővítmények, PHP installáció adatai.
+
+Az elküldendő nyers adat lent látható. Kérjük, az "Adatok elküldése" gombbal juttasd el hozzánk!
diff --git a/wiki/lib/plugins/popularity/lang/hu/lang.php b/wiki/lib/plugins/popularity/lang/hu/lang.php
new file mode 100644
index 0000000..213d226
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hu/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Sandor TIHANYI <stihanyi+dw@gmail.com>
+ * @author Siaynoq Mage <siaynoqmage@gmail.com>
+ * @author schilling.janos@gmail.com
+ * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
+ * @author Sándor TIHANYI <stihanyi+dw@gmail.com>
+ * @author David Szabo <szabo.david@gyumolcstarhely.hu>
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['name']                  = 'Visszajelzés a DokuWiki használatáról (sok időt vehet igénybe a betöltése)';
+$lang['submit']                = 'Adatok elküldése';
+$lang['autosubmit']            = 'Adatok havonkénti automatikus elküldése.';
+$lang['submissionFailed']      = 'Az adatok a következő hiba miatt nem kerültek elküldésre:';
+$lang['submitDirectly']        = 'Az adatokat a következő űrlap segítségével lehet elküldeni.';
+$lang['autosubmitError']       = 'Az adatok a következő hiba miatt nem kerültek automatikusan elküldésre:';
+$lang['lastSent']              = 'Az adatokat elküldtük.';
diff --git a/wiki/lib/plugins/popularity/lang/hu/submitted.txt b/wiki/lib/plugins/popularity/lang/hu/submitted.txt
new file mode 100644
index 0000000..30ab8bd
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/hu/submitted.txt
@@ -0,0 +1,3 @@
+====== Visszajelzés a DokuWiki használatáról ======
+
+Az adatokat sikeresen elküldtük.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ia/intro.txt b/wiki/lib/plugins/popularity/lang/ia/intro.txt
new file mode 100644
index 0000000..d31c365
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ia/intro.txt
@@ -0,0 +1,9 @@
+====== Datos de popularitate ======
+
+Iste instrumento collige datos anonyme super tu wiki e te permitte inviar los retro al disveloppatores de DokuWiki. Isto les adjuta de comprender como DokuWiki es usate per su usatores e assecura que le decisiones super le disveloppamento futur si basate super statisticas de uso ex le mundo real.
+
+Tu es incoragiate a repeter iste procedura de tempore a tempore pro continuar a informar le disveloppatores quando tu wiki cresce. Tu collectiones repetite de datos essera identificate per un ID anonyme.
+
+Le datos colligite contine informationes como tu version de DokuWiki, le numero e dimension de tu paginas e files, plug-ins installate e information super tu installation de PHP.
+
+Le datos crude que essera inviate es monstrate hic infra. Per favor usa le button "Inviar datos" pro transferer le informationes.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ia/lang.php b/wiki/lib/plugins/popularity/lang/ia/lang.php
new file mode 100644
index 0000000..4a45f04
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ia/lang.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * Interlingua language file
+ *
+ * @author robocap <robocap1@gmail.com>
+ * @author Martijn Dekker <martijn@inlv.org>
+ */
+$lang['name']                  = 'Datos de popularitate (pote prender alcun tempore pro cargar)';
+$lang['submit']                = 'Inviar datos';
diff --git a/wiki/lib/plugins/popularity/lang/id-ni/intro.txt b/wiki/lib/plugins/popularity/lang/id-ni/intro.txt
new file mode 100644
index 0000000..fb23709
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/id-ni/intro.txt
@@ -0,0 +1,7 @@
+====== Popularitas-Fangombakha ======
+
+Fakake anonyme da'e i'owuloi ngawalö data moroi ba Wiki khöu awö wanehegöu wama'ohe'ö DokuWiki ba zangahaogö. Data da'e aoha wangehaogö ba wombohouni mangawuli ba DokuWiki ba biziso miföna abölö aoha wangirö'ö ya'ia bakha ba nahia wamake statistik.
+
+Tola öfa'ohe'ö mangawuli data ero-ero soginötö ba wangehaogö ba bawamohouni Wiki khöndra samazökhi.  Data nifa'ohe'öu ifareso dania anonyme ID.
+
+...
diff --git a/wiki/lib/plugins/popularity/lang/id-ni/lang.php b/wiki/lib/plugins/popularity/lang/id-ni/lang.php
new file mode 100644
index 0000000..d9a36f2
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/id-ni/lang.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * idni language file
+ *
+ * @author Harefa <fidelis@harefa.com>
+ * @author Yustinus Waruwu <juswaruwu@gmail.com>
+ */
+$lang['name']                  = 'Sabölö teturia (sito\'ölönia ara ginötö wamokai)';
+$lang['submit']                = 'Fa\'ohe\'ö data';
diff --git a/wiki/lib/plugins/popularity/lang/is/lang.php b/wiki/lib/plugins/popularity/lang/is/lang.php
new file mode 100644
index 0000000..9add4ca
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/is/lang.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * Icelandic language file
+ *
+ * @author Hrannar Baldursson <hrannar.baldursson@gmail.com>
+ * @author Ólafur Gunnlaugsson <oli@audiotools.com>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ */
+$lang['submit']                = 'Senda gögn';
diff --git a/wiki/lib/plugins/popularity/lang/it/intro.txt b/wiki/lib/plugins/popularity/lang/it/intro.txt
new file mode 100644
index 0000000..f65310a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/it/intro.txt
@@ -0,0 +1,9 @@
+====== Raccolta dati sul wiki ======
+
+Questo strumento raccoglie dati anonimi sul tuo wiki e ti permette di inviarli agli sviluppatori di Dokuwiki. Questo aiuta loro a capire come Dokuwiki viene utilizzato dagli utenti e prendere decisioni future sullo sviluppo in base a quelle che sono le reali statistiche di utilizzo da parte degli utenti.
+
+Ti incoraggiamo a ripetere ogni tanto questa operazione per mantenere informati gli sviluppatori sulla crescita del tuo wiki. L'insieme dei dati raccolti saranno identificati tramite un ID anonimo.
+
+I dati raccolti contengono informazioni come la versione di DokuWiki, il numero e le dimensioni delle pagine e dei file, i plugin installati e informazioni sulla versione di PHP presente nel sistema.
+
+A continuazione puoi vedere un'anteprima dei dati che saranno inviati. Utilizza il pulsante "Invia dati" per trasferire le informazioni.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/it/lang.php b/wiki/lib/plugins/popularity/lang/it/lang.php
new file mode 100644
index 0000000..ec00d66
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/it/lang.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Diego Pierotto <ita.translations@tiscali.it>
+ * @author Lorenzo Breda <lbreda@gmail.com>
+ * @author robocap <robocap1@gmail.com>
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ */
+$lang['name']                  = 'Raccolta dati sul wiki (può impiegare del tempo per caricarsi)';
+$lang['submit']                = 'Invia dati';
+$lang['autosubmit']            = 'Invia automaticamente i dati una volta al mese';
+$lang['submissionFailed']      = 'È stato impossibile inviare i dati a causa del seguente errore:';
+$lang['submitDirectly']        = 'È possibile inviare i dati manualmente utilizzando il pulsante sottostante.';
+$lang['autosubmitError']       = 'L\'ultimo invio automatico non è andato a buon fine a causa del seguente errore:';
+$lang['lastSent']              = 'I dati sono stati inviati';
diff --git a/wiki/lib/plugins/popularity/lang/it/submitted.txt b/wiki/lib/plugins/popularity/lang/it/submitted.txt
new file mode 100644
index 0000000..7824715
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/it/submitted.txt
@@ -0,0 +1,3 @@
+====== Raccolta dati sul wiki ======
+
+I dati sono stati inviati correttamente.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ja/intro.txt b/wiki/lib/plugins/popularity/lang/ja/intro.txt
new file mode 100644
index 0000000..db9a342
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ja/intro.txt
@@ -0,0 +1,9 @@
+====== 利用状況調査 ======
+
+この[[doku>ja:popularity|ツール]]は、ご利用中のwikiの情報を収集し、それをDokuWikiの開発者へ匿名で送信するものです。開発者はこのツールにより、DokuWikiが実際にどの様に利用されているかを理解し、そして実際の利用状況に基づいて今後の開発方針の決定することができます。
+
+お使いのwikiの規模が大きくなってきたときは、このステップを定期的に繰り返すことを推奨しています。また、送信されたデータは匿名のIDで識別されます。
+
+DokuWikiのバージョン、ページとファイルの数とサイズ、インストール済みプラグイン、そしてお使いのPHPに関する情報が、送信されるデータに含まれます。
+
+以下に表示されているデータが実際に送信されるデータとなります。"データ送信"ボタンを押して情報を送信してください。
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ja/lang.php b/wiki/lib/plugins/popularity/lang/ja/lang.php
new file mode 100644
index 0000000..81dc94c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ja/lang.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ * @author Daniel Dupriest <kououken@gmail.com>
+ * @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Yuji Takenaka <webmaster@davilin.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ */
+$lang['name']                  = '利用状況調査(ロードに少し時間が掛かります)';
+$lang['submit']                = 'データ送信';
+$lang['autosubmit']            = '月に一度は自動的にデータを送付';
+$lang['submissionFailed']      = '次のエラーによりデータが送信できませんでした:';
+$lang['submitDirectly']        = '次のフォームを使ってデータを手動で送信することができます。';
+$lang['autosubmitError']       = '以下のエラーにより最後の自動送信に失敗しました:';
+$lang['lastSent']              = 'データを送信しました。';
diff --git a/wiki/lib/plugins/popularity/lang/ja/submitted.txt b/wiki/lib/plugins/popularity/lang/ja/submitted.txt
new file mode 100644
index 0000000..604f8e5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ja/submitted.txt
@@ -0,0 +1,3 @@
+====== 利用状況調査 ======
+
+データの送信に成功しました。
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ko/intro.txt b/wiki/lib/plugins/popularity/lang/ko/intro.txt
new file mode 100644
index 0000000..edc0f87
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ko/intro.txt
@@ -0,0 +1,9 @@
+====== 인기도 조사 ======
+
+설치된 위키의 익명 정보를 도쿠위키 개발자에게 보냅니다. 이 [[doku>ko:popularity|도구]]는 도쿠위키가 실제 사용자에게 어떻게 사용되는지 도쿠위키 개발자에게 알려줌으로써 이 후 개발 시 참조가 됩니다.
+
+설치된 위키가 커짐에 따라서 이 과정을 반복할 필요가 있습니다. 반복된 데이터는 익명 ID로 구별되어집니다.
+
+보내려는 데이터는 설치 도쿠위키 버전, 문서와 파일 수, 크기, 설치 플러그인, 설치 PHP 정보등을 포함하고 있습니다.
+
+실제 보내질 자료는 아래와 같습니다. 정보를 보내려면 "자료 보내기" 버튼을 클릭하세요.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ko/lang.php b/wiki/lib/plugins/popularity/lang/ko/lang.php
new file mode 100644
index 0000000..fff8cac
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ko/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author jk Lee
+ * @author dongnak <dongnak@gmail.com>
+ * @author Song Younghwan <purluno@gmail.com>
+ * @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2 <erial2@gmail.com>
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Garam <rowain8@gmail.com>
+ */
+$lang['name']                  = '인기도 조사 (불러오는 데 시간이 걸릴 수 있습니다)';
+$lang['submit']                = '자료 보내기';
+$lang['autosubmit']            = '자료를 자동으로 한 달에 한 번씩 보내기';
+$lang['submissionFailed']      = '다음과 같은 이유로 자료 보내기에 실패했습니다:';
+$lang['submitDirectly']        = '아래의 양식에 맞춰 수동으로 작성된 자료를 보낼 수 있습니다.';
+$lang['autosubmitError']       = '다음과 같은 이유로 자동 자료 보내기에 실패했습니다:';
+$lang['lastSent']              = '자료를 보냈습니다';
diff --git a/wiki/lib/plugins/popularity/lang/ko/submitted.txt b/wiki/lib/plugins/popularity/lang/ko/submitted.txt
new file mode 100644
index 0000000..37cfbd8
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ko/submitted.txt
@@ -0,0 +1,3 @@
+====== 인기도 조사 ======
+
+자료를 성공적으로 보냈습니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/la/intro.txt b/wiki/lib/plugins/popularity/lang/la/intro.txt
new file mode 100644
index 0000000..c3029ca
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/la/intro.txt
@@ -0,0 +1,10 @@
+====== Index Fauoris Popularis ======
+
+Haoc instrumentum fauorem popularem mittis sic ut creatores uicis meliorem illum facere possint.
+
+Rursum te fauorem mittere experamus sic ut si mutationes meliores uel peiores esse uidere possimus.
+
+Res mittendae tua forma in usu, numerus et pondus paginarum et aliarum rerum, addenda in usu et de PHP.
+
+Res rudes mittendae subter ostenduntur. "Res mittere" premas ut eas transferas.
+
diff --git a/wiki/lib/plugins/popularity/lang/la/lang.php b/wiki/lib/plugins/popularity/lang/la/lang.php
new file mode 100644
index 0000000..c7f307c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/la/lang.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Latin language file
+ *
+ * @author Massimiliano Vassalli <vassalli.max@gmail.com>
+ */
+$lang['name']                  = 'Index fauoris popularis (multum tempus quaerere potest)';
+$lang['submit']                = 'Missum die';
+$lang['autosubmit']            = 'Constanter res omni mense mittuntur';
+$lang['submissionFailed']      = 'Res non mittuntur ea causa:';
+$lang['submitDirectly']        = 'Res tu mittere potes cum hoc exemplar compleas.';
+$lang['autosubmitError']       = 'Extrema missio lapsa est ea causa:';
+$lang['lastSent']              = 'Res missae sunt';
diff --git a/wiki/lib/plugins/popularity/lang/la/submitted.txt b/wiki/lib/plugins/popularity/lang/la/submitted.txt
new file mode 100644
index 0000000..2b2faf4
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/la/submitted.txt
@@ -0,0 +1,3 @@
+====== Index fauoris popularis ======
+
+Res feliciter missae sunt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/lt/lang.php b/wiki/lib/plugins/popularity/lang/lt/lang.php
new file mode 100644
index 0000000..dca3504
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/lt/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author audrius.klevas@gmail.com
+ * @author Arunas Vaitekunas <aras@fan.lt>
+ */
+$lang['name']                  = 'Populiarumo apklausa (gali užtrukti pakrovimas)';
+$lang['submit']                = 'Pateikti';
diff --git a/wiki/lib/plugins/popularity/lang/lv/intro.txt b/wiki/lib/plugins/popularity/lang/lv/intro.txt
new file mode 100644
index 0000000..dd43f96
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/lv/intro.txt
@@ -0,0 +1,9 @@
+====== Popularitātes atsauksme ======
+
+Šis rīks savāc anonīmus datus par tavu wiki sistēmu un piedāvā tos nodot DokuWiki izstrādātājiem. Tas ļauj zināt kā izmanto DokuWiki un palīdz tālāko attīstību balstīt patiesas izmantošanas statistikā .
+
+Ierosinām laiku pa laikam atkārtoti nosūtīt datus, lai izstrādātāji zinātu, ka tavs wiki aug. Atkārtotos sūtījumus identificēs pēc anonīmā ID.
+
+Savāktie dati satur ziņas par DokuWiki versiju, lapu skaitu un apjomu, instalētajiem spraudņiem un par PHP instalāciju.
+
+Nosūtāmie dati redzami zemāk. Nospied pogu "Nosūtīt datus", lai nodotu ziņas.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/lv/lang.php b/wiki/lib/plugins/popularity/lang/lv/lang.php
new file mode 100644
index 0000000..2c9bc63
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/lv/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['name']                  = 'Popularitātes atsauksmes (ielāde var aizņemt kādu laiku)';
+$lang['submit']                = 'Nosūtīt datus';
+$lang['autosubmit']            = 'Automātiski reizi mēnesī nosūtīt datus';
+$lang['submissionFailed']      = 'Datus nevar nosūtīt kļūdas dēļ:';
+$lang['submitDirectly']        = 'Jūs pats varat pats nosūtīt datus no šīs veidlapas.';
+$lang['autosubmitError']       = 'Pēdējā automātiskā nosūtīšana kļūdas dēļ:';
+$lang['lastSent']              = 'Dati nosūtīti';
diff --git a/wiki/lib/plugins/popularity/lang/lv/submitted.txt b/wiki/lib/plugins/popularity/lang/lv/submitted.txt
new file mode 100644
index 0000000..c31338a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/lv/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitātes atsauksmes ======
+
+Dati veiksmīgi nosūtīti
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/mr/intro.txt b/wiki/lib/plugins/popularity/lang/mr/intro.txt
new file mode 100644
index 0000000..df912e4
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/mr/intro.txt
@@ -0,0 +1,8 @@
+====== लोकप्रियता फीडबॅक ======
+हे टूल तुमच्या विकी संबंधी माहिती गुप्तपणे गोळा करते आणि डॉक्युविकीच्या निर्मात्याना पाठवते. याद्वारे त्यांना डॉक्युविकी प्रत्यक्ष कशी वापरली जाते व त्यानुसार प्रत्यक्ष माहितीवर आधारित पुढील सुधारणा करण्यास मदत होते.
+
+तुम्ही हे टूल ठराविक अंतराने परत वापरत राहिल्यास अधिक चांगले ,कारण तुमची विकी जसजशी वाढेल तसे डेवलपर लोकाना त्याबद्दल माहिती कळण्यास मदत होइल. तुमचा डेटा गुप्त निर्देशकाद्वारे ओळखला जाइल.
+
+या डेटा मधे पुढील प्रकारची माहिती असेल : तुमच्या डॉक्युविकीची आवृत्ति, त्यातील पानांची संख्या व साइज़, इन्स्टॉल केलेले    प्लगइन आणि तुमच्या PHP ची आवृत्ति.
+
+जो डेटा प्रत्यक्ष पाठवला जाइल तो खाली दाखवला आहे. "Send Data" बटन वर क्लिक करून हा डेटा पाठवा. 
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/mr/lang.php b/wiki/lib/plugins/popularity/lang/mr/lang.php
new file mode 100644
index 0000000..abf7dd5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/mr/lang.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Marathi language file
+ *
+ * @author ghatothkach@hotmail.com
+ * @author Padmanabh Kulkarni <kulkarnipadmanabh@gmail.com>
+ * @author Padmanabh Kulkarni<kulkarnipadmanabh@gmail.com>
+ * @author shantanoo@gmail.com
+ */
+$lang['name']                  = 'लोकप्रियता फीडबॅक ( लोड होण्यास थोडा वेळ लागेल )';
+$lang['submit']                = 'माहीती पाठवा';
diff --git a/wiki/lib/plugins/popularity/lang/ne/lang.php b/wiki/lib/plugins/popularity/lang/ne/lang.php
new file mode 100644
index 0000000..c0d925a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ne/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
+ * @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
+ * @author Saroj Dhakal<lotusnagarkot@yahoo.com>
+ */
+$lang['submit']                = 'सामग्री पठाउनुहोस् ';
diff --git a/wiki/lib/plugins/popularity/lang/nl/intro.txt b/wiki/lib/plugins/popularity/lang/nl/intro.txt
new file mode 100644
index 0000000..3c045c4
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/nl/intro.txt
@@ -0,0 +1,9 @@
+====== Populariteitsfeedback ======
+
+Dit onderdeel verzamelt anonieme gegevens over uw wiki en stelt u in staat deze te versturen naar de ontwikkelaars van DokuWiki.  Dit helpt hen te begrijpen hoe DokuWiki wordt gebruikt door de gebruikers en zorgt er ook voor dat toekomstige ontwikkelkeuzes kunnen worden gestaafd door echte gebruikersstatistieken.
+
+U wordt verzocht deze stap van tijd tot tijd te herhalen om ontwikkelaars op de hoogte te houden terwijl uw wiki groeit. De herhaalde data zal worden geïdentificeerd door een uniek, anoniem ID.
+
+De verzamelde gegevens bevat onder andere gegevens over uw versie van DokuWiki, het aantal- en de grootte van de pagina's en bestanden, geïnstalleerde plugins en informatie over PHP.
+
+De ruwe data die verzonden worden staan hieronder. Gebruik de knop "Verstuur" om de informatie te verzenden.
diff --git a/wiki/lib/plugins/popularity/lang/nl/lang.php b/wiki/lib/plugins/popularity/lang/nl/lang.php
new file mode 100644
index 0000000..121e71c
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/nl/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wouter Schoot <wouter@schoot.org>
+ * @author Niels Schoot <niels.schoot@quintiq.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Danny Rotsaert <danny.rotsaert@edpnet.be>
+ * @author Marijn Hofstra <hofstra.m@gmail.com>
+ * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
+ * @author Gerrit <klapinklapin@gmail.com>
+ * @author Remon <no@email.local>
+ */
+$lang['name']                  = 'Populariteitsfeedback (kan even duren om in te laden)';
+$lang['submit']                = 'Verstuur gegevens';
+$lang['autosubmit']            = 'Gegevens automatisch maandelijks verzenden';
+$lang['submissionFailed']      = 'De gegevens konden niet verstuurd worden vanwege de volgende fout:';
+$lang['submitDirectly']        = 'Je kan de gegevens handmatig sturen door het onderstaande formulier te verzenden.';
+$lang['autosubmitError']       = 'De laatste automatische verzending is mislukt vanwege de volgende fout:';
+$lang['lastSent']              = 'De gegevens zijn verstuurd.';
diff --git a/wiki/lib/plugins/popularity/lang/nl/submitted.txt b/wiki/lib/plugins/popularity/lang/nl/submitted.txt
new file mode 100644
index 0000000..219d80f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/nl/submitted.txt
@@ -0,0 +1,3 @@
+===== Populariteitsfeedback =====
+
+Het versturen van de gegevens is gelukt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/no/intro.txt b/wiki/lib/plugins/popularity/lang/no/intro.txt
new file mode 100644
index 0000000..be3f8f0
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/no/intro.txt
@@ -0,0 +1,9 @@
+======  Tilbakemelding om popularitet ======
+
+Dette verktøyet samler anonyme data om din wiki og sender disse tilbake til DokuWikis utviklere. Dette hjelper utviklerne til å forstå hvordan DokuWiki blir brukt, og gjør at fremtidig beslutninger om videre utvikling kan baseres på statistikk fra virkelig bruk.
+
+Du oppfordres herved til å gjenta innsendingen fra tid til annen for å holde utviklerne informert når din wiki vokser. Dine datasett vil bli  identifisert ved hjelp av en anonym identifikator.
+
+De data som samles inn inneholder informasjon om din DokuWiki-versjon, antallet og størrelsen på sider og filer, installerte utvidelser og informasjon om hvilken versjon av PHP som er installert.
+
+Rådata som blir sendt vises nedenfor. Bruk knappen "Send data" for å overføre denne informasjonen.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/no/lang.php b/wiki/lib/plugins/popularity/lang/no/lang.php
new file mode 100644
index 0000000..688cc4f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/no/lang.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Rune M. Andersen <rune.andersen@gmail.com>
+ * @author Jakob Vad Nielsen (me@jakobnielsen.net)
+ * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
+ * @author Knut Staring <knutst@gmail.com>
+ * @author Lisa Ditlefsen <lisa@vervesearch.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Thomas Nygreen <nygreen@gmail.com>
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ */
+$lang['name']                  = ' Tilbakemelding om popularitet (kan ta litt tid å laste)';
+$lang['submit']                = 'Send data';
+$lang['autosubmit']            = 'Send data automatisk en gang i måneden';
+$lang['submissionFailed']      = 'Kunne ikke sende dataene på grunn av følgende feil:';
+$lang['submitDirectly']        = 'Du kan sende dataene manuelt ved å sende inn dette skjemaet.';
+$lang['autosubmitError']       = 'Den siste automatiske innsendingen feilet på grunn av følgende feil:';
+$lang['lastSent']              = 'Dataene er sendt for ';
diff --git a/wiki/lib/plugins/popularity/lang/no/submitted.txt b/wiki/lib/plugins/popularity/lang/no/submitted.txt
new file mode 100644
index 0000000..ccec767
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/no/submitted.txt
@@ -0,0 +1,3 @@
+====== Tilbakemelding om popularitet ======
+
+Innsending av dataene var vellykket.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/pl/intro.txt b/wiki/lib/plugins/popularity/lang/pl/intro.txt
new file mode 100644
index 0000000..d95e7f7
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pl/intro.txt
@@ -0,0 +1,9 @@
+====== Informacja o popularności ======
+
+To narzędzie zbiera anonimowe dane o Twoim wiki i wysyła je do twórców DokuWiki. Zbieranie tych informacji pozwala na lepsze zrozumienie sposobów korzystania z DokuWiki i ułatwia podejmowanie przyszłych decyzji projektowych w oparciu o rzeczywiste dane statystyczne.
+
+Zachęcamy do uruchamiania tej funkcji co pewien czas, by poinformować programistów DokuWiki o rozwoju Twojego wiki. Informacje przesyłane przez Ciebie będą oznaczone anonimowym identyfikatorem.
+
+Zbierane dane zawierają informacje o wersji DokuWiki, ilości i rozmiarze stron i plików, zainstalowanych wtyczkach oraz informację o oprogramowaniu PHP.
+
+Wysyłane dane przedstawione są poniżej. Naciśnij przycisk "Wyślij dane" w celu przesłania informacji.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/pl/lang.php b/wiki/lib/plugins/popularity/lang/pl/lang.php
new file mode 100644
index 0000000..2f198d2
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pl/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Grzegorz Żur <grzegorz.zur@gmail.com>
+ * @author Mariusz Kujawski <marinespl@gmail.com>
+ * @author Maciej Kurczewski <pipijajko@gmail.com>
+ * @author Sławomir Boczek <slawkens@gmail.com>
+ * @author sleshek <sleshek@wp.pl>
+ * @author Leszek Stachowski <shazarre@gmail.com>
+ * @author maros <dobrimaros@yahoo.pl>
+ * @author Grzegorz Widła <dzesdzes@gmail.com>
+ * @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['name']                  = 'Informacja o popularności (ładowanie może zająć dłuższą chwilę)';
+$lang['submit']                = 'Wyślij dane';
+$lang['autosubmit']            = 'Automatycznie wysyłaj dane raz na miesiąc';
+$lang['submissionFailed']      = 'Dane nie mogły być przesłane ze względu na następujące błędy:';
+$lang['submitDirectly']        = 'Możesz wysłać dane ręcznie poprzez następujący formularz:';
+$lang['autosubmitError']       = 'Ostatnie wysyłanie automatyczne nie powiodło się ze względu na następujące błędy:';
+$lang['lastSent']              = 'Dane zostały wysłane:';
diff --git a/wiki/lib/plugins/popularity/lang/pl/submitted.txt b/wiki/lib/plugins/popularity/lang/pl/submitted.txt
new file mode 100644
index 0000000..195e813
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pl/submitted.txt
@@ -0,0 +1,3 @@
+====== Informacje o popularności ======
+
+Wysyłanie danych powiodło się.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/pt-br/intro.txt b/wiki/lib/plugins/popularity/lang/pt-br/intro.txt
new file mode 100644
index 0000000..e07aa0a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pt-br/intro.txt
@@ -0,0 +1,9 @@
+====== Retorno de Popularidade ======
+
+Essa [[doku>popularity|ferramenta]] coleta dados anônimos sobre o seu wiki e permite que você os envie para os desenvolvedores do DokuWiki. Isso ajuda-os a compreender como o DokuWiki é utilizado pelos seus usuários e garante que decisões para futuros desenvolvimentos sejam respaldadas por estatísticas de uso real.
+
+Você é encorajado a repetir esse procedimento de tempos em tempos, para manter os desenvolvedores informados quando o seu wiki for alterado. Seus pacotes de dados repetidos serão categorizados por uma identificação anônima.
+
+Os dados coletados contém informações do tipo: a versão do seu DokuWiki, o número e tamanho das suas páginas e arquivos, plug-ins instalados e informações sobre a sua instalação do PHP.
+
+Os dados brutos que serão enviados serão exibidos abaixo. Por favor, utilize o botão "Enviar dados" para transferir a informação.
diff --git a/wiki/lib/plugins/popularity/lang/pt-br/lang.php b/wiki/lib/plugins/popularity/lang/pt-br/lang.php
new file mode 100644
index 0000000..58df300
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pt-br/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Lucien Raven <lucienraven@yahoo.com.br>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Flávio Veras <flaviove@gmail.com>
+ * @author Jeferson Propheta <jeferson.propheta@gmail.com>
+ * @author jair.henrique <jair.henrique@gmail.com>
+ * @author Luis Dantas <luis@dantas.com>
+ * @author Sergio Motta <sergio@cisne.com.br>
+ * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
+ * @author Victor Westmann <victor.westmann@gmail.com>
+ */
+$lang['name']                  = 'Retorno de popularidade (pode demorar um pouco para carregar)';
+$lang['submit']                = 'Enviar dados';
+$lang['autosubmit']            = 'Enviar os dados automaticamente uma vez por mês';
+$lang['submissionFailed']      = 'Os dados não puderam ser enviados devido ao seguinte erro:';
+$lang['submitDirectly']        = 'Você pode enviar os dados manualmente, submetendo o formulário baixo.';
+$lang['autosubmitError']       = 'Ocorreu uma falha na última submissão automática, devido ao seguinte erro:';
+$lang['lastSent']              = 'Os dados foram enviados';
diff --git a/wiki/lib/plugins/popularity/lang/pt-br/submitted.txt b/wiki/lib/plugins/popularity/lang/pt-br/submitted.txt
new file mode 100644
index 0000000..7c0cea8
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pt-br/submitted.txt
@@ -0,0 +1,3 @@
+====== Retorno de popularidade ======
+
+Os dados foram enviados com sucesso.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/pt/intro.txt b/wiki/lib/plugins/popularity/lang/pt/intro.txt
new file mode 100644
index 0000000..9ec37e2
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pt/intro.txt
@@ -0,0 +1,9 @@
+====== Retorno de Popularidade ======
+
+Esta ferramenta junta dados anónimos sobre o seu wiki e permite estes sejam enviados para a equipa de desenvolvimento do DokuWiki. Isto ajuda-os a compreender como o DokuWiki é usado pelos seus utilizadores de forma a permitir que desenvolvimentos futuros sejam baseadas em estatísticas de uso real.
+
+Você é encorajado a repetir este passo regularmente para manter a equipa informada quando o seu wiki crescer. Os seus dados permanecerão sempre anónimos.
+
+Os dados colectados contêm informação como a versão do DokuWiki que você utiliza, o número e tamanho das suas páginas e ficheiros, os plugins instalados e informação sobre a sua instalação do PHP.
+
+Os dados que serão enviados são mostrados abaixo. Use o botão "Enviar Dados" para transferir a informação.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/pt/lang.php b/wiki/lib/plugins/popularity/lang/pt/lang.php
new file mode 100644
index 0000000..a14d176
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pt/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Fil <fil@meteopt.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author José Campos zecarlosdecampos@gmail.com
+ */
+$lang['name']                  = 'Retorno (feedback) de Popularidade (pode levar algum tempo a carregar)';
+$lang['submit']                = 'Enviar Dados';
+$lang['autosubmit']            = 'Enviar dados automáticamente uma vez por mês';
+$lang['submissionFailed']      = 'Os dados não foram enviados devido ao seguinte erro:';
+$lang['submitDirectly']        = 'Pode enviar os dados manualmente, submetendo o seguinte formulário.';
+$lang['autosubmitError']       = 'A última auto-submissão falhou, por causa do seguinte erro:';
+$lang['lastSent']              = 'Os dados foram enviados';
diff --git a/wiki/lib/plugins/popularity/lang/pt/submitted.txt b/wiki/lib/plugins/popularity/lang/pt/submitted.txt
new file mode 100644
index 0000000..d2bb2b7
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/pt/submitted.txt
@@ -0,0 +1,3 @@
+====== Retorno de Popularidade ======
+
+Os dados foram enviados com sucesso.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ro/intro.txt b/wiki/lib/plugins/popularity/lang/ro/intro.txt
new file mode 100644
index 0000000..b2dfcba
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ro/intro.txt
@@ -0,0 +1,9 @@
+====== Feedback de popularitate ======
+
+Această unealtă colectează date anonime despre wiki-ul dvs. şi vă permite să le trimiteţi înapoi către dezvoltatorii DokuWiki. Aceasta îi ajută să înţeleagă cum este folosit DokuWiki de către utilizatori şi asigură faptul că viitoarele decizii privind dezvoltarea sunt bazate pe statistici ale utilizării în condiţii reale.
+
+Sunteţi încurajat să repetaţi acest pas din când în când pentru a ţine dezvoltatorii la curent cu dezvoltarea wiki-ului dvs. Seturile de date trimise in mod repetat vor fi identificate printr-un ID anonim.
+
+Datele colectate conţin informaţii precum versiunea DokuWiki, numărul şi mărimea paginilor şi a fişierelor dvs., plugin-urile instalate şi informaţii despre versiunea PHP instalată.
+
+Datele brute ce vor fi trimise sunt afişate mai jos. Vă rugăm utilizaţi butonul "Trimite datele" pentru a transfera informaţiile.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ro/lang.php b/wiki/lib/plugins/popularity/lang/ro/lang.php
new file mode 100644
index 0000000..4a3130a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ro/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
+ */
+$lang['name']                  = 'Feedback de popularitate (încărcarea poate dura mai mult)';
+$lang['submit']                = 'Trimite datele';
+$lang['autosubmit']            = 'Trimite datele automat o dată pe lună';
+$lang['submissionFailed']      = 'Datele nu au fost trimise din cauza următoarei erori:';
+$lang['submitDirectly']        = 'Puteți trimite datele manual prin completarea următorului formular.';
+$lang['autosubmitError']       = 'Ultima trimitere automată a eșuat din cauza următoarei erori:';
+$lang['lastSent']              = 'Datele au fost trimise';
diff --git a/wiki/lib/plugins/popularity/lang/ro/submitted.txt b/wiki/lib/plugins/popularity/lang/ro/submitted.txt
new file mode 100644
index 0000000..214ffb7
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ro/submitted.txt
@@ -0,0 +1,3 @@
+====== Feedback de popularitate ======
+
+Datele au fost trimise cu succes.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/ru/intro.txt b/wiki/lib/plugins/popularity/lang/ru/intro.txt
new file mode 100644
index 0000000..dbf0cc6
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ru/intro.txt
@@ -0,0 +1,10 @@
+====== Сбор информации о популярности ======
+
+Этот [[doku>popularity|инструмент]] собирает анонимные данные о вашей вики и позволяет вам отправить их разработчикам «Докувики». Эти данные помогут им понять, как именно используется «Докувики», и удостовериться, что принимаемые проектные решения соответствуют жизненным реалиям.
+
+Отправляйте данные время от времени для того, чтобы сообщать разработчикам о том, что ваша вики «подросла». Отправленные вами данные будут идентифицированы по анонимному ID.
+
+Собранные данные содержат такую информацию, как: версия «Докувики», количество и размер ваших страниц и файлов, установленные плагины, информацию об установленном PHP.
+
+Данные, которые будут отосланы, представлены ниже. Пожалуйста, используйте кнопку «Отправить данные», чтобы передать информацию.
+
diff --git a/wiki/lib/plugins/popularity/lang/ru/lang.php b/wiki/lib/plugins/popularity/lang/ru/lang.php
new file mode 100644
index 0000000..2e84e06
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ru/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Змей Этерийский <evil_snake@eternion.ru>
+ * @author Hikaru Nakajima <jisatsu@mail.ru>
+ * @author Alexei Tereschenko <alexeitlex@yahoo.com>
+ * @author Alexander Sorkin <kibizoid@gmail.com>
+ * @author Kirill Krasnov <krasnovforum@gmail.com>
+ * @author Vlad Tsybenko <vlad.development@gmail.com>
+ * @author Aleksey Osadchiy <rfc@nm.ru>
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
+ */
+$lang['name']                  = 'Сбор информации о популярности (для загрузки может потребоваться некоторое время)';
+$lang['submit']                = 'Отправить данные';
+$lang['autosubmit']            = 'Автоматически отправлять данные один раз в месяц';
+$lang['submissionFailed']      = 'Данные не могут быть отправлены из-за ошибки:';
+$lang['submitDirectly']        = 'Вы можете отправлять данные вручную, заполнив форму:';
+$lang['autosubmitError']       = 'Последнее автоотправление данных не удалось из-за ошибки:';
+$lang['lastSent']              = 'Данные отправлены';
diff --git a/wiki/lib/plugins/popularity/lang/ru/submitted.txt b/wiki/lib/plugins/popularity/lang/ru/submitted.txt
new file mode 100644
index 0000000..8454101
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/ru/submitted.txt
@@ -0,0 +1,3 @@
+====== Сбор информации о популярности ======
+
+Данные были успешно отправлены.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/sk/intro.txt b/wiki/lib/plugins/popularity/lang/sk/intro.txt
new file mode 100644
index 0000000..7f580d9
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sk/intro.txt
@@ -0,0 +1,9 @@
+====== Prieskum používania ======
+
+Tento nástroj získa anonymné dáta o Vašej wiki a ponúkne Vám možnosť odoslať ich späť k vývojárom DokuWiki. Týmto spôsobom im umožníte lepšie porozumieť, ako je používaná DokuWiki, a podporiť ich budúce rozhodnutia o ďalšom vývoji informáciami z reálneho používania DokuWiki.
+
+Doporučujeme Vám opakovať tento krok z času na čas pri napredovaní Vašej wiki a tak pomôcť vývojárom DokuWiki. Vaše dáta budú označené anonymným ID.
+
+Zozbierané dáta obsahujú informácie ako verziu DokuWiki, počet a veľkosť Vašich stránok a súborov, inštalované pluginy a informácie o inštalovanom PHP.
+
+Dáta, ktoré budú poslané sú zobrazené nižšie. Prosím použite tlačidlo "Poslať dáta" na odoslanie týchto informácií.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/sk/lang.php b/wiki/lib/plugins/popularity/lang/sk/lang.php
new file mode 100644
index 0000000..eb23a9a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sk/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Michal Mesko <michal.mesko@gmail.com>
+ * @author exusik <exusik@gmail.com>
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['name']                  = 'Prieskum používania (môže chvíľu trvať)';
+$lang['submit']                = 'Poslať dáta';
+$lang['autosubmit']            = 'Automaticky zaslať dáta raz mesačne';
+$lang['submissionFailed']      = 'Dáta nemohli byť odoslané z nasledujúceho dôdovu:';
+$lang['submitDirectly']        = 'Dáta môžu byť zaslané manuálne nasledujúcim formulárom:';
+$lang['autosubmitError']       = 'Posledné automatické odoslanie dát zlyhalo z nasledujúceho dôvodu:';
+$lang['lastSent']              = 'Dáta boli odoslané.';
diff --git a/wiki/lib/plugins/popularity/lang/sk/submitted.txt b/wiki/lib/plugins/popularity/lang/sk/submitted.txt
new file mode 100644
index 0000000..f99fb9f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sk/submitted.txt
@@ -0,0 +1,3 @@
+====== Prieskum používania ======
+
+Dáta boli úspešne odoslané.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/sl/intro.txt b/wiki/lib/plugins/popularity/lang/sl/intro.txt
new file mode 100644
index 0000000..2c029db
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sl/intro.txt
@@ -0,0 +1,9 @@
+====== Poročilo o uporabi ======
+
+To orodje je namenjeno zbiranju brezimnih podatkov o postavljeni DokuWiki strani in omogoča pošiljanje nekaterih podatkov neposredno razvijalcem sistema. S temi podatki lahko razvijalci razumejo načine uporabe sistema, zahteve uporabnikov in pogostost uporabe, kar s statističnimi podatki vpliva tudi na nadaljnji razvoj sistema.
+
+Priporočeno je, da poročilo o uporabi pošljete vsake toliko časa, saj lahko le tako razvijalci dobijo podatke o hitrosti rasti spletišča in pogostosti uporabe. Vsi podatki so poslani označeni s posebno vpisno številko, ki omogoča brezimno sledenje.
+
+Zbrani podatki vsebujejo podrobnosti o različici uporabljenega sistema DokuWiki, število in velikost wiki strani, datotekah, ki so naložene na sistem in podatke o vstavkih ter PHP namestitvi in različici.
+
+Surovi podatki, ki bodo poslani so prikazani spodaj. S pritiskom na gumb "Pošlji podatke", bodo ti poslani na strežnik razvijalcev.
diff --git a/wiki/lib/plugins/popularity/lang/sl/lang.php b/wiki/lib/plugins/popularity/lang/sl/lang.php
new file mode 100644
index 0000000..3910eba
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sl/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matej Urbančič (mateju@svn.gnome.org)
+ */
+$lang['name']                  = 'Poročilo o uporabi (nalaganje strani je lahko dolgotrajno)';
+$lang['submit']                = 'Pošlji podatke';
+$lang['autosubmit']            = 'Samodejno pošlji podatke enkrat mesečno';
+$lang['submissionFailed']      = 'Podatkov zaradi napake ni mogoče poslati:';
+$lang['submitDirectly']        = 'Podatke je mogoče poslati ročno s pošiljanjem preko obrazca.';
+$lang['autosubmitError']       = 'Zadnji poskus samodejnega pošiljanja je spodletel zaradi napake:';
+$lang['lastSent']              = 'Podatki so bili uspešno poslani.';
diff --git a/wiki/lib/plugins/popularity/lang/sl/submitted.txt b/wiki/lib/plugins/popularity/lang/sl/submitted.txt
new file mode 100644
index 0000000..11ae052
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sl/submitted.txt
@@ -0,0 +1,3 @@
+====== Poročilo o uporabi ======
+
+Podatki so bili uspešno poslani.
diff --git a/wiki/lib/plugins/popularity/lang/sq/intro.txt b/wiki/lib/plugins/popularity/lang/sq/intro.txt
new file mode 100644
index 0000000..eb37e5f
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sq/intro.txt
@@ -0,0 +1,9 @@
+====== Informacioni mbi Popullaritetin ======
+
+Ky mjet mbledh të dhëna anonime rreth wiki-t tuaj dhe ju lejon t'ia dërgoni ato zhvilluesve të DokuWiki-t. Kjo i ndihmon ata të kuptojnë sesi DokuWiki përdoret nga përdoruesit e tij dhe siguron që vendimet për zhvillime të ardhshme të jenë të mbështetura mbi statistika të nxjera nga bota e vërtetë.
+
+Ju jeni të inkurajuar ta përsërisni këtë hap shpesh herë për t'i mbajtur zhvilluesit të informuar kur wiki juaj rritet. Bashkësia e të dhënave tuaja të përsëritura do të identifikohen nga një ID anonime.
+
+Të dhënat e mbledhura përmbajnë informacione si versioni i DokuWiki-t tuaj, numri dhe madhësia e faqeve dhe skedarëve, plugin-et e instaluar dhe informacione rreth instalimit të PHP-së.
+
+Të dhënat e papërpunuara që do të dërgohen janë treguar më poshtë. Ju lutem përdorni buttonin "Dërgo Të Dhëna" për të transferuar informacionin.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/sq/lang.php b/wiki/lib/plugins/popularity/lang/sq/lang.php
new file mode 100644
index 0000000..1954ce0
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sq/lang.php
@@ -0,0 +1,8 @@
+<?php
+/**
+ * Albanian language file
+ *
+ * @author Leonard Elezi leonard.elezi@depinfo.info
+ */
+$lang['name']                  = 'Informacioni mbi Popullaritetin (mund të marë ca kohë derisa të ngarkohet)';
+$lang['submit']                = 'Dërgo Të Dhënat';
diff --git a/wiki/lib/plugins/popularity/lang/sr/intro.txt b/wiki/lib/plugins/popularity/lang/sr/intro.txt
new file mode 100644
index 0000000..cbbb46a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sr/intro.txt
@@ -0,0 +1,9 @@
+====== Мерење популарности ======
+
+Ова алатка анонимно скупља податке о вашем викију и шаље их програмерима DokuWiki-ја. Овим помажете да разумеју како корисници користе DokuWiki и обезбеђујете да се одлуке имају потпору у статистици о коришћењу у реалним условима.
+
+Охрабрујемо вас да поновите овај корак с времена на време да би програмери имали информацију о развоју вашег викија. Ваши поновљени подаци ће бити идентификовани са анонимним ЛИБом.
+
+Сакупљени подаци садрже информације: верзија вашег DokuWiki-ја, број и величина страница и датотека, инсталирани додаци и информације о ПХПу.
+
+Сирова верзија података који се шаљу се налази испод. Користите дугме Пошаљи податке за пренос информација.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/sr/lang.php b/wiki/lib/plugins/popularity/lang/sr/lang.php
new file mode 100644
index 0000000..b67aaa8
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sr/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Иван Петровић petrovicivan@ubuntusrbija.org
+ * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Miroslav Šolti <solti.miroslav@gmail.com>
+ */
+$lang['name']                  = 'Мерење популарности (може потрајати док се не учита)';
+$lang['submit']                = 'Пошаљи податке';
diff --git a/wiki/lib/plugins/popularity/lang/sv/intro.txt b/wiki/lib/plugins/popularity/lang/sv/intro.txt
new file mode 100644
index 0000000..2f00c01
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sv/intro.txt
@@ -0,0 +1,11 @@
+====== Popularitetsfeedback ======
+
+Detta verktyg samlar anonyma data om din wiki och låter dig skicka dessa till DokuWikis utvecklare. Det hjälper utvecklarna att förstå hur DokuWiki används och gör att framtida beslut om DokuWikis utveckling kan grundas på statistik från verkligt bruk.
+
+Upprepa gärna detta steg då och då allteftersom din Wiki växer. Dina rapporter kommer att bli identifierade med hjälp av ett anonymt id.
+
+Data som samlas in innehåller information om bland annat din DokuWiki-version, antalet och storleken på sidorna, installerade plugins samt information om din PHP-installation.
+
+Rådata som kommer att sändas visas här nedanför. Vänligen använd knappen "Sänd data" för att överföra informationen.
+
+
diff --git a/wiki/lib/plugins/popularity/lang/sv/lang.php b/wiki/lib/plugins/popularity/lang/sv/lang.php
new file mode 100644
index 0000000..ffbb903
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sv/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Håkan Sandell <hakan.sandell@home.se>
+ * @author Dennis Karlsson
+ * @author Tormod Otter Johansson <tormod@latast.se>
+ * @author Pontus Bergendahl <pontus.bergendahl@gmail.com>
+ * @author Emil Lind <emil@sys.nu>
+ * @author Bogge Bogge <bogge@bogge.com>
+ * @author Peter Åström <eaustreum@gmail.com>
+ */
+$lang['name']                  = 'Popularitets-feedback (det kan ta en stund att ladda sidan)';
+$lang['submit']                = 'Sänd data';
+$lang['autosubmit']            = 'Skicka data automatiskt varje månad';
+$lang['submissionFailed']      = 'Datan kunde inte skickas för att:';
+$lang['submitDirectly']        = 'Du kan skicka datan manuellt genom att fylla i följande formulär.';
+$lang['autosubmitError']       = 'Senaste automatiska sändning av datan misslyckades för att:';
+$lang['lastSent']              = 'Datan har skickats';
diff --git a/wiki/lib/plugins/popularity/lang/sv/submitted.txt b/wiki/lib/plugins/popularity/lang/sv/submitted.txt
new file mode 100644
index 0000000..fb8eab7
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/sv/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitetsfeedback ======
+
+Datan har skickats utan problem.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/th/lang.php b/wiki/lib/plugins/popularity/lang/th/lang.php
new file mode 100644
index 0000000..f6a736a
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/th/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Komgrit Niyomrath <n.komgrit@gmail.com>
+ * @author Kittithat Arnontavilas mrtomyum@gmail.com
+ * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
+ * @author Thanasak Sompaisansin <jombthep@gmail.com>
+ */
+$lang['name']                  = 'ส่งข้อมูลความนิยมกลับ (อาจใช้เวลาในการโหลด)';
+$lang['submit']                = 'ส่งข้อมูล';
diff --git a/wiki/lib/plugins/popularity/lang/tr/intro.txt b/wiki/lib/plugins/popularity/lang/tr/intro.txt
new file mode 100644
index 0000000..a855ff3
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/tr/intro.txt
@@ -0,0 +1,9 @@
+====== Popülerlik Geribeslemesi ======
+
+Bu araç wiki'niz hakkında genel bilgileri toplayarak bunları DokuWiki geliştiricilerine geri göndermenizi sağlar. Böylece geliştiriciler DokuWiki'nin kullanıcılar tarafından nasıl kullanıldığını anlamalarını sağlar ve ileride gerçek kullanım istatistiklerine göre geliştirme kararları verebilirler.
+
+Wiki'nizin büyümesiyle beraber bu bölümü zaman zaman çalıştırmanız geliştiricileri bilgilendirecektir. Tekrar gönderilen veriler anonim olarak gönderilecektir.
+
+Bu veriler DokuWiki sürümünü, sayısını, sayfaların ve dosyalarım büyüklüklerini, yüklü eklentileri ve PHP sürümünü içermektedir.
+
+Gönderilecek işlenmemiş veriler aşağıda gösterilmektedir. Lütfen "Verileri Gönder" butonuna tıklayarak bilgileri gönderin.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/tr/lang.php b/wiki/lib/plugins/popularity/lang/tr/lang.php
new file mode 100644
index 0000000..696ee38
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/tr/lang.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Aydın Coşkuner <aydinweb@gmail.com>
+ * @author Cihan Kahveci <kahvecicihan@gmail.com>
+ * @author Yavuz Selim <yavuzselim@gmail.com>
+ * @author Caleb Maclennan <caleb@alerque.com>
+ * @author farukerdemoncel@gmail.com
+ */
+$lang['name']                  = 'Popülerlik Geribeslemesi (yüklemesi uzun sürebilir)';
+$lang['submit']                = 'Verileri Gönder';
+$lang['lastSent']              = 'Bilgiler gönderildi';
diff --git a/wiki/lib/plugins/popularity/lang/uk/intro.txt b/wiki/lib/plugins/popularity/lang/uk/intro.txt
new file mode 100644
index 0000000..3ceb882
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/uk/intro.txt
@@ -0,0 +1,9 @@
+====== Відгук популярності ======
+
+Цей інструмент збирає анонімні дані про вашу вікі і відсилає її розробникам системи. Це допоможе їм зрозуміти, як саме користувачі використовують ДокуВікі і дозволяє врахувати потреби користувачів при подальшому удосконаленні системи.
+
+Ви можете повторно відсилати відгуки час від часу, щоб повідомляти розробників про розвиток вашої ДокуВікі. Повторні відгуки будуть ідентифіковані по анонімному ID.
+
+У зібраних даних є інформація про версію ДокуВікі, кількість і розмір сторінок в ній, встановлені додатки і інформація про налаштування вашого PHP.
+
+Дані, які буде надіслано показано нижче. Для передачі інформації натисніть будь-ласка кнопку "Передати дані"
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/uk/lang.php b/wiki/lib/plugins/popularity/lang/uk/lang.php
new file mode 100644
index 0000000..d47a0cf
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/uk/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author serg_stetsuk <serg_stetsuk@ukr.net>
+ * @author Oleksandr Kunytsia <okunia@gmail.com>
+ */
+$lang['name']                  = 'Відгук популярності (може зайняти деякий час)';
+$lang['submit']                = 'Передати дані';
+$lang['autosubmit']            = 'Автоматично надсилати дані один раз на місяць';
+$lang['submissionFailed']      = 'Дані не можуть бути відправлені через таку помилку:';
+$lang['submitDirectly']        = 'Ви можете надіслати дані вручну, відправивши наступну форму.';
+$lang['autosubmitError']       = 'Останнє автоматичне відправлення не вдалося через таку помилку:';
+$lang['lastSent']              = 'Дані були відправлені';
diff --git a/wiki/lib/plugins/popularity/lang/uk/submitted.txt b/wiki/lib/plugins/popularity/lang/uk/submitted.txt
new file mode 100644
index 0000000..9021385
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/uk/submitted.txt
@@ -0,0 +1,2 @@
+====== Відгук популярності ======
+Дані були успішно відправлені.
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/zh-tw/intro.txt b/wiki/lib/plugins/popularity/lang/zh-tw/intro.txt
new file mode 100644
index 0000000..5ba42c5
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/zh-tw/intro.txt
@@ -0,0 +1,9 @@
+====== 人氣回饋 ======
+
+本工具會從您的 wiki 網站收集訊息,並以匿名的方式發送給 DokuWiki 的開發者。這有助於他們了解使用者們如何使用 DokuWiki ,並能基於實際統計資料對未來開發做出更準確的決策。
+
+我們鼓勵您經常重複這個步驟,讓開發者了解您的 wiki 網站的成長情形。您的資料集將會被標識為一個匿名的識別碼 (ID) 。
+
+收集的資料包括 DokuWiki 版本、頁面數量、檔案大小、安裝的附加元件,以及伺服器的 PHP 資訊。
+
+將送出的原始資料顯示如下。請點擊「發送資料」按鈕進行傳輸。
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/zh-tw/lang.php b/wiki/lib/plugins/popularity/lang/zh-tw/lang.php
new file mode 100644
index 0000000..252c606
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/zh-tw/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Li-Jiun Huang <ljhuang.tw@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-simptrad.html
+ * @author Wayne San <waynesan@zerozone.tw>
+ * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
+ * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author syaoranhinata@gmail.com
+ * @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ */
+$lang['name']                  = '人氣回饋 (可能需要一些時間載入) ';
+$lang['submit']                = '發送資料';
+$lang['autosubmit']            = '每月自動發送';
+$lang['submissionFailed']      = '由於以下原因,資料無法發送:';
+$lang['submitDirectly']        = '你可以利用以下的表單來發手動發送資料。';
+$lang['autosubmitError']       = '由於以下原因,上次自動發送無法進行:';
+$lang['lastSent']              = '資料已發送';
diff --git a/wiki/lib/plugins/popularity/lang/zh-tw/submitted.txt b/wiki/lib/plugins/popularity/lang/zh-tw/submitted.txt
new file mode 100644
index 0000000..430a8a4
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/zh-tw/submitted.txt
@@ -0,0 +1,3 @@
+====== 人氣回饋 ======
+
+資料已發送。
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/zh/intro.txt b/wiki/lib/plugins/popularity/lang/zh/intro.txt
new file mode 100644
index 0000000..40e93dc
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/zh/intro.txt
@@ -0,0 +1,9 @@
+====== 人气反馈 ======
+
+本工具收集关于您维基站点的匿名信息,并允许您将其发送给 DokuWiki 的开发者。这样做有助于我们了解用户是如何使用 DokuWiki 的,并能使我们未来的开发决策建立在现实使用数据上。
+
+我们鼓励您不时重复该步骤,以便我们能了解您的维基站点发展进度。您的数据集将被匿名 ID 标识。
+
+收集的数据包括 DokuWiki 版本、您的页面数量以及文件大小、已安装的插件、服务器上的 PHP 相关信息。
+
+将被发送的原始数据如下所示。请点击“发送数据”按扭进行传输。
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/lang/zh/lang.php b/wiki/lib/plugins/popularity/lang/zh/lang.php
new file mode 100644
index 0000000..695b5c4
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/zh/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ZDYX <zhangduyixiong@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-tradsimp.html
+ * @author Simon zhan <simonzhan@21cn.com>
+ * @author ben <ben@livetom.com>
+ * @author lainme <lainme993@gmail.com>
+ * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author phy25 <git@phy25.com>
+ */
+$lang['name']                  = '人气反馈(载入可能需要一些时间)';
+$lang['submit']                = '发送数据';
+$lang['autosubmit']            = '每月自动发送';
+$lang['submissionFailed']      = '数据由于以下原因不恩你给发送:';
+$lang['submitDirectly']        = '你可以手动提交下面的表单来发送数据。';
+$lang['autosubmitError']       = '因以下原因,上一次自动提交失败:';
+$lang['lastSent']              = '数据已发送';
diff --git a/wiki/lib/plugins/popularity/lang/zh/submitted.txt b/wiki/lib/plugins/popularity/lang/zh/submitted.txt
new file mode 100644
index 0000000..6039b70
--- /dev/null
+++ b/wiki/lib/plugins/popularity/lang/zh/submitted.txt
@@ -0,0 +1,3 @@
+====== 人气反馈 ======
+
+数据发送成功。
\ No newline at end of file
diff --git a/wiki/lib/plugins/popularity/plugin.info.txt b/wiki/lib/plugins/popularity/plugin.info.txt
new file mode 100644
index 0000000..8ffc136
--- /dev/null
+++ b/wiki/lib/plugins/popularity/plugin.info.txt
@@ -0,0 +1,7 @@
+base    popularity
+author  Andreas Gohr
+email   andi@splitbrain.org
+date    2015-07-15
+name    Popularity Feedback Plugin
+desc    Send anonymous data about your wiki to the DokuWiki developers
+url     http://www.dokuwiki.org/plugin:popularity
diff --git a/wiki/lib/plugins/remote.php b/wiki/lib/plugins/remote.php
new file mode 100644
index 0000000..c2253db
--- /dev/null
+++ b/wiki/lib/plugins/remote.php
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * Class DokuWiki_Remote_Plugin
+ */
+abstract class DokuWiki_Remote_Plugin extends DokuWiki_Plugin {
+
+    private  $api;
+
+    /**
+     * Constructor
+     */
+    public function __construct() {
+        $this->api = new RemoteAPI();
+    }
+
+    /**
+     * Get all available methods with remote access.
+     *
+     * By default it exports all public methods of a remote plugin. Methods beginning
+     * with an underscore are skipped.
+     *
+     * @return array Information about all provided methods. {@see RemoteAPI}.
+     */
+    public function _getMethods() {
+        $result = array();
+
+        $reflection = new \ReflectionClass($this);
+        foreach($reflection->getMethods(ReflectionMethod::IS_PUBLIC) as $method) {
+            // skip parent methods, only methods further down are exported
+            $declaredin = $method->getDeclaringClass()->name;
+            if($declaredin == 'DokuWiki_Plugin' || $declaredin == 'DokuWiki_Remote_Plugin') continue;
+            $method_name = $method->name;
+            if(substr($method_name, 0, 1) == '_') continue;
+
+            // strip asterisks
+            $doc = $method->getDocComment();
+            $doc = preg_replace(
+                array('/^[ \t]*\/\*+[ \t]*/m', '/[ \t]*\*+[ \t]*/m', '/\*+\/\s*$/m','/\s*\/\s*$/m'),
+                array('', '', '', ''),
+                $doc
+            );
+
+            // prepare data
+            $data = array();
+            $data['name'] = $method_name;
+            $data['public'] = 0;
+            $data['doc'] = $doc;
+            $data['args'] = array();
+
+            // get parameter type from doc block type hint
+            foreach($method->getParameters() as $parameter) {
+                $name = $parameter->name;
+                $type = 'string'; // we default to string
+                if(preg_match('/^@param[ \t]+([\w|\[\]]+)[ \t]\$'.$name.'/m', $doc, $m)){
+                    $type = $this->cleanTypeHint($m[1]);
+                }
+                $data['args'][] = $type;
+            }
+
+            // get return type from doc block type hint
+            if(preg_match('/^@return[ \t]+([\w|\[\]]+)/m', $doc, $m)){
+                $data['return'] = $this->cleanTypeHint($m[1]);
+            } else {
+                $data['return'] = 'string';
+            }
+
+            // add to result
+            $result[$method_name] = $data;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Matches the given type hint against the valid options for the remote API
+     *
+     * @param string $hint
+     * @return string
+     */
+    protected function cleanTypeHint($hint) {
+        $types = explode('|', $hint);
+        foreach($types as $t) {
+            if(substr($t, -2) == '[]') {
+                return 'array';
+            }
+            if($t == 'boolean') {
+                return 'bool';
+            }
+            if(in_array($t, array('array', 'string', 'int', 'double', 'bool', 'null', 'date', 'file'))) {
+                return $t;
+            }
+        }
+        return 'string';
+    }
+
+    /**
+     * @return RemoteAPI
+     */
+    protected function getApi() {
+        return $this->api;
+    }
+
+}
diff --git a/wiki/lib/plugins/revert/admin.php b/wiki/lib/plugins/revert/admin.php
new file mode 100644
index 0000000..1a03005
--- /dev/null
+++ b/wiki/lib/plugins/revert/admin.php
@@ -0,0 +1,184 @@
+<?php
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class admin_plugin_revert extends DokuWiki_Admin_Plugin {
+    var $cmd;
+    // some vars which might need tuning later
+    var $max_lines = 800; // lines to read from changelog
+    var $max_revs  = 20;  // numer of old revisions to check
+
+
+    /**
+     * Constructor
+     */
+    function __construct(){
+        $this->setupLocale();
+    }
+
+    /**
+     * access for managers
+     */
+    function forAdminOnly(){
+        return false;
+    }
+
+    /**
+     * return sort order for position in admin menu
+     */
+    function getMenuSort() {
+        return 40;
+    }
+
+    /**
+     * handle user request
+     */
+    function handle() {
+    }
+
+    /**
+     * output appropriate html
+     */
+    function html() {
+        global $INPUT;
+
+        echo $this->locale_xhtml('intro');
+
+        $this->_searchform();
+
+        if(is_array($INPUT->param('revert')) && checkSecurityToken()){
+            $this->_revert($INPUT->arr('revert'),$INPUT->str('filter'));
+        }elseif($INPUT->has('filter')){
+            $this->_list($INPUT->str('filter'));
+        }
+    }
+
+    /**
+     * Display the form for searching spam pages
+     */
+    function _searchform(){
+        global $lang, $INPUT;
+        echo '<form action="" method="post"><div class="no">';
+        echo '<label>'.$this->getLang('filter').': </label>';
+        echo '<input type="text" name="filter" class="edit" value="'.hsc($INPUT->str('filter')).'" /> ';
+        echo '<button type="submit">'.$lang['btn_search'].'</button> ';
+        echo '<span>'.$this->getLang('note1').'</span>';
+        echo '</div></form><br /><br />';
+    }
+
+    /**
+     * Start the reversion process
+     */
+    function _revert($revert,$filter){
+        echo '<hr /><br />';
+        echo '<p>'.$this->getLang('revstart').'</p>';
+
+        echo '<ul>';
+        foreach($revert as $id){
+            global $REV;
+
+            // find the last non-spammy revision
+            $data = '';
+            $pagelog = new PageChangeLog($id);
+            $old  = $pagelog->getRevisions(0, $this->max_revs);
+            if(count($old)){
+                foreach($old as $REV){
+                    $data = rawWiki($id,$REV);
+                    if(strpos($data,$filter) === false) break;
+                }
+            }
+
+            if($data){
+                saveWikiText($id,$data,'old revision restored',false);
+                printf('<li><div class="li">'.$this->getLang('reverted').'</div></li>',$id,$REV);
+            }else{
+                saveWikiText($id,'','',false);
+                printf('<li><div class="li">'.$this->getLang('removed').'</div></li>',$id);
+            }
+            @set_time_limit(10);
+            flush();
+        }
+        echo '</ul>';
+
+        echo '<p>'.$this->getLang('revstop').'</p>';
+    }
+
+    /**
+     * List recent edits matching the given filter
+     */
+    function _list($filter){
+        global $conf;
+        global $lang;
+        echo '<hr /><br />';
+        echo '<form action="" method="post"><div class="no">';
+        echo '<input type="hidden" name="filter" value="'.hsc($filter).'" />';
+        formSecurityToken();
+
+        $recents = getRecents(0,$this->max_lines);
+        echo '<ul>';
+
+        $cnt = 0;
+        foreach($recents as $recent){
+            if($filter){
+                if(strpos(rawWiki($recent['id']),$filter) === false) continue;
+            }
+
+            $cnt++;
+            $date = dformat($recent['date']);
+
+            echo ($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
+            echo '<div class="li">';
+            echo '<input type="checkbox" name="revert[]" value="'.hsc($recent['id']).'" checked="checked" id="revert__'.$cnt.'" />';
+            echo ' <label for="revert__'.$cnt.'">'.$date.'</label> ';
+
+            echo '<a href="'.wl($recent['id'],"do=diff").'">';
+            $p = array();
+            $p['src']    = DOKU_BASE.'lib/images/diff.png';
+            $p['width']  = 15;
+            $p['height'] = 11;
+            $p['title']  = $lang['diff'];
+            $p['alt']    = $lang['diff'];
+            $att = buildAttributes($p);
+            echo "<img $att />";
+            echo '</a> ';
+
+            echo '<a href="'.wl($recent['id'],"do=revisions").'">';
+            $p = array();
+            $p['src']    = DOKU_BASE.'lib/images/history.png';
+            $p['width']  = 12;
+            $p['height'] = 14;
+            $p['title']  = $lang['btn_revs'];
+            $p['alt']    = $lang['btn_revs'];
+            $att = buildAttributes($p);
+            echo "<img $att />";
+            echo '</a> ';
+
+            echo html_wikilink(':'.$recent['id'],(useHeading('navigation'))?null:$recent['id']);
+            echo ' – '.htmlspecialchars($recent['sum']);
+
+            echo ' <span class="user">';
+                echo $recent['user'].' '.$recent['ip'];
+            echo '</span>';
+
+            echo '</div>';
+            echo '</li>';
+
+            @set_time_limit(10);
+            flush();
+        }
+        echo '</ul>';
+
+        echo '<p>';
+        echo '<button type="submit">'.$this->getLang('revert').'</button> ';
+        printf($this->getLang('note2'),hsc($filter));
+        echo '</p>';
+
+        echo '</div></form>';
+    }
+
+}
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/revert/admin.svg b/wiki/lib/plugins/revert/admin.svg
new file mode 100644
index 0000000..2129d2d
--- /dev/null
+++ b/wiki/lib/plugins/revert/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13.5 7a6.5 6.5 0 0 1 6.5 6.5 6.5 6.5 0 0 1-6.5 6.5H10v-2h3.5c2.5 0 4.5-2 4.5-4.5S16 9 13.5 9H7.83l3.08 3.09L9.5 13.5 4 8l5.5-5.5 1.42 1.41L7.83 7h5.67M6 18h2v2H6v-2z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/ar/intro.txt b/wiki/lib/plugins/revert/lang/ar/intro.txt
new file mode 100644
index 0000000..5839ee0
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ar/intro.txt
@@ -0,0 +1,3 @@
+====== مدير الاسترجاع ======
+
+تساعدك هذه الصفحة في الاستعادة الآلية لهجوم غثاء. للحصول على قائمة بالصفحات المغثاة أولا أدخل نص البحث (مثل. عنوان غثاء), ثم أكد أن الصفحات الموجودة هي غثاء فعلا و استرجع التعديلات.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/ar/lang.php b/wiki/lib/plugins/revert/lang/ar/lang.php
new file mode 100644
index 0000000..6262cc6
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ar/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Yaman Hokan <always.smile.yh@hotmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
+ * @author uahello@gmail.com
+ * @author Ahmad Abd-Elghany <tolpa1@gmail.com>
+ * @author alhajr <alhajr300@gmail.com>
+ * @author Mohamed Belhsine <b.mohamed897@gmail.com>
+ */
+$lang['menu']                  = 'مدير الاسترجاع';
+$lang['filter']                = 'ابحث في الصفحات المتأذاة';
+$lang['revert']                = 'استرجع الصفحات المحددة';
+$lang['reverted']              = '%s استرجعت للاصدار %s';
+$lang['removed']               = 'حُذفت %s ';
+$lang['revstart']              = 'بدأت عملية الاستعادة. قد يستغرق ذلك وقتا طويلا. إذا كان وقت النص البرمجي ينفذ قبل النهاية، عليك استرجاع أجزاء أصغر.
+';
+$lang['revstop']               = 'عملية الاستعادة انتهت بنجاح.';
+$lang['note1']                 = 'لاحظ: البحث حساس لحالة الأحرف';
+$lang['note2']                 = 'لاحظ: ستسترجع الصفحة إلى آخر اصدار لا يحوي شروط الغثاء <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/bg/intro.txt b/wiki/lib/plugins/revert/lang/bg/intro.txt
new file mode 100644
index 0000000..44d5a09
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/bg/intro.txt
@@ -0,0 +1,4 @@
+====== Възстановяване ======
+
+Страницата помага за автоматично възстановяване след SPAM атака. За да намерите спамнатите страници, въведете текст за търсене (напр. линк от SPAM съобщението), след това потвърдете, че намерените страници са наистина SPAM и възстановете старите им версии.
+
diff --git a/wiki/lib/plugins/revert/lang/bg/lang.php b/wiki/lib/plugins/revert/lang/bg/lang.php
new file mode 100644
index 0000000..5062a12
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/bg/lang.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
+ * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['menu']                  = 'Възстановяване';
+$lang['filter']                = 'Търсене на спамнати страници';
+$lang['revert']                = 'Възстанови избраните страници';
+$lang['reverted']              = '%s върната до версия %s';
+$lang['removed']               = '%s премахната';
+$lang['revstart']              = 'Процесът на възстановяване започна. Това може да отнеме много време. Ако скриптът се просрочи преди да завърши, трябва да възстановявате на по-малки парчета.';
+$lang['revstop']               = 'Процесът на възстановяване завърши успешно.';
+$lang['note1']                 = 'Бележка: при търсенето се различават малки от големи букви';
+$lang['note2']                 = 'Бележка: страницата ще бъде върната към стара версия без SPAM терминa <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/ca-valencia/intro.txt b/wiki/lib/plugins/revert/lang/ca-valencia/intro.txt
new file mode 100644
index 0000000..fed2cb9
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ca-valencia/intro.txt
@@ -0,0 +1,4 @@
+====== Gestor de reversions ======
+
+Esta pàgina ajuda en la reversió automàtica d'atacs de spam. Per a
+trobar una llista de pàgines que tinguen spam introduïxca una cadena de busca (p. e. una URL de spam), confirme que les pàgines trobades tenen realment spam i revertixca les edicions.
diff --git a/wiki/lib/plugins/revert/lang/ca-valencia/lang.php b/wiki/lib/plugins/revert/lang/ca-valencia/lang.php
new file mode 100644
index 0000000..77dd580
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ca-valencia/lang.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * valencian language file
+ * @author Bernat Arlandis <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@llenguaitecnologia.com>
+ */
+$lang['menu']                  = 'Gestor de reversions';
+$lang['filter']                = 'Buscar pàgines en spam';
+$lang['revert']                = 'Revertir pàgines seleccionades';
+$lang['reverted']              = '%s revertides a la versió %s';
+$lang['removed']               = '%s llevades';
+$lang['revstart']              = 'El procés de reversió ha començat. Açò pot dur prou de temps. Si es talla abans d\'acabar, haurà de revertir per parts.';
+$lang['revstop']               = 'El procés de reversió ha finalisat correctament.';
+$lang['note1']                 = 'Nota: esta busca és sensible a mayúscules';
+$lang['note2']                 = 'Nota: esta pàgina es revertirà a l\'última versió que no continga el spam definit pel terme <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/ca/intro.txt b/wiki/lib/plugins/revert/lang/ca/intro.txt
new file mode 100644
index 0000000..0af2e8e
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ca/intro.txt
@@ -0,0 +1,3 @@
+====== Gestió de reversions ======
+
+Aquesta pàgina us ajuda a revertir automàticament els canvis que siguin producte d'un atac amb brossa. Per trobar la llista de pàgines atacades, cerqueu una cadena adequada (p. ex. un URL de propaganda), confirmeu que les pàgines trobades contenen realment brossa i llavors revertiu-les a revisions anteriors.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/ca/lang.php b/wiki/lib/plugins/revert/lang/ca/lang.php
new file mode 100644
index 0000000..a2a7915
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ca/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carles Bellver <carles.bellver@gmail.com>
+ * @author carles.bellver@gmail.com
+ * @author carles.bellver@cent.uji.es
+ * @author Carles Bellver <carles.bellver@cent.uji.es>
+ * @author daniel@6temes.cat
+ */
+$lang['menu']                  = 'Gestió de reversions';
+$lang['filter']                = 'Cerca pàgines brossa';
+$lang['revert']                = 'Reverteix les pàgines seleccionades';
+$lang['reverted']              = 'S\'ha revertit %s a la revisió %s';
+$lang['removed']               = 'S\'ha suprimit %s';
+$lang['revstart']              = 'S\'ha iniciat el procés de reversió. Això pot trigar una bona estona. Si s\'excedeix el temps d\'espera màxim del servidor, haureu de tornar a intentar-ho per parts.';
+$lang['revstop']               = 'El procés de reversió ha acabat amb èxit.';
+$lang['note1']                 = 'Nota: aquesta cerca distingeix entre majúscules i minúscules.';
+$lang['note2']                 = 'Nota: la pàgina es revertirà a la darrera versió que no contingui el terme brossa especificat <em>%s</em>.';
diff --git a/wiki/lib/plugins/revert/lang/cs/intro.txt b/wiki/lib/plugins/revert/lang/cs/intro.txt
new file mode 100644
index 0000000..1e1cd0f
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/cs/intro.txt
@@ -0,0 +1,3 @@
+====== Obnova zaspamovaných stránek ======
+
+Tato stránka pomůže při automatické obnově po spamovém útoku.  Pro nalezení seznamu zaspamovaných stránek nejdříve zadejte hledaný výraz (např. spamové URL) a pak potvrďte, že nalezené stránky opravdu obsahují spam a mohou být obnoveny.
diff --git a/wiki/lib/plugins/revert/lang/cs/lang.php b/wiki/lib/plugins/revert/lang/cs/lang.php
new file mode 100644
index 0000000..fd9e332
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/cs/lang.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jonáš Dyba <jonas.dyba@gmail.com>
+ * @author Bohumir Zamecnik <bohumir@zamecnik.org>
+ * @author Zbynek Krivka <zbynek.krivka@seznam.cz>
+ * @author tomas <tomas@valenta.cz>
+ * @author Marek Sacha <sachamar@fel.cvut.cz>
+ * @author Lefty <lefty@multihost.cz>
+ * @author Vojta Beran <xmamut@email.cz>
+ * @author Jakub A. Těšínský (j@kub.cz)
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Zbyněk Křivka <krivka@fit.vutbr.cz>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Petr Klíma <qaxi@seznam.cz>
+ * @author Radovan Buroň <radovan@buron.cz>
+ * @author Viktor Zavadil <vzavadil@newps.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Turkislav <turkislav@blabla.com>
+ * @author Daniel Slováček <danslo@danslo.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ * @author Pavel Krupička <pajdacz@gmail.com>
+ */
+$lang['menu']                  = 'Obnova zaspamovaných stránek';
+$lang['filter']                = 'Hledat zaspamované stránky';
+$lang['revert']                = 'Obnovit vybrané stránky';
+$lang['reverted']              = '%s vrácena do verze %s';
+$lang['removed']               = '%s odstraněna';
+$lang['revstart']              = 'Obnova stránek začala. Tento proces může trvat dlouho. Pokud
+skriptu vyprší čas, budete muset obnovovat po menších blocích
+stránek.';
+$lang['revstop']               = 'Proces obnovy stránek byl úspěšně dokončen.';
+$lang['note1']                 = 'Poznámka: toto vyhledávání je citlivé na velikost písmen';
+$lang['note2']                 = 'Poznámka: tato stránka bude obnovena na poslední verzi, která
+neobsahovala dané spamové slovo <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/cy/intro.txt b/wiki/lib/plugins/revert/lang/cy/intro.txt
new file mode 100644
index 0000000..0e09bab
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/cy/intro.txt
@@ -0,0 +1,3 @@
+====== Rheolwr Troi'n Ôl ======
+
+Mae'r dudalen hon yn eich helpu chi i droi'n ôl yn awtomatig yn dilyn ymosodiad sbam. Er mwyn darganfod rhestr o dudalennau sbamllyd, rhowch linyn chwilio (ee. URL sbamllyd), yna cadarnhewch fod y tudalennau a ddarganfuwyd wir yn sbamllyd a throwch y golygiadau'n ôl.
diff --git a/wiki/lib/plugins/revert/lang/cy/lang.php b/wiki/lib/plugins/revert/lang/cy/lang.php
new file mode 100644
index 0000000..ce4f005
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/cy/lang.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * welsh language file
+ */
+
+// for admin plugins, the menu prompt to be displayed in the admin menu
+// if set here, the plugin doesn't need to override the getMenuText() method
+$lang['menu'] = 'Rheolwr Troi\'n Ôl';
+
+// custom language strings for the plugin
+
+$lang['filter']   = 'Chwilio tudalennau sbamllyd';
+$lang['revert']   = 'Troi tudalennau a ddewiswyd yn ôl';
+$lang['reverted'] = 'Trowyd %s yn ôl i adolygiad %s';
+$lang['removed']  = '%s wedi\'i dynnu';
+$lang['revstart'] = 'Mae\'r broses troi\'n ôl wedi dechrau. Gall hwn gymryd amser hir. Os yw\'r
+                     sgript yn bwrw\'r terfyn amser cyn gorffen, bydd angen troi\n ôl mewn dognau llai.';
+$lang['revstop']  = 'Gwnaeth y broses troi\'n ôl gwblhau\'n llwyddiannus.';
+$lang['note1']    = 'Sylw: mae\'r chwiliad yn sensitif i nodau uwch/is';
+$lang['note2']    = 'Sylw: caiff y dudalen ei throi\'n ôl i\'r fersiwn diwethaf sy ddim yn cynnwys y term sbamllyd <i>%s</i>.';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/revert/lang/da/intro.txt b/wiki/lib/plugins/revert/lang/da/intro.txt
new file mode 100644
index 0000000..fdb0c5f
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/da/intro.txt
@@ -0,0 +1,3 @@
+===== Gendannelsesstyring =====
+
+Denne side hjælper dig med at gendanne sider efter et angreb af uønskede indlæg. For at finde en liste af sider, der muligvis er blevet ændret, så skriv en søgestreng (for eksempel. en uønsket netadresse) og bekræft, at de fundne sider virkeligt er uønskede og gendan ændringerne.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/da/lang.php b/wiki/lib/plugins/revert/lang/da/lang.php
new file mode 100644
index 0000000..11114bd
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/da/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kalle Sommer Nielsen <kalle@php.net>
+ * @author Esben Laursen <hyber@hyber.dk>
+ * @author Harith <haj@berlingske.dk>
+ * @author Daniel Ejsing-Duun <dokuwiki@zilvador.dk>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author rasmus <rasmus@kinnerup.com>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ */
+$lang['menu']                  = 'Gendannelsesstyring';
+$lang['filter']                = 'Søg efter uønskede sider';
+$lang['revert']                = 'Gendan valgte sider';
+$lang['reverted']              = '%s gendannet til ændring %s';
+$lang['removed']               = '%s fjernet';
+$lang['revstart']              = 'Gendannelsesforløbet er startet. Dette kan tage et stykke tid. Hvis kodefilen giver "time out" før processen færdiggøres, skal du gendanne i mindre dele.';
+$lang['revstop']               = 'Gendannelsesforløbet fuldført uden fejl';
+$lang['note1']                 = 'Bemærk: Der er forskel på store og små bogstaver i søgningen';
+$lang['note2']                 = 'Bemærk: Denne side vil blive gendannet til den seneste udgave, der ikke indeholder det givne uønskede udtryk <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/de-informal/intro.txt b/wiki/lib/plugins/revert/lang/de-informal/intro.txt
new file mode 100644
index 0000000..a1733af
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/de-informal/intro.txt
@@ -0,0 +1,3 @@
+====== Seiten wiederherstellen ======
+
+Dieses Plugin dient der automatischen Wiederherstellung von Seiten nach einem Spam-Angriff. Gib zunächst einen Suchbegriff (z. B. eine Spam-URL) ein um eine Liste betroffener Seiten zu erhalten. Nachdem du dich vergewissert hast, dass die gefundenen Seiten wirklich Spam enthalten, kannst du die Seiten wiederherstellen.
diff --git a/wiki/lib/plugins/revert/lang/de-informal/lang.php b/wiki/lib/plugins/revert/lang/de-informal/lang.php
new file mode 100644
index 0000000..808fe6e
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/de-informal/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Alexander Fischer <tbanus@os-forge.net>
+ * @author Juergen Schwarzer <jschwarzer@freenet.de>
+ * @author Marcel Metz <marcel_metz@gmx.de>
+ * @author Matthias Schulte <post@lupo49.de>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Volker Bödker <volker@boedker.de>
+ */
+$lang['menu']                  = 'Seiten wiederherstellen';
+$lang['filter']                = 'Durchsuche als Spam markierte Seiten';
+$lang['revert']                = 'Setze ausgewählte Seiten zurück.';
+$lang['reverted']              = '%s zu Revision %s wiederhergestellt';
+$lang['removed']               = '%s entfernt';
+$lang['revstart']              = 'Wiederherstellung gestartet. Dies kann eine längere Zeit dauern. Wenn das Skript vor Fertigstellung stoppt, solltest du es in kleineren Stücken versuchen.';
+$lang['revstop']               = 'Wiederherstellung erfolgreich beendet.';
+$lang['note1']                 = 'Beachte: Diese Suche berücksichtigt Groß- und Kleinschreibung';
+$lang['note2']                 = 'Beachte: Diese Seite wird wiederhergestellt auf die letzte Version, die nicht den Spam-Begriff <i>%s</i> enthält.';
diff --git a/wiki/lib/plugins/revert/lang/de/intro.txt b/wiki/lib/plugins/revert/lang/de/intro.txt
new file mode 100644
index 0000000..fe74461
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/de/intro.txt
@@ -0,0 +1,3 @@
+====== Seiten wiederherstellen ======
+
+Dieses Plugin dient der automatischen Wiederherstellung von Seiten nach einem Spam-Angriff. Geben Sie zunächst einen Suchbegriff (z. B. eine Spam-URL) ein um eine Liste betroffener Seiten zu erhalten. Nachdem Sie sich vergewissert haben, dass die gefundenen Seiten wirklich Spam enthalten, können Sie die Seiten wiederherstellen.
diff --git a/wiki/lib/plugins/revert/lang/de/lang.php b/wiki/lib/plugins/revert/lang/de/lang.php
new file mode 100644
index 0000000..9417264
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/de/lang.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ * @author Leo Moll <leo@yeasoft.com>
+ * @author Florian Anderiasch <fa@art-core.org>
+ * @author Robin Kluth <commi1993@gmail.com>
+ * @author Arne Pelka <mail@arnepelka.de>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Dirk Einecke <dirk@dirkeinecke.de>
+ * @author Blitzi94 <Blitzi94@gmx.de>
+ * @author Robert Bogenschneider <robog@GMX.de>
+ * @author Niels Lange <niels@boldencursief.nl>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ */
+$lang['menu']                  = 'Seiten wiederherstellen';
+$lang['filter']                = 'Nach betroffenen Seiten suchen';
+$lang['revert']                = 'Ausgewählte Seiten wiederherstellen';
+$lang['reverted']              = '%s wieder hergestellt zu Version %s';
+$lang['removed']               = '%s entfernt';
+$lang['revstart']              = 'Wiederherstellung gestartet. Dies kann einige Zeit dauern. Wenn das Script abbricht, bevor alle Seiten wieder hergestellt wurden, reduzieren Sie die Anzahl der Seiten und wiederholen Sie den Vorgang.';
+$lang['revstop']               = 'Wiederherstellung erfolgreich abgeschlossen.';
+$lang['note1']                 = 'Anmerkung: diese Suche unterscheidet Groß- und Kleinschreibung';
+$lang['note2']                 = 'Anmerkung: die Seite wird wiederhergestellt auf die letzte Version, die nicht den angegebenen Spam Begriff <i>%s</i> enthält.';
diff --git a/wiki/lib/plugins/revert/lang/el/intro.txt b/wiki/lib/plugins/revert/lang/el/intro.txt
new file mode 100644
index 0000000..9b583bc
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/el/intro.txt
@@ -0,0 +1,3 @@
+====== Αποκατάσταση κακόβουλων αλλαγών σελίδων ======
+
+Αυτή η σελίδα σας βοηθά να αποκαταστήσετε αυτόματα τις κακόβουλες αλλαγές σελίδων που προκαλούν οι επιθέσεις spam. Για να βρείτε τις σελίδες που πρέπει να τροποποιηθούν, πρώτα δώστε έναν όρο αναζήτησης (π.χ. έναν σύνδεσμο spam) και έπειτα επιβεβαιώστε ότι οι σελίδες που θα βρεθούν όντως περιέχουν spam και προχωρήστε στην αποκατάστασή τους.
diff --git a/wiki/lib/plugins/revert/lang/el/lang.php b/wiki/lib/plugins/revert/lang/el/lang.php
new file mode 100644
index 0000000..48bbb22
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/el/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Thanos Massias <tm@thriasio.gr>
+ * @author Αθανάσιος Νταής <homunculus@wana.gr>
+ * @author Konstantinos Koryllos <koryllos@gmail.com>
+ * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ */
+$lang['menu']                  = 'Αποκατάσταση κακόβουλων αλλαγών σελίδων';
+$lang['filter']                = 'Αναζήτηση σελίδων που περιέχουν spam';
+$lang['revert']                = 'Επαναφορά παλαιότερων εκδόσεων των επιλεγμένων σελίδων';
+$lang['reverted']              = 'Η σελίδα %s επεναφέρθηκε στην έκδοση %s';
+$lang['removed']               = 'Η σελίδα %s διαγράφηκε';
+$lang['revstart']              = 'Η διαδικασία αποκατάστασης άρχισε. Αυτό ίσως πάρει αρκετό χρόνο. Εάν η εφαρμογή υπερβεί το διαθέσιμο χρονικό όριο και τερματιστεί πριν τελειώσει, θα χρειαστεί να επαναλάβετε αυτή τη διαδικασία για μικρότερα τμήματα.';
+$lang['revstop']               = 'Η διαδικασία αποκατάστασης ολοκληρώθηκε με επιτυχία.';
+$lang['note1']                 = '<br />Σημείωση: η αναζήτηση επηρεάζεται από το εάν οι χαρακτήρες είναι πεζοί ή κεφαλαίοι';
+$lang['note2']                 = '<br />Σημείωση: η σελίδα θα επαναφερθεί στην πλέον πρόσφατη έκδοση που δεν περιέχει τον όρο <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/en/intro.txt b/wiki/lib/plugins/revert/lang/en/intro.txt
new file mode 100644
index 0000000..b8f3558
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/en/intro.txt
@@ -0,0 +1,3 @@
+====== Revert Manager ======
+
+This page helps you with the automatic reversion of a spam attack. To find a list of spammy pages first enter a search string (eg. a spam URL), then confirm that the found pages are really spam and revert the edits.
diff --git a/wiki/lib/plugins/revert/lang/en/lang.php b/wiki/lib/plugins/revert/lang/en/lang.php
new file mode 100644
index 0000000..6bf867d
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/en/lang.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * english language file
+ */
+
+// for admin plugins, the menu prompt to be displayed in the admin menu
+// if set here, the plugin doesn't need to override the getMenuText() method
+$lang['menu'] = 'Revert Manager';
+
+// custom language strings for the plugin
+
+$lang['filter']   = 'Search spammy pages';
+$lang['revert']   = 'Revert selected pages';
+$lang['reverted'] = '%s reverted to revision %s';
+$lang['removed']  = '%s removed';
+$lang['revstart'] = 'Reversion process started. This can take a long time. If the
+                     script times out before finishing, you need to revert in smaller
+                     chunks.';
+$lang['revstop']  = 'Reversion process finished successfully.';
+$lang['note1']    = 'Note: this search is case sensitive';
+$lang['note2']    = 'Note: the page will be reverted to the last version not containing the given spam term <i>%s</i>.';
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/revert/lang/eo/intro.txt b/wiki/lib/plugins/revert/lang/eo/intro.txt
new file mode 100644
index 0000000..14e8314
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/eo/intro.txt
@@ -0,0 +1,3 @@
+====== Administro de Restarigo ======
+
+Tiu ĉi paĝo helpas vin pri aŭtomata restarigo el spama atako. Por trovi liston de spamecaj paĝoj, unue mendu serĉan liter-ĉenon (ekz. spama URL), do konfirmu, ke la trovitaj paĝoj fakte estas spamaj kaj restarigu la antaŭajn versiojn bonajn.
diff --git a/wiki/lib/plugins/revert/lang/eo/lang.php b/wiki/lib/plugins/revert/lang/eo/lang.php
new file mode 100644
index 0000000..5e9c171
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/eo/lang.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas@uol.com.br>
+ * @author Felipo Kastro <fefcas@gmail.com>
+ * @author Robert Bogenschneider <robog@gmx.de>
+ * @author Erik Pedersen <erik pedersen@shaw.ca>
+ */
+$lang['menu']                  = 'Administrado de restarigo';
+$lang['filter']                = 'Serĉi spamecajn paĝojn';
+$lang['revert']                = 'Restarigi la elektitajn paĝojn';
+$lang['reverted']              = '%s estas restarigita al revizio %s';
+$lang['removed']               = '%s estas forigita';
+$lang['revstart']              = 'Restariga procezo ekis. Tio povas daŭri longan tempon. Se la skripto tro prokrastos antaŭ plenumo, vi restarigu po pli etaj blokoj.';
+$lang['revstop']               = 'Restariga procezo plenumiĝis sukcese.';
+$lang['note1']                 = 'Rimarko: tiu ĉi serĉo distingas usklecon';
+$lang['note2']                 = 'Rimarko: la paĝo restariĝos al la lasta versio ne enhavanta la menditan spaman terminon <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/es/intro.txt b/wiki/lib/plugins/revert/lang/es/intro.txt
new file mode 100644
index 0000000..39c5b04
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/es/intro.txt
@@ -0,0 +1,3 @@
+====== Restaurador ======
+
+Esta página te ayuda con la restauración de ataques spam. Para encontrar una lista de páginas con spam introduce una cadena , luego confirma que las páginas encontradas son realmente un spam y restaura la edición.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/es/lang.php b/wiki/lib/plugins/revert/lang/es/lang.php
new file mode 100644
index 0000000..35e6519
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/es/lang.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Gabriel Castillo <gch@pumas.ii.unam.mx>
+ * @author oliver <oliver@samera.com.py>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Manuel Meco <manuel.meco@gmail.com>
+ * @author VictorCastelan <victorcastelan@gmail.com>
+ * @author Jordan Mero <hack.jord@gmail.com>
+ * @author Felipe Martinez <metalmartinez@gmail.com>
+ * @author Javier Aranda <internet@javierav.com>
+ * @author Zerial <fernando@zerial.org>
+ * @author Marvin Ortega <maty1206@maryanlinux.com>
+ * @author Daniel Castro Alvarado <dancas2@gmail.com>
+ * @author Fernando J. Gómez <fjgomez@gmail.com>
+ * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
+ * @author emezeta <emezeta@infoprimo.com>
+ * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mercè López <mercelz@gmail.com>
+ */
+$lang['menu']                  = 'Restaurador';
+$lang['filter']                = 'Buscar páginas con spam';
+$lang['revert']                = 'Restaurar las páginas seleccionadas';
+$lang['reverted']              = '%s ha restaurado la revisión %s';
+$lang['removed']               = '%s borrado';
+$lang['revstart']              = 'El proceso de restaurado ha comenzado. Puede llevar bastante tiempo. Si el script se para antes de acabar, deberías restaurar cadenas más pequeñas.';
+$lang['revstop']               = 'El proceso de restaurado ha finalizado satisfactoriamente.';
+$lang['note1']                 = 'Nota: la búsqueda diferencia entre mayúsculas y minúsculas.';
+$lang['note2']                 = 'Nota: la página será restaurada a la última versión que no tenga el término de spam dado <em>%s</em>.';
diff --git a/wiki/lib/plugins/revert/lang/et/lang.php b/wiki/lib/plugins/revert/lang/et/lang.php
new file mode 100644
index 0000000..be8fb26
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/et/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Janar Leas <janar.leas@eesti.ee>
+ */
+$lang['note1']                 = 'Teadmiseks: See otsing arvestab suurtähti';
+$lang['note2']                 = 'Teadmiseks: Lehekülg ennistatakse viimasele järgule, milles ei sisaldu antud rämpsu sõne <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/eu/intro.txt b/wiki/lib/plugins/revert/lang/eu/intro.txt
new file mode 100644
index 0000000..c5a5a5a
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/eu/intro.txt
@@ -0,0 +1,3 @@
+====== Berrezartze Kudeatzailea ======
+
+Orri honek spam eraso baten berrezartze automatikoarekin laguntzen dizu. Spam-a duten orriak bilatzeko, lehenik sartu bilaketa katea (adb. spam URL bat), eta ondoren baieztatu bilatutako orriak benetan spam-a dutela, gero aldaketak berrezartzeko.
diff --git a/wiki/lib/plugins/revert/lang/eu/lang.php b/wiki/lib/plugins/revert/lang/eu/lang.php
new file mode 100644
index 0000000..c7495d8
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/eu/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Inko Illarramendi <inko.i.a@gmail.com>
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Yadav Gowda <yadav.gowda@gmail.com>
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['menu']                  = 'Berrezartze Kudeatzailea';
+$lang['filter']                = 'Bilatu spam duten orriak';
+$lang['revert']                = 'Berrezarri aukeratutako orriak';
+$lang['reverted']              = '%s berrezarria %s berrikuspenera';
+$lang['removed']               = '%s ezabatua';
+$lang['revstart']              = 'Berrezartze prozesua hasi da. Honek denbora luzea eraman dezake.
+Script-a denbora mugara iristen bada, zati txikiagotan berrezarri
+beharko duzu. ';
+$lang['revstop']               = 'Berrezartze prozesua arrakastaz bukatu da.';
+$lang['note1']                 = 'Oharra: bilaketa honek maiuskulak eta minuskulak bereizten ditu';
+$lang['note2']                 = 'Oharra: orria azken bertsiora berrezarriko da, emandako <i>%s</i> spam terminorik ez duelarik.';
diff --git a/wiki/lib/plugins/revert/lang/fa/intro.txt b/wiki/lib/plugins/revert/lang/fa/intro.txt
new file mode 100644
index 0000000..0ccdb08
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/fa/intro.txt
@@ -0,0 +1,3 @@
+====== مدیریت برگشت‌ها ======
+
+این صفحه، در بازیابی صفحاتی که به آن‌ها اسپم ارسال شده است کمک می‌رساند. برای مشاهده‌ی صفحات اسپم شده، ابتدا جستجو کنید، سپس از اسپم شدن صفحه‌ی مورد نظر اطمینان حاصل کنید و تغییرات اعمال شده را برگردانید.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/fa/lang.php b/wiki/lib/plugins/revert/lang/fa/lang.php
new file mode 100644
index 0000000..c6e41ea
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/fa/lang.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author behrad eslamifar <behrad_es@yahoo.com)
+ * @author Mohsen Firoozmandan <info@mambolearn.com>
+ * @author omidmr@gmail.com
+ * @author Omid Mottaghi <omidmr@gmail.com>
+ * @author Mohammad Reza Shoaei <shoaei@gmail.com>
+ * @author Milad DZand <M.DastanZand@gmail.com>
+ * @author AmirH Hassaneini <mytechmix@gmail.com>
+ */
+$lang['menu']                  = 'مدیریت برگشت‌ها';
+$lang['filter']                = 'جستجوی صفحات اسپم شده';
+$lang['revert']                = 'بازگردانی صفحات انتخاب شده';
+$lang['reverted']              = '%s به نگارش %s بازگردانده شد';
+$lang['removed']               = '%s حذف شد';
+$lang['revstart']              = 'در حال بازگرداندن. ممکن است مدتی زمان ببرد. اگر اجرای برنامه، پیش از اتمام به پایان رسید، باید در بخش‌های کوچک‌تری بازگردانی را انجام دهید.';
+$lang['revstop']               = 'بازگرداندن با موفقیت به پایان رسید.';
+$lang['note1']                 = 'توجه: جستجو حساس به حروف کوچک و بزرگ است';
+$lang['note2']                 = 'توجه: صفحه به آخرین نسخه‌ای که حاوی اسپم <i>%s</i> نیست بازگردانده خواهد شد.';
diff --git a/wiki/lib/plugins/revert/lang/fi/intro.txt b/wiki/lib/plugins/revert/lang/fi/intro.txt
new file mode 100644
index 0000000..3b3ce5d
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/fi/intro.txt
@@ -0,0 +1,3 @@
+====== Palautuksenhallinta ======
+
+Tämä sivu auttaa sinua automaattisen palautuksenhallinnan kanssa spam hyökkäyksen jälkeen. Löytääksesi listan spammatyistä sivuista anna ensin hakusana (esim. spm URL), sen jälkeen varmista, että löytyneet sivut todella ovat spammia ja palauta sitten sivut.
diff --git a/wiki/lib/plugins/revert/lang/fi/lang.php b/wiki/lib/plugins/revert/lang/fi/lang.php
new file mode 100644
index 0000000..d14f527
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/fi/lang.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author otto@valjakko.net
+ * @author Otto Vainio <otto@valjakko.net>
+ * @author Teemu Mattila <ghcsystems@gmail.com>
+ * @author Sami Olmari <sami@olmari.fi>
+ */
+$lang['menu']                  = 'Palautuksenhallinta';
+$lang['filter']                = 'Etsi spammattyjä sivuja';
+$lang['revert']                = 'Palauta valitut sivut';
+$lang['reverted']              = '%s palautettu versioon %s';
+$lang['removed']               = '%s poistettu';
+$lang['revstart']              = 'Palautusprosessi käynnistetty. Tämä voi viedä pidemmän aikaa. Jos ajo katkeaa aikakatkaisuun ennen loppua, niin sinun pitää palauttaa pienemmissä osissa.';
+$lang['revstop']               = 'Palautusprosessi lopetti onnistuneesti.';
+$lang['note1']                 = 'Huomioi: tämä haku on kirjainkoosta riippuva';
+$lang['note2']                 = 'Huomioi: tämä sivu palautetaan viimeiseen versioon, jossa ei ole annettua spamtermiä <i>%s</i>';
diff --git a/wiki/lib/plugins/revert/lang/fr/intro.txt b/wiki/lib/plugins/revert/lang/fr/intro.txt
new file mode 100644
index 0000000..30e6d8a
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/fr/intro.txt
@@ -0,0 +1,3 @@
+====== Gestionnaire des réversions ======
+
+Cette page vous aide à restaurer des pages après une attaque de spam. Pour trouver la liste des pages vandalisées, entrez un motif de recherche (par exemple : une URL de spam), puis confirmez que les pages trouvées contiennent du spam et annulez leur modifications.
diff --git a/wiki/lib/plugins/revert/lang/fr/lang.php b/wiki/lib/plugins/revert/lang/fr/lang.php
new file mode 100644
index 0000000..635c9a7
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/fr/lang.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Delassaux Julien <julien@delassaux.fr>
+ * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
+ * @author Guy Brand <gb@unistra.fr>
+ * @author stephane.gully <stephane.gully@gmail.com>
+ * @author Guillaume Turri <guillaume.turri@gmail.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author olivier duperray <duperray.olivier@laposte.net>
+ * @author Vincent Feltz <psycho@feltzv.fr>
+ * @author Philippe Bajoit <philippe.bajoit@gmail.com>
+ * @author Florian Gaub <floriang@floriang.net>
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Olivier DUVAL <zorky00@gmail.com>
+ * @author Anael Mobilia <contrib@anael.eu>
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ */
+$lang['menu']                  = 'Gestionnaire des réversions';
+$lang['filter']                = 'Trouver les pages spammées ';
+$lang['revert']                = 'Annuler les modifications sélectionnées';
+$lang['reverted']              = '%s restauré à la révision %s';
+$lang['removed']               = '%s supprimé';
+$lang['revstart']              = 'Processus de réversion démarré. Ceci peut durer longtemps. Si le script dépasse le délai d\'exécution avant de finir, vous devrez restaurer de plus petits groupes de pages.';
+$lang['revstop']               = 'Processus de réversion terminé avec succès.';
+$lang['note1']                 = 'Note : cette recherche est sensible à la casse';
+$lang['note2']                 = 'Note : cette page sera restaurée à la dernière version ne contenant pas le terme « spam » <em>%s</em>.';
diff --git a/wiki/lib/plugins/revert/lang/gl/intro.txt b/wiki/lib/plugins/revert/lang/gl/intro.txt
new file mode 100644
index 0000000..6327249
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/gl/intro.txt
@@ -0,0 +1,3 @@
+====== Xestor de Reversión ======
+
+Esta páxina axudarache a revertir automaticamente un ataque de correo-lixo. Para atopares unha listaxe de páxinas que conteñan correo-lixo, primeiro debes inserir unha cadea de procura (p.e. un URL do correo-lixo), e logo confirmares que as páxinas atopadas conteñen realmente o tal correo-lixo e reverter as edicións.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/gl/lang.php b/wiki/lib/plugins/revert/lang/gl/lang.php
new file mode 100644
index 0000000..0e376d9
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/gl/lang.php
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Galicianlanguage file
+ *
+ * @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['menu']                  = 'Xestor de Reversión';
+$lang['filter']                = 'Procurar páxinas con correo-lixo';
+$lang['revert']                = 'Revertir as páxinas seleccionadas';
+$lang['reverted']              = '%s revertido á revisión %s';
+$lang['removed']               = '%s eliminado';
+$lang['revstart']              = 'Proceso de reversión iniciado. Isto podería demorar un anaco longo. Se o script fallar por superar o seu límite de tempo denantes de rematar, terás que facer a reversión en anacos máis pequenos.';
+$lang['revstop']               = 'O proceso de reversión rematou correctamente.';
+$lang['note1']                 = 'Nota: esta procura distingue entre maiúsculas e minúsculas';
+$lang['note2']                 = 'Nota: a páxina revertirase á última versión que non conteña o termo de correo-lixo <i>%s</i> indicado.';
diff --git a/wiki/lib/plugins/revert/lang/he/intro.txt b/wiki/lib/plugins/revert/lang/he/intro.txt
new file mode 100644
index 0000000..44b78df
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/he/intro.txt
@@ -0,0 +1,3 @@
+====== מנהל השחזור ======
+
+דף זה יסיע בידך לשחזר באופן אוטומטי אחרי התקפת ספאם. כדי לקבל את רשימת הדפים עם הספאם עליך ראשית מחרוזת לחיפוש (לדוגמה כתובת ספאם) אחר כך עליך לאשר שהדפים שנמצאו באמת מכילים ספאם ולשחזר את העריכות.
diff --git a/wiki/lib/plugins/revert/lang/he/lang.php b/wiki/lib/plugins/revert/lang/he/lang.php
new file mode 100644
index 0000000..562bbb3
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/he/lang.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Dotan Kamber <kamberd@yahoo.com>
+ * @author Moshe Kaplan <mokplan@gmail.com>
+ * @author Yaron Yogev <yaronyogev@gmail.com>
+ * @author Yaron Shahrabani <sh.yaron@gmail.com>
+ */
+$lang['menu']                  = 'מנהל שחזור';
+$lang['filter']                = 'חפש דפים עם ספאם';
+$lang['revert']                = 'שחזר את הדפים הנבחרים';
+$lang['reverted']              = '%s שוחזרו לגרסה %s';
+$lang['removed']               = '%s הוסרו';
+$lang['revstart']              = 'תהליך השחזור החל. התהליך עלול להיות ממושך. אם תסריט מגיע למגבלת פסק הזמן לפני שהסתיים התהליך יהיה צורך לבצע את השחזור במקטעים קטנים יותר.';
+$lang['revstop']               = 'תהליך השחזור הושלם בהצלחה.';
+$lang['note1']                 = 'לתשומת לבך: החיפוש ער לגודל האותיות הלועזיות.';
+$lang['note2']                 = 'לתשות לבך: הדף ישוחזר לגרסה האחרונה שאינה מכילה את מונח הספאם <i>%s</i>';
diff --git a/wiki/lib/plugins/revert/lang/hr/intro.txt b/wiki/lib/plugins/revert/lang/hr/intro.txt
new file mode 100644
index 0000000..5d7a52d
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/hr/intro.txt
@@ -0,0 +1,3 @@
+====== Pomoćnik za povrat ======
+
+Pomaže vam pri povratku u slučaju spam napada. Da bi ste našli listu stranica koje su onečišćene spam-om unesite tekst za potragu (npr. spam URL), te potvrdite da su nađene stranice zaista spam i vratite na prethodno stanje.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/hr/lang.php b/wiki/lib/plugins/revert/lang/hr/lang.php
new file mode 100644
index 0000000..988d2be
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/hr/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['menu']                  = 'Pomoćnik za povrat stanja';
+$lang['filter']                = 'Potraži spam stranice';
+$lang['revert']                = 'Povrati odabrane stranice';
+$lang['reverted']              = '%s vraćena na izdanje %s';
+$lang['removed']               = '%s uklonjen';
+$lang['revstart']              = 'Proces povratka započeo. To može potrajati. Ako se dogodi istek vremena prije završetka, trebate povrat stranica vršiti u manjim grupama.';
+$lang['revstop']               = 'Proces povratka uspješno završio.';
+$lang['note1']                 = 'Obavijest: ova pretraga razlikuje velika/mala slova';
+$lang['note2']                 = 'Obavijest: stranica će biti vraćena na zadnje stanje koje ne sadrži traženi spam termin <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/hu/intro.txt b/wiki/lib/plugins/revert/lang/hu/intro.txt
new file mode 100644
index 0000000..e2c2dad
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/hu/intro.txt
@@ -0,0 +1,3 @@
+====== Visszaállítás kezelő ======
+
+Segítséget nyújtunk SPAM támadások utáni automatikus visszaállításhoz. A fertőzött oldalak kereséséhez meg kell adni egy karaktersorozatot (pl. egy SPAM URL-t). A találatok közül kiválasztva a valóban SPAM-et tartalmazó oldakat, visszaállítjuk őket a lehetséges utolsó SPAM mentes állapotra.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/hu/lang.php b/wiki/lib/plugins/revert/lang/hu/lang.php
new file mode 100644
index 0000000..278af18
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/hu/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Sandor TIHANYI <stihanyi+dw@gmail.com>
+ * @author Siaynoq Mage <siaynoqmage@gmail.com>
+ * @author schilling.janos@gmail.com
+ * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
+ * @author Sándor TIHANYI <stihanyi+dw@gmail.com>
+ * @author David Szabo <szabo.david@gyumolcstarhely.hu>
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ * @author Marina Vladi <deldadam@gmail.com>
+ */
+$lang['menu']                  = 'Visszaállítás-kezelő (anti-SPAM)';
+$lang['filter']                = 'SPAM-tartalmú oldalak keresése';
+$lang['revert']                = 'Kiválasztott oldalak visszaállítása';
+$lang['reverted']              = '%s a következő változatra lett visszaállítva: %s';
+$lang['removed']               = '%s törölve';
+$lang['revstart']              = 'A visszaállítási folyamat elindult. Ez hosszú ideig eltarthat. Ha időtúllépés miatt nem tud lefutni, kisebb darabbal kell próbálkozni.';
+$lang['revstop']               = 'A visszaállítási folyamat sikeresen befejeződött.';
+$lang['note1']                 = 'Megjegyzés: a keresés kisbetű-nagybetű érzékeny';
+$lang['note2']                 = 'Megjegyzés: Az oldalt az utolsó olyan változatra állítjuk vissza, ami nem tartalmazza a megadott spam kifejezést: <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/ia/intro.txt b/wiki/lib/plugins/revert/lang/ia/intro.txt
new file mode 100644
index 0000000..ae548e9
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ia/intro.txt
@@ -0,0 +1,3 @@
+====== Gestion de reversiones ======
+
+Iste pagina te adjuta con le reversion automatic de un attacco de spam. Pro cercar un lista de paginas spammose, primo entra un texto a cercar (p.ex. un URL de spam), postea confirma que le paginas trovate es realmente spam e reverte le modificationes.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/ia/lang.php b/wiki/lib/plugins/revert/lang/ia/lang.php
new file mode 100644
index 0000000..bec2eca
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ia/lang.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Interlingua language file
+ *
+ * @author robocap <robocap1@gmail.com>
+ * @author Martijn Dekker <martijn@inlv.org>
+ */
+$lang['menu']                  = 'Gestion de reversiones';
+$lang['filter']                = 'Cercar paginas spammose';
+$lang['revert']                = 'Reverter le paginas seligite';
+$lang['reverted']              = '%s revertite al version %s';
+$lang['removed']               = '%s removite';
+$lang['revstart']              = 'Le processo de reversion ha comenciate. Isto pote durar multo. Si le script expira ante de finir, tu debe divider le reversiones in blocos minor.';
+$lang['revstop']               = 'Le processo de reversion ha succedite.';
+$lang['note1']                 = 'Nota: iste recerca distingue inter majusculas e minusculas.';
+$lang['note2']                 = 'Nota: le pagina essera revertite al ultime version que non contine le termino de spam specificate, <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/is/lang.php b/wiki/lib/plugins/revert/lang/is/lang.php
new file mode 100644
index 0000000..9de4049
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/is/lang.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Icelandic language file
+ *
+ * @author Hrannar Baldursson <hrannar.baldursson@gmail.com>
+ * @author Ólafur Gunnlaugsson <oli@audiotools.com>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ */
+$lang['removed']               = '%s eytt';
+$lang['note1']                 = 'Athugaðu að þegar leitað er þá skiftir stafsetur máli, það að segja leitarvélin gerir mun á hástöfum og lágstöfum';
diff --git a/wiki/lib/plugins/revert/lang/it/intro.txt b/wiki/lib/plugins/revert/lang/it/intro.txt
new file mode 100644
index 0000000..a5ef146
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/it/intro.txt
@@ -0,0 +1,3 @@
+====== Gestore di ripristini ======
+
+Questa pagina aiuta il controllo automatico degli attacchi spam. Per cercare una lista delle pagine con spam, inserisci innanzitutto una stringa di ricerca (ad esempio l'URL di un sito di spam), quindi Verifica che le pagine trovate contengano realmente spam e ripristinale ad una versione precedente.
diff --git a/wiki/lib/plugins/revert/lang/it/lang.php b/wiki/lib/plugins/revert/lang/it/lang.php
new file mode 100644
index 0000000..52b11b9
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/it/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Pietro Battiston <toobaz@email.it>
+ * @author Lorenzo Breda <lbreda@gmail.com>
+ * @author robocap <robocap1@gmail.com>
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ */
+$lang['menu']                  = 'Gestore di ripristini';
+$lang['filter']                = 'Cerca pagine con spam';
+$lang['revert']                = 'Ripristina le pagine selezionate';
+$lang['reverted']              = '%s ripristinata alla versione %s';
+$lang['removed']               = '%s rimossa';
+$lang['revstart']              = 'Processo di ripristino avviato. Può essere necessario molto tempo. Se lo script non fa in tempo a finire, sarà necessario ripristinare in blocchi più piccoli.';
+$lang['revstop']               = 'Processo di ripristino finito con successo.';
+$lang['note1']                 = 'Nota: questa ricerca distingue le maiuscole';
+$lang['note2']                 = 'Nota: la pagina verrà ripristinata all\'ultima versione non contenente la parola di spam data <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/ja/intro.txt b/wiki/lib/plugins/revert/lang/ja/intro.txt
new file mode 100644
index 0000000..995a57f
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ja/intro.txt
@@ -0,0 +1,3 @@
+====== 復元管理 ======
+
+このページは、スパムにより編集されたページを自動的に復元するための機能を管理します。 スパムを受けたページを検索するため、スパムURLなどのキーワードを入力してください。 その後、検索結果に含まれているページがスパムされていることを確認してから復元を行います。
diff --git a/wiki/lib/plugins/revert/lang/ja/lang.php b/wiki/lib/plugins/revert/lang/ja/lang.php
new file mode 100644
index 0000000..1bca8a7
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ja/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuji Takenaka <webmaster@davilin.com>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ * @author Daniel Dupriest <kououken@gmail.com>
+ * @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ */
+$lang['menu']                  = '復元管理';
+$lang['filter']                = 'スパムを受けたページを検索';
+$lang['revert']                = '選択したページを検索';
+$lang['reverted']              = '%s はリビジョン %s へ復元されました';
+$lang['removed']               = '%s は削除されました';
+$lang['revstart']              = '復元処理中です。時間が掛かる可能性がありますが、もしタイムアウトした場合は、復元を複数回に分けて行ってください。';
+$lang['revstop']               = '復元処理が正しく完了しました。';
+$lang['note1']                 = '注意:検索語句は大文字・小文字を区別します';
+$lang['note2']                 = '注意:最新の内容に検索したスパムキーワード <i>%s</i> が含まれていないページが復元されます。';
diff --git a/wiki/lib/plugins/revert/lang/ko/intro.txt b/wiki/lib/plugins/revert/lang/ko/intro.txt
new file mode 100644
index 0000000..565aa4b
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ko/intro.txt
@@ -0,0 +1,3 @@
+====== 되돌리기 관리자 ======
+
+스팸 공격으로부터 자동으로 되돌리는데 이 페이지가 도움이 될 수 있습니다. 스팸에 공격 받은 문서 목록을 찾으려면 검색어를 입력하고(예를 들어 스팸 URL) 나서 찾은 문서가 스팸 공격을 받았는지 확인하고 되돌리세요.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/ko/lang.php b/wiki/lib/plugins/revert/lang/ko/lang.php
new file mode 100644
index 0000000..f9e16cc
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ko/lang.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Seungheon Song <esketch@gmail.com>
+ * @author jk Lee
+ * @author dongnak <dongnak@gmail.com>
+ * @author Song Younghwan <purluno@gmail.com>
+ * @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2 <erial2@gmail.com>
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author S.H. Lee <tuders@naver.com>
+ */
+$lang['menu']                  = '되돌리기 관리자';
+$lang['filter']                = '스팸 문서 검색';
+$lang['revert']                = '선택한 문서 되돌리기';
+$lang['reverted']              = '%s 판을 %s 판으로 되돌림';
+$lang['removed']               = '%s 제거됨';
+$lang['revstart']              = '되돌리기 작업을 시작합니다. 오랜 시간이 걸릴 수 있습니다. 완료되기 전에
+                     스크립트 시간 초과가 발생한다면 더 작은 작업으로 나누어서
+                     되돌리시기 바랍니다.';
+$lang['revstop']               = '되돌리기 작업이 성공적으로 끝났습니다.';
+$lang['note1']                 = '참고: 대소문자를 구별해 찾습니다';
+$lang['note2']                 = '참고: 문서는 <i>%s</i> 스팸 단어를 포함하지 않은 최신 판으로 되돌립니다.';
diff --git a/wiki/lib/plugins/revert/lang/la/intro.txt b/wiki/lib/plugins/revert/lang/la/intro.txt
new file mode 100644
index 0000000..99a206f
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/la/intro.txt
@@ -0,0 +1,3 @@
+====== Restituendi Administrator ======
+
+Haec pagina contra mala interretialia paginas restituta. Vt paginas aegras quaeras, malum VRL scribe, deinde paginas malas eligas.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/la/lang.php b/wiki/lib/plugins/revert/lang/la/lang.php
new file mode 100644
index 0000000..af42034
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/la/lang.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Latin language file
+ *
+ * @author Massimiliano Vassalli <vassalli.max@gmail.com>
+ */
+$lang['menu']                  = 'Restituendi administrator';
+$lang['filter']                = 'Malas paginas quaerere';
+$lang['revert']                = 'Electas paginas restituere';
+$lang['reverted']              = '%s restitutur ut %s recenseas';
+$lang['removed']               = '%s deletur';
+$lang['revstart']              = 'Restitutio agens. Hic multo tempore agere potest. Si nimium tempus transit, manu restituis.';
+$lang['revstop']               = 'Restitutio feliciter perfecta.';
+$lang['note1']                 = 'Caue: litteras maiores et minores discernit';
+$lang['note2']                 = 'Caue: pagina in recentiori forma sine malis uerbis "<i>%s</i>" restituetur';
diff --git a/wiki/lib/plugins/revert/lang/lb/intro.txt b/wiki/lib/plugins/revert/lang/lb/intro.txt
new file mode 100644
index 0000000..59c5dfc
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/lb/intro.txt
@@ -0,0 +1,3 @@
+====== Revert Manager ======
+
+Dës Säit hëlleft bei der automatescher zerécksetzung no enger Spamattack. Fir eng Lëscht vun zougespamte Säiten ze fannen, gëff fir d'éischt e Sichbegrëff an (z.B. eng Spamadress). Konfirméier dann dass déi Säite wierklech zougespamt goufen a setz se dann zréck.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/lv/intro.txt b/wiki/lib/plugins/revert/lang/lv/intro.txt
new file mode 100644
index 0000000..edcdab2
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/lv/intro.txt
@@ -0,0 +1,3 @@
+====== Piemēsloto lapu atjaunotājs ======
+
+Šī lapa palīdzēs automātiski atjaunot saturu pēc huligānisma . Lai atrastu piedrazotās lapas ieraksti meklējamo izteiksmi (piem. smaperu URL), tad apstiprini, ka atrastās ir "mēslapas" un atcel izdarītās izmaiņas .
diff --git a/wiki/lib/plugins/revert/lang/lv/lang.php b/wiki/lib/plugins/revert/lang/lv/lang.php
new file mode 100644
index 0000000..3651715
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/lv/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.com>
+ */
+$lang['menu']                  = 'Piemēsloto lapu atjaunotājs';
+$lang['filter']                = 'Meklēt piemēslotās lapas';
+$lang['revert']                = 'Atjaunot norādītās lapas ';
+$lang['reverted']              = '%s atjaunots uz %s stāvokli';
+$lang['removed']               = '%s dzēsts';
+$lang['revstart']              = 'Atjaunošana uzsākta. Tas var aizņemt ilgāku laiku. Ja darbība pārtrūkst noilguma dēļ, atjaunošana jāveic pa mazākām porcijām.';
+$lang['revstop']               = 'Atjaunošana veiksmīgi  pabeigta. ';
+$lang['note1']                 = 'Ievēro: Meklēšana atšķir lielos un mazos burtus.';
+$lang['note2']                 = 'Ievēro: Lapu atjaunos ar pēdējo versiju, kas nesatur uzdoto spama vārdu <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/mr/intro.txt b/wiki/lib/plugins/revert/lang/mr/intro.txt
new file mode 100644
index 0000000..efca243
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/mr/intro.txt
@@ -0,0 +1,5 @@
+====== फेरबदल व्यवस्थापक ======
+
+ह्या पानाद्वारे तुम्ही भंकस हल्ल्याद्वारे झालेले बदल आपोआप फेरबदल करू शकता.
+भंकस पानांची यादी बनवण्यासाठी प्रथम एखादा शब्दसमूह टाका ( उदा. एखादं भंकस URL ),
+मग जी पाने सापडतील टी भंकस असल्याचे नक्की करा आणि त्यातील बदल रद्द करा.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/mr/lang.php b/wiki/lib/plugins/revert/lang/mr/lang.php
new file mode 100644
index 0000000..3912bb9
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/mr/lang.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Marathi language file
+ *
+ * @author ghatothkach@hotmail.com
+ * @author Padmanabh Kulkarni <kulkarnipadmanabh@gmail.com>
+ * @author Padmanabh Kulkarni<kulkarnipadmanabh@gmail.com>
+ * @author shantanoo@gmail.com
+ */
+$lang['menu']                  = 'फेर बदल व्यवस्थापक';
+$lang['filter']                = 'भंकस पाने शोधा';
+$lang['revert']                = 'निवडलेली पानातील बदल रद्द करा';
+$lang['reverted']              = '%s फेरबदलून %s आवृत्तिमधे आणला आहे';
+$lang['removed']               = '%s काढला आहे.';
+$lang['revstart']              = 'फेरबदलाची प्रक्रिया चालु झाली आहे.याला बराच वेळ लागू शकतो. जर स्क्रिप्ट सम्पण्याआधि त्याची कालमर्यादा उलटून गेली तर छोट्या-छोट्या तुकड्यांमधे फेरबदल करा.';
+$lang['revstop']               = 'फेरबदलाची प्रक्रिया यशस्वीरीत्या पूर्ण झाली.';
+$lang['note1']                 = 'टीप : हा शोध केस-सेंसिटिव आहे ( फ़क्त इंग्रजीसाठी लागू )';
+$lang['note2']                 = 'टीप : हे पान फेरबदल करून ज्या शेवटच्या आवृत्तिमधे <i>%s</i> हा दिलेला भंकस शब्द नाही त्यात बदलले जाईल.';
diff --git a/wiki/lib/plugins/revert/lang/ne/lang.php b/wiki/lib/plugins/revert/lang/ne/lang.php
new file mode 100644
index 0000000..8bd7c33
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ne/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
+ * @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
+ * @author Saroj Dhakal<lotusnagarkot@yahoo.com>
+ */
+$lang['menu']                  = 'पूर्वस्थिती व्यवस्थापक';
+$lang['filter']                = 'स्प्यामयुक्त पृष्ठहरु खोज्नुहोस् ';
+$lang['revert']                = 'छानिएक पृष्ठहरुलाई पूर्वस्थितिमा फर्काउनुहोस् ।';
+$lang['reverted']              = '%s लाई  %s संस्करणमा फर्काइयो ।';
+$lang['removed']               = '%s लाई हटाइयो ।';
+$lang['revstart']              = 'पूर्वस्थितिमा फर्काउने कार्य सुरु भयो । यसले लामो समय लिन सक्छ। यदि स्क्रिप्टको समय का्र्य सकिनु पूर्व सकियो भने । तपाईले सानो सानो टुक्रा लिएर पुर्वरुपमा फर्काउनु पर्ने हुन्छ ।';
+$lang['revstop']               = 'पूर्वस्थितिमा फर्काउने कार्य सफलतापूर्वक सकियो ।';
+$lang['note1']                 = 'नोट: यो खोज वर्ण सम्वेदनशील छ';
diff --git a/wiki/lib/plugins/revert/lang/nl/intro.txt b/wiki/lib/plugins/revert/lang/nl/intro.txt
new file mode 100644
index 0000000..efa3258
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/nl/intro.txt
@@ -0,0 +1,3 @@
+===== Herstel =====
+
+Deze pagina helpt u bij het herstellen van pagina's na een spam-aanval. Vul een zoekterm in (bijvoorbeeld een spam url) om een lijst te krijgen van bekladde pagina's, bevestig dat de pagina's inderdaad spam bevatten en herstel de wijzigingen.
diff --git a/wiki/lib/plugins/revert/lang/nl/lang.php b/wiki/lib/plugins/revert/lang/nl/lang.php
new file mode 100644
index 0000000..d26c87d
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/nl/lang.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wouter Schoot <wouter@schoot.org>
+ * @author John de Graaff <john@de-graaff.net>
+ * @author Niels Schoot <niels.schoot@quintiq.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Danny Rotsaert <danny.rotsaert@edpnet.be>
+ * @author Marijn Hofstra <hofstra.m@gmail.com>
+ * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
+ * @author Gerrit <klapinklapin@gmail.com>
+ * @author Remon <no@email.local>
+ * @author Rene <wllywlnt@yahoo.com>
+ */
+$lang['menu']                  = 'Herstel';
+$lang['filter']                = 'Zoek naar bekladde pagina\'s';
+$lang['revert']                = 'Herstel geselecteerde pagina\'s';
+$lang['reverted']              = '%s hersteld naar revisie %s';
+$lang['removed']               = '%s verwijderd';
+$lang['revstart']              = 'Herstelproces is begonnen. Dit kan een lange tijd duren. Als het script een timeout genereert voor het klaar is, moet je in kleinere delen herstellen.';
+$lang['revstop']               = 'Herstelproces succesvol afgerond.';
+$lang['note1']                 = 'NB: deze zoekopdracht is hoofdlettergevoelig';
+$lang['note2']                 = 'NB: de pagina zal hersteld worden naar de laatste versie waar de opgegeven spam-term <i>%s</i> niet op voorkomt.';
diff --git a/wiki/lib/plugins/revert/lang/no/intro.txt b/wiki/lib/plugins/revert/lang/no/intro.txt
new file mode 100644
index 0000000..d8288b2
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/no/intro.txt
@@ -0,0 +1,3 @@
+====== Tilbakestillingsbehandler ======
+
+Denne siden hjelper deg å automatisk reversere sider som er blitt forsøplet. For å vise en liste over forsøplede sider, skriv inn en søkestreng (f.eks. en søppel-URL). Velg deretter hvilke av sidene i søkeresultatet som skal tilbakestilles.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/no/lang.php b/wiki/lib/plugins/revert/lang/no/lang.php
new file mode 100644
index 0000000..88c25af
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/no/lang.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Thomas Nygreen <nygreen@gmail.com>
+ * @author Arild Burud <arildb@met.no>
+ * @author Torkill Bruland <torkar-b@online.no>
+ * @author Rune M. Andersen <rune.andersen@gmail.com>
+ * @author Jakob Vad Nielsen (me@jakobnielsen.net)
+ * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
+ * @author Knut Staring <knutst@gmail.com>
+ * @author Lisa Ditlefsen <lisa@vervesearch.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
+ * @author Thomas Juberg <Thomas.Juberg@Gmail.com>
+ * @author Boris <boris@newton-media.no>
+ * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
+ * @author Danny Buckhof <daniel.raknes@hotmail.no>
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ * @author Patrick Sletvold <patricksletvold@hotmail.com>
+ */
+$lang['menu']                  = 'Tilbakestillingsbehandler';
+$lang['filter']                = 'Søk etter søppelmeldinger';
+$lang['revert']                = 'Tilbakestill valgte sider';
+$lang['reverted']              = '%s tilbakestilt til revisjon %s';
+$lang['removed']               = '%s fjernet';
+$lang['revstart']              = 'Prosessen med tilbakestilling er startet. Hvis det skjer et
+tidsavbrudd før prosessen er ferdig, må du tilbakestille
+færre sider om gangen.';
+$lang['revstop']               = 'Tilbakestillingen er fullført.';
+$lang['note1']                 = 'Merk: søket skiller mellom store og små bokstaver';
+$lang['note2']                 = 'Merk: sidene vil bli tilbakestilt til den siste versjonen som ikke inneholder søppelteksten: <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/pl/intro.txt b/wiki/lib/plugins/revert/lang/pl/intro.txt
new file mode 100644
index 0000000..410948a
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/pl/intro.txt
@@ -0,0 +1,3 @@
+====== Menadżer przywracania ======
+
+Menadżer przywracania przeznaczony jest do automatycznego naprawiania stron, które uległy wandalizmom. W celu naprawienia uszkodzonych stron, wyszukaj je a następnie oznacz i przywróć poprzednie wersje.
diff --git a/wiki/lib/plugins/revert/lang/pl/lang.php b/wiki/lib/plugins/revert/lang/pl/lang.php
new file mode 100644
index 0000000..2793796
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/pl/lang.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Grzegorz Żur <grzegorz.zur@gmail.com>
+ * @author Mariusz Kujawski <marinespl@gmail.com>
+ * @author Maciej Kurczewski <pipijajko@gmail.com>
+ * @author Sławomir Boczek <slawkens@gmail.com>
+ * @author sleshek <sleshek@wp.pl>
+ * @author Leszek Stachowski <shazarre@gmail.com>
+ * @author maros <dobrimaros@yahoo.pl>
+ * @author Grzegorz Widła <dzesdzes@gmail.com>
+ * @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['menu']                  = 'Menadżer przywracania';
+$lang['filter']                = 'Wyszukaj uszkodzone strony';
+$lang['revert']                = 'Napraw zaznaczone strony';
+$lang['reverted']              = 'Stronę %s zastąpiono wersją %s';
+$lang['removed']               = 'Stronę %s usunięto';
+$lang['revstart']              = 'Naprawa rozpoczęta. To może zająć kilka minut. Jeśli strona przestanie się ładować, spróbuj ponownie zaznaczając mniejszą liczbę stron.';
+$lang['revstop']               = 'Naprawa zakończona pomyślnie!';
+$lang['note1']                 = 'Uwaga: duże i małe litery są rozróżniane';
+$lang['note2']                 = 'Uwaga: zostanie przywrócona ostatnia wersja strony niezawierająca wyrażenia <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/pt-br/intro.txt b/wiki/lib/plugins/revert/lang/pt-br/intro.txt
new file mode 100644
index 0000000..5ce9890
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/pt-br/intro.txt
@@ -0,0 +1,3 @@
+====== Gerenciador de Reversões ======
+
+Essa página ajuda a reverter automaticamente um ataque de spam. Para encontrar as páginas que sofreram ataque, primeiro entre com um termo na busca (ex.: a URL do spam), então confirme que as páginas encontradas são realmente spam e reverta as edições.
diff --git a/wiki/lib/plugins/revert/lang/pt-br/lang.php b/wiki/lib/plugins/revert/lang/pt-br/lang.php
new file mode 100644
index 0000000..93337b6
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/pt-br/lang.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Felipe Castro <fefcas@gmail.com>
+ * @author Lucien Raven <lucienraven@yahoo.com.br>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Flávio Veras <flaviove@gmail.com>
+ * @author Jeferson Propheta <jeferson.propheta@gmail.com>
+ * @author jair.henrique <jair.henrique@gmail.com>
+ * @author Luis Dantas <luis@dantas.com>
+ * @author Sergio Motta <sergio@cisne.com.br>
+ * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
+ * @author Victor Westmann <victor.westmann@gmail.com>
+ */
+$lang['menu']                  = 'Gerenciador de reversões';
+$lang['filter']                = 'Procura por páginas com spam';
+$lang['revert']                = 'Reverte as páginas selecionadas';
+$lang['reverted']              = '%s revertida para a revisão %s';
+$lang['removed']               = '%s removida';
+$lang['revstart']              = 'O processo de reversão foi iniciado. Isso pode levar muito tempo. Se o tempo de execução do script expirar antes dele encerrar, você deverá tentar novamente usando blocos menores.';
+$lang['revstop']               = 'O processo de reversão terminou com sucesso.';
+$lang['note1']                 = 'Nota: esta busca diferencia maiúsculas/minúsculas';
+$lang['note2']                 = 'Nota: a página será revertida para a última versão que não contém o termo de spam <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/pt/intro.txt b/wiki/lib/plugins/revert/lang/pt/intro.txt
new file mode 100644
index 0000000..7adfe5f
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/pt/intro.txt
@@ -0,0 +1,3 @@
+====== Gerir Reversões ======
+
+Esta página ajuda a reverter automaticamente de um ataque spam. Para encontrar as páginas afectadas insira primeiro um texto de pesquisa (i.e spam URL), confirme as páginas encontradas como sendo resultantes de um ataque spam e reverta essas edições.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/pt/lang.php b/wiki/lib/plugins/revert/lang/pt/lang.php
new file mode 100644
index 0000000..665b846
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/pt/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Fil <fil@meteopt.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author José Campos zecarlosdecampos@gmail.com
+ */
+$lang['menu']                  = 'Gestor de Reversões';
+$lang['filter']                = 'Pesquisar por páginas "spammy"';
+$lang['revert']                = 'Reverter páginas seleccionadas';
+$lang['reverted']              = '%s revertida para revisão %s';
+$lang['removed']               = '%s removidas.';
+$lang['revstart']              = 'Processo de reversão iniciado. A sua execução pode demorar. Se der timeout antes de terminar então é preciso escolher quantidades menores de páginas a reverter.';
+$lang['revstop']               = 'Processo de reversão bem sucedido.';
+$lang['note1']                 = 'Nota: a pesquisa é case-sensitive';
+$lang['note2']                 = 'Nota: a página será revertida para a versão anterior que não contém os termos spam pesquisados: <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/ro/intro.txt b/wiki/lib/plugins/revert/lang/ro/intro.txt
new file mode 100644
index 0000000..3a03035
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ro/intro.txt
@@ -0,0 +1,3 @@
+====== Manager Reveniri ======
+
+Această pagină ajută revenirea automată în cazul unui atac spam. Pentru a găsi o listă a paginilor cu spam, întroduceţi mai întâi un şir de căutat (de ex. Un URL spam), apoi confirmaţi dacă paginile găsite conţin într-adevăr spam şi anulaţi editările.
diff --git a/wiki/lib/plugins/revert/lang/ro/lang.php b/wiki/lib/plugins/revert/lang/ro/lang.php
new file mode 100644
index 0000000..663447e
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ro/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sergiu Baltariu <s_baltariu@yahoo.com>
+ * @author s_baltariu@yahoo.com
+ * @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
+ */
+$lang['menu']                  = 'Manager Reveniri';
+$lang['filter']                = 'Caută pagini cu posibil spam';
+$lang['revert']                = 'Revenire pentru paginile selectate';
+$lang['reverted']              = '%s revenită la versiunea %s';
+$lang['removed']               = '%s eliminată';
+$lang['revstart']              = 'Procesul de revenire a început. Acesta poate dura mult timp.Dacă scriptul expiră înainte de finalizare, trebuie să reveniţi în paşi mai mici.';
+$lang['revstop']               = 'Procesul de revenire s-a finalizat cu succes.';
+$lang['note1']                 = 'Notă: această căutare este sensibilă la majuscule.';
+$lang['note2']                 = 'Notă: pagina va reveni la ultima versiune ce nu conţine termenul de spam <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/ru/intro.txt b/wiki/lib/plugins/revert/lang/ru/intro.txt
new file mode 100644
index 0000000..52d1f8d
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ru/intro.txt
@@ -0,0 +1,3 @@
+====== Менеджер откаток ======
+
+Эта страница поможет вам в автоматической откатке изменений после спам-атаки. Для того, чтобы найти спам-страницы, введите ключевые слова и произведите поиск (например, по URL спамера). Затем убедитесь, что найденные страницы действительно содержат спам и сделайте откатку изменений.
diff --git a/wiki/lib/plugins/revert/lang/ru/lang.php b/wiki/lib/plugins/revert/lang/ru/lang.php
new file mode 100644
index 0000000..5de67b4
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/ru/lang.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Denis Simakov <akinoame1@gmail.com>
+ * @author Andrew Pleshakov <beotiger@mail.ru>
+ * @author Змей Этерийский <evil_snake@eternion.ru>
+ * @author Hikaru Nakajima <jisatsu@mail.ru>
+ * @author Alexei Tereschenko <alexeitlex@yahoo.com>
+ * @author Alexander Sorkin <kibizoid@gmail.com>
+ * @author Kirill Krasnov <krasnovforum@gmail.com>
+ * @author Vlad Tsybenko <vlad.development@gmail.com>
+ * @author Aleksey Osadchiy <rfc@nm.ru>
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
+ */
+$lang['menu']                  = 'Менеджер откаток';
+$lang['filter']                = 'Поиск спам-страниц';
+$lang['revert']                = 'Откатить изменения для выбранных страниц';
+$lang['reverted']              = '%s возвращена к версии %s';
+$lang['removed']               = '%s удалена';
+$lang['revstart']              = 'Начат процесс откатки. Он может занять много времени. Если скрипт не успевает завершить работу и выдаёт ошибку, необходимо произвести откатку более маленькими частями.';
+$lang['revstop']               = 'Процесс откатки успешно завершён.';
+$lang['note1']                 = 'Замечание: поиск с учётом регистра';
+$lang['note2']                 = 'Замечание: страница будет восстановлена до последней версии, не содержащей спам-термин <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/sk/intro.txt b/wiki/lib/plugins/revert/lang/sk/intro.txt
new file mode 100644
index 0000000..aa75a2c
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sk/intro.txt
@@ -0,0 +1,3 @@
+====== Obnova dát ======
+
+Táto stránka slúži na automatické obnovenie obsahu stránok po útoku spamom. Pre identifikáciu napadnutých stránok zadajte vyhľadávací reťazec (napr. spam URL), potom potvrďte, že nájdené stránky sú skutočne napadnuté, a zrušte posledné zmeny.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/sk/lang.php b/wiki/lib/plugins/revert/lang/sk/lang.php
new file mode 100644
index 0000000..f251aac
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sk/lang.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Michal Mesko <michal.mesko@gmail.com>
+ * @author exusik <exusik@gmail.com>
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['menu']                  = 'Obnova dát';
+$lang['filter']                = 'Hľadať spamerské stránky';
+$lang['revert']                = 'Vrátiť vybrané stránky';
+$lang['reverted']              = '%s vrátená na revíziu %s';
+$lang['removed']               = '%s odstránená';
+$lang['revstart']              = 'Proces reverzie bol spustený. Toto môže trvať dlhý čas. Ak skript prekročí daný maximálny časový interval pred tým, ako skončí, musíte urobiť reverziu v menších dávkach.';
+$lang['revstop']               = 'Proces reverzie sa úspešne skončil.';
+$lang['note1']                 = 'Poznámka: vyhľadávanie rozlišuje medzi veľkými a malými písmenami';
+$lang['note2']                 = 'Poznámka: táto stránka bude vrátená do poslednej verzie, ktorá neobsahuje spamový výraz <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/sl/intro.txt b/wiki/lib/plugins/revert/lang/sl/intro.txt
new file mode 100644
index 0000000..4e2cabf
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sl/intro.txt
@@ -0,0 +1,3 @@
+====== Povrnitev okvarjene vsebine ======
+
+Na tej strani je mogoče povrniti vsebino wiki strani na izvorne vrednosti po napadu na stran in vpisu neželenih vsebin. Za iskanje strani z neželeno vsebino, uporabite iskalnik z ustreznim nizom (npr. naslov URL), potem pa potrdite, da so najdene strani res z neželeno vsebino in nato povrnite stanje na zadnjo pravo različico.
diff --git a/wiki/lib/plugins/revert/lang/sl/lang.php b/wiki/lib/plugins/revert/lang/sl/lang.php
new file mode 100644
index 0000000..9ca8f8f
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sl/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matej Urbančič (mateju@svn.gnome.org)
+ */
+$lang['menu']                  = 'Povrnitev okvarjene vsebine';
+$lang['filter']                = 'Iskanje strani z neželeno vsebino';
+$lang['revert']                = 'Povrni izbrane strani';
+$lang['reverted']              = 'stran %s je povrnjena na različico %s';
+$lang['removed']               = 'stran %s je odstranjena';
+$lang['revstart']              = 'Postopek povrnitve vsebine je začet. Opravilo je lahko dolgotrajno. V kolikor opravilo časovno poteče prek končanjem povrnitve, bo treba postopek ponoviti na manjših odsekih.';
+$lang['revstop']               = 'Postopek povrnitve vsebine je uspešno končan.';
+$lang['note1']                 = 'Opomba: iskanje upošteva velikost črk';
+$lang['note2']                 = 'Opomba: stran bo povrnjena na zadnjo različico brez neželenega pojma <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/sq/intro.txt b/wiki/lib/plugins/revert/lang/sq/intro.txt
new file mode 100644
index 0000000..25e16b6
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sq/intro.txt
@@ -0,0 +1,3 @@
+====== Menaxhuesi Rikthimit ======
+
+Kjo faqe ndihmon për rikthimin automatik në rast të një sulmi spam. Për të gjetur një listë me faqe spam në fillim fut një varg kërkimi (psh një URL spam), dhe pastaj konfirmo që faqet e gjetura janë me të vërtetë spam dhe rikthe redaktimet.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/sq/lang.php b/wiki/lib/plugins/revert/lang/sq/lang.php
new file mode 100644
index 0000000..45ae499
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sq/lang.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Albanian language file
+ *
+ * @author Leonard Elezi leonard.elezi@depinfo.info
+ */
+$lang['menu']                  = 'Menaxhuesi Rikthimit';
+$lang['filter']                = 'Kërko faqe me spam';
+$lang['revert']                = 'Rikthe faqet e përzgjedhura';
+$lang['reverted']              = '%s u rikthye në rishikimin %s';
+$lang['removed']               = '%s u hoq';
+$lang['revstart']              = 'Proçesi i rikthimit filloi. Kjo mund të zgjasë për një kohë të gjatë. Nëse koha e skriptit mbaron para përfundimit, atëherë rikthimi duhet të bëhet me copa të vogla.';
+$lang['revstop']               = 'Proçesi i rikthimit mbaroi me sukses.';
+$lang['note1']                 = 'Shënim: në këtë kërkim bëhet dallim midis gërmave kapitale dhe gërmave të vogla.';
+$lang['note2']                 = 'Shënim: faqja do të rikthehet në versionin e fundit që nuk përmban term-in spam të dhënë <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/sr/intro.txt b/wiki/lib/plugins/revert/lang/sr/intro.txt
new file mode 100644
index 0000000..8c288e7
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sr/intro.txt
@@ -0,0 +1,3 @@
+====== Управљач за враћање ======
+
+Ова страна вам помаже од напада спама аутоматским враћањем на старе верзије страница.  Да бисте пронашли спамоване странице откуцајте реч за претрагу (тј. реч која се појављује у спаму), затим потврдите да се на пронађеним страницама стварно налази спам и онда вратите на стање пре промена.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/sr/lang.php b/wiki/lib/plugins/revert/lang/sr/lang.php
new file mode 100644
index 0000000..e0ac439
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sr/lang.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Иван Петровић petrovicivan@ubuntusrbija.org
+ * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Miroslav Šolti <solti.miroslav@gmail.com>
+ */
+$lang['menu']                  = 'Управљач за враћање';
+$lang['filter']                = 'Претрага спам страница';
+$lang['revert']                = 'Врати одабране странице';
+$lang['reverted']              = '%s враћена на ревизију %s';
+$lang['removed']               = '%s је уклоњена';
+$lang['revstart']              = 'Процес враћања је покренут. Може потрајати дуже време. Ако истекне време пре завршетка потребно је да покренете у мањим деловима.';
+$lang['revstop']               = 'Процес враћања је успешно завршен.';
+$lang['note1']                 = 'Напомена: ова претрага разликује велика и мала слова';
+$lang['note2']                 = 'Напомена: страница ће бити враћена на последњу верзију која не садржи спам израз <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/sv/intro.txt b/wiki/lib/plugins/revert/lang/sv/intro.txt
new file mode 100644
index 0000000..cd7f322
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sv/intro.txt
@@ -0,0 +1,3 @@
+====== Hantera återställningar ======
+
+Den här sidan hjälper till med automatiskt återställning efter en spamattack. För att hitta spammade sidor, ange först en söksträng (till exempel en webbadress). Kontrollera sedan att sidorna som hittades verkligen är spam, och återställ sedan redigeringarna.
diff --git a/wiki/lib/plugins/revert/lang/sv/lang.php b/wiki/lib/plugins/revert/lang/sv/lang.php
new file mode 100644
index 0000000..7cff7ff
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/sv/lang.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ * @author Per Foreby <per@foreby.se>
+ * @author Nicklas Henriksson <nicklas[at]nihe.se>
+ * @author Håkan Sandell <hakan.sandell@home.se>
+ * @author Dennis Karlsson
+ * @author Tormod Otter Johansson <tormod@latast.se>
+ * @author Pontus Bergendahl <pontus.bergendahl@gmail.com>
+ * @author Emil Lind <emil@sys.nu>
+ * @author Bogge Bogge <bogge@bogge.com>
+ * @author Peter Åström <eaustreum@gmail.com>
+ * @author Henrik <henrik@idealis.se>
+ * @author Hans Iwan Bratt <hibratt@gmail.com>
+ * @author Mikael Bergström <krank23@gmail.com>
+ */
+$lang['menu']                  = 'Hantera återställningar';
+$lang['filter']                = 'Sök efter spamsidor';
+$lang['revert']                = 'Återställ markerade redigeringar';
+$lang['reverted']              = '%s återställd till version %s';
+$lang['removed']               = '%s borttagen';
+$lang['revstart']              = 'Återställningen startad. Detta kan ta lång tid. Om
+                     skriptet får en timeout innan det är färdigt måste du köra återställningen
+                     med färre sidor åt gången.';
+$lang['revstop']               = 'Återställningen avslutades utan problem.';
+$lang['note1']                 = 'OBS: sökningen skiljer på stora och små bokstäver';
+$lang['note2']                 = 'OBS: sidan kommer att återställas till den senaste versionen som inte innehåller den angivna söksträngen <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/th/intro.txt b/wiki/lib/plugins/revert/lang/th/intro.txt
new file mode 100644
index 0000000..2bfd27e
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/th/intro.txt
@@ -0,0 +1,3 @@
+====== ตัวจัดการกู้คืนสภาพเอกสาร ======
+
+หน้านี้จะช่วยคุณด้วยการกู้คืนหน้าที่ถูกแสปมโดยอัตโนมัติ เพื่อที่จะค้นหารายการหน้าที่ถูกสแปม อันดับแรกให้กรอกข้อความสืบค้น (เช่น URL เว็บโฆษณาที่มาสแปมไว้), จากนั้นให้ยืนยันว่าเพจที่พบนั้นถูกสแปมจริงๆ แล้วจึงสั่งคืนสภาพต้นฉบับ
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/th/lang.php b/wiki/lib/plugins/revert/lang/th/lang.php
new file mode 100644
index 0000000..7b6217b
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/th/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Komgrit Niyomrath <n.komgrit@gmail.com>
+ * @author Kittithat Arnontavilas mrtomyum@gmail.com
+ * @author Arthit Suriyawongkul <arthit@gmail.com>
+ * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
+ * @author Thanasak Sompaisansin <jombthep@gmail.com>
+ */
+$lang['menu']                  = 'ตัวจัดการคืนสภาพเอกสารฉบับเดิม';
+$lang['filter']                = 'ค้นหาเพจที่ถูกแสปม';
+$lang['revert']                = 'คืนสภาพเพจที่เลือกไว้';
+$lang['reverted']              = 'คืนสภาพ %s กลับไปเป็นฉบับ %s';
+$lang['removed']               = 'ถอดทิ้ง %s';
+$lang['revstart']              = 'กระบวนการคืนสภาพได้เริ่มต้นแล้ว นี่อาจต้องใช้เวลานาน ถ้าหมดเวลาที่กำหนดสำหรับสคริปต์ก่อนที่จะสำเร็จ คุณต้องไปทำการแบ่งข้อมูลให้เล็กลงเพื่อการคืนสภาพทีละส่วน';
+$lang['revstop']               = 'กระบวนการคืนสภาพสำเร็จเรียบร้อย';
+$lang['note1']                 = 'คำเตือน: การค้นนี้นับตัวพิมพ์ใหญ่เล็ก (case sensitive)';
+$lang['note2']                 = 'คำเตือน: เพจจะถูกคืนสภาพไปยังรุ่นล่าสุดที่ไม่มีประโยคสแปมนี้ <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/tr/intro.txt b/wiki/lib/plugins/revert/lang/tr/intro.txt
new file mode 100644
index 0000000..ff12399
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/tr/intro.txt
@@ -0,0 +1,3 @@
+====== Eskiye Döndürme Yöneticisi ======
+
+Bu sayfa spam saldırılarına karşı otomatik eski haline çevirim yapmanızı sağlar. Spam içerikli sayfayı bulmak için bir anahtar kelime girin (mesela spam URLsi), daha sonra spame maruz kalan sayfalar olduğundan emin olup eski haline çevirin.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/tr/lang.php b/wiki/lib/plugins/revert/lang/tr/lang.php
new file mode 100644
index 0000000..52d28c6
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/tr/lang.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Aydın Coşkuner <aydinweb@gmail.com>
+ * @author Cihan Kahveci <kahvecicihan@gmail.com>
+ * @author Yavuz Selim <yavuzselim@gmail.com>
+ * @author Caleb Maclennan <caleb@alerque.com>
+ * @author farukerdemoncel@gmail.com
+ */
+$lang['menu']                  = 'Eskiye Döndürme';
+$lang['filter']                = 'Spam bulunan sayfaları ara';
+$lang['revert']                = 'Seçili sayfaları eskiye döndür';
+$lang['reverted']              = '%s  %s sürümüne geri çevrildi.  ';
+$lang['removed']               = '%s kaldırıldı';
+$lang['revstart']              = 'Eskiye döndürme işlemi başlatıldı. Bu işlem uzun sürebilir. Eğer script işlemi tamamlayamadan zaman aşımına uğrarsa küçük parçalar halinde işlemi uygulayın.';
+$lang['revstop']               = 'Eskiye döndürme işlemi başarıyla tamamlandı.';
+$lang['note1']                 = 'Not: bu aramada küçük harf büyük harf ayrımı vardır.';
+$lang['note2']                 = 'Not: bu sayfa <i>%s</i> spam kelimelerini içermeyen son haline geri çevirilecektir.';
diff --git a/wiki/lib/plugins/revert/lang/uk/intro.txt b/wiki/lib/plugins/revert/lang/uk/intro.txt
new file mode 100644
index 0000000..7bf5dfc
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/uk/intro.txt
@@ -0,0 +1,3 @@
+====== Менеджер відновлення ======
+
+Ця сторінка дозволяє вам автоматично відновлюватися після спамерських атак. Для створення списку зіпсутих сторінок спочатку введіть рядок (напр. спамерське посилання), а потім підтвердіть, що знайдена сторінка дійсно є спамом і відновіть редагування.
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/uk/lang.php b/wiki/lib/plugins/revert/lang/uk/lang.php
new file mode 100644
index 0000000..f56c0eb
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/uk/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author serg_stetsuk <serg_stetsuk@ukr.net>
+ * @author Oleksandr Kunytsia <okunia@gmail.com>
+ */
+$lang['menu']                  = 'Менеджер відновлення';
+$lang['filter']                = 'Пошук спамних сторінок';
+$lang['revert']                = 'Відновити обрані сторінки';
+$lang['reverted']              = '%s відновлено до версії %s';
+$lang['removed']               = '%s вилучено';
+$lang['revstart']              = 'Розпочато процес відновлення. Це може зайняти багато часу. Якщо скрипт не закінчує роботу до таймауту, необхідно відновлювати меншими частинами.';
+$lang['revstop']               = 'Процес відновлення успішно закінчено.';
+$lang['note1']                 = 'Увага: пошук залежить від регістру символів';
+$lang['note2']                 = 'Увага: сторінку буде відновлено до останньої версії, яка не містить спамерського терміну <i>%s</i>.';
diff --git a/wiki/lib/plugins/revert/lang/zh-tw/intro.txt b/wiki/lib/plugins/revert/lang/zh-tw/intro.txt
new file mode 100644
index 0000000..b6da47e
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/zh-tw/intro.txt
@@ -0,0 +1,3 @@
+====== 還原管理器 ======
+
+本頁面能幫助您自動還原遭垃圾訊息攻擊的頁面。先輸入關鍵字詞,搜尋包含垃圾訊息的頁面(例如垃圾訊息的 URL),確認找到的頁面確實包含垃圾訊息,再將它們還原。
\ No newline at end of file
diff --git a/wiki/lib/plugins/revert/lang/zh-tw/lang.php b/wiki/lib/plugins/revert/lang/zh-tw/lang.php
new file mode 100644
index 0000000..4ff1d10
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/zh-tw/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Li-Jiun Huang <ljhuang.tw@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-simptrad.html
+ * @author Wayne San <waynesan@zerozone.tw>
+ * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
+ * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin <danny0838@pchome.com.tw>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author syaoranhinata@gmail.com
+ * @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ */
+$lang['menu']                  = '還原管理';
+$lang['filter']                = '搜索包含垃圾訊息的頁面';
+$lang['revert']                = '還原選取的頁面';
+$lang['reverted']              = '%s 已還原成版本 %s';
+$lang['removed']               = '%s 已移除';
+$lang['revstart']              = '已開始還原操作。有可能需要很長時間。如果程式執行逾時,請嘗試分次還原少量內容。';
+$lang['revstop']               = '還原程序已完成。';
+$lang['note1']                 = '注意:搜尋區分大小寫';
+$lang['note2']                 = '注意:我們將把此頁面還原作最後一個不含垃圾訊息 <i>%s</i> 的版本。';
diff --git a/wiki/lib/plugins/revert/lang/zh/intro.txt b/wiki/lib/plugins/revert/lang/zh/intro.txt
new file mode 100644
index 0000000..c697f8a
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/zh/intro.txt
@@ -0,0 +1,3 @@
+====== 还原管理器 ======
+
+该页面能帮助您的页面从垃圾信息的攻击中自动还原过来。 请先输入关键词搜索包含垃圾信息的页面(如某个垃圾信息的 URL),然后请确定搜索结果的确包含垃圾信息,并将其还原至先前的修订版。
diff --git a/wiki/lib/plugins/revert/lang/zh/lang.php b/wiki/lib/plugins/revert/lang/zh/lang.php
new file mode 100644
index 0000000..60a7ba4
--- /dev/null
+++ b/wiki/lib/plugins/revert/lang/zh/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ZDYX <zhangduyixiong@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-tradsimp.html
+ * @author Simon zhan <simonzhan@21cn.com>
+ * @author ben <ben@livetom.com>
+ * @author lainme <lainme993@gmail.com>
+ * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ */
+$lang['menu']                  = '还原管理器';
+$lang['filter']                = '搜索包含垃圾信息的页面';
+$lang['revert']                = '还原选中的页面';
+$lang['reverted']              = '%s 还原至修订版 %s';
+$lang['removed']               = '%s 已移除';
+$lang['revstart']              = '已开始还原操作。有可能需要很长时间。如果计时器在还原操作完成前停止了,请尝试还原较少的内容。';
+$lang['revstop']               = '还原操作成功完成。';
+$lang['note1']                 = '请注意:本次搜索区分大小写';
+$lang['note2']                 = '请注意:本页面将被还原至不包含给定垃圾信息 <i>%s</i> 的最近的修订版。';
diff --git a/wiki/lib/plugins/revert/plugin.info.txt b/wiki/lib/plugins/revert/plugin.info.txt
new file mode 100644
index 0000000..bba939d
--- /dev/null
+++ b/wiki/lib/plugins/revert/plugin.info.txt
@@ -0,0 +1,7 @@
+base   revert
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-15
+name   Revert Manager
+desc   Allows you to mass revert recent edits to remove Spam or vandalism
+url    http://dokuwiki.org/plugin:revert
diff --git a/wiki/lib/plugins/safefnrecode/action.php b/wiki/lib/plugins/safefnrecode/action.php
new file mode 100644
index 0000000..9127f8d
--- /dev/null
+++ b/wiki/lib/plugins/safefnrecode/action.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * DokuWiki Plugin safefnrecode (Action Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if (!defined('DOKU_INC')) die();
+
+require_once DOKU_PLUGIN.'action.php';
+
+class action_plugin_safefnrecode extends DokuWiki_Action_Plugin {
+
+    public function register(Doku_Event_Handler $controller) {
+
+        $controller->register_hook('INDEXER_TASKS_RUN', 'BEFORE', $this, 'handle_indexer_tasks_run');
+
+    }
+
+    public function handle_indexer_tasks_run(Doku_Event &$event, $param) {
+        global $conf;
+        if($conf['fnencode'] != 'safe') return;
+
+        if(!file_exists($conf['datadir'].'_safefn.recoded')){
+            $this->recode($conf['datadir']);
+            touch($conf['datadir'].'_safefn.recoded');
+        }
+
+        if(!file_exists($conf['olddir'].'_safefn.recoded')){
+            $this->recode($conf['olddir']);
+            touch($conf['olddir'].'_safefn.recoded');
+        }
+
+        if(!file_exists($conf['metadir'].'_safefn.recoded')){
+            $this->recode($conf['metadir']);
+            touch($conf['metadir'].'_safefn.recoded');
+        }
+
+        if(!file_exists($conf['mediadir'].'_safefn.recoded')){
+            $this->recode($conf['mediadir']);
+            touch($conf['mediadir'].'_safefn.recoded');
+        }
+
+    }
+
+    /**
+     * Recursive function to rename all safe encoded files to use the new
+     * square bracket post indicator
+     */
+    private function recode($dir){
+        $dh = opendir($dir);
+        if(!$dh) return;
+        while (($file = readdir($dh)) !== false) {
+            if($file == '.' || $file == '..') continue;           # cur and upper dir
+            if(is_dir("$dir/$file")) $this->recode("$dir/$file"); #recurse
+            if(strpos($file,'%') === false) continue;             # no encoding used
+            $new = preg_replace('/(%[^\]]*?)\./','\1]',$file);    # new post indicator
+            if(preg_match('/%[^\]]+$/',$new)) $new .= ']';        # fix end FS#2122
+            rename("$dir/$file","$dir/$new");                     # rename it
+        }
+        closedir($dh);
+    }
+
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/wiki/lib/plugins/safefnrecode/plugin.info.txt b/wiki/lib/plugins/safefnrecode/plugin.info.txt
new file mode 100644
index 0000000..3c6249d
--- /dev/null
+++ b/wiki/lib/plugins/safefnrecode/plugin.info.txt
@@ -0,0 +1,7 @@
+base   safefnrecode
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2012-07-28
+name   safefnrecode plugin
+desc   Changes existing page and foldernames for the change in the safe filename encoding
+url    http://www.dokuwiki.org/plugin:safefnrecode
diff --git a/wiki/lib/plugins/styling/README b/wiki/lib/plugins/styling/README
new file mode 100644
index 0000000..a1a5e89
--- /dev/null
+++ b/wiki/lib/plugins/styling/README
@@ -0,0 +1,27 @@
+styling Plugin for DokuWiki
+
+Allows to edit style.ini replacements
+
+All documentation for this plugin can be found at
+https://www.dokuwiki.org/plugin:styling
+
+If you install this plugin manually, make sure it is installed in
+lib/plugins/styling/ - if the folder is called different it
+will not work!
+
+Please refer to http://www.dokuwiki.org/plugins for additional info
+on how to install plugins in DokuWiki.
+
+----
+Copyright (C) Andreas Gohr <andi@splitbrain.org>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; version 2 of the License
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+See the COPYING file in your DokuWiki folder for details
diff --git a/wiki/lib/plugins/styling/action.php b/wiki/lib/plugins/styling/action.php
new file mode 100644
index 0000000..896e14b
--- /dev/null
+++ b/wiki/lib/plugins/styling/action.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * DokuWiki Plugin styling (Action Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * Class action_plugin_styling
+ *
+ * This handles all the save actions and loading the interface
+ *
+ * All this usually would be done within an admin plugin, but we want to have this available outside
+ * the admin interface using our floating dialog.
+ */
+class action_plugin_styling extends DokuWiki_Action_Plugin {
+
+    /**
+     * Registers a callback functions
+     *
+     * @param Doku_Event_Handler $controller DokuWiki's event controller object
+     * @return void
+     */
+    public function register(Doku_Event_Handler $controller) {
+        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_header');
+    }
+
+    /**
+     * Adds the preview parameter to the stylesheet loading in non-js mode
+     *
+     * @param Doku_Event $event  event object by reference
+     * @param mixed      $param  [the parameters passed as fifth argument to register_hook() when this
+     *                           handler was registered]
+     * @return void
+     */
+    public function handle_header(Doku_Event &$event, $param) {
+        global $ACT;
+        global $INPUT;
+        if($ACT != 'admin' || $INPUT->str('page') != 'styling') return;
+        if(!auth_isadmin()) return;
+
+        // set preview
+        $len = count($event->data['link']);
+        for($i = 0; $i < $len; $i++) {
+            if(
+                $event->data['link'][$i]['rel'] == 'stylesheet' &&
+                strpos($event->data['link'][$i]['href'], 'lib/exe/css.php') !== false
+            ) {
+                $event->data['link'][$i]['href'] .= '&preview=1&tseed='.time();
+            }
+        }
+    }
+
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/wiki/lib/plugins/styling/admin.php b/wiki/lib/plugins/styling/admin.php
new file mode 100644
index 0000000..055ac22
--- /dev/null
+++ b/wiki/lib/plugins/styling/admin.php
@@ -0,0 +1,211 @@
+<?php
+/**
+ * DokuWiki Plugin styling (Admin Component)
+ *
+ * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
+ * @author  Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+class admin_plugin_styling extends DokuWiki_Admin_Plugin {
+
+    public $ispopup = false;
+
+    /**
+     * @return int sort number in admin menu
+     */
+    public function getMenuSort() {
+        return 1000;
+    }
+
+    /**
+     * @return bool true if only access for superuser, false is for superusers and moderators
+     */
+    public function forAdminOnly() {
+        return true;
+    }
+
+    /**
+     * handle the different actions (also called from ajax)
+     */
+    public function handle() {
+        global $INPUT;
+        $run = $INPUT->extract('run')->str('run');
+        if(!$run) return;
+        $run = "run_$run";
+        $this->$run();
+    }
+
+    /**
+     * Render HTML output, e.g. helpful text and a form
+     */
+    public function html() {
+        $class = 'nopopup';
+        if($this->ispopup) $class = 'ispopup page';
+
+        echo '<div id="plugin__styling" class="'.$class.'">';
+        ptln('<h1>'.$this->getLang('menu').'</h1>');
+        $this->form();
+        echo '</div>';
+    }
+
+    /**
+     * Create the actual editing form
+     */
+    public function form() {
+        global $conf;
+        global $ID;
+
+        $styleUtil = new \dokuwiki\StyleUtils();
+        $styleini     = $styleUtil->cssStyleini($conf['template'], true);
+        $replacements = $styleini['replacements'];
+
+        if($this->ispopup) {
+            $target = DOKU_BASE.'lib/plugins/styling/popup.php';
+        } else {
+            $target = wl($ID, array('do' => 'admin', 'page' => 'styling'));
+        }
+
+        if(empty($replacements)) {
+            echo '<p class="error">'.$this->getLang('error').'</p>';
+        } else {
+            echo $this->locale_xhtml('intro');
+
+            echo '<form class="styling" method="post" action="'.$target.'">';
+
+            echo '<table><tbody>';
+            foreach($replacements as $key => $value) {
+                $name = tpl_getLang($key);
+                if(empty($name)) $name = $this->getLang($key);
+                if(empty($name)) $name = $key;
+
+                echo '<tr>';
+                echo '<td><label for="tpl__'.hsc($key).'">'.$name.'</label></td>';
+                echo '<td><input type="text" name="tpl['.hsc($key).']" id="tpl__'.hsc($key).'" value="'.hsc($value).'" '.$this->colorClass($key).' dir="ltr" /></td>';
+                echo '</tr>';
+            }
+            echo '</tbody></table>';
+
+            echo '<p>';
+            echo '<button type="submit" name="run[preview]" class="btn_preview primary">'.$this->getLang('btn_preview').'</button> ';
+            echo '<button type="submit" name="run[reset]">'.$this->getLang('btn_reset').'</button>'; #FIXME only if preview.ini exists
+            echo '</p>';
+
+            echo '<p>';
+            echo '<button type="submit" name="run[save]" class="primary">'.$this->getLang('btn_save').'</button>';
+            echo '</p>';
+
+            echo '<p>';
+            echo '<button type="submit" name="run[revert]">'.$this->getLang('btn_revert').'</button>'; #FIXME only if local.ini exists
+            echo '</p>';
+
+            echo '</form>';
+
+            echo tpl_locale_xhtml('style');
+
+        }
+    }
+
+    /**
+     * set the color class attribute
+     */
+    protected function colorClass($key) {
+        static $colors = array(
+            'text',
+            'background',
+            'text_alt',
+            'background_alt',
+            'text_neu',
+            'background_neu',
+            'border',
+            'highlight',
+            'background_site',
+            'link',
+            'existing',
+            'missing',
+        );
+
+        if(preg_match('/colou?r/', $key) || in_array(trim($key,'_'), $colors)) {
+            return 'class="color"';
+        } else {
+            return '';
+        }
+    }
+
+    /**
+     * saves the preview.ini (alos called from ajax directly)
+     */
+    public function run_preview() {
+        global $conf;
+        $ini = $conf['cachedir'].'/preview.ini';
+        io_saveFile($ini, $this->makeini());
+    }
+
+    /**
+     * deletes the preview.ini
+     */
+    protected function run_reset() {
+        global $conf;
+        $ini = $conf['cachedir'].'/preview.ini';
+        io_saveFile($ini, '');
+    }
+
+    /**
+     * deletes the local style.ini replacements
+     */
+    protected function run_revert() {
+        $this->replaceini('');
+        $this->run_reset();
+    }
+
+    /**
+     * save the local style.ini replacements
+     */
+    protected function run_save() {
+        $this->replaceini($this->makeini());
+        $this->run_reset();
+    }
+
+    /**
+     * create the replacement part of a style.ini from submitted data
+     *
+     * @return string
+     */
+    protected function makeini() {
+        global $INPUT;
+
+        $ini = "[replacements]\n";
+        $ini .= ";These overwrites have been generated from the Template styling Admin interface\n";
+        $ini .= ";Any values in this section will be overwritten by that tool again\n";
+        foreach($INPUT->arr('tpl') as $key => $val) {
+            $ini .= $key.' = "'.addslashes($val).'"'."\n";
+        }
+
+        return $ini;
+    }
+
+    /**
+     * replaces the replacement parts in the local ini
+     *
+     * @param string $new the new ini contents
+     */
+    protected function replaceini($new) {
+        global $conf;
+        $ini = DOKU_CONF."tpl/".$conf['template']."/style.ini";
+        if(file_exists($ini)) {
+            $old = io_readFile($ini);
+            $old = preg_replace('/\[replacements\]\n.*?(\n\[.*]|$)/s', '\\1', $old);
+            $old = trim($old);
+        } else {
+            $old = '';
+        }
+
+        io_makeFileDir($ini);
+        io_saveFile($ini, "$old\n\n$new");
+    }
+
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/wiki/lib/plugins/styling/admin.svg b/wiki/lib/plugins/styling/admin.svg
new file mode 100644
index 0000000..5d73870
--- /dev/null
+++ b/wiki/lib/plugins/styling/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M17.5 12a1.5 1.5 0 0 1-1.5-1.5A1.5 1.5 0 0 1 17.5 9a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-3-4A1.5 1.5 0 0 1 13 6.5 1.5 1.5 0 0 1 14.5 5 1.5 1.5 0 0 1 16 6.5 1.5 1.5 0 0 1 14.5 8m-5 0A1.5 1.5 0 0 1 8 6.5 1.5 1.5 0 0 1 9.5 5 1.5 1.5 0 0 1 11 6.5 1.5 1.5 0 0 1 9.5 8m-3 4A1.5 1.5 0 0 1 5 10.5 1.5 1.5 0 0 1 6.5 9 1.5 1.5 0 0 1 8 10.5 1.5 1.5 0 0 1 6.5 12M12 3a9 9 0 0 0-9 9 9 9 0 0 0 9 9 1.5 1.5 0 0 0 1.5-1.5c0-.39-.15-.74-.39-1-.23-.27-.38-.62-.38-1a1.5 1.5 0 0 1 1.5-1.5H16a5 5 0 0 0 5-5c0-4.42-4.03-8-9-8z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/iris.js b/wiki/lib/plugins/styling/iris.js
new file mode 100644
index 0000000..4eda502
--- /dev/null
+++ b/wiki/lib/plugins/styling/iris.js
@@ -0,0 +1,1488 @@
+/*! Iris Color Picker - v1.0.7 - 2014-11-28
+* https://github.com/Automattic/Iris
+* Copyright (c) 2014 Matt Wiebe; Licensed GPLv2 */
+(function( $, undef ){
+	var _html, nonGradientIE, gradientType, vendorPrefixes, _css, Iris, UA, isIE, IEVersion;
+
+	_html = '<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>';
+	_css = '.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}.iris-square-handle,.ui-slider-handle{border:0;outline:0}';
+
+	// Even IE9 dosen't support gradients. Elaborate sigh.
+	UA = navigator.userAgent.toLowerCase();
+	isIE = navigator.appName === 'Microsoft Internet Explorer';
+	IEVersion = isIE ? parseFloat( UA.match( /msie ([0-9]{1,}[\.0-9]{0,})/ )[1] ) : 0;
+	nonGradientIE = ( isIE && IEVersion < 10 );
+	gradientType = false;
+
+	// we don't bother with an unprefixed version, as it has a different syntax
+	vendorPrefixes = [ '-moz-', '-webkit-', '-o-', '-ms-' ];
+
+	// Bail for IE <= 7
+	if ( nonGradientIE && IEVersion <= 7 ) {
+		$.fn.iris = $.noop;
+		$.support.iris = false;
+		return;
+	}
+
+	$.support.iris = true;
+
+	function testGradientType() {
+		var el, base,
+			bgImageString = 'backgroundImage';
+
+		if ( nonGradientIE ) {
+			gradientType = 'filter';
+		}
+		else {
+			el = $( '<div id="iris-gradtest" />' );
+			base = 'linear-gradient(top,#fff,#000)';
+			$.each( vendorPrefixes, function( i, val ){
+				el.css( bgImageString, val + base );
+				if ( el.css( bgImageString ).match( 'gradient' ) ) {
+					gradientType = i;
+					return false;
+				}
+			});
+			// check for legacy webkit gradient syntax
+			if ( gradientType === false ) {
+				el.css( 'background', '-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))' );
+				if ( el.css( bgImageString ).match( 'gradient' ) ) {
+					gradientType = 'webkit';
+				}
+			}
+			el.remove();
+		}
+
+	}
+
+	/**
+	* Only for CSS3 gradients. oldIE will use a separate function.
+	*
+	* Accepts as many color stops as necessary from 2nd arg on, or 2nd
+	* arg can be an array of color stops
+	*
+	* @param  {string} origin Gradient origin - top or left, defaults to left.
+	* @return {string}        Appropriate CSS3 gradient string for use in
+	*/
+	function createGradient( origin, stops ) {
+		origin = ( origin === 'top' ) ? 'top' : 'left';
+		stops = $.isArray( stops ) ? stops : Array.prototype.slice.call( arguments, 1 );
+		if ( gradientType === 'webkit' ) {
+			return legacyWebkitGradient( origin, stops );
+		} else {
+			return vendorPrefixes[ gradientType ] + 'linear-gradient(' + origin + ', ' + stops.join(', ') + ')';
+		}
+	}
+
+	/**
+	* Stupid gradients for a stupid browser.
+	*/
+	function stupidIEGradient( origin, stops ) {
+		var type, self, lastIndex, filter, startPosProp, endPosProp, dimensionProp, template, html;
+
+		origin = ( origin === 'top' ) ? 'top' : 'left';
+		stops = $.isArray( stops ) ? stops : Array.prototype.slice.call( arguments, 1 );
+		// 8 hex: AARRGGBB
+		// GradientType: 0 vertical, 1 horizontal
+		type = ( origin === 'top' ) ? 0 : 1;
+		self = $( this );
+		lastIndex = stops.length - 1;
+		filter = 'filter';
+		startPosProp = ( type === 1 ) ? 'left' : 'top';
+		endPosProp = ( type === 1 ) ? 'right' : 'bottom';
+		dimensionProp = ( type === 1 ) ? 'height' : 'width';
+		template = '<div class="iris-ie-gradient-shim" style="position:absolute;' + dimensionProp + ':100%;' + startPosProp + ':%start%;' + endPosProp + ':%end%;' + filter + ':%filter%;" data-color:"%color%"></div>';
+		html = '';
+		// need a positioning context
+		if ( self.css('position') === 'static' ) {
+			self.css( {position: 'relative' } );
+		}
+
+		stops = fillColorStops( stops );
+		$.each(stops, function( i, startColor ) {
+			var endColor, endStop, filterVal;
+
+			// we want two at a time. if we're on the last pair, bail.
+			if ( i === lastIndex ) {
+				return false;
+			}
+
+			endColor = stops[ i + 1 ];
+			//if our pairs are at the same color stop, moving along.
+			if ( startColor.stop === endColor.stop ) {
+				return;
+			}
+
+			endStop = 100 - parseFloat( endColor.stop ) + '%';
+			startColor.octoHex = new Color( startColor.color ).toIEOctoHex();
+			endColor.octoHex = new Color( endColor.color ).toIEOctoHex();
+
+			filterVal = 'progid:DXImageTransform.Microsoft.Gradient(GradientType=' + type + ', StartColorStr=\'' + startColor.octoHex + '\', EndColorStr=\'' + endColor.octoHex + '\')';
+			html += template.replace( '%start%', startColor.stop ).replace( '%end%', endStop ).replace( '%filter%', filterVal );
+		});
+		self.find( '.iris-ie-gradient-shim' ).remove();
+		$( html ).prependTo( self );
+	}
+
+	function legacyWebkitGradient( origin, colorList ) {
+		var stops = [];
+		origin = ( origin === 'top' ) ? '0% 0%,0% 100%,' : '0% 100%,100% 100%,';
+		colorList = fillColorStops( colorList );
+		$.each( colorList, function( i, val ){
+			stops.push( 'color-stop(' + ( parseFloat( val.stop ) / 100 ) + ', ' + val.color + ')' );
+		});
+		return '-webkit-gradient(linear,' + origin + stops.join(',') + ')';
+	}
+
+	function fillColorStops( colorList ) {
+		var colors = [],
+			percs = [],
+			newColorList = [],
+			lastIndex = colorList.length - 1;
+
+		$.each( colorList, function( index, val ) {
+			var color = val,
+				perc = false,
+				match = val.match( /1?[0-9]{1,2}%$/ );
+
+			if ( match ) {
+				color = val.replace( /\s?1?[0-9]{1,2}%$/, '' );
+				perc = match.shift();
+			}
+			colors.push( color );
+			percs.push( perc );
+		});
+
+		// back fill first and last
+		if ( percs[0] === false ) {
+			percs[0] = '0%';
+		}
+
+		if ( percs[lastIndex] === false ) {
+			percs[lastIndex] = '100%';
+		}
+
+		percs = backFillColorStops( percs );
+
+		$.each( percs, function( i ){
+			newColorList[i] = { color: colors[i], stop: percs[i] };
+		});
+		return newColorList;
+	}
+
+	function backFillColorStops( stops ) {
+		var first = 0,
+			last = stops.length - 1,
+			i = 0,
+			foundFirst = false,
+			incr,
+			steps,
+			step,
+			firstVal;
+
+		if ( stops.length <= 2 || $.inArray( false, stops ) < 0 ) {
+			return stops;
+		}
+		while ( i < stops.length - 1 ) {
+			if ( ! foundFirst && stops[i] === false ) {
+				first = i - 1;
+				foundFirst = true;
+			} else if ( foundFirst && stops[i] !== false ) {
+				last = i;
+				i = stops.length;
+			}
+			i++;
+		}
+		steps = last - first;
+		firstVal = parseInt( stops[first].replace('%'), 10 );
+		incr = ( parseFloat( stops[last].replace('%') ) - firstVal ) / steps;
+		i = first + 1;
+		step = 1;
+		while ( i < last ) {
+			stops[i] = ( firstVal + ( step * incr ) ) + '%';
+			step++;
+			i++;
+		}
+		return backFillColorStops( stops );
+	}
+
+	$.fn.gradient = function() {
+		var args = arguments;
+		return this.each( function() {
+			// this'll be oldishIE
+			if ( nonGradientIE ) {
+				stupidIEGradient.apply( this, args );
+			} else {
+				// new hotness
+				$( this ).css( 'backgroundImage', createGradient.apply( this, args ) );
+			}
+		});
+	};
+
+	$.fn.raninbowGradient = function( origin, args ) {
+		var opts, template, i, steps;
+
+		origin = origin || 'top';
+		opts = $.extend( {}, { s: 100, l: 50 }, args );
+		template = 'hsl(%h%,' + opts.s + '%,' + opts.l + '%)';
+		i = 0;
+		steps = [];
+		while ( i <= 360 ) {
+			steps.push( template.replace('%h%', i) );
+			i += 30;
+		}
+		return this.each(function() {
+			$(this).gradient( origin, steps );
+		});
+	};
+
+	// the colorpicker widget def.
+	Iris = {
+		options: {
+			color: false,
+			mode: 'hsl',
+			controls: {
+				horiz: 's', // horizontal defaults to saturation
+				vert: 'l', // vertical defaults to lightness
+				strip: 'h' // right strip defaults to hue
+			},
+			hide: true, // hide the color picker by default
+			border: true, // draw a border around the collection of UI elements
+			target: false, // a DOM element / jQuery selector that the element will be appended within. Only used when called on an input.
+			width: 200, // the width of the collection of UI elements
+			palettes: false // show a palette of basic colors beneath the square.
+		},
+		_color: '',
+		_palettes: [ '#000', '#fff', '#d33', '#d93', '#ee2', '#81d742', '#1e73be', '#8224e3' ],
+		_inited: false,
+		_defaultHSLControls: {
+			horiz: 's',
+			vert: 'l',
+			strip: 'h'
+		},
+		_defaultHSVControls: {
+			horiz: 'h',
+			vert: 'v',
+			strip: 's'
+		},
+		_scale: {
+			h: 360,
+			s: 100,
+			l: 100,
+			v: 100
+		},
+		_create: function() {
+			var self = this,
+				el = self.element,
+				color = self.options.color || el.val();
+
+			if ( gradientType === false ) {
+				testGradientType();
+			}
+
+			if ( el.is( 'input' ) ) {
+				if ( self.options.target ) {
+					self.picker = $( _html ).appendTo( self.options.target );
+				} else {
+					self.picker = $( _html ).insertAfter( el );
+				}
+
+				self._addInputListeners( el );
+			} else {
+				el.append( _html );
+				self.picker = el.find( '.iris-picker' );
+			}
+
+			// Browsers / Versions
+			// Feature detection doesn't work for these, and $.browser is deprecated
+			if ( isIE ) {
+				if ( IEVersion === 9 ) {
+					self.picker.addClass( 'iris-ie-9' );
+				} else if ( IEVersion <= 8 ) {
+					self.picker.addClass( 'iris-ie-lt9' );
+				}
+			} else if ( UA.indexOf('compatible') < 0 && UA.indexOf('khtml') < 0 && UA.match( /mozilla/ ) ) {
+				self.picker.addClass( 'iris-mozilla' );
+			}
+
+			if ( self.options.palettes ) {
+				self._addPalettes();
+			}
+
+			self._color = new Color( color ).setHSpace( self.options.mode );
+			self.options.color = self._color.toString();
+
+			// prep 'em for re-use
+			self.controls = {
+				square:      self.picker.find( '.iris-square' ),
+				squareDrag:  self.picker.find( '.iris-square-value' ),
+				horiz:       self.picker.find( '.iris-square-horiz' ),
+				vert:        self.picker.find( '.iris-square-vert' ),
+				strip:       self.picker.find( '.iris-strip' ),
+				stripSlider: self.picker.find( '.iris-strip .iris-slider-offset' )
+			};
+
+			// small sanity check - if we chose hsv, change default controls away from hsl
+			if ( self.options.mode === 'hsv' && self._has('l', self.options.controls) ) {
+				self.options.controls = self._defaultHSVControls;
+			} else if ( self.options.mode === 'hsl' && self._has('v', self.options.controls) ) {
+				self.options.controls = self._defaultHSLControls;
+			}
+
+			// store it. HSL gets squirrely
+			self.hue = self._color.h();
+
+			if ( self.options.hide ) {
+				self.picker.hide();
+			}
+
+			if ( self.options.border ) {
+				self.picker.addClass( 'iris-border' );
+			}
+
+			self._initControls();
+			self.active = 'external';
+			self._dimensions();
+			self._change();
+		},
+		_has: function(needle, haystack) {
+			var ret = false;
+			$.each(haystack, function(i,v){
+				if ( needle === v ) {
+					ret = true;
+					// exit the loop
+					return false;
+				}
+			});
+			return ret;
+		},
+		_addPalettes: function () {
+			var container = $( '<div class="iris-palette-container" />' ),
+				palette = $( '<a class="iris-palette" tabindex="0" />' ),
+				colors = $.isArray( this.options.palettes ) ? this.options.palettes : this._palettes;
+
+			// do we have an existing container? Empty and reuse it.
+			if ( this.picker.find( '.iris-palette-container' ).length ) {
+				container = this.picker.find( '.iris-palette-container' ).detach().html( '' );
+			}
+
+			$.each(colors, function(index, val) {
+				palette.clone().data( 'color', val )
+					.css( 'backgroundColor', val ).appendTo( container )
+					.height( 10 ).width( 10 );
+			});
+
+			this.picker.append(container);
+		},
+		_paint: function() {
+			var self = this;
+			self._paintDimension( 'top', 'strip' );
+			self._paintDimension( 'top', 'vert' );
+			self._paintDimension( 'left', 'horiz' );
+		},
+		_paintDimension: function( origin, control ) {
+			var self = this,
+				c = self._color,
+				mode = self.options.mode,
+				color = self._getHSpaceColor(),
+				target = self.controls[ control ],
+				controlOpts = self.options.controls,
+				stops;
+
+			// don't paint the active control
+			if ( control === self.active || ( self.active === 'square' && control !== 'strip' ) ) {
+				return;
+			}
+
+			switch ( controlOpts[ control ] ) {
+				case 'h':
+					if ( mode === 'hsv' ) {
+						color = c.clone();
+						switch ( control ) {
+							case 'horiz':
+								color[controlOpts.vert](100);
+								break;
+							case 'vert':
+								color[controlOpts.horiz](100);
+								break;
+							case 'strip':
+								color.setHSpace('hsl');
+								break;
+						}
+						stops = color.toHsl();
+					} else {
+						if ( control === 'strip' ) {
+							stops = { s: color.s, l: color.l };
+						} else {
+							stops = { s: 100, l: color.l };
+						}
+					}
+
+					target.raninbowGradient( origin, stops );
+					break;
+				case 's':
+					if ( mode === 'hsv' ) {
+						if ( control === 'vert' ) {
+							stops = [ c.clone().a(0).s(0).toCSS('rgba'), c.clone().a(1).s(0).toCSS('rgba') ];
+						} else if ( control === 'strip' ) {
+							stops = [ c.clone().s(100).toCSS('hsl'), c.clone().s(0).toCSS('hsl') ];
+						} else if ( control === 'horiz' ) {
+							stops = [ '#fff', 'hsl(' + color.h + ',100%,50%)' ];
+						}
+					} else { // implicit mode === 'hsl'
+						if ( control === 'vert' && self.options.controls.horiz === 'h' ) {
+							stops = ['hsla(0, 0%, ' + color.l + '%, 0)', 'hsla(0, 0%, ' + color.l + '%, 1)'];
+						} else {
+							stops = ['hsl('+ color.h +',0%,50%)', 'hsl(' + color.h + ',100%,50%)'];
+						}
+					}
+
+
+					target.gradient( origin, stops );
+					break;
+				case 'l':
+					if ( control === 'strip' ) {
+						stops = ['hsl(' + color.h + ',100%,100%)', 'hsl(' + color.h + ', ' + color.s + '%,50%)', 'hsl('+ color.h +',100%,0%)'];
+					} else {
+						stops = ['#fff', 'rgba(255,255,255,0) 50%', 'rgba(0,0,0,0) 50%', 'rgba(0,0,0,1)'];
+					}
+					target.gradient( origin, stops );
+					break;
+				case 'v':
+						if ( control === 'strip' ) {
+							stops = [ c.clone().v(100).toCSS(), c.clone().v(0).toCSS() ];
+						} else {
+							stops = ['rgba(0,0,0,0)', '#000'];
+						}
+						target.gradient( origin, stops );
+					break;
+				default:
+					break;
+			}
+		},
+
+		_getHSpaceColor: function() {
+			return ( this.options.mode === 'hsv' ) ? this._color.toHsv() : this._color.toHsl();
+		},
+
+		_dimensions: function( reset ) {
+			// whatever size
+			var self = this,
+				opts = self.options,
+				controls = self.controls,
+				square = controls.square,
+				strip = self.picker.find( '.iris-strip' ),
+				squareWidth = '77.5%',
+				stripWidth = '12%',
+				totalPadding = 20,
+				innerWidth = opts.border ? opts.width - totalPadding : opts.width,
+				controlsHeight,
+				paletteCount = $.isArray( opts.palettes ) ? opts.palettes.length : self._palettes.length,
+				paletteMargin, paletteWidth, paletteContainerWidth;
+
+			if ( reset ) {
+				square.css( 'width', '' );
+				strip.css( 'width', '' );
+				self.picker.css( {width: '', height: ''} );
+			}
+
+			squareWidth = innerWidth * ( parseFloat( squareWidth ) / 100 );
+			stripWidth = innerWidth * ( parseFloat( stripWidth ) / 100 );
+			controlsHeight = opts.border ? squareWidth + totalPadding : squareWidth;
+
+			square.width( squareWidth ).height( squareWidth );
+			strip.height( squareWidth ).width( stripWidth );
+			self.picker.css( { width: opts.width, height: controlsHeight } );
+
+			if ( ! opts.palettes ) {
+				return self.picker.css( 'paddingBottom', '' );
+			}
+
+			// single margin at 2%
+			paletteMargin = squareWidth * 2 / 100;
+			paletteContainerWidth = squareWidth - ( ( paletteCount - 1 ) * paletteMargin );
+			paletteWidth = paletteContainerWidth / paletteCount;
+			self.picker.find('.iris-palette').each( function( i ) {
+				var margin = i === 0 ? 0 : paletteMargin;
+				$( this ).css({
+					width: paletteWidth,
+					height: paletteWidth,
+					marginLeft: margin
+				});
+			});
+			self.picker.css( 'paddingBottom', paletteWidth + paletteMargin );
+			strip.height( paletteWidth + paletteMargin + squareWidth );
+		},
+
+		_addInputListeners: function( input ) {
+			var self = this,
+				debounceTimeout = 100,
+				callback = function( event ){
+					var color = new Color( input.val() ),
+						val = input.val().replace( /^#/, '' );
+
+					input.removeClass( 'iris-error' );
+					// we gave a bad color
+					if ( color.error ) {
+						// don't error on an empty input - we want those allowed
+						if ( val !== '' ) {
+							input.addClass( 'iris-error' );
+						}
+					} else {
+						if ( color.toString() !== self._color.toString() ) {
+							// let's not do this on keyup for hex shortcodes
+							if ( ! ( event.type === 'keyup' && val.match( /^[0-9a-fA-F]{3}$/ ) ) ) {
+								self._setOption( 'color', color.toString() );
+							}
+						}
+					}
+				};
+
+			input.on( 'change', callback ).on( 'keyup', self._debounce( callback, debounceTimeout ) );
+
+			// If we initialized hidden, show on first focus. The rest is up to you.
+			if ( self.options.hide ) {
+				input.one( 'focus', function() {
+					self.show();
+				});
+			}
+		},
+
+		_initControls: function() {
+			var self = this,
+				controls = self.controls,
+				square = controls.square,
+				controlOpts = self.options.controls,
+				stripScale = self._scale[controlOpts.strip];
+
+			controls.stripSlider.slider({
+				orientation: 'vertical',
+				max: stripScale,
+				slide: function( event, ui ) {
+					self.active = 'strip';
+					// "reverse" for hue.
+					if ( controlOpts.strip === 'h' ) {
+						ui.value = stripScale - ui.value;
+					}
+
+					self._color[controlOpts.strip]( ui.value );
+					self._change.apply( self, arguments );
+				}
+			});
+
+			controls.squareDrag.draggable({
+				containment: controls.square.find( '.iris-square-inner' ),
+				zIndex: 1000,
+				cursor: 'move',
+				drag: function( event, ui ) {
+					self._squareDrag( event, ui );
+				},
+				start: function() {
+					square.addClass( 'iris-dragging' );
+					$(this).addClass( 'ui-state-focus' );
+				},
+				stop: function() {
+					square.removeClass( 'iris-dragging' );
+					$(this).removeClass( 'ui-state-focus' );
+				}
+			}).on( 'mousedown mouseup', function( event ) {
+				var focusClass = 'ui-state-focus';
+				event.preventDefault();
+				if (event.type === 'mousedown' ) {
+					self.picker.find( '.' + focusClass ).removeClass( focusClass ).blur();
+					$(this).addClass( focusClass ).focus();
+				} else {
+					$(this).removeClass( focusClass );
+				}
+			}).on( 'keydown', function( event ) {
+				var container = controls.square,
+					draggable = controls.squareDrag,
+					position = draggable.position(),
+					distance = self.options.width / 100; // Distance in pixels the draggable should be moved: 1 "stop"
+
+				// make alt key go "10"
+				if ( event.altKey ) {
+					distance *= 10;
+				}
+
+				// Reposition if one of the directional keys is pressed
+				switch ( event.keyCode ) {
+					case 37: position.left -= distance; break; // Left
+					case 38: position.top  -= distance; break; // Up
+					case 39: position.left += distance; break; // Right
+					case 40: position.top  += distance; break; // Down
+					default: return true; // Exit and bubble
+				}
+
+				// Keep draggable within container
+				position.left = Math.max( 0, Math.min( position.left, container.width() ) );
+				position.top =  Math.max( 0, Math.min( position.top, container.height() ) );
+
+				draggable.css(position);
+				self._squareDrag( event, { position: position });
+				event.preventDefault();
+			});
+
+			// allow clicking on the square to move there and keep dragging
+			square.mousedown( function( event ) {
+				var squareOffset, pos;
+				// only left click
+				if ( event.which !== 1 ) {
+					return;
+				}
+
+				// prevent bubbling from the handle: no infinite loops
+				if ( ! $( event.target ).is( 'div' ) ) {
+					return;
+				}
+
+				squareOffset = self.controls.square.offset();
+				pos = {
+						top: event.pageY - squareOffset.top,
+						left: event.pageX - squareOffset.left
+				};
+				event.preventDefault();
+				self._squareDrag( event, { position: pos } );
+				event.target = self.controls.squareDrag.get(0);
+				self.controls.squareDrag.css( pos ).trigger( event );
+			});
+
+			// palettes
+			if ( self.options.palettes ) {
+				self._paletteListeners();
+			}
+		},
+
+		_paletteListeners: function() {
+			var self = this;
+			self.picker.find('.iris-palette-container').on('click.palette', '.iris-palette', function() {
+				self._color.fromCSS( $(this).data('color') );
+				self.active = 'external';
+				self._change();
+			}).on( 'keydown.palette', '.iris-palette', function( event ) {
+				if ( ! ( event.keyCode === 13 || event.keyCode === 32 ) ) {
+					return true;
+				}
+				event.stopPropagation();
+				$( this ).click();
+			});
+		},
+
+		_squareDrag: function( event, ui ) {
+			var self = this,
+				controlOpts = self.options.controls,
+				dimensions = self._squareDimensions(),
+				vertVal = Math.round( ( dimensions.h - ui.position.top ) / dimensions.h * self._scale[controlOpts.vert] ),
+				horizVal = self._scale[controlOpts.horiz] - Math.round( ( dimensions.w - ui.position.left ) / dimensions.w * self._scale[controlOpts.horiz] );
+
+			self._color[controlOpts.horiz]( horizVal )[controlOpts.vert]( vertVal );
+
+			self.active = 'square';
+			self._change.apply( self, arguments );
+		},
+
+		_setOption: function( key, value ) {
+			var self = this,
+				oldValue = self.options[key],
+				doDimensions = false,
+				hexLessColor,
+				newColor,
+				method;
+
+			// ensure the new value is set. We can reset to oldValue if some check wasn't met.
+			self.options[key] = value;
+
+			switch(key) {
+				case 'color':
+					// cast to string in case we have a number
+					value = '' + value;
+					hexLessColor = value.replace( /^#/, '' );
+					newColor = new Color( value ).setHSpace( self.options.mode );
+					if ( newColor.error ) {
+						self.options[key] = oldValue;
+					} else {
+						self._color = newColor;
+						self.options.color = self.options[key] = self._color.toString();
+						self.active = 'external';
+						self._change();
+					}
+					break;
+				case 'palettes':
+					doDimensions = true;
+
+					if ( value ) {
+						self._addPalettes();
+					} else {
+						self.picker.find('.iris-palette-container').remove();
+					}
+
+					// do we need to add events?
+					if ( ! oldValue ) {
+						self._paletteListeners();
+					}
+					break;
+				case 'width':
+					doDimensions = true;
+					break;
+				case 'border':
+					doDimensions = true;
+					method = value ? 'addClass' : 'removeClass';
+					self.picker[method]('iris-border');
+					break;
+				case 'mode':
+				case 'controls':
+					// if nothing's changed, let's bail, since this causes re-rendering the whole widget
+					if ( oldValue === value ) {
+						return;
+					}
+
+					// we're using these poorly named variables because they're already scoped.
+					// method is the element that Iris was called on. oldValue will be the options
+					method = self.element;
+					oldValue = self.options;
+					oldValue.hide = ! self.picker.is( ':visible' );
+					self.destroy();
+					self.picker.remove();
+					return $(self.element).iris(oldValue);
+			}
+
+			// Do we need to recalc dimensions?
+			if ( doDimensions ) {
+				self._dimensions(true);
+			}
+		},
+
+		_squareDimensions: function( forceRefresh ) {
+			var square = this.controls.square,
+				dimensions,
+				control;
+
+			if ( forceRefresh !== undef && square.data('dimensions') ) {
+				return square.data('dimensions');
+			}
+
+			control = this.controls.squareDrag;
+			dimensions = {
+				w: square.width(),
+				h: square.height()
+			};
+			square.data( 'dimensions', dimensions );
+			return dimensions;
+		},
+
+		_isNonHueControl: function( active, type ) {
+			if ( active === 'square' && this.options.controls.strip === 'h' ) {
+				return true;
+			} else if ( type === 'external' || ( type === 'h' && active === 'strip' ) ) {
+				return false;
+			}
+
+			return true;
+		},
+
+		_change: function() {
+			var self = this,
+				controls = self.controls,
+				color = self._getHSpaceColor(),
+				actions = [ 'square', 'strip' ],
+				controlOpts = self.options.controls,
+				type = controlOpts[self.active] || 'external',
+				oldHue = self.hue;
+
+			if ( self.active === 'strip' ) {
+				// take no action on any of the square sliders if we adjusted the strip
+				actions = [];
+			} else if ( self.active !== 'external' ) {
+				// for non-strip, non-external, strip should never change
+				actions.pop(); // conveniently the last item
+			}
+
+			$.each( actions, function(index, item) {
+				var value, dimensions, cssObj;
+				if ( item !== self.active ) {
+					switch ( item ) {
+						case 'strip':
+							// reverse for hue
+							value = ( controlOpts.strip === 'h' ) ? self._scale[controlOpts.strip] - color[controlOpts.strip] : color[controlOpts.strip];
+							controls.stripSlider.slider( 'value', value );
+							break;
+						case 'square':
+							dimensions = self._squareDimensions();
+							cssObj = {
+								left: color[controlOpts.horiz] / self._scale[controlOpts.horiz] * dimensions.w,
+								top: dimensions.h - ( color[controlOpts.vert] / self._scale[controlOpts.vert] * dimensions.h )
+							};
+
+							self.controls.squareDrag.css( cssObj );
+							break;
+					}
+				}
+			});
+
+			// Ensure that we don't change hue if we triggered a hue reset
+			if ( color.h !== oldHue && self._isNonHueControl( self.active, type ) ) {
+				self._color.h(oldHue);
+			}
+
+			// store hue for repeating above check next time
+			self.hue = self._color.h();
+
+			self.options.color = self._color.toString();
+
+			// only run after the first time
+			if ( self._inited ) {
+				self._trigger( 'change', { type: self.active }, { color: self._color } );
+			}
+
+			if ( self.element.is( ':input' ) && ! self._color.error ) {
+				self.element.removeClass( 'iris-error' );
+				if ( self.element.val() !== self._color.toString() ) {
+					self.element.val( self._color.toString() );
+				}
+			}
+
+			self._paint();
+			self._inited = true;
+			self.active = false;
+		},
+		// taken from underscore.js _.debounce method
+		_debounce: function( func, wait, immediate ) {
+			var timeout, result;
+			return function() {
+				var context = this,
+					args = arguments,
+					later,
+					callNow;
+
+				later = function() {
+					timeout = null;
+					if ( ! immediate) {
+						result = func.apply( context, args );
+					}
+				};
+
+				callNow = immediate && !timeout;
+				clearTimeout( timeout );
+				timeout = setTimeout( later, wait );
+				if ( callNow ) {
+					result = func.apply( context, args );
+				}
+				return result;
+			};
+		},
+		show: function() {
+			this.picker.show();
+		},
+		hide: function() {
+			this.picker.hide();
+		},
+		toggle: function() {
+			this.picker.toggle();
+		},
+		color: function(newColor) {
+			if ( newColor === true ) {
+				return this._color.clone();
+			} else if ( newColor === undef ) {
+				return this._color.toString();
+			}
+			this.option('color', newColor);
+		}
+	};
+	// initialize the widget
+	$.widget( 'a8c.iris', Iris );
+	// add CSS
+	$( '<style id="iris-css">' + _css + '</style>' ).appendTo( 'head' );
+
+}( jQuery ));
+/*! Color.js - v0.9.11 - 2013-08-09
+* https://github.com/Automattic/Color.js
+* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
+(function(global, undef) {
+
+	var Color = function( color, type ) {
+		if ( ! ( this instanceof Color ) )
+			return new Color( color, type );
+
+		return this._init( color, type );
+	};
+
+	Color.fn = Color.prototype = {
+		_color: 0,
+		_alpha: 1,
+		error: false,
+		// for preserving hue/sat in fromHsl().toHsl() flows
+		_hsl: { h: 0, s: 0, l: 0 },
+		// for preserving hue/sat in fromHsv().toHsv() flows
+		_hsv: { h: 0, s: 0, v: 0 },
+		// for setting hsl or hsv space - needed for .h() & .s() functions to function properly
+		_hSpace: 'hsl',
+		_init: function( color ) {
+			var func = 'noop';
+			switch ( typeof color ) {
+					case 'object':
+						// alpha?
+						if ( color.a !== undef )
+							this.a( color.a );
+						func = ( color.r !== undef ) ? 'fromRgb' :
+							( color.l !== undef ) ? 'fromHsl' :
+							( color.v !== undef ) ? 'fromHsv' : func;
+						return this[func]( color );
+					case 'string':
+						return this.fromCSS( color );
+					case 'number':
+						return this.fromInt( parseInt( color, 10 ) );
+			}
+			return this;
+		},
+
+		_error: function() {
+			this.error = true;
+			return this;
+		},
+
+		clone: function() {
+			var newColor = new Color( this.toInt() ),
+				copy = ['_alpha', '_hSpace', '_hsl', '_hsv', 'error'];
+			for ( var i = copy.length - 1; i >= 0; i-- ) {
+				newColor[ copy[i] ] = this[ copy[i] ];
+			}
+			return newColor;
+		},
+
+		setHSpace: function( space ) {
+			this._hSpace = ( space === 'hsv' ) ? space : 'hsl';
+			return this;
+		},
+
+		noop: function() {
+			return this;
+		},
+
+		fromCSS: function( color ) {
+			var list,
+				leadingRE = /^(rgb|hs(l|v))a?\(/;
+			this.error = false;
+
+			// whitespace and semicolon trim
+			color = color.replace(/^\s+/, '').replace(/\s+$/, '').replace(/;$/, '');
+
+			if ( color.match(leadingRE) && color.match(/\)$/) ) {
+				list = color.replace(/(\s|%)/g, '').replace(leadingRE, '').replace(/,?\);?$/, '').split(',');
+
+				if ( list.length < 3 )
+					return this._error();
+
+				if ( list.length === 4 ) {
+					this.a( parseFloat( list.pop() ) );
+					// error state has been set to true in .a() if we passed NaN
+					if ( this.error )
+						return this;
+				}
+
+				for (var i = list.length - 1; i >= 0; i--) {
+					list[i] = parseInt(list[i], 10);
+					if ( isNaN( list[i] ) )
+						return this._error();
+				}
+
+				if ( color.match(/^rgb/) ) {
+					return this.fromRgb( {
+						r: list[0],
+						g: list[1],
+						b: list[2]
+					} );
+				} else if ( color.match(/^hsv/) ) {
+					return this.fromHsv( {
+						h: list[0],
+						s: list[1],
+						v: list[2]
+					} );
+				} else {
+					return this.fromHsl( {
+						h: list[0],
+						s: list[1],
+						l: list[2]
+					} );
+				}
+			} else {
+				// must be hex amirite?
+				return this.fromHex( color );
+			}
+		},
+
+		fromRgb: function( rgb, preserve ) {
+			if ( typeof rgb !== 'object' || rgb.r === undef || rgb.g === undef || rgb.b === undef )
+				return this._error();
+
+			this.error = false;
+			return this.fromInt( parseInt( ( rgb.r << 16 ) + ( rgb.g << 8 ) + rgb.b, 10 ), preserve );
+		},
+
+		fromHex: function( color ) {
+			color = color.replace(/^#/, '').replace(/^0x/, '');
+			if ( color.length === 3 ) {
+				color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];
+			}
+
+			// rough error checking - this is where things go squirrely the most
+			this.error = ! /^[0-9A-F]{6}$/i.test( color );
+			return this.fromInt( parseInt( color, 16 ) );
+		},
+
+		fromHsl: function( hsl ) {
+			var r, g, b, q, p, h, s, l;
+
+			if ( typeof hsl !== 'object' || hsl.h === undef || hsl.s === undef || hsl.l === undef )
+				return this._error();
+
+			this._hsl = hsl; // store it
+			this._hSpace = 'hsl'; // implicit
+			h = hsl.h / 360; s = hsl.s / 100; l = hsl.l / 100;
+			if ( s === 0 ) {
+				r = g = b = l; // achromatic
+			}
+			else {
+				q = l < 0.5 ? l * ( 1 + s ) : l + s - l * s;
+				p = 2 * l - q;
+				r = this.hue2rgb( p, q, h + 1/3 );
+				g = this.hue2rgb( p, q, h );
+				b = this.hue2rgb( p, q, h - 1/3 );
+			}
+			return this.fromRgb( {
+				r: r * 255,
+				g: g * 255,
+				b: b * 255
+			}, true ); // true preserves hue/sat
+		},
+
+		fromHsv: function( hsv ) {
+			var h, s, v, r, g, b, i, f, p, q, t;
+			if ( typeof hsv !== 'object' || hsv.h === undef || hsv.s === undef || hsv.v === undef )
+				return this._error();
+
+			this._hsv = hsv; // store it
+			this._hSpace = 'hsv'; // implicit
+
+			h = hsv.h / 360; s = hsv.s / 100; v = hsv.v / 100;
+			i = Math.floor( h * 6 );
+			f = h * 6 - i;
+			p = v * ( 1 - s );
+			q = v * ( 1 - f * s );
+			t = v * ( 1 - ( 1 - f ) * s );
+
+			switch( i % 6 ) {
+				case 0:
+					r = v; g = t; b = p;
+					break;
+				case 1:
+					r = q; g = v; b = p;
+					break;
+				case 2:
+					r = p; g = v; b = t;
+					break;
+				case 3:
+					r = p; g = q; b = v;
+					break;
+				case 4:
+					r = t; g = p; b = v;
+					break;
+				case 5:
+					r = v; g = p; b = q;
+					break;
+			}
+
+			return this.fromRgb( {
+				r: r * 255,
+				g: g * 255,
+				b: b * 255
+			}, true ); // true preserves hue/sat
+
+		},
+		// everything comes down to fromInt
+		fromInt: function( color, preserve ) {
+			this._color = parseInt( color, 10 );
+
+			if ( isNaN( this._color ) )
+				this._color = 0;
+
+			// let's coerce things
+			if ( this._color > 16777215 )
+				this._color = 16777215;
+			else if ( this._color < 0 )
+				this._color = 0;
+
+			// let's not do weird things
+			if ( preserve === undef ) {
+				this._hsv.h = this._hsv.s = this._hsl.h = this._hsl.s = 0;
+			}
+			// EVENT GOES HERE
+			return this;
+		},
+
+		hue2rgb: function( p, q, t ) {
+			if ( t < 0 ) {
+				t += 1;
+			}
+			if ( t > 1 ) {
+				t -= 1;
+			}
+			if ( t < 1/6 ) {
+				return p + ( q - p ) * 6 * t;
+			}
+			if ( t < 1/2 ) {
+				return q;
+			}
+			if ( t < 2/3 ) {
+				return p + ( q - p ) * ( 2/3 - t ) * 6;
+			}
+			return p;
+		},
+
+		toString: function() {
+			var hex = parseInt( this._color, 10 ).toString( 16 );
+			if ( this.error )
+				return '';
+			// maybe left pad it
+			if ( hex.length < 6 ) {
+				for (var i = 6 - hex.length - 1; i >= 0; i--) {
+					hex = '0' + hex;
+				}
+			}
+			return '#' + hex;
+		},
+
+		toCSS: function( type, alpha ) {
+			type = type || 'hex';
+			alpha = parseFloat( alpha || this._alpha );
+			switch ( type ) {
+				case 'rgb':
+				case 'rgba':
+					var rgb = this.toRgb();
+					if ( alpha < 1 ) {
+						return "rgba( " + rgb.r + ", " + rgb.g + ", " + rgb.b + ", " + alpha + " )";
+					}
+					else {
+						return "rgb( " + rgb.r + ", " + rgb.g + ", " + rgb.b + " )";
+					}
+					break;
+				case 'hsl':
+				case 'hsla':
+					var hsl = this.toHsl();
+					if ( alpha < 1 ) {
+						return "hsla( " + hsl.h + ", " + hsl.s + "%, " + hsl.l + "%, " + alpha + " )";
+					}
+					else {
+						return "hsl( " + hsl.h + ", " + hsl.s + "%, " + hsl.l + "% )";
+					}
+					break;
+				default:
+					return this.toString();
+			}
+		},
+
+		toRgb: function() {
+			return {
+				r: 255 & ( this._color >> 16 ),
+				g: 255 & ( this._color >> 8 ),
+				b: 255 & ( this._color )
+			};
+		},
+
+		toHsl: function() {
+			var rgb = this.toRgb();
+			var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
+			var max = Math.max( r, g, b ), min = Math.min( r, g, b );
+			var h, s, l = ( max + min ) / 2;
+
+			if ( max === min ) {
+				h = s = 0; // achromatic
+			} else {
+				var d = max - min;
+				s = l > 0.5 ? d / ( 2 - max - min ) : d / ( max + min );
+				switch ( max ) {
+					case r: h = ( g - b ) / d + ( g < b ? 6 : 0 );
+						break;
+					case g: h = ( b - r ) / d + 2;
+						break;
+					case b: h = ( r - g ) / d + 4;
+						break;
+				}
+				h /= 6;
+			}
+
+			// maintain hue & sat if we've been manipulating things in the HSL space.
+			h = Math.round( h * 360 );
+			if ( h === 0 && this._hsl.h !== h ) {
+				h = this._hsl.h;
+			}
+			s = Math.round( s * 100 );
+			if ( s === 0 && this._hsl.s ) {
+				s = this._hsl.s;
+			}
+
+			return {
+				h: h,
+				s: s,
+				l: Math.round( l * 100 )
+			};
+
+		},
+
+		toHsv: function() {
+			var rgb = this.toRgb();
+			var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
+			var max = Math.max( r, g, b ), min = Math.min( r, g, b );
+			var h, s, v = max;
+			var d = max - min;
+			s = max === 0 ? 0 : d / max;
+
+			if ( max === min ) {
+				h = s = 0; // achromatic
+			} else {
+				switch( max ){
+					case r:
+						h = ( g - b ) / d + ( g < b ? 6 : 0 );
+						break;
+					case g:
+						h = ( b - r ) / d + 2;
+						break;
+					case b:
+						h = ( r - g ) / d + 4;
+						break;
+				}
+				h /= 6;
+			}
+
+			// maintain hue & sat if we've been manipulating things in the HSV space.
+			h = Math.round( h * 360 );
+			if ( h === 0 && this._hsv.h !== h ) {
+				h = this._hsv.h;
+			}
+			s = Math.round( s * 100 );
+			if ( s === 0 && this._hsv.s ) {
+				s = this._hsv.s;
+			}
+
+			return {
+				h: h,
+				s: s,
+				v: Math.round( v * 100 )
+			};
+		},
+
+		toInt: function() {
+			return this._color;
+		},
+
+		toIEOctoHex: function() {
+			// AARRBBGG
+			var hex = this.toString();
+			var AA = parseInt( 255 * this._alpha, 10 ).toString(16);
+			if ( AA.length === 1 ) {
+				AA = '0' + AA;
+			}
+			return '#' + AA + hex.replace(/^#/, '' );
+		},
+
+		toLuminosity: function() {
+			var rgb = this.toRgb();
+			return 0.2126 * Math.pow( rgb.r / 255, 2.2 ) + 0.7152 * Math.pow( rgb.g / 255, 2.2 ) + 0.0722 * Math.pow( rgb.b / 255, 2.2);
+		},
+
+		getDistanceLuminosityFrom: function( color ) {
+			if ( ! ( color instanceof Color ) ) {
+				throw 'getDistanceLuminosityFrom requires a Color object';
+			}
+			var lum1 = this.toLuminosity();
+			var lum2 = color.toLuminosity();
+			if ( lum1 > lum2 ) {
+				return ( lum1 + 0.05 ) / ( lum2 + 0.05 );
+			}
+			else {
+				return ( lum2 + 0.05 ) / ( lum1 + 0.05 );
+			}
+		},
+
+		getMaxContrastColor: function() {
+			var lum = this.toLuminosity();
+			var hex = ( lum >= 0.5 ) ? '000000' : 'ffffff';
+			return new Color( hex );
+		},
+
+		getReadableContrastingColor: function( bgColor, minContrast ) {
+			if ( ! bgColor instanceof Color ) {
+				return this;
+			}
+
+			// you shouldn't use less than 5, but you might want to.
+			var targetContrast = ( minContrast === undef ) ? 5 : minContrast;
+			// working things
+			var contrast = bgColor.getDistanceLuminosityFrom( this );
+			var maxContrastColor = bgColor.getMaxContrastColor();
+			var maxContrast = maxContrastColor.getDistanceLuminosityFrom( bgColor );
+
+			// if current max contrast is less than the target contrast, we had wishful thinking.
+			// still, go max
+			if ( maxContrast <= targetContrast ) {
+				return maxContrastColor;
+			}
+			// or, we might already have sufficient contrast
+			else if ( contrast >= targetContrast ) {
+				return this;
+			}
+
+			var incr = ( 0 === maxContrastColor.toInt() ) ? -1 : 1;
+			while ( contrast < targetContrast ) {
+				this.l( incr, true ); // 2nd arg turns this into an incrementer
+				contrast = this.getDistanceLuminosityFrom( bgColor );
+				// infininite loop prevention: you never know.
+				if ( this._color === 0 || this._color === 16777215 ) {
+					break;
+				}
+			}
+
+			return this;
+
+		},
+
+		a: function( val ) {
+			if ( val === undef )
+				return this._alpha;
+
+			var a = parseFloat( val );
+
+			if ( isNaN( a ) )
+				return this._error();
+
+			this._alpha = a;
+			return this;
+		},
+
+		// TRANSFORMS
+
+		darken: function( amount ) {
+			amount = amount || 5;
+			return this.l( - amount, true );
+		},
+
+		lighten: function( amount ) {
+			amount = amount || 5;
+			return this.l( amount, true );
+		},
+
+		saturate: function( amount ) {
+			amount = amount || 15;
+			return this.s( amount, true );
+		},
+
+		desaturate: function( amount ) {
+			amount = amount || 15;
+			return this.s( - amount, true );
+		},
+
+		toGrayscale: function() {
+			return this.setHSpace('hsl').s( 0 );
+		},
+
+		getComplement: function() {
+			return this.h( 180, true );
+		},
+
+		getSplitComplement: function( step ) {
+			step = step || 1;
+			var incr = 180 + ( step * 30 );
+			return this.h( incr, true );
+		},
+
+		getAnalog: function( step ) {
+			step = step || 1;
+			var incr = step * 30;
+			return this.h( incr, true );
+		},
+
+		getTetrad: function( step ) {
+			step = step || 1;
+			var incr = step * 60;
+			return this.h( incr, true );
+		},
+
+		getTriad: function( step ) {
+			step = step || 1;
+			var incr = step * 120;
+			return this.h( incr, true );
+		},
+
+		_partial: function( key ) {
+			var prop = shortProps[key];
+			return function( val, incr ) {
+				var color = this._spaceFunc('to', prop.space);
+
+				// GETTER
+				if ( val === undef )
+					return color[key];
+
+				// INCREMENT
+				if ( incr === true )
+					val = color[key] + val;
+
+				// MOD & RANGE
+				if ( prop.mod )
+					val = val % prop.mod;
+				if ( prop.range )
+					val = ( val < prop.range[0] ) ? prop.range[0] : ( val > prop.range[1] ) ? prop.range[1] : val;
+
+				// NEW VALUE
+				color[key] = val;
+
+				return this._spaceFunc('from', prop.space, color);
+			};
+		},
+
+		_spaceFunc: function( dir, s, val ) {
+			var space = s || this._hSpace,
+				funcName = dir + space.charAt(0).toUpperCase() + space.substr(1);
+			return this[funcName](val);
+		}
+	};
+
+	var shortProps = {
+		h: {
+			mod: 360
+		},
+		s: {
+			range: [0,100]
+		},
+		l: {
+			space: 'hsl',
+			range: [0,100]
+		},
+		v: {
+			space: 'hsv',
+			range: [0,100]
+		},
+		r: {
+			space: 'rgb',
+			range: [0,255]
+		},
+		g: {
+			space: 'rgb',
+			range: [0,255]
+		},
+		b: {
+			space: 'rgb',
+			range: [0,255]
+		}
+	};
+
+	for ( var key in shortProps ) {
+		if ( shortProps.hasOwnProperty( key ) )
+			Color.fn[key] = Color.fn._partial(key);
+	}
+
+	// play nicely with Node + browser
+	if ( typeof exports === 'object' )
+		module.exports = Color;
+	else
+		global.Color = Color;
+
+}(this));
diff --git a/wiki/lib/plugins/styling/lang/bg/lang.php b/wiki/lib/plugins/styling/lang/bg/lang.php
new file mode 100644
index 0000000..7d17caf
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/bg/lang.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['menu']                  = 'Настройки на стила на шаблона';
+$lang['error']                 = 'За съжаление шаблона не поддържа тази функционалност.';
+$lang['btn_preview']           = 'Преглед на промените';
+$lang['btn_save']              = 'Запис на промените';
+$lang['btn_reset']             = 'Анулиране на промените';
+$lang['btn_revert']            = 'Връщане на стила към стандартните стойности';
+$lang['__text__']              = 'Цвят на основния текст';
+$lang['__background__']        = 'Цвят на основния фон';
+$lang['__text_alt__']          = 'Алтернативен цвят за текста';
+$lang['__background_alt__']    = 'Алтернативен цвят за фона';
+$lang['__text_neu__']          = 'Неутрален цвят за текста';
+$lang['__background_neu__']    = 'Неутрален цвят за фона';
+$lang['__border__']            = 'Цвят на рамката';
+$lang['__highlight__']         = 'Цвят за отличаване (основно на резултата от търсения)';
diff --git a/wiki/lib/plugins/styling/lang/cs/intro.txt b/wiki/lib/plugins/styling/lang/cs/intro.txt
new file mode 100644
index 0000000..00365a0
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/cs/intro.txt
@@ -0,0 +1,2 @@
+Tento nástroj umožňuje změnu určitých nastavení stylu právě používané šablony vzhledu.
+Všechny změny jsou uloženy v lokálním konfiguračním souboru a tím chráněny před smazáním při aktualizaci.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/cs/lang.php b/wiki/lib/plugins/styling/lang/cs/lang.php
new file mode 100644
index 0000000..bbb2789
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/cs/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ */
+$lang['menu']                  = 'Nastavení stylů vzhledu';
+$lang['js']['loader']          = 'Náhled se načítá...<br />pokud tento text nezmizí, pravděpodobně jsou nastaveny nesprávné hodnoty';
+$lang['js']['popup']           = 'Otevřít ve vlastním okně';
+$lang['error']                 = 'Omlouváme se, tento ';
+$lang['btn_preview']           = 'Náhled změn';
+$lang['btn_save']              = 'Uložit změny';
+$lang['btn_reset']             = 'Zrušit aktuální změny';
+$lang['btn_revert']            = 'Vrátit styly zpět na výchozí hodnoty vzhledu';
+$lang['__text__']              = 'Barva hlavního textu';
+$lang['__background__']        = 'Barva hlavního pozadí';
+$lang['__text_alt__']          = 'Barva alternativního textu';
+$lang['__background_alt__']    = 'Barva alternativního pozadí';
+$lang['__text_neu__']          = 'Barva neutrálního textu';
+$lang['__background_neu__']    = 'Barva neutrálního pozadí';
+$lang['__border__']            = 'Barva rámování';
+$lang['__highlight__']         = 'Zvýrazněná barva (hlavně pro výsledky vyhledávání)';
diff --git a/wiki/lib/plugins/styling/lang/cy/intro.txt b/wiki/lib/plugins/styling/lang/cy/intro.txt
new file mode 100644
index 0000000..7c82596
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/cy/intro.txt
@@ -0,0 +1,2 @@
+Mae'r teclyn hwn yn eich galluogi chi newid gosodiadau arddull penodol y templed rydych chi'n defnyddio'n bresennol.
+Caiff pob newid ei storio mewn ffeil ffurfwedd leol sy'n uwchradd-ddiogel.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/cy/lang.php b/wiki/lib/plugins/styling/lang/cy/lang.php
new file mode 100644
index 0000000..4d22a59
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/cy/lang.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Welsh language file for styling plugin
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Alan Davies <ben.brynsadler@gmail.com>
+ */
+
+// menu entry for admin plugins
+$lang['menu'] = 'Gosodiadau Arddull Templed';
+
+$lang['js']['loader'] = 'Rhagolwg yn llwytho...<br />os \'dyw hwn ddim yn diflannu, efallai bod eich gwerthoedd yn annilys';
+$lang['js']['popup'] = 'Agor fel ffurflen naid';
+
+// custom language strings for the plugin
+$lang['error'] = 'Sori, \'dyw\'r templed hwn ddim yn cynnal y swyddogaethedd hwn.';
+
+$lang['btn_preview'] = 'Rhagolwg newidiadau';
+$lang['btn_save']    = 'Cadw newidiadau';
+$lang['btn_reset']   = 'Ailosod newidiadau cyfredol';
+$lang['btn_revert']  = 'Troi arddulliau\'n ôl i ddiofyn y templed';
+
+// default guaranteed placeholders
+$lang['__text__']           = 'Lliw\'r prif destun';
+$lang['__background__']     = 'Lliw\'r prif gefndir';
+$lang['__text_alt__']       = 'Lliw testun amgen';
+$lang['__background_alt__'] = 'Lliw cefndir amgen';
+$lang['__text_neu__']       = 'lliw testun niwtral';
+$lang['__background_neu__'] = 'Lliw cefndir niwtral';
+$lang['__border__']         = 'Lliw border';
+$lang['__highlight__']      = 'Lliw uwcholeuad (am ganlyniadau chwiliad yn bennaf)';
+
+
+
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/styling/lang/de-informal/intro.txt b/wiki/lib/plugins/styling/lang/de-informal/intro.txt
new file mode 100644
index 0000000..aa95773
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/de-informal/intro.txt
@@ -0,0 +1,2 @@
+Dieses Plugin ermöglicht es, bestimmte Designeinstellungen des ausgewählten Templates zu ändern.
+Alle Änderungen werden in einer lokalen Konfigurationsdatei gespeichert und sind upgrade-sicher.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/de-informal/lang.php b/wiki/lib/plugins/styling/lang/de-informal/lang.php
new file mode 100644
index 0000000..60ae96b
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/de-informal/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felix Müller-Donath <j.felix@mueller-donath.de>
+ */
+$lang['menu']                  = 'Einstellungen fürs Template-Design';
+$lang['js']['loader']          = 'Vorschau lädt...<br />Falls diese Nachricht nicht verschwindet, könnten deine Werte fehlerhaft sein';
+$lang['js']['popup']           = 'Öffne als Popup';
+$lang['error']                 = 'Dieses Template unterstützt diese Funktion nicht.';
+$lang['btn_preview']           = 'Vorschau der Änderungen anzeigen';
+$lang['btn_save']              = 'Änderungen speichern';
+$lang['btn_reset']             = 'Aktuelle Änderungen rückgängig machen';
+$lang['btn_revert']            = 'Design auf die Voreinstellung des Templates zurücksetzen';
+$lang['__text__']              = 'Main text color';
+$lang['__background__']        = 'Haupthintergrundfarbe';
+$lang['__text_alt__']          = 'Alternative Textfarbe';
+$lang['__background_alt__']    = 'Alternative Hintergrundfarbe';
+$lang['__text_neu__']          = 'Neutrale Textfarbe';
+$lang['__background_neu__']    = 'Neutrale Hintergrundfarbe';
+$lang['__border__']            = 'Rahmenfarbe';
+$lang['__highlight__']         = 'Hervorhebungsfarbe (v.a. für Suchergebnisse)';
diff --git a/wiki/lib/plugins/styling/lang/de/intro.txt b/wiki/lib/plugins/styling/lang/de/intro.txt
new file mode 100644
index 0000000..aa95773
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/de/intro.txt
@@ -0,0 +1,2 @@
+Dieses Plugin ermöglicht es, bestimmte Designeinstellungen des ausgewählten Templates zu ändern.
+Alle Änderungen werden in einer lokalen Konfigurationsdatei gespeichert und sind upgrade-sicher.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/de/lang.php b/wiki/lib/plugins/styling/lang/de/lang.php
new file mode 100644
index 0000000..54adc56
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/de/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Hella Breitkopf <hella.breitkopf@gmail.com>
+ */
+$lang['menu']                  = 'Einstellungen fürs Template-Design';
+$lang['js']['loader']          = 'Vorschau lädt...<br />Falls diese Nachricht nicht verschwindet, könnten Ihre Werte fehlerhaft sein';
+$lang['js']['popup']           = 'Öffne als Popup';
+$lang['error']                 = 'Dieses Template unterstützt diese Funktion nicht.';
+$lang['btn_preview']           = 'Vorschau der Änderungen anzeigen';
+$lang['btn_save']              = 'Änderungen speichern';
+$lang['btn_reset']             = 'Jetzige Änderungen rückgängig machen';
+$lang['btn_revert']            = 'Design auf die Voreinstellung des Templates zurücksetzen';
+$lang['__text__']              = 'Haupttextfarbe';
+$lang['__background__']        = 'Haupthintergrundfarbe';
+$lang['__text_alt__']          = 'Alternative Textfarbe';
+$lang['__background_alt__']    = 'Alternative Hintergrundfarbe';
+$lang['__text_neu__']          = 'Neutrale Textfarbe';
+$lang['__background_neu__']    = 'Neutrale Hintergrundfarbe';
+$lang['__border__']            = 'Rahmenfarbe';
+$lang['__highlight__']         = 'Hervorhebungsfarbe (hauptsächlich für Suchergebnisse)';
diff --git a/wiki/lib/plugins/styling/lang/en/intro.txt b/wiki/lib/plugins/styling/lang/en/intro.txt
new file mode 100644
index 0000000..4ea5517
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/en/intro.txt
@@ -0,0 +1,2 @@
+This tool allows you to change certain style settings of your currently selected template.
+All changes are stored in a local configuration file and are upgrade safe.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/en/lang.php b/wiki/lib/plugins/styling/lang/en/lang.php
new file mode 100644
index 0000000..e0011eb
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/en/lang.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * English language file for styling plugin
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+// menu entry for admin plugins
+$lang['menu'] = 'Template Style Settings';
+
+$lang['js']['loader'] = 'Preview is loading...<br />if this does not goes away, your values may be faulty';
+$lang['js']['popup'] = 'Open as a popup';
+
+// custom language strings for the plugin
+$lang['error'] = 'Sorry, this template does not support this functionality.';
+
+$lang['btn_preview'] = 'Preview changes';
+$lang['btn_save']    = 'Save changes';
+$lang['btn_reset']   = 'Reset current changes';
+$lang['btn_revert']  = 'Revert styles back to template\'s default';
+
+// default guaranteed placeholders
+$lang['__text__']           = 'Main text color';
+$lang['__background__']     = 'Main background color';
+$lang['__text_alt__']       = 'Alternative text color';
+$lang['__background_alt__'] = 'Alternative background color';
+$lang['__text_neu__']       = 'Neutral text color';
+$lang['__background_neu__'] = 'Neutral background color';
+$lang['__border__']         = 'Border color';
+$lang['__highlight__']      = 'Highlight color (for search results mainly)';
+
+
+
+
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/styling/lang/eo/lang.php b/wiki/lib/plugins/styling/lang/eo/lang.php
new file mode 100644
index 0000000..d8127e7
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/eo/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>
+ */
+$lang['btn_preview']           = 'Antaŭaj ŝanĝoj';
+$lang['btn_save']              = 'Konservi ŝanĝojn';
diff --git a/wiki/lib/plugins/styling/lang/es/intro.txt b/wiki/lib/plugins/styling/lang/es/intro.txt
new file mode 100644
index 0000000..8a55600
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/es/intro.txt
@@ -0,0 +1,2 @@
+Esta herramienta le permite cambiar algunos ajustes de estilo de la plantilla seleccionada.
+Todos los cambios se guardan en un archivo de configuración local y son una actualización segura.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/es/lang.php b/wiki/lib/plugins/styling/lang/es/lang.php
new file mode 100644
index 0000000..5c87c92
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/es/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ */
+$lang['menu']                  = 'Ajustes de plantilla';
+$lang['js']['loader']          = 'La vista previa se está cargando ... <br /> si esto no se ve, sus valores pueden ser defectuosos';
+$lang['js']['popup']           = 'Abrir como una ventana emergente';
+$lang['error']                 = 'Lo sentimos, esta plantilla no admite esta funcionalidad.';
+$lang['btn_preview']           = 'Vista previa de los cambios';
+$lang['btn_save']              = 'Guardar cambios';
+$lang['btn_reset']             = 'Reiniciar los cambios actuales';
+$lang['btn_revert']            = 'Revertir estilos volviendo a los valores por defecto de la plantilla';
+$lang['__text__']              = 'Color del texto principal';
+$lang['__background__']        = 'Color de fondo del texto principal';
+$lang['__text_alt__']          = 'Color del texto alternativo';
+$lang['__background_alt__']    = 'Color de fondo del texto alternativo';
+$lang['__text_neu__']          = 'Color del texto neutro';
+$lang['__background_neu__']    = 'Color de fondo del texto neutro';
+$lang['__border__']            = 'Color del borde';
+$lang['__highlight__']         = 'Color resaltado (para los resultados de búsqueda, principalmente)';
diff --git a/wiki/lib/plugins/styling/lang/fa/intro.txt b/wiki/lib/plugins/styling/lang/fa/intro.txt
new file mode 100644
index 0000000..428a251
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/fa/intro.txt
@@ -0,0 +1,2 @@
+این ابزار این امکان را فراهم می‌سازد که برخی تنظیمات مشخص از قالبی که انتخاب کردید را تغییر دهید.
+تمام تغییرات در فایل داخلی تنظیمات ذخیره می‌شود و به‌روزرسانی هم ایمن است.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/fa/lang.php b/wiki/lib/plugins/styling/lang/fa/lang.php
new file mode 100644
index 0000000..95a65f4
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/fa/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ * @author Sam01 <m.sajad079@gmail.com>
+ */
+$lang['menu']                  = 'تنظیمات ظاهری تمپلیت';
+$lang['js']['loader']          = 'پیش‌نمایش در حال باز شدن است... <br />اگر این پیش نرفت یعنی مقادیرتان اشکال دارد';
+$lang['js']['popup']           = 'باز کردن به صورت پاپ‌آپ';
+$lang['error']                 = 'ببخشید، این قالب از این قابلیت پشتیبانی نمی‌کند';
+$lang['btn_preview']           = 'نمایش تغییرات';
+$lang['btn_save']              = 'ذخیره تغییرات';
+$lang['btn_reset']             = 'بازگردانی تغییر فعلی';
+$lang['btn_revert']            = 'بازگردانی ظاهر به پیشفرض قالب';
+$lang['__text__']              = 'رنگ اصلی متن';
+$lang['__background__']        = 'رنگ اصلی زمینه';
+$lang['__text_alt__']          = 'رنگ ثانویه متن';
+$lang['__background_alt__']    = 'رنگ ثانویه زمینه';
+$lang['__text_neu__']          = 'رنگ خنثی متن';
+$lang['__background_neu__']    = 'رنگ خنثی زمینه';
+$lang['__border__']            = 'رنگ حاشیه';
+$lang['__highlight__']         = 'رنگ برجسته‌سازی (برای نتیجه جستجو)';
diff --git a/wiki/lib/plugins/styling/lang/fr/intro.txt b/wiki/lib/plugins/styling/lang/fr/intro.txt
new file mode 100644
index 0000000..14a615c
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/fr/intro.txt
@@ -0,0 +1,2 @@
+Cet outil vous permet de changer les paramètres de certains style de votre thème actuel.
+Tous les changement sont enregistrés dans un fichier de configuration local qui sera inchangé en cas de mise à jour.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/fr/lang.php b/wiki/lib/plugins/styling/lang/fr/lang.php
new file mode 100644
index 0000000..05725bc
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/fr/lang.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carbain Frédéric <fcarbain@yahoo.fr>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ */
+$lang['menu']                  = 'Paramètres de style du thème (template)';
+$lang['js']['loader']          = 'La prévisualisation est en chargement... <br />Si rien ne se passe, les données sont peut-être erronées';
+$lang['js']['popup']           = 'Ouvrir dans une nouvelle fenêtre';
+$lang['error']                 = 'Désolé, ce thème n\'utilise pas cette fonctionnalité.';
+$lang['btn_preview']           = 'Aperçu des changements';
+$lang['btn_save']              = 'sauvegarder les changements.';
+$lang['btn_reset']             = 'Remettre les changements courants à zéro';
+$lang['btn_revert']            = 'Remettre les styles du thème aux valeurs par défaut';
+$lang['__text__']              = 'Couleur de texte principale';
+$lang['__background__']        = 'Couleur de fond principale';
+$lang['__text_alt__']          = 'Couleur de texte alternative';
+$lang['__background_alt__']    = 'Couleur de fond alternative';
+$lang['__text_neu__']          = 'Couleur de texte neutre';
+$lang['__background_neu__']    = 'Couleur de fond neutre';
+$lang['__border__']            = 'Couleur des contours';
+$lang['__highlight__']         = 'Couleur de surbrillance (utilisée pincipalement pour les résultats de recherche)';
diff --git a/wiki/lib/plugins/styling/lang/hr/intro.txt b/wiki/lib/plugins/styling/lang/hr/intro.txt
new file mode 100644
index 0000000..5c947dd
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/hr/intro.txt
@@ -0,0 +1,2 @@
+Ovaj alat omogućava izmjenu nekih postavki stila vašeg tekućeg wiki predloška.
+Sve postavke su snimljene u lokalnu konfiguracijsku datoteku i neće biti prebrisane kod nadogradnje.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/hr/lang.php b/wiki/lib/plugins/styling/lang/hr/lang.php
new file mode 100644
index 0000000..4d7038a
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/hr/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['menu']                  = 'Postavke stila predloška';
+$lang['js']['loader']          = 'Pregled se učitava...<br />ako ovo ne nestane, vaše vrijednosti su možda neispravne';
+$lang['js']['popup']           = 'Otvori kao zasebni prozor';
+$lang['error']                 = 'Oprostite ali ovaj predložak ne podržava ovu funkcionalnost';
+$lang['btn_preview']           = 'Pregled izmjena';
+$lang['btn_save']              = 'Pohrani promjene';
+$lang['btn_reset']             = 'Resetiraj trenutne promjene';
+$lang['btn_revert']            = 'Vrati postavke nazad na inicijalne vrijednosti predloška';
+$lang['__text__']              = 'Primarna boja teksta';
+$lang['__background__']        = 'Primarna boja pozadine';
+$lang['__text_alt__']          = 'Alternativna boja teksta';
+$lang['__background_alt__']    = 'Alternativna boja pozadine';
+$lang['__text_neu__']          = 'Boja neutralnog teksta';
+$lang['__background_neu__']    = 'Boja neutralne pozadine';
+$lang['__border__']            = 'Boja ruba';
+$lang['__highlight__']         = 'Boja isticanja (uglavnom za rezultat pretrage)';
diff --git a/wiki/lib/plugins/styling/lang/hu/intro.txt b/wiki/lib/plugins/styling/lang/hu/intro.txt
new file mode 100644
index 0000000..42f451d
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/hu/intro.txt
@@ -0,0 +1,2 @@
+Ezzel az eszközzel módosíthatod az aktuális sablon kinézetének néhány elemét.
+A változtatások egy helyi konfigurációs fájlban kerülnek tárolásra, így a frissítések során megmaradnak.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/hu/lang.php b/wiki/lib/plugins/styling/lang/hu/lang.php
new file mode 100644
index 0000000..c6ef5de
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/hu/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ */
+$lang['menu']                  = 'Sablon kinézetének beállításai';
+$lang['js']['loader']          = 'Az előnézet töltődik...<br />ha ez az üzenet nem tűnik el, a beállított értékek hibásak lehetnek';
+$lang['js']['popup']           = 'Megnyitás felugró ablakban';
+$lang['error']                 = 'Ez a sablon sajnos nem támogatja ezt a funkciót';
+$lang['btn_preview']           = 'Változtatások előnézete';
+$lang['btn_save']              = 'Változtatások mentése';
+$lang['btn_reset']             = 'Jelenlegi változtatások visszaállítása';
+$lang['btn_revert']            = 'A sablon alapértelmezett kinézetének visszaállítása';
+$lang['__text__']              = 'Fő szövegszín';
+$lang['__background__']        = 'Fő háttérszín';
+$lang['__text_alt__']          = 'Alternatív szövegszín';
+$lang['__background_alt__']    = 'Alternatív háttérszín';
+$lang['__text_neu__']          = 'Semleges szövegszín';
+$lang['__background_neu__']    = 'Semleges háttérszín';
+$lang['__border__']            = 'Keret színe';
+$lang['__highlight__']         = 'Kijelölés színe (leginkább a keresési eredményeknél)';
diff --git a/wiki/lib/plugins/styling/lang/it/intro.txt b/wiki/lib/plugins/styling/lang/it/intro.txt
new file mode 100644
index 0000000..6c798e4
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/it/intro.txt
@@ -0,0 +1,2 @@
+Questo strumento ti permette di cambiare certe configurazioni di stile del tema attualmente in uso.
+Tutte le modifiche sono salvate in un file di configurazione locale e sono aggiornate in modo sicuro.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/it/lang.php b/wiki/lib/plugins/styling/lang/it/lang.php
new file mode 100644
index 0000000..03b7aa7
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/it/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['menu']                  = 'Configurazioni di stile del tema';
+$lang['js']['loader']          = 'Anteprima in corso...<br />se questo non sparisce, potresti aver fornito dei valori sbagliati';
+$lang['js']['popup']           = 'Apri in un finestra a parte';
+$lang['error']                 = 'Spiacente, questo template non supporta questa funzionalità.';
+$lang['btn_preview']           = 'Cambiamenti precedenti';
+$lang['btn_save']              = 'Salva i cambiamenti';
+$lang['btn_reset']             = 'Azzera le modifiche correnti';
+$lang['btn_revert']            = 'Ripristina gli stili ai valori originari del tema';
+$lang['__text__']              = 'Colore principale del testo';
+$lang['__background__']        = 'Colore principale dello sfondo';
+$lang['__text_alt__']          = 'Colore alternativo per il testo';
+$lang['__background_alt__']    = 'Colore alternativo dello sfondo';
+$lang['__text_neu__']          = 'Colore testo neutrale';
+$lang['__background_neu__']    = 'Colore sfondo neutrale';
+$lang['__border__']            = 'Colore del bordo';
+$lang['__highlight__']         = 'Colore di evidenziazione (principalmente per i risultati di ricerca)';
diff --git a/wiki/lib/plugins/styling/lang/ja/intro.txt b/wiki/lib/plugins/styling/lang/ja/intro.txt
new file mode 100644
index 0000000..1feb4e0
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/ja/intro.txt
@@ -0,0 +1,2 @@
+この画面上で、選択中のテンプレート固有のスタイル設定を変更できます。
+変更内容はすべてローカルの設定ファイル内に保存され、テンプレートを更新しても初期化されません。
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/ja/lang.php b/wiki/lib/plugins/styling/lang/ja/lang.php
new file mode 100644
index 0000000..5c546a7
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/ja/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['menu']                  = 'テンプレートのスタイル設定';
+$lang['js']['loader']          = 'プレビューを読込み中です・・・<br/>この表示が消えない場合、変更した設定値に問題があるかもしれません。';
+$lang['js']['popup']           = 'ポップアップとして表示';
+$lang['error']                 = 'このテンプレートは、この機能に対応していません。';
+$lang['btn_preview']           = '変更内容のプレビュー';
+$lang['btn_save']              = '変更内容の保存';
+$lang['btn_reset']             = '変更内容の初期化';
+$lang['btn_revert']            = 'テンプレートのデフォルト値に戻す';
+$lang['__text__']              = 'メイン文字色';
+$lang['__background__']        = 'メイン背景色';
+$lang['__text_alt__']          = '代替文字色';
+$lang['__background_alt__']    = '代替背景色';
+$lang['__text_neu__']          = '無彩色の文字色';
+$lang['__background_neu__']    = '無彩色の背景色';
+$lang['__border__']            = '枠線の色';
+$lang['__highlight__']         = '強調色(主に検索結果用)';
diff --git a/wiki/lib/plugins/styling/lang/ko/intro.txt b/wiki/lib/plugins/styling/lang/ko/intro.txt
new file mode 100644
index 0000000..c460801
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/ko/intro.txt
@@ -0,0 +1,2 @@
+이 도구는 현재 선택한 템플릿의 특정 스타일 설정을 바꿀 수 있습니다.
+모든 바뀜은 로컬 환경 설정 파일에 저장되며 안전하게 업그레이드됩니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/ko/lang.php b/wiki/lib/plugins/styling/lang/ko/lang.php
new file mode 100644
index 0000000..bcdf9dc
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/ko/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100@gmail.com>
+ */
+$lang['menu']                  = '템플릿 스타일 설정';
+$lang['js']['loader']          = '미리 보기를 불러오는 중...<br />만약 이것이 사라지지 않는다면, 당신은 실망하겠죠';
+$lang['js']['popup']           = '팝업으로 열기';
+$lang['error']                 = '죄송하지만 이 템플릿은 이 기능으로 지원하지 않습니다.';
+$lang['btn_preview']           = '바뀜 미리 보기';
+$lang['btn_save']              = '바뀜 저장';
+$lang['btn_reset']             = '현재 바뀜 재설정';
+$lang['btn_revert']            = '틀의 기본값으로 스타일을 되돌리기';
+$lang['__text__']              = '주요 텍스트 색';
+$lang['__background__']        = '주요 배경 색';
+$lang['__text_alt__']          = '대체 텍스트 색';
+$lang['__background_alt__']    = '대체 배경 색';
+$lang['__text_neu__']          = '중립 텍스트 색';
+$lang['__background_neu__']    = '중립 배경 색';
+$lang['__border__']            = '윤곽선 색';
+$lang['__highlight__']         = '(주로 검색 결과를 위한) 강조 색';
diff --git a/wiki/lib/plugins/styling/lang/nl/intro.txt b/wiki/lib/plugins/styling/lang/nl/intro.txt
new file mode 100644
index 0000000..7275938
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/nl/intro.txt
@@ -0,0 +1,2 @@
+Deze tool laat u een aantal stijlinstellingen van uw huidig geselecteerde template aanpassen.
+Alle aanpassingen worden in een lokaal configuratiebestand bewaard en zijn upgrade veilig.
diff --git a/wiki/lib/plugins/styling/lang/nl/lang.php b/wiki/lib/plugins/styling/lang/nl/lang.php
new file mode 100644
index 0000000..4775fa8
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/nl/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Mark C. Prins <mprins@users.sf.net>
+ * @author hugo smet <hugo.smet@scarlet.be>
+ */
+$lang['menu']                  = 'Template stijl-instellingen';
+$lang['js']['loader']          = 'Voorbeeldweergave is aan het laden...<br />als dit niet verdwijnt zijn uw instellingen mogelijk foutief.';
+$lang['js']['popup']           = 'Open als popup';
+$lang['error']                 = 'Sorry, deze template ondersteunt deze functionaliteit niet.';
+$lang['btn_preview']           = 'Bekijk aanpassingen';
+$lang['btn_save']              = 'Sla aanpassingen op';
+$lang['btn_reset']             = 'Huidige aanpassingen verwerpen';
+$lang['btn_revert']            = 'Stijlen terugzetten naar de standaard waardes van de template';
+$lang['__text__']              = 'Hoofd tekstkleur';
+$lang['__background__']        = 'Hoofd achtergrondkleur';
+$lang['__text_alt__']          = 'Alternatieve tekstkleur';
+$lang['__background_alt__']    = 'Alternatieve achtergrondkleur';
+$lang['__text_neu__']          = 'Neutrale tekstkleur';
+$lang['__background_neu__']    = 'Neutrale achtergrondkleur';
+$lang['__border__']            = 'Kader kleur';
+$lang['__highlight__']         = 'Markeringskleur (hoofdzakelijk voor zoekresultaten)';
diff --git a/wiki/lib/plugins/styling/lang/no/intro.txt b/wiki/lib/plugins/styling/lang/no/intro.txt
new file mode 100644
index 0000000..8222549
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/no/intro.txt
@@ -0,0 +1,2 @@
+Dette verktøyet lar deg endre visse instillinger for malen som nå er i bruk.
+Alle endringer lagres i en lokal konfigurasjonsfil og vil ikke bli overskrevet ved en oppgradering.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/no/lang.php b/wiki/lib/plugins/styling/lang/no/lang.php
new file mode 100644
index 0000000..f9a478b
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/no/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ * @author Arne Hanssen <arnehans@getmail.no>
+ */
+$lang['menu']                  = 'Innstillinger for malstil';
+$lang['js']['loader']          = 'Forhåndsvisning laster...<br />Dersom denne ikke forsvinner, kan det hende at dine verdier er feil';
+$lang['js']['popup']           = 'Åpne som nytt vindu';
+$lang['error']                 = 'Beklager men denne malen støtter ikke denne funksjonaliteten.';
+$lang['btn_preview']           = 'Forhåndsvis endringer';
+$lang['btn_save']              = 'Lagre endringer';
+$lang['btn_reset']             = 'Sett tilbake til nåværende endringer';
+$lang['btn_revert']            = 'Rull tilbake stilen til standard for malen';
+$lang['__text__']              = 'Hovedfarge for tekst';
+$lang['__background__']        = 'Hovedfarge for bagrunn';
+$lang['__text_alt__']          = 'Alternativ tekstfarge';
+$lang['__background_alt__']    = 'Alternativ bakgrunnsfarge';
+$lang['__text_neu__']          = 'Nøytral tekstfarge';
+$lang['__background_neu__']    = 'Nøytral bakgrunnsfarge';
+$lang['__border__']            = 'Kantfarge';
+$lang['__highlight__']         = 'Farge for uthevet tekst (i hovedsak for søk)';
diff --git a/wiki/lib/plugins/styling/lang/pl/intro.txt b/wiki/lib/plugins/styling/lang/pl/intro.txt
new file mode 100644
index 0000000..29206a8
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/pl/intro.txt
@@ -0,0 +1 @@
+To narzędzie umożliwia zmianę niektórych ustawień stylów aktualnie wybranego szablonu. Wszystkie zmiany są przechowywane w lokalnym pliku konfiguracyjnym i są bezpieczne dla aktualizacji.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/pl/lang.php b/wiki/lib/plugins/styling/lang/pl/lang.php
new file mode 100644
index 0000000..e4c84ba
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/pl/lang.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Max <maxrb146@gmail.com>
+ */
+$lang['menu']                  = 'Ustawienia Szablonu';
+$lang['js']['loader']          = 'Podgląd ładuje się ...<br />jeśli ten komunikat nie zniknie, twoje wartości mogą być błędne';
+$lang['js']['popup']           = 'Otwórz w nowym oknie';
+$lang['error']                 = 'Przepraszamy, ten szablon nie wspiera tej funkcjonalności';
+$lang['btn_preview']           = 'Pokaż zmiany ';
+$lang['btn_save']              = 'Zapisz zmiany';
+$lang['btn_reset']             = 'Cofnij zmiany ';
+$lang['btn_revert']            = 'Przywróć style do wartości domyślnych szablonu';
+$lang['__text__']              = 'Kolor tekstu ';
+$lang['__background__']        = 'Kolor tła ';
+$lang['__text_alt__']          = 'Inny kolor tekstu';
+$lang['__background_alt__']    = 'Inny kolor tła';
+$lang['__text_neu__']          = 'Kolor neutralnego tekstu';
+$lang['__background_neu__']    = 'Kolor neutralnego tła';
+$lang['__border__']            = 'kolor obramowania ';
+$lang['__highlight__']         = 'Kolor podświetlenia (głównie dla wyników wyszukiwania)';
diff --git a/wiki/lib/plugins/styling/lang/pt-br/intro.txt b/wiki/lib/plugins/styling/lang/pt-br/intro.txt
new file mode 100644
index 0000000..3d0f47f
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/pt-br/intro.txt
@@ -0,0 +1,2 @@
+Essa ferramente permite a alteração de certas configurações do estilo do seu modelo atual.
+Todas as modificações são armazenadas em um arquivo de configuração local e estão protegidas contra atualizações.
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/pt-br/lang.php b/wiki/lib/plugins/styling/lang/pt-br/lang.php
new file mode 100644
index 0000000..4ebcbe5
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/pt-br/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ */
+$lang['menu']                  = 'Configurações de estilo do modelo';
+$lang['js']['loader']          = 'A visualização está carregando...<br />Caso essa mensagem não desapareça, pode ter algum problema com os seus valores.';
+$lang['js']['popup']           = 'Abrir como um popup';
+$lang['error']                 = 'Desculpe, mas esse modelo não suporta essa funcionalidade.';
+$lang['btn_preview']           = 'Ver alterações';
+$lang['btn_save']              = 'Salvar alterações';
+$lang['btn_reset']             = 'Eliminar as alterações atuais';
+$lang['btn_revert']            = 'Reverter o estilo para os padrões do modelo';
+$lang['__text__']              = 'Cor principal do texto';
+$lang['__background__']        = 'Cor principal do fundo';
+$lang['__text_alt__']          = 'Cor alternativa do texto';
+$lang['__background_alt__']    = 'Cor alternativa do fundo';
+$lang['__text_neu__']          = 'Cor neutra do texto';
+$lang['__background_neu__']    = 'Cor neutra do fundo';
+$lang['__border__']            = 'Cor da borda';
+$lang['__highlight__']         = 'Cor do destaque (primariamente em resultados da pesquisa)';
diff --git a/wiki/lib/plugins/styling/lang/pt/lang.php b/wiki/lib/plugins/styling/lang/pt/lang.php
new file mode 100644
index 0000000..1c64c04
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/pt/lang.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Alfredo Silva <alfredo.silva@sky.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['menu']                  = 'Configurações de Estilo do Modelo';
+$lang['js']['popup']           = 'Abrir como uma janela extra';
+$lang['error']                 = 'Desculpe, este modelo não suporta esta funcionalidade.';
+$lang['btn_preview']           = 'Pré-visualizar alterações';
+$lang['btn_save']              = 'Guardar alterações';
+$lang['btn_reset']             = 'Reiniciar alterações atuais';
+$lang['__text__']              = 'Cor do texto principal';
+$lang['__background__']        = 'Cor principal do fundo';
+$lang['__text_alt__']          = 'Cor alternativa de texto';
+$lang['__background_alt__']    = 'Cor alternativa de fundo';
+$lang['__text_neu__']          = 'Cor neutra de texto';
diff --git a/wiki/lib/plugins/styling/lang/ru/intro.txt b/wiki/lib/plugins/styling/lang/ru/intro.txt
new file mode 100644
index 0000000..3a01411
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/ru/intro.txt
@@ -0,0 +1 @@
+Этот инструмент позволяет изменять стилевые настройки выбранного шаблона. Все изменения хранятся в файле конфигурации и защищены от сброса при обновлении.
diff --git a/wiki/lib/plugins/styling/lang/ru/lang.php b/wiki/lib/plugins/styling/lang/ru/lang.php
new file mode 100644
index 0000000..3c8e60b
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/ru/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author RainbowSpike <1@2.ru>
+ */
+$lang['menu']                  = 'Настройки стилей шаблона';
+$lang['js']['loader']          = 'Загружается предпросмотр...<br />Если здесь случился сбой, ваши настройки могут быть сброшены';
+$lang['js']['popup']           = 'Открыть во всплывающем окне';
+$lang['error']                 = 'Этот шаблон не поддерживает такой функционал.';
+$lang['btn_preview']           = 'Просмотреть изменения';
+$lang['btn_save']              = 'Сохранить изменения';
+$lang['btn_reset']             = 'Сбросить сделанные изменения';
+$lang['btn_revert']            = 'Откатить стили к исходным для шаблона';
+$lang['__text__']              = 'Цвет текста';
+$lang['__background__']        = 'Цвет фона';
+$lang['__text_alt__']          = 'Второй цвет текста';
+$lang['__background_alt__']    = 'Второй цвет фона';
+$lang['__text_neu__']          = 'Нейтральный цвет текста';
+$lang['__background_neu__']    = 'Нейтральный цвет фона';
+$lang['__border__']            = 'Цвет границ';
+$lang['__highlight__']         = 'Цвет подсветки (в основном для результатов поиска)';
diff --git a/wiki/lib/plugins/styling/lang/sk/lang.php b/wiki/lib/plugins/styling/lang/sk/lang.php
new file mode 100644
index 0000000..0058358
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/sk/lang.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ */
+$lang['btn_preview']           = 'Náhľad zmien';
+$lang['btn_save']              = 'Uloženie zmien';
+$lang['btn_reset']             = 'Zruš prevedené zmeny';
+$lang['__text__']              = 'Primárna farba textu';
+$lang['__background__']        = 'Primárna farba pozadia';
+$lang['__text_alt__']          = 'Alternatívna farba textu';
+$lang['__background_alt__']    = 'Alternatívna farba pozadia';
+$lang['__text_neu__']          = 'Neutrálna farba textu';
+$lang['__background_neu__']    = 'Neutrálna farba pozadia';
+$lang['__border__']            = 'Farba okraja';
+$lang['__highlight__']         = 'Farba zvýraznenia (zvyčajne výsledkov vyhľadávania)';
diff --git a/wiki/lib/plugins/styling/lang/sv/lang.php b/wiki/lib/plugins/styling/lang/sv/lang.php
new file mode 100644
index 0000000..00a8518
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/sv/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ */
+$lang['btn_preview']           = 'Förhandsvisa ändringar';
+$lang['btn_save']              = 'Spara ändringar';
+$lang['btn_reset']             = 'Nollställ aktuella ändringar';
+$lang['__text__']              = 'Huvudsaklig textfärg';
+$lang['__background__']        = 'Huvudsaklig bakgrundsfärg';
+$lang['__text_alt__']          = 'Alternativ textfärg';
+$lang['__background_alt__']    = 'Alternativ bakgrundsfärg';
+$lang['__text_neu__']          = 'Neutral textfärg';
+$lang['__background_neu__']    = 'Neutral bakgrundsfärg';
+$lang['__border__']            = 'Ramfärg';
diff --git a/wiki/lib/plugins/styling/lang/zh-tw/lang.php b/wiki/lib/plugins/styling/lang/zh-tw/lang.php
new file mode 100644
index 0000000..ce4a9a9
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/zh-tw/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Liou, Jhe-Yu <lioujheyu@gmail.com>
+ */
+$lang['menu']                  = '模板風格設定';
+$lang['error']                 = '抱歉,該模板不支持這個功能';
+$lang['btn_preview']           = '預覽';
+$lang['btn_save']              = '儲存';
+$lang['btn_reset']             = '重設';
+$lang['btn_revert']            = '將風格復原至模板預設值';
+$lang['__text__']              = '主要文字顏色';
+$lang['__background__']        = '主要背景顏色';
diff --git a/wiki/lib/plugins/styling/lang/zh/intro.txt b/wiki/lib/plugins/styling/lang/zh/intro.txt
new file mode 100644
index 0000000..7091712
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/zh/intro.txt
@@ -0,0 +1 @@
+这个工具可以让您对当前选中的模板的某些样式设置进行改变。所有改动会保存在一个本地配置文件中,不会被升级所影响。
\ No newline at end of file
diff --git a/wiki/lib/plugins/styling/lang/zh/lang.php b/wiki/lib/plugins/styling/lang/zh/lang.php
new file mode 100644
index 0000000..386312a
--- /dev/null
+++ b/wiki/lib/plugins/styling/lang/zh/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author lainme <lainme993@gmail.com>
+ */
+$lang['menu']                  = '模板样式设置';
+$lang['js']['loader']          = '正在载入预览...<br />如果本句一直没有消失,您的设置可能有错';
+$lang['js']['popup']           = '作为弹出窗口打开';
+$lang['error']                 = '抱歉,这个模板不支持这项功能。';
+$lang['btn_preview']           = '预览改动';
+$lang['btn_save']              = '保存改动';
+$lang['btn_reset']             = '重置当前改动';
+$lang['btn_revert']            = '回退样式到模板的默认值';
+$lang['__text__']              = '主要的字体颜色';
+$lang['__background__']        = '主要的背景颜色';
+$lang['__text_alt__']          = '备选字体的颜色';
+$lang['__background_alt__']    = '备选背景的颜色';
+$lang['__text_neu__']          = '中性字体的颜色';
+$lang['__background_neu__']    = '中性背景的颜色';
+$lang['__border__']            = '边框颜色';
+$lang['__highlight__']         = '高亮颜色 (主要用于搜索结果)';
diff --git a/wiki/lib/plugins/styling/plugin.info.txt b/wiki/lib/plugins/styling/plugin.info.txt
new file mode 100644
index 0000000..9f002e2
--- /dev/null
+++ b/wiki/lib/plugins/styling/plugin.info.txt
@@ -0,0 +1,7 @@
+base   styling
+author Andreas Gohr
+email  andi@splitbrain.org
+date   2015-07-26
+name   styling plugin
+desc   Allows to edit style.ini replacements
+url    https://www.dokuwiki.org/plugin:styling
diff --git a/wiki/lib/plugins/styling/popup.php b/wiki/lib/plugins/styling/popup.php
new file mode 100644
index 0000000..964b19e
--- /dev/null
+++ b/wiki/lib/plugins/styling/popup.php
@@ -0,0 +1,30 @@
+<?php
+if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__) . '/../../../');
+require_once(DOKU_INC . 'inc/init.php');
+//close session
+session_write_close();
+header('Content-Type: text/html; charset=utf-8');
+header('X-UA-Compatible: IE=edge,chrome=1');
+
+/** @var admin_plugin_styling $plugin */
+$plugin = plugin_load('admin', 'styling');
+if(!auth_isadmin()) die('only admins allowed');
+$plugin->ispopup = true;
+
+// handle posts
+$plugin->handle();
+
+// output plugin in a very minimal template:
+?><!DOCTYPE html>
+<html lang="<?php echo $conf['lang'] ?>" dir="<?php echo $lang['direction'] ?>">
+<head>
+    <meta charset="utf-8" />
+    <title><?php echo $plugin->getLang('menu') ?></title>
+    <?php tpl_metaheaders(false) ?>
+    <meta name="viewport" content="width=device-width,initial-scale=1" />
+    <?php echo tpl_favicon(array('favicon')) ?>
+</head>
+<body class="dokuwiki">
+    <?php $plugin->html() ?>
+</body>
+</html>
diff --git a/wiki/lib/plugins/styling/script.js b/wiki/lib/plugins/styling/script.js
new file mode 100644
index 0000000..074c8dc
--- /dev/null
+++ b/wiki/lib/plugins/styling/script.js
@@ -0,0 +1,97 @@
+/* DOKUWIKI:include_once iris.js */
+
+jQuery(function () {
+
+    /**
+     * Function to reload the preview styles in the main window
+     *
+     * @param {Window} target the main window
+     */
+    function applyPreview(target) {
+        // remove style
+        var $style = target.jQuery('link[rel=stylesheet][href*="lib/exe/css.php"]');
+        $style.attr('href', '');
+
+        // append the loader screen
+        var $loader = target.jQuery('#plugin__styling_loader');
+        if (!$loader.length) {
+            $loader = target.jQuery('<div id="plugin__styling_loader">' + LANG.plugins.styling.loader + '</div>');
+            $loader.css({
+                'position':         'absolute',
+                'width':            '100%',
+                'height':           '100%',
+                'top':              0,
+                'left':             0,
+                'z-index':          5000,
+                'background-color': '#fff',
+                'opacity':          '0.7',
+                'color':            '#000',
+                'font-size':        '2.5em',
+                'text-align':       'center',
+                'line-height':      1.5,
+                'padding-top':      '2em'
+            });
+            target.jQuery('body').append($loader);
+        }
+
+        // load preview in main window (timeout works around chrome updating CSS weirdness)
+        setTimeout(function () {
+            var now = new Date().getTime();
+            $style.attr('href', DOKU_BASE + 'lib/exe/css.php?preview=1&tseed=' + now);
+        }, 500);
+    }
+
+    var doreload = 1;
+    var $styling_plugin = jQuery('#plugin__styling');
+
+    // if we are not on the plugin page (either main or popup)
+    if (!$styling_plugin.length) {
+        // handle the preview cookie
+        if(DokuCookie.getValue('styling_plugin') == 1) {
+            applyPreview(window);
+        }
+        return; // nothing more to do here
+    }
+
+    /* ---- from here on we're in the popup or admin page ---- */
+
+    // add the color picker
+    $styling_plugin.find('.color').iris({});
+
+    // add button on main page
+    if (!$styling_plugin.hasClass('ispopup')) {
+        var $form = $styling_plugin.find('form.styling').first();
+        var $btn = jQuery('<button>' + LANG.plugins.styling.popup + '</button>');
+        $form.prepend($btn);
+
+        $btn.click(function (e) {
+            var windowFeatures = "menubar=no,location=no,resizable=yes,scrollbars=yes,status=false,width=500,height=500";
+            window.open(DOKU_BASE + 'lib/plugins/styling/popup.php', 'styling_popup', windowFeatures);
+            e.preventDefault();
+            e.stopPropagation();
+        }).wrap('<p></p>');
+        return; // we exit here if this is not the popup
+    }
+
+    /* ---- from here on we're in the popup only ---- */
+
+    // reload the main page on close
+    window.onunload = function(e) {
+        if(doreload) {
+            window.opener.DokuCookie.setValue('styling_plugin', 0);
+            window.opener.document.location.reload();
+        }
+        return null;
+    };
+
+    // don't reload on our own buttons
+    jQuery(':button').click(function(e){
+        doreload = false;
+    });
+
+    // on first load apply preview
+    applyPreview(window.opener);
+
+    // enable the preview cookie
+    window.opener.DokuCookie.setValue('styling_plugin', 1);
+});
diff --git a/wiki/lib/plugins/styling/style.less b/wiki/lib/plugins/styling/style.less
new file mode 100644
index 0000000..be0e16a
--- /dev/null
+++ b/wiki/lib/plugins/styling/style.less
@@ -0,0 +1,13 @@
+#plugin__styling {
+    button.primary {
+        font-weight: bold;
+    }
+
+    [dir=rtl] & table input {
+        text-align: right;
+    }
+}
+
+#plugin__styling_loader {
+    display: none;
+}
diff --git a/wiki/lib/plugins/syntax.php b/wiki/lib/plugins/syntax.php
new file mode 100644
index 0000000..9e2913d
--- /dev/null
+++ b/wiki/lib/plugins/syntax.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Syntax Plugin Prototype
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
+
+    var $allowedModesSetup = false;
+
+    /**
+     * Syntax Type
+     *
+     * Needs to return one of the mode types defined in $PARSER_MODES in parser.php
+     *
+     * @return string
+     */
+    function getType(){
+        trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
+        return '';
+    }
+
+    /**
+     * Allowed Mode Types
+     *
+     * Defines the mode types for other dokuwiki markup that maybe nested within the
+     * plugin's own markup. Needs to return an array of one or more of the mode types
+     * defined in $PARSER_MODES in parser.php
+     *
+     * @return array
+     */
+    function getAllowedTypes() {
+        return array();
+    }
+
+    /**
+     * Paragraph Type
+     *
+     * Defines how this syntax is handled regarding paragraphs. This is important
+     * for correct XHTML nesting. Should return one of the following:
+     *
+     * 'normal' - The plugin can be used inside paragraphs
+     * 'block'  - Open paragraphs need to be closed before plugin output
+     * 'stack'  - Special case. Plugin wraps other paragraphs.
+     *
+     * @see Doku_Handler_Block
+     *
+     * @return string
+     */
+    function getPType(){
+        return 'normal';
+    }
+
+    /**
+     * Handler to prepare matched data for the rendering process
+     *
+     * This function can only pass data to render() via its return value - render()
+     * may be not be run during the object's current life.
+     *
+     * Usually you should only need the $match param.
+     *
+     * @param   string       $match   The text matched by the patterns
+     * @param   int          $state   The lexer state for the match
+     * @param   int          $pos     The character position of the matched text
+     * @param   Doku_Handler $handler The Doku_Handler object
+     * @return  bool|array Return an array with all data you want to use in render, false don't add an instruction
+     */
+    function handle($match, $state, $pos, Doku_Handler $handler){
+        trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
+    }
+
+    /**
+     * Handles the actual output creation.
+     *
+     * The function must not assume any other of the classes methods have been run
+     * during the object's current life. The only reliable data it receives are its
+     * parameters.
+     *
+     * The function should always check for the given output format and return false
+     * when a format isn't supported.
+     *
+     * $renderer contains a reference to the renderer object which is
+     * currently handling the rendering. You need to use it for writing
+     * the output. How this is done depends on the renderer used (specified
+     * by $format
+     *
+     * The contents of the $data array depends on what the handler() function above
+     * created
+     *
+     * @param string          $format   output format being rendered
+     * @param Doku_Renderer   $renderer the current renderer object
+     * @param array           $data     data created by handler()
+     * @return  boolean                 rendered correctly? (however, returned value is not used at the moment)
+     */
+    function render($format, Doku_Renderer $renderer, $data) {
+        trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
+
+    }
+
+    /**
+     *  There should be no need to override this function
+     *
+     * @param string $mode
+     * @return bool
+     */
+    function accepts($mode) {
+
+        if (!$this->allowedModesSetup) {
+            global $PARSER_MODES;
+
+            $allowedModeTypes = $this->getAllowedTypes();
+            foreach($allowedModeTypes as $mt) {
+                $this->allowedModes = array_merge($this->allowedModes, $PARSER_MODES[$mt]);
+            }
+
+            $idx = array_search(substr(get_class($this), 7), (array) $this->allowedModes);
+            if ($idx !== false) {
+                unset($this->allowedModes[$idx]);
+            }
+            $this->allowedModesSetup = true;
+        }
+
+        return parent::accepts($mode);
+    }
+}
+//Setup VIM: ex: et ts=4 :
diff --git a/wiki/lib/plugins/usermanager/admin.php b/wiki/lib/plugins/usermanager/admin.php
new file mode 100644
index 0000000..6d9bf3b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/admin.php
@@ -0,0 +1,1083 @@
+<?php
+/*
+ *  User Manager
+ *
+ *  Dokuwiki Admin Plugin
+ *
+ *  This version of the user manager has been modified to only work with
+ *  objectified version of auth system
+ *
+ *  @author  neolao <neolao@neolao.com>
+ *  @author  Chris Smith <chris@jalakai.co.uk>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+if(!defined('DOKU_PLUGIN_IMAGES')) define('DOKU_PLUGIN_IMAGES',DOKU_BASE.'lib/plugins/usermanager/images/');
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
+
+    protected $_auth = null;        // auth object
+    protected $_user_total = 0;     // number of registered users
+    protected $_filter = array();   // user selection filter(s)
+    protected $_start = 0;          // index of first user to be displayed
+    protected $_last = 0;           // index of the last user to be displayed
+    protected $_pagesize = 20;      // number of users to list on one page
+    protected $_edit_user = '';     // set to user selected for editing
+    protected $_edit_userdata = array();
+    protected $_disabled = '';      // if disabled set to explanatory string
+    protected $_import_failures = array();
+    protected $_lastdisabled = false; // set to true if last user is unknown and last button is hence buggy
+
+    /**
+     * Constructor
+     */
+    public function __construct(){
+        /** @var DokuWiki_Auth_Plugin $auth */
+        global $auth;
+
+        $this->setupLocale();
+
+        if (!isset($auth)) {
+            $this->_disabled = $this->lang['noauth'];
+        } else if (!$auth->canDo('getUsers')) {
+            $this->_disabled = $this->lang['nosupport'];
+        } else {
+
+            // we're good to go
+            $this->_auth = & $auth;
+
+        }
+
+        // attempt to retrieve any import failures from the session
+        if (!empty($_SESSION['import_failures'])){
+            $this->_import_failures = $_SESSION['import_failures'];
+        }
+    }
+
+    /**
+     * Return prompt for admin menu
+     *
+     * @param string $language
+     * @return string
+     */
+    public function getMenuText($language) {
+
+        if (!is_null($this->_auth))
+          return parent::getMenuText($language);
+
+        return $this->getLang('menu').' '.$this->_disabled;
+    }
+
+    /**
+     * return sort order for position in admin menu
+     *
+     * @return int
+     */
+    public function getMenuSort() {
+        return 2;
+    }
+
+    /**
+     * @return int current start value for pageination
+     */
+    public function getStart() {
+        return $this->_start;
+    }
+
+    /**
+     * @return int number of users per page
+     */
+    public function getPagesize() {
+        return $this->_pagesize;
+    }
+
+    /**
+     * @param boolean $lastdisabled
+     */
+    public function setLastdisabled($lastdisabled) {
+        $this->_lastdisabled = $lastdisabled;
+    }
+
+    /**
+     * Handle user request
+     *
+     * @return bool
+     */
+    public function handle() {
+        global $INPUT;
+        if (is_null($this->_auth)) return false;
+
+        // extract the command and any specific parameters
+        // submit button name is of the form - fn[cmd][param(s)]
+        $fn   = $INPUT->param('fn');
+
+        if (is_array($fn)) {
+            $cmd = key($fn);
+            $param = is_array($fn[$cmd]) ? key($fn[$cmd]) : null;
+        } else {
+            $cmd = $fn;
+            $param = null;
+        }
+
+        if ($cmd != "search") {
+            $this->_start = $INPUT->int('start', 0);
+            $this->_filter = $this->_retrieveFilter();
+        }
+
+        switch($cmd){
+            case "add"    : $this->_addUser(); break;
+            case "delete" : $this->_deleteUser(); break;
+            case "modify" : $this->_modifyUser(); break;
+            case "edit"   : $this->_editUser($param); break;
+            case "search" : $this->_setFilter($param);
+                            $this->_start = 0;
+                            break;
+            case "export" : $this->_export(); break;
+            case "import" : $this->_import(); break;
+            case "importfails" : $this->_downloadImportFailures(); break;
+        }
+
+        $this->_user_total = $this->_auth->canDo('getUserCount') ? $this->_auth->getUserCount($this->_filter) : -1;
+
+        // page handling
+        switch($cmd){
+            case 'start' : $this->_start = 0; break;
+            case 'prev'  : $this->_start -= $this->_pagesize; break;
+            case 'next'  : $this->_start += $this->_pagesize; break;
+            case 'last'  : $this->_start = $this->_user_total; break;
+        }
+        $this->_validatePagination();
+        return true;
+    }
+
+    /**
+     * Output appropriate html
+     *
+     * @return bool
+     */
+    public function html() {
+        global $ID;
+
+        if(is_null($this->_auth)) {
+            print $this->lang['badauth'];
+            return false;
+        }
+
+        $user_list = $this->_auth->retrieveUsers($this->_start, $this->_pagesize, $this->_filter);
+
+        $page_buttons = $this->_pagination();
+        $delete_disable = $this->_auth->canDo('delUser') ? '' : 'disabled="disabled"';
+
+        $editable = $this->_auth->canDo('UserMod');
+        $export_label = empty($this->_filter) ? $this->lang['export_all'] : $this->lang['export_filtered'];
+
+        print $this->locale_xhtml('intro');
+        print $this->locale_xhtml('list');
+
+        ptln("<div id=\"user__manager\">");
+        ptln("<div class=\"level2\">");
+
+        if ($this->_user_total > 0) {
+            ptln("<p>".sprintf($this->lang['summary'],$this->_start+1,$this->_last,$this->_user_total,$this->_auth->getUserCount())."</p>");
+        } else {
+            if($this->_user_total < 0) {
+                $allUserTotal = 0;
+            } else {
+                $allUserTotal = $this->_auth->getUserCount();
+            }
+            ptln("<p>".sprintf($this->lang['nonefound'], $allUserTotal)."</p>");
+        }
+        ptln("<form action=\"".wl($ID)."\" method=\"post\">");
+        formSecurityToken();
+        ptln("  <div class=\"table\">");
+        ptln("  <table class=\"inline\">");
+        ptln("    <thead>");
+        ptln("      <tr>");
+        ptln("        <th>&#160;</th><th>".$this->lang["user_id"]."</th><th>".$this->lang["user_name"]."</th><th>".$this->lang["user_mail"]."</th><th>".$this->lang["user_groups"]."</th>");
+        ptln("      </tr>");
+
+        ptln("      <tr>");
+        ptln("        <td class=\"rightalign\"><input type=\"image\" src=\"".DOKU_PLUGIN_IMAGES."search.png\" name=\"fn[search][new]\" title=\"".$this->lang['search_prompt']."\" alt=\"".$this->lang['search']."\" class=\"button\" /></td>");
+        ptln("        <td><input type=\"text\" name=\"userid\" class=\"edit\" value=\"".$this->_htmlFilter('user')."\" /></td>");
+        ptln("        <td><input type=\"text\" name=\"username\" class=\"edit\" value=\"".$this->_htmlFilter('name')."\" /></td>");
+        ptln("        <td><input type=\"text\" name=\"usermail\" class=\"edit\" value=\"".$this->_htmlFilter('mail')."\" /></td>");
+        ptln("        <td><input type=\"text\" name=\"usergroups\" class=\"edit\" value=\"".$this->_htmlFilter('grps')."\" /></td>");
+        ptln("      </tr>");
+        ptln("    </thead>");
+
+        if ($this->_user_total) {
+            ptln("    <tbody>");
+            foreach ($user_list as $user => $userinfo) {
+                extract($userinfo);
+                /**
+                 * @var string $name
+                 * @var string $pass
+                 * @var string $mail
+                 * @var array  $grps
+                 */
+                $groups = join(', ',$grps);
+                ptln("    <tr class=\"user_info\">");
+                ptln("      <td class=\"centeralign\"><input type=\"checkbox\" name=\"delete[".hsc($user)."]\" ".$delete_disable." /></td>");
+                if ($editable) {
+                    ptln("    <td><a href=\"".wl($ID,array('fn[edit]['.$user.']' => 1,
+                                                           'do' => 'admin',
+                                                           'page' => 'usermanager',
+                                                           'sectok' => getSecurityToken())).
+                         "\" title=\"".$this->lang['edit_prompt']."\">".hsc($user)."</a></td>");
+                } else {
+                    ptln("    <td>".hsc($user)."</td>");
+                }
+                ptln("      <td>".hsc($name)."</td><td>".hsc($mail)."</td><td>".hsc($groups)."</td>");
+                ptln("    </tr>");
+            }
+            ptln("    </tbody>");
+        }
+
+        ptln("    <tbody>");
+        ptln("      <tr><td colspan=\"5\" class=\"centeralign\">");
+        ptln("        <span class=\"medialeft\">");
+        ptln("          <button type=\"submit\" name=\"fn[delete]\" id=\"usrmgr__del\" ".$delete_disable.">".$this->lang['delete_selected']."</button>");
+        ptln("        </span>");
+        ptln("        <span class=\"mediaright\">");
+        ptln("          <button type=\"submit\" name=\"fn[start]\" ".$page_buttons['start'].">".$this->lang['start']."</button>");
+        ptln("          <button type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev'].">".$this->lang['prev']."</button>");
+        ptln("          <button type=\"submit\" name=\"fn[next]\" ".$page_buttons['next'].">".$this->lang['next']."</button>");
+        ptln("          <button type=\"submit\" name=\"fn[last]\" ".$page_buttons['last'].">".$this->lang['last']."</button>");
+        ptln("        </span>");
+        if (!empty($this->_filter)) {
+            ptln("    <button type=\"submit\" name=\"fn[search][clear]\">".$this->lang['clear']."</button>");
+        }
+        ptln("        <button type=\"submit\" name=\"fn[export]\">".$export_label."</button>");
+        ptln("        <input type=\"hidden\" name=\"do\"    value=\"admin\" />");
+        ptln("        <input type=\"hidden\" name=\"page\"  value=\"usermanager\" />");
+
+        $this->_htmlFilterSettings(2);
+
+        ptln("      </td></tr>");
+        ptln("    </tbody>");
+        ptln("  </table>");
+        ptln("  </div>");
+
+        ptln("</form>");
+        ptln("</div>");
+
+        $style = $this->_edit_user ? " class=\"edit_user\"" : "";
+
+        if ($this->_auth->canDo('addUser')) {
+            ptln("<div".$style.">");
+            print $this->locale_xhtml('add');
+            ptln("  <div class=\"level2\">");
+
+            $this->_htmlUserForm('add',null,array(),4);
+
+            ptln("  </div>");
+            ptln("</div>");
+        }
+
+        if($this->_edit_user  && $this->_auth->canDo('UserMod')){
+            ptln("<div".$style." id=\"scroll__here\">");
+            print $this->locale_xhtml('edit');
+            ptln("  <div class=\"level2\">");
+
+            $this->_htmlUserForm('modify',$this->_edit_user,$this->_edit_userdata,4);
+
+            ptln("  </div>");
+            ptln("</div>");
+        }
+
+        if ($this->_auth->canDo('addUser')) {
+            $this->_htmlImportForm();
+        }
+        ptln("</div>");
+        return true;
+    }
+
+    /**
+     * Display form to add or modify a user
+     *
+     * @param string $cmd 'add' or 'modify'
+     * @param string $user id of user
+     * @param array  $userdata array with name, mail, pass and grps
+     * @param int    $indent
+     */
+    protected function _htmlUserForm($cmd,$user='',$userdata=array(),$indent=0) {
+        global $conf;
+        global $ID;
+        global $lang;
+
+        $name = $mail = $groups = '';
+        $notes = array();
+
+        if ($user) {
+            extract($userdata);
+            if (!empty($grps)) $groups = join(',',$grps);
+        } else {
+            $notes[] = sprintf($this->lang['note_group'],$conf['defaultgroup']);
+        }
+
+        ptln("<form action=\"".wl($ID)."\" method=\"post\">",$indent);
+        formSecurityToken();
+        ptln("  <div class=\"table\">",$indent);
+        ptln("  <table class=\"inline\">",$indent);
+        ptln("    <thead>",$indent);
+        ptln("      <tr><th>".$this->lang["field"]."</th><th>".$this->lang["value"]."</th></tr>",$indent);
+        ptln("    </thead>",$indent);
+        ptln("    <tbody>",$indent);
+
+        $this->_htmlInputField($cmd."_userid",    "userid",    $this->lang["user_id"],    $user,  $this->_auth->canDo("modLogin"),   true, $indent+6);
+        $this->_htmlInputField($cmd."_userpass",  "userpass",  $this->lang["user_pass"],  "",     $this->_auth->canDo("modPass"),   false, $indent+6);
+        $this->_htmlInputField($cmd."_userpass2", "userpass2", $lang["passchk"],          "",     $this->_auth->canDo("modPass"),   false, $indent+6);
+        $this->_htmlInputField($cmd."_username",  "username",  $this->lang["user_name"],  $name,  $this->_auth->canDo("modName"),    true, $indent+6);
+        $this->_htmlInputField($cmd."_usermail",  "usermail",  $this->lang["user_mail"],  $mail,  $this->_auth->canDo("modMail"),    true, $indent+6);
+        $this->_htmlInputField($cmd."_usergroups","usergroups",$this->lang["user_groups"],$groups,$this->_auth->canDo("modGroups"), false, $indent+6);
+
+        if ($this->_auth->canDo("modPass")) {
+            if ($cmd == 'add') {
+                $notes[] = $this->lang['note_pass'];
+            }
+            if ($user) {
+                $notes[] = $this->lang['note_notify'];
+            }
+
+            ptln("<tr><td><label for=\"".$cmd."_usernotify\" >".$this->lang["user_notify"].": </label></td><td><input type=\"checkbox\" id=\"".$cmd."_usernotify\" name=\"usernotify\" value=\"1\" /></td></tr>", $indent);
+        }
+
+        ptln("    </tbody>",$indent);
+        ptln("    <tbody>",$indent);
+        ptln("      <tr>",$indent);
+        ptln("        <td colspan=\"2\">",$indent);
+        ptln("          <input type=\"hidden\" name=\"do\"    value=\"admin\" />",$indent);
+        ptln("          <input type=\"hidden\" name=\"page\"  value=\"usermanager\" />",$indent);
+
+        // save current $user, we need this to access details if the name is changed
+        if ($user)
+          ptln("          <input type=\"hidden\" name=\"userid_old\"  value=\"".hsc($user)."\" />",$indent);
+
+        $this->_htmlFilterSettings($indent+10);
+
+        ptln("          <button type=\"submit\" name=\"fn[".$cmd."]\">".$this->lang[$cmd]."</button>",$indent);
+        ptln("        </td>",$indent);
+        ptln("      </tr>",$indent);
+        ptln("    </tbody>",$indent);
+        ptln("  </table>",$indent);
+
+        if ($notes) {
+            ptln("    <ul class=\"notes\">");
+            foreach ($notes as $note) {
+                ptln("      <li><span class=\"li\">".$note."</li>",$indent);
+            }
+            ptln("    </ul>");
+        }
+        ptln("  </div>",$indent);
+        ptln("</form>",$indent);
+    }
+
+    /**
+     * Prints a inputfield
+     *
+     * @param string $id
+     * @param string $name
+     * @param string $label
+     * @param string $value
+     * @param bool   $cando whether auth backend is capable to do this action
+     * @param bool   $required is this field required?
+     * @param int $indent
+     */
+    protected function _htmlInputField($id, $name, $label, $value, $cando, $required, $indent=0) {
+        $class = $cando ? '' : ' class="disabled"';
+        echo str_pad('',$indent);
+
+        if($name == 'userpass' || $name == 'userpass2'){
+            $fieldtype = 'password';
+            $autocomp  = 'autocomplete="off"';
+        }elseif($name == 'usermail'){
+            $fieldtype = 'email';
+            $autocomp  = '';
+        }else{
+            $fieldtype = 'text';
+            $autocomp  = '';
+        }
+        $value = hsc($value);
+
+        echo "<tr $class>";
+        echo "<td><label for=\"$id\" >$label: </label></td>";
+        echo "<td>";
+        if($cando){
+            $req = '';
+            if($required) $req = 'required="required"';
+            echo "<input type=\"$fieldtype\" id=\"$id\" name=\"$name\" value=\"$value\" class=\"edit\" $autocomp $req />";
+        }else{
+            echo "<input type=\"hidden\" name=\"$name\" value=\"$value\" />";
+            echo "<input type=\"$fieldtype\" id=\"$id\" name=\"$name\" value=\"$value\" class=\"edit disabled\" disabled=\"disabled\" />";
+        }
+        echo "</td>";
+        echo "</tr>";
+    }
+
+    /**
+     * Returns htmlescaped filter value
+     *
+     * @param string $key name of search field
+     * @return string html escaped value
+     */
+    protected function _htmlFilter($key) {
+        if (empty($this->_filter)) return '';
+        return (isset($this->_filter[$key]) ? hsc($this->_filter[$key]) : '');
+    }
+
+    /**
+     * Print hidden inputs with the current filter values
+     *
+     * @param int $indent
+     */
+    protected function _htmlFilterSettings($indent=0) {
+
+        ptln("<input type=\"hidden\" name=\"start\" value=\"".$this->_start."\" />",$indent);
+
+        foreach ($this->_filter as $key => $filter) {
+            ptln("<input type=\"hidden\" name=\"filter[".$key."]\" value=\"".hsc($filter)."\" />",$indent);
+        }
+    }
+
+    /**
+     * Print import form and summary of previous import
+     *
+     * @param int $indent
+     */
+    protected function _htmlImportForm($indent=0) {
+        global $ID;
+
+        $failure_download_link = wl($ID,array('do'=>'admin','page'=>'usermanager','fn[importfails]'=>1));
+
+        ptln('<div class="level2 import_users">',$indent);
+        print $this->locale_xhtml('import');
+        ptln('  <form action="'.wl($ID).'" method="post" enctype="multipart/form-data">',$indent);
+        formSecurityToken();
+        ptln('    <label>'.$this->lang['import_userlistcsv'].'<input type="file" name="import" /></label>',$indent);
+        ptln('    <button type="submit" name="fn[import]">'.$this->lang['import'].'</button>',$indent);
+        ptln('    <input type="hidden" name="do"    value="admin" />',$indent);
+        ptln('    <input type="hidden" name="page"  value="usermanager" />',$indent);
+
+        $this->_htmlFilterSettings($indent+4);
+        ptln('  </form>',$indent);
+        ptln('</div>');
+
+        // list failures from the previous import
+        if ($this->_import_failures) {
+            $digits = strlen(count($this->_import_failures));
+            ptln('<div class="level3 import_failures">',$indent);
+            ptln('  <h3>'.$this->lang['import_header'].'</h3>');
+            ptln('  <table class="import_failures">',$indent);
+            ptln('    <thead>',$indent);
+            ptln('      <tr>',$indent);
+            ptln('        <th class="line">'.$this->lang['line'].'</th>',$indent);
+            ptln('        <th class="error">'.$this->lang['error'].'</th>',$indent);
+            ptln('        <th class="userid">'.$this->lang['user_id'].'</th>',$indent);
+            ptln('        <th class="username">'.$this->lang['user_name'].'</th>',$indent);
+            ptln('        <th class="usermail">'.$this->lang['user_mail'].'</th>',$indent);
+            ptln('        <th class="usergroups">'.$this->lang['user_groups'].'</th>',$indent);
+            ptln('      </tr>',$indent);
+            ptln('    </thead>',$indent);
+            ptln('    <tbody>',$indent);
+            foreach ($this->_import_failures as $line => $failure) {
+                ptln('      <tr>',$indent);
+                ptln('        <td class="lineno"> '.sprintf('%0'.$digits.'d',$line).' </td>',$indent);
+                ptln('        <td class="error">' .$failure['error'].' </td>', $indent);
+                ptln('        <td class="field userid"> '.hsc($failure['user'][0]).' </td>',$indent);
+                ptln('        <td class="field username"> '.hsc($failure['user'][2]).' </td>',$indent);
+                ptln('        <td class="field usermail"> '.hsc($failure['user'][3]).' </td>',$indent);
+                ptln('        <td class="field usergroups"> '.hsc($failure['user'][4]).' </td>',$indent);
+                ptln('      </tr>',$indent);
+            }
+            ptln('    </tbody>',$indent);
+            ptln('  </table>',$indent);
+            ptln('  <p><a href="'.$failure_download_link.'">'.$this->lang['import_downloadfailures'].'</a></p>');
+            ptln('</div>');
+        }
+
+    }
+
+    /**
+     * Add an user to auth backend
+     *
+     * @return bool whether succesful
+     */
+    protected function _addUser(){
+        global $INPUT;
+        if (!checkSecurityToken()) return false;
+        if (!$this->_auth->canDo('addUser')) return false;
+
+        list($user,$pass,$name,$mail,$grps,$passconfirm) = $this->_retrieveUser();
+        if (empty($user)) return false;
+
+        if ($this->_auth->canDo('modPass')){
+            if (empty($pass)){
+                if($INPUT->has('usernotify')){
+                    $pass = auth_pwgen($user);
+                } else {
+                    msg($this->lang['add_fail'], -1);
+                    msg($this->lang['addUser_error_missing_pass'], -1);
+                    return false;
+                }
+            } else {
+                if (!$this->_verifyPassword($pass,$passconfirm)) {
+                    msg($this->lang['add_fail'], -1);
+                    msg($this->lang['addUser_error_pass_not_identical'], -1);
+                    return false;
+                }
+            }
+        } else {
+            if (!empty($pass)){
+                msg($this->lang['add_fail'], -1);
+                msg($this->lang['addUser_error_modPass_disabled'], -1);
+                return false;
+            }
+        }
+
+        if ($this->_auth->canDo('modName')){
+            if (empty($name)){
+                msg($this->lang['add_fail'], -1);
+                msg($this->lang['addUser_error_name_missing'], -1);
+                return false;
+            }
+        } else {
+            if (!empty($name)){
+                msg($this->lang['add_fail'], -1);
+                msg($this->lang['addUser_error_modName_disabled'], -1);
+                return false;
+            }
+        }
+
+        if ($this->_auth->canDo('modMail')){
+            if (empty($mail)){
+                msg($this->lang['add_fail'], -1);
+                msg($this->lang['addUser_error_mail_missing'], -1);
+                return false;
+            }
+        } else {
+            if (!empty($mail)){
+                msg($this->lang['add_fail'], -1);
+                msg($this->lang['addUser_error_modMail_disabled'], -1);
+                return false;
+            }
+        }
+
+        if ($ok = $this->_auth->triggerUserMod('create', array($user,$pass,$name,$mail,$grps))) {
+
+            msg($this->lang['add_ok'], 1);
+
+            if ($INPUT->has('usernotify') && $pass) {
+                $this->_notifyUser($user,$pass);
+            }
+        } else {
+            msg($this->lang['add_fail'], -1);
+            msg($this->lang['addUser_error_create_event_failed'], -1);
+        }
+
+        return $ok;
+    }
+
+    /**
+     * Delete user from auth backend
+     *
+     * @return bool whether succesful
+     */
+    protected function _deleteUser(){
+        global $conf, $INPUT;
+
+        if (!checkSecurityToken()) return false;
+        if (!$this->_auth->canDo('delUser')) return false;
+
+        $selected = $INPUT->arr('delete');
+        if (empty($selected)) return false;
+        $selected = array_keys($selected);
+
+        if(in_array($_SERVER['REMOTE_USER'], $selected)) {
+            msg("You can't delete yourself!", -1);
+            return false;
+        }
+
+        $count = $this->_auth->triggerUserMod('delete', array($selected));
+        if ($count == count($selected)) {
+            $text = str_replace('%d', $count, $this->lang['delete_ok']);
+            msg("$text.", 1);
+        } else {
+            $part1 = str_replace('%d', $count, $this->lang['delete_ok']);
+            $part2 = str_replace('%d', (count($selected)-$count), $this->lang['delete_fail']);
+            msg("$part1, $part2",-1);
+        }
+
+        // invalidate all sessions
+        io_saveFile($conf['cachedir'].'/sessionpurge',time());
+
+        return true;
+    }
+
+    /**
+     * Edit user (a user has been selected for editing)
+     *
+     * @param string $param id of the user
+     * @return bool whether succesful
+     */
+    protected function _editUser($param) {
+        if (!checkSecurityToken()) return false;
+        if (!$this->_auth->canDo('UserMod')) return false;
+        $user = $this->_auth->cleanUser(preg_replace('/.*[:\/]/','',$param));
+        $userdata = $this->_auth->getUserData($user);
+
+        // no user found?
+        if (!$userdata) {
+            msg($this->lang['edit_usermissing'],-1);
+            return false;
+        }
+
+        $this->_edit_user = $user;
+        $this->_edit_userdata = $userdata;
+
+        return true;
+    }
+
+    /**
+     * Modify user in the auth backend (modified user data has been recieved)
+     *
+     * @return bool whether succesful
+     */
+    protected function _modifyUser(){
+        global $conf, $INPUT;
+
+        if (!checkSecurityToken()) return false;
+        if (!$this->_auth->canDo('UserMod')) return false;
+
+        // get currently valid  user data
+        $olduser = $this->_auth->cleanUser(preg_replace('/.*[:\/]/','',$INPUT->str('userid_old')));
+        $oldinfo = $this->_auth->getUserData($olduser);
+
+        // get new user data subject to change
+        list($newuser,$newpass,$newname,$newmail,$newgrps,$passconfirm) = $this->_retrieveUser();
+        if (empty($newuser)) return false;
+
+        $changes = array();
+        if ($newuser != $olduser) {
+
+            if (!$this->_auth->canDo('modLogin')) {        // sanity check, shouldn't be possible
+                msg($this->lang['update_fail'],-1);
+                return false;
+            }
+
+            // check if $newuser already exists
+            if ($this->_auth->getUserData($newuser)) {
+                msg(sprintf($this->lang['update_exists'],$newuser),-1);
+                $re_edit = true;
+            } else {
+                $changes['user'] = $newuser;
+            }
+        }
+        if ($this->_auth->canDo('modPass')) {
+            if ($newpass || $passconfirm) {
+                if ($this->_verifyPassword($newpass,$passconfirm)) {
+                    $changes['pass'] = $newpass;
+                } else {
+                    return false;
+                }
+            } else {
+                // no new password supplied, check if we need to generate one (or it stays unchanged)
+                if ($INPUT->has('usernotify')) {
+                    $changes['pass'] = auth_pwgen($olduser);
+                }
+            }
+        }
+
+        if (!empty($newname) && $this->_auth->canDo('modName') && $newname != $oldinfo['name']) {
+            $changes['name'] = $newname;
+        }
+        if (!empty($newmail) && $this->_auth->canDo('modMail') && $newmail != $oldinfo['mail']) {
+            $changes['mail'] = $newmail;
+        }
+        if (!empty($newgrps) && $this->_auth->canDo('modGroups') && $newgrps != $oldinfo['grps']) {
+            $changes['grps'] = $newgrps;
+        }
+
+        if ($ok = $this->_auth->triggerUserMod('modify', array($olduser, $changes))) {
+            msg($this->lang['update_ok'],1);
+
+            if ($INPUT->has('usernotify') && !empty($changes['pass'])) {
+                $notify = empty($changes['user']) ? $olduser : $newuser;
+                $this->_notifyUser($notify,$changes['pass']);
+            }
+
+            // invalidate all sessions
+            io_saveFile($conf['cachedir'].'/sessionpurge',time());
+
+        } else {
+            msg($this->lang['update_fail'],-1);
+        }
+
+        if (!empty($re_edit)) {
+            $this->_editUser($olduser);
+        }
+
+        return $ok;
+    }
+
+    /**
+     * Send password change notification email
+     *
+     * @param string $user         id of user
+     * @param string $password     plain text
+     * @param bool   $status_alert whether status alert should be shown
+     * @return bool whether succesful
+     */
+    protected function _notifyUser($user, $password, $status_alert=true) {
+
+        if ($sent = auth_sendPassword($user,$password)) {
+            if ($status_alert) {
+                msg($this->lang['notify_ok'], 1);
+            }
+        } else {
+            if ($status_alert) {
+                msg($this->lang['notify_fail'], -1);
+            }
+        }
+
+        return $sent;
+    }
+
+    /**
+     * Verify password meets minimum requirements
+     * :TODO: extend to support password strength
+     *
+     * @param string  $password   candidate string for new password
+     * @param string  $confirm    repeated password for confirmation
+     * @return bool   true if meets requirements, false otherwise
+     */
+    protected function _verifyPassword($password, $confirm) {
+        global $lang;
+
+        if (empty($password) && empty($confirm)) {
+            return false;
+        }
+
+        if ($password !== $confirm) {
+            msg($lang['regbadpass'], -1);
+            return false;
+        }
+
+        // :TODO: test password for required strength
+
+        // if we make it this far the password is good
+        return true;
+    }
+
+    /**
+     * Retrieve & clean user data from the form
+     *
+     * @param bool $clean whether the cleanUser method of the authentication backend is applied
+     * @return array (user, password, full name, email, array(groups))
+     */
+    protected function _retrieveUser($clean=true) {
+        /** @var DokuWiki_Auth_Plugin $auth */
+        global $auth;
+        global $INPUT;
+
+        $user = array();
+        $user[0] = ($clean) ? $auth->cleanUser($INPUT->str('userid')) : $INPUT->str('userid');
+        $user[1] = $INPUT->str('userpass');
+        $user[2] = $INPUT->str('username');
+        $user[3] = $INPUT->str('usermail');
+        $user[4] = explode(',',$INPUT->str('usergroups'));
+        $user[5] = $INPUT->str('userpass2');                // repeated password for confirmation
+
+        $user[4] = array_map('trim',$user[4]);
+        if($clean) $user[4] = array_map(array($auth,'cleanGroup'),$user[4]);
+        $user[4] = array_filter($user[4]);
+        $user[4] = array_unique($user[4]);
+        if(!count($user[4])) $user[4] = null;
+
+        return $user;
+    }
+
+    /**
+     * Set the filter with the current search terms or clear the filter
+     *
+     * @param string $op 'new' or 'clear'
+     */
+    protected function _setFilter($op) {
+
+        $this->_filter = array();
+
+        if ($op == 'new') {
+            list($user,/* $pass */,$name,$mail,$grps) = $this->_retrieveUser(false);
+
+            if (!empty($user)) $this->_filter['user'] = $user;
+            if (!empty($name)) $this->_filter['name'] = $name;
+            if (!empty($mail)) $this->_filter['mail'] = $mail;
+            if (!empty($grps)) $this->_filter['grps'] = join('|',$grps);
+        }
+    }
+
+    /**
+     * Get the current search terms
+     *
+     * @return array
+     */
+    protected function _retrieveFilter() {
+        global $INPUT;
+
+        $t_filter = $INPUT->arr('filter');
+
+        // messy, but this way we ensure we aren't getting any additional crap from malicious users
+        $filter = array();
+
+        if (isset($t_filter['user'])) $filter['user'] = $t_filter['user'];
+        if (isset($t_filter['name'])) $filter['name'] = $t_filter['name'];
+        if (isset($t_filter['mail'])) $filter['mail'] = $t_filter['mail'];
+        if (isset($t_filter['grps'])) $filter['grps'] = $t_filter['grps'];
+
+        return $filter;
+    }
+
+    /**
+     * Validate and improve the pagination values
+     */
+    protected function _validatePagination() {
+
+        if ($this->_start >= $this->_user_total) {
+            $this->_start = $this->_user_total - $this->_pagesize;
+        }
+        if ($this->_start < 0) $this->_start = 0;
+
+        $this->_last = min($this->_user_total, $this->_start + $this->_pagesize);
+    }
+
+    /**
+     * Return an array of strings to enable/disable pagination buttons
+     *
+     * @return array with enable/disable attributes
+     */
+    protected function _pagination() {
+
+        $disabled = 'disabled="disabled"';
+
+        $buttons = array();
+        $buttons['start'] = $buttons['prev'] = ($this->_start == 0) ? $disabled : '';
+
+        if ($this->_user_total == -1) {
+            $buttons['last'] = $disabled;
+            $buttons['next'] = '';
+        } else {
+            $buttons['last'] = $buttons['next'] = (($this->_start + $this->_pagesize) >= $this->_user_total) ? $disabled : '';
+        }
+
+        if ($this->_lastdisabled) {
+            $buttons['last'] = $disabled;
+        }
+
+        return $buttons;
+    }
+
+    /**
+     * Export a list of users in csv format using the current filter criteria
+     */
+    protected function _export() {
+        // list of users for export - based on current filter criteria
+        $user_list = $this->_auth->retrieveUsers(0, 0, $this->_filter);
+        $column_headings = array(
+            $this->lang["user_id"],
+            $this->lang["user_name"],
+            $this->lang["user_mail"],
+            $this->lang["user_groups"]
+        );
+
+        // ==============================================================================================
+        // GENERATE OUTPUT
+        // normal headers for downloading...
+        header('Content-type: text/csv;charset=utf-8');
+        header('Content-Disposition: attachment; filename="wikiusers.csv"');
+#       // for debugging assistance, send as text plain to the browser
+#       header('Content-type: text/plain;charset=utf-8');
+
+        // output the csv
+        $fd = fopen('php://output','w');
+        fputcsv($fd, $column_headings);
+        foreach ($user_list as $user => $info) {
+            $line = array($user, $info['name'], $info['mail'], join(',',$info['grps']));
+            fputcsv($fd, $line);
+        }
+        fclose($fd);
+        if (defined('DOKU_UNITTEST')){ return; }
+
+        die;
+    }
+
+    /**
+     * Import a file of users in csv format
+     *
+     * csv file should have 4 columns, user_id, full name, email, groups (comma separated)
+     *
+     * @return bool whether successful
+     */
+    protected function _import() {
+        // check we are allowed to add users
+        if (!checkSecurityToken()) return false;
+        if (!$this->_auth->canDo('addUser')) return false;
+
+        // check file uploaded ok.
+        if (empty($_FILES['import']['size']) || !empty($_FILES['import']['error']) && $this->_isUploadedFile($_FILES['import']['tmp_name'])) {
+            msg($this->lang['import_error_upload'],-1);
+            return false;
+        }
+        // retrieve users from the file
+        $this->_import_failures = array();
+        $import_success_count = 0;
+        $import_fail_count = 0;
+        $line = 0;
+        $fd = fopen($_FILES['import']['tmp_name'],'r');
+        if ($fd) {
+            while($csv = fgets($fd)){
+                if (!utf8_check($csv)) {
+                    $csv = utf8_encode($csv);
+                }
+                $raw = str_getcsv($csv);
+                $error = '';                        // clean out any errors from the previous line
+                // data checks...
+                if (1 == ++$line) {
+                    if ($raw[0] == 'user_id' || $raw[0] == $this->lang['user_id']) continue;    // skip headers
+                }
+                if (count($raw) < 4) {                                        // need at least four fields
+                    $import_fail_count++;
+                    $error = sprintf($this->lang['import_error_fields'], count($raw));
+                    $this->_import_failures[$line] = array('error' => $error, 'user' => $raw, 'orig' => $csv);
+                    continue;
+                }
+                array_splice($raw,1,0,auth_pwgen());                          // splice in a generated password
+                $clean = $this->_cleanImportUser($raw, $error);
+                if ($clean && $this->_addImportUser($clean, $error)) {
+                    $sent = $this->_notifyUser($clean[0],$clean[1],false);
+                    if (!$sent){
+                        msg(sprintf($this->lang['import_notify_fail'],$clean[0],$clean[3]),-1);
+                    }
+                    $import_success_count++;
+                } else {
+                    $import_fail_count++;
+                    array_splice($raw, 1, 1);                                  // remove the spliced in password
+                    $this->_import_failures[$line] = array('error' => $error, 'user' => $raw, 'orig' => $csv);
+                }
+            }
+            msg(sprintf($this->lang['import_success_count'], ($import_success_count+$import_fail_count), $import_success_count),($import_success_count ? 1 : -1));
+            if ($import_fail_count) {
+                msg(sprintf($this->lang['import_failure_count'], $import_fail_count),-1);
+            }
+        } else {
+            msg($this->lang['import_error_readfail'],-1);
+        }
+
+        // save import failures into the session
+        if (!headers_sent()) {
+            session_start();
+            $_SESSION['import_failures'] = $this->_import_failures;
+            session_write_close();
+        }
+        return true;
+    }
+
+    /**
+     * Returns cleaned user data
+     *
+     * @param array $candidate raw values of line from input file
+     * @param string $error
+     * @return array|false cleaned data or false
+     */
+    protected function _cleanImportUser($candidate, & $error){
+        global $INPUT;
+
+        // kludgy ....
+        $INPUT->set('userid', $candidate[0]);
+        $INPUT->set('userpass', $candidate[1]);
+        $INPUT->set('username', $candidate[2]);
+        $INPUT->set('usermail', $candidate[3]);
+        $INPUT->set('usergroups', $candidate[4]);
+
+        $cleaned = $this->_retrieveUser();
+        list($user,/* $pass */,$name,$mail,/* $grps */) = $cleaned;
+        if (empty($user)) {
+            $error = $this->lang['import_error_baduserid'];
+            return false;
+        }
+
+        // no need to check password, handled elsewhere
+
+        if (!($this->_auth->canDo('modName') xor empty($name))){
+            $error = $this->lang['import_error_badname'];
+            return false;
+        }
+
+        if ($this->_auth->canDo('modMail')) {
+            if (empty($mail) || !mail_isvalid($mail)) {
+                $error = $this->lang['import_error_badmail'];
+                return false;
+            }
+        } else {
+            if (!empty($mail)) {
+                $error = $this->lang['import_error_badmail'];
+                return false;
+            }
+        }
+
+        return $cleaned;
+    }
+
+    /**
+     * Adds imported user to auth backend
+     *
+     * Required a check of canDo('addUser') before
+     *
+     * @param array  $user   data of user
+     * @param string &$error reference catched error message
+     * @return bool whether successful
+     */
+    protected function _addImportUser($user, & $error){
+        if (!$this->_auth->triggerUserMod('create', $user)) {
+            $error = $this->lang['import_error_create'];
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Downloads failures as csv file
+     */
+    protected function _downloadImportFailures(){
+
+        // ==============================================================================================
+        // GENERATE OUTPUT
+        // normal headers for downloading...
+        header('Content-type: text/csv;charset=utf-8');
+        header('Content-Disposition: attachment; filename="importfails.csv"');
+#       // for debugging assistance, send as text plain to the browser
+#       header('Content-type: text/plain;charset=utf-8');
+
+        // output the csv
+        $fd = fopen('php://output','w');
+        foreach ($this->_import_failures as $fail) {
+            fputs($fd, $fail['orig']);
+        }
+        fclose($fd);
+        die;
+    }
+
+    /**
+     * wrapper for is_uploaded_file to facilitate overriding by test suite
+     *
+     * @param string $file filename
+     * @return bool
+     */
+    protected function _isUploadedFile($file) {
+        return is_uploaded_file($file);
+    }
+}
diff --git a/wiki/lib/plugins/usermanager/admin.svg b/wiki/lib/plugins/usermanager/admin.svg
new file mode 100644
index 0000000..74a72c0
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16 13c-.29 0-.62 0-.97.05C16.19 13.89 17 15 17 16.5V19h6v-2.5c0-2.33-4.67-3.5-7-3.5m-8 0c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5m0-2a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m8 0a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3z"/></svg>
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/images/search.png b/wiki/lib/plugins/usermanager/images/search.png
new file mode 100644
index 0000000..3f2a0b5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/images/search.png
Binary files differdiff --git a/wiki/lib/plugins/usermanager/lang/af/lang.php b/wiki/lib/plugins/usermanager/lang/af/lang.php
new file mode 100644
index 0000000..9a6c566
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/af/lang.php
@@ -0,0 +1,14 @@
+<?php
+/**
+ * Afrikaans language file
+ *
+ */
+$lang['user_pass']             = 'Wagwoord';
+$lang['user_name']             = 'Regte Naam';
+$lang['user_mail']             = 'E-pos';
+$lang['edit']                  = 'Verander';
+$lang['search']                = 'Soek';
+$lang['start']                 = 'begin';
+$lang['prev']                  = 'voorigste';
+$lang['next']                  = 'volgende';
+$lang['last']                  = 'einde';
diff --git a/wiki/lib/plugins/usermanager/lang/ar/add.txt b/wiki/lib/plugins/usermanager/lang/ar/add.txt
new file mode 100644
index 0000000..14a10a2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ar/add.txt
@@ -0,0 +1 @@
+==== إضافة حساب ====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ar/delete.txt b/wiki/lib/plugins/usermanager/lang/ar/delete.txt
new file mode 100644
index 0000000..d44bb9f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ar/delete.txt
@@ -0,0 +1 @@
+==== حذف الحساب ====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ar/edit.txt b/wiki/lib/plugins/usermanager/lang/ar/edit.txt
new file mode 100644
index 0000000..bd9876d
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ar/edit.txt
@@ -0,0 +1 @@
+==== تعديل المستخدم ====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ar/intro.txt b/wiki/lib/plugins/usermanager/lang/ar/intro.txt
new file mode 100644
index 0000000..1cfb841
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ar/intro.txt
@@ -0,0 +1 @@
+====== مدير المستخدمين ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ar/lang.php b/wiki/lib/plugins/usermanager/lang/ar/lang.php
new file mode 100644
index 0000000..0a751e7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ar/lang.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Yaman Hokan <always.smile.yh@hotmail.com>
+ * @author Usama Akkad <uahello@gmail.com>
+ * @author uahello@gmail.com
+ */
+$lang['menu']                  = 'مدير المستخدمين';
+$lang['noauth']                = '(مصادقة المستخدمين غير متوفرة)';
+$lang['nosupport']             = '(إدارة المستخدمين غير متوفرة)';
+$lang['badauth']               = 'آلية مصادقة غير صالحة';
+$lang['user_id']               = 'اسم المستخدم';
+$lang['user_pass']             = 'كلمة السر';
+$lang['user_name']             = 'الاسم الحقيقي';
+$lang['user_mail']             = 'البريد الالكتروني';
+$lang['user_groups']           = 'المجموعات';
+$lang['field']                 = 'حقل';
+$lang['value']                 = 'القيمة';
+$lang['add']                   = 'إضافة';
+$lang['delete']                = 'حذف';
+$lang['delete_selected']       = 'حذف المختار';
+$lang['edit']                  = 'تحرير';
+$lang['edit_prompt']           = 'حرر هذا المستخدم';
+$lang['modify']                = 'حفظ التعديلات';
+$lang['search']                = 'بحث';
+$lang['search_prompt']         = 'ابدأ البحث';
+$lang['clear']                 = 'صفّر مرشح البحث';
+$lang['filter']                = 'المرشّح';
+$lang['summary']               = 'عرض المستخدمين %1$d-%2$d of %3$d وجد. %4$d مستخدم كلي.';
+$lang['nonefound']             = 'لم يوجد مستخدمين. %d مستخدم كليا.';
+$lang['delete_ok']             = '%d مستخدم حذفوا';
+$lang['delete_fail']           = '%d فشل حذفهم.';
+$lang['update_ok']             = 'حُدث المستخدم بنجاح';
+$lang['update_fail']           = 'فشل تحديث المستخدم';
+$lang['update_exists']         = 'لقد فشل تغيير اسم المستخدم , اسم المستخدم المحدد (%s) غير متاح . ( سيتم تطبيق أي تغييرات أخرى )';
+$lang['start']                 = 'ابدأ';
+$lang['prev']                  = 'السابق';
+$lang['next']                  = 'التالي';
+$lang['last']                  = 'الأخير';
+$lang['edit_usermissing']      = 'لم يعثر على المستخدم المحدد، يحتمل أن اسم المستخدم قد حذف أو غُير في مكان آخر.';
+$lang['user_notify']           = 'أشعر المستخدم';
+$lang['note_notify']           = 'بريد الاشعار يرسل فقط إن اعطي المستخدم كلمة سر جديدة.';
+$lang['note_group']            = 'المستخدمون الجدد سيضافون للمجموعة الافتراضية (%s)  إن لم تُحدد لهم مجموعة.';
+$lang['note_pass']             = 'ستولد كلمة المرور تلقائيا إن تُرك الحقل فارغا مع تمكين إشعار المستخدم.';
+$lang['add_ok']                = 'اضيف المستخدم بنجاح';
+$lang['add_fail']              = 'فشلت إضافة المستخدم';
+$lang['notify_ok']             = 'ارسلت رسالة الاشعار';
+$lang['notify_fail']           = 'تعذر ارسال بريد الاشعار';
diff --git a/wiki/lib/plugins/usermanager/lang/ar/list.txt b/wiki/lib/plugins/usermanager/lang/ar/list.txt
new file mode 100644
index 0000000..02e9a03
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ar/list.txt
@@ -0,0 +1 @@
+===== قائمة المستخدمين =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/bg/add.txt b/wiki/lib/plugins/usermanager/lang/bg/add.txt
new file mode 100644
index 0000000..e067819
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/bg/add.txt
@@ -0,0 +1 @@
+===== Добавяне на потребител =====
diff --git a/wiki/lib/plugins/usermanager/lang/bg/delete.txt b/wiki/lib/plugins/usermanager/lang/bg/delete.txt
new file mode 100644
index 0000000..aa60fc3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/bg/delete.txt
@@ -0,0 +1 @@
+===== Изтриване на потребител =====
diff --git a/wiki/lib/plugins/usermanager/lang/bg/edit.txt b/wiki/lib/plugins/usermanager/lang/bg/edit.txt
new file mode 100644
index 0000000..652d036
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/bg/edit.txt
@@ -0,0 +1 @@
+===== Редактиране на потребител  =====
diff --git a/wiki/lib/plugins/usermanager/lang/bg/intro.txt b/wiki/lib/plugins/usermanager/lang/bg/intro.txt
new file mode 100644
index 0000000..0a9afd5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/bg/intro.txt
@@ -0,0 +1 @@
+====== Управление на потребителите ======
diff --git a/wiki/lib/plugins/usermanager/lang/bg/lang.php b/wiki/lib/plugins/usermanager/lang/bg/lang.php
new file mode 100644
index 0000000..f98cc8c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/bg/lang.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
+ * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['menu']                  = 'Диспечер на потребителите';
+$lang['noauth']                = '(удостоверяването на потребители не е налично)';
+$lang['nosupport']             = '(управлението на потребители не се поддържа)';
+$lang['badauth']               = 'невалиден механизъм за удостоверяване';
+$lang['user_id']               = 'Потребител';
+$lang['user_pass']             = 'Парола';
+$lang['user_name']             = 'Истинско име';
+$lang['user_mail']             = 'Електронна поща';
+$lang['user_groups']           = 'Групи';
+$lang['field']                 = 'Поле';
+$lang['value']                 = 'Стойност';
+$lang['add']                   = 'Добави';
+$lang['delete']                = 'Изтрий';
+$lang['delete_selected']       = 'Изтрий избраните';
+$lang['edit']                  = 'Редактирай';
+$lang['edit_prompt']           = 'Редактиране на потребителя';
+$lang['modify']                = 'Запиши промените';
+$lang['search']                = 'Търсене';
+$lang['search_prompt']         = 'Търси';
+$lang['clear']                 = 'Обновяване на търсенето';
+$lang['filter']                = 'Филтър';
+$lang['export_all']            = 'Износ на всички потребители (CSV)';
+$lang['import']                = 'Импорт на нови потребители';
+$lang['line']                  = 'Ред №';
+$lang['error']                 = 'Съобщение за грешка';
+$lang['summary']               = 'Показване на потребители %1$d-%2$d от %3$d намерени. Общо %4$d потребителя.';
+$lang['nonefound']             = 'Не са намерени потребители. Общо %d потребителя.';
+$lang['delete_ok']             = '%d изтрити потребителя';
+$lang['delete_fail']           = 'изтриването на %d се провали.';
+$lang['update_ok']             = 'Обновяването на потребителя е успешно';
+$lang['update_fail']           = 'Обновяването на потребителя се провали';
+$lang['update_exists']         = 'Смяната на потребителското име се провали, въведеното потребителско име (%s) вече съществува (всички други промени ще бъдат приложени).';
+$lang['start']                 = 'начало';
+$lang['prev']                  = 'назад';
+$lang['next']                  = 'напред';
+$lang['last']                  = 'край';
+$lang['edit_usermissing']      = 'Избраният потребител не е намерен, въведеното потребителско име може да е изтрито или променено другаде.';
+$lang['user_notify']           = 'Уведомяване на потребителя';
+$lang['note_notify']           = 'Имейл се изпраща само ако бъде променена паролата на потребителя.';
+$lang['note_group']            = 'Новите потребители биват добавяни към стандартната групата (%s) ако не е посочена друга.';
+$lang['note_pass']             = 'Паролата ще бъде генерирана автоматично, ако оставите полето празно и функцията за уведомяване на потребителя е включена.';
+$lang['add_ok']                = 'Добавянето на потребителя е успешно';
+$lang['add_fail']              = 'Добавянето на потребителя се провали';
+$lang['notify_ok']             = 'Изпратено е осведомителен имейл';
+$lang['notify_fail']           = 'Изпращането на осведомителен имейл не е възможно';
+$lang['import_error_badname']  = 'Грешно потребителско име';
+$lang['import_error_badmail']  = 'Грешен имейл адрес';
+$lang['import_error_upload']   = 'Внасянето се провали. CSV файлът не може да бъде качен или е празен.';
+$lang['import_error_readfail'] = 'Внасянето се провали. Каченият файл не може да бъде прочетен.';
+$lang['import_error_create']   = 'Потребителят не може да бъде съдаден';
diff --git a/wiki/lib/plugins/usermanager/lang/bg/list.txt b/wiki/lib/plugins/usermanager/lang/bg/list.txt
new file mode 100644
index 0000000..106856c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/bg/list.txt
@@ -0,0 +1 @@
+===== Списък на потребителите  =====
diff --git a/wiki/lib/plugins/usermanager/lang/ca-valencia/add.txt b/wiki/lib/plugins/usermanager/lang/ca-valencia/add.txt
new file mode 100644
index 0000000..df5ba92
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca-valencia/add.txt
@@ -0,0 +1 @@
+===== Afegir usuari =====
diff --git a/wiki/lib/plugins/usermanager/lang/ca-valencia/delete.txt b/wiki/lib/plugins/usermanager/lang/ca-valencia/delete.txt
new file mode 100644
index 0000000..f386b58
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca-valencia/delete.txt
@@ -0,0 +1 @@
+===== Borrar usuari =====
diff --git a/wiki/lib/plugins/usermanager/lang/ca-valencia/edit.txt b/wiki/lib/plugins/usermanager/lang/ca-valencia/edit.txt
new file mode 100644
index 0000000..6b78c12
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca-valencia/edit.txt
@@ -0,0 +1 @@
+===== Editar usuari =====
diff --git a/wiki/lib/plugins/usermanager/lang/ca-valencia/intro.txt b/wiki/lib/plugins/usermanager/lang/ca-valencia/intro.txt
new file mode 100644
index 0000000..540a070
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca-valencia/intro.txt
@@ -0,0 +1 @@
+====== Gestor d'usuaris ======
diff --git a/wiki/lib/plugins/usermanager/lang/ca-valencia/lang.php b/wiki/lib/plugins/usermanager/lang/ca-valencia/lang.php
new file mode 100644
index 0000000..c39c2f9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca-valencia/lang.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Valencian language file
+ *
+ * @author Bernat Arlandis i Mañó <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@ya.com>
+ * @author Bernat Arlandis <berarma@llenguaitecnologia.com>
+ */
+$lang['menu']                  = 'Gestor d\'usuaris';
+$lang['noauth']                = '(autenticació d\'usuaris no disponible)';
+$lang['nosupport']             = '(gestió d\'usuaris no admesa)';
+$lang['badauth']               = 'mecanisme d\'autenticació no vàlit';
+$lang['user_id']               = 'Usuari';
+$lang['user_pass']             = 'Contrasenya';
+$lang['user_name']             = 'Nom real';
+$lang['user_mail']             = 'Correu electrònic';
+$lang['user_groups']           = 'Grups';
+$lang['field']                 = 'Camp';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Afegir';
+$lang['delete']                = 'Borrar';
+$lang['delete_selected']       = 'Borrar seleccionats';
+$lang['edit']                  = 'Editar';
+$lang['edit_prompt']           = 'Editar est usuari';
+$lang['modify']                = 'Guardar canvis';
+$lang['search']                = 'Buscar';
+$lang['search_prompt']         = 'Començar busca';
+$lang['clear']                 = 'Reiniciar filtre de busques';
+$lang['filter']                = 'Filtre';
+$lang['summary']               = 'Mostrant usuaris %1$d-%2$d de %3$d trobats. %4$d usuaris totals.';
+$lang['nonefound']             = 'No s\'han trobat usuaris. %d usuaris totals.';
+$lang['delete_ok']             = '%d usuaris borrats';
+$lang['delete_fail']           = 'Erro borrant %d.';
+$lang['update_ok']             = 'Usuari actualisat correctament';
+$lang['update_fail']           = 'Erro actualisant usuari';
+$lang['update_exists']         = 'Erro canviant el nom de l\'usuari (%s), el nom d\'usuari que ha donat ya existix (els demés canvis s\'aplicaran).';
+$lang['start']                 = 'primera';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'següent';
+$lang['last']                  = 'última';
+$lang['edit_usermissing']      = 'L\'usuari seleccionat no existix, pot haver segut borrat o modificat des d\'un atre lloc.';
+$lang['user_notify']           = 'Notificar a l\'usuari';
+$lang['note_notify']           = 'Els correus de notificació només s\'envien si a l\'usuari se li assigna una contrasenya nova.';
+$lang['note_group']            = 'Els usuaris nous s\'afegiran al grup predeterminat (%s) si no se n\'especifica atre.';
+$lang['note_pass']             = 'Si es deixa el camp buit i la notificació a l\'usuari està desactivada s\'autogenerarà la contrasenya.';
+$lang['add_ok']                = 'Usuari afegit correctament';
+$lang['add_fail']              = 'Erro afegint usuari';
+$lang['notify_ok']             = 'Correu de notificació enviat';
+$lang['notify_fail']           = 'Erro enviant el correu de notificació';
diff --git a/wiki/lib/plugins/usermanager/lang/ca-valencia/list.txt b/wiki/lib/plugins/usermanager/lang/ca-valencia/list.txt
new file mode 100644
index 0000000..15af2d5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca-valencia/list.txt
@@ -0,0 +1 @@
+===== Llista d'usuaris =====
diff --git a/wiki/lib/plugins/usermanager/lang/ca/add.txt b/wiki/lib/plugins/usermanager/lang/ca/add.txt
new file mode 100644
index 0000000..07c5994
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca/add.txt
@@ -0,0 +1 @@
+===== Nou usuari =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ca/delete.txt b/wiki/lib/plugins/usermanager/lang/ca/delete.txt
new file mode 100644
index 0000000..90878e5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca/delete.txt
@@ -0,0 +1 @@
+===== Supressió d'usuari =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ca/edit.txt b/wiki/lib/plugins/usermanager/lang/ca/edit.txt
new file mode 100644
index 0000000..f7dc8cb
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca/edit.txt
@@ -0,0 +1 @@
+===== Edició d'usuari =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ca/intro.txt b/wiki/lib/plugins/usermanager/lang/ca/intro.txt
new file mode 100644
index 0000000..864aa10
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca/intro.txt
@@ -0,0 +1 @@
+======= Gestió d'usuaris ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ca/lang.php b/wiki/lib/plugins/usermanager/lang/ca/lang.php
new file mode 100644
index 0000000..36b7774
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca/lang.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Carles Bellver <carles.bellver@gmail.com>
+ * @author carles.bellver@gmail.com
+ * @author carles.bellver@cent.uji.es
+ * @author Carles Bellver <carles.bellver@cent.uji.es>
+ * @author daniel@6temes.cat
+ */
+$lang['menu']                  = 'Gestió d\'usuaris';
+$lang['noauth']                = '(l\'autenticació d\'usuaris no està disponible)';
+$lang['nosupport']             = '(la gestió d\'usuaris no funciona)';
+$lang['badauth']               = 'el mecanisme d\'autenticació no és vàlid';
+$lang['user_id']               = 'Usuari';
+$lang['user_pass']             = 'Contrasenya';
+$lang['user_name']             = 'Nom real';
+$lang['user_mail']             = 'Correu electrònic';
+$lang['user_groups']           = 'Grups';
+$lang['field']                 = 'Camp';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Afegeix';
+$lang['delete']                = 'Suprimeix';
+$lang['delete_selected']       = 'Suprimeix els seleccionats';
+$lang['edit']                  = 'Edita';
+$lang['edit_prompt']           = 'Edita aquest usuari';
+$lang['modify']                = 'Desa els canvis';
+$lang['search']                = 'Cerca';
+$lang['search_prompt']         = 'Fes la cerca';
+$lang['clear']                 = 'Reinicia el filtre de cerca';
+$lang['filter']                = 'Filtre';
+$lang['summary']               = 'Visualització d\'usuaris %1$d-%2$d de %3$d trobats. %4$d usuaris en total.';
+$lang['nonefound']             = 'No s\'han trobat usuaris. %d usuaris en total.';
+$lang['delete_ok']             = 'S\'han suprimit %d usuaris';
+$lang['delete_fail']           = 'No s\'han pogut suprimir %d.';
+$lang['update_ok']             = 'L\'usuari ha estat actualitzat amb èxit';
+$lang['update_fail']           = 'Ha fallat l\'actualització de l\'usuari';
+$lang['update_exists']         = 'No s\'ha pogut canviar el nom de l\'usuari. El nom d\'usuari especificat (%s) ja existeix (qualsevol altre canvi sí que serà efectiu).';
+$lang['start']                 = 'inici';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'següent';
+$lang['last']                  = 'final';
+$lang['edit_usermissing']      = 'L\'usuari seleccionat no s\'ha pogut trobar. Potser el nom d\'usuari especificat s\'ha suprimit o modificat des d\'un altre lloc.';
+$lang['user_notify']           = 'Notificació a l\'usuari';
+$lang['note_notify']           = 'Els correus de notificació només s\'envien si es canvia la contrasenya de l\'usuari.';
+$lang['note_group']            = 'Els nous usuaris s\'afegeixen al grup per defecte (%s) si no s\'especifica un altre grup.';
+$lang['note_pass']             = 'La contrasenya es generarà automàticament si el camp es deixa en blanc i les notificacions estan habilitades per a aquest usuari.';
+$lang['add_ok']                = 'L\'usuari s\'ha afegit amb èxit';
+$lang['add_fail']              = 'No s\'ha pogut afegir l\'usuari';
+$lang['notify_ok']             = 'S\'ha enviat el correu de notificació';
+$lang['notify_fail']           = 'No s\'ha pogut enviar el correu de notificació';
diff --git a/wiki/lib/plugins/usermanager/lang/ca/list.txt b/wiki/lib/plugins/usermanager/lang/ca/list.txt
new file mode 100644
index 0000000..22e1587
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ca/list.txt
@@ -0,0 +1 @@
+===== Llista d'usuaris =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/cs/add.txt b/wiki/lib/plugins/usermanager/lang/cs/add.txt
new file mode 100644
index 0000000..39b14d5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/add.txt
@@ -0,0 +1 @@
+===== Přidat uživatele =====
diff --git a/wiki/lib/plugins/usermanager/lang/cs/delete.txt b/wiki/lib/plugins/usermanager/lang/cs/delete.txt
new file mode 100644
index 0000000..a8790d8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/delete.txt
@@ -0,0 +1 @@
+===== Smazat uživatele =====
diff --git a/wiki/lib/plugins/usermanager/lang/cs/edit.txt b/wiki/lib/plugins/usermanager/lang/cs/edit.txt
new file mode 100644
index 0000000..d8ba386
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/edit.txt
@@ -0,0 +1 @@
+===== Upravit uživatele =====
diff --git a/wiki/lib/plugins/usermanager/lang/cs/import.txt b/wiki/lib/plugins/usermanager/lang/cs/import.txt
new file mode 100644
index 0000000..d665838
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/import.txt
@@ -0,0 +1,9 @@
+===== Hromadný import uživatelů =====
+
+Vyžaduje CSV soubor s uživateli obsahující alespoň 4 sloupce.
+Sloupce obsahují (v daném pořadí): user-id, celé jméno, emailovou adresu, seznam skupin.
+Položky CSV musí být odděleny čárkou (,) a řetězce umístěny v uvozovkách (%%""%%). Zpětné lomítko (\) lze použít pro escapování.
+Pro získání příkladu takového souboru využijte funkci "Exportovat uživatele" výše.
+Záznamy s duplicitním user-id budou ignorovány.
+
+Hesla budou vygenerována a zaslána e-mailem všem úspěšně importovaným uživatelům.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/cs/intro.txt b/wiki/lib/plugins/usermanager/lang/cs/intro.txt
new file mode 100644
index 0000000..5b8f6e9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/intro.txt
@@ -0,0 +1 @@
+====== Správa uživatelů ======
diff --git a/wiki/lib/plugins/usermanager/lang/cs/lang.php b/wiki/lib/plugins/usermanager/lang/cs/lang.php
new file mode 100644
index 0000000..3ed1800
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/lang.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tomas Valenta <t.valenta@sh.cvut.cz>
+ * @author Zbynek Krivka <zbynek.krivka@seznam.cz>
+ * @author Bohumir Zamecnik <bohumir@zamecnik.org>
+ * @author tomas <tomas@valenta.cz>
+ * @author Marek Sacha <sachamar@fel.cvut.cz>
+ * @author Lefty <lefty@multihost.cz>
+ * @author Vojta Beran <xmamut@email.cz>
+ * @author Jakub A. Těšínský (j@kub.cz)
+ * @author mkucera66 <mkucera66@seznam.cz>
+ * @author Zbyněk Křivka <krivka@fit.vutbr.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
+ * @author Daniel Slováček <danslo@danslo.cz>
+ * @author Martin Růžička <martinr@post.cz>
+ */
+$lang['menu']                  = 'Správa uživatelů';
+$lang['noauth']                = '(autentizace uživatelů není k dispozici)';
+$lang['nosupport']             = '(správa uživatelů není podporována)';
+$lang['badauth']               = 'chybná metoda autentizace';
+$lang['user_id']               = 'Uživatel';
+$lang['user_pass']             = 'Heslo';
+$lang['user_name']             = 'Celé jméno';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Skupiny';
+$lang['field']                 = 'Položka';
+$lang['value']                 = 'Hodnota';
+$lang['add']                   = 'Přidat';
+$lang['delete']                = 'Smazat';
+$lang['delete_selected']       = 'Smazat vybrané';
+$lang['edit']                  = 'Upravit';
+$lang['edit_prompt']           = 'Upravit uživatele';
+$lang['modify']                = 'Uložit změny';
+$lang['search']                = 'Hledání';
+$lang['search_prompt']         = 'Prohledat';
+$lang['clear']                 = 'Zrušit vyhledávací filtr';
+$lang['filter']                = 'Filtr';
+$lang['export_all']            = 'Exportovat všechny uživatele (CSV)';
+$lang['export_filtered']       = 'Exportovat filtrovaný seznam uživatelů (CSV)';
+$lang['import']                = 'Importovat nové uživatele';
+$lang['line']                  = 'Řádek č.';
+$lang['error']                 = 'Chybová zpráva';
+$lang['summary']               = 'Zobrazuji uživatele %1$d-%2$d z %3$d nalezených. Celkem %4$d uživatelů.';
+$lang['nonefound']             = 'Žádný uživatel nebyl nalezen. Celkem %d uživatelů.';
+$lang['delete_ok']             = '%d uživatelů smazáno';
+$lang['delete_fail']           = '%d uživatelů nelze smazat.';
+$lang['update_ok']             = 'Uživatel upraven';
+$lang['update_fail']           = 'Úprava uživatele selhala';
+$lang['update_exists']         = 'Jméno nelze změnit, jelikož zadané uživatelské jméno (%s) již existuje (ostatní změny ale budou provedeny).';
+$lang['start']                 = 'první';
+$lang['prev']                  = 'předchozí';
+$lang['next']                  = 'další';
+$lang['last']                  = 'poslední';
+$lang['edit_usermissing']      = 'Vybraný uživatel nebyl nalezen, zadané uživatelského mohlo být smazáno nebo změněno.';
+$lang['user_notify']           = 'Upozornit uživatele';
+$lang['note_notify']           = 'E-maily s upozorněním se budou posílat pouze, když uživatel dostává nové heslo.';
+$lang['note_group']            = 'Noví uživatelé budou přidáváni do této výchozí skupiny (%s), pokud pro ně není uvedena žádná skupina.';
+$lang['note_pass']             = 'Heslo bude automaticky vygenerováno, pokud je pole ponecháno prázdné a je zapnuto upozornění uživatele.';
+$lang['add_ok']                = 'Uživatel úspěšně vytvořen';
+$lang['add_fail']              = 'Vytvoření uživatele selhalo';
+$lang['notify_ok']             = 'Odeslán e-mail s upozorněním';
+$lang['notify_fail']           = 'E-mail s upozorněním nebylo možno odeslat';
+$lang['import_userlistcsv']    = 'Seznam uživatelů (CSV):';
+$lang['import_header']         = 'Poslední selhání importu';
+$lang['import_success_count']  = 'Import uživatelů: nalezeno %d uživatelů, %d úspěšně importováno.';
+$lang['import_failure_count']  = 'Import uživatelů: %d selhalo. Seznam chybných je níže.';
+$lang['import_error_fields']   = 'Nedostatek položek, nalezena/y %d, požadovány 4.';
+$lang['import_error_baduserid'] = 'Chybí User-id';
+$lang['import_error_badname']  = 'Špatné jméno';
+$lang['import_error_badmail']  = 'Špatná e-mailová adresa';
+$lang['import_error_upload']   = 'Import selhal. CSV soubor nemohl být nahrán nebo je prázdný.';
+$lang['import_error_readfail'] = 'Import selhal. Nelze číst nahraný soubor.';
+$lang['import_error_create']   = 'Nelze vytvořit uživatele';
+$lang['import_notify_fail']    = 'Importovanému uživateli %s s e-mailem %s nemohlo být zasláno upozornění.';
+$lang['import_downloadfailures'] = 'Stáhnout chyby pro nápravu jako CVS';
+$lang['addUser_error_missing_pass'] = 'Buď prosím nastavte heslo nebo aktivujte upozorňování uživatel aby fungovalo vytváření hesel.';
+$lang['addUser_error_pass_not_identical'] = 'Zadaná hesla nebyla shodná.';
+$lang['addUser_error_modPass_disabled'] = 'Změna hesel je momentálně zakázána.';
+$lang['addUser_error_name_missing'] = 'Zadejte prosím jméno nového uživatele.';
+$lang['addUser_error_modName_disabled'] = 'Změna jmen je momentálně zakázána.';
+$lang['addUser_error_mail_missing'] = 'Zadejte prosím emailovou adresu nového uživatele.';
+$lang['addUser_error_modMail_disabled'] = 'Změna e-mailové adresy je momentálně zakázána.';
+$lang['addUser_error_create_event_failed'] = 'Zásuvný modul zabránil přidání nového uživatele. Pro více informací si prohlédněte další možné zprávy.';
diff --git a/wiki/lib/plugins/usermanager/lang/cs/list.txt b/wiki/lib/plugins/usermanager/lang/cs/list.txt
new file mode 100644
index 0000000..36b87fe
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cs/list.txt
@@ -0,0 +1 @@
+===== Seznam uživatelů =====
diff --git a/wiki/lib/plugins/usermanager/lang/cy/add.txt b/wiki/lib/plugins/usermanager/lang/cy/add.txt
new file mode 100644
index 0000000..c804e53
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/add.txt
@@ -0,0 +1 @@
+===== Ychwanegu defnyddiwr =====
diff --git a/wiki/lib/plugins/usermanager/lang/cy/delete.txt b/wiki/lib/plugins/usermanager/lang/cy/delete.txt
new file mode 100644
index 0000000..a81f3a9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/delete.txt
@@ -0,0 +1 @@
+===== Dileu defnyddiwr =====
diff --git a/wiki/lib/plugins/usermanager/lang/cy/edit.txt b/wiki/lib/plugins/usermanager/lang/cy/edit.txt
new file mode 100644
index 0000000..3fcb6d1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/edit.txt
@@ -0,0 +1 @@
+===== Golygu defnyddiwr =====
diff --git a/wiki/lib/plugins/usermanager/lang/cy/import.txt b/wiki/lib/plugins/usermanager/lang/cy/import.txt
new file mode 100644
index 0000000..211e8cf
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/import.txt
@@ -0,0 +1,9 @@
+===== Swmp Mewnforio Defnyddwyr =====
+
+Mae hwn angen ffeil CSV o ddefnyddwyr gydag o leiaf pedair colofn.
+Mae'n rhaid i'r colofnau gynnwys, mewn trefn: id-defnyddiwr, enw llawn, cyfeiriad ebost a grwpiau.
+Dylai'r meysydd CSV gael eu gwahanu gan goma (,) a llinynnau eu hamffinio gan ddyfynodau (%%""%%). Gall ôl-slaes (\) ei ddefnyddio ar gyfer glanhau (escaping).
+Am enghraifft o ffeil addas, ceisiwch y swyddogaeth "Allforio Defnyddwyr" uchod.
+Caiff id-defnyddiwr dyblygiedig eu hanwybyddu.
+
+Generadwyd cyfrinair a'i ebostio i bob defnyddiwr sydd wedi'i fewnforio'n llwyddiannus.
diff --git a/wiki/lib/plugins/usermanager/lang/cy/intro.txt b/wiki/lib/plugins/usermanager/lang/cy/intro.txt
new file mode 100644
index 0000000..a381a30
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/intro.txt
@@ -0,0 +1 @@
+====== Rheolwr Defnyddwyr ======
diff --git a/wiki/lib/plugins/usermanager/lang/cy/lang.php b/wiki/lib/plugins/usermanager/lang/cy/lang.php
new file mode 100644
index 0000000..5120d39
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/lang.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Welsh language file
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @author Alan Davies <ben.brynsadler@gmail.com>
+ */
+
+$lang['menu'] = 'Rheolwr Defnyddwyr';
+
+// custom language strings for the plugin
+$lang['noauth']      = '(dilysiad defnddwyr ddim ar gael)';
+$lang['nosupport']   = '(rheolaeth defnyddwyr heb ei chynnal)';
+
+$lang['badauth']     = 'mecanwaith dilysu annilys';     // should never be displayed!
+
+$lang['user_id']     = 'Defnyddiwr';
+$lang['user_pass']   = 'Cyfrinair';
+$lang['user_name']   = 'Enw Cywir';
+$lang['user_mail']   = 'Ebost';
+$lang['user_groups'] = 'Grwpiau';
+
+$lang['field']       = 'Maes';
+$lang['value']       = 'Gwerth';
+$lang['add']         = 'Ychwanegu';
+$lang['delete']      = 'Dileu';
+$lang['delete_selected'] = 'Dileu\'r Dewisiadau';
+$lang['edit']        = 'Golygu';
+$lang['edit_prompt'] = 'Golygu\'r defnyddiwr hwn';
+$lang['modify']      = 'Cadw Newidiadau';
+$lang['search']      = 'Chwilio';
+$lang['search_prompt'] = 'Perfformio chwiliad';
+$lang['clear']       = 'Ailosod Hidlydd Chwilio';
+$lang['filter']      = 'Hidlo';
+$lang['export_all']  = 'Allforio Pob Defnyddiwr (CSV)';
+$lang['export_filtered'] = 'Allforio Rhestr Defnyddwyr wedi\'u Hidlo (CSV)';
+$lang['import']      = 'Mewnforio Defnyddwyr Newydd';
+$lang['line']        = 'Llinell rhif';
+$lang['error']       = 'Gwallneges';
+
+$lang['summary']     = 'Yn dangos %1$d-%2$d defnyddiwr allan o %3$d wedi\'u darganfod. %4$d defnyddiwr yn gyfan gwbl.';
+$lang['nonefound']   = 'Dim defnyddwyr wedi\'u darganfod. %d defnyddiwr yn gyfan gwbl.';
+$lang['delete_ok']   = 'Dilëwyd %d defnyddiwr';
+$lang['delete_fail'] = 'Dileu %d wedi methu.';
+$lang['update_ok']   = 'Diweddarwyd y defnyddiwr yn llwyddiannus';
+$lang['update_fail'] = 'Methodd diweddariad y defnyddiwr';
+$lang['update_exists'] = 'Methodd newid y defnyddair, mae\'r defnyddair hwnnw (%s) yn bodoli eisoes (caiff pob newid arall ei gyflwyno).';
+
+$lang['start']  = 'dechrau';
+$lang['prev']   = 'blaenorol';
+$lang['next']   = 'nesaf';
+$lang['last']   = 'diwethaf';
+
+// added after 2006-03-09 release
+$lang['edit_usermissing'] = 'Methu darganfod y defnyddiwr hwn. Efallai bod y defnyddair hwn wedi\'i ddileu neu wedi\'i newid mewn man arall.';
+$lang['user_notify'] = 'Hysbysu defnyddiwr';
+$lang['note_notify'] = 'Bydd ebyst hysbysu eu hanfon dim ond os ydy defnyddiwr yn derbyn cyfrinair newydd.';
+$lang['note_group'] = 'Bydd defnyddwyr newydd yn cael eu hychwanegu i\'r grŵp diofyn (%s) os na chaiff grŵp ei enwi.';
+$lang['note_pass'] = 'Caiff y cyfrinair ei generadu\'n awtomatig os caiff y maes ei adael yn wag a bod hysbysu\'r defnyddiwr wedi\'i alluogi.';
+$lang['add_ok'] = 'Ychwanegwyd y defnyddiwr yn llwyddiannus';
+$lang['add_fail'] = 'Methodd ychwanegu defnyddiwr';
+$lang['notify_ok'] = 'Anfonwyd yr ebost hysbysu';
+$lang['notify_fail'] = 'Doedd dim modd anfon yr ebost hysbysu';
+
+// import & errors
+$lang['import_userlistcsv'] = 'Ffeil rhestr defnyddwyr (CSV):  ';
+$lang['import_header'] = 'Mewnforiad Diweddaraf - Methiannau';
+$lang['import_success_count'] = 'Mewnforio Defnyddwyr: darganfuwyd %d defnyddiwr, mewnforiwyd %d yn llwyddiannus.';
+$lang['import_failure_count'] = 'Mewnforio Defnyddwyr: methodd %d. Rhestrwyd y methiannau isod.';
+$lang['import_error_fields']  = "Meysydd annigonol, darganfuwyd %d, angen 4.";
+$lang['import_error_baduserid'] = "Id-defnyddiwr ar goll";
+$lang['import_error_badname'] = 'Enw gwael';
+$lang['import_error_badmail'] = 'Cyfeiriad ebost gwael';
+$lang['import_error_upload']  = 'Methodd y Mewnforiad. Doedd dim modd lanlwytho\'r ffeil neu roedd yn wag.';
+$lang['import_error_readfail'] = 'Methodd y Mewnforiad. Methu â darllen y ffeil a lanlwythwyd.';
+$lang['import_error_create']  = 'Methu â chreu\'r defnyddiwr';
+$lang['import_notify_fail']   = 'Doedd dim modd anfon neges hysbysu i\'r defyddiwr a fewnforiwyd, %s gydag ebost %s.';
+$lang['import_downloadfailures'] = 'Lawlwytho Methiannau fel CSV er mwyn cywiro';
+
+$lang['addUser_error_missing_pass'] = 'Gosodwch gyfrinair neu trowch hysbysu defnyddwyr ymlaen i alluogi generadu cyfrineiriau.';
+$lang['addUser_error_pass_not_identical'] = '\'Dyw\'r cyfrineiriau hyn ddim yn cydweddu.';
+$lang['addUser_error_modPass_disabled'] = 'Mae newid cyfrineiriau wedi\'i analluogi\'n bresennol.';
+$lang['addUser_error_name_missing'] = 'Rhowch enw ar gyfer y defnyddiwr newydd.';
+$lang['addUser_error_modName_disabled'] = 'Mae newid enwau wedi\'i analluogi\'n bresennol.';
+$lang['addUser_error_mail_missing'] = 'Rhowch gyfeiriad ebost ar gyfer y defnyddiwr newydd.';
+$lang['addUser_error_modMail_disabled'] = 'Mae newid cyfeiriadau ebost wedi\'i analluogi\'n bresennol.';
+$lang['addUser_error_create_event_failed'] = 'Mae ategyn wedi atal ychwanegu\'r defnyddiwr newydd. Adolygwch negeseuon ychwanegol bosib am wybodaeth bellach.';
diff --git a/wiki/lib/plugins/usermanager/lang/cy/list.txt b/wiki/lib/plugins/usermanager/lang/cy/list.txt
new file mode 100644
index 0000000..6531774
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/cy/list.txt
@@ -0,0 +1 @@
+===== Rhestr Defnyddwyr =====
diff --git a/wiki/lib/plugins/usermanager/lang/da/add.txt b/wiki/lib/plugins/usermanager/lang/da/add.txt
new file mode 100644
index 0000000..d97de42
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/add.txt
@@ -0,0 +1 @@
+===== Tilføj bruger =====
diff --git a/wiki/lib/plugins/usermanager/lang/da/delete.txt b/wiki/lib/plugins/usermanager/lang/da/delete.txt
new file mode 100644
index 0000000..dff0545
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/delete.txt
@@ -0,0 +1 @@
+===== Slet bruger =====
diff --git a/wiki/lib/plugins/usermanager/lang/da/edit.txt b/wiki/lib/plugins/usermanager/lang/da/edit.txt
new file mode 100644
index 0000000..05d63b7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/edit.txt
@@ -0,0 +1 @@
+===== Rediger bruger =====
diff --git a/wiki/lib/plugins/usermanager/lang/da/import.txt b/wiki/lib/plugins/usermanager/lang/da/import.txt
new file mode 100644
index 0000000..8ff1946
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/import.txt
@@ -0,0 +1,9 @@
+===== Samling af Brugere Import =====
+
+Kræver en CSV-fil med brugere på mindst fire kolonner.
+Kolonnerne skal indeholde, i denne orden: bruger-id, fulde navn, email-adresse og grupper.
+CSV-felterne skal separeres af kommaer (,) og strengafgrænser med anførelsestegn (%%""%%). Backslash (\) kan benyttes som "escape character".
+For et eksempel på en brugbar fil, kan du prøve "Eksportér Brugere"-funktionen her over.  
+Overlappende bruger-id'er bliver ignoreret.
+
+En adgangskode vil blive genereret og sendt til hver succesfuldt importeret bruger.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/da/intro.txt b/wiki/lib/plugins/usermanager/lang/da/intro.txt
new file mode 100644
index 0000000..3f597a2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/intro.txt
@@ -0,0 +1 @@
+====== Brugerstyring ======
diff --git a/wiki/lib/plugins/usermanager/lang/da/lang.php b/wiki/lib/plugins/usermanager/lang/da/lang.php
new file mode 100644
index 0000000..b4e3c6c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/lang.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Lars Næsbye Christensen <larsnaesbye@stud.ku.dk>
+ * @author Kalle Sommer Nielsen <kalle@php.net>
+ * @author Esben Laursen <hyber@hyber.dk>
+ * @author Harith <haj@berlingske.dk>
+ * @author Daniel Ejsing-Duun <dokuwiki@zilvador.dk>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author rasmus <rasmus@kinnerup.com>
+ * @author Mikael Lyngvig <mikael@lyngvig.org>
+ * @author soer9648 <soer9648@eucl.dk>
+ */
+$lang['menu']                  = 'Brugerstyring';
+$lang['noauth']                = '(Brugervalidering er ikke tilgængelig)';
+$lang['nosupport']             = '(Brugerstyring er ikke understøttet)';
+$lang['badauth']               = 'Ugyldig brugerbekræftelsesfunktion';
+$lang['user_id']               = 'Bruger';
+$lang['user_pass']             = 'Adgangskode';
+$lang['user_name']             = 'Navn';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Grupper';
+$lang['field']                 = 'Felt';
+$lang['value']                 = 'Værdi';
+$lang['add']                   = 'Tilføj';
+$lang['delete']                = 'Slet';
+$lang['delete_selected']       = 'Slet valgte';
+$lang['edit']                  = 'Rediger';
+$lang['edit_prompt']           = 'Rediger denne bruger';
+$lang['modify']                = 'Gem ændringer';
+$lang['search']                = 'Søg';
+$lang['search_prompt']         = 'Udfør søgning';
+$lang['clear']                 = 'Nulstil søgefilter';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Eksportér Alle Brugere (CSV)';
+$lang['export_filtered']       = 'Eksportér Filtrerede Brugerliste (CSV)';
+$lang['import']                = 'Importér Nye Brugere';
+$lang['line']                  = 'Linje nr.';
+$lang['error']                 = 'Fejlmeddelelse';
+$lang['summary']               = 'Viser brugerne %1$d-%2$d ud af %3$d fundne. %4$d brugere totalt.';
+$lang['nonefound']             = 'Ingen brugere fundet. %d brugere totalt.';
+$lang['delete_ok']             = '%d brugere slettet';
+$lang['delete_fail']           = '%d kunne ikke slettes.';
+$lang['update_ok']             = 'Bruger opdateret korrekt';
+$lang['update_fail']           = 'Brugeropdatering mislykkedes';
+$lang['update_exists']         = 'Ændring af brugernavn mislykkedes, det valgte brugernavn (%s) er allerede optaget (andre ændringer vil blive udført).';
+$lang['start']                 = 'begynde';
+$lang['prev']                  = 'forrige';
+$lang['next']                  = 'næste';
+$lang['last']                  = 'sidste';
+$lang['edit_usermissing']      = 'Den valgte bruger blev ikke fundet. Brugernavnet kan være slettet eller ændret andetsteds.';
+$lang['user_notify']           = 'Meddel bruger';
+$lang['note_notify']           = 'Meddelelser bliver kun sendt, hvis brugeren får givet et nyt adgangskode.';
+$lang['note_group']            = 'Nye brugere vil blive tilføjet til standardgruppen (%s), hvis ingen gruppe er opgivet.';
+$lang['note_pass']             = 'Adgangskoden vil blive dannet automatisk, hvis feltet er tomt og underretning af brugeren er aktiveret.';
+$lang['add_ok']                = 'Bruger tilføjet uden fejl.';
+$lang['add_fail']              = 'Tilføjelse af bruger mislykkedes';
+$lang['notify_ok']             = 'Meddelelse sendt';
+$lang['notify_fail']           = 'Meddelelse kunne ikke sendes';
+$lang['import_userlistcsv']    = 'Brugerlistefil (CSV):';
+$lang['import_header']         = 'Nyeste Import - Fejl';
+$lang['import_success_count']  = 'Bruger-Import: %d brugere fundet, %d importeret med succes.';
+$lang['import_failure_count']  = 'Bruger-Import: %d fejlet. Fejl er listet nedenfor.';
+$lang['import_error_fields']   = 'Utilstrækkelige felter, fandt %d, påkrævet 4.';
+$lang['import_error_baduserid'] = 'Bruger-id mangler';
+$lang['import_error_badname']  = 'Ugyldigt navn';
+$lang['import_error_badmail']  = 'Ugyldig email-adresse';
+$lang['import_error_upload']   = 'Import Fejlet. CSV-filen kunne ikke uploades eller er tom.';
+$lang['import_error_readfail'] = 'Import Fejlet. Ikke muligt at læse uploadede fil.';
+$lang['import_error_create']   = 'Ikke muligt at oprette brugeren';
+$lang['import_notify_fail']    = 'Notifikationsmeddelelse kunne ikke sendes for importerede bruger %s, med emailen %s.';
+$lang['import_downloadfailures'] = 'Download Fejl som CSV til rettelser';
diff --git a/wiki/lib/plugins/usermanager/lang/da/list.txt b/wiki/lib/plugins/usermanager/lang/da/list.txt
new file mode 100644
index 0000000..11d1710
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/da/list.txt
@@ -0,0 +1 @@
+===== Brugerliste =====
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/add.txt b/wiki/lib/plugins/usermanager/lang/de-informal/add.txt
new file mode 100644
index 0000000..1fc34c9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/add.txt
@@ -0,0 +1 @@
+===== Benutzer hinzufügen =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/delete.txt b/wiki/lib/plugins/usermanager/lang/de-informal/delete.txt
new file mode 100644
index 0000000..778396a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/delete.txt
@@ -0,0 +1 @@
+===== Benutzer gelöscht =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/edit.txt b/wiki/lib/plugins/usermanager/lang/de-informal/edit.txt
new file mode 100644
index 0000000..291b0f1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/edit.txt
@@ -0,0 +1 @@
+===== Benutzer bearbeiten =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/import.txt b/wiki/lib/plugins/usermanager/lang/de-informal/import.txt
new file mode 100644
index 0000000..bc88871
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/import.txt
@@ -0,0 +1,7 @@
+===== Massenimport von Benutzern =====
+
+Dieser Import benötigt eine CSV-Datei mit mindestens vier Spalten. Diese Spalten müssen die folgenden Daten (in dieser Reihenfolge) enthalten: Benutzername, Name, E-Mailadresse und Gruppenzugehörigkeit.
+Die CSV-Felder müssen durch ein Komma (,) getrennt sein. Die Zeichenfolgen müssen von Anführungszeichen (%%""%%) umgeben sein. Ein Backslash (\) kann zum Maskieren benutzt werden.
+Für eine Beispieldatei kannst Du die "Benutzer exportieren"-Funktion oben benutzen. Doppelte Benutzername werden ignoriert.
+
+Ein Passwort wird generiert und den einzelnen, erfolgreich importierten Benutzern zugemailt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/intro.txt b/wiki/lib/plugins/usermanager/lang/de-informal/intro.txt
new file mode 100644
index 0000000..a5927a8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/intro.txt
@@ -0,0 +1 @@
+===== Benutzerverwaltung =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/lang.php b/wiki/lib/plugins/usermanager/lang/de-informal/lang.php
new file mode 100644
index 0000000..bea3bb9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/lang.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Alexander Fischer <tbanus@os-forge.net>
+ * @author Juergen Schwarzer <jschwarzer@freenet.de>
+ * @author Marcel Metz <marcel_metz@gmx.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Frank Loizzi <contact@software.bacal.de>
+ * @author Volker Bödker <volker@boedker.de>
+ * @author Dennis Plöger <develop@dieploegers.de>
+ * @author F. Mueller-Donath <j.felix@mueller-donath.de>
+ */
+$lang['menu']                  = 'Benutzerverwaltung';
+$lang['noauth']                = '(Benutzeranmeldung ist nicht verfügbar)';
+$lang['nosupport']             = '(Benutzerverwaltung wird nicht unterstützt)';
+$lang['badauth']               = 'Ungültige Authentifizierung';
+$lang['user_id']               = 'Benutzer';
+$lang['user_pass']             = 'Passwort';
+$lang['user_name']             = 'Echter Name';
+$lang['user_mail']             = 'E-Mail';
+$lang['user_groups']           = 'Gruppen';
+$lang['field']                 = 'Feld';
+$lang['value']                 = 'Wert';
+$lang['add']                   = 'Zufügen';
+$lang['delete']                = 'Löschen';
+$lang['delete_selected']       = 'Lösche Ausgewähltes';
+$lang['edit']                  = 'Bearbeiten';
+$lang['edit_prompt']           = 'Bearbeite diesen Benutzer';
+$lang['modify']                = 'Änderungen speichern';
+$lang['search']                = 'Suchen';
+$lang['search_prompt']         = 'Suche ausführen';
+$lang['clear']                 = 'Suchfilter zurücksetzen';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Alle Benutzer exportieren (CSV)';
+$lang['export_filtered']       = 'Gefilterte Benutzerliste exportieren (CSV)';
+$lang['import']                = 'Neue Benutzer importieren';
+$lang['line']                  = 'Zeile Nr.';
+$lang['error']                 = 'Fehlermeldung';
+$lang['summary']               = 'Zeige Benutzer %1$d-%2$d von %3$d gefundenen. %4$d Benutzer insgesamt.';
+$lang['nonefound']             = 'Keinen Benutzer gefunden. Insgesamt %d Benutzer.';
+$lang['delete_ok']             = '%d Benutzer wurden gelöscht';
+$lang['delete_fail']           = '%d konnte nicht gelöscht werden';
+$lang['update_ok']             = 'Benutzer wurde erfolgreich aktualisiert';
+$lang['update_fail']           = 'Aktualisierung des Benutzers ist fehlgeschlagen';
+$lang['update_exists']         = 'Benutzername konnte nicht geändert werden, der angegebene Benutzername (%s) existiert bereits (alle anderen Änderungen werden angewandt).';
+$lang['start']                 = 'Start';
+$lang['prev']                  = 'vorige';
+$lang['next']                  = 'nächste';
+$lang['last']                  = 'letzte';
+$lang['edit_usermissing']      = 'Der gewählte Benutzer wurde nicht gefunden. Der angegebene Benutzername könnte gelöscht oder an anderer Stelle geändert worden sein.';
+$lang['user_notify']           = 'Benutzer benachrichtigen';
+$lang['note_notify']           = 'Benachrichtigungsmails werden nur versandt, wenn der Benutzer ein neues Kennwort erhält.';
+$lang['note_group']            = 'Neue Benutzer werden zur Standardgruppe (%s) hinzugefügt, wenn keine Gruppe angegeben wird.';
+$lang['note_pass']             = 'Das Passwort wird automatisch erzeugt, wenn das Feld freigelassen wird und der Benutzer Benachrichtigungen aktiviert hat.';
+$lang['add_ok']                = 'Benutzer erfolgreich hinzugefügt';
+$lang['add_fail']              = 'Hinzufügen des Benutzers fehlgeschlagen';
+$lang['notify_ok']             = 'Benachrichtigungsmail wurde versendet';
+$lang['notify_fail']           = 'Benachrichtigungsemail konnte nicht gesendet werden';
+$lang['import_userlistcsv']    = 'Benutzerliste (CSV-Datei):';
+$lang['import_header']         = 'Letzte Fehler bei Import';
+$lang['import_success_count']  = 'Benutzerimport: %d Benutzer gefunden, %d erfolgreich importiert.';
+$lang['import_failure_count']  = 'Benutzerimport: %d Benutzerimporte fehlgeschalten. Alle Fehler werden unten angezeigt.';
+$lang['import_error_fields']   = 'Falsche Anzahl Felder. Gefunden: %d. Benötigt: 4.';
+$lang['import_error_baduserid'] = 'Benutzername fehlt';
+$lang['import_error_badname']  = 'Ungültiger Name';
+$lang['import_error_badmail']  = 'Ungültige E-Mailadresse';
+$lang['import_error_upload']   = 'Import fehlgeschlagen. Die CSV-Datei konnte nicht hochgeladen werden oder ist leer.';
+$lang['import_error_readfail'] = 'Import fehlgeschlagen. Konnte die hochgeladene Datei nicht lesen.';
+$lang['import_error_create']   = 'Konnte den Benutzer nicht erzeugen';
+$lang['import_notify_fail']    = 'Benachrichtigung konnte an Benutzer %s (%s) nicht geschickt werden.';
+$lang['import_downloadfailures'] = 'Fehler als CSV-Datei zur Korrektur herunterladen';
+$lang['addUser_error_missing_pass'] = 'Bitte setze entweder ein Passwort oder aktiviere die Benutzerbenachrichtigung, um die Passwortgenerierung zu ermöglichen.';
+$lang['addUser_error_pass_not_identical'] = 'Die eingegebenen Passwörter stimmen nicht überein.';
+$lang['addUser_error_modPass_disabled'] = 'Das Bearbeiten von Passwörtern ist momentan deaktiviert';
+$lang['addUser_error_name_missing'] = 'Bitte gib den Namen des neuen Benutzer ein.';
+$lang['addUser_error_modName_disabled'] = 'Das Bearbeiten von Namen ist momentan deaktiviert.';
+$lang['addUser_error_mail_missing'] = 'Bitte gib die E-Mail-Adresse des neuen Benutzer ein.';
+$lang['addUser_error_modMail_disabled'] = 'Das Bearbeiten von E-Mailadressen ist momentan deaktiviert.';
+$lang['addUser_error_create_event_failed'] = 'Ein Plug-in hat das Hinzufügen des neuen Benutzers verhindert. Für weitere Informationen sieh dir mögliche andere Meldungen an.';
diff --git a/wiki/lib/plugins/usermanager/lang/de-informal/list.txt b/wiki/lib/plugins/usermanager/lang/de-informal/list.txt
new file mode 100644
index 0000000..0a62012
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de-informal/list.txt
@@ -0,0 +1 @@
+===== Benutzerliste =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de/add.txt b/wiki/lib/plugins/usermanager/lang/de/add.txt
new file mode 100644
index 0000000..925fa50
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/add.txt
@@ -0,0 +1 @@
+===== Benutzer hinzufügen =====
diff --git a/wiki/lib/plugins/usermanager/lang/de/delete.txt b/wiki/lib/plugins/usermanager/lang/de/delete.txt
new file mode 100644
index 0000000..4f3bbbd
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/delete.txt
@@ -0,0 +1 @@
+===== Benutzer löschen =====
diff --git a/wiki/lib/plugins/usermanager/lang/de/edit.txt b/wiki/lib/plugins/usermanager/lang/de/edit.txt
new file mode 100644
index 0000000..9419200
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/edit.txt
@@ -0,0 +1 @@
+===== Benutzer ändern =====
diff --git a/wiki/lib/plugins/usermanager/lang/de/import.txt b/wiki/lib/plugins/usermanager/lang/de/import.txt
new file mode 100644
index 0000000..7faca3b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/import.txt
@@ -0,0 +1,8 @@
+===== Benutzer-Massenimport =====
+
+Um mehrere Benutzer gleichzeitig zu importieren, wird eine CSV-Datei mit den folgenden vier Spalten benötigt (In dieser Reihenfolge): Benutzer-ID, Voller Name, E-Mail-Adresse und Gruppen.
+Die CSV-Felder sind Kommata-separiert (,) und mit Anführungszeichen eingefasst (%%"%%). Mit Backslashes (\) können Sonderzeichen maskiert werden.
+Ein Beispiel für eine gültige Datei kann mit der Benutzer-Export-Funktion oben generiert werden.
+Doppelte Benutzer-IDs werden ignoriert.
+
+Für jeden importierten Benutzer wird ein Passwort generiert und dem Benutzer per Mail zugestellt.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/de/intro.txt b/wiki/lib/plugins/usermanager/lang/de/intro.txt
new file mode 100644
index 0000000..a5837b8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/intro.txt
@@ -0,0 +1 @@
+====== Benutzer-Manager ======
diff --git a/wiki/lib/plugins/usermanager/lang/de/lang.php b/wiki/lib/plugins/usermanager/lang/de/lang.php
new file mode 100644
index 0000000..df1d1ff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/lang.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Michael Klier <chi@chimeric.de>
+ * @author Leo Moll <leo@yeasoft.com>
+ * @author Florian Anderiasch <fa@art-core.org>
+ * @author Robin Kluth <commi1993@gmail.com>
+ * @author Arne Pelka <mail@arnepelka.de>
+ * @author Dirk Einecke <dirk@dirkeinecke.de>
+ * @author Blitzi94 <Blitzi94@gmx.de>
+ * @author Robert Bogenschneider <robog@GMX.de>
+ * @author Niels Lange <niels@boldencursief.nl>
+ * @author Christian Wichmann <nospam@zone0.de>
+ * @author Paul Lachewsky <kaeptn.haddock@gmail.com>
+ * @author Pierre Corell <info@joomla-praxis.de>
+ * @author Matthias Schulte <dokuwiki@lupo49.de>
+ * @author Sven <Svenluecke48@gmx.d>
+ * @author christian studer <cstuder@existenz.ch>
+ * @author Ben Fey <benedikt.fey@beck-heun.de>
+ * @author Jonas Gröger <jonas.groeger@gmail.com>
+ * @author Uwe Benzelrath <uwebenzelrath@gmail.com>
+ * @author ms <msocial@posteo.de>
+ * @author Carsten Perthel <carsten@cpesoft.com>
+ */
+$lang['menu']                  = 'Benutzerverwaltung';
+$lang['noauth']                = '(Authentifizierungssystem nicht verfügbar)';
+$lang['nosupport']             = '(Benutzerverwaltung nicht unterstützt)';
+$lang['badauth']               = 'Ungültige Methode zur Authentifizierung';
+$lang['user_id']               = 'Benutzername';
+$lang['user_pass']             = 'Passwort';
+$lang['user_name']             = 'Voller Name';
+$lang['user_mail']             = 'E-Mail';
+$lang['user_groups']           = 'Gruppen';
+$lang['field']                 = 'Feld';
+$lang['value']                 = 'Wert';
+$lang['add']                   = 'Hinzufügen';
+$lang['delete']                = 'Löschen';
+$lang['delete_selected']       = 'Ausgewählte löschen';
+$lang['edit']                  = 'Ändern';
+$lang['edit_prompt']           = 'Benutzerdaten ändern';
+$lang['modify']                = 'Speichern';
+$lang['search']                = 'Suchen';
+$lang['search_prompt']         = 'Benutzerdaten filtern';
+$lang['clear']                 = 'Filter zurücksetzen';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Alle User exportieren (CSV)';
+$lang['export_filtered']       = 'Exportiere gefilterte Userliste (CSV)';
+$lang['import']                = 'Importiere neue User';
+$lang['line']                  = 'Zeilennr.';
+$lang['error']                 = 'Fehlermeldung';
+$lang['summary']               = 'Zeige Benutzer %1$d-%2$d von %3$d gefundenen. %4$d Benutzer insgesamt.';
+$lang['nonefound']             = 'Keine Benutzer gefunden. %d Benutzer insgesamt.';
+$lang['delete_ok']             = '%d Benutzer gelöscht';
+$lang['delete_fail']           = '%d konnten nicht gelöscht werden.';
+$lang['update_ok']             = 'Benutzerdaten erfolgreich geändert.';
+$lang['update_fail']           = 'Änderung der Benutzerdaten fehlgeschlagen.';
+$lang['update_exists']         = 'Benutzername konnte nicht geändert werden, weil der angegebene Benutzer (%s) bereits existiert (alle anderen Änderungen wurden durchgeführt).';
+$lang['start']                 = 'Anfang';
+$lang['prev']                  = 'Vorherige';
+$lang['next']                  = 'Nächste';
+$lang['last']                  = 'Ende';
+$lang['edit_usermissing']      = 'Der ausgewählte Benutzer wurde nicht gefunden. Möglicherweise wurde er gelöscht oder der Benutzer wurde anderswo geändert.';
+$lang['user_notify']           = 'Nutzer benachrichtigen';
+$lang['note_notify']           = 'Benachrichtigungs-E-Mails werden nur versandt, wenn ein neues Passwort vergeben wurde.';
+$lang['note_group']            = 'Neue Benutzer werden der Standard-Gruppe (%s) hinzugefügt, wenn keine Gruppe angegeben wurde.';
+$lang['note_pass']             = 'Das Passwort wird automatisch generiert, wenn das entsprechende Feld leergelassen wird und die Benachrichtigung des Benutzers aktiviert ist.';
+$lang['add_ok']                = 'Nutzer erfolgreich angelegt';
+$lang['add_fail']              = 'Nutzer konnte nicht angelegt werden';
+$lang['notify_ok']             = 'Benachrichtigungsmail wurde versandt';
+$lang['notify_fail']           = 'Benachrichtigungsmail konnte nicht versandt werden';
+$lang['import_userlistcsv']    = 'Benutzerliste (CSV-Datei):';
+$lang['import_header']         = 'Letzte Fehler bei Import';
+$lang['import_success_count']  = 'User-Import: %d User gefunden, %d erfolgreich importiert.';
+$lang['import_failure_count']  = 'User-Import: %d fehlgeschlagen. Fehlgeschlagene User sind nachfolgend aufgelistet.';
+$lang['import_error_fields']   = 'Unzureichende Anzahl an Feldern: %d gefunden, benötigt sind 4.';
+$lang['import_error_baduserid'] = 'User-Id fehlt';
+$lang['import_error_badname']  = 'Ungültiger Name';
+$lang['import_error_badmail']  = 'Ungültige E-Mail';
+$lang['import_error_upload']   = 'Import fehlgeschlagen. Die CSV-Datei konnte nicht hochgeladen werden, oder ist leer.';
+$lang['import_error_readfail'] = 'Import fehlgeschlagen. Die hochgeladene Datei konnte nicht gelesen werden.';
+$lang['import_error_create']   = 'User konnte nicht angelegt werden';
+$lang['import_notify_fail']    = 'Benachrichtigung konnte nicht an den importierten Benutzer %s (E-Mail: %s) gesendet werden.';
+$lang['import_downloadfailures'] = 'Fehler als CSV-Datei zur Korrektur herunterladen';
+$lang['addUser_error_missing_pass'] = 'Bitte vergeben Sie entweder ein Passwort oder Sie aktivieren die Benutzerbenachrichtigung, um die Passwortgenerierung zu ermöglichen.';
+$lang['addUser_error_pass_not_identical'] = 'Die eingegebenen Passwörter stimmen nicht überein.';
+$lang['addUser_error_modPass_disabled'] = 'Das Bearbeiten von Passwörtern ist momentan deaktiviert';
+$lang['addUser_error_name_missing'] = 'Bitte geben Sie den Namen des neuen Benutzer ein.';
+$lang['addUser_error_modName_disabled'] = 'Das Bearbeiten von Namen ist momentan deaktiviert.';
+$lang['addUser_error_mail_missing'] = 'Bitte geben Sie die E-Mail-Adresse des neuen Benutzer ein.';
+$lang['addUser_error_modMail_disabled'] = 'Das Bearbeiten von E-Mailadressen ist momentan deaktiviert.';
+$lang['addUser_error_create_event_failed'] = 'Ein Plug-in hat das Hinzufügen des neuen Benutzers verhindert. Für weitere Informationen sehen Sie sich mögliche andere Meldungen an.';
diff --git a/wiki/lib/plugins/usermanager/lang/de/list.txt b/wiki/lib/plugins/usermanager/lang/de/list.txt
new file mode 100644
index 0000000..8d6d5fb
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/de/list.txt
@@ -0,0 +1 @@
+===== Benutzerliste =====
diff --git a/wiki/lib/plugins/usermanager/lang/el/add.txt b/wiki/lib/plugins/usermanager/lang/el/add.txt
new file mode 100644
index 0000000..0616f8c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/el/add.txt
@@ -0,0 +1 @@
+===== Προσθήκη Χρήστη =====
diff --git a/wiki/lib/plugins/usermanager/lang/el/delete.txt b/wiki/lib/plugins/usermanager/lang/el/delete.txt
new file mode 100644
index 0000000..baf9bc0
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/el/delete.txt
@@ -0,0 +1 @@
+===== Διαγραφή Χρήστη =====
diff --git a/wiki/lib/plugins/usermanager/lang/el/edit.txt b/wiki/lib/plugins/usermanager/lang/el/edit.txt
new file mode 100644
index 0000000..dec59ef
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/el/edit.txt
@@ -0,0 +1 @@
+===== Τροποποίηση Χρήστη =====
diff --git a/wiki/lib/plugins/usermanager/lang/el/intro.txt b/wiki/lib/plugins/usermanager/lang/el/intro.txt
new file mode 100644
index 0000000..874c13b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/el/intro.txt
@@ -0,0 +1 @@
+====== Διαχείριση Χρηστών ======
diff --git a/wiki/lib/plugins/usermanager/lang/el/lang.php b/wiki/lib/plugins/usermanager/lang/el/lang.php
new file mode 100644
index 0000000..a838f73
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/el/lang.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @author Thanos Massias <tm@thriasio.gr>
+ * @author Αθανάσιος Νταής <homunculus@wana.gr>
+ * @author Konstantinos Koryllos <koryllos@gmail.com>
+ * @author George Petsagourakis <petsagouris@gmail.com>
+ * @author Petros Vidalis <pvidalis@gmail.com>
+ * @author Vasileios Karavasilis vasileioskaravasilis@gmail.com
+ */
+$lang['menu']                  = 'Διαχείριση Χρηστών';
+$lang['noauth']                = '(η είσοδος χρηστών δεν είναι δυνατή)';
+$lang['nosupport']             = '(δεν υποστηρίζεται η διαχείριση χρηστών)';
+$lang['badauth']               = 'μη επιτρεπτός μηχανισμός πιστοποίησης';
+$lang['user_id']               = 'Χρήστης';
+$lang['user_pass']             = 'Κωδικός';
+$lang['user_name']             = 'Πλήρες όνομα';
+$lang['user_mail']             = 'e-mail';
+$lang['user_groups']           = 'Ομάδες';
+$lang['field']                 = 'Πεδίο';
+$lang['value']                 = 'Τιμή';
+$lang['add']                   = 'Προσθήκη';
+$lang['delete']                = 'Διαγραφή';
+$lang['delete_selected']       = 'Διαγραφή επιλεγμένων χρηστών';
+$lang['edit']                  = 'Τροποποίηση';
+$lang['edit_prompt']           = 'Τροποποίηση χρήστη';
+$lang['modify']                = 'Αποθήκευση αλλαγών';
+$lang['search']                = 'Αναζήτηση';
+$lang['search_prompt']         = 'Εκκίνηση αναζήτησης';
+$lang['clear']                 = 'Καθαρισμός φίλτρων';
+$lang['filter']                = 'Φίλτρο';
+$lang['summary']               = 'Εμφάνιση χρηστών %1$d-%2$d από %3$d σχετικούς. %4$d χρήστες συνολικά.';
+$lang['nonefound']             = 'Δεν βρέθηκαν σχετικοί χρήστες. %d χρήστες συνολικά.';
+$lang['delete_ok']             = '%d χρήστες διεγράφησαν';
+$lang['delete_fail']           = '%d χρήστες δεν διεγράφησαν.';
+$lang['update_ok']             = 'Επιτυχημένη τροποποίηση προφίλ χρήστη';
+$lang['update_fail']           = 'Αποτυχημένη τροποποίηση προφίλ χρήστη';
+$lang['update_exists']         = 'Η αλλαγή ονόματος χρήστη απέτυχε -- το νέο όνομα χρήστη (%s) ήδη υπάρχει (τυχόν άλλες αλλαγές θα εφαρμοστούν).';
+$lang['start']                 = 'αρχή';
+$lang['prev']                  = 'προηγούμενα';
+$lang['next']                  = 'επόμενα';
+$lang['last']                  = 'τέλος';
+$lang['edit_usermissing']      = 'Ο επιλεγμένος χρήστης δεν βρέθηκε. Πιθανόν να διαγράφηκε στο μεταξύ.';
+$lang['user_notify']           = 'Ειδοποίηση χρήστη';
+$lang['note_notify']           = 'Τα ενημερωτικά e-mails στέλνονται μόνο όταν δίνεται νέος κωδικός στον χρήστη.';
+$lang['note_group']            = 'Οι νέοι χρήστες θα ανήκουν στην ομάδα (%s) αν δεν οριστεί άλλη ομάδα.';
+$lang['note_pass']             = 'Ο κωδικός θα δημιουργηθεί αυτόματα εάν το πεδίο μείνει κενό και έχει επιλεγεί η αποστολή ειδοποίησης χρήστη.';
+$lang['add_ok']                = 'Επιτυχημένη εγγραφή  χρήστη';
+$lang['add_fail']              = 'Η εγγραφή του χρήστη απέτυχε';
+$lang['notify_ok']             = 'Εστάλη ενημερωτικό e-mail';
+$lang['notify_fail']           = 'Δεν ήταν δυνατή η αποστολή του ενημερωτικού e-mail';
diff --git a/wiki/lib/plugins/usermanager/lang/el/list.txt b/wiki/lib/plugins/usermanager/lang/el/list.txt
new file mode 100644
index 0000000..adb5c21
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/el/list.txt
@@ -0,0 +1 @@
+===== Κατάλογος Χρηστών =====
diff --git a/wiki/lib/plugins/usermanager/lang/en/add.txt b/wiki/lib/plugins/usermanager/lang/en/add.txt
new file mode 100644
index 0000000..9afecb5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/add.txt
@@ -0,0 +1 @@
+===== Add user =====
diff --git a/wiki/lib/plugins/usermanager/lang/en/delete.txt b/wiki/lib/plugins/usermanager/lang/en/delete.txt
new file mode 100644
index 0000000..c3ca90d
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/delete.txt
@@ -0,0 +1 @@
+===== Delete user =====
diff --git a/wiki/lib/plugins/usermanager/lang/en/edit.txt b/wiki/lib/plugins/usermanager/lang/en/edit.txt
new file mode 100644
index 0000000..4d02dfd
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/edit.txt
@@ -0,0 +1 @@
+===== Edit user =====
diff --git a/wiki/lib/plugins/usermanager/lang/en/import.txt b/wiki/lib/plugins/usermanager/lang/en/import.txt
new file mode 100644
index 0000000..3a1cf99
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/import.txt
@@ -0,0 +1,9 @@
+===== Bulk User Import =====
+
+Requires a CSV file of users with at least four columns.
+The columns must contain, in order: user-id, full name, email address and groups.
+The CSV fields should be separated by commas (,) and strings delimited by quotation marks (%%""%%). Backslash (\) can be used for escaping.
+For an example of a suitable file, try the "Export Users" function above.
+Duplicate user-ids will be ignored.
+
+A password will be generated and emailed to each successfully imported user.
diff --git a/wiki/lib/plugins/usermanager/lang/en/intro.txt b/wiki/lib/plugins/usermanager/lang/en/intro.txt
new file mode 100644
index 0000000..73bf556
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/intro.txt
@@ -0,0 +1 @@
+====== User Manager ======
diff --git a/wiki/lib/plugins/usermanager/lang/en/lang.php b/wiki/lib/plugins/usermanager/lang/en/lang.php
new file mode 100644
index 0000000..5f47673
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/lang.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * English language file
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ */
+
+$lang['menu'] = 'User Manager';
+
+// custom language strings for the plugin
+$lang['noauth']      = '(user authentication not available)';
+$lang['nosupport']   = '(user management not supported)';
+
+$lang['badauth']     = 'invalid auth mechanism';     // should never be displayed!
+
+$lang['user_id']     = 'User';
+$lang['user_pass']   = 'Password';
+$lang['user_name']   = 'Real Name';
+$lang['user_mail']   = 'Email';
+$lang['user_groups'] = 'Groups';
+
+$lang['field']       = 'Field';
+$lang['value']       = 'Value';
+$lang['add']         = 'Add';
+$lang['delete']      = 'Delete';
+$lang['delete_selected'] = 'Delete Selected';
+$lang['edit']        = 'Edit';
+$lang['edit_prompt'] = 'Edit this user';
+$lang['modify']      = 'Save Changes';
+$lang['search']      = 'Search';
+$lang['search_prompt'] = 'Perform search';
+$lang['clear']       = 'Reset Search Filter';
+$lang['filter']      = 'Filter';
+$lang['export_all']  = 'Export All Users (CSV)';
+$lang['export_filtered'] = 'Export Filtered User list (CSV)';
+$lang['import']      = 'Import New Users';
+$lang['line']        = 'Line no.';
+$lang['error']       = 'Error message';
+
+$lang['summary']     = 'Displaying users %1$d-%2$d of %3$d found. %4$d users total.';
+$lang['nonefound']   = 'No users found. %d users total.';
+$lang['delete_ok']   = '%d users deleted';
+$lang['delete_fail'] = '%d failed deleting.';
+$lang['update_ok']   = 'User updated successfully';
+$lang['update_fail'] = 'User update failed';
+$lang['update_exists'] = 'User name change failed, the specified user name (%s) already exists (any other changes will be applied).';
+
+$lang['start']  = 'start';
+$lang['prev']   = 'previous';
+$lang['next']   = 'next';
+$lang['last']   = 'last';
+
+// added after 2006-03-09 release
+$lang['edit_usermissing'] = 'Selected user not found, the specified user name may have been deleted or changed elsewhere.';
+$lang['user_notify'] = 'Notify user';
+$lang['note_notify'] = 'Notification emails are only sent if the user is given a new password.';
+$lang['note_group'] = 'New users will be added to the default group (%s) if no group is specified.';
+$lang['note_pass'] = 'The password will be autogenerated if the field is left empty and notification of the user is enabled.';
+$lang['add_ok'] = 'User added successfully';
+$lang['add_fail'] = 'User addition failed';
+$lang['notify_ok'] = 'Notification email sent';
+$lang['notify_fail'] = 'Notification email could not be sent';
+
+// import & errors
+$lang['import_userlistcsv'] = 'User list file (CSV):  ';
+$lang['import_header'] = 'Most Recent Import - Failures';
+$lang['import_success_count'] = 'User Import: %d users found, %d imported successfully.';
+$lang['import_failure_count'] = 'User Import: %d failed. Failures are listed below.';
+$lang['import_error_fields']  = "Insufficient fields, found %d, require 4.";
+$lang['import_error_baduserid'] = "User-id missing";
+$lang['import_error_badname'] = 'Bad name';
+$lang['import_error_badmail'] = 'Bad email address';
+$lang['import_error_upload']  = 'Import Failed. The csv file could not be uploaded or is empty.';
+$lang['import_error_readfail'] = 'Import Failed. Unable to read uploaded file.';
+$lang['import_error_create']  = 'Unable to create the user';
+$lang['import_notify_fail']   = 'Notification message could not be sent for imported user, %s with email %s.';
+$lang['import_downloadfailures'] = 'Download Failures as CSV for correction';
+
+$lang['addUser_error_missing_pass'] = 'Please either set a password or activate user notification to enable password generation.';
+$lang['addUser_error_pass_not_identical'] = 'The entered passwords were not identical.';
+$lang['addUser_error_modPass_disabled'] = 'Modifing passwords is currently disabled';
+$lang['addUser_error_name_missing'] = 'Please enter a name for the new user.';
+$lang['addUser_error_modName_disabled'] = 'Modifing names is currently disabled.';
+$lang['addUser_error_mail_missing'] = 'Please enter an Email-Adress for the new user.';
+$lang['addUser_error_modMail_disabled'] = 'Modifing Email-Adresses is currently disabled.';
+$lang['addUser_error_create_event_failed'] = 'A plugin prevented the new user being added. Review possible other messages for more information.';
diff --git a/wiki/lib/plugins/usermanager/lang/en/list.txt b/wiki/lib/plugins/usermanager/lang/en/list.txt
new file mode 100644
index 0000000..54c45ca
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/en/list.txt
@@ -0,0 +1 @@
+===== User List =====
diff --git a/wiki/lib/plugins/usermanager/lang/eo/add.txt b/wiki/lib/plugins/usermanager/lang/eo/add.txt
new file mode 100644
index 0000000..8775ff8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/add.txt
@@ -0,0 +1 @@
+===== Aldoni uzanton =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eo/delete.txt b/wiki/lib/plugins/usermanager/lang/eo/delete.txt
new file mode 100644
index 0000000..0d94f81
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/delete.txt
@@ -0,0 +1 @@
+===== Forigi uzanton =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eo/edit.txt b/wiki/lib/plugins/usermanager/lang/eo/edit.txt
new file mode 100644
index 0000000..2ced16e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/edit.txt
@@ -0,0 +1 @@
+===== Modifi uzanton =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eo/import.txt b/wiki/lib/plugins/usermanager/lang/eo/import.txt
new file mode 100644
index 0000000..09fbe69
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/import.txt
@@ -0,0 +1,9 @@
+===== Amasa importo de uzantoj =====
+
+Tio ĉi postulas CSV-dosiero de uzantoj kun minimume kvar kolumnoj.
+La kolumnoj devas enhavi, laŭorde: uzant-id, kompleta nomo, retadreso kaj grupoj.
+La CSV-kampoj devos esti apartitaj per komoj (,) kaj ĉenoj devas esti limigitaj per citiloj (%%""%%). Retroklino (\) povas esti uzata por eskapo.
+Por ekzemplo de taŭga dosiero, provu la funkcion "Eksporti uzantojn" supre.
+Duobligitaj uzant-id estos preteratentataj.
+
+Pasvorto estos generata kaj retsendata al ĉiu sukecse importita uzanto.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eo/intro.txt b/wiki/lib/plugins/usermanager/lang/eo/intro.txt
new file mode 100644
index 0000000..5b5a940
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/intro.txt
@@ -0,0 +1 @@
+====== Administrado de uzantoj ======
diff --git a/wiki/lib/plugins/usermanager/lang/eo/lang.php b/wiki/lib/plugins/usermanager/lang/eo/lang.php
new file mode 100644
index 0000000..5a11e73
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/lang.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas@uol.com.br>
+ * @author Felipo Kastro <fefcas@gmail.com>
+ * @author Robert Bogenschneider <robog@gmx.de>
+ * @author Erik Pedersen <erik pedersen@shaw.ca>
+ */
+$lang['menu']                  = 'Administrado de uzantoj';
+$lang['noauth']                = '(identiĝo de uzantoj ne disponeblas)';
+$lang['nosupport']             = '(administro de uzantoj ne estas subtenata)';
+$lang['badauth']               = 'tiu identiĝa procezo ne validas';
+$lang['user_id']               = 'Uzanto';
+$lang['user_pass']             = 'Pasvorto';
+$lang['user_name']             = 'Vera nomo';
+$lang['user_mail']             = 'Retpoŝtadreso';
+$lang['user_groups']           = 'Grupoj';
+$lang['field']                 = 'Kampo';
+$lang['value']                 = 'Valoro';
+$lang['add']                   = 'Aldoni';
+$lang['delete']                = 'Forigi';
+$lang['delete_selected']       = 'Forigi elektitan';
+$lang['edit']                  = 'Modifi';
+$lang['edit_prompt']           = 'Modifi tiun ĉi uzanton';
+$lang['modify']                = 'Registri modifojn';
+$lang['search']                = 'Serĉi';
+$lang['search_prompt']         = 'Fari serĉon';
+$lang['clear']                 = 'Refari serĉan filtron';
+$lang['filter']                = 'Filtro';
+$lang['export_all']            = 'Eksporti ĉiujn uzantojn (CSV)';
+$lang['export_filtered']       = 'Eksporti filtritan uzant-liston (CSV)';
+$lang['import']                = 'Importi novajn uzantojn';
+$lang['line']                  = 'Lini-num.';
+$lang['error']                 = 'Erar-mesaĝo';
+$lang['summary']               = 'Montriĝas uzantoj %1$d-%2$d el %3$d trovitaj. %4$d uzantoj entute.';
+$lang['nonefound']             = 'Neniuj uzantoj troviĝas. %d uzantoj entute.';
+$lang['delete_ok']             = '%d uzantoj forigiĝis';
+$lang['delete_fail']           = '%d malsukcesis esti forigitaj.';
+$lang['update_ok']             = 'Tiu uzanto sukcese ĝisdatiĝis';
+$lang['update_fail']           = 'Malsukceso okazis por ĝisdatigi tiun uzanton';
+$lang['update_exists']         = 'Malsukceso okazis por ŝanĝi la nomon de tiu uzanto: la enmetita nomo (%s) jam ekzistas (ĉiuj aliaj ŝanĝoj estos aplikitaj)';
+$lang['start']                 = 'Ekigi';
+$lang['prev']                  = 'antaŭe';
+$lang['next']                  = 'sekve';
+$lang['last']                  = 'laste';
+$lang['edit_usermissing']      = 'La elektita uzanto ne troviĝis: tiu nomo povis esti forigita aŭ ŝanĝita aliloke.';
+$lang['user_notify']           = 'Avizi uzanton';
+$lang['note_notify']           = 'Avizantaj mesaĝoj estos sendataj nur se la uzanto ekhavos novan pasvorton.';
+$lang['note_group']            = 'Novaj uzantoj estos aldonitaj al la komuna grupo (%s) se neniu alia estos specifita.';
+$lang['note_pass']             = 'La pasvorto estos aŭtomate kreita se la kampo estos lasita malplena kaj \'avizo al uzantoj\' estos ebligita.';
+$lang['add_ok']                = 'La uzanto sukcese aldoniĝis';
+$lang['add_fail']              = 'Ne eblis aldoni uzanton';
+$lang['notify_ok']             = 'Avizanta mesaĝo sendiĝis';
+$lang['notify_fail']           = 'La avizanta mesaĝo ne povis esti sendita';
+$lang['import_userlistcsv']    = 'Dosiero kun listo de uzantoj (CSV):';
+$lang['import_header']         = 'Plej lastaj Import-eraroj';
+$lang['import_success_count']  = 'Uzant-importo: %d uzantoj trovataj, %d sukcese importitaj.';
+$lang['import_failure_count']  = 'Uzant-importo: %d fiaskis. Fiaskoj estas sube listitaj.';
+$lang['import_error_fields']   = 'Nesufiĉe da kampoj, ni trovis %d, necesas 4.';
+$lang['import_error_baduserid'] = 'Mankas uzant-id';
+$lang['import_error_badname']  = 'Malĝusta nomo';
+$lang['import_error_badmail']  = 'Malĝusta retadreso';
+$lang['import_error_upload']   = 'Importo fiaskis. La csv-dosiero ne povis esti alŝutata aŭ ĝi estas malplena.';
+$lang['import_error_readfail'] = 'Importo fiaskis. Ne eblas legi alŝutitan dosieron.';
+$lang['import_error_create']   = 'Ne eblas krei la uzanton';
+$lang['import_notify_fail']    = 'Averta mesaĝo ne povis esti sendata al la importita uzanto %s, kun retdreso %s.';
+$lang['import_downloadfailures'] = 'Elŝut-eraroj por korektado (CSV)';
diff --git a/wiki/lib/plugins/usermanager/lang/eo/list.txt b/wiki/lib/plugins/usermanager/lang/eo/list.txt
new file mode 100644
index 0000000..5be7222
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eo/list.txt
@@ -0,0 +1 @@
+===== Listo de uzantoj =====
diff --git a/wiki/lib/plugins/usermanager/lang/es/add.txt b/wiki/lib/plugins/usermanager/lang/es/add.txt
new file mode 100644
index 0000000..90c56e3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/add.txt
@@ -0,0 +1 @@
+===== Agregar un usuario =====
diff --git a/wiki/lib/plugins/usermanager/lang/es/delete.txt b/wiki/lib/plugins/usermanager/lang/es/delete.txt
new file mode 100644
index 0000000..4c552a9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/delete.txt
@@ -0,0 +1 @@
+=====  Eliminar un usuario  =====
diff --git a/wiki/lib/plugins/usermanager/lang/es/edit.txt b/wiki/lib/plugins/usermanager/lang/es/edit.txt
new file mode 100644
index 0000000..ccdd26f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/edit.txt
@@ -0,0 +1 @@
+===== Editar datos del usuario =====
diff --git a/wiki/lib/plugins/usermanager/lang/es/import.txt b/wiki/lib/plugins/usermanager/lang/es/import.txt
new file mode 100644
index 0000000..2482096
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/import.txt
@@ -0,0 +1,9 @@
+===== Importación y carga de usuarios  =====
+
+Se requiere un archivo CSV de usuarios con al menos cuatro columnas.
+Las columnas deben contener, en este orden: Identificador de usuario, nombre completo, dirección de correo electrónico y grupos.
+Los campos CSV deben estar separados por comas (,) y las cadenas delimitadas por comillas dobles (%%""%%). Barra inversa (\\) se puede utilizar para escapar caracteres.
+Para un ejemplo de un archivo adecuado, probar la función "Exportar usuarios" de arriba.
+Valores de identificador de usuario duplicados serán ignorados.
+
+Una contraseña será generada y enviada por correo electrónico a cada usuario importado correctamente.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/es/intro.txt b/wiki/lib/plugins/usermanager/lang/es/intro.txt
new file mode 100644
index 0000000..e558d3a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/intro.txt
@@ -0,0 +1 @@
+====== Administración de usuarios  ======
diff --git a/wiki/lib/plugins/usermanager/lang/es/lang.php b/wiki/lib/plugins/usermanager/lang/es/lang.php
new file mode 100644
index 0000000..3722dff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/lang.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Miguel Pagano <miguel.pagano>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Gabriel Castillo <gch@pumas.ii.unam.mx>
+ * @author oliver <oliver@samera.com.py>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Manuel Meco <manuel.meco@gmail.com>
+ * @author VictorCastelan <victorcastelan@gmail.com>
+ * @author Jordan Mero <hack.jord@gmail.com>
+ * @author Felipe Martinez <metalmartinez@gmail.com>
+ * @author Javier Aranda <internet@javierav.com>
+ * @author Zerial <fernando@zerial.org>
+ * @author Marvin Ortega <maty1206@maryanlinux.com>
+ * @author Daniel Castro Alvarado <dancas2@gmail.com>
+ * @author Fernando J. Gómez <fjgomez@gmail.com>
+ * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com>
+ * @author emezeta <emezeta@infoprimo.com>
+ * @author Oscar Ciudad <oscar@jacho.net>
+ * @author Ruben Figols <ruben.figols@gmail.com>
+ * @author Gerardo Zamudio <gerardo@gerardozamudio.net>
+ * @author Mercè López <mercelz@gmail.com>
+ * @author Antonio Bueno <atnbueno@gmail.com>
+ * @author Antonio Castilla <antoniocastilla@trazoide.com>
+ * @author Jonathan Hernández <me@jhalicea.com>
+ * @author Domingo Redal <docxml@gmail.com>
+ * @author solohazlo <solohhazlo@gmail.com>
+ * @author David Roy <davidroyapp@gmail.com>
+ * @author Enny Rodriguez <aquilez.4@gmail.com>
+ */
+$lang['menu']                  = 'Administración de usuarios';
+$lang['noauth']                = '(la autenticación de usuarios no está disponible)';
+$lang['nosupport']             = '(la administración de usuarios no está habilitada)';
+$lang['badauth']               = 'Mecanismo de autenticación inválido';
+$lang['user_id']               = 'Usuario';
+$lang['user_pass']             = 'Contraseña';
+$lang['user_name']             = 'Nombre';
+$lang['user_mail']             = 'Correo electrónico';
+$lang['user_groups']           = 'Grupos';
+$lang['field']                 = 'Campo';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Agregar';
+$lang['delete']                = 'Eliminar';
+$lang['delete_selected']       = 'Eliminar seleccionados';
+$lang['edit']                  = 'Editar';
+$lang['edit_prompt']           = 'Editar datos de este usuario';
+$lang['modify']                = 'Guardar los cambios';
+$lang['search']                = 'Buscar';
+$lang['search_prompt']         = 'Realizar la búsqueda';
+$lang['clear']                 = 'Limpiar los filtros de la búsqueda';
+$lang['filter']                = 'Filtrar';
+$lang['export_all']            = 'Exportar Todos los Usuarios (CSV)';
+$lang['export_filtered']       = 'Exportar Lista de Usuarios Filtrada (CSV)';
+$lang['import']                = 'Importar Nuevos Usuarios';
+$lang['line']                  = 'Línea nº';
+$lang['error']                 = 'Mensaje de error';
+$lang['summary']               = 'Mostrando los usuarios %1$d-%2$d de %3$d encontrados. Cantidad total de usuarios %4$d.';
+$lang['nonefound']             = 'No se encontraron usuarios que coincidan con los párametros de la búsqueda. Cantidad total de usuarios %d.';
+$lang['delete_ok']             = '%d usuarios eliminados';
+$lang['delete_fail']           = '%d no se pudieron eliminar.';
+$lang['update_ok']             = 'Los datos del usuario se actualizaron exitosamente ';
+$lang['update_fail']           = 'Los datos del usuario no se actualizaron';
+$lang['update_exists']         = 'El cambio de nombre de usuario falló, el nombre especificado (%s) ya está en uso (los otros cambios se aplicaron).';
+$lang['start']                 = 'primera';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'siguiente';
+$lang['last']                  = 'última';
+$lang['edit_usermissing']      = 'El usuario seleccionado no ha sido encontrado; el usuario especificado puede haber sido eliminado o cambiado en algún otro lugar.';
+$lang['user_notify']           = 'Notificar al usuario';
+$lang['note_notify']           = 'El correo electrónico de notificación sólo será enviado si se actualizo la contraseña del usuario.';
+$lang['note_group']            = 'Si no se especifica ningún grupo, los nuevos usuarios serán agregados al grupo por defecto (%s).';
+$lang['note_pass']             = 'Se generará una clave automáticamente si el campo izquierdo es vacío y se esta activo la notificación de usuario. ';
+$lang['add_ok']                = 'El usuario fue creado exitosamente';
+$lang['add_fail']              = 'Falló la creación del usuario';
+$lang['notify_ok']             = 'Se envió la notificación por correo electrónico';
+$lang['notify_fail']           = 'No se pudo enviar la notificación por correo electrónico';
+$lang['import_userlistcsv']    = 'Lista de usuarios (CSV): ';
+$lang['import_header']         = 'Importaciones Más Recientes - Fallos';
+$lang['import_success_count']  = 'Importación de usuarios: %d usuarios encontrados, %d importados correctamente.';
+$lang['import_failure_count']  = 'Importación de usuarios: %d fallaron. Los fallos se enumeran a continuación.';
+$lang['import_error_fields']   = 'Campos insuficientes, encontrados %d, se requieren 4.';
+$lang['import_error_baduserid'] = 'Identificador de usuario no encontrado';
+$lang['import_error_badname']  = 'Nombre erróneo';
+$lang['import_error_badmail']  = 'Dirección de correo electrónico incorrecta';
+$lang['import_error_upload']   = 'Error al importar. El archivo csv no se pudo cargar o está vacío.';
+$lang['import_error_readfail'] = 'Error al importar. No se puede leer el archivo subido.';
+$lang['import_error_create']   = 'No se puede crear el usuario';
+$lang['import_notify_fail']    = 'Mensaje de notificación no se ha podido enviar por el usuario importado,%s con el email %s.';
+$lang['import_downloadfailures'] = 'Descarga errores en archivo CSV para la corrección';
+$lang['addUser_error_missing_pass'] = 'Por favor, establezca una contraseña o active las notificaciónes de usuario para permitir la generación de contraseñas.';
+$lang['addUser_error_pass_not_identical'] = 'Las contraseñas no coinciden';
+$lang['addUser_error_modPass_disabled'] = 'Está desactivado por ahora modificar contraseñas.';
+$lang['addUser_error_name_missing'] = 'Por favor teclea el nombre del nuevo usuario.';
+$lang['addUser_error_modName_disabled'] = 'La modificación de nombres está desactivada.';
+$lang['addUser_error_mail_missing'] = 'Por favor indica el email del nuevo usuario.';
+$lang['addUser_error_modMail_disabled'] = 'La modificación de email está desactivada.';
+$lang['addUser_error_create_event_failed'] = 'Un plugin impidió que se añadiera el nuevo usuario. Revisa los otros mensajes para obtener más detalles.';
diff --git a/wiki/lib/plugins/usermanager/lang/es/list.txt b/wiki/lib/plugins/usermanager/lang/es/list.txt
new file mode 100644
index 0000000..d0d32b9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/es/list.txt
@@ -0,0 +1 @@
+===== Lista de usuarios =====
diff --git a/wiki/lib/plugins/usermanager/lang/et/lang.php b/wiki/lib/plugins/usermanager/lang/et/lang.php
new file mode 100644
index 0000000..deb1e0b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/et/lang.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author kristian.kankainen@kuu.la
+ * @author Rivo Zängov <eraser@eraser.ee>
+ * @author Janar Leas <janar.leas@eesti.ee>
+ */
+$lang['menu']                  = 'Kasutajate haldamine';
+$lang['user_id']               = 'Kasutaja';
+$lang['user_pass']             = 'Parool';
+$lang['user_name']             = 'Tegelik nimi';
+$lang['user_mail']             = 'E-post';
+$lang['user_groups']           = 'Rühmad';
+$lang['field']                 = 'Väli';
+$lang['value']                 = 'Väärtus';
+$lang['add']                   = 'Lisa';
+$lang['delete']                = 'Kustuta';
+$lang['delete_selected']       = 'Kustuta valitud';
+$lang['edit']                  = 'Muuda';
+$lang['edit_prompt']           = 'Muuda seda kasutajat';
+$lang['modify']                = 'Salvesta muudatused';
+$lang['search']                = 'Otsi';
+$lang['search_prompt']         = 'Soorita otsing';
+$lang['filter']                = 'Filtreeri';
+$lang['update_fail']           = 'Kasutaja uuendamine ebaõnnestus';
+$lang['start']                 = 'esimesed';
+$lang['prev']                  = 'eelmine';
+$lang['next']                  = 'järgmine';
+$lang['last']                  = 'viimased';
+$lang['user_notify']           = 'Teavita kasutajat';
+$lang['note_group']            = 'Kui rühma pole määratletud, siis lisatakse uued kasutajad vaikimisi rühma (%s).';
diff --git a/wiki/lib/plugins/usermanager/lang/eu/add.txt b/wiki/lib/plugins/usermanager/lang/eu/add.txt
new file mode 100644
index 0000000..4208e51
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eu/add.txt
@@ -0,0 +1 @@
+===== Gehitu erabiltzailea =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eu/delete.txt b/wiki/lib/plugins/usermanager/lang/eu/delete.txt
new file mode 100644
index 0000000..245c881
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eu/delete.txt
@@ -0,0 +1 @@
+===== Ezabatu erabiltzailea =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eu/edit.txt b/wiki/lib/plugins/usermanager/lang/eu/edit.txt
new file mode 100644
index 0000000..82b92af
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eu/edit.txt
@@ -0,0 +1 @@
+====== Editatu erabiltzailea ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eu/intro.txt b/wiki/lib/plugins/usermanager/lang/eu/intro.txt
new file mode 100644
index 0000000..91770fd
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eu/intro.txt
@@ -0,0 +1 @@
+====== Erabiltzaile-kudeatzailea ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/eu/lang.php b/wiki/lib/plugins/usermanager/lang/eu/lang.php
new file mode 100644
index 0000000..e2f2cb8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eu/lang.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Inko Illarramendi <inko.i.a@gmail.com>
+ * @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Osoitz <oelkoro@gmail.com>
+ */
+$lang['menu']                  = 'Erabiltzaile-kudeatzailea';
+$lang['noauth']                = '(erabiltzaile kautotzea ez dago erabilgarri)';
+$lang['nosupport']             = '(erabiltzaile kudeaketa ez dago erabilgarri)';
+$lang['badauth']               = 'kautotze mekanismo baliogabea';
+$lang['user_id']               = 'Erabiltzailea';
+$lang['user_pass']             = 'Pasahitza';
+$lang['user_name']             = 'Benetako Izena';
+$lang['user_mail']             = 'Posta-e';
+$lang['user_groups']           = 'Taldeak';
+$lang['field']                 = 'Eremu';
+$lang['value']                 = 'Balioa';
+$lang['add']                   = 'Gehitu';
+$lang['delete']                = 'Ezabatu';
+$lang['delete_selected']       = 'Ezabatu Hautatutakoak';
+$lang['edit']                  = 'Editatu';
+$lang['edit_prompt']           = 'Editatu erabiltzaile hau';
+$lang['modify']                = 'Gorde Aldaketak';
+$lang['search']                = 'Bilatu';
+$lang['search_prompt']         = 'Egin bilaketa';
+$lang['clear']                 = 'Berrasieratu Bilaketa Iragazkia';
+$lang['filter']                = 'Iragazi';
+$lang['summary']               = 'Erakusten diren erabiltzaileak %1$d-%2$d bilatutako %3$d erabiltzailetatik. %4$d erabiltzaile guztira.';
+$lang['nonefound']             = 'Ez da erabiltzailerik aurkitu. %d erabiltzaile guztira.';
+$lang['delete_ok']             = '%d erabiltzaile ezabatuak';
+$lang['delete_fail']           = '%d huts ezabatzean.';
+$lang['update_ok']             = 'Erabiltzailea arrakastaz eguneratuak';
+$lang['update_fail']           = 'Erabiltzaile eguneratzeak huts egin du ';
+$lang['update_exists']         = 'Erabiltzaile izen aldaketak huts egin du, zehaztutako erabiltzaile izena (%s) lehendik existitzen zen (beste edozein aldaketa ezarri egingo da).';
+$lang['start']                 = 'hasi';
+$lang['prev']                  = 'aurrekoa';
+$lang['next']                  = 'hurrengoa';
+$lang['last']                  = 'azkena';
+$lang['edit_usermissing']      = 'Aukeratutako erabiltzailea ez da aurkitu, zehaztutako erabiltzaile izena beste nonbait ezabatua edo aldatua izana gerta zitekeen.';
+$lang['user_notify']           = 'Erabiltzailea jakinarazi';
+$lang['note_notify']           = 'Jakinarazpen postak erabiltzaileari pasahitz berria ematen bazaio bakarrik bidaltzen dira.';
+$lang['note_group']            = 'Erabiltzaile berriak (%s) talde lehenetsira gehituko dira ez bada talderik zehazten.';
+$lang['note_pass']             = 'Pasahitza automatikoki sortuko da eremua hutsik uzten bada eta erabiltzailearen jakinarazpena gaitua badago.';
+$lang['add_ok']                = 'Erabiltzailea arrakastaz gehitua';
+$lang['add_fail']              = 'Erabiltzaile gehitzeak huts egin du';
+$lang['notify_ok']             = 'Jakinarazpen posta-e bidalia';
+$lang['notify_fail']           = 'Jakinarazpen posta-e ezin izan da bidali';
diff --git a/wiki/lib/plugins/usermanager/lang/eu/list.txt b/wiki/lib/plugins/usermanager/lang/eu/list.txt
new file mode 100644
index 0000000..fb80b14
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/eu/list.txt
@@ -0,0 +1 @@
+====== Erabiltzaile zerrenda ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fa/add.txt b/wiki/lib/plugins/usermanager/lang/fa/add.txt
new file mode 100644
index 0000000..32d604e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/add.txt
@@ -0,0 +1 @@
+===== افزودن کاربر =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fa/delete.txt b/wiki/lib/plugins/usermanager/lang/fa/delete.txt
new file mode 100644
index 0000000..f8a59ff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/delete.txt
@@ -0,0 +1 @@
+===== حذف کاربر =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fa/edit.txt b/wiki/lib/plugins/usermanager/lang/fa/edit.txt
new file mode 100644
index 0000000..33fe5b5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/edit.txt
@@ -0,0 +1 @@
+===== ویرایش کاربر =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fa/import.txt b/wiki/lib/plugins/usermanager/lang/fa/import.txt
new file mode 100644
index 0000000..562a28a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/import.txt
@@ -0,0 +1,6 @@
+ =====  اضافه کردن کاربر =====
+
+برای اینکار یک فایل CSV با حداقل چهار ستون لازم است. ستون‌ها به ترتیب باید شامل id کاربر، نام کامل کاربر، آدرس ایمیل و گروه‌های کاربری او باشند.
+خانه‌های جدول CSV باید به وسیلهٔ کاما (,) و رشته‌ها با علامت نقل قول (%%""%%) از هم جدا شوند. علامت واکج‌خط (\) می‌تواند برای غیرفعال کردن معنای کاراکترها استفاده شود. برای دیدن یک نمونه از فایل مناسب، از گزینهٔ "خروجی کاربران" در بالا استفاده کنید. id های تکراری در جدول در نظر گرفته نمی‌شوند.
+
+به ازای هر کاربری که با موفقیت اضافه شود یک رمز تولید و ایمیل می‌شود.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fa/intro.txt b/wiki/lib/plugins/usermanager/lang/fa/intro.txt
new file mode 100644
index 0000000..ffb8501
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/intro.txt
@@ -0,0 +1 @@
+===== مدیریت کاربران =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fa/lang.php b/wiki/lib/plugins/usermanager/lang/fa/lang.php
new file mode 100644
index 0000000..02734fe
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/lang.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author behrad eslamifar <behrad_es@yahoo.com)
+ * @author Mohsen Firoozmandan <info@mambolearn.com>
+ * @author omidmr@gmail.com
+ * @author Omid Mottaghi <omidmr@gmail.com>
+ * @author Mohammad Reza Shoaei <shoaei@gmail.com>
+ * @author Milad DZand <M.DastanZand@gmail.com>
+ * @author AmirH Hassaneini <mytechmix@gmail.com>
+ * @author Hamid <zarrabi@sharif.edu>
+ * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['menu']                  = 'مدیریت کاربر';
+$lang['noauth']                = '(معتبرسازی کاربر ممکن نیست)';
+$lang['nosupport']             = '(مدیریت کاربر پشتیبانی نمی‌شود)';
+$lang['badauth']               = 'روش معتبرسازی اشتباه است';
+$lang['user_id']               = 'کاربر';
+$lang['user_pass']             = 'گذرواژه';
+$lang['user_name']             = 'نام حقیقی';
+$lang['user_mail']             = 'ایمیل';
+$lang['user_groups']           = 'گروه‌ها';
+$lang['field']                 = 'فیلد';
+$lang['value']                 = 'ارزش';
+$lang['add']                   = 'اضافه کردن';
+$lang['delete']                = 'حذف';
+$lang['delete_selected']       = 'حذف انتخاب شده‌ها';
+$lang['edit']                  = 'ویرایش';
+$lang['edit_prompt']           = 'ویرایش این کاربر';
+$lang['modify']                = 'ذخیره تغییرات';
+$lang['search']                = 'جستجو';
+$lang['search_prompt']         = 'انجام جستجو';
+$lang['clear']                 = 'بازنویسی فیلترهای جستجو';
+$lang['filter']                = 'فیلتر';
+$lang['export_all']            = 'خروجی گرفتن از تمام کاربران (CSV):';
+$lang['export_filtered']       = 'خروجی لیست فیلتر شده کاربران (CSV):';
+$lang['import']                = 'ورود کاربران جدید';
+$lang['line']                  = 'شماره خط.';
+$lang['error']                 = 'متن خطا';
+$lang['summary']               = 'نمایش کاربر %1$d-%2$d از %3$d. در کل %4$d کاربر.';
+$lang['nonefound']             = 'هیچ کاربری یافت نشد. در کل %d کاربر.';
+$lang['delete_ok']             = '%d کاربر حذف شد';
+$lang['delete_fail']           = 'حذف %d کاربر با مشکل مواجه شد.';
+$lang['update_ok']             = 'کاربر با موفقیت به‌روز شد.';
+$lang['update_fail']           = 'به‌روزرسانی کاربر با مشکل مواجه شد';
+$lang['update_exists']         = 'تغییر نام کاربری ممکن نیست، نام کاربری مورد نظر (%s) از قبل وجود داشته است (مابقی تغییرات اعمال خواهد شد).';
+$lang['start']                 = 'شروع';
+$lang['prev']                  = 'قبلی';
+$lang['next']                  = 'بعدی';
+$lang['last']                  = 'آخرین';
+$lang['edit_usermissing']      = 'کاربر انتخاب شده یافت نشد، نام کاربری موردنظر در جایی دیگر حذف شده یا تغییر کرده است.';
+$lang['user_notify']           = 'آگاه کردن کاربر';
+$lang['note_notify']           = 'ایمیلی برای آگاهی، فقط در زمان تغییر گذرواژه‌ ارسال می‌شود.';
+$lang['note_group']            = 'اگر گروهی انتخاب نشود، کاربران جدید به گروه پیش‌فرض (%s) افزوده خواهند شد.';
+$lang['note_pass']             = 'اگر فیلد گذرواژه خالی گذاشته شود، گذرواژه به طور خودکار تولید و ایمیلی برای کاربر ارسال خواهد شد.';
+$lang['add_ok']                = 'کاربر با موفقیت افزوده شد';
+$lang['add_fail']              = 'افزودن کاربر با مشکل مواجه شد';
+$lang['notify_ok']             = 'ایمیل آگاهی‌دهنده ارسال شد';
+$lang['notify_fail']           = 'ارسال ایمیل آگاهی‌دهنده با مشکل مواجه شد';
+$lang['import_userlistcsv']    = 'فایل لیست کاربران (CSV):';
+$lang['import_header']         = 'آخرین ایمپورت - خطا';
+$lang['import_success_count']  = 'ایمپورت کاربران: %d کاربر پیدا شد، %d با موفقیت وارد شد.';
+$lang['import_failure_count']  = 'ایمپورت کاربران: %d ناموفق. موارد ناموفق در پایین فهرست شده.';
+$lang['import_error_fields']   = 'فیلدهای ناکافی. %d تا پیدا شد ولی ۴ تا لازم است.';
+$lang['import_error_baduserid'] = 'id کاربر وارد نشده';
+$lang['import_error_badname']  = 'نام نامناسب';
+$lang['import_error_badmail']  = 'ایمیل نامناسب';
+$lang['import_error_upload']   = 'ایمپورت ناموفق. امکان ایمپورت فایل csv وجود ندارد یا خالی است.';
+$lang['import_error_readfail'] = 'ایمپورت ناموفق. امکان خواندن فایل آپلود شده وجود ندارد.';
+$lang['import_error_create']   = 'امکان ساخت کاربر وجود ندارد.';
+$lang['import_notify_fail']    = 'امکان ارسال پیغام آگاهی‌رسان برای کاربر ایمپورت شده وجود ندارد، %s با ایمیل %s.';
+$lang['import_downloadfailures'] = 'دانلود خطاها به صورت CSV برای اصلاح';
+$lang['addUser_error_missing_pass'] = 'لطفا یک پسورد وارد کنید یا آگاهی‌رسان کاربر را فعال کنید تا امکان تولید پسورد ایجاد شود';
+$lang['addUser_error_pass_not_identical'] = 'پسورد وارد شده معتبر نیست.';
+$lang['addUser_error_modPass_disabled'] = 'پسوردهای تغییریافتنی غیرفعال است.';
+$lang['addUser_error_name_missing'] = 'لطفا یک نام برای کاربر جدید وارد کنید.';
+$lang['addUser_error_modName_disabled'] = 'نام‌های تغییریافتنی غیر فعال است.';
+$lang['addUser_error_mail_missing'] = 'لطفا یک نشانی ایمیل برای کاربر جدید وارد نمایید.';
+$lang['addUser_error_modMail_disabled'] = 'ایمیل‌های تغییریافتنی غیر فعال است.';
+$lang['addUser_error_create_event_failed'] = 'افزونه از اضافه شدن کاربر جدید جلوگیری کرد. برای اطلاعات بیشتر پیغام‌های احتمالی دیگر را مطالعه کنید.';
diff --git a/wiki/lib/plugins/usermanager/lang/fa/list.txt b/wiki/lib/plugins/usermanager/lang/fa/list.txt
new file mode 100644
index 0000000..b539bf1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fa/list.txt
@@ -0,0 +1 @@
+===== لیست کاربران =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fi/add.txt b/wiki/lib/plugins/usermanager/lang/fi/add.txt
new file mode 100644
index 0000000..5c4ee0a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fi/add.txt
@@ -0,0 +1 @@
+===== Lisää käyttäjä =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fi/delete.txt b/wiki/lib/plugins/usermanager/lang/fi/delete.txt
new file mode 100644
index 0000000..2203a20
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fi/delete.txt
@@ -0,0 +1 @@
+===== Poista käyttäjä =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fi/edit.txt b/wiki/lib/plugins/usermanager/lang/fi/edit.txt
new file mode 100644
index 0000000..53e0b41
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fi/edit.txt
@@ -0,0 +1 @@
+===== Muokkaa käyttäjää =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fi/intro.txt b/wiki/lib/plugins/usermanager/lang/fi/intro.txt
new file mode 100644
index 0000000..2ef0bb5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fi/intro.txt
@@ -0,0 +1 @@
+====== Käyttäjähallinta ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fi/lang.php b/wiki/lib/plugins/usermanager/lang/fi/lang.php
new file mode 100644
index 0000000..dba67fb
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fi/lang.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author otto@valjakko.net
+ * @author Otto Vainio <otto@valjakko.net>
+ * @author Teemu Mattila <ghcsystems@gmail.com>
+ * @author Sami Olmari <sami@olmari.fi>
+ * @author Jussi Takala <jussi.takala@live.fi>
+ */
+$lang['menu']                  = 'Käyttäjähallinta';
+$lang['noauth']                = '(autentikointi ei ole käytössä)';
+$lang['nosupport']             = '(käyttäjähallinta ei ole tuettu)';
+$lang['badauth']               = 'Viallinen autentikointimenetelmä';
+$lang['user_id']               = 'Käyttäjä';
+$lang['user_pass']             = 'Salasana';
+$lang['user_name']             = 'Oikea nimi';
+$lang['user_mail']             = 'Sähköposti';
+$lang['user_groups']           = 'Ryhmät';
+$lang['field']                 = 'Kenttä';
+$lang['value']                 = 'Arvo';
+$lang['add']                   = 'Lisää';
+$lang['delete']                = 'Poista';
+$lang['delete_selected']       = 'Poista valittu';
+$lang['edit']                  = 'Muokkaa';
+$lang['edit_prompt']           = 'Muokkaa ryhmää';
+$lang['modify']                = 'Tallenna muutokset';
+$lang['search']                = 'Hae';
+$lang['search_prompt']         = 'Tee haku';
+$lang['clear']                 = 'Tyhjennä hakusuodatin';
+$lang['filter']                = 'Suodatin';
+$lang['import']                = 'Tuo uusia käyttäjiä';
+$lang['line']                  = 'Rivi nro.';
+$lang['error']                 = 'Vikailmoitus';
+$lang['summary']               = 'Näytetään käyttäjät %1$d-%2$d / %3$d löytynyttä. %4$d käyttäjää yhteensä.';
+$lang['nonefound']             = 'Ei löytynyt käyttäjiä. %d käyttäjää yhteensä.';
+$lang['delete_ok']             = '%d käyttäjää poistettu';
+$lang['delete_fail']           = '%d poistoa epäonnistui';
+$lang['update_ok']             = 'Käyttäjän päivitys onnistui';
+$lang['update_fail']           = 'Käyttäjän päivitys epäonnistui';
+$lang['update_exists']         = 'Käyttäjän nimen vaihto epäonnistui. Nimi (%s) on jo olemassa (muut muutokset onnistuivat)';
+$lang['start']                 = 'alku';
+$lang['prev']                  = 'edellinen';
+$lang['next']                  = 'seuraava';
+$lang['last']                  = 'viimeinen';
+$lang['edit_usermissing']      = 'Valittua käyttäjää ei löytynyt. Käyttäjä on voitu päivittää tai poistaa muualta.';
+$lang['user_notify']           = 'Tiedota käyttäjälle';
+$lang['note_notify']           = 'Tiedotus lähetetään vain, jos käyttäjälle on määritelty uusi salasana.';
+$lang['note_group']            = 'Uudelle käyttäjälle määritellään oletusryhmä (%s), jos ryhmää ei erikseen määritellä.';
+$lang['note_pass']             = 'Salasana luodaan automaattisesti, mikäli kenttä jätetään tyhjäksi ja jos käyttäjän tiedotus on päällä.';
+$lang['add_ok']                = 'Käyttäjä lisätty onnistuneesti';
+$lang['add_fail']              = 'Käyttäjän lisäys epäonnistui';
+$lang['notify_ok']             = 'Ilmoitus sähköpostilla lähetetty';
+$lang['notify_fail']           = 'Ilmoitusta sähköpostilla ei voitu lähettää';
+$lang['import_error_baduserid'] = 'Käyttäjätunnus puuttuu';
+$lang['import_error_badname']  = 'Epäkelpo nimi';
+$lang['import_error_badmail']  = 'Epäkelpo sähköpostiosoite';
+$lang['import_error_upload']   = 'Tuonti epäonnistui. CSV-tiedostoa ei voitu ladata tai se on tyhjä.';
+$lang['import_error_readfail'] = 'Tuonti epäonnistui. Ladattua tiedostoa ei voida lukea.';
+$lang['import_error_create']   = 'Käyttäjää ei voida luoda.';
diff --git a/wiki/lib/plugins/usermanager/lang/fi/list.txt b/wiki/lib/plugins/usermanager/lang/fi/list.txt
new file mode 100644
index 0000000..5ecf2ff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fi/list.txt
@@ -0,0 +1 @@
+===== Käyttäjälista =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fr/add.txt b/wiki/lib/plugins/usermanager/lang/fr/add.txt
new file mode 100644
index 0000000..e60b8b8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/add.txt
@@ -0,0 +1 @@
+===== Ajouter un utilisateur =====
diff --git a/wiki/lib/plugins/usermanager/lang/fr/delete.txt b/wiki/lib/plugins/usermanager/lang/fr/delete.txt
new file mode 100644
index 0000000..778f441
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/delete.txt
@@ -0,0 +1 @@
+===== Supprimer un utilisateur =====
diff --git a/wiki/lib/plugins/usermanager/lang/fr/edit.txt b/wiki/lib/plugins/usermanager/lang/fr/edit.txt
new file mode 100644
index 0000000..e667989
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/edit.txt
@@ -0,0 +1 @@
+===== Modifier l'utilisateur =====
diff --git a/wiki/lib/plugins/usermanager/lang/fr/import.txt b/wiki/lib/plugins/usermanager/lang/fr/import.txt
new file mode 100644
index 0000000..a1eb8f8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/import.txt
@@ -0,0 +1,11 @@
+===== Importation d'utilisateurs par lot =====
+
+Requière un fichier [[wpfr>CSV]] d'utilisateurs avec un minimum de quatre colonnes.
+Les colonnes doivent comporter, dans l'ordre : identifiant, nom complet, adresse de courriel et groupes.
+
+Les champs doivent être séparés par une virgule (,), les chaînes sont délimitées par des guillemets (%%""%%). On peut utiliser la balance inverse (\) comme caractère d'échappement.
+Pour obtenir un exemple de fichier acceptable, essayer la fonction "Exporter les utilisateurs" ci dessus.
+
+Les identifiants dupliqués seront ignorés.
+
+L'importation générera un mot de passe et l'enverra à chaque utilisateur correctement importé.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/fr/intro.txt b/wiki/lib/plugins/usermanager/lang/fr/intro.txt
new file mode 100644
index 0000000..84987b0
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/intro.txt
@@ -0,0 +1 @@
+====== Gestion des utilisateurs ======
diff --git a/wiki/lib/plugins/usermanager/lang/fr/lang.php b/wiki/lib/plugins/usermanager/lang/fr/lang.php
new file mode 100644
index 0000000..51ddce1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/lang.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Guy Brand <gb@unistra.fr>
+ * @author Delassaux Julien <julien@delassaux.fr>
+ * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
+ * @author stephane.gully <stephane.gully@gmail.com>
+ * @author Guillaume Turri <guillaume.turri@gmail.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author olivier duperray <duperray.olivier@laposte.net>
+ * @author Vincent Feltz <psycho@feltzv.fr>
+ * @author Philippe Bajoit <philippe.bajoit@gmail.com>
+ * @author Florian Gaub <floriang@floriang.net>
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
+ * @author Yannick Aure <yannick.aure@gmail.com>
+ * @author Olivier DUVAL <zorky00@gmail.com>
+ * @author Anael Mobilia <contrib@anael.eu>
+ * @author Bruno Veilleux <bruno.vey@gmail.com>
+ * @author Antoine Turmel <geekshadow@gmail.com>
+ * @author Jérôme Brandt <jeromebrandt@gmail.com>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ * @author Olivier Humbert <trebmuh@tuxfamily.org>
+ * @author Eric <ericstevenart@netc.fr>
+ */
+$lang['menu']                  = 'Gestion des utilisateurs';
+$lang['noauth']                = '(authentification de l\'utilisateur non disponible)';
+$lang['nosupport']             = '(gestion de l\'utilisateur non pris en charge)';
+$lang['badauth']               = 'mécanisme d\'authentification invalide';
+$lang['user_id']               = 'Identifiant ';
+$lang['user_pass']             = 'Mot de passe ';
+$lang['user_name']             = 'Nom ';
+$lang['user_mail']             = 'Courriel ';
+$lang['user_groups']           = 'Groupes ';
+$lang['field']                 = 'Champ';
+$lang['value']                 = 'Valeur';
+$lang['add']                   = 'Ajouter';
+$lang['delete']                = 'Supprimer';
+$lang['delete_selected']       = 'Supprimer la sélection';
+$lang['edit']                  = 'Modifier';
+$lang['edit_prompt']           = 'Modifier cet utilisateur';
+$lang['modify']                = 'Enregistrer les modifications';
+$lang['search']                = 'Rechercher';
+$lang['search_prompt']         = 'Effectuer la recherche';
+$lang['clear']                 = 'Réinitialiser la recherche';
+$lang['filter']                = 'Filtre';
+$lang['export_all']            = 'Exporter tous les utilisateurs (CSV)';
+$lang['export_filtered']       = 'Exporter la liste d\'utilisateurs filtrés (CSV)';
+$lang['import']                = 'Importer de nouveaux utilisateurs';
+$lang['line']                  = 'Ligne n°';
+$lang['error']                 = 'Message d\'erreur';
+$lang['summary']               = 'Affichage des utilisateurs %1$d-%2$d parmi %3$d trouvés. %4$d utilisateurs au total.';
+$lang['nonefound']             = 'Aucun utilisateur trouvé. %d utilisateurs au total.';
+$lang['delete_ok']             = '%d utilisateurs effacés';
+$lang['delete_fail']           = '%d effacements échoués.';
+$lang['update_ok']             = 'Utilisateur mis à jour avec succès';
+$lang['update_fail']           = 'Échec lors de la mise à jour de l\'utilisateur';
+$lang['update_exists']         = 'Échec lors du changement du nom d\'utilisateur : le nom spécifié (%s) existe déjà (toutes les autres modifications seront effectuées).';
+$lang['start']                 = 'Début';
+$lang['prev']                  = 'Précédent';
+$lang['next']                  = 'Suivant';
+$lang['last']                  = 'Fin';
+$lang['edit_usermissing']      = 'Utilisateur sélectionné non trouvé, cet utilisateur a peut-être été supprimé ou modifié ailleurs.';
+$lang['user_notify']           = 'Notifier l\'utilisateur ';
+$lang['note_notify']           = 'Expédition de notification par courriel uniquement lorsque l\'utilisateur fourni un nouveau mot de passe.';
+$lang['note_group']            = 'Les nouveaux utilisateurs seront ajoutés au groupe par défaut (%s) si aucun groupe n\'est spécifié.';
+$lang['note_pass']             = 'Le mot de passe sera généré automatiquement si le champ est laissé vide et si la notification de l\'utilisateur est activée.';
+$lang['add_ok']                = 'Utilisateur ajouté avec succès';
+$lang['add_fail']              = 'Échec de l\'ajout de l\'utilisateur';
+$lang['notify_ok']             = 'Courriel de notification expédié';
+$lang['notify_fail']           = 'Échec de l\'expédition du courriel de notification';
+$lang['import_userlistcsv']    = 'Liste utilisateur (fichier CSV)';
+$lang['import_header']         = 'Erreurs d\'import les plus récentes';
+$lang['import_success_count']  = 'Import d’utilisateurs : %d utilisateurs trouvés, %d utilisateurs importés avec succès.';
+$lang['import_failure_count']  = 'Import d\'utilisateurs : %d ont échoué. Les erreurs sont listées ci-dessous.';
+$lang['import_error_fields']   = 'Nombre de champs insuffisant, %d trouvé, 4 requis.';
+$lang['import_error_baduserid'] = 'Identifiant de l\'utilisateur manquant';
+$lang['import_error_badname']  = 'Mauvais nom';
+$lang['import_error_badmail']  = 'Mauvaise adresse e-mail';
+$lang['import_error_upload']   = 'L\'import a échoué. Le fichier csv n\'a pas pu être téléchargé ou bien il est vide.';
+$lang['import_error_readfail'] = 'L\'import a échoué. Impossible de lire le fichier téléchargé.';
+$lang['import_error_create']   = 'Impossible de créer l\'utilisateur';
+$lang['import_notify_fail']    = 'Impossible d\'expédier une notification à l\'utilisateur importé %s, adresse %s.';
+$lang['import_downloadfailures'] = 'Télécharger les erreurs au format CSV pour correction';
+$lang['addUser_error_missing_pass'] = 'Veuillez saisir un mot de passe ou activer la notification à l\'utilisateur pour permettre la génération d\'un mot de passe.';
+$lang['addUser_error_pass_not_identical'] = 'Les mots de passe saisis diffèrent.';
+$lang['addUser_error_modPass_disabled'] = 'La modification des mots de passe est actuellement désactivée.';
+$lang['addUser_error_name_missing'] = 'Veuillez saisir un nom pour le nouvel utilisateur.';
+$lang['addUser_error_modName_disabled'] = 'La modification des noms est actuellement désactivée.';
+$lang['addUser_error_mail_missing'] = 'Veuillez saisir une adresse de courriel pour le nouvel utilisateur.';
+$lang['addUser_error_modMail_disabled'] = 'La modification des adresses de courriel est actuellement désactivée.';
+$lang['addUser_error_create_event_failed'] = 'Un greffon a empêché l\'ajout du nouvel utilisateur. Examinez les autres messages potentiels pour obtenir de plus amples informations.';
diff --git a/wiki/lib/plugins/usermanager/lang/fr/list.txt b/wiki/lib/plugins/usermanager/lang/fr/list.txt
new file mode 100644
index 0000000..2d708fe
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/fr/list.txt
@@ -0,0 +1 @@
+===== Liste des utilisateurs =====
diff --git a/wiki/lib/plugins/usermanager/lang/gl/add.txt b/wiki/lib/plugins/usermanager/lang/gl/add.txt
new file mode 100644
index 0000000..7602c36
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/gl/add.txt
@@ -0,0 +1 @@
+===== Engadir usuario =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/gl/delete.txt b/wiki/lib/plugins/usermanager/lang/gl/delete.txt
new file mode 100644
index 0000000..4262a0c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/gl/delete.txt
@@ -0,0 +1 @@
+===== Eliminar usuario =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/gl/edit.txt b/wiki/lib/plugins/usermanager/lang/gl/edit.txt
new file mode 100644
index 0000000..11ef62c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/gl/edit.txt
@@ -0,0 +1 @@
+===== Editar usuario =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/gl/intro.txt b/wiki/lib/plugins/usermanager/lang/gl/intro.txt
new file mode 100644
index 0000000..77675e9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/gl/intro.txt
@@ -0,0 +1 @@
+====== Xestor de Usuarios ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/gl/lang.php b/wiki/lib/plugins/usermanager/lang/gl/lang.php
new file mode 100644
index 0000000..f3a7ef2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/gl/lang.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Galicianlanguage file
+ *
+ * @author Medúlio <medulio@ciberirmandade.org>
+ * @author Oscar M. Lage <r0sk10@gmail.com>
+ * @author Rodrigo Rega <rodrigorega@gmail.com>
+ */
+$lang['menu']                  = 'Xestor de Usuarios';
+$lang['noauth']                = '(autenticación de usuarios non dispoñible)';
+$lang['nosupport']             = '(xestión de usuarios non soportada)';
+$lang['badauth']               = 'mecanismo de autenticación non válido';
+$lang['user_id']               = 'Usuario';
+$lang['user_pass']             = 'Contrasinal';
+$lang['user_name']             = 'Nome Real';
+$lang['user_mail']             = 'Correo-e';
+$lang['user_groups']           = 'Grupos';
+$lang['field']                 = 'Campo';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Engadir';
+$lang['delete']                = 'Eliminar';
+$lang['delete_selected']       = 'Eliminar Seleccionados';
+$lang['edit']                  = 'Editar';
+$lang['edit_prompt']           = 'Editar este usuario';
+$lang['modify']                = 'Gardar Trocos';
+$lang['search']                = 'Procurar';
+$lang['search_prompt']         = 'Facer procura';
+$lang['clear']                 = 'Reiniciar Filtro de Procura';
+$lang['filter']                = 'Filtro';
+$lang['summary']               = 'Amosando usuarios %1$d-%2$d de %3$d atopados. %4$d usuarios en total.';
+$lang['nonefound']             = 'Non se atoparon usuarios. %d usuarios en total.';
+$lang['delete_ok']             = '%d usuarios eliminados';
+$lang['delete_fail']           = '%d non puideron ser eliminados.';
+$lang['update_ok']             = 'Usuario actualizado correctamente';
+$lang['update_fail']           = 'Non se puido actualizar o usuario';
+$lang['update_exists']         = 'Non se puido mudar o nome do usuario, xa que o nome especificado (%s) xa existe (o resto de trocos aplicaranse sen problemas).';
+$lang['start']                 = 'comezo';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'seguinte';
+$lang['last']                  = 'derradeiro';
+$lang['edit_usermissing']      = 'Non se atopou o usuario seleccionado, pode que o nome de usuario fose eliminado ou mudado nalgún intre.';
+$lang['user_notify']           = 'Notificar ao usuario';
+$lang['note_notify']           = 'Os correos-e de notificación envíanse só se o usuario obtén un novo contrasinal.';
+$lang['note_group']            = 'Os novos usuarios serán engadidos ao grupo por defecto (%s) se non se especifica outro.';
+$lang['note_pass']             = 'Se deixas o campo baleiro e a notificación ao usuario está activada xerarase automaticamente o contrasinal.';
+$lang['add_ok']                = 'Usuario engadido correctamente';
+$lang['add_fail']              = 'Non se puido engadir o usuario';
+$lang['notify_ok']             = 'Correo-e de notificación enviado';
+$lang['notify_fail']           = 'Non se puido enviar o correo-e de notificación';
diff --git a/wiki/lib/plugins/usermanager/lang/gl/list.txt b/wiki/lib/plugins/usermanager/lang/gl/list.txt
new file mode 100644
index 0000000..013b2d7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/gl/list.txt
@@ -0,0 +1 @@
+===== Lista de Usuarios =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/he/add.txt b/wiki/lib/plugins/usermanager/lang/he/add.txt
new file mode 100644
index 0000000..e2d1cb7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/he/add.txt
@@ -0,0 +1 @@
+===== הוספת משתמש =====
diff --git a/wiki/lib/plugins/usermanager/lang/he/delete.txt b/wiki/lib/plugins/usermanager/lang/he/delete.txt
new file mode 100644
index 0000000..42d738b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/he/delete.txt
@@ -0,0 +1 @@
+===== מחיקת משתמש =====
diff --git a/wiki/lib/plugins/usermanager/lang/he/edit.txt b/wiki/lib/plugins/usermanager/lang/he/edit.txt
new file mode 100644
index 0000000..af90af3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/he/edit.txt
@@ -0,0 +1 @@
+===== עריכת משתמש =====
diff --git a/wiki/lib/plugins/usermanager/lang/he/intro.txt b/wiki/lib/plugins/usermanager/lang/he/intro.txt
new file mode 100644
index 0000000..232c515
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/he/intro.txt
@@ -0,0 +1 @@
+====== מנהל משתמשים ======
diff --git a/wiki/lib/plugins/usermanager/lang/he/lang.php b/wiki/lib/plugins/usermanager/lang/he/lang.php
new file mode 100644
index 0000000..719fd90
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/he/lang.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author DoK <kamberd@yahoo.com>
+ * @author Moshe Kaplan <mokplan@gmail.com>
+ * @author Yaron Yogev <yaronyogev@gmail.com>
+ * @author Yaron Shahrabani <sh.yaron@gmail.com>
+ */
+$lang['menu']                  = 'מנהל משתמשים';
+$lang['noauth']                = '(אימות משתמשים אינו זמין)';
+$lang['nosupport']             = '(ניהול משתמשים אינו נתמך)';
+$lang['badauth']               = 'מנגנון אימות לא תקף';
+$lang['user_id']               = 'שם משתמש';
+$lang['user_pass']             = 'סיסמה';
+$lang['user_name']             = 'שם אמיתי';
+$lang['user_mail']             = 'דוא"ל';
+$lang['user_groups']           = 'קבוצות';
+$lang['field']                 = 'שדה';
+$lang['value']                 = 'ערך';
+$lang['add']                   = 'הוספה';
+$lang['delete']                = 'מחיקה';
+$lang['delete_selected']       = 'מחיקת הבחירה';
+$lang['edit']                  = 'עריכה';
+$lang['edit_prompt']           = 'עריכת משתמש זה';
+$lang['modify']                = 'שמירת שינוים';
+$lang['search']                = 'חיפוש';
+$lang['search_prompt']         = 'בצע חיפוש';
+$lang['clear']                 = 'אתחל סינון חיפוש';
+$lang['filter']                = 'סינון';
+$lang['summary']               = 'מציג משתמשים %1$d-%2$d מתוך %3$d שנמצאו. %4$d בסך הכל.';
+$lang['nonefound']             = 'לא נמצאו משתמשים. סך כל המשתמשים %d.';
+$lang['delete_ok']             = '%d משתמשים נמחקו';
+$lang['delete_fail']           = '%d כשל במחיקה.';
+$lang['update_ok']             = 'משתמש עודכן בהצלחה';
+$lang['update_fail']           = 'עידכון המשתמש כשל';
+$lang['update_exists']         = 'שינוי שם המשתמש כשל, שם השמתמש שצויין (%s) כבר נמצא (כל השינויים האחרים יוחלו).';
+$lang['start']                 = 'התחלה';
+$lang['prev']                  = 'קודם';
+$lang['next']                  = 'הבא';
+$lang['last']                  = 'סוף';
+$lang['edit_usermissing']      = 'המשתמש שנבחר לא נמצא, ייתכן כי שם המשתמש שצויין נמחק או השתנה במקום אחר.';
+$lang['user_notify']           = 'הודע למשתמש';
+$lang['note_notify']           = 'הודעות בדוא"ל נשלחות רק במקרה שהמשתמש מקבל סיסמה חדשה.';
+$lang['note_group']            = 'משתמשים חדשים יוספו לקבוצת ברירת המחדל (%s) אם לא צוינה קבוצה אחרת.';
+$lang['add_ok']                = 'משתמש הוסף בהצלחה';
+$lang['add_fail']              = 'הוספת המשתמש כשלה';
+$lang['notify_ok']             = 'הודעה נשלחה';
+$lang['notify_fail']           = 'לא ניתן היה לשלוח הודעה';
diff --git a/wiki/lib/plugins/usermanager/lang/he/list.txt b/wiki/lib/plugins/usermanager/lang/he/list.txt
new file mode 100644
index 0000000..9308fbe
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/he/list.txt
@@ -0,0 +1 @@
+===== רשימת משתמשים =====
diff --git a/wiki/lib/plugins/usermanager/lang/hr/add.txt b/wiki/lib/plugins/usermanager/lang/hr/add.txt
new file mode 100644
index 0000000..f7c8664
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/add.txt
@@ -0,0 +1 @@
+===== Dodaj korisnika =====
diff --git a/wiki/lib/plugins/usermanager/lang/hr/delete.txt b/wiki/lib/plugins/usermanager/lang/hr/delete.txt
new file mode 100644
index 0000000..072185f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/delete.txt
@@ -0,0 +1 @@
+===== Ukloni korisnika =====
diff --git a/wiki/lib/plugins/usermanager/lang/hr/edit.txt b/wiki/lib/plugins/usermanager/lang/hr/edit.txt
new file mode 100644
index 0000000..752fd81
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/edit.txt
@@ -0,0 +1 @@
+===== Uredi korisnika =====
diff --git a/wiki/lib/plugins/usermanager/lang/hr/import.txt b/wiki/lib/plugins/usermanager/lang/hr/import.txt
new file mode 100644
index 0000000..85ea927
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/import.txt
@@ -0,0 +1,9 @@
+===== Masovni unos korisnika =====
+
+Zahtjeva CSV datoteku popisa korisnika s minimalno četiri kolone.
+Kolone moraju sadržavati redom: korisničko ime, puno ime, adresu e-pošte i grupe.
+Polja trebaju biti odvojena zarezom (,) a znakovni nizovi s dvostrukim navodnicima (%%""%%). Obrnuta kosa crta (\) koristi se za specijalne kodove (escaping).
+Koristite "Izvoz korisnika" funkciju da bi ste dobili primjer odgovarajuće datoteke. 
+Duplikati korisničkih imena biti će ignorirani.
+
+Uspješno kreiranim korisnicima lozinka će biti generirana i poslana e-poštom.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/hr/intro.txt b/wiki/lib/plugins/usermanager/lang/hr/intro.txt
new file mode 100644
index 0000000..0f15657
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/intro.txt
@@ -0,0 +1 @@
+====== Upravitelj korisnicima ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/hr/lang.php b/wiki/lib/plugins/usermanager/lang/hr/lang.php
new file mode 100644
index 0000000..39620ed
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/lang.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc@gmail.com>
+ */
+$lang['menu']                  = 'Upravitelj korisnicima';
+$lang['noauth']                = '(korisnička prijava nije dostupna)';
+$lang['nosupport']             = '(upravljanje korisnikom nije podržano)';
+$lang['badauth']               = 'pogrešan mehanizam prijave';
+$lang['user_id']               = 'Korisnik';
+$lang['user_pass']             = 'Lozinka';
+$lang['user_name']             = 'Stvarno ime';
+$lang['user_mail']             = 'E-pošta';
+$lang['user_groups']           = 'Grupe';
+$lang['field']                 = 'Polje';
+$lang['value']                 = 'Vrijednost';
+$lang['add']                   = 'Dodaj';
+$lang['delete']                = 'Obriši';
+$lang['delete_selected']       = 'Obriši odabrano';
+$lang['edit']                  = 'Uredi';
+$lang['edit_prompt']           = 'Uredi ovog korisnika';
+$lang['modify']                = 'Pohrani promjene';
+$lang['search']                = 'Potraži';
+$lang['search_prompt']         = 'Izvedi potragu';
+$lang['clear']                 = 'Obriši filtar potrage';
+$lang['filter']                = 'Filtar';
+$lang['export_all']            = 'Izvezi sve korisnike (CSV)';
+$lang['export_filtered']       = 'Izvezi filtriranu listu korisnika (CSV)';
+$lang['import']                = 'Unos novih korisnika';
+$lang['line']                  = 'Linija br.';
+$lang['error']                 = 'Poruka o grešci';
+$lang['summary']               = 'Prikaz korisnika %1$d-%2$d od %3$d nađenih. Ukupno %4$d korisnika.';
+$lang['nonefound']             = 'Nema korisnika koji odgovaraju filtru.Ukupno %d korisnika.';
+$lang['delete_ok']             = '%d korisnika obrisano';
+$lang['delete_fail']           = '%d neuspjelih brisanja.';
+$lang['update_ok']             = 'Korisnik uspješno izmijenjen';
+$lang['update_fail']           = 'Neuspjela izmjena korisnika';
+$lang['update_exists']         = 'Promjena korisničkog imena neuspješna, traženo ime (%s) već postoji (ostale izmjene biti će primijenjene).';
+$lang['start']                 = 'početni';
+$lang['prev']                  = 'prethodni';
+$lang['next']                  = 'slijedeći';
+$lang['last']                  = 'zadnji';
+$lang['edit_usermissing']      = 'Odabrani korisnik nije nađen, traženo korisničko ime vjerojatno je obrisano i promijenjeno negdje drugdje.';
+$lang['user_notify']           = 'Obavijesti korisnika';
+$lang['note_notify']           = 'Obavijest korisniku biti će poslana samo ako je upisana nova lozinka.';
+$lang['note_group']            = 'Novi korisnik biti će dodijeljen u podrazumijevanu grupu (%s) ako grupa nije specificirana.';
+$lang['note_pass']             = 'Lozinka će biti generirana ako se polje ostavi prazno i obavješćivanje korisnika je omogućeno.';
+$lang['add_ok']                = 'Korisnik uspješno dodan';
+$lang['add_fail']              = 'Neuspješno dodavanje korisnika';
+$lang['notify_ok']             = 'Poslana obavijest korisniku';
+$lang['notify_fail']           = 'Obavijest korisniku ne može biti poslana';
+$lang['import_userlistcsv']    = 'Datoteka s popisom korisnika (CSV):';
+$lang['import_header']         = 'Zadnje greške pri uvozu';
+$lang['import_success_count']  = 'Uvoz korisnika: %d korisnika nađeno, %d uspješno uvezeno';
+$lang['import_failure_count']  = 'Uvoz korisnika: %d neuspješno. Greške su navedene niže.';
+$lang['import_error_fields']   = 'Nedovoljan broj polja, nađeno %d, potrebno 4.';
+$lang['import_error_baduserid'] = 'Nedostaje korisničko ime';
+$lang['import_error_badname']  = 'Krivo ime';
+$lang['import_error_badmail']  = 'Kriva adresa e-pošte';
+$lang['import_error_upload']   = 'Uvoz neuspješan. CSV datoteka ne može biti učitana ili je prazna.';
+$lang['import_error_readfail'] = 'Uvoz neuspješan. Ne mogu pročitati učitanu datoteku.';
+$lang['import_error_create']   = 'Ne mogu kreirati korisnika';
+$lang['import_notify_fail']    = 'Obavijest uvezenom korisniku %s nije moguće poslati na adresu e-pošte %s.';
+$lang['import_downloadfailures'] = 'Preuzmi  greške kao CSV za ispravak';
+$lang['addUser_error_missing_pass'] = 'Molim ili postavite lozinku ili aktivirajte obavijest korisniku za omogućavanje generiranje lozinke.';
+$lang['addUser_error_pass_not_identical'] = 'Unesene lozinke nisu identične.';
+$lang['addUser_error_modPass_disabled'] = 'Izmjena lozinke je trenutno onemogućena.';
+$lang['addUser_error_name_missing'] = 'Molim unesite ime novog korisnika.';
+$lang['addUser_error_modName_disabled'] = 'Izmjena imena je trenutno onemogućena.';
+$lang['addUser_error_mail_missing'] = 'Molim unesite adresu epošte za novog korisnika.';
+$lang['addUser_error_modMail_disabled'] = 'Izmjena adrese epošte je trenutno onemogućena.';
+$lang['addUser_error_create_event_failed'] = 'Dodatak je spriječio dodavanje novog korisnika. Pogledajte eventualne ostale poruke za više informacija.';
diff --git a/wiki/lib/plugins/usermanager/lang/hr/list.txt b/wiki/lib/plugins/usermanager/lang/hr/list.txt
new file mode 100644
index 0000000..50b1d25
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hr/list.txt
@@ -0,0 +1 @@
+===== Lista korisnika =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/hu/add.txt b/wiki/lib/plugins/usermanager/lang/hu/add.txt
new file mode 100644
index 0000000..70a44c4
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/add.txt
@@ -0,0 +1,2 @@
+===== Felhasználó hozzáadása =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/hu/delete.txt b/wiki/lib/plugins/usermanager/lang/hu/delete.txt
new file mode 100644
index 0000000..963d2e7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/delete.txt
@@ -0,0 +1,2 @@
+===== Felhasználó törlése =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/hu/edit.txt b/wiki/lib/plugins/usermanager/lang/hu/edit.txt
new file mode 100644
index 0000000..f827460
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/edit.txt
@@ -0,0 +1,2 @@
+===== Felhasználó szerkesztése =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/hu/import.txt b/wiki/lib/plugins/usermanager/lang/hu/import.txt
new file mode 100644
index 0000000..a2db033
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/import.txt
@@ -0,0 +1,9 @@
+==== Felhasználók tömeges importálása ====
+
+Szükséges egy legalább 4 oszlopot tartalmazó, felhasználókat tartalmazó fájl.
+Az oszlopok kötelező tartalma, sorrendben: felhasználói azonosító, teljes név, e-mailcím és csoport.
+A CSV-mezőket vesszővel (,) kell elválasztani, a szövegeket idézőjelek (%%""%%) közé kell tenni. A fordított törtvonal (\) használható feloldójelnek.
+Megfelelő mintafájl megtekintéséhez próbáld ki a "Felhasználók exportálása" funkciót fentebb. 
+A duplán szereplő felhasználói azonosítók kihagyásra kerülnek.
+
+Minden sikeresen importált felhasználó számára jelszó készül, amelyet e-mailben kézhez kap.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/hu/intro.txt b/wiki/lib/plugins/usermanager/lang/hu/intro.txt
new file mode 100644
index 0000000..150aff8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/intro.txt
@@ -0,0 +1,2 @@
+====== Felhasználók kezelése ======
+
diff --git a/wiki/lib/plugins/usermanager/lang/hu/lang.php b/wiki/lib/plugins/usermanager/lang/hu/lang.php
new file mode 100644
index 0000000..963fcd1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/lang.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Sandor TIHANYI <stihanyi+dw@gmail.com>
+ * @author Siaynoq Mage <siaynoqmage@gmail.com>
+ * @author schilling.janos@gmail.com
+ * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
+ * @author Sándor TIHANYI <stihanyi+dw@gmail.com>
+ * @author David Szabo <szabo.david@gyumolcstarhely.hu>
+ * @author Marton Sebok <sebokmarton@gmail.com>
+ * @author Serenity87HUN <anikototh87@gmail.com>
+ * @author Marina Vladi <deldadam@gmail.com>
+ */
+$lang['menu']                  = 'Felhasználók kezelése';
+$lang['noauth']                = '(A felhasználói azonosítás nem működik.)';
+$lang['nosupport']             = '(A felhasználók kezelése nem támogatott.)';
+$lang['badauth']               = 'nem érvényes autentikációs technika';
+$lang['user_id']               = 'Felhasználói azonosító';
+$lang['user_pass']             = 'Jelszó';
+$lang['user_name']             = 'Név';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Csoportok';
+$lang['field']                 = 'Mező';
+$lang['value']                 = 'Érték';
+$lang['add']                   = 'Hozzáadás';
+$lang['delete']                = 'Törlés';
+$lang['delete_selected']       = 'Kiválasztottak törlése';
+$lang['edit']                  = 'Szerkesztés';
+$lang['edit_prompt']           = 'A felhasználó szerkesztése';
+$lang['modify']                = 'Változások mentése';
+$lang['search']                = 'Keresés';
+$lang['search_prompt']         = 'Keresés';
+$lang['clear']                 = 'Keresési szűrés törlése';
+$lang['filter']                = 'Szűrés';
+$lang['export_all']            = 'Összes felhasználó exportálása (CSV)';
+$lang['export_filtered']       = 'Kiválasztott felhasználók exportálása (CSV)';
+$lang['import']                = 'Új felhasználók importálása';
+$lang['line']                  = 'Sor száma';
+$lang['error']                 = 'Hibaüzenet';
+$lang['summary']               = '%1$d-%2$d. felhasználók megjelenítése a(z) %3$d megtalált felhasználóból. %4$d felhasználó van összesen.';
+$lang['nonefound']             = 'Nincs ilyen felhasználó. %d felhasználó van összesen.';
+$lang['delete_ok']             = '%d felhasználó törölve.';
+$lang['delete_fail']           = '%d felhasználót nem sikerült törölni.';
+$lang['update_ok']             = 'A felhasználó adatait sikeresen elmentettem.';
+$lang['update_fail']           = 'A felhasználó adatainak mentése nem sikerült.';
+$lang['update_exists']         = 'A felhasználói azonosító változtatása nem sikerült, a megadott azonosító (%s) már létezik. (A többi változtatás mentve.)';
+$lang['start']                 = 'első';
+$lang['prev']                  = 'előző';
+$lang['next']                  = 'következő';
+$lang['last']                  = 'utolsó';
+$lang['edit_usermissing']      = 'A kiválasztott felhasználót nem találom, a felhasználói nevét törölték vagy megváltoztatták.';
+$lang['user_notify']           = 'Felhasználó értesítése';
+$lang['note_notify']           = 'Csak akkor küld értesítő e-mailt, ha a felhasználó új jelszót kapott.';
+$lang['note_group']            = 'Ha nincs csoport meghatározva, az új felhasználó az alapértelmezett csoportba (%s) kerül.';
+$lang['note_pass']             = 'Ha a baloldali mező üres és a felhasználó értesítés aktív, akkor a jelszót a rendszer generálja.';
+$lang['add_ok']                = 'A felhasználó sikeresen hozzáadva.';
+$lang['add_fail']              = 'A felhasználó hozzáadása nem sikerült.';
+$lang['notify_ok']             = 'Értesítő levél elküldve.';
+$lang['notify_fail']           = 'Nem sikerült az értesítő levelet elküldeni.';
+$lang['import_userlistcsv']    = 'Felhasználók listájának fájlja (CSV)';
+$lang['import_header']         = 'Legutóbbi importálás - Hibák';
+$lang['import_success_count']  = 'Felhasználók importálása: %d felhasználót találtunk, ebből %d sikeresen importálva.';
+$lang['import_failure_count']  = 'Felhasználók importálása: %d sikertelen. A sikertelenség okait lejjebb találod.';
+$lang['import_error_fields']   = 'Túl kevés mezőt adtál meg, %d darabot találtunk, legalább 4-re van szükség.';
+$lang['import_error_baduserid'] = 'Felhasználói azonosító hiányzik';
+$lang['import_error_badname']  = 'Helytelen név';
+$lang['import_error_badmail']  = 'Helytelen e-mailcím';
+$lang['import_error_upload']   = 'Sikertelen importálás. A csv fájl nem feltölthető vagy üres.';
+$lang['import_error_readfail'] = 'Sikertelen importálás. A feltöltött fájl nem olvasható.';
+$lang['import_error_create']   = 'Ez a felhasználó nem hozható létre';
+$lang['import_notify_fail']    = 'Az értesítő e-mail nem küldhető el az alábbi importált felhasználónak: %s e-mailcíme: %s.';
+$lang['import_downloadfailures'] = 'Töltsd le a hibákat tartalmazó fájlt CSV formátumban, hogy ki tudd javítani a hibákat';
diff --git a/wiki/lib/plugins/usermanager/lang/hu/list.txt b/wiki/lib/plugins/usermanager/lang/hu/list.txt
new file mode 100644
index 0000000..9da7320
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/hu/list.txt
@@ -0,0 +1,2 @@
+===== Felhasználók listája =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/ia/add.txt b/wiki/lib/plugins/usermanager/lang/ia/add.txt
new file mode 100644
index 0000000..4695834
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ia/add.txt
@@ -0,0 +1 @@
+===== Adder usator =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ia/delete.txt b/wiki/lib/plugins/usermanager/lang/ia/delete.txt
new file mode 100644
index 0000000..db1b4c0
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ia/delete.txt
@@ -0,0 +1 @@
+===== Deler usator =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ia/edit.txt b/wiki/lib/plugins/usermanager/lang/ia/edit.txt
new file mode 100644
index 0000000..2fcf023
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ia/edit.txt
@@ -0,0 +1 @@
+===== Modificar usator =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ia/intro.txt b/wiki/lib/plugins/usermanager/lang/ia/intro.txt
new file mode 100644
index 0000000..f4fafcb
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ia/intro.txt
@@ -0,0 +1 @@
+====== Gestion de usatores ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ia/lang.php b/wiki/lib/plugins/usermanager/lang/ia/lang.php
new file mode 100644
index 0000000..a8b8f45
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ia/lang.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Interlingua language file
+ *
+ * @author robocap <robocap1@gmail.com>
+ * @author Martijn Dekker <martijn@inlv.org>
+ */
+$lang['menu']                  = 'Gestion de usatores';
+$lang['noauth']                = '(authentication de usatores non disponibile)';
+$lang['nosupport']             = '(gestion de usatores non supportate)';
+$lang['badauth']               = 'mechanismo de authentication invalide';
+$lang['user_id']               = 'Usator';
+$lang['user_pass']             = 'Contrasigno';
+$lang['user_name']             = 'Nomine real';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Gruppos';
+$lang['field']                 = 'Campo';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Adder';
+$lang['delete']                = 'Deler';
+$lang['delete_selected']       = 'Deler seligite';
+$lang['edit']                  = 'Modificar';
+$lang['edit_prompt']           = 'Modificar iste usator';
+$lang['modify']                = 'Salveguardar cambios';
+$lang['search']                = 'Cercar';
+$lang['search_prompt']         = 'Executar recerca';
+$lang['clear']                 = 'Reinitialisar filtro de recerca';
+$lang['filter']                = 'Filtro';
+$lang['summary']               = 'Presentation del usatores %1$d-%2$d de %3$d trovate. %4$d usatores in total.';
+$lang['nonefound']             = 'Nulle usator trovate. %d usatores in total.';
+$lang['delete_ok']             = '%d usatores delite';
+$lang['delete_fail']           = 'Deletion de %d usatores fallite.';
+$lang['update_ok']             = 'Actualisation del usator succedite';
+$lang['update_fail']           = 'Actualisation del usator fallite';
+$lang['update_exists']         = 'Le modification del nomine del usator ha fallite; le usator specificate (%s) ja existe. (Omne altere modificationes essera applicate.)
+';
+$lang['start']                 = 'initio';
+$lang['prev']                  = 'precedente';
+$lang['next']                  = 'sequente';
+$lang['last']                  = 'fin';
+$lang['edit_usermissing']      = 'Le usator seligite non ha essite trovate. Es possibile que le nomine de usator specificate ha essite delite o cambiate alterubi.';
+$lang['user_notify']           = 'Notificar usator';
+$lang['note_notify']           = 'Le messages de notification es solmente inviate un nove contrasigno es date al usator.';
+$lang['note_group']            = 'Nove usatores essera addite al gruppo predefinite (%s) si nulle gruppo es specificate.';
+$lang['note_pass']             = 'Le contrasigno essera automaticamente generate si le campo es lassate vacue e le notification del usator es activate.';
+$lang['add_ok']                = 'Addition del usator succedite';
+$lang['add_fail']              = 'Addition del usator fallite';
+$lang['notify_ok']             = 'Message de notification inviate';
+$lang['notify_fail']           = 'Le message de notification non poteva esser inviate';
diff --git a/wiki/lib/plugins/usermanager/lang/ia/list.txt b/wiki/lib/plugins/usermanager/lang/ia/list.txt
new file mode 100644
index 0000000..f545f06
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ia/list.txt
@@ -0,0 +1 @@
+===== Lista de usatores =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/id/add.txt b/wiki/lib/plugins/usermanager/lang/id/add.txt
new file mode 100644
index 0000000..eae407c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/id/add.txt
@@ -0,0 +1 @@
+===== Tambah User =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/id/delete.txt b/wiki/lib/plugins/usermanager/lang/id/delete.txt
new file mode 100644
index 0000000..99e53c9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/id/delete.txt
@@ -0,0 +1 @@
+===== Hapus User =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/id/edit.txt b/wiki/lib/plugins/usermanager/lang/id/edit.txt
new file mode 100644
index 0000000..6d14f4f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/id/edit.txt
@@ -0,0 +1 @@
+===== Edit User =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/id/intro.txt b/wiki/lib/plugins/usermanager/lang/id/intro.txt
new file mode 100644
index 0000000..de053f2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/id/intro.txt
@@ -0,0 +1 @@
+===== Manajemen User =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/id/lang.php b/wiki/lib/plugins/usermanager/lang/id/lang.php
new file mode 100644
index 0000000..425b2ff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/id/lang.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Irwan Butar Butar <irwansah.putra@gmail.com>
+ * @author Yustinus Waruwu <juswaruwu@gmail.com>
+ */
+$lang['menu']                  = 'Manajemen User';
+$lang['noauth']                = '(autentikasi tidak tersedia)';
+$lang['nosupport']             = '(manajemen user tidak didukung)';
+$lang['badauth']               = 'mekanisme autentikasi invali';
+$lang['user_id']               = 'User';
+$lang['user_pass']             = 'Password';
+$lang['user_name']             = 'Nama Lengkap';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = 'Grup';
+$lang['field']                 = 'Field';
+$lang['value']                 = 'Nilai';
+$lang['add']                   = 'Tambah';
+$lang['delete']                = 'Hapus';
+$lang['delete_selected']       = 'Hapus pilihan';
+$lang['edit']                  = 'Edit';
+$lang['edit_prompt']           = 'Edit user ini';
+$lang['modify']                = 'Simpan Perubahan';
+$lang['search']                = 'Pencarian';
+$lang['search_prompt']         = 'Lakukan pencarian';
+$lang['clear']                 = 'Reset Filter Pencarian';
+$lang['filter']                = 'Filter';
+$lang['summary']               = 'Menampilkan user %1$d-%2$d dari %3$d user yang ditemukan. Total semua user %4$d.';
+$lang['nonefound']             = 'User tidak ditemukan. Total semua user %d. ';
+$lang['delete_ok']             = 'User %d dihapus';
+$lang['delete_fail']           = 'User %d tidak berhasil dihapus';
+$lang['update_ok']             = 'User berhasil diubah';
+$lang['update_fail']           = 'Perubahan user tidak berhasil';
+$lang['update_exists']         = 'Perubahan username tidak berhasil, Username (%s) sudah ada (perubahan lain tetap dilakukan)';
+$lang['start']                 = 'awal';
+$lang['prev']                  = 'sebelumnya';
+$lang['next']                  = 'berikutnya';
+$lang['last']                  = 'terakhir';
+$lang['edit_usermissing']      = 'User yang dipilih tida ditemukan, username tersebut mungkin sudah dihapus atau diubah ditempat lain.';
+$lang['user_notify']           = 'Beritahu user';
+$lang['note_notify']           = 'Email notifikasi hanya dikirim jika user diberikan password baru';
+$lang['note_group']            = 'User baru akan ditambahkan ke grup default (%s) jika tidak ada grup yang diisi.';
+$lang['add_ok']                = 'User telah berhasil ditambahkan';
+$lang['add_fail']              = 'Penambahan user tidak berhasil.';
+$lang['notify_ok']             = 'Email notifikasi berhasil terkirim.';
+$lang['notify_fail']           = 'Email notifikasi tidak berhasil terkirim.';
diff --git a/wiki/lib/plugins/usermanager/lang/id/list.txt b/wiki/lib/plugins/usermanager/lang/id/list.txt
new file mode 100644
index 0000000..9b70bc1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/id/list.txt
@@ -0,0 +1 @@
+===== Daftar User =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/is/delete.txt b/wiki/lib/plugins/usermanager/lang/is/delete.txt
new file mode 100644
index 0000000..5640065
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/is/delete.txt
@@ -0,0 +1 @@
+===== Eyða notanda =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/is/lang.php b/wiki/lib/plugins/usermanager/lang/is/lang.php
new file mode 100644
index 0000000..cabf83d
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/is/lang.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Icelandic language file
+ *
+ * @author Hrannar Baldursson <hrannar.baldursson@gmail.com>
+ * @author Ólafur Gunnlaugsson <oli@audiotools.com>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ */
+$lang['user_id']               = 'Notandi';
+$lang['user_pass']             = 'Aðgangsorð';
+$lang['user_name']             = 'Raunnafn';
+$lang['user_groups']           = 'Hópar';
+$lang['field']                 = 'Svæði';
+$lang['delete']                = 'Eyða';
+$lang['add_ok']                = 'Notandinn var bætt við';
+$lang['add_fail']              = 'Bæta við nýjum notanda mistókst';
+$lang['notify_ok']             = 'Tilkynning var sendast með tölvupósti';
+$lang['notify_fail']           = 'Ekki hægt að senda tilkynning með tölvupósti';
diff --git a/wiki/lib/plugins/usermanager/lang/it/add.txt b/wiki/lib/plugins/usermanager/lang/it/add.txt
new file mode 100644
index 0000000..9ce4c6e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/add.txt
@@ -0,0 +1 @@
+===== Aggiungi utente =====
diff --git a/wiki/lib/plugins/usermanager/lang/it/delete.txt b/wiki/lib/plugins/usermanager/lang/it/delete.txt
new file mode 100644
index 0000000..270061f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/delete.txt
@@ -0,0 +1 @@
+===== Elimina utente =====
diff --git a/wiki/lib/plugins/usermanager/lang/it/edit.txt b/wiki/lib/plugins/usermanager/lang/it/edit.txt
new file mode 100644
index 0000000..39767bf
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/edit.txt
@@ -0,0 +1 @@
+===== Modifica utente =====
diff --git a/wiki/lib/plugins/usermanager/lang/it/import.txt b/wiki/lib/plugins/usermanager/lang/it/import.txt
new file mode 100644
index 0000000..ed7b000
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/import.txt
@@ -0,0 +1,9 @@
+===== Importazione Bulk di utente =====
+
+Richiesto un file CSV di utenti con almeno quattro colonne.
+Le colonne devono contenere, in ordine: ID utente, nome completo, indirizzo e-mail e gruppi.
+I campi CSV devono essere separati da una virgola (,) e le stringhe delimitate con apici (%%""%%). Il backslash (\) può essere usato come carattere di escape, cioè per indicare che il carattere successivo deve essere trattato in maniera speciale.
+Per un esempio di file tipo, prova la funzione "Esporta Utenti" che trovi qui sopra.
+Verranno ignorati gli ID utenti duplicati.
+
+Verrà generata una password ed inviata via e-mail ad ogni utente correttamente importato. 
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/it/intro.txt b/wiki/lib/plugins/usermanager/lang/it/intro.txt
new file mode 100644
index 0000000..3421709
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/intro.txt
@@ -0,0 +1 @@
+====== Gestione Utenti ======
diff --git a/wiki/lib/plugins/usermanager/lang/it/lang.php b/wiki/lib/plugins/usermanager/lang/it/lang.php
new file mode 100644
index 0000000..cf3b9fd
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/lang.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @author Silvia Sargentoni <polinnia@tin.it>
+ * @author Pietro Battiston <toobaz@email.it>
+ * @author Lorenzo Breda <lbreda@gmail.com>
+ * @author robocap <robocap1@gmail.com>
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
+ * @author Matteo Pasotti <matteo@xquiet.eu>
+ * @author Claudio Lanconelli <lancos@libero.it>
+ * @author Francesco <francesco.cavalli@hotmail.com>
+ * @author Fabio <fabioslurp@yahoo.it>
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['menu']                  = 'Gestione Utenti';
+$lang['noauth']                = '(autenticazione non disponibile)';
+$lang['nosupport']             = '(gestione utenti non supportata)';
+$lang['badauth']               = 'sistema di autenticazione non valido';
+$lang['user_id']               = 'ID utente';
+$lang['user_pass']             = 'Password';
+$lang['user_name']             = 'Nome completo';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = 'Gruppi';
+$lang['field']                 = 'Campo';
+$lang['value']                 = 'Valore';
+$lang['add']                   = 'Aggiungi';
+$lang['delete']                = 'Elimina';
+$lang['delete_selected']       = 'Elimina selezionati';
+$lang['edit']                  = 'Modifica';
+$lang['edit_prompt']           = 'Modifica questo utente';
+$lang['modify']                = 'Salva modifiche';
+$lang['search']                = 'Cerca';
+$lang['search_prompt']         = 'Esegui ricerca';
+$lang['clear']                 = 'Azzera filtro di ricerca';
+$lang['filter']                = 'Filtro';
+$lang['export_all']            = 'Esporta tutti gli utenti (CSV)';
+$lang['export_filtered']       = 'Esporta elenco utenti filtrati (CSV)';
+$lang['import']                = 'Importa nuovi utenti';
+$lang['line']                  = 'Linea numero';
+$lang['error']                 = 'Messaggio di errore';
+$lang['summary']               = 'Visualizzazione utenti %1$d-%2$d di %3$d trovati. %4$d utenti totali.';
+$lang['nonefound']             = 'Nessun utente trovato. %d utenti totali.';
+$lang['delete_ok']             = '%d utenti eliminati';
+$lang['delete_fail']           = 'Eliminazione %d fallita.';
+$lang['update_ok']             = 'Aggiornamento utente riuscito';
+$lang['update_fail']           = 'Aggiornamento utente fallito';
+$lang['update_exists']         = 'Modifica nome utente fallita, il nome utente specificato (%s) esiste già (qualunque altra modifica sarà  applicata).';
+$lang['start']                 = 'primo';
+$lang['prev']                  = 'precedente';
+$lang['next']                  = 'successivo';
+$lang['last']                  = 'ultimo';
+$lang['edit_usermissing']      = 'Utente selezionato non trovato, il nome utente specificato potrebbe essere stato eliminato o modificato altrove.';
+$lang['user_notify']           = 'Notifica utente';
+$lang['note_notify']           = 'Le email di notifica sono inviate soltanto se all\'utente è stata assegnata una nuova password.';
+$lang['note_group']            = 'Se non si specifica alcun gruppo, i nuovi utenti saranno aggiunti al gruppo predefinito (%s).';
+$lang['note_pass']             = 'La password verrà generata automaticamente qualora il campo di inserimento relativo venisse lasciato vuoto e le notifiche all\'utente fossero abilitate.';
+$lang['add_ok']                = 'Utente aggiunto correttamente';
+$lang['add_fail']              = 'Aggiunta utente fallita';
+$lang['notify_ok']             = 'Email di notifica inviata';
+$lang['notify_fail']           = 'L\'email di notifica non può essere inviata';
+$lang['import_userlistcsv']    = 'File lista utente (CSV):';
+$lang['import_header']         = 'Importazioni più recenti - Non riuscite';
+$lang['import_success_count']  = 'Importazione utenti: %d utenti trovati, %d utenti importati con successo.';
+$lang['import_failure_count']  = 'Importazione utenti: %d falliti. Errori riportati qui sotto.';
+$lang['import_error_fields']   = 'Campi insufficienti, trovati %d, richiesti 4.';
+$lang['import_error_baduserid'] = 'User-id non trovato';
+$lang['import_error_badname']  = 'Nome errato';
+$lang['import_error_badmail']  = 'Indirizzo email errato';
+$lang['import_error_upload']   = 'Importazione fallita. Il file CSV non può essere caricato, o è vuoto.';
+$lang['import_error_readfail'] = 'Importazione in errore. Impossibile leggere i file caricati.';
+$lang['import_error_create']   = 'Impossibile creare l\'utente';
+$lang['import_notify_fail']    = 'Non è stato possibile inviare un messaggio di notifica per l\'utente importato %s con e-mail %s.';
+$lang['import_downloadfailures'] = 'Scarica operazioni non riuscite come CSV per correzione';
+$lang['addUser_error_missing_pass'] = 'Imposta una password oppure attiva la notifica utente per abilitare la generazione password.';
+$lang['addUser_error_pass_not_identical'] = 'Le password inserite non sono identiche.';
+$lang['addUser_error_modPass_disabled'] = 'La modifica delle password è al momento disabilitata.';
+$lang['addUser_error_name_missing'] = 'Inserire un nome per il nuovo utente.';
+$lang['addUser_error_modName_disabled'] = 'La modifica dei nomi è al momento disabilitata.';
+$lang['addUser_error_mail_missing'] = 'Inserire un indirizzo e-mail per il nuovo utente.';
+$lang['addUser_error_modMail_disabled'] = 'La modifica degli indirizzi e-mail è al momento disabilitata.';
+$lang['addUser_error_create_event_failed'] = 'Un plugin ha impedito che il nuovo utente venisse aggiunto. Rivedere gli altri messaggi per maggiori informazioni.';
diff --git a/wiki/lib/plugins/usermanager/lang/it/list.txt b/wiki/lib/plugins/usermanager/lang/it/list.txt
new file mode 100644
index 0000000..91e27a9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/it/list.txt
@@ -0,0 +1 @@
+===== Elenco Utenti =====
diff --git a/wiki/lib/plugins/usermanager/lang/ja/add.txt b/wiki/lib/plugins/usermanager/lang/ja/add.txt
new file mode 100644
index 0000000..87b30e0
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/add.txt
@@ -0,0 +1 @@
+===== ユーザー作成 =====
diff --git a/wiki/lib/plugins/usermanager/lang/ja/delete.txt b/wiki/lib/plugins/usermanager/lang/ja/delete.txt
new file mode 100644
index 0000000..67ef23e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/delete.txt
@@ -0,0 +1 @@
+===== ユーザー削除 =====
diff --git a/wiki/lib/plugins/usermanager/lang/ja/edit.txt b/wiki/lib/plugins/usermanager/lang/ja/edit.txt
new file mode 100644
index 0000000..e7695e3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/edit.txt
@@ -0,0 +1 @@
+===== ユーザー編集 =====
diff --git a/wiki/lib/plugins/usermanager/lang/ja/import.txt b/wiki/lib/plugins/usermanager/lang/ja/import.txt
new file mode 100644
index 0000000..4987df0
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/import.txt
@@ -0,0 +1,10 @@
+===== 一括ユーザーインポート =====
+
+少なくとも4列のユーザーCSVファイルが必要です。
+列の順序: ユーザーID、フルネーム、電子メールアドレス、グループ。
+CSVフィールドはカンマ(,)区切り、文字列は引用符(%%""%%)区切りです。
+エスケープにバックスラッシュ(\)を使用できます。
+適切なファイル例は、上記の"エクスポートユーザー"機能で試して下さい。 
+重複するユーザーIDは無視されます。
+
+正常にインポートされたユーザー毎に、パスワードを作成し、電子メールで送付します。
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ja/intro.txt b/wiki/lib/plugins/usermanager/lang/ja/intro.txt
new file mode 100644
index 0000000..5dbe51c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/intro.txt
@@ -0,0 +1 @@
+====== ユーザー管理 ======
diff --git a/wiki/lib/plugins/usermanager/lang/ja/lang.php b/wiki/lib/plugins/usermanager/lang/ja/lang.php
new file mode 100644
index 0000000..5c252bb
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/lang.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuji Takenaka <webmaster@davilin.com>
+ * @author Chris Smith <chris@jalakai.co.uk>
+ * @author Ikuo Obataya <i.obataya@gmail.com>
+ * @author Daniel Dupriest <kououken@gmail.com>
+ * @author Kazutaka Miyasaka <kazmiya@gmail.com>
+ * @author Taisuke Shimamoto <dentostar@gmail.com>
+ * @author Satoshi Sahara <sahara.satoshi@gmail.com>
+ * @author Hideaki SAWADA <sawadakun@live.jp>
+ * @author Hideaki SAWADA <chuno@live.jp>
+ */
+$lang['menu']                  = 'ユーザー管理';
+$lang['noauth']                = '(ユーザー認証が無効です)';
+$lang['nosupport']             = '(ユーザー管理はサポートされていません)';
+$lang['badauth']               = '認証のメカニズムが無効です';
+$lang['user_id']               = 'ユーザー';
+$lang['user_pass']             = 'パスワード';
+$lang['user_name']             = 'フルネーム';
+$lang['user_mail']             = 'メールアドレス';
+$lang['user_groups']           = 'グループ';
+$lang['field']                 = '項目';
+$lang['value']                 = '値';
+$lang['add']                   = '追加';
+$lang['delete']                = '削除';
+$lang['delete_selected']       = '選択したユーザーを削除';
+$lang['edit']                  = '編集';
+$lang['edit_prompt']           = 'このユーザーを編集';
+$lang['modify']                = '変更を保存';
+$lang['search']                = '検索';
+$lang['search_prompt']         = '検索を実行';
+$lang['clear']                 = '検索フィルターをリセット';
+$lang['filter']                = 'フィルター';
+$lang['export_all']            = '全ユーザーのエクスポート(CSV)';
+$lang['export_filtered']       = '抽出したユーザー一覧のエクスポート(CSV)';
+$lang['import']                = '新規ユーザーのインポート';
+$lang['line']                  = '行番号';
+$lang['error']                 = 'エラーメッセージ';
+$lang['summary']               = 'ユーザー %1$d-%2$d / %3$d, 総ユーザー数 %4$d';
+$lang['nonefound']             = 'ユーザーが見つかりません, 総ユーザー数 %d';
+$lang['delete_ok']             = '%d ユーザーが削除されました';
+$lang['delete_fail']           = '%d ユーザーの削除に失敗しました';
+$lang['update_ok']             = 'ユーザーは更新されました';
+$lang['update_fail']           = 'ユーザーの更新に失敗しました';
+$lang['update_exists']         = 'ユーザー名(%s)は既に存在するため、ユーザー名の変更に失敗しました(その他の項目は変更されました)。';
+$lang['start']                 = '最初';
+$lang['prev']                  = '前へ';
+$lang['next']                  = '次へ';
+$lang['last']                  = '最後';
+$lang['edit_usermissing']      = '選択したユーザーは見つかりません。削除もしくは変更された可能性があります。';
+$lang['user_notify']           = 'ユーザーに通知する';
+$lang['note_notify']           = '通知メールは、ユーザーに新たなパスワードが設定された場合のみ送信されます。';
+$lang['note_group']            = 'グループを指定しない場合は、既定のグループ(%s)に配属されます。';
+$lang['note_pass']             = '”ユーザーに通知する”をチェックしてパスワードを空欄にすると、パスワードは自動生成されます。';
+$lang['add_ok']                = 'ユーザーを登録しました';
+$lang['add_fail']              = 'ユーザーの登録に失敗しました';
+$lang['notify_ok']             = '通知メールを送信しました';
+$lang['notify_fail']           = '通知メールを送信できませんでした';
+$lang['import_userlistcsv']    = 'ユーザー一覧ファイル(CSV):';
+$lang['import_header']         = '最新インポート - 失敗';
+$lang['import_success_count']  = 'ユーザーインポート:ユーザーが%d件あり、%d件正常にインポートされました。';
+$lang['import_failure_count']  = 'ユーザーインポート:%d件が失敗しました。失敗は次のとおりです。';
+$lang['import_error_fields']   = '列の不足(4列必要)が%d件ありました。';
+$lang['import_error_baduserid'] = '欠落したユーザーID';
+$lang['import_error_badname']  = '不正なフルネーム';
+$lang['import_error_badmail']  = '不正な電子メールアドレス';
+$lang['import_error_upload']   = 'インポートが失敗しました。CSVファイルをアップロードできなかったか、ファイルが空です。';
+$lang['import_error_readfail'] = 'インポートが失敗しました。アップロードされたファイルが読込できません。';
+$lang['import_error_create']   = 'ユーザーが作成できません。';
+$lang['import_notify_fail']    = '通知メッセージがインポートされたユーザー(%s)・電子メールアドレス(%s)に送信できませんでした。';
+$lang['import_downloadfailures'] = '修正用に失敗を CSVファイルとしてダウンロードする。';
+$lang['addUser_error_missing_pass'] = 'パスワードを設定するかパスワードの自動生成できるようにユーザーへの通知を有効にして下さい。';
+$lang['addUser_error_pass_not_identical'] = '入力されたパスワードは同一ではありません。';
+$lang['addUser_error_modPass_disabled'] = 'パスワードの変更は現在無効になっています。';
+$lang['addUser_error_name_missing'] = '新規ユーザーのフルネームを入力してください。';
+$lang['addUser_error_modName_disabled'] = 'フルネームの変更は現在無効になっています。';
+$lang['addUser_error_mail_missing'] = '新規ユーザーのメールアドレスを入力してください。';
+$lang['addUser_error_modMail_disabled'] = 'メールアドレスの変更は現在無効になっています。';
+$lang['addUser_error_create_event_failed'] = 'プラグインが新規ユーザーの追加を抑止しました。詳細については、他のメッセージで確認できます。';
diff --git a/wiki/lib/plugins/usermanager/lang/ja/list.txt b/wiki/lib/plugins/usermanager/lang/ja/list.txt
new file mode 100644
index 0000000..182cc19
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ja/list.txt
@@ -0,0 +1 @@
+===== ユーザーリスト =====
diff --git a/wiki/lib/plugins/usermanager/lang/kk/lang.php b/wiki/lib/plugins/usermanager/lang/kk/lang.php
new file mode 100644
index 0000000..b1bbd39
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/kk/lang.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * kazakh language file
+ *
+ * @author Nurgozha Kaliaskarov astana08@gmail.com
+ */
+$lang['user_id']               = 'Пайдаланушы';
+$lang['user_pass']             = 'Шартты белгi';
+$lang['user_mail']             = 'E-mail';
diff --git a/wiki/lib/plugins/usermanager/lang/ko/add.txt b/wiki/lib/plugins/usermanager/lang/ko/add.txt
new file mode 100644
index 0000000..845d809
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/add.txt
@@ -0,0 +1 @@
+===== 사용자 추가 =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ko/delete.txt b/wiki/lib/plugins/usermanager/lang/ko/delete.txt
new file mode 100644
index 0000000..52b8209
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/delete.txt
@@ -0,0 +1 @@
+===== 사용자 삭제 =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ko/edit.txt b/wiki/lib/plugins/usermanager/lang/ko/edit.txt
new file mode 100644
index 0000000..0b35cd7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/edit.txt
@@ -0,0 +1 @@
+===== 사용자 편집 =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ko/import.txt b/wiki/lib/plugins/usermanager/lang/ko/import.txt
new file mode 100644
index 0000000..b5801e6
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/import.txt
@@ -0,0 +1,9 @@
+===== 대량 사용자 가져오기 =====
+
+적어도 열 네 개가 있는 사용자의 CSV 파일이 필요합니다.
+열은 다음과 같이 포함해야 합니다: 사용자 ID, 실명, 이메일 주소와 그룹.
+CSV 필드는 인용 부호(%%""%%)로 쉼표(,)와 구분된 문자열로 구분해야 합니다. 백슬래시(\)는 탈출에 사용할 수 있습니다.
+적절한 파일의 예를 들어, 위의 "사용자 목록 내보내기"를 시도하세요.
+중복된 사용자 ID는 무시됩니다.
+
+비밀번호는 생성되고 각 성공적으로 가져온 사용자에게 이메일로 보내집니다.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ko/intro.txt b/wiki/lib/plugins/usermanager/lang/ko/intro.txt
new file mode 100644
index 0000000..2ce85f1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/intro.txt
@@ -0,0 +1 @@
+====== 사용자 관리자 ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ko/lang.php b/wiki/lib/plugins/usermanager/lang/ko/lang.php
new file mode 100644
index 0000000..27d07de
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/lang.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author jk Lee
+ * @author dongnak <dongnak@gmail.com>
+ * @author Song Younghwan <purluno@gmail.com>
+ * @author Seung-Chul Yoo <dryoo@live.com>
+ * @author erial2 <erial2@gmail.com>
+ * @author Myeongjin <aranet100@gmail.com>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Garam <rowain8@gmail.com>
+ */
+$lang['menu']                  = '사용자 관리자';
+$lang['noauth']                = '(사용자 인증을 사용할 수 없습니다)';
+$lang['nosupport']             = '(사용자 관리가 지원되지 않습니다)';
+$lang['badauth']               = '인증 메커니즘이 잘못되었습니다';
+$lang['user_id']               = '사용자';
+$lang['user_pass']             = '비밀번호';
+$lang['user_name']             = '실명';
+$lang['user_mail']             = '이메일 ';
+$lang['user_groups']           = '그룹';
+$lang['field']                 = '항목';
+$lang['value']                 = '값';
+$lang['add']                   = '추가';
+$lang['delete']                = '삭제';
+$lang['delete_selected']       = '선택 삭제';
+$lang['edit']                  = '편집';
+$lang['edit_prompt']           = '이 사용자 편집';
+$lang['modify']                = '바뀜 저장';
+$lang['search']                = '검색';
+$lang['search_prompt']         = '검색 수행';
+$lang['clear']                 = '검색 필터 재설정';
+$lang['filter']                = '필터';
+$lang['export_all']            = '모든 사용자 목록 내보내기 (CSV)';
+$lang['export_filtered']       = '필터된 사용자 목록 내보내기 (CSV)';
+$lang['import']                = '새 사용자 가져오기';
+$lang['line']                  = '줄 번호';
+$lang['error']                 = '오류 메시지';
+$lang['summary']               = '찾은 사용자 %3$d명 중 %1$d-%2$d을(를) 봅니다. 전체 사용자는 %4$d명입니다.';
+$lang['nonefound']             = '찾은 사용자가 없습니다. 전체 사용자는 %d명입니다.';
+$lang['delete_ok']             = '사용자 %d명이 삭제되었습니다';
+$lang['delete_fail']           = '사용자 %d명을 삭제하는 데 실패했습니다.';
+$lang['update_ok']             = '사용자 정보를 성공적으로 바꾸었습니다';
+$lang['update_fail']           = '사용자 정보를 업데이트하는 데 실패했습니다';
+$lang['update_exists']         = '사용자 이름을 바꾸는 데 실패했습니다. 사용자 이름(%s)이 이미 존재합니다. (다른 항목의 바뀜은 적용됩니다)';
+$lang['start']                 = '시작';
+$lang['prev']                  = '이전';
+$lang['next']                  = '다음';
+$lang['last']                  = '마지막';
+$lang['edit_usermissing']      = '선택된 사용자를 찾을 수 없습니다, 사용자 이름이 삭제되거나 바뀌었을 수도 있습니다.';
+$lang['user_notify']           = '사용자에게 알림';
+$lang['note_notify']           = '사용자에게 새로운 비밀번호를 준 경우에만 알림 이메일이 보내집니다.';
+$lang['note_group']            = '새로운 사용자는 어떤 그룹도 설정하지 않은 경우에 기본 그룹(%s)에 추가됩니다.';
+$lang['note_pass']             = '사용자 알림이 지정되어 있을 때 필드에 아무 값도 입력하지 않으면 비밀번호가 자동으로 생성됩니다.';
+$lang['add_ok']                = '사용자를 성공적으로 추가했습니다';
+$lang['add_fail']              = '사용자 추가를 실패했습니다';
+$lang['notify_ok']             = '알림 이메일을 성공적으로 보냈습니다';
+$lang['notify_fail']           = '알림 이메일을 보낼 수 없습니다';
+$lang['import_userlistcsv']    = '사용자 목록 파일 (CSV):';
+$lang['import_header']         = '가장 최근 가져오기 - 실패';
+$lang['import_success_count']  = '사용자 가져오기: 사용자 %d명을 찾았고, %d명을 성공적으로 가져왔습니다.';
+$lang['import_failure_count']  = '사용자 가져오기: %d명을 가져오지 못했습니다. 실패는 아래에 나타나 있습니다.';
+$lang['import_error_fields']   = '충분하지 않은 필드로, %d개를 찾았고, 4개가 필요합니다.';
+$lang['import_error_baduserid'] = '사용자 ID 없음';
+$lang['import_error_badname']  = '잘못된 이름';
+$lang['import_error_badmail']  = '잘못된 이메일 주소';
+$lang['import_error_upload']   = '가져오기를 실패했습니다. CSV 파일을 올릴 수 없거나 비어 있습니다.';
+$lang['import_error_readfail'] = '가져오기를 실패했습니다. 올린 파일을 읽을 수 없습니다.';
+$lang['import_error_create']   = '사용자를 만들 수 없습니다';
+$lang['import_notify_fail']    = '알림 메시지를 가져온 %s (이메일: %s) 사용자에게 보낼 수 없습니다.';
+$lang['import_downloadfailures'] = '교정을 위한 CSV로 다운로드 실패';
+$lang['addUser_error_missing_pass'] = '비밀번호를 설정하거나 비밀번호 생성을 활성화하려면 사용자 알림을 활성화해주시기 바랍니다.';
+$lang['addUser_error_pass_not_identical'] = '입력된 비밀번호가 일치하지 않습니다.';
+$lang['addUser_error_modPass_disabled'] = '비밀번호를 수정하는 것은 현재 비활성화되어 있습니다.';
+$lang['addUser_error_name_missing'] = '새 사용자의 이름을 입력하세요.';
+$lang['addUser_error_modName_disabled'] = '이름을 수정하는 것은 현재 비활성화되어 있습니다.';
+$lang['addUser_error_mail_missing'] = '새 사용자의 이메일 주소를 입력하세요.';
+$lang['addUser_error_modMail_disabled'] = '이메일 주소를 수정하는 것은 현재 비활성화되어 있습니다.';
+$lang['addUser_error_create_event_failed'] = '플러그인이 새 사용자가 추가되는 것을 막았습니다. 자세한 정보에 대해서는 가능한 다른 메시지를 검토하세요.';
diff --git a/wiki/lib/plugins/usermanager/lang/ko/list.txt b/wiki/lib/plugins/usermanager/lang/ko/list.txt
new file mode 100644
index 0000000..2a1b45b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ko/list.txt
@@ -0,0 +1 @@
+===== 사용자 목록 =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/la/add.txt b/wiki/lib/plugins/usermanager/lang/la/add.txt
new file mode 100644
index 0000000..beb797c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/la/add.txt
@@ -0,0 +1 @@
+===== Sodalem addere =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/la/delete.txt b/wiki/lib/plugins/usermanager/lang/la/delete.txt
new file mode 100644
index 0000000..1eb5e1f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/la/delete.txt
@@ -0,0 +1 @@
+===== Sodalem delere =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/la/edit.txt b/wiki/lib/plugins/usermanager/lang/la/edit.txt
new file mode 100644
index 0000000..4e3d3b2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/la/edit.txt
@@ -0,0 +1 @@
+===== Sodalem recensere =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/la/intro.txt b/wiki/lib/plugins/usermanager/lang/la/intro.txt
new file mode 100644
index 0000000..7f5c011
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/la/intro.txt
@@ -0,0 +1 @@
+====== Sodalis Tabella ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/la/lang.php b/wiki/lib/plugins/usermanager/lang/la/lang.php
new file mode 100644
index 0000000..52c8487
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/la/lang.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Latin language file
+ *
+ * @author Massimiliano Vassalli <vassalli.max@gmail.com>
+ */
+$lang['menu']                  = 'Sodalis Tabella';
+$lang['noauth']                = '(Sodalis confirmatio deest)';
+$lang['nosupport']             = '(Sodalis administratio deest)';
+$lang['badauth']               = 'Confirmatio fieri non potest.';
+$lang['user_id']               = 'Sodalis';
+$lang['user_pass']             = 'Tessera';
+$lang['user_name']             = 'Nomen uerum';
+$lang['user_mail']             = 'Cursus Interretialis';
+$lang['user_groups']           = 'Grex';
+$lang['field']                 = 'Campus';
+$lang['value']                 = 'Vis';
+$lang['add']                   = 'Addere';
+$lang['delete']                = 'Delere';
+$lang['delete_selected']       = 'Electa delere';
+$lang['edit']                  = 'Recensere';
+$lang['edit_prompt']           = 'Sodalem recensere';
+$lang['modify']                = 'Mutata seruare';
+$lang['search']                = 'Quaerere';
+$lang['search_prompt']         = 'Agentem quaerere';
+$lang['clear']                 = 'Colum quaerendi abrogare';
+$lang['filter']                = 'Colum';
+$lang['summary']               = 'Sodales %1$d-%2$d inter %3$d ostenduntur. Numerus Sodalium. %4$d.';
+$lang['nonefound']             = 'Sodalis non repertus. Numerus sodalium: %d';
+$lang['delete_ok']             = '%d Sodales delentur.';
+$lang['delete_fail']           = '%d non deleri possunt.';
+$lang['update_ok']             = 'Sodalis feliciter nouatus\a';
+$lang['update_fail']           = 'Sodalis infeliciter nouatus\a';
+$lang['update_exists']         = 'Nomen Sodalis non mutatur, eo quod hoc nomen (%s) iam electum est.';
+$lang['start']                 = 'in primis';
+$lang['prev']                  = 'antea';
+$lang['next']                  = 'postea';
+$lang['last']                  = 'in extremis';
+$lang['edit_usermissing']      = 'Hic Sodalis non inuenitur, eo quod nomen iam deletum uel mutatum est.';
+$lang['user_notify']           = 'Sodalem adnotare';
+$lang['note_notify']           = 'Adnotationes cursu interretiali missae solum si noua tessera petitur.';
+$lang['note_group']            = 'Noui\ae Sodales communi Gregi adduntur (%s) si Grex non elegitur.';
+$lang['note_pass']             = 'Tessera non generata nisi campus uacuos est et Sodalis adnotationes aptae faciuntur.';
+$lang['add_ok']                = 'Sodalis feliciter additur.';
+$lang['add_fail']              = 'Sodalis infeliciter additur.';
+$lang['notify_ok']             = 'Adnotationes cursu interretiali missae';
+$lang['notify_fail']           = 'Adnotationes cursu interretiali non missae';
diff --git a/wiki/lib/plugins/usermanager/lang/la/list.txt b/wiki/lib/plugins/usermanager/lang/la/list.txt
new file mode 100644
index 0000000..b470d2e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/la/list.txt
@@ -0,0 +1 @@
+===== Sodalis index =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/lb/list.txt b/wiki/lib/plugins/usermanager/lang/lb/list.txt
new file mode 100644
index 0000000..022afe8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lb/list.txt
@@ -0,0 +1 @@
+===== Benotzerlëscht =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/lt/add.txt b/wiki/lib/plugins/usermanager/lang/lt/add.txt
new file mode 100644
index 0000000..32681ad
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lt/add.txt
@@ -0,0 +1,2 @@
+===== Pridėti vartotoją =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/lt/delete.txt b/wiki/lib/plugins/usermanager/lang/lt/delete.txt
new file mode 100644
index 0000000..262713c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lt/delete.txt
@@ -0,0 +1,2 @@
+===== Ištrinti vartotoją =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/lt/edit.txt b/wiki/lib/plugins/usermanager/lang/lt/edit.txt
new file mode 100644
index 0000000..da57ea3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lt/edit.txt
@@ -0,0 +1,2 @@
+===== Redaguoti vartotoją =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/lt/intro.txt b/wiki/lib/plugins/usermanager/lang/lt/intro.txt
new file mode 100644
index 0000000..61f80d5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lt/intro.txt
@@ -0,0 +1,2 @@
+====== Vartotojų administravimas ======
+
diff --git a/wiki/lib/plugins/usermanager/lang/lt/lang.php b/wiki/lib/plugins/usermanager/lang/lt/lang.php
new file mode 100644
index 0000000..3c00293
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lt/lang.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author grawity <grawity@gmail.com>
+ * @author audrius.klevas@gmail.com
+ * @author Arunas Vaitekunas <aras@fan.lt>
+ */
+$lang['menu']                  = 'Vartotojų administravimas';
+$lang['noauth']                = '(vartotojų autentifikacija neprieinama)';
+$lang['nosupport']             = '(vartotojų administravimas nepalaikomas)';
+$lang['badauth']               = 'neteisingas autentifikacijos būdas';
+$lang['user_id']               = 'Vartotojas';
+$lang['user_pass']             = 'Slaptažodis';
+$lang['user_name']             = 'Vardas';
+$lang['user_mail']             = 'El.paštas';
+$lang['user_groups']           = 'Grupės';
+$lang['field']                 = 'Laukas';
+$lang['value']                 = 'Turinys';
+$lang['add']                   = 'Pridėti';
+$lang['delete']                = 'Pašalinti';
+$lang['delete_selected']       = 'Pašalinti pažymėtus';
+$lang['edit']                  = 'Redaguoti';
+$lang['edit_prompt']           = 'Redaguoti šį vartotoją';
+$lang['modify']                = 'Išsaugoti';
+$lang['search']                = 'Paieška';
+$lang['search_prompt']         = 'Ieškoti';
+$lang['clear']                 = 'Panaikinti filtrą';
+$lang['filter']                = 'Filtras';
+$lang['summary']               = 'Rodomi vartotojai %1$d-%2$d iš %3$d rastų. Iš viso %4$d vartotojų.';
+$lang['nonefound']             = 'Vartotojų nerasta. Iš viso %d vartotojų.';
+$lang['delete_ok']             = 'Pašalinta %d vartotojų';
+$lang['delete_fail']           = '%d nepavyko pašalinti.';
+$lang['update_ok']             = 'Vartotojas sėkmingai pakeistas';
+$lang['update_fail']           = 'Vartotojo pakeitimas nepavyko';
+$lang['update_exists']         = 'Vartotojo vardo pakeitimas nepavyko, nes nurodytas vartotojo vardas (%s) jau yra (kiti pakeitimai įvykdyti).';
+$lang['start']                 = 'pradžia';
+$lang['prev']                  = 'atgal';
+$lang['next']                  = 'pirmyn';
+$lang['last']                  = 'pabaiga';
+$lang['edit_usermissing']      = 'Pasirinktas vartotojas nerastas, nurodytas vartotojo vardas galėjo būti pašalintas ar pakeistas kitur.';
+$lang['user_notify']           = 'Įspėti vartotoją';
+$lang['note_notify']           = 'Įspėjimas siunčiamas tik tada, kai vartotojui priskiriamas naujas slaptažodis.';
+$lang['note_group']            = 'Jei grupė nenurodyta, nauji vartotojai pridedami į pagrindinę grupę (%s).';
+$lang['add_ok']                = 'Vartotojas sėkmingai pridėtas';
+$lang['add_fail']              = 'Vartotojo pridėjimas nepavyko';
+$lang['notify_ok']             = 'Įspėjimo el.laiškas išsiųstas';
+$lang['notify_fail']           = 'Įspėjimo el.laiško išsiųsti nepavyko';
diff --git a/wiki/lib/plugins/usermanager/lang/lt/list.txt b/wiki/lib/plugins/usermanager/lang/lt/list.txt
new file mode 100644
index 0000000..87be628
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lt/list.txt
@@ -0,0 +1,2 @@
+===== Vartotojų sąrašas =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/lv/add.txt b/wiki/lib/plugins/usermanager/lang/lv/add.txt
new file mode 100644
index 0000000..06fd700
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/add.txt
@@ -0,0 +1 @@
+===== Pievienot lietotāju =====
diff --git a/wiki/lib/plugins/usermanager/lang/lv/delete.txt b/wiki/lib/plugins/usermanager/lang/lv/delete.txt
new file mode 100644
index 0000000..5f59af7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/delete.txt
@@ -0,0 +1 @@
+===== Dzēst lietotāju =====
diff --git a/wiki/lib/plugins/usermanager/lang/lv/edit.txt b/wiki/lib/plugins/usermanager/lang/lv/edit.txt
new file mode 100644
index 0000000..efb0b04
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/edit.txt
@@ -0,0 +1 @@
+===== Labot lietotāju =====
diff --git a/wiki/lib/plugins/usermanager/lang/lv/import.txt b/wiki/lib/plugins/usermanager/lang/lv/import.txt
new file mode 100644
index 0000000..0006ae8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/import.txt
@@ -0,0 +1,9 @@
+===== Masveida lietotāju imports =====
+
+Vajag CSV failu ar vismaz četrām lietotāju datu kolonām šādā secībā: identifikators, pilns vārds, e-pasta adrese un grupas. 
+
+CSV lauki jāatdala ar komatiem (,) un virknes — ar pēdiņām (%%""%%). Backslash (\) can be used for escaping. 
+Derīga faila paraugam izmantojiem augtāk redzamo "Lietotāju eksportu".  
+Dublētus identifikatorus ignorēs. 
+
+Paroli katram veiksmīgi importētajam lietotājam izveidos un nosūtīs pa e-pastu.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/lv/intro.txt b/wiki/lib/plugins/usermanager/lang/lv/intro.txt
new file mode 100644
index 0000000..b248ddc
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/intro.txt
@@ -0,0 +1 @@
+====== Lietotāju pārvaldnieks ======
diff --git a/wiki/lib/plugins/usermanager/lang/lv/lang.php b/wiki/lib/plugins/usermanager/lang/lv/lang.php
new file mode 100644
index 0000000..bb11056
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/lang.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aivars Miška <allefm@gmail.lv>
+ */
+$lang['menu']                  = 'Lietotāju pārvaldnieks';
+$lang['noauth']                = '(lietotāju autentifikācijas nav)';
+$lang['nosupport']             = '(lietotāju pārvaldība netiek uzturēta)';
+$lang['badauth']               = 'nederīgs autentifikācijas mehānisms';
+$lang['user_id']               = 'Lietotājs';
+$lang['user_pass']             = 'Parole';
+$lang['user_name']             = 'Vārds/uzvārds';
+$lang['user_mail']             = 'Epasts';
+$lang['user_groups']           = 'Grupas';
+$lang['field']                 = 'Lauks';
+$lang['value']                 = 'Vērtība';
+$lang['add']                   = 'Pielikt';
+$lang['delete']                = 'Dzēst';
+$lang['delete_selected']       = 'Dzēst izvēlēto';
+$lang['edit']                  = 'Labot';
+$lang['edit_prompt']           = 'Labot šo lietotāju';
+$lang['modify']                = 'Saglabāt izmaiņas';
+$lang['search']                = 'Meklēšana';
+$lang['search_prompt']         = 'Meklēt';
+$lang['clear']                 = 'Noņemt meklēšanas filtru';
+$lang['filter']                = 'Filtrs';
+$lang['summary']               = 'Lietotāji %1$d.- %2$d. no %3$d atrastajiem. Pavisam %4$d lietotāji.';
+$lang['nonefound']             = 'Neviens nav atrasts. Pavisam %d lietotāju.';
+$lang['delete_ok']             = 'Dzēsti %d lietotāji';
+$lang['delete_fail']           = '%d neizdevās izdzēst.';
+$lang['update_ok']             = 'Lietotāja dati saglabāti';
+$lang['update_fail']           = 'Lietotāja dati nav saglabāti';
+$lang['update_exists']         = 'Lietotāja vārds nav nomainīts, norādīto vārdu (%s) kāds jau izmanto (pārējās izmaiņas tiks saglabātas).';
+$lang['start']                 = 'sākums';
+$lang['prev']                  = 'iepriekšējais';
+$lang['next']                  = 'nākamais';
+$lang['last']                  = 'pēdējais';
+$lang['edit_usermissing']      = 'Norādītais lietotājs nav atrasts, varbūt tas ir dzēst vai mainīts citur.';
+$lang['user_notify']           = 'Paziņot lietotājam';
+$lang['note_notify']           = 'Paziņojumus izsūta tikai tad, ja lietotājam dod jaunu paroli.';
+$lang['note_group']            = 'Ja nenorāda grupu, lietotāju pievieno noklusētajai grupai (%s).';
+$lang['note_pass']             = 'Ja paroles lauku atstāj tukšu un atzīmē paziņošanu lietotājam, parole tiks ģenerēta automātiski.';
+$lang['add_ok']                = 'Lietotājs veiksmīgi pievienots';
+$lang['add_fail']              = 'Lietotājs nav pievienots.';
+$lang['notify_ok']             = 'Paziņojums izsūtīts.';
+$lang['notify_fail']           = 'Nevar izsūtīt paziņojumu.';
diff --git a/wiki/lib/plugins/usermanager/lang/lv/list.txt b/wiki/lib/plugins/usermanager/lang/lv/list.txt
new file mode 100644
index 0000000..44a10d9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/lv/list.txt
@@ -0,0 +1 @@
+===== Lietotāju saraksts =====
diff --git a/wiki/lib/plugins/usermanager/lang/mk/add.txt b/wiki/lib/plugins/usermanager/lang/mk/add.txt
new file mode 100644
index 0000000..c90121d
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mk/add.txt
@@ -0,0 +1 @@
+===== Додај корисник =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mk/delete.txt b/wiki/lib/plugins/usermanager/lang/mk/delete.txt
new file mode 100644
index 0000000..8a6b5e9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mk/delete.txt
@@ -0,0 +1 @@
+===== Избриши корисник =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mk/edit.txt b/wiki/lib/plugins/usermanager/lang/mk/edit.txt
new file mode 100644
index 0000000..da63061
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mk/edit.txt
@@ -0,0 +1 @@
+===== Уреди корисник =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mk/intro.txt b/wiki/lib/plugins/usermanager/lang/mk/intro.txt
new file mode 100644
index 0000000..747d009
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mk/intro.txt
@@ -0,0 +1 @@
+===== Менаџер за корисник =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mk/lang.php b/wiki/lib/plugins/usermanager/lang/mk/lang.php
new file mode 100644
index 0000000..97ef513
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mk/lang.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Macedonian language file
+ *
+ * @author Dimitar Talevski <dimi3.14@gmail.com>
+ */
+$lang['menu']                  = 'Менаџер за корисник';
+$lang['noauth']                = '(автентикација на корисник не е достапна)';
+$lang['nosupport']             = '(менаџирање на корисник не е поддржано)';
+$lang['badauth']               = 'невалиден механизам за автентикација';
+$lang['user_id']               = 'Корисник';
+$lang['user_pass']             = 'Лозинка';
+$lang['user_name']             = 'Вистинско име';
+$lang['user_mail']             = 'Е-пошта';
+$lang['user_groups']           = 'Групи';
+$lang['field']                 = 'Поле';
+$lang['value']                 = 'Вредност';
+$lang['add']                   = 'Додај';
+$lang['delete']                = 'Избриши';
+$lang['delete_selected']       = 'Избриши ги избраните';
+$lang['edit']                  = 'Уреди';
+$lang['edit_prompt']           = 'Уреди го овој корисник';
+$lang['modify']                = 'Зачувај промени';
+$lang['search']                = 'Барај';
+$lang['search_prompt']         = 'Изврши пребарување';
+$lang['clear']                 = 'Ресетирај го филтерот за пребарување';
+$lang['filter']                = 'Филтер';
+$lang['delete_ok']             = '%d корисници се избришани';
+$lang['delete_fail']           = '%d не успееја да се избришат.';
+$lang['update_ok']             = 'Корисникот е успешно ажуриран';
+$lang['update_fail']           = 'Корисникот не е успешно ажуриран';
+$lang['start']                 = 'почеток';
+$lang['prev']                  = 'претходна';
+$lang['next']                  = 'следна';
+$lang['last']                  = 'последна';
+$lang['user_notify']           = 'Извести го корисникот';
+$lang['add_ok']                = 'Корисникот е успешно додаден';
+$lang['add_fail']              = 'Додавањето на корисникот не е успешно';
diff --git a/wiki/lib/plugins/usermanager/lang/mk/list.txt b/wiki/lib/plugins/usermanager/lang/mk/list.txt
new file mode 100644
index 0000000..651462e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mk/list.txt
@@ -0,0 +1 @@
+===== Листа со корисници =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mr/add.txt b/wiki/lib/plugins/usermanager/lang/mr/add.txt
new file mode 100644
index 0000000..fc3a877
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mr/add.txt
@@ -0,0 +1 @@
+====== सदस्य नोंद करा ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mr/delete.txt b/wiki/lib/plugins/usermanager/lang/mr/delete.txt
new file mode 100644
index 0000000..cf0e485
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mr/delete.txt
@@ -0,0 +1 @@
+====== सदस्य डिलीट करा ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mr/edit.txt b/wiki/lib/plugins/usermanager/lang/mr/edit.txt
new file mode 100644
index 0000000..2d3d649
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mr/edit.txt
@@ -0,0 +1 @@
+====== सदस्य बदला ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mr/intro.txt b/wiki/lib/plugins/usermanager/lang/mr/intro.txt
new file mode 100644
index 0000000..9253b32
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mr/intro.txt
@@ -0,0 +1 @@
+====== सदस्य व्यवस्थापक ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/mr/lang.php b/wiki/lib/plugins/usermanager/lang/mr/lang.php
new file mode 100644
index 0000000..8915678
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mr/lang.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Marathi language file
+ *
+ * @author ghatothkach@hotmail.com
+ * @author Padmanabh Kulkarni <kulkarnipadmanabh@gmail.com>
+ * @author Padmanabh Kulkarni<kulkarnipadmanabh@gmail.com>
+ * @author shantanoo@gmail.com
+ */
+$lang['menu']                  = 'सदस्य व्यवस्थापक';
+$lang['noauth']                = '( सदस्य अधिकृत करण्याची सुविधा नाही )';
+$lang['nosupport']             = '( सदस्य व्यवस्थापन उपलब्ध नाही )';
+$lang['badauth']               = 'अधिकृत करण्याची व्यवस्था अवैध';
+$lang['user_id']               = 'सदस्य';
+$lang['user_pass']             = 'पासवर्ड';
+$lang['user_name']             = 'खरे नाव';
+$lang['user_mail']             = 'ईमेल';
+$lang['user_groups']           = 'गट';
+$lang['field']                 = 'रकाना';
+$lang['value']                 = 'किम्मत';
+$lang['add']                   = 'जोड़ा';
+$lang['delete']                = 'डिलीट';
+$lang['delete_selected']       = 'निवडलेले डिलीट करा';
+$lang['edit']                  = 'संपादन';
+$lang['edit_prompt']           = 'या सदस्याची माहिती बदला';
+$lang['modify']                = 'बदल सुरक्षित करा';
+$lang['search']                = 'शोध';
+$lang['search_prompt']         = 'शोध करा';
+$lang['clear']                 = 'शोधाचे निकष बदला';
+$lang['filter']                = 'निकष';
+$lang['summary']               = 'सापडलेल्या %3$d सदस्यापैकी %1$d ते %2$d दाखवले आहेत. एकूण सदस्या %4$d.';
+$lang['nonefound']             = 'एकही सदस्य मिळाला नाही. एकूण सदस्य %d.';
+$lang['delete_ok']             = '%d सदस्य डिलीट केले.';
+$lang['delete_fail']           = '%d डिलीट करू शकलो नाही.';
+$lang['update_ok']             = 'सदस्याची माहिती यशस्वीरीत्या बदलली आहे';
+$lang['update_fail']           = 'सदस्याची माहिती बदलता आली नाही';
+$lang['update_exists']         = 'सदस्याचे नाव बदलू शकलो नाही. %s हे नाव आधीच अस्तित्वात आहे. ( इतर सर्व बदल केले जातील )';
+$lang['start']                 = 'सुरुवात';
+$lang['prev']                  = 'आधीचं';
+$lang['next']                  = 'पुढचं';
+$lang['last']                  = 'शेवटचं';
+$lang['edit_usermissing']      = 'दिलेला सदस्य सापडला नाही. तो कदाचित डिलीट झाला असेल किंवा बदलला गेला असेल.';
+$lang['user_notify']           = 'सदस्याला सूचित करा.';
+$lang['note_notify']           = 'सदस्याला नवीन पासवर्ड दिला तरच सूचनेचे ईमेल पाठवले जातात.';
+$lang['note_group']            = 'नवीन सदस्य जर गट निवडला नसेल तर %s या गटात टाकले जातील.';
+$lang['note_pass']             = 'पासवर्डचा रकाना रिकामा ठेवल्यास व सदस्य सूचना व्यवस्था चालू असल्यास पासवर्ड आपोआप तयार केला जाईल.';
+$lang['add_ok']                = 'सदस्य यशस्वीरीत्या नोंद झाला';
+$lang['add_fail']              = 'सदस्याची नोंद झाली नाही';
+$lang['notify_ok']             = 'सूचनेचा ईमेल पाठवला';
+$lang['notify_fail']           = 'सूचनेचा ईमेल पाठवला गेला नाही';
diff --git a/wiki/lib/plugins/usermanager/lang/mr/list.txt b/wiki/lib/plugins/usermanager/lang/mr/list.txt
new file mode 100644
index 0000000..ab69067
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/mr/list.txt
@@ -0,0 +1 @@
+====== सदस्य यादी ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ne/add.txt b/wiki/lib/plugins/usermanager/lang/ne/add.txt
new file mode 100644
index 0000000..868b12a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ne/add.txt
@@ -0,0 +1 @@
+=====प्रयोगकर्ता थप्नुहोस् =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ne/delete.txt b/wiki/lib/plugins/usermanager/lang/ne/delete.txt
new file mode 100644
index 0000000..4441c83
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ne/delete.txt
@@ -0,0 +1 @@
+===== प्रयोगकर्ता मेट्नुहोस =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ne/edit.txt b/wiki/lib/plugins/usermanager/lang/ne/edit.txt
new file mode 100644
index 0000000..040d269
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ne/edit.txt
@@ -0,0 +1 @@
+===== प्रयोगकर्ता सम्पादन गर्नुहोस=====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ne/intro.txt b/wiki/lib/plugins/usermanager/lang/ne/intro.txt
new file mode 100644
index 0000000..de08e48
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ne/intro.txt
@@ -0,0 +1 @@
+====== प्रयोगकर्ता व्यवस्थापक ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ne/lang.php b/wiki/lib/plugins/usermanager/lang/ne/lang.php
new file mode 100644
index 0000000..9a44d19
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ne/lang.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
+ * @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
+ * @author Saroj Dhakal<lotusnagarkot@yahoo.com>
+ */
+$lang['menu']                  = 'प्रयोगकर्ता व्यवस्थापक';
+$lang['noauth']                = '(प्रयोगकर्ता  प्रमाणिकरण  उपलब्ध छैन)';
+$lang['nosupport']             = '(प्रयोगकर्ता व्यवस्थापन समर्थित छैन)';
+$lang['badauth']               = 'अमान्य प्रमाणिकरण विधि';
+$lang['user_id']               = 'प्रयोगकर्ता';
+$lang['user_pass']             = 'प्रवेशशब्द';
+$lang['user_name']             = 'वास्तविक नाम';
+$lang['user_mail']             = 'इमेल';
+$lang['user_groups']           = 'समूह ';
+$lang['field']                 = 'क्षेत्र';
+$lang['value']                 = 'मान ';
+$lang['add']                   = 'थप्नुहोस्';
+$lang['delete']                = 'मेट्नुहोस्';
+$lang['delete_selected']       = 'सेलेक्ट गरिएको मेट्नुहोस्';
+$lang['edit']                  = 'सम्पादन गर्नुहोस्';
+$lang['edit_prompt']           = 'यो प्रयोगकर्ता सम्पादन गर्नुहोस् ';
+$lang['modify']                = 'परिवर्तन वचत गर्नुहोस्';
+$lang['search']                = 'खोज';
+$lang['search_prompt']         = 'खोज्नुहोस्';
+$lang['clear']                 = 'खोज फिल्टर पूर्वरुपमा फर्काउनुहोस्';
+$lang['filter']                = 'फिल्टर ';
+$lang['summary']               = 'देखाउदै  %1$d-%2$d of %3$d भेटिएका   %4$d कुल प्रयोगकर्ता मध्येबाट ।';
+$lang['nonefound']             = '%d कुल प्रयोगकर्ता। कुनै पनि प्रयोगकर्ता भेटिएन ।';
+$lang['delete_ok']             = '%d प्रयोगकर्ता मेटिए';
+$lang['delete_fail']           = '%d प्रयोगकर्ता हटाउन सकिएन ';
+$lang['update_ok']             = 'प्रयोगकर्ता सफलतापूर्वक अध्यावधिक गरियो ';
+$lang['update_fail']           = 'प्रयोगकर्ता अध्यावधिक कार्य असफल';
+$lang['update_exists']         = 'पर्ययोगकर्ताको नाम परिवर्तन असफल, दिइएको प्रयोगकर्ता नाम( %s) पहिले देखि रहेको छ। ( यसबाहेकका परिवर्रनहरू गरिएका छन्)';
+$lang['start']                 = 'सुरु गर्नुहोस्';
+$lang['prev']                  = 'पहिलेको ';
+$lang['next']                  = 'पछिको';
+$lang['last']                  = 'अन्तिम';
+$lang['edit_usermissing']      = 'छानिएको प्रयोगकर्ता भेटिएन,  खुलाइएको प्रयोगकर्ता मेटिएको या कतै परिवर्तन गरिएको हुनसक्छ।';
+$lang['user_notify']           = 'प्रयोगकर्तालाई जानकारी दिनुहोस् ';
+$lang['note_notify']           = 'जानकारी इमेल तब मात्र पठाइन्छ जब प्रयोगकर्तालाई नयाँ प्रवेश शब्द दिइन्छ।';
+$lang['note_group']            = 'नयाँ प्रयोगकर्तालाई पूर्वनिर्धारित समूह नखुलाएमा (%s) मा समावेश गराइनेछ ।';
+$lang['note_pass']             = 'प्रवेश शव्द क्षेत्र खाली राखेमा प्रवेश शव्द स्वत: निर्माण हुनेछ र प्रयोगकर्तालाई जानकारी पठइने छ ।';
+$lang['add_ok']                = 'प्रोगकर्ता सफलतापूर्वक थपियो';
+$lang['add_fail']              = 'प्रयोगकर्ता थप्ने कार्य असफल';
+$lang['notify_ok']             = 'जानकारी पत्र पठाइयो';
+$lang['notify_fail']           = 'जानकारी पत्र पठाउन सकिएन ';
diff --git a/wiki/lib/plugins/usermanager/lang/ne/list.txt b/wiki/lib/plugins/usermanager/lang/ne/list.txt
new file mode 100644
index 0000000..ece94b3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ne/list.txt
@@ -0,0 +1 @@
+===== प्रयोगकर्ता सुची =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/nl/add.txt b/wiki/lib/plugins/usermanager/lang/nl/add.txt
new file mode 100644
index 0000000..992d9f3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/add.txt
@@ -0,0 +1 @@
+===== Nieuwe gebruiker =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/nl/delete.txt b/wiki/lib/plugins/usermanager/lang/nl/delete.txt
new file mode 100644
index 0000000..ad26e05
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/delete.txt
@@ -0,0 +1 @@
+===== Verwijder gebruiker =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/nl/edit.txt b/wiki/lib/plugins/usermanager/lang/nl/edit.txt
new file mode 100644
index 0000000..0d58e48
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/edit.txt
@@ -0,0 +1 @@
+===== Gebruiker wijzigen =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/nl/import.txt b/wiki/lib/plugins/usermanager/lang/nl/import.txt
new file mode 100644
index 0000000..3a9320e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/import.txt
@@ -0,0 +1,8 @@
+===== Massa-import van gebruikers =====
+
+Hiervoor is een CSV-bestand nodig van de gebruikers met minstens vier kolommen. De kolommen moeten bevatten, in deze volgorde: gebruikers-id, complete naam, e-mailadres en groepen.
+Het CSV-velden moeten worden gescheiden met komma's (,) en de teksten moeten worden omringd met dubbele aanhalingstekens (%%""%%). Backslash (\) kan worden gebruikt om te escapen.
+Voor een voorbeeld van een werkend bestand, probeer de "Exporteer Gebruikers" functie hierboven.
+Dubbele gebruikers-id's zullen worden genegeerd.
+
+Een wachtwoord zal worden gegenereerd en gemaild naar elke gebruiker die succesvol is geïmporteerd.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/nl/intro.txt b/wiki/lib/plugins/usermanager/lang/nl/intro.txt
new file mode 100644
index 0000000..819e64d
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/intro.txt
@@ -0,0 +1 @@
+====== Gebruikersbeheer ======
diff --git a/wiki/lib/plugins/usermanager/lang/nl/lang.php b/wiki/lib/plugins/usermanager/lang/nl/lang.php
new file mode 100644
index 0000000..32c802e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/lang.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wouter Schoot <wouter@schoot.org>
+ * @author John de Graaff <john@de-graaff.net>
+ * @author Niels Schoot <niels.schoot@quintiq.com>
+ * @author Dion Nicolaas <dion@nicolaas.net>
+ * @author Danny Rotsaert <danny.rotsaert@edpnet.be>
+ * @author Marijn Hofstra <hofstra.m@gmail.com>
+ * @author Timon Van Overveldt <timonvo@gmail.com>
+ * @author Ricardo Guijt <ricardoguijt@gmail.com>
+ * @author Gerrit Uitslag <klapinklapin@gmail.com>
+ * @author Rene <wllywlnt@yahoo.com>
+ * @author Wesley de Weerd <wesleytiel@gmail.com>
+ */
+$lang['menu']                  = 'Gebruikersbeheer';
+$lang['noauth']                = '(gebruikersauthenticatie niet beschikbaar)';
+$lang['nosupport']             = '(gebruikersbeheer niet ondersteund)';
+$lang['badauth']               = 'ongeldige authenticatiemethode';
+$lang['user_id']               = 'Gebruiker';
+$lang['user_pass']             = 'Wachtwoord';
+$lang['user_name']             = 'Volledige naam';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Groepen';
+$lang['field']                 = 'Veld';
+$lang['value']                 = 'Waarde';
+$lang['add']                   = 'Toevoegen';
+$lang['delete']                = 'Verwijder';
+$lang['delete_selected']       = 'Verwijder geselecteerden';
+$lang['edit']                  = 'Wijzigen';
+$lang['edit_prompt']           = 'Wijzig deze gebruiker';
+$lang['modify']                = 'Wijzigingen opslaan';
+$lang['search']                = 'Zoek';
+$lang['search_prompt']         = 'Voer zoekopdracht uit';
+$lang['clear']                 = 'Verwijder zoekfilter';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Exporteer Alle Gebruikers (CSV)';
+$lang['export_filtered']       = 'Exporteer Gefilterde Gebruikers (CSV)';
+$lang['import']                = 'Importeer Nieuwe Gebruikers';
+$lang['line']                  = 'Regelnummer';
+$lang['error']                 = 'Foutmelding';
+$lang['summary']               = 'Weergegeven gebruikers %1$d-%2$d van %3$d gevonden. %4$d gebruikers in totaal.';
+$lang['nonefound']             = 'Geen gebruikers gevonden. %d gebruikers in totaal.';
+$lang['delete_ok']             = '%d gebruikers verwijderd';
+$lang['delete_fail']           = '%d kon niet worden verwijderd.';
+$lang['update_ok']             = 'Gebruiker succesvol gewijzigd';
+$lang['update_fail']           = 'Gebruiker wijzigen mislukt';
+$lang['update_exists']         = 'Gebruikersnaam veranderen mislukt, de opgegeven gebruikersnaam (%s) bestaat reeds (overige aanpassingen worden wel doorgevoerd).';
+$lang['start']                 = 'start';
+$lang['prev']                  = 'vorige';
+$lang['next']                  = 'volgende';
+$lang['last']                  = 'laatste';
+$lang['edit_usermissing']      = 'Geselecteerde gebruiker niet gevonden, de opgegeven gebruikersnaam kan verwijderd zijn of elders aangepast.';
+$lang['user_notify']           = 'Gebruiker notificeren';
+$lang['note_notify']           = 'Notificatie-e-mails worden alleen verstuurd wanneer de gebruiker een nieuw wachtwoord wordt toegekend.';
+$lang['note_group']            = 'Nieuwe gebruikers zullen aan de standaard groep (%s) worden toegevoegd als er geen groep opgegeven is.';
+$lang['note_pass']             = 'Het wachtwoord wordt automatisch gegenereerd als het veld wordt leeggelaten en gebruikersnotificaties aanstaan.';
+$lang['add_ok']                = 'Gebruiker succesvol toegevoegd';
+$lang['add_fail']              = 'Gebruiker kon niet worden toegevoegd';
+$lang['notify_ok']             = 'Notificatie-e-mail verzonden';
+$lang['notify_fail']           = 'Notificatie-e-mail kon niet worden verzonden';
+$lang['import_userlistcsv']    = 'Gebruikerslijst (CSV-bestand):';
+$lang['import_header']         = 'Meest recente import - Gevonden fouten';
+$lang['import_success_count']  = 'Gebruikers importeren: %d gebruikers gevonden, %d geïmporteerd';
+$lang['import_failure_count']  = 'Gebruikers importeren: %d mislukt. Fouten zijn hieronder weergegeven.';
+$lang['import_error_fields']   = 'Onvoldoende velden, gevonden %d, nodig 4.';
+$lang['import_error_baduserid'] = 'Gebruikers-id mist';
+$lang['import_error_badname']  = 'Verkeerde naam';
+$lang['import_error_badmail']  = 'Verkeerd e-mailadres';
+$lang['import_error_upload']   = 'Importeren mislukt. Het CSV bestand kon niet worden geüpload of is leeg.';
+$lang['import_error_readfail'] = 'Importeren mislukt. Lezen van het geüploade bestand is mislukt.';
+$lang['import_error_create']   = 'Aanmaken van de gebruiker was niet mogelijk.';
+$lang['import_notify_fail']    = 'Notificatiebericht kon niet naar de geïmporteerde gebruiker worden verstuurd, %s met e-mail %s.';
+$lang['import_downloadfailures'] = 'Download de gevonden fouten als CSV voor correctie';
+$lang['addUser_error_missing_pass'] = 'Vul een wachtwoord in of activeer de gebruikers notificatie om een wachtwoord te genereren.';
+$lang['addUser_error_pass_not_identical'] = 'De ingevulde wachtwoorden komen niet overeen';
+$lang['addUser_error_modPass_disabled'] = 'Het aanpassen van wachtwoorden is momenteel uitgeschakeld';
+$lang['addUser_error_name_missing'] = 'Vul een naam in voor de nieuwe gebruiker';
+$lang['addUser_error_modName_disabled'] = 'Het aanpassen van namen is momenteel uitgeschakeld';
+$lang['addUser_error_mail_missing'] = 'Vul een email adres in voor de nieuwe gebruiker';
+$lang['addUser_error_modMail_disabled'] = 'Het aanpassen van uw email adres is momenteel uitgeschakeld';
+$lang['addUser_error_create_event_failed'] = 'Een plugin heeft voorkomen dat de nieuwe gebruiker wordt toegevoegd . Bekijk mogelijke andere berichten voor meer informatie.';
diff --git a/wiki/lib/plugins/usermanager/lang/nl/list.txt b/wiki/lib/plugins/usermanager/lang/nl/list.txt
new file mode 100644
index 0000000..a9aac84
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/nl/list.txt
@@ -0,0 +1 @@
+===== Gebruikerslijst =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/no/add.txt b/wiki/lib/plugins/usermanager/lang/no/add.txt
new file mode 100644
index 0000000..4fb9cf2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/add.txt
@@ -0,0 +1 @@
+===== Legg til bruker =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/no/delete.txt b/wiki/lib/plugins/usermanager/lang/no/delete.txt
new file mode 100644
index 0000000..5501018
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/delete.txt
@@ -0,0 +1 @@
+===== Slett bruker =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/no/edit.txt b/wiki/lib/plugins/usermanager/lang/no/edit.txt
new file mode 100644
index 0000000..3dff0c9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/edit.txt
@@ -0,0 +1 @@
+===== Rediger bruker =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/no/import.txt b/wiki/lib/plugins/usermanager/lang/no/import.txt
new file mode 100644
index 0000000..5d96282
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/import.txt
@@ -0,0 +1,7 @@
+===== Masseimport av brukerer =====
+
+Er avhengig av en CSV-fil med brukere med minst fire felt. Feltene må inneholde i rekkefølge: brukernavn, fult navn, e-postadresse, og grupper.
+CSV-feltene separeres med komma (,) og tekst må avgrensen ved hjelp av anførselstegn (%%""%%). Omvendt skråtegn (\) brukes for å beskytte spesialtegn.
+Et eksempel på en CSV-fil kan lages ved å bruke «Eksportere brukere»-funksjonene over her. Dupliserte brukernavn vil bli ignorert.
+
+Et passord vil bli laget, og sendt via e-post til alle bruker som ble importert.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/no/intro.txt b/wiki/lib/plugins/usermanager/lang/no/intro.txt
new file mode 100644
index 0000000..c9e1e5b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/intro.txt
@@ -0,0 +1 @@
+===== Behandle brukere =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/no/lang.php b/wiki/lib/plugins/usermanager/lang/no/lang.php
new file mode 100644
index 0000000..8bd8894
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/lang.php
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Thomas Nygreen <nygreen@gmail.com>
+ * @author Arild Burud <arildb@met.no>
+ * @author Torkill Bruland <torkar-b@online.no>
+ * @author Rune M. Andersen <rune.andersen@gmail.com>
+ * @author Jakob Vad Nielsen (me@jakobnielsen.net)
+ * @author Kjell Tore Næsgaard <kjell.t.nasgaard@ntnu.no>
+ * @author Knut Staring <knutst@gmail.com>
+ * @author Lisa Ditlefsen <lisa@vervesearch.com>
+ * @author Erik Pedersen <erik.pedersen@shaw.ca>
+ * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
+ * @author Rune Rasmussen syntaxerror.no@gmail.com
+ * @author Jon Bøe <jonmagneboe@hotmail.com>
+ * @author Egil Hansen <egil@rosetta.no>
+ * @author Arne Hanssen <arne.hanssen@getmail.no>
+ */
+$lang['menu']                  = 'Behandle brukere';
+$lang['noauth']                = '(autentisering av brukere ikke tilgjengelig)';
+$lang['nosupport']             = '(behandling av brukere støttes ikke)';
+$lang['badauth']               = 'ugyldig autentiseringsmekanisme';
+$lang['user_id']               = 'Bruker';
+$lang['user_pass']             = 'Passord';
+$lang['user_name']             = 'Fullt navn';
+$lang['user_mail']             = 'E-post';
+$lang['user_groups']           = 'Grupper';
+$lang['field']                 = 'Felt';
+$lang['value']                 = 'Verdi';
+$lang['add']                   = 'Legg til';
+$lang['delete']                = 'Slett';
+$lang['delete_selected']       = 'Slett valgte';
+$lang['edit']                  = 'Rediger';
+$lang['edit_prompt']           = 'Rediger denne brukeren';
+$lang['modify']                = 'Lagre endringer';
+$lang['search']                = 'Søk';
+$lang['search_prompt']         = 'Start søk';
+$lang['clear']                 = 'Tilbakestill søkefilter';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Eksporter alle brukere (CSV)';
+$lang['export_filtered']       = 'Eksporter den filtrerte listen (CSV)';
+$lang['import']                = 'Importer nye brukere';
+$lang['line']                  = 'Linje nr.';
+$lang['error']                 = 'Feilmelding';
+$lang['summary']               = 'Viser brukere %1$d-%2$d av %3$d. %4$d users total.';
+$lang['nonefound']             = 'Ingen brukere funnet. %d brukere totalt.';
+$lang['delete_ok']             = '%d brukere slettet.';
+$lang['delete_fail']           = '%d kunne ikke slettes.';
+$lang['update_ok']             = 'Brukeren ble oppdatert';
+$lang['update_fail']           = 'Oppdatering av brukeren feilet';
+$lang['update_exists']         = 'Endring av brukernavn feilet. Det oppgitte brukernavnet (%s) eksisterer allerede (alle andre endringer vil bli gjort).';
+$lang['start']                 = 'første';
+$lang['prev']                  = 'forrige';
+$lang['next']                  = 'neste';
+$lang['last']                  = 'siste';
+$lang['edit_usermissing']      = 'Fant ikke valgte brukere. Det oppgitte brukernavnet kan ha blitt slettet eller endret et annet sted.';
+$lang['user_notify']           = 'Varsle bruker';
+$lang['note_notify']           = 'E-post med varsling blir bare sendt hvis brukeren blir gitt nytt passord.';
+$lang['note_group']            = 'Nye brukere vil bli lagt til standardgruppen (%s) hvis ingen gruppe oppgis.';
+$lang['note_pass']             = 'Et nytt passordet vil bli laget dersom passordfeltet er tomt og«Varsle bruker» er huket av.';
+$lang['add_ok']                = 'Brukeren ble lagt til';
+$lang['add_fail']              = 'Brukeren kunne ikke legges til';
+$lang['notify_ok']             = 'Varsling sendt';
+$lang['notify_fail']           = 'Varsling kunne ikke sendes';
+$lang['import_userlistcsv']    = 'Brukerliste (CSV):';
+$lang['import_header']         = 'Siste brukerimport - Liste med feil';
+$lang['import_success_count']  = 'Brukerimport: %d brukere ble funnet, %d av disse ble importert.';
+$lang['import_failure_count']  = 'Brukerimport: %d brukere ble ikke importert. Feilene blir listet under her.';
+$lang['import_error_fields']   = 'For få felt, fant %d, men trenger 4.';
+$lang['import_error_baduserid'] = 'Mangler brukernavn';
+$lang['import_error_badname']  = 'Noe feil med navn';
+$lang['import_error_badmail']  = 'Noe feil med e-postadressen';
+$lang['import_error_upload']   = 'Feil med import. Klarte ikke laste opp CSV-filen, eller så er denne tom.';
+$lang['import_error_readfail'] = 'Feil med import. Klarte ikke lese filen som er lastet opp.';
+$lang['import_error_create']   = 'Klarte ikke opprette brukeren';
+$lang['import_notify_fail']    = 'Melding til bruker kunne ikke bli sent for importerte bruker, %s med e-postadresse %s.';
+$lang['import_downloadfailures'] = 'Last ned feilende verdier som CSV for retting';
+$lang['addUser_error_missing_pass'] = 'Du må enten skrive inn et passord, eller slå på «Varsle bruker» slik at systemet selv lager et nytt passord';
+$lang['addUser_error_pass_not_identical'] = 'Passordene er ikk identisk';
+$lang['addUser_error_modPass_disabled'] = 'Endre passord er slått av.';
+$lang['addUser_error_name_missing'] = 'Skriv inn navnet til den nye brukeren';
+$lang['addUser_error_modName_disabled'] = 'Endre navn er slått av.';
+$lang['addUser_error_mail_missing'] = 'Skriv inn e-postadressen til den nye brukeren.';
+$lang['addUser_error_modMail_disabled'] = 'Endre e-postadresse er slått av.';
+$lang['addUser_error_create_event_failed'] = 'En utvidelse hindrer at den nye brukeren kan legges inn. Sjekk ev. andre tilbakemeldinger for mer informasjon.';
diff --git a/wiki/lib/plugins/usermanager/lang/no/list.txt b/wiki/lib/plugins/usermanager/lang/no/list.txt
new file mode 100644
index 0000000..40de64b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/no/list.txt
@@ -0,0 +1 @@
+===== Brukerliste =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pl/add.txt b/wiki/lib/plugins/usermanager/lang/pl/add.txt
new file mode 100644
index 0000000..a33f3ba
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/add.txt
@@ -0,0 +1 @@
+===== Dodawanie użytkownika =====
diff --git a/wiki/lib/plugins/usermanager/lang/pl/delete.txt b/wiki/lib/plugins/usermanager/lang/pl/delete.txt
new file mode 100644
index 0000000..72dd338
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/delete.txt
@@ -0,0 +1 @@
+===== Usuwanie użytkownika =====
diff --git a/wiki/lib/plugins/usermanager/lang/pl/edit.txt b/wiki/lib/plugins/usermanager/lang/pl/edit.txt
new file mode 100644
index 0000000..3c9d898
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/edit.txt
@@ -0,0 +1 @@
+===== Edycja użytkownika =====
diff --git a/wiki/lib/plugins/usermanager/lang/pl/import.txt b/wiki/lib/plugins/usermanager/lang/pl/import.txt
new file mode 100644
index 0000000..87a50e7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/import.txt
@@ -0,0 +1,6 @@
+===== Hurtowy import użytkowników =====
+
+Wymaga pliku CSV z co najmniej czterema kolumnami. Kolumny muszą zawierać, w kolejności: identyfikator użytkownika, imię i nazwisko, adres e-mail i grupy.
+Pola CSV powinny być oddzielone przecinkami (,) a łańcuchy znaków objęte znakami cudzysłowu (%%""%%). Aby ominąć znak z interpretacji należy użyć odwrotnego ukośnika (\). Za przykład pliku wypróbuj powyższą funkcję "Eksportuj użytkowników". Duplikaty identyfikatorów użytkowników będą ignorowane.
+
+Hasło zostanie wygenerowane i przesłane e-mailem do każdego pomyślnie zaimportowanego użytkownika.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pl/intro.txt b/wiki/lib/plugins/usermanager/lang/pl/intro.txt
new file mode 100644
index 0000000..da1cfea
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/intro.txt
@@ -0,0 +1 @@
+====== Menadżer użytkowników ======
diff --git a/wiki/lib/plugins/usermanager/lang/pl/lang.php b/wiki/lib/plugins/usermanager/lang/pl/lang.php
new file mode 100644
index 0000000..605057c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/lang.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Wojciech Lichota <wojciech@lichota.pl>
+ * @author Max <maxrb146@gmail.com>
+ * @author Grzegorz Żur <grzegorz.zur@gmail.com>
+ * @author Mariusz Kujawski <marinespl@gmail.com>
+ * @author Maciej Kurczewski <pipijajko@gmail.com>
+ * @author Sławomir Boczek <slawkens@gmail.com>
+ * @author sleshek <sleshek@wp.pl>
+ * @author Leszek Stachowski <shazarre@gmail.com>
+ * @author maros <dobrimaros@yahoo.pl>
+ * @author Grzegorz Widła <dzesdzes@gmail.com>
+ * @author Łukasz Chmaj <teachmeter@gmail.com>
+ * @author Begina Felicysym <begina.felicysym@wp.eu>
+ * @author Aoi Karasu <aoikarasu@gmail.com>
+ */
+$lang['menu']                  = 'Menadżer użytkowników';
+$lang['noauth']                = '(uwierzytelnienie użytkownika niemożliwe)';
+$lang['nosupport']             = '(zarządzanie użytkownikami niemożliwe)';
+$lang['badauth']               = 'błędny mechanizm uwierzytelniania';
+$lang['user_id']               = 'Nazwa użytkownika';
+$lang['user_pass']             = 'Hasło';
+$lang['user_name']             = 'Użytkownik';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Grupy';
+$lang['field']                 = 'Pole';
+$lang['value']                 = 'Wartość';
+$lang['add']                   = 'Dodaj';
+$lang['delete']                = 'Usuń';
+$lang['delete_selected']       = 'Usuń zaznaczone';
+$lang['edit']                  = 'Edytuj';
+$lang['edit_prompt']           = 'Edytuj użytkownika';
+$lang['modify']                = 'Zapisz zmiany';
+$lang['search']                = 'Szukaj';
+$lang['search_prompt']         = 'Rozpocznij przeszukiwanie';
+$lang['clear']                 = 'Resetuj filtr przeszukiwania';
+$lang['filter']                = 'Filtr';
+$lang['export_all']            = 'Eksportuj wszystkich użytkowników (CSV)';
+$lang['export_filtered']       = 'Eksportuj wyfiltrowaną listę użytkowników (CSV) ';
+$lang['import']                = 'Importuj nowych użytkowników';
+$lang['line']                  = 'Numer linii';
+$lang['error']                 = 'Błędna wiadomość';
+$lang['summary']               = 'Użytkownicy %1$d-%2$d z %3$d znalezionych. Całkowita ilość użytkowników %4$d.';
+$lang['nonefound']             = 'Nie znaleziono użytkowników. Całkowita ilość użytkowników %d.';
+$lang['delete_ok']             = 'Usunięto %d użytkowników.';
+$lang['delete_fail']           = 'Błąd przy usuwaniu %d użytkowników.';
+$lang['update_ok']             = 'Dane użytkownika zostały zmienione!';
+$lang['update_fail']           = 'Błąd przy zmianie danych użytkownika!';
+$lang['update_exists']         = 'Błąd przy zmianie nazwy użytkownika, użytkownik o tej nazwie (%s) już istnieje (inne zmiany zostały wprowadzone).';
+$lang['start']                 = 'początek';
+$lang['prev']                  = 'poprzedni';
+$lang['next']                  = 'następny';
+$lang['last']                  = 'ostatni';
+$lang['edit_usermissing']      = 'Nie znaleziono wybranego użytkownika, nazwa użytkownika mogła zostać zmieniona lub usunięta.';
+$lang['user_notify']           = 'Powiadamianie użytkownika';
+$lang['note_notify']           = 'Powiadomienia wysyłane są tylko jeżeli zmieniono hasło użytkownika.';
+$lang['note_group']            = 'Nowy użytkownik zostanie dodany do grupy domyślnej (%s) jeśli nie podano innej grupy.';
+$lang['note_pass']             = 'Jeśli pole będzie puste i powiadamianie użytkownika jest włączone, hasło zostanie automatyczne wygenerowane.';
+$lang['add_ok']                = 'Dodano użytkownika';
+$lang['add_fail']              = 'Dodawanie użytkownika nie powiodło się';
+$lang['notify_ok']             = 'Powiadomienie zostało wysłane';
+$lang['notify_fail']           = 'Wysyłanie powiadomienia nie powiodło się';
+$lang['import_userlistcsv']    = 'Plik z listą użytkowników (CSV):';
+$lang['import_header']         = 'Najnowszy import - błędy';
+$lang['import_success_count']  = 'Import użytkowników: znaleziono %d użytkowników z czego pomyślnie zaimportowano %d.';
+$lang['import_failure_count']  = 'Import użytkowników: %d błędów. Błędy wymieniono poniżej.';
+$lang['import_error_fields']   = 'Niewystarczająca ilość pól, znalezione %d, wymagane 4.';
+$lang['import_error_baduserid'] = 'Brak id użytkownika';
+$lang['import_error_badname']  = 'Błędna nazwa';
+$lang['import_error_badmail']  = 'Błędny email';
+$lang['import_error_upload']   = 'Importowanie nie powiodło się. Nie można załadować pliku CSV lub jest on pusty.';
+$lang['import_error_readfail'] = 'Ładownie przerwane. Nie można odczytać pliku. ';
+$lang['import_error_create']   = 'Nie można utworzyć użytkownika';
+$lang['import_notify_fail']    = 'Powiadomienie nie mogło być wysłane do zaimportowanego użytkownika %s o e-mailu %s.';
+$lang['import_downloadfailures'] = 'W celu korekty pobierz niepowodzenia jako plik CSV';
+$lang['addUser_error_missing_pass'] = 'Ustaw hasło albo aktywuj powiadomienia użytkowników aby móc włączyć generowanie haseł.';
+$lang['addUser_error_pass_not_identical'] = 'Wprowadzone różne hasła ';
+$lang['addUser_error_modPass_disabled'] = 'Modyfikacja haseł została wyłączona';
+$lang['addUser_error_name_missing'] = 'Wprowadź nazwę dla nowego użytkownika';
+$lang['addUser_error_modName_disabled'] = 'Modyfikacja nazw została wyłączona ';
+$lang['addUser_error_mail_missing'] = 'Wprowadź adres email dla nowego użytkownika';
+$lang['addUser_error_modMail_disabled'] = 'Modyfikacja adresów email została wyłączona ';
+$lang['addUser_error_create_event_failed'] = 'Wtyczka uniemożliwiła dodanie nowego użytkownika. Przejrzyj możliwe inne komunikaty, aby uzyskać więcej informacji.';
diff --git a/wiki/lib/plugins/usermanager/lang/pl/list.txt b/wiki/lib/plugins/usermanager/lang/pl/list.txt
new file mode 100644
index 0000000..57da2e6
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pl/list.txt
@@ -0,0 +1 @@
+===== Lista użytkowników =====
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/add.txt b/wiki/lib/plugins/usermanager/lang/pt-br/add.txt
new file mode 100644
index 0000000..759ed68
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/add.txt
@@ -0,0 +1 @@
+===== Adicionar usuário =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/delete.txt b/wiki/lib/plugins/usermanager/lang/pt-br/delete.txt
new file mode 100644
index 0000000..9d18d58
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/delete.txt
@@ -0,0 +1 @@
+===== Excluir usuário =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/edit.txt b/wiki/lib/plugins/usermanager/lang/pt-br/edit.txt
new file mode 100644
index 0000000..a1be1c8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/edit.txt
@@ -0,0 +1 @@
+===== Editar usuário =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/import.txt b/wiki/lib/plugins/usermanager/lang/pt-br/import.txt
new file mode 100644
index 0000000..d692bb3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/import.txt
@@ -0,0 +1,9 @@
+===== Importação de Usuários em Massa =====
+
+Requer um arquivo CSV de usuários com pelo menos quatro colunas.
+As colunas devem conter, nesta ordem: id-usuário, nome completo, endereço de e-mail e grupos.
+Os campos CSV devem ser separados por vírgulas ( , ) e nomes delimitados por aspas (). Barra invertida (\ ) pode ser usado para escapar nomes.
+Para um exemplo de um arquivo adequado , tente a função Exportar usuários acima.
+Usuário ids duplicados serão ignorados.
+
+A senha será gerada e enviada para cada usuário importado com sucesso.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/intro.txt b/wiki/lib/plugins/usermanager/lang/pt-br/intro.txt
new file mode 100644
index 0000000..5f33996
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/intro.txt
@@ -0,0 +1 @@
+====== Gerenciamento de Usuários ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/lang.php b/wiki/lib/plugins/usermanager/lang/pt-br/lang.php
new file mode 100644
index 0000000..1305c59
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/lang.php
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
+ * @author Felipe Castro <fefcas@gmail.com>
+ * @author Lucien Raven <lucienraven@yahoo.com.br>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Flávio Veras <flaviove@gmail.com>
+ * @author Jeferson Propheta <jeferson.propheta@gmail.com>
+ * @author jair.henrique <jair.henrique@gmail.com>
+ * @author Luis Dantas <luis@dantas.com>
+ * @author Sergio Motta <sergio@cisne.com.br>
+ * @author Isaias Masiero Filho <masiero@masiero.org>
+ * @author Balaco Baco <balacobaco@imap.cc>
+ * @author Victor Westmann <victor.westmann@gmail.com>
+ * @author Leone Lisboa Magevski <leone1983@gmail.com>
+ * @author Dário Estevão <darioems@gmail.com>
+ * @author Juliano Marconi Lanigra <juliano.marconi@gmail.com>
+ * @author Guilherme Cardoso <guicardoso@gmail.com>
+ * @author Viliam Dias <viliamjr@gmail.com>
+ */
+$lang['menu']                  = 'Gerenciamento de Usuários';
+$lang['noauth']                = '(o gerenciamento de usuários não está disponível)';
+$lang['nosupport']             = '(o gerenciamento de usuários não é suportado)';
+$lang['badauth']               = 'mecanismo de autenticação inválido';
+$lang['user_id']               = 'Usuário';
+$lang['user_pass']             = 'Senha';
+$lang['user_name']             = 'Nome real';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Grupos';
+$lang['field']                 = 'Campo';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Adicionar';
+$lang['delete']                = 'Excluir';
+$lang['delete_selected']       = 'Excluir a seleção';
+$lang['edit']                  = 'Editar';
+$lang['edit_prompt']           = 'Editar esse usuário';
+$lang['modify']                = 'Salvar as alterações';
+$lang['search']                = 'Pesquisar';
+$lang['search_prompt']         = 'Executar a pesquisa';
+$lang['clear']                 = 'Limpar o filtro de pesquisa';
+$lang['filter']                = 'Filtro';
+$lang['export_all']            = 'Exportar Todos Usuários (CSV)';
+$lang['export_filtered']       = 'Exportar lista de Usuários Filtrados (CSV)';
+$lang['import']                = 'Importar Novos Usuários';
+$lang['line']                  = 'Linha Nº.';
+$lang['error']                 = 'Mensagem de Erro';
+$lang['summary']               = 'Exibindo usuários %1$d-%2$d de %3$d encontrados. %4$d usuários no total.';
+$lang['nonefound']             = 'Nenhum usuário encontrado. %d usuários no total.';
+$lang['delete_ok']             = '%d usuários excluídos';
+$lang['delete_fail']           = 'Erro na exclusão de %d usuários.';
+$lang['update_ok']             = 'Usuário atualizado com sucesso';
+$lang['update_fail']           = 'Não foi possível atualizar o usuário';
+$lang['update_exists']         = 'Não foi possível mudar o nome do usuário. O nome especificado (%s) já existe (as outras mudanças serão aplicadas).';
+$lang['start']                 = 'primeira';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'próxima';
+$lang['last']                  = 'última';
+$lang['edit_usermissing']      = 'O usuário selecionado não foi encontrado, ele foi excluído ou teve o seu nome modificado.';
+$lang['user_notify']           = 'Notificar o usuário';
+$lang['note_notify']           = 'E-mails de notificação são enviados apenas se o usuário digitar uma nova senha.';
+$lang['note_group']            = 'Novos usuários serão adicionados ao grupo padrão (%s), caso nenhum grupo seja especificado.';
+$lang['note_pass']             = 'A senha será gerada automaticamente se o campo for deixado em branco e a notificação de usuário estiver habilitada.';
+$lang['add_ok']                = 'O usuário foi adicionado com sucesso';
+$lang['add_fail']              = 'O usuário não foi adicionado';
+$lang['notify_ok']             = 'O e-mail de notificação foi enviado';
+$lang['notify_fail']           = 'Não foi possível enviar o e-mail de notificação';
+$lang['import_userlistcsv']    = 'Arquivo de lista de usuários (CSV):';
+$lang['import_header']         = 'Importações Mais Recentes - Falhas';
+$lang['import_success_count']  = 'Importação de Usuário: %d usuário (s) encontrado (s), %d importado (s) com sucesso.';
+$lang['import_failure_count']  = 'Importação de Usuário: %d falhou. As falhas estão listadas abaixo.';
+$lang['import_error_fields']   = 'Campos insuficientes, encontrado (s) %d, necessário 4.';
+$lang['import_error_baduserid'] = 'Id do usuário não encontrado.';
+$lang['import_error_badname']  = 'Nome errado';
+$lang['import_error_badmail']  = 'Endereço de email errado';
+$lang['import_error_upload']   = 'Falha na Importação: O arquivo csv não pode ser carregado ou está vazio.';
+$lang['import_error_readfail'] = 'Falha na Importação: Habilitar para ler o arquivo a ser carregado.';
+$lang['import_error_create']   = 'Habilitar para criar o usuário.';
+$lang['import_notify_fail']    = 'Mensagem de notificação não pode ser enviada para o usuário importado, %s com email %s.';
+$lang['import_downloadfailures'] = 'Falhas no Download como CSV para correção';
+$lang['addUser_error_missing_pass'] = 'Por favor coloque uma senha ou ative as notificações do usuário para habilitar a geração de senhas.';
+$lang['addUser_error_pass_not_identical'] = 'As senhas fornecidas não são idênticas.';
+$lang['addUser_error_modPass_disabled'] = 'A alteração de senhas está atualmente desabilitada.';
+$lang['addUser_error_name_missing'] = 'Por favor entre com um nome para o novo usuário.';
+$lang['addUser_error_modName_disabled'] = 'Alteração de nomes está desabilitada no momento.';
+$lang['addUser_error_mail_missing'] = 'Por favor entre com um endereço de e-mail para o novo usuário.';
+$lang['addUser_error_modMail_disabled'] = 'Alteração de endereço de e-mail está desabilitada no momento.';
+$lang['addUser_error_create_event_failed'] = 'Uma extensão impediu que um novo usuário seja adicionado. Reveja outras mensagens para mais informações.';
diff --git a/wiki/lib/plugins/usermanager/lang/pt-br/list.txt b/wiki/lib/plugins/usermanager/lang/pt-br/list.txt
new file mode 100644
index 0000000..e5f79fb
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt-br/list.txt
@@ -0,0 +1 @@
+===== Lista de usuários =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt/add.txt b/wiki/lib/plugins/usermanager/lang/pt/add.txt
new file mode 100644
index 0000000..a4c2672
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/add.txt
@@ -0,0 +1 @@
+===== Adicionar Utilizador =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt/delete.txt b/wiki/lib/plugins/usermanager/lang/pt/delete.txt
new file mode 100644
index 0000000..95bffc1
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/delete.txt
@@ -0,0 +1 @@
+===== Remover Utilizador =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt/edit.txt b/wiki/lib/plugins/usermanager/lang/pt/edit.txt
new file mode 100644
index 0000000..1767984
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/edit.txt
@@ -0,0 +1 @@
+===== Editar Utilizador =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt/import.txt b/wiki/lib/plugins/usermanager/lang/pt/import.txt
new file mode 100644
index 0000000..3a60403
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/import.txt
@@ -0,0 +1,9 @@
+===== Importação de Utilizadores em Massa =====
+
+Requer um ficheiro CSV de utilizadores com pelo menos quatro colunas.
+As colunas têm de conter, em ordem: id de utilizador, nome completo, endereço de email e grupos.
+Os campos CSV devem ser separados por vírgulas (,) e as strings delimitadas por aspas (""). A contra-barra (\) pode ser usada para escapar.
+Para um exemplo de um ficheiro adequado, tente a função "Exportar Utilizadores" acima.
+Ids de utilizador duplicados serão ignorados.
+
+Uma senha será gerada e enviada por email a cada utilizador importado com sucesso.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt/intro.txt b/wiki/lib/plugins/usermanager/lang/pt/intro.txt
new file mode 100644
index 0000000..27985de
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/intro.txt
@@ -0,0 +1 @@
+===== Gerir Utilizadores =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/pt/lang.php b/wiki/lib/plugins/usermanager/lang/pt/lang.php
new file mode 100644
index 0000000..b12e5dc
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/lang.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author José Monteiro <Jose.Monteiro@DoWeDo-IT.com>
+ * @author Enrico Nicoletto <liverig@gmail.com>
+ * @author Fil <fil@meteopt.com>
+ * @author André Neves <drakferion@gmail.com>
+ * @author José Campos zecarlosdecampos@gmail.com
+ * @author Guido Salatino <guidorafael23@gmail.com>
+ * @author Romulo Pereira <romuloccomp@gmail.com>
+ * @author Paulo Carmino <contato@paulocarmino.com>
+ * @author Alfredo Silva <alfredo.silva@sky.com>
+ * @author Guilherme Sá <guilherme.sa@hotmail.com>
+ */
+$lang['menu']                  = 'Gestor de Perfis';
+$lang['noauth']                = '(autenticação indisponível)';
+$lang['nosupport']             = '(gestão de utilizadores não suportada)';
+$lang['badauth']               = 'Mecanismo de autenticação inválido';
+$lang['user_id']               = 'Utilizador';
+$lang['user_pass']             = 'Senha';
+$lang['user_name']             = 'Nome Real';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Grupos';
+$lang['field']                 = 'Campo';
+$lang['value']                 = 'Valor';
+$lang['add']                   = 'Adicionar';
+$lang['delete']                = 'Remover';
+$lang['delete_selected']       = 'Remover Seleccionado(s)';
+$lang['edit']                  = 'Editar';
+$lang['edit_prompt']           = 'Editar utilizador';
+$lang['modify']                = 'Gravar Alterações';
+$lang['search']                = 'Pesquisar';
+$lang['search_prompt']         = 'Pesquisar';
+$lang['clear']                 = 'Limpar Filtro de Pesquisa';
+$lang['filter']                = 'Filtro';
+$lang['export_all']            = 'Exportar Todos os Utilizadores (CSV)';
+$lang['export_filtered']       = 'Exportar a lista de utilizadores filtrada (CSV)';
+$lang['import']                = 'Importar Novos Utilizadores';
+$lang['line']                  = 'Linha nº
+';
+$lang['error']                 = 'Mensagem de erro';
+$lang['summary']               = 'Apresentar utilizadores %1$d-%2$d de %3$d encontrados. %4$d inscritos.';
+$lang['nonefound']             = 'Nenhum utilizador encontrado. %d inscritos.';
+$lang['delete_ok']             = '%d utilizadores removidos';
+$lang['delete_fail']           = '%d remoções falhadas.';
+$lang['update_ok']             = 'Utilizador actualizado';
+$lang['update_fail']           = 'Utilizador não actualizado';
+$lang['update_exists']         = 'Falhou a alteração do nome, porque o utilizador (%s) já existe (as restantes alterações serão aplicadas).';
+$lang['start']                 = 'primeiro';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'seguinte';
+$lang['last']                  = 'último';
+$lang['edit_usermissing']      = 'Utilizador seleccionado não encontrado. Terá já sido removido ou alterado entretanto?';
+$lang['user_notify']           = 'Notificar utilizador';
+$lang['note_notify']           = 'Notificações só são enviadas se for atribuída uma nova senha ao utilizador.';
+$lang['note_group']            = 'Os novos utilizadores são adicionados ao grupo por omissão (%s) se não for especificado nenhum grupo.';
+$lang['note_pass']             = 'A password será automáticamente gerada se o campo esquerdo estiver vazio e a notificação de utilizador estiver activada.';
+$lang['add_ok']                = 'Utilizador adicionado.';
+$lang['add_fail']              = 'Utilizador não adicionado.';
+$lang['notify_ok']             = 'Mensagem de notificação enviada.';
+$lang['notify_fail']           = 'Não foi possível enviar mensagem de notificação';
+$lang['import_userlistcsv']    = 'Arquivo de lista do usuário (CSV):
+';
+$lang['import_header']         = 'Mais Recentes Importações - Falhas';
+$lang['import_success_count']  = 'Importar Utilizadores: %d utiliyadores encontrados, %d importados com sucesso.';
+$lang['import_failure_count']  = 'Importar Utilizadores: %d falharam. As falhas estão listadas abaixo.';
+$lang['import_error_fields']   = 'Campos insuficientes, encontrados %d mas requeridos 4.';
+$lang['import_error_baduserid'] = 'Falta id de utilizador';
+$lang['import_error_badname']  = 'Nome inválido';
+$lang['import_error_badmail']  = 'E-Mail inválido';
+$lang['import_error_upload']   = 'Falhou a importação. O ficheiro csv não pôde ser importado ou está vazio.';
+$lang['import_error_readfail'] = 'Falhou a importação. Não foi possível ler o ficheiro submetido.';
+$lang['import_error_create']   = 'Não foi possível criar o utilizador.';
+$lang['import_notify_fail']    = 'A mensagem de notificação não pôde ser enviada para o utilizador importado, %s com email %s.';
+$lang['import_downloadfailures'] = 'Baixe Falhas como CSV para a correção';
diff --git a/wiki/lib/plugins/usermanager/lang/pt/list.txt b/wiki/lib/plugins/usermanager/lang/pt/list.txt
new file mode 100644
index 0000000..01a0460
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/pt/list.txt
@@ -0,0 +1 @@
+===== Lista de Utilizadores =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ro/add.txt b/wiki/lib/plugins/usermanager/lang/ro/add.txt
new file mode 100644
index 0000000..9a5c45e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ro/add.txt
@@ -0,0 +1 @@
+===== Adaugă utilizator =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ro/delete.txt b/wiki/lib/plugins/usermanager/lang/ro/delete.txt
new file mode 100644
index 0000000..ea65fa9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ro/delete.txt
@@ -0,0 +1 @@
+===== Şterge utilizator =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ro/edit.txt b/wiki/lib/plugins/usermanager/lang/ro/edit.txt
new file mode 100644
index 0000000..b7f8a42
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ro/edit.txt
@@ -0,0 +1 @@
+===== Editează utilizator =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ro/intro.txt b/wiki/lib/plugins/usermanager/lang/ro/intro.txt
new file mode 100644
index 0000000..f3c6626
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ro/intro.txt
@@ -0,0 +1 @@
+===== Manager Utilizatori =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ro/lang.php b/wiki/lib/plugins/usermanager/lang/ro/lang.php
new file mode 100644
index 0000000..d65fac9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ro/lang.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sergiu Baltariu <s_baltariu@yahoo.com>
+ * @author s_baltariu@yahoo.com
+ * @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
+ * @author Emanuel-Emeric Andraşi <em.andrasi@mandrivausers.ro>
+ * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
+ * @author Marius OLAR <olarmariusalex@gmail.com>
+ * @author Marius Olar <olarmariusalex@yahoo.com>
+ * @author Emanuel-Emeric Andrași <em.andrasi@mandrivausers.ro>
+ */
+$lang['menu']                  = 'Manager Utilizatori';
+$lang['noauth']                = '(autentificarea utilizatorilor nu este disponibilă)';
+$lang['nosupport']             = '(menegementul utilizatorilor nu e suportat)';
+$lang['badauth']               = 'mecanism de autentificare invalid';
+$lang['user_id']               = 'Utilizator';
+$lang['user_pass']             = 'Parolă';
+$lang['user_name']             = 'Nume Real';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = 'Grupuri';
+$lang['field']                 = 'Câmp';
+$lang['value']                 = 'Valoare';
+$lang['add']                   = 'Adaugă';
+$lang['delete']                = 'Şterge';
+$lang['delete_selected']       = 'Şterge selecţia';
+$lang['edit']                  = 'Editează';
+$lang['edit_prompt']           = 'Editează acest utilizator';
+$lang['modify']                = 'Salvează Modificările';
+$lang['search']                = 'Caută';
+$lang['search_prompt']         = 'Se caută';
+$lang['clear']                 = 'Resetează Filtrul de Căutare';
+$lang['filter']                = 'Filtru';
+$lang['summary']               = 'Afişarea utilizatorilor %1$d-%2$d din %3$d găsită. %4$d utilizatori în total.';
+$lang['nonefound']             = 'Nici un utilizator nu a fost găsit. %d utilizatori în total.';
+$lang['delete_ok']             = '%d utilizatori şterşi';
+$lang['delete_fail']           = '%d eşuat la ştergere.';
+$lang['update_ok']             = 'Utilizatorul a fost actualizat cu succes';
+$lang['update_fail']           = 'Actualizarea utilizatorului a eşuat';
+$lang['update_exists']         = 'Modificarea numelui de utilizator a eşuat. Numele de utilizator specificat (%s) există deja (orice altă modificare se va aplica)';
+$lang['start']                 = 'început';
+$lang['prev']                  = 'anterior';
+$lang['next']                  = 'urmator';
+$lang['last']                  = 'sfârşit';
+$lang['edit_usermissing']      = 'Utilizatorul selectat nu a fost găsit. E posibil ca numele de utilizator specificat să fi fost şters sau modificat în altă parte.';
+$lang['user_notify']           = 'Notificare utilizator';
+$lang['note_notify']           = 'Emailurile de notificare sunt trimise numai dacă utilizatorului îi este dată o nouă parolă.';
+$lang['note_group']            = 'Noii utilizatori vor fi adăugaţi la grupul implicit (%s) dacă nu se specifică grupul.';
+$lang['note_pass']             = 'Parola va fi regenerată automat dacă câmpul este lăsat gol şi notificarea utilizatorului este activată.';
+$lang['add_ok']                = 'Utilizator adăugat cu succes';
+$lang['add_fail']              = 'Adăugarea utilizatorului a eşuat';
+$lang['notify_ok']             = 'Emailul de notificare a fost trimis';
+$lang['notify_fail']           = 'Emailul de notificare nu a putut fi trimis';
diff --git a/wiki/lib/plugins/usermanager/lang/ro/list.txt b/wiki/lib/plugins/usermanager/lang/ro/list.txt
new file mode 100644
index 0000000..6c05634
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ro/list.txt
@@ -0,0 +1 @@
+===== Listă utilizatori =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/ru/add.txt b/wiki/lib/plugins/usermanager/lang/ru/add.txt
new file mode 100644
index 0000000..3cb4264
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/add.txt
@@ -0,0 +1 @@
+===== Добавить пользователя =====
diff --git a/wiki/lib/plugins/usermanager/lang/ru/delete.txt b/wiki/lib/plugins/usermanager/lang/ru/delete.txt
new file mode 100644
index 0000000..80f874e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/delete.txt
@@ -0,0 +1 @@
+===== Удалить пользователя =====
diff --git a/wiki/lib/plugins/usermanager/lang/ru/edit.txt b/wiki/lib/plugins/usermanager/lang/ru/edit.txt
new file mode 100644
index 0000000..d447c40
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/edit.txt
@@ -0,0 +1 @@
+===== Редактировать пользователя =====
diff --git a/wiki/lib/plugins/usermanager/lang/ru/import.txt b/wiki/lib/plugins/usermanager/lang/ru/import.txt
new file mode 100644
index 0000000..0f303f3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/import.txt
@@ -0,0 +1,9 @@
+===== Импорт нескольких пользователей =====
+
+Потребуется список пользователей в файле формата CSV, состоящем из 4 столбцов. 
+Столбцы должны быть заполнены следующим образом: user-id, полное имя, эл. почта, группы. 
+Поля CSV должны быть отделены запятой (,), а строки должны быть заключены в кавычки (%%""%%). Обратный слэш (\) используется для экранирования.  
+В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей».  
+Повторяющиеся идентификаторы user-id будут игнорироваться.
+
+Пароль доступа будет сгенерирован и отправлен по почте удачно импортированному пользователю.
diff --git a/wiki/lib/plugins/usermanager/lang/ru/intro.txt b/wiki/lib/plugins/usermanager/lang/ru/intro.txt
new file mode 100644
index 0000000..3a3e260
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/intro.txt
@@ -0,0 +1 @@
+====== Управление пользователями ======
diff --git a/wiki/lib/plugins/usermanager/lang/ru/lang.php b/wiki/lib/plugins/usermanager/lang/ru/lang.php
new file mode 100644
index 0000000..d0f9818
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/lang.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Yuriy Skalko <yuriy.skalko@gmail.com>
+ * @author Denis Simakov <akinoame1@gmail.com>
+ * @author Andrew Pleshakov <beotiger@mail.ru>
+ * @author Змей Этерийский <evil_snake@eternion.ru>
+ * @author Hikaru Nakajima <jisatsu@mail.ru>
+ * @author Alexei Tereschenko <alexeitlex@yahoo.com>
+ * @author Alexander Sorkin <kibizoid@gmail.com>
+ * @author Kirill Krasnov <krasnovforum@gmail.com>
+ * @author Vlad Tsybenko <vlad.development@gmail.com>
+ * @author Aleksey Osadchiy <rfc@nm.ru>
+ * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
+ * @author Johnny Utah <pcpa@cyberpunk.su>
+ * @author Pavel <ivanovtsk@mail.ru>
+ * @author Igor Degraf <igordegraf@gmail.com>
+ * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author dimsharav <dimsharav@gmail.com>
+ * @author Radimir <radimir.shevchenko@gmail.com>
+ */
+$lang['menu']                  = 'Управление пользователями';
+$lang['noauth']                = '(авторизация пользователей недоступна)';
+$lang['nosupport']             = '(управление пользователями не поддерживается)';
+$lang['badauth']               = 'некорректный механизм аутентификации';
+$lang['user_id']               = 'Логин';
+$lang['user_pass']             = 'Пароль';
+$lang['user_name']             = 'Полное имя';
+$lang['user_mail']             = 'Эл. адрес';
+$lang['user_groups']           = 'Группы';
+$lang['field']                 = 'Поле';
+$lang['value']                 = 'Значение';
+$lang['add']                   = 'Добавить';
+$lang['delete']                = 'Удалить';
+$lang['delete_selected']       = 'Удалить выбранные';
+$lang['edit']                  = 'Редактировать';
+$lang['edit_prompt']           = 'Редактировать этого пользователя';
+$lang['modify']                = 'Сохранить изменения';
+$lang['search']                = 'Поиск';
+$lang['search_prompt']         = 'Искать';
+$lang['clear']                 = 'Сброс фильтра поиска';
+$lang['filter']                = 'Фильтр';
+$lang['export_all']            = 'Экспорт всех пользователей (CSV)';
+$lang['export_filtered']       = 'Экспорт отфильтрованного списка пользователей (CSV)';
+$lang['import']                = 'импортировать новых пользователей';
+$lang['line']                  = 'Строка №';
+$lang['error']                 = 'Ошибка';
+$lang['summary']               = 'Показаны пользователи %1$d–%2$d из %3$d найденных. Всего пользователей: %4$d.';
+$lang['nonefound']             = 'Не найдено ни одного пользователя. Всего пользователей: %d.';
+$lang['delete_ok']             = 'Удалено пользователей: %d';
+$lang['delete_fail']           = 'Не удалось удалить %d.';
+$lang['update_ok']             = 'Пользователь успешно обновлён';
+$lang['update_fail']           = 'Не удалось обновить пользователя';
+$lang['update_exists']         = 'Не удалось изменить имя пользователя, такой пользователь (%s) уже существует (все остальные изменения будут применены).';
+$lang['start']                 = 'в начало';
+$lang['prev']                  = 'назад';
+$lang['next']                  = 'вперёд';
+$lang['last']                  = 'в конец';
+$lang['edit_usermissing']      = 'Выбранный пользователь не найден. Возможно, указанный логин был удалён или изменён извне.';
+$lang['user_notify']           = 'Оповестить пользователя';
+$lang['note_notify']           = 'Письма с уведомлением высылаются только в случае получения нового пароля.';
+$lang['note_group']            = 'Если группа не указана, новые пользователи будут добавлены в группу по умолчанию (%s).';
+$lang['note_pass']             = 'Пароль будет сгенерирован автоматически, если поле оставлено пустым и включено уведомление пользователя.';
+$lang['add_ok']                = 'Пользователь успешно добавлен';
+$lang['add_fail']              = 'Не удалось добавить пользователя';
+$lang['notify_ok']             = 'Письмо с уведомлением отправлено';
+$lang['notify_fail']           = 'Не удалось отправить письмо с уведомлением';
+$lang['import_userlistcsv']    = 'Файл со списком пользователей (CSV):';
+$lang['import_header']         = 'Последний импорт — список ошибок';
+$lang['import_success_count']  = 'Импорт пользователей: %d пользователей найдено, %d импортировано успешно.';
+$lang['import_failure_count']  = 'Импорт пользователей: %d не удалось. Ошибки перечислены ниже.';
+$lang['import_error_fields']   = 'Не все поля заполнены. Найдено %d, а требуется 4.';
+$lang['import_error_baduserid'] = 'Отсутствует идентификатор пользователя';
+$lang['import_error_badname']  = 'Неверное имя';
+$lang['import_error_badmail']  = 'Неверный адрес эл. почты';
+$lang['import_error_upload']   = 'Импорт не удался. CSV-файл не загружен или пуст.';
+$lang['import_error_readfail'] = 'Импорт не удался. Невозможно прочесть загруженный файл.';
+$lang['import_error_create']   = 'Невозможно создать пользователя';
+$lang['import_notify_fail']    = 'Оповещение не может быть отправлено импортированному пользователю %s по электронной почте %s.';
+$lang['import_downloadfailures'] = 'Скачать ошибки в формате CSV для исправления';
+$lang['addUser_error_missing_pass'] = 'Для возможности генерации пароля, пожалуйста, установите пароль или активируйте оповещения.';
+$lang['addUser_error_pass_not_identical'] = 'Введённые пароли не совпадают.';
+$lang['addUser_error_modPass_disabled'] = 'Изменение пароля в настоящее время невозможно.';
+$lang['addUser_error_name_missing'] = 'Укажите имя нового пользователя.';
+$lang['addUser_error_modName_disabled'] = 'Изменение имени в настоящее время невозможно.';
+$lang['addUser_error_mail_missing'] = 'Укажите адрес эл. почты нового пользователя.';
+$lang['addUser_error_modMail_disabled'] = 'Изменение e-mail в настоящее время невозможно.';
+$lang['addUser_error_create_event_failed'] = 'Плагин заблокировал добавление нового пользователя. Смотрите также другие сообщения.';
diff --git a/wiki/lib/plugins/usermanager/lang/ru/list.txt b/wiki/lib/plugins/usermanager/lang/ru/list.txt
new file mode 100644
index 0000000..26c0cbe
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/ru/list.txt
@@ -0,0 +1 @@
+===== Список пользователей =====
diff --git a/wiki/lib/plugins/usermanager/lang/sk/add.txt b/wiki/lib/plugins/usermanager/lang/sk/add.txt
new file mode 100644
index 0000000..e2e1060
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/add.txt
@@ -0,0 +1,2 @@
+===== Pridanie užívateľa =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/sk/delete.txt b/wiki/lib/plugins/usermanager/lang/sk/delete.txt
new file mode 100644
index 0000000..c7d6a3c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/delete.txt
@@ -0,0 +1,2 @@
+===== Zmazanie užívateľa =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/sk/edit.txt b/wiki/lib/plugins/usermanager/lang/sk/edit.txt
new file mode 100644
index 0000000..28af5b5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/edit.txt
@@ -0,0 +1,2 @@
+===== Zmena užívateľa =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/sk/import.txt b/wiki/lib/plugins/usermanager/lang/sk/import.txt
new file mode 100644
index 0000000..2207f61
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/import.txt
@@ -0,0 +1,9 @@
+===== Hromadný import používateľov =====
+
+Vyžaduje CSV súbor používateľov s minimálne 4 stĺpcami.
+Stĺpce musia obsahovať postupne: ID používateľa, meno a priezvisko, emailová adresa a skupiny.
+CVS záznamy by mali byť oddelené čiarkou (,) a reťazce uzavreté úvodzovkami (%%""%%). Znak (\) sa používa v spojení so špeciálnymi znakmi.
+Príklad vhodného súboru je možné získať funkciou "Export používateľov".
+Duplicitné ID používateľov budú ignorované.
+
+Každému úspešne importovanému používateľovi bude vygenerované heslo a zaslaný email.
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sk/intro.txt b/wiki/lib/plugins/usermanager/lang/sk/intro.txt
new file mode 100644
index 0000000..0a626de
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/intro.txt
@@ -0,0 +1,2 @@
+====== Správa používateľov ======
+
diff --git a/wiki/lib/plugins/usermanager/lang/sk/lang.php b/wiki/lib/plugins/usermanager/lang/sk/lang.php
new file mode 100644
index 0000000..96f8fb6
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/lang.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Martin Michalek <michalek.dev@gmail.com>
+ * @author Ondrej Végh <ov@vsieti.sk>
+ * @author Michal Mesko <michal.mesko@gmail.com>
+ * @author exusik <exusik@gmail.com>
+ */
+$lang['menu']                  = 'Správa používateľov';
+$lang['noauth']                = '(autentifikácia užívateľov nie je dostupná)';
+$lang['nosupport']             = '(správa užívateľov nie je podporovaná)';
+$lang['badauth']               = 'neplatný autorizačný mechanizmus';
+$lang['user_id']               = 'Užívateľ';
+$lang['user_pass']             = 'Heslo';
+$lang['user_name']             = 'Skutočné meno';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = 'Skupiny';
+$lang['field']                 = 'Pole';
+$lang['value']                 = 'Hodnota';
+$lang['add']                   = 'Pridať';
+$lang['delete']                = 'Zmazať';
+$lang['delete_selected']       = 'Zmazať vybrané';
+$lang['edit']                  = 'Zmeniť';
+$lang['edit_prompt']           = 'Zmeniť tohoto užívateľa';
+$lang['modify']                = 'Uložiť zmeny';
+$lang['search']                = 'Hľadať';
+$lang['search_prompt']         = 'Vykonať vyhľadávanie';
+$lang['clear']                 = 'Vynulovať vyhľadávací filter';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Export všetkých používateľov (CSV)';
+$lang['export_filtered']       = 'Export zoznamu používateľov na základe filtra (CSV)';
+$lang['import']                = 'Import nových používateľov';
+$lang['line']                  = 'Riadok č.';
+$lang['error']                 = 'Chybová správa';
+$lang['summary']               = 'Zobrazenie užívateľov %1$d-%2$d z %3$d nájdených. %4$d užívateľov celkom.';
+$lang['nonefound']             = 'Žiadni užívatelia nenájdení. %d užívateľov celkom.';
+$lang['delete_ok']             = '%d užívateľov zmazaných';
+$lang['delete_fail']           = '%d chýb vymazania.';
+$lang['update_ok']             = 'Užívateľ úspešne zmenený';
+$lang['update_fail']           = 'Chyba zmeny užívateľa';
+$lang['update_exists']         = 'Chyba zmeny mena používateľa, používateľské meno (%s) už existuje (iné zmeny budú zaznamenané).';
+$lang['start']                 = 'prvé';
+$lang['prev']                  = 'predošlé';
+$lang['next']                  = 'ďalšie';
+$lang['last']                  = 'posledné';
+$lang['edit_usermissing']      = 'Vybraný užívateľ nebol nájdený, mohol byť zmazaný alebo zmenený iným spôsobom.';
+$lang['user_notify']           = 'Upozorniť užívateľa';
+$lang['note_notify']           = 'Notifikačné e-maily iba vtedy, ak dostane užívateľ nové heslo';
+$lang['note_group']            = 'Noví užívatelia budú pridaní do východzej skupiny (%s), ak nie je pre nich špecifikovaná iná skupina.';
+$lang['note_pass']             = 'Heslo bude vygenerované automaticky, ak bude pole prázdne a je zapnutá notifikácia používateľa.';
+$lang['add_ok']                = 'Používateľ úspešne pridaný';
+$lang['add_fail']              = 'Pridanie používateľa bolo neúspešné';
+$lang['notify_ok']             = 'Notifikačný e-mail bol poslaný';
+$lang['notify_fail']           = 'Notifikačný e-mail nemohol byť poslaný';
+$lang['import_userlistcsv']    = 'Súbor so zoznamov používateľov (CSV):';
+$lang['import_header']         = 'Chyby pri poslednom importe';
+$lang['import_success_count']  = 'Import používateľov: %d nájdených, %d úspešne importovaných.';
+$lang['import_failure_count']  = 'Import používateľov: %d neúspešných. Problámy  vypísané nižšie.';
+$lang['import_error_fields']   = 'Neúplné záznamy, %d nájdené, 4 požadované.';
+$lang['import_error_baduserid'] = 'Chýba ID používateľa';
+$lang['import_error_badname']  = 'Nesprávne meno';
+$lang['import_error_badmail']  = 'Nesprávna emailová adresa';
+$lang['import_error_upload']   = 'Import neúspešný. CSV súbor nemohol byť nahraný alebo je prázdny.';
+$lang['import_error_readfail'] = 'Import neúspešný. Nie je možné prečítať nahraný súbor.';
+$lang['import_error_create']   = 'Nie je možné vytvoriť pouzívateľa';
+$lang['import_notify_fail']    = 'Správa nemohla byť zaslaná importovanému používatelovi, %s s emailom %s.';
+$lang['import_downloadfailures'] = 'Stiahnuť chyby vo formáte CSV za účelom opravy';
+$lang['addUser_error_modPass_disabled'] = 'Zmena hesla nie je momentálne povolená';
+$lang['addUser_error_name_missing'] = 'Prosím zadajte meno nového používateľa.';
+$lang['addUser_error_modName_disabled'] = 'Zmena mena nie je momentálne povolená.';
+$lang['addUser_error_mail_missing'] = 'Prosím zadajte emailovú adresu nového používateľa.';
+$lang['addUser_error_modMail_disabled'] = 'Zmena emailovej adresy nie je momentálne povolená.';
diff --git a/wiki/lib/plugins/usermanager/lang/sk/list.txt b/wiki/lib/plugins/usermanager/lang/sk/list.txt
new file mode 100644
index 0000000..6f15331
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sk/list.txt
@@ -0,0 +1,2 @@
+===== Zoznam užívateľov =====
+
diff --git a/wiki/lib/plugins/usermanager/lang/sl/add.txt b/wiki/lib/plugins/usermanager/lang/sl/add.txt
new file mode 100644
index 0000000..c1d8913
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sl/add.txt
@@ -0,0 +1 @@
+===== Dodajanje uporabnika =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sl/delete.txt b/wiki/lib/plugins/usermanager/lang/sl/delete.txt
new file mode 100644
index 0000000..1fd4fff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sl/delete.txt
@@ -0,0 +1 @@
+===== Izbris uporabnika =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sl/edit.txt b/wiki/lib/plugins/usermanager/lang/sl/edit.txt
new file mode 100644
index 0000000..e80bc85
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sl/edit.txt
@@ -0,0 +1 @@
+===== Urejanje uporabnikov =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sl/intro.txt b/wiki/lib/plugins/usermanager/lang/sl/intro.txt
new file mode 100644
index 0000000..a4729a8
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sl/intro.txt
@@ -0,0 +1 @@
+====== Upravljanje uporabnikov ======
diff --git a/wiki/lib/plugins/usermanager/lang/sl/lang.php b/wiki/lib/plugins/usermanager/lang/sl/lang.php
new file mode 100644
index 0000000..4a58218
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sl/lang.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Dejan Levec <webphp@gmail.com>
+ * @author Boštjan Seničar <senicar@gmail.com>
+ * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
+ * @author Matej Urbančič <mateju@svn.gnome.org>
+ */
+$lang['menu']                  = 'Upravljanje uporabnikov';
+$lang['noauth']                = '(overjanje istovetnosti uporabnikov ni na voljo)';
+$lang['nosupport']             = '(upravljanje računov uporabnikov ni podprto)';
+$lang['badauth']               = 'neveljaven način overjanja';
+$lang['user_id']               = 'Uporabnik';
+$lang['user_pass']             = 'Geslo';
+$lang['user_name']             = 'Pravo ime';
+$lang['user_mail']             = 'Elektronski naslov';
+$lang['user_groups']           = 'Skupine';
+$lang['field']                 = 'Polje';
+$lang['value']                 = 'Vrednost';
+$lang['add']                   = 'Dodaj';
+$lang['delete']                = 'Izbriši';
+$lang['delete_selected']       = 'Izbriši izbrano';
+$lang['edit']                  = 'Uredi';
+$lang['edit_prompt']           = 'Uredi tega uporabnika';
+$lang['modify']                = 'Shrani spremembe';
+$lang['search']                = 'Iskanje';
+$lang['search_prompt']         = 'Poišči';
+$lang['clear']                 = 'Počisti filter iskanja';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Izvozi seznam vseh uporabnikov (CSV)';
+$lang['export_filtered']       = 'Izvozi filtriran seznam uporabnikov (CSV)';
+$lang['import']                = 'Uvozi nove uporabnike';
+$lang['line']                  = 'Številka vrstice';
+$lang['error']                 = 'Sporočilo napake';
+$lang['summary']               = 'Izpisani so uporabniki %1$d-%2$d od skupno %3$d. Vseh uporabnikov je %4$d.';
+$lang['nonefound']             = 'Ni najdenih uporabnikov. Vseh uporabnikov je %d.';
+$lang['delete_ok']             = '%d uporabnikov je izbrisanih';
+$lang['delete_fail']           = '%d ni bilo mogoče izbrisati';
+$lang['update_ok']             = 'Uporabniški račun je uspešno posodobljen';
+$lang['update_fail']           = 'Posodobitev uporabniškega računa je spodletela';
+$lang['update_exists']         = 'Spreminjanje imena uporabnika je spodletelo. Navedeno uporabniško ime (%s) že obstaja (vse ostale spremembe bodo uveljavljene).';
+$lang['start']                 = 'Začetni';
+$lang['prev']                  = 'Predhodni';
+$lang['next']                  = 'Naslednji';
+$lang['last']                  = 'Končni';
+$lang['edit_usermissing']      = 'Izbranega uporabnika ni mogoče najti. Navedeno uporabniško ime je morda izbrisano ali spremenjeno.';
+$lang['user_notify']           = 'Obvesti uporabnika';
+$lang['note_notify']           = 'Obvestilna sporočila so poslana le, če uporabnik prejme novo geslo za dostop do strani.';
+$lang['note_group']            = 'Nov uporabnik bo dodan k privzeti skupini (%s), v kolikor ni navedene druge skupine.';
+$lang['note_pass']             = 'Geslo bo ustvarjeno samodejno, v kolikor je polje izpuščeno in je omogočeno obveščanje uporabnika.';
+$lang['add_ok']                = 'Uporabnik je uspešno dodan';
+$lang['add_fail']              = 'Dodajanje uporabnika je spodletelo';
+$lang['notify_ok']             = 'Obvestilno sporočilo je poslano.';
+$lang['notify_fail']           = 'Obvestilnega sporočila ni mogoče poslati.';
+$lang['import_userlistcsv']    = 'Datoteka seznama uporabnikov (CSV)';
+$lang['import_header']         = 'Zadnji uvoz podatkov – napake';
+$lang['import_success_count']  = 'Uvoz uporabnikov: %d najdenih, %d uspešno uvoženih.';
+$lang['import_failure_count']  = 'Uvoz uporabnikov: %d spodletelih. Napake so izpisane spodaj.';
+$lang['import_error_fields']   = 'Neustrezno število polj; najdenih je %d, zahtevana pa so 4.';
+$lang['import_error_baduserid'] = 'Manjka ID uporabnika';
+$lang['import_error_badname']  = 'Napačno navedeno ime';
+$lang['import_error_badmail']  = 'Napačno naveden elektronski naslov';
+$lang['import_error_upload']   = 'Uvoz je spodletel. Datoteke CSV ni mogoče naložiti ali pa je prazna.';
+$lang['import_error_readfail'] = 'Uvoz je spodletel. Ni mogoče prebrati vsebine datoteke.';
+$lang['import_error_create']   = 'Ni mogoče ustvariti računa uporabnika';
+$lang['import_notify_fail']    = 'Obvestilnega sporočila za uvoženega uporabnika %s z elektronskim naslovom %s ni mogoče poslati.';
+$lang['import_downloadfailures'] = 'Prejmi podatke o napakah v datoteki CSV';
diff --git a/wiki/lib/plugins/usermanager/lang/sl/list.txt b/wiki/lib/plugins/usermanager/lang/sl/list.txt
new file mode 100644
index 0000000..1aa8b7a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sl/list.txt
@@ -0,0 +1 @@
+===== Seznam uporabnikov =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sq/add.txt b/wiki/lib/plugins/usermanager/lang/sq/add.txt
new file mode 100644
index 0000000..4c66aaf
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sq/add.txt
@@ -0,0 +1 @@
+===== Shto Përdorues =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sq/delete.txt b/wiki/lib/plugins/usermanager/lang/sq/delete.txt
new file mode 100644
index 0000000..34cb491
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sq/delete.txt
@@ -0,0 +1 @@
+===== Fshi përdorues =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sq/edit.txt b/wiki/lib/plugins/usermanager/lang/sq/edit.txt
new file mode 100644
index 0000000..6313103
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sq/edit.txt
@@ -0,0 +1 @@
+===== Redakto Përdorues =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sq/intro.txt b/wiki/lib/plugins/usermanager/lang/sq/intro.txt
new file mode 100644
index 0000000..e1ebea6
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sq/intro.txt
@@ -0,0 +1 @@
+===== Menaxhuesi i Përdoruesit =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sq/lang.php b/wiki/lib/plugins/usermanager/lang/sq/lang.php
new file mode 100644
index 0000000..bddf54d
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sq/lang.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Albanian language file
+ *
+ * @author Leonard Elezi leonard.elezi@depinfo.info
+ */
+$lang['menu']                  = 'Menaxhuesi Përdoruesve';
+$lang['noauth']                = '(autentikimi i përdoruesve nuk është i disponueshëm)';
+$lang['nosupport']             = '(menaxhimi i përdoruesve nuk suportohet)';
+$lang['badauth']               = '(mekanizëm i pavlefshëm autentikimi)';
+$lang['user_id']               = 'Përdoruesi';
+$lang['user_pass']             = 'Fjalëkalimi
+';
+$lang['user_name']             = 'Emri i Vërtetë';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = 'Grupe';
+$lang['field']                 = 'Fusha';
+$lang['value']                 = 'Vlera';
+$lang['add']                   = 'Shto';
+$lang['delete']                = 'Fshi';
+$lang['delete_selected']       = 'Fshi të Përzgjedhurën';
+$lang['edit']                  = 'Redakto';
+$lang['edit_prompt']           = 'Redakto këtë përdorues';
+$lang['modify']                = 'Ruaj Ndryshimet';
+$lang['search']                = 'Kërko';
+$lang['search_prompt']         = 'Kryej kërkim';
+$lang['clear']                 = 'Rivendos Filter Kërkimi';
+$lang['filter']                = 'Filter';
+$lang['summary']               = 'Duke treguar përdoruesit %1$d-%2$d nga %3$d të gjetur. %4$d përdorues në total.';
+$lang['nonefound']             = 'Asnjë përdorues nuk u gjet. %d përdorues në total.';
+$lang['delete_ok']             = '%d përdorues u fshinë.';
+$lang['delete_fail']           = '%d dështuan të fshihen.';
+$lang['update_ok']             = 'Përdoruesi u përditësia me sukses.';
+$lang['update_fail']           = 'Përditësimi i përdoruesit dështoi.';
+$lang['update_exists']         = 'Ndryshimi i emrit të përdoruesit dështoi, emri i përdoruesit i specifikuar (%s) ekziston tashmë (çdo ndryshim tjetër do të zbatohet).';
+$lang['start']                 = 'Fillim';
+$lang['prev']                  = 'Mëpara';
+$lang['next']                  = 'Tjetra';
+$lang['last']                  = 'Fundi';
+$lang['edit_usermissing']      = 'Përdoruesi i përzgjedhur nuk u gjet, emri i specifikuar i përdoruesit mund të jetë fshirë ose ndryshuar diku tjetër.';
+$lang['user_notify']           = 'Lajmëro përdoruesin';
+$lang['note_notify']           = 'Email-et e lajmërimit dërgohen vetëm nëse përdoruesit i jepet një fjalëkalim i ri.';
+$lang['note_group']            = 'Përdorues të rinj do të shtohen në grupin default (%s) nëse asnjë grup nuk specifikohet.';
+$lang['note_pass']             = 'Fjalëkalimi do të autogjenerohet nëse fusha lihet bosh dhe lajmërimi i përdoruesit është i aktivizuar.';
+$lang['add_ok']                = 'Përdoruesi u shtua me sukses.';
+$lang['add_fail']              = 'Shtimi i përdoruesit dështoi.';
+$lang['notify_ok']             = 'Email-i lajmërimit u dërgua.';
+$lang['notify_fail']           = 'Email-i lajmërimit nuk mundi të dërgohej.';
diff --git a/wiki/lib/plugins/usermanager/lang/sq/list.txt b/wiki/lib/plugins/usermanager/lang/sq/list.txt
new file mode 100644
index 0000000..68fc2e7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sq/list.txt
@@ -0,0 +1 @@
+===== Lista Përdoruesve =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sr/add.txt b/wiki/lib/plugins/usermanager/lang/sr/add.txt
new file mode 100644
index 0000000..1de9a50
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sr/add.txt
@@ -0,0 +1 @@
+===== Додај корисника =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sr/delete.txt b/wiki/lib/plugins/usermanager/lang/sr/delete.txt
new file mode 100644
index 0000000..9b50365
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sr/delete.txt
@@ -0,0 +1 @@
+===== Обриши корисника =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sr/edit.txt b/wiki/lib/plugins/usermanager/lang/sr/edit.txt
new file mode 100644
index 0000000..11e22e2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sr/edit.txt
@@ -0,0 +1 @@
+===== Измени корисника =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sr/intro.txt b/wiki/lib/plugins/usermanager/lang/sr/intro.txt
new file mode 100644
index 0000000..6c6ac9a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sr/intro.txt
@@ -0,0 +1 @@
+====== Управљач корисницима ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sr/lang.php b/wiki/lib/plugins/usermanager/lang/sr/lang.php
new file mode 100644
index 0000000..858a213
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sr/lang.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Иван Петровић petrovicivan@ubuntusrbija.org
+ * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Miroslav Šolti <solti.miroslav@gmail.com>
+ */
+$lang['menu']                  = 'Управљач корисницима';
+$lang['noauth']                = '(корисничка провера није доступна)';
+$lang['nosupport']             = '(уптављање корисницима није подржано)';
+$lang['badauth']               = 'неисправан механизам провере';
+$lang['user_id']               = 'Корисник';
+$lang['user_pass']             = 'Лозинка';
+$lang['user_name']             = 'Име и презиме';
+$lang['user_mail']             = 'Е-адреса';
+$lang['user_groups']           = 'Групе';
+$lang['field']                 = 'Поље';
+$lang['value']                 = 'Вредност';
+$lang['add']                   = 'Додај';
+$lang['delete']                = 'Обриши';
+$lang['delete_selected']       = 'Обриши одабране';
+$lang['edit']                  = 'Измени';
+$lang['edit_prompt']           = 'Измени корисника';
+$lang['modify']                = 'Сачувај измене';
+$lang['search']                = 'Претрага';
+$lang['search_prompt']         = 'Изведи претрагу';
+$lang['clear']                 = 'Поништи филтер претраге';
+$lang['filter']                = 'Филтер';
+$lang['summary']               = 'Приказ %1$d-%2$d од %3$d пронађена корисника. Укупно има %4$d корисника.';
+$lang['nonefound']             = 'Није пронађен корисник. Укупно има %d корисника.';
+$lang['delete_ok']             = '%d корисника је обрисано';
+$lang['delete_fail']           = '%d брисања није успело.';
+$lang['update_ok']             = 'Кориснички налог је ажуриран';
+$lang['update_fail']           = 'Кориснички налог није ажуриран';
+$lang['update_exists']         = 'Измена корисничког имена није успела, наведени корисник (%s) већ постоји (остале измене ће бити примењене).';
+$lang['start']                 = 'почетак';
+$lang['prev']                  = 'претходна';
+$lang['next']                  = 'следећа';
+$lang['last']                  = 'крај';
+$lang['edit_usermissing']      = 'Одабрани корисник не постоји, наведено корисничко име је можда обрисано или је измењено негде другде.';
+$lang['user_notify']           = 'Обавести корисника';
+$lang['note_notify']           = 'Потврдна порука ће бити послата једино ако је кориснику додељена нова лозинка.';
+$lang['note_group']            = 'Нови корисници ће бити додељени подразумеваној групи (%s) ако није другачије назначено.';
+$lang['note_pass']             = 'Ако сте оставили поље празно и укључили обавештавање корисника лозинка ће бити аутоматски генерисана.';
+$lang['add_ok']                = 'Корисник је успешно додат';
+$lang['add_fail']              = 'Додавање корисника није успело';
+$lang['notify_ok']             = 'Порука са обавештењен је послата';
+$lang['notify_fail']           = 'Порука са обавештењен није послата';
diff --git a/wiki/lib/plugins/usermanager/lang/sr/list.txt b/wiki/lib/plugins/usermanager/lang/sr/list.txt
new file mode 100644
index 0000000..9484442
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sr/list.txt
@@ -0,0 +1 @@
+===== Списак корисника =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/sv/add.txt b/wiki/lib/plugins/usermanager/lang/sv/add.txt
new file mode 100644
index 0000000..2ff1ee6
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sv/add.txt
@@ -0,0 +1 @@
+===== Lägg till användare =====
diff --git a/wiki/lib/plugins/usermanager/lang/sv/delete.txt b/wiki/lib/plugins/usermanager/lang/sv/delete.txt
new file mode 100644
index 0000000..5664a59
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sv/delete.txt
@@ -0,0 +1 @@
+===== Radera användare =====
diff --git a/wiki/lib/plugins/usermanager/lang/sv/edit.txt b/wiki/lib/plugins/usermanager/lang/sv/edit.txt
new file mode 100644
index 0000000..f1a7f4a
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sv/edit.txt
@@ -0,0 +1 @@
+===== Redigera användare =====
diff --git a/wiki/lib/plugins/usermanager/lang/sv/intro.txt b/wiki/lib/plugins/usermanager/lang/sv/intro.txt
new file mode 100644
index 0000000..bd13b81
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sv/intro.txt
@@ -0,0 +1 @@
+====== Hantera användare ======
diff --git a/wiki/lib/plugins/usermanager/lang/sv/lang.php b/wiki/lib/plugins/usermanager/lang/sv/lang.php
new file mode 100644
index 0000000..f8ff910
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sv/lang.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Tor Härnqvist <tor@harnqvist.se>
+ * @author Per Foreby <per@foreby.se>
+ * @author Nicklas Henriksson <nicklas[at]nihe.se>
+ * @author Håkan Sandell <hakan.sandell@home.se>
+ * @author Dennis Karlsson
+ * @author Tormod Otter Johansson <tormod@latast.se>
+ * @author Pontus Bergendahl <pontus.bergendahl@gmail.com>
+ * @author Emil Lind <emil@sys.nu>
+ * @author Bogge Bogge <bogge@bogge.com>
+ * @author Peter Åström <eaustreum@gmail.com>
+ */
+$lang['menu']                  = 'Hantera användare';
+$lang['noauth']                = '(användarautentisering ej tillgänlig)';
+$lang['nosupport']             = '(användarhantering stödjs ej)';
+$lang['badauth']               = 'ogiltig autentiseringsmekanism';
+$lang['user_id']               = 'Användare';
+$lang['user_pass']             = 'Lösenord';
+$lang['user_name']             = 'Namn';
+$lang['user_mail']             = 'E-post';
+$lang['user_groups']           = 'Grupper';
+$lang['field']                 = 'Fält';
+$lang['value']                 = 'Värde';
+$lang['add']                   = 'Lägg till';
+$lang['delete']                = 'Radera';
+$lang['delete_selected']       = 'Radera markerade';
+$lang['edit']                  = 'Redigera';
+$lang['edit_prompt']           = 'Redigera användaren';
+$lang['modify']                = 'Spara ändringar';
+$lang['search']                = 'Sök';
+$lang['search_prompt']         = 'Utför sökning';
+$lang['clear']                 = 'Återställ sökfilter';
+$lang['filter']                = 'Filter';
+$lang['export_all']            = 'Exportera alla användare (CSV)';
+$lang['export_filtered']       = 'Exportera filtrerade användarlistningen (CSV)';
+$lang['import']                = 'Importera nya användare';
+$lang['error']                 = 'Error-meddelande';
+$lang['summary']               = 'Visar användare %1$d-%2$d av %3$d funna. %4$d användare totalt.';
+$lang['nonefound']             = 'Inga användare hittades. %d användare totalt.';
+$lang['delete_ok']             = '%d användare raderade';
+$lang['delete_fail']           = '%d kunde inte raderas.';
+$lang['update_ok']             = 'Användaren uppdaterad';
+$lang['update_fail']           = 'Användaruppdatering misslyckades';
+$lang['update_exists']         = 'Kunde inte ändra användarnamn,, det angivna användarnamnet (%s) finns redan (andra ändringar kommer att utföras).';
+$lang['start']                 = 'start';
+$lang['prev']                  = 'föregående';
+$lang['next']                  = 'nästa';
+$lang['last']                  = 'sista';
+$lang['edit_usermissing']      = 'Vald användare hittades inte. Den angivna användaren kan ha blivit raderad, eller ändrats någon annanstans.';
+$lang['user_notify']           = 'Meddela användaren';
+$lang['note_notify']           = 'E-postmeddelanden skickas bara om användaren har fått ett nytt lösenord.';
+$lang['note_group']            = 'Nya användare läggs till i standardgruppen (%s) om inga grupper anges.';
+$lang['note_pass']             = 'Lösenordet kommer att autogenereras om fältet är tomt och e-postmeddelanden till användaren är påslaget.';
+$lang['add_ok']                = 'Användaren tillagd';
+$lang['add_fail']              = 'Användare kunde inte läggas till';
+$lang['notify_ok']             = 'E-postmeddelande skickat';
+$lang['notify_fail']           = 'E-postmeddelande kunde inte skickas';
+$lang['import_userlistcsv']    = 'Fillista över användare (CSV):';
+$lang['import_success_count']  = 'Användar-import: %d användare funna, %d importerade framgångsrikt.';
+$lang['import_failure_count']  = 'Användar-import: %d misslyckades. Misslyckandena listas nedan.';
+$lang['import_error_baduserid'] = 'Användar-id saknas';
+$lang['import_error_badname']  = 'Felaktigt namn';
+$lang['import_error_badmail']  = 'Felaktig e-postadress';
+$lang['import_error_upload']   = 'Import misslyckades. Csv-filen kunde inte laddas upp eller är tom.';
+$lang['import_error_readfail'] = 'Import misslyckades. Den uppladdade filen gick inte att läsa.';
+$lang['import_error_create']   = 'Misslyckades att skapa användaren.';
+$lang['addUser_error_pass_not_identical'] = 'De angivna lösenorden var inte identiska.';
+$lang['addUser_error_name_missing'] = 'Var god fyll i namn på den nya användaren.';
+$lang['addUser_error_mail_missing'] = 'Var god fyll i e-postadress för den nya användaren.';
diff --git a/wiki/lib/plugins/usermanager/lang/sv/list.txt b/wiki/lib/plugins/usermanager/lang/sv/list.txt
new file mode 100644
index 0000000..e07c452
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/sv/list.txt
@@ -0,0 +1 @@
+===== Användarlista =====
diff --git a/wiki/lib/plugins/usermanager/lang/th/add.txt b/wiki/lib/plugins/usermanager/lang/th/add.txt
new file mode 100644
index 0000000..6a5f098
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/th/add.txt
@@ -0,0 +1 @@
+====== เพิ่มผู้ใช้ ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/th/delete.txt b/wiki/lib/plugins/usermanager/lang/th/delete.txt
new file mode 100644
index 0000000..4dbc82b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/th/delete.txt
@@ -0,0 +1 @@
+====== ลบผู้ใช้ ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/th/edit.txt b/wiki/lib/plugins/usermanager/lang/th/edit.txt
new file mode 100644
index 0000000..c36e8dd
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/th/edit.txt
@@ -0,0 +1 @@
+====== แก้ไขผู้ใช้ ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/th/intro.txt b/wiki/lib/plugins/usermanager/lang/th/intro.txt
new file mode 100644
index 0000000..0f6a0c3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/th/intro.txt
@@ -0,0 +1 @@
+====== ตัวจัดการผู้ใช้ ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/th/lang.php b/wiki/lib/plugins/usermanager/lang/th/lang.php
new file mode 100644
index 0000000..d6e14f6
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/th/lang.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Komgrit Niyomrath <n.komgrit@gmail.com>
+ * @author Kittithat Arnontavilas mrtomyum@gmail.com
+ * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
+ * @author Thanasak Sompaisansin <jombthep@gmail.com>
+ */
+$lang['menu']                  = 'ตัวจัดการบัญชีผู้ใช้';
+$lang['user_id']               = 'ผู้ใช้';
+$lang['user_pass']             = 'รหัสผ่าน';
+$lang['user_name']             = 'ชื่อจริง';
+$lang['user_mail']             = 'อีเมล';
+$lang['user_groups']           = 'กลุ่ม';
+$lang['field']                 = 'ฟิลด์';
+$lang['value']                 = 'ค่า';
+$lang['add']                   = 'เพิ่ม';
+$lang['delete']                = 'ลบ';
+$lang['delete_selected']       = 'ลบที่เลือก';
+$lang['edit']                  = 'แก้ไข';
+$lang['edit_prompt']           = 'แก้ไขผู้ใช้คนนี้';
+$lang['modify']                = 'บันทึกการแก้ไข';
+$lang['search']                = 'สืบค้น';
+$lang['search_prompt']         = 'ทำการสืบค้น';
+$lang['clear']                 = 'รีเซ็ทตัวกรองคำค้น';
+$lang['filter']                = 'ตัวกรอง';
+$lang['summary']               = 'แสดงผู้ใช้ %1$d-%2$d จากที่พบ %3$d คน, จากทั้งหมด %4$d คน';
+$lang['nonefound']             = 'ไม่พบผู้ใช้ จากทั้งหมด %d คน';
+$lang['delete_ok']             = 'ลบชื่อผู้ใช้ %d คน';
+$lang['delete_fail']           = 'ไม่สามารถลบได้ %d คน';
+$lang['update_ok']             = 'ปรับปรุงข้อมูลผู้ใช้ สำเร็จ';
+$lang['update_fail']           = 'ปรับปรุงข้อมูลผู้ใช้ **ไม่สำเร็จ**';
+$lang['update_exists']         = 'ไม่สามารถเปลี่นชื่อผู้ใช้ได้ ชื่อผู้ใช้ที่ระบุ (%s) มีอยู่แล้ว (การเปลี่นนแปลงอื่นๆ ยังคงทำได้)';
+$lang['start']                 = 'เริ่ม';
+$lang['prev']                  = 'ก่อนหน้า';
+$lang['next']                  = 'ถัดไป';
+$lang['last']                  = 'สุดท้าย';
+$lang['edit_usermissing']      = 'หาผู้ใช้ที่เลือกไม่พบ, ชื่อผุ้ใช้ที่ระบุอาจจะถูกลบ หรือเปลี่ยนเป็นอย่างอื่น';
+$lang['user_notify']           = 'แจ้งเตือนผู้ใช้';
+$lang['note_notify']           = 'จดหมายแจ้งเตือนถูกส่งก็ต่อเมื่อผู้ใช้ได้รับมอบรหัสผ่านใหม่';
+$lang['note_group']            = 'ผู้ใช้ใหม่จะถูกเพิ่มเข้าไปยังกลุ่มปริยาย (%s) หากมิได้ระบุกลุ่มเอาไว้';
+$lang['note_pass']             = 'รหัสผ่านจะถูกสร้างโดยอัตโนมัติ ถ้าเว้นว่างช่องกรอก และเปิดการแจ้งเตือนผู้ใช้เอาไว้';
+$lang['add_ok']                = 'การเพิ่มผู้ใช้สำเร็จ';
+$lang['add_fail']              = 'การเพิ่มผู้ใช้ล้มเหลว';
+$lang['notify_ok']             = 'ส่งจดหมายแจ้งเตือนไปแล้ว';
+$lang['notify_fail']           = 'ไม่สามารถส่งจดหมายแจ้งเตือน';
diff --git a/wiki/lib/plugins/usermanager/lang/th/list.txt b/wiki/lib/plugins/usermanager/lang/th/list.txt
new file mode 100644
index 0000000..fdf65b5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/th/list.txt
@@ -0,0 +1 @@
+====== รายชื่อผู้ใช้ ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/tr/add.txt b/wiki/lib/plugins/usermanager/lang/tr/add.txt
new file mode 100644
index 0000000..beedc0b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/tr/add.txt
@@ -0,0 +1 @@
+===== Kullanıcı ekleme ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/tr/delete.txt b/wiki/lib/plugins/usermanager/lang/tr/delete.txt
new file mode 100644
index 0000000..adb8e91
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/tr/delete.txt
@@ -0,0 +1 @@
+===== Kullanıcı silme =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/tr/edit.txt b/wiki/lib/plugins/usermanager/lang/tr/edit.txt
new file mode 100644
index 0000000..d9f3b71
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/tr/edit.txt
@@ -0,0 +1 @@
+===== Kullanıcı Düzenleme =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/tr/intro.txt b/wiki/lib/plugins/usermanager/lang/tr/intro.txt
new file mode 100644
index 0000000..1edcb2c
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/tr/intro.txt
@@ -0,0 +1 @@
+====== Kullanıcı Yöneticisi ======
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/tr/lang.php b/wiki/lib/plugins/usermanager/lang/tr/lang.php
new file mode 100644
index 0000000..6329803
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/tr/lang.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Aydın Coşkuner <aydinweb@gmail.com>
+ * @author Cihan Kahveci <kahvecicihan@gmail.com>
+ * @author Yavuz Selim <yavuzselim@gmail.com>
+ * @author Caleb Maclennan <caleb@alerque.com>
+ * @author farukerdemoncel@gmail.com
+ */
+$lang['menu']                  = 'Kullanıcı Yönetimi';
+$lang['noauth']                = '(kullanıcı onaylaması yoktur)';
+$lang['nosupport']             = '(kullanıcı yönetimi desteklenmemektedir)';
+$lang['badauth']               = 'yanlış onaylama metodu';
+$lang['user_id']               = 'Kullanıcı';
+$lang['user_pass']             = 'Şifre';
+$lang['user_name']             = 'Gerçek İsim';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = 'Gruplar';
+$lang['field']                 = 'Alan';
+$lang['value']                 = 'Değer';
+$lang['add']                   = 'Ekle';
+$lang['delete']                = 'Sil';
+$lang['delete_selected']       = 'Seçilenleri Sil';
+$lang['edit']                  = 'Düzenle';
+$lang['edit_prompt']           = 'Bu kullanıcıyı düzenle';
+$lang['modify']                = 'Değişiklikleri kaydet';
+$lang['search']                = 'Arama';
+$lang['search_prompt']         = 'Aramayı Gerçekleştir';
+$lang['clear']                 = 'Arama ayarlarını sıfırla';
+$lang['filter']                = 'Filtre';
+$lang['summary']               = 'Bulunan %3$d kullanıcının %1$d-%2$d gösterilmektedir. Toplam %4$d kullanıcı bulunmaktadır.';
+$lang['nonefound']             = 'Hiç kullanıcı bulunamadı. Toplam %d kullanıcı bulunmaktadır.';
+$lang['delete_ok']             = '%d kullanıcılar silindi';
+$lang['delete_fail']           = '%d silinemedi.';
+$lang['update_ok']             = 'Kullanıcı başarı ile güncelleştirildi';
+$lang['update_fail']           = 'Kullanıcı güncelleştirilemedi';
+$lang['update_exists']         = 'Kullanıcı adı değiştirilemedi. Belirtilen kullanıcı adı (%s) zaten bulunmaktadır (yapılan diğer değişiklikler uygulanacaktır).';
+$lang['start']                 = 'başla';
+$lang['prev']                  = 'önceki';
+$lang['next']                  = 'sonraki';
+$lang['last']                  = 'sonuncu';
+$lang['edit_usermissing']      = 'Seçili kullanıcılar bulunamadı, belirtilen kullanıcı silinmiş ya da değiştirilmiş olabilir.';
+$lang['user_notify']           = 'Kullanıcıyı bilgilendir';
+$lang['note_notify']           = 'Bilgilendirme e-postaları sadece kullanıcıya yeni bir parola verildiğinde gönderilmektedir.';
+$lang['note_group']            = 'Yeni kullanıcılar bir grup belirtilmezse varsayılan (%s) gruba eklenecektir.';
+$lang['note_pass']             = 'Eğer alan boş bırakılırsa parola otomatik oluşturulacaktır ve kullanıcı bilgilendirme etkinleştirilecektir. ';
+$lang['add_ok']                = 'Kullanıcı başarı ile eklendi';
+$lang['add_fail']              = 'Kullanıcı ekleme başarısız';
+$lang['notify_ok']             = 'Bildirim emaili gönderildi';
+$lang['notify_fail']           = 'Bildirim emaili gönderilemedi';
diff --git a/wiki/lib/plugins/usermanager/lang/tr/list.txt b/wiki/lib/plugins/usermanager/lang/tr/list.txt
new file mode 100644
index 0000000..2314eb2
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/tr/list.txt
@@ -0,0 +1 @@
+===== Kullanıcı Listesi =====
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/uk/add.txt b/wiki/lib/plugins/usermanager/lang/uk/add.txt
new file mode 100644
index 0000000..bc34697
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/uk/add.txt
@@ -0,0 +1 @@
+===== Додати користувача =====
diff --git a/wiki/lib/plugins/usermanager/lang/uk/delete.txt b/wiki/lib/plugins/usermanager/lang/uk/delete.txt
new file mode 100644
index 0000000..739340b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/uk/delete.txt
@@ -0,0 +1 @@
+===== Видалення користувача =====
diff --git a/wiki/lib/plugins/usermanager/lang/uk/edit.txt b/wiki/lib/plugins/usermanager/lang/uk/edit.txt
new file mode 100644
index 0000000..efc84be
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/uk/edit.txt
@@ -0,0 +1 @@
+===== Редагувати користувача =====
diff --git a/wiki/lib/plugins/usermanager/lang/uk/intro.txt b/wiki/lib/plugins/usermanager/lang/uk/intro.txt
new file mode 100644
index 0000000..b658aff
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/uk/intro.txt
@@ -0,0 +1 @@
+====== Керування користувачами ======
diff --git a/wiki/lib/plugins/usermanager/lang/uk/lang.php b/wiki/lib/plugins/usermanager/lang/uk/lang.php
new file mode 100644
index 0000000..36b6f74
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/uk/lang.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Oleksiy Voronin <ovoronin@gmail.com>
+ * @author serg_stetsuk <serg_stetsuk@ukr.net>
+ * @author Oleksandr Kunytsia <okunia@gmail.com>
+ */
+$lang['menu']                  = 'Керування користувачами';
+$lang['noauth']                = '(автентифікація користувачів не	доступна)';
+$lang['nosupport']             = '(керування користувачами не підтримується)';
+$lang['badauth']               = 'невірний механізм автентифікації';
+$lang['user_id']               = 'Ім’я користувача';
+$lang['user_pass']             = 'Пароль';
+$lang['user_name']             = 'Повне ім’я';
+$lang['user_mail']             = 'E-mail';
+$lang['user_groups']           = 'Групи';
+$lang['field']                 = 'Поле';
+$lang['value']                 = 'Значення';
+$lang['add']                   = 'Додати';
+$lang['delete']                = 'Видалити';
+$lang['delete_selected']       = 'Видалити вибраних';
+$lang['edit']                  = 'Змінити';
+$lang['edit_prompt']           = 'Змінити цього користувача';
+$lang['modify']                = 'Зберегти зміни';
+$lang['search']                = 'Пошук';
+$lang['search_prompt']         = 'Шукати';
+$lang['clear']                 = 'Очистити фільтр пошуку';
+$lang['filter']                = 'Фільтр';
+$lang['summary']               = 'Показано користувачі %1$d-%2$d з %3$d знайдених. Всього користувачів: %4$d.';
+$lang['nonefound']             = 'Не знайдено жодного користувача. Всього користувачів: %d.';
+$lang['delete_ok']             = 'Видалено користувачів: %d';
+$lang['delete_fail']           = 'Не вдалося видалити %d.';
+$lang['update_ok']             = 'Дані користувача оновлено';
+$lang['update_fail']           = 'Не вдалося оновити дані користувача';
+$lang['update_exists']         = 'Не вдалося змінити ім’я користувача, такий користувач (%s) вже існує (всі інші зміни будуть застосовані).';
+$lang['start']                 = 'на початок';
+$lang['prev']                  = 'назад';
+$lang['next']                  = 'вперед';
+$lang['last']                  = 'в кінець';
+$lang['edit_usermissing']      = 'Обраного користувача не знайдено, можливо його було вилучено або змінено ще десь.';
+$lang['user_notify']           = 'Повідомити користувача';
+$lang['note_notify']           = 'Листи з повідомленнями відсилаються лише у випадку видачі нового пароля користувачу.';
+$lang['note_group']            = 'Якщо не визначено групи, то нові користувачі будуть автоматично додані до групи за замовчуванням (%s).';
+$lang['note_pass']             = 'Пароль буде згенеровано автоматично, якщо поле пароля не заповнено і увімкнено прапорець "повідомити користувача".';
+$lang['add_ok']                = 'Користувача додано';
+$lang['add_fail']              = 'Неможливо додати користувача';
+$lang['notify_ok']             = 'Листа з повідомленням надіслано';
+$lang['notify_fail']           = 'Неможливо вислати листа з повідомленням';
diff --git a/wiki/lib/plugins/usermanager/lang/uk/list.txt b/wiki/lib/plugins/usermanager/lang/uk/list.txt
new file mode 100644
index 0000000..76013a9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/uk/list.txt
@@ -0,0 +1 @@
+===== Список користувачів =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/add.txt b/wiki/lib/plugins/usermanager/lang/zh-tw/add.txt
new file mode 100644
index 0000000..6e25f17
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/add.txt
@@ -0,0 +1 @@
+===== 增加帳號 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/delete.txt b/wiki/lib/plugins/usermanager/lang/zh-tw/delete.txt
new file mode 100644
index 0000000..1a29ba3
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/delete.txt
@@ -0,0 +1 @@
+===== 刪除帳號 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/edit.txt b/wiki/lib/plugins/usermanager/lang/zh-tw/edit.txt
new file mode 100644
index 0000000..ec1c5d5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/edit.txt
@@ -0,0 +1 @@
+===== 修改帳號 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/import.txt b/wiki/lib/plugins/usermanager/lang/zh-tw/import.txt
new file mode 100644
index 0000000..925cdc9
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/import.txt
@@ -0,0 +1,9 @@
+===== 批次匯入使用者 =====
+
+需提供 CSV 格式的使用者列表檔案(UTF-8 編碼)。
+每列至少 4 欄,依序為:帳號、姓名、電郵、群組。
+各欄以半形逗號 (,) 分隔,有半形逗號的字串可用半形雙引號 (%%""%%) 分開,引號可用反斜線 (\) 跳脫。
+重複的使用者帳號會自動忽略。
+如需要範例檔案,可用上面的「匯出使用者」取得。
+
+系統會為成功匯入的使用者產生密碼並寄信通知。
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/intro.txt b/wiki/lib/plugins/usermanager/lang/zh-tw/intro.txt
new file mode 100644
index 0000000..32ccf6f
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/intro.txt
@@ -0,0 +1 @@
+====== 帳號管理器 ======
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/lang.php b/wiki/lib/plugins/usermanager/lang/zh-tw/lang.php
new file mode 100644
index 0000000..6155525
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/lang.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author chinsan <chinsan.tw@gmail.com>
+ * @author Li-Jiun Huang <ljhuang.tw@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-simptrad.html
+ * @author Wayne San <waynesan@zerozone.tw>
+ * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
+ * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author syaoranhinata@gmail.com
+ * @author Ichirou Uchiki <syaoranhinata@gmail.com>
+ * @author tsangho <ou4222@gmail.com>
+ * @author Danny Lin <danny0838@gmail.com>
+ */
+$lang['menu']                  = '帳號管理器';
+$lang['noauth']                = '(帳號認證尚未開放)';
+$lang['nosupport']             = '(尚不支援帳號管理)';
+$lang['badauth']               = '錯誤的認證機制';
+$lang['user_id']               = '帳號';
+$lang['user_pass']             = '密碼';
+$lang['user_name']             = '名稱';
+$lang['user_mail']             = '電郵';
+$lang['user_groups']           = '群組';
+$lang['field']                 = '欄位';
+$lang['value']                 = '設定值';
+$lang['add']                   = '增加';
+$lang['delete']                = '刪除';
+$lang['delete_selected']       = '刪除所選的';
+$lang['edit']                  = '修改';
+$lang['edit_prompt']           = '修改該帳號';
+$lang['modify']                = '儲存變更';
+$lang['search']                = '搜尋';
+$lang['search_prompt']         = '開始搜尋';
+$lang['clear']                 = '重設篩選條件';
+$lang['filter']                = '篩選條件 (Filter)';
+$lang['export_all']            = '匯出所有使用者 (CSV)';
+$lang['export_filtered']       = '匯出篩選後的使用者列表 (CSV)';
+$lang['import']                = '匯入新使用者';
+$lang['line']                  = '列號';
+$lang['error']                 = '錯誤訊息';
+$lang['summary']               = '顯示帳號 %1$d-%2$d,共 %3$d 筆符合。共有 %4$d 個帳號。';
+$lang['nonefound']             = '找不到帳號。共有 %d 個帳號。';
+$lang['delete_ok']             = '已刪除 %d 個帳號';
+$lang['delete_fail']           = '%d 個帳號無法刪除。';
+$lang['update_ok']             = '已更新該帳號';
+$lang['update_fail']           = '無法更新該帳號';
+$lang['update_exists']         = '無法變更帳號名稱 (%s) ,因為有同名帳號存在。其他修改則已套用。';
+$lang['start']                 = '開始';
+$lang['prev']                  = '上一頁';
+$lang['next']                  = '下一頁';
+$lang['last']                  = '最後一頁';
+$lang['edit_usermissing']      = '找不到選取的帳號,可能已被刪除或改為其他名稱。';
+$lang['user_notify']           = '通知使用者';
+$lang['note_notify']           = '通知信只會在指定使用者新密碼時寄送。';
+$lang['note_group']            = '如果沒有指定群組,新使用者將會列入至預設群組(%s)當中。';
+$lang['note_pass']             = '如果勾選了通知使用者,而沒有輸入這個欄位,則會自動產生一組密碼。';
+$lang['add_ok']                = '已新增使用者';
+$lang['add_fail']              = '無法新增使用者';
+$lang['notify_ok']             = '通知信已寄出';
+$lang['notify_fail']           = '通知信無法寄出';
+$lang['import_userlistcsv']    = '使用者列表檔案 (CSV):  ';
+$lang['import_header']         = '最近一次匯入 - 失敗';
+$lang['import_success_count']  = '使用者匯入:找到 %d 個使用者,已成功匯入 %d 個。';
+$lang['import_failure_count']  = '使用者匯入:%d 個匯入失敗,列出於下。';
+$lang['import_error_fields']   = '欄位不足,需要 4 個,找到 %d 個。';
+$lang['import_error_baduserid'] = '使用者帳號遺失';
+$lang['import_error_badname']  = '名稱不正確';
+$lang['import_error_badmail']  = '電郵位址不正確';
+$lang['import_error_upload']   = '匯入失敗,CSV 檔案內容空白或無法匯入。';
+$lang['import_error_readfail'] = '匯入錯誤,無法讀取上傳的檔案';
+$lang['import_error_create']   = '無法建立使用者';
+$lang['import_notify_fail']    = '通知訊息無法寄給已匯入的使用者 %s(電郵 %s)';
+$lang['import_downloadfailures'] = '下載失敗項的 CSV 檔案以供修正';
diff --git a/wiki/lib/plugins/usermanager/lang/zh-tw/list.txt b/wiki/lib/plugins/usermanager/lang/zh-tw/list.txt
new file mode 100644
index 0000000..1e539bd
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh-tw/list.txt
@@ -0,0 +1 @@
+===== 帳號清單 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh/add.txt b/wiki/lib/plugins/usermanager/lang/zh/add.txt
new file mode 100644
index 0000000..fd3b1e5
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/add.txt
@@ -0,0 +1 @@
+===== 添加用户 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh/delete.txt b/wiki/lib/plugins/usermanager/lang/zh/delete.txt
new file mode 100644
index 0000000..dc6b7fc
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/delete.txt
@@ -0,0 +1 @@
+===== 删除用户 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh/edit.txt b/wiki/lib/plugins/usermanager/lang/zh/edit.txt
new file mode 100644
index 0000000..83b72df
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/edit.txt
@@ -0,0 +1 @@
+===== 编辑用户 =====
diff --git a/wiki/lib/plugins/usermanager/lang/zh/import.txt b/wiki/lib/plugins/usermanager/lang/zh/import.txt
new file mode 100644
index 0000000..243a53e
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/import.txt
@@ -0,0 +1,7 @@
+===== 批量导入用户 =====
+
+需要至少有 4 列的 CSV 格式用户列表文件。列必须按顺序包括:用户ID、全名、电子邮件地址和组。
+CSV 域需要用逗号 (,) 分隔,字符串用英文双引号 (%%""%%) 分开。反斜杠可以用来转义。
+可以尝试上面的“导入用户”功能来查看示例文件。重复的用户ID将被忽略。
+
+密码生成后会通过电子邮件发送给每个成功导入的用户。
\ No newline at end of file
diff --git a/wiki/lib/plugins/usermanager/lang/zh/intro.txt b/wiki/lib/plugins/usermanager/lang/zh/intro.txt
new file mode 100644
index 0000000..5f254be
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/intro.txt
@@ -0,0 +1 @@
+====== 用户管理器 ======
diff --git a/wiki/lib/plugins/usermanager/lang/zh/lang.php b/wiki/lib/plugins/usermanager/lang/zh/lang.php
new file mode 100644
index 0000000..5e9aa77
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/lang.php
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author ZDYX <zhangduyixiong@gmail.com>
+ * @author http://www.chinese-tools.com/tools/converter-tradsimp.html
+ * @author Simon zhan <simonzhan@21cn.com>
+ * @author ben <ben@livetom.com>
+ * @author lainme <lainme993@gmail.com>
+ * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
+ * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author Rachel <rzhang0802@gmail.com>
+ * @author Yangyu Huang <yangyu.huang@gmail.com>
+ * @author oott123 <ip.192.168.1.1@qq.com>
+ * @author Garfield <garfield_550@outlook.com>
+ */
+$lang['menu']                  = '用户管理器';
+$lang['noauth']                = '(用户认证不可用)';
+$lang['nosupport']             = '(用户管理不支持)';
+$lang['badauth']               = '非法的认证结构';
+$lang['user_id']               = '用户名';
+$lang['user_pass']             = '密码';
+$lang['user_name']             = '真实姓名';
+$lang['user_mail']             = 'Email';
+$lang['user_groups']           = '组 *';
+$lang['field']                 = '栏目';
+$lang['value']                 = '值';
+$lang['add']                   = '添加';
+$lang['delete']                = '删除';
+$lang['delete_selected']       = '删除选中的';
+$lang['edit']                  = '编辑';
+$lang['edit_prompt']           = '编辑该用户';
+$lang['modify']                = '保存更改';
+$lang['search']                = '搜索';
+$lang['search_prompt']         = '进行搜索';
+$lang['clear']                 = '重置搜索过滤器';
+$lang['filter']                = '过滤器';
+$lang['export_all']            = '导出所有用户(CSV)';
+$lang['export_filtered']       = '导出已筛选的用户列表(CSV)';
+$lang['import']                = '请输入新用户名';
+$lang['line']                  = '行号';
+$lang['error']                 = '信息错误';
+$lang['summary']               = '找到 %3$d 名用户,显示其中第 %1$d 至 %2$d 位用户。数据库中共有 %4$d 名用户。';
+$lang['nonefound']             = '没有找到用户。数据库中共有 %d 名用户。';
+$lang['delete_ok']             = '用户 %d 已删除';
+$lang['delete_fail']           = '用户 %d 删除失败。';
+$lang['update_ok']             = '用户更新成功';
+$lang['update_fail']           = '用户更新失败';
+$lang['update_exists']         = '用户名更改失败,您指定的用户名(%s)已存在(其他更改将立即生效)。';
+$lang['start']                 = '第一页';
+$lang['prev']                  = '前一页';
+$lang['next']                  = '后一页';
+$lang['last']                  = '最后一页';
+$lang['edit_usermissing']      = '您指定的用户没有找到,可能用户已被删除或用户名已更改。';
+$lang['user_notify']           = '通知用户';
+$lang['note_notify']           = '通知邮件只有在用户获得新密码时才会发送。';
+$lang['note_group']            = '* 如果没有指定组,新用户将被添加到默认的组(%s)中。';
+$lang['note_pass']             = '如果输入框留空则自动生成口令,并会通知用户。';
+$lang['add_ok']                = '用户添加成功';
+$lang['add_fail']              = '用户添加失败';
+$lang['notify_ok']             = '通知邮件已发送';
+$lang['notify_fail']           = '通知邮件无法发送';
+$lang['import_userlistcsv']    = '用户列表文件(CSV)';
+$lang['import_header']         = '最近一次导入 - 失败';
+$lang['import_success_count']  = '用户导入:找到了 %d 个用户,%d 个用户被成功导入。';
+$lang['import_failure_count']  = '用户导入:%d 个用户导入失败。下面列出了失败的用户。';
+$lang['import_error_fields']   = '域的数目不足,发现 %d 个,需要 4 个。';
+$lang['import_error_baduserid'] = '用户ID丢失';
+$lang['import_error_badname']  = '名称错误';
+$lang['import_error_badmail']  = '邮件地址错误';
+$lang['import_error_upload']   = '导入失败。CSV 文件无法上传或是空的。';
+$lang['import_error_readfail'] = '导入失败。无法读取上传的文件。';
+$lang['import_error_create']   = '不能创建新用户';
+$lang['import_notify_fail']    = '通知消息无法发送到导入的用户 %s,电子邮件地址是 %s。';
+$lang['import_downloadfailures'] = '下载CSV的错误信息以修正。';
+$lang['addUser_error_missing_pass'] = '请设置一个密码或者激活用户通知来启用密码生成。';
+$lang['addUser_error_pass_not_identical'] = '输入的密码不相同。';
+$lang['addUser_error_modPass_disabled'] = '修改密码已禁用';
+$lang['addUser_error_name_missing'] = '请为新用户输入一个名字。';
+$lang['addUser_error_modName_disabled'] = '修改名字已禁用';
+$lang['addUser_error_mail_missing'] = '请为新用户输入一个电子邮件地址。';
+$lang['addUser_error_modMail_disabled'] = '修改邮件地址已禁用';
+$lang['addUser_error_create_event_failed'] = '一个插件阻止了添加新用户。请查看其它可能的消息来获取更多信息。';
diff --git a/wiki/lib/plugins/usermanager/lang/zh/list.txt b/wiki/lib/plugins/usermanager/lang/zh/list.txt
new file mode 100644
index 0000000..e62a85b
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/lang/zh/list.txt
@@ -0,0 +1 @@
+===== 用户列表 =====
diff --git a/wiki/lib/plugins/usermanager/plugin.info.txt b/wiki/lib/plugins/usermanager/plugin.info.txt
new file mode 100644
index 0000000..607eca7
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/plugin.info.txt
@@ -0,0 +1,7 @@
+base   usermanager
+author Chris Smith
+email  chris@jalakai.co.uk
+date   2015-07-15
+name   User Manager
+desc   Manage DokuWiki user accounts
+url    http://dokuwiki.org/plugin:usermanager
diff --git a/wiki/lib/plugins/usermanager/script.js b/wiki/lib/plugins/usermanager/script.js
new file mode 100644
index 0000000..de01324
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/script.js
@@ -0,0 +1,8 @@
+/**
+ * Add JavaScript confirmation to the User Delete button
+ */
+jQuery(function(){
+    jQuery('#usrmgr__del').click(function(){
+        return confirm(LANG.del_confirm);
+    });
+});
diff --git a/wiki/lib/plugins/usermanager/style.css b/wiki/lib/plugins/usermanager/style.css
new file mode 100644
index 0000000..9028fed
--- /dev/null
+++ b/wiki/lib/plugins/usermanager/style.css
@@ -0,0 +1,33 @@
+/* User Manager specific styles */
+#user__manager tr.disabled {
+  color: #6f6f6f;
+  background: #e4e4e4;
+}
+#user__manager tr.user_info {
+  vertical-align: top;
+}
+#user__manager div.edit_user {
+  width: 46%;
+  float: left;
+}
+#user__manager table {
+  margin-bottom: 1em;
+}
+#user__manager ul.notes {
+  padding-left: 0;
+  padding-right: 1.4em;
+}
+#user__manager button[disabled] {
+  color: #ccc!important;
+  border-color: #ccc!important;
+}
+#user__manager .import_users {
+  margin-top: 1.4em;
+}
+#user__manager .import_failures {
+  margin-top: 1.4em;
+}
+#user__manager .import_failures td.lineno {
+  text-align: center;
+}
+/* IE won't understand but doesn't require it */