diff --git a/.htaccess.dist b/.htaccess.dist
index 5724a6e04423c4d576e8745a7805397c23e70fbe..1d2bd418e61468fc3bf1c07186f5af5379d6ea87 100644
--- a/.htaccess.dist
+++ b/.htaccess.dist
@@ -6,10 +6,20 @@
 
 ## make sure nobody gets the htaccess, README, COPYING or VERSION files
 <Files ~ "^([\._]ht|README$|VERSION$|COPYING$)">
-    Order allow,deny
-    Deny from all
+    <IfModule mod_authz_host>
+        Require all denied
+    </IfModule>
+    <IfModule !mod_authz_host>
+        Order allow,deny
+        Deny from all
+    </IfModule>
 </Files>
 
+## Don't allow access to git directories
+<IfModule alias_module>
+    RedirectMatch 404 /\.git
+</IfModule>
+
 ## Uncomment these rules if you want to have nice URLs using
 ## $conf['userewrite'] = 1 - not needed for rewrite mode 2
 #RewriteEngine on
diff --git a/.travis.yml b/.travis.yml
index 61e47522d1975f258f06a38945442880dd656335..a0aa152964ca53c030b565e2d011b7c5704ce566 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,20 +1,23 @@
 language: php
 sudo: false
 php:
+  - "7.0"
   - "5.6"
   - "5.5"
   - "5.4"
   - "5.3"
   - "hhvm"
-  - "nightly"
+env:
+  - DISABLE_FUNCTIONS=
+  - DISABLE_FUNCTIONS="gzopen"
 matrix:
   allow_failures:
     - php: "hhvm"
-    - php: "nightly"
 notifications:
   irc:
     channels:
         - "chat.freenode.net#dokuwiki"
     on_success: change
     on_failure: change
+before_script: echo "disable_functions=$DISABLE_FUNCTIONS" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
 script: cd _test && phpunit --verbose --stderr
diff --git a/_test/tests/inc/common_blank.test.php b/_test/tests/inc/common_blank.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..9df35936a2905dc21f29ebe6c2426eb3f1c00eee
--- /dev/null
+++ b/_test/tests/inc/common_blank.test.php
@@ -0,0 +1,52 @@
+<?php
+
+class common_blank_test extends DokuWikiTest {
+
+    private $nope;
+
+    function test_blank() {
+        $tests = array(
+            // these are not blank
+            array('string', false),
+            array(1, false),
+            array(1.0, false),
+            array(0xff, false),
+            array(array('something'), false),
+
+            // these aren't either!
+            array('0', false),
+            array(' ', false),
+            array('0.0', false),
+            array(0, false),
+            array(0.0, false),
+            array(0x00, false),
+            array(true, false),
+
+            // but these are
+            array('', true),
+            array(array(), true),
+            array(null, true),
+            array(false, true),
+            array("\0", true)
+        );
+
+        foreach($tests as $test) {
+            $this->assertEquals($test[1], blank($test[0]), "using " . var_export($test[0], true));
+        }
+    }
+
+    function test_trim() {
+        $whitespace = " \t\r\n";
+        $this->assertFalse(blank($whitespace), "using default \$trim value");
+        $this->assertFalse(blank($whitespace, false), "using \$trim = false");
+        $this->assertTrue(blank($whitespace, true), "using \$trim = true");
+    }
+
+    function test_undefined() {
+        $undef = array();
+        $this->assertTrue(blank($var), "using undefined/unitialised variable");
+        $this->assertTrue(blank($undef['nope']), "using undefined array index");
+        $this->assertTrue(blank($this->nope), "using unset object property");
+    }
+
+}
diff --git a/_test/tests/inc/common_saveWikiText.test.php b/_test/tests/inc/common_saveWikiText.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..800e20952be1f760d6195fa62b6a0a796aedf72e
--- /dev/null
+++ b/_test/tests/inc/common_saveWikiText.test.php
@@ -0,0 +1,145 @@
+<?php
+
+class common_saveWikiText_test extends DokuWikiTest {
+
+    /**
+     * Execute a whole bunch of saves on the same page and check the results
+     */
+    function test_savesequence() {
+        global $REV;
+
+        $page = 'page';
+        $file = wikiFN($page);
+
+        // create the page
+        $this->assertFileNotExists($file);
+        saveWikiText($page, 'teststring', 'first save', false);
+        $this->assertFileExists($file);
+        $lastmod = filemtime($file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(1, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('first save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
+
+        sleep(1); // wait for new revision ID
+
+        // save with same content should be ignored
+        saveWikiText($page, 'teststring', 'second save', false);
+        clearstatcache(false, $file);
+        $this->assertEquals($lastmod, filemtime($file));
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(1, count($revisions));
+
+        // update the page with new text
+        saveWikiText($page, 'teststring2', 'third save', false);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(2, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('third save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+
+        sleep(1); // wait for new revision ID
+
+        // add a minor edit (unauthenticated)
+        saveWikiText($page, 'teststring3', 'fourth save', true);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(3, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('fourth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+
+        sleep(1); // wait for new revision ID
+
+        // add a minor edit (authenticated)
+        $_SERVER['REMOTE_USER'] = 'user';
+        saveWikiText($page, 'teststring4', 'fifth save', true);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(4, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('fifth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_MINOR_EDIT, $revinfo['type']);
+
+        sleep(1); // wait for new revision ID
+
+        // delete
+        saveWikiText($page, '', 'sixth save', false);
+        clearstatcache(false, $file);
+        $this->assertFileNotExists($file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(5, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('sixth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_DELETE, $revinfo['type']);
+
+        sleep(1); // wait for new revision ID
+
+        // restore
+        $REV = $lastmod;
+        saveWikiText($page, 'teststring4', 'seventh save', true);
+        clearstatcache(false, $file);
+        $this->assertFileExists($file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(6, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('seventh save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_REVERT, $revinfo['type']);
+        $this->assertEquals($REV, $revinfo['extra']);
+        $REV = '';
+
+        sleep(1); // wait for new revision ID
+
+        // create external edit
+        file_put_contents($file, 'teststring5');
+
+        sleep(1); // wait for new revision ID
+
+        // save on top of external edit
+        saveWikiText($page, 'teststring6', 'eigth save', false);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(8, count($revisions)); // two more revisions now!
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('eigth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+
+        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
+        $this->assertEquals('external edit', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+
+    }
+}
diff --git a/_test/tests/inc/form/buttonelement.test.php b/_test/tests/inc/form/buttonelement.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..8e1a7e1e29234a389f6a97bb6ec17810ce78e44e
--- /dev/null
+++ b/_test/tests/inc/form/buttonelement.test.php
@@ -0,0 +1,40 @@
+<?php
+
+use dokuwiki\Form;
+
+class form_buttonelement_test extends DokuWikiTest {
+
+    function test_simple() {
+        $form = new Form\Form();
+        $form->addButton('foo', 'Hello <b>World</b>')->val('bam')->attr('type', 'submit');
+
+        $html = $form->toHTML();
+        $pq = phpQuery::newDocumentXHTML($html);
+
+        $input = $pq->find('button[name=foo]');
+        $this->assertTrue($input->length == 1);
+        $this->assertEquals('bam', $input->val());
+        $this->assertEquals('submit', $input->attr('type'));
+        $this->assertEquals('Hello <b>World</b>', $input->text()); // tags were escaped
+
+        $b = $input->find('b'); // no tags found
+        $this->assertTrue($b->length == 0);
+    }
+
+    function test_html() {
+        $form = new Form\Form();
+        $form->addButtonHTML('foo', 'Hello <b>World</b>')->val('bam')->attr('type', 'submit');
+
+        $html = $form->toHTML();
+        $pq = phpQuery::newDocumentXHTML($html);
+
+        $input = $pq->find('button[name=foo]');
+        $this->assertTrue($input->length == 1);
+        $this->assertEquals('bam', $input->val());
+        $this->assertEquals('submit', $input->attr('type'));
+        $this->assertEquals('Hello World', $input->text()); // tags are stripped here
+
+        $b = $input->find('b'); // tags found
+        $this->assertTrue($b->length == 1);
+    }
+}
diff --git a/_test/tests/inc/form/checkableelement.test.php b/_test/tests/inc/form/checkableelement.test.php
index a0e4173e860b470efaae56885875c4fb9003c6a7..e1491f6ece59c30fb2f74ea0ed52ab260d646f8a 100644
--- a/_test/tests/inc/form/checkableelement.test.php
+++ b/_test/tests/inc/form/checkableelement.test.php
@@ -23,6 +23,7 @@ class form_checkableelement_test extends DokuWikiTest {
         $this->assertEquals('second', pq($inputs->elements[1])->val());
         $this->assertEquals('checked', pq($inputs->elements[0])->attr('checked'));
         $this->assertEquals('', pq($inputs->elements[1])->attr('checked'));
+        $this->assertEquals('radio', pq($inputs->elements[0])->attr('type'));
     }
 
     /**
@@ -45,5 +46,6 @@ class form_checkableelement_test extends DokuWikiTest {
         $this->assertEquals('second', pq($inputs->elements[1])->val());
         $this->assertEquals('', pq($inputs->elements[0])->attr('checked'));
         $this->assertEquals('checked', pq($inputs->elements[1])->attr('checked'));
+        $this->assertEquals('radio', pq($inputs->elements[0])->attr('type'));
     }
 }
diff --git a/_test/tests/inc/form/inputelement.test.php b/_test/tests/inc/form/inputelement.test.php
index 7a5e6d2ea944f349c702bc1907008972c99e0d31..3257d2a892a0ef700e6eec138c15633f12c01aa4 100644
--- a/_test/tests/inc/form/inputelement.test.php
+++ b/_test/tests/inc/form/inputelement.test.php
@@ -14,6 +14,7 @@ class form_inputelement_test extends DokuWikiTest {
         $input = $pq->find('input[name=foo]');
         $this->assertTrue($input->length == 1);
         $this->assertEquals('this is text', $input->val());
+        $this->assertEquals('text', $input->attr('type'));
 
         $label = $pq->find('label');
         $this->assertTrue($label->length == 1);
@@ -38,4 +39,20 @@ class form_inputelement_test extends DokuWikiTest {
         $this->assertEquals('a new text', $input->val());
     }
 
+    function test_password() {
+        $form = new Form\Form();
+        $form->addPasswordInput('foo', 'label text')->val('this is text');
+
+        $html = $form->toHTML();
+        $pq = phpQuery::newDocumentXHTML($html);
+
+        $input = $pq->find('input[name=foo]');
+        $this->assertTrue($input->length == 1);
+        $this->assertEquals('this is text', $input->val());
+        $this->assertEquals('password', $input->attr('type'));
+
+        $label = $pq->find('label');
+        $this->assertTrue($label->length == 1);
+        $this->assertEquals('label text', $label->find('span')->text());
+    }
 }
diff --git a/_test/tests/inc/io_readfile.test.php b/_test/tests/inc/io_readfile.test.php
index 700c1902b23c1f4b7502ae26fe66f5d89baf641d..43bb7f80c90cf0437253912e18cd65d5d10bb898 100644
--- a/_test/tests/inc/io_readfile.test.php
+++ b/_test/tests/inc/io_readfile.test.php
@@ -6,7 +6,7 @@ class io_readfile_test extends DokuWikiTest {
      * dependency for tests needing zlib extension to pass
      */
     public function test_ext_zlib() {
-        if (!extension_loaded('zlib')) {
+        if (!DOKU_HAS_GZIP) {
             $this->markTestSkipped('skipping all zlib tests.  Need zlib extension');
         }
     }
@@ -15,7 +15,7 @@ class io_readfile_test extends DokuWikiTest {
      * dependency for tests needing zlib extension to pass
      */
     public function test_ext_bz2() {
-        if (!extension_loaded('bz2')) {
+        if (!DOKU_HAS_BZIP) {
             $this->markTestSkipped('skipping all bzip2 tests.  Need bz2 extension');
         }
     }
diff --git a/_test/tests/inc/io_replaceinfile.test.php b/_test/tests/inc/io_replaceinfile.test.php
index 452ed740108fe48cf0351f358a466ab1796487fd..d517584e186c7c5c749e293cf2411bb354b9c2e9 100644
--- a/_test/tests/inc/io_replaceinfile.test.php
+++ b/_test/tests/inc/io_replaceinfile.test.php
@@ -8,7 +8,7 @@ class io_replaceinfile_test extends DokuWikiTest {
      * dependency for tests needing zlib extension to pass
      */
     public function test_ext_zlib() {
-        if (!extension_loaded('zlib')) {
+        if (!DOKU_HAS_GZIP) {
             $this->markTestSkipped('skipping all zlib tests.  Need zlib extension');
         }
     }
@@ -17,7 +17,7 @@ class io_replaceinfile_test extends DokuWikiTest {
      * dependency for tests needing zlib extension to pass
      */
     public function test_ext_bz2() {
-        if (!extension_loaded('bz2')) {
+        if (!DOKU_HAS_BZIP) {
             $this->markTestSkipped('skipping all bzip2 tests.  Need bz2 extension');
         }
     }
diff --git a/_test/tests/inc/io_savefile.test.php b/_test/tests/inc/io_savefile.test.php
index 4a4d4671d2d750b8197ba83a30e5164db1bf2c51..5f387b8a16bbe12537af047c43d97f444399209f 100644
--- a/_test/tests/inc/io_savefile.test.php
+++ b/_test/tests/inc/io_savefile.test.php
@@ -6,7 +6,7 @@ class io_savefile_test extends DokuWikiTest {
      * dependency for tests needing zlib extension to pass
      */
     public function test_ext_zlib() {
-        if (!extension_loaded('zlib')) {
+        if (!DOKU_HAS_GZIP) {
             $this->markTestSkipped('skipping all zlib tests.  Need zlib extension');
         }
     }
@@ -15,7 +15,7 @@ class io_savefile_test extends DokuWikiTest {
      * dependency for tests needing zlib extension to pass
      */
     public function test_ext_bz2() {
-        if (!extension_loaded('bz2')) {
+        if (!DOKU_HAS_BZIP) {
             $this->markTestSkipped('skipping all bzip2 tests.  Need bz2 extension');
         }
     }
diff --git a/_test/tests/inc/parser/parser_media.test.php b/_test/tests/inc/parser/parser_media.test.php
index d9a0626f54ba63a1f5daf5dcb61bb03096e9625a..abbcfe2130ddb3cfc0ca5e5b69f7ed524c054d0a 100644
--- a/_test/tests/inc/parser/parser_media.test.php
+++ b/_test/tests/inc/parser/parser_media.test.php
@@ -30,12 +30,21 @@ class TestOfDoku_Parser_Media extends TestOfDoku_Parser {
         $source = '<source src="http://some.where.far/away.ogv" type="video/ogg" />';
         $this->assertEquals(substr($url,67,64),$source);
         // work around random token
-        $a_first_part = '<a href="/./lib/exe/fetch.php?cache=&amp;tok=';
+        $a_first_part = '<a href="' . DOKU_BASE . 'lib/exe/fetch.php?cache=&amp;tok=';
         $a_second_part = '&amp;media=http%3A%2F%2Fsome.where.far%2Faway.ogv" class="media mediafile mf_ogv" title="http://some.where.far/away.ogv">';
-        $this->assertEquals(substr($url,132,45),$a_first_part);
-        $this->assertEquals(substr($url,183,121),$a_second_part);
+
+        $substr_start = 132;
+        $substr_len = strlen($a_first_part);
+        $this->assertEquals($a_first_part, substr($url, $substr_start, $substr_len));
+
+        $substr_start = strpos($url, '&amp;media', $substr_start + $substr_len);
+        $this->assertNotSame(false, $substr_start, 'Substring not found.');
+        $substr_len = strlen($a_second_part);
+        $this->assertEquals($a_second_part, substr($url, $substr_start, $substr_len));
+
         $rest = 'away.ogv</a></video>'."\n";
-        $this->assertEquals(substr($url,304),$rest);
+        $substr_start = strlen($url) - strlen($rest);
+        $this->assertEquals($rest, substr($url, $substr_start));
     }
 
     /**
@@ -58,12 +67,21 @@ class TestOfDoku_Parser_Media extends TestOfDoku_Parser {
         $Renderer = new Doku_Renderer_xhtml();
         $url = $Renderer->externalmedia($file, null, null, null, null, 'cache', 'details', true);
         // work around random token
-        $a_first_part = '<a href="/./lib/exe/fetch.php?tok=';
+        $a_first_part = '<a href="' . DOKU_BASE . 'lib/exe/fetch.php?tok=';
         $a_second_part = '&amp;media=http%3A%2F%2Fsome.where.far%2Faway.vid" class="media mediafile mf_vid" title="http://some.where.far/away.vid">';
-        $this->assertEquals(substr($url,0,34),$a_first_part);
-        $this->assertEquals(substr($url,40,121),$a_second_part);
+
+        $substr_start = 0;
+        $substr_len = strlen($a_first_part);
+        $this->assertEquals($a_first_part, substr($url, $substr_start, $substr_len));
+
+        $substr_start = strpos($url, '&amp;media', $substr_start + $substr_len);
+        $this->assertNotSame(false, $substr_start, 'Substring not found.');
+        $substr_len = strlen($a_second_part);
+        $this->assertEquals($a_second_part, substr($url, $substr_start, $substr_len));
+
         $rest = 'away.vid</a>';
-        $this->assertEquals(substr($url,161),$rest);
+        $substr_start = strlen($url) - strlen($rest);
+        $this->assertEquals($rest, substr($url, $substr_start));
     }
 
 
@@ -84,20 +102,33 @@ class TestOfDoku_Parser_Media extends TestOfDoku_Parser {
         $Renderer = new Doku_Renderer_xhtml();
         $url = $Renderer->externalmedia($file,null,null,null,null,'cache','details',true);
 
-        $video = '<video class="media" width="320" height="240" controls="controls" poster="/./lib/exe/fetch.php?media=wiki:kind_zu_katze.png">';
-        $this->assertEquals(substr($url,0,125),$video);
+        $video = '<video class="media" width="320" height="240" controls="controls" poster="' . DOKU_BASE . 'lib/exe/fetch.php?media=wiki:kind_zu_katze.png">';
+        $substr_start = 0;
+        $substr_len = strlen($video);
+        $this->assertEquals($video, substr($url, $substr_start, $substr_len));
+
+        // find $source_webm in $url
+        $source_webm = '<source src="' . DOKU_BASE . 'lib/exe/fetch.php?media=wiki:kind_zu_katze.webm" type="video/webm" />';
+        $substr_start = strpos($url, $source_webm, $substr_start + $substr_len);
+        $this->assertNotSame(false, $substr_start, 'Substring not found.');
+
+        // find $source_ogv in $url
+        $source_ogv = '<source src="' . DOKU_BASE . 'lib/exe/fetch.php?media=wiki:kind_zu_katze.ogv" type="video/ogg" />';
+        $substr_start = strpos($url, $source_ogv, $substr_start + strlen($source_webm));
+        $this->assertNotSame(false, $substr_start, 'Substring not found.');
 
-        $source_webm = '<source src="/./lib/exe/fetch.php?media=wiki:kind_zu_katze.webm" type="video/webm" />';
-        $this->assertEquals(substr($url,126,85),$source_webm);
-        $source_ogv = '<source src="/./lib/exe/fetch.php?media=wiki:kind_zu_katze.ogv" type="video/ogg" />';
-        $this->assertEquals(substr($url,212,83),$source_ogv);
+        // find $a_webm in $url
+        $a_webm = '<a href="' . DOKU_BASE . 'lib/exe/fetch.php?id=&amp;cache=&amp;media=wiki:kind_zu_katze.webm" class="media mediafile mf_webm" title="wiki:kind_zu_katze.webm (99.1 KB)">kind_zu_katze.webm</a>';
+        $substr_start = strpos($url, $a_webm, $substr_start + strlen($source_ogv));
+        $this->assertNotSame(false, $substr_start, 'Substring not found.');
 
-        $a_webm = '<a href="/./lib/exe/fetch.php?id=&amp;cache=&amp;media=wiki:kind_zu_katze.webm" class="media mediafile mf_webm" title="wiki:kind_zu_katze.webm (99.1 KB)">kind_zu_katze.webm</a>';
-        $a_ogv = '<a href="/./lib/exe/fetch.php?id=&amp;cache=&amp;media=wiki:kind_zu_katze.ogv" class="media mediafile mf_ogv" title="wiki:kind_zu_katze.ogv (44.8 KB)">kind_zu_katze.ogv</a>';
-        $this->assertEquals(substr($url,296,176),$a_webm);
-        $this->assertEquals(substr($url,472,172),$a_ogv);
+        // find $a_webm in $url
+        $a_ogv = '<a href="' . DOKU_BASE . 'lib/exe/fetch.php?id=&amp;cache=&amp;media=wiki:kind_zu_katze.ogv" class="media mediafile mf_ogv" title="wiki:kind_zu_katze.ogv (44.8 KB)">kind_zu_katze.ogv</a>';
+        $substr_start = strpos($url, $a_ogv, $substr_start + strlen($a_webm));
+        $this->assertNotSame(false, $substr_start, 'Substring not found.');
 
         $rest = '</video>'."\n";
-        $this->assertEquals(substr($url,644),$rest);
+        $substr_start = strlen($url) - strlen($rest);
+        $this->assertEquals($rest, substr($url, $substr_start));
     }
 }
diff --git a/_test/tests/inc/remote.test.php b/_test/tests/inc/remote.test.php
index 037b1dc0b316eaf5c4b27bba8be69ae1aeef61f9..407992ae7e7128e2729ad2542656f4a16525804f 100644
--- a/_test/tests/inc/remote.test.php
+++ b/_test/tests/inc/remote.test.php
@@ -157,6 +157,8 @@ class remote_test extends DokuWikiTest {
     }
 
     function test_hasAccessSuccess() {
+        global $conf;
+        $conf['remoteuser'] = '';
         $this->assertTrue($this->remote->hasAccess());
     }
 
@@ -209,6 +211,7 @@ class remote_test extends DokuWikiTest {
     function test_forceAccessSuccess() {
         global $conf;
         $conf['remote'] = 1;
+        $conf['remoteuser'] = '';
         $this->remote->forceAccess(); // no exception should occur
     }
 
@@ -223,7 +226,11 @@ class remote_test extends DokuWikiTest {
 
     function test_generalCoreFunctionWithoutArguments() {
         global $conf;
+        global $USERINFO;
         $conf['remote'] = 1;
+        $conf['remoteuser'] = '';
+        $conf['useacl'] = 1;
+        $USERINFO['grps'] = array('grp');
         $remoteApi = new RemoteApi();
         $remoteApi->getCoreMethods(new RemoteAPICoreTest());
 
@@ -249,7 +256,10 @@ class remote_test extends DokuWikiTest {
 
     function test_generalCoreFunctionWithArguments() {
         global $conf;
+        global $USERINFO;
         $conf['remote'] = 1;
+        $conf['remoteuser'] = '';
+        $conf['useacl'] = 1;
 
         $remoteApi = new RemoteApi();
         $remoteApi->getCoreMethods(new RemoteAPICoreTest());
@@ -262,7 +272,10 @@ class remote_test extends DokuWikiTest {
 
     function test_pluginCallMethods() {
         global $conf;
+        global $USERINFO;
         $conf['remote'] = 1;
+        $conf['remoteuser'] = '';
+        $conf['useacl'] = 1;
 
         $remoteApi = new RemoteApi();
         $this->assertEquals($remoteApi->call('plugin.testplugin.method1'), null);
@@ -319,6 +332,11 @@ class remote_test extends DokuWikiTest {
     }
 
     function test_pluginCallCustomPath() {
+        global $conf;
+        global $USERINFO;
+        $conf['remote'] = 1;
+        $conf['remoteuser'] = '';
+        $conf['useacl'] = 1;
         global $EVENT_HANDLER;
         $EVENT_HANDLER->register_hook('RPC_CALL_ADD', 'BEFORE', $this, 'pluginCallCustomPathRegister');
 
diff --git a/bin/.htaccess b/bin/.htaccess
index 281d5c33db37cd1cc887dbb2d36897b897835071..5f279f180699c2f115c326319a8afc645c5a7245 100644
--- a/bin/.htaccess
+++ b/bin/.htaccess
@@ -1,2 +1,7 @@
-order allow,deny
-deny from all
+<IfModule mod_authz_host>
+    Require all denied
+</IfModule>
+<IfModule !mod_authz_host>
+    Order allow,deny
+    Deny from all
+</IfModule>
diff --git a/bin/dwpage.php b/bin/dwpage.php
index d7f6e9bb8df565763a8831493650d7faa7f75062..1c1a1c10ee6f38cb5e41e75e51a31829600c97ec 100755
--- a/bin/dwpage.php
+++ b/bin/dwpage.php
@@ -248,7 +248,7 @@ class PageCLI extends DokuCLI {
 
         lock($wiki_id);
 
-        if(checklock($wiki_id) != $this->username) {
+        if(checklock($wiki_id)) {
             $this->error("Unable to obtain lock for $wiki_id ");
             var_dump(checklock($wiki_id));
             exit(1);
diff --git a/conf/.htaccess b/conf/.htaccess
index bcc3ea0bdd29b4b55ef28f7b6a2deaf749fef3bd..b3ffca597c182a9be02a0fc4d58c6a7e7931200c 100644
--- a/conf/.htaccess
+++ b/conf/.htaccess
@@ -1,3 +1,8 @@
 ## no access to the conf directory
-order allow,deny
-deny from all
+<IfModule mod_authz_host>
+    Require all denied
+</IfModule>
+<IfModule !mod_authz_host>
+    Order allow,deny
+    Deny from all
+</IfModule>
diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php
index bdc9739d1844a0c1e9b996717a28bcf84d9e12e7..ef62b41e708b5457a7301124609946b097ff59df 100644
--- a/conf/dokuwiki.php
+++ b/conf/dokuwiki.php
@@ -65,7 +65,7 @@ $conf['disableactions'] = '';            //comma separated list of actions to di
 $conf['auth_security_timeout'] = 900;    //time (seconds) auth data is considered valid, set to 0 to recheck on every page view
 $conf['securecookie'] = 1;               //never send HTTPS cookies via HTTP
 $conf['remote']      = 0;                //Enable/disable remote interfaces
-$conf['remoteuser']  = '!!not set !!';   //user/groups that have access to remote interface (comma separated)
+$conf['remoteuser']  = '!!not set!!';    //user/groups that have access to remote interface (comma separated)
 
 /* Antispam Features */
 $conf['usewordblock']= 1;                //block spam based on words? 0|1
diff --git a/conf/interwiki.conf b/conf/interwiki.conf
index 4dc3c80ee40985e561d687a1d476a15acb1e5a25..a314c081746618b37c68d08d4d5ba40f0ece9ca3 100644
--- a/conf/interwiki.conf
+++ b/conf/interwiki.conf
@@ -30,7 +30,7 @@ amazon    https://www.amazon.com/exec/obidos/ASIN/{URL}/splitbrain-20/
 amazon.de https://www.amazon.de/exec/obidos/ASIN/{URL}/splitbrain-21/
 amazon.uk https://www.amazon.co.uk/exec/obidos/ASIN/
 paypal    https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=
-phpfn     https://www.php.net/{NAME}
+phpfn     https://secure.php.net/{NAME}
 skype     skype:{NAME}
 google.de https://www.google.de/search?q=
 go        https://www.google.com/search?q={URL}&amp;btnI=lucky
diff --git a/conf/license.php b/conf/license.php
index 89728ab57f53fb92185dc68285249f7faebb2302..30d409e2e26404dc2bef013499ee3cb59d931942 100644
--- a/conf/license.php
+++ b/conf/license.php
@@ -14,23 +14,23 @@ $license['publicdomain'] = array(
     'url'  => 'http://creativecommons.org/licenses/publicdomain/',
 );
 $license['cc-by'] = array(
-    'name' => 'CC Attribution 3.0 Unported',
-    'url'  => 'http://creativecommons.org/licenses/by/3.0/',
+    'name' => 'CC Attribution 4.0 International',
+    'url'  => 'http://creativecommons.org/licenses/by/4.0/',
 );
 $license['cc-by-sa'] = array(
-    'name' => 'CC Attribution-Share Alike 3.0 Unported',
-    'url'  => 'http://creativecommons.org/licenses/by-sa/3.0/',
+    'name' => 'CC Attribution-Share Alike 4.0 International',
+    'url'  => 'http://creativecommons.org/licenses/by-sa/4.0/',
 );
 $license['gnufdl'] = array(
     'name' => 'GNU Free Documentation License 1.3',
     'url'  => 'http://www.gnu.org/licenses/fdl-1.3.html',
 );
 $license['cc-by-nc'] = array(
-    'name' => 'CC Attribution-Noncommercial 3.0 Unported',
-    'url'  => 'http://creativecommons.org/licenses/by-nc/3.0/',
+    'name' => 'CC Attribution-Noncommercial 4.0 International',
+    'url'  => 'http://creativecommons.org/licenses/by-nc/4.0/',
 );
 $license['cc-by-nc-sa'] = array(
-    'name' => 'CC Attribution-Noncommercial-Share Alike 3.0 Unported',
-    'url'  => 'http://creativecommons.org/licenses/by-nc-sa/3.0/',
+    'name' => 'CC Attribution-Noncommercial-Share Alike 4.0 International',
+    'url'  => 'http://creativecommons.org/licenses/by-nc-sa/4.0/',
 );
 
diff --git a/data/.htaccess b/data/.htaccess
index 281d5c33db37cd1cc887dbb2d36897b897835071..5f279f180699c2f115c326319a8afc645c5a7245 100644
--- a/data/.htaccess
+++ b/data/.htaccess
@@ -1,2 +1,7 @@
-order allow,deny
-deny from all
+<IfModule mod_authz_host>
+    Require all denied
+</IfModule>
+<IfModule !mod_authz_host>
+    Order allow,deny
+    Deny from all
+</IfModule>
diff --git a/data/deleted.files b/data/deleted.files
index 68fad3cda6b3393746d6bf0b33274e466e5b502a..14fd785a0213c6a6a2ad26e2d427222647017991 100644
--- a/data/deleted.files
+++ b/data/deleted.files
@@ -228,19 +228,6 @@ inc/geshi/xpp.php
 inc/geshi/yaml.php
 inc/geshi/z80.php
 inc/geshi/zxbasic.php
-inc/lang/ku/admin.txt
-inc/lang/ku/denied.txt
-inc/lang/ku/editrev.txt
-inc/lang/ku/locked.txt
-inc/lang/ku/login.txt
-inc/lang/ku/mailtext.txt
-inc/lang/ku/norev.txt
-inc/lang/ku/password.txt
-inc/lang/ku/read.txt
-inc/lang/ku/register.txt
-inc/lang/ku/revisions.txt
-inc/lang/ku/showrev.txt
-inc/lang/ku/stopwords.txt
 lib/images/interwiki/coral.gif
 lib/images/interwiki/dokubug.gif
 lib/images/interwiki/sb.gif
@@ -250,25 +237,6 @@ lib/scripts/tw-sack.js
 
 # removed in 2014-05-05
 lib/images/fileicons/audio.png
-lib/plugins/acl/lang/hi/lang.php
-lib/plugins/acl/lang/id-ni/lang.php
-lib/plugins/acl/lang/lb/lang.php
-lib/plugins/acl/lang/ms/lang.php
-lib/plugins/authad/lang/lv/settings.php
-lib/plugins/authldap/lang/lv/settings.php
-lib/plugins/authmysql/lang/fi/settings.php
-lib/plugins/authmysql/lang/lv/settings.php
-lib/plugins/authpgsql/lang/fi/settings.php
-lib/plugins/authpgsql/lang/it/settings.php
-lib/plugins/authpgsql/lang/lv/settings.php
-lib/plugins/authpgsql/lang/pl/settings.php
-lib/plugins/config/lang/hr/lang.php
-lib/plugins/config/lang/id/lang.php
-lib/plugins/config/lang/kk/lang.php
-lib/plugins/config/lang/lb/lang.php
-lib/plugins/config/lang/mk/lang.php
-lib/plugins/config/lang/ms/lang.php
-lib/plugins/config/lang/vi/lang.php
 lib/plugins/plugin/admin.php
 lib/plugins/plugin/classes/ap_delete.class.php
 lib/plugins/plugin/classes/ap_download.class.php
@@ -380,31 +348,6 @@ lib/plugins/plugin/lang/zh/admin_plugin.txt
 lib/plugins/plugin/lang/zh/lang.php
 lib/plugins/plugin/plugin.info.txt
 lib/plugins/plugin/style.css
-lib/plugins/popularity/lang/et/lang.php
-lib/plugins/popularity/lang/hr/lang.php
-lib/plugins/popularity/lang/id/lang.php
-lib/plugins/popularity/lang/kk/lang.php
-lib/plugins/popularity/lang/lb/lang.php
-lib/plugins/popularity/lang/mk/lang.php
-lib/plugins/popularity/lang/ms/lang.php
-lib/plugins/popularity/lang/vi/lang.php
-lib/plugins/revert/lang/af/lang.php
-lib/plugins/revert/lang/hi/lang.php
-lib/plugins/revert/lang/hr/lang.php
-lib/plugins/revert/lang/id-ni/lang.php
-lib/plugins/revert/lang/id/lang.php
-lib/plugins/revert/lang/kk/lang.php
-lib/plugins/revert/lang/lb/lang.php
-lib/plugins/revert/lang/lt/lang.php
-lib/plugins/revert/lang/mk/lang.php
-lib/plugins/revert/lang/ms/lang.php
-lib/plugins/revert/lang/vi/lang.php
-lib/plugins/usermanager/lang/hi/lang.php
-lib/plugins/usermanager/lang/hr/lang.php
-lib/plugins/usermanager/lang/id-ni/lang.php
-lib/plugins/usermanager/lang/lb/lang.php
-lib/plugins/usermanager/lang/ms/lang.php
-lib/plugins/usermanager/lang/vi/lang.php
 
 # removed in 2013-11-18
 lib/images/arrow_down.gif
@@ -689,7 +632,6 @@ lib/scripts/domTT.js
 
 # removed in 2006-11-06
 inc/admin_acl.php
-inc/lang/lt/stopwords.txt
 inc/magpie
 inc/magpie/rss_cache.inc
 inc/magpie/rss_fetch.inc
diff --git a/doku.php b/doku.php
index 0f4557fd0209a2eef9d9ce4364b3593be075f05a..b1797fdf2a6898e18750952f565ab50728240a80 100644
--- a/doku.php
+++ b/doku.php
@@ -9,7 +9,7 @@
  */
 
 // update message version - always use a string to avoid localized floats!
-$updateVersion = "47";
+$updateVersion = "48";
 
 //  xdebug_start_profiling();
 
diff --git a/feed.php b/feed.php
index 7ea2e235e349ec630b4041df4c9c9eb7c634f7eb..7b3b5e9407b8fdaa96f25904175ab65e3a7a6a3c 100644
--- a/feed.php
+++ b/feed.php
@@ -135,7 +135,7 @@ function rss_parseOptions() {
                 'content_type' => array('str', 'view', $conf['rss_media'])
 
             ) as $name => $val) {
-        $opt[$name] = $INPUT->$val[0]($val[1], $val[2], true);
+        $opt[$name] = $INPUT->{$val[0]}($val[1], $val[2], true);
     }
 
     $opt['items']      = max(0, (int) $opt['items']);
diff --git a/inc/.htaccess b/inc/.htaccess
index 2d9c357fff3ccc47d0bd6f9a232c2c2cb163ed01..2b34c725f6a5645d8c6e050513a364e76aecb939 100644
--- a/inc/.htaccess
+++ b/inc/.htaccess
@@ -1,3 +1,8 @@
 ## no access to the inc directory
-order allow,deny
-deny from all
+<IfModule mod_authz_host>
+    Require all denied
+</IfModule>
+<IfModule !mod_authz_host>
+    Order allow,deny
+    Deny from all
+</IfModule>
diff --git a/inc/Form/ButtonElement.php b/inc/Form/ButtonElement.php
new file mode 100644
index 0000000000000000000000000000000000000000..77c30ed4ff8439350f354a8cd22dc85d4d806f9b
--- /dev/null
+++ b/inc/Form/ButtonElement.php
@@ -0,0 +1,34 @@
+<?php
+namespace dokuwiki\Form;
+
+/**
+ * Class ButtonElement
+ *
+ * Represents a simple button
+ *
+ * @package dokuwiki\Form
+ */
+class ButtonElement extends Element {
+
+    /** @var string HTML content */
+    protected $content = '';
+
+    /**
+     * @param string $name
+     * @param string $content HTML content of the button. You have to escape it yourself.
+     */
+    function __construct($name, $content = '') {
+        parent::__construct('button', array('name' => $name, 'value' => 1));
+        $this->content = $content;
+    }
+
+    /**
+     * The HTML representation of this element
+     *
+     * @return string
+     */
+    public function toHTML() {
+        return '<button ' . buildAttributes($this->attrs()) . '>'.$this->content.'</button>';
+    }
+
+}
diff --git a/inc/Form/Form.php b/inc/Form/Form.php
index 625557fa1949baa1eff2324c3a1c527a79a39876..7eaa53041ff6685d2ba760f494d44f3386b474d6 100644
--- a/inc/Form/Form.php
+++ b/inc/Form/Form.php
@@ -140,7 +140,7 @@ class Form extends Element {
      * @return Element
      */
     public function addElement(Element $element, $pos = -1) {
-        if(is_a($element, '\dokuwiki\Form')) throw new \InvalidArgumentException('You can\'t add a form to a form');
+        if(is_a($element, '\dokuwiki\Form\Form')) throw new \InvalidArgumentException('You can\'t add a form to a form');
         if($pos < 0) {
             $this->elements[] = $element;
         } else {
@@ -156,7 +156,7 @@ class Form extends Element {
      * @param $pos 0-based position of the element to replace
      */
     public function replaceElement(Element $element, $pos) {
-        if(is_a($element, '\dokuwiki\Form')) throw new \InvalidArgumentException('You can\'t add a form to a form');
+        if(is_a($element, '\dokuwiki\Form\Form')) throw new \InvalidArgumentException('You can\'t add a form to a form');
         array_splice($this->elements, $pos, 1, array($element));
     }
 
@@ -233,6 +233,65 @@ class Form extends Element {
         return $this->addElement(new TextareaElement($name, $label), $pos);
     }
 
+    /**
+     * Adds a simple button, escapes the content for you
+     *
+     * @param string $name
+     * @param string $content
+     * @param int $pos
+     * @return Element
+     */
+    public function addButton($name, $content, $pos = -1) {
+        return $this->addElement(new ButtonElement($name, hsc($content)), $pos);
+    }
+
+    /**
+     * Adds a simple button, allows HTML for content
+     *
+     * @param string $name
+     * @param string $html
+     * @param int $pos
+     * @return Element
+     */
+    public function addButtonHTML($name, $html, $pos = -1) {
+        return $this->addElement(new ButtonElement($name, $html), $pos);
+    }
+
+    /**
+     * Adds a label referencing another input element, escapes the label for you
+     *
+     * @param $label
+     * @param string $for
+     * @param int $pos
+     * @return Element
+     */
+    public function addLabel($label, $for='', $pos = -1) {
+        return $this->addLabelHTML(hsc($label), $for, $pos);
+    }
+
+    /**
+     * Adds a label referencing another input element, allows HTML for content
+     *
+     * @param string $content
+     * @param string|Element $for
+     * @param int $pos
+     * @return Element
+     */
+    public function addLabelHTML($content, $for='', $pos = -1) {
+        $element = new LabelElement(hsc($content));
+
+        if(is_a($for, '\dokuwiki\Form\Element')) {
+            /** @var Element $for */
+            $for = $for->id();
+        }
+        $for = (string) $for;
+        if($for !== '') {
+            $element->attr('for', $for);
+        }
+
+        return $this->addElement($element, $pos);
+    }
+
     /**
      * Add fixed HTML to the form
      *
diff --git a/inc/Form/InputElement.php b/inc/Form/InputElement.php
index 5908f7d11821a586316fe62b09ea94a677fc6926..694dd0848de543a00da945761d9c155089fca161 100644
--- a/inc/Form/InputElement.php
+++ b/inc/Form/InputElement.php
@@ -12,7 +12,7 @@ namespace dokuwiki\Form;
  */
 class InputElement extends Element {
     /**
-     * @var Label
+     * @var LabelElement
      */
     protected $label = null;
 
@@ -24,18 +24,19 @@ class InputElement extends Element {
     /**
      * @param string $type The type of this element
      * @param string $name The name of this form element
-     * @param string $label The label text for this element
+     * @param string $label The label text for this element (will be autoescaped)
      */
     public function __construct($type, $name, $label = '') {
         parent::__construct($type, array('name' => $name));
         $this->attr('name', $name);
-        if($label) $this->label = new Label($label);
+        $this->attr('type', $type);
+        if($label) $this->label = new LabelElement($label);
     }
 
     /**
      * Returns the label element if there's one set
      *
-     * @return Label|null
+     * @return LabelElement|null
      */
     public function getLabel() {
         return $this->label;
diff --git a/inc/Form/Label.php b/inc/Form/LabelElement.php
similarity index 74%
rename from inc/Form/Label.php
rename to inc/Form/LabelElement.php
index 8dcd7cd5f2fea037fa9932409b941c86f6e2dfd6..9c8d542774132dda3beb012e7648fd654af4ba6b 100644
--- a/inc/Form/Label.php
+++ b/inc/Form/LabelElement.php
@@ -5,12 +5,12 @@ namespace dokuwiki\Form;
  * Class Label
  * @package dokuwiki\Form
  */
-class Label extends ValueElement {
+class LabelElement extends ValueElement {
 
     /**
      * Creates a new Label
      *
-     * @param string $label
+     * @param string $label This is is raw HTML and will not be escaped
      */
     public function __construct($label) {
         parent::__construct('label', $label);
@@ -22,6 +22,6 @@ class Label extends ValueElement {
      * @return string
      */
     public function toHTML() {
-        return '<label ' . buildAttributes($this->attrs()) . '>' . hsc($this->val()) . '</label>';
+        return '<label ' . buildAttributes($this->attrs()) . '>' . $this->val() . '</label>';
     }
 }
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index 092216c572c249280d84a9b62b8778aa29c2579c..4aefcfe5abacd457d1ab5d291b93f77b1bea4db1 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -597,13 +597,15 @@ class HTTPClient {
             // setups with this solution before, but we have no usable test for that and TLS should be the more
             // common crypto by now
             if (@stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
-                $requesturl = $requestinfo['path'];
+                $requesturl = $requestinfo['path'].
+                  (!empty($requestinfo['query'])?'?'.$requestinfo['query']:'');
                 return true;
             }
 
             // if the above failed, this will most probably not work either, but we can try
             if (@stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT)) {
-                $requesturl = $requestinfo['path'];
+                $requesturl = $requestinfo['path'].
+                  (!empty($requestinfo['query'])?'?'.$requestinfo['query']:'');
                 return true;
             }
 
diff --git a/inc/actions.php b/inc/actions.php
index b0753b22eee0250ecb4955e8e082d3b6c361e461..adba2aa3233108d2ea4b3044067e1d24f5a77ca9 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -29,6 +29,8 @@ function act_dispatch(){
 
     // give plugins an opportunity to process the action
     $evt = new Doku_Event('ACTION_ACT_PREPROCESS',$ACT);
+
+    $headers = array();
     if ($evt->advise_before()) {
 
         //sanitize $ACT
@@ -144,8 +146,10 @@ function act_dispatch(){
             $ACT = act_draftdel($ACT);
 
         //draft saving on preview
-        if($ACT == 'preview')
+        if($ACT == 'preview') {
+            $headers[] = "X-XSS-Protection: 0";
             $ACT = act_draftsave($ACT);
+        }
 
         //edit
         if(in_array($ACT, array('edit', 'preview', 'recover'))) {
@@ -189,7 +193,6 @@ function act_dispatch(){
     global $license;
 
     //call template FIXME: all needed vars available?
-    $headers = array();
     $headers[] = 'Content-Type: text/html; charset=utf-8';
     trigger_event('ACTION_HEADERS_SEND',$headers,'act_sendheaders');
 
diff --git a/inc/auth.php b/inc/auth.php
index e04a6ca1a8b2f089a48b9b9581ee92771fa6d7ae..8965ee4c019cb2236799e44c76ab5953061cf12f 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -101,10 +101,7 @@ function auth_setup() {
         $INPUT->set('p', stripctl($INPUT->str('p')));
     }
 
-    if($INPUT->str('authtok')) {
-        // when an authentication token is given, trust the session
-        auth_validateToken($INPUT->str('authtok'));
-    } elseif(!is_null($auth) && $auth->canDo('external')) {
+    if(!is_null($auth) && $auth->canDo('external')) {
         // external trust mechanism in place
         $auth->trustExternal($INPUT->str('u'), $INPUT->str('p'), $INPUT->bool('r'));
     } else {
@@ -274,52 +271,6 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
     return false;
 }
 
-/**
- * Checks if a given authentication token was stored in the session
- *
- * Will setup authentication data using data from the session if the
- * token is correct. Will exit with a 401 Status if not.
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- *
- * @param  string $token The authentication token
- * @return boolean|null true (or will exit on failure)
- */
-function auth_validateToken($token) {
-    if(!$token || $token != $_SESSION[DOKU_COOKIE]['auth']['token']) {
-        // bad token
-        http_status(401);
-        print 'Invalid auth token - maybe the session timed out';
-        unset($_SESSION[DOKU_COOKIE]['auth']['token']); // no second chance
-        exit;
-    }
-    // still here? trust the session data
-    global $USERINFO;
-    /* @var Input $INPUT */
-    global $INPUT;
-
-    $INPUT->server->set('REMOTE_USER',$_SESSION[DOKU_COOKIE]['auth']['user']);
-    $USERINFO               = $_SESSION[DOKU_COOKIE]['auth']['info'];
-    return true;
-}
-
-/**
- * Create an auth token and store it in the session
- *
- * NOTE: this is completely unrelated to the getSecurityToken() function
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- *
- * @return string The auth token
- */
-function auth_createToken() {
-    $token = md5(auth_randombytes(16));
-    @session_start(); // reopen the session if needed
-    $_SESSION[DOKU_COOKIE]['auth']['token'] = $token;
-    session_write_close();
-    return $token;
-}
-
 /**
  * Builds a pseudo UID from browser and IP data
  *
@@ -752,10 +703,10 @@ function auth_aclcheck_cb($data) {
 
     //add ALL group
     $groups[] = '@ALL';
-    
+
     //add User
     if($user) $groups[] = $user;
-    
+
     //check exact match first
     $matches = preg_grep('/^'.preg_quote($id, '/').'[ \t]+([^ \t]+)[ \t]+/', $AUTH_ACL);
     if(count($matches)) {
diff --git a/inc/common.php b/inc/common.php
index 28c9c41eec1678d4eaef883c0c56f592dafcf2d8..af7330c726fd0c1bfc0a32d1caab6f7cc798d0b4 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -30,6 +30,32 @@ function hsc($string) {
     return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
 }
 
+/**
+ * Checks if the given input is blank
+ *
+ * This is similar to empty() but will return false for "0".
+ *
+ * Please note: when you pass uninitialized variables, they will implicitly be created
+ * with a NULL value without warning.
+ *
+ * To avoid this it's recommended to guard the call with isset like this:
+ *
+ * (isset($foo) && !blank($foo))
+ * (!isset($foo) || blank($foo))
+ *
+ * @param $in
+ * @param bool $trim Consider a string of whitespace to be blank
+ * @return bool
+ */
+function blank(&$in, $trim = false) {
+    if(is_null($in)) return true;
+    if(is_array($in)) return empty($in);
+    if($in === "\0") return true;
+    if($trim && trim($in) === '') return true;
+    if(strlen($in) > 0) return false;
+    return empty($in);
+}
+
 /**
  * print a newline terminated string
  *
@@ -1164,6 +1190,42 @@ function con($pre, $text, $suf, $pretty = false) {
     return $pre.$text.$suf;
 }
 
+/**
+ * Checks if the current page version is newer than the last entry in the page's
+ * changelog. If so, we assume it has been an external edit and we create an
+ * attic copy and add a proper changelog line.
+ *
+ * This check is only executed when the page is about to be saved again from the
+ * wiki, triggered in @see saveWikiText()
+ *
+ * @param string $id the page ID
+ */
+function detectExternalEdit($id) {
+    global $lang;
+
+    $file     = wikiFN($id);
+    $old      = @filemtime($file); // from page
+    $pagelog  = new PageChangeLog($id, 1024);
+    $oldRev   = $pagelog->getRevisions(-1, 1); // from changelog
+    $oldRev   = (int) (empty($oldRev) ? 0 : $oldRev[0]);
+
+    if(!file_exists(wikiFN($id, $old)) && file_exists($file) && $old >= $oldRev) {
+        // add old revision to the attic if missing
+        saveOldRevision($id);
+        // add a changelog entry if this edit came from outside dokuwiki
+        if($old > $oldRev) {
+            $filesize_old = filesize(wikiFN($id, $oldRev));
+            $filesize_new = filesize($file);
+            $sizechange = $filesize_new - $filesize_old;
+
+            addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=> true), $sizechange);
+            // remove soon to be stale instructions
+            $cache = new cache_instructions($id, $file);
+            $cache->removeCache();
+        }
+    }
+}
+
 /**
  * Saves a wikitext by calling io_writeWikiPage.
  * Also directs changelog and attic updates.
@@ -1189,93 +1251,84 @@ function saveWikiText($id, $text, $summary, $minor = false) {
     /* @var Input $INPUT */
     global $INPUT;
 
-    // ignore if no changes were made
-    if($text == rawWiki($id, '')) {
-        return;
+    // prepare data for event
+    $svdta = array();
+    $svdta['id']             = $id;
+    $svdta['file']           = wikiFN($id);
+    $svdta['revertFrom']     = $REV;
+    $svdta['oldRevision']    = @filemtime($svdta['file']);
+    $svdta['newRevision']    = 0;
+    $svdta['newContent']     = $text;
+    $svdta['oldContent']     = rawWiki($id);
+    $svdta['summary']        = $summary;
+    $svdta['contentChanged'] = ($svdta['newContent'] != $svdta['oldContent']);
+    $svdta['changeInfo']     = '';
+    $svdta['changeType']     = DOKU_CHANGE_TYPE_EDIT;
+    $svdta['sizechange']     = null;
+
+    // select changelog line type
+    if($REV) {
+        $svdta['changeType']  = DOKU_CHANGE_TYPE_REVERT;
+        $svdta['changeInfo'] = $REV;
+    } else if(!file_exists($svdta['file'])) {
+        $svdta['changeType'] = DOKU_CHANGE_TYPE_CREATE;
+    } else if(trim($text) == '') {
+        // empty or whitespace only content deletes
+        $svdta['changeType'] = DOKU_CHANGE_TYPE_DELETE;
+        // autoset summary on deletion
+        if(blank($svdta['summary'])) $svdta['summary'] = $lang['deleted'];
+    } else if($minor && $conf['useacl'] && $INPUT->server->str('REMOTE_USER')) {
+        //minor edits only for logged in users
+        $svdta['changeType'] = DOKU_CHANGE_TYPE_MINOR_EDIT;
     }
 
-    $file        = wikiFN($id);
-    $old         = @filemtime($file); // from page
-    $wasRemoved  = (trim($text) == ''); // check for empty or whitespace only
-    $wasCreated  = !file_exists($file);
-    $wasReverted = ($REV == true);
-    $pagelog     = new PageChangeLog($id, 1024);
-    $newRev      = false;
-    $oldRev      = $pagelog->getRevisions(-1, 1); // from changelog
-    $oldRev      = (int) (empty($oldRev) ? 0 : $oldRev[0]);
-    if(!file_exists(wikiFN($id, $old)) && file_exists($file) && $old >= $oldRev) {
-        // add old revision to the attic if missing
-        saveOldRevision($id);
+    $event = new Doku_Event('COMMON_WIKIPAGE_SAVE', $svdta);
+    if(!$event->advise_before()) return;
 
-        // add a changelog entry if this edit came from outside dokuwiki
-        $filesize_old = filesize(wikiFN($id, $oldRev));
-        $filesize_new = filesize($file);
-        $sizechange = $filesize_new - $filesize_old;
+    // if the content has not been changed, no save happens (plugins may override this)
+    if(!$svdta['contentChanged']) return;
 
-        if($old > $oldRev) {
-            addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=> true), $sizechange);
-            // remove soon to be stale instructions
-            $cache = new cache_instructions($id, $file);
-            $cache->removeCache();
-        }
-    }
+    detectExternalEdit($id);
 
-    if($wasCreated) {
+    if($svdta['changeType'] == DOKU_CHANGE_TYPE_CREATE) {
         $filesize_old = 0;
     } else {
-        $filesize_old = filesize($file);
+        $filesize_old = filesize($svdta['file']);
     }
+    if($svdta['changeType'] == DOKU_CHANGE_TYPE_DELETE) {
 
-    if($wasRemoved) {
         // Send "update" event with empty data, so plugins can react to page deletion
-        $data = array(array($file, '', false), getNS($id), noNS($id), false);
+        $data = array(array($svdta['file'], '', false), getNS($id), noNS($id), false);
         trigger_event('IO_WIKIPAGE_WRITE', $data);
         // pre-save deleted revision
-        @touch($file);
+        @touch($svdta['file']);
         clearstatcache();
-        $newRev = saveOldRevision($id);
+        $data['newRevision'] = saveOldRevision($id);
         // remove empty file
-        @unlink($file);
+        @unlink($svdta['file']);
         $filesize_new = 0;
         // don't remove old meta info as it should be saved, plugins can use IO_WIKIPAGE_WRITE for removing their metadata...
         // purge non-persistant meta data
         p_purge_metadata($id);
-        $del = true;
-        // autoset summary on deletion
-        if(empty($summary)) $summary = $lang['deleted'];
         // remove empty namespaces
         io_sweepNS($id, 'datadir');
         io_sweepNS($id, 'mediadir');
     } else {
         // save file (namespace dir is created in io_writeWikiPage)
-        io_writeWikiPage($file, $text, $id);
+        io_writeWikiPage($svdta['file'], $text, $id);
         // pre-save the revision, to keep the attic in sync
-        $newRev = saveOldRevision($id);
-        $del    = false;
-        $filesize_new = filesize($file);
+        $svdta['newRevision'] = saveOldRevision($id);
+        $filesize_new = filesize($svdta['file']);
     }
+    $svdta['sizechange'] = $filesize_new - $filesize_old;
 
-    // select changelog line type
-    $extra = '';
-    $type  = DOKU_CHANGE_TYPE_EDIT;
-    if($wasReverted) {
-        $type  = DOKU_CHANGE_TYPE_REVERT;
-        $extra = $REV;
-    } else if($wasCreated) {
-        $type = DOKU_CHANGE_TYPE_CREATE;
-    } else if($wasRemoved) {
-        $type = DOKU_CHANGE_TYPE_DELETE;
-    } else if($minor && $conf['useacl'] && $INPUT->server->str('REMOTE_USER')) {
-        $type = DOKU_CHANGE_TYPE_MINOR_EDIT;
-    } //minor edits only for logged in users
-
-    $sizechange = $filesize_new - $filesize_old;
+    $event->advise_after();
 
-    addLogEntry($newRev, $id, $type, $summary, $extra, null, $sizechange);
+    addLogEntry($svdta['newRevision'], $svdta['id'], $svdta['changeType'], $svdta['summary'], $svdta['changeInfo'], null, $svdta['sizechange']);
 
     // send notify mails
-    notify($id, 'admin', $old, $summary, $minor);
-    notify($id, 'subscribers', $old, $summary, $minor);
+    notify($svdta['id'], 'admin', $svdta['oldRevision'], $svdta['summary'], $minor);
+    notify($svdta['id'], 'subscribers', $svdta['oldRevision'], $svdta['summary'], $minor);
 
     // update the purgefile (timestamp of the last time anything within the wiki was changed)
     io_saveFile($conf['cachedir'].'/purgefile', time());
@@ -1876,7 +1929,7 @@ function valid_input_set($param, $valid_values, $array, $exc = '') {
  */
 function get_doku_pref($pref, $default) {
     $enc_pref = urlencode($pref);
-    if(strpos($_COOKIE['DOKU_PREFS'], $enc_pref) !== false) {
+    if(isset($_COOKIE['DOKU_PREFS']) && strpos($_COOKIE['DOKU_PREFS'], $enc_pref) !== false) {
         $parts = explode('#', $_COOKIE['DOKU_PREFS']);
         $cnt   = count($parts);
         for($i = 0; $i < $cnt; $i += 2) {
diff --git a/inc/fulltext.php b/inc/fulltext.php
index d6cddc56654525d96233d10b135dba4ad04538ea..a727a8b539459660a124686488e6e78129dce4d7 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -701,7 +701,7 @@ function ft_queryParser($Indexer, $query){
         if (preg_match($ope_regex, $token)) {
             // operator
             $last_ope = end($ope_stack);
-            while ($ope_precedence[$token] <= $ope_precedence[$last_ope] && $last_ope != '(') {
+            while ($last_ope !== false && $ope_precedence[$token] <= $ope_precedence[$last_ope] && $last_ope != '(') {
                 $parsed_ary[] = array_pop($ope_stack);
                 $last_ope = end($ope_stack);
             }
diff --git a/inc/html.php b/inc/html.php
index 83accff15c2530b982f4ba9f989f997a61305763..d578b867358f341477e2885bef43de227480a1e1 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -74,7 +74,7 @@ function html_login(){
 function html_denied() {
     print p_locale_xhtml('denied');
 
-    if(!$_SERVER['REMOTE_USER']){
+    if(empty($_SERVER['REMOTE_USER'])){
         html_login();
     }
 }
@@ -226,8 +226,7 @@ function html_btn($name, $id, $akey, $params, $method='get', $tooltip='', $label
         $tip .= ' ['.strtoupper($akey).']';
         $ret .= 'accesskey="'.$akey.'" ';
     }
-    $ret .= 'title="'.$tip.'" ';
-    $ret .= '/>';
+    $ret .= 'title="'.$tip.'">';
     $ret .= hsc($label);
     $ret .= '</button>';
     $ret .= '</div></form>';
@@ -979,10 +978,9 @@ function html_index($ns){
     global $conf;
     global $ID;
     $ns  = cleanID($ns);
-    #fixme use appropriate function
     if(empty($ns)){
-        $ns = dirname(str_replace(':','/',$ID));
-        if($ns == '.') $ns ='';
+        $ns = getNS($ID);
+        if($ns === false) $ns ='';
     }
     $ns  = utf8_encodeFN(str_replace(':','/',$ns));
 
@@ -1041,13 +1039,14 @@ function html_list_index($item){
  */
 function html_li_index($item){
     global $INFO;
+    global $ACT;
 
     $class = '';
     $id = '';
 
     if($item['type'] == "f"){
         // scroll to the current item
-        if($item['id'] == $INFO['id']) {
+        if($item['id'] == $INFO['id'] && $ACT == 'index') {
             $id = ' id="scroll__here"';
             $class = ' bounce';
         }
@@ -2197,7 +2196,17 @@ function html_admin(){
 
     // print the rest as sorted list
     if(count($menu)){
-        usort($menu, 'p_sort_modes');
+        // sort by name, then sort
+        usort(
+            $menu,
+            function ($a, $b) {
+                $strcmp = strcasecmp($a['prompt'], $b['prompt']);
+                if($strcmp != 0) return $strcmp;
+                if($a['sort'] == $b['sort']) return 0;
+                return ($a['sort'] < $b['sort']) ? -1 : 1;
+            }
+        );
+
         // output the menu
         ptln('<div class="clearer"></div>');
         print p_locale_xhtml('adminplugins');
diff --git a/inc/httputils.php b/inc/httputils.php
index ac79aa1768cb4358b2558401ec8625f8fd379f1d..c365f4f5ca8bc8d2bf1a892dadb0066eb0ef1caa 100644
--- a/inc/httputils.php
+++ b/inc/httputils.php
@@ -197,6 +197,8 @@ function http_rangeRequest($fh,$size,$mime){
  * @return bool
  */
 function http_gzip_valid($uncompressed_file) {
+    if(!DOKU_HAS_GZIP) return false;
+
     $gzip = $uncompressed_file.'.gz';
     if (filemtime($gzip) < filemtime($uncompressed_file)) {    // filemtime returns false (0) if file doesn't exist
         return copy($uncompressed_file, 'compress.zlib://'.$gzip);
@@ -252,10 +254,10 @@ function http_cached_finish($file, $content) {
 
     // save cache file
     io_saveFile($file, $content);
-    if(function_exists('gzopen')) io_saveFile("$file.gz",$content);
+    if(DOKU_HAS_GZIP) io_saveFile("$file.gz",$content);
 
     // finally send output
-    if ($conf['gzip_output']) {
+    if ($conf['gzip_output'] && DOKU_HAS_GZIP) {
         header('Vary: Accept-Encoding');
         header('Content-Encoding: gzip');
         print gzencode($content,9,FORCE_GZIP);
diff --git a/inc/init.php b/inc/init.php
index 6d271dfb0f0ae40be798d24577bb718dd2f39c49..c7a17948950d87cf02291d9905efa13d6ce7242e 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -195,10 +195,12 @@ require_once(DOKU_INC.'vendor/autoload.php');
 require_once(DOKU_INC.'inc/load.php');
 
 // disable gzip if not available
-if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
+define('DOKU_HAS_BZIP', function_exists('bzopen'));
+define('DOKU_HAS_GZIP', function_exists('gzopen'));
+if($conf['compression'] == 'bz2' && !DOKU_HAS_BZIP) {
     $conf['compression'] = 'gz';
 }
-if($conf['compression'] == 'gz' && !function_exists('gzopen')){
+if($conf['compression'] == 'gz' && !DOKU_HAS_GZIP) {
     $conf['compression'] = 0;
 }
 
diff --git a/inc/io.php b/inc/io.php
index 704c5b1a614b4237079b318c4419704a975f8309..066030c89a5dc339bb62861df7f23cab17c7df5f 100644
--- a/inc/io.php
+++ b/inc/io.php
@@ -107,9 +107,11 @@ function io_readFile($file,$clean=true){
     $ret = '';
     if(file_exists($file)){
         if(substr($file,-3) == '.gz'){
+            if(!DOKU_HAS_GZIP) return false;
             $ret = gzfile($file);
             if(is_array($ret)) $ret = join('', $ret);
         }else if(substr($file,-4) == '.bz2'){
+            if(!DOKU_HAS_BZIP) return false;
             $ret = bzfile($file);
         }else{
             $ret = file_get_contents($file);
@@ -222,11 +224,13 @@ function _io_saveFile($file, $content, $append) {
     $fileexists = file_exists($file);
 
     if(substr($file,-3) == '.gz'){
+        if(!DOKU_HAS_GZIP) return false;
         $fh = @gzopen($file,$mode.'9');
         if(!$fh) return false;
         gzwrite($fh, $content);
         gzclose($fh);
     }else if(substr($file,-4) == '.bz2'){
+        if(!DOKU_HAS_BZIP) return false;
         if($append) {
             $bzcontent = bzfile($file);
             if($bzcontent === false) return false;
@@ -313,8 +317,10 @@ function io_replaceInFile($file, $oldline, $newline, $regex=false, $maxlines=0)
 
     // load into array
     if(substr($file,-3) == '.gz'){
+        if(!DOKU_HAS_GZIP) return false;
         $lines = gzfile($file);
     }else if(substr($file,-4) == '.bz2'){
+        if(!DOKU_HAS_BZIP) return false;
         $lines = bzfile($file, true);
     }else{
         $lines = file($file);
diff --git a/inc/lang/.htaccess b/inc/lang/.htaccess
index 2d69be754fc9e93b6ccfaffbe7a1e42cf553cd24..2aaae02fd59fedbb870d96bcee0feee5ac265e7e 100644
--- a/inc/lang/.htaccess
+++ b/inc/lang/.htaccess
@@ -1,3 +1,8 @@
 ## no access to the lang directory
-order allow,deny
-deny from all
+<IfModule mod_authz_host>
+    Require all denied
+</IfModule>
+<IfModule !mod_authz_host>
+    Order allow,deny
+    Deny from all
+</IfModule>
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index f12b66a6207a499981168bc180f5581fb401490c..0dc3f866051ec22d2ce3e884cde31b658e831ee9 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -331,5 +331,6 @@ $lang['media_perm_read']       = 'За съжаление нямате дост
 $lang['media_perm_upload']     = 'За съжаление нямате достатъчно права, за да можете да качите файла.';
 $lang['media_update']          = 'Качване на нова версия';
 $lang['media_restore']         = 'Възстановяване на тази версия';
+$lang['currentns']             = 'Текущо именно пространство';
 $lang['searchresult']          = 'Резултати от търсенето';
 $lang['plainhtml']             = 'Обикновен HTML';
diff --git a/inc/lang/cs/admin.txt b/inc/lang/cs/admin.txt
index ccfbc4455749ad0e7e7c78335daee5cce6abc79e..df7c5b61cd376e0300e7bf8ece73c085ae90c25b 100644
--- a/inc/lang/cs/admin.txt
+++ b/inc/lang/cs/admin.txt
@@ -1,3 +1,3 @@
 ====== Správa ======
 
-Níže je možno spravovat vaši DokuWiki.
+Níže je možno spravovat vaší DokuWiki.
diff --git a/inc/lang/cy/admin.txt b/inc/lang/cy/admin.txt
new file mode 100644
index 0000000000000000000000000000000000000000..75485fcf268cc2cc7bfe67be7ddf775e3137ed18
--- /dev/null
+++ b/inc/lang/cy/admin.txt
@@ -0,0 +1,4 @@
+====== Gweinyddu ======
+
+Gallwch chi ddarganfod rhestr o dasgau gweinyddol ar gael mewn DokuWiki, isod.
+
diff --git a/inc/lang/cy/adminplugins.txt b/inc/lang/cy/adminplugins.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff21264fdf244741c1f82496831554a5af5cde6f
--- /dev/null
+++ b/inc/lang/cy/adminplugins.txt
@@ -0,0 +1,2 @@
+===== Ategion Ychwanegol =====
+
diff --git a/inc/lang/cy/backlinks.txt b/inc/lang/cy/backlinks.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2180e5503263e70750dca65906834ae6c48ba771
--- /dev/null
+++ b/inc/lang/cy/backlinks.txt
@@ -0,0 +1,4 @@
+====== Olgysylltiadau ======
+
+Dyma restr o dudalennau sy'n ymddangos eu bod nhw'n cysylltu'n ôl i'r dudalen gyfredol.
+
diff --git a/inc/lang/cy/conflict.txt b/inc/lang/cy/conflict.txt
new file mode 100644
index 0000000000000000000000000000000000000000..133e863e5ec45ca52738d5a50edf0ca9acef35b1
--- /dev/null
+++ b/inc/lang/cy/conflict.txt
@@ -0,0 +1,6 @@
+====== Mae fersiwn mwy diweddar yn bodoli ======
+
+Mae fersiwn mwy diweddar o'r ddogfen a wnaethoch chi olygu yn bodoli. Bydd hwn yn digwydd pan fydd defnyddiwr arall yn newid y ddogfen wrth i chi'n ei golygu hi.
+
+Archwiliwch y gwahaniaethau isod yn drylwyr, yna penderfynnwch pa fersiwn i'w gadw. Os ydych chi'n dewis ''cadw'', caiff eich fersiwn chi ei gadw. Pwyswch ''canslo'' i gadw'r fersiwn cyfredol.
+
diff --git a/inc/lang/cy/denied.txt b/inc/lang/cy/denied.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c0eb001c319f82078e0f364a0e4e9de2c37e08f
--- /dev/null
+++ b/inc/lang/cy/denied.txt
@@ -0,0 +1,4 @@
+====== Gwrthodwyd Hawl ======
+
+Sori, 'sdim hawliau digonol 'da chi i barhau.
+
diff --git a/inc/lang/cy/diff.txt b/inc/lang/cy/diff.txt
new file mode 100644
index 0000000000000000000000000000000000000000..69a9ff6888d732300037558ab4aecf08bd187f10
--- /dev/null
+++ b/inc/lang/cy/diff.txt
@@ -0,0 +1,4 @@
+====== Gwahaniaethau ======
+
+Mae hwn yn dangos y gwahaniaethau rhwng dau fersiwn y dudalen.
+
diff --git a/inc/lang/cy/draft.txt b/inc/lang/cy/draft.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b10c511e09692a5b0bd05254cd526646cb4f7a2
--- /dev/null
+++ b/inc/lang/cy/draft.txt
@@ -0,0 +1,8 @@
+====== Ffeil ddrafft wedi'i darganfod ======
+
+Doedd eich sesiwn golygu ddiwethaf heb gwblhau'n gywir. Gwnaeth DokuWiki gadw copi ddrafft yn awtomatig wrth i chi weithio, sydd nawr ar gael i chi er mwyn parhau gyda'ch golygu. Gallwch chi weld y data a gafodd ei gadw o'ch sesiwn diwethaf isod.
+
+Penderfynwch os ydych chi am //adennill// eich sesiwn golygu goll, //dileu//'r drafft awtogadw neu //canslo//'r broses olygu.
+
+
+
diff --git a/inc/lang/cy/edit.txt b/inc/lang/cy/edit.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7e2d899ef0ac1437790252d0df427996e017d629
--- /dev/null
+++ b/inc/lang/cy/edit.txt
@@ -0,0 +1,2 @@
+Golygwch y dudalen a phwyso ''Cadw''. Gweler [[wiki:syntax]] ar gyfer cystrawen Wici. Golygwch y dudalen hon dim ond os ydych chi'n gallu ei **gwella** hi. Os ydych chi am brofi pethau, cymerwch eich camau cyntaf ar y [[playground:playground|maes chwarae]].
+
diff --git a/inc/lang/cy/editrev.txt b/inc/lang/cy/editrev.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5d32e9a687a899eefcb98e1990c222772fb67195
--- /dev/null
+++ b/inc/lang/cy/editrev.txt
@@ -0,0 +1,2 @@
+**Rydych chi wedi llwytho hen adolygiad y ddogfen!** Os ydych chi'n ei chadw hi, byddwch chi'n creu fersiwn newydd gyda'r data hwn.
+----
diff --git a/inc/lang/cy/index.txt b/inc/lang/cy/index.txt
new file mode 100644
index 0000000000000000000000000000000000000000..607a2f695cc201bf43e233c51bbbc3629ce73a6f
--- /dev/null
+++ b/inc/lang/cy/index.txt
@@ -0,0 +1,4 @@
+====== Map safle ======
+
+Dyma fap safle o bob tudalen sydd ar gael, wedi'u trefnu gan [[doku>namespaces|namespaces]].
+
diff --git a/inc/lang/cy/install.html b/inc/lang/cy/install.html
new file mode 100644
index 0000000000000000000000000000000000000000..406c7b456a10494254f7fb75b14b44bad1ca615a
--- /dev/null
+++ b/inc/lang/cy/install.html
@@ -0,0 +1,24 @@
+<p>Mae'r dudalen hon yn eich helpu chi i arsefydlu am y tro cyntaf a gyda ffurfweddu
+<a href="http://dokuwiki.org">Dokuwiki</a>. Mae mwy o wybodaeth ar yr arsefydlwr hwn
+ar <a href="http://dokuwiki.org/installer">dudalen ddogfennaeth</a> ei hun.</p>
+
+<p>Mae DokuWiki yn defnyddio ffeiliau arferol ar gyfer storio tudalennau wici a
+gwybodaeth gysylltiol gyda'r tudalennau hynny (e.e. delweddau, indecsau chwilio,
+hen adolygiadau, ac ati).  Er mwyn gweithredu'n llwyddiannus mae'n
+<strong>rhaid</strong> i DokuWiki gael yr hawl i ysgrifennu i'r ffolderi sydd yn
+dal y ffeiliau hynny. 'Dyw'r arsefydlwr hwn ddim yn gallu gosod hawliau ffolderi.
+Bydd hwn, fel rheol, yn gorfod cael ei wneud yn uniongyrchol gydag anogwr gorchymyn,
+neu os ydych chi'n defnyddio gwesteiwr, drwy FTP neu eich panel gwesteio (e.e.
+cPanel).</p>
+
+<p>Bydd yr arsefydlwr hwn yn gosod eich ffurfwedd DokuWiki ar gyfer
+<abbr title="access control list">ACL</abbr>, sydd yn ei dro yn caniat&aacute;u
+mewngofnodi gweinyddwr a mynediad i ddewislen gweinyddu DokuWiki ar gyfer arsefydlu
+ategion, rheoli defnyddwyr, rheoli mynediad i dudalennau wici a newid gosodiadau
+ffurfwedd. 'Sdim angen hwn ar DokuWiki er mwyn gweithio, ond bydd yn gwneud
+Dokuwiki yn haws i'w weinyddu.</p>
+
+<p>Dylai defnyddwyr profiadol neu'r rheiny gydag anghenion gosodiad rrbennig special
+ddefnyddio'r dolenni hyn am wybodaeth parthed
+<a href="http://dokuwiki.org/install">canllawiau arsefydlu</a>
+and <a href="http://dokuwiki.org/config">gosodiadau ffurfwedd</a>.</p>
diff --git a/inc/lang/cy/jquery.ui.datepicker.js b/inc/lang/cy/jquery.ui.datepicker.js
new file mode 100644
index 0000000000000000000000000000000000000000..254eedab23d5606ff573bd8af4c963cec9772050
--- /dev/null
+++ b/inc/lang/cy/jquery.ui.datepicker.js
@@ -0,0 +1,37 @@
+/* Danish initialisation for the jQuery UI date picker plugin. */
+
+(function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define([ "../datepicker" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery.datepicker );
+	}
+}(function( datepicker ) {
+
+datepicker.regional['cy'] = {
+	closeText: 'Cau',
+	prevText: '&#x3C;',
+	nextText: '&#x3E;',
+	currentText: 'Heddiw',
+	monthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',
+	'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],
+	monthNamesShort: ['Ion','Chw','Maw','Ebr','Mai','Meh',
+	'Gor','Aws','Med','Hyd','Tac','Rha'],
+	dayNames: ['Dydd Sul','Dydd Llun','Dydd Mawrth','Dydd Mercher','Dydd Iau','Dydd Gwener','Dydd Sadwrn'],
+	dayNamesShort: ['Sul','Llu','Maw','Mer','Iau','Gwe','Sad'],
+	dayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],
+	weekHeader: 'Wyth',
+	dateFormat: 'dd/mm/yy',
+	firstDay: 1,
+	isRTL: false,
+	showMonthAfterYear: false,
+	yearSuffix: ''};
+datepicker.setDefaults(datepicker.regional['cy']);
+
+return datepicker.regional['cy'];
+
+}));
diff --git a/inc/lang/cy/lang.php b/inc/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..7018e007115747c2e5ca48e8f1531ceacd0aab00
--- /dev/null
+++ b/inc/lang/cy/lang.php
@@ -0,0 +1,373 @@
+<?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     Matthias Schulte <mailinglist@lupo49.de>
+ * @author     Alan Davies <ben.brynsadler@gmail.com>
+ */
+$lang['encoding']              = 'utf-8';
+$lang['direction']             = 'ltr';
+$lang['doublequoteopening']    = '“'; //&ldquo;
+$lang['doublequoteclosing']    = '”'; //&rdquo;
+$lang['singlequoteopening']    = '‘'; //&lsquo;
+$lang['singlequoteclosing']    = '’'; //&rsquo;
+$lang['apostrophe']            = '’'; //&rsquo;
+
+$lang['btn_edit']              = 'Golygu\'r dudaen hon';
+$lang['btn_source']            = 'Dangos y ffynhonnell';
+$lang['btn_show']              = 'Dangos y dudalen';
+$lang['btn_create']            = 'Creu\'r dudalen';
+$lang['btn_search']            = 'Chwilio';
+$lang['btn_save']              = 'Cadw';
+$lang['btn_preview']           = 'Rhagolwg';
+$lang['btn_top']               = 'Nôl i\'r brig';
+$lang['btn_newer']             = '<< mwy diweddar';
+$lang['btn_older']             = 'llai diweddar >>';
+$lang['btn_revs']              = 'Hen adolygiadau';
+$lang['btn_recent']            = 'Newidiadau Diweddar';
+$lang['btn_upload']            = 'Lanlwytho';
+$lang['btn_cancel']            = 'Canslo';
+$lang['btn_index']             = 'Safle map';
+$lang['btn_secedit']           = 'Golygu';
+$lang['btn_login']             = 'Mewngofnodi';
+$lang['btn_logout']            = 'Allgofnodi';
+$lang['btn_admin']             = 'Gweinyddu';
+$lang['btn_update']            = 'Diweddaru';
+$lang['btn_delete']            = 'Dileu';
+$lang['btn_back']              = 'Nôl';
+$lang['btn_backlink']          = 'Olgysylltiadau';
+$lang['btn_subscribe']         = 'Rheoli Tanysgrifiadau';
+$lang['btn_profile']           = 'Diweddaru Proffil';
+$lang['btn_reset']             = 'Ailosod';
+$lang['btn_resendpwd']         = 'Gosod cyfrinair newydd';
+$lang['btn_draft']             = 'Golygu drafft';
+$lang['btn_recover']           = 'Adennill drafft';
+$lang['btn_draftdel']          = 'Dileu drafft';
+$lang['btn_revert']            = 'Adfer';
+$lang['btn_register']          = 'Cofrestru';
+$lang['btn_apply']             = 'Gosod';
+$lang['btn_media']             = 'Rheolwr Cyfrwng';
+$lang['btn_deleteuser']        = 'Tynnu Fy Nghyfrif';
+$lang['btn_img_backto']        = 'Nôl i %s';
+$lang['btn_mediaManager']      = 'Dangos mewn rheolwr cyfrwng';
+
+$lang['loggedinas']            = 'Mewngofnodwyd fel:';
+$lang['user']                  = 'Defnyddair';
+$lang['pass']                  = 'Cyfrinair';
+$lang['newpass']               = 'Cyfrinair newydd';
+$lang['oldpass']               = 'Cadarnhau cyfrinair cyfredol';
+$lang['passchk']               = 'unwaith eto';
+$lang['remember']              = 'Cofio fi';
+$lang['fullname']              = 'Enw go iawn';
+$lang['email']                 = 'E-Bost';
+$lang['profile']               = 'Proffil Defnyddiwr';
+$lang['badlogin']              = 'Sori, roedd y defnyddair neu\'r gyfriair yn anghywir.';
+$lang['badpassconfirm']        = 'Sori, roedd y cyfrinair yn anghywir';
+$lang['minoredit']             = 'Newidiadau Bach';
+$lang['draftdate']             = 'Awtogadwyd drafft ar'; // full dformat date will be added
+$lang['nosecedit']             = 'Newidiwyd y dudaen yn y cyfamser, roedd gwybodaeth yr adran wedi dyddio, felly llwythwyd y dudalen gyfan.';
+$lang['searchcreatepage']      = 'Os na wnaethoch chi ddod o hyd i\'r hyn roeddech chi am ddarganfod, gallwch chi greu neu golygu\'r dudalen wedi\'i henwi ar ôl eich ymholiad gyda\'r teclyn priodol.';
+
+$lang['regmissing']            = 'Sori, llenwch bob maes.';
+$lang['reguexists']            = 'Sori, mae defnyddiwr â\'r enw hwn yn bodoli eisoes.';
+$lang['regsuccess']            = 'Cafodd y defnyddiwr ei greu a chafodd y cyfrinair ei anfon gan ebost.';
+$lang['regsuccess2']           = 'Cafodd y defnyddiwr ei greu.';
+$lang['regfail']               = 'Doedd dim modd creu\'r defnyddiwr.';
+$lang['regmailfail']           = 'Mae\'n debyg roedd gwall wrth anfon y post cyfrinair. Cysylltwch â\'r gweinyddwr!';
+$lang['regbadmail']            = 'Mae\'r cyfeiriad ebost a gyflwynoch chi\'n edrych yn annilys - os ydych chi\'n credu ei fod yn gywir, cysylltwch â\'r gweinyddwr';
+$lang['regbadpass']            = '\'Dyw\'r ddau gyfrinair ddim yn unfath, ceisiwch eto.';
+$lang['regpwmail']             = 'Eich cyfrinair DokuWiki';
+$lang['reghere']               = '\'Sdim cyfrif \'da chi eto? Cewch afael yn un nawr';
+
+$lang['profna']                = '\'Dyw\'r wici hwn ddim yn caniatáu newid eich proffil';
+$lang['profnochange']          = 'Dim newidiadau, dim i\'w wneud.';
+$lang['profnoempty']           = '\'Sdim modd gadael eich enw neu\'ch cyfeiriad ebost chi\'n wag.';
+$lang['profchanged']           = 'Diweddarwyd eich proffil defnyddiwr yn llwyddiannus.';
+$lang['profnodelete']          = '\'Dyw\'r wici hwn ddim yn caniatáu dileu defnyddwyr';
+$lang['profdeleteuser']        = 'Dileu Cyfrif';
+$lang['profdeleted']           = 'Cafodd eich cyfrif defnyddiwr chi ei ddileu o\'r wiki hwn';
+$lang['profconfdelete']        = '\'Dwi eisiau tynnu fy nghyfrif oddi ar y wici hwn. <br/> \'Sdim modd dadwneud hyn.';
+$lang['profconfdeletemissing'] = 'Blwch gwirio heb ei dicio';
+$lang['proffail']              = 'Proffil defnyddiwr heb ei ddiweddaru.';
+
+$lang['pwdforget']             = 'Anghofio\'ch cyfrinair? Cael gafael ar un newydd';
+$lang['resendna']              = '\'Dyw\'r wici hwn ddim yn caniatáu ailanfon cyfrineiriau.';
+$lang['resendpwd']             = 'Gosod cyfrinair newydd ar gyfer';
+$lang['resendpwdmissing']      = 'Sori, mae\'n rhaid llenwi pob maes.';
+$lang['resendpwdnouser']       = 'Sori, \'dyn ni ddim yn gallu darganfod y defnyddiwr hwn yn ein databas ni.';
+$lang['resendpwdbadauth']      = 'Sori, \'dyw\'r cod dilysu hwn ddim yn ddilys. Sicrhewch eich bod chi wedi defnyddio\'r ddolen gadarnhau gyfan.';
+$lang['resendpwdconfirm']      = 'Cafodd ddolen gadarnhau ei hanfon gan ebost.';
+$lang['resendpwdsuccess']      = 'Cafodd eich cyfrinair newydd chi ei anfon gan ebost.';
+
+$lang['license']               = 'Heb law bod datganiad i\'r gwrthwyneb, mae cynnwys y wici hwn o dan y drwydded ganlynol:';
+$lang['licenseok']             = 'Sylwir: Gan olygu\'r dudalen hon rydych chi\'n cytuno i drwyddedu\'ch cynnwys chi o dan y drwydded ganlynol:';
+
+$lang['searchmedia']           = 'Chwilio enw ffeil:';
+$lang['searchmedia_in']        = 'Chwilio mewn %s';
+$lang['txt_upload']            = 'Dewis ffeil i\'w lanlwytho:';
+$lang['txt_filename']          = 'Upload as (optional):';
+$lang['txt_overwrt']           = 'Trosysgrifo ffeil sy\'n bodoli';
+$lang['maxuploadsize']         = 'Lanlwytho uchanfswm %s y ffeil.';
+$lang['lockedby']              = 'Clowyd yn bresennol gan:';
+$lang['lockexpire']            = 'Clo\'n dod i ben ar:';
+
+$lang['js']['willexpire']      = 'Mae\'ch clo ar gyfer golygu\'r dudalen hon yn mynd i ddod i ben mewn munud.\nEr mwyn osgoi gwrthdrawiadau defnyddiwch y botwm rhagolwg i ailosod amserydd y clo.';
+$lang['js']['notsavedyet']     = 'Caiff newidiadau heb gadw eu colli.';
+$lang['js']['searchmedia']     = 'Chwilio am ffeiliau';
+$lang['js']['keepopen']        = 'Cadw ffesnestr y dewisiad ar agor';
+$lang['js']['hidedetails']     = 'Cuddio Manylion';
+$lang['js']['mediatitle']      = 'Gosodiadau dolenni';
+$lang['js']['mediadisplay']    = 'Math y ddolen';
+$lang['js']['mediaalign']      = 'Aliniad';
+$lang['js']['mediasize']       = 'Maint y ddelwedd';
+$lang['js']['mediatarget']     = 'Targed y ddolen';
+$lang['js']['mediaclose']      = 'Cau';
+$lang['js']['mediainsert']     = 'Mewnosod';
+$lang['js']['mediadisplayimg'] = 'Dangos y ddelwedd.';
+$lang['js']['mediadisplaylnk'] = 'Dangos y ddolen yn unig.';
+$lang['js']['mediasmall']      = 'Fersiwn bach';
+$lang['js']['mediamedium']     = 'Fersiwn canolig';
+$lang['js']['medialarge']      = 'Fersiwn mawr';
+$lang['js']['mediaoriginal']   = 'Fersiwn gwreiddiol';
+$lang['js']['medialnk']        = 'Cysylltu i dudalen fanylion';
+$lang['js']['mediadirect']     = 'Cysylltiad uniongyrchol i\'r gwreiddiol';
+$lang['js']['medianolnk']      = 'Dim dolen';
+$lang['js']['medianolink']     = 'Peidio cysylltu i\'r dudalen';
+$lang['js']['medialeft']       = 'Alinio\'r ddelwedd i\'r chwith.';
+$lang['js']['mediaright']      = 'Alinio\'r ddelwedd i\'r dde.';
+$lang['js']['mediacenter']     = 'Alinio\'r ddelwedd i\'r canol.';
+$lang['js']['medianoalign']    = 'Peidio alinio.';
+$lang['js']['nosmblinks']      = 'Mae cysylltu gyda Windows shares dim ond yn gweithio gyda Microsoft Internet Explorer.\nGallwch chi gopïo a gludo\'r ddolen hefyd.';
+$lang['js']['linkwiz']         = 'Dewin Dolenni';
+$lang['js']['linkto']          = 'Cysylltu i:';
+$lang['js']['del_confirm']     = 'Gwir ddileu\'r eitem(au) a ddewiswyd?';
+$lang['js']['restore_confirm'] = 'Gwir adfer y fersiwn hwn?';
+$lang['js']['media_diff']          = 'Gweld gwahaniaethau:';
+$lang['js']['media_diff_both']     = 'Ochr wrth Ochr';
+$lang['js']['media_diff_opacity']  = 'Tywynnu-drwodd';
+$lang['js']['media_diff_portions'] = 'Taro'; //Swipe - rhaid bod gwell ateb i hwn
+$lang['js']['media_select']        = 'Dewis ffeiliau…';
+$lang['js']['media_upload_btn']    = 'Lanlwytho';
+$lang['js']['media_done_btn']      = 'Gorffen';
+$lang['js']['media_drop']          = 'Gollwng ffeiliau yma i\'w lanlwytho';
+$lang['js']['media_cancel']        = 'tynnu';
+$lang['js']['media_overwrt']       = 'Trosysgrifo ffeiliau sy\'n bodoli';
+
+$lang['rssfailed']             = 'Roedd gwall wrth hôl y ffrwd hwn: ';
+$lang['nothingfound']          = 'Dim wedi\'i ddarganfod.';
+
+$lang['mediaselect']           = 'Ffeiliau Cyfrwng';
+$lang['uploadsucc']            = 'Lanlwythiad llwyddiannus';
+$lang['uploadfail']            = 'Methodd y lanlwythiad. Hawliau anghywir efallai?';
+$lang['uploadwrong']           = 'Gwrthodwyd y lanlwythiad. Gwaherddir yr estyniad ffeil hwn!';
+$lang['uploadexist']           = 'Mae\'r ffeil eisoes yn bodoli. Dim wedi\'i wneud.';
+$lang['uploadbadcontent']      = 'Doedd y cynnwys a lanlwythwyd ddim yn cydweddu ag estyniad ffeil %s.';
+$lang['uploadspam']            = 'Cafodd y lanlwythiad ei flocio gan rhestr wahardd sbam.';
+$lang['uploadxss']             = 'Cafodd y lanlwythiad ei flocio efallai oherwydd cynnwys maleisus.';
+$lang['uploadsize']            = 'Roedd y ffeil a lanlwythwyd yn rhy fawr. (uchaf. %s)';
+$lang['deletesucc']            = 'Cafodd ffeil "%s" ei dileu.';
+$lang['deletefail']            = 'Doedd dim modd dileu "%s" - gwiriwch hawliau.';
+$lang['mediainuse']            = 'Doedd "%s" heb ei dileu - mae\'n cael ei defnyddio ar hyn o bryd.';
+$lang['namespaces']            = 'Namespaces'; //namespace
+$lang['mediafiles']            = 'Ffeiliau ar gael mewn';
+$lang['accessdenied']          = '\'Sdim hawl \'da chi weld y dudalen hon.';
+$lang['mediausage']            = 'Defnyddiwch y gystrawen ganlynol i gyfeirio at y ffeil hon:';
+$lang['mediaview']             = 'Dangos y ffeil wreiddiol';
+$lang['mediaroot']             = 'gwraidd';
+$lang['mediaupload']           = 'lanlwythwch ffeil i\'r namespace cyfredol yma. Er mwy creu is-namespace, ychwanegwch nhw o flaen enw\'r ffeil gan eu gwahanu nhw gyda cholonau, ar ôl i chi ddewis y ffeiliau. Gall ffeiliau hefyd eu dewis gan lusgo a gollwng.'; //namespace
+$lang['mediaextchange']        = 'Newidiwyd yr estyniad o .%s i .%s!';
+$lang['reference']             = 'Cyfeirnodau ar gyfer';
+$lang['ref_inuse']             = '\'Sdim modd dileu\'r ffeil hon, oherwydd ei bod hi\'n dal yn cael ei defnyddio gan y tudalennau canlynol:';
+$lang['ref_hidden']            = 'Mae rhai cyfeirnodau ar dudalennau \'sdim hawl \'da chi weld';
+
+$lang['hits']                  = 'Trawiadau';
+$lang['quickhits']             = 'Enw tudalennau\'n cydweddu';
+$lang['toc']                   = 'Tabl Cynnwys';
+$lang['current']               = 'cyfredol';
+$lang['yours']                 = 'Eich Fersiwn';
+$lang['diff']                  = 'Dangos gwahaniaethau i\'r adolygiadau cyfredol';
+$lang['diff2']                 = 'Dangos gwahaniaethau rhwng adolygiadau a ddewiswyd';
+$lang['difflink']              = 'Cysylltu i\'r olwg gymharu hon';
+$lang['diff_type']             = 'Dangos gwahaniaethau:';
+$lang['diff_inline']           = 'Mewnlin';
+$lang['diff_side']             = 'Ochr wrth Ochr';
+$lang['diffprevrev']           = 'Adolygiad blaenorol';
+$lang['diffnextrev']           = 'Adolygiad nesaf';
+$lang['difflastrev']           = 'Adolygiad diwethaf';
+$lang['diffbothprevrev']       = 'Dwy ochr yr adolygiad blaenorol';
+$lang['diffbothnextrev']       = 'Dwy ochr yr adolygiad nesaf';
+$lang['line']                  = 'Llinell';
+$lang['breadcrumb']            = 'Olrhain:';
+$lang['youarehere']            = 'Rydych chi yma:';
+$lang['lastmod']               = 'Newidiwyd ddiwethaf:';
+$lang['by']                    = 'gan';
+$lang['deleted']               = 'tynnwyd';
+$lang['created']               = 'crewyd';
+$lang['restored']              = 'adferwyd hen adolygiad (%s)';
+$lang['external_edit']         = 'golygiad allanol';
+$lang['summary']               = 'Crynodeb golygiad';
+$lang['noflash']               = 'Mae angen <a href="http://www.adobe.com/products/flashplayer/">Ategyn Adobe Flash</a> i ddangos y cynnwys hwn.';
+$lang['download']              = 'Lawrlwytho Darn';
+$lang['tools']                 = 'Teclynnau';
+$lang['user_tools']            = 'Teclynnau Defnyddiwr';
+$lang['site_tools']            = 'Teclynnau Safle';
+$lang['page_tools']            = 'Teclynnau Tudalennau';
+$lang['skip_to_content']       = 'nedio i\'r cynnwys';
+$lang['sidebar']               = 'Bar ochr';
+
+$lang['mail_newpage']          = 'ychwanegwyd tudalen:';
+$lang['mail_changed']          = 'newidiwyd tudalen:';
+$lang['mail_subscribe_list']   = 'newidiwyd tudalennau mewn namespace:'; //namespace
+$lang['mail_new_user']         = 'defnyddiwr newydd:';
+$lang['mail_upload']           = 'lanlwythwyd ffeil:';
+
+$lang['changes_type']          = 'Dangos newidiadau mewn';
+$lang['pages_changes']         = 'Tudalennau';
+$lang['media_changes']         = 'Ffeiliau cyfrwng';
+$lang['both_changes']          = 'Tudalennau a ffeiliau cyfrwng';
+
+$lang['qb_bold']               = 'Testun Bras';
+$lang['qb_italic']             = 'Testun Italig';
+$lang['qb_underl']             = 'Testun wedi\'i Danlinellu';
+$lang['qb_code']               = 'Testun Unbylchog';
+$lang['qb_strike']             = 'Testun Llinell Drwodd';
+$lang['qb_h1']                 = 'Pennawd Lefel 1';
+$lang['qb_h2']                 = 'Pennawd Lefel 2';
+$lang['qb_h3']                 = 'Pennawd Lefel 3';
+$lang['qb_h4']                 = 'Pennawd Lefel 4';
+$lang['qb_h5']                 = 'Pennawd Lefel 5';
+$lang['qb_h']                  = 'Pennawd';
+$lang['qb_hs']                 = 'Dewis Pennawd';
+$lang['qb_hplus']              = 'Pennawd Uwch';
+$lang['qb_hminus']             = 'Pennawd Is';
+$lang['qb_hequal']             = 'Pennawd yr un Lefel';
+$lang['qb_link']               = 'Dolen fewnol';
+$lang['qb_extlink']            = 'Dolen allanol';
+$lang['qb_hr']                 = 'Llinell Lorweddol';
+$lang['qb_ol']                 = 'Eitem Rhestr Drefnedig';
+$lang['qb_ul']                 = 'Eitem Rhestr Rifol';
+$lang['qb_media']              = 'Ychwanegu Delweddau a ffeiliau eraill (agor mewn ffenestr newydd)';
+$lang['qb_sig']                = 'Mewnosod Llofnod';
+$lang['qb_smileys']            = 'Gwenogluniau';
+$lang['qb_chars']              = 'Nodau Arbennig';
+
+$lang['upperns']               = 'neidio i namespace uwch'; //namespace
+
+$lang['metaedit']              = 'Golygu Metadata';
+$lang['metasaveerr']           = 'Methwyd ysgrifennu metadata';
+$lang['metasaveok']            = 'Cadwyd y metadata';
+$lang['img_title']             = 'Teitl:';
+$lang['img_caption']           = 'Egluryn:';
+$lang['img_date']              = 'Dyddiad:';
+$lang['img_fname']             = 'Enw ffeil:';
+$lang['img_fsize']             = 'Maint:';
+$lang['img_artist']            = 'Ffotograffydd:';
+$lang['img_copyr']             = 'Hawlfraint:';
+$lang['img_format']            = 'Fformat:';
+$lang['img_camera']            = 'Camera:';
+$lang['img_keywords']          = 'Allweddeiriau:';
+$lang['img_width']             = 'Lled:';
+$lang['img_height']            = 'Uchder:';
+
+$lang['subscr_subscribe_success']   = 'Ychwanegwyd %s i\'r rhestr danysgrifio ar gyfer %s';
+$lang['subscr_subscribe_error']     = 'Gwall wrth ychwanegu %s i\'r rhestr danysgrifio ar gyfer %s';
+$lang['subscr_subscribe_noaddress'] = '\'Sdim cyfeiriad wedi\'i gysylltu gyda\'ch defnyddair, felly \'sdim modd eich ychwanegu chi i\'r rhestr danysgrifio';
+$lang['subscr_unsubscribe_success'] = 'Tynnwyd %s o\'r rhestr danysgrifio ar gyfer %s';
+$lang['subscr_unsubscribe_error']   = 'Roedd gwall wrth dynnu %s o\'r rhestr danysgrfio ar gyfer %s';
+$lang['subscr_already_subscribed']  = 'Mae %s eisoes wedi tanysgrifio i %s';
+$lang['subscr_not_subscribed']      = '\'Dyw %s heb danysgrifio i %s';
+// Manage page for subscriptions
+$lang['subscr_m_not_subscribed']    = '\'Dych chi heb danysgrifio i\'r dudalen gyfredol neu\'r namespace, yn bresennol.'; //namespace
+$lang['subscr_m_new_header']        = 'Ychwanegu tanysgrifiad';
+$lang['subscr_m_current_header']    = 'Tanysgrifiadau cyfredol';
+$lang['subscr_m_unsubscribe']       = 'Tynnu tanysgrifiad';
+$lang['subscr_m_subscribe']         = 'Tanysgrifio';
+$lang['subscr_m_receive']           = 'Derbyn';
+$lang['subscr_style_every']         = 'ebost ar bob newid';
+$lang['subscr_style_digest']        = 'ebost cryno o\'r newidiadau ar bob tudalen (pob %.2f diwrnod)';
+$lang['subscr_style_list']          = 'rhestr o dudalennau a newidiwyd ers yr ebost diwethaf (pob %.2f diwrnod)';
+
+/* auth.class language support */
+$lang['authtempfail']          = '\'Dyw dilysiad defnyddiwr ddim ar gael yn bresennol (dros dro). Os ydy\'r sefyllfa\'n parhau, cysylltwch â gweinyddwr y wici.';
+
+/* installer strings */
+$lang['i_chooselang']          = 'Dewiswch eich iaith';
+$lang['i_installer']           = 'Arsefydlwr DokuWiki';
+$lang['i_wikiname']            = 'Enw Wici';
+$lang['i_enableacl']           = 'Galluogi ACL (awgrymwyd)';
+$lang['i_superuser']           = 'Uwchddefnyddiwr';
+$lang['i_problems']            = 'Gwnaeth yr arsefydlwr ddod o hyd i broblemau, isod. \'Sdim modd parhau nes i chi eu datrys nhw.';
+$lang['i_modified']            = 'Oherwydd rhesymau diogelwch, bydd y sgript hwn dim ond yn gweithio gydag arsefydliad DokuWiki newydd sydd heb ei newid.
+                                  Dylech chi naill ai ail-echdynnu\'r ffeiliau o\'r pecyn a lawrlwythwyd neu porwch dros y
+                                  <a href="http://dokuwiki.org/install">canllawiau arsefydylu Dokuwiki</a> cyfan';
+$lang['i_funcna']              = 'Swyddogaeth PHP <code>%s</code> ddim ar gael. Posib bod eich gwesteiwr wedi\'i hanalluogi am ryw reswm?';
+$lang['i_phpver']              = 'Mae\'ch fersiwn PHP <code>%s</code> yn is na\'r hyn sydd ei angen <code>%s</code>. Mae angen i chi ddiweddaru eich arsefydliad PHP.';
+$lang['i_mbfuncoverload']      = 'Mae\'n rhaid analluogi mbstring.func_overload mewn php.ini er mwyn rhedeg DokuWiki.';
+$lang['i_permfail']            = '\'Dyw DokuWiki ddim yn gallu ysgrifennu i <code>%s</code>. Mae angen newid gosodiadau hawliau ar gyfer y ffolder hwn!';
+$lang['i_confexists']          = 'Mae <code>%s</code> eisoes yn bodoli';
+$lang['i_writeerr']            = 'Methu creu <code>%s</code>. Bydd angen i chi wirio hawliau ffolder/ffeil a chreu\'r ffeil gan law.';
+$lang['i_badhash']             = 'dokuwiki.php heb ei adnabod neu wedi\'i newid (hash=<code>%s</code>)';
+$lang['i_badval']              = '<code>%s</code> - gwerth anghyfreithlon neu wag';
+$lang['i_success']             = 'Gorffennodd y ffurfwedd yn llwyddiannus. Gallwch chi ddileu\'r ffeil install.php nawr. Ewch
+                                 <a href="doku.php?id=wiki:welcome">i\'ch DokuWiki newydd</a>.';
+$lang['i_failure']             = 'Ymddangosodd gwallau wrth ysgrifennu\'r ffeiliau ffurfwedd. Bydd angen i chi eu cywiro
+                                  nhw gan law cyn gallwch chi ddefnyddio\'ch <a href="doku.php?id=wiki:welcome">DokuWiki newydd</a>.';
+$lang['i_policy']              = 'Polisi ACL cychwynnol';
+$lang['i_pol0']                = 'Wici Agored (darllen, ysgrifennu, lanlwytho i bawb)';
+$lang['i_pol1']                = 'Wici Cyhoeddus (darllen i bawb, ysgrifennu a lanlwytho i ddefnyddwyr cofrestredig)';
+$lang['i_pol2']                = 'Wici Caeedig (darllen, ysgrifennu, lanlwytho i ddefnyddwyr cofrestredig yn unig)';
+$lang['i_allowreg']            = 'Caniatáu defnyddwyr i gofrestru eu hunain';
+$lang['i_retry']               = 'Ailgeisio';
+$lang['i_license']             = 'Dewiswch y drwydded rydych chi am osod ar eich cynnwys:';
+$lang['i_license_none']        = 'Peidio â dangos unrhyw wybodaeth drwyddedu';
+$lang['i_pop_field']           = 'Plis, helpwch ni i wella\'r profiad o ddefnyddio DokuWiki:';
+$lang['i_pop_label']           = 'Anfon data defnydd anhysbys i ddatblygwyr DokuWiki unwaith y mis';
+
+$lang['recent_global']         = 'Yn bresennol, rydych chi\'n gwylio newidiadau tu fewn namespace <b>%s</b>. Gallwch chi hefyd <a href="%s">weld y newidiadau diweddar ar gyfer y wici cyfan</a>.'; //namespace
+
+$lang['years']                 = '%d blynedd yn ôl';
+$lang['months']                = '%d mis yn ôl';
+$lang['weeks']                 = '%d wythnos yn ôl';
+$lang['days']                  = '%d diwrnod yn ôl';
+$lang['hours']                 = '%d awr yn ôl';
+$lang['minutes']               = '%d munud yn ôl';
+$lang['seconds']               = '%d eiliad yn ôl';
+
+$lang['wordblock']             = 'Doedd eich newid heb gadw gan ei fod yn cynnwys testun wedi\'i flocio (sbam).';
+
+$lang['media_uploadtab']       = 'Lanlwytho';
+$lang['media_searchtab']       = 'Chwilio';
+$lang['media_file']            = 'Ffeil';
+$lang['media_viewtab']         = 'Golwg';
+$lang['media_edittab']         = 'Golygu';
+$lang['media_historytab']      = 'Hanes';
+$lang['media_list_thumbs']     = 'Bawdlun';
+$lang['media_list_rows']       = 'Rhesi';
+$lang['media_sort_name']       = 'Enw';
+$lang['media_sort_date']       = 'Dyddiad';
+$lang['media_namespaces']      = 'Dewis namespace'; //namespace
+$lang['media_files']           = 'Ffeiliau mewn %s';
+$lang['media_upload']          = 'Lanlwytho i %s';
+$lang['media_search']          = 'Chwilio mewn %s';
+$lang['media_view']            = '%s';
+$lang['media_viewold']         = '%s ar %s';
+$lang['media_edit']            = 'Golygu %s';
+$lang['media_history']         = 'Hanes %s';
+$lang['media_meta_edited']     = 'golygwyd metadata';
+$lang['media_perm_read']       = 'Sori, ond \'sdim digon o hawliau \'da chi i ddarllen ffeiliau.';
+$lang['media_perm_upload']     = 'Sori, ond \'sdim digon o hawliau \'da chi i lanlwytho ffeiliau.';
+$lang['media_update']          = 'Lanlwytho fersiwn newydd';
+$lang['media_restore']         = 'Adfer y fersiwn hwn';
+$lang['media_acl_warning']     = 'Gall y rhestr hon fod yn anghyflawn oherwydd cyfyngiadau ACL a thudalennau coll.';
+
+$lang['currentns']             = 'Namespace cyfredol'; //namespace
+$lang['searchresult']          = 'Canlyniad Chwilio';
+$lang['plainhtml']             = 'HTML Plaen';
+$lang['wikimarkup']            = 'Iaith Wici';
+$lang['page_nonexist_rev']     = 'Doedd y dudalen ddim yn bodoli ar %s. Cafodd ei chreu wedyn ar <a href="%s">%s</a>.';
+$lang['unable_to_parse_date']  = 'Methu dosbarthu ar baramedr "%s".';
+//Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/cy/locked.txt b/inc/lang/cy/locked.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4c7865dd01ca63a5c663aaa7ce2324187e8f127b
--- /dev/null
+++ b/inc/lang/cy/locked.txt
@@ -0,0 +1,3 @@
+====== Tudalen ar glo ======
+
+Mae'r dudalen hon wedi'i chloi ar gyfer golygu gan ddefnyddiwr arall. Bydd yn rhaid i chi aros tan i'r defnyddiwr orffen golygu neu tan fod y cyfnod cloi yn dod i ben.
diff --git a/inc/lang/cy/login.txt b/inc/lang/cy/login.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dbdde0e67e8e12f610a5f4ff71a4870c82b80171
--- /dev/null
+++ b/inc/lang/cy/login.txt
@@ -0,0 +1,4 @@
+====== Mewngofnodi ======
+
+'Dych chi heb fewngofnodi! Rhowch eich manylion mewngofnodi isod. Mae angen galluogi cwcis er mwyn mewngofnodi.
+
diff --git a/inc/lang/cy/mailtext.txt b/inc/lang/cy/mailtext.txt
new file mode 100644
index 0000000000000000000000000000000000000000..27462332e9a0beff45ff587b370a18a3a37daafe
--- /dev/null
+++ b/inc/lang/cy/mailtext.txt
@@ -0,0 +1,17 @@
+Cafodd tudalen yn eich DokuWiki ei hychwanegu neu newid. Dyma'r manylion:
+
+Dyddiad         : @DATE@
+Porwr           : @BROWSER@
+Cyfeiriad-IP    : @IPADDRESS@
+Gwesteiwr       : @HOSTNAME@
+Hen Adolygiad   : @OLDPAGE@
+Adolygiad Newydd: @NEWPAGE@
+Crynodeb Golygu : @SUMMARY@
+Defnyddiwr      : @USER@
+
+@DIFF@
+
+
+-- 
+Cafodd y neges hon ei generadyu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/cy/mailwrap.html b/inc/lang/cy/mailwrap.html
new file mode 100644
index 0000000000000000000000000000000000000000..254fcca7a411e37af0a070b21ba4125427866ddb
--- /dev/null
+++ b/inc/lang/cy/mailwrap.html
@@ -0,0 +1,13 @@
+<html>
+<head>
+    <title>@TITLE@</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head>
+<body>
+
+@HTMLBODY@
+
+<br /><hr />
+<small>Cafodd y neges hon ei generadu gan DokuWiki ar @DOKUWIKIURL@.</small>
+</body>
+</html>
diff --git a/inc/lang/cy/newpage.txt b/inc/lang/cy/newpage.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dfe8a79d9ea22a41578a35ff0f70b9bf25c90522
--- /dev/null
+++ b/inc/lang/cy/newpage.txt
@@ -0,0 +1,4 @@
+====== 'Dyw'r testun hwn ddim yn bodoli eto ======
+
+Rydych chi wedi dilyn dolen i destun sy ddim yn bodoli eto. Os oes hawliau 'da chi, gallwch chi ei greu gan bwyso ar "Creu y dudalen hon".
+
diff --git a/inc/lang/cy/norev.txt b/inc/lang/cy/norev.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7d978c55022711b2d368794db94a28396a85b29a
--- /dev/null
+++ b/inc/lang/cy/norev.txt
@@ -0,0 +1,4 @@
+====== Adolygiad ddim y bodoli ======
+
+'Dyw'r adolygiad hwn ddim yn bodoli. Pwyswch ar "Hen adolygiadau" am restr o hen adolygiadau'r ddogfen hon.
+
diff --git a/inc/lang/cy/password.txt b/inc/lang/cy/password.txt
new file mode 100644
index 0000000000000000000000000000000000000000..da0678ef32006529d6b20ee1a833a45607d375b1
--- /dev/null
+++ b/inc/lang/cy/password.txt
@@ -0,0 +1,10 @@
+Shw mae @FULLNAME@!
+
+Dyma'ch manylion ar gyfer @TITLE@ ar @DOKUWIKIURL@
+
+Defnyddair  : @LOGIN@
+Cyfrinair   : @PASSWORD@
+
+-- 
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/cy/preview.txt b/inc/lang/cy/preview.txt
new file mode 100644
index 0000000000000000000000000000000000000000..477879d51c55e7d28060db3fc87bda8bbba87c1e
--- /dev/null
+++ b/inc/lang/cy/preview.txt
@@ -0,0 +1,4 @@
+====== Rhagolwg ======
+
+Dyma ragolwg o sut fydd eich testun yn edrych. Cofiwch: 'Dyw e **heb ei gadw** 'to!
+
diff --git a/inc/lang/cy/pwconfirm.txt b/inc/lang/cy/pwconfirm.txt
new file mode 100644
index 0000000000000000000000000000000000000000..529571e14c20206babfeef998b24ce2bc4a60853
--- /dev/null
+++ b/inc/lang/cy/pwconfirm.txt
@@ -0,0 +1,15 @@
+Shw mae @FULLNAME@!
+
+Mae rhywun wedi gofyn am gyfrinair newydd ar gyfer eich manylion
+@TITLE@ ar @DOKUWIKIURL@
+
+Os na wnaethoch chi ofyn am gyfrinair newydd, anwybyddwch yr e-bost hwn.
+
+I gadarnhau daeth y cais oddi wrthoch chi, pwyswch y ddolen isod.
+
+@CONFIRM@
+
+--
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
+
diff --git a/inc/lang/cy/read.txt b/inc/lang/cy/read.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8703ef9374bb94b46d99eef142ec27e04e6d2c6b
--- /dev/null
+++ b/inc/lang/cy/read.txt
@@ -0,0 +1,2 @@
+Mae'r dudalen hon i'w darllen yn unig. Gallwch chi edrych ar y ffynhonnell, ond nid ei newid hi. Cysylltwch â'ch gweinyddwr chi os ydych chi'n meddwl bod hwn yn anghywir.
+
diff --git a/inc/lang/cy/recent.txt b/inc/lang/cy/recent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2affbf9050d17511e976ba4df5f3b013e6641013
--- /dev/null
+++ b/inc/lang/cy/recent.txt
@@ -0,0 +1,5 @@
+====== Newidiadau Diweddar ======
+
+Cafodd y tudalennau canlynol eu newid yn ddiweddar.
+
+
diff --git a/inc/lang/cy/register.txt b/inc/lang/cy/register.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6fbc8505622ce389d4c8da69e5245df287b94b1f
--- /dev/null
+++ b/inc/lang/cy/register.txt
@@ -0,0 +1,4 @@
+====== Cofrestru fel defnyddiwr newydd ======
+
+Llenwch yr holl wybodaeth isod i greu cyfrif newydd ar y wici hwn. Sicrhewch eich bod chi'n cynnwys **cyfeiriad e-bost dilys** - os na chewch chi'ch annog am gyfrinair, caiff un ei anfon i'ch cyfeiriad. Dylai'r enw mewngofnodi fod yn [[doku>pagename|enw tudalen]] dilys.
+
diff --git a/inc/lang/cy/registermail.txt b/inc/lang/cy/registermail.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0cb2b4fd230d280425a4771ec98676cf80527b88
--- /dev/null
+++ b/inc/lang/cy/registermail.txt
@@ -0,0 +1,14 @@
+Cofrestrodd defnyddiwr newydd. Dyma'r manylion:
+
+Defnyddair   : @NEWUSER@
+Enw llawn    : @NEWNAME@
+E-bost       : @NEWEMAIL@
+
+Dyddiad      : @DATE@
+Porwr        : @BROWSER@
+Cyfeiriad-IP : @IPADDRESS@
+Gwesteiwr    : @HOSTNAME@
+
+-- 
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/cy/resendpwd.txt b/inc/lang/cy/resendpwd.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ddad8a906b2d981bbccdbf393b43df31fdd1ec26
--- /dev/null
+++ b/inc/lang/cy/resendpwd.txt
@@ -0,0 +1,4 @@
+====== Anfon cyfrinair newydd ======
+
+Ailgyflwynwch eich defnyddair yn y ffurflen isod i wneud cais am gyfrinair newydd i'ch cyfrif ar y wici hwn. Caiff ddolen gadarnhau ei hanfon i chi drwy eich e-bost cofrestredig.
+
diff --git a/inc/lang/cy/resetpwd.txt b/inc/lang/cy/resetpwd.txt
new file mode 100644
index 0000000000000000000000000000000000000000..57f19928e817fb201424af205238ef04cbca5171
--- /dev/null
+++ b/inc/lang/cy/resetpwd.txt
@@ -0,0 +1,4 @@
+====== Gosod cyfrinair newydd ======
+
+Rhowch gyfrinair newydd i'ch cyfrif ar y wici hwn.
+
diff --git a/inc/lang/cy/revisions.txt b/inc/lang/cy/revisions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..afbc9fed28d656d54933c0610d90a0d5e721eda0
--- /dev/null
+++ b/inc/lang/cy/revisions.txt
@@ -0,0 +1,4 @@
+====== Hen Adolygiadau ======
+
+Dyma adolygiadau hŷn y ddogfen gyfredol. I droi'n ôl i hen adolygiad, dewiswch e isod a phwyso ''Golygu'r dudalen hon'' a'i gadw.
+
diff --git a/inc/lang/cy/searchpage.txt b/inc/lang/cy/searchpage.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fd554e1e70ef61e28b4fec80c7b28bd8fe21a395
--- /dev/null
+++ b/inc/lang/cy/searchpage.txt
@@ -0,0 +1,5 @@
+====== Chwilio ======
+
+Gallwch chi ddarganfod canlyniadau eich chwiliad isod. @CREATEPAGEINFO@
+
+===== Canlyniadau =====
diff --git a/inc/lang/cy/showrev.txt b/inc/lang/cy/showrev.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6cc9d6c2eea3381bf1ce17c78f324ee698e82a8a
--- /dev/null
+++ b/inc/lang/cy/showrev.txt
@@ -0,0 +1,2 @@
+**Dyma hen adolygiad y ddogfen!**
+----
diff --git a/inc/lang/cy/stopwords.txt b/inc/lang/cy/stopwords.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2ac4c3174cd8686747dfd2ea485ce8c31bd28b06
--- /dev/null
+++ b/inc/lang/cy/stopwords.txt
@@ -0,0 +1,31 @@
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+allan
+beth
+ble
+bydd
+chi
+dyma
+dyna
+eich
+gyda
+hefyd
+hon
+honna
+hwn
+hwnnw
+hwy
+hyn
+hynny
+mewn
+nhw
+oddi
+oedd
+pan
+pwy
+roedd
+sut
+wrth
+www
\ No newline at end of file
diff --git a/inc/lang/cy/subscr_digest.txt b/inc/lang/cy/subscr_digest.txt
new file mode 100644
index 0000000000000000000000000000000000000000..611e0570924f24a04e9080aa1e4282fa505894d5
--- /dev/null
+++ b/inc/lang/cy/subscr_digest.txt
@@ -0,0 +1,20 @@
+Shw mae!
+
+Gwnaeth y dudalen @PAGE@ mewn wici @TITLE@ newid.
+Dyma'r newidiadau:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Hen Adolygiad: @OLDPAGE@
+Adolygiad Newydd: @NEWPAGE@
+
+I ganslo hysbysiadau tudalen, mewngofnodwch i'r wici ar
+@DOKUWIKIURL@ ac yna ewch i
+@SUBSCRIBE@
+a thanysgrifio o newidiadau tudalen a/neu namespace.
+
+-- 
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/cy/subscr_form.txt b/inc/lang/cy/subscr_form.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47d1a1715b4bc342c0353051c254e723a5cc601f
--- /dev/null
+++ b/inc/lang/cy/subscr_form.txt
@@ -0,0 +1,3 @@
+====== Rheoli Tanysgrifiad ======
+
+Mae'r dudalen hon yn eich galluogi i reoli'ch tanysgrifiadau ar gyfer y dudalen gyfredol a'r namespace.
diff --git a/inc/lang/cy/subscr_list.txt b/inc/lang/cy/subscr_list.txt
new file mode 100644
index 0000000000000000000000000000000000000000..592f29028a1df3dcbef703516c6f4348cb1c11da
--- /dev/null
+++ b/inc/lang/cy/subscr_list.txt
@@ -0,0 +1,17 @@
+Shw mae!
+
+Gwnaeth tudalennau yn y namespace @PAGE@ o'r wici @TITLE@ newid.
+Dyma'r tudaalennau sydd wedi newid:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+I ganslo hysbysiadau'r dudalen, mewngofnodwch i'r wici ar
+@DOKUWIKIURL@ yna ewch i
+@SUBSCRIBE@
+a thanysgrifio o newidiadau tudalen a/neu namespace.
+
+-- 
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/cy/subscr_single.txt b/inc/lang/cy/subscr_single.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2a774ebd28728667c7d37351e3909d7d787991a5
--- /dev/null
+++ b/inc/lang/cy/subscr_single.txt
@@ -0,0 +1,23 @@
+Shw mae!
+
+Gwnaeth y dudalen @PAGE@ yn y wici @TITLE@ newid.
+Dyma'r newidiadau:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Dyddiad          : @DATE@
+Defnyddiwr       : @USER@
+Crynodeb Golygu  : @SUMMARY@
+Hen Adolygiad    : @OLDPAGE@
+Adolygiad Newwydd: @NEWPAGE@
+
+I ganslo hysbysiadau'r dudalen, mewngofnodwch i'r wici ar
+@DOKUWIKIURL@ yna ewch i
+@SUBSCRIBE@
+a thanysgrifio o newidiadau tudalen a namespace.
+
+-- 
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/cy/updateprofile.txt b/inc/lang/cy/updateprofile.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ce9ca503f3e5955feacdbc1e83c3850d01b6284d
--- /dev/null
+++ b/inc/lang/cy/updateprofile.txt
@@ -0,0 +1,5 @@
+====== Diweddaru proffil eich cyfrif ======
+
+Newidiwch y meysydd rydych chi amm newid yn unig.  'Sdim modd i chi newid eich defnyddair.
+
+
diff --git a/inc/lang/cy/uploadmail.txt b/inc/lang/cy/uploadmail.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8102232a3512578ed0b08f67845a702876b53560
--- /dev/null
+++ b/inc/lang/cy/uploadmail.txt
@@ -0,0 +1,15 @@
+Cafodd ffeil ei lanlwytho i'ch DokuWiki. Dyma'r manylion:
+
+Ffeil         : @MEDIA@
+Hen adolygiad : @OLD@
+Dyddiad       : @DATE@
+Porwr         : @BROWSER@
+Cyfeiriad-IP  : @IPADDRESS@
+Gwesteiwr     : @HOSTNAME@
+Maint         : @SIZE@
+Teip MIME     : @MIME@
+Defnyddiwr    : @USER@
+
+-- 
+Cafodd y neges hon ei generadu gan DokuWiki ar
+@DOKUWIKIURL@
diff --git a/inc/lang/de/subscr_list.txt b/inc/lang/de/subscr_list.txt
index 98ec4c2ab4de8a7f83c93fbbe0168ff75ae73fd4..f4318df707eda02544ffb0f62ff6403301e6c3f2 100644
--- a/inc/lang/de/subscr_list.txt
+++ b/inc/lang/de/subscr_list.txt
@@ -7,7 +7,7 @@ Das sind die geänderten Seiten:
 @DIFF@
 --------------------------------------------------------
 
-Um das Abonnement für diese Seite aufzulösen, melde Sie sich im Wiki an
+Um das Abonnement für diese Seite aufzulösen, melden Sie sich im Wiki an
 @DOKUWIKIURL@, besuchen dann
 @SUBSCRIBE@
 und klicken auf die Taste 'Änderungen abbestellen'.
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 26304902abec2feb812234db2c922c03f07f86ba..97559bd98b4fe81a1c51c9f417ee69308afe5324 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -41,6 +41,8 @@
  * @author Alejandro Nunez <nunez.alejandro@gmail.com>
  * @author Mauricio Segura <maose38@yahoo.es>
  * @author Domingo Redal <docxml@gmail.com>
+ * @author solohazlo <solohhazlo@gmail.com>
+ * @author Romano <romanocl@outlook.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
diff --git a/inc/lang/fa/admin.txt b/inc/lang/fa/admin.txt
index ce7550977193a42f7d69f4ed3eca49d565f5c650..f8e36ba4940feb9cb050e63c8cc0b59f7eb8f390 100644
--- a/inc/lang/fa/admin.txt
+++ b/inc/lang/fa/admin.txt
@@ -1,3 +1,3 @@
 ====== مدیریت ======
 
-در اینجا لیستی از وظیفه‌های مدیریتی را مشاهده می‌کنید.
\ No newline at end of file
+در اینجا فهرستی از وظیفه‌های مدیریتی را مشاهده می‌کنید.
\ No newline at end of file
diff --git a/inc/lang/fa/adminplugins.txt b/inc/lang/fa/adminplugins.txt
index 3d2bb4a5b589a9dc5fe74f256aecb0d35c033dcf..dab0251be2462a89f6d65b0e4c1930fbc0737505 100644
--- a/inc/lang/fa/adminplugins.txt
+++ b/inc/lang/fa/adminplugins.txt
@@ -1 +1 @@
-===== برنامه های جانبی دیگر =====
\ No newline at end of file
+===== برنامه‌های جانبی دیگر =====
\ No newline at end of file
diff --git a/inc/lang/fa/backlinks.txt b/inc/lang/fa/backlinks.txt
index 6864e22d60d132e7557e620007f3c083b99bff68..774d3d6cc517b496c025085157059321b8902fdd 100644
--- a/inc/lang/fa/backlinks.txt
+++ b/inc/lang/fa/backlinks.txt
@@ -1,3 +1,3 @@
 ====== پیوندهای بازگشتی ======
 
-در این‌جا لیستی از صفحاتی که به این صفحه پیوند داده‌اند را مشاهده می‌کنید.
\ No newline at end of file
+در این‌جا فهرستی از صفحاتی که به این صفحه پیوند داده‌اند را مشاهده می‌کنید.
\ No newline at end of file
diff --git a/inc/lang/fa/denied.txt b/inc/lang/fa/denied.txt
index 4bffa0f3c2f2e91fc65b0456b18abfcd503feb11..190b710ca85f580424dad1670845d456310ab51d 100644
--- a/inc/lang/fa/denied.txt
+++ b/inc/lang/fa/denied.txt
@@ -1,4 +1,4 @@
 ====== دسترسی ممکن نیست ======
 
-شرمنده، شما اجازه‌ی دسترسی ب این صفحه را ندارید.
+شرمنده، شما اجازهٔ دسترسی به این صفحه را ندارید.
 
diff --git a/inc/lang/fa/diff.txt b/inc/lang/fa/diff.txt
index d5354f727f8c967e4930fe40b9d3984aafa3c39e..80e1ce7a1f2ef885f70ed2c93954197fe7fe67b0 100644
--- a/inc/lang/fa/diff.txt
+++ b/inc/lang/fa/diff.txt
@@ -1,3 +1,3 @@
 ====== تفاوت‌ها ======
 
-تفاوت دو نسخه‌ی متفاوت از صفحه را مشاهده می‌کنید.
\ No newline at end of file
+تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.
\ No newline at end of file
diff --git a/inc/lang/fa/editrev.txt b/inc/lang/fa/editrev.txt
index ca896feebbfb835645c81d55aa6450fab52d614a..eae539414b15ac22699ebd12a5033f46f6e8b32d 100644
--- a/inc/lang/fa/editrev.txt
+++ b/inc/lang/fa/editrev.txt
@@ -1 +1,2 @@
-**شما یک نگارش قدیمی را مشاهده می‌کنید!** اگر این نگارش را ذخیره کنید، شما یک نگارش جدید ایجاد کرده‌اید!
\ No newline at end of file
+**شما یک نگارش قدیمی را مشاهده می‌کنید!** اگر این نگارش را ذخیره کنید، شما یک نگارش جدید ایجاد کرده‌اید!
+----
\ No newline at end of file
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 7b45b3137fc39ef53873bc1726b3d44befc80ce0..c05b8b50161db037be70af32f82159d24f62e630 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -15,6 +15,8 @@
  * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
  * @author Mohammad Sadegh <msdn2013@gmail.com>
  * @author Omid Hezaveh <hezpublic@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'rtl';
@@ -24,9 +26,9 @@ $lang['singlequoteopening']    = '‘';
 $lang['singlequoteclosing']    = '’';
 $lang['apostrophe']            = '’';
 $lang['btn_edit']              = 'ویرایش این صفحه';
-$lang['btn_source']            = 'نمایش مبدا';
+$lang['btn_source']            = 'نمایش متن صفحه';
 $lang['btn_show']              = 'نمایش صفحه';
-$lang['btn_create']            = 'ساخت این صفحه';
+$lang['btn_create']            = 'ایجاد این صفحه';
 $lang['btn_search']            = 'جستجو';
 $lang['btn_save']              = 'ذخیره';
 $lang['btn_preview']           = 'پیش‌نمایش';
@@ -63,23 +65,24 @@ $lang['btn_mediaManager']      = 'مشاهده در مدیریت رسانه‌ه
 $lang['loggedinas']            = 'به این عنوان وارد شده‌اید:';
 $lang['user']                  = 'نام کاربری';
 $lang['pass']                  = 'گذرواژه‌';
-$lang['newpass']               = 'گذروازه‌ی جدید';
+$lang['newpass']               = 'گذرواژه‌ی جدید';
 $lang['oldpass']               = 'گذرواژه‌ی فعلی را تایید کنید';
 $lang['passchk']               = 'یک بار دیگر';
 $lang['remember']              = 'مرا به خاطر بسپار.';
-$lang['fullname']              = '*نام واقعی شما';
-$lang['email']                 = 'ایمیل شما*';
+$lang['fullname']              = 'نام واقعی شما';
+$lang['email']                 = 'ایمیل شما';
 $lang['profile']               = 'پروفایل کاربر';
-$lang['badlogin']              = 'خطا در ورود به سیستم';
-$lang['badpassconfirm']        = 'متاسفم ، رمز عبور اشتباه است';
+$lang['badlogin']              = 'متاسفم، نام کاربری یا رمز عبور اشتباه است.';
+$lang['badpassconfirm']        = 'متاسفم، رمز عبور اشتباه است';
 $lang['minoredit']             = 'این ویرایش خُرد است';
-$lang['draftdate']             = 'ذخیره خودکار پیش‌نویس';
+$lang['draftdate']             = 'ذخیره خودکار پیش‌نویس در';
 $lang['nosecedit']             = 'این صفحه در این میان تغییر کرده است، اطلاعات بخش قدیمی شده است، در عوض محتوای کل نمایش داده می‌شود.';
 $lang['searchcreatepage']      = 'اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.';
 $lang['regmissing']            = 'متاسفم، شما باید همه قسمت‌ها را پر کنید.';
 $lang['reguexists']            = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
 $lang['regsuccess']            = 'کاربر ساخته شد و گذرواژه به صورت ایمیل ارسال گردید.';
 $lang['regsuccess2']           = 'حساب ایجاد شد.';
+$lang['regfail']               = 'ایجاد کاربر ممکن نیست.';
 $lang['regmailfail']           = 'مشکلی در ارسال ایمیل پیش آمده است، با مدیر تماس بگیرید!';
 $lang['regbadmail']            = 'نشانی واردشده‌ی ایمیل قابل‌قبول نیست، چرا که دارای ساختار نامعتبری است. خواهشمندیم نشانی‌ای با ساختار صحیح وارد کنید و یا بخش مربوط را خالی بگذارید.';
 $lang['regbadpass']            = 'گذرواژه‌هایی که وارد کردید یکسان نیستند.';
@@ -94,30 +97,30 @@ $lang['profdeleteuser']        = 'حذف حساب کاربری';
 $lang['profdeleted']           = 'حساب کاربری شما حذف گردیده است.';
 $lang['profconfdelete']        = 'می‌خواهم حساب کاربری من از این ویکی حذف شود. <br/> این عمل قابل برگشت نیست.';
 $lang['profconfdeletemissing'] = 'جعبه‌ی تأیید تیک نخورده است';
-$lang['pwdforget']             = 'گذرواژه‌ی خود را فراموش کرده‌اید؟ جدید دریافت کنید';
+$lang['proffail']              = 'بروزرسانی پروفایل کاربری انجام نشد.';
+$lang['pwdforget']             = 'گذرواژه‌ی خود را فراموش کرده‌اید؟ گذرواژه‌ی جدید دریافت کنید';
 $lang['resendna']              = 'این ویکی ارسال مجدد گذرواژه را پشتیبانی نمی‌کند';
 $lang['resendpwd']             = 'تعیین کلمه عبور جدید برای ';
-$lang['resendpwdmissing']      = 'متاسفم، شما باید تمام قسمت‌ها را پر کنید';
-$lang['resendpwdnouser']       = 'متاسفم، ما نتوانستیم این نام کاربری را در بانک خود پیدا کنیم';
+$lang['resendpwdmissing']      = 'متاسفم، شما باید تمام قسمت‌ها را پر کنید.';
+$lang['resendpwdnouser']       = 'متاسفم، ما نتوانستیم این نام کاربری را در پایگاه دادهٔ خود پیدا کنیم.';
 $lang['resendpwdbadauth']      = 'متاسفم، کد شناسایی معتبر نیست. از صحت لینک تاییدیه اطمینان حاصل کنید.';
-$lang['resendpwdconfirm']      = 'یک ایمیل تاییدیه‌ی آدرس به آدرس مورنظر ارسال شد. قبل از اینکه نامه‌ی دیگری قابل ارسال به این آدرس باشد، باید دستوراتی که در آن نامه آمده است را جهت تایید این مساله که این آدرس متعلق به شماست، اجرا کنید.';
-$lang['resendpwdsuccess']      = 'گذرواژه‌ی جدید شما توسط ایمیل ارسال شد';
+$lang['resendpwdconfirm']      = 'یک لینک تاییدیه آدرس از طریق ایمیل ارسال شد.';
+$lang['resendpwdsuccess']      = 'گذرواژه‌ی جدید شما توسط ایمیل ارسال شد.';
 $lang['license']               = 'به جز مواردی که ذکر می‌شود، مابقی محتویات ویکی تحت مجوز زیر می‌باشند:';
 $lang['licenseok']             = 'توجه: با ویرایش این صفحه، شما مجوز زیر را تایید می‌کنید:';
 $lang['searchmedia']           = 'نام فایل برای جستجو:';
 $lang['searchmedia_in']        = 'جستجو در %s';
-$lang['txt_upload']            = 'فایل را برای ارسال انتخاب کنید:';
+$lang['txt_upload']            = 'فایل را برای آپلود انتخاب کنید:';
 $lang['txt_filename']          = 'ارسال به صورت (اختیاری):';
 $lang['txt_overwrt']           = 'بر روی فایل موجود بنویس';
 $lang['maxuploadsize']         = 'حداکثر %s برای هر فایل مجاز است.';
 $lang['lockedby']              = 'در حال حاضر قفل شده است:';
-$lang['lockexpire']            = 'قفل منقضی شده است:';
+$lang['lockexpire']            = 'قفل منقضی می‌شود در:';
 $lang['js']['willexpire']      = 'حالت قفل شما مدتی است منقضی شده است \n برای جلوگیری از تداخل دکمه‌ی پیش‌نمایش را برای صفر شدن ساعت قفل بزنید.';
-$lang['js']['notsavedyet']     = 'تغییرات ذخیره شده از بین خواهد رفت.
- می‌خواهید ادامه دهید؟';
-$lang['js']['searchmedia']     = 'جستجو برای فایل';
-$lang['js']['keepopen']        = 'پنجره را ر زمان انتخاب باز نگه‌دار';
-$lang['js']['hidedetails']     = 'پتهان کردن جزییات';
+$lang['js']['notsavedyet']     = 'تغییرات ذخیره نشده از بین خواهد رفت.';
+$lang['js']['searchmedia']     = 'جستجو برای فایل‌ها';
+$lang['js']['keepopen']        = 'پنجره را در زمان انتخاب باز نگه‌دار';
+$lang['js']['hidedetails']     = 'پنهان کردن جزئیات';
 $lang['js']['mediatitle']      = 'تنظیمات پیوند';
 $lang['js']['mediadisplay']    = 'نوع پیوند';
 $lang['js']['mediaalign']      = 'هم‌ترازی';
@@ -125,13 +128,13 @@ $lang['js']['mediasize']       = 'اندازه تصویر';
 $lang['js']['mediatarget']     = 'هدف پیوند';
 $lang['js']['mediaclose']      = 'بستن';
 $lang['js']['mediainsert']     = 'درج کردن';
-$lang['js']['mediadisplayimg'] = 'نمایش تصویر';
+$lang['js']['mediadisplayimg'] = 'نمایش تصویر.';
 $lang['js']['mediadisplaylnk'] = 'فقط پیوند را نمایش بده.';
 $lang['js']['mediasmall']      = 'نگارش کوچک';
 $lang['js']['mediamedium']     = 'نگارش متوسط';
 $lang['js']['medialarge']      = 'نگارش بزرگ';
 $lang['js']['mediaoriginal']   = 'نگارش اصلی';
-$lang['js']['medialnk']        = 'پیوند به صفحه‌ی جزییات';
+$lang['js']['medialnk']        = 'پیوند به صفحه‌ی جزئیات';
 $lang['js']['mediadirect']     = 'پیوند مستقیم به اصلی';
 $lang['js']['medianolnk']      = 'بدون پیوند';
 $lang['js']['medianolink']     = 'تصویر را پیوند نکن';
@@ -149,38 +152,38 @@ $lang['js']['media_diff']      = 'تفاوت ها را ببینید: ';
 $lang['js']['media_diff_both'] = 'پهلو به پهلو';
 $lang['js']['media_diff_opacity'] = 'درخشش از';
 $lang['js']['media_diff_portions'] = 'کش رفتن';
-$lang['js']['media_select']    = 'انتخاب فایل -یا فایلها- ...';
+$lang['js']['media_select']    = 'انتخاب فایل‌ها...';
 $lang['js']['media_upload_btn'] = 'آپلود';
 $lang['js']['media_done_btn']  = 'انجام شد';
-$lang['js']['media_drop']      = 'فایل ها را در اینجا قرار دهید تا آپلود شود';
+$lang['js']['media_drop']      = 'فایل‌ها را در اینجا قرار دهید تا آپلود شود';
 $lang['js']['media_cancel']    = 'حذف';
-$lang['js']['media_overwrt']   = 'جاینوشت فایل های موجود';
-$lang['rssfailed']             = 'بروز خطا در هنگام واکشی';
-$lang['nothingfound']          = 'چیزی پیدا نشد';
+$lang['js']['media_overwrt']   = 'جاینوشت فایل‌های موجود';
+$lang['rssfailed']             = 'بروز خطا در هنگام واکشی این فید:';
+$lang['nothingfound']          = 'چیزی پیدا نشد.';
 $lang['mediaselect']           = 'فایل‌ها';
 $lang['uploadsucc']            = 'ارسال با موفقیت انجام شد';
-$lang['uploadfail']            = 'خطا در ارسال';
-$lang['uploadwrong']           = 'ارسال متوقف شد. این توسعه‌ی فایل ممنوع می‌باشد.';
-$lang['uploadexist']           = 'این فابل وجود دارد. عملی انجام نشد.';
-$lang['uploadbadcontent']      = 'محتوای فایل ارسال شده با توسعه‌ی %s متناقض است.';
+$lang['uploadfail']            = 'خطا در ارسال. شاید دسترسی‌ها نادرست است؟';
+$lang['uploadwrong']           = 'ارسال متوقف شد. این فرمت فایل ممنوع می‌باشد.';
+$lang['uploadexist']           = 'این فایل وجود دارد. عملی انجام نشد.';
+$lang['uploadbadcontent']      = 'محتوای فایل آپلود شده با فرمت %s یکسان نیست.';
 $lang['uploadspam']            = 'فایل ارسال شده توسط لیست سیاه اسپم‌ها مسدود شده است.';
 $lang['uploadxss']             = 'این صفحه حاوی اسکریپت یا کد اچ‌تی‌ام‌ال است که ممکن است به نادرست توسط مرورگر وب تفسیر شود.';
 $lang['uploadsize']            = 'فایل ارسال شده سنگین است. (بیشینه، %s)';
 $lang['deletesucc']            = 'فایل «%s» حذف شد.';
 $lang['deletefail']            = '«%s» حذف نمی‌شود، دسترسی‌ها را بررسی کنید.';
 $lang['mediainuse']            = 'فایل «%s» حذف نمی‌شود، چون هنوز در حال استفاده است.';
-$lang['namespaces']            = 'فضای‌نام';
+$lang['namespaces']            = 'فضای‌نام‌ها';
 $lang['mediafiles']            = 'فایل‌های موجود در';
 $lang['accessdenied']          = 'شما اجازه‌ی مشاهده‌ی این صفحه را ندارید.';
 $lang['mediausage']            = 'برای ارجاع دادن به فایل از نگارش زیر استفاده کنید.';
 $lang['mediaview']             = 'مشاهده‌ی فایل اصلی';
 $lang['mediaroot']             = 'ریشه';
-$lang['mediaupload']           = 'ارسال فایل به فضای‌نام کنونی. برای ایجاد زیرفضای‌نام‌ها، نام‌های آن‌ها را به عنوان پیشوندهایی که با دونقطه «:» جدا شده‌اند به نام فایل، در قسمت «ارسال به صورت» اضافه کنید.';
-$lang['mediaextchange']        = 'توسعه‌ی فایل از %s به %s تغییر داده شد.';
+$lang['mediaupload']           = 'ارسال فایل به فضای‌نام کنونی. برای ایجاد زیرفضای‌نام‌ها، پس از انتخاب فایل‌ها در قسمت «ارسال به صورت» به نام فایل نام‌های فضای‌نام‌ها را به عنوان پیشوندهایی که با دونقطه «:» جدا شده‌اند، اضافه کنید. همچنین فایل‌ها می‌توانند با کشیدن و ول کردن انتخاب شوند.';
+$lang['mediaextchange']        = 'فرمت فایل از %s به %s تغییر داده شد.';
 $lang['reference']             = 'ارجاع‌های';
 $lang['ref_inuse']             = 'این فایل نمی‌تواند حذف شود، زیرا هم‌چنان در این صفحه استفاده شده است:';
 $lang['ref_hidden']            = 'تعدادی مرجع در صفحاتی که شما دسترسی خواندن ندارید وجود دارد.';
-$lang['hits']                  = 'بازدید';
+$lang['hits']                  = 'بازدیدها';
 $lang['quickhits']             = 'جور کردن نام صفحات';
 $lang['toc']                   = 'فهرست مندرجات';
 $lang['current']               = 'فعلی';
@@ -339,7 +342,10 @@ $lang['media_perm_read']       = 'متاسفانه شما حق خواندن ای
 $lang['media_perm_upload']     = 'متاسفانه شما حق آپلود این فایل‌ها را ندارید.';
 $lang['media_update']          = 'آپلود نسخه‌ی جدید';
 $lang['media_restore']         = 'بازیابی این نسخه';
+$lang['media_acl_warning']     = 'این لیست ممکن است به خاطر محدودیتهای دسترسیهای ACL و صفحات پنهان کامل نباشد.';
 $lang['currentns']             = 'فضای نام جاری';
 $lang['searchresult']          = 'نتیجه‌ی جستجو';
 $lang['plainhtml']             = 'HTML ساده';
 $lang['wikimarkup']            = 'نشانه‌گذاری ویکی';
+$lang['page_nonexist_rev']     = 'صفحه %s وجود نداشت. این صفحه معاقباً در<a href="%s">%s</a> ایجاد شد.';
+$lang['unable_to_parse_date']  = 'امکان تجزیه و تحلیل پارامتر «%s» وجود ندارد.';
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index a24ccace9422a257a3563dc25e225b77004fb989..7926d87e631b5249eb95c2f71ee48760c790582d 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -2,7 +2,7 @@
 
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  * @author גיא שפר <guysoft@ort.org.il>
  * @author Denis Simakov <akinoame1@gmail.com>
  * @author Dotan Kamber <kamberd@yahoo.com>
@@ -15,6 +15,7 @@
  * @author tomer <tomercarolldergicz@gmail.com>
  * @author itsho <itsho.itsho@gmail.com>
  * @author Menashe Tomer <menashesite@gmail.com>
+ * @author sagi <sagiyosef@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'rtl';
@@ -95,6 +96,7 @@ $lang['profdeleteuser']        = 'הסר חשבון';
 $lang['profdeleted']           = 'חשבון המשתמש שלך נמחק מויקי זה';
 $lang['profconfdelete']        = 'ברצוני להסיר את החשבון שלי מוויקי זה. <br/> לא ניתן לבטל פעולה זו.';
 $lang['profconfdeletemissing'] = 'תיבת אישור אינו מסומן';
+$lang['proffail']              = 'פרופיל המשתמש לא עודכן';
 $lang['pwdforget']             = 'שכחת את הססמה שלך? ניתן לקבל חדשה';
 $lang['resendna']              = 'הוויקי הזה אינו תומך בחידוש ססמה';
 $lang['resendpwd']             = 'הגדר סיסמא חדשה בעבור';
@@ -341,6 +343,7 @@ $lang['media_perm_read']       = 'מצטערים, אין לך הרשאות לק
 $lang['media_perm_upload']     = 'מצטערים, אין לך הרשאות להעלות קבצים.';
 $lang['media_update']          = 'העלה גירסה חדשה';
 $lang['media_restore']         = 'שחזר גירסה זו';
+$lang['media_acl_warning']     = 'רשימה זו עלולה להיות חסרה עכב חוסר בהרשאות או דפים מוסתרים';
 $lang['currentns']             = 'שם מרחב נוכחי';
 $lang['searchresult']          = 'תוצאות חיפוש';
 $lang['plainhtml']             = 'HTML פשוט';
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index b84c4d7d88b50a8de7d70df101e3a9cf2d100da2..33a990aa9c9058857d3d0f86b6e729577b5927db 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -87,6 +87,7 @@ $lang['regmissing']            = 'Devi riempire tutti i campi.';
 $lang['reguexists']            = 'Il nome utente inserito esiste già.';
 $lang['regsuccess']            = 'L\'utente è stato creato. La password è stata spedita via email.';
 $lang['regsuccess2']           = 'L\'utente è stato creato.';
+$lang['regfail']               = 'L\'utente non può essere creato.';
 $lang['regmailfail']           = 'Sembra che ci sia stato un errore nell\'invio della email. Contatta l\'amministratore!';
 $lang['regbadmail']            = 'L\'indirizzo email fornito sembra essere non valido - se pensi che ci sia un errore contatta l\'amministratore';
 $lang['regbadpass']            = 'Le due password inserite non coincidono, prova di nuovo.';
@@ -101,6 +102,7 @@ $lang['profdeleteuser']        = 'Elimina account';
 $lang['profdeleted']           = 'Il tuo account utente è stato rimosso da questa wiki';
 $lang['profconfdelete']        = 'Voglio rimuovere il mio account da questa wiki. <br/> Questa operazione non può essere annullata.';
 $lang['profconfdeletemissing'] = 'La check box di conferma non è selezionata';
+$lang['proffail']              = 'Il profilo utente non è stato aggiornato.';
 $lang['pwdforget']             = 'Hai dimenticato la password? Richiedine una nuova';
 $lang['resendna']              = 'Questo wiki non supporta l\'invio di nuove password.';
 $lang['resendpwd']             = 'Imposta nuova password per';
@@ -347,7 +349,10 @@ $lang['media_perm_read']       = 'Spiacente, non hai abbastanza privilegi per le
 $lang['media_perm_upload']     = 'Spiacente, non hai abbastanza privilegi per caricare files.';
 $lang['media_update']          = 'Carica nuova versione';
 $lang['media_restore']         = 'Ripristina questa versione';
+$lang['media_acl_warning']     = 'Questa lista potrebbe non essere completa a causa di restrizioni ACL e pagine nascoste.';
 $lang['currentns']             = 'Namespace corrente';
 $lang['searchresult']          = 'Risultati della ricerca';
 $lang['plainhtml']             = 'HTML';
+$lang['wikimarkup']            = 'Marcatura wiki';
 $lang['page_nonexist_rev']     = 'Pagina non esistente a %s. E\' stata creata successivamente a <a href="%s">%s</a>.';
+$lang['unable_to_parse_date']  = 'Impossibile eseguire l\'analisi al parametro "%s".';
diff --git a/inc/lang/ko/admin.txt b/inc/lang/ko/admin.txt
index 2f81e89618ac34c7ae0faf6c899a1c0cae2d9926..408da1f8f7754660227569d9841ce56107e78237 100644
--- a/inc/lang/ko/admin.txt
+++ b/inc/lang/ko/admin.txt
@@ -1,3 +1,3 @@
 ====== 관리 ======
 
-도쿠위키에서 사용할 수 있는 관리 작업 목록을 아래에서 찾을 수 있습니다.
\ No newline at end of file
+도쿠위키에서 사용할 수 있는 관리 작업 목록은 아래와 같습니다.
\ No newline at end of file
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index 5ee0df829e46f809ca468f970c90a3f041ef3aed..9eefdf5774be8e758967b2ce68394365577b3241 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -14,6 +14,7 @@
  * @author Garam <rowain8@gmail.com>
  * @author Young gon Cha <garmede@gmail.com>
  * @author hyeonsoft <hyeonsoft@live.co.kr>
+ * @author Erial <erial2@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index a2f2a64ceb3d915a088ca1a5166e361d85eebf10..c085521f2e33a0da71aa35b8f908eb0057795c26 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -29,6 +29,7 @@
  * @author Hugo Smet <hugo.smet@scarlet.be>
  * @author Mark C. Prins <mprins@users.sf.net>
  * @author hugo smet <hugo.smet@scarlet.be>
+ * @author Wesley de Weerd <wesleytiel@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 67b4651f2198150c29e93a8e7ba572ee9885d286..aa0ce925ba33591d3d625d4959220ee5944594a9 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -25,6 +25,7 @@
  * @author Juliano Marconi Lanigra <juliano.marconi@gmail.com>
  * @author Ednei <leuloch@gmail.com>
  * @author Hudson FAS <hudsonfas@gmail.com>
+ * @author Guilherme Cardoso <guicardoso@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
diff --git a/inc/lang/pt/admin.txt b/inc/lang/pt/admin.txt
index 366792a9b3ad84c76d7cfc8f42c0fdfa687054be..5b103b38d447029e1eaa5a922cfbe16015911b69 100644
--- a/inc/lang/pt/admin.txt
+++ b/inc/lang/pt/admin.txt
@@ -1,3 +1,3 @@
 ====== Administração ======
 
-Abaixo pode encontrar uma lista de tarefas de administrativas permitidas pelo DokuWiki.
\ No newline at end of file
+Abaixo pode encontrar uma lista de tarefas de administrativas disponíveis na DokuWiki.
\ No newline at end of file
diff --git a/inc/lang/pt/adminplugins.txt b/inc/lang/pt/adminplugins.txt
index 3eac7af537c4093a06d869f5cfec2b503d37cb54..259f5ce454318ee2ff716e7c49f584896dd71dda 100644
--- a/inc/lang/pt/adminplugins.txt
+++ b/inc/lang/pt/adminplugins.txt
@@ -1 +1 @@
-===== Plugins Adicionais =====
\ No newline at end of file
+===== Extras Adicionais =====
\ No newline at end of file
diff --git a/inc/lang/pt/backlinks.txt b/inc/lang/pt/backlinks.txt
index e78ddf8748f329ba729fde6c96d5427e86a2d1ac..4eb82cb2664d87b95af3592de9664ad3727aa107 100644
--- a/inc/lang/pt/backlinks.txt
+++ b/inc/lang/pt/backlinks.txt
@@ -1,4 +1,4 @@
 ====== Backlinks ======
 
-Esta é uma lista de todos os documentos que apresentam ligações ao documento corrente.
+Esta é uma lista de páginas que parece que interliga para a página atual.
 
diff --git a/inc/lang/pt/conflict.txt b/inc/lang/pt/conflict.txt
index b6d7319b0327cf39e5ab2faafa1a23c081671231..49575fdb8fbe5507274bc22f4af86f0c695cfb3d 100644
--- a/inc/lang/pt/conflict.txt
+++ b/inc/lang/pt/conflict.txt
@@ -1,5 +1,5 @@
-====== Uma versão mais recente existe ======
+====== Existe uma versão mais recente ======
 
-Existe uma versão mais recente do documento editado. Isso acontece quando um outro usuário alterou o documento enquanto você estava editando.
+Existe uma versão mais recente do documento editado. Isto acontece quando um outro utilizador alterou o documento enquanto o estava a editar.
 
-Examine cuidadosamente as diferenças mostradas abaixo, em seguida, decida qual versão manter. Se você escolher ''salvar '', sua versão será salva. Clique ''cancelar '' para manter a versão atual.
+Analise cuidadosamente as diferenças mostradas abaixo, depois decida qual a versão a manter. Se escolher 'guardar'', a sua versão será guardada. Clique em ''cancelar '' para manter a versão atual.
diff --git a/inc/lang/pt/denied.txt b/inc/lang/pt/denied.txt
index 84c3a94063d3d916a4b2564ec1b45af94fa9d58f..f4e8e01149197235a4f410a20c496317031ef1ab 100644
--- a/inc/lang/pt/denied.txt
+++ b/inc/lang/pt/denied.txt
@@ -1,4 +1,4 @@
 ====== Permissão Negada ======
 
-Desculpe, você não possui direitos e permissões suficientes para continuar.
+Desculpe, não tem direitos suficientes para continuar.
 
diff --git a/inc/lang/pt/diff.txt b/inc/lang/pt/diff.txt
index e27640aa8c56f3e30ee22c7099b2cd0c7671143b..b73326268efe6c41072b44bb3e176ea0967dbd95 100644
--- a/inc/lang/pt/diff.txt
+++ b/inc/lang/pt/diff.txt
@@ -1,5 +1,3 @@
 ====== Diferenças ======
 
-Esta página mostra as diferenças entre a revisão do documento que escolheu e a versão actual.
-
-----
+Esta página mostra as diferenças entre as duas revisões da página.
\ No newline at end of file
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index c45d522952cc03d0b5676d73a83fa2098f8a74c8..4f111ee3f59ec45d86075122f1b1a9d02d39a831 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -14,6 +14,7 @@
  * @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>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -22,24 +23,24 @@ $lang['doublequoteclosing']    = '”';
 $lang['singlequoteopening']    = '‘';
 $lang['singlequoteclosing']    = '’';
 $lang['apostrophe']            = '’';
-$lang['btn_edit']              = 'Editar página';
-$lang['btn_source']            = 'Ver fonte';
-$lang['btn_show']              = 'Ver página';
-$lang['btn_create']            = 'Criar página';
+$lang['btn_edit']              = 'Editar esta página';
+$lang['btn_source']            = 'Mostrar página fonte ';
+$lang['btn_show']              = 'Mostrar página';
+$lang['btn_create']            = 'Criar esta página';
 $lang['btn_search']            = 'Pesquisar';
-$lang['btn_save']              = 'Salvar';
-$lang['btn_preview']           = 'Prever';
+$lang['btn_save']              = 'Guardar';
+$lang['btn_preview']           = 'Pré-visualizar';
 $lang['btn_top']               = 'Voltar ao topo';
 $lang['btn_newer']             = '<< mais recente';
 $lang['btn_older']             = 'menos recente >>';
 $lang['btn_revs']              = 'Revisões antigas';
-$lang['btn_recent']            = 'Alt. Recentes';
-$lang['btn_upload']            = 'Carregar';
+$lang['btn_recent']            = 'Alterações Recentes';
+$lang['btn_upload']            = 'Enviar';
 $lang['btn_cancel']            = 'Cancelar';
 $lang['btn_index']             = 'Índice';
 $lang['btn_secedit']           = 'Editar';
-$lang['btn_login']             = 'Entrar';
-$lang['btn_logout']            = 'Sair';
+$lang['btn_login']             = 'Iniciar sessão';
+$lang['btn_logout']            = 'Terminar sessão';
 $lang['btn_admin']             = 'Administrar';
 $lang['btn_update']            = 'Actualizar';
 $lang['btn_delete']            = 'Apagar';
diff --git a/inc/lang/ru/admin.txt b/inc/lang/ru/admin.txt
index cd609a3478444f0fc3fe2ae6be5715dbfe4f77fc..8a670d5a0ed99599af3d3dffae707634ff667a91 100644
--- a/inc/lang/ru/admin.txt
+++ b/inc/lang/ru/admin.txt
@@ -1,4 +1,4 @@
 ====== Управление ======
 
-Ниже вы сможете найти список административных операций, доступных в «Докувики».
+Ниже вы сможете найти список административных операций, доступных в «Докувики».
 
diff --git a/inc/lang/ru/conflict.txt b/inc/lang/ru/conflict.txt
index 6c5e33dced7b3e2cac5bbbe82512bd7673fd817d..e813d8c13a097386f7bb461fac7fe8fd84d49e9e 100644
--- a/inc/lang/ru/conflict.txt
+++ b/inc/lang/ru/conflict.txt
@@ -1,5 +1,5 @@
 ====== Существует более новая версия ======
 
-Существует более новая версия документа, который вы редактировали. Такое случается, когда другой пользователь изменил документ, пока вы делали то же самое.
+Существует более новая версия документа, который вы редактировали. Такое случается, когда другой пользователь изменил документ, пока вы делали то же самое.
 
-Внимательно изучите различия, приведенные ниже, и решите, какую версию оставить. Если вы выберете «Сохранить», то ваша версия будет сохранена. Нажав «Отменить», вы оставите текущую версию.
+Внимательно изучите различия, приведенные ниже, и решите, какую версию оставить. Если вы выберете «Сохранить», то ваша версия будет сохранена. Нажав «Отменить», вы оставите текущую версию.
diff --git a/inc/lang/ru/denied.txt b/inc/lang/ru/denied.txt
index 6b7c82511b7fb121d8789947addd0ec0976ff33d..791b30b1ac20df7fe29dacff0d3d4b5f221b689f 100644
--- a/inc/lang/ru/denied.txt
+++ b/inc/lang/ru/denied.txt
@@ -1,4 +1,4 @@
 ====== Доступ запрещён ======
 
-Извините, у вас не хватает прав для этого действия.
+Извините, у вас не хватает прав для этого действия.
 
diff --git a/inc/lang/ru/diff.txt b/inc/lang/ru/diff.txt
index 80252614f9ee2726d8c66e2d7992f731815ecf9c..21b8a8eabec280d24e898eaad28827b86d5820e7 100644
--- a/inc/lang/ru/diff.txt
+++ b/inc/lang/ru/diff.txt
@@ -1,4 +1,3 @@
 ====== Различия ======
 
 Здесь показаны различия между двумя версиями данной страницы.
-
diff --git a/inc/lang/ru/draft.txt b/inc/lang/ru/draft.txt
index cb35f72b6a8cf2d66cb4862b2b312e7e5c2dceb2..a92aa34cd85bd5304058c332f0724be417d980c3 100644
--- a/inc/lang/ru/draft.txt
+++ b/inc/lang/ru/draft.txt
@@ -1,6 +1,5 @@
 ====== Найден черновик ======
 
-Последний раз редактирование этой страницы не было корректно завершено. Во время вашей работы был автоматически сохранён черновик, который вы теперь можете восстановить и продолжить прерванную правку. Ниже вы видите автоматически сохранённую версию.
-
-Пожалуйста, решите, хотите ли вы //восстановить// потерянную версию, //удалить// черновик, или //отменить// редактирование.
+Последний раз редактирование этой страницы не было корректно завершено. Во время вашей работы был автоматически сохранён черновик, который вы теперь можете восстановить и продолжить прерванную правку. Ниже вы видите автоматически сохранённую версию.
 
+Пожалуйста, решите, хотите ли вы //восстановить// потерянную версию, //удалить// черновик, или //отменить// редактирование.
diff --git a/inc/lang/ru/edit.txt b/inc/lang/ru/edit.txt
index aac399d7c2915fc9c143f622b238b83f5a3bd76b..25ded4115e2fd941242d5d0351987ab9f35561c0 100644
--- a/inc/lang/ru/edit.txt
+++ b/inc/lang/ru/edit.txt
@@ -1,2 +1 @@
-Отредактируйте страницу и нажмите «Сохранить». Прочтите [[wiki:syntax|справочную страницу]] для ознакомления с синтаксисом вики. Пожалуйста, редактируйте только в том случае, если планируете **улучшить** содержимое. Если вы просто хотите потестировать что-либо, воспользуйтесь специальной страницей: [[playground:playground]].
-
+Отредактируйте страницу и нажмите «Сохранить». Прочтите [[wiki:syntax|справочную страницу]] для ознакомления с синтаксисом вики. Пожалуйста, редактируйте только в том случае, если планируете **улучшить** содержимое. Если вы просто хотите потестировать что-либо, воспользуйтесь специальной страницей: [[playground:playground]].
diff --git a/inc/lang/ru/editrev.txt b/inc/lang/ru/editrev.txt
index 97b799a70805e603303dfdbfa5bb76cb13460d6b..ac2464db9e9e70a5ad5a2a7f2ab5f43fb2464b58 100644
--- a/inc/lang/ru/editrev.txt
+++ b/inc/lang/ru/editrev.txt
@@ -1,2 +1,2 @@
-**Вы загрузили старую ревизию документа.** Сохранив её, вы создадите новую текущую версию с этим содержимым.
+**Вы загрузили старую ревизию документа.** Сохранив её, вы создадите новую текущую версию с этим содержимым.
 ----
diff --git a/inc/lang/ru/index.txt b/inc/lang/ru/index.txt
index ab669918a600b1c197d2fab045297915f05aed47..a059b281fc87ce66f554e412055303158e7182a7 100644
--- a/inc/lang/ru/index.txt
+++ b/inc/lang/ru/index.txt
@@ -1,4 +1,4 @@
 ====== Содержание ======
 
-Перед вами список доступных страниц, упорядоченный по [[doku>namespaces|пространствам имён]].
+Перед вами список доступных страниц, упорядоченный по [[doku>namespaces|пространствам имён]].
 
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index 569ea0d9b8629380f2a6e5b662b269e8da6fff6a..304233a4818772784c64a8e3e1bb87cf9933da63 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -33,6 +33,7 @@
  * @author Nolf <m.kopachovets@gmail.com>
  * @author Takumo <9206984@mail.ru>
  * @author RainbowSpike <1@2.ru>
+ * @author dimsharav <dimsharav@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -45,7 +46,7 @@ $lang['btn_edit']              = 'Править страницу';
 $lang['btn_source']            = 'Показать исходный текст';
 $lang['btn_show']              = 'Показать страницу';
 $lang['btn_create']            = 'Создать страницу';
-$lang['btn_search']            = 'Поиск';
+$lang['btn_search']            = 'Найти';
 $lang['btn_save']              = 'Сохранить';
 $lang['btn_preview']           = 'Просмотр';
 $lang['btn_top']               = 'Наверх';
@@ -64,9 +65,9 @@ $lang['btn_update']            = 'Обновить';
 $lang['btn_delete']            = 'Удалить';
 $lang['btn_back']              = 'Назад';
 $lang['btn_backlink']          = 'Ссылки сюда';
-$lang['btn_subscribe']         = 'Подписаться (все правки)';
+$lang['btn_subscribe']         = 'Управление подписками';
 $lang['btn_profile']           = 'Профиль';
-$lang['btn_reset']             = 'Сброс';
+$lang['btn_reset']             = 'Вернуть';
 $lang['btn_resendpwd']         = 'Установить новый пароль';
 $lang['btn_draft']             = 'Править черновик';
 $lang['btn_recover']           = 'Восстановить черновик';
@@ -92,76 +93,78 @@ $lang['badlogin']              = 'Извините, неверное имя по
 $lang['badpassconfirm']        = 'Простите, пароль неверный';
 $lang['minoredit']             = 'Небольшие изменения';
 $lang['draftdate']             = 'Черновик сохранён';
-$lang['nosecedit']             = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
-$lang['searchcreatepage']      = 'Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».';
+$lang['nosecedit']             = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
+$lang['searchcreatepage']      = 'Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».';
 $lang['regmissing']            = 'Извините, вам следует заполнить все поля.';
 $lang['reguexists']            = 'Извините, пользователь с таким логином уже существует.';
-$lang['regsuccess']            = 'Пользователь создан; пароль выслан на адрес электронной почты.';
+$lang['regsuccess']            = 'Пользователь создан; пароль выслан на адрес электронной почты.';
 $lang['regsuccess2']           = 'Пользователь создан.';
-$lang['regfail']               = 'Пользователь не может быть создан.';
-$lang['regmailfail']           = 'Похоже есть проблема с отправкой пароля по почте. Пожалуйста, сообщите об этом администратору.';
-$lang['regbadmail']            = 'Данный вами адрес электронной почты выглядит неправильным. Если вы считаете это ошибкой, сообщите администратору.';
-$lang['regbadpass']            = 'Два введённых пароля не идентичны. Пожалуйста, попробуйте ещё раз.';
+$lang['regfail']               = 'Пользователь не может быть создан.';
+$lang['regmailfail']           = 'Похоже есть проблема с отправкой пароля по почте. Пожалуйста, сообщите об этом администратору.';
+$lang['regbadmail']            = 'Данный вами адрес электронной почты выглядит неправильным. Если вы считаете это ошибкой, сообщите администратору.';
+$lang['regbadpass']            = 'Два введённых пароля не идентичны. Пожалуйста, попробуйте ещё раз.';
 $lang['regpwmail']             = 'Ваш пароль для системы «Докувики»';
 $lang['reghere']               = 'У вас ещё нет аккаунта? Зарегистрируйтесь';
 $lang['profna']                = 'Данная вики не поддерживает изменение профиля';
 $lang['profnochange']          = 'Изменений не было внесено, профиль не обновлён.';
 $lang['profnoempty']           = 'Логин и адрес электронной почты не могут быть пустыми.';
 $lang['profchanged']           = 'Профиль пользователя успешно обновлён.';
-$lang['profnodelete']          = 'Удалённый пользователь не может работать с этим документом';
+$lang['profnodelete']          = 'Удалённый пользователь не может работать с этим документом';
 $lang['profdeleteuser']        = 'Удалить аккаунт';
-$lang['profdeleted']           = 'Ваш аккаунт был удален из этой вики';
-$lang['profconfdelete']        = 'Я хочу удалить свой аккаунт из этой вики. <br /> Это действие необратимо.';
-$lang['profconfdeletemissing'] = 'Флажок подтверждения не установлен';
-$lang['proffail']              = 'Профиль пользователя не был обновлен.';
+$lang['profdeleted']           = 'Ваш аккаунт был удалён из этой вики';
+$lang['profconfdelete']        = 'Я хочу удалить свой аккаунт из этой вики. <br />
+Это действие необратимо.';
+$lang['profconfdeletemissing'] = 'Флажок подтверждения не установлен';
+$lang['proffail']              = 'Профиль пользователя не был обновлен.';
 $lang['pwdforget']             = 'Забыли пароль? Получите новый';
-$lang['resendna']              = 'Данная вики не поддерживает повторную отправку пароля.';
+$lang['resendna']              = 'Данная вики не поддерживает повторную отправку пароля.';
 $lang['resendpwd']             = 'Установить новый пароль для';
 $lang['resendpwdmissing']      = 'Вы должны заполнить все поля формы.';
-$lang['resendpwdnouser']       = 'Пользователь с таким логином не обнаружен в нашей базе данных.';
-$lang['resendpwdbadauth']      = 'Извините, неверный код авторизации. Убедитесь, что вы полностью скопировали ссылку. ';
-$lang['resendpwdconfirm']      = 'Ссылка для подтверждения пароля была выслана по электронной почте. ';
-$lang['resendpwdsuccess']      = 'Ваш новый пароль был выслан по электронной почте.';
-$lang['license']               = 'За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:';
-$lang['licenseok']             = 'Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии:';
-$lang['searchmedia']           = 'Поиск по имени файла:';
+$lang['resendpwdnouser']       = 'Пользователь с таким логином не обнаружен в нашей базе данных.';
+$lang['resendpwdbadauth']      = 'Извините, неверный код авторизации. Убедитесь, что вы полностью скопировали ссылку.';
+$lang['resendpwdconfirm']      = 'Ссылка для подтверждения пароля была выслана по электронной почте.';
+$lang['resendpwdsuccess']      = 'Ваш новый пароль был выслан по электронной почте.';
+$lang['license']               = 'За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:';
+$lang['licenseok']             = 'Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии:';
+$lang['searchmedia']           = 'Поиск по имени файла';
 $lang['searchmedia_in']        = 'Поиск в %s';
 $lang['txt_upload']            = 'Выберите файл для загрузки:';
 $lang['txt_filename']          = 'Введите имя файла в вики (необязательно):';
 $lang['txt_overwrt']           = 'Перезаписать существующий файл';
-$lang['maxuploadsize']         = 'Максимальный размер загружаемого файла %s';
-$lang['lockedby']              = 'В данный момент заблокирован:';
-$lang['lockexpire']            = 'Блокировка истекает в:';
-$lang['js']['willexpire']      = 'Ваша блокировка этой страницы на редактирование истекает в течение минуты.\nЧтобы предотвратить конфликты используйте кнопку «Просмотр» для сброса таймера блокировки.';
-$lang['js']['notsavedyet']     = 'Несохранённые изменения будут потеряны. Вы действительно хотите продолжить?';
+$lang['maxuploadsize']         = 'Макс. размер загружаемого файла %s';
+$lang['lockedby']              = 'В данный момент заблокировано пользователем';
+$lang['lockexpire']            = 'Блокировка истекает в';
+$lang['js']['willexpire']      = 'Ваша блокировка этой страницы на редактирование истекает в течение минуты.\nЧтобы предотвратить конфликты используйте кнопку «Просмотр» для сброса таймера блокировки.';
+$lang['js']['notsavedyet']     = 'Несохранённые изменения будут потеряны. Вы действительно хотите продолжить?';
 $lang['js']['searchmedia']     = 'Поиск файлов';
 $lang['js']['keepopen']        = 'Не закрывать окно после выбора';
 $lang['js']['hidedetails']     = 'Скрыть детали';
-$lang['js']['mediatitle']      = 'Настройки ссылок';
+$lang['js']['mediatitle']      = 'Настройка ссылки';
 $lang['js']['mediadisplay']    = 'Тип ссылки';
-$lang['js']['mediaalign']      = 'Выравнивание';
-$lang['js']['mediasize']       = 'Размер изображения';
-$lang['js']['mediatarget']     = 'Значение target ссылки';
+$lang['js']['mediaalign']      = 'Выравнивание
+';
+$lang['js']['mediasize']       = 'Размер';
+$lang['js']['mediatarget']     = 'Целевая ссылка';
 $lang['js']['mediaclose']      = 'Закрыть';
 $lang['js']['mediainsert']     = 'Вставить';
-$lang['js']['mediadisplayimg'] = 'Показывать изображение.';
-$lang['js']['mediadisplaylnk'] = 'Показывать только ссылку.';
+$lang['js']['mediadisplayimg'] = 'Показывать изображение';
+$lang['js']['mediadisplaylnk'] = 'Показывать только ссылку';
 $lang['js']['mediasmall']      = 'Малая версия';
 $lang['js']['mediamedium']     = 'Средняя версия';
 $lang['js']['medialarge']      = 'Крупная версия';
 $lang['js']['mediaoriginal']   = 'Исходная версия';
 $lang['js']['medialnk']        = 'Ссылка на подробности';
-$lang['js']['mediadirect']     = 'Прямая ссылка на оригинал';
+$lang['js']['mediadirect']     = 'Прямая ссылка на оригинал';
 $lang['js']['medianolnk']      = 'Без ссылки';
-$lang['js']['medianolink']     = 'Не давать ссылку на изображение';
-$lang['js']['medialeft']       = 'Выровнять изображение по левому краю.';
-$lang['js']['mediaright']      = 'Выровнять изображение по правому краю.';
-$lang['js']['mediacenter']     = 'Выровнять изображение по центру.';
-$lang['js']['medianoalign']    = 'Не выравнивать.';
-$lang['js']['nosmblinks']      = 'Ссылка на сетевые каталоги Windows работает только из MS Internet Explorer, но вы можете скопировать ссылку.';
+$lang['js']['medianolink']     = 'Не давать ссылку на изображение';
+$lang['js']['medialeft']       = 'Выровнять изображение по левому краю';
+$lang['js']['mediaright']      = 'Выровнять изображение по правому краю';
+$lang['js']['mediacenter']     = 'Выровнять изображение по центру';
+$lang['js']['medianoalign']    = 'Не выравнивать';
+$lang['js']['nosmblinks']      = 'Ссылка на сетевые каталоги Windows работает только из MS Internet Explorer, но вы можете скопировать ссылку.';
 $lang['js']['linkwiz']         = 'Мастер ссылок';
 $lang['js']['linkto']          = 'Ссылка на:';
-$lang['js']['del_confirm']     = 'Вы на самом деле желаете удалить выбранное?';
+$lang['js']['del_confirm']     = 'Вы на самом деле желаете удалить выбранное?';
 $lang['js']['restore_confirm'] = 'Действительно восстановить эту версию?';
 $lang['js']['media_diff']      = 'Просмотр отличий:';
 $lang['js']['media_diff_both'] = 'рядом';
@@ -184,31 +187,31 @@ $lang['uploadbadcontent']      = 'Содержание файла не соот
 $lang['uploadspam']            = 'Загрузка заблокирована спам-фильтром.';
 $lang['uploadxss']             = 'Загрузка заблокирована по соображениям безопасности.';
 $lang['uploadsize']            = 'Загруженный файл был слишком большой. (Макс. %s)';
-$lang['deletesucc']            = 'Файл «%s» был удалён.';
-$lang['deletefail']            = 'Невозможно удалить файл «%s». Проверьте права доступа к файлу.';
-$lang['mediainuse']            = 'Файл «%s» не был удалён — файл всё ещё используется.';
+$lang['deletesucc']            = 'Файл %s был удалён.';
+$lang['deletefail']            = 'Невозможно удалить файл %s. Проверьте права доступа к файлу.';
+$lang['mediainuse']            = 'Файл %s не был удалён — файл всё ещё используется.';
 $lang['namespaces']            = 'Пространства имён';
 $lang['mediafiles']            = 'Доступные файлы';
 $lang['accessdenied']          = 'Вы не можете просмотреть эту страницу.';
 $lang['mediausage']            = 'Для ссылки на этот файл используйте следующий синтаксис:';
 $lang['mediaview']             = 'Посмотреть исходный файл';
 $lang['mediaroot']             = 'корень';
-$lang['mediaupload']           = 'Здесь можно загрузить файл в текущий каталог («пространство имён»). Чтобы создать подкаталоги, добавьте их к началу имени файла («Загрузить как»). Имена подкаталогов разделяются двоеточиями. ';
+$lang['mediaupload']           = 'Здесь можно загрузить файл в текущий каталог («пространство имён»). Чтобы создать подкаталоги, добавьте их к началу имени файла («Загрузить как»). Имена подкаталогов разделяются двоеточиями.';
 $lang['mediaextchange']        = 'Расширение изменилось с .%s на .%s!';
 $lang['reference']             = 'Ссылки для';
-$lang['ref_inuse']             = 'Этот файл не может быть удалён, так как он используется на следующих страницах:';
-$lang['ref_hidden']            = 'Некоторые ссылки находятся на страницах, на чтение которых у вас нет прав доступа';
+$lang['ref_inuse']             = 'Этот файл не может быть удалён, так как он используется на следующих страницах:';
+$lang['ref_hidden']            = 'Некоторые ссылки находятся на страницах, на чтение которых у вас нет прав доступа';
 $lang['hits']                  = 'соответствий';
-$lang['quickhits']             = 'Соответствия в названиях страниц';
+$lang['quickhits']             = 'Подходящие страницы';
 $lang['toc']                   = 'Содержание';
 $lang['current']               = 'текущий';
 $lang['yours']                 = 'Ваша версия';
 $lang['diff']                  = 'Показать отличия от текущей версии';
 $lang['diff2']                 = 'Показать различия между ревизиями  ';
 $lang['difflink']              = 'Ссылка на это сравнение';
-$lang['diff_type']             = 'Посмотреть отличия';
-$lang['diff_inline']           = 'встроенный';
-$lang['diff_side']             = 'бок о бок';
+$lang['diff_type']             = 'Посмотреть различия';
+$lang['diff_inline']           = 'внутри текста';
+$lang['diff_side']             = 'двумя колонками';
 $lang['diffprevrev']           = 'Предыдущая версия';
 $lang['diffnextrev']           = 'Следующая версия';
 $lang['difflastrev']           = 'Последняя версия';
@@ -313,7 +316,7 @@ $lang['i_mbfuncoverload']      = 'Для запуска «Докувики» н
 $lang['i_permfail']            = '<code>%s</code> недоступна для записи «Докувики». Вам необходимо исправить системные права доступа для этой директории!';
 $lang['i_confexists']          = '<code>%s</code> уже существует';
 $lang['i_writeerr']            = 'Не удалось создать <code>%s</code>. Вам необходимо проверить системные права доступа к файлу и директориям, и создать файл вручную. ';
-$lang['i_badhash']             = 'dokuwiki.php не распознан или изменён (хэш=<code>%s</code>)';
+$lang['i_badhash']             = 'dokuwiki.php не распознан или изменён (hash=<code>%s</code>)';
 $lang['i_badval']              = '<code>%s</code> — недопустимое или пустое значение';
 $lang['i_success']             = 'Конфигурация прошла успешно. Теперь вы можете удалить файл install.php. Переходите к
                                  <a href="doku.php?id=wiki:welcome">своей новой «Докувики»</a>.';
@@ -338,7 +341,7 @@ $lang['minutes']               = '%d минут назад';
 $lang['seconds']               = '%d секунд назад';
 $lang['wordblock']             = 'Ваши изменения не сохранены, поскольку они содержат блокируемые слова (спам).';
 $lang['media_uploadtab']       = 'Загрузка';
-$lang['media_searchtab']       = 'Поиск';
+$lang['media_searchtab']       = 'Найти';
 $lang['media_file']            = 'Файл';
 $lang['media_viewtab']         = 'Просмотр';
 $lang['media_edittab']         = 'Правка';
@@ -361,7 +364,7 @@ $lang['media_perm_read']       = 'Извините, у вас недостато
 $lang['media_perm_upload']     = 'Извините, у вас недостаточно прав для загрузки файлов.';
 $lang['media_update']          = 'Загрузить новую версию';
 $lang['media_restore']         = 'Восстановить эту версию';
-$lang['media_acl_warning']     = 'Этот список может быть неполным из-за ACL ограничений и скрытых страниц.';
+$lang['media_acl_warning']     = 'Этот список может быть неполным из-за ограничений списков контроля доступа (ACL) и скрытых страниц.';
 $lang['currentns']             = 'Текущее пространство имён';
 $lang['searchresult']          = 'Результаты поиска';
 $lang['plainhtml']             = 'Простой HTML';
diff --git a/inc/lang/ru/recent.txt b/inc/lang/ru/recent.txt
index aa088c734d160ab9dd1c81f24e5cc90590c64a95..0d4d3285a8eac379b001ffe9a67e46933b0852f7 100644
--- a/inc/lang/ru/recent.txt
+++ b/inc/lang/ru/recent.txt
@@ -1,5 +1,5 @@
 ====== Недавние изменения ======
 
-Эти страницы были изменены недавно.
+Следующие страницы были недавно изменены
 
 
diff --git a/inc/lang/ru/subscr_list.txt b/inc/lang/ru/subscr_list.txt
index 984a25eb0130020a9a27f59932dc47d6f15615b0..d2bc91a540a581f06f919d5e3cb559ae5fdee4a8 100644
--- a/inc/lang/ru/subscr_list.txt
+++ b/inc/lang/ru/subscr_list.txt
@@ -1,6 +1,7 @@
 Привет.
 
 Страницы в пространстве имён @PAGE@ в вики @TITLE@ были изменены.
+
 Список изменившихся страниц:
 
 --------------------------------------------------------
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index a78989ce05e062809e32c7193c4afc55b892a2d0..df711cd1b0d84a68c886177c8cdb531558f04c00 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -50,8 +50,10 @@ $lang['btn_register']          = 'Registrovať';
 $lang['btn_apply']             = 'Použiť';
 $lang['btn_media']             = 'Správa médií';
 $lang['btn_deleteuser']        = 'Zrušiť môj účet';
+$lang['btn_img_backto']        = 'Späť na %s';
+$lang['btn_mediaManager']      = 'Prezrieť v správcovi médií';
 $lang['loggedinas']            = 'Prihlásený(á) ako:';
-$lang['user']                  = 'Užívateľské meno';
+$lang['user']                  = 'Používateľské meno';
 $lang['pass']                  = 'Heslo';
 $lang['newpass']               = 'Nové heslo';
 $lang['oldpass']               = 'Potvrď aktuálne heslo';
@@ -59,36 +61,38 @@ $lang['passchk']               = 'EÅ¡te raz znovu';
 $lang['remember']              = 'Zapamätaj si ma';
 $lang['fullname']              = 'Celé meno';
 $lang['email']                 = 'E-Mail';
-$lang['profile']               = 'Užívateľský profil';
-$lang['badlogin']              = 'Zadané užívateľské meno a heslo nie je správne.';
+$lang['profile']               = 'Používateľský profil';
+$lang['badlogin']              = 'Zadané používateľské meno a heslo nie je správne.';
 $lang['badpassconfirm']        = 'Ľutujem, heslo bolo nesprávne.';
 $lang['minoredit']             = 'Menšie zmeny';
 $lang['draftdate']             = 'Koncept automaticky uložený';
 $lang['nosecedit']             = 'Stránka bola medzičasom zmenená, informácie o sekcii sú zastaralé a z tohto dôvodu bola nahraná celá stránka.';
-$lang['searchcreatepage']      = "Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.";
+$lang['searchcreatepage']      = 'Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla \'\'Vytvoriť stránku\'\'.';
 $lang['regmissing']            = 'Musíte vyplniť všetky údaje.';
-$lang['reguexists']            = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
-$lang['regsuccess']            = 'Užívateľský účet bol vytvorený a heslo zaslané emailom.';
-$lang['regsuccess2']           = 'Užívateľský účet bol vytvorený.';
+$lang['reguexists']            = 'Používateľ s rovnakým menom je už zaregistrovaný.';
+$lang['regsuccess']            = 'Používateľský účet bol vytvorený a heslo zaslané emailom.';
+$lang['regsuccess2']           = 'Používateľský účet bol vytvorený.';
+$lang['regfail']               = 'Používateľský účet nemôže byť vytvorený.';
 $lang['regmailfail']           = 'Zdá sa, že nastala chyba pri posielaní mailu s heslom. Skúste kontaktovať správcu.';
 $lang['regbadmail']            = 'Zadaná emailová adresa nie je platná. Pokiaľ si myslíte, že to je zle, skúste kontaktovať správcu.';
 $lang['regbadpass']            = 'Zadané heslá nie sú rovnaké, zadajte ich prosím znovu.';
 $lang['regpwmail']             = 'Vaše heslo do systému DokuWiki';
-$lang['reghere']               = 'Nemáte užívateľský účet? Vytvorte si ho';
+$lang['reghere']               = 'Nemáte používateľský účet? Vytvorte si ho';
 $lang['profna']                = 'Táto wiki nepodporuje zmenu profilu';
 $lang['profnochange']          = 'Žiadne zmeny, nie je čo robiť.';
 $lang['profnoempty']           = 'Prázdne meno alebo mailová adresa nie sú povolené.';
-$lang['profchanged']           = 'Užívateľský účet úspešne zmenený.';
+$lang['profchanged']           = 'Profil požívateľa bol úspešne zmenený.';
 $lang['profnodelete']          = 'Táto wiki neumožňuje zrušenie používateľov.';
 $lang['profdeleteuser']        = 'Zrušiť účet';
 $lang['profdeleted']           = 'Váš účet bol zrušený v tejto wiki.';
 $lang['profconfdelete']        = 'Chcem odstrániť môj účet z tejto wiki. <br/> Táto operácia je nevratná.';
 $lang['profconfdeletemissing'] = 'Nebolo zavolené potvrdzovacie políčko';
+$lang['proffail']              = 'Profil používateľa nebol aktualizovaný.';
 $lang['pwdforget']             = 'Zabudli ste heslo? Získajte nové!';
 $lang['resendna']              = 'Táto wiki nepodporuje opätovné zasielanie hesla.';
 $lang['resendpwd']             = 'Nastaviť nové heslo pre';
 $lang['resendpwdmissing']      = 'Prepáčte, musíte vyplniť všetky polia.';
-$lang['resendpwdnouser']       = 'Prepáčte, nemôžeme nájsť zadaného užívateľa v databáze.';
+$lang['resendpwdnouser']       = 'Prepáčte, nemôžeme nájsť zadaného používateľa v databáze.';
 $lang['resendpwdbadauth']      = 'Prepáčte, tento autorizačný kód nie je platný. Uistite sa, či ste použili celý autorizačný odkaz.';
 $lang['resendpwdconfirm']      = 'Autorizačný odkaz bol zaslaný na e-mail.';
 $lang['resendpwdsuccess']      = 'Vaše nové heslo bolo zaslané na e-mail.';
@@ -202,7 +206,7 @@ $lang['sidebar']               = 'Bočný panel';
 $lang['mail_newpage']          = 'stránka pridaná:';
 $lang['mail_changed']          = 'stránka zmenená:';
 $lang['mail_subscribe_list']   = 'stránky zmenené v mennom priestore:';
-$lang['mail_new_user']         = 'nový užívateľ:';
+$lang['mail_new_user']         = 'nový používateľ:';
 $lang['mail_upload']           = 'nahraný súbor:';
 $lang['changes_type']          = 'Prehľad zmien';
 $lang['pages_changes']         = 'Stránok';
@@ -236,7 +240,6 @@ $lang['upperns']               = 'návrat do nadradeného menného priestoru';
 $lang['metaedit']              = 'Upraviť metainformácie';
 $lang['metasaveerr']           = 'Zápis metainformácií zlyhal';
 $lang['metasaveok']            = 'Metainformácie uložené';
-$lang['btn_img_backto']            = 'Späť na %s';
 $lang['img_title']             = 'Titul:';
 $lang['img_caption']           = 'Popis:';
 $lang['img_date']              = 'Dátum:';
@@ -249,7 +252,6 @@ $lang['img_camera']            = 'Fotoaparát:';
 $lang['img_keywords']          = 'Kľúčové slová:';
 $lang['img_width']             = 'Šírka:';
 $lang['img_height']            = 'Výška:';
-$lang['btn_mediaManager']           = 'Prezrieť v správcovi médií';
 $lang['subscr_subscribe_success'] = 'Používateľ %s bol pridaný do zoznamu hlásení o zmenách %s';
 $lang['subscr_subscribe_error'] = 'Chyba pri pridaní používateľa %s do zoznamu hlásení o zmenách %s';
 $lang['subscr_subscribe_noaddress'] = 'Vaše prihlasovacie meno nemá priradenú žiadnu email adresu, nemôžete byť pridaný do zoznamu hlásení o zmenách';
@@ -266,7 +268,7 @@ $lang['subscr_m_receive']      = 'Dostávať';
 $lang['subscr_style_every']    = 'email pri každej zmene';
 $lang['subscr_style_digest']   = 'email so zhrnutím zmien pre každú stránku (perióda %.2f dňa)';
 $lang['subscr_style_list']     = 'zoznam zmenených stránok od posledného emailu (perióda %.2f dňa)';
-$lang['authtempfail']          = 'Užívateľská autentifikácia je dočasne nedostupná. Ak táto situácia pretrváva, prosím informujte správcu systému.';
+$lang['authtempfail']          = 'Používateľská autentifikácia je dočasne nedostupná. Ak táto situácia pretrváva, prosím informujte správcu systému.';
 $lang['i_chooselang']          = 'Zvoľte váš jazyk';
 $lang['i_installer']           = 'DokuWiki inštalátor';
 $lang['i_wikiname']            = 'Názov Wiki';
@@ -285,8 +287,8 @@ $lang['i_success']             = 'Konfigurácia bola úspešne ukončená. Teraz
 $lang['i_failure']             = 'Pri zápise konfiguračného súboru nastali nejaké chyby. Potrebujete ich opraviť manuálne pred tým, ako budete môcť používať <a href="doku.php?id=wiki:welcome">vašu novú DokuWiki</a>.';
 $lang['i_policy']              = 'Počiatočná ACL politika';
 $lang['i_pol0']                = 'Otvorená Wiki (čítanie, zápis a nahrávanie pre každého)';
-$lang['i_pol1']                = 'Verejná Wiki (čítanie pre každého, zápis a nahrávanie pre registrovaných užívateľov)';
-$lang['i_pol2']                = 'Uzatvorená Wiki (čítanie, zápis a nahrávanie len pre registrovaných užívateľov)';
+$lang['i_pol1']                = 'Verejná Wiki (čítanie pre každého, zápis a nahrávanie pre registrovaných používateľov)';
+$lang['i_pol2']                = 'Uzatvorená Wiki (čítanie, zápis a nahrávanie len pre registrovaných používateľov)';
 $lang['i_allowreg']            = 'Povolenie samostanej registrácie používateľov';
 $lang['i_retry']               = 'Skúsiť znovu';
 $lang['i_license']             = 'Vyberte licenciu, pod ktorou chcete uložiť váš obsah:';
diff --git a/inc/lang/sk/locked.txt b/inc/lang/sk/locked.txt
index 5063c0605456fc8ea2caf73a19586069e2886428..fae400bcad76df7e02b7851775232b8abea3fdde 100644
--- a/inc/lang/sk/locked.txt
+++ b/inc/lang/sk/locked.txt
@@ -1,3 +1,3 @@
 ====== Stránka je uzamknutá ======
 
-Tato stránka je práve uzamknutá pre úpravy iným užívateľom. Musíte počkať dovtedy, pokiaľ daný užívateľ dokončí svoje úpravy alebo pokiaľ tento zámok stratí platnosť.
+Tato stránka je práve uzamknutá pre úpravy iným používateľom. Musíte počkať dovtedy, pokiaľ daný používateľ dokončí svoje úpravy alebo pokiaľ tento zámok stratí platnosť.
diff --git a/inc/lang/sk/password.txt b/inc/lang/sk/password.txt
index 2b85e9c393f5f8693b1746720280d14f4448ac39..582844f29939254453baec4e8b82e231086b9c66 100644
--- a/inc/lang/sk/password.txt
+++ b/inc/lang/sk/password.txt
@@ -3,7 +3,7 @@ Dobrý deň,
 Tu sú prihlasovacie informácie pre @TITLE@ (@DOKUWIKIURL@)
 
 Meno : @FULLNAME@
-Užívateľské meno : @LOGIN@
+Používateľské meno : @LOGIN@
 Heslo : @PASSWORD@
 
 -- 
diff --git a/inc/lang/sk/register.txt b/inc/lang/sk/register.txt
index 59c225d7c44d175f0c3b26f8eb129f077f2c221c..b939dccca472b1899bf6b5a7d554ee298c052db9 100644
--- a/inc/lang/sk/register.txt
+++ b/inc/lang/sk/register.txt
@@ -1,3 +1,3 @@
 ====== Zaregistrujte sa ako nový užívateľ ======
 
-Aby ste získali užívateľský účet, vyplňte prosím všetky informácie v nasledujúcom formulári. Zadajte **platnú** mailovú adresu, na ktorú bude zaslané heslo. Užívateľské meno musí byť v platnom [[doku>pagename|formáte]] (ktorý je rovnaký ako formát názvu stránky).
+Aby ste získali používateľský účet, vyplňte prosím všetky informácie v nasledujúcom formulári. Zadajte **platnú** mailovú adresu, na ktorú bude zaslané heslo. Používateľské meno musí byť v platnom [[doku>pagename|formáte]] (ktorý je rovnaký ako formát názvu stránky).
diff --git a/inc/lang/sk/registermail.txt b/inc/lang/sk/registermail.txt
index a0bf9e314d60f62fc70ee56ade5ba59f3f11ebae..9cde994a3de82835abdd75841c9ec74b1544df59 100644
--- a/inc/lang/sk/registermail.txt
+++ b/inc/lang/sk/registermail.txt
@@ -1,6 +1,6 @@
-Nový užívateľ bol registrovaný. Tu sú detaily:
+Nový používateľ bol registrovaný. Tu sú detaily:
 
-Užívateľské meno : @NEWUSER@
+Používateľské meno : @NEWUSER@
 Celé meno        : @NEWNAME@
 E-Mail           : @NEWEMAIL@
 
diff --git a/inc/lang/sk/updateprofile.txt b/inc/lang/sk/updateprofile.txt
index 67b823dc5b24874ce4f69441eb85fa28211d11e6..33b5e5b78b8fbef6f1fa5c48471248c0750eb53b 100644
--- a/inc/lang/sk/updateprofile.txt
+++ b/inc/lang/sk/updateprofile.txt
@@ -1,4 +1,4 @@
-====== Zmena vášho užívateľského profilu ======
+====== Zmena vášho používateľského profilu ======
 
 Potrebujete vyplniť len tie polia, ktoré chcete zmeniť. Nemôžete zmeniť prihlasovacie meno.
 
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index 59332f70b23cd3c388e80a42fe381665a61c97fd..ee1f1e0783bcee412d1d91c2b4050603d509c743 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -2,12 +2,13 @@
 
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  * @author Komgrit Niyomrath <n.komgrit@gmail.com>
  * @author Arthit Suriyawongkul <arthit@gmail.com>
  * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
  * @author Thanasak Sompaisansin <jombthep@gmail.com>
  * @author Yuthana Tantirungrotechai <yt203y@gmail.com>
+ * @author Amnuay <amnuay@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -48,6 +49,7 @@ $lang['btn_recover']           = 'กู้คืนเอกสารฉบั
 $lang['btn_draftdel']          = 'ลบเอกสารฉบับร่าง';
 $lang['btn_revert']            = 'กู้คืน';
 $lang['btn_register']          = 'สร้างบัญชีผู้ใช้';
+$lang['btn_apply']             = 'นำไปใช้';
 $lang['btn_media']             = 'ส่วนจัดการสื่อและไฟล์';
 $lang['btn_deleteuser']        = 'ลบบัญชีผู้ใช้งานของฉัน';
 $lang['btn_img_backto']        = 'กลับไปยัง %s';
@@ -72,6 +74,7 @@ $lang['regmissing']            = 'ขออภัย คุณต้องกร
 $lang['reguexists']            = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
 $lang['regsuccess']            = 'ผู้ใช้ถูกสร้างแล้ว และรหัสผ่านได้ถูกส่งไปทางอีเมลแล้ว';
 $lang['regsuccess2']           = 'ชื่อบัญชีได้ถูกสร้างขึ้น';
+$lang['regfail']               = 'การสร้างผู้ใช้ไม่สำเร็จ';
 $lang['regmailfail']           = 'ดูเหมือนจะมีข้อผิดพลาดในการส่งรหัสผ่านทางเมล์ กรุณาติดต่อผู้ดูแลระบบ';
 $lang['regbadmail']            = 'รูปแบบอีเมลไม่ถูกต้อง ให้ใส่อีเมลให้ถูกต้องตามรูปแบบอีเมล หรือให้ทำช่องอีเมลให้ว่างแทน';
 $lang['regbadpass']            = 'รหัสผ่านที่ใส่ไม่ถูกต้อง';
@@ -85,8 +88,11 @@ $lang['profnodelete']          = 'วิกินี้ไม่รองรั
 $lang['profdeleteuser']        = 'ลบบัญชีผู้ใช้งาน';
 $lang['profdeleted']           = 'บัญชีผู้ใช้งานของคุณได้ถูกลบออกจากวิกิแล้ว';
 $lang['profconfdelete']        = 'ฉันอยากลบบัญชีผู้ใช้งานของฉันจากวิกินี้ <br/> การดำเนินการนี้ไม่สามารถแก้ไขคืนได้ ';
+$lang['profconfdeletemissing'] = 'ท่านไม่ได้ยืนยันในช่องยืนยัน';
+$lang['proffail']              = 'ข้อมูลผู้ใช้ไม่เป็นปัจจุบัน';
 $lang['pwdforget']             = 'ลืมรหัสผ่านหรือ? เอาอันใหม่สิ';
 $lang['resendna']              = 'วิกินี้ไม่รองรับการส่งรหัสผ่านซ้ำ';
+$lang['resendpwd']             = 'สร้างรหัสผ่านใหม่สำหรับ';
 $lang['resendpwdmissing']      = 'ขออภัย, คุณต้องกรอกทุกช่อง';
 $lang['resendpwdnouser']       = 'ขออภัย, เราไม่พบผู้ใช้คนนี้ในฐานข้อมูลของเรา';
 $lang['resendpwdbadauth']      = 'ขออภัย, รหัสนี้ยังใช้ไม่ได้ กรุณาตรวจสอบว่าคุณกดลิ้งค์ยืนยันแล้ว';
@@ -99,6 +105,7 @@ $lang['searchmedia_in']        = 'สืบค้นใน %s';
 $lang['txt_upload']            = 'เลือกไฟล์ที่จะอัพโหลด:';
 $lang['txt_filename']          = 'อัพโหลดเป็น(ตัวเลือก):';
 $lang['txt_overwrt']           = 'เขียนทับไฟล์ที่มีอยู่แล้ว';
+$lang['maxuploadsize']         = 'อัพโหลด สูงสุด %s ต่อไฟล์';
 $lang['lockedby']              = 'ตอนนี้ถูกล๊อคโดย:';
 $lang['lockexpire']            = 'การล๊อคจะหมดอายุเมื่อ:';
 $lang['js']['willexpire']      = 'การล๊อคเพื่อแก้ไขหน้านี้กำลังจะหมดเวลาในอีก \n นาที เพื่อที่จะหลีกเลี่ยงข้อขัดแย้งให้ใช้ปุ่ม "Preview" เพื่อรีเซ็ทเวลาใหม่';
@@ -106,6 +113,19 @@ $lang['js']['notsavedyet']     = 'การแก้ไขที่ไม่ไ
 $lang['js']['searchmedia']     = 'ค้นหาไฟล์';
 $lang['js']['keepopen']        = 'เปิดหน้าต่างไว้ระหว่างที่เลือก';
 $lang['js']['hidedetails']     = 'ซ่อนรายละเอียด';
+$lang['js']['mediatitle']      = 'กำหนดข้อมูลลิงค์';
+$lang['js']['mediadisplay']    = 'ชนิดของลิงค์';
+$lang['js']['mediaalign']      = 'การจัดวาง';
+$lang['js']['mediasize']       = 'ขนาดรูปภาพ';
+$lang['js']['mediatarget']     = 'เป้าหมายของลิงค์';
+$lang['js']['mediaclose']      = 'ปิด';
+$lang['js']['mediainsert']     = 'แทรก';
+$lang['js']['mediadisplayimg'] = 'แสดงรูปภาพ';
+$lang['js']['mediadisplaylnk'] = 'แสดงลิงค์ เท่านั้น';
+$lang['js']['mediasmall']      = 'รูปแบบขนาดเล็ก';
+$lang['js']['mediamedium']     = 'รูปแบบขนาดกลาง';
+$lang['js']['medialarge']      = 'รูปแบบขนาดใหญ่';
+$lang['js']['mediaoriginal']   = 'รูปแบบตั้งต้น';
 $lang['js']['nosmblinks']      = 'เชื่อมไปยังหน้าต่างแบ่งปัน ทำงานได้กับเฉพาะไมโครซอฟท์อินเตอร์เน็ตเอ็กซโปรเรอร์(IE) คุณยังคงสามารถคัดลอกและแปะลิ้งค์ได้';
 $lang['js']['linkwiz']         = 'ลิงค์วิเศษ';
 $lang['js']['linkto']          = 'ลิงค์ไป:';
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 74a717bfe682108c73d453d83d220a192f93622f..7c99b6322c897c31349eaec70007079709578bb0 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -2,7 +2,7 @@
 
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  * @author Oleksiy Voronin <ovoronin@gmail.com>
  * @author serg_stetsuk@ukr.net
  * @author Oleksandr Kunytsia <okunia@gmail.com>
@@ -12,6 +12,7 @@
  * @author Egor Smkv <egorsmkv@gmail.com>
  * @author Max Lyashuk <m_lyashuk@ukr.net>
  * @author Pavel <pavelholovko@yandex.ru>
+ * @author Maksim <nikropol@yandex.ru>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -88,6 +89,8 @@ $lang['profnochange']          = 'Немає змін, немає що роби
 $lang['profnoempty']           = 'Ім’я або e-mail не можуть бути пустими.';
 $lang['profchanged']           = 'Профіль успішно змінено.';
 $lang['profdeleteuser']        = 'Видалити аккаунт';
+$lang['profdeleted']           = 'Ваш профіль користувача буде видалено з цієї wiki.';
+$lang['proffail']              = 'Профіль користувача не вдалося поновити.';
 $lang['pwdforget']             = 'Забули пароль? Отримайте новий';
 $lang['resendna']              = 'Ця Вікі не підтримує повторне відправлення пароля.';
 $lang['resendpwd']             = 'Встановити новий пароль для';
@@ -140,6 +143,7 @@ $lang['js']['linkto']          = 'Посилання на:';
 $lang['js']['del_confirm']     = 'Дійсно знищити обрані елементи?';
 $lang['js']['restore_confirm'] = 'Дійсно відновити цю версію?';
 $lang['js']['media_diff']      = 'Переглянути різницю:';
+$lang['js']['media_diff_portions'] = 'Прогорнути';
 $lang['js']['media_select']    = 'Оберіть файли';
 $lang['js']['media_upload_btn'] = 'Завантажити';
 $lang['js']['media_done_btn']  = 'Успішно';
@@ -291,6 +295,7 @@ $lang['i_pol1']                = 'Публічна Вікі (читання дл
 $lang['i_pol2']                = 'Закрита Вікі (читання, запис та завантаження тільки для зареєстрованих користувачів)';
 $lang['i_retry']               = 'Повторити';
 $lang['i_license']             = 'Будь ласка, виберіть тип ліцензії, під якою Ві бажаєте опублікувати матеріал:';
+$lang['i_license_none']        = 'Не показувати жодної інформації про ліцензії.';
 $lang['recent_global']         = 'Ви переглядаєте зміни в межах простору імен <b>%s</b>. Також можна <a href="%s">переглянути зміни в межах усієї Вікі</a>.';
 $lang['years']                 = '%d років тому';
 $lang['months']                = '%d місяців тому';
@@ -307,3 +312,11 @@ $lang['media_edittab']         = 'Редагувати';
 $lang['media_historytab']      = 'Історія';
 $lang['media_sort_name']       = 'Ім’я';
 $lang['media_sort_date']       = 'Дата';
+$lang['media_meta_edited']     = 'метаданні відредаговано';
+$lang['media_perm_read']       = 'Вибачте, у вас не достатньо прав для читання цього файлу.';
+$lang['media_update']          = 'Завантажити нову версію';
+$lang['media_restore']         = 'Відновити цю версію';
+$lang['currentns']             = 'Поточний діапазон імен';
+$lang['searchresult']          = 'Результати пошуку';
+$lang['plainhtml']             = 'Простий HTML';
+$lang['wikimarkup']            = 'Wiki розмітка';
diff --git a/inc/lang/uk/resetpwd.txt b/inc/lang/uk/resetpwd.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b24e88473749b9bb3c0ee8b4d5f6a98944464f0d
--- /dev/null
+++ b/inc/lang/uk/resetpwd.txt
@@ -0,0 +1,3 @@
+====== Встановити новий пароль ======
+
+Будь-ласка, введіть новий пароль для цієї wiki.
\ No newline at end of file
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index b69456ee7ee4d46a5db372b8909905363a318115..4cd077381f5a7d5cf377de7431f692e07573b142 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -2,7 +2,7 @@
 
 /**
  * @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
@@ -16,6 +16,7 @@
  * @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['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index d179ad634c127fd170717d1c6275b5d305be70bd..03b1823903f955fb19bc6c4ab42377e578be4ca3 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -25,6 +25,7 @@
  * @author qinghao <qingxianhao@gmail.com>
  * @author Yuwei Sun <yuwei@hrz.tu-chemnitz.de>
  * @author Errol <errol@hotmail.com>
+ * @author Garfield <garfield_550@outlook.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
diff --git a/inc/load.php b/inc/load.php
index 42a6a6362f7aa378d639d57ea1839324b30e7059..99e004b23ec577e2198540bb4dade4e6ddd97d30 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -107,14 +107,15 @@ function load_autoload($name){
     );
 
     if(isset($classes[$name])){
-        require_once($classes[$name]);
-        return;
+        require ($classes[$name]);
+        return true;
     }
 
     // our own namespace
     $name = str_replace('\\', '/', $name);
     if(substr($name, 0, 9) == 'dokuwiki/') {
-        require_once(substr($name, 9) . '.php');
+        require substr($name, 9) . '.php';
+        return true;
     }
 
     // Plugin loading
@@ -124,9 +125,10 @@ function load_autoload($name){
         $c = ((count($m) === 4) ? "/{$m[3]}" : '');
         $plg = DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php";
         if(file_exists($plg)){
-            include_once DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php";
+            require $plg;
         }
-        return;
+        return true;
     }
+    return false;
 }
 
diff --git a/inc/remote.php b/inc/remote.php
index 3e032049d8e82343fca30dfe44083233edc6e48e..771d12d252901f6f1de5206e0715db7746e4eba0 100644
--- a/inc/remote.php
+++ b/inc/remote.php
@@ -236,6 +236,9 @@ class RemoteAPI {
         if (!$conf['remote']) {
             throw new RemoteAccessDeniedException('server error. RPC server not enabled.',-32604); //should not be here,just throw
         }
+        if(trim($conf['remoteuser']) == '!!not set!!') {
+            return false;
+        }
         if(!$conf['useacl']) {
             return true;
         }
diff --git a/inc/search.php b/inc/search.php
index 935969d3f2fb2871b79e15c76826e07dddcbbb3b..cc3579c3c787d554b82cbd580d1d0bc1f46604ca 100644
--- a/inc/search.php
+++ b/inc/search.php
@@ -28,6 +28,11 @@ function search(&$data,$base,$func,$opts,$dir='',$lvl=1,$sort='natural'){
     $files  = array();
     $filepaths = array();
 
+    // safeguard against runaways #1452
+    if($base == '' || $base == '/') {
+        throw new RuntimeException('No valid $base passed to search() - possible misconfiguration or bug');
+    }
+
     //read in directories and files
     $dh = @opendir($base.'/'.$dir);
     if(!$dh) return;
diff --git a/inc/template.php b/inc/template.php
index a1bdc8d640f29c48cae89ccd7ec86aa3eece9923..ec99742116e9fd90006b8fd36a9ba6e6e2b26e0f 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -303,10 +303,13 @@ function tpl_metaheaders($alt = true) {
 
     // the usual stuff
     $head['meta'][] = array('name'=> 'generator', 'content'=> 'DokuWiki');
-    $head['link'][] = array(
-        'rel' => 'search', 'type'=> 'application/opensearchdescription+xml',
-        'href'=> DOKU_BASE.'lib/exe/opensearch.php', 'title'=> $conf['title']
-    );
+    if(actionOK('search')) {
+        $head['link'][] = array(
+            'rel' => 'search', 'type'=> 'application/opensearchdescription+xml',
+            'href'=> DOKU_BASE.'lib/exe/opensearch.php', 'title'=> $conf['title']
+        );
+    }
+
     $head['link'][] = array('rel'=> 'start', 'href'=> DOKU_BASE);
     if(actionOK('index')) {
         $head['link'][] = array(
diff --git a/index.php b/index.php
index ad0807727c4afb4092c595346e2fc0c570ee3798..689ce1779b6209787e4d55adbeec3bce4e4dd1af 100644
--- a/index.php
+++ b/index.php
@@ -1,8 +1,68 @@
 <?php
 /**
- * Forwarder to doku.php
+ * Forwarder/Router to doku.php
+ *
+ * In normal usage, this script simply redirects to doku.php. However it can also be used as a routing
+ * script with PHP's builtin webserver. It takes care of .htaccess compatible rewriting, directory/file
+ * access permission checking and passing on static files.
+ *
+ * Usage example:
+ *
+ *   php -S localhost:8000 index.php
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author     Andreas Gohr <andi@splitbrain.org>
  */
-header("Location: doku.php");
+if(php_sapi_name() != 'cli-server') {
+    header("Location: doku.php");
+    exit;
+}
+
+# ROUTER starts below
+
+# avoid path traversal
+$_SERVER['SCRIPT_NAME'] = str_replace('/../', '/', $_SERVER['SCRIPT_NAME']);
+
+# routing aka. rewriting
+if(preg_match('/^\/_media\/(.*)/', $_SERVER['SCRIPT_NAME'], $m)) {
+    # media dispatcher
+    $_GET['media'] = $m[1];
+    require $_SERVER['DOCUMENT_ROOT'] . '/lib/exe/fetch.php';
+
+} else if(preg_match('/^\/_detail\/(.*)/', $_SERVER['SCRIPT_NAME'], $m)) {
+    # image detail view
+    $_GET['media'] = $m[1];
+    require $_SERVER['DOCUMENT_ROOT'] . '/lib/exe/detail.php';
+
+} else if(preg_match('/^\/_media\/(.*)/', $_SERVER['SCRIPT_NAME'], $m)) {
+    # exports
+    $_GET['do'] = 'export_' . $m[1];
+    $_GET['id'] = $m[2];
+    require $_SERVER['DOCUMENT_ROOT'] . '/doku.php';
+
+} elseif($_SERVER['SCRIPT_NAME'] == '/index.php') {
+    # 404s are automatically mapped to index.php
+    if(isset($_SERVER['PATH_INFO'])) {
+        $_GET['id'] = $_SERVER['PATH_INFO'];
+    }
+    require $_SERVER['DOCUMENT_ROOT'] . '/doku.php';
+
+} else if(file_exists($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME'])) {
+    # existing files
+
+    # access limitiations
+    if(preg_match('/\/([\._]ht|README$|VERSION$|COPYING$)/', $_SERVER['SCRIPT_NAME']) or
+        preg_match('/^\/(data|conf|bin|inc)\//', $_SERVER['SCRIPT_NAME'])
+    ) {
+        die('Access denied');
+    }
+
+    if(substr($_SERVER['SCRIPT_NAME'], -4) == '.php') {
+        # php scripts
+        require $_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME'];
+    } else {
+        # static files
+        return false;
+    }
+}
+# 404
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index a200a3dedd2fde7302dfa1d17114ca5e2954cc1f..b3e9a618f565143707904fd89770accba787111f 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -303,7 +303,8 @@ function ajax_mediaupload(){
         );
     }
     $json = new JSON;
-    echo htmlspecialchars($json->encode($result), ENT_NOQUOTES);
+    header('Content-Type: application/json');
+    echo $json->encode($result);
 }
 
 /**
@@ -428,7 +429,7 @@ function ajax_linkwiz(){
 
         echo '<a href="'.$link.'" title="'.htmlspecialchars($item['id']).'" class="wikilink1">'.$name.'</a>';
 
-        if($item['title']){
+        if(!blank($item['title'])){
             echo '<span>'.htmlspecialchars($item['title']).'</span>';
         }
         echo '</div>';
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 925b78a761dfad5b017acbc547fabd0a207d6b74..507a687371798b97d0aefe22bbfd215b2817fdf1 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -296,12 +296,12 @@ function css_styleini($tpl, $preview=false) {
         $data = parse_ini_file($ini, true);
 
         // stylesheets
-        if(is_array($data['stylesheets'])) foreach($data['stylesheets'] as $file => $mode){
+        if(isset($data['stylesheets']) && is_array($data['stylesheets'])) foreach($data['stylesheets'] as $file => $mode){
             $stylesheets[$mode][$incbase.$file] = $webbase;
         }
 
         // replacements
-        if(is_array($data['replacements'])){
+        if(isset($data['replacements']) && is_array($data['replacements'])){
             $replacements = array_merge($replacements, css_fixreplacementurls($data['replacements'],$webbase));
         }
     }
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 16d22daf25d3fd15698b9f9d0a9a26b660fbc500..e850218cf522d95e4f1e804ce9d7b632ce3fd37f 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -173,7 +173,7 @@ function js_load($file){
         // is it a include_once?
         if($match[1]){
             $base = utf8_basename($ifile);
-            if($loaded[$base]){
+            if(array_key_exists($base, $loaded) && $loaded[$base] === true){
                 $data  = str_replace($match[0], '' ,$data);
                 continue;
             }
@@ -419,9 +419,9 @@ function js_compress($s){
 
             // Only consider deleting whitespace if the signs before and after
             // are not equal and are not an operator which may not follow itself.
-            if ((!$lch || $s[$i+1] == ' ')
+            if ($i+1 < $slen && ((!$lch || $s[$i+1] == ' ')
                 || $lch != $s[$i+1]
-                || strpos($ops,$s[$i+1]) === false) {
+                || strpos($ops,$s[$i+1]) === false)) {
                 // leading spaces
                 if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
                     $i = $i + 1;
diff --git a/lib/plugins/acl/lang/bg/help.txt b/lib/plugins/acl/lang/bg/help.txt
index 2de45342056180b1a27d547975fc993729b3a96c..ffda1ff7136e8615163a5387975ce0939780612c 100644
--- a/lib/plugins/acl/lang/bg/help.txt
+++ b/lib/plugins/acl/lang/bg/help.txt
@@ -1,11 +1,9 @@
 === Помощ ===
 
 От тук можете да добавяте и премахвате права за именни пространства и страници във вашето Wiki.
-
-Левият панел показва всички налични именни пространства и страници.
-
-Формата отгоре ви позволява да преглеждате и променяте правата на избран потребител или група.
-
-В таблицата отдолу са показани всички актуални правила за контрол на достъпа. Можете да я ползвате за бързо изтриване или промяна на множество правила.
+  * левият панел показва всички налични именни пространства и страници.
+  * формата отгоре ви позволява да преглеждате и променяте правата на избран потребител или група.
+  * в таблицата долу са показани всички актуални правила за контрол на достъпа.
+Можете да я ползвате за бързо изтриване или промяна на множество правила.
 
 За да разберете как работи контрола на достъпа в DokuWiki трябва да прочетете [[doku>acl|документацията относно ACL]].
\ No newline at end of file
diff --git a/lib/plugins/acl/lang/cy/help.txt b/lib/plugins/acl/lang/cy/help.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f3d6474f848523e1504258cb3856c3420e5ef871
--- /dev/null
+++ b/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/lib/plugins/acl/lang/cy/lang.php b/lib/plugins/acl/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..add3ca40422094c046df8f6ccece1911c3e108fb
--- /dev/null
+++ b/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/lib/plugins/acl/lang/de/lang.php b/lib/plugins/acl/lang/de/lang.php
index f25a2ea7159ad72829575f4c0f6eb98b99af4b78..f4d7cc9e26b494d645ba50849a7d7bce7cc4bdb2 100644
--- a/lib/plugins/acl/lang/de/lang.php
+++ b/lib/plugins/acl/lang/de/lang.php
@@ -21,6 +21,7 @@
  * @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:';
@@ -36,7 +37,7 @@ $lang['p_group_ns']            = 'Mitglieder der Gruppe <b class="aclgroup">%s</
 $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 das sie als Superuser konfiguriert wurden.';
+$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';
diff --git a/lib/plugins/acl/lang/es/help.txt b/lib/plugins/acl/lang/es/help.txt
index c683477a873b94e6c93bf73f8f25e582e35bf575..01f7a2e79c1d1025a4864df7a2b377c6b3ad3c47 100644
--- a/lib/plugins/acl/lang/es/help.txt
+++ b/lib/plugins/acl/lang/es/help.txt
@@ -2,7 +2,7 @@
 
 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 muiestra todos los espacios de nombres y páginas
+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.
 
diff --git a/lib/plugins/authad/auth.php b/lib/plugins/authad/auth.php
index 60c68efc4a70b96e61460c161841cf2d266658b3..6e4f85f36847779048b0cd5ca94dff6406ec7177 100644
--- a/lib/plugins/authad/auth.php
+++ b/lib/plugins/authad/auth.php
@@ -119,8 +119,8 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin {
         }
 
         // other can do's are changed in $this->_loadServerConfig() base on domain setup
-        $this->cando['modName'] = true;
-        $this->cando['modMail'] = true;
+        $this->cando['modName'] = (bool)$this->conf['update_name'];
+        $this->cando['modMail'] = (bool)$this->conf['update_mail'];
         $this->cando['getUserCount'] = true;
     }
 
diff --git a/lib/plugins/authad/conf/default.php b/lib/plugins/authad/conf/default.php
index 6fb4c9145659dc6d26112f916cb44b5a0df1f49b..f2834c808ca62aae802425aafdb88239a88302e4 100644
--- a/lib/plugins/authad/conf/default.php
+++ b/lib/plugins/authad/conf/default.php
@@ -13,3 +13,5 @@ $conf['use_tls']            = 0;
 $conf['debug']              = 0;
 $conf['expirywarn']         = 0;
 $conf['additional']         = '';
+$conf['update_name']        = 0;
+$conf['update_mail']        = 0;
diff --git a/lib/plugins/authad/conf/metadata.php b/lib/plugins/authad/conf/metadata.php
index 560d25315b8ea298740162edf3a547c8ab8467fb..25c4ab4134decacef4f19eefe7090b4f2514293f 100644
--- a/lib/plugins/authad/conf/metadata.php
+++ b/lib/plugins/authad/conf/metadata.php
@@ -13,3 +13,5 @@ $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/lib/plugins/authad/lang/cs/lang.php b/lib/plugins/authad/lang/cs/lang.php
index 85bc41f2f80f573e1b26889f8f2b23f0f073b0c8..6223868c625dcbac485a157ee20a9808ccfcbade 100644
--- a/lib/plugins/authad/lang/cs/lang.php
+++ b/lib/plugins/authad/lang/cs/lang.php
@@ -9,4 +9,5 @@
 $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/lib/plugins/authad/lang/cy/lang.php b/lib/plugins/authad/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..8cc3746f230245e310764dee03716741c1aaeb8e
--- /dev/null
+++ b/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/lib/plugins/authad/lang/cy/settings.php b/lib/plugins/authad/lang/cy/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..e343485ec5e5c1b7d4eb1708b8ef6f99b62da2c0
--- /dev/null
+++ b/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/lib/plugins/authad/lang/de/lang.php b/lib/plugins/authad/lang/de/lang.php
index 93a65667e2218aaf20d73f63e10c8d76ce7c959e..ec73ac7d7c7b847476308d1931dda181c32a64de 100644
--- a/lib/plugins/authad/lang/de/lang.php
+++ b/lib/plugins/authad/lang/de/lang.php
@@ -5,8 +5,10 @@
  * 
  * @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/lib/plugins/authad/lang/en/lang.php b/lib/plugins/authad/lang/en/lang.php
index 751aa9f47708d3e34aa00da850a8cf45dbcaffe3..3e8a9e2a698ab5176eaf544c99187fb6a7255a42 100644
--- a/lib/plugins/authad/lang/en/lang.php
+++ b/lib/plugins/authad/lang/en/lang.php
@@ -9,6 +9,7 @@
 $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/lib/plugins/authad/lang/en/settings.php b/lib/plugins/authad/lang/en/settings.php
index 92e9ac4e8182ec39f4e7795776afae4fd129ee83..9e7a7c320ab90130b39e8eb764f8aebc86417914 100644
--- a/lib/plugins/authad/lang/en/settings.php
+++ b/lib/plugins/authad/lang/en/settings.php
@@ -13,3 +13,5 @@ $lang['use_tls']            = 'Use TLS connection? If used, do not enable SSL ab
 $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/lib/plugins/authad/lang/es/lang.php b/lib/plugins/authad/lang/es/lang.php
index 0ad262c211036fda2dcb5b979876168a6bd9272f..d3d540b35df7dc21e0bbd05af93bcbddbf353ea0 100644
--- a/lib/plugins/authad/lang/es/lang.php
+++ b/lib/plugins/authad/lang/es/lang.php
@@ -6,8 +6,10 @@
  * @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/lib/plugins/authad/lang/fa/lang.php b/lib/plugins/authad/lang/fa/lang.php
index 6461423311d55ea29e7679822c79a92b924c7b76..ca1c8e807686bf30dc505e070c02306dfb856a39 100644
--- a/lib/plugins/authad/lang/fa/lang.php
+++ b/lib/plugins/authad/lang/fa/lang.php
@@ -5,6 +5,10 @@
  * 
  * @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/lib/plugins/authad/lang/fa/settings.php b/lib/plugins/authad/lang/fa/settings.php
index 161479afbe4ed6d5dc97ced8d35a97ca6a789736..fdf9479bd43c67937ebc57305c82d62f2a231d79 100644
--- a/lib/plugins/authad/lang/fa/settings.php
+++ b/lib/plugins/authad/lang/fa/settings.php
@@ -4,7 +4,21 @@
  * @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/lib/plugins/authad/lang/fr/lang.php b/lib/plugins/authad/lang/fr/lang.php
index 8b3b95b5419bb612c390237f86cc85f486e67494..1ab523ff146f67e516bce3155b8732a119f72766 100644
--- a/lib/plugins/authad/lang/fr/lang.php
+++ b/lib/plugins/authad/lang/fr/lang.php
@@ -6,8 +6,10 @@
  * @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/lib/plugins/authad/lang/he/lang.php b/lib/plugins/authad/lang/he/lang.php
index ac8fbcb5c44ed666733acd883c304d9d7cda3f91..5b193ed5f91cb6f8a9e68d5e48eeb5c28f33a8af 100644
--- a/lib/plugins/authad/lang/he/lang.php
+++ b/lib/plugins/authad/lang/he/lang.php
@@ -2,7 +2,7 @@
 
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  * @author tomer <tomercarolldergicz@gmail.com>
  * @author Menashe Tomer <menashesite@gmail.com>
  */
diff --git a/lib/plugins/authad/lang/it/lang.php b/lib/plugins/authad/lang/it/lang.php
index 5f1a03cd46feae3f32e1c9240bfcef137ece6990..a30cd7cea826aa350d77ac128da20799841e5f7d 100644
--- a/lib/plugins/authad/lang/it/lang.php
+++ b/lib/plugins/authad/lang/it/lang.php
@@ -4,5 +4,10 @@
  * @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/lib/plugins/authad/lang/it/settings.php b/lib/plugins/authad/lang/it/settings.php
index 2d68dad68750a51d3b1c26cad50222ba7a2985ce..3a92fcb7bd124046a8c1225e4bdc9ed3fcc8d65c 100644
--- a/lib/plugins/authad/lang/it/settings.php
+++ b/lib/plugins/authad/lang/it/settings.php
@@ -4,6 +4,7 @@
  * @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>';
@@ -11,6 +12,8 @@ $lang['domain_controllers']    = 'Elenco separato da virgole di Domain Controlle
 $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?';
diff --git a/lib/plugins/authad/lang/ko/lang.php b/lib/plugins/authad/lang/ko/lang.php
index 7e9b22f4068a3d28aa7e3d0e89beb998b4aaf3a5..1326f28b488c6995fea8ceeb1c534838a8fb2085 100644
--- a/lib/plugins/authad/lang/ko/lang.php
+++ b/lib/plugins/authad/lang/ko/lang.php
@@ -4,8 +4,10 @@
  * @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/lib/plugins/authad/lang/nl/lang.php b/lib/plugins/authad/lang/nl/lang.php
index 341a4036ebb908f6c0d130d9c3078b904b97f9fc..4e873201f765a8bcbe0a7fe8d0acbe513b70fa30 100644
--- a/lib/plugins/authad/lang/nl/lang.php
+++ b/lib/plugins/authad/lang/nl/lang.php
@@ -6,8 +6,10 @@
  * @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/lib/plugins/authad/lang/pt-br/lang.php b/lib/plugins/authad/lang/pt-br/lang.php
index 16fc39638c49271abf20ae938cd5946193c5e049..ddcfaa875ea36d994858243c0f445fd8a1a9f4a8 100644
--- a/lib/plugins/authad/lang/pt-br/lang.php
+++ b/lib/plugins/authad/lang/pt-br/lang.php
@@ -5,8 +5,10 @@
  * 
  * @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/lib/plugins/authad/lang/ru/lang.php b/lib/plugins/authad/lang/ru/lang.php
index fe56be2bffa77f690372f60db7b583b3cd67c9fb..ebce005c0fbb5d99e3f9e740ffd72fa7cfc337a8 100644
--- a/lib/plugins/authad/lang/ru/lang.php
+++ b/lib/plugins/authad/lang/ru/lang.php
@@ -5,8 +5,10 @@
  * 
  * @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']           = 'Невозможно соединиться с сервером AD.';
diff --git a/lib/plugins/authad/lang/ru/settings.php b/lib/plugins/authad/lang/ru/settings.php
index c791bd791fea2b94b64363ac3d364574690c5a0f..d9cf1fd690c69a1cf2aae2086bb51b8e01f45406 100644
--- a/lib/plugins/authad/lang/ru/settings.php
+++ b/lib/plugins/authad/lang/ru/settings.php
@@ -14,7 +14,7 @@
  */
 $lang['account_suffix']        = 'Суффикс вашего аккаунта. Например, <code>@my.domain.org</code>';
 $lang['base_dn']               = 'Ваш базовый DN. Например: <code>DC=my,DC=domain,DC=org</code>';
-$lang['domain_controllers']    = 'Список DNS-серверов, разделенных запятой. Например:<code>srv1.domain.org,srv2.domain.org</code>';
+$lang['domain_controllers']    = 'Список DNS-серверов, разделённых запятой. Например:<code>srv1.domain.org,srv2.domain.org</code>';
 $lang['admin_username']        = 'Привилегированный пользователь Active Directory с доступом ко всем остальным пользовательским данным. Необязательно, однако необходимо для определённых действий вроде отправки почтовой подписки.';
 $lang['admin_password']        = 'Пароль для указанного пользователя.';
 $lang['sso']                   = 'Использовать SSO (Single-Sign-On) через Kerberos или NTLM?';
diff --git a/lib/plugins/authad/lang/zh/lang.php b/lib/plugins/authad/lang/zh/lang.php
index df1a7a7f7717e12c1700866f108f4fb1f3f39b19..30d504515a65491de9130ee896446d62132378d7 100644
--- a/lib/plugins/authad/lang/zh/lang.php
+++ b/lib/plugins/authad/lang/zh/lang.php
@@ -9,4 +9,5 @@
 $lang['domain']                = '登录域';
 $lang['authpwdexpire']         = '您的密码将在 %d 天内过期,请尽快更改';
 $lang['passchangefail']        = '密码更改失败。是不是密码规则不符合?';
+$lang['userchangefail']        = '更改用户属性失败。或许您的帐号没有做此更改的权限?';
 $lang['connectfail']           = '无法连接到Active Directory服务器。';
diff --git a/lib/plugins/authldap/auth.php b/lib/plugins/authldap/auth.php
index 247a0fec20328438d2319a0ab684edd5da92e91b..90ec770e9dc0d50e65155f0f61dd32a7964d1b8d 100644
--- a/lib/plugins/authldap/auth.php
+++ b/lib/plugins/authldap/auth.php
@@ -463,9 +463,12 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
      * @return string
      */
     protected function _filterEscape($string) {
-        return preg_replace(
-            '/([\x00-\x1F\*\(\)\\\\])/e',
-            '"\\\\\".join("",unpack("H2","$1"))',
+        // see https://github.com/adldap/adLDAP/issues/22
+        return preg_replace_callback(
+            '/([\x00-\x1F\*\(\)\\\\])/',
+            function ($matches) {
+                return "\\".join("", unpack("H2", $matches[1]));
+            },
             $string
         );
     }
@@ -479,6 +482,10 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
     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');
@@ -555,6 +562,7 @@ class auth_plugin_authldap extends DokuWiki_Auth_Plugin {
 
         if(!$bound) {
             msg("LDAP: couldn't connect to LDAP server", -1);
+            $this->_debug(ldap_error($this->con), 0, __LINE__, __FILE__);
             return false;
         }
 
diff --git a/lib/plugins/authldap/lang/cy/lang.php b/lib/plugins/authldap/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..f6c5cf6bdfbc4d4d73695d0b68ab841b3329553b
--- /dev/null
+++ b/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/lib/plugins/authldap/lang/cy/settings.php b/lib/plugins/authldap/lang/cy/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..91c9bfdee0f9078580e9e75226da24637b82bffe
--- /dev/null
+++ b/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/lib/plugins/authldap/lang/fa/lang.php b/lib/plugins/authldap/lang/fa/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..fdf4f6da982190c75114bae02e5543bbed4177aa
--- /dev/null
+++ b/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/lib/plugins/authldap/lang/fa/settings.php b/lib/plugins/authldap/lang/fa/settings.php
index 49d485afdd6346014cf493d951f50210a9fadce2..72eccb0ef40a45483eb557da4ce8cd98eea1bab7 100644
--- a/lib/plugins/authldap/lang/fa/settings.php
+++ b/lib/plugins/authldap/lang/fa/settings.php
@@ -5,6 +5,32 @@
  * 
  * @author Mohammad Sadegh <msdn2013@gmail.com>
  * @author Omid Hezaveh <hezpublic@gmail.com>
+ * @author Mohmmad Razavi <sepent@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
  */
+$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/lib/plugins/authldap/lang/it/lang.php b/lib/plugins/authldap/lang/it/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..9832e9319764ef99ea7322d3e76e779ac9a1d6be
--- /dev/null
+++ b/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/lib/plugins/authldap/lang/it/settings.php b/lib/plugins/authldap/lang/it/settings.php
index 858c694b824373b8b30bd27af52048cbe405081b..58bf497ed17c4394b57b6d9e8ffdfa8a364abffd 100644
--- a/lib/plugins/authldap/lang/it/settings.php
+++ b/lib/plugins/authldap/lang/it/settings.php
@@ -6,6 +6,7 @@
  * @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.';
@@ -15,11 +16,20 @@ $lang['userfilter']            = 'Filtro per cercare l\'account utente LDAP. Eg.
 $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/lib/plugins/authldap/lang/ru/settings.php b/lib/plugins/authldap/lang/ru/settings.php
index 067ec9de4a22fd897a456b891747c45f070e4e35..0b6ad4abd23f0ea35c0a214bd9140e2a27933450 100644
--- a/lib/plugins/authldap/lang/ru/settings.php
+++ b/lib/plugins/authldap/lang/ru/settings.php
@@ -19,15 +19,15 @@ $lang['userfilter']            = 'LDAP-фильтр для поиска акка
 $lang['groupfilter']           = 'LDAP-фильтр для поиска групп. Например: <code>(&amp;(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))</code>';
 $lang['version']               = 'Версия протокола. Возможно, вам нужно указать <code>3</code>';
 $lang['starttls']              = 'Использовать TLS-подключения?';
-$lang['referrals']             = 'Следовать за referrals ?';
+$lang['referrals']             = 'Следовать за referrals?';
 $lang['deref']                 = 'Как расшифровывать псевдонимы?';
-$lang['binddn']                = 'DN вторичного bind пользователя, если anonymous bind недостаточно. Например: <code>cn=admin, dc=my, dc=home</code>';
+$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 пароль быть поменян через dokuwiki?';
+$lang['modPass']               = 'Может ли пароль LDAP быть изменён через «Докувики»?';
 $lang['debug']                 = 'Показывать дополнительную отладочную информацию при ошибках';
 $lang['deref_o_0']             = 'LDAP_DEREF_NEVER';
 $lang['deref_o_1']             = 'LDAP_DEREF_SEARCHING';
@@ -35,4 +35,4 @@ $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';
+$lang['referrals_o_1']         = 'следовать за referrals';
diff --git a/lib/plugins/authldap/lang/zh-tw/settings.php b/lib/plugins/authldap/lang/zh-tw/settings.php
index dcbbace8cad584baee9cdad5b49aaa5f22ab8970..cb0bb71a43a10b4cb5d3c86572bf13875a0bf41e 100644
--- a/lib/plugins/authldap/lang/zh-tw/settings.php
+++ b/lib/plugins/authldap/lang/zh-tw/settings.php
@@ -2,7 +2,7 @@
 
 /**
  * @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>)';
diff --git a/lib/plugins/authmysql/lang/cy/lang.php b/lib/plugins/authmysql/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..a96715c12a1ca1fbdaac14af5c43d753803fba30
--- /dev/null
+++ b/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/lib/plugins/authmysql/lang/cy/settings.php b/lib/plugins/authmysql/lang/cy/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..526cffa6151d74958b13d8f7793a5a2dfb5c1d71
--- /dev/null
+++ b/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/lib/plugins/authmysql/lang/fa/lang.php b/lib/plugins/authmysql/lang/fa/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..c73c053b16529e773bff09b55abfe6984e0310f8
--- /dev/null
+++ b/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/lib/plugins/authmysql/lang/fa/settings.php b/lib/plugins/authmysql/lang/fa/settings.php
index 68ad5ce8374104adaf90a3a769fc92d545f686f3..bca4bbf07dc6cc824eaf9620f0deac151184fe4f 100644
--- a/lib/plugins/authmysql/lang/fa/settings.php
+++ b/lib/plugins/authmysql/lang/fa/settings.php
@@ -4,7 +4,40 @@
  * @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/lib/plugins/authmysql/lang/it/lang.php b/lib/plugins/authmysql/lang/it/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..5b1ae0a00d3b19af16aa76012ff188c69515ed14
--- /dev/null
+++ b/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/lib/plugins/authmysql/lang/it/settings.php b/lib/plugins/authmysql/lang/it/settings.php
index 9dc1a01575c95a016671ba1fe5401ce8f3632fc4..1e93077000bb9ef9c89dbc72c1e3efe1cc27c5a6 100644
--- a/lib/plugins/authmysql/lang/it/settings.php
+++ b/lib/plugins/authmysql/lang/it/settings.php
@@ -7,19 +7,25 @@
  * @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']           = 'Istruzione SQL per per filtrare gli utenti in funzione del "login name"';
-$lang['FilterGroup']           = 'Clausola SQL per filtrare gli utenti in base all\'appartenenza al gruppo';
-$lang['SortOrder']             = 'Istruzione SQL per ordinare 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';
@@ -28,10 +34,11 @@ $lang['getUserID']             = 'Istruzione SQL per recuperare la primary key d
 $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']           = 'Clausola per aggiornare il "login name" dell\'utente';
-$lang['UpdatePass']            = 'Clausola per aggiornare la password utente';
-$lang['UpdateEmail']           = 'Clausola per aggiornare l\'email utente';
-$lang['UpdateName']            = 'Clausola per aggiornare il nome completo';
+$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';
diff --git a/lib/plugins/authmysql/lang/ru/lang.php b/lib/plugins/authmysql/lang/ru/lang.php
index 75b5613f58e2fac009ffa3c700cd0c2c74b03ab5..e2160c375f9cc0e223e779ea4d12129741b150a8 100644
--- a/lib/plugins/authmysql/lang/ru/lang.php
+++ b/lib/plugins/authmysql/lang/ru/lang.php
@@ -4,8 +4,9 @@
  * @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']             = 'Невозможно изменить данные пользователя. Сообщите об этом администратору Вики.';
+$lang['writefail']             = 'Невозможно изменить данные пользователя. Сообщите об этом администратору вики.';
diff --git a/lib/plugins/authmysql/lang/sk/lang.php b/lib/plugins/authmysql/lang/sk/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..d143bbf2c7071014639cba2e0266b1d98de73f31
--- /dev/null
+++ b/lib/plugins/authmysql/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/lib/plugins/authpgsql/lang/cy/settings.php b/lib/plugins/authpgsql/lang/cy/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c32ad7b2f145988e549394012d1c708680655de
--- /dev/null
+++ b/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/lib/plugins/authpgsql/lang/fa/settings.php b/lib/plugins/authpgsql/lang/fa/settings.php
index 8134939674937ca62b6b6f4ae199add8dbc76b19..5afe8118217fbe147a927da94283156f3d3bfc12 100644
--- a/lib/plugins/authpgsql/lang/fa/settings.php
+++ b/lib/plugins/authpgsql/lang/fa/settings.php
@@ -4,5 +4,37 @@
  * @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/lib/plugins/authpgsql/lang/it/settings.php b/lib/plugins/authpgsql/lang/it/settings.php
index bc326b34fd9002b173da2c2ab541e01a4ff13023..e786f2f2d007c9b516a06ce416a02cd147e44e1a 100644
--- a/lib/plugins/authpgsql/lang/it/settings.php
+++ b/lib/plugins/authpgsql/lang/it/settings.php
@@ -13,4 +13,28 @@ $lang['user']                  = 'Lo username PostgreSQL';
 $lang['password']              = 'Password dell\'utente summenzionato';
 $lang['database']              = 'Database da usare';
 $lang['debug']                 = 'Visualizza informazioni addizionali di debug';
-$lang['getUsers']              = 'Dichiarazione SQL per elencare tutti gli utenti';
+$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/lib/plugins/authplain/lang/cy/lang.php b/lib/plugins/authplain/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..7f789e5291008112af69f7133e05fd99a6eba5b2
--- /dev/null
+++ b/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/lib/plugins/authplain/lang/fa/lang.php b/lib/plugins/authplain/lang/fa/lang.php
index 49083ad60bb7d242b8b0b29922f11edb37a9cd03..c222927dbdeb551a8e10ff6937fb1c32ff0aeba9 100644
--- a/lib/plugins/authplain/lang/fa/lang.php
+++ b/lib/plugins/authplain/lang/fa/lang.php
@@ -1,6 +1,10 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
  */
-$lang['userexists']     = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
+$lang['userexists']            = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
+$lang['usernotexists']         = 'متاسفانه این کاربر وجود ندارد.';
+$lang['writefail']             = 'امکان ویرایش اطلاعات کاربر وجود ندارد. لطفا ادمین ویکی را مطلع نمایید.';
diff --git a/lib/plugins/authplain/lang/he/lang.php b/lib/plugins/authplain/lang/he/lang.php
index 01d877b62ea89b58493e17d287cc12490cf5e6ea..160968edd26c10446374f8cb35a78617a3a440b2 100644
--- a/lib/plugins/authplain/lang/he/lang.php
+++ b/lib/plugins/authplain/lang/he/lang.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  */
-$lang['userexists']     = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
+$lang['userexists']            = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
diff --git a/lib/plugins/authplain/lang/it/lang.php b/lib/plugins/authplain/lang/it/lang.php
index 716041ffb8a99c2d69715d672df2db385b9dfd11..59c8c30764198b7e1595490b998281297c3c64a1 100644
--- a/lib/plugins/authplain/lang/it/lang.php
+++ b/lib/plugins/authplain/lang/it/lang.php
@@ -1,6 +1,10 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
+ * @author Torpedo <dgtorpedo@gmail.com>
  */
-$lang['userexists']     = 'Il nome utente inserito esiste già.';
+$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';
diff --git a/lib/plugins/authplain/lang/ru/lang.php b/lib/plugins/authplain/lang/ru/lang.php
index c36d5b444782659c69392b46f964b003907f2972..a53a57b40bbdb9ee2b1ba86e3b5ff36da5d21a08 100644
--- a/lib/plugins/authplain/lang/ru/lang.php
+++ b/lib/plugins/authplain/lang/ru/lang.php
@@ -4,7 +4,8 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * 
  * @author RainbowSpike <1@2.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
  */
 $lang['userexists']            = 'Извините, пользователь с таким логином уже существует.';
-$lang['usernotexists']         = 'Этот пользователь незарегистрирован.';
+$lang['usernotexists']         = 'Этот пользователь не зарегистрирован.';
 $lang['writefail']             = 'Невозможно обновить данные пользователя. Свяжитесь с администратором вики';
diff --git a/lib/plugins/authplain/lang/sk/lang.php b/lib/plugins/authplain/lang/sk/lang.php
index 5153fc1c91b6d11ec08ef5b553617f13e7270436..46ce389f3d38f5534f5a3d3ca5671cd3c9e6696f 100644
--- a/lib/plugins/authplain/lang/sk/lang.php
+++ b/lib/plugins/authplain/lang/sk/lang.php
@@ -1,6 +1,9 @@
 <?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['userexists']            = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
+$lang['writefail']             = 'Nie je možné zmeniť údaje používateľa, informujte prosím administrátora Wiki.';
diff --git a/lib/plugins/authplain/lang/th/lang.php b/lib/plugins/authplain/lang/th/lang.php
index c7aaf68dd8fff3d4e88c7589f921c0a062a22960..463a2799296a1e466e78046ef86fa924ddc1d5c6 100644
--- a/lib/plugins/authplain/lang/th/lang.php
+++ b/lib/plugins/authplain/lang/th/lang.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  */
-$lang['userexists']     = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
+$lang['userexists']            = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
diff --git a/lib/plugins/authplain/lang/uk/lang.php b/lib/plugins/authplain/lang/uk/lang.php
index d8f0a32b2e1d0c14fd9bc86c8a60ec5abd6eb5f6..8a796870facee443e46266b50ea9ccc35402c110 100644
--- a/lib/plugins/authplain/lang/uk/lang.php
+++ b/lib/plugins/authplain/lang/uk/lang.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  */
-$lang['userexists']     = 'Користувач з таким іменем вже існує.';
+$lang['userexists']            = 'Користувач з таким іменем вже існує.';
diff --git a/lib/plugins/authplain/lang/zh-tw/lang.php b/lib/plugins/authplain/lang/zh-tw/lang.php
index 8a5d290e5946b405c9153c4c8918e1ba284c3dab..39578f52da79cc9f99a53b39d741164a760e686e 100644
--- a/lib/plugins/authplain/lang/zh-tw/lang.php
+++ b/lib/plugins/authplain/lang/zh-tw/lang.php
@@ -1,6 +1,7 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  */
-$lang['userexists']     = '很抱歉,有人已使用了這個帳號。';
+$lang['userexists']            = '很抱歉,有人已使用了這個帳號。';
diff --git a/lib/plugins/config/lang/cs/lang.php b/lib/plugins/config/lang/cs/lang.php
index d7a7362aedd187620c7aae9dc08594882fa03e84..05d2d52f740872bd24f4394eac215d291737dd52 100644
--- a/lib/plugins/config/lang/cs/lang.php
+++ b/lib/plugins/config/lang/cs/lang.php
@@ -204,6 +204,7 @@ $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';
diff --git a/lib/plugins/config/lang/cy/intro.txt b/lib/plugins/config/lang/cy/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..02ccec5860d63e9b62e4313277e84a00b7622c49
--- /dev/null
+++ b/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/lib/plugins/config/lang/cy/lang.php b/lib/plugins/config/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..54f3b4cebe52178ae48d8738a3273280f095fc40
--- /dev/null
+++ b/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://www.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. \'Dyw\'r dechneg hon ddim yn gweithio mewn IE 7 ac is! 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/lib/plugins/config/lang/fa/lang.php b/lib/plugins/config/lang/fa/lang.php
index dd97f716e7e0ac3afd96b2b7ea80a465233c8298..00b60f062b9e7b6e5d018576d8c3cfb2ffc9dca4 100644
--- a/lib/plugins/config/lang/fa/lang.php
+++ b/lib/plugins/config/lang/fa/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Persian language file
- *
+ * @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
@@ -9,6 +10,8 @@
  * @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>
  */
 $lang['menu']                  = 'تنظیمات پیکر‌بندی';
 $lang['error']                 = 'به دلیل ایراد در مقادیر وارد شده، تنظیمات اعمال نشد، خواهشمندیم تغییرات را مجددن کنترل نمایید و دوباره ارسال کنید.<br/> مقادیر مشکل‌دار با کادر قرمز مشخص شده‌اند.';
@@ -82,7 +85,9 @@ $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 یا سایر مکانیزم ها دسترسی داشته باشند.';
@@ -188,6 +193,7 @@ $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']        = 'هرگز';
diff --git a/lib/plugins/config/lang/fr/lang.php b/lib/plugins/config/lang/fr/lang.php
index 69e58f7318faa03463761fc93c8829db010abfc2..88f78f4252e9aac21a7bfa4a491d7a9b2e5f3d7d 100644
--- a/lib/plugins/config/lang/fr/lang.php
+++ b/lib/plugins/config/lang/fr/lang.php
@@ -6,17 +6,16 @@
  * @author Guy Brand <gb@unistra.fr>
  * @author Delassaux Julien <julien@delassaux.fr>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author stephane.gully@gmail.com
+ * @author <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 Samuel Dorsaz <samuel.dorsaz@novelion.net>
  * @author Johan Guilbaud <guilbaud.johan@gmail.com>
- * @author schplurtz@laposte.net
- * @author skimpax@gmail.com
+ * @author <skimpax@gmail.com>
  * @author Yannick Aure <yannick.aure@gmail.com>
  * @author Olivier DUVAL <zorky00@gmail.com>
  * @author Anael Mobilia <contrib@anael.eu>
@@ -24,6 +23,8 @@
  * @author Carbain Frédéric <fcarbain@yahoo.fr>
  * @author Nicolas Friedli <nicolas@theologique.ch>
  * @author Floriang <antispam@floriang.eu>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ * @author Simon DELAGE <simon.geekitude@gmail.com>
  */
 $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.';
@@ -36,7 +37,7 @@ $lang['security']              = 'Avertissement de sécurité : modifier cette o
 $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 des modèles';
+$lang['_header_template']      = 'Paramètres du modèle';
 $lang['_header_undefined']     = 'Paramètres indéfinis';
 $lang['_basic']                = 'Paramètres de base';
 $lang['_display']              = 'Paramètres d\'affichage';
diff --git a/lib/plugins/config/lang/he/lang.php b/lib/plugins/config/lang/he/lang.php
index bddfd90afb6bdf6dcc4c3fb9a9a972764bb116b5..416d775d00c0dddeacfa2c19fe172c16b3fe8850 100644
--- a/lib/plugins/config/lang/he/lang.php
+++ b/lib/plugins/config/lang/he/lang.php
@@ -1,13 +1,14 @@
 <?php
+
 /**
- * hebrew language file
- *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author DoK <kamberd@yahoo.com>
  * @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>
+ * @author sagi <sagiyosef@gmail.com>
  */
 $lang['menu']                  = 'הגדרות תצורה';
 $lang['error']                 = 'ההגדרות לא עודכנו בגלל ערך לא תקף, נא לעיין בשינויים ולשלוח שנית.
@@ -33,22 +34,22 @@ $lang['_network']              = 'הגדרות רשת';
 $lang['_msg_setting_undefined'] = 'אין מידע-על להגדרה.';
 $lang['_msg_setting_no_class'] = 'אין קבוצה להגדרה.';
 $lang['_msg_setting_no_default'] = 'אין ערך ברירת מחדל.';
-$lang['fmode']                 = 'מצב יצירת קובץ';
-$lang['dmode']                 = 'מצב יצירת ספריה';
+$lang['title']                 = 'כותרת הויקי';
+$lang['start']                 = 'שם דף הפתיחה';
 $lang['lang']                  = 'שפה';
+$lang['template']              = 'תבנית';
+$lang['savedir']               = 'ספריה לשמירת מידע';
 $lang['basedir']               = 'ספרית בסיס';
 $lang['baseurl']               = 'כתובת URL בסיסית';
-$lang['savedir']               = 'ספריה לשמירת מידע';
-$lang['start']                 = 'שם דף הפתיחה';
-$lang['title']                 = 'כותרת הויקי';
-$lang['template']              = 'תבנית';
-$lang['fullpath']              = 'הצגת נתיב מלא לדפים בתחתית';
+$lang['dmode']                 = 'מצב יצירת ספריה';
+$lang['fmode']                 = 'מצב יצירת קובץ';
+$lang['allowdebug']            = 'אפשר דיבוג <b>יש לבטל אם אין צורך!</b>';
 $lang['recent']                = 'שינויים אחרונים';
+$lang['recent_days']           = 'כמה שינויים אחרונים לשמור (ימים)';
 $lang['breadcrumbs']           = 'מספר עקבות להיסטוריה';
 $lang['youarehere']            = 'עקבות היררכיות להיסטוריה';
+$lang['fullpath']              = 'הצגת נתיב מלא לדפים בתחתית';
 $lang['typography']            = 'שימוש בחלופות טיפוגרפיות';
-$lang['htmlok']                = 'אישור שיבוץ HTML';
-$lang['phpok']                 = 'אישור שיבוץ PHP';
 $lang['dformat']               = 'תסדיר תאריך (נא לפנות לפונקציה <a href="http://www.php.net/strftime">strftime</a> של PHP)';
 $lang['signature']             = 'חתימה';
 $lang['toptoclevel']           = 'רמה עליונה בתוכן הענינים';
@@ -57,13 +58,8 @@ $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']          = 'בדוק את הדפים המועלים לחשד ל-JavaScript או קוד HTML זדוני';
+$lang['sneaky_index']          = 'כברירת מחדל, דוקוויקי יציג את כל מרחבי השמות בתצוגת תוכן הענינים. בחירה באפשרות זאת תסתיר את אלו שבהם למשתמש אין הרשאות קריאה. התוצאה עלולה להיות הסתרת תת מרחבי שמות אליהם יש למשתמש גישה. באופן זה תוכן הענינים עלול להפוך לחסר תועלת עם הגדרות ACL מסוימות';
+$lang['hidepages']             = 'הסתר דפים תואמים (ביטויים רגולריים)';
 $lang['useacl']                = 'השתמש ברשימות בקרת גישה';
 $lang['autopasswd']            = 'צור סיסמאות באופן אוטומטי';
 $lang['authtype']              = 'מנוע הזדהות';
@@ -77,47 +73,52 @@ $lang['disableactions_check']  = 'בדיקה';
 $lang['disableactions_subscription'] = 'הרשמה/הסרה מרשימה';
 $lang['disableactions_wikicode'] = 'הצגת המקור/יצוא גולמי';
 $lang['disableactions_other']  = 'פעולות אחרות (מופרדות בפסיק)';
-$lang['sneaky_index']          = 'כברירת מחדל, דוקוויקי יציג את כל מרחבי השמות בתצוגת תוכן הענינים. בחירה באפשרות זאת תסתיר את אלו שבהם למשתמש אין הרשאות קריאה. התוצאה עלולה להיות הסתרת תת מרחבי שמות אליהם יש למשתמש גישה. באופן זה תוכן הענינים עלול להפוך לחסר תועלת עם הגדרות ACL מסוימות';
 $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['usedraft']              = 'שמור טיוטות באופן אוטומטי בעת עריכה';
 $lang['sepchar']               = 'מפריד בין מילות שם-דף';
 $lang['canonical']             = 'השתמש בכתובות URL מלאות';
 $lang['autoplural']            = 'בדוק לצורת רבים בקישורים';
 $lang['compression']           = 'אופן דחיסת קבצים ב-attic';
-$lang['cachetime']             = 'גיל מירבי לזכרון מטמון (שניות)';
-$lang['locktime']              = 'גיל מירבי לקבצי נעילה (שניות)';
-$lang['fetchsize']             = 'גודל הקובץ המירבי (bytes) ש-fetch.php יכול להוריד מבחוץ';
-$lang['notify']                = 'שלח התראות על שינויים לכתובת דוא"ל זו';
-$lang['registernotify']        = 'שלח מידע על משתמשים רשומים חדשים לכתובת דוא"ל זו';
-$lang['mailfrom']              = 'כתובת הדוא"ל לשימוש בדברי דוא"ל אוטומטיים';
 $lang['gzip_output']           = 'השתמש בקידוד תוכן של gzip עבור xhtml';
-$lang['gdlib']                 = 'גרסת ספרית ה-GD';
-$lang['im_convert']            = 'נתיב לכלי ה-convert של ImageMagick';
-$lang['jpg_quality']           = 'איכות הדחיסה של JPG (0-100)';
-$lang['subscribers']           = 'התר תמיכה ברישום לדפים';
 $lang['compress']              = 'פלט קומפקטי של CSS ו-javascript';
-$lang['hidepages']             = 'הסתר דפים תואמים (ביטויים רגולריים)';
 $lang['send404']               = 'שלח "HTTP 404/Page Not Found" עבור דפים שאינם קיימים';
-$lang['sitemap']               = 'צור מפת אתר של Google (ימים)';
 $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['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']         = 'שם השרת המתווך';
 $lang['proxy____port']         = 'שער השרת המתווך';
 $lang['proxy____user']         = 'שם המשתמש בשרת המתווך';
diff --git a/lib/plugins/config/lang/it/lang.php b/lib/plugins/config/lang/it/lang.php
index 7a831c8ded2aa1e50d02f83851f5c6874de3c790..1e371613c330bc39233e8c5e9dfd4f2c6d41d93f 100644
--- a/lib/plugins/config/lang/it/lang.php
+++ b/lib/plugins/config/lang/it/lang.php
@@ -1,8 +1,8 @@
 <?php
+
 /**
- * Italian language file
- *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Christopher Smith <chris@jalakai.co.uk>
  * @author Silvia Sargentoni <polinnia@tin.it>
  * @author Pietro Battiston toobaz@email.it
@@ -15,6 +15,7 @@
  * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  * @author Matteo Pasotti <matteo@xquiet.eu>
  * @author snarchio@gmail.com
+ * @author Torpedo <dgtorpedo@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.
@@ -90,7 +91,9 @@ $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.';
@@ -195,6 +198,7 @@ $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';
diff --git a/lib/plugins/config/lang/ko/lang.php b/lib/plugins/config/lang/ko/lang.php
index 420946f84c41fa08993584bb80e823f1e863621a..9793595267ac9e17f61b37672895b0893361ff5f 100644
--- a/lib/plugins/config/lang/ko/lang.php
+++ b/lib/plugins/config/lang/ko/lang.php
@@ -9,6 +9,7 @@
  * @author Seung-Chul Yoo <dryoo@live.com>
  * @author erial2@gmail.com
  * @author Myeongjin <aranet100@gmail.com>
+ * @author Erial <erial2@gmail.com>
  */
 $lang['menu']                  = '환경 설정';
 $lang['error']                 = '잘못된 값 때문에 설정을 바꿀 수 없습니다, 바뀜을 검토하고 다시 제출하세요.
diff --git a/lib/plugins/config/lang/pt-br/lang.php b/lib/plugins/config/lang/pt-br/lang.php
index 625dc6a25fa062901ca77294302dfa38a18e71cf..abda9640ec7d90a5b551777a719df8455394c902 100644
--- a/lib/plugins/config/lang/pt-br/lang.php
+++ b/lib/plugins/config/lang/pt-br/lang.php
@@ -18,6 +18,7 @@
  * @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>
  */
 $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.';
diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php
index c953492654f672acb8c9fdfc857346a652f1ad28..509ccc6a78cd9073541ed88486879309f30a027d 100644
--- a/lib/plugins/config/lang/pt/lang.php
+++ b/lib/plugins/config/lang/pt/lang.php
@@ -9,6 +9,7 @@
  * @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>
  */
 $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.';
@@ -32,6 +33,7 @@ $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.';
@@ -81,6 +83,7 @@ $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)';
@@ -98,6 +101,7 @@ $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';
diff --git a/lib/plugins/config/lang/ru/intro.txt b/lib/plugins/config/lang/ru/intro.txt
index f30d4c79178644b2184c349f8c6b153698fbba0e..01cf19063721b0744ae6aeaf62c60956bb3bc158 100644
--- a/lib/plugins/config/lang/ru/intro.txt
+++ b/lib/plugins/config/lang/ru/intro.txt
@@ -1,7 +1,7 @@
 ====== Настройки вики ======
 
-Здесь вы можете изменить настройки своей «ДокуВики». Для справки по поводу конкретных опций смотрите [[doku>config]]. Дополнительные детали об этом плагине доступны здесь: [[doku>plugin:config]].
+Здесь вы можете изменить настройки своей «Докувики». Для справки по поводу конкретных опций смотрите [[doku>config|Конфигурирование «Докувики»]]. Дополнительные детали об этом плагине доступны здесь: [[doku>plugin:config]].
 
-Настройки, отображаемые на светло-красном фоне, защищены от изменений и не могут быть отредактированы с помощью этого плагина.  Голубым фоном отмечены настройки со значениями по умолчанию, а белым фоном — настройки, которые были локально изменены для этой конкретной «ДокуВики». Как голубые, так и белые настройки доступны для изменения.
+Настройки, отображаемые на светло-красном фоне, защищены от изменений и не могут быть отредактированы с помощью этого плагина.  Голубым фоном отмечены настройки со значениями по умолчанию, а белым фоном — настройки, которые были локально изменены для этой конкретной «Докувики». Как голубые, так и белые настройки доступны для изменения.
 
 Не забудьте нажать кнопку «**Сохранить**» перед тем, как покинуть эту страницу, иначе все ваши изменения будут потеряны.
diff --git a/lib/plugins/config/lang/ru/lang.php b/lib/plugins/config/lang/ru/lang.php
index 57e0602f7687fccff533ad9e6334ad3a609061fa..0bc6d8f752f23e2f777a76b75cfbbacf5408b9b5 100644
--- a/lib/plugins/config/lang/ru/lang.php
+++ b/lib/plugins/config/lang/ru/lang.php
@@ -19,6 +19,7 @@
  * @author Johnny Utah <pcpa@cyberpunk.su>
  * @author Ivan I. Udovichenko (sendtome@mymailbox.pp.ua)
  * @author RainbowSpike <1@2.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
  */
 $lang['menu']                  = 'Настройки вики';
 $lang['error']                 = 'Настройки не были сохранены из-за ошибки в одном из значений. Пожалуйста, проверьте свои изменения и попробуйте ещё раз.<br />Неправильные значения будут обведены красной рамкой.';
@@ -29,7 +30,7 @@ $lang['danger']                = 'Внимание: изменение этой
 $lang['warning']               = 'Предостережение: изменение этой опции может вызвать непредсказуемое поведение.';
 $lang['security']              = 'Предостережение по безопасности: изменение этой опции может вызвать риск, связанный с безопасностью.';
 $lang['_configuration_manager'] = 'Настройки вики';
-$lang['_header_dokuwiki']      = 'Параметры «ДокуВики»';
+$lang['_header_dokuwiki']      = 'Параметры «Докувики»';
 $lang['_header_plugin']        = 'Параметры плагинов';
 $lang['_header_template']      = 'Параметры шаблонов';
 $lang['_header_undefined']     = 'Прочие параметры';
@@ -52,7 +53,7 @@ $lang['start']                 = 'Имя стартовой страницы';
 $lang['lang']                  = 'Язык';
 $lang['template']              = 'Шаблон';
 $lang['tagline']               = 'Слоган (если поддерживается шаблоном)';
-$lang['sidebar']               = 'Боковая панель, пустое поле отключает боковую панель.';
+$lang['sidebar']               = 'Боковая панель; пустое поле отключает боковую панель.';
 $lang['license']               = 'На условиях какой лицензии будет предоставляться содержимое вики?';
 $lang['savedir']               = 'Директория для данных';
 $lang['basedir']               = 'Корневая директория (например, <code>/dokuwiki/</code>). Оставьте пустым для автоопределения.';
@@ -60,14 +61,14 @@ $lang['baseurl']               = 'Корневой адрес (URL) (напри
 $lang['cookiedir']             = 'Cookie директория. Оставьте пустым для автоопределения.';
 $lang['dmode']                 = 'Права для создаваемых директорий';
 $lang['fmode']                 = 'Права для создаваемых файлов';
-$lang['allowdebug']            = 'Включить отладку (отключите!)';
+$lang['allowdebug']            = 'Включить отладку. <b>Отключите, если она вам не нужна!</b>';
 $lang['recent']                = 'Недавние изменения (кол-во)';
 $lang['recent_days']           = 'На сколько дней назад сохранять недавние изменения';
-$lang['breadcrumbs']           = 'Вы посетили (кол-во)';
+$lang['breadcrumbs']           = 'Вы посетили (кол-во). Поставьте 0 (ноль) для отключения.';
 $lang['youarehere']            = 'Показывать «Вы находитесь здесь»';
 $lang['fullpath']              = 'Полный путь к документу';
 $lang['typography']            = 'Типографские символы';
-$lang['dformat']               = 'Формат даты и времени';
+$lang['dformat']               = 'Формат даты и времени (см. функцию PHP <a href="http://www.php.net/strftime">strftime</a>)';
 $lang['signature']             = 'Шаблон подписи';
 $lang['showuseras']            = 'Что отображать при показе пользователя, редактировавшего страницу последним';
 $lang['toptoclevel']           = 'Мин. уровень в содержании';
@@ -76,32 +77,32 @@ $lang['maxtoclevel']           = 'Макс. уровень в содержани
 $lang['maxseclevel']           = 'Макс. уровень для правки';
 $lang['camelcase']             = 'Использовать ВикиРегистр для ссылок';
 $lang['deaccent']              = 'Транслитерация в именах страниц';
-$lang['useheading']            = 'Первый заголовок вместо имени';
-$lang['sneaky_index']          = 'По умолчанию, «ДокуВики» показывает в индексе страниц все пространства имён. Включение этой опции скроет пространства имён, для которых пользователь не имеет прав чтения. Это может привести к скрытию доступных вложенных пространств имён и потере функциональности индекса страниц при некоторых конфигурациях прав доступа.';
-$lang['hidepages']             = 'Скрыть страницы (рег. выражение)';
+$lang['useheading']            = 'Первый заголовок вместо имени страницы';
+$lang['sneaky_index']          = 'По умолчанию, «Докувики» показывает в индексе страниц все пространства имён. Включение этой опции скроет пространства имён, для которых пользователь не имеет прав чтения. Это может привести к скрытию доступных вложенных пространств имён и потере функциональности индекса страниц при некоторых конфигурациях прав доступа.';
+$lang['hidepages']             = 'Скрыть страницы (регулярное выражение)';
 $lang['useacl']                = 'Использовать списки прав доступа';
 $lang['autopasswd']            = 'Автогенерация паролей';
 $lang['authtype']              = 'Механизм аутентификации';
 $lang['passcrypt']             = 'Метод шифрования пароля';
-$lang['defaultgroup']          = 'Группа по умолчанию';
-$lang['superuser']             = 'Суперпользователь — группа или пользователь с полным доступом ко всем страницам и функциям администрирования, независимо от установок ACL. Перечень разделяйте запятыми: user1,@group1,user2';
+$lang['defaultgroup']          = 'Группа по умолчанию. Все новые пользователю будут добавляться в эту группу.';
+$lang['superuser']             = 'Суперпользователь — группа или пользователь с полным доступом ко всем страницам и функциям администрирования, независимо от установок списков прав доступа. Перечень разделяйте запятыми: user1,@group1,user2';
 $lang['manager']               = 'Менеджер — группа или пользователь с доступом к определённым функциям управления. Перечень разделяйте запятыми: user1,@group1,user2';
 $lang['profileconfirm']        = 'Пароль для изменения профиля';
 $lang['rememberme']            = 'Разрешить перманентные куки (cookies) для входа («запомнить меня»)';
-$lang['disableactions']        = 'Заблокировать операции «ДокуВики»';
+$lang['disableactions']        = 'Заблокировать операции «Докувики»';
 $lang['disableactions_check']  = 'Проверка';
 $lang['disableactions_subscription'] = 'Подписка/Отмена подписки';
 $lang['disableactions_wikicode'] = 'Показ/экспорт исходного текста';
 $lang['disableactions_profile_delete'] = 'Удалить свой аккаунт';
 $lang['disableactions_other']  = 'Другие операции (через запятую)';
-$lang['disableactions_rss']    = 'XML синдикация (RSS)';
+$lang['disableactions_rss']    = 'XML-синдикация (RSS)';
 $lang['auth_security_timeout'] = 'Интервал для безопасности авторизации (сек.)';
 $lang['securecookie']          = 'Должны ли куки (cookies), выставленные через HTTPS, отправляться браузером только через HTTPS. Отключите эту опцию в случае, когда только логин вашей вики передаётся через SSL, а обычный просмотр осуществляется в небезопасном режиме.';
 $lang['remote']                = 'Включить систему API для подключений. Это позволит другим приложениям получить доступ к вики через XML-RPC или другие механизмы.';
-$lang['remoteuser']            = 'Дать права для удаленного API доступа пользователям указанным тут (разделять запятыми). Оставьте это поле пустым что бы открыть доступ всем.';
+$lang['remoteuser']            = 'Дать права для удалённого API-доступа пользователям, указанным здесь (разделяйте запятыми). Оставьте поле пустым для предоставления доступа всем.';
 $lang['usewordblock']          = 'Блокировать спам по ключевым словам';
-$lang['relnofollow']           = 'rel="nofollow" для внешних ссылок';
-$lang['indexdelay']            = 'Задержка перед индексированием';
+$lang['relnofollow']           = 'Использовать rel="nofollow" для внешних ссылок';
+$lang['indexdelay']            = 'Задержка перед индексированием (сек.)';
 $lang['mailguard']             = 'Кодировать адреса электронной почты';
 $lang['iexssprotect']          = 'Проверять закачанные файлы на наличие потенциально опасного кода JavaScript или HTML';
 $lang['usedraft']              = 'Автоматически сохранять черновик во время правки';
@@ -122,36 +123,36 @@ $lang['jpg_quality']           = 'Качество сжатия JPG (0–100). 
 $lang['fetchsize']             = 'Максимальный размер файла (в байтах), который fetch.php может скачивать с внешнего источника';
 $lang['subscribers']           = 'Разрешить подписку на изменения';
 $lang['subscribe_time']        = 'Интервал рассылки подписок и сводок (сек.). Должен быть меньше, чем значение, указанное в recent_days.';
-$lang['notify']                = 'Электронный адрес для извещений';
-$lang['registernotify']        = 'Посылать информацию о новых зарегистрированных пользователях на этот электронный адрес';
+$lang['notify']                = 'Всегда отправлять сообщения об изменениях на этот электронный адрес';
+$lang['registernotify']        = 'Всегода отправлять информацию о новых зарегистрированных пользователях на этот электронный адрес';
 $lang['mailfrom']              = 'Электронный адрес вики (От:)';
-$lang['mailprefix']            = 'Префикс используемый для автоматического письма станет темой сообщений';
+$lang['mailprefix']            = 'Префикс, используемый для автоматического письма, станет темой сообщения. Оставьте поле пустым для использования названия вики.';
 $lang['htmlmail']              = 'Отправлять красивые, но крупные HTML-многочастные письма. Для отправки простых текстовых писем - отключить';
-$lang['sitemap']               = 'Число дней, через которое нужно создавать (обновлять) карту сайта для поисковиков (Гугл, Яндекс и др.)';
-$lang['rss_type']              = 'Тип RSS';
-$lang['rss_linkto']            = 'Ссылки в RSS';
-$lang['rss_content']           = 'Что отображать в строках XML-ленты?';
+$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['updatecheck']           = 'Проверять наличие обновлений и предупреждений о безопасности? Для этого «ДокуВики» потребуется связываться с сайтом <a href="http://www.splitbrain.org/">splitbrain.org</a>.';
+$lang['rss_media']             = 'Какие изменения должны быть отображены в XML-ленте?';
+$lang['updatecheck']           = 'Проверять наличие обновлений и предупреждений о безопасности? Для этого «Докувики» потребуется связываться с update.dokuwiki.org.';
 $lang['userewrite']            = 'Удобочитаемые адреса (URL)';
-$lang['useslash']              = 'Использовать слэш';
+$lang['useslash']              = 'Использовать слэш в URL';
 $lang['sepchar']               = 'Разделитель слов в имени страницы';
 $lang['canonical']             = 'Полные канонические адреса (URL)';
 $lang['fnencode']              = 'Метод кодирования имён файлов, записанных не ASCII-символами.';
-$lang['autoplural']            = 'Автоматическое мн. число';
+$lang['autoplural']            = 'Проверять можественную форму имени страницы в ссылках';
 $lang['compression']           = 'Метод сжатия для архивных файлов';
 $lang['gzip_output']           = 'Использовать gzip-сжатие для xhtml';
 $lang['compress']              = 'Сжимать файлы CSS и javascript';
 $lang['cssdatauri']            = 'Размер в байтах до которого изображения, указанные в CSS-файлах, должны быть встроены прямо в таблицу стилей, для уменьшения избычтоных HTTP-запросов. Этот метод не будет работать в IE версии 7 и ниже! Установка от <code>400</code> до <code>600</code> байт является хорошим показателем. Установите <code>0</code>, чтобы отключить.';
-$lang['send404']               = 'Посылать «HTTP404/Page Not Found»';
+$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 (ядро dokuwiki)';
+$lang['renderer__core']        = '%s (ядро «Докувики»)';
 $lang['renderer__plugin']      = '%s (плагин)';
-$lang['dnslookups']            = 'DokuWiki ищет DNS имена пользователей редактирующих страницы. Если у вас нет DNS сервера или он работает медленно, рекомендуем отключить эту опцию.';
+$lang['dnslookups']            = '«Докувики» ищет DNS-имена пользователей, редактирующих страницы. Если у вас нет DNS-сервера или он работает медленно, рекомендуем отключить эту опцию.';
 $lang['proxy____host']         = 'proxy-адрес';
 $lang['proxy____port']         = 'proxy-порт';
 $lang['proxy____user']         = 'proxy-имя пользователя';
@@ -166,15 +167,15 @@ $lang['ftp____pass']           = 'ftp-пароль';
 $lang['ftp____root']           = 'ftp-корневая директория';
 $lang['license_o_']            = 'Не выбрано';
 $lang['typography_o_0']        = 'нет';
-$lang['typography_o_1']        = 'Только двойные кавычки';
-$lang['typography_o_2']        = 'Все кавычки (может не всегда работать)';
+$lang['typography_o_1']        = 'только двойные кавычки';
+$lang['typography_o_2']        = 'все кавычки (может не всегда работать)';
 $lang['userewrite_o_0']        = '(нет)';
 $lang['userewrite_o_1']        = '.htaccess';
-$lang['userewrite_o_2']        = 'средствами «ДокуВики»';
+$lang['userewrite_o_2']        = 'средствами «Докувики»';
 $lang['deaccent_o_0']          = 'отключить';
 $lang['deaccent_o_1']          = 'убирать только диакр. знаки';
 $lang['deaccent_o_2']          = 'полная транслитерация';
-$lang['gdlib_o_0']             = 'LibGD недоступна';
+$lang['gdlib_o_0']             = 'GD Lib недоступна';
 $lang['gdlib_o_1']             = 'версия 1.x';
 $lang['gdlib_o_2']             = 'автоопределение';
 $lang['rss_type_o_rss']        = 'RSS 0.91';
@@ -182,10 +183,10 @@ $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_abstract'] = 'абстрактный';
+$lang['rss_content_o_diff']    = 'объединённый diff';
 $lang['rss_content_o_htmldiff'] = 'HTML-форматированная таблица diff';
-$lang['rss_content_o_html']    = 'Полное содержимое HTML-страницы';
+$lang['rss_content_o_html']    = 'полное содержимое HTML-страницы';
 $lang['rss_linkto_o_diff']     = 'отличия от текущей';
 $lang['rss_linkto_o_page']     = 'текст страницы';
 $lang['rss_linkto_o_rev']      = 'история правок';
@@ -194,16 +195,16 @@ $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_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['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/lib/plugins/config/lang/sk/lang.php b/lib/plugins/config/lang/sk/lang.php
index 46e4081a959875b87787b88d68d4bec4c78f0f12..f56353680e367bf33a5a5c8a907d1000c698787c 100644
--- a/lib/plugins/config/lang/sk/lang.php
+++ b/lib/plugins/config/lang/sk/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Slovaklanguage file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Michal Mesko <michal.mesko@gmail.com>
  * @author exusik@gmail.com
  * @author Martin Michalek <michalek.dev@gmail.com>
@@ -139,7 +140,7 @@ $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['proxy____host']         = 'Proxy server - názov';
 $lang['proxy____port']         = 'Proxy server - port';
-$lang['proxy____user']         = 'Proxy server - užívateľské meno';
+$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á.';
diff --git a/lib/plugins/config/lang/th/lang.php b/lib/plugins/config/lang/th/lang.php
index 68ee8b8a27a6f38ecfd44c87dee5f8d69405c079..ce1d30d6278905e4272ea50cf4ce309d07803280 100644
--- a/lib/plugins/config/lang/th/lang.php
+++ b/lib/plugins/config/lang/th/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Thai language file
- *
+ * @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>
@@ -23,48 +24,48 @@ $lang['_links']                = 'การตั้งค่าลิงก์'
 $lang['_media']                = 'การตั้งค่าภาพ-เสียง';
 $lang['_advanced']             = 'การตั้งค่าขั้นสูง';
 $lang['_network']              = 'การตั้งค่าเครือข่าย';
+$lang['start']                 = 'ชื่อหน้าเริ่มต้น';
 $lang['lang']                  = 'ภาษา';
+$lang['savedir']               = 'ไดเรคทอรีที่บันทึกข้อมูล';
 $lang['basedir']               = 'ไดเรคทอรีพื้นฐาน';
 $lang['baseurl']               = 'URL พื้นฐาน';
-$lang['savedir']               = 'ไดเรคทอรีที่บันทึกข้อมูล';
-$lang['start']                 = 'ชื่อหน้าเริ่มต้น';
 $lang['recent']                = 'การเปลี่ยนแปลงล่าสุด';
-$lang['htmlok']                = 'อนุญาตให้ใช้ HTML';
-$lang['phpok']                 = 'อนุญาตให้ใช้ PHP';
+$lang['recent_days']           = 'จำนวนวันที่เก็บรายการที่ถูกแก้ไขล่าสุด';
 $lang['signature']             = 'ลายเซนต์';
-$lang['usewordblock']          = 'คำที่จะถือว่าเป็นสแปม';
-$lang['relnofollow']           = 'ใช้ rel="nofollow" สำหรับลิงก์ภายนอก';
+$lang['hidepages']             = 'ซ่อนหน้าที่เข้ากันได้ (regular expressions)';
 $lang['autopasswd']            = 'สร้างรหัสผ่านให้อัตโนมัติ';
 $lang['passcrypt']             = 'กระบวนการเข้ารหัส สำหรับเก็บบันทึกรหัสผ่าน';
 $lang['defaultgroup']          = 'กลุ่มมาตรฐาน';
 $lang['profileconfirm']        = 'ใส่รหัสผ่านเพื่อยืนยันการเปลี่ยนแปลงข้อมูล';
+$lang['rememberme']            = 'อนุญาตให้จดจำการ login แบบถาวร';
 $lang['disableactions_check']  = 'ตรวจสอบ';
 $lang['auth_security_timeout'] = 'ระยะเวลาที่จะตัดการเชื่อมต่อแบบการใช้งานด้วยสิทธิ์ผู้ใช้ (วินาที)';
-$lang['userewrite']            = 'แสดงที่อยู่เว็บ (URL) แบบอ่านเข้าใจง่าย';
-$lang['cachetime']             = 'ระยะเวลาสำหรับการเก็บแคช (วินาที)';
+$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['gzip_output']           = 'ใช้ gzip Content-Encoding สำหรับ xhtml';
-$lang['gdlib']                 = 'เลขรุ่นของ GD Library';
-$lang['compress']              = 'บีบย่อ CSS และ javascript (เพื่อให้แสดงหน้าเว็บเร็วขึ้น)';
-$lang['hidepages']             = 'ซ่อนหน้าที่เข้ากันได้ (regular expressions)';
-$lang['send404']               = 'ให้แสดง "HTTP 404/Page Not Found" เมื่อไม่พบข้อมูลหน้านั้น';
 $lang['sitemap']               = 'สร้าง กูเกิ้ล ไซต์แมพ (จำนวนวัน)';
-$lang['renderer__core']        = '%s (แกนหลักของ dokuwiki)';
-$lang['renderer__plugin']      = '%s (โปรแกรมเสริม - plugin)';
-$lang['rememberme']            = 'อนุญาตให้จดจำการ login แบบถาวร';
 $lang['rss_type']              = 'ชนิดของ XML feed';
 $lang['rss_linkto']            = 'ลิงก์เชื่อมโยงไปยัง XML feed';
 $lang['rss_content']           = 'ต้องการให้มีอะไรแสดงอยู่ใน XML feed บ้าง?';
 $lang['rss_update']            = 'ความถี่ในการอัพเดท XML feed (เป็นวินาที)';
-$lang['recent_days']           = 'จำนวนวันที่เก็บรายการที่ถูกแก้ไขล่าสุด';
 $lang['rss_show_summary']      = 'ไตเติ้ลของบทสรุปย่อของ XML feed';
-$lang['target____wiki']        = 'เปิดแสดงลิงก์ภายใน ในหน้าเว็บแบบใด';
-$lang['target____interwiki']   = 'เปิดแสดงลิงก์ interwiki ในหน้าเว็บแบบใด';
-$lang['target____extern']      = 'เปิดแสดงลิงก์ภายนอก ในหน้าเว็บแบบใด';
-$lang['target____media']       = 'เปิดแสดงลิงก์ของมีเดีย ในหน้าเว็บแบบใด';
-$lang['target____windows']     = 'เปิดแสดงลิงก์ของวินโดวส์ ในหน้าเว็บแบบใด';
+$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';
diff --git a/lib/plugins/config/lang/uk/lang.php b/lib/plugins/config/lang/uk/lang.php
index dea9203e845246f960f51bdb1cc659a25ed95044..02c3273679022ff6eb252e78c2642a70ecdb740f 100644
--- a/lib/plugins/config/lang/uk/lang.php
+++ b/lib/plugins/config/lang/uk/lang.php
@@ -1,8 +1,8 @@
 <?php
+
 /**
- * ukrainian language file
- *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Oleksiy Voronin <ovoronin@gmail.com>
  * @author serg_stetsuk@ukr.net
  * @author okunia@gmail.com
@@ -10,6 +10,7 @@
  * @author Uko uko@uar.net
  * @author Ulrikhe Lukoie  <lukoie@gmail>.com
  * @author Kate Arzamastseva pshns@ukr.net
+ * @author Maksim <nikropol@yandex.ru>
  */
 $lang['menu']                  = 'Налаштування Вікі';
 $lang['error']                 = 'Параметри не збережено через помилкові значення. Будь ласка, перегляньте ваші зміни та спробуйте ще раз
diff --git a/lib/plugins/config/lang/zh-tw/lang.php b/lib/plugins/config/lang/zh-tw/lang.php
index c586a0d5110a726eb1adde6561ffb932dc5a3640..e5b051bfbcd186940295d6accf7328d60d490978 100644
--- a/lib/plugins/config/lang/zh-tw/lang.php
+++ b/lib/plugins/config/lang/zh-tw/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Chinese Traditional language file
- *
+ * @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>
@@ -11,6 +12,7 @@
  * @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']                 = '因為含有不合規格的設定值,故未能更新設定。請檢查您的更改並重新送出。
diff --git a/lib/plugins/config/lang/zh/lang.php b/lib/plugins/config/lang/zh/lang.php
index 5de24692ee4631e4c32ae7a25f0a88315b7e7a33..4ae3a01fd249864a57830e760983d74a8800ff93 100644
--- a/lib/plugins/config/lang/zh/lang.php
+++ b/lib/plugins/config/lang/zh/lang.php
@@ -15,6 +15,7 @@
  * @author caii, patent agent in China <zhoucaiqi@gmail.com>
  * @author lainme993@gmail.com
  * @author Shuo-Ting Jian <shoting@gmail.com>
+ * @author Garfield <garfield_550@outlook.com>
  */
 $lang['menu']                  = '配置设置';
 $lang['error']                 = '由于非法参数,设置没有更新。请检查您做的改动并重新提交。
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index 9d0ad2c4e1bb84addf3ea78c0cb22fbd0c62392e..0942a6d23cd1cad4059888d8f51f173e70e31cce 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -101,7 +101,12 @@ if (!class_exists('configuration')) {
                     }
 
                     $this->setting[$key] = new $class($key,$param);
-                    $this->setting[$key]->initialize($default[$key],$local[$key],$protected[$key]);
+
+                    $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;
@@ -1186,6 +1191,7 @@ if (!class_exists('setting_multicheckbox')) {
 
         var $_choices = array();
         var $_combine = array();
+        var $_other = 'always';
 
         /**
          * update changed setting with user provided value $input
@@ -1219,7 +1225,7 @@ if (!class_exists('setting_multicheckbox')) {
          * Build html for label and input of setting
          *
          * @param DokuWiki_Plugin $plugin object of config plugin
-         * @param bool            $echo   true: show inputted value, when error occurred, otherwise the stored setting
+         * @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(&$plugin, $echo=false) {
@@ -1269,16 +1275,21 @@ if (!class_exists('setting_multicheckbox')) {
             }
 
             // handle any remaining values
-            $other = join(',',$value);
-
-            $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";
-
+            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);
         }
diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php
index aaa32cd70b9b15ca2210817d1548a93cc59af00e..c362a9f1af144e5a7104a29dda7f277f4e747e5d 100644
--- a/lib/plugins/config/settings/config.metadata.php
+++ b/lib/plugins/config/settings/config.metadata.php
@@ -70,6 +70,12 @@
  *   '_pregflags'  - string, default 'ui', valid preg pattern modifiers used when testing regex input values, for more
  *                   information see http://uk1.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>
  */
diff --git a/lib/plugins/extension/lang/bg/intro_install.txt b/lib/plugins/extension/lang/bg/intro_install.txt
new file mode 100644
index 0000000000000000000000000000000000000000..34b92484caa8aa5ce76b46c1254963a159cadb7c
--- /dev/null
+++ b/lib/plugins/extension/lang/bg/intro_install.txt
@@ -0,0 +1 @@
+От тук можете да инсталирате ръчно приставки и шаблони като качите архив или посочите URL за сваляне на архива.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/bg/intro_plugins.txt b/lib/plugins/extension/lang/bg/intro_plugins.txt
new file mode 100644
index 0000000000000000000000000000000000000000..927f617dbed895537dc05272eaa99fd8aa2530e9
--- /dev/null
+++ b/lib/plugins/extension/lang/bg/intro_plugins.txt
@@ -0,0 +1 @@
+Това са инсталираните приставки. От тук можете да ги включвате и изключвате както и да ги деинсталирате. Тук ще виждате и наличните актуализации, като преди всяка такава прочетете документацията на съответната приставка.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/bg/intro_search.txt b/lib/plugins/extension/lang/bg/intro_search.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cec4cd243414363b42fab90926a32108c5e6343d
--- /dev/null
+++ b/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/lib/plugins/extension/lang/bg/intro_templates.txt b/lib/plugins/extension/lang/bg/intro_templates.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8824b4d8eabc84bb9baa2a1ba37254aec69db3f7
--- /dev/null
+++ b/lib/plugins/extension/lang/bg/intro_templates.txt
@@ -0,0 +1 @@
+Това са инсталираните шаблони. Можете да определите кой шаблон да се ползва от [[?do=admin&page=config|Настройки]].
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/bg/lang.php b/lib/plugins/extension/lang/bg/lang.php
index b14442c55ad5b3856dd57b16e1ec15462b426391..dda69a4b9ded484d56812c046215e9c05560b712 100644
--- a/lib/plugins/extension/lang/bg/lang.php
+++ b/lib/plugins/extension/lang/bg/lang.php
@@ -36,15 +36,19 @@ $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['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']                = 'Състояние:';
@@ -65,9 +69,16 @@ $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/lib/plugins/extension/lang/cy/intro_install.txt b/lib/plugins/extension/lang/cy/intro_install.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2bc933ec7c8dbb71d58b1b962de4de465a5ec0c4
--- /dev/null
+++ b/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/lib/plugins/extension/lang/cy/intro_plugins.txt b/lib/plugins/extension/lang/cy/intro_plugins.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dd49a7a6b6c65d37bbc47debb37ddd81d98bc019
--- /dev/null
+++ b/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/lib/plugins/extension/lang/cy/intro_search.txt b/lib/plugins/extension/lang/cy/intro_search.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8aef9603948fa60637b4f8b2d4621f7fa099d4c0
--- /dev/null
+++ b/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/lib/plugins/extension/lang/cy/intro_templates.txt b/lib/plugins/extension/lang/cy/intro_templates.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49471451fa0f988b3d0657ac325254571d7badb5
--- /dev/null
+++ b/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/lib/plugins/extension/lang/cy/lang.php b/lib/plugins/extension/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..2a2a8c8fac6d1e430d6904f6fcbbcecc4bbffcba
--- /dev/null
+++ b/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/lib/plugins/extension/lang/fa/intro_install.txt b/lib/plugins/extension/lang/fa/intro_install.txt
new file mode 100644
index 0000000000000000000000000000000000000000..93c2b9734db7d4615e5940e478e4af98e44e86f7
--- /dev/null
+++ b/lib/plugins/extension/lang/fa/intro_install.txt
@@ -0,0 +1 @@
+در اینجا می‌توانید افزونه‌ها و قالب‌ها را به صورت دستی از طریق آپلودشان یا با ارائهٔ لینک مستقیم دانلود نصب کنید.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/fa/intro_plugins.txt b/lib/plugins/extension/lang/fa/intro_plugins.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7d7d331b358f3da10080979e96ee8c6f11b52260
--- /dev/null
+++ b/lib/plugins/extension/lang/fa/intro_plugins.txt
@@ -0,0 +1 @@
+این‌ها افزونه‌هایی است که اکنون روی داکو ویکی شما نصب می‌باشند. از اینجا می‌توانید آن‌ها را غیرفعال، فعال یا به طور کامل حذف نمایید. به‌روزرسانی افزونه‌ها نیز در اینجا نمایش داده می‌شود. پیش از به‌روزرسانی مطمئن شوید که مستندات افزونه را مطالعه نموده‌اید.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/fa/intro_search.txt b/lib/plugins/extension/lang/fa/intro_search.txt
new file mode 100644
index 0000000000000000000000000000000000000000..07fde76c1c6a2fa28e1ffe0cc9e50c47df229900
--- /dev/null
+++ b/lib/plugins/extension/lang/fa/intro_search.txt
@@ -0,0 +1 @@
+این شاخه به تمام افزونه‌ها و قالب‌های نسل سوم داکو ویکی دسترسی می‌دهد. لطفا دقت کنید که نصب کد نسل سوم یک **ریسک امنیتی** است برای همین بهتر است که ابتدا [[doku>security#plugin_security|امنیت افزونه]] را مطالعه نمایید.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/fa/intro_templates.txt b/lib/plugins/extension/lang/fa/intro_templates.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1a127c0ce4126b7803bf50c8758df414f3c7e96d
--- /dev/null
+++ b/lib/plugins/extension/lang/fa/intro_templates.txt
@@ -0,0 +1 @@
+این‌ها قالب‌هاییست که اکنون در داکو ویکی شما نصب می‌باشد. شما می‌توانید قالبی که می‌خواهید استفاده شود را در [[?do=admin&page=config|تنظیمات پیکربندی]] انتخاب نمایید.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/fa/lang.php b/lib/plugins/extension/lang/fa/lang.php
index 95c3e9652cf199ca2a5022f1e570dab83e930bbe..aa0613f91df87f0a24f7491f66cba7cd144759bc 100644
--- a/lib/plugins/extension/lang/fa/lang.php
+++ b/lib/plugins/extension/lang/fa/lang.php
@@ -4,37 +4,93 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * 
  * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
  */
 $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/lib/plugins/extension/lang/fr/lang.php b/lib/plugins/extension/lang/fr/lang.php
index 4cb6f0d25b89c32c5c446dabb88a34f0fc45eaaf..e3dff49120cc86511b7b7b327a87b4400870ddf0 100644
--- a/lib/plugins/extension/lang/fr/lang.php
+++ b/lib/plugins/extension/lang/fr/lang.php
@@ -38,12 +38,12 @@ $lang['extensionby']           = '<strong>%s</strong> de %s';
 $lang['screenshot']            = 'Aperçu de %s';
 $lang['popularity']            = 'Popularité : %s%%';
 $lang['homepage_link']         = 'Documents';
-$lang['bugs_features']         = 'Bugs';
+$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']            = 'Entrepôt : ';
+$lang['repository']            = 'Dépôt : ';
 $lang['unknown']               = '<em>inconnu</em>';
 $lang['installed_version']     = 'Version installée :';
 $lang['install_date']          = 'Votre dernière mise à jour :';
@@ -69,7 +69,7 @@ $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']     = 'Echec de la désinstallation de l\'extension %s';
+$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';
@@ -77,16 +77,16 @@ $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 deSécurité :</strong> %s';
-$lang['update_available']      = '<strong>Mise à jour :</strong> La version %s est disponible.';
-$lang['wrong_folder']          = '<strong>Greffon installé incorrectement :</strong> Renomer le dossier du greffon "%s" en "%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 DoluWiki instable.';
+$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.';
@@ -94,5 +94,5 @@ $lang['git']                   = 'Cette extension a été installé via git, vou
 $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']            = 'L\'entrepô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['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/lib/plugins/extension/lang/it/intro_search.txt b/lib/plugins/extension/lang/it/intro_search.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fb77d36837fbc6caabce43e3aa71a93107a0d757
--- /dev/null
+++ b/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/lib/plugins/extension/lang/it/intro_templates.txt b/lib/plugins/extension/lang/it/intro_templates.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a38d86814694734e5029202d01e982f5d9c7e010
--- /dev/null
+++ b/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/lib/plugins/extension/lang/it/lang.php b/lib/plugins/extension/lang/it/lang.php
index 80ed0ddcf763f8cc134738c8719d43e01437b2de..d22cb9d52ba8aff7cf8105bb162827111c15db22 100644
--- a/lib/plugins/extension/lang/it/lang.php
+++ b/lib/plugins/extension/lang/it/lang.php
@@ -34,6 +34,7 @@ $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';
@@ -75,17 +76,23 @@ $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/lib/plugins/extension/lang/pt/lang.php b/lib/plugins/extension/lang/pt/lang.php
index 1a36b4ede33980370bec49b1d02a80926b70b8cc..9713f91f3941a77df908ff8ceeb18c69fc6bdc8f 100644
--- a/lib/plugins/extension/lang/pt/lang.php
+++ b/lib/plugins/extension/lang/pt/lang.php
@@ -6,6 +6,7 @@
  * @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>
  */
 $lang['menu']                  = 'Gerenciador de Extensões';
 $lang['tab_plugins']           = 'Plugins Instalados';
@@ -28,6 +29,9 @@ $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';
diff --git a/lib/plugins/extension/lang/ru/intro_install.txt b/lib/plugins/extension/lang/ru/intro_install.txt
index 7b8ac661bb2d62c88a3969617b987b09c0eba1d2..0c555aee2c54ad081dc35752af33f3b30093a12a 100644
--- a/lib/plugins/extension/lang/ru/intro_install.txt
+++ b/lib/plugins/extension/lang/ru/intro_install.txt
@@ -1 +1 @@
-Здесь вы можете самостоятельно установить плагины и шаблоны, загрузив их или предоставив прямой URL для скачивания.
\ No newline at end of file
+Здесь вы можете самостоятельно установить плагины и шаблоны, загрузив их или предоставив прямой URL для скачивания.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/intro_plugins.txt b/lib/plugins/extension/lang/ru/intro_plugins.txt
index c5ea9e0ec285a39e365989b6395979bbed9e5605..547ca7184f5c70f15496d2660acbb247d08987cb 100644
--- a/lib/plugins/extension/lang/ru/intro_plugins.txt
+++ b/lib/plugins/extension/lang/ru/intro_plugins.txt
@@ -1 +1 @@
-Плагины, установленные в вашей «Докувики». Здесь вы можете их включить или выключить, или даже полностью удалить. Также здесь показываются обновления плагинов; обязательно прочтите документацию плагина перед обновлением.
\ No newline at end of file
+Плагины, установленные в вашей «Докувики». Здесь вы можете их включить или выключить, или даже полностью удалить. Также здесь показываются обновления плагинов; обязательно прочтите документацию плагина перед обновлением.
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/intro_search.txt b/lib/plugins/extension/lang/ru/intro_search.txt
index 3c16748baefecbbca719d184dcc36706cb415d10..609985bf4d5546a1d9bc26d3f1cadd25fc61df85 100644
--- a/lib/plugins/extension/lang/ru/intro_search.txt
+++ b/lib/plugins/extension/lang/ru/intro_search.txt
@@ -1 +1 @@
-Вкладка даёт вам доступ ко всем имеющимся сторонним плагинам и шаблонам для «Докувики». Имейте ввиду, что установка стороннего кода может представлять **угрозу безопасности,** возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]].
\ No newline at end of file
+Вкладка даёт вам доступ ко всем имеющимся сторонним плагинам и шаблонам для «Докувики». Имейте в виду, что установка стороннего кода может представлять **угрозу безопасности,** возможно вам нужно сперва прочитать о [[doku>security#plugin_security|безопасности плагинов]].
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/intro_templates.txt b/lib/plugins/extension/lang/ru/intro_templates.txt
index 787b32fa31e7a5cb616c7f55b902dc090522802b..a71ad67378e875cdf83170a8e5b81b4c37b640f6 100644
--- a/lib/plugins/extension/lang/ru/intro_templates.txt
+++ b/lib/plugins/extension/lang/ru/intro_templates.txt
@@ -1 +1 @@
-Шаблоны (темы оформления), установленные в вашей «Докувики». Шаблон, который нужно использовать, выбирается в [[?do=admin&page=config|настройках вики]]
\ No newline at end of file
+Шаблоны (темы оформления), установленные в вашей «Докувики». Шаблон, который нужно использовать, выбирается в [[?do=admin&page=config|настройках вики]]
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php
index 746af3ef19c04e65d76edb0b58648849ac2d177d..6df783cc8d4ffea552a525dfa0620a5520fdac12 100644
--- a/lib/plugins/extension/lang/ru/lang.php
+++ b/lib/plugins/extension/lang/ru/lang.php
@@ -22,7 +22,7 @@ $lang['alreadydisabled']       = 'Это дополнение уже отклю
 $lang['pluginlistsaveerror']   = 'Ошибка при сохранении списка плагинов';
 $lang['unknownauthor']         = 'Автор неизвестен';
 $lang['unknownversion']        = 'Версия неизвестна';
-$lang['btn_info']              = 'Отобразить доп. информацию';
+$lang['btn_info']              = 'Подробнее';
 $lang['btn_update']            = 'Обновить';
 $lang['btn_uninstall']         = 'Удалить';
 $lang['btn_enable']            = 'Включить';
@@ -31,40 +31,40 @@ $lang['btn_install']           = 'Установить';
 $lang['btn_reinstall']         = 'Переустановить';
 $lang['js']['reallydel']       = 'Действительно удалить это дополнение?';
 $lang['js']['display_viewoptions'] = 'Показать как:';
-$lang['js']['display_enabled'] = 'включено';
-$lang['js']['display_disabled'] = 'отключено';
+$lang['js']['display_enabled'] = 'включён';
+$lang['js']['display_disabled'] = 'отключён';
 $lang['js']['display_updatable'] = 'обновление';
-$lang['search_for']            = 'Поиск дополнения:';
+$lang['search_for']            = 'Поиск дополнения';
 $lang['search']                = 'Найти';
-$lang['extensionby']           = '<strong>%s</strong> — %s';
+$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['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['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['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']        = 'в комплекте';
@@ -82,19 +82,19 @@ $lang['security_issue']        = '<strong>Проблема безопаснос
 $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['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['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 поддержки. Это поломает скачивание для многих DokuWiki плагинов и дополнений.';
+$lang['auth']                  = 'Этот auth-плагин не включён в конфигурации, подумайте об его отключении';
+$lang['install_url']           = 'Установить с адреса';
+$lang['install_upload']        = 'Загрузить дополнение';
+$lang['repo_error']            = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения прокси.';
+$lang['nossl']                 = 'Ваша PHP-конфигурация не имеет SSL-поддержки. Это нарушит скачивание для многих дополнений.';
diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php
index 79657ffeb4b8da326b5714fc9a311c8d47ad8cb9..c5b1e6dc58df836d0ddaa74fb4147d2c11a3d64d 100644
--- a/lib/plugins/extension/lang/zh-tw/lang.php
+++ b/lib/plugins/extension/lang/zh-tw/lang.php
@@ -6,6 +6,7 @@
  * @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']           = '已安裝外掛';
@@ -27,6 +28,9 @@ $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']         = '文件';
@@ -58,6 +62,7 @@ $lang['status_bundled']        = '已綑綁內附';
 $lang['msg_enabled']           = '外掛 %s 已啟用';
 $lang['msg_disabled']          = '外掛 %s 已禁用';
 $lang['msg_delete_success']    = '附加元件已移除';
+$lang['msg_delete_failed']     = '解除安裝 %s 失敗';
 $lang['msg_template_install_success'] = '模板 %s 以成功安裝';
 $lang['msg_template_update_success'] = '模板 %s 以成功更新';
 $lang['msg_plugin_install_success'] = '外掛 %s 以成功安裝';
@@ -69,6 +74,7 @@ $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']      = '無法辨認延伸功能資料夾,你必須自行下載並手動安裝';
diff --git a/lib/plugins/popularity/lang/cy/intro.txt b/lib/plugins/popularity/lang/cy/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..187dfe0b77e78186a6b5d97460a59c9c762804d8
--- /dev/null
+++ b/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/lib/plugins/popularity/lang/cy/lang.php b/lib/plugins/popularity/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..7bee7bdf2a0d262a07a17487cb7d37f8c4463626
--- /dev/null
+++ b/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/lib/plugins/popularity/lang/cy/submitted.txt b/lib/plugins/popularity/lang/cy/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eb6fd815a7f6a1759d1ab0abd65494a0043f85d4
--- /dev/null
+++ b/lib/plugins/popularity/lang/cy/submitted.txt
@@ -0,0 +1,3 @@
+====== Adborth Poblogrwydd ======
+
+Cafodd y data ei anfon yn llwyddiannus.
diff --git a/lib/plugins/revert/lang/cy/intro.txt b/lib/plugins/revert/lang/cy/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0e09bab09f452b13d00ea234316e32e581138b8f
--- /dev/null
+++ b/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/lib/plugins/revert/lang/cy/lang.php b/lib/plugins/revert/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..ce4f005c15130629a0fefc02bcc7eb2730aee2f4
--- /dev/null
+++ b/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/lib/plugins/revert/lang/ko/lang.php b/lib/plugins/revert/lang/ko/lang.php
index f99b0ab23e8e1ef88e0692213bf04398f48102b3..263537203c6ce63e6e7bc6a387095658e11fbdbf 100644
--- a/lib/plugins/revert/lang/ko/lang.php
+++ b/lib/plugins/revert/lang/ko/lang.php
@@ -9,6 +9,7 @@
  * @author Seung-Chul Yoo <dryoo@live.com>
  * @author erial2@gmail.com
  * @author Myeongjin <aranet100@gmail.com>
+ * @author Erial <erial2@gmail.com>
  */
 $lang['menu']                  = '되돌리기 관리자';
 $lang['filter']                = '스팸 문서 검색';
diff --git a/lib/plugins/styling/lang/bg/lang.php b/lib/plugins/styling/lang/bg/lang.php
index 5e457380c6d3f56f75d05f91e843d65916a6cff0..7d17caffb62b3ac3ce47c0a908cf92b619746bf3 100644
--- a/lib/plugins/styling/lang/bg/lang.php
+++ b/lib/plugins/styling/lang/bg/lang.php
@@ -5,9 +5,12 @@
  * 
  * @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__']          = 'Алтернативен цвят за текста';
@@ -15,3 +18,4 @@ $lang['__background_alt__']    = 'Алтернативен цвят за фон
 $lang['__text_neu__']          = 'Неутрален цвят за текста';
 $lang['__background_neu__']    = 'Неутрален цвят за фона';
 $lang['__border__']            = 'Цвят на рамката';
+$lang['__highlight__']         = 'Цвят за отличаване (основно на резултата от търсения)';
diff --git a/lib/plugins/styling/lang/cs/intro.txt b/lib/plugins/styling/lang/cs/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..00365a09103a148229990dd05439bf52a81e077b
--- /dev/null
+++ b/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/lib/plugins/styling/lang/cy/intro.txt b/lib/plugins/styling/lang/cy/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7c825967bf922384aa4b4d501c3ca572a907e8ad
--- /dev/null
+++ b/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/lib/plugins/styling/lang/cy/lang.php b/lib/plugins/styling/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..4d22a59f0814acfd195b350520e108f9be63f69c
--- /dev/null
+++ b/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/lib/plugins/styling/lang/fa/intro.txt b/lib/plugins/styling/lang/fa/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..428a25130f569aeb012ff941242e47cb41700779
--- /dev/null
+++ b/lib/plugins/styling/lang/fa/intro.txt
@@ -0,0 +1,2 @@
+این ابزار این امکان را فراهم می‌سازد که برخی تنظیمات مشخص از قالبی که انتخاب کردید را تغییر دهید.
+تمام تغییرات در فایل داخلی تنظیمات ذخیره می‌شود و به‌روزرسانی هم ایمن است.
\ No newline at end of file
diff --git a/lib/plugins/styling/lang/fa/lang.php b/lib/plugins/styling/lang/fa/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8d1bd60efad5aebe67636ef7a3d522eaf4e1bf7
--- /dev/null
+++ b/lib/plugins/styling/lang/fa/lang.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['menu']                  = 'تنظیمات ظاهری تمپلیت';
+$lang['js']['loader']          = 'پیش‌نمایش در حال باز شدن است... <br />اگر این پیش نرفت یعنی مقادیرتان اشکال دارد';
+$lang['js']['popup']           = 'باز کردن به صورت 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/lib/plugins/styling/lang/it/intro.txt b/lib/plugins/styling/lang/it/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6c798e432e3aadbb583aae7858456a3eaa85beef
--- /dev/null
+++ b/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/lib/plugins/styling/lang/it/lang.php b/lib/plugins/styling/lang/it/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..aea011feba5c95ffb575f427914d62a1e899d2df
--- /dev/null
+++ b/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/lib/plugins/styling/lang/pt/lang.php b/lib/plugins/styling/lang/pt/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..6929a40dc4487dff22efb6db95740a1f70dcd132
--- /dev/null
+++ b/lib/plugins/styling/lang/pt/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Alfredo Silva <alfredo.silva@sky.com>
+ */
+$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';
diff --git a/lib/plugins/styling/lang/ru/intro.txt b/lib/plugins/styling/lang/ru/intro.txt
index 39a09c0e164e2d070f1a690c740e6fbe85829bf5..3a0141149fd83082249cc62705b7ecfcafbee11e 100644
--- a/lib/plugins/styling/lang/ru/intro.txt
+++ b/lib/plugins/styling/lang/ru/intro.txt
@@ -1 +1 @@
-Этот инструмент позволяет изменять стилевые настройки выбранного шаблона. Все изменения хранятся в файле конфигурации и защищены от сброса при обновлении.
+Этот инструмент позволяет изменять стилевые настройки выбранного шаблона. Все изменения хранятся в файле конфигурации и защищены от сброса при обновлении.
diff --git a/lib/plugins/styling/lang/ru/lang.php b/lib/plugins/styling/lang/ru/lang.php
index 1c2dfa569bd940c22e4d1d357704b051af00f3d6..beda17619eb52fc2c27a1faea19ffc2d58e88a38 100644
--- a/lib/plugins/styling/lang/ru/lang.php
+++ b/lib/plugins/styling/lang/ru/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- *
+ * 
  * @author RainbowSpike <1@2.ru>
  */
 $lang['menu']                  = 'Настройки стилей шаблона';
diff --git a/lib/plugins/styling/lang/sk/lang.php b/lib/plugins/styling/lang/sk/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..f1017e5c11458184c360b4f0107b8f7bd864629a
--- /dev/null
+++ b/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/lib/plugins/styling/lang/zh-tw/lang.php b/lib/plugins/styling/lang/zh-tw/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..ce4a9a960ce9b82725283636e3682fed8e0cdc57
--- /dev/null
+++ b/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/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 86823ee2f15af1045ff237541f7a8259892b9ce0..f90a172b3b7abedae44c903c8a5d9d93578f51b9 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -242,7 +242,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         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("        ");
+        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>");
@@ -329,12 +329,12 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         ptln("    </thead>",$indent);
         ptln("    <tbody>",$indent);
 
-        $this->_htmlInputField($cmd."_userid",    "userid",    $this->lang["user_id"],    $user,  $this->_auth->canDo("modLogin"), $indent+6);
-        $this->_htmlInputField($cmd."_userpass",  "userpass",  $this->lang["user_pass"],  "",     $this->_auth->canDo("modPass"),  $indent+6);
-        $this->_htmlInputField($cmd."_userpass2", "userpass2", $lang["passchk"],          "",     $this->_auth->canDo("modPass"),  $indent+6);
-        $this->_htmlInputField($cmd."_username",  "username",  $this->lang["user_name"],  $name,  $this->_auth->canDo("modName"),  $indent+6);
-        $this->_htmlInputField($cmd."_usermail",  "usermail",  $this->lang["user_mail"],  $mail,  $this->_auth->canDo("modMail"),  $indent+6);
-        $this->_htmlInputField($cmd."_usergroups","usergroups",$this->lang["user_groups"],$groups,$this->_auth->canDo("modGroups"),$indent+6);
+        $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') {
@@ -385,9 +385,10 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
      * @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, $indent=0) {
+    protected function _htmlInputField($id, $name, $label, $value, $cando, $required, $indent=0) {
         $class = $cando ? '' : ' class="disabled"';
         echo str_pad('',$indent);
 
@@ -407,7 +408,9 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         echo "<td><label for=\"$id\" >$label: </label></td>";
         echo "<td>";
         if($cando){
-            echo "<input type=\"$fieldtype\" id=\"$id\" name=\"$name\" value=\"$value\" class=\"edit\" $autocomp />";
+            $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\" />";
@@ -518,16 +521,20 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
                     $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;
             }
         }
@@ -535,10 +542,13 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         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;
             }
         }
@@ -546,10 +556,13 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         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;
             }
         }
@@ -563,6 +576,7 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
             }
         } else {
             msg($this->lang['add_fail'], -1);
+            msg($this->lang['addUser_error_create_event_failed'], -1);
         }
 
         return $ok;
diff --git a/lib/plugins/usermanager/lang/cs/lang.php b/lib/plugins/usermanager/lang/cs/lang.php
index 6130fccd88e7aee6e333f463a3a28a34aaddfe62..3cd42efcb55b85419dda3f5681760b59879a511c 100644
--- a/lib/plugins/usermanager/lang/cs/lang.php
+++ b/lib/plugins/usermanager/lang/cs/lang.php
@@ -76,3 +76,11 @@ $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ě záká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ě zákázána.';
+$lang['addUser_error_mail_missing'] = 'Zadejte prosím emailovou adresu nového uživatele.';
+$lang['addUser_error_modMail_disabled'] = 'Změna emailové adresy je momentálně záká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/lib/plugins/usermanager/lang/cy/add.txt b/lib/plugins/usermanager/lang/cy/add.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c804e531d91831df5e3315b92442ec31bbc8b8a6
--- /dev/null
+++ b/lib/plugins/usermanager/lang/cy/add.txt
@@ -0,0 +1 @@
+===== Ychwanegu defnyddiwr =====
diff --git a/lib/plugins/usermanager/lang/cy/delete.txt b/lib/plugins/usermanager/lang/cy/delete.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a81f3a9896ccbcd072f74aed26e0192c10e37236
--- /dev/null
+++ b/lib/plugins/usermanager/lang/cy/delete.txt
@@ -0,0 +1 @@
+===== Dileu defnyddiwr =====
diff --git a/lib/plugins/usermanager/lang/cy/edit.txt b/lib/plugins/usermanager/lang/cy/edit.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3fcb6d1d2272756455e6e9bda710954267f7a35d
--- /dev/null
+++ b/lib/plugins/usermanager/lang/cy/edit.txt
@@ -0,0 +1 @@
+===== Golygu defnyddiwr =====
diff --git a/lib/plugins/usermanager/lang/cy/import.txt b/lib/plugins/usermanager/lang/cy/import.txt
new file mode 100644
index 0000000000000000000000000000000000000000..211e8cf24f7e7dcc9b5fb5a71dc7a64aad03c9de
--- /dev/null
+++ b/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/lib/plugins/usermanager/lang/cy/intro.txt b/lib/plugins/usermanager/lang/cy/intro.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a381a30764bd6b79fe4b87bd3f70cbaa4ec70688
--- /dev/null
+++ b/lib/plugins/usermanager/lang/cy/intro.txt
@@ -0,0 +1 @@
+====== Rheolwr Defnyddwyr ======
diff --git a/lib/plugins/usermanager/lang/cy/lang.php b/lib/plugins/usermanager/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..5120d39e24d043db945d1ec9d99748ac42d1eb26
--- /dev/null
+++ b/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/lib/plugins/usermanager/lang/cy/list.txt b/lib/plugins/usermanager/lang/cy/list.txt
new file mode 100644
index 0000000000000000000000000000000000000000..653177491f70178b928ebafd27c0d6f40572dcc4
--- /dev/null
+++ b/lib/plugins/usermanager/lang/cy/list.txt
@@ -0,0 +1 @@
+===== Rhestr Defnyddwyr =====
diff --git a/lib/plugins/usermanager/lang/de/lang.php b/lib/plugins/usermanager/lang/de/lang.php
index 4b297b0dc257e02a0646ff3ee65ee57fd542a434..a388eb53152f801f0b9eaf2fa31653c79f0d40c0 100644
--- a/lib/plugins/usermanager/lang/de/lang.php
+++ b/lib/plugins/usermanager/lang/de/lang.php
@@ -22,6 +22,8 @@
  * @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>
  */
 $lang['menu']                  = 'Benutzerverwaltung';
 $lang['noauth']                = '(Authentifizierungssystem nicht verfügbar)';
@@ -82,3 +84,10 @@ $lang['import_error_readfail'] = 'Import fehlgeschlagen. Die hochgeladene Datei
 $lang['import_error_create']   = 'User konnte nicht angelegt werden';
 $lang['import_notify_fail']    = 'Notifikation 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_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/lib/plugins/usermanager/lang/en/lang.php b/lib/plugins/usermanager/lang/en/lang.php
index b55ecc998e9d9643121da1c73ae2fd397b9fe351..5f47673f3855ad2150ed0bf2fe4667cb2a30b557 100644
--- a/lib/plugins/usermanager/lang/en/lang.php
+++ b/lib/plugins/usermanager/lang/en/lang.php
@@ -76,3 +76,11 @@ $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/lib/plugins/usermanager/lang/es/lang.php b/lib/plugins/usermanager/lang/es/lang.php
index 284d50f34c5db6bfd9f2e9e4c92c0ec81d581f15..57752de068e4318aea9a9cf213bdf385533aa3ee 100644
--- a/lib/plugins/usermanager/lang/es/lang.php
+++ b/lib/plugins/usermanager/lang/es/lang.php
@@ -28,6 +28,7 @@
  * @author Antonio Castilla <antoniocastilla@trazoide.com>
  * @author Jonathan Hernández <me@jhalicea.com>
  * @author Domingo Redal <docxml@gmail.com>
+ * @author solohazlo <solohhazlo@gmail.com>
  */
 $lang['menu']                  = 'Administración de usuarios';
 $lang['noauth']                = '(la autenticación de usuarios no está disponible)';
@@ -88,3 +89,6 @@ $lang['import_error_readfail'] = 'Error al importar. No se puede leer el archivo
 $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_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.';
diff --git a/lib/plugins/usermanager/lang/fa/import.txt b/lib/plugins/usermanager/lang/fa/import.txt
new file mode 100644
index 0000000000000000000000000000000000000000..562a28aa5cb71460bf9facd94712d84a4d27658e
--- /dev/null
+++ b/lib/plugins/usermanager/lang/fa/import.txt
@@ -0,0 +1,6 @@
+ =====  اضافه کردن کاربر =====
+
+برای اینکار یک فایل CSV با حداقل چهار ستون لازم است. ستون‌ها به ترتیب باید شامل id کاربر، نام کامل کاربر، آدرس ایمیل و گروه‌های کاربری او باشند.
+خانه‌های جدول CSV باید به وسیلهٔ کاما (,) و رشته‌ها با علامت نقل قول (%%""%%) از هم جدا شوند. علامت واکج‌خط (\) می‌تواند برای غیرفعال کردن معنای کاراکترها استفاده شود. برای دیدن یک نمونه از فایل مناسب، از گزینهٔ "خروجی کاربران" در بالا استفاده کنید. id های تکراری در جدول در نظر گرفته نمی‌شوند.
+
+به ازای هر کاربری که با موفقیت اضافه شود یک رمز تولید و ایمیل می‌شود.
\ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/fa/lang.php b/lib/plugins/usermanager/lang/fa/lang.php
index bb2505a2774e949afb7fe3f13e9521adce285e9e..cfa14f23b3b02e567933d29c39a3c5a9135178ad 100644
--- a/lib/plugins/usermanager/lang/fa/lang.php
+++ b/lib/plugins/usermanager/lang/fa/lang.php
@@ -12,6 +12,7 @@
  * @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']                = '(معتبرسازی کاربر ممکن نیست)';
@@ -34,7 +35,10 @@ $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 کاربر.';
@@ -56,3 +60,24 @@ $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/lib/plugins/usermanager/lang/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php
index dd0e64fc4d6433f177fe0e0f2e7d06d70bbc3bc8..eef81c6c5bf0fd98f68d864c2d5e53054a875311 100644
--- a/lib/plugins/usermanager/lang/fr/lang.php
+++ b/lib/plugins/usermanager/lang/fr/lang.php
@@ -15,15 +15,15 @@
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
  * @author Johan Guilbaud <guilbaud.johan@gmail.com>
- * @author schplurtz@laposte.net
  * @author skimpax@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 schplurtz <Schplurtz@laposte.net>
  * @author Jérôme Brandt <jeromebrandt@gmail.com>
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ * @author Olivier Humbert <trebmuh@tuxfamily.org>
  */
 $lang['menu']                  = 'Gestion des utilisateurs';
 $lang['noauth']                = '(authentification de l\'utilisateur non disponible)';
@@ -84,3 +84,11 @@ $lang['import_error_readfail'] = 'L\'import a échoué. Impossible de lire le fi
 $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 adressse 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/lib/plugins/usermanager/lang/it/import.txt b/lib/plugins/usermanager/lang/it/import.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ed7b0001183d9f8a2c1e7111aec9ae779a5e4e3f
--- /dev/null
+++ b/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/lib/plugins/usermanager/lang/it/lang.php b/lib/plugins/usermanager/lang/it/lang.php
index ffded3481af1d33a162dad226b60d63bc32e7ec4..fe52d5e91a877b78ac552805670303dbf123d80b 100644
--- a/lib/plugins/usermanager/lang/it/lang.php
+++ b/lib/plugins/usermanager/lang/it/lang.php
@@ -18,6 +18,7 @@
  * @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)';
@@ -65,6 +66,8 @@ $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.';
@@ -74,3 +77,13 @@ $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/lib/plugins/usermanager/lang/ja/lang.php b/lib/plugins/usermanager/lang/ja/lang.php
index c7952d8f0f54acabd5b46cee0d00e87afe137e33..ad55a3e8ae97e4b4060e340c2467f0533325633b 100644
--- a/lib/plugins/usermanager/lang/ja/lang.php
+++ b/lib/plugins/usermanager/lang/ja/lang.php
@@ -72,3 +72,11 @@ $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/lib/plugins/usermanager/lang/ko/lang.php b/lib/plugins/usermanager/lang/ko/lang.php
index ec55d55866f30b9a2a2024fe4d1a32853b4866a5..af020a72df9401c29577005f4b16ee8389c02ba5 100644
--- a/lib/plugins/usermanager/lang/ko/lang.php
+++ b/lib/plugins/usermanager/lang/ko/lang.php
@@ -11,6 +11,7 @@
  * @author Myeongjin <aranet100@gmail.com>
  * @author Gerrit Uitslag <klapinklapin@gmail.com>
  * @author Garam <rowain8@gmail.com>
+ * @author Erial <erial2@gmail.com>
  */
 $lang['menu']                  = '사용자 관리자';
 $lang['noauth']                = '(사용자 인증을 사용할 수 없습니다)';
@@ -71,3 +72,11 @@ $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/lib/plugins/usermanager/lang/nl/lang.php b/lib/plugins/usermanager/lang/nl/lang.php
index 3f9902e141e6478ae4b1740db5fc18b3699e08d3..ea85d0f7b73e2b28cc45c2eccb5723b75a7ecba2 100644
--- a/lib/plugins/usermanager/lang/nl/lang.php
+++ b/lib/plugins/usermanager/lang/nl/lang.php
@@ -16,6 +16,7 @@
  * @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)';
@@ -76,3 +77,11 @@ $lang['import_error_readfail'] = 'Importeren mislukt. Lezen van het geüploade b
 $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/lib/plugins/usermanager/lang/pt-br/lang.php b/lib/plugins/usermanager/lang/pt-br/lang.php
index 356d139ebed6ee251a6510b2ede3870fee050c22..4c6ada86201fa5230c845ea431e20e066abc4b8d 100644
--- a/lib/plugins/usermanager/lang/pt-br/lang.php
+++ b/lib/plugins/usermanager/lang/pt-br/lang.php
@@ -21,6 +21,7 @@
  * @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>
  */
 $lang['menu']                  = 'Gerenciamento de Usuários';
 $lang['noauth']                = '(o gerenciamento de usuários não está disponível)';
@@ -81,3 +82,9 @@ $lang['import_error_readfail'] = 'Falha na Importação: Habilitar para ler o ar
 $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_mail_missing'] = 'Por favor entre com um endereço de e-mail para o novo usuário.';
+$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/lib/plugins/usermanager/lang/pt/lang.php b/lib/plugins/usermanager/lang/pt/lang.php
index a0b70d2d9ab00ac56e0a4e0e64e08f7468242bb0..86885e415e3d0a69f994874dc3acd0996d4ebb55 100644
--- a/lib/plugins/usermanager/lang/pt/lang.php
+++ b/lib/plugins/usermanager/lang/pt/lang.php
@@ -11,6 +11,7 @@
  * @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>
  */
 $lang['menu']                  = 'Gestor de Perfis';
 $lang['noauth']                = '(autenticação indisponível)';
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index de650d6815079c26469dc03082586e0b294ca4a2..ca39b879597cbe7b3112421fb11b13e24712416f 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -22,6 +22,7 @@
  * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
  * @author Igor Degraf <igordegraf@gmail.com>
  * @author Vitaly Filatenko <kot@hacktest.net>
+ * @author dimsharav <dimsharav@gmail.com>
  */
 $lang['menu']                  = 'Управление пользователями';
 $lang['noauth']                = '(авторизация пользователей недоступна)';
@@ -45,8 +46,8 @@ $lang['search_prompt']         = 'Искать';
 $lang['clear']                 = 'Сброс фильтра поиска';
 $lang['filter']                = 'Фильтр';
 $lang['export_all']            = 'Экспорт всех пользователей (CSV)';
-$lang['export_filtered']       = 'Экспорт пользователей с фильтрацией списка (CSV)';
-$lang['import']                = 'Импорт новых пользователей';
+$lang['export_filtered']       = 'Экспорт отфильтрованного списка пользователей (CSV)';
+$lang['import']                = 'импортировать новых пользователей';
 $lang['line']                  = 'Строка №';
 $lang['error']                 = 'Ошибка';
 $lang['summary']               = 'Показаны пользователи %1$d–%2$d из %3$d найденных. Всего пользователей: %4$d.';
@@ -60,11 +61,11 @@ $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['edit_usermissing']      = 'Выбранный пользователь не найден. Возможно, указанный логин был удалён или изменён извне.';
+$lang['user_notify']           = 'Оповестить пользователя';
+$lang['note_notify']           = 'Письма с уведомлением высылаются только в случае получения нового пароля.';
+$lang['note_group']            = 'Если группа не указана, новые пользователи будут добавлены в группу по умолчанию (%s).';
+$lang['note_pass']             = 'Пароль будет сгенерирован автоматически, если поле оставлено пустым и включено уведомление пользователя.';
 $lang['add_ok']                = 'Пользователь успешно добавлен';
 $lang['add_fail']              = 'Не удалось добавить пользователя';
 $lang['notify_ok']             = 'Письмо с уведомлением отправлено';
@@ -72,7 +73,7 @@ $lang['notify_fail']           = 'Не удалось отправить пис
 $lang['import_userlistcsv']    = 'Файл со списком пользователей (CSV):';
 $lang['import_header']         = 'Последний импорт — список ошибок';
 $lang['import_success_count']  = 'Импорт пользователей: %d пользователей найдено, %d импортировано успешно.';
-$lang['import_failure_count']  = 'Импорт пользователей: %d не удалось. Список ошибок прочтите ниже.';
+$lang['import_failure_count']  = 'Импорт пользователей: %d не удалось. Ошибки перечислены ниже.';
 $lang['import_error_fields']   = 'Не все поля заполнены. Найдено %d, а нужно: 4.';
 $lang['import_error_baduserid'] = 'Отсутствует идентификатор пользователя';
 $lang['import_error_badname']  = 'Имя не годится';
@@ -82,3 +83,10 @@ $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 в настоящее время невозможно.';
diff --git a/lib/plugins/usermanager/lang/sk/lang.php b/lib/plugins/usermanager/lang/sk/lang.php
index 535f77972a9b93a8dfe785e33e0bb065b82bc462..a3ae713953e344484b60395829305dbe04179788 100644
--- a/lib/plugins/usermanager/lang/sk/lang.php
+++ b/lib/plugins/usermanager/lang/sk/lang.php
@@ -40,7 +40,7 @@ $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 užívateľa, užívateľské meno (%s) už existuje (iné zmeny budú zaznamenané).';
+$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';
diff --git a/lib/plugins/usermanager/lang/zh/lang.php b/lib/plugins/usermanager/lang/zh/lang.php
index b833c6ce4650ab37846eb69b86afc9468aab8fb0..69d0c818907aa7bab2cdc3abbd8737ebac556b92 100644
--- a/lib/plugins/usermanager/lang/zh/lang.php
+++ b/lib/plugins/usermanager/lang/zh/lang.php
@@ -18,6 +18,7 @@
  * @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']                = '(用户认证不可用)';
@@ -78,3 +79,11 @@ $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/lib/scripts/qsearch.js b/lib/scripts/qsearch.js
index 95c632e45de1e0ed1f2a12f7dd47fdb933e33931..56cf8df2580ea6608ba7b7d8897aee9481be8891 100644
--- a/lib/scripts/qsearch.js
+++ b/lib/scripts/qsearch.js
@@ -45,6 +45,7 @@ jQuery.fn.dw_qsearch = function (overrides) {
                     dw_qsearch.clear_results();
                     return;
                 }
+                dw_qsearch.$inObj.parents('form').addClass('searching');
                 dw_qsearch.curRequest = jQuery.post(
                     DOKU_BASE + 'lib/exe/ajax.php',
                     {
@@ -81,6 +82,7 @@ jQuery.fn.dw_qsearch = function (overrides) {
          * Empty and hide the output div
          */
         clear_results: function () {
+            dw_qsearch.$inObj.parents('form').removeClass('searching');
             dw_qsearch.$outObj.hide();
             dw_qsearch.$outObj.text('');
         },
@@ -95,6 +97,7 @@ jQuery.fn.dw_qsearch = function (overrides) {
          */
         onCompletion: function (data) {
             var max, $links, too_big;
+            dw_qsearch.$inObj.parents('form').removeClass('searching');
 
             dw_qsearch.curRequest = null;
 
diff --git a/lib/tpl/dokuwiki/lang/bg/lang.php b/lib/tpl/dokuwiki/lang/bg/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..7717607c06770d511bf35a8de11abad0a1b2a6a6
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/bg/lang.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Kiril <neohidra@gmail.com>
+ */
+$lang['__background_site__']   = 'Цвят за фона, под съдъжанието';
+$lang['__link__']              = 'Стандартен цвят за препратка';
+$lang['__existing__']          = 'Цвят за препратка към съществуващи станици';
+$lang['__missing__']           = 'Цвят за препратка към несъществуващи станици';
+$lang['__site_width__']        = 'Ширина на целия сайт (може да бъде всяка мерна единица:%, px, em, ...)';
+$lang['__sidebar_width__']     = 'Ширина на страничната лента (може да бъде всяка мерна единица:%, px, em, ...)';
diff --git a/lib/tpl/dokuwiki/lang/cs/lang.php b/lib/tpl/dokuwiki/lang/cs/lang.php
index 0f03ba491279d07f93d7bae9ffbbc3a0e8e953f4..6599c73cb8442d0c98b69bef5e6855a11851de3a 100644
--- a/lib/tpl/dokuwiki/lang/cs/lang.php
+++ b/lib/tpl/dokuwiki/lang/cs/lang.php
@@ -5,6 +5,11 @@
  * 
  * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
  */
+$lang['__background_site__']   = 'Barva hlavního pozadí (pod kontextovým boxem)';
 $lang['__link__']              = 'Hlavní barva odkazů';
 $lang['__existing__']          = 'Barva odkazů na existující stránky';
 $lang['__missing__']           = 'Barva odkazů na neexistující stránky';
+$lang['__site_width__']        = 'Šířka plné stránky (jakákoliv jednotka délky: %, px, em, ...)';
+$lang['__sidebar_width__']     = 'Šířka postranního panelu, pokud je použit (jakákoliv jednotka délky: %, px, em, ...)';
+$lang['__tablet_width__']      = 'Přepnout stránku do módu pro tablet pro velikost obrazovky menší než';
+$lang['__phone_width__']       = 'Přepnout stránku do módu pro telefon pro velikost obrazovky menší než';
diff --git a/lib/tpl/dokuwiki/lang/cs/style.txt b/lib/tpl/dokuwiki/lang/cs/style.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e2ebe22b371ce84f91eeb39532e376e25a18dd7b
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/cs/style.txt
@@ -0,0 +1,2 @@
+Pokud chcete upravit logo, jednoduše použijte Media Manager pro nahrání obrázku "logo.png" do kořenového jmenného prostoru "wiki" a ten bude poté použit jako logo. Můžete nahrát také ikonu "favicon.ico".
+Pokud používáte neveřejnou wiki, doporučujeme udělit plná práva pro čtení prostoru "wiki" (nebo root) v nastavení ACL, jinak nebude vlastní logo zobrazeno nepřihlášeným uživatelům.
\ No newline at end of file
diff --git a/lib/tpl/dokuwiki/lang/cy/lang.php b/lib/tpl/dokuwiki/lang/cy/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..860ce8f156bc535d42f332bf0b8afd9e961f2930
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/cy/lang.php
@@ -0,0 +1,12 @@
+<?php
+
+// style.ini values
+
+$lang['__background_site__'] = 'Lliw am y cefndir (tu ôl y blwch cynnwys)';
+$lang['__link__']     = 'Lliw dolenni cyffredinol';
+$lang['__existing__'] = 'Lliw dolenni i dudalennau sy\'n bodoli';
+$lang['__missing__']  = 'Lliw dolenni i dudalennau sy ddim yn bodoli';
+$lang['__site_width__']    = 'Lled y safle cyfan (unrhyw uned: %, px, em, ...)';
+$lang['__sidebar_width__'] = 'Lled y bar ochr, os oes un (unrhyw uned: %, px, em, ...)';
+$lang['__tablet_width__']  = 'O dan y lled sgrin hwn, bydd y safle yn newid i fodd tabled';
+$lang['__phone_width__']   = 'O dan y lled sgrin hwn, bydd y safle yn newid i fodd ffôn';
diff --git a/lib/tpl/dokuwiki/lang/cy/style.txt b/lib/tpl/dokuwiki/lang/cy/style.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ce87798a0e48c920f0c354e2b2536b8fd6d0be17
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/cy/style.txt
@@ -0,0 +1,4 @@
+Os ydych chi am newid y logo, defnyddiwch y Rheolwr Cyfrwng i lanlwytho ''logo.png'' i ''wici'' neu wraidd y namespace
+a chaiff ei ddefnyddio'n awtomatig. Gallwch chi hefyd lanlwytho ''favicon.ico'' yna. Os ydych chi'n defnyddio
+wici caeedig, awgrymwyd eich bod chi'n gwneud y ''wici'' (new wraidd) y namespace yn ddarllenadwy i bawb yn y
+gosodiadau ACL neu na chaiff eich logo chi ei weld gan ddefnyddwyr sydd heb fewngofnodi.
diff --git a/lib/tpl/dokuwiki/lang/fa/lang.php b/lib/tpl/dokuwiki/lang/fa/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..cb2e95ee4adab7653442bb5721ad885d56eff24a
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/fa/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
+ */
+$lang['__background_site__']   = 'رنگ پس‌زمینه (پشت جعبهٔ متن)';
+$lang['__link__']              = 'رنگ لینک معمول';
+$lang['__existing__']          = 'رنگ برای لینک به صفحات موجود';
+$lang['__missing__']           = 'رنگ برای لینک به صفحات ناموجود';
+$lang['__site_width__']        = 'عرض کل سایت (از واحدهای طول شامل % یا px یا em و ... می‌شود استفاده کرد)';
+$lang['__sidebar_width__']     = 'عرض نوار کناری درصورت وجود (از واحدهای طول شامل % یا px یا em و ... می‌شود استفاده کرد)';
+$lang['__tablet_width__']      = 'در پایین اندازه‌های صفحه با این عرض وقتی که در تبلت باز می‌شود';
+$lang['__phone_width__']       = 'در پایین اندازه‌های صفحه با این عرض وقتی که در تلفن موبایل باز می‌شود';
diff --git a/lib/tpl/dokuwiki/lang/fa/style.txt b/lib/tpl/dokuwiki/lang/fa/style.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f9009fd0866f5709cfdda231f03fc854f4f6f850
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/fa/style.txt
@@ -0,0 +1 @@
+اگر می‌خواهید یک لوگو تنظیم کنید، به راحتی مدیریت رسانه‌ها را باز کنید و یک تصویر با نام ''logo.png'' در فضای نام اصلی یا ''wiki'' آپلود کنید. سپس لوگو به صورت اتوماتیک مورد استفاده قرار می‌گیرد. همچنین می‌توانید یک ''favicon.ico'' در آن‌جا آپلود کنید. اگر از ویکی بسته استفاده می‌کنید پیشنهاد می‌شود که فضای نام ویکی (یا اصلی) در تنظیمات خواندنی به همه باشد یا درغیر اینصورت لوگو به کاربرانی که وارد نشده باشند نمایش داده نمی‌شود.
\ No newline at end of file
diff --git a/lib/tpl/dokuwiki/lang/it/lang.php b/lib/tpl/dokuwiki/lang/it/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..954f0f753bfdaf565851f58b4e17ce4ee6f1848b
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/it/lang.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Torpedo <dgtorpedo@gmail.com>
+ */
+$lang['__background_site__']   = 'Colore per lo sfondo di livello più basso (dietro il riquadro del contenuto)';
+$lang['__link__']              = 'Colore generale per i link';
+$lang['__existing__']          = 'Colore per i collegamenti alle pagine esistenti';
+$lang['__missing__']           = 'Colore per i collegamenti alle pagine non esistenti';
+$lang['__site_width__']        = 'Larghezza dell\'intero sito (può essere una qualunque unità di lunghezza: %, px, em, ...)';
+$lang['__sidebar_width__']     = 'Larghezza della barra laterale, se presente (può essere una qualunque unità di lunghezza: %, px, em, ...)';
+$lang['__tablet_width__']      = 'Per dimensioni dello schermo al di sotto di questa larghezza, il sito passa in modalità tablet';
+$lang['__phone_width__']       = 'Per dimensioni dello schermo al di sotto di questa larghezza, il sito passa in modalità telefono';
diff --git a/lib/tpl/dokuwiki/lang/it/style.txt b/lib/tpl/dokuwiki/lang/it/style.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1179f086a2148b0d4cd696dfb2026bd914aa29f2
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/it/style.txt
@@ -0,0 +1 @@
+Se vuoi modificare il logo, semplicemente usa Media Manager per caricare un ''logo.png'' in ''wiki'' o nella directory root e questo verrà automaticamente usato. Qui puoi anche caricare una ''favicon.ico''. Se utilizzi un wiki chiuso si raccomanda di rendere la directory ''wiki'' (o root) leggibile a tutti, nelle impostazioni ACL, altrimenti il tuo logo non sarà visibile agli utenti che non hanno effettuato l'accesso.
\ No newline at end of file
diff --git a/lib/tpl/dokuwiki/lang/ru/lang.php b/lib/tpl/dokuwiki/lang/ru/lang.php
index 09492cda7e84ec357200fd9f9ce1b5c218199a39..66066b13c43745b7a062ffe63fddcf77adf8054a 100644
--- a/lib/tpl/dokuwiki/lang/ru/lang.php
+++ b/lib/tpl/dokuwiki/lang/ru/lang.php
@@ -4,11 +4,13 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * 
  * @author RainbowSpike <1@2.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
  */
 $lang['__background_site__']   = 'Цвет для дальнего фона (за окном содержимого)';
 $lang['__link__']              = 'Основной цвет ссылок';
-$lang['__existing__']          = 'Цвет существующих ссылок';
-$lang['__missing__']           = 'Цвет несуществующих ссылок';
+$lang['__existing__']          = 'Цвет ссылок на существующие страницы';
+$lang['__missing__']           = 'Цвет ссылок на несуществующие страницы';
 $lang['__site_width__']        = 'Ширина всего сайта (любые CSS-единицы)';
-$lang['__sidebar_width__']     = 'Ширина сайдбара, если есть (любые CSS-единицы)';
-$lang['__tablet_width__']      = 'Переключать сайт в планшетный вид ниже ширины';
+$lang['__sidebar_width__']     = 'Ширина боковой панели, если есть (любые CSS-единицы)';
+$lang['__tablet_width__']      = 'Переключать сайт в планшетный вид ниже ширины';
+$lang['__phone_width__']       = 'Переключать сайт в мобильный вид ниже ширины';
diff --git a/lib/tpl/dokuwiki/lang/ru/style.txt b/lib/tpl/dokuwiki/lang/ru/style.txt
new file mode 100644
index 0000000000000000000000000000000000000000..43bdcd162afbb47c03b2f1c6d3e53b8eda27b170
--- /dev/null
+++ b/lib/tpl/dokuwiki/lang/ru/style.txt
@@ -0,0 +1 @@
+Если вы хотите изменить логотип, просто используйте «Управление медиафайлами» для загрузки файла ''logo.png'' в корневое пространство имён или ''wiki'', и тогда он будет использоваться автоматически. Туда же вы можете загрузить ''favicon.ico''. Если у вас «закрытая» вики, рекомендуется указать права на «чтение» в списках контроля доступа для пространства имён ''wiki'' (или корневое), иначе логотип не будет показываться незалогинившимся пользователям.
\ No newline at end of file
diff --git a/lib/tpl/dokuwiki/lang/sk/lang.php b/lib/tpl/dokuwiki/lang/sk/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..ca611f838dd8aba9dee14b189c84699519a8e93a
--- /dev/null
+++ b/lib/tpl/dokuwiki/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['__background_site__']   = 'Farba základného pozadia (za oknom s obsahom)';
+$lang['__link__']              = 'Všeobecná farba odkazu';
+$lang['__existing__']          = 'Farba odkazov na existujúce stránky';
+$lang['__missing__']           = 'Farba odkazov na neexistujúce stránky';