diff --git a/_test/cases/inc/DifferenceEngine.test.php b/_test/cases/inc/DifferenceEngine.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..294f0e6e332f2084aa859adf70f320e786fb0e87
--- /dev/null
+++ b/_test/cases/inc/DifferenceEngine.test.php
@@ -0,0 +1,31 @@
+<?php
+require_once DOKU_INC.'inc/DifferenceEngine.php';
+
+class differenceengine_test extends UnitTestCase {
+
+    function test_white_between_words(){
+        // From FS#2161
+        global $lang;
+
+        $df = new Diff(explode("\n","example"),
+                       explode("\n","example example2"));
+
+        $idf = new InlineDiffFormatter();
+        $tdf = new TableDiffFormatter();
+
+        $this->assertEqual($idf->format($df), '<tr><td colspan="4" class="diff-blockheader">@@ ' . $lang['line'] .
+                                              ' -1 +1 @@&nbsp;<span class="diff-deletedline"><del>' . $lang['deleted'] .
+                                              '</del></span>&nbsp;<span class="diff-addedline">' . $lang['created'] .
+                                              '</span></td></tr>
+
+<tr><td colspan="4">example&nbsp;<span class="diff-addedline">example2</span></td></tr>
+');
+        $this->assertEqual($tdf->format($df),
+                           '<tr><td class="diff-blockheader" colspan="2">' . $lang['line'] . ' 1:</td>
+&nbsp; &nbsp;&nbsp;<td class="diff-blockheader" colspan="2">' . $lang['line'] . ' 1:</td>
+</tr>
+<tr><td>-</td><td class="diff-deletedline">example</td><td>+</td><td class="diff-addedline">example&nbsp;<strong>example2</strong></td></tr>
+');
+    }
+}
+//Setup VIM: ex: et ts=4 :
diff --git a/_test/cases/inc/auth_password.test.php b/_test/cases/inc/auth_password.test.php
index 140c7c23e75f2614c7a95b60543f35534a93f45d..8646e32261da79152a2075afae597fc379111c9a 100644
--- a/_test/cases/inc/auth_password.test.php
+++ b/_test/cases/inc/auth_password.test.php
@@ -18,6 +18,8 @@ class auth_password_test extends UnitTestCase {
         'kmd5'  => 'a579299436d7969791189acadd86fcb716',
         'pmd5'  => '$P$abcdefgh1RC6Fd32heUzl7EYCG9uGw.',
         'hmd5'  => '$H$abcdefgh1ZbJodHxmeXVAhEzTG7IAp.',
+        'djangomd5'  => 'md5$abcde$d0fdddeda8cd92725d2b54148ac09158',
+        'djangosha1' => 'sha1$abcde$c8e65a7f0acc9158843048a53dcc5a6bc4d17678',
     );
 
 
@@ -37,6 +39,16 @@ class auth_password_test extends UnitTestCase {
         }
     }
 
+    function test_verifySelf(){
+        foreach($this->passes as $method => $hash){
+            $info = "testing method $method";
+            $this->signal('failinfo',$info);
+
+            $hash = auth_cryptPassword('foo'.$method);
+            $this->assertTrue(auth_verifyPassword('foo'.$method,$hash));
+        }
+    }
+
     function test_verifyPassword_nohash(){
         $this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/'));
     }
diff --git a/_test/cases/inc/mail_isvalid.test.php b/_test/cases/inc/mail_isvalid.test.php
index 4e047499faef22ab4a008a8f4b0aabdab272655a..d8c88765e342c0babd24719baf4abee6f212b121 100644
--- a/_test/cases/inc/mail_isvalid.test.php
+++ b/_test/cases/inc/mail_isvalid.test.php
@@ -25,7 +25,8 @@ class mail_isvalid extends UnitTestCase {
         $tests[] = array('bu[g]s@php.net1',false);
         $tests[] = array('somebody@somewhere.museum',true);
         $tests[] = array('somebody@somewhere.travel',true);
-
+        $tests[] = array('root@[2010:fb:fdac::311:2101]',true);
+        $tests[] = array('test@example', true); // we allow local addresses
 
         // tests from http://code.google.com/p/php-email-address-validation/ below
 
@@ -62,7 +63,6 @@ class mail_isvalid extends UnitTestCase {
         $tests[] = array('test@.org', false);
         $tests[] = array('12345678901234567890123456789012345678901234567890123456789012345@example.com', false); // 64 characters is maximum length for local part. This is 65.
         $tests[] = array('test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com', false); // 255 characters is maximum length for domain. This is 256.
-        $tests[] = array('test@example', false);
         $tests[] = array('test@[123.123.123.123', false);
         $tests[] = array('test@123.123.123.123]', false);
 
diff --git a/_test/cases/inc/parser/parser_eol.test.php b/_test/cases/inc/parser/parser_eol.test.php
index 8d3a812b2529c8e706e073ec55ac283023fe467b..692882c6c6a95f2e8c2d9600b42ff01a938b9190 100644
--- a/_test/cases/inc/parser/parser_eol.test.php
+++ b/_test/cases/inc/parser/parser_eol.test.php
@@ -13,7 +13,7 @@ class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar".DOKU_PARSER_EOL)),
+            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -29,7 +29,7 @@ class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
             array('cdata',array("Foo")),
             array('p_close',array()),
             array('p_open',array()),
-            array('cdata',array("bar".DOKU_PARSER_EOL."Foo".DOKU_PARSER_EOL)),
+            array('cdata',array("bar".DOKU_PARSER_EOL."Foo")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -42,7 +42,7 @@ class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar".DOKU_PARSER_EOL)),
+            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -57,7 +57,7 @@ class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\nFoo")),
             array('linebreak',array()),
-            array('cdata',array("Bar\n")),
+            array('cdata',array("Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -76,7 +76,7 @@ class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
             array('linebreak',array()),
             array('p_close',array()),
             array('p_open',array()),
-            array('cdata',array("Bar".DOKU_PARSER_EOL)),
+            array('cdata',array("Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -89,7 +89,7 @@ class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\n".'Foo\\\\Bar'."\n")),
+            array('cdata',array("\n".'Foo\\\\Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_footnote.test.php b/_test/cases/inc/parser/parser_footnote.test.php
index a1da2ab06b34841a5cfc87e26c355c0742baed00..e3571d8e7733a5fe663522c80e3171785119e5b2 100644
--- a/_test/cases/inc/parser/parser_footnote.test.php
+++ b/_test/cases/inc/parser/parser_footnote.test.php
@@ -23,7 +23,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' testing ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -35,7 +35,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nFoo (( testing\n Bar\n")),
+            array('cdata',array("\nFoo (( testing\n Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -54,7 +54,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(" testing\ntesting ")),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'.DOKU_PARSER_EOL)),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -72,7 +72,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' x((y')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array('z )) Bar'."\n")),
+            array('cdata',array('z )) Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -91,7 +91,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(" test\ning ")),
               array('footnote_close',array()),
             ))),
-            array('cdata',array('Y'.DOKU_PARSER_EOL.' Bar'.DOKU_PARSER_EOL)),
+            array('cdata',array('Y'.DOKU_PARSER_EOL.' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -114,7 +114,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -135,7 +135,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array("\n ")),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -156,7 +156,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -177,7 +177,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -199,7 +199,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'.DOKU_PARSER_EOL)),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -221,7 +221,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -240,7 +240,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(" \n====Test====\n ")),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -286,7 +286,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -328,7 +328,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -356,7 +356,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
               array('cdata',array(' ')),
               array('footnote_close',array()),
             ))),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -381,7 +381,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
             ))),
             array('cdata',array(" ")),
             array('strong_close',array()),
-            array('cdata',array(" c ))\n")),
+            array('cdata',array(" c ))")),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_formatting.test.php b/_test/cases/inc/parser/parser_formatting.test.php
index f2eda81b87b300cdcab3cba3746163c655acfcf4..69c57dfb595a89d55a7782dc41857ae5df35c21f 100644
--- a/_test/cases/inc/parser/parser_formatting.test.php
+++ b/_test/cases/inc/parser/parser_formatting.test.php
@@ -17,7 +17,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('strong_open',array()),
             array('cdata',array('bar')),
             array('strong_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -30,7 +30,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc **bar def\n")),
+            array('cdata',array("\nabc **bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -47,7 +47,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('bar')),
             array('emphasis_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -64,7 +64,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('Тест: ')),
             array('emphasis_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -81,7 +81,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('b')),
             array('emphasis_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -98,7 +98,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('foo:')),
             array('emphasis_close',array()),
-            array('cdata',array(' bar// def'."\n")),
+            array('cdata',array(' bar// def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -118,7 +118,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('externallink',array('http://www.google.com', NULL)),
             array('cdata',array(' bar')),
             array('emphasis_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -131,7 +131,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc //bar def\n")),
+            array('cdata',array("\nabc //bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -148,7 +148,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('bar')),
             array('emphasis_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
                         array('p_close',array()),
             array('document_end',array()),
         );
@@ -161,7 +161,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc //http:// def\n")),
+            array('cdata',array("\nabc //http:// def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -185,7 +185,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('text:')),
             array('emphasis_close',array()),
-            array('cdata',array(" another Blablabla Blablabla\n")),
+            array('cdata',array(" another Blablabla Blablabla")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -203,7 +203,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_open',array()),
             array('cdata',array('Тест:')),
             array('emphasis_close',array()),
-            array('cdata',array("\n")),
+            array('cdata', array('')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -248,7 +248,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('underline_open',array()),
             array('cdata',array('bar')),
             array('underline_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -261,7 +261,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc __bar def\n")),
+            array('cdata',array("\nabc __bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -278,7 +278,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('monospace_open',array()),
             array('cdata',array('bar')),
             array('monospace_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -291,7 +291,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc ''bar def\n")),
+            array('cdata',array("\nabc ''bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -308,7 +308,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('subscript_open',array()),
             array('cdata',array('bar')),
             array('subscript_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -321,7 +321,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc <sub>bar def\n")),
+            array('cdata',array("\nabc <sub>bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -338,7 +338,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('superscript_open',array()),
             array('cdata',array('bar')),
             array('superscript_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -351,7 +351,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc <sup>bar def\n")),
+            array('cdata',array("\nabc <sup>bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -368,7 +368,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('deleted_open',array()),
             array('cdata',array('bar')),
             array('deleted_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -381,7 +381,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc <del>bar def\n")),
+            array('cdata',array("\nabc <del>bar def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -403,7 +403,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('emphasis_close',array()),
             array('cdata',array('c')),
             array('strong_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -424,7 +424,7 @@ class TestOfDoku_Parser_Formatting extends TestOfDoku_Parser {
             array('strong_open',array()),
             array('cdata',array('c')),
             array('strong_close',array()),
-            array('cdata',array(' def'."\n")),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_headers.test.php b/_test/cases/inc/parser/parser_headers.test.php
index e1c6783f528d23a45080e29b7ed79b93ac20135c..688bac2ebbf6c26e5c704049c8c66ce3283fdb38 100644
--- a/_test/cases/inc/parser/parser_headers.test.php
+++ b/_test/cases/inc/parser/parser_headers.test.php
@@ -13,12 +13,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',1,6)),
             array('section_open',array(1)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -32,12 +32,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',2,6)),
             array('section_open',array(2)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -51,12 +51,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',3,6)),
             array('section_open',array(3)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -70,12 +70,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',4,6)),
             array('section_open',array(4)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -89,12 +89,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',5,6)),
             array('section_open',array(5)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -108,12 +108,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',2,6)),
             array('section_open',array(2)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -127,12 +127,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',2,6)),
             array('section_open',array(2)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -146,12 +146,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',1,6)),
             array('section_open',array(1)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -165,7 +165,7 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n= Header =\n def\n")),
+            array('cdata',array("\nabc \n= Header =\n def")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -179,12 +179,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('== Header ==',1,6)),
             array('section_open',array(1)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -198,12 +198,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('====== Header ======',5,6)),
             array('section_open',array(5)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -217,12 +217,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n== ====== Header\n")),
+            array('cdata',array("\nabc \n== ====== Header")),
             array('p_close',array()),
             array('header',array('',1,23)),
             array('section_open',array(1)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -243,12 +243,12 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array('abc '.DOKU_PARSER_EOL)),
+            array('cdata',array('abc ')),
             array('p_close',array()),
             array('header',array('Header',1, 6)),
             array('section_open',array(1)),
             array('p_open',array()),
-            array('cdata',array(' def'.DOKU_PARSER_EOL)),
+            array('cdata',array(' def')),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -263,18 +263,18 @@ class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc \n")),
+            array('cdata',array("\nabc ")),
             array('p_close',array()),
             array('header',array('Header',1,6)),
             array('section_open',array(1)),
             array('p_open',array()),
-            array('cdata',array("\n def abc \n")),
+            array('cdata',array("\n def abc ")),
             array('p_close',array()),
             array('section_close',array()),
             array('header',array('Header2',2,39)),
             array('section_open',array(2)),
             array('p_open',array()),
-            array('cdata',array("\n def\n")),
+            array('cdata',array("\n def")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array())
diff --git a/_test/cases/inc/parser/parser_i18n.test.php b/_test/cases/inc/parser/parser_i18n.test.php
index f0cceb69e52aec3dde9596e886ec3247b5e6de52..27ec3c78bc66bdf0c50bad71dcec19c3856074c8 100644
--- a/_test/cases/inc/parser/parser_i18n.test.php
+++ b/_test/cases/inc/parser/parser_i18n.test.php
@@ -47,7 +47,7 @@ class TestOfDoku_Parser_i18n extends TestOfDoku_Parser {
             array('deleted_open',array()),
             array('cdata',array('æ')),
             array('deleted_close',array()),
-            array('cdata',array("tiøn\n")),
+            array('cdata',array("tiøn")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -60,12 +60,12 @@ class TestOfDoku_Parser_i18n extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nFoo\n")),
+            array('cdata',array("\nFoo")),
             array('p_close',array()),
             array('header',array('Iñtërnâtiônàlizætiøn',3,5)),
             array('section_open',array(3)),
             array('p_open',array()),
-            array('cdata',array("\n Bar\n")),
+            array('cdata',array("\n Bar")),
             array('p_close',array()),
             array('section_close',array()),
             array('document_end',array()),
@@ -110,7 +110,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(153)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -126,7 +126,7 @@ def');
             array('p_open',array()),
             array('cdata',array("\nFoo ")),
             array('acronym',array('Iñtërnâtiônàlizætiøn')),
-            array('cdata',array(" Bar\n")),
+            array('cdata',array(" Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -141,7 +141,7 @@ def');
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('interwikilink',array('wp>Iñtërnâtiônàlizætiøn','Iñtërnâtiônàlizætiøn','wp','Iñtërnâtiônàlizætiøn')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -156,7 +156,7 @@ def');
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('x:Iñtërnâtiônàlizætiøn:y:foo_bar:z','Iñtërnâtiônàlizætiøn')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_links.test.php b/_test/cases/inc/parser/parser_links.test.php
index 62e3b3b991d8fe3488c250c61aea7498ba82ad17..a4a8c58266ac1c95498c708226ab6308355c2b26 100644
--- a/_test/cases/inc/parser/parser_links.test.php
+++ b/_test/cases/inc/parser/parser_links.test.php
@@ -16,7 +16,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externallink',array('http://www.google.com', NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -31,20 +31,100 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externallink',array('HTTP://WWW.GOOGLE.COM', NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
         $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
     }
 
+    function testExternalIPv4() {
+        $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
+        $this->P->parse("Foo http://123.123.3.21/foo Bar");
+        $calls = array (
+            array('document_start',array()),
+            array('p_open',array()),
+            array('cdata',array("\n".'Foo ')),
+            array('externallink',array('http://123.123.3.21/foo', NULL)),
+            array('cdata',array(' Bar')),
+            array('p_close',array()),
+            array('document_end',array()),
+        );
+        $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
+    }
+
+    function testExternalIPv6() {
+        $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
+        $this->P->parse("Foo http://[3ffe:2a00:100:7031::1]/foo Bar");
+        $calls = array (
+            array('document_start',array()),
+            array('p_open',array()),
+            array('cdata',array("\n".'Foo ')),
+            array('externallink',array('http://[3ffe:2a00:100:7031::1]/foo', NULL)),
+            array('cdata',array(' Bar')),
+            array('p_close',array()),
+            array('document_end',array()),
+        );
+        $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
+    }
+
+    function testExternalMulti(){
+        $this->teardown();
+
+        $links = array(
+            'http://www.google.com',
+            'HTTP://WWW.GOOGLE.COM',
+            'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html',
+            'http://[1080:0:0:0:8:800:200C:417A]/index.html',
+            'http://[3ffe:2a00:100:7031::1]',
+            'http://[1080::8:800:200C:417A]/foo',
+            'http://[::192.9.5.5]/ipng',
+            'http://[::FFFF:129.144.52.38]:80/index.html',
+            'http://[2010:836B:4179::836B:4179]',
+        );
+        $titles = array(false,null,'foo bar');
+        foreach($links as $link){
+            foreach($titles as $title){
+                if($title === false){
+                    $source = $link;
+                    $name   = null;
+                }elseif($title === null){
+                    $source = "[[$link]]";
+                    $name   = null;
+                }else{
+                    $source = "[[$link|$title]]";
+                    $name   = $title;
+                }
+                $this->signal('failinfo',$source);
+
+                $this->setup();
+                $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink());
+                $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
+                $this->P->parse("Foo $source Bar");
+                $calls = array (
+                    array('document_start',array()),
+                    array('p_open',array()),
+                    array('cdata',array("\n".'Foo ')),
+                    array('externallink',array($link, $name)),
+                    array('cdata',array(' Bar')),
+                    array('p_close',array()),
+                    array('document_end',array()),
+                );
+                $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
+                $this->teardown();
+            }
+        }
+
+        $this->setup();
+    }
+
     function testExternalLinkJavascript() {
         $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink());
         $this->P->parse("Foo javascript:alert('XSS'); Bar");
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nFoo javascript:alert('XSS'); Bar\n")),
+            array('cdata',array("\nFoo javascript:alert('XSS'); Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -59,7 +139,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externallink',array('http://www.google.com', 'www.google.com')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -74,15 +154,13 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externallink',array('ftp://ftp.sunsite.com', 'ftp.sunsite.com')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
         $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls);
     }
     function testEmail() {
-/*      $this->fail('The emaillink mode seems to cause php 5.0.5 to segfault');
-        return; //FIXME: is this still true?*/
         $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink());
         $this->P->parse("Foo <bugs@php.net> Bar");
         $calls = array (
@@ -90,7 +168,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('emaillink',array('bugs@php.net', NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -105,7 +183,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('emaillink',array("~fix+bug's.for/ev{e}r@php.net", NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -120,7 +198,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('emaillink',array('bugs@pHp.net', NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -136,7 +214,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('l',NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -151,7 +229,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('foo:bar',NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -166,7 +244,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('x:1:y:foo_bar:z','Test')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -181,7 +259,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('wiki:syntax#internal','Syntax')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -196,7 +274,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externallink',array('http://www.google.com','Google')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -211,7 +289,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('interwikilink',array('iw>somepage','Some Page','iw','somepage')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -226,7 +304,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('interwikilink',array('IW>somepage','Some Page','iw','somepage')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -241,7 +319,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('interwikilink',array('wp>Callback_(computer_science)','callbacks','wp','Callback_(computer_science)')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -256,7 +334,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('camelcaselink',array('FooBar')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -271,7 +349,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('filelink',array('file://temp/file.txt ',NULL)),
-            array('cdata',array('Bar'."\n")),
+            array('cdata',array('Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -286,7 +364,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externallink',array('file://temp/file.txt','Some File')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -301,7 +379,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('windowssharelink',array('\\\server\share',NULL)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -316,7 +394,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('windowssharelink',array('\\\server\share','My Documents')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -331,7 +409,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -346,7 +424,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','linkonly')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -361,7 +439,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('foo.txt','Some File',null,10,10,'cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -376,7 +454,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif',NULL,'left',NULL,NULL,'cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -391,7 +469,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif',NULL,'right',NULL,NULL,'cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -406,7 +484,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif',NULL,'center',NULL,NULL,'cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -421,7 +499,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif',NULL,NULL,'50','100','nocache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -436,7 +514,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',array('img.gif','Some Image',NULL,'50','100','cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -451,7 +529,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,NULL,NULL,'cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -466,7 +544,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,'50','100','nocache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -482,7 +560,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('cdata',array("\n".'Foo ')),
             array('externalmedia',
             array('http://www.google.com/img.gif','Some Image',NULL,'50','100','cache','details')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -509,7 +587,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('x:1:y:foo_bar:z',$image)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -536,7 +614,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('internallink',array('x:1:y:foo_bar:z',$image)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -563,7 +641,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('emaillink',array('foo@example.com',$image)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -579,7 +657,7 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser {
             array('cdata',array("\n".'Foo ')),
             array('internalmedia',
             array('img.gif','{{foo.gif|{{bar.gif|Bar',NULL,NULL,NULL,'cache','details')),
-            array('cdata',array('}}}} Bar'."\n")),
+            array('cdata',array('}}}} Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_lists.test.php b/_test/cases/inc/parser/parser_lists.test.php
index 34f0eb7602a8a9ec3846f926310669e454b1b01d..6e61da1a140046669d854664645a8c738a78ab1d 100644
--- a/_test/cases/inc/parser/parser_lists.test.php
+++ b/_test/cases/inc/parser/parser_lists.test.php
@@ -171,7 +171,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nFoo  -bar  *foo Bar\n")),
+            array('cdata',array("\nFoo  -bar  *foo Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -211,7 +211,7 @@ Bar');
             array('listitem_close',array()),
             array('listu_close',array()),
             array('p_open',array()),
-            array('cdata',array("Bar".DOKU_PARSER_EOL)),
+            array('cdata',array("Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_preformatted.test.php b/_test/cases/inc/parser/parser_preformatted.test.php
index 8e3bd591b6997422275624bba85feb98ba0ef034..7a00f3599a1709d6f203cda4ad9e9eaed26be495 100644
--- a/_test/cases/inc/parser/parser_preformatted.test.php
+++ b/_test/cases/inc/parser/parser_preformatted.test.php
@@ -17,7 +17,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('file',array('testing',null,null)),
             array('p_open',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -35,7 +35,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('code',array('testing', null, null)),
             array('p_open',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -52,7 +52,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('code',array('testing', null, null)),
             array('p_open',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -69,7 +69,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('code',array('testing', 'php', null)),
             array('p_open',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -86,7 +86,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('preformatted',array("x  \n  y  ")),
             array('p_open',array()),
-            array('cdata',array('Bar'."\n\n")),
+            array('cdata',array('Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -103,7 +103,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('preformatted',array("x  \n  y  ")),
             array('p_open',array()),
-            array('cdata',array('Bar'."\n\n")),
+            array('cdata',array('Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -120,7 +120,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('preformatted',array("x\t\n\ty\t")),
             array('p_open',array()),
-            array('cdata',array("Bar\n\n")),
+            array('cdata',array("Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -137,7 +137,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('preformatted',array("x\t\n\ty\t")),
             array('p_open',array()),
-            array('cdata',array("Bar\n\n")),
+            array('cdata',array("Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -169,7 +169,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_close',array()),
             array('preformatted',array("x  \n  y  \n-X\n*Y")),
             array('p_open',array()),
-            array('cdata',array("Bar\n\n")),
+            array('cdata',array("Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -186,7 +186,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('php',array('testing')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -203,7 +203,7 @@ class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('html',array('testing')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_quote.test.php b/_test/cases/inc/parser/parser_quote.test.php
index 5d5a7e2a55922aa0adb579b778b9f8690dada1fe..ebc5da6044cb9c8f207e78c59b497663bddec0ea 100644
--- a/_test/cases/inc/parser/parser_quote.test.php
+++ b/_test/cases/inc/parser/parser_quote.test.php
@@ -22,7 +22,7 @@ class TestOfDoku_Parser_Quote extends TestOfDoku_Parser {
             array('quote_close',array()),
             array('quote_close',array()),
             array('p_open',array()),
-            array('cdata',array("klm\n")),
+            array('cdata',array("klm")),
             array('p_close',array()),
             array('document_end',array()),
             
@@ -45,7 +45,7 @@ class TestOfDoku_Parser_Quote extends TestOfDoku_Parser {
             array('quote_close',array()),
             array('quote_close',array()),
             array('p_open',array()),
-            array('cdata',array("klm\n")),
+            array('cdata',array("klm")),
             array('p_close',array()),
             array('document_end',array()),
             
@@ -86,7 +86,7 @@ class TestOfDoku_Parser_Quote extends TestOfDoku_Parser {
             array('quote_close',array()),
             array('quote_close',array()),
             array('p_open',array()),
-            array('cdata',array("klm".DOKU_PARSER_EOL)),
+            array('cdata',array("klm")),
             array('p_close',array()),
             array('document_end',array()),
             
diff --git a/_test/cases/inc/parser/parser_quotes.test.php b/_test/cases/inc/parser/parser_quotes.test.php
index 9f191d6b081143c5635e0d2d51d610b8dae9e0e2..77e323799e87874a3bfeb64831b90f574e4c6c1f 100644
--- a/_test/cases/inc/parser/parser_quotes.test.php
+++ b/_test/cases/inc/parser/parser_quotes.test.php
@@ -22,7 +22,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('singlequoteopening',array()),
-            array('cdata',array('hello Bar'."\n")),
+            array('cdata',array('hello Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -39,7 +39,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo said:')),
             array('singlequoteopening',array()),
-            array('cdata',array('hello Bar'."\n")),
+            array('cdata',array('hello Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -56,7 +56,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo hello')),
             array('singlequoteclosing',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -73,7 +73,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo hello')),
             array('singlequoteclosing',array()),
-            array('cdata',array(') Bar'."\n")),
+            array('cdata',array(') Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -92,7 +92,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('singlequoteopening',array()),
             array('cdata',array('hello')),
             array('singlequoteclosing',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -109,7 +109,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'hey it')),
             array('apostrophe',array()),
-            array('cdata',array('s fine weather today'."\n")),
+            array('cdata',array('s fine weather today')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -129,7 +129,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('singlequoteopening',array()),
             array('cdata',array('hello')),
             array('singlequoteclosing',array()),
-            array('cdata',array(') Bar'."\n")),
+            array('cdata',array(') Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -146,7 +146,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('doublequoteopening',array()),
-            array('cdata',array('hello Bar'."\n")),
+            array('cdata',array('hello Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -163,7 +163,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo said:')),
             array('doublequoteopening',array()),
-            array('cdata',array('hello Bar'."\n")),
+            array('cdata',array('hello Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -180,7 +180,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo hello')),
             array('doublequoteclosing',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -197,7 +197,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo hello')),
             array('doublequoteclosing',array()),
-            array('cdata',array(') Bar'."\n")),
+            array('cdata',array(') Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -216,7 +216,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('doublequoteopening',array()),
             array('cdata',array('hello')),
             array('doublequoteclosing',array()),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -235,7 +235,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('doublequoteopening',array()),
             array('cdata',array('hello')),
             array('doublequoteclosing',array()),
-            array('cdata',array(') Bar'."\n")),
+            array('cdata',array(') Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -261,7 +261,7 @@ class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
             array('cdata',array('s world')),
             array('singlequoteclosing',array()),
             array('doublequoteclosing',array()),
-            array('cdata',array(".\n")),
+            array('cdata',array(".")),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_replacements.test.php b/_test/cases/inc/parser/parser_replacements.test.php
index 6aa9069a175cc5cfc5fd4d8a5fcbca649e8e8615..d277560c742754b94df2232271164ab4e17258a0 100644
--- a/_test/cases/inc/parser/parser_replacements.test.php
+++ b/_test/cases/inc/parser/parser_replacements.test.php
@@ -17,7 +17,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'abc ')),
             array('acronym',array('FOOBAR')),
-            array('cdata',array(' xyz'."\n")),
+            array('cdata',array(' xyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -32,7 +32,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\n".'abcFOOBARxyz'."\n")),
+            array('cdata',array("\n".'abcFOOBARxyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -49,7 +49,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'FOOBAR ')),
             array('acronym',array('FOO')),
-            array('cdata',array("\n")),
+            array('cdata',array('')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -68,7 +68,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('acronym',array('FOO')),
             array('cdata',array(' def ')),
             array('acronym',array('BAR')),
-            array('cdata',array(' xyz'."\n")),
+            array('cdata',array(' xyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -92,7 +92,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('acronym',array('FOO.1')),
             array('cdata',array(" ")),
             array('acronym',array('A.FOO.1')),
-            array('cdata',array("\n")),
+            array('cdata',array('')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -115,7 +115,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('acronym',array('FOO.1')),
             array('cdata',array(" ")),
             array('acronym',array('A.FOO.1')),
-            array('cdata',array("\n")),
+            array('cdata',array('')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -130,7 +130,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc:-)xyz\n")),
+            array('cdata',array("\nabc:-)xyz")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -147,7 +147,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'abc ')),
             array('smiley',array(':-)')),
-            array('cdata',array(' xyz'."\n")),
+            array('cdata',array(' xyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -162,7 +162,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc:-)x^_^yz\n")),
+            array('cdata',array("\nabc:-)x^_^yz")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -181,7 +181,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('smiley',array(':-)')),
             array('cdata',array(' x ')),
             array('smiley',array('^_^')),
-            array('cdata',array(' yz'."\n")),
+            array('cdata',array(' yz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -197,7 +197,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\nabc".':-\\\\'."xyz\n")),
+            array('cdata',array("\nabc".':-\\\\'."xyz")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -215,7 +215,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'abc ')),
             array('smiley',array(':-\\\\')),
-            array('cdata',array(' xyz'."\n")),
+            array('cdata',array(' xyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -232,7 +232,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'abc ')),
             array('wordblock',array('CAT')),
-            array('cdata',array(' xyz'."\n")),
+            array('cdata',array(' xyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -249,7 +249,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'abc ')),
             array('wordblock',array('cat')),
-            array('cdata',array(' xyz'."\n")),
+            array('cdata',array(' xyz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -268,7 +268,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('wordblock',array('cat')),
             array('cdata',array(' x ')),
             array('wordblock',array('DOG')),
-            array('cdata',array(' yz'."\n")),
+            array('cdata',array(' yz')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -285,7 +285,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'x ')),
             array('entity',array('->')),
-            array('cdata',array(' y'."\n")),
+            array('cdata',array(' y')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -304,7 +304,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('entity',array('->')),
             array('cdata',array(' y ')),
             array('entity',array('<-')),
-            array('cdata',array(' z'."\n")),
+            array('cdata',array(' z')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -321,7 +321,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('multiplyentity',array(10,20)),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -337,7 +337,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array("\n".'Foo 0x123 Bar'."\n")),
+            array('cdata',array("\n".'Foo 0x123 Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -356,7 +356,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_close',array()),
             array('hr',array()),
             array('p_open',array()),
-            array('cdata',array("\n Bar\n")),
+            array('cdata',array("\n Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -374,7 +374,7 @@ class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser {
             array('p_close',array()),
             array('hr',array()),
             array('p_open',array()),
-            array('cdata',array("\n Bar\n")),
+            array('cdata',array("\n Bar")),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_table.test.php b/_test/cases/inc/parser/parser_table.test.php
index 04bce650a8efbe6669f407f9ebe3f15c0dfbbece..12898860cdbc775c6c287132aaecb622c9947171 100644
--- a/_test/cases/inc/parser/parser_table.test.php
+++ b/_test/cases/inc/parser/parser_table.test.php
@@ -44,7 +44,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(121)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -84,7 +84,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(121)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -108,7 +108,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(7)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -142,7 +142,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(19)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -177,7 +177,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(23)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -220,7 +220,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(31)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -268,7 +268,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(51)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -306,7 +306,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(27)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -326,7 +326,7 @@ def');
         $calls = array (
             array('document_start',array()),
             array('p_open',array()),
-            array('cdata',array(DOKU_PARSER_EOL."abc")),
+            array('cdata',array("abc")),
             array('p_close',array()),
             array('table_open',array(3, 2, 6)),
             array('tablerow_open',array()),
@@ -353,7 +353,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(121)),
             array('p_open',array()),
-            array('cdata',array('def'.DOKU_PARSER_EOL)),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -408,7 +408,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(129)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -459,7 +459,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(155)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -506,7 +506,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(123)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -566,7 +566,7 @@ def');
             array('tablerow_close',array()),
             array('table_close',array(129)),
             array('p_open',array()),
-            array('cdata',array('def'."\n")),
+            array('cdata',array('def')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parser/parser_unformatted.test.php b/_test/cases/inc/parser/parser_unformatted.test.php
index 56820a27a08a35b72bce25522bac8f51319c0771..dd69564b4443b332e0581006e8ea34f29cbcfb43 100644
--- a/_test/cases/inc/parser/parser_unformatted.test.php
+++ b/_test/cases/inc/parser/parser_unformatted.test.php
@@ -15,7 +15,7 @@ class TestOfDoku_Parser_Unformatted extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('unformatted',array('testing')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
@@ -32,7 +32,7 @@ class TestOfDoku_Parser_Unformatted extends TestOfDoku_Parser {
             array('p_open',array()),
             array('cdata',array("\n".'Foo ')),
             array('unformatted',array('testing')),
-            array('cdata',array(' Bar'."\n")),
+            array('cdata',array(' Bar')),
             array('p_close',array()),
             array('document_end',array()),
         );
diff --git a/_test/cases/inc/parserutils_set_metadata_during_rendering.test.php b/_test/cases/inc/parserutils_set_metadata_during_rendering.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..8319da2983ae1c29183a6f9c928eb8f4eacb6713
--- /dev/null
+++ b/_test/cases/inc/parserutils_set_metadata_during_rendering.test.php
@@ -0,0 +1,93 @@
+<?php
+
+require_once DOKU_INC.'inc/init.php';
+
+class parserutils_set_metadata_during_rendering_test extends UnitTestCase {
+    // the id used for this test case
+    private $id;
+    // if the test case is currently running
+    private $active = false;
+    // the original plugin controller
+    private $plugin_controller;
+
+    // the actual test
+    function test_p_set_metadata_during_rendering() {
+        global $EVENT_HANDLER;
+        $this->id = 'test:p_set_metadata_during_rendering';
+        $this->active = true;
+
+        // write the wiki page so it exists and needs to be rendered
+        saveWikiText($this->id, 'Test '.time(), 'Test data setup');
+
+        $EVENT_HANDLER->register_hook('PARSER_METADATA_RENDER', 'BEFORE', $this, 'helper_set_metadata', array('test_before_set' => 'test'));
+        $EVENT_HANDLER->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, 'helper_set_metadata', array('test_after_set' => 'test'));
+        $EVENT_HANDLER->register_hook('PARSER_HANDLER_DONE', 'BEFORE', $this, 'helper_inject_test_instruction');
+
+        // Change the global plugin controller so this test can be a fake syntax plugin
+        global $plugin_controller;
+        $this->plugin_controller = $plugin_controller;
+        $plugin_controller = $this;
+
+        // the actual rendering, all hooks should be executed here
+        $newMeta = p_get_metadata($this->id);
+
+        // restore the plugin controller
+        $plugin_controller = $this->plugin_controller;
+
+        // assert that all three calls to p_set_metadata have been successful
+        $this->assertEqual($newMeta['test_before_set'], 'test');
+        $this->assertEqual($newMeta['test_after_set'], 'test');
+        $this->assertEqual($newMeta['test_during_rendering'], 'test');
+
+        // clean up
+        $this->active = false;
+
+        // make sure the saved metadata is the one that has been rendered
+        $this->assertEqual($newMeta, p_get_metadata($this->id));
+
+        saveWikiText($this->id, '', 'Test data remove');
+    }
+
+    // helper for the action plugin part of the test, tries executing p_set_metadata during rendering
+    function helper_set_metadata($event, $meta) {
+        if ($this->active) {
+            p_set_metadata($this->id, $meta, false, true);
+            $key = array_pop(array_keys($meta));
+            $this->assertTrue(is_string($meta[$key])); // ensure we really have a key
+            // ensure that the metadata property hasn't been set previously
+            $this->assertNotEqual($meta[$key], p_get_metadata($this->id, $key));
+        }
+    }
+
+    // helper for injecting an instruction for this test case
+    function helper_inject_test_instruction($event) {
+        if ($this->active)
+            $event->data->calls[] = array('plugin', array('parserutils_test', array()));
+    }
+
+    // fake syntax plugin rendering method that tries calling p_set_metadata during the actual rendering process
+    function render($format, &$renderer, $data) {
+        if ($this->active) {
+            $key = 'test_during_rendering';
+            p_set_metadata($this->id, array($key => 'test'), false, true);
+            // ensure that the metadata property hasn't been set previously
+            $this->assertNotEqual($key, p_get_metadata($this->id, $key));
+        }
+    }
+
+    // wrapper function for the fake plugin controller
+    function getList($type='',$all=false){
+        return $this->plugin_controller->getList();
+    }
+
+    // wrapper function for the fake plugin controller, return $this for the fake syntax of this test
+    function &load($type,$name,$new=false,$disabled=false){
+        if ($name == 'parserutils_test') {
+            return $this;
+        } else {
+            return $this->plugin_controller->load($type, $name, $new, $disabled);
+        }
+    }
+}
+
+// vim:ts=4:sw=4:et:
diff --git a/conf/acronyms.conf b/conf/acronyms.conf
index 172b9974d2956477edf1e34ede60e6a08d326063..058e855509ac95371acf97abe8e53ce00d1ca71e 100644
--- a/conf/acronyms.conf
+++ b/conf/acronyms.conf
@@ -62,6 +62,7 @@ JPEG         Joint Photographics Experts Group
 JPG          Joint Photographics Experts Group
 JS           JavaScript
 KISS         Keep it simple stupid
+LAN          Local Area Network
 LDAP         Lightweight Directory Access Protocol
 LGPL         GNU Lesser General Public License
 LOL          Laughing out loud
diff --git a/conf/interwiki.conf b/conf/interwiki.conf
index 7026967923cdfeabf66291d649ec2688b586a9b0..28d603de26fd73e48ae25f61f0845892b1aa11fe 100644
--- a/conf/interwiki.conf
+++ b/conf/interwiki.conf
@@ -5,7 +5,8 @@
 #        no further encoding is done
 # If no placeholder is defined the urlencoded name is appended to the URL
 
-# You can add more InterWiki shortcuts here.
+# To prevent losing your added InterWiki shortcuts after an upgrade, 
+# you should add new ones to interwiki.local.conf
 
 wp        http://en.wikipedia.org/wiki/{NAME}
 wpfr      http://fr.wikipedia.org/wiki/{NAME}
@@ -15,7 +16,7 @@ wppl      http://pl.wikipedia.org/wiki/{NAME}
 wpjp      http://ja.wikipedia.org/wiki/{NAME}
 wpmeta    http://meta.wikipedia.org/wiki/{NAME}
 doku      http://www.dokuwiki.org/
-dokubug   http://bugs.splitbrain.org/index.php?do=details&amp;task_id=
+dokubug   http://bugs.dokuwiki.org/index.php?do=details&amp;task_id=
 rfc       http://www.cs.ccu.edu.tw/~chm91u/rfc2html.php?in=
 man       http://man.cx/
 amazon    http://www.amazon.com/exec/obidos/ASIN/{URL}/splitbrain-20/
@@ -26,9 +27,13 @@ phpfn     http://www.php.net/{NAME}
 coral     http://{HOST}.{PORT}.nyud.net:8090/{PATH}?{QUERY}
 freecache http://freecache.org/{NAME}
 sb        http://www.splitbrain.org/go/
+skype     skype:{NAME}
 google.de http://www.google.de/search?q=
 go        http://www.google.com/search?q={URL}&amp;btnI=lucky
 
+# To support VoIP/SIP links
+callto    callto://{NAME}
+
 # Standards from http://usemod.com/intermap.txt follow
 
 AbbeNormal      http://www.ourpla.net/cgi-bin/pikie.cgi?
diff --git a/conf/smileys.conf b/conf/smileys.conf
index 47e4537e2d15dc48ac31a8f24c9cd95fb901ef5d..80daed57ac3ee02c10d4db2fefa92947fcaa8e8b 100644
--- a/conf/smileys.conf
+++ b/conf/smileys.conf
@@ -18,6 +18,7 @@
 :-X         icon_silenced.gif
 :-|         icon_neutral.gif
 ;-)         icon_wink.gif
+m(          facepalm.gif
 ^_^         icon_fun.gif
 :?:         icon_question.gif
 :!:         icon_exclaim.gif
diff --git a/conf/wordblock.conf b/conf/wordblock.conf
index b3822a29c13b841c2a44b39286670c2c3c7e978e..fe451f278a03f625fc631fc66674996521ba6f7a 100644
--- a/conf/wordblock.conf
+++ b/conf/wordblock.conf
@@ -26,4 +26,7 @@ downgradetowindowsxp\.com
 elegantugg\.com
 classicedhardy\.com
 research-service\.com
-https?:\/\/(\S*?)(2-pay-secure|911essay|academia-research|anypapers|applicationessay|bestbuyessay|bestdissertation|bestessay|bestresume|besttermpaper|businessessay|college-paper|customessay|custom-made-paper|custom-writing|dissertationblog|dissertation-service|dissertations?expert|essaybank|essay-?blog|essaycapital|essaylogic|essaymill|essayontime|essaypaper|essays?land|essaytownsucks|essaywrit|essay-writing-service|fastessays|freelancercareers|genuinecontent|genuineessay|genuinepaper|goessay|grandresume|killer-content|ma-dissertation|managementessay|masterpaper|mightystudent|needessay|researchedge|researchpaper-blog|resumecvservice|resumesexperts|resumesplanet|rushessay|samedayessay|superiorcontent|superiorpaper|superiorthesis|term-paper|termpaper-blog|term-paper-research|thesisblog|universalresearch|valwriting|vdwriters|wisetranslation|writersassembly|writers\.com\.ph|writers\.ph)
+https?:\/\/(\S*?)(2-pay-secure|911essay|academia-research|anypapers|applicationessay|bestbuyessay|bestdissertation|bestessay|bestresume|besttermpaper|businessessay|college-paper|customessay|custom-made-paper|custom-writing|degree-?result|dissertationblog|dissertation-service|dissertations?expert|essaybank|essay-?blog|essaycapital|essaylogic|essaymill|essayontime|essaypaper|essays?land|essaytownsucks|essay-?writ|fastessays|freelancercareers|genuinecontent|genuineessay|genuinepaper|goessay|grandresume|killer-content|ma-dissertation|managementessay|masterpaper|mightystudent|needessay|researchedge|researchpaper-blog|resumecvservice|resumesexperts|resumesplanet|rushessay|samedayessay|superiorcontent|superiorpaper|superiorthesis|term-paper|termpaper-blog|term-paper-research|thesisblog|universalresearch|valwriting|vdwriters|wisetranslation|writersassembly|writers\.com\.ph|writers\.ph)
+flatsinmumbai\.co\.in
+https?:\/\/(\S*?)penny-?stock
+mattressreview\.biz
diff --git a/doku.php b/doku.php
index 6cd0c0e0cf0d5388e43925267d6180d1f21b2946..dc5e0ec66f18f6abe129d67444d64335140cb712 100644
--- a/doku.php
+++ b/doku.php
@@ -27,6 +27,7 @@ if (isset($_SERVER['HTTP_X_DOKUWIKI_DO'])){
 require_once(DOKU_INC.'inc/init.php');
 
 //import variables
+$_REQUEST['id'] = str_replace("\xC2\xAD",'',$_REQUEST['id']); //soft-hyphen
 $QUERY = trim($_REQUEST['id']);
 $ID    = getID();
 
diff --git a/inc/DifferenceEngine.php b/inc/DifferenceEngine.php
index dd096a55a9de6883b3bb473a001500f49d2218e5..906a17b2d34d48915e91aea01f5a009051e82f13 100644
--- a/inc/DifferenceEngine.php
+++ b/inc/DifferenceEngine.php
@@ -932,7 +932,7 @@ class InlineWordLevelDiff extends MappedDiff {
     }
 
     function _split($lines) {
-        if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
+        if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xsu',
              implode("\n", $lines), $m)) {
             return array(array(''), array(''));
         }
@@ -943,7 +943,7 @@ class InlineWordLevelDiff extends MappedDiff {
         $orig = new _HWLDF_WordAccumulator;
         foreach ($this->edits as $edit) {
             if ($edit->type == 'copy')
-                $orig->addWords($edit->orig);
+                $orig->addWords($edit->closing);
             elseif ($edit->type == 'change'){
                 $orig->addWords($edit->orig, 'del');
                 $orig->addWords($edit->closing, 'add');
@@ -1087,6 +1087,7 @@ class TableDiffFormatter extends DiffFormatter {
  *
  */
 class InlineDiffFormatter extends DiffFormatter {
+    var $colspan = 4;
 
     function InlineDiffFormatter() {
         $this->leading_context_lines = 2;
@@ -1113,7 +1114,7 @@ class InlineDiffFormatter extends DiffFormatter {
             $xbeg .= "," . $xlen;
         if ($ylen != 1)
             $ybeg .= "," . $ylen;
-        $r = '<tr><td class="diff-blockheader">@@ '.$lang['line']." -$xbeg +$ybeg @@";
+        $r = '<tr><td colspan="'.$this->colspan.'" class="diff-blockheader">@@ '.$lang['line']." -$xbeg +$ybeg @@";
         $r .= ' <span class="diff-deletedline"><del>'.$lang['deleted'].'</del></span>';
         $r .= ' <span class="diff-addedline">'.$lang['created'].'</span>';
         $r .= "</td></tr>\n";
@@ -1132,19 +1133,19 @@ class InlineDiffFormatter extends DiffFormatter {
 
     function _added($lines) {
         foreach ($lines as $line) {
-            print('<tr><td class="diff-addedline">'. $line . "</td></tr>\n");
+            print('<tr><td colspan="'.$this->colspan.'" class="diff-addedline">'. $line . "</td></tr>\n");
         }
     }
 
     function _deleted($lines) {
         foreach ($lines as $line) {
-            print('<tr><td class="diff-deletedline"><del>' . $line . "</del></td></tr>\n");
+            print('<tr><td colspan="'.$this->colspan.'" class="diff-deletedline"><del>' . $line . "</del></td></tr>\n");
         }
     }
 
     function _context($lines) {
         foreach ($lines as $line) {
-            print('<tr><td class="diff-context">'.$line."</td></tr>\n");
+            print('<tr><td colspan="'.$this->colspan.'" class="diff-context">'.$line."</td></tr>\n");
         }
     }
 
@@ -1153,7 +1154,7 @@ class InlineDiffFormatter extends DiffFormatter {
         $add = $diff->inline();
 
         foreach ($add as $line)
-            print('<tr><td>'.$line."</td></tr>\n");
+            print('<tr><td colspan="'.$this->colspan.'">'.$line."</td></tr>\n");
     }
 }
 
diff --git a/inc/EmailAddressValidator.php b/inc/EmailAddressValidator.php
index 31b34cc58adff5df8629949f9a243421d3a29f42..bb4ef0ca9f151452b98a633c3bd226c1a2334a3a 100644
--- a/inc/EmailAddressValidator.php
+++ b/inc/EmailAddressValidator.php
@@ -5,7 +5,7 @@
  * @author  Dave Child <dave@addedbytes.com>
  * @link    http://code.google.com/p/php-email-address-validation/
  * @license http://www.opensource.org/licenses/bsd-license.php
- * @version SVN r10 + Issue 15 fix
+ * @version SVN r10 + Issue 15 fix + Issue 12 fix
  */
 class EmailAddressValidator {
     /**
@@ -121,13 +121,30 @@ class EmailAddressValidator {
         if (!$this->check_text_length($strDomainPortion, 1, 255)) {
             return false;
         }
+
+        // some IPv4/v6 regexps borrowed from Feyd
+        // see: http://forums.devnetwork.net/viewtopic.php?f=38&t=53479
+        $dec_octet = '(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[0-9])';
+        $hex_digit = '[A-Fa-f0-9]';
+        $h16 = "{$hex_digit}{1,4}";
+        $IPv4Address = "$dec_octet\\.$dec_octet\\.$dec_octet\\.$dec_octet";
+        $ls32 = "(?:$h16:$h16|$IPv4Address)";
+        $IPv6Address =
+            "(?:(?:{$IPv4Address})|(?:".
+            "(?:$h16:){6}$ls32" .
+            "|::(?:$h16:){5}$ls32" .
+            "|(?:$h16)?::(?:$h16:){4}$ls32" .
+            "|(?:(?:$h16:){0,1}$h16)?::(?:$h16:){3}$ls32" .
+            "|(?:(?:$h16:){0,2}$h16)?::(?:$h16:){2}$ls32" .
+            "|(?:(?:$h16:){0,3}$h16)?::(?:$h16:){1}$ls32" .
+            "|(?:(?:$h16:){0,4}$h16)?::$ls32" .
+            "|(?:(?:$h16:){0,5}$h16)?::$h16" .
+            "|(?:(?:$h16:){0,6}$h16)?::" .
+            ")(?:\\/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))?)";
+
         // Check if domain is IP, possibly enclosed in square brackets.
-        if (preg_match('/^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])'
-           .'(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}$/'
-           ,$strDomainPortion) ||
-            preg_match('/^\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])'
-           .'(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\]$/'
-           ,$strDomainPortion)) {
+        if (preg_match("/^($IPv4Address|\[$IPv4Address\]|\[$IPv6Address\])$/",
+                        $strDomainPortion)){
             return true;
         } else {
             $arrDomainPortion = explode('.', $strDomainPortion);
diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index 1cb16714d6ede03bac090534aa00037b00803330..372769b71c30569f1fef8d0ee818c7dc2f180cbd 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -299,8 +299,6 @@ class HTTPClient {
                 $this->error = "Could not connect to $server:$port\n$errstr ($errno)";
                 return false;
             }
-            //set non blocking
-            stream_set_blocking($socket,0);
 
             // keep alive?
             if ($this->keep_alive) {
@@ -310,6 +308,9 @@ class HTTPClient {
             }
         }
 
+        //set blocking
+        stream_set_blocking($socket,1);
+
         // build request
         $request  = "$method $request_url HTTP/".$this->http.HTTP_NL;
         $request .= $this->_buildHeaders($headers);
@@ -319,11 +320,28 @@ class HTTPClient {
 
         $this->_debug('request',$request);
 
+        // select parameters
+        $sel_r = null;
+        $sel_w = array($socket);
+        $sel_e = null;
+
         // send request
         $towrite = strlen($request);
         $written = 0;
         while($written < $towrite){
-            $ret = fwrite($socket, substr($request,$written));
+            // check timeout
+            if(time()-$start > $this->timeout){
+                $this->status = -100;
+                $this->error = sprintf('Timeout while sending request (%.3fs)',$this->_time() - $this->start);
+                unset($this->connections[$connectionId]);
+                return false;
+            }
+
+            // wait for stream ready or timeout (1sec)
+            if(stream_select($sel_r,$sel_w,$sel_e,1) === false) continue;
+
+            // write to stream
+            $ret = fwrite($socket, substr($request,$written,4096));
             if($ret === false){
                 $this->status = -100;
                 $this->error = 'Failed writing to socket';
@@ -333,6 +351,9 @@ class HTTPClient {
             $written += $ret;
         }
 
+        // continue non-blocking
+        stream_set_blocking($socket,0);
+
         // read headers from socket
         $r_headers = '';
         do{
diff --git a/inc/JpegMeta.php b/inc/JpegMeta.php
index fa05f68590606bd83fe75f824a47b07dd609a3d1..afa70168c48eeccc4151c644218cda3d349fdd62 100644
--- a/inc/JpegMeta.php
+++ b/inc/JpegMeta.php
@@ -1466,16 +1466,21 @@ class JpegMeta {
         $parser = xml_parser_create();
         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
-        xml_parse_into_struct($parser, $data, $values, $tags);
+        $result = xml_parse_into_struct($parser, $data, $values, $tags);
         xml_parser_free($parser);
 
+        if ($result == 0) {
+            $this->_info['xmp'] = false;
+            return false;
+        }
+
         $this->_info['xmp'] = array();
         $count = count($values);
         for ($i = 0; $i < $count; $i++) {
             if ($values[$i]['tag'] == 'rdf:Description' && $values[$i]['type'] == 'open') {
 
-                while ($values[++$i]['tag'] != 'rdf:Description') {
-                    $this->_parseXmpNode($values, $i, $this->_info['xmp'][$values[$i]['tag']]);
+                while ((++$i < $count) && ($values[$i]['tag'] != 'rdf:Description')) {
+                    $this->_parseXmpNode($values, $i, $this->_info['xmp'][$values[$i]['tag']], $count);
                 }
             }
         }
@@ -1487,7 +1492,7 @@ class JpegMeta {
      *
      * @author  Hakan Sandell <hakan.sandell@mydata.se>
      */
-    function _parseXmpNode($values, &$i, &$meta) {
+    function _parseXmpNode($values, &$i, &$meta, $count) {
         if ($values[$i]['type'] == 'close') return;
 
         if ($values[$i]['type'] == 'complete') {
@@ -1497,11 +1502,13 @@ class JpegMeta {
         }
 
         $i++;
+        if ($i >= $count) return;
+
         if ($values[$i]['tag'] == 'rdf:Bag' || $values[$i]['tag'] == 'rdf:Seq') {
             // Array property
             $meta = array();
             while ($values[++$i]['tag'] == 'rdf:li') {
-                $this->_parseXmpNode($values, $i, $meta[]);
+                $this->_parseXmpNode($values, $i, $meta[], $count);
             }
             $i++; // skip closing Bag/Seq tag
 
@@ -1509,8 +1516,8 @@ class JpegMeta {
             // Language Alternative property, only the first (default) value is used
             if ($values[$i]['type'] == 'open') {
                 $i++;
-                $this->_parseXmpNode($values, $i, $meta);
-                while ($values[++$i]['tag'] != 'rdf:Alt');
+                $this->_parseXmpNode($values, $i, $meta, $count);
+                while ((++$i < $count) && ($values[$i]['tag'] != 'rdf:Alt'));
                 $i++; // skip closing Alt tag
             }
 
@@ -1519,8 +1526,8 @@ class JpegMeta {
             $meta = array();
             $startTag = $values[$i-1]['tag'];
             do {
-                $this->_parseXmpNode($values, $i, $meta[$values[$i]['tag']]);
-            } while ($values[++$i]['tag'] != $startTag);
+                $this->_parseXmpNode($values, $i, $meta[$values[$i]['tag']], $count);
+            } while ((++$i < $count) && ($values[$i]['tag'] != $startTag));
         }
     }
 
diff --git a/inc/PassHash.class.php b/inc/PassHash.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..cb46c5928822b15ac111a1b4f1e9893d6dd2bc80
--- /dev/null
+++ b/inc/PassHash.class.php
@@ -0,0 +1,379 @@
+<?php
+/**
+ * Password Hashing Class
+ *
+ * This class implements various mechanisms used to hash passwords
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @license LGPL2
+ */
+class PassHash {
+    /**
+     * Verifies a cleartext password against a crypted hash
+     *
+     * The method and salt used for the crypted hash is determined automatically,
+     * then the clear text password is crypted using the same method. If both hashs
+     * match true is is returned else false
+     *
+     * @author  Andreas Gohr <andi@splitbrain.org>
+     * @return  bool
+     */
+    function verify_hash($clear,$hash){
+        $method='';
+        $salt='';
+        $magic='';
+
+        //determine the used method and salt
+        $len = strlen($hash);
+        if(preg_match('/^\$1\$([^\$]{0,8})\$/',$hash,$m)){
+            $method = 'smd5';
+            $salt   = $m[1];
+            $magic  = '1';
+        }elseif(preg_match('/^\$apr1\$([^\$]{0,8})\$/',$hash,$m)){
+            $method = 'apr1';
+            $salt   = $m[1];
+            $magic  = 'apr1';
+        }elseif(preg_match('/^\$P\$(.{31})$/',$hash,$m)){
+            $method = 'pmd5';
+            $salt   = $m[1];
+            $magic  = 'P';
+        }elseif(preg_match('/^\$H\$(.{31})$/',$hash,$m)){
+            $method = 'pmd5';
+            $salt   = $m[1];
+            $magic  = 'H';
+        }elseif(preg_match('/^sha1\$(.{5})\$/',$hash,$m)){
+            $method = 'djangosha1';
+            $salt   = $m[1];
+        }elseif(preg_match('/^md5\$(.{5})\$/',$hash,$m)){
+            $method = 'djangomd5';
+            $salt   = $m[1];
+        }elseif(substr($hash,0,6) == '{SSHA}'){
+            $method = 'ssha';
+            $salt   = substr(base64_decode(substr($hash, 6)),20);
+        }elseif($len == 32){
+            $method = 'md5';
+        }elseif($len == 40){
+            $method = 'sha1';
+        }elseif($len == 16){
+            $method = 'mysql';
+        }elseif($len == 41 && $hash[0] == '*'){
+            $method = 'my411';
+        }elseif($len == 34){
+            $method = 'kmd5';
+            $salt   = $hash;
+        }else{
+            $method = 'crypt';
+            $salt   = substr($hash,0,2);
+        }
+
+        //crypt and compare
+        $call = 'hash_'.$method;
+        if($this->$call($clear,$salt,$magic) === $hash){
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Create a random salt
+     *
+     * @param int $len - The length of the salt
+     */
+    public function gen_salt($len=32){
+        $salt  = '';
+        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+        for($i=0;$i<$len,$i++;) $salt .= $chars[mt_rand(0,61)];
+        return $salt;
+    }
+
+    /**
+     * Initialize the passed variable with a salt if needed.
+     *
+     * If $salt is not null, the value is kept, but the lenght restriction is
+     * applied.
+     *
+     * @param stringref $salt - The salt, pass null if you want one generated
+     * @param int $len - The length of the salt
+     */
+    public function init_salt(&$salt,$len=32){
+        if(is_null($salt)) $salt = $this->gen_salt($len);
+        if(strlen($salt) > $len) $salt = substr($salt,0,$len);
+    }
+
+    // Password hashing methods follow below
+
+    /**
+     * Password hashing method 'smd5'
+     *
+     * Uses salted MD5 hashs. Salt is 8 bytes long.
+     *
+     * The same mechanism is used by Apache's 'apr1' method. This will
+     * fallback to a implementation in pure PHP if MD5 support is not
+     * available in crypt()
+     *
+     * @author Andreas Gohr <andi@splitbrain.org>
+     * @author <mikey_nich at hotmail dot com>
+     * @link   http://de.php.net/manual/en/function.crypt.php#73619
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @param string $magic - the hash identifier (apr1 or 1)
+     * @returns string - hashed password
+     */
+    public function hash_smd5($clear, $salt=null){
+        $this->init_salt($salt,8);
+
+        if(defined('CRYPT_MD5') && CRYPT_MD5){
+            return crypt($clear,'$1$'.$salt.'$');
+        }else{
+            // Fall back to PHP-only implementation
+            return $this->apr1($clear, $salt, '1');
+        }
+    }
+
+    /**
+     * Password hashing method 'apr1'
+     *
+     * Uses salted MD5 hashs. Salt is 8 bytes long.
+     *
+     * This is basically the same as smd1 above, but as used by Apache.
+     *
+     * @author <mikey_nich at hotmail dot com>
+     * @link   http://de.php.net/manual/en/function.crypt.php#73619
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @param string $magic - the hash identifier (apr1 or 1)
+     * @returns string - hashed password
+     */
+    public function hash_apr1($clear, $salt=null, $magic='apr1'){
+        $this->init_salt($salt,8);
+
+        $len = strlen($clear);
+        $text = $clear.'$'.$magic.'$'.$salt;
+        $bin = pack("H32", md5($clear.$salt.$clear));
+        for($i = $len; $i > 0; $i -= 16) {
+            $text .= substr($bin, 0, min(16, $i));
+        }
+        for($i = $len; $i > 0; $i >>= 1) {
+            $text .= ($i & 1) ? chr(0) : $clear{0};
+        }
+        $bin = pack("H32", md5($text));
+        for($i = 0; $i < 1000; $i++) {
+            $new = ($i & 1) ? $clear : $bin;
+            if ($i % 3) $new .= $salt;
+            if ($i % 7) $new .= $clear;
+            $new .= ($i & 1) ? $bin : $clear;
+            $bin = pack("H32", md5($new));
+        }
+        $tmp = '';
+        for ($i = 0; $i < 5; $i++) {
+            $k = $i + 6;
+            $j = $i + 12;
+            if ($j == 16) $j = 5;
+            $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp;
+        }
+        $tmp = chr(0).chr(0).$bin[11].$tmp;
+        $tmp = strtr(strrev(substr(base64_encode($tmp), 2)),
+                "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
+                "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
+        return '$'.$magic.'$'.$salt.'$'.$tmp;
+    }
+
+    /**
+     * Password hashing method 'md5'
+     *
+     * Uses MD5 hashs.
+     *
+     * @param string $clear - the clear text to hash
+     * @returns string - hashed password
+     */
+    public function hash_md5($clear){
+        return md5($clear);
+    }
+
+    /**
+     * Password hashing method 'sha1'
+     *
+     * Uses SHA1 hashs.
+     *
+     * @param string $clear - the clear text to hash
+     * @returns string - hashed password
+     */
+    public function hash_sha1($clear){
+        return sha1($clear);
+    }
+
+    /**
+     * Password hashing method 'ssha' as used by LDAP
+     *
+     * Uses salted SHA1 hashs. Salt is 4 bytes long.
+     *
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @returns string - hashed password
+     */
+    public function hash_ssha($clear, $salt=null){
+        $this->init_salt($salt,4);
+        return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt);
+    }
+
+    /**
+     * Password hashing method 'crypt'
+     *
+     * Uses salted crypt hashs. Salt is 2 bytes long.
+     *
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @returns string - hashed password
+     */
+    public function hash_crypt($clear, $salt=null){
+        $this->init_salt($salt,2);
+        return crypt($clear,$salt);
+    }
+
+    /**
+     * Password hashing method 'mysql'
+     *
+     * This method was used by old MySQL systems
+     *
+     * @link http://www.php.net/mysql
+     * @author <soren at byu dot edu>
+     * @param string $clear - the clear text to hash
+     * @returns string - hashed password
+     */
+    public function hash_mysql($clear){
+        $nr=0x50305735;
+        $nr2=0x12345671;
+        $add=7;
+        $charArr = preg_split("//", $clear);
+        foreach ($charArr as $char) {
+            if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
+            $charVal = ord($char);
+            $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
+            $nr2 += ($nr2 << 8) ^ $nr;
+            $add += $charVal;
+        }
+        return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
+    }
+
+    /**
+     * Password hashing method 'my411'
+     *
+     * Uses SHA1 hashs. This method is used by MySQL 4.11 and above
+     *
+     * @param string $clear - the clear text to hash
+     * @returns string - hashed password
+     */
+    public function hash_my411($clear){
+        return '*'.sha1(pack("H*", sha1($clear)));
+    }
+
+    /**
+     * Password hashing method 'kmd5'
+     *
+     * Uses salted MD5 hashs.
+     *
+     * Salt is 2 bytes long, but stored at position 16, so you need to pass at
+     * least 18 bytes. You can pass the crypted hash as salt.
+     *
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @returns string - hashed password
+     */
+    public function hash_kmd5($clear, $salt=null){
+        $this->init_salt($salt);
+
+        $key = substr($salt, 16, 2);
+        $hash1 = strtolower(md5($key . md5($clear)));
+        $hash2 = substr($hash1, 0, 16) . $key . substr($hash1, 16);
+        return $hash2;
+    }
+
+    /**
+     * Password hashing method 'pmd5'
+     *
+     * Uses salted MD5 hashs. Salt is 1+8 bytes long, 1st byte is the
+     * iteration count.
+     *
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @param string $magic - the hash identifier (P or H)
+     * @returns string - hashed password
+     */
+    public function hash_pmd5($clear, $salt=null, $magic='P'){
+        $this->init_salt($salt);
+
+        $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+        $iterc = $salt[0]; // pos 0 of salt is iteration count
+        $iter = strpos($itoa64,$iterc);
+        $iter = 1 << $iter;
+        $salt = substr($salt,1,8);
+
+        // iterate
+        $hash = md5($salt . $clear, true);
+        do {
+            $hash = md5($hash . $clear, true);
+        } while (--$iter);
+
+        // encode
+        $output = '';
+        $count = 16;
+        $i = 0;
+        do {
+            $value = ord($hash[$i++]);
+            $output .= $itoa64[$value & 0x3f];
+            if ($i < $count)
+                $value |= ord($hash[$i]) << 8;
+            $output .= $itoa64[($value >> 6) & 0x3f];
+            if ($i++ >= $count)
+                break;
+            if ($i < $count)
+                $value |= ord($hash[$i]) << 16;
+            $output .= $itoa64[($value >> 12) & 0x3f];
+            if ($i++ >= $count)
+                break;
+            $output .= $itoa64[($value >> 18) & 0x3f];
+        } while ($i < $count);
+
+        return '$'.$magic.'$'.$iterc.$salt.$output;
+    }
+
+    /**
+     * Alias for hash_pmd5
+     */
+    public function hash_hmd5($clear, $salt=null, $magic='H'){
+        return $this->hash_pmd5($clear, $salt, $magic);
+    }
+
+    /**
+     * Password hashing method 'djangosha1'
+     *
+     * Uses salted SHA1 hashs. Salt is 5 bytes long.
+     * This is used by the Django Python framework
+     *
+     * @link http://docs.djangoproject.com/en/dev/topics/auth/#passwords
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @returns string - hashed password
+     */
+    public function hash_djangosha1($clear, $salt=null){
+        $this->init_salt($salt,5);
+        return 'sha1$'.$salt.'$'.sha1($salt.$clear);
+    }
+
+    /**
+     * Password hashing method 'djangomd5'
+     *
+     * Uses salted MD5 hashs. Salt is 5 bytes long.
+     * This is used by the Django Python framework
+     *
+     * @link http://docs.djangoproject.com/en/dev/topics/auth/#passwords
+     * @param string $clear - the clear text to hash
+     * @param string $salt  - the salt to use, null for random
+     * @returns string - hashed password
+     */
+    public function hash_djangomd5($clear, $salt=null){
+        $this->init_salt($salt,5);
+        return 'md5$'.$salt.'$'.md5($salt.$clear);
+    }
+
+}
diff --git a/inc/actions.php b/inc/actions.php
index 016af4aea589d3bc37c6200dcd23ded1223cbdd1..321d928b3cde0f2cdf55dbba45932ef4b43396e5 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -244,7 +244,6 @@ function act_permcheck($act){
             $permneed = AUTH_CREATE;
         }
     }elseif(in_array($act,array('login','search','recent','profile','index', 'sitemap'))){
-    }elseif(in_array($act,array('login','search','recent','profile','sitemap'))){
         $permneed = AUTH_NONE;
     }elseif($act == 'revert'){
         $permneed = AUTH_ADMIN;
@@ -610,7 +609,7 @@ function act_sitemap($act) {
         print "Sitemap generation is disabled.";
         exit;
     }
-    
+
     $sitemap = Sitemapper::getFilePath();
     if(strrchr($sitemap, '.') === '.gz'){
         $mime = 'application/x-gzip';
diff --git a/inc/adLDAP.php b/inc/adLDAP.php
index 4c8ee5db3e27e481a37eda5002ee840050b0fda3..a64096b85558463aff8437d4abcb032bb79d3b2c 100644
--- a/inc/adLDAP.php
+++ b/inc/adLDAP.php
@@ -1183,8 +1183,17 @@ class adLDAP {
         $add=array();
         $add["unicodePwd"][0]=$this->encode_password($password);
 
-        $result=ldap_mod_replace($this->_conn,$user_dn,$add);
-        if ($result==false){ return (false); }
+        $result=@ldap_mod_replace($this->_conn,$user_dn,$add);
+        if ($result==false){
+            $err = ldap_errno($this->_conn);
+            if($err){
+                $msg = 'Error '.$err.': '.ldap_err2str($err).'.';
+                if($err == 53) $msg .= ' Your password might not match the password policy.';
+                throw new adLDAPException($msg);
+            }else{
+                return false;
+            }
+        }
 
         return (true);
     }
diff --git a/inc/auth.php b/inc/auth.php
index 38d1c925d74e4b1763222295df53e71fa8f1845f..164ad3df9b533ff6ac05fa5ba7bd84e274b60357 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -686,9 +686,8 @@ function register(){
     global $conf;
     global $auth;
 
-    if (!$auth) return false;
     if(!$_POST['save']) return false;
-    if(!$auth->canDo('addUser')) return false;
+    if(!actionOK('register')) return false;
 
     //clean username
     $_POST['login'] = trim($auth->cleanUser($_POST['login']));
@@ -764,12 +763,10 @@ function updateprofile() {
     global $lang;
     global $auth;
 
-    if (!$auth) return false;
     if(empty($_POST['save'])) return false;
     if(!checkSecurityToken()) return false;
 
-    // should not be able to get here without Profile being possible...
-    if(!$auth->canDo('Profile')) {
+    if(!actionOK('profile')) {
         msg($lang['profna'],-1);
         return false;
     }
@@ -840,11 +837,7 @@ function act_resendpwd(){
     global $conf;
     global $auth;
 
-    if(!actionOK('resendpwd')) return false;
-    if (!$auth) return false;
-
-    // should not be able to get here without modPass being possible...
-    if(!$auth->canDo('modPass')) {
+    if(!actionOK('resendpwd')) {
         msg($lang['resendna'],-1);
         return false;
     }
@@ -932,20 +925,6 @@ function act_resendpwd(){
  * If the selected method needs a salt and none was given, a random one
  * is chosen.
  *
- * The following methods are understood:
- *
- *   smd5  - Salted MD5 hashing
- *   apr1  - Apache salted MD5 hashing
- *   md5   - Simple MD5 hashing
- *   sha1  - SHA1 hashing
- *   ssha  - Salted SHA1 hashing
- *   crypt - Unix crypt
- *   mysql - MySQL password (old method)
- *   my411 - MySQL 4.1.1 password
- *   kmd5  - Salted MD5 hashing as used by UNB
- *   pmd5  - Salted multi iteration MD5 as used by Wordpress
- *   hmd5  - Same as pmd5 but PhpBB3 flavour
- *
  * @author  Andreas Gohr <andi@splitbrain.org>
  * @return  string  The crypted password
  */
@@ -953,173 +932,26 @@ function auth_cryptPassword($clear,$method='',$salt=null){
     global $conf;
     if(empty($method)) $method = $conf['passcrypt'];
 
-    //prepare a salt
-    if(is_null($salt)) $salt = md5(uniqid(rand(), true));
-
-    switch(strtolower($method)){
-        case 'smd5':
-            if(defined('CRYPT_MD5') && CRYPT_MD5) return crypt($clear,'$1$'.substr($salt,0,8).'$');
-            // when crypt can't handle SMD5, falls through to pure PHP implementation
-            $magic = '1';
-        case 'apr1':
-            //from http://de.php.net/manual/en/function.crypt.php#73619 comment by <mikey_nich at hotmail dot com>
-            if(!isset($magic)) $magic = 'apr1';
-            $salt = substr($salt,0,8);
-            $len = strlen($clear);
-            $text = $clear.'$'.$magic.'$'.$salt;
-            $bin = pack("H32", md5($clear.$salt.$clear));
-            for($i = $len; $i > 0; $i -= 16) {
-                $text .= substr($bin, 0, min(16, $i));
-            }
-            for($i = $len; $i > 0; $i >>= 1) {
-                $text .= ($i & 1) ? chr(0) : $clear{0};
-            }
-            $bin = pack("H32", md5($text));
-            for($i = 0; $i < 1000; $i++) {
-                $new = ($i & 1) ? $clear : $bin;
-                if ($i % 3) $new .= $salt;
-                if ($i % 7) $new .= $clear;
-                $new .= ($i & 1) ? $bin : $clear;
-                $bin = pack("H32", md5($new));
-            }
-            $tmp = '';
-            for ($i = 0; $i < 5; $i++) {
-                $k = $i + 6;
-                $j = $i + 12;
-                if ($j == 16) $j = 5;
-                $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp;
-            }
-            $tmp = chr(0).chr(0).$bin[11].$tmp;
-            $tmp = strtr(strrev(substr(base64_encode($tmp), 2)),
-                    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
-                    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
-            return '$'.$magic.'$'.$salt.'$'.$tmp;
-        case 'md5':
-            return md5($clear);
-        case 'sha1':
-            return sha1($clear);
-        case 'ssha':
-            $salt=substr($salt,0,4);
-            return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt);
-        case 'crypt':
-            return crypt($clear,substr($salt,0,2));
-        case 'mysql':
-            //from http://www.php.net/mysql comment by <soren at byu dot edu>
-            $nr=0x50305735;
-            $nr2=0x12345671;
-            $add=7;
-            $charArr = preg_split("//", $clear);
-            foreach ($charArr as $char) {
-                if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
-                $charVal = ord($char);
-                $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
-                $nr2 += ($nr2 << 8) ^ $nr;
-                $add += $charVal;
-            }
-            return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
-        case 'my411':
-            return '*'.sha1(pack("H*", sha1($clear)));
-        case 'kmd5':
-            $key = substr($salt, 16, 2);
-            $hash1 = strtolower(md5($key . md5($clear)));
-            $hash2 = substr($hash1, 0, 16) . $key . substr($hash1, 16);
-            return $hash2;
-        case 'hmd5':
-            $key = 'H';
-            // hmd5 is exactly the same as pmd5, but uses an H as identifier
-            // PhpBB3 uses it that way, so we just fall through here
-        case 'pmd5':
-            if(!$key) $key = 'P';
-            $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
-            $iterc = $salt[0]; // pos 0 of salt is iteration count
-            $iter = strpos($itoa64,$iterc);
-            $iter = 1 << $iter;
-            $salt = substr($salt,1,8);
-
-            // iterate
-            $hash = md5($salt . $clear, true);
-            do {
-                $hash = md5($hash . $clear, true);
-            } while (--$iter);
-
-            // encode
-            $output = '';
-            $count = 16;
-            $i = 0;
-            do {
-                $value = ord($hash[$i++]);
-                $output .= $itoa64[$value & 0x3f];
-                if ($i < $count)
-                    $value |= ord($hash[$i]) << 8;
-                $output .= $itoa64[($value >> 6) & 0x3f];
-                if ($i++ >= $count)
-                    break;
-                if ($i < $count)
-                    $value |= ord($hash[$i]) << 16;
-                $output .= $itoa64[($value >> 12) & 0x3f];
-                if ($i++ >= $count)
-                    break;
-                $output .= $itoa64[($value >> 18) & 0x3f];
-            } while ($i < $count);
-
-            return '$'.$key.'$'.$iterc.$salt.$output;
-        default:
-            msg("Unsupported crypt method $method",-1);
+    $pass  = new PassHash();
+    $call  = 'hash_'.$method;
+
+    if(!method_exists($pass,$call)){
+        msg("Unsupported crypt method $method",-1);
+        return false;
     }
+
+    return $pass->$call($clear,$salt);
 }
 
 /**
  * Verifies a cleartext password against a crypted hash
  *
- * The method and salt used for the crypted hash is determined automatically
- * then the clear text password is crypted using the same method. If both hashs
- * match true is is returned else false
- *
  * @author  Andreas Gohr <andi@splitbrain.org>
  * @return  bool
  */
 function auth_verifyPassword($clear,$crypt){
-    $method='';
-    $salt='';
-
-    //determine the used method and salt
-    $len = strlen($crypt);
-    if(preg_match('/^\$1\$([^\$]{0,8})\$/',$crypt,$m)){
-        $method = 'smd5';
-        $salt   = $m[1];
-    }elseif(preg_match('/^\$apr1\$([^\$]{0,8})\$/',$crypt,$m)){
-        $method = 'apr1';
-        $salt   = $m[1];
-    }elseif(preg_match('/^\$P\$(.{31})$/',$crypt,$m)){
-        $method = 'pmd5';
-        $salt   = $m[1];
-    }elseif(preg_match('/^\$H\$(.{31})$/',$crypt,$m)){
-        $method = 'hmd5';
-        $salt   = $m[1];
-    }elseif(substr($crypt,0,6) == '{SSHA}'){
-        $method = 'ssha';
-        $salt   = substr(base64_decode(substr($crypt, 6)),20);
-    }elseif($len == 32){
-        $method = 'md5';
-    }elseif($len == 40){
-        $method = 'sha1';
-    }elseif($len == 16){
-        $method = 'mysql';
-    }elseif($len == 41 && $crypt[0] == '*'){
-        $method = 'my411';
-    }elseif($len == 34){
-        $method = 'kmd5';
-        $salt   = $crypt;
-    }else{
-        $method = 'crypt';
-        $salt   = substr($crypt,0,2);
-    }
-
-    //crypt and compare
-    if(auth_cryptPassword($clear,$method,$salt) === $crypt){
-        return true;
-    }
-    return false;
+    $pass = new PassHash();
+    return $pass->verify_hash($clear,$crypt);
 }
 
 /**
diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php
index 5478d64b968db3ad3561623fed338906f3444c6d..9ffd3e18b042bb07ebf394422fb2f47c144baaa5 100644
--- a/inc/auth/ad.class.php
+++ b/inc/auth/ad.class.php
@@ -24,6 +24,7 @@
  *   $conf['auth']['ad']['ad_password']        = 'pass';
  *   $conf['auth']['ad']['real_primarygroup']  = 1;
  *   $conf['auth']['ad']['use_ssl']            = 1;
+ *   $conf['auth']['ad']['use_tls']            = 1;
  *   $conf['auth']['ad']['debug']              = 1;
  *
  *   // get additional information to the userinfo array
@@ -51,6 +52,7 @@ class auth_ad extends auth_basic {
         global $conf;
         $this->cnf = $conf['auth']['ad'];
 
+
         // additional information fields
         if (isset($this->cnf['additional'])) {
             $this->cnf['additional'] = str_replace(' ', '', $this->cnf['additional']);
@@ -60,7 +62,7 @@ class auth_ad extends auth_basic {
         // ldap extension is needed
         if (!function_exists('ldap_connect')) {
             if ($this->cnf['debug'])
-                msg("LDAP err: PHP LDAP extension not found.",-1);
+                msg("AD Auth: PHP LDAP extension not found.",-1);
             $this->success = false;
             return;
         }
@@ -97,7 +99,12 @@ class auth_ad extends auth_basic {
         $this->opts['domain_controllers'] = array_map('trim',$this->opts['domain_controllers']);
         $this->opts['domain_controllers'] = array_filter($this->opts['domain_controllers']);
 
-        // we currently just handle authentication, so no capabilities are set
+        // we can change the password if SSL is set
+        if($this->opts['use_ssl'] || $this->opts['use_tls']){
+            $this->cando['modPass'] = true;
+        }
+        $this->cando['modName'] = true;
+        $this->cando['modMail'] = true;
     }
 
     /**
@@ -246,6 +253,49 @@ class auth_ad extends auth_basic {
         return $result;
     }
 
+    /**
+     * Modify user data
+     *
+     * @param   $user      nick of the user to be changed
+     * @param   $changes   array of field/value pairs to be changed
+     * @return  bool
+    */
+    function modifyUser($user, $changes) {
+        $return = true;
+
+        // password changing
+        if(isset($changes['pass'])){
+            try {
+                $return = $this->adldap->user_password($user,$changes['pass']);
+            } catch (adLDAPException $e) {
+                if ($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
+                $return = false;
+            }
+            if(!$return) msg('AD Auth: failed to change the password. Maybe the password policy was not met?',-1);
+        }
+
+        // changing user data
+        $adchanges = array();
+        if(isset($changes['name'])){
+            // get first and last name
+            $parts = explode(' ',$changes['name']);
+            $adchanges['surname']   = array_pop($parts);
+            $adchanges['firstname'] = join(' ',$parts);
+            $adchanges['display_name'] = $changes['name'];
+        }
+        if(isset($changes['mail'])){
+            $adchanges['email'] = $changes['mail'];
+        }
+        try {
+            $return = $return & $this->adldap->user_modify($user,$adchanges);
+        } catch (adLDAPException $e) {
+            if ($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1);
+            $return = false;
+        }
+
+        return $return;
+    }
+
     /**
      * Initialize the AdLDAP library and connect to the server
      */
@@ -261,7 +311,7 @@ class auth_ad extends auth_basic {
             return true;
         } catch (adLDAPException $e) {
             if ($this->cnf['debug']) {
-                msg($e->getMessage(), -1);
+                msg('AD Auth: '.$e->getMessage(), -1);
             }
             $this->success = false;
             $this->adldap  = null;
diff --git a/inc/auth/mysql.class.php b/inc/auth/mysql.class.php
index dbdfe5fdaf04eee211076bb96dbfb17e1d75b5f7..653c725a3664a2f01582006fc9bc9a89e1d1076b 100644
--- a/inc/auth/mysql.class.php
+++ b/inc/auth/mysql.class.php
@@ -46,7 +46,7 @@ class auth_mysql extends auth_basic {
 
       // set capabilities based upon config strings set
       if (empty($this->cnf['server']) || empty($this->cnf['user']) ||
-          empty($this->cnf['password']) || empty($this->cnf['database'])){
+          !isset($this->cnf['password']) || empty($this->cnf['database'])){
         if ($this->cnf['debug'])
           msg("MySQL err: insufficient configuration.",-1,__LINE__,__FILE__);
         $this->success = false;
diff --git a/inc/common.php b/inc/common.php
index b4866bccf7338e29995523e913cf64623476505b..ac7ddd653c2c5516c4ba8ae2a3b3c6fbee5c3ccf 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -639,7 +639,7 @@ function clientIP($single=false){
     // decide which IP to use, trying to avoid local addresses
     $ip = array_reverse($ip);
     foreach($ip as $i){
-        if(preg_match('/^(127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){
+        if(preg_match('/^(::1|[fF][eE]80:|127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){
             continue;
         }else{
             return $i;
@@ -804,7 +804,7 @@ function rawWiki($id,$rev=''){
 /**
  * Returns the pagetemplate contents for the ID's namespace
  *
- * @triggers COMMON_PAGE_FROMTEMPLATE
+ * @triggers COMMON_PAGETPL_LOAD
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function pageTemplate($id){
@@ -812,29 +812,50 @@ function pageTemplate($id){
 
     if (is_array($id)) $id = $id[0];
 
-    $path = dirname(wikiFN($id));
-    $tpl = '';
-    if(@file_exists($path.'/_template.txt')){
-        $tpl = io_readFile($path.'/_template.txt');
-    }else{
-        // search upper namespaces for templates
-        $len = strlen(rtrim($conf['datadir'],'/'));
-        while (strlen($path) >= $len){
-            if(@file_exists($path.'/__template.txt')){
-                $tpl = io_readFile($path.'/__template.txt');
-                break;
+    // prepare initial event data
+    $data = array(
+        'id'        => $id,   // the id of the page to be created
+        'tpl'       => '',    // the text used as template
+        'tplfile'   => '',    // the file above text was/should be loaded from
+        'doreplace' => true   // should wildcard replacements be done on the text?
+    );
+
+    $evt = new Doku_Event('COMMON_PAGETPL_LOAD',$data);
+    if($evt->advise_before(true)){
+        // the before event might have loaded the content already
+        if(empty($data['tpl'])){
+            // if the before event did not set a template file, try to find one
+            if(empty($data['tplfile'])){
+                $path = dirname(wikiFN($id));
+                $tpl = '';
+                if(@file_exists($path.'/_template.txt')){
+                    $data['tplfile'] = $path.'/_template.txt';
+                }else{
+                    // search upper namespaces for templates
+                    $len = strlen(rtrim($conf['datadir'],'/'));
+                    while (strlen($path) >= $len){
+                        if(@file_exists($path.'/__template.txt')){
+                            $data['tplfile'] = $path.'/__template.txt';
+                            break;
+                        }
+                        $path = substr($path, 0, strrpos($path, '/'));
+                    }
+                }
             }
-            $path = substr($path, 0, strrpos($path, '/'));
+            // load the content
+            $data['tpl'] = io_readFile($data['tplfile']);
         }
+        if($data['doreplace']) parsePageTemplate(&$data);
     }
-    $data = compact('tpl', 'id');
-    trigger_event('COMMON_PAGE_FROMTEMPLATE', $data, 'parsePageTemplate', true);
+    $evt->advise_after();
+    unset($evt);
+
     return $data['tpl'];
 }
 
 /**
  * Performs common page template replacements
- * This is the default action for COMMON_PAGE_FROMTEMPLATE
+ * This works on data from COMMON_PAGETPL_LOAD
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index 3ae68a0004d701fe47462a1de3abb33e50bb2788..32001be8183f84e85c70006bc10310e13c1a9edc 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -5,7 +5,8 @@
  * This array configures the default locations of various files in the
  * DokuWiki directory hierarchy. It can be overriden in inc/preload.php
  */
-$config_cascade = array(
+$config_cascade = array_merge(
+    array(
         'main' => array(
             'default'   => array(DOKU_CONF.'dokuwiki.php'),
             'local'     => array(DOKU_CONF.'local.php'),
@@ -62,5 +63,7 @@ $config_cascade = array(
         'plainauth.users' => array(
             'default' => DOKU_CONF.'users.auth.php',
             ),
+        ),
+        $config_cascade
 );
 
diff --git a/inc/confutils.php b/inc/confutils.php
index 26ed4f08712dfbe5ae12321891e15760aeae220d..b2d25fb6532f56ec1945f9ccbabdf01e833d1543 100644
--- a/inc/confutils.php
+++ b/inc/confutils.php
@@ -241,17 +241,24 @@ function actionOK($action){
         // prepare disabled actions array and handle legacy options
         $disabled = explode(',',$conf['disableactions']);
         $disabled = array_map('trim',$disabled);
-        if(isset($conf['openregister']) && !$conf['openregister']) $disabled[] = 'register';
-        if(isset($conf['resendpasswd']) && !$conf['resendpasswd']) $disabled[] = 'resendpwd';
-        if(isset($conf['subscribers']) && !$conf['subscribers']) {
-            $disabled[] = 'subscribe';
-        }
-        if (is_null($auth) || !$auth->canDo('addUser')) {
+        if(!empty($conf['openregister']) || is_null($auth) || !$auth->canDo('addUser')) {
             $disabled[] = 'register';
         }
-        if (is_null($auth) || !$auth->canDo('modPass')) {
+        if(!empty($conf['resendpasswd']) || is_null($auth) || !$auth->canDo('modPass')) {
             $disabled[] = 'resendpwd';
         }
+        if(!empty($conf['subscribers']) || is_null($auth)) {
+            $disabled[] = 'subscribe';
+        }
+        if (is_null($auth) || !$auth->canDo('Profile')) {
+            $disabled[] = 'profile';
+        }
+        if (is_null($auth)) {
+            $disabled[] = 'login';
+        }
+        if (is_null($auth) || !$auth->canDo('logout')) {
+            $disabled[] = 'logout';
+        }
         $disabled = array_unique($disabled);
     }
 
diff --git a/inc/fulltext.php b/inc/fulltext.php
index 1a525f743f5204dcba1778968efddcedc386788f..891558f96c7f8fc6faedb0067c5850cb6ca33d31 100644
--- a/inc/fulltext.php
+++ b/inc/fulltext.php
@@ -287,6 +287,7 @@ function ft_pagesorter($a, $b){
  */
 function ft_snippet($id,$highlight){
     $text = rawWiki($id);
+    $text = str_replace("\xC2\xAD",'',$text); // remove soft-hyphens
     $evdata = array(
             'id'        => $id,
             'text'      => &$text,
diff --git a/inc/html.php b/inc/html.php
index bd87ee7a19944ca84af768151fb865db6b0df84e..080beb01ad5957d8e04b8204d7c9c541740d85af 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -62,17 +62,11 @@ function html_login(){
     $form->endFieldset();
 
     if(actionOK('register')){
-        $form->addElement('<p>'
-                          . $lang['reghere']
-                          . ': <a href="'.wl($ID,'do=register').'" rel="nofollow" class="wikilink1">'.$lang['register'].'</a>'
-                          . '</p>');
+        $form->addElement('<p>'.$lang['reghere'].': '.tpl_actionlink('register','','','',true).'</p>');
     }
 
     if (actionOK('resendpwd')) {
-        $form->addElement('<p>'
-                          . $lang['pwdforget']
-                          . ': <a href="'.wl($ID,'do=resendpwd').'" rel="nofollow" class="wikilink1">'.$lang['btn_resendpwd'].'</a>'
-                          . '</p>');
+        $form->addElement('<p>'.$lang['pwdforget'].': '.tpl_actionlink('resendpwd','','','',true).'</p>');
     }
 
     html_form('login', $form);
@@ -318,7 +312,13 @@ function html_search(){
     global $ID;
     global $lang;
 
-    print p_locale_xhtml('searchpage');
+    $intro = p_locale_xhtml('searchpage');
+    // allow use of placeholder in search intro
+    $intro = str_replace(
+                array('@QUERY@','@SEARCH@'),
+                array(hsc(rawurlencode($QUERY)),hsc($QUERY)),
+                $intro);
+    echo $intro;
     flush();
 
     //show progressbar
@@ -864,13 +864,18 @@ function html_backlinks(){
  * show diff
  *
  * @author Andreas Gohr <andi@splitbrain.org>
+ * @param  string $text - compare with this text with most current version
+ * @param  bool   $intr - display the intro text
  */
-function html_diff($text='',$intro=true){
+function html_diff($text='',$intro=true,$type=null){
     global $ID;
     global $REV;
     global $lang;
     global $conf;
 
+    if(!$type) $type = $_REQUEST['difftype'];
+    if($type != 'inline') $type = 'sidebyside';
+
     // we're trying to be clever here, revisions to compare can be either
     // given as rev and rev2 parameters, with rev2 being optional. Or in an
     // array in rev2.
@@ -987,17 +992,48 @@ function html_diff($text='',$intro=true){
     $df = new Diff(explode("\n",htmlspecialchars($l_text)),
         explode("\n",htmlspecialchars($r_text)));
 
-    $tdf = new TableDiffFormatter();
+    if($type == 'inline'){
+        $tdf = new InlineDiffFormatter();
+    } else {
+        $tdf = new TableDiffFormatter();
+    }
+
+
+
     if($intro) print p_locale_xhtml('diff');
 
     if (!$text) {
-        $diffurl = wl($ID, array('do'=>'diff', 'rev2[0]'=>$l_rev, 'rev2[1]'=>$r_rev));
         ptln('<p class="difflink">');
-        ptln('  <a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a>');
+
+        $form = new Doku_Form(array('action'=>wl()));
+        $form->addHidden('id',$ID);
+        $form->addHidden('rev2[0]',$l_rev);
+        $form->addHidden('rev2[1]',$r_rev);
+        $form->addHidden('do','diff');
+        $form->addElement(form_makeListboxField(
+                            'difftype',
+                            array(
+                                'sidebyside' => $lang['diff_side'],
+                                'inline'     => $lang['diff_inline']),
+                            $type,
+                            $lang['diff_type'],
+                            '','',
+                            array('class'=>'quickselect')));
+        $form->addElement(form_makeButton('submit', 'diff','Go'));
+        $form->printForm();
+
+
+        $diffurl = wl($ID, array(
+                        'do'       => 'diff',
+                        'rev2[0]'  => $l_rev,
+                        'rev2[1]'  => $r_rev,
+                        'difftype' => $type,
+                      ));
+        ptln('<br /><a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a>');
         ptln('</p>');
     }
     ?>
-    <table class="diff">
+    <table class="diff diff_<?php echo $type?>">
     <tr>
     <th colspan="2" <?php echo $l_minor?>>
     <?php echo $l_head?>
@@ -1069,7 +1105,7 @@ function html_register(){
     print p_locale_xhtml('register');
     print '<div class="centeralign">'.NL;
     $form = new Doku_Form(array('id' => 'dw__register'));
-    $form->startFieldset($lang['register']);
+    $form->startFieldset($lang['btn_register']);
     $form->addHidden('do', 'register');
     $form->addHidden('save', '1');
     $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], null, 'block', array('size'=>'50')));
@@ -1079,7 +1115,7 @@ function html_register(){
     }
     $form->addElement(form_makeTextField('fullname', $_POST['fullname'], $lang['fullname'], '', 'block', array('size'=>'50')));
     $form->addElement(form_makeTextField('email', $_POST['email'], $lang['email'], '', 'block', array('size'=>'50')));
-    $form->addElement(form_makeButton('submit', '', $lang['register']));
+    $form->addElement(form_makeButton('submit', '', $lang['btn_register']));
     $form->endFieldset();
     html_form('register', $form);
 
@@ -1398,10 +1434,11 @@ function html_admin(){
     }
 
     // data security check
-    echo '<a style="background: transparent url(data/security.png) left top no-repeat;
-                  display: block; width:380px; height:73px; border:none; float:right"
-           target="_blank"
-           href="http://www.dokuwiki.org/security#web_access_security"></a>';
+    // @todo: could be checked and only displayed if $conf['savedir'] is under the web root
+    echo '<a style="border:none; float:right;" target="_blank"
+            href="http://www.dokuwiki.org/security#web_access_security">
+            <img src="data/security.png" alt="Your data directory seems to be protected properly."
+             onerror="this.parentNode.style.display=\'none\'" /></a>';
 
     print p_locale_xhtml('admin');
 
diff --git a/inc/indexer.php b/inc/indexer.php
index 6b21797af87ef5017bebbb3ced3a96a6d208cc5c..5aa321d46c1a8db5364fbb6924ca253cc66d43a8 100644
--- a/inc/indexer.php
+++ b/inc/indexer.php
@@ -27,6 +27,10 @@ define('IDX_ASIAN2','['.
                    '\x{30FD}-\x{31EF}\x{3200}-\x{D7AF}'.
                    '\x{F900}-\x{FAFF}'.  // CJK Compatibility Ideographs
                    '\x{FE30}-\x{FE4F}'.  // CJK Compatibility Forms
+                   "\xF0\xA0\x80\x80-\xF0\xAA\x9B\x9F". // CJK Extension B
+                   "\xF0\xAA\x9C\x80-\xF0\xAB\x9C\xBF". // CJK Extension C
+                   "\xF0\xAB\x9D\x80-\xF0\xAB\xA0\x9F". // CJK Extension D
+                   "\xF0\xAF\xA0\x80-\xF0\xAF\xAB\xBF". // CJK Compatibility Supplement
                    ']');
 define('IDX_ASIAN3','['.                // Hiragana/Katakana (can be two characters)
                    '\x{3042}\x{3044}\x{3046}\x{3048}'.
@@ -423,7 +427,14 @@ class Doku_Indexer {
                 if (!is_null($asia)) $text = $asia; // recover from regexp falure
             }
         }
-        $text = strtr($text, "\r\n\t", '   ');
+        $text = strtr($text,
+                       array(
+                           "\r" => ' ',
+                           "\n" => ' ',
+                           "\t" => ' ',
+                           "\xC2\xAD" => '', //soft-hyphen
+                       )
+                     );
         if (preg_match('/[^0-9A-Za-z ]/u', $text))
             $text = utf8_stripspecials($text, ' ', '\._\-:'.$wc);
 
@@ -772,14 +783,20 @@ class Doku_Indexer {
     private function _lock() {
         global $conf;
         $status = true;
+        $run = 0;
         $lock = $conf['lockdir'].'/_indexer.lock';
         while (!@mkdir($lock, $conf['dmode'])) {
             usleep(50);
-            if (time() - @filemtime($lock) > 60*5) {
-                // looks like a stale lock, remove it
-                @rmdir($lock);
-                $status = "stale lock removed";
-            } else {
+            if(is_dir($lock) && time()-@filemtime($lock) > 60*5){
+                // looks like a stale lock - remove it
+                if (!@rmdir($lock)) {
+                    $status = "removing the stale lock failed";
+                    return false;
+                } else {
+                    $status = "stale lock removed";
+                }
+            }elseif($run++ == 1000){
+                // we waited 5 seconds for that lock
                 return false;
             }
         }
diff --git a/inc/init.php b/inc/init.php
index f4c8679350106f16848d8aa8ca62723cfd3244ab..772f85c7762a752474e90f32672773d249d69b62 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -11,7 +11,7 @@ function delta_time($start=0) {
 define('DOKU_START_TIME', delta_time());
 
 global $config_cascade;
-$config_cascade = '';
+$config_cascade = array();
 
 // if available load a preload config file
 $preload = fullpath(dirname(__FILE__)).'/preload.php';
@@ -52,10 +52,9 @@ global $cache_authname;
 global $cache_metadata;
        $cache_metadata = array();
 
-//set the configuration cascade - but only if its not already been set in preload.php
-if (empty($config_cascade)) {
-    include(DOKU_INC.'inc/config_cascade.php');
-}
+// always include 'inc/config_cascade.php'
+// previously in preload.php set fields of $config_cascade will be merged with the defaults
+include(DOKU_INC.'inc/config_cascade.php');
 
 //prepare config array()
 global $conf;
diff --git a/inc/lang/af/lang.php b/inc/lang/af/lang.php
index fce59d13e6d670c8d13f968bd592f28149e6f2a6..6665196f41735df34c8e2852b45ace721c7e700e 100644
--- a/inc/lang/af/lang.php
+++ b/inc/lang/af/lang.php
@@ -26,6 +26,7 @@ $lang['btn_backlink']          = 'Wat skakel hierheen';
 $lang['btn_subscribe']         = 'Hou bladsy dop';
 $lang['btn_unsubscribe']       = 'Verwyder van bladsy  dophoulys';
 $lang['btn_resendpwd']         = 'E-pos nuwe wagwoord';
+$lang['btn_register']          = 'Skep gerus \'n rekening';
 $lang['loggedinas']            = 'Ingeteken as';
 $lang['user']                  = 'Gebruikernaam';
 $lang['pass']                  = 'Wagwoord';
@@ -35,7 +36,6 @@ $lang['passchk']               = 'Herhaal wagwoord';
 $lang['remember']              = 'Onthou my wagwoord oor sessies';
 $lang['fullname']              = 'Regte naam';
 $lang['email']                 = 'E-pos';
-$lang['register']              = 'Skep gerus \'n rekening';
 $lang['badlogin']              = 'Intekenfout';
 $lang['minoredit']             = 'Klein wysiging';
 $lang['reguexists']            = 'Die gebruikersnaam wat jy gebruik het, is alreeds gebruik. Kies asseblief \'n ander gebruikersnaam.';
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index 0a2341b97f494ae258889f5a909cb3a18cbf5a8d..300ec3b9a683bbd295e0aa9cec880bbb0725b421 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -46,7 +46,7 @@ $lang['btn_draft']             = 'حرر المسودة';
 $lang['btn_recover']           = 'استرجع المسودة';
 $lang['btn_draftdel']          = 'احذف المسوّدة';
 $lang['btn_revert']            = 'استعد
-';
+$lang['btn_register']          = 'سجّل';
 $lang['loggedinas']            = 'داخل باسم';
 $lang['user']                  = 'اسم المستخدم';
 $lang['pass']                  = 'كلمة السر';
@@ -56,7 +56,6 @@ $lang['passchk']               = 'مرة أخرى';
 $lang['remember']              = 'تذكرني';
 $lang['fullname']              = 'الاسم الحقيقي';
 $lang['email']                 = 'البريد الإلكتروني';
-$lang['register']              = 'سجّل';
 $lang['profile']               = 'الملف الشخصي';
 $lang['badlogin']              = 'عذرا، اسم المشترك أو كلمة السر غير صحيحة';
 $lang['minoredit']             = 'تعديلات طفيفة';
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index ca826c8e0c294cf125522dd407555a6e9942f9ed..35b18d3a76d62ed6a0ceebcd1d4a9f1230548ecd 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -47,6 +47,7 @@ $lang['btn_draft']             = 'Qaralamada düzəliş etmək';
 $lang['btn_recover']           = 'Qaralamanı qaytar';
 $lang['btn_draftdel']          = 'Qaralamanı sil';
 $lang['btn_revert']            = 'Qaytar';
+$lang['btn_register']          = 'Qeydiyyatdan keç';
 $lang['loggedinas']            = 'İstifadəcinin adı';
 $lang['user']                  = 'istifadəci adı';
 $lang['pass']                  = 'ÅžifrÉ™';
@@ -56,7 +57,6 @@ $lang['passchk']               = 'təkrarlayın';
 $lang['remember']              = 'Məni yadda saxla';
 $lang['fullname']              = 'Tam ad';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Qeydiyyatdan keç';
 $lang['profile']               = 'İstifadəçi profili';
 $lang['badlogin']              = 'Təssüf ki istifadəçi adı və ya şifrə səhvdir.';
 $lang['minoredit']             = 'Az dəyişiklər';
diff --git a/inc/lang/bg/admin.txt b/inc/lang/bg/admin.txt
index 8d16f68aa2c48eca3bfc0ae52d8e996127957faf..d3c14a0da5008b10905ea2efea7dac5a94e5813f 100644
--- a/inc/lang/bg/admin.txt
+++ b/inc/lang/bg/admin.txt
@@ -1,3 +1,3 @@
-====== Администрация ======
+====== Администриране ======
 
-Долу може да намерите списък с администраторски задачи в DokuWiki.
\ No newline at end of file
+Отдолу ще намерите списъка с администраторските задачи в DokuWiki.
\ No newline at end of file
diff --git a/inc/lang/bg/adminplugins.txt b/inc/lang/bg/adminplugins.txt
index 2b0268ed49d2cbfbcc614e9b043127424dfbeb16..df24b0538ce24c1a0c3285b12d5d9dcef86c2448 100644
--- a/inc/lang/bg/adminplugins.txt
+++ b/inc/lang/bg/adminplugins.txt
@@ -1 +1 @@
-===== Допълнителни Plugins =====
\ No newline at end of file
+===== Допълнителни приставки =====
\ No newline at end of file
diff --git a/inc/lang/bg/backlinks.txt b/inc/lang/bg/backlinks.txt
index 28801a8ee2fb544400ac0b0cb73ba5b942a9b1ed..dd633d94d7bb83c3c19a4a51f06875a8b65ab6b0 100644
--- a/inc/lang/bg/backlinks.txt
+++ b/inc/lang/bg/backlinks.txt
@@ -1,3 +1,3 @@
-====== Задни връзки ======
+====== Обратни препратки ======
 
-Това е списък на страници, които изглежда препращат обратно към текущата страница.
+Това е списък на страниците, които препращат обратно към текущата страница.
diff --git a/inc/lang/bg/conflict.txt b/inc/lang/bg/conflict.txt
index 51ec4b706fad9808595fe6d9423a2d31f7b116e4..8c62a3787cdfce3874e6fdd9f245c1f7fe2cb1af 100644
--- a/inc/lang/bg/conflict.txt
+++ b/inc/lang/bg/conflict.txt
@@ -1,6 +1,6 @@
-====== По-нова версия съшествува ======
+====== Съществува по-нова версия ======
 
-По-нова версия на документа който сте редактирали съществува. Това се случва когато друг потребител е променил документа докато сте го редактирали.
+Съществува по-нова версия на документа, който сте редактирали. Това се случва когато друг потребител е променил документа докато сте го редактирали.
 
-Разгледайте внимателно разгледайте разликите показани долу, след това решете коя версия да запазите. Ако изберете ''Запис'', версия Ви ще бъде запазена. Изберете ''Отказ'', за да запазите текущата версия.
+Разгледайте внимателно разликите, след това решете коя версия да бъде запазена. Ако натиснете ''Запис'', ще бъде запазена вашата версия. Натиснете ли ''Отказ'', ще бъде запазена текущата версия.
 
diff --git a/inc/lang/bg/denied.txt b/inc/lang/bg/denied.txt
index 7b1d5788ebe3f9a123564145012e3196373b874b..45ce6376971a88df1c8ec1702724d3b7d281dbdb 100644
--- a/inc/lang/bg/denied.txt
+++ b/inc/lang/bg/denied.txt
@@ -1,4 +1,4 @@
 ====== Отказан достъп ======
 
-Нямате достатъчно права да продължите. Може би сте забравили да влезете?
+Нямате достатъчно права, за да продължите. Може би сте забравили да се впишете?
 
diff --git a/inc/lang/bg/diff.txt b/inc/lang/bg/diff.txt
index 2bd8262c68385031bd2ad3113908bbb2969a046f..b1d49de92b275cfbcaac18203300c310a7f71e15 100644
--- a/inc/lang/bg/diff.txt
+++ b/inc/lang/bg/diff.txt
@@ -1,4 +1,4 @@
 ====== Разлики ======
 
-Тук са показани разликите между избраната версия на страницата и текущата.
+Тук са показани разликите между избраната и текущата версия на страницата.
 
diff --git a/inc/lang/bg/draft.txt b/inc/lang/bg/draft.txt
index 1938e7d9cdc281f6b323ee8b0be14dfd320a4031..a59201130bbb439705389d7f2f32a854734d72d2 100644
--- a/inc/lang/bg/draft.txt
+++ b/inc/lang/bg/draft.txt
@@ -1,6 +1,6 @@
 ====== Намерена чернова ======
 
-Последната редакционна сесия на тази страница не е завършена правилно. Dokuwiki автоматично запазва чернова по време на работа, която може сега да използвате, за да продължите редактирането си. Долу може да видите данните, които бяха запазени от последната сесия.
+Последната редакционна сесия на страницата не е завършена правилно. Dokuwiki автоматично запазва чернова по време на редактирането, която можете да ползвате сега, за да продължите работата си. Отдолу може да видите данните, които бяха запазени от последната сесия.
 
-Моля решете, дали искате да //recover// последната си редакционна сесия, да //delete// автоматично запазената чернова или да //cancel// редакцията.
+Моля решете, дали искате да //възстановите// последната си редакционна сесия, //изтриете// автоматично запазената чернова или //откажете// редакцията.
 
diff --git a/inc/lang/bg/edit.txt b/inc/lang/bg/edit.txt
index 90d376dbcb721ccbb45425e6e4095d2259d4fd96..086d9978e074df7ce7b2b0abe6c0deccbfb0059e 100644
--- a/inc/lang/bg/edit.txt
+++ b/inc/lang/bg/edit.txt
@@ -1,2 +1,2 @@
-Редактирайте страницата и натиснете ''Запис''. Погледнете [[wiki:syntax]] за Wiki синтаксис. Моля редактирайте страницата, само ако може да я **подобрите**. Ако искате да пробвате разни неща, научете се да правите първите си стъпки в [[playground:playground|пясъчника]].
+Редактирайте и натиснете ''Запис''. За информация относно ползвания синтаксис прочетете [[wiki:syntax]]. Моля, редактирайте само когато може да **подобрите** съдържанието. Ако ще пробвате разни неща, може да експериментирате в [[playground:playground|пясъчника]].
 
diff --git a/inc/lang/bg/editrev.txt b/inc/lang/bg/editrev.txt
index 87e7b26a834c03f14d65dd6c827aae4753610732..ba97f253abda27cd849c70564aca053cf4bda786 100644
--- a/inc/lang/bg/editrev.txt
+++ b/inc/lang/bg/editrev.txt
@@ -1,2 +1,2 @@
-**Заредили сте стара версия на документа!** Ако я запазите, ще създадете нова редакция с текущите данни.
+**Заредена е стара версия на документа!** Ако я запазите, ще създадете нова версия с текущите данни.
 ----
diff --git a/inc/lang/bg/index.txt b/inc/lang/bg/index.txt
index 2ebf5128acd7823191ab7d876bce3014c26d1822..7dabac6af89f12433952ed6b75091c54784f4f95 100644
--- a/inc/lang/bg/index.txt
+++ b/inc/lang/bg/index.txt
@@ -1,4 +1,4 @@
 ====== Индекс ======
 
-Това е списък на всички достъпни страници подредени по [[doku>namespaces|именни пространства]].
+Това е списък на всички налични страници подредени по [[doku>namespaces|именни пространства]].
 
diff --git a/inc/lang/bg/install.html b/inc/lang/bg/install.html
index 0d7fd52320b9051ad483c35131e2893d7f993fd3..6dde7e4cefc57a62a48136b127c32544b8df21d5 100644
--- a/inc/lang/bg/install.html
+++ b/inc/lang/bg/install.html
@@ -1,25 +1,18 @@
-<p>Тази страница помага при първоначална инсталация и настройка на
+<p>Страницата помага при първа инсталация и настройване на
 <a href="http://dokuwiki.org">Dokuwiki</a>.  Повече информация 
-за този инсталатор е достъпна в неговата собствена 
-<a href="http://dokuwiki.org/installer">документация</a>.</p>
+за инсталатора ще намерите в <a href="http://dokuwiki.org/installer">документацията му</a>.</p>
 
-<p>Dokuwiki използва обикновени файлове за хранилище на уики страниците и друга 
-информация свързана с тези страници(примерно картинки, търсене, стари версии, т.н.).
-За да използвате успешно DokuWiki 
-<strong>трябва</strong> да имате достъп за писане в директориите които съдържат тези
-файлове. Този инсталатор няма възможности да настройва правата на директориите. 
-Това обикновено трябва да бъде направено директно от командният ред или ако 
-използвате хостинг - през FTP или контрол панела на хоста(примерно cPanel).</p>
+<p>Dokuwiki ползва обикновени файлове за хранилище на страниците и друга 
+информация свързана с тях (примерно картинки, търсене, стари версии, и др.).
+За да функционира нормално DokuWiki 
+<strong>трябва</strong> да има право за писане в директориите, които съдържат тези
+файлове. Инсталаторът не може да настройва правата на директориите. 
+Обикновено трябва да направите това директно от командният ред или ако 
+ползвате хостинг - през FTP или контролния панела на хоста (примерно cPanel).</p>
 
-<p>Този инсталатор ще настрои вашата DokuWiki конфигурация за
-<acronym title="access control list">ACL</acronym>, което на 
-свой ред ще позволи на администратора да влезе и да има достъп 
-до администраторското меню в DokuWiki за инсталиране на плъгини, контрол 
-на потребители, управление да достъп до уики страници и промяна на настройките
-Това не е необходимо на DokuWiki да работи, но ще направи DokuWiki по-лесно за 
-администриране.</p>
+<p>Инсталаторът ще настрои вашата DokuWiki конфигурация на
+<acronym title="списъка за достъп">ACL</acronym>, което ще позволи на администратора да се впише и ползва администраторското меню в DokuWiki за инсталиране на приставки, контрол 
+на потребители, управление на достъпа до страниците и промяна на останалите настройки. Това не е необходимо за функционирането на DokuWiki, но направи администрирането на DokuWiki по-лесно.</p>
 
-<p>Опитните потребители или потребителите със специални изисквания 
-към настройките може да използват тези връзки за детайли свързани с
-<a href="http://dokuwiki.org/install">инструкции за инсталация</a>
-и <a href="http://dokuwiki.org/config">настройка</a>.</p>
+<p>Опитните потребители или потребителите със специални изисквания към настройките имат на разположение информация относно <a href="http://dokuwiki.org/install"> инсталацията</a>
+и <a href="http://dokuwiki.org/config">настройките</a>.</p>
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index 053a7f1baa0f4a720162404cd7de346aa51cf85f..c7c52b70f1cb833a7cd52bde02f3a271e24f941e 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -5,6 +5,7 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -14,8 +15,8 @@ $lang['singlequoteopening']    = '‘';
 $lang['singlequoteclosing']    = '’';
 $lang['apostrophe']            = '’';
 $lang['btn_edit']              = 'Редактиране';
-$lang['btn_source']            = 'Показване на кода на страницата';
-$lang['btn_show']              = 'Показване на страница';
+$lang['btn_source']            = 'Преглед на кода';
+$lang['btn_show']              = 'Преглед на страницата';
 $lang['btn_create']            = 'Създаване на страница';
 $lang['btn_search']            = 'Търсене';
 $lang['btn_save']              = 'Запис';
@@ -24,224 +25,260 @@ $lang['btn_top']               = 'Към началото';
 $lang['btn_newer']             = '<< по-нови';
 $lang['btn_older']             = 'по-стари >>';
 $lang['btn_revs']              = 'История';
-$lang['btn_recent']            = 'Последни промени';
+$lang['btn_recent']            = 'Скорошни промени';
 $lang['btn_upload']            = 'Качване';
 $lang['btn_cancel']            = 'Отказ';
 $lang['btn_index']             = 'Индекс';
 $lang['btn_secedit']           = 'Редактиране';
-$lang['btn_login']             = 'Вход';
-$lang['btn_logout']            = 'Изход';
+$lang['btn_login']             = 'Вписване';
+$lang['btn_logout']            = 'Отписване';
 $lang['btn_admin']             = 'Настройки';
-$lang['btn_update']            = 'Обновяване';
+$lang['btn_update']            = 'Актуализиране';
 $lang['btn_delete']            = 'Изтриване';
 $lang['btn_back']              = 'Назад';
-$lang['btn_backlink']          = 'Обратни връзки';
-$lang['btn_backtomedia']       = 'Назад към избор на медиен файл';
-$lang['btn_subscribe']         = 'Абониране за Промени';
-$lang['btn_unsubscribe']       = 'Отписване от Промени';
-$lang['btn_subscribens']       = 'Абониране за Промени на именно пространство';
-$lang['btn_unsubscribens']     = 'Отписване от Промени на именно пространство';
-$lang['btn_profile']           = 'Актуализирай Профила';
+$lang['btn_backlink']          = 'Обратни препратки';
+$lang['btn_backtomedia']       = 'Назад към избора на медиен файл';
+$lang['btn_subscribe']         = 'Абонаменти';
+$lang['btn_profile']           = 'Профил';
 $lang['btn_reset']             = 'Изчистване';
 $lang['btn_resendpwd']         = 'Пращане на нова парола';
 $lang['btn_draft']             = 'Редактиране на чернова';
 $lang['btn_recover']           = 'Възстановяване на чернова';
 $lang['btn_draftdel']          = 'Изтриване на чернова';
 $lang['btn_revert']            = 'Възстановяване';
-$lang['loggedinas']            = 'Влезли сте като';
+$lang['btn_register']          = 'Регистриране';
+$lang['loggedinas']            = 'Вписани сте като';
 $lang['user']                  = 'Потребител';
 $lang['pass']                  = 'Парола';
 $lang['newpass']               = 'Нова парола';
 $lang['oldpass']               = 'Потвърждение на текуща парола';
-$lang['passchk']               = 'oтново';
+$lang['passchk']               = 'още веднъж';
 $lang['remember']              = 'Запомни ме';
-$lang['fullname']              = 'Пълно име';
+$lang['fullname']              = 'Истинско име';
 $lang['email']                 = 'Електронна поща';
-$lang['register']              = 'Регистрация';
 $lang['profile']               = 'Потребителски профил';
-$lang['badlogin']              = 'Потребителското име или паролата са грешни';
+$lang['badlogin']              = 'Грешно потребителско име или парола.';
 $lang['minoredit']             = 'Незначителни промени';
-$lang['draftdate']             = 'Черновата бе автоматично записана на';
+$lang['draftdate']             = 'Черновата е автоматично записана на';
 $lang['nosecedit']             = 'Страницата бе междувременно променена, презареждане на страницата поради неактуална информация.';
 $lang['regmissing']            = 'Моля, попълнете всички полета.';
-$lang['reguexists']            = 'Потребител с такова име вече съществува.';
-$lang['regsuccess']            = 'Потребителят бе създаден и паролата бе пратена на електронната поща.';
-$lang['regsuccess2']           = 'Потребителят бе създаден.';
-$lang['regmailfail']           = 'Изглежда, че има проблем с пращането на писмото с паролата. Моля, свържете се с администратора.';
+$lang['reguexists']            = 'Вече съществува потребител с избраното име.';
+$lang['regsuccess']            = 'Потребителят е създаден, а паролата е пратена по електронната поща.';
+$lang['regsuccess2']           = 'Потребителят е създаден.';
+$lang['regmailfail']           = 'Изглежда, че има проблем с пращането на писмото с паролата. Моля, свържете се с администратора!';
 $lang['regbadmail']            = 'Въведеният адрес изглежда невалиден - ако мислите, че това е грешка, свържете се с администратора.';
-$lang['regbadpass']            = 'Двете въведени пароли не съвпадат, моля опитайте отново';
-$lang['regpwmail']             = 'Парола за DokuWiki';
-$lang['reghere']               = 'Нямате профил все още? Направете си!';
-$lang['profna']                = 'Това Wiki не поддържа промяна на профила';
+$lang['regbadpass']            = 'Двете въведени пароли не съвпадат, моля опитайте отново.';
+$lang['regpwmail']             = 'Паролата ви за DokuWiki';
+$lang['reghere']               = 'Все още нямате профил? Направете си';
+$lang['profna']                = 'Wiki-то не поддържа промяна на профила';
 $lang['profnochange']          = 'Няма промени.';
-$lang['profnoempty']           = 'Невъведено име или електронна поща не са позволени.';
-$lang['profchanged']           = 'Потребителският профил бе успешно обновен.';
-$lang['pwdforget']             = 'Забравили сте си паролата? Въведете нова.';
-$lang['resendna']              = 'Това Wiki не поддържа повторно пращане на парола';
+$lang['profnoempty']           = 'Въвеждането на име и ел. поща е задължително';
+$lang['profchanged']           = 'Потребителският профил е обновен успешно.';
+$lang['pwdforget']             = 'Забравили сте паролата си? Получете нова';
+$lang['resendna']              = 'Wiki-то не поддържа повторно пращане на паролата.';
 $lang['resendpwd']             = 'Изпращане на нова парола за';
 $lang['resendpwdmissing']      = 'Моля, попълнете всички полета.';
-$lang['resendpwdnouser']       = 'Потребителят не бе намерен в базата данни.';
-$lang['resendpwdbadauth']      = 'Този код за потвърждение е невалиден. Проверете дали сте използвали целият линк за потвърждение.';
-$lang['resendpwdconfirm']      = 'Адресът за потвърждение бе пратен по електронната поща.';
-$lang['resendpwdsuccess']      = 'Паролата ви бе изпратена на електронната поща.';
-$lang['license']               = 'Освен ако не е посочено друго, съдържанието на това Wiki е лицензирано под следния лиценз:';
-$lang['licenseok']             = 'Имайте предвид, че чрез редактирането на тази страница, Вие се съгласявате съдържанието й да бъде лицензирано под следния лиценз:';
+$lang['resendpwdnouser']       = 'Потребителят не е намерен в базата от данни.';
+$lang['resendpwdbadauth']      = 'Кодът за потвърждение е невалиден. Проверете дали сте използвали целия линк за потвърждение.';
+$lang['resendpwdconfirm']      = 'Линк за потвърждение е пратен по електронната поща.';
+$lang['resendpwdsuccess']      = 'Новата ви паролата е пратена по електронната поща.';
+$lang['license']               = 'Ако не е посочено друго, съдържанието на Wiki-то е лицензирано под следния лиценз:';
+$lang['licenseok']             = 'Бележка: Редактирайки страницата, вие се съгласявате да лицензирате промените (които сте направили) под следния лиценз:';
 $lang['searchmedia']           = 'Търсене на файл: ';
 $lang['searchmedia_in']        = 'Търсене в %s';
-$lang['txt_upload']            = 'Изберете файл за качване ';
-$lang['txt_filename']          = 'Качване като (по избор)';
-$lang['txt_overwrt']           = 'Запис върху съществуващ файл';
-$lang['lockedby']              = 'В момента е заключено от';
-$lang['lockexpire']            = 'Затварянето изтича в';
-$lang['willexpire']            = 'Затварянето на страницата за редактиране изтича след минута.\nЗа да избегнете противоречия, използвайте бутона, за да рестартирате броячът за затваряне.';
-$lang['js']['notsavedyet']     = "Незапазените промени ще бъдат загубени.\nИскате ли да продължите?";
-$lang['rssfailed']             = 'Възникна грешка при вземането на този feed: ';
-$lang['nothingfound']          = 'Нищо не бе намерено.';
+$lang['txt_upload']            = 'Изберете файл за качване';
+$lang['txt_filename']          = 'Качи като (незадължително)';
+$lang['txt_overwrt']           = 'Презапиши съществуващите файлове';
+$lang['lockedby']              = 'В момента е заключена от';
+$lang['lockexpire']            = 'Ще бъде отключена на';
+$lang['willexpire']            = 'Страницата ще бъде отключена за редактиране след минута.\nЗа предотвратяване на конфликти, ползвайте бутона "Преглед", за рестартиране на брояча за заключване.';
+$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']['medialnk']        = 'Препратка към подробна страница';
+$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 shares работят само под Internet Explorer.
+Можете да копирате и поставите връзката.';
+$lang['js']['linkwiz']         = 'Помощник за препратки';
+$lang['js']['linkto']          = 'Препратка към: ';
+$lang['js']['del_confirm']     = 'Да бъдат ли изтрити избраните елементи?';
+$lang['js']['mu_btn']          = 'Качване на няколко файла наведнъж';
+$lang['rssfailed']             = 'Възникна грешка при получаването на емисията: ';
+$lang['nothingfound']          = 'Нищо не е открито.';
 $lang['mediaselect']           = 'Медийни файлове';
 $lang['fileupload']            = 'Качване на медийни файлове';
-$lang['uploadsucc']            = 'Качването бе успешно';
-$lang['uploadfail']            = 'Качването бе неуспешно. Може би поради грешни права?';
-$lang['uploadwrong']           = 'Качването бе отказано. Това файлово разширение е забранено!';
-$lang['uploadexist']           = 'Файлът вече съществува. Нищо не бе направено.';
-$lang['uploadbadcontent']      = 'Каченото съдържание на съответства на файлово разширение %s .';
-$lang['uploadspam']            = 'Качването бе блокирано от спам списъка.';
-$lang['uploadxss']             = 'Качването бе блокирано, заради възможно обидно съдържание.';
-$lang['uploadsize']            = 'Файльт за качване бе прекалено голям. (макс. %s)';
+$lang['uploadsucc']            = 'Качването е успешно';
+$lang['uploadfail']            = 'Качването се провали. Може би поради грешни права?';
+$lang['uploadwrong']           = 'Качването е отказано. Файлово разширение е забранено!';
+$lang['uploadexist']           = 'Файлът вече съществува. Нищо не е направено.';
+$lang['uploadbadcontent']      = 'Каченото съдържание не съответства на файлово разширение %s .';
+$lang['uploadspam']            = 'Качването е блокирано от SPAM списъка.';
+$lang['uploadxss']             = 'Качването е блокирано, поради възможно зловредно съдържание.';
+$lang['uploadsize']            = 'Файльт за качване е прекалено голям. (макс. %s)';
 $lang['deletesucc']            = 'Файлът "%s" бе изтрит.';
-$lang['deletefail']            = '"%s" не бе изтрит, проверете правата';
+$lang['deletefail']            = '"%s" не може да бъде изтрит - проверете правата.';
 $lang['mediainuse']            = 'Файлът "%s" не бе изтрит - все още се ползва.';
 $lang['namespaces']            = 'Именни пространства';
-$lang['mediafiles']            = 'Достъпни файлове в';
-$lang['js']['searchmedia']     = 'Търси файлове';
-$lang['js']['keepopen']        = 'Задържане на прозореца отворен при избор';
-$lang['js']['hidedetails']     = 'Скрий детайлите';
-$lang['js']['nosmblinks']      = 'Връзките към Windows shares работят само под Internet Explorer.
-Можете да копирате и поставите връзката.';
-$lang['js']['linkwiz']         = 'Линк съветник';
-$lang['js']['linkto']          = 'Линк към: ';
-$lang['js']['del_confirm']     = 'Да бъдат ли изтрити избраните елементи?';
-$lang['js']['mu_btn']          = 'Качване на няколко файла наведнъж';
-$lang['mediausage']            = 'Използвайте следният синтакс, за да упоменете файла:';
+$lang['mediafiles']            = 'Налични файлове в';
+$lang['accessdenied']          = 'Нямате разрешение да преглеждате страницата.';
+$lang['mediausage']            = 'Ползвайте следния синтаксис, за да упоменете файла:';
 $lang['mediaview']             = 'Преглед на оригиналния файл';
 $lang['mediaroot']             = 'root';
-$lang['mediaupload']           = 'Качете файл в текущото именнопространство тук. За да създадете подименни пространства, добавете ги в началото на "Качи като" име на файл, разделени с двоеточие.';
-$lang['mediaextchange']        = 'Разширението на файла бе сменено от .%s на .%s!';
-$lang['reference']             = 'Референции за';
+$lang['mediaupload']           = 'Качете файл в текущото именно пространство. За създаване на подимено пространство, добавете име преди това на файла като ги разделите с двоеточие в полето "Качи като"';
+$lang['mediaextchange']        = 'Разширението на файла е сменено от .%s на .%s!';
+$lang['reference']             = 'Връзки за';
 $lang['ref_inuse']             = 'Файлът не може да бъде изтрит, защото все още се ползва от следните страници:';
-$lang['ref_hidden']            = 'Някои препратки са към страници, които нямате права да четете';
+$lang['ref_hidden']            = 'Някои връзки са към страници, които нямате права да четете';
 $lang['hits']                  = 'Съвпадения';
 $lang['quickhits']             = 'Съвпадащи имена на страници';
 $lang['toc']                   = 'Съдържание';
-$lang['current']               = 'текущо';
+$lang['current']               = 'текуща';
 $lang['yours']                 = 'Вашата версия';
 $lang['diff']                  = 'Преглед на разликите с текущата версия';
-$lang['diff2']                 = 'Показване на разликите между избрани преработки';
+$lang['diff2']                 = 'Показване на разликите между избрани версии';
+$lang['difflink']              = 'Препратка към сравнението на версиите';
+$lang['diff_type']             = 'Преглед на разликите:';
+$lang['diff_inline']           = 'Вграден';
+$lang['diff_side']             = 'Един до друг';
 $lang['line']                  = 'Ред';
 $lang['breadcrumb']            = 'Следа';
 $lang['youarehere']            = 'Намирате се в';
 $lang['lastmod']               = 'Последна промяна';
 $lang['by']                    = 'от';
-$lang['deleted']               = 'изтриване';
-$lang['created']               = 'създаване';
+$lang['deleted']               = 'изтрита';
+$lang['created']               = 'създадена';
 $lang['restored']              = 'възстановена предишна версия';
 $lang['external_edit']         = 'външна редакция';
 $lang['summary']               = 'Обобщение';
-$lang['noflash']               = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> е необходим за показване на съдържанието.';
+$lang['noflash']               = 'Необходим е <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> за изобразяване на съдържанието.';
 $lang['download']              = 'Изтегляне на фрагмент';
-$lang['mail_newpage']          = 'добавена страница:';
-$lang['mail_changed']          = 'променена страница:';
-$lang['mail_new_user']         = 'нов потребител:';
+$lang['mail_newpage']          = 'добавена страница: ';
+$lang['mail_changed']          = 'променена страница: ';
+$lang['mail_subscribe_list']   = 'променени страници в именно пространство: ';
+$lang['mail_new_user']         = 'нов потребител: ';
 $lang['mail_upload']           = 'качен файл: ';
 $lang['qb_bold']               = 'Удебелен текст';
 $lang['qb_italic']             = 'Курсив текст';
 $lang['qb_underl']             = 'Подчертан текст';
 $lang['qb_code']               = 'Код';
 $lang['qb_strike']             = 'Зачеркнат текст';
-$lang['qb_h1']                 = 'Заглавие ниво 1';
-$lang['qb_h2']                 = 'Заглавие ниво 2';
-$lang['qb_h3']                 = 'Заглавие ниво 3';
-$lang['qb_h4']                 = 'Заглавие ниво 4';
-$lang['qb_h5']                 = 'Заглавие ниво 5';
+$lang['qb_h1']                 = 'Заглавие от 1 ниво';
+$lang['qb_h2']                 = 'Заглавие от 2 ниво';
+$lang['qb_h3']                 = 'Заглавие от 3 ниво';
+$lang['qb_h4']                 = 'Заглавие от 4 ниво';
+$lang['qb_h5']                 = 'Заглавие от 5 ниво';
 $lang['qb_h']                  = 'Заглавие';
-$lang['qb_hs']                 = 'Избери заглавие';
-$lang['qb_hplus']              = 'Основно заглавие';
+$lang['qb_hs']                 = 'Изберете заглавие';
+$lang['qb_hplus']              = 'Надзаглавие';
 $lang['qb_hminus']             = 'Подзаглавие';
-$lang['qb_hequal']             = 'Заглавие на същото ниво';
+$lang['qb_hequal']             = 'Заглавие от същото ниво';
 $lang['qb_link']               = 'Вътрешна препратка';
 $lang['qb_extlink']            = 'Външна препратка';
 $lang['qb_hr']                 = 'Хоризонтална линия';
-$lang['qb_ol']                 = 'Подреден списък';
-$lang['qb_ul']                 = 'Неподреден списък';
+$lang['qb_ol']                 = 'Номериран списък';
+$lang['qb_ul']                 = 'Неномериран списък';
 $lang['qb_media']              = 'Добавяне на изображения и други файлове';
 $lang['qb_sig']                = 'Вмъкване на подпис';
 $lang['qb_smileys']            = 'Усмивчици';
 $lang['qb_chars']              = 'Специални знаци';
-$lang['upperns']               = 'Към свьрзано именно пространство';
-$lang['admin_register']        = 'Добабяне на нов потребител';
+$lang['upperns']               = 'към майчиното именно пространство';
+$lang['admin_register']        = 'Добавяне на нов потребител';
 $lang['metaedit']              = 'Редактиране на метаданни';
-$lang['metasaveerr']           = 'Запазването на метаданните бе неуспешно';
-$lang['metasaveok']            = 'Метаданните бяха запазени';
+$lang['metasaveerr']           = 'Записването на метаданните се провали';
+$lang['metasaveok']            = 'Метаданните са запазени успешно';
 $lang['img_backto']            = 'Назад към';
 $lang['img_title']             = 'Заглавие';
 $lang['img_caption']           = 'Надпис';
 $lang['img_date']              = 'Дата';
-$lang['img_fname']             = 'Име на файл';
+$lang['img_fname']             = 'Име на файла';
 $lang['img_fsize']             = 'Размер';
-$lang['img_artist']            = 'Заснет от';
+$lang['img_artist']            = 'Фотограф';
 $lang['img_copyr']             = 'Авторско право';
 $lang['img_format']            = 'Формат';
 $lang['img_camera']            = 'Фотоапарат';
 $lang['img_keywords']          = 'Ключови думи';
-$lang['subscribe_success']     = '%s бе добавен към абонамента за %s';
-$lang['subscribe_error']       = 'Имаше грешка при добавянето на абонамента на %s за %s';
-$lang['subscribe_noaddress']   = 'Няма адрес свързан с потребителя, не може да се абонирате';
-$lang['unsubscribe_success']   = 'Абонаментът %s бе премахнат от списъка за %s';
-$lang['unsubscribe_error']     = 'Имаше грешка при премахването на абонамента на %s от списъка %s';
-$lang['authmodfailed']         = 'Лоша настройка за удостоверяване на потребителя. Моля, уведомете администратора.';
-$lang['authtempfail']          = 'Удостоверяването на потребителите е временно недостъпно. Ако това продължи дълго, моля уведомете администратора.';
-$lang['i_chooselang']          = 'Избор на език';
+$lang['subscr_subscribe_success'] = '%s е добавен към списъка с абониралите се за %s';
+$lang['subscr_subscribe_error'] = 'Грешка при добавянето на %s към списъка с абониралите се за %s';
+$lang['subscr_subscribe_noaddress'] = 'Добавянето ви към списъка с абонати не е възможно поради липсата на свързан адрес (на ел. поща) с профила ви.';
+$lang['subscr_unsubscribe_success'] = '%s е премахнат от списъка с абониралите се за %s';
+$lang['subscr_unsubscribe_error'] = 'Грешка при премахването на %s от списъка с абониралите се за %s';
+$lang['subscr_already_subscribed'] = '%s е вече абониран за %s';
+$lang['subscr_not_subscribed'] = '%s не е абониран за %s';
+$lang['subscr_m_not_subscribed'] = 'Не сте абониран за текущата страницата или именно пространство.';
+$lang['subscr_m_new_header']   = 'Добави абонамент';
+$lang['subscr_m_current_header'] = 'Текущи абонаменти';
+$lang['subscr_m_unsubscribe']  = 'Прекратяване на абонамента';
+$lang['subscr_m_subscribe']    = 'Абониране';
+$lang['subscr_m_receive']      = 'Получаване';
+$lang['subscr_style_every']    = 'на ел. писмо при всяка промяна';
+$lang['subscr_style_digest']   = 'на ел. писмо с обобщение на промените във всяка страница (всеки %.2f дни)';
+$lang['subscr_style_list']     = 'на списък с променените страници от последното ел. писмо (всеки %.2f дни)';
+$lang['authmodfailed']         = 'Лоша настройки за удостоверяване. Моля, уведомете администратора на Wiki страницата.';
+$lang['authtempfail']          = 'Удостоверяването на потребители не е възможно за момента. Ако продължи дълго, моля уведомете администратора на Wiki страницата.';
+$lang['i_chooselang']          = 'Изберете вашия изик';
 $lang['i_installer']           = 'Инсталатор на DokuWiki';
-$lang['i_wikiname']            = 'Име на Wiki';
-$lang['i_enableacl']           = 'Включване на списъци за достъп ACL (препоръчително)';
+$lang['i_wikiname']            = 'Име на Wiki-то';
+$lang['i_enableacl']           = 'Ползване на списък за достъп (ACL) [препоръчително]';
 $lang['i_superuser']           = 'Супер потребител';
-$lang['i_problems']            = 'Инсталатора намери проблеми указани по-долу. Не може да продължите, докато не ги отстраните.';
-$lang['i_modified']            = 'Поради мерки за сигурност този скрипт ще работи само с нова и непроменена Dokuwiki инсталация. Трябва да разархивирате отново файловете от дръпнатия пакет или да се посъветвате с пълните <a href="http://dokuwiki.org/install">Инструкции за инсталация на Dokuwiki</a>.';
+$lang['i_problems']            = 'Открити са проблеми, които възпрепятстват инсталирането. Ще можете да продължите след като отстраните долуизброените проблеми.';
+$lang['i_modified']            = 'Поради мерки за сигурност скрипта ще работи само с нова и непроменена инсталация на Dokuwiki. Трябва да разархивирате отново файловете от сваления архив или да се посъветвате с <a href="http://dokuwiki.org/install">Инструкциите за инсталация на Dokuwiki</a>.';
 $lang['i_funcna']              = 'PHP функцията <code>%s</code> не е достъпна. Може би е забранена от доставчика на хостинг.';
-$lang['i_phpver']              = 'Вашата PHP версия <code>%s</code> е по-стара от необходимата <code>%s</code>. Обновете PHP инсталацията си.';
-$lang['i_permfail']            = '<code>%s</code> не е достъпна за писане от DokuWiki. Трябва да промените настройките за достъп до директорията!';
+$lang['i_phpver']              = 'Инсталираната версия <code>%s</code> на PHP е по-стара от необходимата <code>%s</code>. Актуализирайте PHP инсталацията.';
+$lang['i_permfail']            = '<code>%s</code> не е достъпна за писане от DokuWiki. Трябва да промените правата за достъп до директорията!';
 $lang['i_confexists']          = '<code>%s</code> вече съществува';
-$lang['i_writeerr']            = '<code>%s</code> не можа да бъде създаден. Трябва да проверите правата на директорията/файла за достъп и да създадете файл ръчно.';
-$lang['i_badhash']             = 'неразпознат или променен dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_writeerr']            = '<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">Ново Ви DokuWiki</a>.';
-$lang['i_failure']             = 'Имаше грешки при записа на файловете с настройки. Може да трябва да ги редактирате ръчно. Ползвайте <a href="doku.php">Ново Ви DokuWiki</a>.';
-$lang['i_policy']              = 'Първоначална политика за достъп ACL';
-$lang['i_pol0']                = 'Отворено Wiki (четене, писане, качване от всички)';
-$lang['i_pol1']                = 'Публично Wiki (четене от всички, писане и качване от регистрирани потребители)';
-$lang['i_pol2']                = 'Затворено Wiki (четене, писане, качване само от регистрирани потребители)';
+$lang['i_success']             = 'Настройването приключи успешно. Вече можете да изтриете файла install.php. Продължете към <a href="doku.php">Вашето ново DokuWiki</a>.';
+$lang['i_failure']             = 'Възникнаха грешки при записването на файловете с настройки. Вероятно ще се наложи да ги поправите ръчно, за да можете да ползвате <a href="doku.php">Вашето ново DokuWiki</a>.';
+$lang['i_policy']              = 'Първоначална политика за достъп';
+$lang['i_pol0']                = 'Отворено Wiki (всеки може да чете, пише и качва)';
+$lang['i_pol1']                = 'Публично Wiki (всеки може да чете, само регистрирани пишат и качват)';
+$lang['i_pol2']                = 'Затворено Wiki (само регистрирани четат, пишат и качват)';
 $lang['i_retry']               = 'Повторен опит';
-$lang['mu_intro']              = 'Тук можете да качите няколко файла наведнъж. Добавете ги към съответните полета и натиснете бутона за качване.
+$lang['i_license']             = 'Моля, изберете лиценз под който желаете да публикувате съдържанието:';
+$lang['mu_intro']              = 'От тук можете да качите няколко файла наведнъж. Натиснете бутона "Избиране", изберете файлове и натиснете "Качване".
 ';
-$lang['mu_gridname']           = 'Име на файл';
+$lang['mu_gridname']           = 'Име на файла';
 $lang['mu_gridsize']           = 'Големина';
 $lang['mu_gridstat']           = 'Състояние';
 $lang['mu_namespace']          = 'Именно пространство';
-$lang['mu_browse']             = 'Избери';
+$lang['mu_browse']             = 'Избиране';
 $lang['mu_toobig']             = 'прекалено голям';
 $lang['mu_ready']              = 'готов за качване';
-$lang['mu_done']               = 'приключен';
-$lang['mu_fail']               = 'неуспешен';
-$lang['mu_authfail']           = 'сесията изтече';
+$lang['mu_done']               = 'качен';
+$lang['mu_fail']               = 'неуспешно качване';
+$lang['mu_authfail']           = 'приключила сесия';
 $lang['mu_progress']           = '@PCT@% качен';
 $lang['mu_filetypes']          = 'Позволени файлови разширения';
-$lang['mu_info']               = 'качени файлове';
+$lang['mu_info']               = 'качени файла.';
 $lang['mu_lasterr']            = 'Последна грешка:';
-$lang['recent_global']         = 'В момента преглеждате промените в <b>%s</b> именно пространство. Може да прегледате и <a href="%s">промените на цялото Wiki</a>.';
+$lang['recent_global']         = 'В момента преглеждате промените в именно пространство <b>%s</b>. Може да прегледате и <a href="%s">промените в цялото Wiki</a>.';
 $lang['years']                 = 'преди %d години';
-$lang['months']                = 'преди %d месеци';
+$lang['months']                = 'преди %d месеца';
 $lang['weeks']                 = 'преди %d седмици';
 $lang['days']                  = 'преди %d дни';
 $lang['hours']                 = 'преди %d часа';
 $lang['minutes']               = 'преди %d минути';
 $lang['seconds']               = 'преди %d секунди';
+$lang['wordblock']             = 'Направените от вас промени не са съхранени, защото съдържат забранен текст (SPAM).';
diff --git a/inc/lang/bg/locked.txt b/inc/lang/bg/locked.txt
index 0eecc6729ecf2f6fae6ee2cb1963df96a97f3f82..7cdfba7860b422d89a6bd22b59244592332d3860 100644
--- a/inc/lang/bg/locked.txt
+++ b/inc/lang/bg/locked.txt
@@ -1,3 +1,3 @@
-====== Страницата е затворена ======
+====== Страницата е заключена ======
 
-В момента страницата е затворена за редакция от друг потребител. Трябва да изчаката докато този потребител приключи или затварянето изтече.
+В момента страницата е заключена за редактиране от друг потребител. Трябва да изчакате потребителя да приключи с редактирането на страницата или автоматичното отключване на страницата.
diff --git a/inc/lang/bg/login.txt b/inc/lang/bg/login.txt
index b525f08cf28aeb366d7b4e8703c25be78ab248da..a6f53e95dd2efe4ee824525b5afb28e318937019 100644
--- a/inc/lang/bg/login.txt
+++ b/inc/lang/bg/login.txt
@@ -1,3 +1,3 @@
-====== Вход ======
+====== Вписване ======
 
-В момента не сте влезли! Въведете данните си долу, за да го направите. Бисквитките (cookies) трябва да са включени.
+Не сте се вписали! Въведете данните си удостоверяване  отдолу, за да го направите. Бисквитките (cookies) трябва да са включени.
diff --git a/inc/lang/bg/mailtext.txt b/inc/lang/bg/mailtext.txt
index 8c18767e5a53d57c3ecef02d5d4da6aee9840ae5..ad0024a8db0a7c630fa313a58bbb3bf723222615 100644
--- a/inc/lang/bg/mailtext.txt
+++ b/inc/lang/bg/mailtext.txt
@@ -1,16 +1,16 @@
-Страница във DokuWiki бе добавена или променена. Ето детайлите:
+Страница във DokuWiki е добавена или променена. Ето детайлите:
 
-Дата        : @DATE@
-Браузър     : @BROWSER@
-IP-адрес    : @IPADDRESS@
-Име на хост : @HOSTNAME@
+Дата : @DATE@
+Браузър : @BROWSER@
+IP адрес : @IPADDRESS@
+Име на хоста : @HOSTNAME@
 Стара версия: @OLDPAGE@
-Нова версия : @NEWPAGE@
-Обобщение   : @SUMMARY@
-Потребител  : @USER@
+Нова версия: @NEWPAGE@
+Обобщение: @SUMMARY@
+Потребител : @USER@
 
 @DIFF@
 
 
 -- 
-Това писмо е генерирано от DokuWiki на адрес @DOKUWIKIURL@
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
diff --git a/inc/lang/bg/newpage.txt b/inc/lang/bg/newpage.txt
index fcc1c6257404e0a1a61ed443614620e34a7ddeaf..22d3bb6d12f035050fccf47ed6298c8006ba1f71 100644
--- a/inc/lang/bg/newpage.txt
+++ b/inc/lang/bg/newpage.txt
@@ -1,4 +1,4 @@
 ====== Несъществуваща тема ======
 
-Последвали сте връзка към тема, която все още не съществува. Ако правата Ви позволяват, може да я създадете като използвате бутона ''Създаване на страницата''
+Последвали сте препратка към тема, която не съществува. Ако правата ви позволяват, може да я създадете чрез бутона ''Създаване на страница''.
 
diff --git a/inc/lang/bg/norev.txt b/inc/lang/bg/norev.txt
index 0262aef6051f150ed7ed643cd436038631e57476..fb7aeef894268d2fe68ee64d1630ed244934126e 100644
--- a/inc/lang/bg/norev.txt
+++ b/inc/lang/bg/norev.txt
@@ -1,4 +1,4 @@
 ====== Няма такава версия ======
 
-Избраната версия не съществува. Използвайте бутона ''Редакции'' за списък на стари версии на документа.
+Избраната версия не съществува. Натиснете бутона ''История'' за отваряне на списъка със стари версии на документа.
 
diff --git a/inc/lang/bg/password.txt b/inc/lang/bg/password.txt
index be2f10c61f5b62347b052f306d0e33cebb2131fa..7a70ef1d8fefcfc692046111da5800c0e6bfb516 100644
--- a/inc/lang/bg/password.txt
+++ b/inc/lang/bg/password.txt
@@ -1,9 +1,9 @@
 Здравейте @FULLNAME@!
 
-Ето Вашите потребителски данни за @TITLE@ на @DOKUWIKIURL@
+Вашите потребителски данни за @TITLE@ на @DOKUWIKIURL@
 
-Потребител: @LOGIN@
-Парола    : @PASSWORD@
+Потребител : @LOGIN@
+Парола : @PASSWORD@
 
 -- 
-Това писмо е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/bg/preview.txt b/inc/lang/bg/preview.txt
index 442f16de24edb40da605b53843e0b1f2a890f92f..41fde7380167b86d403253517b5b5a39ed046fe6 100644
--- a/inc/lang/bg/preview.txt
+++ b/inc/lang/bg/preview.txt
@@ -1,3 +1,3 @@
 ====== Преглед ======
 
-Ето как ще изглежда текста. Той обаче все още **не е запазен** !
+Ето как ще изглежда страницата. Текста все още **не е запазен**!
\ No newline at end of file
diff --git a/inc/lang/bg/pwconfirm.txt b/inc/lang/bg/pwconfirm.txt
index 1cd64b1512b95e61b8ac175455214046894916a4..2c4252e151a79e3f805164ffe417e69edd8a525d 100644
--- a/inc/lang/bg/pwconfirm.txt
+++ b/inc/lang/bg/pwconfirm.txt
@@ -1,14 +1,13 @@
 Здравейте @FULLNAME@!
 
-Някой е поискал нова парола за потребителя @TITLE@
+Някой е поискал нова парола за потребител @TITLE@
 на @DOKUWIKIURL@
 
 Ако не сте поискали нова парола, товава просто игнорирайте това писмо.
 
-За да потвърдите, че искането е наистина пратено от вас, моля използвайте
-следния адрес.
+За да потвърдите, че искането е наистина от вас, моля ползвайте следния линк:
 
 @CONFIRM@
 
 -- 
-Това писмо е генерирано от DokuWiki на адрес @DOKUWIKIURL@
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
diff --git a/inc/lang/bg/read.txt b/inc/lang/bg/read.txt
index 89e9a9d70000bf86f9194286fe80f40982695ec1..861d47fc58a91b9e9359324922c52094046d9c9b 100644
--- a/inc/lang/bg/read.txt
+++ b/inc/lang/bg/read.txt
@@ -1,2 +1,2 @@
-Тази страница е позволена само за четене. Може да разгледате кода, но не и да го променята. Обърнете се съм администратора си, ако мислите, че това е грешно.
+Страницата е само за четене. Може да разглеждате кода, но не и да го променяте. Обърнете се съм администратора, ако смятате, че това не е редно.
 
diff --git a/inc/lang/bg/recent.txt b/inc/lang/bg/recent.txt
index 262979e3430024b751fdee4746ff7f9c1518f322..c92029054f36cc293c6be9474e4bab111fec4810 100644
--- a/inc/lang/bg/recent.txt
+++ b/inc/lang/bg/recent.txt
@@ -1,4 +1,4 @@
-====== Последни промени ======
+====== Скорошни промени ======
 
 Следните страници са били променени наскоро.
 
diff --git a/inc/lang/bg/register.txt b/inc/lang/bg/register.txt
index 74a07cd9035a804445fdc4ea43c4becb3e7b1bef..51fbb83fe44a42bb2ad0919a821c8ea91b1ebbe5 100644
--- a/inc/lang/bg/register.txt
+++ b/inc/lang/bg/register.txt
@@ -1,4 +1,4 @@
-====== Регистрирайте се като нов потребител ======
+====== Регистриране като нов потребител ======
 
-Моля, попълнете всичката информация долу, за да създадете нов профил в това уики. Бъдете сигурни, че подавате **валиден адрес на електронна поща** - ако не се пита за парола тук, нова ще бъде пратена на този адрес. Потребителското име трябва да бъде валидно [[doku>pagename|име на сраница]]
+Моля, попълнете всичките полета отдолу, за да бъде създаден нов профил. Уверете се, че въведеният **адрес на ел. поща е правилен**. Ако няма поле за парола, ще ви бъде изпратена такава на въведения адрес. Потребителското име трябва да бъде валидно [[doku>pagename|име на страница]].
 
diff --git a/inc/lang/bg/registermail.txt b/inc/lang/bg/registermail.txt
index 7839b0910217c5dcbe8f33c29f8bfeaebd146fd7..4b0828c7bfa73d013800c7457d745ef4f2434a0c 100644
--- a/inc/lang/bg/registermail.txt
+++ b/inc/lang/bg/registermail.txt
@@ -1,13 +1,13 @@
-Нов потребител беше регистриран. Ето детайлите:
+Регистриран е нов потребител. Ето детайлите:
 
 Потребител  : @NEWUSER@
-Пълно име   : @NEWNAME@
-E-поща      : @NEWEMAIL@
+Пълно име : @NEWNAME@
+E. поща : @NEWEMAIL@
 
-Дата        : @DATE@
-Браузър     : @BROWSER@
-IP-адрес    : @IPADDRESS@
-Име на хоста: @HOSTNAME@
+Дата : @DATE@
+Браузър : @BROWSER@
+IP адрес : @IPADDRESS@
+Име на хоста : @HOSTNAME@
 
 -- 
-Това писмо е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/bg/resendpwd.txt b/inc/lang/bg/resendpwd.txt
index 7b9b9a02776bb9619a81ed36ac1e5e9ffa4452ad..38e2d1fe48928e68a3ca80e90368ced0c01654cc 100644
--- a/inc/lang/bg/resendpwd.txt
+++ b/inc/lang/bg/resendpwd.txt
@@ -1,3 +1,3 @@
 ====== Пращане на нова парола ======
 
-Моля, въведете потребителското си име във формуляра долу, за да поискате нова парола за вашият профил в това Wiki. Връзка за потвърждение ще ви бъде пратена на регистрираният в това Wiki адрес на електронна поща.
+Моля, въведете потребителското си име във формата по-долу, ако желаете да получите нова парола. По ел. поща ще получите линк, с който да потвърдите.
diff --git a/inc/lang/bg/revisions.txt b/inc/lang/bg/revisions.txt
index 295f5f6cc6a803ef71547f4caed39f7f7fcf5f0b..0e14662b728b8b8dca94a1cbe8dcb9f04b9d3bdc 100644
--- a/inc/lang/bg/revisions.txt
+++ b/inc/lang/bg/revisions.txt
@@ -1,4 +1,4 @@
-====== Стари редакции ======
+====== Стари версии======
 
-Това са стари редакции на този документ. За да възстановите стара версия, изберете я долу, натиснете ''Редактиране'' и я запазете.
+Това са старите версии на документа. За да възстановите стара версия, изберете я долу, натиснете ''Редактиране'' и я запазете.
 
diff --git a/inc/lang/bg/searchpage.txt b/inc/lang/bg/searchpage.txt
index 03e0199854bf215314e476ad74c51b876f08e427..48d47515af47a6da86757cfd8208db47835560af 100644
--- a/inc/lang/bg/searchpage.txt
+++ b/inc/lang/bg/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Търсене ======
 
-Може да намерите резултатите на търсенето долу. Ако не сте намерили каквото сте търсили, може да създадете или редактирате страница кръстена по вашета заявка за търсене със съответният бутон
+Резултата от търсенето ще намерите по-долу. Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.
 
 ===== Резултати =====
diff --git a/inc/lang/bg/showrev.txt b/inc/lang/bg/showrev.txt
index c0b1709fe60f7e3d15961820ec1897176e0dde2c..a3848f8bb023d92ae3224f0ab61c5d46f6d3d249 100644
--- a/inc/lang/bg/showrev.txt
+++ b/inc/lang/bg/showrev.txt
@@ -1,2 +1,2 @@
-**Това е стара редакция на документа**
+**Това е стара версия на документа!**
 ----
diff --git a/inc/lang/bg/stopwords.txt b/inc/lang/bg/stopwords.txt
index 369f4d7899a91e2e93d8a045070e02254b073712..03fd13758242374c569d148ba19da3c8233c6722 100644
--- a/inc/lang/bg/stopwords.txt
+++ b/inc/lang/bg/stopwords.txt
@@ -1,7 +1,7 @@
-# Това е списък на думи за игнориране, с една дума на ред
+# Това е списък с думи за игнориране при индексиране, с една дума на ред
 # Когато редактирате този файл, не забравяйте да използвате UNIX символ за нов ред
-# Не е нужно да включвате думи по-кратки от 3 символа - те са игнорирани така или иначе
-# Този списък се основава на думи намерени на http://www.ranks.nl/stopwords/
+# Не е нужно да включвате думи по-кратки от 3 символа - те биват игнорирани така или иначе
+# Списъкът се основава на думи от http://www.ranks.nl/stopwords/
 about
 are
 and
diff --git a/inc/lang/bg/subscr_digest.txt b/inc/lang/bg/subscr_digest.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f0533daf4f609849b46c2395196e5cc451f83749
--- /dev/null
+++ b/inc/lang/bg/subscr_digest.txt
@@ -0,0 +1,18 @@
+Здравейте!
+
+Страницата @PAGE@ в @TITLE@ wiki е променена.
+Промените са по-долу:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Стара версия: @OLDPAGE@
+Нова версия: @NEWPAGE@
+
+Ако желаете да прекратите уведомяването за страницата трябва да се впишете на адрес @DOKUWIKIURL@, да посетите
+@SUBSCRIBE@
+и да прекратите абонамента за промени по страницата или именното пространство.
+
+--
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/bg/subscr_form.txt b/inc/lang/bg/subscr_form.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e32a5ec264cdf1cac1588b32eeb09609d26ad4e6
--- /dev/null
+++ b/inc/lang/bg/subscr_form.txt
@@ -0,0 +1,3 @@
+====== Диспечер на абонаменти ======
+
+Страницата ви позволява да управлявате текущите си абонаменти за страници и именни пространства.
\ No newline at end of file
diff --git a/inc/lang/bg/subscr_list.txt b/inc/lang/bg/subscr_list.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e9e65bc3912f49718f35494a8c72fef3b07fb7a5
--- /dev/null
+++ b/inc/lang/bg/subscr_list.txt
@@ -0,0 +1,15 @@
+Здравейте!
+
+Променени са страници от именното пространство @PAGE@ от @TITLE@ wiki.
+Ето променените страници:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Ако желаете да прекратите уведомяването за страницата трябва да се впишете на адрес @DOKUWIKIURL@, да посетите
+@SUBSCRIBE@
+и да прекратите абонамента за промени по страницата или именното пространство.
+
+--
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/bg/subscr_single.txt b/inc/lang/bg/subscr_single.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7b26f8e965dc05c1c5f52703d532d9df16811a83
--- /dev/null
+++ b/inc/lang/bg/subscr_single.txt
@@ -0,0 +1,22 @@
+Здравейте!
+
+Страницата @PAGE@ в @TITLE@ wiki е променена.
+Промените са по-долу:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+Дата : @DATE@
+Потребител : @USER@
+Обобщение: @SUMMARY@
+Стара версия: @OLDPAGE@
+Нова версия: @NEWPAGE@
+
+Ако желаете да прекратите уведомяването за страницата трябва да се впишете на адрес @DOKUWIKIURL@, да посетите
+@NEWPAGE@
+и да прекратите абонамента за промени по страницата или именното пространство.
+
+--
+Писмото е генерирано от DokuWiki на адрес
+@DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/bg/updateprofile.txt b/inc/lang/bg/updateprofile.txt
index 0a6f152976d6cc41b2bcf3322509b54dd7da8d93..6113f0d0778be581c79470c4f5b7254f749128e8 100644
--- a/inc/lang/bg/updateprofile.txt
+++ b/inc/lang/bg/updateprofile.txt
@@ -1,3 +1,3 @@
 ====== Обновете профила си ======
 
-Трябва само да допълните полетата, които искате да промените. Не може да сменяте потребителското си име.
+Трябва само да допълните полетата, които искате да промените. Потребителското не може да бъде променяно.
diff --git a/inc/lang/bg/uploadmail.txt b/inc/lang/bg/uploadmail.txt
index 74f0cdc3e5b19ec957c7384b89e67e00926cc618..ebd8d911204fa01a2f86bfa494fc3a7025c0326d 100644
--- a/inc/lang/bg/uploadmail.txt
+++ b/inc/lang/bg/uploadmail.txt
@@ -1,13 +1,13 @@
-Бе качен файл на вашето DokuWiki. Ето детайлите
+Качен е файл на вашето DokuWiki. Ето детайлите
 
-Файл        : @MEDIA@
-Дата        : @DATE@
-Браузeр     : @BROWSER@
-IP-Адрес    : @IPADDRESS@
-Име на хост : @HOSTNAME@
-Размер      : @SIZE@
-MIME Тип    : @MIME@
-Потребител  : @USER@
+Файл : @MEDIA@
+Дата  : @DATE@
+Браузър : @BROWSER@
+IP адрес : @IPADDRESS@
+Име на хоста : @HOSTNAME@
+Размер : @SIZE@
+MIME тип : @MIME@
+Потребител : @USER@
 
 -- 
-Tова писмо е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
+Писмото е генерирано от DokuWiki на адрес @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index d49c900fab8792395f8ff41d7084ebd0dfb7a9bf..c6a7dc27e28b7ba222a07f34e3723e61da3dae6c 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -4,7 +4,6 @@
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Bernat Arlandis i Mañó <berarma@ya.com>
- * @author Bernat Arlandis <berarma@ya.com>
  * @author Bernat Arlandis <berarma@llenguaitecnologia.com>
  */
 $lang['encoding']              = 'utf-8';
@@ -49,6 +48,7 @@ $lang['btn_draft']             = 'Editar borrador';
 $lang['btn_recover']           = 'Recuperar borrador';
 $lang['btn_draftdel']          = 'Borrar borrador';
 $lang['btn_revert']            = 'Recuperar';
+$lang['btn_register']          = 'Registrar-se';
 $lang['loggedinas']            = 'Sessió de';
 $lang['user']                  = 'Nom d\'usuari';
 $lang['pass']                  = 'Contrasenya';
@@ -58,7 +58,6 @@ $lang['passchk']               = 'una atra volta';
 $lang['remember']              = 'Recorda\'m';
 $lang['fullname']              = 'Nom complet';
 $lang['email']                 = 'Correu electrònic';
-$lang['register']              = 'Registrar-se';
 $lang['profile']               = 'Perfil d\'usuari';
 $lang['badlogin']              = 'Disculpe, pero el nom d\'usuari o la contrasenya són incorrectes.';
 $lang['minoredit']             = 'Canvis menors';
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index 19fb7c55682d7fd7d59f7a0011b6c408bfb9c327..342257d1187d1bd86c2f36b85cda6174cad11a2a 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -5,8 +5,6 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Carles Bellver <carles.bellver@cent.uji.es>
  * @author Carles Bellver <carles.bellver@gmail.com>
- * @author carles.bellver@gmail.com
- * @author carles.bellver@cent.uji.es
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -50,6 +48,7 @@ $lang['btn_draft']             = 'Edita esborrany';
 $lang['btn_recover']           = 'Recupera esborrany';
 $lang['btn_draftdel']          = 'Suprimeix esborrany';
 $lang['btn_revert']            = 'Restaura';
+$lang['btn_register']          = 'Registra\'m';
 $lang['loggedinas']            = 'Heu entrat com';
 $lang['user']                  = 'Nom d\'usuari';
 $lang['pass']                  = 'Contrasenya';
@@ -59,7 +58,6 @@ $lang['passchk']               = 'una altra vegada';
 $lang['remember']              = 'Recorda\'m';
 $lang['fullname']              = 'Nom complet';
 $lang['email']                 = 'Correu electrònic';
-$lang['register']              = 'Registra\'m';
 $lang['profile']               = 'Perfil d\'usuari';
 $lang['badlogin']              = 'Nom d\'usuari o contrasenya incorrectes.';
 $lang['minoredit']             = 'Canvis menors';
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index 749a41a5bbc9910fbf07e7a6743b6e22411fcffc..22aa00d7d0be6ee36200fea50a354ae72c599be1 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -5,8 +5,8 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Bohumir Zamecnik <bohumir@zamecnik.org>
  * @author Tomas Valenta <t.valenta@sh.cvut.cz>
+ * @author Tomas Valenta <tomas@valenta.cz>
  * @author Zbynek Krivka <zbynek.krivka@seznam.cz>
- * @author tomas@valenta.cz
  * @author Marek Sacha <sachamar@fel.cvut.cz>
  * @author Lefty <lefty@multihost.cz>
  */
@@ -49,6 +49,7 @@ $lang['btn_draft']             = 'Upravit koncept';
 $lang['btn_recover']           = 'Obnovit koncept';
 $lang['btn_draftdel']          = 'Vymazat koncept';
 $lang['btn_revert']            = 'Vrátit zpět';
+$lang['btn_register']          = 'Registrovat';
 $lang['loggedinas']            = 'Přihlášen(a) jako';
 $lang['user']                  = 'Uživatelské jméno';
 $lang['pass']                  = 'Heslo';
@@ -58,7 +59,6 @@ $lang['passchk']               = 'ještě jednou';
 $lang['remember']              = 'Přihlásit se nastálo';
 $lang['fullname']              = 'Celé jméno';
 $lang['email']                 = 'E-mail';
-$lang['register']              = 'Registrovat';
 $lang['profile']               = 'Uživatelský profil';
 $lang['badlogin']              = 'Zadané uživatelské jméno a heslo není správně.';
 $lang['minoredit']             = 'Drobné změny';
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index 47b42be9dab8edc046e6f1c9f236f4ca6da0171c..80d55d6f52fb584317295e61e214b1d5fde1ee59 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -53,6 +53,7 @@ $lang['btn_draft']             = 'Redigér kladde';
 $lang['btn_recover']           = 'Gendan kladde';
 $lang['btn_draftdel']          = 'Slet kladde';
 $lang['btn_revert']            = 'Reetablér';
+$lang['btn_register']          = 'Registrér';
 $lang['loggedinas']            = 'Logget ind som';
 $lang['user']                  = 'Brugernavn';
 $lang['pass']                  = 'Adgangskode';
@@ -62,7 +63,6 @@ $lang['passchk']               = 'Gentag ny adgangskode';
 $lang['remember']              = 'Automatisk log ind';
 $lang['fullname']              = 'Fulde navn';
 $lang['email']                 = 'E-mail';
-$lang['register']              = 'Registrér';
 $lang['profile']               = 'Brugerprofil';
 $lang['badlogin']              = 'Brugernavn eller adgangskode var forkert.';
 $lang['minoredit']             = 'Mindre ændringer';
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index b7c4466564c7327652e734f39ad74cce85174733..cfb492dfb95bb11286b7c2e7bf453bcc67c98894 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -58,6 +58,7 @@ $lang['btn_draft']             = 'Entwurf bearbeiten';
 $lang['btn_recover']           = 'Entwurf wiederherstellen';
 $lang['btn_draftdel']          = 'Entwurf löschen';
 $lang['btn_revert']            = 'Wiederherstellen';
+$lang['btn_register']          = 'Registrieren';
 $lang['loggedinas']            = 'Angemeldet als';
 $lang['user']                  = 'Benutzername';
 $lang['pass']                  = 'Passwort';
@@ -67,7 +68,6 @@ $lang['passchk']               = 'und nochmal';
 $lang['remember']              = 'Angemeldet bleiben';
 $lang['fullname']              = 'Voller Name';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Registrieren';
 $lang['profile']               = 'Benutzerprofil';
 $lang['badlogin']              = 'Nutzername oder Passwort sind falsch.';
 $lang['minoredit']             = 'kleine Änderung';
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index a353b98ed22e9e99bfb637d5df87cf2472e51790..3a3afdc16aa227624687a32c0659f403059e8d7e 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -15,7 +15,6 @@
  * @author Arne Pelka <mail@arnepelka.de>
  * @author Dirk Einecke <dirk@dirkeinecke.de>
  * @author Blitzi94@gmx.de
- * @author Robert Bogenschneider <robog@GMX.de>
  * @author Robert Bogenschneider <robog@gmx.de>
  * @author Niels Lange <niels@boldencursief.nl>
  * @author Christian Wichmann <nospam@zone0.de>
@@ -59,6 +58,7 @@ $lang['btn_draft']             = 'Entwurf bearbeiten';
 $lang['btn_recover']           = 'Entwurf wiederherstellen';
 $lang['btn_draftdel']          = 'Entwurf löschen';
 $lang['btn_revert']            = 'Wiederherstellen';
+$lang['btn_register']          = 'Registrieren';
 $lang['loggedinas']            = 'Angemeldet als';
 $lang['user']                  = 'Benutzername';
 $lang['pass']                  = 'Passwort';
@@ -68,7 +68,6 @@ $lang['passchk']               = 'und nochmal';
 $lang['remember']              = 'Angemeldet bleiben';
 $lang['fullname']              = 'Voller Name';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Registrieren';
 $lang['profile']               = 'Benutzerprofil';
 $lang['badlogin']              = 'Nutzername oder Passwort sind falsch.';
 $lang['minoredit']             = 'kleine Änderung';
diff --git a/inc/lang/el/admin.txt b/inc/lang/el/admin.txt
index 49e6c657b995f36ce46641c5900fc4f62043e6a5..729004b05023a8511e54fd042cfe711535e3ecb1 100644
--- a/inc/lang/el/admin.txt
+++ b/inc/lang/el/admin.txt
@@ -1,3 +1,3 @@
 ====== Διαχείριση ======
 
-Παρακάτω μπορείτε να βρείτε μια λίστα με τις δυνατότητες διαχείρισης στο DokuWiki
+Παρακάτω μπορείτε να βρείτε μια λίστα με τις λειτουργίες διαχείρισης στο DokuWiki
diff --git a/inc/lang/el/adminplugins.txt b/inc/lang/el/adminplugins.txt
index ea00b959e8c4e0e3feaf2b9e1f4e163520fb3d59..ef1a2853b2523100de5bfeb21ec156b724ce613b 100644
--- a/inc/lang/el/adminplugins.txt
+++ b/inc/lang/el/adminplugins.txt
@@ -1 +1 @@
-===== Πρόσθετες συνδεόμενες υπομονάδες =====
\ No newline at end of file
+===== Πρόσθετα =====
\ No newline at end of file
diff --git a/inc/lang/el/conflict.txt b/inc/lang/el/conflict.txt
index 27b80b397760d35c087bc44674f4fb7dac27e6d0..a2065c0f3a964b6522e843e00caf106cab4fb23f 100644
--- a/inc/lang/el/conflict.txt
+++ b/inc/lang/el/conflict.txt
@@ -1,5 +1,8 @@
 ====== Υπάρχει μία νεώτερη έκδοση αυτής της σελίδας ======
 
-Υπάρχει μία νεώτερη έκδοση της σελίδας που τρoποποιήσατε. Αυτό συμβαίνει εάν κάποιος άλλος χρήστης τροποποίησε την ίδια σελίδα ενώ την τροποποιούσατε και εσείς.
+Υπάρχει μία νεώτερη έκδοση της σελίδας που τρoποποιήσατε. 
+Αυτό συμβαίνει εάν κάποιος άλλος χρήστης τροποποίησε την ίδια σελίδα ενώ την επεξεργαζόσασταν και εσείς.
 
-Ελέγξτε προσεκτικά τις διαφορές που παρουσιάζονται παρακάτω και έπειτα αποφασίστε ποια έκδοση θα κρατήσετε.  Εάν επιλέξετε ''Αποθήκευση'', η δική σας έκδοση θα αποθηκευτεί. Εάν επιλέξετε ''Ακύρωση'', η νεώτερη έκδοση θα διατηρηθεί ως τρέχουσα.
+Ελέγξτε προσεκτικά τις διαφορές που παρουσιάζονται παρακάτω και έπειτα αποφασίστε ποια έκδοση θα κρατήσετε.
+Εάν επιλέξετε ''Αποθήκευση'', η δική σας έκδοση θα αποθηκευτεί. 
+Εάν επιλέξετε ''Ακύρωση'', η νεώτερη έκδοση θα διατηρηθεί ως τρέχουσα.
diff --git a/inc/lang/el/denied.txt b/inc/lang/el/denied.txt
index 71e9a04b876034d7a06abfc997ed6bf6cd866d09..36d7ae103ed8821a22b359ef7f0ac4987c73af63 100644
--- a/inc/lang/el/denied.txt
+++ b/inc/lang/el/denied.txt
@@ -2,4 +2,4 @@
 
 Συγγνώμη, αλλά δεν έχετε επαρκή δικαιώματα για την συγκεκριμένη ενέργεια.
 
-Μήπως παραλείψατε να συνδεθείτε?
+Μήπως παραλείψατε να συνδεθείτε;
diff --git a/inc/lang/el/draft.txt b/inc/lang/el/draft.txt
index 3bb15037f2c3f6ee9c7172163649338d69a9da20..5ca7b8dfa8dafe4544a0c3db05bffd9fc5360d74 100644
--- a/inc/lang/el/draft.txt
+++ b/inc/lang/el/draft.txt
@@ -1,6 +1,8 @@
 ====== Βρέθηκε μία αυτόματα αποθηκευμένη σελίδα ======
 
-Η τελευταία τροποποίηση αυτής της σελίδας δεν ολοκληρώθηκε επιτυχώς. Η εφαρμογή αποθήκευσε αυτόματα μία εκδοχή της σελίδας την ώρα που την τροποποιούσατε και μπορείτε να την χρησιμοποιήσετε για να συνεχίσετε την εργασία σας. Παρακάτω φαίνεται αυτή η πιο πρόσφατη αυτόματα αποθηκευμένη σελίδα.
+Η τελευταία τροποποίηση αυτής της σελίδας δεν ολοκληρώθηκε επιτυχώς. 
+Η εφαρμογή αποθήκευσε αυτόματα μία εκδοχή της σελίδας την ώρα που την επεξεργαζόσασταν και μπορείτε να την χρησιμοποιήσετε για να συνεχίσετε την εργασία σας.
+Παρακάτω φαίνεται αυτή η πιο πρόσφατη αυτόματα αποθηκευμένη σελίδα.
 
 Μπορείτε να //επαναφέρετε// αυτή την αυτόματα αποθηκευμένη σελίδα ως τρέχουσα, να την //διαγράψετε// ή να //ακυρώσετε// τη διαδικασία τροποποίησης της τρέχουσας σελίδας.
 
diff --git a/inc/lang/el/edit.txt b/inc/lang/el/edit.txt
index 26b52f97a0cff5f7da4128040050af7f9240716b..8d9559fcc0032aca911987fafc6e388799b97791 100644
--- a/inc/lang/el/edit.txt
+++ b/inc/lang/el/edit.txt
@@ -1 +1,3 @@
-Τροποποιήστε την σελίδα **μόνο** εάν μπορείτε να την **βελτιώσετε**. Για να κάνετε δοκιμές με ασφάλεια ή να εξοικειωθείτε με το περιβάλλον χρησιμοποιήστε το [[:playground:playground|playground]]. Αφού τροποποιήστε την σελίδα επιλέξτε ''Αποθήκευση''. Δείτε τις [[:wiki:syntax|οδηγίες]] για την σωστή σύνταξη.
+Τροποποιήστε την σελίδα **μόνο** εάν μπορείτε να την **βελτιώσετε**. 
+Για να κάνετε δοκιμές με ασφάλεια ή να εξοικειωθείτε με το περιβάλλον χρησιμοποιήστε το [[:playground:playground|playground]]. 
+Αφού τροποποιήστε την σελίδα επιλέξτε ''Αποθήκευση''. Δείτε τις [[:wiki:syntax|οδηγίες]] για την σωστή σύνταξη.
diff --git a/inc/lang/el/index.txt b/inc/lang/el/index.txt
index 51f1fc600e2c7f48cb2a28ae715f12335e865442..e2da3a85e3afe24ad460916b4a8e93d4fedf19f7 100644
--- a/inc/lang/el/index.txt
+++ b/inc/lang/el/index.txt
@@ -1,3 +1,3 @@
 ====== Κατάλογος ======
 
-Αυτός είναι ένας κατάλογος όλων των διαθέσιμων σελίδων ταξινομημένων κατά [[doku>namespaces|φακέλους]].
+Εδώ βλέπετε τον κατάλογο όλων των διαθέσιμων σελίδων, ταξινομημένες κατά [[doku>namespaces|φακέλους]].
diff --git a/inc/lang/el/install.html b/inc/lang/el/install.html
index 89429d55b6a90517a17cb8dacb80bfc18f014c03..9487de7c77c2bb8401e3dd3bb0ef2359d00f641f 100644
--- a/inc/lang/el/install.html
+++ b/inc/lang/el/install.html
@@ -1,25 +1,26 @@
 <p>Αυτή η σελίδα περιέχει πληροφορίες που βοηθούν στην αρχική εγκατάσταση και
-ρύθμιση της εφαρμογής <a href="http://dokuwiki.org">Dokuwiki</a>. Περισσότερες 
-πληροφορίες υπάρχουν στη <a href="http://dokuwiki.org/installer">σελίδα τεκμηρίωσης</a> 
-του οδηγού εγκατάστασης.</p>
+ρύθμιση της εφαρμογής <a href="http://www.dokuwiki.org/el:dokuwiki">Dokuwiki</a>. 
+Περισσότερες πληροφορίες υπάρχουν στη <a href="http://www.dokuwiki.org/el:installer">
+σελίδα τεκμηρίωσης</a> του οδηγού εγκατάστασης.</p>
 
-<p>Η εφαρμογή DokuWiki χρησιμοποιεί απλά αρχεία για να αποθηκεύει τις σελίδες wiki 
-καθώς και πληροφορίες που σχετίζονται με αυτές (π.χ. εικόνες, καταλόγους αναζήτησης,
-παλαιότερες εκδόσεις σελίδων, κλπ). Για να λειτουργεί σωστά η εφαρμογή DokuWiki
-<strong>πρέπει</strong> να έχει δικαιώματα εγγραφής στους φακέλους που φιλοξενούν 
-αυτά τα αρχεία. Ο οδηγός εγκατάστασης δεν έχει την δυνατότητα να παραχωρήσει αυτά τα 
-δικαιώματα εγγραφής στους σχετικούς φακέλους. Ο κανονικός τρόπος για να γίνει αυτό είναι
-είτε απευθείας σε περιβάλλον γραμμής εντολών ή, εάν δεν έχετε τέτοια πρόσβαση, μέσω FTP ή 
-του πίνακα ελέγχου του περιβάλλοντος φιλοξενίας (π.χ. cPanel).</p>
+<p>Η εφαρμογή DokuWiki χρησιμοποιεί απλά αρχεία για να αποθηκεύει τις σελίδες 
+wiki καθώς και πληροφορίες που σχετίζονται με αυτές (π.χ. εικόνες, καταλόγους 
+αναζήτησης, παλαιότερες εκδόσεις σελίδων, κλπ). Για να λειτουργεί σωστά η εφαρμογή 
+DokuWiki <strong>πρέπει</strong> να έχει δικαιώματα εγγραφής στους φακέλους που 
+φιλοξενούν αυτά τα αρχεία. Ο οδηγός εγκατάστασης δεν έχει την δυνατότητα να 
+παραχωρήσει αυτά τα δικαιώματα εγγραφής στους σχετικούς φακέλους. Ο κανονικός 
+τρόπος για να γίνει αυτό είναι είτε απευθείας σε περιβάλλον γραμμής εντολών ή, 
+εάν δεν έχετε τέτοια πρόσβαση, μέσω FTP ή του πίνακα ελέγχου του περιβάλλοντος 
+φιλοξενίας (π.χ. cPanel).</p>
 
 <p>Ο οδηγός εγκατάστασης θα ρυθμίσει την εφαρμογή DokuWiki ώστε να χρησιμοποιεί 
-<acronym title="access control list">ACL</acronym>, με τρόπο ώστε ο διαχειριστής να
-έχει δυνατότητα εισόδου και πρόσβαση στο μενού διαχείρισης της εφαρμογής για εγκατάσταση 
-επεκτάσεων, διαχείριση χρηστών, διαχείριση δικαιωμάτων πρόσβασης στις διάφορες σελίδες και
-αλλαγή των ρυθμίσεων. Αυτό δεν είναι απαραίτητο για να λειτουργήσει η εφαρμογή, αλλά
-κάνει την διαχείρισή της ευκολότερη.</p>
+<acronym title="access control list">ACL</acronym>, με τρόπο ώστε ο διαχειριστής 
+να έχει δυνατότητα εισόδου και πρόσβαση στο μενού διαχείρισης της εφαρμογής για 
+εγκατάσταση επεκτάσεων, διαχείριση χρηστών, διαχείριση δικαιωμάτων πρόσβασης στις 
+διάφορες σελίδες και αλλαγή των ρυθμίσεων. Αυτό δεν είναι απαραίτητο για να 
+λειτουργήσει η εφαρμογή, αλλά κάνει την διαχείρισή της ευκολότερη.</p>
 
 <p>Οι έμπειροι χρήστες και οι χρήστες με ειδικές απαιτήσεις μπορούν να επισκεφθούν 
-τις σελίδες που περιέχουν λεπτομερείς
-<a href="http://dokuwiki.org/install">οδηγίες εγκατάστασης</a>
-και <a href="http://dokuwiki.org/config">πληροφορίες για τις ρυθμίσεις</a>.</p>
+τις σελίδες που περιέχουν λεπτομερείς <a href="http://dokuwiki.org/install">
+οδηγίες εγκατάστασης</a> και <a href="http://dokuwiki.org/config">πληροφορίες 
+για τις ρυθμίσεις</a>.</p>
\ No newline at end of file
diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php
index 83a869df0a6655f26622f126f2b784273b62558a..11c64285eacce8ef3aea920d159358aacfacc778 100644
--- a/inc/lang/el/lang.php
+++ b/inc/lang/el/lang.php
@@ -15,7 +15,7 @@ $lang['doublequoteclosing']    = '”';
 $lang['singlequoteopening']    = '‘';
 $lang['singlequoteclosing']    = '’';
 $lang['apostrophe']            = '’';
-$lang['btn_edit']              = 'Τροποποίηση σελίδας';
+$lang['btn_edit']              = 'Επεξεργασία σελίδας';
 $lang['btn_source']            = 'Προβολή κώδικα σελίδας';
 $lang['btn_show']              = 'Προβολή σελίδας';
 $lang['btn_create']            = 'Δημιουργία σελίδας';
@@ -23,30 +23,31 @@ $lang['btn_search']            = 'Αναζήτηση';
 $lang['btn_save']              = 'Αποθήκευση';
 $lang['btn_preview']           = 'Προεπισκόπηση';
 $lang['btn_top']               = 'Επιστροφή στην κορυφή της σελίδας';
-$lang['btn_newer']             = '<< πλέον πρόσφατες';
-$lang['btn_older']             = 'λιγότερο πρόσφατες >>';
+$lang['btn_newer']             = '<< πρόσφατες';
+$lang['btn_older']             = 'παλαιότερες >>';
 $lang['btn_revs']              = 'Παλαιότερες εκδόσεις σελίδας';
-$lang['btn_recent']            = 'Πρόσφατες αλλαγές σελίδων';
+$lang['btn_recent']            = 'Πρόσφατες αλλαγές';
 $lang['btn_upload']            = 'Φόρτωση';
 $lang['btn_cancel']            = 'Ακύρωση';
 $lang['btn_index']             = 'Κατάλογος';
-$lang['btn_secedit']           = 'Τροποποίηση';
-$lang['btn_login']             = 'Είσοδος χρήστη';
-$lang['btn_logout']            = 'Έξοδος χρήστη';
+$lang['btn_secedit']           = 'Επεξεργασία';
+$lang['btn_login']             = 'Σύνδεση χρήστη';
+$lang['btn_logout']            = 'Αποσύνδεση χρήστη';
 $lang['btn_admin']             = 'Διαχείριση';
 $lang['btn_update']            = 'Ενημέρωση';
 $lang['btn_delete']            = 'Σβήσιμο';
 $lang['btn_back']              = 'Πίσω';
-$lang['btn_backlink']          = 'Σύνδεσμοι προς την τρέχουσα σελίδα';
+$lang['btn_backlink']          = 'Σύνδεσμοι προς αυτή τη σελίδα';
 $lang['btn_backtomedia']       = 'Επιστροφή στην επιλογή αρχείων';
 $lang['btn_subscribe']         = 'Εγγραφή σε λήψη ενημερώσεων σελίδας';
-$lang['btn_profile']           = 'Τροποποίηση προφίλ';
+$lang['btn_profile']           = 'Επεξεργασία προφίλ';
 $lang['btn_reset']             = 'Ακύρωση';
 $lang['btn_resendpwd']         = 'Αποστολή νέου κωδικού';
-$lang['btn_draft']             = 'Τροποποίηση αυτόματα αποθηκευμένης σελίδας';
+$lang['btn_draft']             = 'Επεξεργασία  αυτόματα αποθηκευμένης σελίδας';
 $lang['btn_recover']           = 'Επαναφορά αυτόματα αποθηκευμένης σελίδας';
 $lang['btn_draftdel']          = 'Διαγραφή αυτόματα αποθηκευμένης σελίδας';
 $lang['btn_revert']            = 'Αποκατάσταση';
+$lang['btn_register']          = 'Εγγραφή';
 $lang['loggedinas']            = 'Συνδεδεμένος ως';
 $lang['user']                  = 'Όνομα χρήστη';
 $lang['pass']                  = 'Κωδικός';
@@ -55,8 +56,7 @@ $lang['oldpass']               = 'Επιβεβαίωση τρέχοντος κω
 $lang['passchk']               = 'ακόμη μια φορά';
 $lang['remember']              = 'Απομνημόνευση στοιχείων λογαριασμού';
 $lang['fullname']              = 'Ονοματεπώνυμο';
-$lang['email']                 = 'E-Mail';
-$lang['register']              = 'Εγγραφή';
+$lang['email']                 = 'e-mail';
 $lang['profile']               = 'Προφίλ χρήστη';
 $lang['badlogin']              = 'Συγνώμη, το όνομα χρήστη ή ο κωδικός ήταν λανθασμένο.';
 $lang['minoredit']             = 'Ασήμαντες αλλαγές';
@@ -67,15 +67,15 @@ $lang['reguexists']            = 'Αυτός ο λογαριασμός υπάρ
 $lang['regsuccess']            = 'Ο λογαριασμός δημιουργήθηκε και ο κωδικός εστάλει με e-mail.';
 $lang['regsuccess2']           = 'Ο λογαριασμός δημιουργήθηκε.';
 $lang['regmailfail']           = 'Φαίνεται να υπάρχει πρόβλημα με την αποστολή του κωδικού μέσω e-mail. Παρακαλούμε επικοινωνήστε μαζί μας!';
-$lang['regbadmail']            = 'Η διεύθυνση e-mail δεν δείχνει έγκυρη - εάν πιστεύετε ότι αυτό είναι λάθος, επικοινωνήστε μαζί μας';
+$lang['regbadmail']            = 'Η διεύθυνση e-mail δεν είναι έγκυρη - εάν πιστεύετε ότι αυτό είναι λάθος, επικοινωνήστε μαζί μας';
 $lang['regbadpass']            = 'Οι δύο κωδικοί δεν είναι ίδιοι, προσπαθήστε ξανά.';
 $lang['regpwmail']             = 'Ο κωδικός σας';
 $lang['reghere']               = 'Δεν έχετε λογαριασμό ακόμη? Δημιουργήστε έναν';
-$lang['profna']                = 'Αυτό το wiki δεν υποστηρίζει την τροποποίηση προφίλ.';
+$lang['profna']                = 'Αυτό το wiki δεν υποστηρίζει την επεξεργασία προφίλ.';
 $lang['profnochange']          = 'Καμία αλλαγή.';
 $lang['profnoempty']           = 'Δεν επιτρέπεται κενό όνομα χρήστη η κενή διεύθυνση email.';
 $lang['profchanged']           = 'Το προφίλ χρήστη τροποποιήθηκε επιτυχώς.';
-$lang['pwdforget']             = 'Ξεχάσατε το κωδικό σας? Αποκτήστε νέο.';
+$lang['pwdforget']             = 'Ξεχάσατε το κωδικό σας; Αποκτήστε νέο.';
 $lang['resendna']              = 'Αυτό το wiki δεν υποστηρίζει την εκ\' νέου αποστολή κωδικών.';
 $lang['resendpwd']             = 'Αποστολή νέων κωδικών για τον χρήστη';
 $lang['resendpwdmissing']      = 'Πρέπει να συμπληρώσετε όλα τα πεδία.';
@@ -83,7 +83,7 @@ $lang['resendpwdnouser']       = 'Αυτός ο χρήστης δεν υπάρχ
 $lang['resendpwdbadauth']      = 'Αυτός ο κωδικός ενεργοποίησης δεν είναι έγκυρος.';
 $lang['resendpwdconfirm']      = 'Ο σύνδεσμος προς την σελίδα ενεργοποίησης εστάλει με e-mail.';
 $lang['resendpwdsuccess']      = 'Ο νέος σας κωδικός εστάλη με e-mail.';
-$lang['license']               = 'Εκτός εάν αναφέρεται διαφορετικά, το υλικό αυτού του wiki διατίθεται κάτω από την ακόλουθη άδεια:';
+$lang['license']               = 'Εκτός εάν αναφέρεται διαφορετικά, το περιεχόμενο σε αυτο το wiki διέπεται από την ακόλουθη άδεια:';
 $lang['licenseok']             = 'Σημείωση: Τροποποιώντας αυτή την σελίδα αποδέχεστε την διάθεση του υλικού σας σύμφωνα με την ακόλουθη άδεια:';
 $lang['searchmedia']           = 'Αναζήτηση αρχείου:';
 $lang['searchmedia_in']        = 'Αναζήτηση σε %s';
@@ -92,9 +92,9 @@ $lang['txt_filename']          = 'Επιλέξτε νέο όνομα αρχεί
 $lang['txt_overwrt']           = 'Αντικατάσταση υπάρχοντος αρχείου';
 $lang['lockedby']              = 'Προσωρινά κλειδωμένο από';
 $lang['lockexpire']            = 'Το κλείδωμα λήγει στις';
-$lang['willexpire']            = 'Το κλείδωμά σας για την επεξεργασία αυτής της σελίδας θα λήξει σε ένα λεπτό.\n Για να το ανανεώσετε χρησιμοποιήστε την επιλογή Προεπισκόπηση.';
+$lang['willexpire']            = 'Το κλείδωμά σας για την επεξεργασία αυτής της σελίδας θα λήξει σε ένα λεπτό.\n Για να το ανανεώσετε χρησιμοποιήστε την Προεπισκόπηση.';
 $lang['js']['notsavedyet']     = 'Οι μη αποθηκευμένες αλλαγές θα χαθούν.
-Θέλετε να συνεχίσετε?';
+Θέλετε να συνεχίσετε;';
 $lang['js']['searchmedia']     = 'Αναζήτηση για αρχεία';
 $lang['js']['keepopen']        = 'Το παράθυρο να μην κλείνει';
 $lang['js']['hidedetails']     = 'Απόκρυψη λεπτομερειών';
@@ -107,25 +107,25 @@ $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']['mediasmall']      = 'Μικρό μέγεθος';
+$lang['js']['mediamedium']     = 'Μεσαίο μέγεθος';
+$lang['js']['medialarge']      = 'Μεγάλο μέγεθος';
+$lang['js']['mediaoriginal']   = 'Αρχικό μέγεθος';
 $lang['js']['medialnk']        = 'Σύνδεσμος στην σελίδα λεπτομερειών';
 $lang['js']['mediadirect']     = 'Απευθείας σύνδεσμος στο αυθεντικό';
 $lang['js']['medianolnk']      = 'Χωρίς σύνδεσμο';
 $lang['js']['medianolink']     = 'Να μην γίνει σύνδεσμος η εικόνα';
-$lang['js']['medialeft']       = 'Στοίχιση της εικόνας αριστερά.';
-$lang['js']['mediaright']      = 'Στοίχιση της εικόνας δεξιά.';
-$lang['js']['mediacenter']     = 'Στοίχιση της εικόνας στη μέση.';
-$lang['js']['medianoalign']    = 'Να μην γίνει στοίχιση.';
+$lang['js']['medialeft']       = 'Αριστερή στοίχιση εικόνας.';
+$lang['js']['mediaright']      = 'Δεξιά στοίχιση εικόνας.';
+$lang['js']['mediacenter']     = 'Κέντρική στοίχιση εικόνας.';
+$lang['js']['medianoalign']    = 'Χωρίς στοίχηση.';
 $lang['js']['nosmblinks']      = 'Οι σύνδεσμοι προς Windows shares δουλεύουν μόνο στον Microsoft Internet Explorer.
 Μπορείτε πάντα να κάνετε αντιγραφή και επικόλληση του συνδέσμου.';
 $lang['js']['linkwiz']         = 'Αυτόματος Οδηγός Συνδέσμων';
 $lang['js']['linkto']          = 'Σύνδεση σε:';
-$lang['js']['del_confirm']     = 'Να διαγραφεί?';
+$lang['js']['del_confirm']     = 'Να διαγραφεί;';
 $lang['js']['mu_btn']          = 'Ταυτόχρονη φόρτωση πολλαπλών φακέλων';
-$lang['rssfailed']             = 'Εμφανίστηκε κάποιο σφάλμα κατά την ανάγνωση αυτού του feed: ';
+$lang['rssfailed']             = 'Παρουσιάστηκε κάποιο σφάλμα κατά την ανάγνωση αυτού του feed: ';
 $lang['nothingfound']          = 'Δεν βρέθηκαν σχετικά αποτελέσματα.';
 $lang['mediaselect']           = 'Επιλογή Αρχείων';
 $lang['fileupload']            = 'Φόρτωση αρχείου';
@@ -156,9 +156,12 @@ $lang['quickhits']             = 'Σχετικές σελίδες';
 $lang['toc']                   = 'Πίνακας Περιεχομένων';
 $lang['current']               = 'τρέχουσα';
 $lang['yours']                 = 'Η έκδοσή σας';
-$lang['diff']                  = 'προβολή διαφορών με την τρέχουσα έκδοση';
+$lang['diff']                  = 'Προβολή διαφορών με την τρέχουσα έκδοση';
 $lang['diff2']                 = 'Προβολή διαφορών μεταξύ των επιλεγμένων εκδόσεων';
 $lang['difflink']              = 'Σύνδεσμος σε αυτή την προβολή διαφορών.';
+$lang['diff_type']             = 'Προβολή διαφορών:';
+$lang['diff_inline']           = 'Σε σειρά';
+$lang['diff_side']             = 'Δίπλα-δίπλα';
 $lang['line']                  = 'Γραμμή';
 $lang['breadcrumb']            = 'Ιστορικό';
 $lang['youarehere']            = 'Είστε εδώ';
@@ -218,12 +221,12 @@ $lang['img_camera']            = 'Camera';
 $lang['img_keywords']          = 'Λέξεις-κλειδιά';
 $lang['subscr_subscribe_success'] = 'Ο/η %s προστέθηκε στην λίστα ειδοποιήσεων για το %s';
 $lang['subscr_subscribe_error'] = 'Σφάλμα κατά την προσθήκη του/της %s στην λίστα ειδοποιήσεων για το %s';
-$lang['subscr_subscribe_noaddress'] = 'Δεν υπάρχει διεύθυνση ταχυδρομείου, συσχετισμένη με το όνομα χρήστη σας, κατά συνέπεια δεν μπορείτε να προστεθείτε στην λίστα ειδοποιήσεων';
+$lang['subscr_subscribe_noaddress'] = 'Δεν υπάρχει διεύθυνση ταχυδρομείου συσχετισμένη με το όνομα χρήστη σας. Κατά συνέπεια δεν μπορείτε να προστεθείτε στην λίστα ειδοποιήσεων';
 $lang['subscr_unsubscribe_success'] = 'Ο/η %s, απομακρύνθηκε από την λίστα ειδοποιήσεων για το %s';
 $lang['subscr_unsubscribe_error'] = 'Σφάλμα κατά την απομάκρυνση του/της %s στην λίστα ειδοποιήσεων για το %s';
 $lang['subscr_already_subscribed'] = 'Ο/η %s είναι ήδη στην λίστα ειδοποίησης για το %s';
 $lang['subscr_not_subscribed'] = 'Ο/η %s δεν είναι στην λίστα ειδοποίησης για το %s';
-$lang['subscr_m_not_subscribed'] = 'Αυτήν την στιγμή, δεν είσαστε γραμμένος/η στην λίστα ειδοποίησης της τρέχουσας σελίδας ή φακέλου.';
+$lang['subscr_m_not_subscribed'] = 'Αυτήν την στιγμή, δεν είσαστε εγεγγραμμένος/η στην λίστα ειδοποίησης της τρέχουσας σελίδας ή φακέλου.';
 $lang['subscr_m_new_header']   = 'Προσθήκη στην λίστα ειδοποίησης';
 $lang['subscr_m_current_header'] = 'Τρέχουσες εγγραφές ειδοποιήσεων';
 $lang['subscr_m_unsubscribe']  = 'Διαγραφή';
@@ -231,17 +234,17 @@ $lang['subscr_m_subscribe']    = 'Εγγραφή';
 $lang['subscr_m_receive']      = 'Λήψη';
 $lang['subscr_style_every']    = 'email σε κάθε αλλαγή';
 $lang['subscr_style_digest']   = 'συνοπτικό email αλλαγών της σελίδας (κάθε %.2f μέρες)';
-$lang['subscr_style_list']     = 'λίστα αλλαγμένων σελίδων μετά από το τελευταίο email (κάθε %.2f μέρες)';
+$lang['subscr_style_list']     = 'λίστα σελίδων με αλλαγές μετά από το τελευταίο email (κάθε %.2f μέρες)';
 $lang['authmodfailed']         = 'Κακή ρύθμιση λίστας χρηστών. Παρακαλούμε ενημερώστε τον διαχειριστή του wiki.';
-$lang['authtempfail']          = 'Η είσοδος χρηστών δεν λειτουργεί αυτή την στιγμή. Εάν αυτό διαρκεί για πολύ χρόνο, παρακαλούμε ενημερώστε τον διαχειριστή του wiki.';
+$lang['authtempfail']          = 'Η συνδεση χρηστών είναι απενεργοποιημένη αυτή την στιγμή. Αν αυτό διαρκέσει για πολύ, παρακαλούμε ενημερώστε τον διαχειριστή του wiki.';
 $lang['i_chooselang']          = 'Επιλογή γλώσσας';
 $lang['i_installer']           = 'Οδηγός εγκατάστασης DokuWiki';
 $lang['i_wikiname']            = 'Ονομασία wiki';
-$lang['i_enableacl']           = 'Ενεργοποίηση Λίστας Δικαιωμάτων Πρόσβασης - ACL (συνιστάται)';
+$lang['i_enableacl']           = 'Ενεργοποίηση Λίστας Δικαιωμάτων Πρόσβασης - ACL (συνίσταται)';
 $lang['i_superuser']           = 'Διαχειριστής';
 $lang['i_problems']            = 'Ο οδηγός εγκατάστασης συνάντησε τα προβλήματα που αναφέρονται παρακάτω. Η εγκατάσταση δεν θα ολοκληρωθεί επιτυχώς μέχρι να επιλυθούν αυτά τα προβλήματα.';
 $lang['i_modified']            = 'Για λόγους ασφαλείας, ο οδηγός εγκατάστασης λειτουργεί μόνο με νέες και μη τροποποιημένες εγκαταστάσεις Dokuwiki.
-Πρέπει είτε να κάνετε νέα εγκατάσταση, χρησιμοποιώντας το αρχικό πακέτο εγκατάστασης, ή να συμβουλευτείτε τις <a href="http://dokuwiki.org/install">οδηγίες εγκατάστασης της εφαρμογής</a>.';
+Πρέπει είτε να κάνετε νέα εγκατάσταση, χρησιμοποιώντας το αρχικό πακέτο εγκατάστασης, ή να συμβουλευτείτε τις <a href="http://dokuwiki.org/el:install">οδηγίες εγκατάστασης της εφαρμογής</a>.';
 $lang['i_funcna']              = 'Η λειτουργία <code>%s</code> της PHP δεν είναι διαθέσιμη. Πιθανόν να είναι απενεργοποιημένη στις ρυθμίσεις έναρξης της PHP';
 $lang['i_phpver']              = 'Η έκδοση <code>%s</code> της PHP που έχετε είναι παλαιότερη της απαιτούμενης <code>%s</code>. Πρέπει να αναβαθμίσετε την PHP.';
 $lang['i_permfail']            = 'Ο φάκελος <code>%s</code> δεν είναι εγγράψιμος από την εφαρμογή DokuWiki. Πρέπει να διορθώσετε τα δικαιώματα πρόσβασης αυτού του φακέλου!';
@@ -268,16 +271,16 @@ $lang['mu_ready']              = 'έτοιμο για φόρτωση';
 $lang['mu_done']               = 'ολοκληρώθηκε';
 $lang['mu_fail']               = 'απέτυχε';
 $lang['mu_authfail']           = 'η συνεδρία έληξε';
-$lang['mu_progress']           = '@PCT@% φορτώθηκε';
+$lang['mu_progress']           = 'φορτώθηκε @PCT@%';
 $lang['mu_filetypes']          = 'Επιτρεπτοί τύποι αρχείων';
 $lang['mu_info']               = 'τα αρχεία ανέβηκαν.';
 $lang['mu_lasterr']            = 'Τελευταίο σφάλμα:';
 $lang['recent_global']         = 'Βλέπετε τις αλλαγές εντός του φακέλου <b>%s</b>. Μπορείτε επίσης να <a href="%s">δείτε τις πρόσφατες αλλαγές σε όλο το wiki</a>.';
-$lang['years']                 = 'πριν από %d χρόνια';
-$lang['months']                = 'πριν από %d μήνες';
-$lang['weeks']                 = 'πριν από %d εβδομάδες';
-$lang['days']                  = 'πριν από %d ημέρες';
-$lang['hours']                 = 'πριν από %d ώρες';
-$lang['minutes']               = 'πριν από %d λεπτά';
-$lang['seconds']               = 'πριν από %d δευτερόλεπτα';
-$lang['wordblock']             = 'Η αλλαγή σας δεν αποθηκεύτηκε γιατί περιείχε μπλοκαρισμένο κείμενο (spam).';
+$lang['years']                 = 'πριν %d χρόνια';
+$lang['months']                = 'πριν %d μήνες';
+$lang['weeks']                 = 'πριν %d εβδομάδες';
+$lang['days']                  = 'πριν %d ημέρες';
+$lang['hours']                 = 'πριν %d ώρες';
+$lang['minutes']               = 'πριν %d λεπτά';
+$lang['seconds']               = 'πριν %d δευτερόλεπτα';
+$lang['wordblock']             = 'Η αλλαγή σας δεν αποθηκεύτηκε γιατί περιείχε spam.';
\ No newline at end of file
diff --git a/inc/lang/el/locked.txt b/inc/lang/el/locked.txt
index d2f542c19aa2dd16f1fdc8a7144667826fe69e17..425c334f1f27f70580790667ba12d203bfac52a2 100644
--- a/inc/lang/el/locked.txt
+++ b/inc/lang/el/locked.txt
@@ -1,4 +1,5 @@
 ====== Κλειδωμένη σελίδα ======
 
-Αυτή η σελίδα είναι προς το παρόν δεσμευμένη για τροποποίηση από άλλον χρήστη. Θα πρέπει να περιμένετε μέχρι ο συγκεκριμένος χρήστης να τελειώσει την τροποποίηση ή να εκπνεύσει το χρονικό όριο για το σχετικό κλείδωμα.
+Αυτή η σελίδα είναι προς το παρόν δεσμευμένη για τροποποίηση από άλλον χρήστη. 
+Θα πρέπει να περιμένετε μέχρι ο συγκεκριμένος χρήστης να σταματήσει να την επεξεργάζεται ή να εκπνεύσει το χρονικό όριο για το σχετικό κλείδωμα.
 
diff --git a/inc/lang/el/login.txt b/inc/lang/el/login.txt
index 3839b7279d2de5a107f9496975e2b2a41027ab16..3021a19eae4d50e147d895899a0469f0f53bd4d2 100644
--- a/inc/lang/el/login.txt
+++ b/inc/lang/el/login.txt
@@ -1,3 +1,5 @@
-====== Είσοδος χρήστη ======
+====== Σύνδεση χρήστη ======
 
-Αυτή την στιγμή δεν έχετε συνδεθεί ως χρήστης! Για να συνδεθείτε, εισάγετε τα στοιχεία σας στην παρακάτω φόρμα. Πρέπει να έχετε ενεργοποιήσει τα cookies στον φυλλομετρητή σας.
+Αυτή την στιγμή δεν έχετε συνδεθεί ως χρήστης!
+Για να συνδεθείτε, εισάγετε τα στοιχεία σας στην παρακάτω φόρμα.
+Πρέπει να έχετε ενεργοποιήσει τα cookies στο πρόγραμμα περιήγηση σας.
diff --git a/inc/lang/el/newpage.txt b/inc/lang/el/newpage.txt
index e8d65d6e5bc9e6fa481a2de95379f60757c554c7..3349ad90e5a2820d277a1347f243ac5ca9e60c5d 100644
--- a/inc/lang/el/newpage.txt
+++ b/inc/lang/el/newpage.txt
@@ -1,3 +1,4 @@
 ====== Αυτή η σελίδα δεν υπάρχει ακόμη ======
 
-Η σελίδα που ζητάτε δεν υπάρχει ακόμη. Εάν όμως έχετε επαρκή δικαιώματα, μπορείτε να την δημιουργήσετε επιλέγοντας ''Δημιουργία σελίδας''.
+Η σελίδα που ζητάτε δεν υπάρχει ακόμη. 
+Aν όμως έχετε επαρκή δικαιώματα, μπορείτε να την δημιουργήσετε επιλέγοντας ''Δημιουργία σελίδας''.
diff --git a/inc/lang/el/norev.txt b/inc/lang/el/norev.txt
index 9ce347948b047147385773a567d822ca4a3d8a41..2b13290ffb1e0fcaebaf58e0f5da4b7fd79369de 100644
--- a/inc/lang/el/norev.txt
+++ b/inc/lang/el/norev.txt
@@ -1,4 +1,5 @@
-====== Δεν υπάρχει τέτοια έκδοση ======
+====== Αυτή η έκδοση δεν υπάρχει ======
 
-Η έκδοση που αναζητήσατε δεν υπάρχει. Επιλέξτε ''Παλαιότερες εκδόσεις σελίδας'' για να δείτε την λίστα με τις παλαιότερες εκδόσεις της τρέχουσας σελίδας.
+Η έκδοση που αναζητήσατε δεν υπάρχει. 
+Μπορείτε να δείτε λίστα με τις παλαιότερες εκδόσεις της τρέχουσας σελίδας πατώντας ''Παλαιότερες εκδόσεις σελίδας''.
 
diff --git a/inc/lang/el/password.txt b/inc/lang/el/password.txt
index 621a215f039b0a6234bfe447548a1a81d384e81d..d27fbb3c36154365b3215a4681e39b89523143fe 100644
--- a/inc/lang/el/password.txt
+++ b/inc/lang/el/password.txt
@@ -2,8 +2,8 @@
 
 Αυτά είναι τα στοιχεία εισόδου για το @TITLE@ στο @DOKUWIKIURL@
 
-Όνομα   : @LOGIN@
-Κωδικός : @PASSWORD@
+Όνομα       : @LOGIN@
+Συνθηματικό : @PASSWORD@
 
 -- 
 Αυτό το e-mail δημιουργήθηκε αυτόματα από την εφαρμογή DokuWiki στην διεύθυνση
diff --git a/inc/lang/el/preview.txt b/inc/lang/el/preview.txt
index f6709a441d37d03bd6e0886c1908769a94bc372f..aef65c974feb1ba5f13fa70c20732168dd43eb29 100644
--- a/inc/lang/el/preview.txt
+++ b/inc/lang/el/preview.txt
@@ -1,4 +1,5 @@
 ====== Προεπισκόπηση ======
 
-Αυτή είναι μια προεπισκόπηση του πως θα δείχνει η σελίδα. Θυμηθείτε: Οι αλλαγές σας **δεν έχουν αποθηκευθεί** ακόμη!
+Αυτή είναι μια προεπισκόπηση του πως θα δείχνει η σελίδα. 
+Υπενθύμιση: Οι αλλαγές σας **δεν έχουν αποθηκευθεί** ακόμη!
 
diff --git a/inc/lang/el/pwconfirm.txt b/inc/lang/el/pwconfirm.txt
index 03f408819f600d52a75d109bbfd3ff2bec14f21a..a9e58be7d137d7767aa46006d601e2fb9794d7af 100644
--- a/inc/lang/el/pwconfirm.txt
+++ b/inc/lang/el/pwconfirm.txt
@@ -1,11 +1,11 @@
 Γεια σας @FULLNAME@!
 
-Κάποιος ζήτησε τη δημιουργία νέου κωδικού για τον λογαριασμό @TITLE@
+Κάποιος ζήτησε τη δημιουργία νέου συνθηματικού για τον λογαριασμό @TITLE@
 που διατηρείτε στο @DOKUWIKIURL@
 
-Εάν δεν ζητήσατε εσείς την δημιουργία νέου κωδικού απλά αγνοήστε αυτό το e-mail.
+Αν δεν ζητήσατε εσείς την δημιουργία νέου συνθηματικού απλά αγνοήστε αυτό το e-mail.
 
-Εάν όντως εσείς ζητήσατε την δημιουργία νέου κωδικού, ακολουθήστε τον παρακάτω σύνδεσμο για να το επιβεβαιώσετε.
+Αν όντως εσείς ζητήσατε την δημιουργία νέου συνθηματικού, ακολουθήστε τον παρακάτω σύνδεσμο για να το επιβεβαιώσετε.
 
 @CONFIRM@
 
diff --git a/inc/lang/el/read.txt b/inc/lang/el/read.txt
index 2d43c28fcdde9a3e823f5d7355f867e8dd51ea03..a620ab559d9e44a4a8f5ed6a91c0e97c630b3bc0 100644
--- a/inc/lang/el/read.txt
+++ b/inc/lang/el/read.txt
@@ -1 +1,2 @@
-Μπορείτε μόνο να διαβάσετε αυτή την σελίδα και όχι να την τροποποιήσετε. Εάν πιστεύετε ότι αυτό δεν είναι σωστό, απευθυνθείτε στον διαχειριστή της εφαρμογής.
+Μπορείτε να διαβάσετε αυτή την σελίδα αλλά δεν μπορείτε να την τροποποιήσετε. 
+Αν πιστεύετε ότι αυτό δεν είναι σωστό, απευθυνθείτε στον διαχειριστή της εφαρμογής.
diff --git a/inc/lang/el/recent.txt b/inc/lang/el/recent.txt
index cc80515815d5a3d5fbe090a4c9b9bcd7d257a439..78c74a6551a7291b1b62fccec42f4bb8c9248dfc 100644
--- a/inc/lang/el/recent.txt
+++ b/inc/lang/el/recent.txt
@@ -1,3 +1,3 @@
-====== Πρόσφατες αλλαγές σελίδων ======
+====== Πρόσφατες αλλαγές ======
 
 Οι παρακάτω σελίδες τροποποιήθηκαν πρόσφατα:
diff --git a/inc/lang/el/register.txt b/inc/lang/el/register.txt
index 15d64cba3aa64f3425f156794132ab6d652c2035..6a4e963e410dff2c908a9393770480c0485193e9 100644
--- a/inc/lang/el/register.txt
+++ b/inc/lang/el/register.txt
@@ -1,3 +1,5 @@
 ====== Εγγραφή νέου χρήστη ======
 
-Συμπληρώστε όλα τα παρακάτω πεδία για να δημιουργήσετε ένα νέο λογαριασμό σε αυτό το wiki. Πρέπει να δώσετε μια **υπαρκτή e-mail διεύθυνση** - ο κωδικός σας θα σας αποσταλεί σε αυτήν. Το όνομα χρήστη θα πρέπει να πληρεί τις ίδιες απαιτήσεις ονόματος που ισχύουν και για τους [[doku>pagename|φακέλους]].
+Συμπληρώστε όλα τα παρακάτω πεδία για να δημιουργήσετε ένα νέο λογαριασμό σε αυτό το wiki.
+Πρέπει να δώσετε μια **υπαρκτή e-mail διεύθυνση** - ο κωδικός σας θα σας αποσταλεί σε αυτήν.
+Το όνομα χρήστη θα πρέπει να πληρεί τις ίδιες απαιτήσεις ονόματος που ισχύουν και για τους [[doku>el:pagename|φακέλους]].
diff --git a/inc/lang/el/registermail.txt b/inc/lang/el/registermail.txt
index 5d516ee312f156a00dd09fceb4b95ee8286be63e..0b3e0b78b7c66504a09a1609d5480419bcd1e029 100644
--- a/inc/lang/el/registermail.txt
+++ b/inc/lang/el/registermail.txt
@@ -1,4 +1,4 @@
-Ένας νέος χρήστης εγγράφηκε. Αυτές είναι οι λεπτομέρειες:
+Ένας νέος χρήστης εγγράφηκε. Ορίστε οι λεπτομέρειες:
 
 Χρήστης         : @NEWUSER@
 Όνομα           : @NEWNAME@
diff --git a/inc/lang/el/resendpwd.txt b/inc/lang/el/resendpwd.txt
index 2b91ed017e83d5d512f8f50f427cc3542ae266e5..6b4f3bbca23a07c060faf815c4d6ddf52106570e 100644
--- a/inc/lang/el/resendpwd.txt
+++ b/inc/lang/el/resendpwd.txt
@@ -1,4 +1,6 @@
 ====== Αποστολή νέου κωδικού ======
 
-Συμπληρώστε όλα τα παρακάτω πεδία για να λάβετε ένα νέο κωδικό για τον λογαριασμό σας σε αυτό το wiki. Ο νέος κωδικός σας θα σταλεί στην e-mail διεύθυνση που έχετε ήδη δηλώσει. Το όνομα πρέπει να είναι αυτό που ισχύει για τον λογαριασμό σας σε αυτό το wiki.
+Συμπληρώστε όλα τα παρακάτω πεδία για να λάβετε ένα νέο κωδικό για τον λογαριασμό σας σε αυτό το wiki. 
+Ο νέος κωδικός σας θα σταλεί στην e-mail διεύθυνση που έχετε ήδη δηλώσει. 
+Το όνομα πρέπει να είναι αυτό που ισχύει για τον λογαριασμό σας σε αυτό το wiki.
 
diff --git a/inc/lang/el/revisions.txt b/inc/lang/el/revisions.txt
index 7689c3b2ba7b22d0b983ed6040f0bb5662c68a3f..955fa1703d8d45cdb4424e41ca0a643fd2c1012d 100644
--- a/inc/lang/el/revisions.txt
+++ b/inc/lang/el/revisions.txt
@@ -1,3 +1,8 @@
 ====== Παλαιότερες εκδόσεις σελίδας ======
 
-Οι παρακάτω είναι παλαιότερες εκδόσεις της τρέχουσας σελίδας. Εάν θέλετε να αντικαταστήσετε την τρέχουσα σελίδα με κάποια από τις παλαιότερες εκδόσεις της, επιλέξτε την σχετική έκδοση, επιλέξτε ''Τροποποίηση σελίδας'', κάνετε τυχόν αλλαγές και αποθηκεύστε την.
+Οι παρακάτω είναι παλαιότερες εκδόσεις της τρέχουσας σελίδας. 
+Εάν θέλετε να αντικαταστήσετε την τρέχουσα σελίδα με κάποια από τις παλαιότερες εκδόσεις της κάντε τα παρακάτω:
+  * επιλέξτε την σχετική έκδοση
+  * επιλέξτε ''Τροποποίηση σελίδας''
+  * κάνετε τυχόν αλλαγές 
+  * αποθηκεύστε την
diff --git a/inc/lang/el/searchpage.txt b/inc/lang/el/searchpage.txt
index 87f3962925880c361604d265e971c3352fcbc70b..b52162b60c1f4fba8aaef160e86d939f7b5b1088 100644
--- a/inc/lang/el/searchpage.txt
+++ b/inc/lang/el/searchpage.txt
@@ -1,5 +1,4 @@
 ====== Αναζήτηση ======
 
-Τα αποτελέσματα της αναζήτησής σας ακολουθούν.
+Τα αποτελέσματα της αναζήτησής σας:
 
-===== Αποτελέσματα =====
\ No newline at end of file
diff --git a/inc/lang/el/showrev.txt b/inc/lang/el/showrev.txt
index 21224542058fa5bf6a7bbb162b3039b752365ebb..a6ba3f99e29c99f8e87d39efce65aeeda650dd70 100644
--- a/inc/lang/el/showrev.txt
+++ b/inc/lang/el/showrev.txt
@@ -1,2 +1,2 @@
-**Αυτή είναι μια παλαιότερη έκδοση της σελίδας!**
+**Βλέπετε μια παλαιότερη έκδοση της σελίδας!**
 ----
diff --git a/inc/lang/el/stopwords.txt b/inc/lang/el/stopwords.txt
index bc6eb48aea08f241e220bc59d6d6851acfb8e381..01d5103b381bd9560944017befceaea737890b78 100644
--- a/inc/lang/el/stopwords.txt
+++ b/inc/lang/el/stopwords.txt
@@ -1,29 +1,103 @@
 # 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/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This list is provided by Fotis Lazarinis based on his research found at: http://lazarinf.teimes.gr/papers/J8.pdf
+και
+ήταν
+το
+ενός
+να
+πολύ
+του
+όμως
+η
+κατά
+της
+αυτή
+με
+όταν
+που
+μέσα
+την
+οποίο
+από
+πως
+για
+έτσι
+τα
+στους
+είναι
+μέσω
+των
+όλα
+σε
+καθώς
+ο
+αυτά
+οι
+προς
+στο
+ένας
+θα
+πριν
+τη
+μου
+στην
+όχι
+τον
+χωρίς
+τους
+επίσης
+δεν
+μεταξύ
+τις
+μέχρι
+ένα
+έναν
+μια
+μιας
+ότι
+αφού
+ή
+ακόμα
+στη
+όπου
+στα
+είχε
+μας
+δηλαδή
+αλλά
+τρόπος
+στον
+όσο
+στις
+ακόμη
+αυτό
+τόσο
+όπως
+έχουμε
+αν
+ώστε
+μπορεί
+αυτές
+μετά
+γιατί
+σας
+πάνω
+δύο
+τότε
+τι
+τώρα
+ως
+κάτι
+κάθε
+άλλο
+πρέπει
+μην
+πιο
+εδώ
+οποία
+είτε
+μόνο
+μη
+ενώ
\ No newline at end of file
diff --git a/inc/lang/el/subscr_digest.txt b/inc/lang/el/subscr_digest.txt
index 1a0f44d14882295a6c96a30343ecef4392692e85..7dd0345d7a925fa71051f23a4168921483b67b07 100644
--- a/inc/lang/el/subscr_digest.txt
+++ b/inc/lang/el/subscr_digest.txt
@@ -11,10 +11,9 @@
 Νέα έκδοση: @NEWPAGE@
 
 Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε 
-στο wiki στην διεύθυνση @DOKUWIKIURL@ και στην 
-συνέχεια επισκεφθείτε το @SUBSCRIBE@ και 
-διαγραφείτε από τις ειδοποιήσεις της σελίδας ή 
-φακέλου.
+στο wiki στην διεύθυνση @DOKUWIKIURL@ 
+και στην συνέχεια επισκεφθείτε το @SUBSCRIBE@ 
+και διαγραφείτε από τις ειδοποιήσεις της σελίδας ή του φακέλου.
 
 --
 Αυτό το μήνυμα παράχθηκε απο το DokuWiki στην 
diff --git a/inc/lang/el/subscr_list.txt b/inc/lang/el/subscr_list.txt
index f5cb8023d203263e7cc2bd8f77911ce5d3b395d5..97b8dc47deae970a150c1b38b0c04f8ba156ecaf 100644
--- a/inc/lang/el/subscr_list.txt
+++ b/inc/lang/el/subscr_list.txt
@@ -10,11 +10,10 @@
 @DIFF@
 --------------------------------------------------------
 
-Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε 
-στο wiki στην διεύθυνση @DOKUWIKIURL@ και στην 
-συνέχεια επισκεφθείτε το @SUBSCRIBE@ και 
-διαγραφείτε από τις ειδοποιήσεις της σελίδας ή 
-φακέλου.
+Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε στο wiki 
+στην διεύθυνση @DOKUWIKIURL@ 
+και στην συνέχεια επισκεφθείτε το @SUBSCRIBE@ 
+και διαγραφείτε από τις ειδοποιήσεις της σελίδας ή του φακέλου.
 
 --
 Αυτό το μήνυμα παράχθηκε απο το DokuWiki στην 
diff --git a/inc/lang/el/subscr_single.txt b/inc/lang/el/subscr_single.txt
index 9815cc0bb1e2ed902eac9a69cb1267301d8d426f..610af49a21b77af1007b1108182e563e29700f8c 100644
--- a/inc/lang/el/subscr_single.txt
+++ b/inc/lang/el/subscr_single.txt
@@ -12,11 +12,10 @@
 Παλιά έκδοση: @OLDPAGE@
 Νέα έκδοση: @NEWPAGE@
 
-Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε 
-στο wiki στην διεύθυνση @DOKUWIKIURL@ και στην 
-συνέχεια επισκεφθείτε το @SUBSCRIBE@ και 
-διαγραφείτε από τις ειδοποιήσεις της σελίδας ή 
-φακέλου.
+Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε στο wiki 
+στην διεύθυνση @DOKUWIKIURL@ 
+και στην συνέχεια επισκεφθείτε το @SUBSCRIBE@ 
+και διαγραφείτε από τις ειδοποιήσεις της σελίδας ή του φακέλου.
 
 --
 Αυτό το μήνυμα παράχθηκε απο το DokuWiki στην 
diff --git a/inc/lang/el/updateprofile.txt b/inc/lang/el/updateprofile.txt
index ccb9596b6372835684edab5ed8456456f14fcb5e..56f176d37a60a7d4203c59574e3a28d1b94c1587 100644
--- a/inc/lang/el/updateprofile.txt
+++ b/inc/lang/el/updateprofile.txt
@@ -1,3 +1,4 @@
 ====== Τροποποίηση προφίλ ======
 
-Τροποποιήστε **μόνο** τα πεδία που θέλετε να αλλάξετε. Δεν μπορείτε να αλλάξετε το πεδίο ''Όνομα''.
+Τροποποιήστε **μόνο** τα πεδία που θέλετε να αλλάξετε. 
+Δεν μπορείτε να αλλάξετε το πεδίο ''Όνομα''.
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 9ccbe14e0d553e172acb8b64448ae6e45803f478..51fd8f64566496adc0af75490782fc1d5d29202c 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -46,7 +46,8 @@ $lang['btn_resendpwd']   = 'Send new password';
 $lang['btn_draft']    = 'Edit draft';
 $lang['btn_recover']  = 'Recover draft';
 $lang['btn_draftdel'] = 'Delete draft';
-$lang['btn_revert'] = 'Restore';
+$lang['btn_revert']   = 'Restore';
+$lang['btn_register'] = 'Register';
 
 $lang['loggedinas'] = 'Logged in as';
 $lang['user']       = 'Username';
@@ -57,7 +58,6 @@ $lang['passchk']    = 'once again';
 $lang['remember']   = 'Remember me';
 $lang['fullname']   = 'Real name';
 $lang['email']      = 'E-Mail';
-$lang['register']   = 'Register';
 $lang['profile']    = 'User Profile';
 $lang['badlogin']   = 'Sorry, username or password was wrong.';
 $lang['minoredit']  = 'Minor Changes';
@@ -164,6 +164,9 @@ $lang['yours']      = 'Your Version';
 $lang['diff']       = 'Show differences to current revisions';
 $lang['diff2']      = 'Show differences between selected revisions';
 $lang['difflink']   = 'Link to this comparison view';
+$lang['diff_type']  = 'View differences:';
+$lang['diff_inline']= 'Inline';
+$lang['diff_side']  = 'Side by Side';
 $lang['line']       = 'Line';
 $lang['breadcrumb'] = 'Trace';
 $lang['youarehere'] = 'You are here';
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index a2457474bd395ecf0dddaebaf27b8889c9e4a2f7..305c080f11a0440ec5c9b2e23967600a9c17ca65 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -4,16 +4,11 @@
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Antono Vasiljev <esperanto.minsk ĈE tut.by>
- * @author Felipe Castro <fefcas CXE yahoo.com.br>
+ * @author Felipe Castro <fefcas@yahoo.com.br>
  * @author Felipe Castro <fefcas@uol.com.br>
  * @author Felipe Castro <fefcas@gmail.com>
- * @author Felipe Castro <fefcas (cxe) gmail (punkto) com>
- * @author Felipo Kastro <fefcas@gmail.com>
  * @author Robert Bogenschneider <robog@gmx.de>
- * @author Erik Pedersen <erik pedersen@shaw.ca>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
- * @author Robert Bogenschneider <robog@GMX.de>
- * @author Robert BOGENSCHNEIDER <robog@gmx.de>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -54,6 +49,7 @@ $lang['btn_draft']             = 'Redakti skizon';
 $lang['btn_recover']           = 'Restarigi skizon';
 $lang['btn_draftdel']          = 'Forigi skizon';
 $lang['btn_revert']            = 'Restarigi';
+$lang['btn_register']          = 'Registriĝi';
 $lang['loggedinas']            = 'Ensalutita kiel';
 $lang['user']                  = 'Uzant-nomo';
 $lang['pass']                  = 'Pasvorto';
@@ -63,7 +59,6 @@ $lang['passchk']               = 'plian fojon';
 $lang['remember']              = 'Rememoru min';
 $lang['fullname']              = 'Kompleta nomo';
 $lang['email']                 = 'Retpoŝto';
-$lang['register']              = 'Registriĝi';
 $lang['profile']               = 'Uzanto-profilo';
 $lang['badlogin']              = 'Pardonu, uzant-nomo aÅ­ pasvorto estis erara.';
 $lang['minoredit']             = 'Etaj modifoj';
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 04403c821c5ece167168c45c8b32a3f58846d618..427f7e0a27a5c5a8e1c1c0c9259aa027fcfd61d6 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -14,8 +14,7 @@
  * @author oliver@samera.com.py
  * @author Enrico Nicoletto <liverig@gmail.com>
  * @author Manuel Meco <manuel.meco@gmail.com>
- * @author VictorCastelan <victorcastelan@gmail.com>
- * @author Jordan Mero  hack.jord@gmail.com
+ * @author Jordan Mero <hack.jord@gmail.com>
  * @author Felipe Martinez <metalmartinez@gmail.com>
  * @author Javier Aranda <internet@javierav.com>
  * @author Zerial <fernando@zerial.org>
@@ -64,6 +63,7 @@ $lang['btn_draft']             = 'Editar borrador';
 $lang['btn_recover']           = 'Recuperar borrador';
 $lang['btn_draftdel']          = 'Eliminar borrador';
 $lang['btn_revert']            = 'Restaurar';
+$lang['btn_register']          = 'Registrarse';
 $lang['loggedinas']            = 'Conectado como ';
 $lang['user']                  = 'Usuario';
 $lang['pass']                  = 'Contraseña';
@@ -73,7 +73,6 @@ $lang['passchk']               = 'otra vez';
 $lang['remember']              = 'Recordarme';
 $lang['fullname']              = 'Nombre real';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Registrarse';
 $lang['profile']               = 'Perfil del usuario';
 $lang['badlogin']              = 'Lo siento, el usuario o la contraseña es incorrecto.';
 $lang['minoredit']             = 'Cambios menores';
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index ee765b5b54ee84513c1f69d7353703f306cfb6a4..5fc9c88d5dbe84bba1fdabd59faac82b588e1c8a 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -43,6 +43,8 @@ $lang['btn_resendpwd'] = 'Saada uus parool';
 $lang['btn_draft'] = 'Toimeta mustandit';
 $lang['btn_recover'] = 'Taata mustand';
 $lang['btn_draftdel'] = 'Kustuta mustand';
+$lang['btn_register'] = 'Registreeri uus kasutaja';
+
 $lang['newpass'] = 'Uus parool';
 $lang['oldpass'] = 'Vana parool';
 $lang['passchk'] = 'Korda uut parooli';
@@ -131,7 +133,6 @@ $lang['pass']       = 'Parool';
 $lang['remember']   = 'Pea mind meeles';
 $lang['fullname']   = 'Täielik nimi';
 $lang['email']      = 'E-post';
-$lang['register']   = 'Registreeri uus kasutaja';
 $lang['badlogin']   = 'Oops, Sinu kasutajanimi või parool oli vale.';
 
 $lang['regmissing'] = 'Kõik väljad tuleb ära täita.';
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index 2efec00be3bc988881ce8f4515d41c8a44f51d46..503b20b302b8a64c717f17294cb21fd600694e3a 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -45,6 +45,7 @@ $lang['btn_draft']             = 'Editatu zirriborroa';
 $lang['btn_recover']           = 'Berreskuratu zirriborroa';
 $lang['btn_draftdel']          = 'Ezabatu zirriborroa';
 $lang['btn_revert']            = 'Berrezarri';
+$lang['btn_register']          = 'Erregistratu';
 $lang['loggedinas']            = 'Erabiltzailea';
 $lang['user']                  = 'Erabiltzailea';
 $lang['pass']                  = 'Pasahitza';
@@ -54,7 +55,6 @@ $lang['passchk']               = 'berriz';
 $lang['remember']              = 'Gogoratu';
 $lang['fullname']              = 'Izen Deiturak';
 $lang['email']                 = 'E-Maila';
-$lang['register']              = 'Erregistratu';
 $lang['profile']               = 'Erabiltzaile Profila';
 $lang['badlogin']              = 'Barkatu, prozesuak huts egin du; saiatu berriz';
 $lang['minoredit']             = 'Aldaketa Txikiak';
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index c5be8e1c01900472dd76eafe723fa835aa2a1e34..ceea28f8ed96ef2a19e6f397cfe2761a5ca43347 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -10,7 +10,6 @@
  * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesFa.php?view=co
  * @author behrad eslamifar <behrad_es@yahoo.com)
  * @author Mohsen Firoozmandan <info@mambolearn.com>
- * @author omidmr@gmail.com
  * @author Omid Mottaghi <omidmr@gmail.com>
  * @author Mohammad Reza Shoaei <shoaei@gmail.com>
  */
@@ -53,6 +52,7 @@ $lang['btn_draft']             = 'ویرایش پیش‌نویس';
 $lang['btn_recover']           = 'بازیابی پیش‌نویس';
 $lang['btn_draftdel']          = 'حذف پیش‌نویس';
 $lang['btn_revert']            = 'بازیابی';
+$lang['btn_register']          = 'یک حساب جدید بسازید';
 $lang['loggedinas']            = 'به عنوان کاربر روبرو وارد شده‌اید:';
 $lang['user']                  = 'نام کاربری:';
 $lang['pass']                  = 'گذرواژه‌ی شما';
@@ -62,7 +62,6 @@ $lang['passchk']               = 'گذرواژه را دوباره وارد کن
 $lang['remember']              = 'گذرواژه را به یاد بسپار.';
 $lang['fullname']              = '*نام واقعی شما';
 $lang['email']                 = 'ایمیل شما*';
-$lang['register']              = 'یک حساب جدید بسازید';
 $lang['profile']               = 'پروفایل کاربر';
 $lang['badlogin']              = 'خطا در ورود به سیستم';
 $lang['minoredit']             = 'این ویرایش خُرد است';
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 2b1ddfa6ff2e87e553ea59f61b84e332773e62b6..bc52625e02188383200d581bbb4897793b9fbff3 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -5,7 +5,6 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Petteri <petteri@gmail.com>
  * @author Matti Pöllä <mpo@iki.fi>
- * @author otto@valjakko.net
  * @author Otto Vainio <otto@valjakko.net>
  * @author Teemu Mattila <ghcsystems@gmail.com>
  */
@@ -48,6 +47,7 @@ $lang['btn_draft']             = 'Muokkaa luonnosta';
 $lang['btn_recover']           = 'Palauta luonnos';
 $lang['btn_draftdel']          = 'Poista luonnos';
 $lang['btn_revert']            = 'palauta';
+$lang['btn_register']          = 'Rekisteröidy';
 $lang['loggedinas']            = 'Kirjautunut nimellä';
 $lang['user']                  = 'Käyttäjänimi';
 $lang['pass']                  = 'Salasana';
@@ -57,7 +57,6 @@ $lang['passchk']               = 'uudelleen';
 $lang['remember']              = 'Muista minut';
 $lang['fullname']              = 'Koko nimi';
 $lang['email']                 = 'Sähköposti';
-$lang['register']              = 'Rekisteröidy';
 $lang['profile']               = 'Käyttäjän profiili';
 $lang['badlogin']              = 'Käyttäjänimi tai salasana oli väärä.';
 $lang['minoredit']             = 'Pieni muutos';
diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php
index 2bc5c3d53e6dd3c705af25b1a30461bb3b93d8ec..3d4d0455b5c473ed7126797fc1f53b6cd4448d6e 100644
--- a/inc/lang/fo/lang.php
+++ b/inc/lang/fo/lang.php
@@ -4,7 +4,7 @@
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Poul J. Clementsen <poul@diku.dk>
- * @author Einar Petersen einar.petersen@gmail.com
+ * @author Einar Petersen <einar.petersen@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -45,6 +45,7 @@ $lang['btn_draft']             = 'Broyt kladdu';
 $lang['btn_recover']           = 'Endurbygg kladdu';
 $lang['btn_draftdel']          = 'Sletta';
 $lang['btn_revert']            = 'Endurbygg';
+$lang['btn_register']          = 'Melda til';
 $lang['loggedinas']            = 'Ritavur inn sum';
 $lang['user']                  = 'Brúkaranavn';
 $lang['pass']                  = 'Loyniorð';
@@ -54,7 +55,6 @@ $lang['passchk']               = 'Endurtak nýtt loyniorð';
 $lang['remember']              = 'Minst til loyniorðið hjá mær';
 $lang['fullname']              = 'Navn';
 $lang['email']                 = 'T-postur';
-$lang['register']              = 'Melda til';
 $lang['profile']               = 'Brúkara vangamynd';
 $lang['badlogin']              = 'Skeivt brúkaranavn ella loyniorð.';
 $lang['minoredit']             = 'Smærri broytingar';
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index 76e1271bde0a3e4788fd4b706d6c657352ee337f..40384fecbdb92d154ffc9fa5f60974291ee3c7d2 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -12,7 +12,6 @@
  * @author Stéphane Chamberland <stephane.chamberland@ec.gc.ca>
  * @author Delassaux Julien <julien@delassaux.fr>
  * @author Maurice A. LeBlanc <leblancma@cooptel.qc.ca>
- * @author gb@isis.u-strasbg.fr
  * @author stephane.gully@gmail.com
  * @author Guillaume Turri <guillaume.turri@gmail.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
@@ -20,7 +19,8 @@
  * @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>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -61,6 +61,7 @@ $lang['btn_draft']             = 'Modifier le brouillon';
 $lang['btn_recover']           = 'Récupérer le brouillon';
 $lang['btn_draftdel']          = 'Effacer le brouillon';
 $lang['btn_revert']            = 'Restaurer';
+$lang['btn_register']          = 'S\'enregistrer';
 $lang['loggedinas']            = 'Connecté en tant que ';
 $lang['user']                  = 'Utilisateur';
 $lang['pass']                  = 'Mot de passe';
@@ -70,7 +71,6 @@ $lang['passchk']               = 'Répéter nouveau mot de passe';
 $lang['remember']              = 'Mémoriser';
 $lang['fullname']              = 'Nom';
 $lang['email']                 = 'Adresse de courriel';
-$lang['register']              = 'S\'enregistrer';
 $lang['profile']               = 'Profil utilisateur';
 $lang['badlogin']              = 'L\'utilisateur ou le mot de passe est incorrect.';
 $lang['minoredit']             = 'Modification mineure';
@@ -173,6 +173,9 @@ $lang['yours']                 = 'Votre version';
 $lang['diff']                  = 'Différences avec la version actuelle';
 $lang['diff2']                 = 'Différences entre les versions sélectionnées';
 $lang['difflink']              = 'Lien vers cette vue';
+$lang['diff_type']             = 'Voir les différences :';
+$lang['diff_inline']           = 'Sur une seule ligne';
+$lang['diff_side']             = 'Côte à côte';
 $lang['line']                  = 'Ligne';
 $lang['breadcrumb']            = 'Piste';
 $lang['youarehere']            = 'Vous êtes ici';
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index 9f1b4817344ea089bc37e7611812c01c1b237255..37cf55d226278b55f916a692b387e87951657365 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -44,6 +44,7 @@ $lang['btn_draft']             = 'Editar borrador';
 $lang['btn_recover']           = 'Recuperar borrador';
 $lang['btn_draftdel']          = 'Eliminar borrador';
 $lang['btn_revert']            = 'Restaurar';
+$lang['btn_register']          = 'Rexístrate';
 $lang['loggedinas']            = 'Iniciaches sesión como';
 $lang['user']                  = 'Nome de Usuario';
 $lang['pass']                  = 'Contrasinal';
@@ -53,7 +54,6 @@ $lang['passchk']               = 'de novo';
 $lang['remember']              = 'Lémbrame';
 $lang['fullname']              = 'Nome Completo';
 $lang['email']                 = 'Correo-e';
-$lang['register']              = 'Rexístrate';
 $lang['profile']               = 'Perfil de Usuario';
 $lang['badlogin']              = 'Sentímolo, mais o nome de usuario ou o contrasinal non son correctos.';
 $lang['minoredit']             = 'Trocos Menores';
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index 47310d4d19d7e337d0e0dfb7bc42520ebedb6b49..1a47ebcb8dd2b5e41542772bd80fac3adc70dea3 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -6,7 +6,6 @@
  * @link       http://sourceforge.net/projects/hebdokuwiki/
  * @author גיא שפר <guysoft@ort.org.il>
  * @author Denis Simakov <akinoame1@gmail.com>
- * @author DoK <kamberd@yahoo.com>
  * @author Dotan Kamber <kamberd@yahoo.com>
  * @author Moshe Kaplan <mokplan@gmail.com>
  * @author Yaron Yogev <yaronyogev@gmail.com>
@@ -51,6 +50,7 @@ $lang['btn_draft']             = 'עריכת טיוטה';
 $lang['btn_recover']           = 'שחזור טיוטה';
 $lang['btn_draftdel']          = 'מחיקת טיוטה';
 $lang['btn_revert']            = 'שחזור';
+$lang['btn_register']          = 'הרשמה';
 $lang['loggedinas']            = 'נכנסת בשם';
 $lang['user']                  = 'שם משתמש';
 $lang['pass']                  = 'ססמה';
@@ -60,7 +60,6 @@ $lang['passchk']               = 'פעם נוספת';
 $lang['remember']              = 'שמירת הפרטים שלי';
 $lang['fullname']              = 'שם מלא';
 $lang['email']                 = 'דוא״ל';
-$lang['register']              = 'הרשמה';
 $lang['profile']               = 'פרופיל המשתמש';
 $lang['badlogin']              = 'שם המשתמש או הססמה שגויים, עמך הסליחה';
 $lang['minoredit']             = 'שינוים מזעריים';
diff --git a/inc/lang/hi/lang.php b/inc/lang/hi/lang.php
index b8af3becd3d793b47109ff2d841aead2336bbd4f..00e5589d889449ea2b91c7c8329921f109f154f8 100644
--- a/inc/lang/hi/lang.php
+++ b/inc/lang/hi/lang.php
@@ -79,11 +79,8 @@ $lang['current']               = 'वर्तमान';
 $lang['yours']                 = 'आपका संस्करणः';
 $lang['diff']                  = 'वर्तमान संशोधन में मतभेद दिखाइये |';
 $lang['diff2']                 = 'चयनित संशोधन के बीच में मतभेद दिखाइये |';
-$lang['line']                  = 'रेखा
-';
-$lang['youarehere']            = 'आप यहाँ हैं |
-
-';
+$lang['line']                  = 'रेखा';
+$lang['youarehere']            = 'आप यहाँ हैं |';
 $lang['lastmod']               = 'अंतिम बार संशोधित';
 $lang['by']                    = 'के द्वारा';
 $lang['deleted']               = 'हटाया';
@@ -121,8 +118,7 @@ $lang['i_superuser']           = 'महाउपयोगकर्ता';
 $lang['i_retry']               = 'पुनःप्रयास';
 $lang['mu_gridsize']           = 'आकार';
 $lang['mu_gridstat']           = 'स्थिति';
-$lang['mu_browse']             = 'ब्राउज़
-';
+$lang['mu_browse']             = 'ब्राउज़';
 $lang['mu_toobig']             = 'बहुत बड़ा';
 $lang['mu_ready']              = 'अपलोड करने के लिए तैयार';
 $lang['mu_done']               = 'पूर्ण';
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index 545498dee65770a089a718d6bf863db7fe136acb..a42e8c96ffca9315c1a8165aaecde3d7b14ab883 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -48,6 +48,7 @@ $lang['btn_resendpwd']         = 'Pošalji novu lozinku';
 $lang['btn_draft']             = 'Uredi nacrt dokumenta';
 $lang['btn_recover']           = 'Vrati prijašnji nacrt dokumenta';
 $lang['btn_draftdel']          = 'Obriši nacrt dokumenta';
+$lang['btn_register']          = 'Registracija';
 $lang['loggedinas']            = 'Prijavljen kao';
 $lang['user']                  = 'Korisničko ime';
 $lang['pass']                  = 'Lozinka';
@@ -57,7 +58,6 @@ $lang['passchk']               = 'Ponoviti';
 $lang['remember']              = 'Zapamti me';
 $lang['fullname']              = 'Ime i prezime';
 $lang['email']                 = 'Email';
-$lang['register']              = 'Registracija';
 $lang['profile']               = 'Korisnički profil';
 $lang['badlogin']              = 'Ne ispravno korisničko ime ili lozinka.';
 $lang['minoredit']             = 'Manje izmjene';
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index b3cd87c29d76d31c33b4309e8d9bff79c9caca9a..fc21d1c8b980dff0c71206e3e74e60dfc00e65b5 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -5,10 +5,8 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Ziegler Gábor <gziegler@freemail.hu>
  * @author Sandor TIHANYI <stihanyi+dw@gmail.com>
- * @author Siaynoq Siaynoq <siaynoqmage@gmail.com>
  * @author Siaynoq Mage <siaynoqmage@gmail.com>
  * @author schilling.janos@gmail.com
- * @author Szabó Dávid (szabo.david@gyumolcstarhely.hu)
  * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu>
  */
 $lang['encoding']              = 'utf-8';
@@ -50,6 +48,7 @@ $lang['btn_draft']             = 'Piszkozat szerkesztése';
 $lang['btn_recover']           = 'Piszkozat folytatása';
 $lang['btn_draftdel']          = 'Piszkozat törlése';
 $lang['btn_revert']            = 'Helyreállítás';
+$lang['btn_register']          = 'Regisztráció';
 $lang['loggedinas']            = 'Belépett felhasználó: ';
 $lang['user']                  = 'Azonosító';
 $lang['pass']                  = 'Jelszó';
@@ -59,7 +58,6 @@ $lang['passchk']               = 'még egyszer';
 $lang['remember']              = 'Emlékezz rám';
 $lang['fullname']              = 'Teljes név';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Regisztráció';
 $lang['profile']               = 'Személyes beállítások';
 $lang['badlogin']              = 'Sajnáljuk, az azonosító, vagy a jelszó nem jó.';
 $lang['minoredit']             = 'Apróbb változások';
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index f684675437a6a51efedd757ee5f3ffeb1a5bdc1c..bdfef88f4635f7b89bcf4bf0451f5883913f4994 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -50,6 +50,7 @@ $lang['btn_draft']             = 'Modificar version provisori';
 $lang['btn_recover']           = 'Recuperar version provisori';
 $lang['btn_draftdel']          = 'Deler version provisori';
 $lang['btn_revert']            = 'Restaurar';
+$lang['btn_register']          = 'Crear conto';
 $lang['loggedinas']            = 'Session aperite como';
 $lang['user']                  = 'Nomine de usator';
 $lang['pass']                  = 'Contrasigno';
@@ -59,7 +60,6 @@ $lang['passchk']               = 'un altere vice';
 $lang['remember']              = 'Memorar me';
 $lang['fullname']              = 'Nomine real';
 $lang['email']                 = 'E-mail';
-$lang['register']              = 'Crear conto';
 $lang['profile']               = 'Profilo de usator';
 $lang['badlogin']              = 'Le nomine de usator o le contrasigno es incorrecte.';
 $lang['minoredit']             = 'Modificationes minor';
diff --git a/inc/lang/id-ni/lang.php b/inc/lang/id-ni/lang.php
index 4e26677e09001139efb3b1090cf4a10e0eb52ff3..9c04f025983e069400efc8b260221c4ce12eb1f0 100644
--- a/inc/lang/id-ni/lang.php
+++ b/inc/lang/id-ni/lang.php
@@ -41,6 +41,7 @@ $lang['btn_reset']             = 'Fawu\'a';
 $lang['btn_resendpwd']         = 'Fa\'ohe\'ö kode sibohou';
 $lang['btn_draft']             = 'Fawu\'a wanura';
 $lang['btn_draftdel']          = 'Heta zura';
+$lang['btn_register']          = 'Fasura\'ö';
 $lang['loggedinas']            = 'Möi bakha zotöi';
 $lang['user']                  = 'Töi';
 $lang['pass']                  = 'Kode';
@@ -50,7 +51,6 @@ $lang['passchk']               = 'Sura sakalitö';
 $lang['remember']              = 'Töngöni ndra\'o';
 $lang['fullname']              = 'Töi safönu';
 $lang['email']                 = 'Imele';
-$lang['register']              = 'Fasura\'ö';
 $lang['profile']               = 'Töi pörofile';
 $lang['badlogin']              = 'Bologö dödöu, fasala döi faoma kode.';
 $lang['minoredit']             = 'Famawu\'a ma\'ifu';
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index 3ea1b394a8fe04e346372c873ab824682fee70cf..c1480f51869521ff02f872f40214ae7d182e6f60 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -45,6 +45,7 @@ $lang['btn_reset']             = 'Reset';
 $lang['btn_resendpwd']         = 'Kirim password baru';
 $lang['btn_draft']             = 'Edit draft';
 $lang['btn_draftdel']          = 'Hapus draft';
+$lang['btn_register']          = 'Daftar';
 $lang['loggedinas']            = 'Login sebagai ';
 $lang['user']                  = 'Username';
 $lang['pass']                  = 'Password';
@@ -54,7 +55,6 @@ $lang['passchk']               = 'sekali lagi';
 $lang['remember']              = 'Ingat saya';
 $lang['fullname']              = 'Nama lengkap';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Daftar';
 $lang['profile']               = 'Profil User';
 $lang['badlogin']              = 'Maaf, username atau password salah.';
 $lang['minoredit']             = 'Perubahan Minor';
diff --git a/inc/lang/is/lang.php b/inc/lang/is/lang.php
index ba1ab2c04268bf87467cac6d24ce3ae87f9533bc..7388e69089e296027de0c26c21465530a5ccc5ba 100644
--- a/inc/lang/is/lang.php
+++ b/inc/lang/is/lang.php
@@ -54,6 +54,7 @@ $lang['btn_draft']             = 'Breyta uppkasti';
 $lang['btn_recover']           = 'Endurheimta uppkast';
 $lang['btn_draftdel']          = 'Eyða uppkasti';
 $lang['btn_revert']            = 'Endurheimta';
+$lang['btn_register']          = 'Skráning';
 $lang['loggedinas']            = 'Innskráning sem';
 $lang['user']                  = 'Notendanafn';
 $lang['pass']                  = 'Aðgangsorð';
@@ -63,7 +64,6 @@ $lang['passchk']               = 'Aðgangsorð (aftur)';
 $lang['remember']              = 'Muna.';
 $lang['fullname']              = 'Fullt nafn þitt*';
 $lang['email']                 = 'Tölvupóstfangið þitt*';
-$lang['register']              = 'Skráning';
 $lang['profile']               = 'Notendastillingar';
 $lang['badlogin']              = 'Því miður, notandanafn eða aðgangsorð var rangur.';
 $lang['minoredit']             = 'Minniháttar breyting';
diff --git a/inc/lang/it/denied.txt b/inc/lang/it/denied.txt
index c6ba610c435d8a3de1d4b9d80a7037cc76758f76..d21956a5bc5e0358e2f00bfea0f54ab2920eec59 100644
--- a/inc/lang/it/denied.txt
+++ b/inc/lang/it/denied.txt
@@ -1,5 +1,5 @@
 ====== Accesso negato ======
 
-Non hai i diritti per continuare. Hai forse dimenticato di effettuare l'accesso?
+Non hai i diritti per continuare. Forse hai dimenticato di effettuare l'accesso?
 
 
diff --git a/inc/lang/it/install.html b/inc/lang/it/install.html
index 471734412be46aeb3825b507756234879fbc59da..3454fbc3e6383ee4e36e93f3150fc8f4fcbf0f88 100644
--- a/inc/lang/it/install.html
+++ b/inc/lang/it/install.html
@@ -1,10 +1,10 @@
-<p>Questa pagina ti assisterà durante la prima installazione e configurazione di
+<p>Questa pagina ti assisterà durante l'installazione e la prima configurazione di
 <a href="http://dokuwiki.org">Dokuwiki</a>. Ulteriori informazioni sulla
 procedura di installazione sono reperibili nella
 <a href="http://dokuwiki.org/installer">pagina di documentazione</a>.</p>
 
-<p>DokuWiki utilizza normali file per la memorizzazione di pagine wiki ed altre
-informazioni associate a tali pagine (es. immagini, indici per la ricerca, vecchie
+<p>DokuWiki utilizza dei normali file per la memorizzazione delle pagine del wiki e 
+delle altre informazioni associate a tali pagine (es. immagini, indici per la ricerca, vecchie
 revisioni, ecc.).  Per poter operare correttamente DokuWiki
 <strong>deve</strong> accedere in scrittura alle directory che contengono tali
 file.  La procedura di installazione non è in grado di impostare i permessi sulle directory. Questo
@@ -19,6 +19,6 @@ Non è necessario per il funzionamento di DokuWiki, ma renderà Dokuwiki più fa
 da amministrare.</p>
 
 <p>Gli utenti esperti o con particolari esigenze di installazione dovrebbero far riferimento ai
-seguenti link per i dettagli riguardanti
+seguenti link per dettagli sulle
 <a href="http://dokuwiki.org/install">istruzioni per l'installazione</a>
-e i <a href="http://dokuwiki.org/config">parametri di configurazione</a>.</p>
+e sui <a href="http://dokuwiki.org/config">parametri di configurazione</a>.</p>
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index 4bfafb060cf1f53bfac2faf89e35ff295e9f2b9b..682f5b8c2f77b795718b7869add882919f1ceeec 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -4,16 +4,15 @@
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Giorgio Vecchiocattivi <giorgio@vecchio.it>
- * @author Roberto Bolli <http://www.rbnet.it/>
+ * @author Roberto Bolli [http://www.rbnet.it/]
  * @author Silvia Sargentoni <polinnia@tin.it>
  * @author Diego Pierotto <ita.translations@tiscali.it>
- * @author Diego Pierotto ita.translations@tiscali.it
- * @author ita.translations@tiscali.it
  * @author Lorenzo Breda <lbreda@gmail.com>
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Matteo Carnevali <rekstorm@gmail.com>
- * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Osman Tekin <osman.tekin93@hotmail.it>
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -44,7 +43,7 @@ $lang['btn_admin']             = 'Amministrazione';
 $lang['btn_update']            = 'Aggiorna';
 $lang['btn_delete']            = 'Elimina';
 $lang['btn_back']              = 'Indietro';
-$lang['btn_backlink']          = 'Backlinks';
+$lang['btn_backlink']          = 'Puntano qui';
 $lang['btn_backtomedia']       = 'Torna alla selezione file';
 $lang['btn_subscribe']         = 'Sottoscrivi modifiche';
 $lang['btn_profile']           = 'Aggiorna profilo';
@@ -54,30 +53,30 @@ $lang['btn_draft']             = 'Modifica bozza';
 $lang['btn_recover']           = 'Ripristina bozza';
 $lang['btn_draftdel']          = 'Elimina bozza';
 $lang['btn_revert']            = 'Ripristina';
+$lang['btn_register']          = 'Registrazione';
 $lang['loggedinas']            = 'Collegato come';
 $lang['user']                  = 'Nome utente';
 $lang['pass']                  = 'Password';
 $lang['newpass']               = 'Nuova password';
 $lang['oldpass']               = 'Conferma password attuale';
 $lang['passchk']               = 'Ripeti password';
-$lang['remember']              = 'Ricorda automaticamente';
+$lang['remember']              = 'Memorizza nome utente e password';
 $lang['fullname']              = 'Nome completo';
 $lang['email']                 = 'Email';
-$lang['register']              = 'Registrazione';
 $lang['profile']               = 'Profilo utente';
 $lang['badlogin']              = 'Il nome utente o la password non sono validi.';
 $lang['minoredit']             = 'Modifiche minori';
 $lang['draftdate']             = 'Bozza salvata in automatico il';
-$lang['nosecedit']             = 'La pagina nel frattempo è cambiata, la sezione info è scaduta, caricata invece la pagina intera.';
+$lang['nosecedit']             = 'La pagina è stata modificata nel frattempo; è impossibile modificare solo la sezione scelta, quindi è stata caricata la pagina intera.';
 $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['regmailfail']           = 'Sembra che ci sia stato un errore nell\'invio della email. Contatta il tuo amministratore!';
-$lang['regbadmail']            = 'L\'indirizzo email fornito sembra essere non valido - se pensi che ci sia un errore contatta il tuo amministratore';
+$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.';
-$lang['regpwmail']             = 'La tua password DokuWiki';
-$lang['reghere']               = 'Non hai ancora un accesso? Registrati qui.';
+$lang['regpwmail']             = 'La tua password per DokuWiki';
+$lang['reghere']               = 'Non sei ancora registrato? Registrati qui.';
 $lang['profna']                = 'Questo wiki non supporta modifiche al profilo';
 $lang['profnochange']          = 'Nessuna modifica, niente da aggiornare.';
 $lang['profnoempty']           = 'Nome o indirizzo email vuoti non sono consentiti.';
@@ -90,9 +89,9 @@ $lang['resendpwdnouser']       = 'Impossibile trovare questo utente nel database
 $lang['resendpwdbadauth']      = 'Spiacenti, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.';
 $lang['resendpwdconfirm']      = 'Un link di conferma è stato spedito via email.';
 $lang['resendpwdsuccess']      = 'La nuova password è stata spedita via email.';
-$lang['license']               = 'Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:';
+$lang['license']               = 'Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza:';
 $lang['licenseok']             = 'Nota: modificando questa pagina accetti di rilasciare il contenuto sotto la seguente licenza:';
-$lang['searchmedia']           = 'Cerca nome file:';
+$lang['searchmedia']           = 'Cerca file di nome:';
 $lang['searchmedia_in']        = 'Cerca in &s';
 $lang['txt_upload']            = 'Seleziona un file da caricare';
 $lang['txt_filename']          = 'Carica come (opzionale)';
@@ -126,7 +125,7 @@ $lang['js']['mediaright']      = 'Allinea l\'immagine a destra.';
 $lang['js']['mediacenter']     = 'Allinea l\'immagine al centro.';
 $lang['js']['medianoalign']    = 'Non allineare.';
 $lang['js']['nosmblinks']      = 'I collegamenti con le risorse condivise di Windows funzionano solo con Microsoft Internet Explorer.
-Puoi fare un copia/incolla di questo collegamento.';
+È comunque possibile copiare e incollare il collegamento.';
 $lang['js']['linkwiz']         = 'Collegamento guidato';
 $lang['js']['linkto']          = 'Collega a:';
 $lang['js']['del_confirm']     = 'Eliminare veramente questa voce?';
@@ -136,12 +135,12 @@ $lang['nothingfound']          = 'Nessun risultato trovato.';
 $lang['mediaselect']           = 'Selezione dei file';
 $lang['fileupload']            = 'File caricato';
 $lang['uploadsucc']            = 'Invio riuscito';
-$lang['uploadfail']            = 'Invio fallito. Contatta l\'amministratore.';
+$lang['uploadfail']            = 'Invio fallito. È possibile che si tratti di un problema di permessi.';
 $lang['uploadwrong']           = 'Invio rifiutato. Questa estensione di file non è ammessa';
-$lang['uploadexist']           = 'Il file esiste già . Invio annullato.';
-$lang['uploadbadcontent']      = 'Il contenuto caricato non corrisponde all\'estensione del file %s.';
-$lang['uploadspam']            = 'Il caricamento è stato bloccato dalla lista nera di spam.';
-$lang['uploadxss']             = 'Il caricamento è stato bloccato perchè il contenuto potrebbe essere malizioso.';
+$lang['uploadexist']           = 'Il file esiste già. Invio annullato.';
+$lang['uploadbadcontent']      = 'Il tipo di contenuto caricato non corrisponde all\'estensione del file %s.';
+$lang['uploadspam']            = 'Il caricamento è stato bloccato come spam perché presente nella lista nera.';
+$lang['uploadxss']             = 'Il caricamento è stato bloccato perchè il contenuto potrebbe essere un virus o presentare problemi di sicurezza.';
 $lang['uploadsize']            = 'Il file caricato è troppo grande. (massimo %s)';
 $lang['deletesucc']            = 'Il file "%s" è stato eliminato.';
 $lang['deletefail']            = '"%s" non può essere eliminato - verifica i permessi.';
@@ -164,7 +163,7 @@ $lang['current']               = 'versione attuale';
 $lang['yours']                 = 'la tua versione';
 $lang['diff']                  = 'differenze con la versione attuale';
 $lang['diff2']                 = 'differenze tra le versioni selezionate';
-$lang['difflink']              = 'Link all visualizzazione della comparazione';
+$lang['difflink']              = 'Link a questa pagina di confronto';
 $lang['line']                  = 'Linea';
 $lang['breadcrumb']            = 'Traccia';
 $lang['youarehere']            = 'Ti trovi qui';
@@ -175,7 +174,7 @@ $lang['created']               = 'creata';
 $lang['restored']              = 'versione precedente ripristinata';
 $lang['external_edit']         = 'modifica esterna';
 $lang['summary']               = 'Oggetto della modifica';
-$lang['noflash']               = 'E\' necessario <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> per visualizzare questo contenuto.';
+$lang['noflash']               = 'E\' necessario <a href="http://www.adobe.com/products/flashplayer/">il plugin Adobe Flash</a> per visualizzare questo contenuto.';
 $lang['download']              = 'Scarica lo "snippet"';
 $lang['mail_newpage']          = 'pagina aggiunta:';
 $lang['mail_changed']          = 'pagina modificata:';
@@ -222,11 +221,11 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Formato';
 $lang['img_camera']            = 'Camera';
 $lang['img_keywords']          = 'Parole chiave';
-$lang['subscr_subscribe_success'] = 'Aggiunto %s alla lista di sottoscrizione %s';
-$lang['subscr_subscribe_error'] = 'Impossibile aggiungere %s alla lista di sottoscrizione %s';
-$lang['subscr_subscribe_noaddress'] = 'Non esiste alcun indirizzo associato al tuo account, non puoi essere aggiunto alla lista di sottoscrizione';
-$lang['subscr_unsubscribe_success'] = 'Rimosso %s dalla lista di sottoscrizione %s';
-$lang['subscr_unsubscribe_error'] = 'Impossibile rimuovere %s dalla lista di sottoscrizione %s';
+$lang['subscr_subscribe_success'] = 'Aggiunto %s alla lista di sottoscrizioni %s';
+$lang['subscr_subscribe_error'] = 'Impossibile aggiungere %s alla lista di sottoscrizioni %s';
+$lang['subscr_subscribe_noaddress'] = 'Non esiste alcun indirizzo associato al tuo account, non puoi essere aggiunto alla lista di sottoscrizioni';
+$lang['subscr_unsubscribe_success'] = 'Rimosso %s dalla lista di sottoscrizioni %s';
+$lang['subscr_unsubscribe_error'] = 'Impossibile rimuovere %s dalla lista di sottoscrizioni %s';
 $lang['subscr_already_subscribed'] = '% è già iscritto a %s';
 $lang['subscr_not_subscribed'] = '% non è iscritto a %s';
 $lang['subscr_m_not_subscribed'] = 'Attualmente non sei iscritto alla pagina o categoria corrente';
@@ -238,34 +237,33 @@ $lang['subscr_m_receive']      = 'Ricevi';
 $lang['subscr_style_every']    = 'email per ogni modifica';
 $lang['subscr_style_digest']   = 'email riassuntiva delle modifiche di ogni pagina';
 $lang['subscr_style_list']     = 'elenco delle pagine modificate dall\'ultima email';
-$lang['authmodfailed']         = 'La configurazione dell\'autenticazione non è corretta. Informa l\'amministratore di questo Wiki.';
-$lang['authtempfail']          = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, informa l\'amministratore di questo Wiki.';
+$lang['authmodfailed']         = 'La configurazione dell\'autenticazione non è corretta. Informa l\'amministratore di questo wiki.';
+$lang['authtempfail']          = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, informa l\'amministratore di questo wiki.';
 $lang['i_chooselang']          = 'Scegli la lingua';
-$lang['i_installer']           = 'Installazione DokuWiki';
+$lang['i_installer']           = 'Installazione di DokuWiki';
 $lang['i_wikiname']            = 'Nome Wiki';
 $lang['i_enableacl']           = 'Abilita ACL (consigliato)';
 $lang['i_superuser']           = 'Amministratore';
 $lang['i_problems']            = 'Si sono verificati problemi durante l\'installazione, indicati di seguito. Non è possibile continuare finché non saranno risolti.';
 $lang['i_modified']            = 'Per motivi di sicurezza questa procedura funziona solamente con un\'installazione Dokuwiki nuova e non modificata.
-Dovresti ri-estrarre i file dal pacchetto scaricato oppure consultare tutte le 
+Prova a estrarre di nuovo i file dal pacchetto scaricato oppure consulta le
 <a href="http://dokuwiki.org/install">istruzioni per l\'installazione di Dokuwiki</a>';
 $lang['i_funcna']              = 'La funzione PHP <code>%s</code> non è disponibile. Forse è stata disabilitata dal tuo provider per qualche motivo?';
 $lang['i_phpver']              = 'La versione di PHP <code>%s</code> è inferiore a quella richiesta <code>%s</code>. Devi aggiornare l\'installazione di PHP.';
 $lang['i_permfail']            = 'DokuWiki non può scrivere <code>%s</code>. E\' necessario correggere i permessi per questa directory!';
 $lang['i_confexists']          = '<code>%s</code> esiste già';
-$lang['i_writeerr']            = 'Impossibile creare <code>%s</code>. E\' necessario verificare i permessi della directory/file e creare il file manualmente.';
+$lang['i_writeerr']            = 'Impossibile creare <code>%s</code>. E\' necessario verificare i permessi della directory o del file oppure creare il file manualmente.';
 $lang['i_badhash']             = 'dokuwiki.php (hash=<code>%s</code>) non riconosciuto o modificato';
 $lang['i_badval']              = '<code>%s</code> - valore vuoto o non valido';
-$lang['i_success']             = 'La configurazione è stata completata correttamente. Ora è possibile eliminare il file install.php. Continuare con
-<a href="doku.php">il nuovo DokuWiki</a>.';
-$lang['i_failure']             = 'Si sono verificati errori durante la scrittura dei file di configurazione. Potrebbe essere necessario correggerli manualmente prima di poter utilizzare <a href="doku.php">il nuovo DokuWiki</a>.';
+$lang['i_success']             = 'La configurazione è stata completata correttamente. Ora è possibile eliminare il file install.php. Poi, visita <a href="doku.php">il tuo nuovo DokuWiki</a>.';
+$lang['i_failure']             = 'Si sono verificati errori durante la scrittura dei file di configurazione. Potrebbe essere necessario correggerli manualmente prima di poter utilizzare <a href="doku.php">il tuo nuovo DokuWiki</a>.';
 $lang['i_policy']              = 'Regole di accesso iniziali';
 $lang['i_pol0']                = 'Wiki Aperto (lettura, scrittura, caricamento file per tutti)';
 $lang['i_pol1']                = 'Wiki Pubblico (lettura per tutti, scrittura e caricamento file per gli utenti registrati)';
 $lang['i_pol2']                = 'Wiki Chiuso (lettura, scrittura, caricamento file solamente per gli utenti registrati)';
 $lang['i_retry']               = 'Riprova';
-$lang['i_license']             = 'Perfavore scegli la licenza in cui vuoi inserire il tuo contenuto:';
-$lang['mu_intro']              = 'Qui si possono caricare più di un file alla volta. Cliccare su "Sfoglia..." per aggiungere i file in coda. Fai click su "Invia file" quando si è pronti.';
+$lang['i_license']             = 'Per favore scegli la licenza sotto cui vuoi rilasciare il contenuto:';
+$lang['mu_intro']              = 'Qui si possono caricare più di un file alla volta. Scegliere "Sfoglia..." per aggiungere file alla coda. Alla fine, fai click su "Invia file".';
 $lang['mu_gridname']           = 'Nome file';
 $lang['mu_gridsize']           = 'Dimensione';
 $lang['mu_gridstat']           = 'Stato';
@@ -280,7 +278,7 @@ $lang['mu_progress']           = '@PCT@% caricato';
 $lang['mu_filetypes']          = 'Tipi di file permessi';
 $lang['mu_info']               = 'file caricati.';
 $lang['mu_lasterr']            = 'Ultimo errore:';
-$lang['recent_global']         = 'Stai attualmente vedendo le modifiche dentro l\'area <b>%s</b>. Puoi anche <a href="%s">vedere le modifiche recenti dell\'intero wiki</a>.';
+$lang['recent_global']         = 'Stai attualmente vedendo le modifiche effettuate nell\'area <b>%s</b>. Puoi anche <a href="%s">vedere le modifiche recenti dell\'intero wiki</a>.';
 $lang['years']                 = '%d anni fa';
 $lang['months']                = '%d mesi fa';
 $lang['weeks']                 = '%d settimane fa';
diff --git a/inc/lang/it/mailtext.txt b/inc/lang/it/mailtext.txt
index a4506e951056f8337b779d5d4f3e1a9c27a92b45..3a326961e2818f7ebf3e34fbc240a076e69e9374 100644
--- a/inc/lang/it/mailtext.txt
+++ b/inc/lang/it/mailtext.txt
@@ -1,16 +1,17 @@
 Una pagina su DokuWiki è stata aggiunta o modificata. Questi sono i dettagli:
 
-Data                   : @DATE@
-Browser                : @BROWSER@
-Indirizzo IP           : @IPADDRESS@
-Nome host              : @HOSTNAME@
-Vecchia revisione      : @OLDPAGE@
-Nuova revisione        : @NEWPAGE@
+Data : @DATE@
+Browser : @BROWSER@
+Indirizzo IP : @IPADDRESS@
+Nome host : @HOSTNAME@
+Vecchia revisione : @OLDPAGE@
+Nuova revisione : @NEWPAGE@
 Oggetto della modifica : @SUMMARY@
+Utente : @USER@
 
 @DIFF@
 
 
 -- 
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
diff --git a/inc/lang/it/password.txt b/inc/lang/it/password.txt
index d57c78913c473c62990f0c87e90c9e91f38ebd56..670d5ae442918a3517afe990bae4da35840e5e7e 100644
--- a/inc/lang/it/password.txt
+++ b/inc/lang/it/password.txt
@@ -6,5 +6,5 @@ Nome utente : @LOGIN@
 Password    : @PASSWORD@
 
 -- 
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
diff --git a/inc/lang/it/pwconfirm.txt b/inc/lang/it/pwconfirm.txt
index dfcd8a34621e0efba6804aa69ce0922b71534615..8a594ded82d27ed7ea89234ee5e03075a4044cfc 100644
--- a/inc/lang/it/pwconfirm.txt
+++ b/inc/lang/it/pwconfirm.txt
@@ -11,5 +11,5 @@ seguente collegamento.
 @CONFIRM@
 
 -- 
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
diff --git a/inc/lang/it/register.txt b/inc/lang/it/register.txt
index 74f57094d514bf06c734c650171dc66d32d62c53..5a336a97197e7ec1093a7672e6038065a9b7558a 100644
--- a/inc/lang/it/register.txt
+++ b/inc/lang/it/register.txt
@@ -1,4 +1,3 @@
 ====== Registrazione nuovo utente ======
 
-Riempi tutte le informazioni seguenti per creare un nuovo account in questo wiki.  Assicurati di inserire un **indirizzo email valido** - la tua nuova password ti sarà inviata con un messaggio di posta elettronica. L'account dovrebbe essere un [[doku>pagename|nome di pagina]] valido.
-
+Riempi tutte le informazioni seguenti per creare un nuovo account in questo wiki.  Assicurati di inserire un **indirizzo email valido** - a meno che tu non l'abbia già inserita qui, la password ti sarà inviata con un messaggio di posta elettronica. Il nome utente deve soddisfare i criteri per i [[doku>pagename|nomi delle pagine]].
\ No newline at end of file
diff --git a/inc/lang/it/registermail.txt b/inc/lang/it/registermail.txt
index e8af0d32325881a7445d7863bb665544b3b96859..30a6fed4847186f73ef3992ef760e2e722bc487f 100644
--- a/inc/lang/it/registermail.txt
+++ b/inc/lang/it/registermail.txt
@@ -4,11 +4,11 @@ Nome utente   : @NEWUSER@
 Nome completo : @NEWNAME@
 EMail        : @NEWEMAIL@
 
-Data          : @DATE@
-Browser       : @BROWSER@
-Indirizzo IP  : @IPADDRESS@
-Nome macchina : @HOSTNAME@
+Data : @DATE@
+Browser : @BROWSER@
+Indirizzo IP : @IPADDRESS@
+Nome host : @HOSTNAME@
 
 -- 
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
diff --git a/inc/lang/it/resendpwd.txt b/inc/lang/it/resendpwd.txt
index fc3f09414ea0654317981219afb30dff15cb243d..54604d7f3ae92511187569dcd060d1e2fa97842b 100644
--- a/inc/lang/it/resendpwd.txt
+++ b/inc/lang/it/resendpwd.txt
@@ -1,3 +1,3 @@
 ====== Invia nuova password ======
 
-Riempi tutte le informazioni seguenti per ottenere una nuova password per il tuo account su questo wiki. La nuova password sarà inviata al tuo indirizzo di posta elettronica registrato. Il nome utente deve essere il tuo nome utente di questo wiki.
+Inserisci tutte le informazioni per ottenere una nuova password per il tuo account su questo wiki. La nuova password sarà inviata al tuo indirizzo di posta elettronica registrato. Il nome utente deve essere il tuo nome utente in questo wiki.
diff --git a/inc/lang/it/subscr_digest.txt b/inc/lang/it/subscr_digest.txt
index 8656f8536a13cb374c9cc0de978f7da73175fec3..a191287020ed1907aa430aaff9f3381a87ff5314 100644
--- a/inc/lang/it/subscr_digest.txt
+++ b/inc/lang/it/subscr_digest.txt
@@ -10,11 +10,11 @@ Queste sono le modifiche:
 Vecchia revisione: @OLDPAGE@
 Nuova revisione: @NEWPAGE@
 
-Per annullare la pagina delle notifiche collegati al 
+Per non ricevere più queste notifiche collegati al 
 wiki @DOKUWIKIURL@ e poi visita @SUBSCRIBE@
 e rimuovi la sottoscrizione alle modifiche delle 
 pagine e/o categorie.
 
 --
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/it/subscr_list.txt b/inc/lang/it/subscr_list.txt
index e42f7d1ad1a3f236b46c25b2fbd1463ee4f74c3a..8eb7acd3ca3d395febf2c3262189878cd9ec3c9d 100644
--- a/inc/lang/it/subscr_list.txt
+++ b/inc/lang/it/subscr_list.txt
@@ -8,11 +8,11 @@ Queste sono le pagine modificate:
 @DIFF@
 --------------------------------------------------------
 
-Per annullare la pagina delle notifiche collegati al 
+Per non ricevere più queste notifiche collegati al 
 wiki @DOKUWIKIURL@ e poi visita @SUBSCRIBE@
 e rimuovi la sottoscrizione alle modifiche delle 
 pagine e/o categorie.
 
 --
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/it/subscr_single.txt b/inc/lang/it/subscr_single.txt
index 2c4d5cbb847280ee324adb1bc0e683517847f4df..8cde8ea0fc7b4f8a8187497ce0c8b0c4b94bc216 100644
--- a/inc/lang/it/subscr_single.txt
+++ b/inc/lang/it/subscr_single.txt
@@ -13,11 +13,12 @@ Sommario modifica: @SUMMARY@
 Vecchia revisione: @OLDPAGE@
 Nuova revisione: @NEWPAGE@
 
-Per annullare la pagina delle notifiche collegati al 
-wiki @DOKUWIKIURL@ e poi visita @SUBSCRIBE@
-e rimuovi la sottoscrizione alle modifiche delle 
-pagine e/o categorie.
+Per non ricevere più queste notifiche, collegati al 
+wiki all'indirizzo @DOKUWIKIURL@ e poi visita
+@NEWPAGE@
+e rimuovi la sottoscrizione alle modifiche della 
+pagina o categoria.
 
 --
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/it/uploadmail.txt b/inc/lang/it/uploadmail.txt
index d8d17a378c0fc2ca6707bccbcd57570bad6b042c..da3dacd362d006391ed87b2b477761785164188e 100644
--- a/inc/lang/it/uploadmail.txt
+++ b/inc/lang/it/uploadmail.txt
@@ -10,5 +10,5 @@ Tipo MIME : @MIME@
 Utente : @USER@
 
 -- 
-Questa email è stata generata dal DokuWiki di
+Questa email è stata generata dal DokuWiki all'indirizzo
 @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index d9c02764a0754700bf635894891a4ae5fecccbe8..d503bae316a01f5a1f3ed13612043748ac9520bc 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -47,6 +47,7 @@ $lang['btn_draft']             = 'ドラフトを編集';
 $lang['btn_recover']           = 'ドラフトを復元';
 $lang['btn_draftdel']          = 'ドラフトを削除';
 $lang['btn_revert']            = '元に戻す';
+$lang['btn_register']          = 'ユーザー登録';
 $lang['loggedinas']            = 'ようこそ';
 $lang['user']                  = 'ユーザー名';
 $lang['pass']                  = 'パスワード';
@@ -56,7 +57,6 @@ $lang['passchk']               = '確認';
 $lang['remember']              = 'ユーザー名とパスワードを記憶する';
 $lang['fullname']              = 'フルネーム';
 $lang['email']                 = 'メールアドレス';
-$lang['register']              = 'ユーザー登録';
 $lang['profile']               = 'ユーザー情報';
 $lang['badlogin']              = 'ユーザー名かパスワードが違います。';
 $lang['minoredit']             = '小変更';
diff --git a/inc/lang/km/lang.php b/inc/lang/km/lang.php
index 3519a484ef7ad8f943ec05e0187194f01ec8c213..90cad3133c61b979f8c4c2513249e30add51f85f 100644
--- a/inc/lang/km/lang.php
+++ b/inc/lang/km/lang.php
@@ -1,9 +1,6 @@
 <?php
 /**
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author     Andreas Gohr <andi@splitbrain.org>
- * @author     Anika Henke <henke@cosmocode.de>
- * @author     Matthias Grimm <matthiasgrimm@users.sourceforge.net>
  * @author     Ratana Lim <aerorat@yahoo.com>
  */
 $lang['encoding']   = 'utf-8';
@@ -46,6 +43,7 @@ $lang['btn_resendpwd']   = 'ផ្ញើពាក្សសម្ងាត់';
 $lang['btn_draft']    = 'កែគំរោង';
 $lang['btn_recover']  = 'ស្រោះគំរោងឡើង';
 $lang['btn_draftdel'] = 'លុបគំរោង';
+$lang['btn_register'] = 'ចុះឈ្មោះ';//'Register';
 
 $lang['loggedinas'] = 'អ្នកប្រើ';
 $lang['user']       = 'នាមបម្រើ';
@@ -56,7 +54,6 @@ $lang['passchk']    = 'ម្ដងទាត';
 $lang['remember']   = 'ចំណាំខ្ញុំ';
 $lang['fullname']   = 'នាមត្រគោល';
 $lang['email']      = 'អ៊ីមែល';
-$lang['register']   = 'ចុះឈ្មោះ';//'Register';
 $lang['profile']    = 'ប្រវត្តិរូប';// 'User Profile';
 $lang['badlogin']   = 'សុំអាទោស​ នាមបំរើ ឬ ពាក្សសម្ងាតមិនត្រវទេ។';
 $lang['minoredit']  = 'កែបបណ្តិចបណ្តួច';// 'Minor Changes';
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index 3765dd0114b912faa9e010d61c428e9f068c3992..0b45c6ce08fd511ddcbd392eb9bc7345c57f3361 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -7,7 +7,6 @@
  * @author jk Lee
  * @author dongnak@gmail.com
  * @author Song Younghwan <purluno@gmail.com>
- * @author SONG Younghwan <purluno@gmail.com>
  * @author Seung-Chul Yoo  <dryoo@live.com>
  */
 $lang['encoding']              = 'utf-8';
@@ -49,6 +48,7 @@ $lang['btn_draft']             = '문서초안 편집';
 $lang['btn_recover']           = '문서초안 복구';
 $lang['btn_draftdel']          = '문서초안 삭제';
 $lang['btn_revert']            = '복원';
+$lang['btn_register']          = '등록';
 $lang['loggedinas']            = '다음 사용자로 로그인';
 $lang['user']                  = '사용자';
 $lang['pass']                  = '패스워드';
@@ -58,7 +58,6 @@ $lang['passchk']               = '패스워드 다시 확인';
 $lang['remember']              = '기억하기';
 $lang['fullname']              = '실제 이름';
 $lang['email']                 = '이메일';
-$lang['register']              = '등록';
 $lang['profile']               = '개인 정보';
 $lang['badlogin']              = '잘못된 사용자 이름이거나 패스워드입니다.';
 $lang['minoredit']             = '일부 내용 변경';
diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php
index 0ff2ca4ca675f14f2e2cb65a84d2dd9132caac18..9bed43cd101d06e5400bf4c98f44bcf5765137d6 100644
--- a/inc/lang/ku/lang.php
+++ b/inc/lang/ku/lang.php
@@ -34,6 +34,7 @@ $lang['btn_backlink']    = "Girêdanên paş";
 $lang['btn_backtomedia'] = 'Back to Mediafile Selection';
 $lang['btn_subscribe']   = 'Subscribe Changes';
 $lang['btn_unsubscribe'] = 'Unsubscribe Changes';
+$lang['btn_register'] = 'Register';
 
 $lang['loggedinas'] = 'Logged in as';
 $lang['user']       = 'Username';
@@ -42,7 +43,6 @@ $lang['passchk']    = 'once again';
 $lang['remember']   = 'Remember me';
 $lang['fullname']   = 'Full name';
 $lang['email']      = 'E-Mail';
-$lang['register']   = 'Register';
 $lang['badlogin']   = 'Sorry, username or password was wrong.';
 
 $lang['regmissing'] = 'Sorry, you must fill in all fields.';
diff --git a/inc/lang/la/lang.php b/inc/lang/la/lang.php
index ec80ac4d1ef0aed8eaf73f08363cf9eeab5e0cf8..d10c094f8dc9d642081ca794ab2ecc73b4822d08 100644
--- a/inc/lang/la/lang.php
+++ b/inc/lang/la/lang.php
@@ -49,6 +49,7 @@ $lang['btn_draft']             = 'Propositum recensere';
 $lang['btn_recover']           = 'Propositum reficere';
 $lang['btn_draftdel']          = 'Propositum delere';
 $lang['btn_revert']            = 'Reficere';
+$lang['btn_register']          = 'Te adscribere';
 $lang['loggedinas']            = 'Nomen sodalis:';
 $lang['user']                  = 'Nomen sodalis:';
 $lang['pass']                  = 'Tessera tua';
@@ -58,7 +59,6 @@ $lang['passchk']               = 'Tesseram tuam adfirmare';
 $lang['remember']              = 'Tesseram meam sodalitatis memento';
 $lang['fullname']              = 'Nomen tuom uerum:';
 $lang['email']                 = 'Cursus interretialis:';
-$lang['register']              = 'Te adscribere';
 $lang['profile']               = 'Tabella Sodalis';
 $lang['badlogin']              = 'Error in ineundo est, rectum nomen uel tessera cedo.';
 $lang['minoredit']             = 'Recensio minor';
diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php
index 7152b65b177daf58c04f593e330ee8c48f60ac56..09fc41f0897d32e6f4843a6392881e30942875c9 100644
--- a/inc/lang/lb/lang.php
+++ b/inc/lang/lb/lang.php
@@ -41,6 +41,7 @@ $lang['btn_resendpwd']         = 'Nei Passwuert schécken';
 $lang['btn_draft']             = 'Entworf änneren';
 $lang['btn_recover']           = 'Entworf zeréckhuelen';
 $lang['btn_draftdel']          = 'Entworf läschen';
+$lang['btn_register']          = 'Registréieren';
 $lang['loggedinas']            = 'Ageloggt als';
 $lang['user']                  = 'Benotzernumm';
 $lang['pass']                  = 'Passwuert';
@@ -50,7 +51,6 @@ $lang['passchk']               = 'nach eng Kéier';
 $lang['remember']              = 'Verhal mech';
 $lang['fullname']              = 'Richtegen Numm';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Registréieren';
 $lang['profile']               = 'Benotzerprofil';
 $lang['badlogin']              = 'Entschëllegt, de Benotzernumm oder d\'Passwuert war falsch';
 $lang['minoredit']             = 'Kleng Ännerungen';
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index 639ad474965f6d6857e50ebb918f6972a5ec1575..6ae5f6c7309ad33b2b8300d91832ccf46cc8da73 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -7,7 +7,6 @@
  * @author Edmondas Girkantas <eg@zemaitija.net>
  * @author Arūnas Vaitekūnas <aras@fan.lt>
  * @author audrius.klevas@gmail.com
- * @author Arunas Vaitekunas <aras@fan.lt>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -50,6 +49,7 @@ $lang['btn_resendpwd']         = 'Išsiųsti naują slaptažodį';
 $lang['btn_draft']             = 'Redaguoti juodraštį';
 $lang['btn_recover']           = 'Atkurti juodraštį';
 $lang['btn_draftdel']          = 'Šalinti juodraštį';
+$lang['btn_register']          = 'Registruotis';
 $lang['loggedinas']            = 'Prisijungęs kaip';
 $lang['user']                  = 'Vartotojo vardas';
 $lang['pass']                  = 'Slaptažodis';
@@ -59,7 +59,6 @@ $lang['passchk']               = 'dar kartÄ…';
 $lang['remember']              = 'Prisiminti mane';
 $lang['fullname']              = 'Visas vardas';
 $lang['email']                 = 'El. pašto adresas';
-$lang['register']              = 'Registruotis';
 $lang['profile']               = 'Vartotojo profilis';
 $lang['badlogin']              = 'Nurodėte blogą vartotojo vardą arba slaptažodį.';
 $lang['minoredit']             = 'Nedidelis pataisymas';
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 21c4606b3bdb82f43b3a8a5efc11ac0a1839f315..73559c0f8174a2c5c1d68499ba28f2731a3d28cc 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -44,6 +44,7 @@ $lang['btn_draft']             = 'Labot melnrakstu';
 $lang['btn_recover']           = 'Atjaunot melnrakstu';
 $lang['btn_draftdel']          = 'Dzēst melnrakstu';
 $lang['btn_revert']            = 'Atjaunot';
+$lang['btn_register']          = 'Reģistrēties';
 $lang['loggedinas']            = 'Pieteicies kā';
 $lang['user']                  = 'Lietotājvārds';
 $lang['pass']                  = 'Parole';
@@ -53,7 +54,6 @@ $lang['passchk']               = 'vēlreiz';
 $lang['remember']              = 'Atceries mani';
 $lang['fullname']              = 'Pilns vārds';
 $lang['email']                 = 'E-pasts';
-$lang['register']              = 'Reģistrēties';
 $lang['profile']               = 'Lietotāja vārds';
 $lang['badlogin']              = 'Atvaino, lietotājvārds vai parole aplama.';
 $lang['minoredit']             = 'Sīki labojumi';
diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php
index 3727cfe9af9f7edee39fb59c7f96e1b7197272f3..8c95a9e02517115ca73d9d2fd1cd16f9f25f023d 100644
--- a/inc/lang/mg/lang.php
+++ b/inc/lang/mg/lang.php
@@ -28,6 +28,7 @@ $lang['btn_update'] = 'Update';
 $lang['btn_delete'] = 'Fafao';
 $lang['btn_back']   = 'Miverina';
 $lang['btn_backtomedia'] = 'Fitsongana fichier Media';
+$lang['btn_register'] = 'Hisoratra';
 
 $lang['loggedinas'] = 'Anaranao:';
 $lang['user']       = 'Anarana';
@@ -36,7 +37,6 @@ $lang['passchk']    = 'Ataovy indray';
 $lang['remember']   = 'Tsarovy';
 $lang['fullname']   = 'Anarana feno';
 $lang['email']      = 'Imailaka';
-$lang['register']   = 'Hisoratra';
 $lang['badlogin']   = 'Miala tsiny fa misy diso ny anarana na ny alahidy.';
 
 $lang['regmissing'] = 'Tsy maintsy fenoina ny saha rehetra.';
diff --git a/inc/lang/mk/lang.php b/inc/lang/mk/lang.php
index ddd734e229e61361238e033ce46679e96f2fe956..456a5a3d49c82ea619a61dd174e0404251f3dc8e 100644
--- a/inc/lang/mk/lang.php
+++ b/inc/lang/mk/lang.php
@@ -47,6 +47,7 @@ $lang['btn_draft']             = 'Уреди скица';
 $lang['btn_recover']           = 'Поврати скица';
 $lang['btn_draftdel']          = 'Избриши скица';
 $lang['btn_revert']            = 'Обнови';
+$lang['btn_register']          = 'Регистрирај се';
 $lang['loggedinas']            = 'Најавен/а како';
 $lang['user']                  = 'Корисничко име';
 $lang['pass']                  = 'Лозинка';
@@ -56,7 +57,6 @@ $lang['passchk']               = 'уште еднаш';
 $lang['remember']              = 'Запомни ме';
 $lang['fullname']              = 'Вистинско име';
 $lang['email']                 = 'Е-пошта';
-$lang['register']              = 'Регистрирај се';
 $lang['profile']               = 'Кориснички профил';
 $lang['badlogin']              = 'Жалам, корисничкото име или лозинката се погрешни.';
 $lang['minoredit']             = 'Мали измени';
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index 99561f064119b04c9323f3754846be0f5b5c60a0..d991d46cf930f89a27bb82a6b343a6d8055aac5b 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -10,7 +10,6 @@
  * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesMr.php?view=co
  * @author ghatothkach@hotmail.com
  * @author Padmanabh Kulkarni <kulkarnipadmanabh@gmail.com>
- * @author Padmanabh Kulkarni<kulkarnipadmanabh@gmail.com>
  * @author shantanoo@gmail.com
  */
 $lang['encoding']              = 'utf-8';
@@ -54,6 +53,7 @@ $lang['btn_resendpwd']         = 'कृपया परवलीचा नव
 $lang['btn_draft']             = 'प्रत संपादन';
 $lang['btn_recover']           = 'प्रत परत मिळवा';
 $lang['btn_draftdel']          = 'प्रत रद्द';
+$lang['btn_register']          = 'नोंदणी';
 $lang['loggedinas']            = 'लॉगिन नाव';
 $lang['user']                  = 'वापरकर्ता';
 $lang['pass']                  = 'परवलीचा शब्द';
@@ -63,7 +63,6 @@ $lang['passchk']               = 'परत एकदा';
 $lang['remember']              = 'लक्षात ठेवा';
 $lang['fullname']              = 'पूर्ण नावं';
 $lang['email']                 = 'इमेल';
-$lang['register']              = 'नोंदणी';
 $lang['profile']               = 'वापरकर्त्याची माहिती';
 $lang['badlogin']              = 'माफ़ करा, वापरकर्ता नावात किंवा परवलीच्या शब्दात चूक झाली आहे.';
 $lang['minoredit']             = 'छोटे बदल';
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index 6c00610ea2d5e67e85f9c233357f499e96a3b4f1..e5b30ceafd45c75c1c3f6d6fe9a181e65998c2b2 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -3,8 +3,7 @@
  * Nepali language file
  *
  * @author Saroj Kumar Dhakal <lotusnagarkot@gmail.com>
- * @author SarojKumar Dhakal <lotusnagarkot@yahoo.com>
- * @author Saroj Dhakal<lotusnagarkot@yahoo.com>
+ * @author Saroj Kumar Dhakal <lotusnagarkot@yahoo.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -47,6 +46,7 @@ $lang['btn_resendpwd']         = 'नयाँ प्रवेश शव्द(
 $lang['btn_draft']             = ' ड्राफ्ट सम्पादन गर्नुहोस् ';
 $lang['btn_recover']           = 'पहिलेको ड्राफ्ट हासिल गर्नुहोस ';
 $lang['btn_draftdel']          = ' ड्राफ्ट मेटाउनुहोस् ';
+$lang['btn_register']          = 'दर्ता  गर्नुहोस्';
 $lang['loggedinas']            = 'प्रवेश गर्नुहोस् ';
 $lang['user']                  = 'प्रयोगकर्ता ';
 $lang['pass']                  = 'प्रवेशशव्द';
@@ -56,7 +56,6 @@ $lang['passchk']               = 'एकपटक पुन:';
 $lang['remember']              = 'मलाई सम्झनु';
 $lang['fullname']              = 'पूरा नाम';
 $lang['email']                 = 'इमेल';
-$lang['register']              = 'दर्ता  गर्नुहोस्';
 $lang['profile']               = 'प्रयोगकर्ताको प्रोफाइल';
 $lang['badlogin']              = 'माफ गर्नुहोस् , प्रयोगकर्तानाम वा प्रवेशशव्द गलत भयो  ';
 $lang['minoredit']             = 'सामान्य परिवर्तन';
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index 9d81d0ff4c24de9895db6c0eb4ff39d83d6066d5..7dbde5ac83ae7e116a4161a3589a4884d18fedf3 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -11,8 +11,7 @@
  * @author John de Graaff <john@de-graaff.net>
  * @author Dion Nicolaas <dion@nicolaas.net>
  * @author Danny Rotsaert <danny.rotsaert@edpnet.be>
- * @author Marijn Hofstra hofstra.m@gmail.com
- * @author Matthias Carchon webmaster@c-mattic.be
+ * @author Matthias Carchon <webmaster@c-mattic.be>
  * @author Marijn Hofstra <hofstra.m@gmail.com>
  * @author Timon Van Overveldt <timonvo@gmail.com>
  */
@@ -55,6 +54,7 @@ $lang['btn_draft']             = 'Bewerk concept';
 $lang['btn_recover']           = 'Herstel concept';
 $lang['btn_draftdel']          = 'Verwijder concept';
 $lang['btn_revert']            = 'Herstellen';
+$lang['btn_register']          = 'Registreren';
 $lang['loggedinas']            = 'Ingelogd als';
 $lang['user']                  = 'Gebruikersnaam';
 $lang['pass']                  = 'Wachtwoord';
@@ -64,7 +64,6 @@ $lang['passchk']               = 'nogmaals';
 $lang['remember']              = 'Bewaar';
 $lang['fullname']              = 'Volledige naam';
 $lang['email']                 = 'E-mail';
-$lang['register']              = 'Registreren';
 $lang['profile']               = 'Gebruikersprofiel';
 $lang['badlogin']              = 'Sorry, gebruikersnaam of wachtwoord onjuist';
 $lang['minoredit']             = 'Kleine wijziging';
@@ -167,6 +166,9 @@ $lang['yours']                 = 'Jouw versie';
 $lang['diff']                  = 'Toon verschillen met huidige revisie';
 $lang['diff2']                 = 'Toon verschillen tussen geselecteerde revisies';
 $lang['difflink']              = 'Link naar deze vergelijking';
+$lang['diff_type']             = 'Bekijk verschillen:';
+$lang['diff_inline']           = 'Inline';
+$lang['diff_side']             = 'Zij aan zij';
 $lang['line']                  = 'Regel';
 $lang['breadcrumb']            = 'Spoor';
 $lang['youarehere']            = 'Je bent hier';
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index ca63c0094e0fbaae7ee725cbbd7b63c7260a18ab..d2be945e6ae440b71a829b0ecd4138a4ad6dd141 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -5,17 +5,16 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Reidar Mosvold <Reidar.Mosvold@hit.no>
  * @author Jorge Barrera Grandon <jorge@digitalwolves.org>
- * @author Rune Rasmussen http://www.syntaxerror.no/
+ * @author Rune Rasmussen [http://www.syntaxerror.no/]
  * @author Thomas Nygreen <nygreen@gmail.com>
  * @author Arild Burud <arildb@met.no>
  * @author Torkill Bruland <torkar-b@online.no>
  * @author Rune M. Andersen <rune.andersen@gmail.com>
- * @author Jakob Vad Nielsen (me@jakobnielsen.net)
+ * @author Jakob Vad Nielsen <me@jakobnielsen.net>
  * @author Kjell Tore Næsgaard  <kjell.t.nasgaard@ntnu.no>
  * @author Knut Staring <knutst@gmail.com>
  * @author Lisa Ditlefsen <lisa@vervesearch.com>
  * @author Erik Pedersen <erik.pedersen@shaw.ca>
- * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -59,6 +58,7 @@ $lang['btn_draft']             = 'Rediger kladd';
 $lang['btn_recover']           = 'Gjennvinn kladd';
 $lang['btn_draftdel']          = 'Slett kladd';
 $lang['btn_revert']            = 'Gjenopprette';
+$lang['btn_register']          = 'Registrer deg';
 $lang['loggedinas']            = 'Innlogget som';
 $lang['user']                  = 'Brukernavn';
 $lang['pass']                  = 'Passord';
@@ -68,7 +68,6 @@ $lang['passchk']               = 'Bekreft passord';
 $lang['remember']              = 'Husk meg';
 $lang['fullname']              = 'Fullt navn';
 $lang['email']                 = 'E-post';
-$lang['register']              = 'Registrer deg';
 $lang['profile']               = 'Brukerprofil';
 $lang['badlogin']              = 'Ugyldig brukernavn og/eller passord.';
 $lang['minoredit']             = 'Mindre endringer';
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index 5a366fbb57ab802a3c9493999bd06b67560aeee5..bc0509df31921e16fcbe96502751be1c8945efca 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -51,6 +51,7 @@ $lang['btn_draft']             = 'Edytuj szkic';
 $lang['btn_recover']           = 'Przywróć szkic';
 $lang['btn_draftdel']          = 'Usuń szkic';
 $lang['btn_revert']            = 'Przywróć';
+$lang['btn_register']          = 'Zarejestruj siÄ™!';
 $lang['loggedinas']            = 'Zalogowany jako';
 $lang['user']                  = 'Użytkownik';
 $lang['pass']                  = 'Hasło';
@@ -60,7 +61,6 @@ $lang['passchk']               = 'Powtórz hasło';
 $lang['remember']              = 'Zapamiętaj';
 $lang['fullname']              = 'ImiÄ™ i nazwisko';
 $lang['email']                 = 'E-mail';
-$lang['register']              = 'Zarejestruj siÄ™!';
 $lang['profile']               = 'Profil użytkownika';
 $lang['badlogin']              = 'Nazwa użytkownika lub hasło są nieprawidłowe.';
 $lang['minoredit']             = 'Mniejsze zmiany';
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index fb05361f0a11874bac0cdf34488cff76f1ac3ad0..e3568b56bcfb8971297e4dc8e6383eee2f6302d8 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -13,10 +13,9 @@
  * @author Jeferson Propheta <jeferson.propheta@gmail.com>
  * @author jair.henrique@gmail.com
  * @author Luis Dantas <luis@dantas.com>
- * @author Frederico Guimarães <frederico@teia.bio.br>
- * @author Jair Henrique <jair.henrique@gmail.com>
  * @author Luis Dantas <luisdantas@gmail.com>
- * @author Sergio Motta sergio@cisne.com.br
+ * @author Jair Henrique <jair.henrique@gmail.com>
+ * @author Sergio Motta <sergio@cisne.com.br>
  * @author Isaias Masiero Filho <masiero@masiero.org>
  */
 $lang['encoding']              = 'utf-8';
@@ -58,6 +57,7 @@ $lang['btn_draft']             = 'Editar o rascunho';
 $lang['btn_recover']           = 'Recuperar o rascunho';
 $lang['btn_draftdel']          = 'Excluir o rascunho';
 $lang['btn_revert']            = 'Restaure';
+$lang['btn_register']          = 'Registrar';
 $lang['loggedinas']            = 'Autenticado(a) como';
 $lang['user']                  = 'Nome de usuário';
 $lang['pass']                  = 'Senha';
@@ -67,7 +67,6 @@ $lang['passchk']               = 'mais uma vez';
 $lang['remember']              = 'Lembre-se de mim';
 $lang['fullname']              = 'Nome completo';
 $lang['email']                 = 'E-mail';
-$lang['register']              = 'Registrar';
 $lang['profile']               = 'Perfil do usuário';
 $lang['badlogin']              = 'Desculpe, mas o nome de usuário ou a senha estão incorretos.';
 $lang['minoredit']             = 'Alterações mínimas';
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index 4c0ec02d22fb0019d0719a94e9da4b2f590bb0db..976077d4030846c1638f9c5103dc74737bfd973c 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -48,6 +48,7 @@ $lang['btn_draft']             = 'Editar rascunho';
 $lang['btn_recover']           = 'Recuperar rascunho';
 $lang['btn_draftdel']          = 'Apagar rascunho';
 $lang['btn_revert']            = 'Restaurar';
+$lang['btn_register']          = 'Registar';
 $lang['loggedinas']            = 'Está em sessão como';
 $lang['user']                  = 'Utilizador';
 $lang['pass']                  = 'Senha';
@@ -57,7 +58,6 @@ $lang['passchk']               = 'Confirmar novamente';
 $lang['remember']              = 'Memorizar?';
 $lang['fullname']              = 'Nome completo';
 $lang['email']                 = 'Email';
-$lang['register']              = 'Registar';
 $lang['profile']               = 'Perfil do Utilizador';
 $lang['badlogin']              = 'O utilizador inválido ou senha inválida.';
 $lang['minoredit']             = 'Alterações Menores';
@@ -160,6 +160,8 @@ $lang['yours']                 = 'A sua versão';
 $lang['diff']                  = 'mostrar diferenças com a versão actual';
 $lang['diff2']                 = 'mostrar diferenças entre versões escolhidas';
 $lang['difflink']              = 'Ligação para esta vista de comparação';
+$lang['diff_type']             = 'Ver diferenças';
+$lang['diff_side']             = 'Lado a lado';
 $lang['line']                  = 'Linha';
 $lang['breadcrumb']            = 'Está em';
 $lang['youarehere']            = 'Está aqui';
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index d21249d911acbf0b5ca65b992ab424bf8f66a740..f4a2210f01e2a201749e28737e380d9acbf509ba 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -5,11 +5,8 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Tiberiu Micu <tibimicu@gmx.net>
  * @author Sergiu Baltariu <s_baltariu@yahoo.com>
- * @author s_baltariu@yahoo.com
- * @author Emanuel-Emeric Andrasi <n30@mandrivausers.ro>
  * @author Emanuel-Emeric Andrași <n30@mandrivausers.ro>
  * @author Emanuel-Emeric AndraÅŸi <em.andrasi@mandrivausers.ro>
- * @author Emanuel-Emeric Andrasi <em.andrasi@mandrivausers.ro>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -50,6 +47,7 @@ $lang['btn_draft']             = 'Editează schiţă';
 $lang['btn_recover']           = 'Recuperează schiţă';
 $lang['btn_draftdel']          = 'Şterge schiţă';
 $lang['btn_revert']            = 'Revenire';
+$lang['btn_register']          = 'Înregistrează';
 $lang['loggedinas']            = 'Logat ca ÅŸi';
 $lang['user']                  = 'Utilizator';
 $lang['pass']                  = 'Parola';
@@ -59,7 +57,6 @@ $lang['passchk']               = 'încă o dată';
 $lang['remember']              = 'Ţine-mă minte';
 $lang['fullname']              = 'Nume complet';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Înregistrează';
 $lang['profile']               = 'Profil Utilizator';
 $lang['badlogin']              = 'Imi pare rău, utilizatorul şi/sau parola au fost greşite.';
 $lang['minoredit']             = 'Modificare Minoră';
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index 2968d72bd4a18213ffa3ab621ab6b230b193026f..1eaa488ec9ef0a5947db1dcc6aa7f1fda75f6da4 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -8,15 +8,17 @@
  * @author Denis Simakov <akinoame1@gmail.com>
  * @author Kaens Bard <kaens@mail.ru>
  * @author Andrew Pleshakov <beotiger@mail.ru>
- * @author Змей Этерийский evil_snake@eternion.ru
+ * @author Змей Этерийский <evil_snake@eternion.ru>
  * @author Hikaru Nakajima <jisatsu@mail.ru>
  * @author Alexei Tereschenko <alexeitlex@yahoo.com>
- * @author Irina Ponomareva irinaponomareva@webperfectionist.com
+ * @author Irina Ponomareva <irinaponomareva@webperfectionist.com>
  * @author Alexander Sorkin <kibizoid@gmail.com>
  * @author Kirill Krasnov <krasnovforum@gmail.com>
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['encoding']              = ' utf-8';
 $lang['direction']             = 'ltr';
@@ -57,6 +59,7 @@ $lang['btn_draft']             = 'Править черновик';
 $lang['btn_recover']           = 'Восстановить черновик';
 $lang['btn_draftdel']          = 'Удалить черновик';
 $lang['btn_revert']            = 'Восстановить';
+$lang['btn_register']          = 'Зарегистрироваться';
 $lang['loggedinas']            = 'Зашли как';
 $lang['user']                  = 'Логин';
 $lang['pass']                  = 'Пароль';
@@ -66,7 +69,6 @@ $lang['passchk']               = 'повторите';
 $lang['remember']              = 'Запомнить меня';
 $lang['fullname']              = 'Полное имя';
 $lang['email']                 = 'Эл. адрес';
-$lang['register']              = 'Зарегистрироваться';
 $lang['profile']               = 'Профиль пользователя';
 $lang['badlogin']              = 'Извините, неверное имя пользователя или пароль.';
 $lang['minoredit']             = 'Небольшие изменения';
@@ -167,6 +169,9 @@ $lang['yours']                 = 'Ваша версия';
 $lang['diff']                  = 'показать отличия от текущей версии';
 $lang['diff2']                 = 'Показать различия между ревизиями  ';
 $lang['difflink']              = 'Ссылка на это сравнение';
+$lang['diff_type']             = 'Посмотреть отличия';
+$lang['diff_inline']           = 'Встроенный';
+$lang['diff_side']             = 'Бок о бок';
 $lang['line']                  = 'Строка';
 $lang['breadcrumb']            = 'Вы посетили';
 $lang['youarehere']            = 'Вы находитесь здесь';
diff --git a/inc/lang/ru/subscr_list.txt b/inc/lang/ru/subscr_list.txt
index df5c2aa54b7b1dfc90067253fdc69e4958501e82..41e1323bc9b70cfaf2e16a3c8aaa830aaaae6695 100644
--- a/inc/lang/ru/subscr_list.txt
+++ b/inc/lang/ru/subscr_list.txt
@@ -1,4 +1,3 @@
-
 Привет.
 
 Страницы в пространстве имён @PAGE@ в вики @TITLE@ были изменены.
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index dde10c543b339ba15ac3b930a4cfbd22b31ffdbc..eaef4b6795b39512edf120b60dbebe1b8ae934df 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -47,6 +47,7 @@ $lang['btn_draft']             = 'Upraviť koncept';
 $lang['btn_recover']           = 'Obnoviť koncept';
 $lang['btn_draftdel']          = 'Zmazať koncept';
 $lang['btn_revert']            = 'Obnoviť';
+$lang['btn_register']          = 'Registrovať';
 $lang['loggedinas']            = 'Prihlásený(á) ako';
 $lang['user']                  = 'Užívateľské meno';
 $lang['pass']                  = 'Heslo';
@@ -56,7 +57,6 @@ $lang['passchk']               = 'Ešte raz znovu';
 $lang['remember']              = 'Zapamätaj si ma';
 $lang['fullname']              = 'Celé meno';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Registrovať';
 $lang['profile']               = 'Užívateľský profil';
 $lang['badlogin']              = 'Zadané užívateľské meno a heslo nie je správne.';
 $lang['minoredit']             = 'Menšie zmeny';
diff --git a/inc/lang/sl/admin.txt b/inc/lang/sl/admin.txt
index fc78273ac33562f4fe940aa449dab356febff403..89b924e08cd6d39b4198d5aa743fe8ce892a341c 100644
--- a/inc/lang/sl/admin.txt
+++ b/inc/lang/sl/admin.txt
@@ -1,3 +1,3 @@
-===== Administracija =====
+===== Skrbništvo =====
 
-Spodaj lahko vidite seznam administrativnih opravil v DokuWikiju.
\ No newline at end of file
+Spodaj je naveden seznam skrbniških opravil sistema DokuWiki.
\ No newline at end of file
diff --git a/inc/lang/sl/adminplugins.txt b/inc/lang/sl/adminplugins.txt
index 9438b47592653ff85ad58f6427ab125d03c1cb67..899c854fc28e7c9154e9c2f673c7069b14e40bb3 100644
--- a/inc/lang/sl/adminplugins.txt
+++ b/inc/lang/sl/adminplugins.txt
@@ -1 +1 @@
-===== Dodatni vtičniki =====
\ No newline at end of file
+===== Dodatni vstavki =====
\ No newline at end of file
diff --git a/inc/lang/sl/backlinks.txt b/inc/lang/sl/backlinks.txt
index e637199c0778926de88adb51eaf77ea87727575f..466f96cf4c1aead7663f077763ee3311dfc82a3e 100644
--- a/inc/lang/sl/backlinks.txt
+++ b/inc/lang/sl/backlinks.txt
@@ -1,4 +1,4 @@
-====== Kaj je povezano sem ======
+====== Povratne povezave ======
 
-To je seznam strani, ki so povezane na trenutno stran. Opomba: CamelCase povezave niso zaznane kot take povezave.
+Spodaj je naveden seznam strani, ki so povezane na trenutno stran. CamelCase povezave niso zaznane kot povratne povezave.
 
diff --git a/inc/lang/sl/conflict.txt b/inc/lang/sl/conflict.txt
index 7ada08b5fd1d947d8984a1b6d8e78d5b43faddce..ec5b37016326a93cc18bdad196f45f456878892a 100644
--- a/inc/lang/sl/conflict.txt
+++ b/inc/lang/sl/conflict.txt
@@ -1,6 +1,5 @@
-====== Obstaja novejša različica ======
+====== Obstaja novejša različica dokumenta ======
 
-Obstaja novejša različica dokumenta, ki ga urejate. Do tega pride, ko kak drugi uporabnik spremeni dokument med vašim urejanjem.
-
-Temeljito preglejte spodaj prikazane razlike in se potem odločite, katero verzijo želite obdržati. Če izberete ''shrani'', bo shranjena vaša različica. Pritisnite ''prekliči'', če želite ohraniti trenutno različico.
+Obstaja novejša različica dokumenta, ki ga trenutno urejate. Do zapleta pride, ko drug uporabnik spremeni dokument med vašim urejanjem in ga pred vami shrani.
 
+Temeljito preglejte spodaj izpisane razlike med dokumentoma in izberite različico, ki jo želite ohraniti. V kolikor je izbrana možnost ''shrani'', bo shranjena vaša zadnja različica. Z izbiro možnosti ''prekliči'', pa bo ohranjena trenutno shranjena različica.
diff --git a/inc/lang/sl/denied.txt b/inc/lang/sl/denied.txt
index 96c03a56967c0ddbcd787053a7766cd78a852530..5b5fd4d3acfd4c39ef4562551679f43bd6945250 100644
--- a/inc/lang/sl/denied.txt
+++ b/inc/lang/sl/denied.txt
@@ -1,4 +1,3 @@
-====== Nimate dovoljenja ======
-
-Oprostite, za nadaljevanje nimati dovolj dovoljenj. Mogoče ste se pozabili prijaviti?
+====== Ni ustreznih dovoljenj ======
 
+Za nadaljevanje opravila je treba imeti ustrezna dovoljenja. Ali ste se morda pozabili prijaviti?
diff --git a/inc/lang/sl/diff.txt b/inc/lang/sl/diff.txt
index f98f7e5ce3ea7037a808b52ba32e675ee161c325..5cb2e3a120472e4aebf5f218acdd3bb48bc1ff69 100644
--- a/inc/lang/sl/diff.txt
+++ b/inc/lang/sl/diff.txt
@@ -1,4 +1,3 @@
-====== Primerjaj izbrane različice ======
-
-Prikazana je razlika med izbrano in trenutno različico te strani.
+====== Primerjava izbranih različic ======
 
+Prikazane so razlike med izbrano in trenutno različico strani.
diff --git a/inc/lang/sl/draft.txt b/inc/lang/sl/draft.txt
index 9fea86fd1408b9817a774ec96f6737caaaefe950..b3fe4de355078ed158f45ac632a1a9624991d075 100644
--- a/inc/lang/sl/draft.txt
+++ b/inc/lang/sl/draft.txt
@@ -1,5 +1,5 @@
-=====Najden je bil osnutek strani=====
+===== Zaznan je shranjen osnutek strani =====
 
-Vaša zadnja seja na tej strani ni bila pravilno zaključena. DokuWiki je samodejno shranil osnutek med vašim delom, katerega sedaj lahko nadaljujete. Spodaj lahko vidite podatke, ki so bili samodejno shranjeni v vaši zadnji seji.
+Zadnja seja te strani ni bila pravilno zaključena. Sistem DokuWiki je samodejno shranil osnutek strani, ki ga je mogoče naprej urejati. Spodaj so navedeni podatki samodejnega shranjevanja zadnje seje.
 
-Prosimo, odločite se ali boste //obnovili// vašo sejo, //izbrisali// samodejno shranjen osnutek alo //prekinili// proces urejanja.
\ No newline at end of file
+Vsebino osnutka je mogoče //obnoviti// na zadnjo sejo, //izbrisati// samodejno shranjen osnutek ali pa //prekiniti// urejanje.
\ No newline at end of file
diff --git a/inc/lang/sl/edit.txt b/inc/lang/sl/edit.txt
index 180a97ade20704adfb1dd3e62364acaab873beb1..71d5fb02f3726346c58fce01f58fd6e48cc22c65 100644
--- a/inc/lang/sl/edit.txt
+++ b/inc/lang/sl/edit.txt
@@ -1,2 +1 @@
-Uredite stran in pritisnite ''Shrani''. Glej [[wiki:syntax]] za  navodila za urejanje. Prosimo vas, da stran spremenite le, če jo nameravate **izboljšati**. Če hočete preizkusiti kakšno zadevo, se poigrajte v [[playground:playground|peskovniku]].
-
+Po koncu urejanja strani, je stran treba ''shraniti''. Navodila in podrobnosti za urejanje je mogoče najti na strani [[wiki:syntax|skladnje]]. Možnosti urejanja in pravila skladnje je mogoče varno preizkusiti v [[playground:playground|peskovniku]].
diff --git a/inc/lang/sl/editrev.txt b/inc/lang/sl/editrev.txt
index cf2b4ec7b327a1f9a82d412be6f3c9366d113647..baaacd270f308f67340db474bd3db979770289fd 100644
--- a/inc/lang/sl/editrev.txt
+++ b/inc/lang/sl/editrev.txt
@@ -1,2 +1,2 @@
-**Naložili ste staro različico dokumenta!** Če jo shranite, boste ustvarili novo različico s to vsebino.
+**Naložena je stara različica dokumenta!** V kolikor staro različico shranite, bo shranjena kot najnovejša različica.
 ----
\ No newline at end of file
diff --git a/inc/lang/sl/index.txt b/inc/lang/sl/index.txt
index 89dd05fbe12e3a013207aa12552d9a10a70dd318..81ccd47ad1866a245146ddd160cc3d4a39c9d9f8 100644
--- a/inc/lang/sl/index.txt
+++ b/inc/lang/sl/index.txt
@@ -1,4 +1,4 @@
 ====== Kazalo ======
 
-To je kazalo vseh strani, ki so na voljo, urejenimi po [[doku>namespaces|imenskih prostorih]].
+Na spodnjem seznamu so izpisane vse wiki strani, ki so na voljo, urejene pa so skladno z [[doku>namespaces|imenskimi prostori]].
 
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index 8014d8a70c1795e1e357aa66876913830332e56d..41723f0ba0360f2690a0c4719b51662858ed46a6 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -1,45 +1,46 @@
 <?php
 /**
- * slovenian language file
+ * Slovenian language file
  *
- * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Jaka Kranjc <lynxlupodian@hotmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Dejan Levec <webphp@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
  */
 $lang['encoding']              = 'utf-8';
-$lang['direction']             = 'ltr';
+$lang['direction']             = 'L-D';
 $lang['doublequoteopening']    = '„';
 $lang['doublequoteclosing']    = '“';
 $lang['singlequoteopening']    = '‚';
 $lang['singlequoteclosing']    = '‘';
 $lang['apostrophe']            = '’';
-$lang['btn_edit']              = 'Uredi to stran';
-$lang['btn_source']            = 'Prikaži izvorno kodo strani';
-$lang['btn_show']              = 'Prikaži stran';
-$lang['btn_create']            = 'Ustvari to stran';
-$lang['btn_search']            = 'Išči';
+$lang['btn_edit']              = 'Uredi stran';
+$lang['btn_source']            = 'Pokaži izvorno kodo strani';
+$lang['btn_show']              = 'Pokaži stran';
+$lang['btn_create']            = 'Ustvari stran';
+$lang['btn_search']            = 'Poišči';
 $lang['btn_save']              = 'Shrani';
 $lang['btn_preview']           = 'Predogled';
 $lang['btn_top']               = 'Nazaj na vrh';
 $lang['btn_newer']             = '<< novejši';
 $lang['btn_older']             = 'starejši >>';
 $lang['btn_revs']              = 'Stare različice';
-$lang['btn_recent']            = 'Novosti';
+$lang['btn_recent']            = 'Nedavne spremembe';
 $lang['btn_upload']            = 'Pošlji';
 $lang['btn_cancel']            = 'Prekliči';
 $lang['btn_index']             = 'Kazalo';
 $lang['btn_secedit']           = 'Uredi';
 $lang['btn_login']             = 'Prijava';
 $lang['btn_logout']            = 'Odjava';
-$lang['btn_admin']             = 'Administrator';
+$lang['btn_admin']             = 'Skrbništvo';
 $lang['btn_update']            = 'Posodobi';
 $lang['btn_delete']            = 'Izbriši';
 $lang['btn_back']              = 'Nazaj';
-$lang['btn_backlink']          = 'Navzkrižne povezave';
-$lang['btn_backtomedia']       = 'Nazaj na izbiro medijskih datotek';
-$lang['btn_subscribe']         = 'Uredi naročnine';
+$lang['btn_backlink']          = 'Povratne povezave';
+$lang['btn_backtomedia']       = 'Nazaj na izbiro predstavnih datotek';
+$lang['btn_subscribe']         = 'Urejanje naročnin';
 $lang['btn_profile']           = 'Posodobi profil';
 $lang['btn_reset']             = 'Ponastavi';
 $lang['btn_resendpwd']         = 'Pošlji novo geslo';
@@ -47,59 +48,58 @@ $lang['btn_draft']             = 'Uredi osnutek';
 $lang['btn_recover']           = 'Obnovi osnutek';
 $lang['btn_draftdel']          = 'Izbriši osnutek';
 $lang['btn_revert']            = 'Povrni';
-$lang['loggedinas']            = 'Prijavljen kot';
+$lang['btn_register']          = 'Vpis računa';
+$lang['loggedinas']            = 'Prijava kot';
 $lang['user']                  = 'Uporabniško ime';
 $lang['pass']                  = 'Geslo';
 $lang['newpass']               = 'Novo geslo';
 $lang['oldpass']               = 'Potrdi trenutno geslo';
-$lang['passchk']               = 'ponovno';
+$lang['passchk']               = 'znova';
 $lang['remember']              = 'Zapomni si me';
 $lang['fullname']              = 'Pravo ime';
-$lang['email']                 = 'Elektronska pošta';
-$lang['register']              = 'Odpri nov račun';
-$lang['profile']               = 'Profil uporabnika';
-$lang['badlogin']              = 'Oprostite, uporabniško ime ali geslo ni pravo.';
+$lang['email']                 = 'Elektronski naslov';
+$lang['profile']               = 'Uporabniški profil';
+$lang['badlogin']              = 'Uporabniško ime ali geslo je napačno.';
 $lang['minoredit']             = 'Manjše spremembe';
-$lang['draftdate']             = 'Samodejno shranjevanje osnutka vključeno';
-$lang['nosecedit']             = 'Stran se je medtem spremenila, informacije odseka so bile stare, naložila se je celotna stran.';
-$lang['regmissing']            = 'Oprostite, zapolniti morate vsa polja.';
-$lang['reguexists']            = 'Oprostite, uporabnik s tem imenom že obstaja.';
-$lang['regsuccess']            = 'Uporabnik je bil ustvarjen. Geslo je bilo poslano na vaš elektronski naslov.';
-$lang['regsuccess2']           = 'Uporabnik je bil ustvarjen.';
-$lang['regmailfail']           = 'Zgleda, da je prišlo do napake pri pošiljanju gesla. Prosimo da stopite v stik z administratorjem!';
-$lang['regbadmail']            = 'Podan elektronski naslov izgleda neveljaven - če mislite da je to napaka, stopite v stik z administratorjem.';
-$lang['regbadpass']            = 'Gesli nista enaki.';
-$lang['regpwmail']             = 'Vaše geslo za DokuWiki';
-$lang['reghere']               = 'Nimate še računa? Priskrbite si ga';
-$lang['profna']                = 'Ta wiki ne podpira sprememb profila';
-$lang['profnochange']          = 'Brez sprememb, ničesar za storiti.';
-$lang['profnoempty']           = 'Prazno polje "e-pošta" ali "ime" ni dovoljeno.';
-$lang['profchanged']           = 'Uporabniški profil uspešno posodobljen';
-$lang['pwdforget']             = 'Pozabili geslo? Pridobite novega';
-$lang['resendna']              = 'Ta wiki ne podpira ponovnega pošiljanja gesel.';
+$lang['draftdate']             = 'Samodejno shranjevanje osnutka je omogočeno';
+$lang['nosecedit']             = 'Stran je bila v vmesnem času spremenjena. Podatki strani so bili zastareli, zato se je celotna vsebina naložila znova.';
+$lang['regmissing']            = 'Izpolniti je treba vsa polja.';
+$lang['reguexists']            = 'Uporabnik s tem imenom že obstaja.';
+$lang['regsuccess']            = 'Uporabniški račun je uspešno ustvarjen. Geslo je bilo poslano na naveden elektronski naslov.';
+$lang['regsuccess2']           = 'Uporabniški račun je uspešno ustvarjen.';
+$lang['regmailfail']           = 'Videti je, da je prišlo do napake med pošiljanjem gesla. Stopite v stik s skrbnikom sistema!';
+$lang['regbadmail']            = 'Videti je, da je naveden elektronski naslov neveljaven - v kolikor je to napaka, stopite v stik s skrbnikom sistema.';
+$lang['regbadpass']            = 'Gesli nista enaki. Poskusite znova.';
+$lang['regpwmail']             = 'Geslo za DokuWiki';
+$lang['reghere']               = 'Nimate še računa? Vpišite se za nov račun.';
+$lang['profna']                = 'Wiki ne podpira spreminjanja profila.';
+$lang['profnochange']          = 'Brez sprememb.';
+$lang['profnoempty']           = 'Prazno polje elektronskega naslova ali imena ni dovoljeno.';
+$lang['profchanged']           = 'Uporabniški profil je uspešno posodobljen.';
+$lang['pwdforget']             = 'Ali ste pozabili geslo? Pridobite si novo geslo.';
+$lang['resendna']              = 'Wiki ne podpira možnosti ponovnega pošiljanja gesel.';
 $lang['resendpwd']             = 'Pošlji novo geslo za';
-$lang['resendpwdmissing']      = 'Se opravičujemo, vendar morate izpolniti vsa polja.';
-$lang['resendpwdnouser']       = 'Se opravičujemo, vendar tega uporabniškega imena ni v bazi.';
-$lang['resendpwdbadauth']      = 'Oprostite, ta avtorizacijska koda ni prava. Prepričajte se, da ste uporabili celotno povezavo za potrditev.';
-$lang['resendpwdconfirm']      = 'Potrditvena povezava je bila poslana na vaš elektronski naslov';
-$lang['resendpwdsuccess']      = 'Vaše novo geslo je bilo poslano na vaš elektronski naslov';
-$lang['license']               = 'Če ni drugače navedeno, je vsebina tega wikija licencirana z naslednjo licenco:';
-$lang['licenseok']             = 'Pomembno: Z urejanjem te strani se strinjate s tem, da se vsebina zaščiti z naslednjo licenco:';
-$lang['searchmedia']           = 'Išči datoteko:';
-$lang['searchmedia_in']        = 'Išči v %s';
+$lang['resendpwdmissing']      = 'Izpolniti je treba vsa polja.';
+$lang['resendpwdnouser']       = 'Podanega uporabniškega imena v podatkovni zbirki ni mogoče najti.';
+$lang['resendpwdbadauth']      = 'Koda za overitev ni prava. Prepričajte se, da ste uporabili celotno povezavo za potrditev.';
+$lang['resendpwdconfirm']      = 'Povezava za potrditev računa je bila poslana na elektronski naslov.';
+$lang['resendpwdsuccess']      = 'Novo geslo je bilo poslano na elektronski naslov.';
+$lang['license']               = 'V kolikor ni posebej določeno, je vsebina Wiki strani objavljena pod pogoji dovoljenja:';
+$lang['licenseok']             = 'Opomba: z urejanjem vsebine strani, se strinjate z objavo pod pogoji dovoljenja:';
+$lang['searchmedia']           = 'Poišči ime datoteke:';
+$lang['searchmedia_in']        = 'Poišči v %s';
 $lang['txt_upload']            = 'Izberite datoteko za pošiljanje';
-$lang['txt_filename']          = 'Vnesite wikiname (neobvezno)';
+$lang['txt_filename']          = 'Pošlji z imenom (izborno)';
 $lang['txt_overwrt']           = 'Prepiši obstoječo datoteko';
-$lang['lockedby']              = 'Trenutno zaklenjeno od';
-$lang['lockexpire']            = 'Zaklep preteče';
-$lang['willexpire']            = 'Vaš zaklep za urejevanje bo pretekel čez eno minuto.\nDa se izognete konfliktom, uporabite predogled, da se merilnik časa za zaklep ponastavi.';
-$lang['js']['notsavedyet']     = 'Obstajajo neshranjene spremembe, ki bodo izgubljene.
-Res želite nadaljevati?';
-$lang['js']['searchmedia']     = 'Išči datoteke';
-$lang['js']['keepopen']        = 'Od izbiri obdrži okno odprto';
+$lang['lockedby']              = 'Trenutno je zaklenjeno s strani';
+$lang['lockexpire']            = 'Zaklep preteče ob';
+$lang['willexpire']            = 'Zaklep za urejevanje bo pretekel čez eno minuto.\nV izogib sporom, uporabite predogled, da se merilnik časa za zaklep ponastavi.';
+$lang['js']['notsavedyet']     = 'Neshranjene spremembe bodo izgubljene.';
+$lang['js']['searchmedia']     = 'Poišči datoteke';
+$lang['js']['keepopen']        = 'Od izbiri ohrani okno odprto';
 $lang['js']['hidedetails']     = 'Skrij podrobnosti';
 $lang['js']['mediatitle']      = 'Nastavitve povezave';
-$lang['js']['mediadisplay']    = 'Vrsta povezave';
+$lang['js']['mediadisplay']    = 'Vrsta povezaave';
 $lang['js']['mediaalign']      = 'Poravnava';
 $lang['js']['mediasize']       = 'Velikost slike';
 $lang['js']['mediatarget']     = 'Mesto povezave';
@@ -107,104 +107,103 @@ $lang['js']['mediaclose']      = 'Zapri';
 $lang['js']['mediainsert']     = 'Vstavi';
 $lang['js']['mediadisplayimg'] = 'Pokaži sliko.';
 $lang['js']['mediadisplaylnk'] = 'Pokaži le povezavo.';
-$lang['js']['mediasmall']      = 'Manjša različica';
+$lang['js']['mediasmall']      = 'Majhna različica';
 $lang['js']['mediamedium']     = 'Srednja različica';
 $lang['js']['medialarge']      = 'Velika različica';
-$lang['js']['mediaoriginal']   = 'Originalna različica';
-$lang['js']['medialnk']        = 'Povezava na detajle strani';
-$lang['js']['mediadirect']     = 'Direktna povezava na original';
+$lang['js']['mediaoriginal']   = 'Izvorna različica';
+$lang['js']['medialnk']        = 'Povezava na strani podrobnosti';
+$lang['js']['mediadirect']     = 'Neposredna povezava do izvorne različice';
 $lang['js']['medianolnk']      = 'Brez povezave';
-$lang['js']['medianolink']     = 'Ne poveži na sliko';
-$lang['js']['medialeft']       = 'Poravnaj sliko na levi';
-$lang['js']['mediaright']      = 'Poravnaj sliko na desni';
-$lang['js']['mediacenter']     = 'Poravnaj sliko na sredino';
-$lang['js']['medianoalign']    = 'Ne uporabi poravnave';
-$lang['js']['nosmblinks']      = 'Povezovanje do Windows deljenih datotek deluje samo v Microsoft Internet Explorer-ju.
-Še vedno pa lahko ročno kopirate povezavo.';
+$lang['js']['medianolink']     = 'Ne poveži s sliko';
+$lang['js']['medialeft']       = 'Poravnaj sliko na levo.';
+$lang['js']['mediaright']      = 'Poravnaj sliko na desno.';
+$lang['js']['mediacenter']     = 'Poravnaj sliko na sredini.';
+$lang['js']['medianoalign']    = 'Ne uporabi poravnave.';
+$lang['js']['nosmblinks']      = 'Povezovanje do souporabenih datotek sistema Windows deluje le pri uporabi brskalnika Microsoft Internet Explorer. Povezavo je mogoče kopirati ročno.';
 $lang['js']['linkwiz']         = 'ÄŒarovnik za povezave';
 $lang['js']['linkto']          = 'Poveži na:';
-$lang['js']['del_confirm']     = 'Resnično brišem izbrano(e) sliko(e)?';
-$lang['js']['mu_btn']          = 'Prenesite več dokumentov naenkrat.';
-$lang['rssfailed']             = 'Prišlo je do napake pri prenašanju tega dovoda: ';
-$lang['nothingfound']          = 'Nič ni bilo najdeno.';
-$lang['mediaselect']           = 'Mediafile Izbira';
-$lang['fileupload']            = 'Mediafile Pošiljanje';
-$lang['uploadsucc']            = 'Pošiljanje uspelo';
-$lang['uploadfail']            = 'Pošiljanje je spodletelo. Mogoče nimate dovoljenj?';
-$lang['uploadwrong']           = 'Pošiljanje zavrnjeno. Ta datotečna končnica je prepovedana';
-$lang['uploadexist']           = 'Dokument že obstaja. Brez sprememb.';
-$lang['uploadbadcontent']      = 'Naložena datoteka se ne ujema z/s %s končnico datoteke.';
-$lang['uploadspam']            = 'Nalaganje je bilo ustavljeno zaradi "črne liste" neželenih datotek.';
-$lang['uploadxss']             = 'Prenos je bil zaustavljen zaradi možne zlonamerne vsebine.';
-$lang['uploadsize']            = 'Prenesen dokument je prevelik. (max. %s)';
-$lang['deletesucc']            = 'Datoteka "%s" je bila izbrisana.';
-$lang['deletefail']            = '"%s" ni bilo možno izbrisati - preverite nastavitve CHMOD';
-$lang['mediainuse']            = 'Dokument "%s" ni bil izbrisan - je še vedno v uporabi.';
+$lang['js']['del_confirm']     = 'Ali naj se res izbrišejo izbrani predmeti?';
+$lang['js']['mu_btn']          = 'Pošiljanje več dokumentov hkrati.';
+$lang['rssfailed']             = 'Prišlo je do napake med pridobivanjem vira: ';
+$lang['nothingfound']          = 'Ni najdenih predmetov.';
+$lang['mediaselect']           = 'Predstavne datoteke';
+$lang['fileupload']            = 'Pošiljanje predstavnih datotek';
+$lang['uploadsucc']            = 'Pošiljanje je bilo uspešno končano.';
+$lang['uploadfail']            = 'Pošiljanje je spodletelo. Morda so uporabljena neustrezna dovoljenja.';
+$lang['uploadwrong']           = 'Pošiljanje je zavrnjeno. Uporabljena pripona datoteke je prepovedana.';
+$lang['uploadexist']           = 'Datoteka že obstaja. Ni sprememb.';
+$lang['uploadbadcontent']      = 'Poslana datoteka se ne sklada s pripono (%s) datoteke.';
+$lang['uploadspam']            = 'Pošiljanje je bilo ustavljeno na podlagi zapisa na črnem seznamu neželenih datotek.';
+$lang['uploadxss']             = 'Pošiljanje je zaustavljeno zaradi morebitne zlonamerne vsebine.';
+$lang['uploadsize']            = 'poslana datoteka prevelika (največja dovoljena velikost je %s).';
+$lang['deletesucc']            = 'Datoteka "%s" je izbrisana.';
+$lang['deletefail']            = 'Datoteke "%s" ni mogoče izbrisati - preverite uporabniška dovoljenja.';
+$lang['mediainuse']            = 'Datoteka "%s" ni izbrisana - datoteka je še vedno v uporabi.';
 $lang['namespaces']            = 'Imenski prostori';
-$lang['mediafiles']            = 'Datoteke ki so na voljo v';
-$lang['accessdenied']          = 'Nimate dovoljenja za ogled te strani.';
-$lang['mediausage']            = 'Uporabite naslednjo kodo za navajanje te datoteke:';
-$lang['mediaview']             = 'Poglej originalno datoteko';
-$lang['mediaroot']             = 'korenska mapa';
-$lang['mediaupload']           = 'Naložite datoteko v trenutno mapo. Za ustvarjanje novih podmap, jih pripnite pred "Naloži kot" ime in jih ločite z navpičnico.';
-$lang['mediaextchange']        = 'Končnica datoteke se je spremenila iz .%s v .%s!';
-$lang['reference']             = 'Reference za';
-$lang['ref_inuse']             = 'Te datoteke ni možno izbrisati, ker jo še vedno uporablja(jo) stran(i):';
-$lang['ref_hidden']            = 'Nekaj referenc je na straneh, do katerih nimate dostopa.';
-$lang['hits']                  = 'Zadetkov';
-$lang['quickhits']             = 'Ujemanja v imenih strani';
+$lang['mediafiles']            = 'Datoteke, ki so na voljo v';
+$lang['accessdenied']          = 'Za ogled te strani so zahtevana posebna dovoljenja.';
+$lang['mediausage']            = 'Za navajanje datoteke je treba uporabiti navedeno skladnjo:';
+$lang['mediaview']             = 'Pogled izvorne datoteke';
+$lang['mediaroot']             = 'koren';
+$lang['mediaupload']           = 'Pošiljanje datoteke v trenutni imenski prostor. Za ustvarjanje novih imenskih prostorov, jih pripnite k imenu datoteke navedene pri vnosnem polju "Naloži kot" in jih ločite z dvopičjem.';
+$lang['mediaextchange']        = 'Pripona datoteke je spremenjena iz .%s v .%s!';
+$lang['reference']             = 'Sklic za';
+$lang['ref_inuse']             = 'Datoteke ni mogoče izbrisati, saj je še vedno povezana s stranmi:';
+$lang['ref_hidden']            = 'Nekaj sklicev je navedenih na straneh, do katerih s trenutnimi dovoljenji ni mogoč dostop.';
+$lang['hits']                  = 'Zadetki';
+$lang['quickhits']             = 'Ujemanje imen strani';
 $lang['toc']                   = 'Kazalo';
-$lang['current']               = 'trenutna';
+$lang['current']               = 'Trenutna';
 $lang['yours']                 = 'Vaša različica';
-$lang['diff']                  = 'prikaži razlike s trenutno različico';
-$lang['diff2']                 = 'Pokaži razlike med izbranimi revizijami';
-$lang['difflink']              = 'Naredi povezavo na to primerjavo';
+$lang['diff']                  = 'Pokaži razlike s trenutno različico';
+$lang['diff2']                 = 'Pokaži razlike med izbranimi različicami.';
+$lang['difflink']              = 'Poveži s tem pogledom primerjave.';
 $lang['line']                  = 'Vrstica';
 $lang['breadcrumb']            = 'Sled';
-$lang['youarehere']            = 'Tukaj ste';
-$lang['lastmod']               = 'Zadnjič spremenil/a';
-$lang['by']                    = 'od';
+$lang['youarehere']            = 'Trenutno dejavna stran';
+$lang['lastmod']               = 'Zadnja sprememba';
+$lang['by']                    = 'uporabnika';
 $lang['deleted']               = 'odstranjena';
 $lang['created']               = 'ustvarjena';
-$lang['restored']              = 'stara različica povrnjena';
+$lang['restored']              = 'povrnjena stara različica';
 $lang['external_edit']         = 'urejanje v zunanjem urejevalniku';
 $lang['summary']               = 'Povzetek urejanja';
-$lang['noflash']               = 'Za prikaz vsebine potrebujete <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>';
+$lang['noflash']               = 'Za prikaz vsebine je treba namestiti <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>';
 $lang['download']              = 'Naloži izrezek';
 $lang['mail_newpage']          = '[DokuWiki] stran dodana:';
 $lang['mail_changed']          = '[DokuWiki] stran spremenjena:';
 $lang['mail_subscribe_list']   = 'strani s spremenjenim imenom:';
-$lang['mail_new_user']         = 'nov uporabnik.';
+$lang['mail_new_user']         = 'nov uporabnik:';
 $lang['mail_upload']           = 'naložena datoteka:';
-$lang['qb_bold']               = 'Krepki tisk';
-$lang['qb_italic']             = 'Ležeči tisk';
+$lang['qb_bold']               = 'Krepko besedilo';
+$lang['qb_italic']             = 'Ležeče besedilo';
 $lang['qb_underl']             = 'Podčrtano besedilo';
-$lang['qb_code']               = 'Koda';
+$lang['qb_code']               = 'Oznaka kode';
 $lang['qb_strike']             = 'Prečrtano besedilo';
-$lang['qb_h1']                 = 'Naslov prve stopnje';
-$lang['qb_h2']                 = 'Naslov drugee stopnje';
-$lang['qb_h3']                 = 'Naslov tretje stopnje';
-$lang['qb_h4']                 = 'Naslov četrte stopnje';
-$lang['qb_h5']                 = 'Naslov pete stopnje';
+$lang['qb_h1']                 = 'Naslov prve ravni';
+$lang['qb_h2']                 = 'Naslov druge ravni';
+$lang['qb_h3']                 = 'Naslov tretje ravni';
+$lang['qb_h4']                 = 'Naslov četrte ravni';
+$lang['qb_h5']                 = 'Naslov pete ravni';
 $lang['qb_h']                  = 'Naslov';
 $lang['qb_hs']                 = 'Izberi naslov';
-$lang['qb_hplus']              = 'Naslov na višjem nivoju';
-$lang['qb_hminus']             = 'Naslov na nižjem nivoju';
-$lang['qb_hequal']             = 'Naslov na istem nivoju';
+$lang['qb_hplus']              = 'Naslov na višji ravni';
+$lang['qb_hminus']             = 'Naslov na nižji ravni';
+$lang['qb_hequal']             = 'Naslov na isti ravni';
 $lang['qb_link']               = 'Notranja povezava';
 $lang['qb_extlink']            = 'Zunanja povezava';
 $lang['qb_hr']                 = 'Vodoravna črta';
-$lang['qb_ol']                 = 'Element urejenega seznama';
-$lang['qb_ul']                 = 'Element neurejenega seznama';
-$lang['qb_media']              = 'Dodaj slike in druge datoteke';
+$lang['qb_ol']                 = 'Številčna oznaka predmeta';
+$lang['qb_ul']                 = 'Vrstična oznaka predmeta';
+$lang['qb_media']              = 'Dodajanje slik in drugih datotek';
 $lang['qb_sig']                = 'Vstavi podpis';
 $lang['qb_smileys']            = 'Smeški';
 $lang['qb_chars']              = 'Posebni znaki';
-$lang['upperns']               = 'skoči na starševski članek';
+$lang['upperns']               = 'skoči na nadrejeni imenski prostor';
 $lang['admin_register']        = 'Dodaj novega uporabnika';
-$lang['metaedit']              = 'Popravi metapodatke';
-$lang['metasaveerr']           = 'Zapisovanje metapodatkov ni uspelo';
-$lang['metasaveok']            = 'Meta podatki shranjeni';
+$lang['metaedit']              = 'Uredi metapodatke';
+$lang['metasaveerr']           = 'Zapisovanje metapodatkov je spodletelo';
+$lang['metasaveok']            = 'Metapodatki so shranjeni';
 $lang['img_backto']            = 'Nazaj na';
 $lang['img_title']             = 'Naslov';
 $lang['img_caption']           = 'Opis';
@@ -212,66 +211,66 @@ $lang['img_date']              = 'Datum';
 $lang['img_fname']             = 'Ime datoteke';
 $lang['img_fsize']             = 'Velikost';
 $lang['img_artist']            = 'Fotograf';
-$lang['img_copyr']             = 'Avtorska zaščita';
-$lang['img_format']            = 'Velikost';
+$lang['img_copyr']             = 'Avtorska pravica';
+$lang['img_format']            = 'Zapis';
 $lang['img_camera']            = 'Fotoaparat';
 $lang['img_keywords']          = 'Ključne besede';
-$lang['subscr_subscribe_success'] = 'Dodan %s na seznam naročnin za %s';
-$lang['subscr_subscribe_error'] = 'Napaka pri dodajanju %s na seznam naročnin za %s';
-$lang['subscr_subscribe_noaddress'] = 'Z vašo prijavo ni povezan noben e-naslov, zato vas ne moremo dodati na seznam naročnikov';
-$lang['subscr_unsubscribe_success'] = 'Odstranjeno %s s seznama naročnin za %s';
-$lang['subscr_unsubscribe_error'] = 'Napaka pri odstranjevanju %s s seznama naročnin za %s';
+$lang['subscr_subscribe_success'] = 'Uporabniški račun %s je dodan na seznam naročnin na %s';
+$lang['subscr_subscribe_error'] = 'Napaka med dodajanjem %s na seznam naročnin na %s';
+$lang['subscr_subscribe_noaddress'] = 'S trenutnimi prijavnimi podatki ni povezanega elektronskega naslova, zato uporabniškega računa ni mogoče dodati na seznam naročnikov.';
+$lang['subscr_unsubscribe_success'] = 'Uporabniški račun %s je odstranjen s seznama naročnin na %s';
+$lang['subscr_unsubscribe_error'] = 'Napaka med odstranjevanjem %s s seznama naročnin na %s';
 $lang['subscr_already_subscribed'] = '%s je že naročen na %s';
 $lang['subscr_not_subscribed'] = '%s ni naročen na %s';
-$lang['subscr_m_not_subscribed'] = 'Niste naročeni na trenutno stran ali članek.';
-$lang['subscr_m_new_header']   = 'Naroči se na spremembe';
+$lang['subscr_m_not_subscribed'] = 'Trenutni uporabniški račun nima prijavljene naročnine na trenutno stran ali imenski prostor.';
+$lang['subscr_m_new_header']   = 'Naročanje';
 $lang['subscr_m_current_header'] = 'Trenutne naročnine';
-$lang['subscr_m_unsubscribe']  = 'Odjavi se';
-$lang['subscr_m_subscribe']    = 'Naroči se';
+$lang['subscr_m_unsubscribe']  = 'Prekliči naročnino';
+$lang['subscr_m_subscribe']    = 'Prijavi naročnino';
 $lang['subscr_m_receive']      = 'Prejmi';
-$lang['subscr_style_every']    = 'e-pošto ob vsaki spremembi';
-$lang['subscr_style_digest']   = 'strnjeno e-pošti sprememb za vsako stran (vsake %.2f dni)';
-$lang['subscr_style_list']     = 'seznam spremenjenih strani od zadnje pošte (vsake %.2f dni)';
-$lang['authmodfailed']         = 'Slaba nastavitev potrditve. Prosimo obvestite administratorja wikija.';
-$lang['authtempfail']          = 'Potrditev uporabnika je trenutno nedostopna. ÄŒe se ta napaka ponavlja, prosimo obvestite administratorja wikija.';
+$lang['subscr_style_every']    = 'elektronsko sporočilo ob vsaki spremembi';
+$lang['subscr_style_digest']   = 'strnjeno elektronsko sporočilo sprememb za vsako stran (vsakih %.2f dni)';
+$lang['subscr_style_list']     = 'seznam spremenjenih strani od zadnjega elektronskega sporočila (vsakih %.2f dni)';
+$lang['authmodfailed']         = 'Slaba nastavitev overitve uporabniškega računa. Stopite v stik s skrbnikom sistema wiki.';
+$lang['authtempfail']          = 'Potrditev uporabnika je trenutno nedostopna. Stopite v stik s skrbnikom sistema wiki.';
 $lang['i_chooselang']          = 'Izberite jezik';
 $lang['i_installer']           = 'DokuWiki namestitev';
-$lang['i_wikiname']            = 'Wiki ime';
+$lang['i_wikiname']            = 'Ime Wiki spletišča';
 $lang['i_enableacl']           = 'Omogoči ACL (priporočeno)';
-$lang['i_superuser']           = 'Naduporabnik';
-$lang['i_problems']            = 'Installer je naletel na težave, ki so opisane spodaj. Ne morete nadaljevati, dokler jih ne odpravite.';
-$lang['i_modified']            = 'Iz varnostnih razlogov bo ta skrip deloval le v novi in nespremenjeneni namestitvi DokuWikija. Potrebno je ali ponovno razširiti datoteke iz naloženega paketa, ali preberete popolna <a href="http://dokuwiki.org/install">Dokuwiki navodila za namestitev</a>.';
-$lang['i_funcna']              = 'PHP funkcija <code>%s</code> ni na voljo. Morda jo je vaš ponudnik onemogočil?';
-$lang['i_phpver']              = 'Verzija vašega PHP-ja <code>%s</code> je nižja od potrebne <code>%s</code>. Potrebno je posodobiti PHP inštalacijo.';
-$lang['i_permfail']            = '<code>%s</code> ni zapisljiva. Potrebno je nastaviti CHMOD nastavitve dostopa do direktorija.';
-$lang['i_confexists']          = '<code>%s</code> že obstaja';
-$lang['i_writeerr']            = 'Ni mogoče ustvariti <code>%s</code>. Preveriti morate CHMOD nastavitve dostopa direktorija ali datoteke in ustvariti datoteko ročno.';
-$lang['i_badhash']             = 'nepoznana ali spremenjena dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_superuser']           = 'Skrbnik';
+$lang['i_problems']            = 'Namestilnik je naletel na težave, ki so izpisane spodaj. Namestitve ni mogoče nadaljevati, dokler težave ne bodo odpravljene.';
+$lang['i_modified']            = 'Iz varnostnih razlogov skript deluje le v novi in neprilagojeni namestitvi sistema DokuWiki. Postopek namestitve je treba začeti znova ali pa sistem namestiti ročno s pomočjo <a href="http://dokuwiki.org/install">navodil nameščanja Dokuwiki</a>.';
+$lang['i_funcna']              = 'Funkcija PHP <code>%s</code> ni na voljo. Morda je možnost na strežniku zaradi varnostnih razlogov onemogočena.';
+$lang['i_phpver']              = 'Različica PHP <code>%s</code> je nižja od zahtevane različice <code>%s</code>. Pred nadaljevanjem je treba posodobiti namestitev PHP.';
+$lang['i_permfail']            = 'Predmet <code>%s</code> ni zapisljiv. Zahtevana je sprememba dovoljenj za to mapo.';
+$lang['i_confexists']          = 'Predmet <code>%s</code> že obstaja.';
+$lang['i_writeerr']            = 'Ni mogoče ustvariti predmeta <code>%s</code>. Preveriti je treba dovoljenja datotek in map in nato ustvariti datoteko ročno.';
+$lang['i_badhash']             = 'nepoznana ali spremenjena datoteka dokuwiki.php (razpršilo=<code>%s</code>)';
 $lang['i_badval']              = '<code>%s</code> - neveljavna ali prazna vrednost';
-$lang['i_success']             = 'Konfiguracija se je zaključila uspešno. Datoteko install.php lahko sedaj izbrišete. Nadaljujte v vaš <a href="doku.php">novi DokuWiki</a>.';
-$lang['i_failure']             = 'Med zapisovanjem nastavitvenih datotek je prišlo do nekaj napak. Preden lahko uporabite vaš <a href="doku.php">novi DokuWiki</a>, jih boste morali ročno popraviti.';
-$lang['i_policy']              = 'Namesti ACL';
+$lang['i_success']             = 'Nastavitev je uspešno končana. Datoteko install.php lahko sedaj izbrišete. Nadaljujte v <a href="doku.php">novi DokuWiki</a>.';
+$lang['i_failure']             = 'Med zapisovanjem nastavitvenih datotek je prišlo do napak. Preden lahko uporabite vaš <a href="doku.php">DokuWiki</a>, jih je treba odpraviti.';
+$lang['i_policy']              = 'Začetna določila ACL';
 $lang['i_pol0']                = 'Odprt Wiki (branje, zapis, nalaganje datotek je javno za vse)';
 $lang['i_pol1']                = 'Javni Wiki (branje za vse, zapis in nalaganje datotek za prijavljene uporabnike)';
 $lang['i_pol2']                = 'Zaprt Wiki (berejo in urejajo lahko le prijavljeni uporabniki)';
 $lang['i_retry']               = 'Ponovni poskus';
-$lang['i_license']             = 'Prosimo, izberite licenco, pod katero bo objsavljena vsebina:';
-$lang['mu_intro']              = 'Tukaj lahko naložite več datotek hkrati. Kliknite gumb "Brskaj", da jih dodate v vrsto. Kliknite "Naloži", ko ste končali';
+$lang['i_license']             = 'Izbor dovoljenja objave vsebine:';
+$lang['mu_intro']              = 'Naložiti je mogoče več datotek hkrati. S klikom na gumb "Prebrskaj", jih je mogoče dodati v vrsto. S klikom na povezavo "naloži" bodo datoteke poslane na strežnik.';
 $lang['mu_gridname']           = 'Ime datoteke';
 $lang['mu_gridsize']           = 'Velikost';
-$lang['mu_gridstat']           = 'Status';
-$lang['mu_namespace']          = 'Ime';
-$lang['mu_browse']             = 'Brskaj';
+$lang['mu_gridstat']           = 'Stanje';
+$lang['mu_namespace']          = 'Imenski prostor';
+$lang['mu_browse']             = 'Prebrskaj';
 $lang['mu_toobig']             = 'prevelika datoteka';
-$lang['mu_ready']              = 'pripravljena na nalaganje';
+$lang['mu_ready']              = 'pripravljena na pošiljanje';
 $lang['mu_done']               = 'končano';
 $lang['mu_fail']               = 'ni uspelo';
 $lang['mu_authfail']           = 'seja je potekla';
-$lang['mu_progress']           = '@PCT@% naloženo';
-$lang['mu_filetypes']          = 'Dovoljeni tipi datotek';
-$lang['mu_info']               = 'datoteke naložene';
+$lang['mu_progress']           = '@PCT@% je poslano';
+$lang['mu_filetypes']          = 'Dovoljene vrste datotek';
+$lang['mu_info']               = 'poslanih datotek.';
 $lang['mu_lasterr']            = 'Zadnja napaka:';
-$lang['recent_global']         = 'Trenutno gledate spremembe znotraj imenskega prostora <b>%s</b>. Lahko si <a href="%s">ogledate tudi spremembe, narejene v celotnem wikiju</a>.';
+$lang['recent_global']         = 'Trenutno so prikazane spremembe znotraj imenskega prostora <b>%s</b>. Mogoče si je ogledati tudi spremembe <a href="%s">celotnega sistema Wiki</a>.';
 $lang['years']                 = '%d let nazaj';
 $lang['months']                = '%d mesecev nazaj';
 $lang['weeks']                 = '%d tednov nazaj';
@@ -279,4 +278,4 @@ $lang['days']                  = '%d dni nazaj';
 $lang['hours']                 = '%d ur nazaj';
 $lang['minutes']               = '%d minut nazaj';
 $lang['seconds']               = '%d sekund nazaj';
-$lang['wordblock']             = 'Vaša sprememba ni bila shranjena, ker vsebuje neželeno besedilo (spam).';
+$lang['wordblock']             = 'Spremembe niso shranjene, ker je v vsebini navedeno neželeno besedilo (spam).';
diff --git a/inc/lang/sl/locked.txt b/inc/lang/sl/locked.txt
index dbdcf48a156385ebf3db6eb8f4eead7ddba1a253..d51e940b728cd84013200f939a13278e4eff2cfc 100644
--- a/inc/lang/sl/locked.txt
+++ b/inc/lang/sl/locked.txt
@@ -1,3 +1,3 @@
 ====== Stran je zaklenjena ======
 
-To stran je nekdo zaklenjenil za urejanje. Počakati morate, da jo ta uporabnik neha urejati ali pa da poteče zaklep.
+Stran je zaklenjenjena za urejanje. Počakati je treba, da zaklep strani poteče.
diff --git a/inc/lang/sl/login.txt b/inc/lang/sl/login.txt
index f385d0099eb0ab51581b346fb6ae188ea51fca95..297cd53f5ed7b09d0300dff2ae769c0dd72fcbfa 100644
--- a/inc/lang/sl/login.txt
+++ b/inc/lang/sl/login.txt
@@ -1,4 +1,3 @@
 ====== Prijava ======
 
-Niste prijavljeni! Spodaj vnesite svoje podatke in se prijavite. Da se lahko prijavite, morate imeti omogočene piškotke.
-
+Niste prijavljeni! Spodaj vnesite ustrezne podatke in se prijavite. Prijaviti se je mogoče, če so omogočeni piškotki.
diff --git a/inc/lang/sl/mailtext.txt b/inc/lang/sl/mailtext.txt
index a46c672d66ce349b0e1e8ebada89c78a4614ef1e..e08d01d9e94df667062bcc40fd91f6c6a260389e 100644
--- a/inc/lang/sl/mailtext.txt
+++ b/inc/lang/sl/mailtext.txt
@@ -2,16 +2,14 @@ Stran na vašem DokuWiki je bila dodana ali spremenjena. Podrobnosti:
 
 Datum            : @DATE@
 Brskalnik        : @BROWSER@
-IP-naslov        : @IPADDRESS@
-Gostitelj        : @HOSTNAME@
+Naslov IP        : @IPADDRESS@
+Ime gostitelja   : @HOSTNAME@
 Stara različica  : @OLDPAGE@
-Nova Različica   : @NEWPAGE@
+Nova različica   : @NEWPAGE@
 Povzetek urejanja: @SUMMARY@
 Uporabnik        : @USER@
 
 @DIFF@
 
-
--- 
-To sporočilo je ustvaril DokuWiki na
-@DOKUWIKIURL@
+--
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
diff --git a/inc/lang/sl/newpage.txt b/inc/lang/sl/newpage.txt
index c58ab17ff1214333111e3c1e0c769942e646c9a8..2f11bbf55c6c502169d0e4cdd6aab5d0326bca85 100644
--- a/inc/lang/sl/newpage.txt
+++ b/inc/lang/sl/newpage.txt
@@ -1,3 +1,3 @@
-====== Ta stran še ne obstaja ======
+====== Stran še ne obstaja ======
 
-Sledili ste povezavi na stran, ki še ne obstaja. Ustvarite jo lahko, tako da pritisnete na ''Ustvari to stran''.
+Sledili ste povezavi na stran, ki še ne obstaja. Stran je mogoče ustvariti preko povezave ''Ustvari stran''.
diff --git a/inc/lang/sl/norev.txt b/inc/lang/sl/norev.txt
index 28b9f8ac530043d4ece51bf88f0341610bcf174a..adaa22d1171fd2fe491c92cc7bb26e4204cc9e61 100644
--- a/inc/lang/sl/norev.txt
+++ b/inc/lang/sl/norev.txt
@@ -1,4 +1,3 @@
-====== Ta različica ne obstaja ======
-
-Podana različica ne obstaja. Uporabite gumb ''Stare različice'' za seznam starih različic tega dokumenta.
+====== Neobstoječa različica strani ======
 
+Zahtevana različica strani ne obstaja. Uporabite gumb ''Stare različice'' za izpis seznama starih različic tega dokumenta.
diff --git a/inc/lang/sl/password.txt b/inc/lang/sl/password.txt
index 794fd97b15364c569d6406139ed4b115d50d7db3..61929dccd328da46da1ea3d05cbe5be4a9211e83 100644
--- a/inc/lang/sl/password.txt
+++ b/inc/lang/sl/password.txt
@@ -1,10 +1,9 @@
-Pozdravljeni @FULLNAME@!
+Pozdravljeni, @FULLNAME@!
 
-Tukaj so vaši podatki za @TITLE@ na @DOKUWIKIURL@
+Spodaj so navedeni podatki za @TITLE@ na wiki spletišču @DOKUWIKIURL@
 
-Uporabniško ime : @LOGIN@
-Geslo : @PASSWORD@
+Uporabniško ime: @LOGIN@
+Geslo          : @PASSWORD@
 
--- 
-To sporočilo je ustvaril DokuWiki na
-@DOKUWIKIURL@
+--
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
diff --git a/inc/lang/sl/preview.txt b/inc/lang/sl/preview.txt
index 4ebf183ecb685fe33bc606b25fbbcd65d4b559a1..c49de6617fe005f12290e1c5238bea95a6fd99f0 100644
--- a/inc/lang/sl/preview.txt
+++ b/inc/lang/sl/preview.txt
@@ -1,4 +1,3 @@
 ====== Predogled ======
 
-To je predogled strani. Lahko si ogledate kako bo izgledal dokument. Ne pozabite pa, da še ni shranjen!
-
+Prikazan je predogled strani. Stran še ni shranjena!
diff --git a/inc/lang/sl/pwconfirm.txt b/inc/lang/sl/pwconfirm.txt
index 96c3a64d57751cb3cee1d6c613db46e8194fe2d0..a621821e54d6dfd3562059c6c6fcfac62a596854 100644
--- a/inc/lang/sl/pwconfirm.txt
+++ b/inc/lang/sl/pwconfirm.txt
@@ -1,13 +1,11 @@
-Pozdravljen @FULLNAME@!
+Pozdravljeni, @FULLNAME@!
 
-Nekdo je v vašem imenu zahteval novo geslo za uporabniško ime @TITLE@ na @DOKUWIKIURL@.
+S podatki vašega imena je bila poslana zahteva za pridobitev novega gesla za uporabniško ime @TITLE@ na wiki spletišču @DOKUWIKIURL@.
 
-Če novega gesla niste zahtevali, prezrite to sporočilo.
-
-Za potrditev novega gesla, kliknite spodnjo povezavo.
+ - V kolikor novega gesla niste zahtevali, prezrite to sporočilo.
+ - Za potrditev zahteve za pridobitev novega gesla, kliknite spodnjo povezavo.
 
 @CONFIRM@
 
--- 
-To sporočilo je ustvaril DokuWiki na
-@DOKUWIKIURL@
+--
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
diff --git a/inc/lang/sl/read.txt b/inc/lang/sl/read.txt
index 1423a4f16d85c6522d84205ce196fd1952600337..5ba9a2eb00bac39ba6964a8b2c08d13699b098a5 100644
--- a/inc/lang/sl/read.txt
+++ b/inc/lang/sl/read.txt
@@ -1,2 +1,2 @@
-Ta stran je samo za branje. Lahko si ogledate njeno izvorno kodo, spreminjati pa je ne morete. Vprašajte administratorja, če se vam to zdi narobe.
+Stran je odprta z dovoljenji le za branje. Dovoljeno je ogledati si izvorno kodo strani, vsebine pa ni mogoče spreminjati. Za več podrobnosti stopite v stik s skrbnikom sistema.
 
diff --git a/inc/lang/sl/recent.txt b/inc/lang/sl/recent.txt
index 534063384b5a7270148e8596d5d0da78502df934..282a492bedd89dc2b60253c770f806101a78f240 100644
--- a/inc/lang/sl/recent.txt
+++ b/inc/lang/sl/recent.txt
@@ -1,5 +1,3 @@
-====== Trenutne spremembe ======
-
-Sledeče strani so bile nedavno spremenjene.
-
+====== Nedavne spremembe ======
 
+Izpisane wiki strani so bile nedavno spremenjene.
diff --git a/inc/lang/sl/register.txt b/inc/lang/sl/register.txt
index d1f7ab49eba7270de4361c362309bbaae83aa0de..f1b22f933d127db350794be3c672903402cd509f 100644
--- a/inc/lang/sl/register.txt
+++ b/inc/lang/sl/register.txt
@@ -1,4 +1,3 @@
-====== Odpri nov račun ======
-
-Vnesite vse potrebne podatke in si ustvarite račun za ta wiki. Preverite da ste vnesli **veljaven e-mail naslov** - tja bo poslano geslo. Uporabniško ime mora biti veljavno [[doku>pagename|ime strani]].
+====== Vpis novega računa ======
 
+V spodnji obrazec je treba vnesti vse zahtevane podatke za ustvarjanje novega računa. Vnesti je treba veljaven **elektronski naslov**, na katerega bo poslano geslo. Uporabniško ime mora biti veljavno [[doku>pagename|ime strani]].
diff --git a/inc/lang/sl/registermail.txt b/inc/lang/sl/registermail.txt
index d9622325e13804eb929f903127724bd5976daab8..801b7d0dba31d60a948865af1c656781f3b86843 100644
--- a/inc/lang/sl/registermail.txt
+++ b/inc/lang/sl/registermail.txt
@@ -1,14 +1,14 @@
-Nov uporabnik registriran. Podatki:
+Nov uporabniški račun je uspešno vpisan.
+Podatki računa:
 
-Uporabniško ime: @NEWUSER@
-Polno ime: @NEWNAME@
-E-mail: @NEWEMAIL@
+Uporabniško ime   : @NEWUSER@
+Polno ime         : @NEWNAME@
+Elektronski naslov: @NEWEMAIL@
 
-Datum: @DATE@
-Brskalnik: @BROWSER@
-IP naslov: @IPADDRESS@
-Hostname: @HOSTNAME@
+Datum             : @DATE@
+Brskalnik         : @BROWSER@
+Naslov IP         : @IPADDRESS@
+Ime gostitelja    : @HOSTNAME@
 
 -- 
-To sporočilo je ustvaril DokuWiki na
-@DOKUWIKIURL@
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
diff --git a/inc/lang/sl/resendpwd.txt b/inc/lang/sl/resendpwd.txt
index 9f46a7a59773a73cdead9dba120e7a79fda0347d..8a1e614f750ae510588cd8c75dd6fae2b11176a0 100644
--- a/inc/lang/sl/resendpwd.txt
+++ b/inc/lang/sl/resendpwd.txt
@@ -1,3 +1,3 @@
-====== Pošlji novo geslo ======
+====== Pošiljanje novega gesla ======
 
-Za pridobitev novega gesla, vnesite vaše uporabniško ime v obrazec spodaj. Na vaš email naslov bo poslano sporočilo s povezavo za potrditev avtentičnosti.
\ No newline at end of file
+Za pridobitev novega gesla, vnesite vaše uporabniško ime ustrezno polje spodnjega obrazca. Na naveden elektronski naslov bo poslano sporočilo v katerem bo navedena povezava do strani za overjanje istovetnosti uporabnika.
diff --git a/inc/lang/sl/revisions.txt b/inc/lang/sl/revisions.txt
index 19bf39a874d5d5093b3be27264638b9ebfecdc52..86ede9ded440685b768123201b8243c7577b5138 100644
--- a/inc/lang/sl/revisions.txt
+++ b/inc/lang/sl/revisions.txt
@@ -1,4 +1,3 @@
 ====== Stare različice ======
 
-To so stare različice tega dokumenta. Da ga povrnete na starejšo različico, to prvo izberite,  pritisnite na ''Uredi to stran'' in jo še shranite.
-
+Prikazana je stara različica tega dokumenta. Stran je mogoče povrniti na starejšo različico tako, da stran izberete, pritisnete na povezavo ''Uredi stran'' in stran nato shranite.
diff --git a/inc/lang/sl/searchpage.txt b/inc/lang/sl/searchpage.txt
index b41c6dd4433d17af835b988a9cae149f18b82fb8..736a36182cd637df571b86c9da48b692b2e15d52 100644
--- a/inc/lang/sl/searchpage.txt
+++ b/inc/lang/sl/searchpage.txt
@@ -1,5 +1,5 @@
-====== Išči ======
+====== Iskanje ======
 
-Spodaj so prikazani rezultati vašega iskanja. Če niste našli kar ste iskali, lahko ustvarite novo stran z imenom vaše poizvedbe, tako da uporabite gumb ''Uredi to stran''.
+Spodaj so izpisani rezultati iskanja. V kolikor rezultati niso skladni z zahtevami iskanja, je mogoče ustvariti  novo stran z nazivom vaše poizvedbe preko povezave ''Uredi stran''.
 
 ===== Rezultati =====
\ No newline at end of file
diff --git a/inc/lang/sl/showrev.txt b/inc/lang/sl/showrev.txt
index 00111ffc55f3befdfde4d8f981adbb79d34c528b..8383392176d711f1fe1970a3f50d99e916c86c41 100644
--- a/inc/lang/sl/showrev.txt
+++ b/inc/lang/sl/showrev.txt
@@ -1,2 +1,2 @@
-**To je stara različica tega dokumenta!**
+**Stara različica tega dokumenta!**
 ----
diff --git a/inc/lang/sl/subscr_digest.txt b/inc/lang/sl/subscr_digest.txt
index 983cab233c4ca8951a592fd92d990abfda8e945b..aeb548beb826eb3a79b7b6ab6e048f6211cc13df 100644
--- a/inc/lang/sl/subscr_digest.txt
+++ b/inc/lang/sl/subscr_digest.txt
@@ -1,20 +1,19 @@
 Pozdravljeni!
 
-Stran @PAGE@ v wikiju @TITLE@ je bila spremenjena.
-Tu so spremembe:
+Strani v imenskem prostoru @PAGE@ wiki spletišča @TITLE@ so spremenjene.
+Podrobnosti sprememb so navedene spodaj.
 
 ------------------------------------------------
 @DIFF@
 ------------------------------------------------
 
-Stara revizija: @OLDPAGE@
-Nova revizija: @NEWPAGE@
+Stara različica: @OLDPAGE@
+Nova različica : @NEWPAGE@
 
-Za odjavo pošiljanja sprememb se prijavite v wiki na naslovu
-@DOKUWIKIURL@, nato obiščite
+Za odjavo prejemanja podrobnosti sprememb, se je treba prijaviti na spletišče
+@DOKUWIKIURL@ in med možnostmi naročanja
 @SUBSCRIBE@
-in se odjavite od sprememb strani in/ali imenskega prostora.
+odjaviti prejemanje poročil sprememb strani ali imenskega prostora.
 
 --
-To sporočilo je generiral DokuWiki na naslovu
-@DUKOWIKIURL@
\ No newline at end of file
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
diff --git a/inc/lang/sl/subscr_list.txt b/inc/lang/sl/subscr_list.txt
index f4cfbc26846d2ff8047abed1a3fcdf7b3a929af5..253cb410417cf0fd736b396b2d7f04c9b11e7971 100644
--- a/inc/lang/sl/subscr_list.txt
+++ b/inc/lang/sl/subscr_list.txt
@@ -1,17 +1,16 @@
 Pozdravljeni!
 
-Strani v imenskem prostoru @PAGE@ wikija @TITLE@ so se spremenile.
-Tu so spremenjene strani:
+Strani v imenskem prostoru @PAGE@ wiki spletišča @TITLE@ so spremenjene.
+Podrobnosti sprememb so navedene spodaj.
 
 ------------------------------------------------
 @DIFF@
 ------------------------------------------------
 
-Za odjavo pošiljanja sprememb se prijavite v wiki na naslovu
-@DOKUWIKIURL@, nato obiščite
+Za odjavo prejemanja podrobnosti sprememb, se je treba prijaviti na spletišče
+@DOKUWIKIURL@ in med možnostmi naročanja
 @SUBSCRIBE@
-in se odjavite od sprememb strani in/ali imenskega prostora.
+odjaviti prejemanje poročil sprememb strani ali imenskega prostora.
 
 --
-To sporočilo je generiral DokuWiki na naslovu
-@DUKOWIKIURL@
\ No newline at end of file
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
diff --git a/inc/lang/sl/updateprofile.txt b/inc/lang/sl/updateprofile.txt
index 45aa7d92f45eba62843a7fe7dec9342ca85c7051..5e939f2f23d6d35619f2703180f4564e4fca6fd4 100644
--- a/inc/lang/sl/updateprofile.txt
+++ b/inc/lang/sl/updateprofile.txt
@@ -1,3 +1,3 @@
-===== Posodobite svoj profil računa =====
+===== Posodabljanje računa =====
 
-Posodobite le tista polja, ki jih želite spremeniti. Svojega uporabiškega imena ne morete spreminjati.
\ No newline at end of file
+Posodobiti ali spremeniti je mogoče le nekatere podatke. Uporabniškega imena ni mogoče spremeniti.
\ No newline at end of file
diff --git a/inc/lang/sl/uploadmail.txt b/inc/lang/sl/uploadmail.txt
index 6006bd3795cd63d6a6d2c197e6035fa889850c88..0479be75fe71715168dfea199d06a5d630af2012 100644
--- a/inc/lang/sl/uploadmail.txt
+++ b/inc/lang/sl/uploadmail.txt
@@ -1,13 +1,14 @@
-Datoteka je bila naložena v vaš DokuWiki. Tu so podatki:
+Datoteka je bila uspešno naložena na DokuWiki spletišče.
+Podrobnosti o datoteki:
 
-Datoteka: @MEDIA@
-Datum: @DATE@
-Brskalnik: @BROWSER@
-IP naslov: @IPADDRESS@
-Ponudnik: @HOSTNAME@
-Velikost: @SIZE@
-MIME tip: @MIME@
-Uporabnik: @USER@
+Datoteka  : @MEDIA@
+Datum     : @DATE@
+Brskalnik : @BROWSER@
+Naslov IP : @IPADDRESS@
+Ponudnik  : @HOSTNAME@
+Velikost  : @SIZE@
+Vrsta MIME: @MIME@
+Uporabnik : @USER@
 
 --
-Sporočilo je generiral DokuWiki na naslovu @DOKUWIKIURL@
\ No newline at end of file
+Sporočilo je samodejno ustvarjeno na spletišču @DOKUWIKIURL@
\ No newline at end of file
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index 0213ba28bc0697ce83e10a9ad101585a5116c1e0..47a54d2eaed67b199cf7c9a0f523908a7bfdf86f 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -8,7 +8,7 @@
  * lines starting with @author
  *
  * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesSq.php?view=co
- * @author Leonard Elezi leonard.elezi@depinfo.info
+ * @author Leonard Elezi <leonard.elezi@depinfo.info>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -49,6 +49,7 @@ $lang['btn_draft']             = 'Redakto skicën';
 $lang['btn_recover']           = 'Rekupero skicën';
 $lang['btn_draftdel']          = 'Fshi skicën';
 $lang['btn_revert']            = 'Kthe si më parë';
+$lang['btn_register']          = 'Regjsitrohuni';
 $lang['loggedinas']            = 'Regjistruar si ';
 $lang['user']                  = 'Nofka e përdoruesit:';
 $lang['pass']                  = 'Fjalëkalimi';
@@ -58,7 +59,6 @@ $lang['passchk']               = 'Edhe një herë';
 $lang['remember']              = 'Më mbaj mend';
 $lang['fullname']              = 'Emri i vërtetë';
 $lang['email']                 = 'Adresa e email-it*';
-$lang['register']              = 'Regjsitrohuni';
 $lang['profile']               = 'Profili i përdoruesit';
 $lang['badlogin']              = 'Na vjen keq, emri ose fjalëkalimi është gabim.';
 $lang['minoredit']             = 'Ndryshime të Vogla';
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 71dde4062823f185807f87fff1f250fb2865cf9d..b35956f03326987a96b177b37eef3bbe80629b40 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -4,8 +4,7 @@
  *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Filip Brcic <brcha@users.sourceforge.net>
- * @author Иван Петровић petrovicivan@ubuntusrbija.org
- * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org>
+ * @author Иван Петровић (Ivan Petrovic) <petrovicivan@ubuntusrbija.org>
  * @author Miroslav Å olti <solti.miroslav@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
@@ -47,6 +46,7 @@ $lang['btn_draft']             = 'Измени нацрт';
 $lang['btn_recover']           = 'Опорави нацрт';
 $lang['btn_draftdel']          = 'Обриши нацрт';
 $lang['btn_revert']            = 'Врати на пређашњу верзију';
+$lang['btn_register']          = 'Региструј се';
 $lang['loggedinas']            = 'Пријављен као';
 $lang['user']                  = 'Корисничко име';
 $lang['pass']                  = 'Лозинка';
@@ -56,7 +56,6 @@ $lang['passchk']               = 'поново';
 $lang['remember']              = 'Запамти ме';
 $lang['fullname']              = 'Име и презиме';
 $lang['email']                 = 'Е-адреса';
-$lang['register']              = 'Региструј се';
 $lang['profile']               = 'Кориснички профил';
 $lang['badlogin']              = 'Извините, није добро корисничко име или шифра.';
 $lang['minoredit']             = 'Мала измена';
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index 09dec8edd5d6e19a5aa50b857d3679149306ae6b..801e2d879b69b9b4e493d3da3c51f1cf23fc786b 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -7,15 +7,15 @@
  * @author Per Foreby <per@foreby.se>
  * @author Nicklas Henriksson <nicklas[at]nihe.se>
  * @author HÃ¥kan Sandell <hakan.sandell[at]mydata.se>
+ * @author HÃ¥kan Sandell <hakan.sandell@home.se>
  * @author Dennis Karlsson
  * @author Tormod Otter Johansson <tormod@latast.se>
+ * @author Tormod Johansson <tormod.otter.johansson@gmail.com>
  * @author emil@sys.nu
  * @author Pontus Bergendahl <pontus.bergendahl@gmail.com>
- * @author Tormod Johansson tormod.otter.johansson@gmail.com
  * @author Emil Lind <emil@sys.nu>
  * @author Bogge Bogge <bogge@bogge.com>
  * @author Peter Åström <eaustreum@gmail.com>
- * @author HÃ¥kan Sandell <hakan.sandell@home.se>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -49,10 +49,6 @@ $lang['btn_back']              = 'Tillbaka';
 $lang['btn_backlink']          = 'Tillbakalänkar';
 $lang['btn_backtomedia']       = 'Tillbaka till val av Mediafil';
 $lang['btn_subscribe']         = 'Prenumerera på ändringar';
-$lang['btn_unsubscribe']       = 'Säg upp prenumeration på ändringar';
-$lang['btn_subscribens']       = 'Prenumerera på namnrymdsändringar';
-$lang['btn_unsubscribens']     = 'Sluta prenumerera på namnrymdsändringar
-';
 $lang['btn_profile']           = 'Uppdatera profil';
 $lang['btn_reset']             = 'Återställ';
 $lang['btn_resendpwd']         = 'Skicka nytt lösenord';
@@ -60,6 +56,7 @@ $lang['btn_draft']             = 'Redigera utkast';
 $lang['btn_recover']           = 'Ã…terskapa utkast';
 $lang['btn_draftdel']          = 'Radera utkast';
 $lang['btn_revert']            = 'Återställ';
+$lang['btn_register']          = 'Registrera';
 $lang['loggedinas']            = 'Inloggad som';
 $lang['user']                  = 'Användarnamn';
 $lang['pass']                  = 'Lösenord';
@@ -69,7 +66,6 @@ $lang['passchk']               = 'en gång till';
 $lang['remember']              = 'Kom ihåg mig';
 $lang['fullname']              = 'Namn';
 $lang['email']                 = 'E-post';
-$lang['register']              = 'Registrera';
 $lang['profile']               = 'Användarprofil';
 $lang['badlogin']              = 'Felaktigt användarnamn eller lösenord.';
 $lang['minoredit']             = 'Små ändringar';
@@ -106,7 +102,35 @@ $lang['txt_overwrt']           = 'Skriv över befintlig fil';
 $lang['lockedby']              = 'LÃ¥st av';
 $lang['lockexpire']            = 'Lås upphör att gälla';
 $lang['willexpire']            = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.';
-$lang['js']['notsavedyet']     = "Det finns ändringar som inte är sparade.\nÄr du säker på att du vill fortsätta?";
+$lang['js']['notsavedyet']     = 'Det finns ändringar som inte är sparade.
+Är du säker på att du vill fortsätta?';
+$lang['js']['searchmedia']     = 'Sök efter filer';
+$lang['js']['keepopen']        = 'Lämna fönstret öppet efter val av fil';
+$lang['js']['hidedetails']     = 'Dölj detaljer';
+$lang['js']['mediatitle']      = 'Länkinställningar';
+$lang['js']['mediadisplay']    = 'Länktyp';
+$lang['js']['mediaalign']      = 'Justering';
+$lang['js']['mediasize']       = 'Bildstorlek';
+$lang['js']['mediatarget']     = 'Länköppning';
+$lang['js']['mediaclose']      = 'Stäng';
+$lang['js']['mediadisplayimg'] = 'Visa bilden.';
+$lang['js']['mediadisplaylnk'] = 'Visa endast länken.';
+$lang['js']['mediasmall']      = 'Liten storlek';
+$lang['js']['mediamedium']     = 'Mellanstor storlek';
+$lang['js']['medialarge']      = 'Stor storlek';
+$lang['js']['mediaoriginal']   = 'Originalstorlek';
+$lang['js']['mediadirect']     = 'Direktlänk till originalet';
+$lang['js']['medianolnk']      = 'Ingen länk';
+$lang['js']['medianolink']     = 'Länka inte bilden';
+$lang['js']['medialeft']       = 'Justera bilden till vänster.';
+$lang['js']['mediaright']      = 'Justera bilden till höger.';
+$lang['js']['mediacenter']     = 'Centrera bilden.';
+$lang['js']['nosmblinks']      = 'Länkning till Windowsresurser fungerar bara med Microsofts Internet Explorer.
+Du kan fortfarande klippa och klistra in länken om du använder en annan webbläsare än MSIE.';
+$lang['js']['linkwiz']         = 'Snabbguide Länkar';
+$lang['js']['linkto']          = 'Länk till:';
+$lang['js']['del_confirm']     = 'Vill du verkligen radera?';
+$lang['js']['mu_btn']          = 'Ladda upp flera filer samtidigt';
 $lang['rssfailed']             = 'Ett fel uppstod när detta RSS-flöde skulle hämtas: ';
 $lang['nothingfound']          = 'Inga filer hittades.';
 $lang['mediaselect']           = 'Mediafiler';
@@ -124,15 +148,7 @@ $lang['deletefail']            = 'Kunde inte radera "%s" - kontrollera filskydd.
 $lang['mediainuse']            = 'Filen "%s" har inte raderats - den används fortfarande.';
 $lang['namespaces']            = 'Namnrymder';
 $lang['mediafiles']            = 'Tillgängliga filer i';
-$lang['js']['searchmedia']     = 'Sök efter filer';
-$lang['js']['keepopen']        = 'Lämna fönstret öppet efter val av fil';
-$lang['js']['hidedetails']     = 'Dölj detaljer';
-$lang['js']['nosmblinks']      = 'Länkning till Windowsresurser fungerar bara med Microsofts Internet Explorer.
-Du kan fortfarande klippa och klistra in länken om du använder en annan webbläsare än MSIE.';
-$lang['js']['linkwiz']         = 'Snabbguide Länkar';
-$lang['js']['linkto']          = 'Länk till:';
-$lang['js']['del_confirm']     = 'Vill du verkligen radera?';
-$lang['js']['mu_btn']          = 'Ladda upp flera filer samtidigt';
+$lang['accessdenied']          = 'Du får inte läsa den här sidan.';
 $lang['mediausage']            = 'Använd följande syntax för att referera till denna fil:';
 $lang['mediaview']             = 'Visa originalfilen';
 $lang['mediaroot']             = 'rot';
@@ -148,6 +164,9 @@ $lang['current']               = 'aktuell';
 $lang['yours']                 = 'Din version';
 $lang['diff']                  = 'visa skillnader mot aktuell version';
 $lang['diff2']                 = 'Visa skillnader mellan valda versioner';
+$lang['difflink']              = 'Länk till den här jämförelsesidan';
+$lang['diff_type']             = 'Visa skillnader:';
+$lang['diff_side']             = 'Sida vid sida';
 $lang['line']                  = 'Rad';
 $lang['breadcrumb']            = 'Spår';
 $lang['youarehere']            = 'Här är du';
@@ -204,11 +223,12 @@ $lang['img_copyr']             = 'Copyright';
 $lang['img_format']            = 'Format';
 $lang['img_camera']            = 'Kamera';
 $lang['img_keywords']          = 'Nyckelord';
-$lang['subscribe_success']     = 'Lade till %s i prenumerationslistan för %s';
-$lang['subscribe_error']       = 'Fel vid tillägg av %s i prenumerationslistan för %s';
-$lang['subscribe_noaddress']   = 'Det finns ingen adress knuten till ditt konto, det går inte att lägga till dig i prenumerationslistan';
-$lang['unsubscribe_success']   = 'Tog bort %s från prenumerationslistan för %s';
-$lang['unsubscribe_error']     = 'Fel vid borttagning %s från prenumerationslistan list för %s';
+$lang['subscr_m_new_header']   = 'Lägg till prenumeration';
+$lang['subscr_m_current_header'] = 'Nuvarande prenumerationer';
+$lang['subscr_m_unsubscribe']  = 'Prenumerera';
+$lang['subscr_m_subscribe']    = 'Avsluta prenumeration';
+$lang['subscr_m_receive']      = 'Ta emot';
+$lang['subscr_style_every']    = 'skicka epost vid varje ändring';
 $lang['authmodfailed']         = 'Felaktiga inställningar för användarautentisering. Var vänlig meddela wikiadministratören.';
 $lang['authtempfail']          = 'Tillfälligt fel på användarautentisering. Om felet kvarstår, var vänlig meddela wikiadministratören.';
 $lang['i_chooselang']          = 'Välj språk';
@@ -259,3 +279,4 @@ $lang['days']                  = '%d dagar sedan';
 $lang['hours']                 = '%d timmar sedan';
 $lang['minutes']               = '%d minuter sedan';
 $lang['seconds']               = '%d sekunder sedan';
+$lang['wordblock']             = 'Din ändring sparades inte för att den innehåller otillåten text (spam).';
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index ea27793b8f02ba7deeb4d9728a0c01b9a9881246..d40f30f4abae27c4dbbf181b9380dce860e112a4 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -9,7 +9,6 @@
  *
  * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesTh.php?view=co
  * @author Komgrit Niyomrath <n.komgrit@gmail.com>
- * @author Kittithat Arnontavilas mrtomyum@gmail.com
  * @author Arthit Suriyawongkul <arthit@gmail.com>
  * @author Kittithat Arnontavilas <mrtomyum@gmail.com>
  * @author Thanasak Sompaisansin <jombthep@gmail.com>
@@ -56,6 +55,7 @@ $lang['btn_draft']             = 'แก้ไขเอกสารฉบับ
 $lang['btn_recover']           = 'กู้คืนเอกสารฉบับร่าง';
 $lang['btn_draftdel']          = 'ลบเอกสารฉบับร่าง';
 $lang['btn_revert']            = 'กู้คืน';
+$lang['btn_register']          = 'สร้างบัญชีผู้ใช้';
 $lang['loggedinas']            = 'ลงชื่อเข้าใช้เป็น';
 $lang['user']                  = 'ชื่อผู้ใช้:';
 $lang['pass']                  = 'รหัสผ่าน';
@@ -65,7 +65,6 @@ $lang['passchk']               = 'พิมพ์รหัสผ่านอี
 $lang['remember']              = 'จำชื่อและรหัสผ่าน';
 $lang['fullname']              = 'ชื่อจริง:';
 $lang['email']                 = 'อีเมล:';
-$lang['register']              = 'สร้างบัญชีผู้ใช้';
 $lang['profile']               = 'ข้อมูลส่วนตัวผู้ใช้';
 $lang['badlogin']              = 'ขัดข้อง:';
 $lang['minoredit']             = 'เป็นการแก้ไขเล็กน้อย';
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 0c8c1ff3fe64fb565fed132ed0391c34838b4584..0509113b0f934e6552de17111624aca105c27707 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -48,6 +48,7 @@ $lang['btn_draft']             = 'Taslağı düzenle';
 $lang['btn_recover']           = 'Taslağı geri yükle';
 $lang['btn_draftdel']          = 'Taslağı sil';
 $lang['btn_revert']            = 'Geri Yükle';
+$lang['btn_register']          = 'Kayıt ol';
 $lang['loggedinas']            = 'GiriÅŸ ismi';
 $lang['user']                  = 'Kullanıcı ismi';
 $lang['pass']                  = 'Parola';
@@ -57,7 +58,6 @@ $lang['passchk']               = 'Bir kez daha girin';
 $lang['remember']              = 'Beni hatırla';
 $lang['fullname']              = 'Tam isim';
 $lang['email']                 = 'E-posta';
-$lang['register']              = 'Kayıt ol';
 $lang['profile']               = 'Kullanıcı Bilgileri';
 $lang['badlogin']              = 'Üzgünüz, Kullanıcı adı veya şifre yanlış oldu.';
 $lang['minoredit']             = 'Küçük Değişiklikler';
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index d3d5d7acff44a8bbdee5511906883b7b95aa071f..e5f14879f84fdd69012f27a17775d6f2f60c3961 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -5,10 +5,9 @@
  * @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
  * @author Oleksandr Kunytsia <okunia@gmail.com>
- * @author Uko uko@uar.net
- * @author Ulrikhe Lukoie  <lukoie@gmail>.com
+ * @author Uko <uko@uar.net>
+ * @author Ulrikhe Lukoie  <lukoie@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -49,6 +48,7 @@ $lang['btn_draft']             = 'Редагувати чернетку';
 $lang['btn_recover']           = 'Відновити чернетку';
 $lang['btn_draftdel']          = 'Знищити чернетку';
 $lang['btn_revert']            = 'Відновити';
+$lang['btn_register']          = 'Реєстрація';
 $lang['loggedinas']            = 'Ви';
 $lang['user']                  = 'Користувач';
 $lang['pass']                  = 'Пароль';
@@ -58,7 +58,6 @@ $lang['passchk']               = 'ще раз';
 $lang['remember']              = 'Запам\'ятати мене';
 $lang['fullname']              = 'Повне ім\'я';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = 'Реєстрація';
 $lang['profile']               = 'Профіль користувача';
 $lang['badlogin']              = 'Вибачте, невірне ім\'я чи пароль.';
 $lang['minoredit']             = 'Незначні зміни';
diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php
index 750433910208625dd3e872d7da46711d5da88a7d..89c9e9cfcb1a56132a9ab7bae2b814efc1f44f10 100644
--- a/inc/lang/vi/lang.php
+++ b/inc/lang/vi/lang.php
@@ -27,6 +27,7 @@ $lang['btn_logout'] = 'Thoát';
 $lang['btn_admin']  = 'Quản lý';
 $lang['btn_update'] = 'Cập nhật';
 $lang['btn_delete'] = 'Xoá';
+$lang['btn_register'] = 'Đăng ký';
 
 $lang['loggedinas'] = 'Username đang dùng';
 $lang['user']       = 'Username';
@@ -34,7 +35,6 @@ $lang['pass']       = 'Password';
 $lang['remember']   = 'Lưu username/password lại';
 $lang['fullname']   = 'Họ và tên';
 $lang['email']      = 'E-Mail';
-$lang['register']   = 'Đăng ký';
 $lang['badlogin']   = 'Username hoặc password không đúng.';
 
 $lang['regmissing'] = 'Bạn cần điền vào tất cả các trường';
diff --git a/inc/lang/zh-tw/backlinks.txt b/inc/lang/zh-tw/backlinks.txt
index 381a76812cf0f99361046e032af8a89c330a4f47..5b36728e7e4d052f91807bb580821d2876a9800e 100644
--- a/inc/lang/zh-tw/backlinks.txt
+++ b/inc/lang/zh-tw/backlinks.txt
@@ -1,5 +1,4 @@
-====== 被引用的連結(Backlinks) ======
-
-這裡是有引用、連結到原先頁面的清單。
+====== 反向連結 ======
 
+這裡是引用、連結到目前頁面的頁面清單。
 
diff --git a/inc/lang/zh-tw/conflict.txt b/inc/lang/zh-tw/conflict.txt
index e52613dc828895605b112611d3242580b0636235..4f31f665f1b2a2bef0b3f2f9773e0309b09aa051 100644
--- a/inc/lang/zh-tw/conflict.txt
+++ b/inc/lang/zh-tw/conflict.txt
@@ -1,4 +1,5 @@
-====== 有一個更新的版本已存在 ======
+====== 已存在更新版本 ======
 
-有一個您所編輯的更新版本已經存在了。\\ 這狀況之所以會發生:乃是因為當您正在編修它的時候,而其他使用者已變更這份文件。\\ 請檢驗以下的差異,然後決定要用哪一份。\\ 若您選擇「''儲存''」,那您的版本就會被存下來了。而「取消」則會保留為現在這版本。
+此檔案已存在更新的版本。這是因為有其他使用者在您編輯時變更了這份文件。
 
+請仔細檢查以下差異,再決定保留哪份。您可選擇「儲存」您的版本或「取消」保留目前版本。
\ No newline at end of file
diff --git a/inc/lang/zh-tw/denied.txt b/inc/lang/zh-tw/denied.txt
index 20c512abccfbcf79ea62b4e2e9326c389b607df7..5a4d483a549e5207470ff5bad5b9734ea2e78d57 100644
--- a/inc/lang/zh-tw/denied.txt
+++ b/inc/lang/zh-tw/denied.txt
@@ -1,4 +1,4 @@
-====== 拒絕尚未授權 ======
+====== 權限拒絕 ======
 
-很抱歉您權限不夠以致無法繼續。或許您忘了先登入您的帳號嗎?
+抱歉,您沒有足夠權限繼續執行。或許您忘了登入?
 
diff --git a/inc/lang/zh-tw/diff.txt b/inc/lang/zh-tw/diff.txt
index a064f81edd18d98c30c462345afb9e72b2ffc0a0..b2b662ec35620a2b057e0113c054dee42e319904 100644
--- a/inc/lang/zh-tw/diff.txt
+++ b/inc/lang/zh-tw/diff.txt
@@ -1,4 +1,4 @@
 ====== 差異處 ======
 
-這裡會顯示出所選的版次與目前版次的差異處。
+這裡顯示二個版本的差異處。
 
diff --git a/inc/lang/zh-tw/draft.txt b/inc/lang/zh-tw/draft.txt
index 81a092be0976fe03450ce604a0c6b1f34d884fdc..f14702efbc871bd26be2410472296c7fdbb1635f 100644
--- a/inc/lang/zh-tw/draft.txt
+++ b/inc/lang/zh-tw/draft.txt
@@ -1,5 +1,5 @@
 ====== 發現草稿檔案 ======
 
-您上次編輯此頁面並未正確的完成。DokuWiki在您編輯的時候自動儲存一份草稿使得您可以繼續編輯。以下您可以觀看上次編輯的資料。
+您上次的編輯程序並未正確完成。DokuWiki 已在您編輯時自動儲存了一份草稿使您可以繼續編輯。以下是上次的編輯資料。
 
-請決定你要//復原//您遺失的編輯文件,//刪除//這份草稿,或者//取消//目前的編輯程序。
+請決定要//復原//您遺失的編輯文件,//刪除//這份草稿,或者//取消//編輯程序。
diff --git a/inc/lang/zh-tw/edit.txt b/inc/lang/zh-tw/edit.txt
index 5be7fbb4e4f9510b2e998ed03b0eef3435993684..bbe5bb8ed27e37ac032a12c3a2c14220855506f0 100644
--- a/inc/lang/zh-tw/edit.txt
+++ b/inc/lang/zh-tw/edit.txt
@@ -1 +1 @@
-提示:編修本頁並按「''儲存''」即可。 不懂 Wiki 語法?沒關係點一下 [[wiki:syntax|中文語法]] 。若您覺得可讓本文品質「**更好**」的話,那就請繼續吧 :) \\    但若只想練習或測試東西的話,那麼請先多利用 [[playground:playground|新手試煉場]] 來試煉您的身手吧。
+編輯本頁並按下''儲存''即可。可在[[wiki:syntax|維基語法]]找到語法說明。請只在能讓本文品質「**更好**」時才編輯。如果只是要測試,請使用 [[playground:playground|遊樂場]]。
diff --git a/inc/lang/zh-tw/editrev.txt b/inc/lang/zh-tw/editrev.txt
index b344e077264e2190cdd4db6eb5745bd477dc28ce..96f9a7c6afe3e43b486a276bc80b515b3537b617 100644
--- a/inc/lang/zh-tw/editrev.txt
+++ b/inc/lang/zh-tw/editrev.txt
@@ -1,2 +1,2 @@
-**您目前載入的是本份文件的舊版!!** 若存檔的話,那這些資料就會被存成另一份了喔。
+**您目前載入的是本份文件的舊版!** 您如果存檔,這些資料就會被存成另一份。
 ----
diff --git a/inc/lang/zh-tw/index.txt b/inc/lang/zh-tw/index.txt
index 961095bff1f2b4c85c20295e379ea14849b6b05c..11ec223d93244f0d3139049b210d7fd3a88d31f6 100644
--- a/inc/lang/zh-tw/index.txt
+++ b/inc/lang/zh-tw/index.txt
@@ -1,3 +1,3 @@
-====== 索引頁 ======
+====== 站台地圖 ======
 
-目前您所看到的是用 [[doku>namespaces|namespaces]] 來排序目前所有可用的頁面清單。\\ 請直接按您想要的頁面或者用「顯示頁面」來檢視目前所在頁面
+這個站台地圖列出了所有允許的頁面,依 [[doku>namespaces|命名空間]] 排序。
diff --git a/inc/lang/zh-tw/install.html b/inc/lang/zh-tw/install.html
index 879c152b599e8cffbdabea4c138b73429d0fb334..88af0b3940b74f3095e79b8a2ba77c133d4d3032 100644
--- a/inc/lang/zh-tw/install.html
+++ b/inc/lang/zh-tw/install.html
@@ -1,8 +1,8 @@
-<p>本页面旨在帮助您完成第一次安装和配置 <a href="http://dokuwiki.org">Dokuwiki</a>。关于安装工具的更多信息请参阅其 <a href="http://dokuwiki.org/installer">官方文档页面</a>。</p>
+<p>本頁面旨在幫助您完成第一次安装和配置 <a href="http://dokuwiki.org">Dokuwiki</a>。關於安裝工具的更多訊息請參閱 <a href="http://dokuwiki.org/installer">官方文檔頁面</a>。</p>
 
-<p>DokuWiki 使用普通的文件保存维基页面和其他与这些页面挂钩的信息(例如:图像,搜索索引,修订记录等)。为了能正常运行,DokuWiki <strong>必须</strong> 拥有针对那些路径和文件的写权限。本安装工具不能用于设置这些权限。对权限的操作通常通过命令行或使用您的网络服务提供商的 FTP 或控制面板(例如 cPanel)进行操作。</p>
+<p>DokuWiki 使用普通檔案儲存維基頁面以及與頁面相關的訊息(例如:圖像,搜尋索引,修訂記錄等)。為了正常運作,DokuWiki <strong>必須</strong> 擁有針對那些路徑和檔案的寫入權限。本安裝工具無法設定目錄權限,這通常要透過命令行、FTP 或您主機上的控制台(如cPanel)進行。</p>
 
-<p>本安装工具将设置您的 DokuWiki 配置 <acronym title="访问控制列表">ACL</acronym>,它能让管理员登录并使用“管理”功能来安装插件,管理用户,管理访问权限和其他配置设置。它并不是 DokuWiki 正常运行所必须的,但安装之后它将更方便您的管理。</p>
+<p>本安裝工具將設定您的 DokuWiki 用於 <acronym title="訪問控制列表">ACL</acronym> 的配置檔,它能讓管理員登入並使用「管理」功能來安裝插件、管理用户、管理訪問權限和其他配置設定。它並不是 DokuWiki 正常運作所必須,但安裝之後將更方便管理。</p>
 
-<p>有经验的用户或有特殊需求的用户请参阅更详细的 <a href="http://dokuwiki.org/install">安装指南</a>
-和 <a href="http://dokuwiki.org/config">配置设置</a>。</p>
\ No newline at end of file
+<p>有經驗的用戶或有特殊需求的用戶請參閱更詳細的 <a href="http://dokuwiki.org/install">安裝指南</a>
+和 <a href="http://dokuwiki.org/config">配置設定</a>。</p>
\ No newline at end of file
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index eca7de4c87b1c63fd32dbb6d121c0479effcc9aa..5bf790a00a61c3bbeba3964cf28cd5a2c03176c5 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -7,8 +7,8 @@
  * @author Li-Jiun Huang <ljhuang.tw@gmail.com>
  * @author http://www.chinese-tools.com/tools/converter-simptrad.html
  * @author Wayne San <waynesan@zerozone.tw>
- * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -18,7 +18,7 @@ $lang['singlequoteopening']    = '‘';
 $lang['singlequoteclosing']    = '’';
 $lang['apostrophe']            = '’';
 $lang['btn_edit']              = '編修本頁';
-$lang['btn_source']            = '顯示頁面來源';
+$lang['btn_source']            = '顯示原始碼';
 $lang['btn_show']              = '顯示頁面';
 $lang['btn_create']            = '建立此頁';
 $lang['btn_search']            = '搜尋';
@@ -31,7 +31,7 @@ $lang['btn_revs']              = '舊版';
 $lang['btn_recent']            = '最近更新';
 $lang['btn_upload']            = '上傳';
 $lang['btn_cancel']            = '取消';
-$lang['btn_index']             = '索引頁';
+$lang['btn_index']             = '站台地圖';
 $lang['btn_secedit']           = '改這段';
 $lang['btn_login']             = '登入';
 $lang['btn_logout']            = '登出';
@@ -42,9 +42,6 @@ $lang['btn_back']              = '回上一步';
 $lang['btn_backlink']          = '反向連結';
 $lang['btn_backtomedia']       = '重新選擇圖檔';
 $lang['btn_subscribe']         = '訂閱更動通知';
-$lang['btn_unsubscribe']       = '退訂更動通知';
-$lang['btn_subscribens']       = '訂閱命名空間更改';
-$lang['btn_unsubscribens']     = '退訂命名空間更改';
 $lang['btn_profile']           = '更新個人資料';
 $lang['btn_reset']             = '資料重設';
 $lang['btn_resendpwd']         = '寄新密碼';
@@ -52,108 +49,132 @@ $lang['btn_draft']             = '編輯草稿';
 $lang['btn_recover']           = '復原草稿';
 $lang['btn_draftdel']          = '捨棄草稿';
 $lang['btn_revert']            = '復原';
+$lang['btn_register']          = '註冊';
 $lang['loggedinas']            = '登入為';
 $lang['user']                  = '帳號';
 $lang['pass']                  = '密碼';
-$lang['newpass']               = '新的密碼';
-$lang['oldpass']               = '目前的密碼';
-$lang['passchk']               = '再次打新的密碼';
+$lang['newpass']               = '新密碼';
+$lang['oldpass']               = '目前密碼';
+$lang['passchk']               = '確認密碼';
 $lang['remember']              = '記住帳號密碼';
-$lang['fullname']              = '暱稱';
+$lang['fullname']              = '真實姓名';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = '註冊';
 $lang['profile']               = '使用者個人資料';
 $lang['badlogin']              = '很抱歉,您的使用者名稱或密碼可能有錯誤';
-$lang['minoredit']             = '次要性的修改';
-$lang['draftdate']             = '草稿自動存檔於';
-$lang['nosecedit']             = '此頁面已經同時被修改,部份過時的資料取代了全頁。';
-$lang['regmissing']            = '很抱歉,所有的欄位都要填哦';
-$lang['reguexists']            = '很抱歉,已有人註冊該帳號了喔';
-$lang['regsuccess']            = '使用者已建立,密碼已經用 email 寄到您信箱了唷。';
+$lang['minoredit']             = '小修改';
+$lang['draftdate']             = '草稿已自動存檔於';
+$lang['nosecedit']             = '頁面在這之間已被修改,過時的區段資料已載入全頁取代。';
+$lang['regmissing']            = '很抱歉,所有欄位都要填寫';
+$lang['reguexists']            = '很抱歉,本帳號已被註冊';
+$lang['regsuccess']            = '使用者已建立,密碼已寄發至該 email。';
 $lang['regsuccess2']           = '使用者已建立';
-$lang['regmailfail']           = '寄出密碼信似乎發生錯誤,請跟管理者聯絡!';
-$lang['regbadmail']            = '您輸入的 email 似乎不對,如果您認為是正確的,請與管理者聯絡。';
-$lang['regbadpass']            = '兩次打的密碼不一致,請再重試,謝謝。';
+$lang['regmailfail']           = '寄出密碼信似乎發生錯誤,請跟管理員聯絡!';
+$lang['regbadmail']            = '您輸入的 email 似乎不對,如果您認為是正確的,請與管理員聯絡。';
+$lang['regbadpass']            = '兩次輸入的密碼不一致,請再試一次。';
 $lang['regpwmail']             = '您的 DokuWiki 帳號密碼';
-$lang['reghere']               = '您還沒有帳號對吧?來註冊一個吧。';
-$lang['profna']                = '本 wiki 不開放修改個人資料';
+$lang['reghere']               = '您還沒有帳號嗎?註冊一個吧。';
+$lang['profna']                = '本維基不開放修改個人資料';
 $lang['profnochange']          = '未做任何變更';
-$lang['profnoempty']           = '帳號或 email 地址不可以沒有寫喔!';
+$lang['profnoempty']           = '帳號或 email 地址不可空白!';
 $lang['profchanged']           = '個人資料已成功更新囉。';
-$lang['pwdforget']             = '忘記密碼嗎?寄新密碼!';
-$lang['resendna']              = '本 wiki 不開放重寄新密碼';
+$lang['pwdforget']             = '忘記密碼了?索取新密碼!';
+$lang['resendna']              = '本維基不開放重寄密碼';
 $lang['resendpwd']             = '寄新密碼給';
-$lang['resendpwdmissing']      = '很抱歉,您必須全填這些資料才可以';
-$lang['resendpwdnouser']       = '很抱歉,資料庫內查無此人';
-$lang['resendpwdbadauth']      = '對不起,該認証碼錯誤。請使用完整的確認鏈接。';
-$lang['resendpwdconfirm']      = '確認鏈接已經通過郵件發送給您了。';
-$lang['resendpwdsuccess']      = '新密碼函已經以 email 寄出了。';
-$lang['license']               = '如未特別註明,此 wiki 上得內容都是根據以下的授權方式:';
-$lang['licenseok']             = '注意:編輯此頁面表示你已同意以下的授權方式:';
+$lang['resendpwdmissing']      = '抱歉,您必須填寫所有欄位。';
+$lang['resendpwdnouser']       = '抱歉,資料庫內找不到這個使用者';
+$lang['resendpwdbadauth']      = '抱歉,認證碼無效。請確認您使用了完整的確認連結。';
+$lang['resendpwdconfirm']      = '確認連結已通過郵件發送給您了。';
+$lang['resendpwdsuccess']      = '您的新密碼已寄出。';
+$lang['license']               = '若未特別註明,此維基上的內容都是採用以下授權方式:';
+$lang['licenseok']             = '注意:編輯此頁面表示您已同意以下的授權方式:';
 $lang['searchmedia']           = '搜尋檔名:';
 $lang['searchmedia_in']        = '在 %s 裡搜尋';
 $lang['txt_upload']            = '請選擇要上傳的檔案';
-$lang['txt_filename']          = '請輸入要存在 wiki 內的檔案名稱 (非必要)';
+$lang['txt_filename']          = '請輸入要存在維基內的檔案名稱 (非必要)';
 $lang['txt_overwrt']           = '是否要覆蓋原有檔案';
 $lang['lockedby']              = '目前已被下列人員鎖定';
 $lang['lockexpire']            = '預計解除鎖定於';
-$lang['willexpire']            = '您目前編輯這頁的鎖定將會在一分鐘內解除。\若要避免發生意外,請按「預覽」鍵來重新設定鎖定狀態';
-$lang['js']['notsavedyet']     = "有尚未儲存的變更將會遺失。\n真的要繼續嗎?";
-$lang['rssfailed']             = '當抓取餵送過來的 RSS 資料時發生錯誤: ';
-$lang['nothingfound']          = '沒找到任何結果。';
-$lang['mediaselect']           = '選擇圖檔';
-$lang['fileupload']            = '上傳圖檔';
-$lang['uploadsucc']            = '上傳成功';
-$lang['uploadfail']            = '上傳失敗。或許權限設定錯誤了嗎?';
-$lang['uploadwrong']           = '拒絕上傳。該檔案類型不被支援。';
-$lang['uploadexist']           = '該檔案已有存在了喔,故取消上傳動作。';
-$lang['uploadbadcontent']      = '上傳檔案的內容不符合 %s 檔的副檔名';
-$lang['uploadspam']            = '被SPAM黑名單限制上傳';
-$lang['uploadxss']             = '因為可能惡意的內容被限制上傳';
-$lang['uploadsize']            = '上傳的檔案尺寸過大(最大:%s)';
-$lang['deletesucc']            = '"%s" 檔已刪除完畢。';
-$lang['deletefail']            = '"%s" 檔無法刪除,請先檢查權限設定。';
-$lang['mediainuse']            = '"%s" 檔因還在使用中,故目前尚無法刪除。';
-$lang['namespaces']            = '命名空間';
-$lang['mediafiles']            = '可用的檔案有';
+$lang['willexpire']            = '本頁的編輯鎖定將在一分鐘內到期。要避免發生衝突,請按「預覽」鍵重設鎖定計時。';
+$lang['js']['notsavedyet']     = '未儲存的變更將會遺失,繼續嗎?';
 $lang['js']['searchmedia']     = '搜尋檔案';
-$lang['js']['keepopen']        = '於選擇時保持視窗開啟';
+$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']['medialnk']        = '連向內容頁面';
+$lang['js']['mediadirect']     = '連向原始圖片';
+$lang['js']['medianolnk']      = '不連結';
+$lang['js']['medianolink']     = '不連結圖像';
+$lang['js']['medialeft']       = '圖像靠左對齊';
+$lang['js']['mediaright']      = '圖像靠右對齊';
+$lang['js']['mediacenter']     = '圖像置中對齊';
+$lang['js']['medianoalign']    = '不對齊';
 $lang['js']['nosmblinks']      = '只有在 Microsoft IE 下才能執行「連結到 Windows shares」。
-不過您仍可拷貝、複製這連結';
+不過您仍可複製及貼上這個連結';
 $lang['js']['linkwiz']         = '建立連結精靈';
-$lang['js']['linkto']          = '連至:';
-$lang['js']['del_confirm']     = '確定要刪除該管理規則?';
+$lang['js']['linkto']          = '連結至:';
+$lang['js']['del_confirm']     = '確定刪除選取的項目?';
 $lang['js']['mu_btn']          = '上傳多個檔案';
+$lang['rssfailed']             = '擷取 RSS 饋送檔時發生錯誤:';
+$lang['nothingfound']          = '沒找到任何結果。';
+$lang['mediaselect']           = '媒體檔案';
+$lang['fileupload']            = '上傳媒體檔案';
+$lang['uploadsucc']            = '上傳成功';
+$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['mediafiles']            = '可用的檔案有';
+$lang['accessdenied']          = '您不被允許檢視此頁面';
 $lang['mediausage']            = '使用以下的語法來連結此檔案:';
 $lang['mediaview']             = '檢視原始檔案';
 $lang['mediaroot']             = 'root';
-$lang['mediaupload']           = '上傳文件至當前的命名空間。要創建次級命名空間,將其名稱加在“上傳並重命名為”文件名的前面,並用英文冒號隔開';
-$lang['mediaextchange']        = '檔案類型已由 .%s 變更為 .%s 囉!';
+$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['toc']                   = '本頁目錄';
+$lang['toc']                   = '目錄表';
 $lang['current']               = '目前版本';
 $lang['yours']                 = '您的版本';
-$lang['diff']                  = '顯示跟目前版本的差異';
-$lang['diff2']                 = '顯示與選擇版本的差異';
+$lang['diff']                  = '顯示與目前版本的差異';
+$lang['diff2']                 = '顯示選擇版本間的差異';
+$lang['difflink']              = '連向這個比對檢視';
 $lang['line']                  = '行';
-$lang['breadcrumb']            = '目前的足跡';
-$lang['youarehere']            = '(目前所在位置)';
+$lang['breadcrumb']            = '足跡';
+$lang['youarehere']            = '您在這裡';
 $lang['lastmod']               = '上一次變更';
-$lang['by']                    = '來自';
+$lang['by']                    = 'ç”±';
 $lang['deleted']               = '移除';
 $lang['created']               = '建立';
-$lang['restored']              = '已恢復為舊版';
+$lang['restored']              = '恢復為舊版';
 $lang['external_edit']         = '外部編輯';
 $lang['summary']               = '編輯摘要';
-$lang['noflash']               = '顯示此內容需要<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>';
+$lang['noflash']               = '顯示此內容需要 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>';
 $lang['download']              = '下載程式碼片段';
 $lang['mail_newpage']          = '增加的頁面:';
 $lang['mail_changed']          = '變更的頁面:';
+$lang['mail_subscribe_list']   = '命名空間中更動的頁面:';
 $lang['mail_new_user']         = '新使用者:';
 $lang['mail_upload']           = '已上傳檔案:';
 $lang['qb_bold']               = 'ç²—é«”';
@@ -171,20 +192,20 @@ $lang['qb_hs']                 = '選擇標題';
 $lang['qb_hplus']              = '較大標題';
 $lang['qb_hminus']             = '較小標題';
 $lang['qb_hequal']             = '同等標題';
-$lang['qb_link']               = 'WIKI內部連結';
-$lang['qb_extlink']            = '連結外部URL';
+$lang['qb_link']               = '內部連結';
+$lang['qb_extlink']            = '外部連結';
 $lang['qb_hr']                 = '水平線';
-$lang['qb_ol']                 = '項目表(數字)';
-$lang['qb_ul']                 = '項目表(符號)';
+$lang['qb_ol']                 = '有序列表項目';
+$lang['qb_ul']                 = '無序列表項目';
 $lang['qb_media']              = '加入圖片或檔案';
 $lang['qb_sig']                = '插入簽名';
 $lang['qb_smileys']            = '表情符號';
 $lang['qb_chars']              = '特殊字元';
-$lang['upperns']               = '前往父命名空間';
-$lang['admin_register']        = '新增使用者中';
-$lang['metaedit']              = '更改相片資料(EXIF)';
-$lang['metasaveerr']           = '相片資料(EXIF)儲存失敗喔';
-$lang['metasaveok']            = '相片資料已成功儲存';
+$lang['upperns']               = '前往父層命名空間';
+$lang['admin_register']        = '新增使用者';
+$lang['metaedit']              = '編輯後設資料';
+$lang['metasaveerr']           = '後設資料寫入失敗';
+$lang['metasaveok']            = '後設資料已儲存';
 $lang['img_backto']            = '回上一頁';
 $lang['img_title']             = '標題';
 $lang['img_caption']           = '照片說明';
@@ -196,37 +217,48 @@ $lang['img_copyr']             = '版權';
 $lang['img_format']            = '格式';
 $lang['img_camera']            = '相機';
 $lang['img_keywords']          = '關鍵字';
-$lang['subscribe_success']     = '已將『%s』加入 %s 訂閱清單內';
-$lang['subscribe_error']       = '要把『%s』加入 %s 訂閱清單時,發生錯誤';
-$lang['subscribe_noaddress']   = '您的帳號內並無 Email 資料,因此還無法使用訂閱功能唷。';
-$lang['unsubscribe_success']   = '已將『%s』從 %s 訂閱清單中移除';
-$lang['unsubscribe_error']     = '要把『%s』從 %s 訂閱清單中移除時,發生錯誤';
-$lang['authmodfailed']         = '帳號認證的設定不正確,請通知該 Wiki 管理員。';
-$lang['authtempfail']          = '帳號認證目前暫不提供,若本狀況持續發生的話,請通知該 Wiki 管理員。';
+$lang['subscr_subscribe_success'] = '已將 %s 加入至 %s 的訂閱列表';
+$lang['subscr_subscribe_error'] = '將 %s 加入至 %s 的訂閱列表時發生錯誤';
+$lang['subscr_subscribe_noaddress'] = '沒有與您登入相關的地址,無法將您加入訂閱列表';
+$lang['subscr_unsubscribe_success'] = '已將 %s 移除自 %s 的訂閱列表';
+$lang['subscr_unsubscribe_error'] = '將 %s 移除自 %s 的訂閱列表時發生錯誤';
+$lang['subscr_already_subscribed'] = '%s 已經被 %s 訂閱了';
+$lang['subscr_not_subscribed'] = '%s 尚未被 %s 訂閱';
+$lang['subscr_m_not_subscribed'] = '您尚未訂閱目前的頁面或命名空間。';
+$lang['subscr_m_new_header']   = '加入訂閱';
+$lang['subscr_m_current_header'] = '目前訂閱';
+$lang['subscr_m_unsubscribe']  = '取消訂閱';
+$lang['subscr_m_subscribe']    = '訂閱';
+$lang['subscr_m_receive']      = '接收';
+$lang['subscr_style_every']    = '每次更改都發送信件';
+$lang['subscr_style_digest']   = '對每個頁面發送更改的摘要信件 (每 %.2f 天)';
+$lang['subscr_style_list']     = '自上次發信以來更改的頁面的列表 (每 %.2f 天)';
+$lang['authmodfailed']         = '帳號認證的設定不正確,請通知該維基管理員。';
+$lang['authtempfail']          = '帳號認證目前暫不提供,若本狀況持續發生的話,請通知該維基管理員。';
 $lang['i_chooselang']          = '選擇您的語系';
 $lang['i_installer']           = 'DokuWiki 安裝工具';
-$lang['i_wikiname']            = 'Wiki名稱';
-$lang['i_enableacl']           = '使用ACL(建議)';
+$lang['i_wikiname']            = '維基名稱';
+$lang['i_enableacl']           = '啟用 ACL (建議)';
 $lang['i_superuser']           = '超級用戶';
-$lang['i_problems']            = 'Installer發現一些問題,顯示如下。您將無法繼續直到您修正它們。';
-$lang['i_modified']            = '由於安全上的考慮,該腳本隻能用於全新且做任何改動的 Dokuwiki 安裝包。
-                         您可以重新解壓下載的程序包,或查閱完整的
-                         <a href=\"http://dokuwiki.org/install\">Dokuwiki 安裝指南</a>';
-$lang['i_funcna']              = 'PHP function <code>%s</code> 無法使用. 也許你的主機供應者停用它或是其他原因?';
-$lang['i_phpver']              = '您的 PHP 版本 <code>%s</code> 比所需要的版本 <code>%s</code> 還低. 您需要更新您的PHP.';
-$lang['i_permfail']            = '<code>%s</code> 無法被 DokuWiki 所寫入. 您需要修正該目錄的權限!';
-$lang['i_confexists']          = '<code>%s</code>已經存在';
-$lang['i_writeerr']            = '無法建立 <code>%s</code>. 您必須檢查目錄/檔案的權限並手動建立該檔案.';
-$lang['i_badhash']             = '無法辨識或被變更的dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval']              = '<code>%s</code> - 非法或是空的值';
-$lang['i_success']             = '設定已經成功地完成. 您現在可以刪除 install.php 這個檔案. 繼續到
+$lang['i_problems']            = '安裝程式發現如下的問題。您必須修正它們才能繼續。';
+$lang['i_modified']            = '出於安全考量,本腳本只能用於安裝全新且未修改的 Dokuwiki。
+您可以重新解壓下載的封包或查閱完整的<a href=\"http://dokuwiki.org/install\">Dokuwiki 安裝指南</a>';
+$lang['i_funcna']              = 'PHP 函數 <code>%s</code> 無法使用。也許您的主機供應者基於某些理由停用了它?';
+$lang['i_phpver']              = '您的 PHP 版本 <code>%s</code> 比需要的版本 <code>%s</code> 還低。您必須更新您的PHP。';
+$lang['i_permfail']            = '<code>%s</code> 無法被 DokuWiki 寫入。您必須修正該目錄的權限!';
+$lang['i_confexists']          = '<code>%s</code> 已經存在';
+$lang['i_writeerr']            = '無法建立 <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">您的新 DokuWiki</a>.';
-$lang['i_failure']             = '在寫入設定檔時發生了一些錯誤.您必須在使用<a href="doku.php">你的新 Dokuwiki</a> 之前手動修正它們';
-$lang['i_policy']              = '初步的ACL政策';
-$lang['i_pol0']                = '開放的 Wiki (可被任何人讀, 寫, 上傳)';
-$lang['i_pol1']                = '公開的 Wiki (可被任何人讀, 但是只能被註冊的使用者寫與上傳)';
-$lang['i_pol2']                = '封閉的 Wiki (只能被註冊的使用者讀, 寫, 上傳)';
+$lang['i_failure']             = '寫入設定檔時發生了一些錯誤。您必須在使用<a href="doku.php">您的新 Dokuwiki</a> 之前手動修正它們。';
+$lang['i_policy']              = '初步的 ACL 政策';
+$lang['i_pol0']                = '開放的維基 (任何人可讀取、寫入、上傳)';
+$lang['i_pol1']                = '公開的維基 (任何人可讀取,註冊使用者可寫入與上傳)';
+$lang['i_pol2']                = '封閉的維基 (只有註冊使用者可讀取、寫入、上傳)';
 $lang['i_retry']               = '重試';
+$lang['i_license']             = '請選擇您想要的內容發布許可協議:';
 $lang['mu_intro']              = '您可以在這裡一次上傳多個檔案。按下瀏覽按鈕加入檔案,然後按上傳按鈕開始上傳。';
 $lang['mu_gridname']           = '檔案名稱';
 $lang['mu_gridsize']           = '檔案大小';
@@ -242,7 +274,7 @@ $lang['mu_progress']           = '@PCT@% 已上傳';
 $lang['mu_filetypes']          = '接受的檔案類型';
 $lang['mu_info']               = '檔案已上傳。';
 $lang['mu_lasterr']            = '最新一筆錯誤紀錄:';
-$lang['recent_global']         = '您正在閱讀命名空間: <b>%s</b> 中的變更。您亦可觀看整個 wiki 的<a href="%s">最近更新</a>。';
+$lang['recent_global']         = '您正在閱讀命名空間: <b>%s</b> 中的變更。您亦可觀看整個維基的<a href="%s">最近更新</a>。';
 $lang['years']                 = '%d 年前';
 $lang['months']                = '%d 個月前';
 $lang['weeks']                 = '%d 週前';
@@ -250,3 +282,4 @@ $lang['days']                  = '%d 天前';
 $lang['hours']                 = '%d 個小時前';
 $lang['minutes']               = '%d 分鐘前';
 $lang['seconds']               = '%s 秒鐘前';
+$lang['wordblock']             = '您的更改沒有被儲存,因为它包含被阻擋的文字 (垃圾訊息)。';
diff --git a/inc/lang/zh-tw/locked.txt b/inc/lang/zh-tw/locked.txt
index 16a06e80296b2df3a1bd3f44d2609b1452b1f606..e13fdc890c81b914a29b4ce2933ce30675490712 100644
--- a/inc/lang/zh-tw/locked.txt
+++ b/inc/lang/zh-tw/locked.txt
@@ -1,3 +1,3 @@
-====== 頁面目前是鎖定狀態中 ======
+====== 頁面鎖定 ======
 
-本頁目前正由其他使用者編修中,您必須先等到他完成或者鎖定狀態自動解除。
+本頁目前正由其他使用者編修中,您必須等他完成編輯或等鎖定時間過去。
diff --git a/inc/lang/zh-tw/login.txt b/inc/lang/zh-tw/login.txt
index fda49a1991debeb210064f49103bde30da3babc9..058cc5712261123c35e457078da47c1276b73440 100644
--- a/inc/lang/zh-tw/login.txt
+++ b/inc/lang/zh-tw/login.txt
@@ -1,5 +1,5 @@
 ====== 登入 ======
 
-您尚未登入,請輸入您的使用者名稱跟密碼。 另外,瀏覽器需要打開 cookies 設定以進行登入。
+您尚未登入,請輸入您的使用者名稱和密碼。 另外,瀏覽器需要打開 cookies 設定以進行登入。
 
 
diff --git a/inc/lang/zh-tw/mailtext.txt b/inc/lang/zh-tw/mailtext.txt
index f6bb0480e1ef6ad22619e8024cb91228ea3f0b77..3b6ece377e43182dbcdaadf7a8a3715553fc1c4a 100644
--- a/inc/lang/zh-tw/mailtext.txt
+++ b/inc/lang/zh-tw/mailtext.txt
@@ -1,16 +1,17 @@
-在您的 DokuWiki 有新增、變動過一頁了。以下是細節資料:
+您的 DokuWiki 有個新增或變動的頁面。詳細資料如下:
 
-日期        : @DATE@
-瀏覽器      : @BROWSER@
-IP-Address  : @IPADDRESS@
-機器名稱    : @HOSTNAME@
-舊版次      : @OLDPAGE@
-新版次      : @NEWPAGE@
-編輯摘要    : @SUMMARY@
-User        : @USER@
+日期     : @DATE@
+瀏覽器   : @BROWSER@
+IP位址   : @IPADDRESS@
+主機名稱 : @HOSTNAME@
+舊版本   : @OLDPAGE@
+新版本   : @NEWPAGE@
+編輯摘要 : @SUMMARY@
+使用者   : @USER@
 
 @DIFF@
 
 
--- 
-這封信是由 @DOKUWIKIURL@ 的 DokuWiki 自動產生
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/newpage.txt b/inc/lang/zh-tw/newpage.txt
index bd38f55865213b1734b85e83e817c2ee00325a40..06ccd3d7510edfcd054de1355a317f8568319e36 100644
--- a/inc/lang/zh-tw/newpage.txt
+++ b/inc/lang/zh-tw/newpage.txt
@@ -1,3 +1,3 @@
-====== 目前尚未有該主題喔 ======
+====== 此主題不存在 ======
 
-您目前到的這主題尚未建立頁面。但也可以用 「''建立此頁''」來建立。 
\ No newline at end of file
+您來到了一個未建立頁面的主題。如果權限允許,您可以用 「建立此頁」按鈕建立頁面。 
\ No newline at end of file
diff --git a/inc/lang/zh-tw/norev.txt b/inc/lang/zh-tw/norev.txt
index e2b6a175b38c3e9ef6f5fb25650a6818349024ae..bd1c7a623cdaf04cfd42747ca9b5d2a023a24ed7 100644
--- a/inc/lang/zh-tw/norev.txt
+++ b/inc/lang/zh-tw/norev.txt
@@ -1,4 +1,3 @@
-====== 很抱歉,並無該版次的 ======
-
-該版次的文件並不存在。請用 「''舊版''」 鍵來檢視目前該文件的所有舊版次。
+====== 無此版本 ======
 
+該版本的文件不存在。請用 「舊版」按鈕檢視該文件所有舊版本清單。
\ No newline at end of file
diff --git a/inc/lang/zh-tw/password.txt b/inc/lang/zh-tw/password.txt
index 14edb601642218b12165ac46b0ea6a213e2bd636..5d383b5283d4f93dd8aecbe7e18663bb62fbc6b0 100644
--- a/inc/lang/zh-tw/password.txt
+++ b/inc/lang/zh-tw/password.txt
@@ -1,11 +1,10 @@
-(NOTE: This mail is an UTF-8 encoding email)
+@FULLNAME@ 您好!
 
-嗨,@LOGIN@(@FULLNAME@) 您好!
+這是您在位於 @DOKUWIKIURL@ 之 @TITLE@ 的使用者資料
 
-這裡是您在 @TITLE@(@DOKUWIKIURL@) 的使用者資料
+帳號 : @LOGIN@
+密碼 : @PASSWORD@
 
-使用者名稱: 	@LOGIN@
-   密碼: 	@PASSWORD@
-
--- 
-這封信是由 @DOKUWIKIURL@ 的 DokuWiki 自動產生。
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/pwconfirm.txt b/inc/lang/zh-tw/pwconfirm.txt
index b8ad7e1edc45853cd40b4aaafcf87130899eb771..994367980e51cd22dc0f1b887afff0aab2da7796 100644
--- a/inc/lang/zh-tw/pwconfirm.txt
+++ b/inc/lang/zh-tw/pwconfirm.txt
@@ -1,13 +1,13 @@
 @FULLNAME@ 您好!
 
-有人請求為您在 @DOKUWIKIURL@ 注冊的用戶名 @TITLE@ 發送新密碼
+有人為您在 @DOKUWIKIURL@ 註冊的使用者 @TITLE@ 請求新密碼
 
-如果您沒有請求發送新密碼,請忽略這封郵件。
+如果您沒有請求新密碼,請忽略這封郵件。
 
-為了確認發送新密碼請求的確來自您,請使用下面的鏈接。
+要確認使用新密碼,請拜訪以下的連結。
 
 @CONFIRM@
 
--- 
-本郵件由 DokuWiki 自動創建
-@DOKUWIKIURL@
\ No newline at end of file
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/read.txt b/inc/lang/zh-tw/read.txt
index 364f4adea37483f2ce39e5e0c9c43931dee9f296..a8305611f5df4d0a76fa7568d3b8e31ed81e4661 100644
--- a/inc/lang/zh-tw/read.txt
+++ b/inc/lang/zh-tw/read.txt
@@ -1,3 +1 @@
-本頁是唯讀的,可以看是怎麼寫的,但不能更動它。如這是誤判,請向管理員詢問。
-
-
+本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得這是誤判,請詢問管理員。
\ No newline at end of file
diff --git a/inc/lang/zh-tw/register.txt b/inc/lang/zh-tw/register.txt
index 1a5ec67e7e4fb5dbb866d09956dd64a762f804ff..0da401ccdf91cc7edf0bb073dd1e8407002ef62a 100644
--- a/inc/lang/zh-tw/register.txt
+++ b/inc/lang/zh-tw/register.txt
@@ -1,4 +1,4 @@
 ====== 註冊新使用者 ======
 
-請填以下欄位的資料來註冊 wiki 帳號,\\ 還有請確定您有提供一個 **合法的 e-mail 地址** - 也就是您的新密碼會被寄到那。\\ 而登錄的使用者名稱應該是合法的。 [[doku>pagename|pagename]].
+填寫以下資料以註冊維基帳號,請確定您提供的是**合法的 email 地址**-如果這裡沒要求您填寫密碼,您的新密碼會自動產生並寄送到該地址。登錄名稱必須是合法的[[doku>pagename|頁面名稱]]。
 
diff --git a/inc/lang/zh-tw/registermail.txt b/inc/lang/zh-tw/registermail.txt
index 434f4f877a51334588034a733ad526ba42961a63..489e3f9d3104959ecfa1e44980b28e7ecde0892b 100644
--- a/inc/lang/zh-tw/registermail.txt
+++ b/inc/lang/zh-tw/registermail.txt
@@ -1,13 +1,14 @@
-一個新使用者已經註冊. 以下是詳細內容:
+有新的使用者註冊。詳細資料如下:
 
-帳號 : @NEWUSER@
-全名 : @NEWNAME@
-E-mail : @NEWEMAIL@
+帳號     : @NEWUSER@
+姓名     : @NEWNAME@
+E-mail   : @NEWEMAIL@
 
-日期 : @DATE@
-瀏覽器 : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
+日期     : @DATE@
+瀏覽器   : @BROWSER@
+IP位址   : @IPADDRESS@
+主機名稱 : @HOSTNAME@
 
--- 
-這封信是由 @DOKUWIKIURL@ 的 DokuWiki 所產生的
\ No newline at end of file
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/resendpwd.txt b/inc/lang/zh-tw/resendpwd.txt
index 9250bf4e0a03620c6368e0d9e36bfc677e6d4b25..3dbfad75030fe979fbd85677b89b402734483557 100644
--- a/inc/lang/zh-tw/resendpwd.txt
+++ b/inc/lang/zh-tw/resendpwd.txt
@@ -1,3 +1,3 @@
 ====== 寄送新密碼 ======
 
-請在下面的欄位填上資料,以便重新寄發新的 wiki 密碼到您註冊時所填的 email 地址。 帳號(user name)就是你的 wiki 帳號。
+請在以下欄位輸入您的帳號,新密碼將會寄送到您註冊時填寫的 email 地址。
diff --git a/inc/lang/zh-tw/searchpage.txt b/inc/lang/zh-tw/searchpage.txt
index 9f3d8ee943791bfa519221a44a5055150cf47672..e0f04c433ecfb9236b2f904d8d06b91ad2076f75 100644
--- a/inc/lang/zh-tw/searchpage.txt
+++ b/inc/lang/zh-tw/searchpage.txt
@@ -1,5 +1,5 @@
 ====== 搜尋精靈 ======
 
-提示:您可以在下列找到您的搜尋結果。若沒找到妳想找的東西,那麼可以在妳查詢之後用「建立此頁」來建立新的頁面哦。
+提示:您可以在下面找到您的搜尋結果。若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。
 
 ===== 搜尋結果 =====
diff --git a/inc/lang/zh-tw/showrev.txt b/inc/lang/zh-tw/showrev.txt
index 35b6aa59f477d243ba76730b1a8388a69484b532..306aa6ea762be475e30c984aef96d6cfa0b08220 100644
--- a/inc/lang/zh-tw/showrev.txt
+++ b/inc/lang/zh-tw/showrev.txt
@@ -1,2 +1,2 @@
-**這是本文件的舊版了喔!**
+**這是本文件的舊版!**
 ----
diff --git a/inc/lang/zh-tw/subscr_digest.txt b/inc/lang/zh-tw/subscr_digest.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a26e73050c513a12964c6f37b48145333148c405
--- /dev/null
+++ b/inc/lang/zh-tw/subscr_digest.txt
@@ -0,0 +1,19 @@
+您好!
+
+維基 @TITLE@ 的頁面 @PAGE@ 已更改。
+更改內容如下:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+舊版本:@OLDPAGE@
+新版本:@NEWPAGE@
+
+要取消頁面提醒,請登入維基 @DOKUWIKIURL@
+然後拜訪 @SUBSCRIBE@
+並取消訂閱頁面或命名空間的更改。
+
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/subscr_form.txt b/inc/lang/zh-tw/subscr_form.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0ad675cc81721b082aec96424fa628186a046051
--- /dev/null
+++ b/inc/lang/zh-tw/subscr_form.txt
@@ -0,0 +1,3 @@
+====== 訂閱管理 ======
+
+這個頁面允許您管理在目前頁面和命名空間的訂閱。
\ No newline at end of file
diff --git a/inc/lang/zh-tw/subscr_list.txt b/inc/lang/zh-tw/subscr_list.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2a1b26c6ec15feaf0ed050c0754e17858bd9ee77
--- /dev/null
+++ b/inc/lang/zh-tw/subscr_list.txt
@@ -0,0 +1,16 @@
+您好!
+
+維基 @TITLE@ 的 @PAGE@ 命名空間的頁面已更改。
+更改內容如下:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+要取消頁面提醒,請登入維基 @DOKUWIKIURL@
+然後拜訪 @SUBSCRIBE@
+並取消訂閱頁面或命名空間的更改。
+
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/subscr_single.txt b/inc/lang/zh-tw/subscr_single.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f3c623c5ced5a90c398e7e3046823704df8ba961
--- /dev/null
+++ b/inc/lang/zh-tw/subscr_single.txt
@@ -0,0 +1,22 @@
+您好!
+
+維基 @TITLE@ 的頁面 @PAGE@ 已更改。
+更改內容如下:
+
+--------------------------------------------------------
+@DIFF@
+--------------------------------------------------------
+
+時間     : @DATE@
+使用者   : @USER@
+編輯摘要 : @SUMMARY@
+舊版本   : @OLDPAGE@
+新版本   : @NEWPAGE@
+
+要取消頁面提醒,請登入維基 @DOKUWIKIURL@
+然後拜訪 @NEWPAGE@
+並取消訂閱頁面或命名空間的更改。
+
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh-tw/updateprofile.txt b/inc/lang/zh-tw/updateprofile.txt
index f92c215ea3827e21a865147b4a862a0ca26cb0c3..47f2ae1c48fc6e2c2c6956a499ce177d33ea18ed 100644
--- a/inc/lang/zh-tw/updateprofile.txt
+++ b/inc/lang/zh-tw/updateprofile.txt
@@ -1,5 +1,3 @@
 ====== 更新個人資料 ======
 
-請注意:只需變更想更新的資料欄位就好,而帳號名稱是不可以變更的。
-
-
+您只需變更想更新的欄位就好,帳號名稱不能變更。
\ No newline at end of file
diff --git a/inc/lang/zh-tw/uploadmail.txt b/inc/lang/zh-tw/uploadmail.txt
index e7222959bd41beba80353f38a4f9a1f2c1ff6d34..b4c1311baa01e3bfb79a5815ed5b231c0791ba88 100644
--- a/inc/lang/zh-tw/uploadmail.txt
+++ b/inc/lang/zh-tw/uploadmail.txt
@@ -1,13 +1,14 @@
-一個檔案已經被上傳到您的 DokuWiki. 以下是詳細內容:
+有人把檔案上傳到您的 DokuWiki。詳細資料如下:
 
-檔名 : @MEDIA@
-日期 : @DATE@
-瀏覽器 : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-尺寸 : @SIZE@
-MIME Type : @MIME@
-帳號 : @USER@
+檔名     : @MEDIA@
+日期     : @DATE@
+瀏覽器   : @BROWSER@
+IP位址   : @IPADDRESS@
+主機名稱 : @HOSTNAME@
+大小     : @SIZE@
+MIME類型 : @MIME@
+使用者   : @USER@
 
--- 
-這封信是由 @DOKUWIKIURL@ 的 DokuWiki 所產生的
\ No newline at end of file
+--
+本信件由以下 DokuWiki 站台產生:
+@DOKUWIKIURL@
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index f819aff9aa5174fc9d16948cd2f8a07271ab9965..ea677ac2ead8cd03204c6a9d16f54b13c36cdf2c 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -5,12 +5,13 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author ZDYX <zhangduyixiong@gmail.com>
  * @author http://www.chinese-tools.com/tools/converter-tradsimp.html
- * @author George Sheraton guxd@163.com
+ * @author George Sheraton <guxd@163.com>
  * @author Simon zhan <simonzhan@21cn.com>
  * @author mr.jinyi@gmail.com
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -51,6 +52,7 @@ $lang['btn_draft']             = '编辑草稿';
 $lang['btn_recover']           = '恢复草稿';
 $lang['btn_draftdel']          = '删除草稿';
 $lang['btn_revert']            = '恢复';
+$lang['btn_register']          = '注册';
 $lang['loggedinas']            = '登录为';
 $lang['user']                  = '用户名';
 $lang['pass']                  = '密码';
@@ -60,7 +62,6 @@ $lang['passchk']               = '请再输一次';
 $lang['remember']              = '记住我';
 $lang['fullname']              = '全名';
 $lang['email']                 = 'E-Mail';
-$lang['register']              = '注册';
 $lang['profile']               = '用户信息';
 $lang['badlogin']              = '对不起,用户名或密码错误。';
 $lang['minoredit']             = '细微修改';
@@ -163,6 +164,7 @@ $lang['yours']                 = '您的版本';
 $lang['diff']                  = '显示与当前版本的差别';
 $lang['diff2']                 = '显示跟目前版本的差异';
 $lang['difflink']              = '到此差别页面的链接';
+$lang['diff_type']             = '查看差异:';
 $lang['line']                  = '行';
 $lang['breadcrumb']            = '您的足迹';
 $lang['youarehere']            = '您在这里';
diff --git a/inc/load.php b/inc/load.php
index 478ee7c761209dc1574aaf5a16c375837f0881c2..ef6f7f31c1b9eb7756ad22e17802c70de36199f3 100644
--- a/inc/load.php
+++ b/inc/load.php
@@ -75,6 +75,7 @@ function load_autoload($name){
         'Doku_Parser_Mode'      => DOKU_INC.'inc/parser/parser.php',
         'SafeFN'                => DOKU_INC.'inc/SafeFN.class.php',
         'Sitemapper'            => DOKU_INC.'inc/Sitemapper.php',
+        'PassHash'              => DOKU_INC.'inc/PassHash.class.php',
 
         'DokuWiki_Action_Plugin' => DOKU_PLUGIN.'action.php',
         'DokuWiki_Admin_Plugin'  => DOKU_PLUGIN.'admin.php',
diff --git a/inc/mail.php b/inc/mail.php
index aa9d195d13f233cab3e5f15392ed6a7f9b4ecbc0..bd6c0db6a507f1f461555d553e1b6b5d4cca359c 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -11,7 +11,6 @@ if(!defined('DOKU_INC')) die('meh.');
 // end of line for mail lines - RFC822 says CRLF but postfix (and other MTAs?)
 // think different
 if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL',"\n");
-if(!defined('QUOTEDPRINTABLE_EOL')) define('QUOTEDPRINTABLE_EOL',"\015\012");
 #define('MAILHEADER_ASCIIONLY',1);
 
 /**
@@ -113,9 +112,16 @@ function _mail_send_action($data) {
     }
 
     if(!utf8_isASCII($subject)) {
-        $subject = '=?UTF-8?Q?'.mail_quotedprintable_encode($subject,0).'?=';
+        $enc_subj = '=?UTF-8?Q?'.mail_quotedprintable_encode($subject,0).'?=';
         // Spaces must be encoded according to rfc2047. Use the "_" shorthand
-        $subject = preg_replace('/ /', '_', $subject);
+        $enc_sub = preg_replace('/ /', '_', $enc_sub);
+
+        // quoted printable has length restriction, use base64 if needed
+        if(strlen($subject) > 74){
+            $enc_subj = '=?UTF-8?B?'.base64_encode($subject).'?=';
+        }
+
+        $subject = $enc_subj;
     }
 
     $header  = '';
@@ -197,7 +203,16 @@ function mail_encode_address($string,$header='',$names=true){
             }
 
             if(!utf8_isASCII($text)){
-                $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text,0).'?=';
+                // put the quotes outside as in =?UTF-8?Q?"Elan Ruusam=C3=A4e"?= vs "=?UTF-8?Q?Elan Ruusam=C3=A4e?="
+                if (preg_match('/^"(.+)"$/', $text, $matches)) {
+                  $text = '"=?UTF-8?Q?'.mail_quotedprintable_encode($matches[1], 0).'?="';
+                } else {
+                  $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text, 0).'?=';
+                }
+                // additionally the space character should be encoded as =20 (or each
+                // word QP encoded separately).
+                // however this is needed only in mail headers, not globally in mail_quotedprintable_encode().
+                $text = str_replace(" ", "=20", $text);
             }
         }else{
             $text = '';
@@ -290,11 +305,11 @@ function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true)
         // but this wouldn't be caught by such an easy RegExp
         if($maxlen){
             preg_match_all( '/.{1,'.($maxlen - 2).'}([^=]{0,2})?/', $sLine, $aMatch );
-            $sLine = implode( '=' . QUOTEDPRINTABLE_EOL, $aMatch[0] ); // add soft crlf's
+            $sLine = implode( '=' . MAILHEADER_EOL, $aMatch[0] ); // add soft crlf's
         }
     }
 
     // join lines into text
-    return implode(QUOTEDPRINTABLE_EOL,$aLines);
+    return implode(MAILHEADER_EOL,$aLines);
 }
 
diff --git a/inc/media.php b/inc/media.php
index 69441352be92d17c5a09df502827c03b7d6f94b7..3c9340d51cf24de70901feb803ca6a98ccf8d74d 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -141,7 +141,7 @@ function media_metaform($id,$auth){
 }
 
 /**
- * Conveinience function to check if a media file is still in use
+ * Convenience function to check if a media file is still in use
  *
  * @author Michael Klier <chi@chimeric.de>
  */
@@ -160,19 +160,26 @@ function media_inuse($id) {
     }
 }
 
+define('DOKU_MEDIA_DELETED', 1);
+define('DOKU_MEDIA_NOT_AUTH', 2);
+define('DOKU_MEDIA_INUSE', 4);
+define('DOKU_MEDIA_EMPTY_NS', 8);
+
 /**
  * Handles media file deletions
  *
  * If configured, checks for media references before deletion
  *
  * @author Andreas Gohr <andi@splitbrain.org>
- * @return mixed false on error, true on delete or array with refs
+ * @return int One of: 0,
+                       DOKU_MEDIA_DELETED,
+                       DOKU_MEDIA_DELETED | DOKU_MEDIA_EMPTY_NS,
+                       DOKU_MEDIA_NOT_AUTH,
+                       DOKU_MEDIA_INUSE
  */
 function media_delete($id,$auth){
-    if($auth < AUTH_DELETE) return false;
-    if(!checkSecurityToken()) return false;
-    global $conf;
-    global $lang;
+    if($auth < AUTH_DELETE) return DOKU_MEDIA_NOT_AUTH;
+    if(media_inuse($id)) return DOKU_MEDIA_INUSE;
 
     $file = mediaFN($id);
 
@@ -196,38 +203,22 @@ function media_delete($id,$auth){
     unset($evt);
 
     if($data['unl'] && $data['del']){
-        // current namespace was removed. redirecting to root ns passing msg along
-        send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='.
-                rawurlencode(sprintf(noNS($id),$lang['deletesucc'])));
+        return DOKU_MEDIA_DELETED | DOKU_MEDIA_EMPTY_NS;
     }
 
-    return $data['unl'];
+    return $data['unl'] ? DOKU_MEDIA_DELETED : 0;
 }
 
 /**
  * Handles media file uploads
  *
- * This generates an action event and delegates to _media_upload_action().
- * Action plugins are allowed to pre/postprocess the uploaded file.
- * (The triggered event is preventable.)
- *
- * Event data:
- * $data[0]     fn_tmp: the temporary file name (read from $_FILES)
- * $data[1]     fn: the file name of the uploaded file
- * $data[2]     id: the future directory id of the uploaded file
- * $data[3]     imime: the mimetype of the uploaded file
- * $data[4]     overwrite: if an existing file is going to be overwritten
- *
- * @triggers MEDIA_UPLOAD_FINISH
  * @author Andreas Gohr <andi@splitbrain.org>
  * @author Michael Klier <chi@chimeric.de>
  * @return mixed false on error, id of the new file on success
  */
 function media_upload($ns,$auth){
-    if($auth < AUTH_UPLOAD) return false;
     if(!checkSecurityToken()) return false;
     global $lang;
-    global $conf;
 
     // get file and id
     $id   = $_POST['id'];
@@ -249,8 +240,50 @@ function media_upload($ns,$auth){
         msg(sprintf($lang['mediaextchange'],$fext,$iext));
     }
 
+    $res = media_save(array('name' => $file['tmp_name'],
+                            'mime' => $imime,
+                            'ext'  => $iext), $ns.':'.$id,
+                      $_REQUEST['ow'], $auth, 'move_uploaded_file');
+    if (is_array($res)) {
+        msg($res[0], $res[1]);
+        return false;
+    }
+    return $res;
+}
+
+/**
+ * This generates an action event and delegates to _media_upload_action().
+ * Action plugins are allowed to pre/postprocess the uploaded file.
+ * (The triggered event is preventable.)
+ *
+ * Event data:
+ * $data[0]     fn_tmp: the temporary file name (read from $_FILES)
+ * $data[1]     fn: the file name of the uploaded file
+ * $data[2]     id: the future directory id of the uploaded file
+ * $data[3]     imime: the mimetype of the uploaded file
+ * $data[4]     overwrite: if an existing file is going to be overwritten
+ *
+ * @triggers MEDIA_UPLOAD_FINISH
+ */
+function media_save($file, $id, $ow, $auth, $move) {
+    if($auth < AUTH_UPLOAD) {
+        return array("You don't have permissions to upload files.", -1);
+    }
+
+    if (!isset($file['mime']) || !isset($file['ext'])) {
+        list($ext, $mime) = mimetype($id);
+        if (!isset($file['mime'])) {
+            $file['mime'] = $mime;
+        }
+        if (!isset($file['ext'])) {
+            $file['ext'] = $ext;
+        }
+    }
+
+    global $lang;
+
     // get filename
-    $id   = cleanID($ns.':'.$id,false,true);
+    $id   = cleanID($id,false,true);
     $fn   = mediaFN($id);
 
     // get filetype regexp
@@ -259,40 +292,35 @@ function media_upload($ns,$auth){
     $regex = join('|',$types);
 
     // because a temp file was created already
-    if(preg_match('/\.('.$regex.')$/i',$fn)){
-        //check for overwrite
-        $overwrite = @file_exists($fn);
-        if($overwrite && (!$_REQUEST['ow'] || $auth < AUTH_DELETE)){
-            msg($lang['uploadexist'],0);
-            return false;
-        }
-        // check for valid content
-        $ok = media_contentcheck($file['tmp_name'],$imime);
-        if($ok == -1){
-            msg(sprintf($lang['uploadbadcontent'],".$iext"),-1);
-            return false;
-        }elseif($ok == -2){
-            msg($lang['uploadspam'],-1);
-            return false;
-        }elseif($ok == -3){
-            msg($lang['uploadxss'],-1);
-            return false;
-        }
+    if(!preg_match('/\.('.$regex.')$/i',$fn)) {
+        return array($lang['uploadwrong'],-1);
+    }
 
-        // prepare event data
-        $data[0] = $file['tmp_name'];
-        $data[1] = $fn;
-        $data[2] = $id;
-        $data[3] = $imime;
-        $data[4] = $overwrite;
+    //check for overwrite
+    $overwrite = @file_exists($fn);
+    if($overwrite && (!$ow || $auth < AUTH_DELETE)) {
+        return array($lang['uploadexist'], 0);
+    }
+    // check for valid content
+    $ok = media_contentcheck($file['name'], $file['mime']);
+    if($ok == -1){
+        return array(sprintf($lang['uploadbadcontent'],'.' . $file['ext']),-1);
+    }elseif($ok == -2){
+        return array($lang['uploadspam'],-1);
+    }elseif($ok == -3){
+        return array($lang['uploadxss'],-1);
+    }
 
-        // trigger event
-        return trigger_event('MEDIA_UPLOAD_FINISH', $data, '_media_upload_action', true);
+    // prepare event data
+    $data[0] = $file['name'];
+    $data[1] = $fn;
+    $data[2] = $id;
+    $data[3] = $file['mime'];
+    $data[4] = $overwrite;
+    $data[5] = $move;
 
-    }else{
-        msg($lang['uploadwrong'],-1);
-    }
-    return false;
+    // trigger event
+    return trigger_event('MEDIA_UPLOAD_FINISH', $data, '_media_upload_action', true);
 }
 
 /**
@@ -301,8 +329,8 @@ function media_upload($ns,$auth){
  */
 function _media_upload_action($data) {
     // fixme do further sanity tests of given data?
-    if(is_array($data) && count($data)===5) {
-        return media_upload_finish($data[0], $data[1], $data[2], $data[3], $data[4]);
+    if(is_array($data) && count($data)===6) {
+        return media_upload_finish($data[0], $data[1], $data[2], $data[3], $data[4], $data[5]);
     } else {
         return false; //callback error
     }
@@ -314,14 +342,14 @@ function _media_upload_action($data) {
  * @author Andreas Gohr <andi@splitbrain.org>
  * @author Michael Klier <chi@chimeric.de>
  */
-function media_upload_finish($fn_tmp, $fn, $id, $imime, $overwrite) {
+function media_upload_finish($fn_tmp, $fn, $id, $imime, $overwrite, $move = 'move_uploaded_file') {
     global $conf;
     global $lang;
 
     // prepare directory
     io_createNamespace($id, 'media');
 
-    if(move_uploaded_file($fn_tmp, $fn)) {
+    if($move($fn_tmp, $fn)) {
         // Set the correct permission here.
         // Always chmod media because they may be saved with different permissions than expected from the php umask.
         // (Should normally chmod to $conf['fperm'] only if $conf['fperm'] is set.)
@@ -336,7 +364,7 @@ function media_upload_finish($fn_tmp, $fn, $id, $imime, $overwrite) {
         }
         return $id;
     }else{
-        msg($lang['uploadfail'],-1);
+        return array($lang['uploadfail'],-1);
     }
 }
 
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 4d0b56b4452c161355bb454e05f2142aa3cdeee8..22a50d1b78680132446c8929e45064ca6f929d28 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -720,6 +720,7 @@ class Doku_Handler_CallWriter {
     // function is required, but since this call writer is first/highest in
     // the chain it is not required to do anything
     function finalise() {
+        unset($this->Handler);
     }
 }
 
@@ -764,6 +765,7 @@ class Doku_Handler_Nest {
 
         $this->process();
         $this->CallWriter->finalise();
+        unset($this->CallWriter);
     }
 
     function process() {
@@ -817,6 +819,7 @@ class Doku_Handler_List {
 
         $this->process();
         $this->CallWriter->finalise();
+        unset($this->CallWriter);
     }
 
     //------------------------------------------------------------------------
@@ -1014,6 +1017,7 @@ class Doku_Handler_Preformatted {
 
         $this->process();
         $this->CallWriter->finalise();
+        unset($this->CallWriter);
     }
 
     function process() {
@@ -1070,6 +1074,7 @@ class Doku_Handler_Quote {
 
         $this->process();
         $this->CallWriter->finalise();
+        unset($this->CallWriter);
     }
 
     function process() {
@@ -1165,6 +1170,7 @@ class Doku_Handler_Table {
 
         $this->process();
         $this->CallWriter->finalise();
+        unset($this->CallWriter);
     }
 
     //------------------------------------------------------------------------
@@ -1427,14 +1433,8 @@ class Doku_Handler_Table {
  * @author Harry Fuecks <hfuecks@gmail.com>
  */
 class Doku_Handler_Block {
-
     var $calls = array();
-
-    var $blockStack = array();
-
-    var $inParagraph = false;
-    var $atStart = true;
-    var $skipEolKey = -1;
+    var $skipEol = false;
 
     // Blocks these should not be inside paragraphs
     var $blockOpen = array(
@@ -1442,9 +1442,9 @@ class Doku_Handler_Block {
             'listu_open','listo_open','listitem_open','listcontent_open',
             'table_open','tablerow_open','tablecell_open','tableheader_open',
             'quote_open',
-            'section_open', // Needed to prevent p_open between header and section_open
             'code','file','hr','preformatted','rss',
             'htmlblock','phpblock',
+            'footnote_open',
         );
 
     var $blockClose = array(
@@ -1452,18 +1452,18 @@ class Doku_Handler_Block {
             'listu_close','listo_close','listitem_close','listcontent_close',
             'table_close','tablerow_close','tablecell_close','tableheader_close',
             'quote_close',
-            'section_close', // Needed to prevent p_close after section_close
             'code','file','hr','preformatted','rss',
             'htmlblock','phpblock',
+            'footnote_close',
         );
 
     // Stacks can contain paragraphs
     var $stackOpen = array(
-        'footnote_open','section_open',
+        'section_open',
         );
 
     var $stackClose = array(
-        'footnote_close','section_close',
+        'section_close',
         );
 
 
@@ -1489,6 +1489,13 @@ class Doku_Handler_Block {
         }
     }
 
+    function openParagraph($pos){
+        if ($this->inParagraph) return;
+        $this->calls[] = array('p_open',array(), $pos);
+        $this->inParagraph = true;
+        $this->skipEol = true;
+    }
+
     /**
      * Close a paragraph if needed
      *
@@ -1496,7 +1503,8 @@ class Doku_Handler_Block {
      *
      * @author Andreas Gohr <andi@splitbrain.org>
      */
-    function closeParagraph($pos){
+    function closeParagraph($pos){
+        if (!$this->inParagraph) return;
         // look back if there was any content - we don't want empty paragraphs
         $content = '';
         for($i=count($this->calls)-1; $i>=0; $i--){
@@ -1513,11 +1521,29 @@ class Doku_Handler_Block {
         if(trim($content)==''){
             //remove the whole paragraph
             array_splice($this->calls,$i);
-        }else{
+        }else{
+            // remove ending linebreaks in the paragraph
+            $i=count($this->calls)-1;
+            if ($this->calls[$i][0] == 'cdata') $this->calls[$i][1][0] = rtrim($this->calls[$i][1][0],DOKU_PARSER_EOL);
             $this->calls[] = array('p_close',array(), $pos);
         }
 
-        $this->inParagraph = false;
+        $this->inParagraph = false;
+        $this->skipEol = true;
+    }
+    
+    function addCall($call) {
+        $key = count($this->calls);
+        if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
+            $this->calls[$key-1][1][0] .= $call[1][0];
+        } else {
+            $this->calls[] = $call;
+        }
+    }
+
+    // simple version of addCall, without checking cdata
+    function storeCall($call) {
+        $this->calls[] = $call;
     }
 
     /**
@@ -1525,186 +1551,71 @@ class Doku_Handler_Block {
      *
      * @author Harry Fuecks <hfuecks@gmail.com>
      * @author Andreas Gohr <andi@splitbrain.org>
-     * @todo   This thing is really messy and should be rewritten
      */
     function process($calls) {
+        // open first paragraph
+        $this->openParagraph(0);
         foreach ( $calls as $key => $call ) {
             $cname = $call[0];
-            if($cname == 'plugin') {
+            if ($cname == 'plugin') {
                 $cname='plugin_'.$call[1][0];
-
                 $plugin = true;
                 $plugin_open = (($call[1][2] == DOKU_LEXER_ENTER) || ($call[1][2] == DOKU_LEXER_SPECIAL));
                 $plugin_close = (($call[1][2] == DOKU_LEXER_EXIT) || ($call[1][2] == DOKU_LEXER_SPECIAL));
             } else {
                 $plugin = false;
             }
-
-            // Process blocks which are stack like... (contain linefeeds)
+            /* stack */
+            if ( in_array($cname,$this->stackClose ) && (!$plugin || $plugin_close)) {
+                $this->closeParagraph($call[2]);
+                $this->storeCall($call);
+                $this->openParagraph($call[2]);
+                continue;
+            }
             if ( in_array($cname,$this->stackOpen ) && (!$plugin || $plugin_open) ) {
-
-                // Hack - footnotes shouldn't immediately contain a p_open
-                if ($this->addToStack($cname != 'footnote_open')) {
-                    $this->closeParagraph($call[2]);
-                }
-                $this->calls[] = $call;
-
+                $this->closeParagraph($call[2]);
+                $this->storeCall($call);
+                $this->openParagraph($call[2]);
                 continue;
             }
-
-            if ( in_array($cname,$this->stackClose ) && (!$plugin || $plugin_close)) {
-
-                if ( $this->inParagraph ) {
-                    $this->closeParagraph($call[2]);
-                }
-                $this->calls[] = $call;
-                if ($this->removeFromStack()) {
-                    $this->calls[] = array('p_open',array(), $call[2]);
-                }
+            /* block */
+            // If it's a substition it opens and closes at the same call.
+            // To make sure next paragraph is correctly started, let close go first.
+            if ( in_array($cname, $this->blockClose) && (!$plugin || $plugin_close)) {
+                $this->closeParagraph($call[2]);
+                $this->storeCall($call);
+                $this->openParagraph($call[2]);
                 continue;
             }
-
-            if ( !$this->atStart ) {
-
-                if ( $cname == 'eol' ) {
-
-                    // Check this isn't an eol instruction to skip...
-                    if ( $this->skipEolKey != $key ) {
-                        // Look to see if the next instruction is an EOL
-                        if ( isset($calls[$key+1]) && $calls[$key+1][0] == 'eol' ) {
-
-                            if ( $this->inParagraph ) {
-                                //$this->calls[] = array('p_close',array(), $call[2]);
-                                $this->closeParagraph($call[2]);
-                            }
-
-                            $this->calls[] = array('p_open',array(), $call[2]);
-                            $this->inParagraph = true;
-
-
-                            // Mark the next instruction for skipping
-                            $this->skipEolKey = $key+1;
-
-                        }else{
-                            //if this is just a single eol make a space from it
-                            $this->addCall(array('cdata',array(DOKU_PARSER_EOL), $call[2]));
-                        }
-                    }
-
-
-                } else {
-
-                    $storeCall = true;
-                    if ( $this->inParagraph && (in_array($cname, $this->blockOpen) && (!$plugin || $plugin_open))) {
+            if ( in_array($cname, $this->blockOpen) && (!$plugin || $plugin_open)) {
+                $this->closeParagraph($call[2]);
+                $this->storeCall($call);
+                continue;
+            }
+            /* eol */
+            if ( $cname == 'eol' ) {
+                // Check this isn't an eol instruction to skip...
+                if ( !$this->skipEol ) {
+                    // Next is EOL => double eol => mark as paragraph
+                    if ( isset($calls[$key+1]) && $calls[$key+1][0] == 'eol' ) {
                         $this->closeParagraph($call[2]);
-                        $this->calls[] = $call;
-                        $storeCall = false;
-                    }
-
-                    if ( in_array($cname, $this->blockClose) && (!$plugin || $plugin_close)) {
-                        if ( $this->inParagraph ) {
-                            $this->closeParagraph($call[2]);
-                        }
-                        if ( $storeCall ) {
-                            $this->calls[] = $call;
-                            $storeCall = false;
-                        }
-
-                        // This really sucks and suggests this whole class sucks but...
-                        if ( isset($calls[$key+1])) {
-                            $cname_plusone = $calls[$key+1][0];
-                            if ($cname_plusone == 'plugin') {
-                                $cname_plusone = 'plugin'.$calls[$key+1][1][0];
-
-                                // plugin test, true if plugin has a state which precludes it requiring blockOpen or blockClose
-                                $plugin_plusone = true;
-                                $plugin_test = ($call[$key+1][1][2] == DOKU_LEXER_MATCHED) || ($call[$key+1][1][2] == DOKU_LEXER_MATCHED);
-                            } else {
-                                $plugin_plusone = false;
-                            }
-                            if ((!in_array($cname_plusone, $this->blockOpen) && !in_array($cname_plusone, $this->blockClose)) ||
-                                ($plugin_plusone && $plugin_test)
-                                ) {
-
-                                $this->calls[] = array('p_open',array(), $call[2]);
-                                $this->inParagraph = true;
-                            }
-                        }
-                    }
-
-                    if ( $storeCall ) {
-                        $this->addCall($call);
-                    }
-
-                }
-
-
-            } else {
-
-                // Unless there's already a block at the start, start a paragraph
-                if ( !in_array($cname,$this->blockOpen) ) {
-                    $this->calls[] = array('p_open',array(), $call[2]);
-                    if ( $call[0] != 'eol' ) {
-                        $this->calls[] = $call;
+                        $this->openParagraph($call[2]);
+                    } else {
+                        //if this is just a single eol make a space from it
+                        $this->addCall(array('cdata',array(DOKU_PARSER_EOL), $call[2]));
                     }
-                    $this->atStart = false;
-                    $this->inParagraph = true;
-                } else {
-                    $this->addCall($call);
-                    $this->atStart = false;
                 }
-
-            }
-
-        }
-
-        if ( $this->inParagraph ) {
-            if ( $cname == 'p_open' ) {
-                // Ditch the last call
-                array_pop($this->calls);
-            } else if ( !in_array($cname, $this->blockClose) ) {
-                //$this->calls[] = array('p_close',array(), $call[2]);
-                $this->closeParagraph($call[2]);
-            } else {
-                $last_call = array_pop($this->calls);
-                //$this->calls[] = array('p_close',array(), $call[2]);
-                $this->closeParagraph($call[2]);
-                $this->calls[] = $last_call;
+                continue;
             }
+            /* normal */
+            $this->addCall($call);
+            $this->skipEol = false;
         }
-
+        // close last paragraph
+        $call = end($this->calls);
+        $this->closeParagraph($call[2]);
         return $this->calls;
     }
-
-    /**
-     *
-     * @return   bool    true when a p_close() is required
-     */
-    function addToStack($newStart = true) {
-        $ret = $this->inParagraph;
-        $this->blockStack[] = array($this->atStart, $this->inParagraph);
-        $this->atStart = $newStart;
-        $this->inParagraph = false;
-
-        return $ret;
-    }
-
-    function removeFromStack() {
-        $state = array_pop($this->blockStack);
-        $this->atStart = $state[0];
-        $this->inParagraph = $state[1];
-
-        return $this->inParagraph;
-    }
-
-    function addCall($call) {
-        $key = count($this->calls);
-        if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
-            $this->calls[$key-1][1][0] .= $call[1][0];
-        } else {
-            $this->calls[] = $call;
-        }
-    }
 }
 
 //Setup VIM: ex: et ts=4 :
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index b93760f3a74d9588613d56f615d9cb67e0884597..e47ce56fa3dab93de895c3404bd6a7f940d6a03d 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -828,7 +828,7 @@ class Doku_Parser_Mode_internallink extends Doku_Parser_Mode {
 
     function connectTo($mode) {
         // Word boundaries?
-        $this->Lexer->addSpecialPattern("\[\[.+?\]\]",$mode,'internallink');
+        $this->Lexer->addSpecialPattern("\[\[(?:(?:[^[\]]*?\[.*?\])|.+?)\]\]",$mode,'internallink');
     }
 
     function getSort() {
@@ -870,7 +870,7 @@ class Doku_Parser_Mode_externallink extends Doku_Parser_Mode {
         if(count($this->patterns)) return;
 
         $ltrs = '\w';
-        $gunk = '/\#~:.?+=&%@!\-';
+        $gunk = '/\#~:.?+=&%@!\-\[\]';
         $punc = '.:?\-;,';
         $host = $ltrs.$punc;
         $any  = $ltrs.$gunk.$punc;
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 6e349e9841e425905d0b61e54039ec02f875c18f..9b2d99328fe92b9f97f7e27f82f475e3fa67a1e6 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -258,7 +258,7 @@ function p_get_metadata($id, $key='', $render=true){
             if ($meta == $old_meta || p_save_metadata($id, $meta)) {
                 // store a timestamp in order to make sure that the cachefile is touched
                 $cachefile->storeCache(time());
-            } else {
+            } elseif ($meta != $old_meta) {
                 msg('Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.',-1);
             }
         }
@@ -291,18 +291,25 @@ function p_get_metadata($id, $key='', $render=true){
  * @return boolean true on success
  *
  * @author Esther Brunner <esther@kaffeehaus.ch>
+ * @author Michael Hamann <michael@content-space.de>
  */
 function p_set_metadata($id, $data, $render=false, $persistent=true){
     if (!is_array($data)) return false;
 
-    global $ID;
+    global $ID, $METADATA_RENDERERS;
 
-    // cache the current page
-    $cache = ($ID == $id);
-    $orig = p_read_metadata($id, $cache);
+    // if there is currently a renderer change the data in the renderer instead
+    if (isset($METADATA_RENDERERS[$id])) {
+        $orig =& $METADATA_RENDERERS[$id];
+        $meta = $orig;
+    } else {
+        // cache the current page
+        $cache = ($ID == $id);
+        $orig = p_read_metadata($id, $cache);
 
-    // render metadata first?
-    $meta = $render ? p_render_metadata($id, $orig) : $orig;
+        // render metadata first?
+        $meta = $render ? p_render_metadata($id, $orig) : $orig;
+    }
 
     // now add the passed metadata
     $protected = array('description', 'date', 'contributor');
@@ -339,7 +346,13 @@ function p_set_metadata($id, $data, $render=false, $persistent=true){
     // save only if metadata changed
     if ($meta == $orig) return true;
 
-    return p_save_metadata($id, $meta);
+    if (isset($METADATA_RENDERERS[$id])) {
+        // set both keys individually as the renderer has references to the individual keys
+        $METADATA_RENDERERS[$id]['current']    = $meta['current'];
+        $METADATA_RENDERERS[$id]['persistent'] = $meta['persistent'];
+    } else {
+        return p_save_metadata($id, $meta);
+    }
 }
 
 /**
@@ -413,7 +426,15 @@ function p_save_metadata($id, $meta) {
  */
 function p_render_metadata($id, $orig){
     // make sure the correct ID is in global ID
-    global $ID;
+    global $ID, $METADATA_RENDERERS;
+
+    // avoid recursive rendering processes for the same id
+    if (isset($METADATA_RENDERERS[$id]))
+        return $orig;
+
+    // store the original metadata in the global $METADATA_RENDERERS so p_set_metadata can use it
+    $METADATA_RENDERERS[$id] =& $orig;
+
     $keep = $ID;
     $ID   = $id;
 
@@ -428,13 +449,14 @@ function p_render_metadata($id, $orig){
         $instructions = p_cached_instructions(wikiFN($id),false,$id);
         if(is_null($instructions)){
             $ID = $keep;
+            unset($METADATA_RENDERERS[$id]);
             return null; // something went wrong with the instructions
         }
 
         // set up the renderer
         $renderer = new Doku_Renderer_metadata();
-        $renderer->meta = $orig['current'];
-        $renderer->persistent = $orig['persistent'];
+        $renderer->meta =& $orig['current'];
+        $renderer->persistent =& $orig['persistent'];
 
         // loop through the instructions
         foreach ($instructions as $instruction){
@@ -442,11 +464,13 @@ function p_render_metadata($id, $orig){
             call_user_func_array(array(&$renderer, $instruction[0]), (array) $instruction[1]);
         }
 
-        $evt->result = array('current'=>$renderer->meta,'persistent'=>$renderer->persistent);
+        $evt->result = array('current'=>&$renderer->meta,'persistent'=>&$renderer->persistent);
     }
     $evt->advise_after();
 
+    // clean up
     $ID = $keep;
+    unset($METADATA_RENDERERS[$id]);
     return $evt->result;
 }
 
diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php
index ad394e11fb0ef4fb315d59c3f5a9084294febef2..6e361e172a7d3751efd5166a52098c36a6d43a04 100644
--- a/inc/plugincontroller.class.php
+++ b/inc/plugincontroller.class.php
@@ -125,6 +125,7 @@ class Doku_Plugin_Controller {
     }
 
     function _populateMasterList() {
+        global $conf;
         if ($dh = opendir(DOKU_PLUGIN)) {
             while (false !== ($plugin = readdir($dh))) {
                 if ($plugin[0] == '.') continue;               // skip hidden entries
@@ -134,7 +135,9 @@ class Doku_Plugin_Controller {
                     // the plugin was disabled by rc2009-01-26
                     // disabling mechanism was changed back very soon again
                     // to keep everything simple we just skip the plugin completely
-                }elseif(@file_exists(DOKU_PLUGIN.$plugin.'/disabled')){
+                }elseif(@file_exists(DOKU_PLUGIN.$plugin.'/disabled') ||
+                        ($plugin === 'plugin' && isset($conf['pluginmanager']) &&
+                         !$conf['pluginmanager'])){
                     $this->list_disabled[] = $plugin;
                 } else {
                     $this->list_enabled[] = $plugin;
diff --git a/inc/subscription.php b/inc/subscription.php
index 1b547655321b6ff48649f18d87e2dcda7e478c15..8e3a99a8f558cc601f57eb261e89dc5690f94be3 100644
--- a/inc/subscription.php
+++ b/inc/subscription.php
@@ -50,18 +50,19 @@ function subscription_lock_filename ($id){
 }
 
 function subscription_lock($id) {
-    // FIXME merge this with the indexer lock generation, abstract out
     global $conf;
     $lock = subscription_lock_filename($id);
-    while(!@mkdir($lock,$conf['dmode'])){
-        usleep(50);
-        if(time()-@filemtime($lock) > 60*5){
-            // looks like a stale lock - remove it
-            @rmdir($lock);
-        }else{
-            return false;
-        }
+
+    if (is_dir($lock) && time()-@filemtime($lock) > 60*5) {
+        // looks like a stale lock - remove it
+        @rmdir($lock);
     }
+
+    // try creating the lock directory
+    if (!@mkdir($lock,$conf['dmode'])) {
+        return false;
+    }
+
     if($conf['dperm']) chmod($lock, $conf['dperm']);
     return true;
 }
diff --git a/inc/template.php b/inc/template.php
index 6d25a7171fca1547a85530a06d9901bc0bd5ccbd..d29e3e779ee79b618d4e515821f0b552e2aa40cd 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -93,7 +93,7 @@ function tpl_content_core(){
             break;
         case 'index':
             html_index($IDX); #FIXME can this be pulled from globals? is it sanitized correctly?
-                break;
+            break;
         case 'backlink':
             html_backlinks();
             break;
@@ -581,18 +581,25 @@ function tpl_get_action($type) {
             $accesskey = 'b';
             break;
         case 'login':
-            if(!$conf['useacl'] || !$auth){
-                return false;
-            }
             $params['sectok'] = getSecurityToken();
             if(isset($_SERVER['REMOTE_USER'])){
-                if (!$auth->canDo('logout')) {
+                if (!actionOK('logout')) {
                     return false;
                 }
                 $params['do'] = 'logout';
                 $type = 'logout';
             }
             break;
+        case 'register':
+            if($_SERVER['REMOTE_USER']){
+                return false;
+            }
+            break;
+        case 'resendpwd':
+            if($_SERVER['REMOTE_USER']){
+                return false;
+            }
+            break;
         case 'admin':
             if(!$INFO['ismanager']){
                 return false;
@@ -609,20 +616,19 @@ function tpl_get_action($type) {
             $type = 'subscribe';
             $params['do'] = 'subscribe';
         case 'subscribe':
-            if(!$conf['useacl'] || !$auth  || !$conf['subscribers'] || !$_SERVER['REMOTE_USER']){
+            if(!$_SERVER['REMOTE_USER']){
                 return false;
             }
             break;
         case 'backlink':
             break;
         case 'profile':
-            if(!$conf['useacl'] || !$auth || !isset($_SERVER['REMOTE_USER']) ||
-                    !$auth->canDo('Profile')){
+            if(!isset($_SERVER['REMOTE_USER'])){
                 return false;
             }
             break;
         case 'subscribens':
-            // Superseeded by subscribe/subscription
+            // Superseded by subscribe/subscription
             return '';
             break;
         default:
@@ -685,7 +691,7 @@ function tpl_searchform($ajax=true,$autocomplete=true){
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
-function tpl_breadcrumbs($sep='&diams;'){
+function tpl_breadcrumbs($sep='&bull;'){
     global $lang;
     global $conf;
 
@@ -739,12 +745,6 @@ function tpl_youarehere($sep=' &raquo; '){
     $parts = explode(':', $ID);
     $count = count($parts);
 
-    if($GLOBALS['ACT'] == 'search')
-    {
-        $parts = array($conf['start']);
-        $count = 1;
-    }
-
     echo '<span class="bchead">'.$lang['youarehere'].': </span>';
 
     // always print the startpage
@@ -1164,7 +1164,7 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
     if($REV) echo '<input type="hidden" name="rev" value="'.$REV.'" />';
     echo '<input type="hidden" name="sectok" value="'.getSecurityToken().'" />';
 
-    echo '<select name="do" id="action__selector" class="edit">';
+    echo '<select name="do" class="edit quickselect">';
     echo '<option value="">'.$empty.'</option>';
 
     echo '<optgroup label=" &mdash; ">';
@@ -1204,7 +1204,7 @@ function tpl_actiondropdown($empty='',$button='&gt;'){
     echo '</optgroup>';
 
     echo '</select>';
-    echo '<input type="submit" value="'.$button.'" id="action__selectorbtn" />';
+    echo '<input type="submit" value="'.$button.'" />';
     echo '</form>';
 }
 
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 1939a7bcb166577fe9c1b6c5192e7a55eb472315..7d594dc046ca923574a1decc19b3c2d8c93b7967 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -238,7 +238,7 @@ function ajax_linkwiz(){
     global $conf;
     global $lang;
 
-    $q  = ltrim($_POST['q'],':');
+    $q  = ltrim(trim($_POST['q']),':');
     $id = noNS($q);
     $ns = getNS($q);
 
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 117021308da6b0e3673c7a5a79a7b3251d0d0115..645ab3cc420974c7df4438ad08fc4b40539c0d92 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -48,6 +48,7 @@ function js_out(){
                 DOKU_INC.'lib/scripts/textselection.js',
                 DOKU_INC.'lib/scripts/toolbar.js',
                 DOKU_INC.'lib/scripts/edit.js',
+                DOKU_INC.'lib/scripts/locktimer.js',
                 DOKU_INC.'lib/scripts/linkwiz.js',
                 DOKU_INC.'lib/scripts/media.js',
                 DOKU_INC.'lib/scripts/subscriptions.js',
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index c79a25c084dc9f2a7302bc27a43615f2fc6bb440..6f2add2bedcf8ce237f31e36b7346c4553844f79 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -82,18 +82,24 @@
 
     // handle deletion
     if($DEL) {
-        $INUSE = media_inuse($DEL);
-        if(!$INUSE) {
-            if(media_delete($DEL,$AUTH)) {
-                msg(sprintf($lang['deletesucc'],noNS($DEL)),1);
-            } else {
-                msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
+        $res = 0;
+        if(checkSecurityToken()) {
+            $res = media_delete($DEL,$AUTH);
+        }
+        if ($res & DOKU_MEDIA_DELETED) {
+            $msg = sprintf($lang['deletesucc'], noNS($DEL));
+            if ($res & DOKU_MEDIA_EMPTY_NS) {
+                // current namespace was removed. redirecting to root ns passing msg along
+                send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='.
+                        rawurlencode($msg));
             }
-        } else {
+            msg($msg,1);
+        } elseif ($res & DOKU_MEDIA_INUSE) {
             if(!$conf['refshow']) {
-                unset($INUSE);
                 msg(sprintf($lang['mediainuse'],noNS($DEL)),0);
             }
+        } else {
+            msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
         }
     }
 
diff --git a/lib/exe/xmlrpc.php b/lib/exe/xmlrpc.php
index 3d275cb2b7f29af89539116847132712ff69e1e4..108dd8fd1b3a0b3970917c72603b3c8f95cd0c18 100644
--- a/lib/exe/xmlrpc.php
+++ b/lib/exe/xmlrpc.php
@@ -584,64 +584,26 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
      */
     function putAttachment($id, $file, $params) {
         $id = cleanID($id);
-        global $conf;
-        global $lang;
-
         $auth = auth_quickaclcheck(getNS($id).':*');
-        if($auth >= AUTH_UPLOAD) {
-            if(!isset($id)) {
-                return new IXR_ERROR(1, 'Filename not given.');
-            }
 
-            $ftmp = $conf['tmpdir'] . '/' . md5($id.clientIP());
-
-            // save temporary file
-            @unlink($ftmp);
-            $buff = base64_decode($file);
-            io_saveFile($ftmp, $buff);
+        if(!isset($id)) {
+            return new IXR_ERROR(1, 'Filename not given.');
+        }
 
-            // get filename
-            list($iext, $imime,$dl) = mimetype($id);
-            $id = cleanID($id);
-            $fn = mediaFN($id);
-
-            // get filetype regexp
-            $types = array_keys(getMimeTypes());
-            $types = array_map(create_function('$q','return preg_quote($q,"/");'),$types);
-            $regex = join('|',$types);
-
-            // because a temp file was created already
-            if(preg_match('/\.('.$regex.')$/i',$fn)) {
-                //check for overwrite
-                $overwrite = @file_exists($fn);
-                if($overwrite && (!$params['ow'] || $auth < AUTH_DELETE)) {
-                    return new IXR_ERROR(1, $lang['uploadexist'].'1');
-                }
-                // check for valid content
-                $ok = media_contentcheck($ftmp, $imime);
-                if($ok == -1) {
-                    return new IXR_ERROR(1, sprintf($lang['uploadexist'].'2', ".$iext"));
-                } elseif($ok == -2) {
-                    return new IXR_ERROR(1, $lang['uploadspam']);
-                } elseif($ok == -3) {
-                    return new IXR_ERROR(1, $lang['uploadxss']);
-                }
+        global $conf;
 
-                // prepare event data
-                $data[0] = $ftmp;
-                $data[1] = $fn;
-                $data[2] = $id;
-                $data[3] = $imime;
-                $data[4] = $overwrite;
+        $ftmp = $conf['tmpdir'] . '/' . md5($id.clientIP());
 
-                // trigger event
-                return trigger_event('MEDIA_UPLOAD_FINISH', $data, array($this, '_media_upload_action'), true);
+        // save temporary file
+        @unlink($ftmp);
+        $buff = base64_decode($file);
+        io_saveFile($ftmp, $buff);
 
-            } else {
-                return new IXR_ERROR(1, $lang['uploadwrong']);
-            }
+        $res = media_save(array('name' => $ftmp), $id, $params['ow'], $auth, 'rename');
+        if (is_array($res)) {
+            return new IXR_ERROR(-$res[1], $res[0]);
         } else {
-            return new IXR_ERROR(1, "You don't have permissions to upload files.");
+            return $res;
         }
     }
 
@@ -653,55 +615,15 @@ class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
     function deleteAttachment($id){
         $id = cleanID($id);
         $auth = auth_quickaclcheck(getNS($id).':*');
-        if($auth < AUTH_DELETE) return new IXR_ERROR(1, "You don't have permissions to delete files.");
-        global $conf;
-        global $lang;
-
-        // check for references if needed
-        $mediareferences = array();
-        if($conf['refcheck']){
-            $mediareferences = ft_mediause($id,$conf['refshow']);
-        }
-
-        if(!count($mediareferences)){
-            $file = mediaFN($id);
-            if(@unlink($file)){
-                addMediaLogEntry(time(), $id, DOKU_CHANGE_TYPE_DELETE);
-                io_sweepNS($id,'mediadir');
-                return 0;
-            }
-            //something went wrong
-               return new IXR_ERROR(1, 'Could not delete file');
-        } else {
+        $res = media_delete($id, $auth);
+        if ($res & DOKU_MEDIA_DELETED) {
+            return 0;
+        } elseif ($res & DOKU_MEDIA_NOT_AUTH) {
+            return new IXR_ERROR(1, "You don't have permissions to delete files.");
+        } elseif ($res & DOKU_MEDIA_INUSE) {
             return new IXR_ERROR(1, 'File is still referenced');
-        }
-    }
-
-    /**
-     * Moves the temporary file to its final destination.
-     *
-     * Michael Klier <chi@chimeric.de>
-     */
-    function _media_upload_action($data) {
-        global $conf;
-
-        if(is_array($data) && count($data)===5) {
-            io_createNamespace($data[2], 'media');
-            if(rename($data[0], $data[1])) {
-                chmod($data[1], $conf['fmode']);
-                media_notify($data[2], $data[1], $data[3]);
-                // add a log entry to the media changelog
-                if ($data[4]) {
-                    addMediaLogEntry(time(), $data[2], DOKU_CHANGE_TYPE_EDIT);
-                } else {
-                    addMediaLogEntry(time(), $data[2], DOKU_CHANGE_TYPE_CREATE);
-                }
-                return $data[2];
-            } else {
-                return new IXR_ERROR(1, 'Upload failed.');
-            }
         } else {
-            return new IXR_ERROR(1, 'Upload failed.');
+            return new IXR_ERROR(1, 'Could not delete file');
         }
     }
 
diff --git a/lib/images/admin/acl.png b/lib/images/admin/acl.png
index 96fb4cd5643fd43141cf32f776f5b81d596f4d89..c8f610c12df1ee977d82fd4af08e084ddff67058 100644
Binary files a/lib/images/admin/acl.png and b/lib/images/admin/acl.png differ
diff --git a/lib/images/admin/config.png b/lib/images/admin/config.png
index e4d376d853915ec231b6f95135cb8743478e87f9..3ec3923d114d829f57eafec58a1e525ddb65edb6 100644
Binary files a/lib/images/admin/config.png and b/lib/images/admin/config.png differ
diff --git a/lib/images/admin/plugin.png b/lib/images/admin/plugin.png
index e2823bac78a00ec97e96bc4817aed6ed1dff37b1..6896a13656d77b0192fe839438a968b5e5b388fd 100644
Binary files a/lib/images/admin/plugin.png and b/lib/images/admin/plugin.png differ
diff --git a/lib/images/admin/popularity.png b/lib/images/admin/popularity.png
index 4e22aaf0def484b2f5013ed715c8d73ea2fe828c..f7fe254f83236014ff6af5de26b4b30d79d21d2a 100644
Binary files a/lib/images/admin/popularity.png and b/lib/images/admin/popularity.png differ
diff --git a/lib/images/admin/revert.png b/lib/images/admin/revert.png
index 002d3a75bfa7ce3f1dc14819c43877fc5e656947..76cc3e9bc9fd8876c88b72b210517e2111069866 100644
Binary files a/lib/images/admin/revert.png and b/lib/images/admin/revert.png differ
diff --git a/lib/images/admin/usermanager.png b/lib/images/admin/usermanager.png
index c5c8dc6d64e1d03f10f0a9f4352c5a2386bd921c..e1edff2fcc259b5ca40e9797023111dc3e9340ff 100644
Binary files a/lib/images/admin/usermanager.png and b/lib/images/admin/usermanager.png differ
diff --git a/lib/images/close.png b/lib/images/close.png
index e1b498c14bba4598ef24e84ce73837b0ad5163ec..4ccef060329d35cfda449c01c1c2e22fe46b3339 100644
Binary files a/lib/images/close.png and b/lib/images/close.png differ
diff --git a/lib/images/del.png b/lib/images/del.png
index a3260d718e65db8c0ca981b1ae420c2327510bff..e59ded55f5b2deb045764cea1c03c1bb10ffd956 100644
Binary files a/lib/images/del.png and b/lib/images/del.png differ
diff --git a/lib/images/diff.png b/lib/images/diff.png
index 0b98d79ace182dced94e8774feeede3b2f5280d8..657b109994d3c2d3f3f74c2a761cdf854f942c91 100644
Binary files a/lib/images/diff.png and b/lib/images/diff.png differ
diff --git a/lib/images/error.png b/lib/images/error.png
index 8a1ba4c664158550952084ce4e6d8ab72d21de05..7bd84f7a36dedfa8107314e54836462ab93e5f7a 100644
Binary files a/lib/images/error.png and b/lib/images/error.png differ
diff --git a/lib/images/fileicons/bz2.png b/lib/images/fileicons/bz2.png
index d48cae038410aa43e668acdb49b9dddeb98ea07e..6ec2f98ef0a4af92666ee816bc442543ccc4f4bc 100644
Binary files a/lib/images/fileicons/bz2.png and b/lib/images/fileicons/bz2.png differ
diff --git a/lib/images/fileicons/c.png b/lib/images/fileicons/c.png
index 9446afcb410887bebd4ddd633c2c1f5275bcc805..6f57337c7ffd6a6cd5e9b5d7a9fd57f5f0c670a6 100644
Binary files a/lib/images/fileicons/c.png and b/lib/images/fileicons/c.png differ
diff --git a/lib/images/fileicons/conf.png b/lib/images/fileicons/conf.png
index ddffe6fd1aad01e342cacc7fb5bb53cd4699c9ca..20c20fa3d35e13a1ec2f17b5d8777d25c37997be 100644
Binary files a/lib/images/fileicons/conf.png and b/lib/images/fileicons/conf.png differ
diff --git a/lib/images/fileicons/cpp.png b/lib/images/fileicons/cpp.png
index 2dc51b16dfc1785b1b3980b3b2cfb98841c1c4de..6f2797da5103ba3dc3ed81ca7851966e16b6503c 100644
Binary files a/lib/images/fileicons/cpp.png and b/lib/images/fileicons/cpp.png differ
diff --git a/lib/images/fileicons/cs.png b/lib/images/fileicons/cs.png
index d5db29ba5dbcb554b41d0091fe4e2aea3abcdc69..d3afa112cbf6e2e40cdb8f067b9d4d6498d9f2c6 100644
Binary files a/lib/images/fileicons/cs.png and b/lib/images/fileicons/cs.png differ
diff --git a/lib/images/fileicons/csv.png b/lib/images/fileicons/csv.png
index 3a8835360e22920fdd75d004920f54f12ffdb9fc..b604453c47ba8f38849dfb4df8f58be459b55ad1 100644
Binary files a/lib/images/fileicons/csv.png and b/lib/images/fileicons/csv.png differ
diff --git a/lib/images/fileicons/deb.png b/lib/images/fileicons/deb.png
index 9229d878382ccdfb62f76d448bd16c86a4bfee05..e61300de90d41be3ac260b323eca0b8ac2b12d57 100644
Binary files a/lib/images/fileicons/deb.png and b/lib/images/fileicons/deb.png differ
diff --git a/lib/images/fileicons/doc.png b/lib/images/fileicons/doc.png
index 932567f8a9368cd42cf25dfe911c1530f932fd19..b48fdac8981aa32073eaa2118d415c1f31487822 100644
Binary files a/lib/images/fileicons/doc.png and b/lib/images/fileicons/doc.png differ
diff --git a/lib/images/fileicons/docx.png b/lib/images/fileicons/docx.png
index 932567f8a9368cd42cf25dfe911c1530f932fd19..b48fdac8981aa32073eaa2118d415c1f31487822 100644
Binary files a/lib/images/fileicons/docx.png and b/lib/images/fileicons/docx.png differ
diff --git a/lib/images/fileicons/file.png b/lib/images/fileicons/file.png
index 817014fa7363a3fc5b91f6a9abb9fdc9e392ade7..c1a7ef1b44e1f31765bdb7884f18cbfdcc2d4c1c 100644
Binary files a/lib/images/fileicons/file.png and b/lib/images/fileicons/file.png differ
diff --git a/lib/images/fileicons/gif.png b/lib/images/fileicons/gif.png
index aa4cc23a5b0d88cd17a4fbfa8260e71bf64a6f35..1d9dd562a4b27328ef9ca0ca516361d2d8da2e29 100644
Binary files a/lib/images/fileicons/gif.png and b/lib/images/fileicons/gif.png differ
diff --git a/lib/images/fileicons/gz.png b/lib/images/fileicons/gz.png
index 2426bd169c0268c06f3d41aaad94fddcba25e72f..48f19596cce36e65472b4c2123b0631eb2b146f2 100644
Binary files a/lib/images/fileicons/gz.png and b/lib/images/fileicons/gz.png differ
diff --git a/lib/images/fileicons/htm.png b/lib/images/fileicons/htm.png
index 1a6812185b9ab0a4dc7f5d568df09704132ebc97..d45e4c19adbdc1d0b6d8055f05b9e5e96509ec48 100644
Binary files a/lib/images/fileicons/htm.png and b/lib/images/fileicons/htm.png differ
diff --git a/lib/images/fileicons/html.png b/lib/images/fileicons/html.png
index 1a6812185b9ab0a4dc7f5d568df09704132ebc97..d45e4c19adbdc1d0b6d8055f05b9e5e96509ec48 100644
Binary files a/lib/images/fileicons/html.png and b/lib/images/fileicons/html.png differ
diff --git a/lib/images/fileicons/jpeg.png b/lib/images/fileicons/jpeg.png
index aa4cc23a5b0d88cd17a4fbfa8260e71bf64a6f35..1d9dd562a4b27328ef9ca0ca516361d2d8da2e29 100644
Binary files a/lib/images/fileicons/jpeg.png and b/lib/images/fileicons/jpeg.png differ
diff --git a/lib/images/fileicons/jpg.png b/lib/images/fileicons/jpg.png
index aa4cc23a5b0d88cd17a4fbfa8260e71bf64a6f35..1d9dd562a4b27328ef9ca0ca516361d2d8da2e29 100644
Binary files a/lib/images/fileicons/jpg.png and b/lib/images/fileicons/jpg.png differ
diff --git a/lib/images/fileicons/lua.png b/lib/images/fileicons/lua.png
index 7c07d023f91855f31cc77fa5470e4a616dd12543..dd72770bb81ed28d1cc2db229912f4041157e2fa 100644
Binary files a/lib/images/fileicons/lua.png and b/lib/images/fileicons/lua.png differ
diff --git a/lib/images/fileicons/mp3.png b/lib/images/fileicons/mp3.png
index 928705d7a54e7958e2ad2f2cb1da1f15f97782fd..d5d3ec1e4d468de61131d974550a1f8a125c5bac 100644
Binary files a/lib/images/fileicons/mp3.png and b/lib/images/fileicons/mp3.png differ
diff --git a/lib/images/fileicons/odc.png b/lib/images/fileicons/odc.png
index 47f65c84d34cbb0792340815a9bb1b19dabb337f..4d6676c3a02237d9db48e79581085395ca47a0c3 100644
Binary files a/lib/images/fileicons/odc.png and b/lib/images/fileicons/odc.png differ
diff --git a/lib/images/fileicons/odf.png b/lib/images/fileicons/odf.png
index a2fbc5195a2c1ff0c785ab5498ffe985bc25e704..65c62ebbe6fd6087fbb4f79bc9789bfecaeddc03 100644
Binary files a/lib/images/fileicons/odf.png and b/lib/images/fileicons/odf.png differ
diff --git a/lib/images/fileicons/odg.png b/lib/images/fileicons/odg.png
index 74f6303d3dce3bc6bc2174efbdbba176b2ada991..a07216f4af3cabf92105a7deaf8170af8ee4d848 100644
Binary files a/lib/images/fileicons/odg.png and b/lib/images/fileicons/odg.png differ
diff --git a/lib/images/fileicons/odi.png b/lib/images/fileicons/odi.png
index 74f6303d3dce3bc6bc2174efbdbba176b2ada991..a07216f4af3cabf92105a7deaf8170af8ee4d848 100644
Binary files a/lib/images/fileicons/odi.png and b/lib/images/fileicons/odi.png differ
diff --git a/lib/images/fileicons/odp.png b/lib/images/fileicons/odp.png
index 2a94290d708248b3da0b3ac5f5d08b78b411c582..ed51fcaf14d9e92f6675d6b213fb372520f6f4c7 100644
Binary files a/lib/images/fileicons/odp.png and b/lib/images/fileicons/odp.png differ
diff --git a/lib/images/fileicons/ods.png b/lib/images/fileicons/ods.png
index 47f65c84d34cbb0792340815a9bb1b19dabb337f..4d6676c3a02237d9db48e79581085395ca47a0c3 100644
Binary files a/lib/images/fileicons/ods.png and b/lib/images/fileicons/ods.png differ
diff --git a/lib/images/fileicons/odt.png b/lib/images/fileicons/odt.png
index b0c21fc1fd1d5f43ca6e15146d74960677300e14..67ef1a42d2297b747e3852df6bf01f004f017034 100644
Binary files a/lib/images/fileicons/odt.png and b/lib/images/fileicons/odt.png differ
diff --git a/lib/images/fileicons/ogg.png b/lib/images/fileicons/ogg.png
index 62cea6aaa4ba65a9bc57c2fd7d4676d3d2a55183..0a21eae65cb981ecd54bfa888bae11b58529318a 100644
Binary files a/lib/images/fileicons/ogg.png and b/lib/images/fileicons/ogg.png differ
diff --git a/lib/images/fileicons/pdf.png b/lib/images/fileicons/pdf.png
index 638066dea602dc90953200c59158d02a95446b7f..f40f228264bd5e9a9d9949ceca814302f83efb9d 100644
Binary files a/lib/images/fileicons/pdf.png and b/lib/images/fileicons/pdf.png differ
diff --git a/lib/images/fileicons/php.png b/lib/images/fileicons/php.png
index e735f875b44a1006b7c5bcb66e26e63f7b7d6644..f81e405de3f6d47a5513d3e12e8493ba0c535494 100644
Binary files a/lib/images/fileicons/php.png and b/lib/images/fileicons/php.png differ
diff --git a/lib/images/fileicons/pl.png b/lib/images/fileicons/pl.png
index 6ac381cd7d1327b2ecdb85100a40b75de746da6b..92f3f97546236dcf5625086a58aa6c38e6015437 100644
Binary files a/lib/images/fileicons/pl.png and b/lib/images/fileicons/pl.png differ
diff --git a/lib/images/fileicons/png.png b/lib/images/fileicons/png.png
index aa4cc23a5b0d88cd17a4fbfa8260e71bf64a6f35..1d9dd562a4b27328ef9ca0ca516361d2d8da2e29 100644
Binary files a/lib/images/fileicons/png.png and b/lib/images/fileicons/png.png differ
diff --git a/lib/images/fileicons/ppt.png b/lib/images/fileicons/ppt.png
index adaefc6025a7e9dcceaa275652d5988d818505c6..b7afb2266cc0b79fc47d091b68441a49e2feb9dd 100644
Binary files a/lib/images/fileicons/ppt.png and b/lib/images/fileicons/ppt.png differ
diff --git a/lib/images/fileicons/pptx.png b/lib/images/fileicons/pptx.png
index adaefc6025a7e9dcceaa275652d5988d818505c6..b7afb2266cc0b79fc47d091b68441a49e2feb9dd 100644
Binary files a/lib/images/fileicons/pptx.png and b/lib/images/fileicons/pptx.png differ
diff --git a/lib/images/fileicons/ps.png b/lib/images/fileicons/ps.png
index c51c763ab3b5f7ad4a951a71484d9b053ff1816e..78e3af8fb5be19987adcafb54341e1cf93a2be21 100644
Binary files a/lib/images/fileicons/ps.png and b/lib/images/fileicons/ps.png differ
diff --git a/lib/images/fileicons/py.png b/lib/images/fileicons/py.png
index a21b8da4984f4baf06d15cbccca2e50e5ed3108a..15a727c5469429434715fb6fdcc0961e6a0d997d 100644
Binary files a/lib/images/fileicons/py.png and b/lib/images/fileicons/py.png differ
diff --git a/lib/images/fileicons/rar.png b/lib/images/fileicons/rar.png
index a6af4d1cac16975bc6eff1bd9c1a02905e99db64..c761a4f7fdc3bfea15a52b1a224c0867c3345be7 100644
Binary files a/lib/images/fileicons/rar.png and b/lib/images/fileicons/rar.png differ
diff --git a/lib/images/fileicons/rb.png b/lib/images/fileicons/rb.png
index 45f4489780f6758a96c1242bcec00acbab5259ac..408f708a1df128e25d79e4a1684c5efddd34fde8 100644
Binary files a/lib/images/fileicons/rb.png and b/lib/images/fileicons/rb.png differ
diff --git a/lib/images/fileicons/rpm.png b/lib/images/fileicons/rpm.png
index 22212eafacc69e139622065067fbd64284d059de..5cf727de025e37dad60bb2d3463b1826362426a1 100644
Binary files a/lib/images/fileicons/rpm.png and b/lib/images/fileicons/rpm.png differ
diff --git a/lib/images/fileicons/rtf.png b/lib/images/fileicons/rtf.png
index d8bada5fe143ec1f3d13a958cf89ca762a1ffd3f..a1170af7fb4b3792b1e2792902f032f96aaa90f7 100644
Binary files a/lib/images/fileicons/rtf.png and b/lib/images/fileicons/rtf.png differ
diff --git a/lib/images/fileicons/sql.png b/lib/images/fileicons/sql.png
index f60054a3af72ed4ae2809f513064dcde5416fd50..13772b73ce68a54443d3ec1d093b88da91cc62cb 100644
Binary files a/lib/images/fileicons/sql.png and b/lib/images/fileicons/sql.png differ
diff --git a/lib/images/fileicons/swf.png b/lib/images/fileicons/swf.png
index 0729ed0203ea2b0b6c4402d9af5fccbdc2e6397f..ecc7309ad52bca2ff1387fad5f066e36de59e9c6 100644
Binary files a/lib/images/fileicons/swf.png and b/lib/images/fileicons/swf.png differ
diff --git a/lib/images/fileicons/sxc.png b/lib/images/fileicons/sxc.png
index 47f65c84d34cbb0792340815a9bb1b19dabb337f..4d6676c3a02237d9db48e79581085395ca47a0c3 100644
Binary files a/lib/images/fileicons/sxc.png and b/lib/images/fileicons/sxc.png differ
diff --git a/lib/images/fileicons/sxd.png b/lib/images/fileicons/sxd.png
index 74f6303d3dce3bc6bc2174efbdbba176b2ada991..a07216f4af3cabf92105a7deaf8170af8ee4d848 100644
Binary files a/lib/images/fileicons/sxd.png and b/lib/images/fileicons/sxd.png differ
diff --git a/lib/images/fileicons/sxi.png b/lib/images/fileicons/sxi.png
index 2a94290d708248b3da0b3ac5f5d08b78b411c582..ed51fcaf14d9e92f6675d6b213fb372520f6f4c7 100644
Binary files a/lib/images/fileicons/sxi.png and b/lib/images/fileicons/sxi.png differ
diff --git a/lib/images/fileicons/sxw.png b/lib/images/fileicons/sxw.png
index b0c21fc1fd1d5f43ca6e15146d74960677300e14..67ef1a42d2297b747e3852df6bf01f004f017034 100644
Binary files a/lib/images/fileicons/sxw.png and b/lib/images/fileicons/sxw.png differ
diff --git a/lib/images/fileicons/tar.png b/lib/images/fileicons/tar.png
index 5a2f717fc54e604ef5bb82b8a5d463c0073a7357..a28c86f2de27465a78dc45db99bec9c8f1eb82d7 100644
Binary files a/lib/images/fileicons/tar.png and b/lib/images/fileicons/tar.png differ
diff --git a/lib/images/fileicons/tgz.png b/lib/images/fileicons/tgz.png
index 2426bd169c0268c06f3d41aaad94fddcba25e72f..48f19596cce36e65472b4c2123b0631eb2b146f2 100644
Binary files a/lib/images/fileicons/tgz.png and b/lib/images/fileicons/tgz.png differ
diff --git a/lib/images/fileicons/txt.png b/lib/images/fileicons/txt.png
index da20009c6ebc28d8286577735f0a2aed9402fdf5..bb94949f6205b348e4b98e9b527fa03d934c01e5 100644
Binary files a/lib/images/fileicons/txt.png and b/lib/images/fileicons/txt.png differ
diff --git a/lib/images/fileicons/wav.png b/lib/images/fileicons/wav.png
index 79e80760e2cade44dde7c0b5b5f1e6342754bd45..46ff63f0f9e30d43eeaa6ba42ef9ce3d7f2fee97 100644
Binary files a/lib/images/fileicons/wav.png and b/lib/images/fileicons/wav.png differ
diff --git a/lib/images/fileicons/xls.png b/lib/images/fileicons/xls.png
index e8cd58dc0f1912e3379db02a75077bcd8ad2320e..24911b802d8f52f966552d450f177d62bec5f940 100644
Binary files a/lib/images/fileicons/xls.png and b/lib/images/fileicons/xls.png differ
diff --git a/lib/images/fileicons/xlsx.png b/lib/images/fileicons/xlsx.png
index e8cd58dc0f1912e3379db02a75077bcd8ad2320e..24911b802d8f52f966552d450f177d62bec5f940 100644
Binary files a/lib/images/fileicons/xlsx.png and b/lib/images/fileicons/xlsx.png differ
diff --git a/lib/images/fileicons/xml.png b/lib/images/fileicons/xml.png
index eb46323979ced7663447f2c6315be1f824e60eb4..ae9831b34f7d9d18325cf787e68e240f53ae1ce0 100644
Binary files a/lib/images/fileicons/xml.png and b/lib/images/fileicons/xml.png differ
diff --git a/lib/images/fileicons/zip.png b/lib/images/fileicons/zip.png
index 999ffbe80707d6c2bd3674895f62e824a2668522..f4a10bf9ca0d6d718cddb61e76f67307c78038ed 100644
Binary files a/lib/images/fileicons/zip.png and b/lib/images/fileicons/zip.png differ
diff --git a/lib/images/history.png b/lib/images/history.png
index ef9e311d30496eb650df6c10fed83d4194e5820d..82a418d44d01b72ecfb6ffbec87decf58aacf539 100644
Binary files a/lib/images/history.png and b/lib/images/history.png differ
diff --git a/lib/images/info.png b/lib/images/info.png
index a237c178299c3f414d9e51b807a925b294372cd3..121c7336dc5d7e72080980b934618d6608ee979f 100644
Binary files a/lib/images/info.png and b/lib/images/info.png differ
diff --git a/lib/images/interwiki.png b/lib/images/interwiki.png
index 73d6f8d39af227acbcea9e06952694703183170c..f9c73d505a941c77a1d43c7bd228cae2cbee75d9 100644
Binary files a/lib/images/interwiki.png and b/lib/images/interwiki.png differ
diff --git a/lib/images/interwiki/callto.gif b/lib/images/interwiki/callto.gif
new file mode 100644
index 0000000000000000000000000000000000000000..880e9d8e7dad0be16ec0baa57bd8adc87d383b79
Binary files /dev/null and b/lib/images/interwiki/callto.gif differ
diff --git a/lib/images/interwiki/skype.png b/lib/images/interwiki/skype.png
new file mode 100644
index 0000000000000000000000000000000000000000..c70216702b21067eb154a0a965c672782a5dcea0
Binary files /dev/null and b/lib/images/interwiki/skype.png differ
diff --git a/lib/images/license/badge/cc-by-nc-nd.png b/lib/images/license/badge/cc-by-nc-nd.png
index 49f272f828c17c9f52b64c27fa6a3c399bee9344..3231da3a364090b16935ce005214cb3c774534b1 100644
Binary files a/lib/images/license/badge/cc-by-nc-nd.png and b/lib/images/license/badge/cc-by-nc-nd.png differ
diff --git a/lib/images/license/badge/cc-by-nc-sa.png b/lib/images/license/badge/cc-by-nc-sa.png
index 0f2a0f10722d3fabffe8af5d5eed09866e25909a..6bcf6a11d6f753f59dd882c1f8ba9203ec65d114 100644
Binary files a/lib/images/license/badge/cc-by-nc-sa.png and b/lib/images/license/badge/cc-by-nc-sa.png differ
diff --git a/lib/images/license/badge/cc-by-nc.png b/lib/images/license/badge/cc-by-nc.png
index 5f982147075ad08691e3b3c53e92633ca0ddcb2f..6d646321fd22d16fc7b1c9898a6f8ebd7181051a 100644
Binary files a/lib/images/license/badge/cc-by-nc.png and b/lib/images/license/badge/cc-by-nc.png differ
diff --git a/lib/images/license/badge/cc-by-nd.png b/lib/images/license/badge/cc-by-nd.png
index 8f317035e677affa946516c82baa17f896e8a866..442353808be9fe4c59c5b6b3d0bc76dc17453c43 100644
Binary files a/lib/images/license/badge/cc-by-nd.png and b/lib/images/license/badge/cc-by-nd.png differ
diff --git a/lib/images/license/badge/cc-by-sa.png b/lib/images/license/badge/cc-by-sa.png
index f0a944e0b89642ae282047846e55393007b04686..e9fb436af8c6baf488c61795196883e6c6d3daf6 100644
Binary files a/lib/images/license/badge/cc-by-sa.png and b/lib/images/license/badge/cc-by-sa.png differ
diff --git a/lib/images/license/badge/cc-by.png b/lib/images/license/badge/cc-by.png
index 822491edb993b072fc183a2ce23adfa8c94cee7c..cdc1f58fa3d396801adf4efe4144769fa8a822b7 100644
Binary files a/lib/images/license/badge/cc-by.png and b/lib/images/license/badge/cc-by.png differ
diff --git a/lib/images/license/badge/cc-zero.png b/lib/images/license/badge/cc-zero.png
index 8a0ef3e3bcc8e2846a74c4b5dda4318fc18e6991..fd3dff422a3fddc4b72208a29b15740ce2e16d20 100644
Binary files a/lib/images/license/badge/cc-zero.png and b/lib/images/license/badge/cc-zero.png differ
diff --git a/lib/images/license/badge/cc.png b/lib/images/license/badge/cc.png
index a66f4d1a010e16aacf1a8538fd0e624a5c0d2586..8ac73aa4e390ae1e35fdd8e811e447910d242468 100644
Binary files a/lib/images/license/badge/cc.png and b/lib/images/license/badge/cc.png differ
diff --git a/lib/images/license/badge/gnufdl.png b/lib/images/license/badge/gnufdl.png
index 1371aba886e5fbefc5b9ea6749a893ba440729e1..e9291012894865482b300cb7f6326896b75e2975 100644
Binary files a/lib/images/license/badge/gnufdl.png and b/lib/images/license/badge/gnufdl.png differ
diff --git a/lib/images/license/badge/publicdomain.png b/lib/images/license/badge/publicdomain.png
index cedc39c62b5d18558b9970c5879aae9f0dfe7b68..ea8eeb4e1267715efd69557833ab76acffa57d02 100644
Binary files a/lib/images/license/badge/publicdomain.png and b/lib/images/license/badge/publicdomain.png differ
diff --git a/lib/images/license/button/cc-by-nc-nd.png b/lib/images/license/button/cc-by-nc-nd.png
index b27ead2f68a9287280f207532682e73acd941ef7..e1344a95496d01cd7420fdc895be9852bf7df156 100644
Binary files a/lib/images/license/button/cc-by-nc-nd.png and b/lib/images/license/button/cc-by-nc-nd.png differ
diff --git a/lib/images/license/button/cc-by-nc-sa.png b/lib/images/license/button/cc-by-nc-sa.png
index 1c54f994df06341ae0d3f460eda0c55fa0f92801..6855a7586981a2f57dd7598a82b8047976e8d408 100644
Binary files a/lib/images/license/button/cc-by-nc-sa.png and b/lib/images/license/button/cc-by-nc-sa.png differ
diff --git a/lib/images/license/button/cc-by-nc.png b/lib/images/license/button/cc-by-nc.png
index 33c7b1fa411da0653be64c5f468116564fd3b8d0..0b4d972682869fcbff13690284eda7c8ae591211 100644
Binary files a/lib/images/license/button/cc-by-nc.png and b/lib/images/license/button/cc-by-nc.png differ
diff --git a/lib/images/license/button/cc-by-nd.png b/lib/images/license/button/cc-by-nd.png
index 52073c043abb52d477a41f0f379cc703054ac9a3..cdd3da9cce907448dc03d3deca40a8d9a15149ff 100644
Binary files a/lib/images/license/button/cc-by-nd.png and b/lib/images/license/button/cc-by-nd.png differ
diff --git a/lib/images/license/button/cc-by-sa.png b/lib/images/license/button/cc-by-sa.png
index 0b1880f91ec62252ff0829f87fa99811f7177282..c512da0c4ef0b9ef5b693d0055ea74b752532442 100644
Binary files a/lib/images/license/button/cc-by-sa.png and b/lib/images/license/button/cc-by-sa.png differ
diff --git a/lib/images/license/button/cc-by.png b/lib/images/license/button/cc-by.png
index 99d8efd35451b5bf544c4fe0bba80688e5533559..9179e2f57707c8508992eddb07426e40fa7955ff 100644
Binary files a/lib/images/license/button/cc-by.png and b/lib/images/license/button/cc-by.png differ
diff --git a/lib/images/license/button/cc-zero.png b/lib/images/license/button/cc-zero.png
index fc99eff61142612c3c9c826fb7b3b290fdaca459..9243a80977eb9f70fce58b7c2543399e2a01786f 100644
Binary files a/lib/images/license/button/cc-zero.png and b/lib/images/license/button/cc-zero.png differ
diff --git a/lib/images/license/button/cc.png b/lib/images/license/button/cc.png
index adfa085bdb708d26d06c07f6b2ed78ec2458d8ed..087115aa6678669644a21a2a4a9307a107f078e8 100644
Binary files a/lib/images/license/button/cc.png and b/lib/images/license/button/cc.png differ
diff --git a/lib/images/license/button/gnufdl.png b/lib/images/license/button/gnufdl.png
index cb815ac13d21e0be37ba4fa8bf429764114410c4..d26e95f77900dc53cbb99808d854a547afd47085 100644
Binary files a/lib/images/license/button/gnufdl.png and b/lib/images/license/button/gnufdl.png differ
diff --git a/lib/images/license/button/publicdomain.png b/lib/images/license/button/publicdomain.png
index f78e73d02686df17a61a29bc2d7f22145c7983d4..1dcde15ebbba138aa46042ed5f51491dc482fb11 100644
Binary files a/lib/images/license/button/publicdomain.png and b/lib/images/license/button/publicdomain.png differ
diff --git a/lib/images/magnifier.png b/lib/images/magnifier.png
index cf3d97f75e9cde9c143980d89272fe61fc2d64ee..89febff1035e680c0ef2b4182f09e46e09949011 100644
Binary files a/lib/images/magnifier.png and b/lib/images/magnifier.png differ
diff --git a/lib/images/media_align_center.png b/lib/images/media_align_center.png
index 3db90fc17e12cc56de55b491b5c845b91a291532..807f9d9a883f52156c75d51ffc82e5d376166787 100644
Binary files a/lib/images/media_align_center.png and b/lib/images/media_align_center.png differ
diff --git a/lib/images/media_align_left.png b/lib/images/media_align_left.png
index cebbb1a9ab330b3009cd5c2fecdb0fb075f6d2c7..fa6cf33ca0bf10e4ac179c6474939588bb0e02e6 100644
Binary files a/lib/images/media_align_left.png and b/lib/images/media_align_left.png differ
diff --git a/lib/images/media_align_noalign.png b/lib/images/media_align_noalign.png
index 74f34e5f1c015d1bdbf1b8fba25d7166dfd9495b..263e090fed529615aa0606b6acb12c0fa542289a 100644
Binary files a/lib/images/media_align_noalign.png and b/lib/images/media_align_noalign.png differ
diff --git a/lib/images/media_align_right.png b/lib/images/media_align_right.png
index 5f54a4a499db6c5579e59d45df9dfc944e85a2fc..33539dbdb1f2600d38befe6cd92a539b3c1b6409 100644
Binary files a/lib/images/media_align_right.png and b/lib/images/media_align_right.png differ
diff --git a/lib/images/media_link_direct.png b/lib/images/media_link_direct.png
index 4bdb3541ecb728c1e2b0bef1b0546fa0878c99fa..4350b803d0dc0727e7bc206471cf91464d1942e7 100644
Binary files a/lib/images/media_link_direct.png and b/lib/images/media_link_direct.png differ
diff --git a/lib/images/media_link_displaylnk.png b/lib/images/media_link_displaylnk.png
index 25eacb7c2524142262d68bf729c5e2b61adfd6d4..53927566a1be29e67155c4ba4a7dc4878ef2d6a5 100644
Binary files a/lib/images/media_link_displaylnk.png and b/lib/images/media_link_displaylnk.png differ
diff --git a/lib/images/media_link_lnk.png b/lib/images/media_link_lnk.png
index 1209164ca5567328ea8c386e577af4f47b031e71..5ff4ee182f79eb9ca9ce396a0390a16fb4e866c1 100644
Binary files a/lib/images/media_link_lnk.png and b/lib/images/media_link_lnk.png differ
diff --git a/lib/images/media_link_nolnk.png b/lib/images/media_link_nolnk.png
index fc3c393caa3bc4371d12d0c67ffd6d333ecf1d8e..c9378c7fd072761d8f1f724df1fc7b6403ba21fa 100644
Binary files a/lib/images/media_link_nolnk.png and b/lib/images/media_link_nolnk.png differ
diff --git a/lib/images/media_size_large.png b/lib/images/media_size_large.png
index e2fb548d92320a2a5207d8ef6ac54765c014bf33..012a418c36fd5f2455c4c7f4b7b23a3284fbc8a5 100644
Binary files a/lib/images/media_size_large.png and b/lib/images/media_size_large.png differ
diff --git a/lib/images/media_size_medium.png b/lib/images/media_size_medium.png
index b33157256423439e3f1cff01e02d7606bd934ae6..1469f519fe25bb4ac261075082c072f229497d24 100644
Binary files a/lib/images/media_size_medium.png and b/lib/images/media_size_medium.png differ
diff --git a/lib/images/media_size_original.png b/lib/images/media_size_original.png
index d179aa2dbe2e180ec31814c1502a5cf5998a0cdd..f58d056aa5de557f17288828baf8adcf11e0ca31 100644
Binary files a/lib/images/media_size_original.png and b/lib/images/media_size_original.png differ
diff --git a/lib/images/media_size_small.png b/lib/images/media_size_small.png
index 04efe7080fac7dfa27bdc9d9b55a41f6d3751683..a0aafa4a7f0810b48571ecd1001244d54ee67480 100644
Binary files a/lib/images/media_size_small.png and b/lib/images/media_size_small.png differ
diff --git a/lib/images/multiupload.png b/lib/images/multiupload.png
index 1e8efa063f773bd1cc79ac29f157e9af8f8e7d66..bc16c76d6f010d05ffd49058887501351fc52f8f 100644
Binary files a/lib/images/multiupload.png and b/lib/images/multiupload.png differ
diff --git a/lib/images/notify.png b/lib/images/notify.png
index 6e0015df4f737ded7e7e14b546616e704f023226..c18ef1001be7f5eebc88ad22a3b60938e1860018 100644
Binary files a/lib/images/notify.png and b/lib/images/notify.png differ
diff --git a/lib/images/ns.png b/lib/images/ns.png
index da3c2a2d74bab159ba0f65d7db601768258afcb2..c35e832da26a01c0a1a54ca6c88b8ae9423c8b00 100644
Binary files a/lib/images/ns.png and b/lib/images/ns.png differ
diff --git a/lib/images/page.png b/lib/images/page.png
index 03ddd799fa0a3aec561c75d4221f195db65d6eb9..b1b7ebe941933c67b3db758ffbc4149f3043631f 100644
Binary files a/lib/images/page.png and b/lib/images/page.png differ
diff --git a/lib/images/pencil.png b/lib/images/pencil.png
index 0bfecd50ee9f5bc5828f0c0745aa3e0effcbe250..3ea75412065c410bacd7f88278bc176bd4e9fe0e 100644
Binary files a/lib/images/pencil.png and b/lib/images/pencil.png differ
diff --git a/lib/images/smileys/facepalm.gif b/lib/images/smileys/facepalm.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4ce005e633f4ac24ea1f9ab312330bb9af4e33b6
Binary files /dev/null and b/lib/images/smileys/facepalm.gif differ
diff --git a/lib/images/success.png b/lib/images/success.png
index a5ae9f11b815739b7606eb9b2d36dd4e26069bfb..9241adbb2f94a1f792e150f0284806149d4ae5e5 100644
Binary files a/lib/images/success.png and b/lib/images/success.png differ
diff --git a/lib/images/toolbar/bold.png b/lib/images/toolbar/bold.png
index 7ebe99ee926f1bd73fac1200598de09ecdd87a12..1fc8a9cc4d900145c1eea84a883d9896a71a5269 100644
Binary files a/lib/images/toolbar/bold.png and b/lib/images/toolbar/bold.png differ
diff --git a/lib/images/toolbar/chars.png b/lib/images/toolbar/chars.png
index 3f3396aebccf9d1e3f205d46f1338120013b339d..bad37e503ea9e21d5f82952bb70e811d94959898 100644
Binary files a/lib/images/toolbar/chars.png and b/lib/images/toolbar/chars.png differ
diff --git a/lib/images/toolbar/h.png b/lib/images/toolbar/h.png
index aae0524625c047c43f5a4f6a59f1b2819d70e728..6a48cbbc0159248d72c70947667fd0bc6e64bc08 100644
Binary files a/lib/images/toolbar/h.png and b/lib/images/toolbar/h.png differ
diff --git a/lib/images/toolbar/h1.png b/lib/images/toolbar/h1.png
index 93dae935f8e05111a94f56b6c8cc69dfcc6f6020..85bd06e6cca083f1fb4d2a05e8dccca58d2ef20a 100644
Binary files a/lib/images/toolbar/h1.png and b/lib/images/toolbar/h1.png differ
diff --git a/lib/images/toolbar/h2.png b/lib/images/toolbar/h2.png
index f0eee3bd03a77c91976cd05ff551f4479722296b..be2c60031b0de8e1e1a19a50a40f5a136c20ca6b 100644
Binary files a/lib/images/toolbar/h2.png and b/lib/images/toolbar/h2.png differ
diff --git a/lib/images/toolbar/h3.png b/lib/images/toolbar/h3.png
index 8cfd4c077a4430fcf7483bd4b64b12d0cb517bdd..350da88b698c9d90a288f837d977122787fefb27 100644
Binary files a/lib/images/toolbar/h3.png and b/lib/images/toolbar/h3.png differ
diff --git a/lib/images/toolbar/h4.png b/lib/images/toolbar/h4.png
index 7b8f51a1bba3e73f01ddb92f2a8939f388d922b7..bc1b7038f8ad49c4bc29c14e7a8d11cedbd6b254 100644
Binary files a/lib/images/toolbar/h4.png and b/lib/images/toolbar/h4.png differ
diff --git a/lib/images/toolbar/h5.png b/lib/images/toolbar/h5.png
index 44b00d9c8e1af3818b6edbe3156e19656860eca6..b6c263dfb347a14beef7e4c5a61acfd03a7ba135 100644
Binary files a/lib/images/toolbar/h5.png and b/lib/images/toolbar/h5.png differ
diff --git a/lib/images/toolbar/hequal.png b/lib/images/toolbar/hequal.png
index 8fc6b0d759406b1fe0e8a3b1d56461043e5b7e6b..da4e921ff33cec7cc51c121ba4608110f124e1a7 100644
Binary files a/lib/images/toolbar/hequal.png and b/lib/images/toolbar/hequal.png differ
diff --git a/lib/images/toolbar/hminus.png b/lib/images/toolbar/hminus.png
index f9d67adcb847d7886ea13c43d3db2b2c9d439587..c00f70223fbc8238a1e5722622bb43dcf05f348b 100644
Binary files a/lib/images/toolbar/hminus.png and b/lib/images/toolbar/hminus.png differ
diff --git a/lib/images/toolbar/hplus.png b/lib/images/toolbar/hplus.png
index 66f3d5e3394608f1740449671176c04a3ab3ec6a..6124b5c33a8274de9894ec6a49c01332d8c68e72 100644
Binary files a/lib/images/toolbar/hplus.png and b/lib/images/toolbar/hplus.png differ
diff --git a/lib/images/toolbar/hr.png b/lib/images/toolbar/hr.png
index f86a8ec9428680e20892aa2ae7a96756de66877e..de3a8a55bd0bb30dd5b8fd4539eb41e1b5ddb7b0 100644
Binary files a/lib/images/toolbar/hr.png and b/lib/images/toolbar/hr.png differ
diff --git a/lib/images/toolbar/image.png b/lib/images/toolbar/image.png
index 1aab5d7dee36f4d61d356bd3ac96f675072dd85d..70b12fcc21831685ddd5e3e95e77844a0f55946d 100644
Binary files a/lib/images/toolbar/image.png and b/lib/images/toolbar/image.png differ
diff --git a/lib/images/toolbar/italic.png b/lib/images/toolbar/italic.png
index 324e7c03659ef06877a5f4df023a72fcda44e91e..d69e66070eb0fda4cd24a9e8507cc3de86f2eadf 100644
Binary files a/lib/images/toolbar/italic.png and b/lib/images/toolbar/italic.png differ
diff --git a/lib/images/toolbar/link.png b/lib/images/toolbar/link.png
index 41e52c6ab58416529da365a7e8a4e6c39be0294c..01105b0d37b1d5d74980509d8fec7f5ea88f11a1 100644
Binary files a/lib/images/toolbar/link.png and b/lib/images/toolbar/link.png differ
diff --git a/lib/images/toolbar/linkextern.png b/lib/images/toolbar/linkextern.png
index 75afd3dc22e71a9b06a66a09153386ad05bbbb0b..acc0c6fc5c9ed87c0b4966de0eb14543efd37d1b 100644
Binary files a/lib/images/toolbar/linkextern.png and b/lib/images/toolbar/linkextern.png differ
diff --git a/lib/images/toolbar/mono.png b/lib/images/toolbar/mono.png
index 178cec9f248d65a24f9295f4788749f20b16121b..b91ad2e0dc87b276016b27523da3152706a09bf0 100644
Binary files a/lib/images/toolbar/mono.png and b/lib/images/toolbar/mono.png differ
diff --git a/lib/images/toolbar/ol.png b/lib/images/toolbar/ol.png
index 3162fa21dcbfd454de07bcd8e4bd6af398e1d4ac..186f1fad4559771d75dc28f3904f126de1f59f74 100644
Binary files a/lib/images/toolbar/ol.png and b/lib/images/toolbar/ol.png differ
diff --git a/lib/images/toolbar/sig.png b/lib/images/toolbar/sig.png
index ef997b7cd56ade07014c7bd7ed0609e67af27c20..72fdad0a0fba1db94ec87620d8d14c7ff7cca97b 100644
Binary files a/lib/images/toolbar/sig.png and b/lib/images/toolbar/sig.png differ
diff --git a/lib/images/toolbar/smiley.png b/lib/images/toolbar/smiley.png
index e92845cb4b6a718caea009c7b17a018790ec1a02..85036c1a8cbfc46db899bcc66f33bac9bf40b068 100644
Binary files a/lib/images/toolbar/smiley.png and b/lib/images/toolbar/smiley.png differ
diff --git a/lib/images/toolbar/strike.png b/lib/images/toolbar/strike.png
index 203aacc2b06d35936485b5cdcad376b864590aa2..e532d1f07526ae3b3d81d668bec6311a8fba0f81 100644
Binary files a/lib/images/toolbar/strike.png and b/lib/images/toolbar/strike.png differ
diff --git a/lib/images/toolbar/ul.png b/lib/images/toolbar/ul.png
index 471171db4a05adafad54981d0c5b3c18cc360989..008820722a297bc030509fa4ce07398c21fbb48b 100644
Binary files a/lib/images/toolbar/ul.png and b/lib/images/toolbar/ul.png differ
diff --git a/lib/images/toolbar/underline.png b/lib/images/toolbar/underline.png
index bf9665a680d1522b9cde56577b200b5b0e8653dd..fa271517cd584fdbc159f7ee9af0aead35f5ae4a 100644
Binary files a/lib/images/toolbar/underline.png and b/lib/images/toolbar/underline.png differ
diff --git a/lib/images/trash.png b/lib/images/trash.png
index ebad933c8b3729a9b27dc34c5a111600b8d46fdb..efc97ba8fbfe1d15714a765e6c3fb19bfba04d7f 100644
Binary files a/lib/images/trash.png and b/lib/images/trash.png differ
diff --git a/lib/images/up.png b/lib/images/up.png
index 557d5e6a9db9f3e41dc0964ea22931a374507114..27beb4445c6fa017dc6be3b4e045b842daf64cf5 100644
Binary files a/lib/images/up.png and b/lib/images/up.png differ
diff --git a/lib/plugins/acl/lang/bg/help.txt b/lib/plugins/acl/lang/bg/help.txt
index 23028cb35b786ec899b53d896a987b1ff69cd885..2de45342056180b1a27d547975fc993729b3a96c 100644
--- a/lib/plugins/acl/lang/bg/help.txt
+++ b/lib/plugins/acl/lang/bg/help.txt
@@ -1,11 +1,11 @@
 === Помощ ===
 
-На тази страница можете да добавяте и премахвате разрешения за определяне на имена и страници във Вашето Wiki.
+От тук можете да добавяте и премахвате права за именни пространства и страници във вашето Wiki.
 
-Левият панел показва всички налични имена и страници.
+Левият панел показва всички налични именни пространства и страници.
 
-Формата по-горе ви позволява да видите и промените разрешенията на избрания потребител или група.
+Формата отгоре ви позволява да преглеждате и променяте правата на избран потребител или група.
 
-В таблицата по-долу са показани всички актуални правила за контрол на достъпа. Можете да я използвате за бързо изтриване или промяна на множество правила.
+В таблицата отдолу са показани всички актуални правила за контрол на достъпа. Можете да я ползвате за бързо изтриване или промяна на множество правила.
 
-Четене на [[doku>acl|ACL документацията]] може да ви помогне да разберете напълно как работи контрола на достъпа в DokuWiki.
\ No newline at end of file
+За да разберете как работи контрола на достъпа в DokuWiki трябва да прочетете [[doku>acl|документацията относно ACL]].
\ No newline at end of file
diff --git a/lib/plugins/acl/lang/bg/lang.php b/lib/plugins/acl/lang/bg/lang.php
index 9facd42599521792f9c92ab529c65e9b307dbb3c..2b956deba50f0fdbcd6b38fff77e9898c61023e1 100644
--- a/lib/plugins/acl/lang/bg/lang.php
+++ b/lib/plugins/acl/lang/bg/lang.php
@@ -5,6 +5,7 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
 $lang['admin_acl']             = 'Управление на списъците за достъп';
 $lang['acl_group']             = 'Група';
@@ -13,15 +14,15 @@ $lang['acl_perms']             = 'Права за';
 $lang['page']                  = 'Страница';
 $lang['namespace']             = 'Именно пространство';
 $lang['btn_select']            = 'Избери';
-$lang['p_user_id']             = 'Потребителят <b class="acluser">%s</b> има в момента следните права за страницата <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns']             = 'Потребителят <b class="acluser">%s</b> има в момента следните права в именното пространство <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id']            = 'Членове на групата <b class="aclgroup">%s</b> имат в момента следните права за страницата <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns']            = 'Членове на групата <b class="aclgroup">%s</b> имат в момента следните права в именното пространство <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_choose_id']           = 'Моля <b>въведете потребител или група</b> в полето горе, за да видите или промените правата за страницата <b class="aclpage">%s</b>.';
-$lang['p_choose_ns']           = 'Моля <b>въведете потребител или група</b> в полето горе, за да видите или промените правата за именното пространство <b class="aclns">%s</b>.';
-$lang['p_inherited']           = 'Забележка: Тези разрешения не са определени изрично, но са били наследени от други групи или именни пространства.';
-$lang['p_isadmin']             = 'Забележка: Избраните група или потребител притежават пълни права, според конфигурацията им.';
-$lang['p_include']             = 'Висши разрешения включват по-нисши такива. Създаване или премахване на разрешения се прилага само за именни пространства, не за страници.';
+$lang['p_user_id']             = 'Потребителят <b class="acluser">%s</b> в момента има следните права за страницата <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns']             = 'Потребителят <b class="acluser">%s</b> в момента има следните права за именното пространство <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id']            = 'Членовете на групата <b class="aclgroup">%s</b> в момента имат следните права за страницата <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns']            = 'Членовете на групата <b class="aclgroup">%s</b> в момента имат следните права за именното пространство <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id']           = 'Моля, <b>въведете потребител или група</b> в полето отгоре, за да видите или промените правата за страницата <b class="aclpage">%s</b>.';
+$lang['p_choose_ns']           = 'Моля, <b>въведете потребител или група</b> в полето отгоре, за да видите или промените правата за именното пространство <b class="aclns">%s</b>.';
+$lang['p_inherited']           = 'Бележка: Тези разрешения не са зададени директно, а са наследени от други групи или именни пространства.';
+$lang['p_isadmin']             = 'Бележка: Избраната група или потребител има всички права, защото е определен за суперпотребител.';
+$lang['p_include']             = 'Висши права включват по-нисшите такива. Правата за създаване, качване и изтриване са приложими само за именни пространства, но не  за страници.';
 $lang['current']               = 'Текущи ACL права';
 $lang['where']                 = 'Страница/Именно постранство';
 $lang['who']                   = 'Потребител/Група';
@@ -32,5 +33,5 @@ $lang['acl_perm2']             = 'Редактиране';
 $lang['acl_perm4']             = 'Създаване';
 $lang['acl_perm8']             = 'Качване';
 $lang['acl_perm16']            = 'Изтриване';
-$lang['acl_new']               = 'Добавяне на ново';
-$lang['acl_mod']               = 'Промяна на вписване';
+$lang['acl_new']               = 'Добавяне на право';
+$lang['acl_mod']               = 'Промяна на записа';
diff --git a/lib/plugins/acl/lang/fr/lang.php b/lib/plugins/acl/lang/fr/lang.php
index 63e529aabccda4222b9b212fa148b0137f5df9cf..36323a51f11c0e52d1e439c609762e1a0d204ebd 100644
--- a/lib/plugins/acl/lang/fr/lang.php
+++ b/lib/plugins/acl/lang/fr/lang.php
@@ -20,6 +20,7 @@
  * @author Philippe Bajoit <philippe.bajoit@gmail.com>
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
  */
 $lang['admin_acl']             = 'Gestion de la liste des contrôles d\'accès (ACL)';
 $lang['acl_group']             = 'Groupe';
diff --git a/lib/plugins/acl/lang/it/lang.php b/lib/plugins/acl/lang/it/lang.php
index 89e421bbbe24ab0079a68b5e90659d9e52284e08..f789b979ff7a398ee5ab947bf0b0c0b8af893f2e 100644
--- a/lib/plugins/acl/lang/it/lang.php
+++ b/lib/plugins/acl/lang/it/lang.php
@@ -12,6 +12,7 @@
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  */
 $lang['admin_acl']             = 'Gestione Lista Controllo Accessi (ACL)';
 $lang['acl_group']             = 'Gruppo';
diff --git a/lib/plugins/acl/lang/ru/lang.php b/lib/plugins/acl/lang/ru/lang.php
index f49e4b55a9720eb4b01edd1406970b2d6ffcab2f..6d04dde218654aeb262a89c9a4682d8f1d0527b2 100644
--- a/lib/plugins/acl/lang/ru/lang.php
+++ b/lib/plugins/acl/lang/ru/lang.php
@@ -13,6 +13,8 @@
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['admin_acl']             = 'Управление списками контроля доступа';
 $lang['acl_group']             = 'Группа';
diff --git a/lib/plugins/acl/lang/sl/lang.php b/lib/plugins/acl/lang/sl/lang.php
index f6dec25efbc8f480e69e9fae1fe55f8e8087dee1..45fdc98f4215b03e3543bd137e823ed8d1d66ffb 100644
--- a/lib/plugins/acl/lang/sl/lang.php
+++ b/lib/plugins/acl/lang/sl/lang.php
@@ -5,23 +5,24 @@
  * @author Dejan Levec <webphp@gmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+  * @author Matej Urbančič (mateju@svn.gnome.org)
  */
-$lang['admin_acl']             = 'ACL administracija';
+$lang['admin_acl']             = 'Skrbništvo ACL';
 $lang['acl_group']             = 'Skupina';
 $lang['acl_user']              = 'Uporabnik';
 $lang['acl_perms']             = 'Dovoljenja za';
 $lang['page']                  = 'Stran';
 $lang['namespace']             = 'Imenski prostor';
 $lang['btn_select']            = 'Izberi';
-$lang['p_user_id']             = 'Uporabnik %s ima trenutno naslednje pravice na strani %s: %s.';
-$lang['p_user_ns']             = 'Uporabnik %s ima trenutno naslednje pravice v imenskem prostoru %s: %s.';
-$lang['p_group_id']            = 'Uporabnikka skupina %s ima trenutno naslednje pravice na strani %s: %s.';
-$lang['p_group_ns']            = 'Uporabniška skupina %s ima trenutno naslednje pravice v imenskem prostoru %s: %s.';
-$lang['p_choose_id']           = 'Prosimo vnesite <b>uporabnika ali skupino</b> v zgornji obrazec za ogled ali urejanje pravic za stran %s.';
-$lang['p_choose_ns']           = 'Prosimo vnesite <b>uporabnika ali skupino</b> v zgornji obrazec za ogled ali urejanje pravic za imenski prostor %s.';
-$lang['p_inherited']           = 'Opomba: Te pravice niso bile posebej nastavljene, temveč prevzete iz drugih skupin ali višjih imenskih prostorov.';
-$lang['p_isadmin']             = 'Opomba: Izbrana skupina ali uporabnik imajo vedno vse pravice, ker so določeni kot superuporabniki.';
-$lang['p_include']             = 'Višje pravice vključujejo tudi nižje. ';
+$lang['p_user_id']             = 'Uporabnik %s ima naslednja dovoljenja za stran %s: %s.';
+$lang['p_user_ns']             = 'Uporabnik %s ima naslednja dovoljenja za imenski prostor %s: %s.';
+$lang['p_group_id']            = 'Uporabniška skupina %s ima naslednja dovoljenja za stran %s: %s.';
+$lang['p_group_ns']            = 'Uporabniška skupina %s ima naslednja dovoljenja za imenski prostor %s: %s.';
+$lang['p_choose_id']           = 'Vnesite ime <b>uporabnika ali skupine</b> v zgornji obrazec za ogled ali urejanje dovoljenj za stran %s.';
+$lang['p_choose_ns']           = 'Vnesite ime <b>uporabnika ali skupine</b> v zgornji obrazec za ogled ali urejanje dovoljenj za imenski prostor %s.';
+$lang['p_inherited']           = 'Opomba: trenutna dovoljenja niso bila posebej določena, temveč so bila prevzeta iz drugih skupin ali višjih imenskih prostorov.';
+$lang['p_isadmin']             = 'Opomba: izbrana skupina ali uporabnik imajo vsa dovoljenja za spreminjanje, saj so določeni kot skrbniki sistema.';
+$lang['p_include']             = 'Višja dovoljenja vključujejo tudi nižja. ';
 $lang['current']               = 'Trenutna ACL pravila';
 $lang['where']                 = 'Stran / Imenski prostor';
 $lang['who']                   = 'Uporabnik/Skupina';
diff --git a/lib/plugins/acl/lang/zh-tw/help.txt b/lib/plugins/acl/lang/zh-tw/help.txt
index 871c1f4f11c41343c2cbc2abe672204f70aa120c..bc1bddb0027dca5c7b72935174da08d5a1fa5f56 100644
--- a/lib/plugins/acl/lang/zh-tw/help.txt
+++ b/lib/plugins/acl/lang/zh-tw/help.txt
@@ -1,11 +1,12 @@
 === 快速指南: ===
 
-在此頁面你可以為你的wiki中的namespace以及頁面增加或移除權限
+你可以用這個頁面為維基中的命名空間或頁面增加或移除權限。
 
-左方的面板顯示了所有的namespace以及頁面
+左方面板顯示了所有命名空間和頁面。
 
-上方的表格允許你觀看以及修改被選擇的使用者或群組的權限
+上方表格允許你觀看及修改選取的使用者或群組的權限。
 
-下方的表格顯示了目前所有的存取控制規則(ACL) 你可以使用它快速的刪除或更改多項規則
+下方表格顯示了目前所有的存取控制表 (ACL),你可以用它快速刪除或更改多項規則。
+
+閱讀 [[doku>acl|official documentation on ACL]] 可以幫助你完整地了解 DokuWiki 存取控制的運作。
 
-閱讀 [[doku>acl|official documentation on ACL]] 也許可以幫助你去完整地了解在DokuWiki中, 存取控制是如何運作的.
diff --git a/lib/plugins/acl/lang/zh-tw/lang.php b/lib/plugins/acl/lang/zh-tw/lang.php
index d64e85a924eee25ab9f9bfe171f04bba825653e0..067d15d947979355d0c85d5bfbc17fc7baace97a 100644
--- a/lib/plugins/acl/lang/zh-tw/lang.php
+++ b/lib/plugins/acl/lang/zh-tw/lang.php
@@ -9,32 +9,33 @@
  * @author Wayne San <waynesan@zerozone.tw>
  * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin <danny0838@pchome.com.tw>
  */
-$lang['admin_acl']             = '設定 ACL 存取名單';
+$lang['admin_acl']             = '管理存取控制表 (ACL)';
 $lang['acl_group']             = '群組';
-$lang['acl_user']              = '帳號';
+$lang['acl_user']              = '使用者';
 $lang['acl_perms']             = '設定權限於';
 $lang['page']                  = '頁面';
 $lang['namespace']             = '命名空間';
 $lang['btn_select']            = '選擇';
-$lang['p_user_id']             = '使用者 <b class="acluser">%s</b> 在頁面 <b class="aclpage">%s</b>目前擁有以下的權限: <i>%s</i>.';
-$lang['p_user_ns']             = '用戶 <b class=\"acluser\">%s</b> 當前在命名空間 <b class=\"aclns\">%s</b> 擁有以下權限:<i>%s</i>。';
-$lang['p_group_id']            = '群組 <b class="aclgroup">%s</b> 的成員目前對於頁面 <b class="aclpage">%s</b> 擁有以下的權限: <i>%s</i>.';
-$lang['p_group_ns']            = '<b class=\"aclgroup\">%s</b> 組成員當前在命名空間 <b class=\"aclns\">%s</b> 擁有以下權限:<i>%s</i>。';
-$lang['p_choose_id']           = '請在上方的表格中 <b>輸入一個帳號或群組</b> 來觀看或編輯頁面 <b class="aclpage">%s</b> 的權限.';
-$lang['p_choose_ns']           = '請在上表中<b>輸入用戶名或組名稱</b>,來查看或編輯命名空間 <b class=\"aclns\">%s</b> 的權限設置。';
-$lang['p_inherited']           = '請注意:這些權限並沒有明確設定,而是從其他組或更高級的名稱空間繼承而來。';
-$lang['p_isadmin']             = '請注意:選定的組或用戶擁有完全權限,因為它被設定為超級用戶。';
-$lang['p_include']             = '較高的權限亦包含了較低的權限。新增、上傳與刪除權限只能在命名空間中使用,而非頁面。';
-$lang['current']               = '目前的ACL規則';
+$lang['p_user_id']             = '使用者 <b class="acluser">%s</b> 目前在頁面 <b class="aclpage">%s</b> 擁有以下權限:<i>%s</i>。';
+$lang['p_user_ns']             = '使用者 <b class=\"acluser\">%s</b> 目前在命名空間 <b class=\"aclns\">%s</b> 擁有以下權限:<i>%s</i>。';
+$lang['p_group_id']            = '群組 <b class="aclgroup">%s</b> 的成員目前在頁面 <b class="aclpage">%s</b> 擁有以下權限:<i>%s</i>。';
+$lang['p_group_ns']            = '群組 <b class=\"aclgroup\">%s</b> 的成員目前在命名空間 <b class=\"aclns\">%s</b> 擁有以下權限:<i>%s</i>。';
+$lang['p_choose_id']           = '請在上方表格<b>輸入使用者或群組</b>以檢視或編輯頁面 <b class="aclpage">%s</b> 的權限設定。';
+$lang['p_choose_ns']           = '請在上方表格<b>輸入使用者或群組</b>以檢視或編輯命名空間 <b class=\"aclns\">%s</b> 的權限設定。';
+$lang['p_inherited']           = '注意:這些權限並未明確指定,而是從群組或上層的命名空間繼承而來。';
+$lang['p_isadmin']             = '注意:選取的群組或使用者擁有完整權限,因為它被設定為超級使用者。';
+$lang['p_include']             = '較高的權限亦包含了較低的權限。新增、上傳與刪除權限只能設定在命名空間,不能設定在頁面。';
+$lang['current']               = '目前的存取控制規則';
 $lang['where']                 = '頁面/命名空間';
 $lang['who']                   = '使用者/群組';
 $lang['perm']                  = '權限';
 $lang['acl_perm0']             = 'ç„¡';
-$lang['acl_perm1']             = '讀取權限';
+$lang['acl_perm1']             = '讀取頁面';
 $lang['acl_perm2']             = '編輯頁面';
 $lang['acl_perm4']             = '新增頁面';
 $lang['acl_perm8']             = '上傳圖檔';
 $lang['acl_perm16']            = '刪除檔案';
-$lang['acl_new']               = '新增管理規則';
+$lang['acl_new']               = '增加規則';
 $lang['acl_mod']               = '修改規則';
diff --git a/lib/plugins/acl/lang/zh/lang.php b/lib/plugins/acl/lang/zh/lang.php
index d79a7808921834d1144da5eabacd5d7b73fe23ab..50b9d63af73d39f2178f3e14601fe04cbfcb15de 100644
--- a/lib/plugins/acl/lang/zh/lang.php
+++ b/lib/plugins/acl/lang/zh/lang.php
@@ -11,6 +11,7 @@
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['admin_acl']             = '访问控制列表(ACL)管理器';
 $lang['acl_group']             = '组';
diff --git a/lib/plugins/acl/pix/group.png b/lib/plugins/acl/pix/group.png
index 7fb4e1f1e1cd6ee67d33ffd24f09ddd5c3478bec..d80eb2606865fabcbc9ee53e2e0d1534df8c6337 100644
Binary files a/lib/plugins/acl/pix/group.png and b/lib/plugins/acl/pix/group.png differ
diff --git a/lib/plugins/acl/pix/ns.png b/lib/plugins/acl/pix/ns.png
index da3c2a2d74bab159ba0f65d7db601768258afcb2..c35e832da26a01c0a1a54ca6c88b8ae9423c8b00 100644
Binary files a/lib/plugins/acl/pix/ns.png and b/lib/plugins/acl/pix/ns.png differ
diff --git a/lib/plugins/acl/pix/page.png b/lib/plugins/acl/pix/page.png
index 03ddd799fa0a3aec561c75d4221f195db65d6eb9..b1b7ebe941933c67b3db758ffbc4149f3043631f 100644
Binary files a/lib/plugins/acl/pix/page.png and b/lib/plugins/acl/pix/page.png differ
diff --git a/lib/plugins/acl/pix/user.png b/lib/plugins/acl/pix/user.png
index 8fd539e9cb04111e950ac9b0cce82676f12f67d4..7b4a507a0007c2d7237c9450d344eb51877ad155 100644
Binary files a/lib/plugins/acl/pix/user.png and b/lib/plugins/acl/pix/user.png differ
diff --git a/lib/plugins/config/images/danger.png b/lib/plugins/config/images/danger.png
index c37bd062e60c3b38fc82e4d1f236a8ac2fae9d8c..7bd84f7a36dedfa8107314e54836462ab93e5f7a 100644
Binary files a/lib/plugins/config/images/danger.png and b/lib/plugins/config/images/danger.png differ
diff --git a/lib/plugins/config/images/security.png b/lib/plugins/config/images/security.png
index 2ebc4f6f9663e32cad77d67ef93ab8843dfea3c0..1800f8e56b81fe93899caf3e79d840e83a66c0f2 100644
Binary files a/lib/plugins/config/images/security.png and b/lib/plugins/config/images/security.png differ
diff --git a/lib/plugins/config/images/warning.png b/lib/plugins/config/images/warning.png
index 628cf2dae3d419ae220c8928ac71393b480745a3..c5e482f84b3a140a062da69cd86d0a98019a8fcb 100644
Binary files a/lib/plugins/config/images/warning.png and b/lib/plugins/config/images/warning.png differ
diff --git a/lib/plugins/config/lang/bg/intro.txt b/lib/plugins/config/lang/bg/intro.txt
index 8723a77a4d7c79d32bf9c263bdff017068eb2313..db09e6838c9e26d41cc86b2cdd87945ab445151e 100644
--- a/lib/plugins/config/lang/bg/intro.txt
+++ b/lib/plugins/config/lang/bg/intro.txt
@@ -1,7 +1,7 @@
-====== Управление на настройките ======
+====== Диспечер на настройките ======
 
-Използвайте тази страница за да управлявате настройките на вашета Dokuwiki инсталация. За отделните настройки вижте [[doku>config]]. За повече подробности за тази приставка вижте  [[doku>plugin:config]].
+От тук можете да управлявате настройките на вашето Dokuwiki. За отделните настройки вижте [[doku>config]]. За повече информация относно тази приставка вижте  [[doku>plugin:config]].
 
-Настройките показани със светло червен фон за защитени и не могат да се променят с тази приставка. Настройките показани със син фон са стандартните стойности и настройките с бял фон са били настроени локално за тази конкретна инсталация. Както сините, така и белите настройки могат да се променят.
+Настройките изобразени със светло червен фон са защитени и не могат да бъдат променяни с тази приставка. Настройките показани със син фон са стандартните стойности, а настройките с бял фон са били настроени локално за тази конкретна инсталация. Можете да променяте както сините, така и белите настройки.
 
-Не забравяйте да натиснете бутона **ЗАПИС** преди да напуснете страницата, иначе промените ви ще бъдат загубени.
+Не забравяйте да натиснете бутона **ЗАПИС** преди да напуснете страницата, в противен случай промените няма да бъдат приложени.
diff --git a/lib/plugins/config/lang/bg/lang.php b/lib/plugins/config/lang/bg/lang.php
index 855f0b2c2fa4ffc1f1ac12d4911bce5edeb2257d..eb2c3a426c7fc0894afb3b2a863c5b4301c2f15c 100644
--- a/lib/plugins/config/lang/bg/lang.php
+++ b/lib/plugins/config/lang/bg/lang.php
@@ -5,75 +5,76 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
 $lang['menu']                  = 'Настройки';
-$lang['error']                 = 'Невъзможно е обновяването на настройките, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново.
-                       <br />Неверните стойности ще бъдат обградени с червена рамка.';
-$lang['updated']               = 'Обновяването на настройките бе успешно.';
+$lang['error']                 = 'Обновяването на настройките е невъзможно, поради невалидна стойност, моля, прегледайте промените си и пробвайте отново.
+<br />Неверните стойности ще бъдат обградени с червена рамка.';
+$lang['updated']               = 'Обновяването на настройките е успешно.';
 $lang['nochoice']              = '(няма друг възможен избор)';
-$lang['locked']                = 'Невъзможно е обновяването на файлът с настройките, ако това не е нарочно, проверете,<br /> дали локалните име на файл  и права са верни.';
-$lang['danger']                = 'Внимание: промяна на тази опция може да направи уикито и конфигурационното меню недостъпни.';
-$lang['warning']               = 'Предупреждение: промяна на тази опция може предизвика нежелани реакции.';
-$lang['security']              = 'Предупреждение: промяната на тази опция може да представлява риск за сигурността.';
-$lang['_configuration_manager'] = 'Управление на настройките';
-$lang['_header_dokuwiki']      = 'DokuWiki настройки';
-$lang['_header_plugin']        = 'Настройки на приставките';
-$lang['_header_template']      = 'Настройки на шаблоните';
+$lang['locked']                = 'Обновяването на файла с настройките е невъзможно, ако това не е нарочно, проверете,<br /> дали името на локалния файл с настройки и правата са верни.';
+$lang['danger']                = 'Внимание: промяна на опцията може да направи wiki-то и менюто за настройване недостъпни.';
+$lang['warning']               = 'Предупреждение: промяна на опцията може предизвика нежелани последици.';
+$lang['security']              = 'Предупреждение: промяна на опцията може да представлява риск за сигурността.';
+$lang['_configuration_manager'] = 'Диспечер на настройките';
+$lang['_header_dokuwiki']      = 'Настройки на DokuWiki';
+$lang['_header_plugin']        = 'Настройки на приставки';
+$lang['_header_template']      = 'Настройки на шаблони';
 $lang['_header_undefined']     = 'Неопределени настройки';
 $lang['_basic']                = 'Основни настройки';
 $lang['_display']              = 'Настройки на показването';
-$lang['_authentication']       = 'Настройки на идентификацията';
-$lang['_anti_spam']            = 'Анти-спам настройки';
-$lang['_editing']              = 'Настройки на редактирането';
+$lang['_authentication']       = 'Настройки за удостоверяване';
+$lang['_anti_spam']            = 'Настройки за борба със SPAM-ма';
+$lang['_editing']              = 'Настройки за редактиране';
 $lang['_links']                = 'Настройки на препратките';
 $lang['_media']                = 'Настройки на медията';
 $lang['_advanced']             = 'Допълнителни настройки';
 $lang['_network']              = 'Мрежови настройки';
-$lang['_plugin_sufix']         = 'Настройки на приставките';
+$lang['_plugin_sufix']         = 'Настройки на приставки';
 $lang['_template_sufix']       = 'Настройки на шаблони';
-$lang['_msg_setting_undefined'] = 'Няма метаданни на настройките.';
+$lang['_msg_setting_undefined'] = 'Няма метаданни за настройките.';
 $lang['_msg_setting_no_class'] = 'Няма клас настройки.';
 $lang['_msg_setting_no_default'] = 'Няма стандартна стойност.';
-$lang['fmode']                 = 'Режим(права) на създаване на файловете';
-$lang['dmode']                 = 'Режим(права) за създаване на директориите';
+$lang['fmode']                 = 'Режим (права) за създаване на файлове';
+$lang['dmode']                 = 'Режим (права) за създаване на директории';
 $lang['lang']                  = 'Език';
-$lang['basedir']               = 'Главна директория';
-$lang['baseurl']               = 'Главен адрес (URL)';
+$lang['basedir']               = 'Главна директория (напр. <code>/dokuwiki/</code>). Оставете празно, за да бъде засечена автоматично.';
+$lang['baseurl']               = 'URL адрес (напр. <code>http://www.yourserver.com</code>). Оставете празно, за да бъде засечен автоматично.';
 $lang['savedir']               = 'Директория за записване на данните';
 $lang['start']                 = 'Име на началната страница';
-$lang['title']                 = 'Име на Wiki';
+$lang['title']                 = 'Име на Wiki-то';
 $lang['template']              = 'Шаблон';
 $lang['license']               = 'Под какъв лиценз да бъде публикувано съдържанието?';
-$lang['fullpath']              = 'Показване на пълния път до страниците в долния им край.';
-$lang['recent']                = 'Последни промени';
+$lang['fullpath']              = 'Показване на пълния път до страниците в долния колонтитул.';
+$lang['recent']                = 'Скорошни промени';
 $lang['breadcrumbs']           = 'Брой на следите';
 $lang['youarehere']            = 'Йерархични следи';
 $lang['typography']            = 'Поправяне на разместени букви';
-$lang['htmlok']                = 'Позволяване на вграден HTML код';
-$lang['phpok']                 = 'Позволяване на вграден PHP код';
+$lang['htmlok']                = 'Разрешаване вграждането на HTML код';
+$lang['phpok']                 = 'Разрешаване вграждането на PHP код';
 $lang['dformat']               = 'Формат на датата (виж. <a href="http://www.php.net/strftime">strftime</a> функцията на PHP)';
 $lang['signature']             = 'Подпис';
 $lang['toptoclevel']           = 'Главно ниво за съдържанието';
-$lang['tocminheads']           = 'Минимална сума на заглавията, която определя дали съдържанието е създадено';
+$lang['tocminheads']           = 'Минимален брой заглавия, определящ дали съдържанието е създадено';
 $lang['maxtoclevel']           = 'Максимално ниво на съдържанието';
-$lang['maxseclevel']           = 'Максимално ниво на редактиране на секция';
-$lang['camelcase']             = 'Използване на CamelCase за препратки';
-$lang['deaccent']              = 'Окончателни имена на страници';
-$lang['useheading']            = 'Използване на първото заглавие за име на страница';
+$lang['maxseclevel']           = 'Максимално ниво за редактиране на секция';
+$lang['camelcase']             = 'Ползване на CamelCase за линкове';
+$lang['deaccent']              = 'Почистване имената на страниците (на файловете)';
+$lang['useheading']            = 'Ползване на първото заглавие за име на страница';
 $lang['refcheck']              = 'Проверка за препратка на медия';
-$lang['refshow']               = 'Брой на показани медийни препратки';
-$lang['allowdebug']            = 'Пускане на debug <b>изключете, ако не е нужен!</b>';
-$lang['usewordblock']          = 'Блокиране на спам базирано на списък от думи';
-$lang['indexdelay']            = 'Забавяне преди индексиране(секунди)';
-$lang['relnofollow']           = 'Използване на rel="nofollow" за външни връзки';
-$lang['mailguard']             = 'Промяна на адреса на електронната поща във форма непозволяваща пращането на спам';
+$lang['refshow']               = 'Брой на показваните медийни препратки';
+$lang['allowdebug']            = 'Включване на debug <b>изключете, ако не е нужен!</b>';
+$lang['usewordblock']          = 'Блокиране на SPAM въз основа на на списък от думи';
+$lang['indexdelay']            = 'Забавяне преди индексиране (сек)';
+$lang['relnofollow']           = 'Ползване на rel="nofollow" за външни препратки';
+$lang['mailguard']             = 'Промяна на адресите на ел. поща (във форма непозволяваща пращането на SPAM)';
 $lang['iexssprotect']          = 'Проверяване на качените файлове за възможно зловреден JavaScript и HTML код';
-$lang['showuseras']            = 'Какво да се показва на дисплея за потребителя, който последно е променил тази страница';
-$lang['useacl']                = 'Използване на списъци за достъп';
+$lang['showuseras']            = 'Какво да се показва за потребителя, който последно е променил страницата';
+$lang['useacl']                = 'Ползване на списъци за достъп';
 $lang['autopasswd']            = 'Автоматично генериране на пароли';
-$lang['authtype']              = 'Метод на идентификация';
+$lang['authtype']              = 'Метод за удостоверяване';
 $lang['passcrypt']             = 'Метод за криптиране на паролите';
-$lang['defaultgroup']          = 'Група по подразбиране';
+$lang['defaultgroup']          = 'Стандартна група';
 $lang['superuser']             = 'Супер потребител - група или потребител с пълен достъп до всички страници и функции без значение от настройките на списъците за достъп (ACL)';
 $lang['manager']               = 'Управител - група или потребител, с достъп до определени управляващи фунции ';
 $lang['profileconfirm']        = 'Потвърждаване на промени в профила с парола';
@@ -82,73 +83,77 @@ $lang['disableactions_check']  = 'Проверка';
 $lang['disableactions_subscription'] = 'Записване/Отписване';
 $lang['disableactions_wikicode'] = 'Преглед на кода/Експортиране на оригинална версия';
 $lang['disableactions_other']  = 'Други действия (разделени със запетая)';
-$lang['sneaky_index']          = 'По подразбиране DokuWiki ще показва всички именни пространства в индекса. Избирането на настройката ще доведе до скриване на тези, за които потребителят няма права за четене. Това може да означава и скриване на достъпните подименни пространства. Това може да направи индекса неизползваем при определени настрокйки на списъците за контрол на достъп (ACL). ';
-$lang['auth_security_timeout'] = 'Изчакване при вписване преди Timeout (в секунди)';
-$lang['securecookie']          = 'Да се изпращат ли бисквитки, посочени чрез HTTPS, само чрез HTTPS от браузъра? Забранете тази опция, когато SSL се използва само за вписване в системата, а четенето е възможно и без SSL.
+$lang['sneaky_index']          = 'Стандартно DokuWiki ще показва всички именни пространства в индекса. Опцията скрива тези, за които потребителят няма права за четене. Това може да доведе и до скриване на иначе достъпни подименни пространства. С определени настройки на списъците за контрол на достъпа (ACL) може да направи индекса неизползваем. ';
+$lang['auth_security_timeout'] = 'Считане на вписване за неуспешно след (сек)';
+$lang['securecookie']          = 'Да се изпращат ли бисквитките зададени чрез HTTPS, само чрез HTTPS от браузъра? Изключете опцията, когато SSL се ползва само за вписване в системата, а четенето е възможно и без SSL.
 ';
-$lang['xmlrpc']                = 'Включи/изключи XML-RPC интерфейса';
-$lang['xmlrpcuser']            = 'Ограничаване на XML-RPC достъп до дадени тук и отделени със запетая групи или потребители. Оставете празни да даде достъп до всички.';
-$lang['updatecheck']           = 'Проверка за нови версии и предупреждения за сигурност? Dokiwiki трябва да може да се свърже със  splitbrain.org за тази функционалност.';
-$lang['userewrite']            = 'Използване на валидни URL';
-$lang['useslash']              = 'Използване на наклонена черта за разделител на именнипространсвта в URL';
-$lang['usedraft']              = 'Автоматично запазване на чернова при редактиране';
+$lang['xmlrpc']                = 'Включване/Изключване на интерфейса XML-RPC.';
+$lang['xmlrpcuser']            = 'Ограничаване на XML-RPC достъпа до отделени със запетая групи или потребители. Оставете празно, за да даде достъп на всеки.';
+$lang['updatecheck']           = 'Проверяване за за нови версии и предупреждения за сигурността? Необходимо е Dokiwiki да може да се свързва със splitbrain.org за тази функционалност.';
+$lang['userewrite']            = 'Ползване на nice URL адреси';
+$lang['useslash']              = 'Ползване на наклонена черта за разделител на именните пространства в URL';
+$lang['usedraft']              = 'Автоматично запазване на чернова по време на редактиране';
 $lang['sepchar']               = 'Разделител между думите в имената на страници';
-$lang['canonical']             = 'Използване на уеднаквени URL';
-$lang['autoplural']            = 'Проверка за множествено число в препратките';
+$lang['canonical']             = 'Ползване на напълно уеднаквени URL адреси';
+$lang['fnencode']              = 'Метод за кодиране на не-ASCII именуваните файлове.';
+$lang['autoplural']            = 'Проверяване за множествено число в препратките';
 $lang['compression']           = 'Метод за компресия на attic файлове';
-$lang['cachetime']             = 'Максимална възраст на кеша (сек)';
-$lang['locktime']              = 'Максимална възраст на заключващите файлове (сек)';
-$lang['fetchsize']             = 'Максимален размер (байтове), който fetch.php може да дърпа';
-$lang['notify']                = 'Пращане на съобщения за промени на тази e-поща';
-$lang['registernotify']        = 'Пращане информация на нови потребители на тази е-поща';
-$lang['mailfrom']              = 'Адрес на е-поща, който да се използва за пращане на автоматичната поща';
-$lang['gzip_output']           = 'Използване gzip Кодиране на съдържанието(Content-Encoding) за xhtml';
+$lang['cachetime']             = 'Макс. период за съхраняване на кеша (сек)';
+$lang['locktime']              = 'Макс. период за съхраняване на заключените файлове (сек)';
+$lang['fetchsize']             = 'Максимален размер (байтове), който fetch.php може да сваля';
+$lang['notify']                = 'Пращане на съобщения за промени на тази eл. поща';
+$lang['registernotify']        = 'Пращане информация за нови потребители на тази ел. поща';
+$lang['mailfrom']              = 'Ел. поща, която да се ползва за автоматично изпращане на ел. писма';
+$lang['mailprefix']            = 'Представка за темите (поле subject) на автоматично изпращаните ел. писма';
+$lang['gzip_output']           = 'Кодиране на съдържанието с gzip за xhtml';
 $lang['gdlib']                 = 'Версия на GD Lib';
 $lang['im_convert']            = 'Път до инструмента за трансформация на ImageMagick';
 $lang['jpg_quality']           = 'Kачество на JPG компресията (0-100)';
-$lang['subscribers']           = 'Поддръжка за абониране към страница';
-$lang['compress']              = 'Компактен  CSS и  javascript изход';
-$lang['hidepages']             = 'Скриване на съвпадащи имена на страници(regular expressions)';
+$lang['subscribers']           = 'Включване на поддръжката за абониране към страници';
+$lang['subscribe_time']        = 'Време след което абонаментните списъци и обобщения се изпращат (сек); Трябва да е по-малко от времето определено в recent_days.';
+$lang['compress']              = 'Компактен CSS и javascript изглед';
+$lang['hidepages']             = 'Скриване на съвпадащите страници (regular expressions)';
 $lang['send404']               = 'Пращане на "HTTP 404/Page Not Found" за несъществуващи страници';
 $lang['sitemap']               = 'Генериране на Google sitemap (дни)';
-$lang['broken_iua']            = 'Отметнете, ако ignore_user_abort функцията не работи, търсенето може да не се извършва правилно.Известно е, че комбинацията IIS+PHP/CGI е лоша. Вижте  <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Грешка 852</a> за повече информация.';
-$lang['xsendfile']             = 'Използване на Х-Sendfile header, за позволяване на уеб сървъра да дава статични файлове? Вашият уеб сървър трябва да поддържа това.';
-$lang['renderer_xhtml']        = 'Показвай main (XHTML) код за wiki';
-$lang['renderer__core']        = '%s (DokuWiki ядро)';
+$lang['broken_iua']            = 'Отметнете, ако ignore_user_abort функцията не работи. Може да попречи на търсенето в страниците. Знае се, че комбинацията IIS+PHP/CGI е лоша. Вижте  <a href="http://bugs.splitbrain.org/?do=details&amp;task_id=852">Грешка 852</a> за повече информация.';
+$lang['xsendfile']             = 'Ползване на Х-Sendfile header, за да може уебсървъра да дава статични файлове? Вашият уебсървър трябва да го поддържа.';
+$lang['renderer_xhtml']        = 'Представяне на основните изходни данни (xhtml) от wiki-то с';
+$lang['renderer__core']        = '%s (ядрото на DokuWiki)';
 $lang['renderer__plugin']      = '%s (приставка)';
-$lang['rememberme']            = 'Остави постоянни бисквитки за вход (запомни ме)';
-$lang['rss_type']              = 'Вид на XML източника (feed)';
-$lang['rss_linkto']            = 'XML feed препраща към';
-$lang['rss_content']           = 'Какво да се показва в XML feed елементите?';
-$lang['rss_update']            = 'Интервал на обновяване XML източника (сек)';
-$lang['recent_days']           = 'Колко последни промени да се пазят (дни)';
-$lang['rss_show_summary']      = 'XML feed show summary in title';
+$lang['rememberme']            = 'Ползване на постоянни бисквитки за вписване (запомни ме)';
+$lang['rss_type']              = 'Тип на XML емисията';
+$lang['rss_linkto']            = 'XML емисията препраща към';
+$lang['rss_content']           = 'Какво да показват елементите на XML емисията?';
+$lang['rss_update']            = 'Интервал на актуализиране на XML емисията (сек)';
+$lang['recent_days']           = 'Колко от скорошните промени да се пазят (дни)';
+$lang['rss_show_summary']      = 'Показване на обобщение в заглавието на XML емисията';
 $lang['target____wiki']        = 'Прозорец за вътрешни препратки';
-$lang['target____interwiki']   = 'Прозорец за вътрешни уики препратки';
+$lang['target____interwiki']   = 'Прозорец за препратки в wiki-то';
 $lang['target____extern']      = 'Прозорец за външни препратки';
-$lang['target____media']       = 'Прозорец за препратки към медия';
-$lang['target____windows']     = 'Прозорец за препратки към прозорци';
+$lang['target____media']       = 'Прозорец за медийни препратки';
+$lang['target____windows']     = 'Прозорец за препратки към Windows';
 $lang['proxy____host']         = 'Име на прокси сървър';
-$lang['proxy____port']         = 'Порт на проксито';
+$lang['proxy____port']         = 'Порт за проксито';
 $lang['proxy____user']         = 'Потребител за проксито';
 $lang['proxy____pass']         = 'Парола за проксито';
-$lang['proxy____ssl']          = 'Използване на ssl за връзка към проксито';
-$lang['safemodehack']          = 'Позволи safemode хак';
-$lang['ftp____host']           = 'FTP сървър за safemode хака';
-$lang['ftp____port']           = 'FTP порт за safemode хака';
-$lang['ftp____user']           = 'FTP потребител за safemode хака';
-$lang['ftp____pass']           = 'FTP парола за safemode хака';
-$lang['ftp____root']           = 'FTP главна директория safemode хака';
+$lang['proxy____ssl']          = 'Ползване на SSL при свързване с проксито';
+$lang['proxy____except']       = 'Регулярен израз определящ за кои URL адреси да не се ползва прокси сървър.';
+$lang['safemodehack']          = 'Ползване на хака safemode';
+$lang['ftp____host']           = 'FTP сървър за хака safemode';
+$lang['ftp____port']           = 'FTP порт за хака safemode';
+$lang['ftp____user']           = 'FTP потребител за хака safemode';
+$lang['ftp____pass']           = 'FTP парола за хака safemode';
+$lang['ftp____root']           = 'FTP главна директория хака safemode';
 $lang['license_o_']            = 'Нищо не е избрано';
 $lang['typography_o_0']        = 'без';
 $lang['typography_o_1']        = 'с изключение на единични кавички';
-$lang['typography_o_2']        = 'всякаква форма за кавичките (не винаги работи)';
+$lang['typography_o_2']        = 'включително единични кавички (не винаги работи)';
 $lang['userewrite_o_0']        = 'без';
-$lang['userewrite_o_1']        = '.htaccess файл';
+$lang['userewrite_o_1']        = 'файлът .htaccess';
 $lang['userewrite_o_2']        = 'вътрешно от DokuWiki ';
 $lang['deaccent_o_0']          = 'изключено';
 $lang['deaccent_o_1']          = 'премахване на акценти';
-$lang['deaccent_o_2']          = 'романизация';
+$lang['deaccent_o_2']          = 'транслитерация';
 $lang['gdlib_o_0']             = 'GD Lib не е достъпна';
 $lang['gdlib_o_1']             = 'Версия 1.x';
 $lang['gdlib_o_2']             = 'Автоматично разпознаване';
@@ -158,12 +163,12 @@ $lang['rss_type_o_rss2']       = 'RSS версия 2.0';
 $lang['rss_type_o_atom']       = 'Atom версия 0.3';
 $lang['rss_type_o_atom1']      = 'Atom версия 1.0';
 $lang['rss_content_o_abstract'] = 'Извлечение';
-$lang['rss_content_o_diff']    = 'Обединен Diff';
-$lang['rss_content_o_htmldiff'] = 'Diff таблица в HTML формат';
+$lang['rss_content_o_diff']    = 'Обединени разлики';
+$lang['rss_content_o_htmldiff'] = 'Таблица с разликите в HTML формат';
 $lang['rss_content_o_html']    = 'Цялото съдържание на HTML страницата';
 $lang['rss_linkto_o_diff']     = 'изглед на разликите';
 $lang['rss_linkto_o_page']     = 'променената страница';
-$lang['rss_linkto_o_rev']      = 'списък на текущите версии';
+$lang['rss_linkto_o_rev']      = 'списък на версиите';
 $lang['rss_linkto_o_current']  = 'текущата страница';
 $lang['compression_o_0']       = 'без';
 $lang['compression_o_gz']      = 'gzip';
@@ -172,11 +177,12 @@ $lang['xsendfile_o_0']         = 'не използвайте';
 $lang['xsendfile_o_1']         = 'Специфичен lighttpd header (преди версия 1.5)';
 $lang['xsendfile_o_2']         = 'Стандартен X-Sendfile header';
 $lang['xsendfile_o_3']         = 'Специфичен Nginx X-Accel-Redirect header за пренасочване';
-$lang['showuseras_o_loginname'] = 'Потребителско име';
+$lang['showuseras_o_loginname'] = 'Име за вписване';
 $lang['showuseras_o_username'] = 'Пълно потребителско име';
-$lang['showuseras_o_email']    = 'Пълен адрес на електронната поща на потребителя';
-$lang['showuseras_o_email_link'] = 'Адрес на електронната поща на потребителя под формата на mailto: линк';
+$lang['showuseras_o_email']    = 'Ел, поща на потребителите (променени според настройките на mailguard)';
+$lang['showuseras_o_email_link'] = 'Ел. поща на потребителите под формата на mailto: връзки';
 $lang['useheading_o_0']        = 'Никога';
 $lang['useheading_o_navigation'] = 'Само за навигация';
-$lang['useheading_o_content']  = 'Само за Wiki съдържание';
+$lang['useheading_o_content']  = 'Само за съдържанието на Wiki-то';
 $lang['useheading_o_1']        = 'Винаги';
+$lang['readdircache']          = 'Максимален период за съхраняване кеша на readdir (сек)';
diff --git a/lib/plugins/config/lang/el/lang.php b/lib/plugins/config/lang/el/lang.php
index df90295064a9ace82677510e6745e79cd15a4e38..ebd6768860e43aed04ec4aef3c2f7a5b4ec0a495 100644
--- a/lib/plugins/config/lang/el/lang.php
+++ b/lib/plugins/config/lang/el/lang.php
@@ -108,6 +108,7 @@ $lang['fetchsize']             = 'Μέγιστο μέγεθος (σε bytes) ε
 $lang['notify']                = 'Αποστολή ενημέρωσης για αλλαγές σε αυτή την e-mail διεύθυνση';
 $lang['registernotify']        = 'Αποστολή ενημερωτικών μηνυμάτων σε αυτή την e-mail διεύθυνση κατά την εγγραφή νέων χρηστών';
 $lang['mailfrom']              = 'e-mail διεύθυνση αποστολέα για μηνύματα από την εφαρμογή';
+$lang['mailprefix']            = 'Πρόθεμα θέματος που να χρησιμοποιείται για τα αυτόματα μηνύματα ηλεκτρονικού ταχυδρομείου.';
 $lang['gzip_output']           = 'Χρήση gzip Content-Encoding για την xhtml';
 $lang['gdlib']                 = 'Έκδοση βιβλιοθήκης GD';
 $lang['im_convert']            = 'Διαδρομή προς το εργαλείο μετατροπής εικόνων του ImageMagick';
diff --git a/lib/plugins/config/lang/fr/lang.php b/lib/plugins/config/lang/fr/lang.php
index b51c260fc6b31b0272bc1a5cb9fe684fc7cab6ec..99e140af5139d7cfaff306bebf3d92fdc5f430dc 100644
--- a/lib/plugins/config/lang/fr/lang.php
+++ b/lib/plugins/config/lang/fr/lang.php
@@ -15,6 +15,7 @@
  * @author Philippe Bajoit <philippe.bajoit@gmail.com>
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
  */
 $lang['menu']                  = 'Paramètres de configuration';
 $lang['error']                 = 'Paramètres non modifiés en raison d\'une valeur non valide, vérifiez vos réglages et réessayez. <br />Les valeurs erronées sont entourées d\'une bordure rouge.';
@@ -111,6 +112,7 @@ $lang['fetchsize']             = 'Taille maximale (en octets) du fichier que fet
 $lang['notify']                = 'Notifier les modifications à cette adresse de courriel';
 $lang['registernotify']        = 'Envoyer un courriel annonçant les nouveaux utilisateurs enregistrés à cette adresse';
 $lang['mailfrom']              = 'Expéditeur des notifications par courriel du wiki';
+$lang['mailprefix']            = 'Préfixe à utiliser dans les objets des courriels automatiques';
 $lang['gzip_output']           = 'Utiliser Content-Encoding gzip pour XHTML';
 $lang['gdlib']                 = 'Version de GD Lib';
 $lang['im_convert']            = 'Chemin vers l\'outil de conversion d\'ImageMagick';
@@ -161,7 +163,7 @@ $lang['userewrite_o_2']        = 'Interne à DokuWiki';
 $lang['deaccent_o_0']          = 'off';
 $lang['deaccent_o_1']          = 'supprimer les accents';
 $lang['deaccent_o_2']          = 'convertir en roman';
-$lang['gdlib_o_0']             = 'GD Lib non disponible';
+$lang['gdlib_o_0']             = 'Librairie GD non disponible';
 $lang['gdlib_o_1']             = 'version 1.x';
 $lang['gdlib_o_2']             = 'auto-détectée';
 $lang['rss_type_o_rss']        = 'RSS 0.91';
diff --git a/lib/plugins/config/lang/it/intro.txt b/lib/plugins/config/lang/it/intro.txt
index 95e7151f36f2d511d16c7f651088490e6243d6c9..617e8c7b5f9baa0498baea0daad922e2ac74a2e8 100644
--- a/lib/plugins/config/lang/it/intro.txt
+++ b/lib/plugins/config/lang/it/intro.txt
@@ -4,6 +4,6 @@ Usa questa pagina per gestire la configurazione della tua installazione DokuWiki
 
 Le impostazioni con lo sfondo rosso chiaro sono protette e non possono essere modificate con questo plugin. Le impostazioni con lo sfondo blu contengono i valori predefiniti, e le impostazioni con lo sfondo bianco sono relative solo a questa particolare installazione. Sia le impostazioni su sfondo blu che quelle su sfondo bianco possono essere modificate.
 
-Ricordati di premere il pulsante **SALVA** prima di lasciare questa pagina altrimenti le modifiche saranno perse.
+Ricordati di premere il pulsante **SALVA** prima di lasciare questa pagina altrimenti le modifiche andranno perse.
 
 
diff --git a/lib/plugins/config/lang/it/lang.php b/lib/plugins/config/lang/it/lang.php
index 5bbc6894fb8734f1ca67dba7ba91b7ab08e11da6..2208ff86bde31daffb7dd4225f6b63027790f7fc 100644
--- a/lib/plugins/config/lang/it/lang.php
+++ b/lib/plugins/config/lang/it/lang.php
@@ -12,6 +12,7 @@
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Jacopo Corbetta <jacopo.corbetta@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.
@@ -110,6 +111,7 @@ $lang['fetchsize']             = 'Dimensione massima (bytes) scaricabile da fetc
 $lang['notify']                = 'Invia notifiche sulle modifiche a questo indirizzo';
 $lang['registernotify']        = 'Invia informazioni sui nuovi utenti registrati a questo indirizzo email';
 $lang['mailfrom']              = 'Mittente per le mail automatiche';
+$lang['mailprefix']            = 'Prefisso da inserire nell\'oggetto delle mail automatiche';
 $lang['gzip_output']           = 'Usa il Content-Encoding gzip per xhtml';
 $lang['gdlib']                 = 'Versione GD Lib ';
 $lang['im_convert']            = 'Percorso per il convertitore di ImageMagick';
@@ -182,7 +184,7 @@ $lang['xsendfile_o_0']         = 'non usare';
 $lang['xsendfile_o_1']         = 'Header proprietario lighttpd (prima della versione 1.5)';
 $lang['xsendfile_o_2']         = 'Header standard X-Sendfile';
 $lang['xsendfile_o_3']         = 'Header proprietario Nginx X-Accel-Redirect';
-$lang['showuseras_o_loginname'] = 'Nome accesso';
+$lang['showuseras_o_loginname'] = 'Nome utente';
 $lang['showuseras_o_username'] = 'Nome completo dell\'utente';
 $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:';
diff --git a/lib/plugins/config/lang/nl/lang.php b/lib/plugins/config/lang/nl/lang.php
index a9e0d935f385d00dbbc6ff7e613605fef990fb14..1b630b12ed59aabf3efcb5cd832519c0ee6ba06b 100644
--- a/lib/plugins/config/lang/nl/lang.php
+++ b/lib/plugins/config/lang/nl/lang.php
@@ -109,6 +109,7 @@ $lang['fetchsize']             = 'Maximum grootte (bytes) die fetch.php mag down
 $lang['notify']                = 'Stuur e-mailnotificaties naar dit adres';
 $lang['registernotify']        = 'Stuur informatie over nieuw aangemelde gebruikers naar dit e-mailadres';
 $lang['mailfrom']              = 'E-mailadres voor automatische e-mail';
+$lang['mailprefix']            = 'Te gebruiken voorvoegsel voor onderwerp automatische email';
 $lang['gzip_output']           = 'Gebruik gzip Content-Encoding voor xhtml';
 $lang['gdlib']                 = 'Versie GD Lib ';
 $lang['im_convert']            = 'Path naar ImageMagick\'s convert tool';
diff --git a/lib/plugins/config/lang/pt/lang.php b/lib/plugins/config/lang/pt/lang.php
index 336de5b36498ff436cad127f70e37af861c629ae..c0ada0a2675210f6da18d9fcedf68418c8232abe 100644
--- a/lib/plugins/config/lang/pt/lang.php
+++ b/lib/plugins/config/lang/pt/lang.php
@@ -103,6 +103,7 @@ $lang['fetchsize']             = 'Tamanho máximo (bytes) que o fetch.php pode t
 $lang['notify']                = 'Enviar notificações de mudanças para este endereço de email';
 $lang['registernotify']        = 'Enviar informações de utilizadores registados para este endereço de email';
 $lang['mailfrom']              = 'Endereço de email a ser utilizado para mensagens automáticas';
+$lang['mailprefix']            = 'Prefixo de email a ser utilizado para mensagens automáticas';
 $lang['gzip_output']           = 'Usar "Content-Encoding" do gzip para o código xhtml';
 $lang['gdlib']                 = 'Versão GD Lib';
 $lang['im_convert']            = 'Caminho para a ferramenta "convert" do ImageMagick';
diff --git a/lib/plugins/config/lang/ru/lang.php b/lib/plugins/config/lang/ru/lang.php
index 5e624eda04a45a1f938be55655bf5e84b19f2436..f29257a28cf5967e691a322971d38eafeda01036 100644
--- a/lib/plugins/config/lang/ru/lang.php
+++ b/lib/plugins/config/lang/ru/lang.php
@@ -14,6 +14,8 @@
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['menu']                  = 'Настройки вики';
 $lang['error']                 = 'Настройки не были сохранены из-за ошибки в одном из значений. Пожалуйста, проверьте свои изменения и попробуйте ещё раз.<br />Неправильные значения будут обведены красной рамкой.';
@@ -110,6 +112,7 @@ $lang['fetchsize']             = 'Максимальный размер файл
 $lang['notify']                = 'Электронный адрес для извещений';
 $lang['registernotify']        = 'Посылать информацию о новых зарегистрированных пользователях на этот электронный адрес';
 $lang['mailfrom']              = 'Электронный адрес вики (От:)';
+$lang['mailprefix']            = 'Префикс используемый для автоматического письма станет темой сообщений';
 $lang['gzip_output']           = 'Использовать gzip-сжатие для xhtml';
 $lang['gdlib']                 = 'Версия LibGD';
 $lang['im_convert']            = 'Путь к ImageMagick';
diff --git a/lib/plugins/config/lang/sl/lang.php b/lib/plugins/config/lang/sl/lang.php
index 5b5b3d3d83eeae7c7f8dd74dd95b044280c6a98d..e8fd345330074a0fba1fa838401d816e0de1d7c4 100644
--- a/lib/plugins/config/lang/sl/lang.php
+++ b/lib/plugins/config/lang/sl/lang.php
@@ -5,6 +5,7 @@
  * @author Dejan Levec <webphp@gmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+  * @author Matej Urbančič (mateju@svn.gnome.org)
  */
 $lang['lang']                  = 'Jezik';
 $lang['template']              = 'Predloga';
@@ -12,7 +13,7 @@ $lang['recent']                = 'Zadnje spremembe';
 $lang['signature']             = 'Podpis';
 $lang['defaultgroup']          = 'Privzeta skupina';
 $lang['disableactions_check']  = 'Preveri';
-$lang['userewrite']            = 'Uporabi lepše URL naslove';
+$lang['userewrite']            = 'Uporabi olepšane naslove URL';
 $lang['userewrite_o_1']        = '.htaccess';
 $lang['rss_type_o_rss']        = 'RSS 0.91';
 $lang['rss_type_o_rss1']       = 'RSS 1.0';
diff --git a/lib/plugins/config/lang/sv/lang.php b/lib/plugins/config/lang/sv/lang.php
index 3b5752ea1f261372f29fedcd5aba5991c315eeea..50c75234b5b0e8f0e0241974e2baad422dba0310 100644
--- a/lib/plugins/config/lang/sv/lang.php
+++ b/lib/plugins/config/lang/sv/lang.php
@@ -112,6 +112,7 @@ $lang['fetchsize']             = 'Maximal storlek (bytes) som fetch.php får lad
 $lang['notify']                = 'Skicka meddelande om ändrade sidor till den här e-postadressen';
 $lang['registernotify']        = 'Skicka meddelande om nyregistrerade användare till en här e-postadressen';
 $lang['mailfrom']              = 'Avsändaradress i automatiska e-postmeddelanden';
+$lang['mailprefix']            = 'Prefix i början på ämnesraden vid automatiska e-postmeddelanden';
 $lang['gzip_output']           = 'Använd gzip Content-Encoding för xhtml';
 $lang['gdlib']                 = 'Version av GD-biblioteket';
 $lang['im_convert']            = 'Sökväg till ImageMagicks konverteringsverktyg';
diff --git a/lib/plugins/config/lang/zh-tw/intro.txt b/lib/plugins/config/lang/zh-tw/intro.txt
index e27b18ba2e0ea32834f477b479d9715016ea7363..c257947d91bb2545c56805c188454f56b4baf73d 100644
--- a/lib/plugins/config/lang/zh-tw/intro.txt
+++ b/lib/plugins/config/lang/zh-tw/intro.txt
@@ -1,7 +1,7 @@
 ====== 配置管理器 ======
 
-使用本頁中的內容來控制您的 Dokuwiki 設置。  每個單獨設置的相關信息請參閱 [[doku>config]]。 配置管理器的更多信息請參閱 [[doku>plugin:config]]。
+使用本頁控制您的 Dokuwiki 設定。每個獨立設定的相關訊息可參閱 [[doku>config]]。配置管理器的更多訊息請參閱 [[doku>plugin:config]]。
 
-淡紅色背景的項目被保護,不能通過這個管理器更改。 藍色背景的項目是系統的默認值,白色背景的項目是您作出更改的項目。藍色和白色的設置項目都可以更改。
+淡紅色背景的項目是被保護的,不能通過這個管理器更改。藍色背景的項目是系統的預設值,白色背景的項目是您更改過的。藍色和白色的設定項目都可以更改。
 
-離開本頁之前不要忘記點擊最后的 **保存** 按鈕,否則您做的修改不會生效。
+離開本頁之前不要忘記點擊最下面的 **儲存** 按鈕,否則您的修改將不會生效。
diff --git a/lib/plugins/config/lang/zh-tw/lang.php b/lib/plugins/config/lang/zh-tw/lang.php
index c363fb70917ac4b116316068d17b97cf7b9c172a..8ebdb99adcfcadfbb996ee5bbd1086840f4c6c92 100644
--- a/lib/plugins/config/lang/zh-tw/lang.php
+++ b/lib/plugins/config/lang/zh-tw/lang.php
@@ -7,150 +7,153 @@
  * @author Wayne San <waynesan@zerozone.tw>
  * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin
  */
 $lang['menu']                  = '系統配置設定';
-$lang['error']                 = '設定因為不合法的值而失敗,請檢查您的改變並重新送出。
-<br />不正確的值會被紅色方框圍住。';
+$lang['error']                 = '設定因為不合法的值而未更新,請檢查您的更改並重新送出。
+<br />不正確的值會被紅色方框包住。';
 $lang['updated']               = '成功地更新設定。';
-$lang['nochoice']              = '(無其他選項可選)';
-$lang['locked']                = '設定檔無法被更新, 如果這不是故意的, <br />
-請確定設定檔名以及權限是正確的.';
-$lang['danger']                = '危險:改變此選項可能使得您的 wiki 以及其設定選單無法存取。';
-$lang['warning']               = '警告:改變此選項可能導致未預期的行為。';
-$lang['security']              = '安全性警告:改變此選項可能造成安全上的危險。';
-$lang['_configuration_manager'] = '設定管理';
+$lang['nochoice']              = '(無其他可用選項)';
+$lang['locked']                = '設定檔無法更新,若非故意,請確認本地檔名及權限正確。';
+$lang['danger']                = '危險:改變此選項可能使您無法存取維基及配置選單。';
+$lang['warning']               = '警告:改變此選項可能導致不可預期的行為。';
+$lang['security']              = '安全性警告:改變此選項可能造成安全風險。';
+$lang['_configuration_manager'] = '配置管理';
 $lang['_header_dokuwiki']      = 'DokuWiki 設定';
-$lang['_header_plugin']        = '外掛設定';
+$lang['_header_plugin']        = '插件設定';
 $lang['_header_template']      = '樣板設定';
-$lang['_header_undefined']     = '不明確的設定';
+$lang['_header_undefined']     = '未定義設定';
 $lang['_basic']                = '基本設定';
 $lang['_display']              = '顯示設定';
 $lang['_authentication']       = '認證設定';
-$lang['_anti_spam']            = 'Anti-Spam 設定';
+$lang['_anti_spam']            = '反垃圾設定';
 $lang['_editing']              = '編輯設定';
 $lang['_links']                = '連結設定';
 $lang['_media']                = '媒體設定';
 $lang['_advanced']             = '進階設定';
 $lang['_network']              = '網路設定';
-$lang['_plugin_sufix']         = '外掛設定';
+$lang['_plugin_sufix']         = '插件設定';
 $lang['_template_sufix']       = '樣板設定';
-$lang['_msg_setting_undefined'] = '设置的元数据不存在。';
-$lang['_msg_setting_no_class'] = '設置的分類不存在。';
+$lang['_msg_setting_undefined'] = '設定的後設數據不存在。';
+$lang['_msg_setting_no_class'] = '設定的分類不存在。';
 $lang['_msg_setting_no_default'] = '無預設值';
 $lang['fmode']                 = '檔案建立模式';
 $lang['dmode']                 = '目錄建立模式';
 $lang['lang']                  = '語系';
 $lang['basedir']               = '根目錄';
-$lang['baseurl']               = '根路徑(URL)';
+$lang['baseurl']               = '根路徑 (URL)';
 $lang['savedir']               = '儲存資料的目錄';
 $lang['start']                 = '開始頁面的名稱';
-$lang['title']                 = 'Wiki 標題';
+$lang['title']                 = '維基標題';
 $lang['template']              = '樣板';
 $lang['license']               = '您希望您的內容為何種授權方式?';
 $lang['fullpath']              = '顯示完整的路徑於頁面底部';
 $lang['recent']                = '最近更新';
-$lang['breadcrumbs']           = '显示“足迹”的数量';
-$lang['youarehere']            = '顯示“您在這裡”';
-$lang['typography']            = '進行字符替換';
-$lang['htmlok']                = '允許嵌入式HTML';
-$lang['phpok']                 = '允許嵌入式PHP';
-$lang['dformat']               = '日期格式(請見 PHP\'s <a href="http://www.php.net/strftime">strftime</a> function)';
+$lang['breadcrumbs']           = '導覽鏈數量';
+$lang['youarehere']            = '顯示階層式導覽鏈';
+$lang['typography']            = '進行字元替換';
+$lang['htmlok']                = '允許嵌入式 HTML';
+$lang['phpok']                 = '允許嵌入式 PHP';
+$lang['dformat']               = '日期格式 (參見 PHP 的 <a href="http://www.php.net/strftime">strftime</a> 函數)';
 $lang['signature']             = '簽名';
-$lang['toptoclevel']           = '本頁目錄的最高層級';
-$lang['tocminheads']           = '決定是否建立本頁目錄的最少標題數量';
-$lang['maxtoclevel']           = '本頁目錄顯示的最大層級';
+$lang['toptoclevel']           = '目錄表的最上層級';
+$lang['tocminheads']           = '決定是否建立目錄表的最少標題數量';
+$lang['maxtoclevel']           = '目錄表顯示的最大層級';
 $lang['maxseclevel']           = '可編輯段落的最大層級';
-$lang['camelcase']             = '對鏈接使用 CamelCase';
+$lang['camelcase']             = '對連結使用 CamelCase';
 $lang['deaccent']              = '清理頁面名稱';
 $lang['useheading']            = '使用第一個標題作為頁面名稱';
 $lang['refcheck']              = '媒體連結檢查';
 $lang['refshow']               = '媒體連結的顯示數量';
-$lang['allowdebug']            = '允許 debug <b> 如果不需要則停用! </b>';
-$lang['usewordblock']          = '基於 wordlist 來限制 spam';
-$lang['indexdelay']            = '建立索引前的延遲時間(秒)';
-$lang['relnofollow']           = '使用 rel="nofollow" 於外部連結';
-$lang['mailguard']             = '暗化E-mail位址';
+$lang['allowdebug']            = '允許除錯 <b>(不需要請停用!)</b>';
+$lang['usewordblock']          = '根據字詞表阻擋垃圾訊息';
+$lang['indexdelay']            = '建立索引前的延遲時間 (秒)';
+$lang['relnofollow']           = '外部連結使用 rel="nofollow"';
+$lang['mailguard']             = '混淆 E-mail 位址';
 $lang['iexssprotect']          = '檢查上傳的檔案中是否隱含惡意的 JavaScript 或 HTML 碼';
-$lang['showuseras']            = '在顯示最近修改頁面,將使用者顯示為:';
+$lang['showuseras']            = '將最後編輯頁面的使用者顯示為:';
 $lang['useacl']                = '使用存取控制名單';
 $lang['autopasswd']            = '自動產生密碼';
-$lang['authtype']              = '认证后台管理方式';
+$lang['authtype']              = '認證後台管理方式';
 $lang['passcrypt']             = '密碼加密方式';
 $lang['defaultgroup']          = '預設群組';
-$lang['superuser']             = '超級用戶 - 不論 ACL 如何設置,都能訪問所有頁面與功能的用戶組/用戶';
-$lang['manager']               = '管理员 - 能访问相应管理功能的用户组/用户';
+$lang['superuser']             = '超級用戶 - 不論 ACL 如何設定,都能訪問所有頁面與功能的用戶組/用戶';
+$lang['manager']               = '管理員 - 能訪問相應管理功能的用戶组/用戶';
 $lang['profileconfirm']        = '修改個人資料時需要確認密碼';
-$lang['disableactions']        = '停用DokuWiki功能';
+$lang['disableactions']        = '停用的 DokuWiki 動作';
 $lang['disableactions_check']  = '檢查';
 $lang['disableactions_subscription'] = '訂閱/取消訂閱';
-$lang['disableactions_wikicode'] = '查看源文件/導出源文件';
-$lang['disableactions_other']  = '其他功能(以逗號分隔)';
-$lang['sneaky_index']          = '默認情況下,DokuWiki 在索引頁會顯示所有 namespace。啟用該選項能隱藏那些用戶沒有權限閱讀的頁面。但也可能將用戶能夠閱讀的子頁面一並隱藏。這有可能導致在特定 ACL 設置下,索引功能不可用。';
-$lang['auth_security_timeout'] = '認證確定的 Timeout (秒)';
-$lang['securecookie']          = '「cookies set via HTTPS」是否只能由瀏覽器經 HTTPS 傳送?當你登入 wiki 是被 SSL 所保護但瀏覽 wiki 是沒有被保護時,取消此選項。';
+$lang['disableactions_wikicode'] = '檢視原始碼/匯出原始檔';
+$lang['disableactions_other']  = '其他功能 (逗號分隔)';
+$lang['sneaky_index']          = '預設情況下,DokuWiki 會在索引頁會顯示所有命名空間。啟用此選項會隱藏用戶沒有閱讀權限的頁面,但也可能將能閱讀的子頁面一併隱藏。在特定 ACL 設定下,這可能導致索引無法使用。';
+$lang['auth_security_timeout'] = '安全認證的計時 (秒)';
+$lang['securecookie']          = 'HTTPS 頁面設定的 cookie 是否只能由瀏覽器經 HTTPS 傳送?取消此選項後,只有登入維基會被 SSL 保護而瀏覽時不會。';
 $lang['xmlrpc']                = '啟用/停用 XML-RPC 介面';
-$lang['xmlrpcuser']            = 'XML-RPC 存取權限將局限於在此提供的群組或使用者(逗點分隔)。若要開放權限給所有人請留白。';
-$lang['updatecheck']           = '檢查更新與安全性警告? 使用此功能, DokuWiki 需要聯繫 splitbrain.org.';
-$lang['userewrite']            = '使用更整潔的 URL';
-$lang['useslash']              = '在 URL 中使用斜杠作为命名空间的分隔符';
+$lang['xmlrpcuser']            = 'XML-RPC 存取權限將局限於在此提供的群組或使用者 (逗號分隔)。若要開放權限給所有人請留白。';
+$lang['updatecheck']           = '檢查更新與安全性警告?DokuWiki 需要聯繫 splitbrain.org 才能使用此功能。';
+$lang['userewrite']            = '使用好看的 URL';
+$lang['useslash']              = '在 URL 中使用斜線作為命名空間的分隔字元';
 $lang['usedraft']              = '編輯時自動儲存草稿';
 $lang['sepchar']               = '頁面名稱中單字的分隔字元';
-$lang['canonical']             = '使用完全標准的 URL';
-$lang['autoplural']            = '在鏈接中檢查多種格式';
+$lang['canonical']             = '使用最典型的 URL';
+$lang['fnencode']              = '非 ASCII 文件名稱的編輯方法。';
+$lang['autoplural']            = '檢查複數形式的連結 (英文)';
 $lang['compression']           = 'attic 文件的壓縮方式';
-$lang['cachetime']             = 'cache的最大時間(秒)';
-$lang['locktime']              = '鎖定檔案的最大時間(秒)';
-$lang['fetchsize']             = 'fetch.php可以從外部下載的最大檔案尺寸(bytes)';
-$lang['notify']                = '寄送變更通知信到這個E-mail位址';
-$lang['registernotify']        = '寄送新使用者註冊資訊到這個E-mail位址';
+$lang['cachetime']             = '緩存的最大存在時間 (秒)';
+$lang['locktime']              = '檔案的最大鎖定時間 (秒)';
+$lang['fetchsize']             = 'fetch.php 可以從外部下載的最大檔案尺寸 (bytes)';
+$lang['notify']                = '寄送變更通知信到這個 E-mail 位址';
+$lang['registernotify']        = '寄送新使用者註冊資訊到這個 E-mail 位址';
 $lang['mailfrom']              = '自動發送郵件時使用的郵件地址';
 $lang['gzip_output']           = '對 xhtml 使用 gzip 內容編碼';
 $lang['gdlib']                 = 'GD Lib 版本';
-$lang['im_convert']            = 'ImageMagick的轉換工具路徑';
+$lang['im_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 sitemap (天)';
+$lang['subscribe_time']        = '訂閱列表和摘要發送的時間間隔 (秒);這個值應該小於指定的最近更改保留時間 (recent_days)。';
+$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&task_id=852\">Bug 852</a> 獲取更多信息。';
 $lang['xsendfile']             = '使用 X-Sendfile 頭讓服務器發送狀態文件?您的服務器需要支持該功能。';
-$lang['renderer_xhtml']        = '主维基页面 (xhtml) 输出使用的渲染';
+$lang['renderer_xhtml']        = '主要維基輸出 (xhtml) 的的渲染器';
 $lang['renderer__core']        = '%s (dokuwiki 核心)';
-$lang['renderer__plugin']      = '%s (外掛)';
-$lang['rememberme']            = '是否在登入畫面顯示記住我';
+$lang['renderer__plugin']      = '%s (插件)';
+$lang['rememberme']            = '允許自動登入 (記住我)';
 $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['rss_update']            = 'XML feed 更新間隔時間 (秒)';
+$lang['recent_days']           = '儲存多少天內的變更';
+$lang['rss_show_summary']      = '於標題中顯示簡要的 XML feed';
 $lang['target____wiki']        = '內部連結的目標視窗';
-$lang['target____interwiki']   = 'wiki內部連結的目標視窗';
+$lang['target____interwiki']   = '跨維基連結的目標視窗';
 $lang['target____extern']      = '外部連結的目標視窗';
 $lang['target____media']       = '媒體連結的目標視窗';
-$lang['target____windows']     = '視窗連結的目標視窗';
+$lang['target____windows']     = 'Windows 連結的目標視窗';
 $lang['proxy____host']         = 'Proxy 伺服器名稱';
 $lang['proxy____port']         = 'Proxy 連接埠';
 $lang['proxy____user']         = 'Proxy 使用者名稱';
 $lang['proxy____pass']         = 'Proxy 密碼';
 $lang['proxy____ssl']          = '使用 SSL 連接到 Proxy';
+$lang['proxy____except']       = '比對 proxy 代理時應跳過的地址的正規式。';
 $lang['safemodehack']          = '啟用 Safemode Hack';
-$lang['ftp____host']           = 'Safemode Hack 的 FTP 服務器';
+$lang['ftp____host']           = 'Safemode Hack 的 FTP 伺服器';
 $lang['ftp____port']           = 'Safemode Hack 的 FTP 端口';
-$lang['ftp____user']           = 'Safemode Hack 的 FTP 用戶名';
+$lang['ftp____user']           = 'Safemode Hack 的 FTP 帳戶';
 $lang['ftp____pass']           = 'Safemode Hack 的 FTP 密碼';
 $lang['ftp____root']           = 'Safemode Hack 的 FTP 根路徑';
 $lang['license_o_']            = '未選擇';
 $lang['typography_o_0']        = 'ç„¡';
-$lang['typography_o_1']        = '仅限双引号';
-$lang['typography_o_2']        = '所有引號(不一定能正常運行)';
+$lang['typography_o_1']        = '只限雙引號';
+$lang['typography_o_2']        = '包括單引號 (未必能運作)';
 $lang['userewrite_o_0']        = 'ç„¡';
 $lang['userewrite_o_1']        = '.htaccess';
 $lang['userewrite_o_2']        = 'DokuWiki 內部控制';
 $lang['deaccent_o_0']          = '關閉';
 $lang['deaccent_o_1']          = '移除重音符號';
-$lang['deaccent_o_2']          = '用羅馬字拼寫';
+$lang['deaccent_o_2']          = '羅馬字母轉寫';
 $lang['gdlib_o_0']             = 'GD Lib 無法使用';
 $lang['gdlib_o_1']             = '版本 1.x';
 $lang['gdlib_o_2']             = '自動偵測';
@@ -159,11 +162,11 @@ $lang['rss_type_o_rss1']       = 'RSS 1.0';
 $lang['rss_type_o_rss2']       = 'RSS 2.0';
 $lang['rss_type_o_atom']       = 'Atom 0.3';
 $lang['rss_type_o_atom1']      = 'Atom 1.0';
-$lang['rss_content_o_abstract'] = '概要';
-$lang['rss_content_o_diff']    = '統一差異';
-$lang['rss_content_o_htmldiff'] = 'HTML格式的差異對照表';
+$lang['rss_content_o_abstract'] = '摘要';
+$lang['rss_content_o_diff']    = '統一的差異';
+$lang['rss_content_o_htmldiff'] = 'HTML 格式的差異對照表';
 $lang['rss_content_o_html']    = '完整的 HTML 頁面內容';
-$lang['rss_linkto_o_diff']     = '差別查看';
+$lang['rss_linkto_o_diff']     = '差異檢視';
 $lang['rss_linkto_o_page']     = '已修訂的頁面';
 $lang['rss_linkto_o_rev']      = '版本清單';
 $lang['rss_linkto_o_current']  = '目前頁面';
@@ -171,14 +174,15 @@ $lang['compression_o_0']       = 'ç„¡';
 $lang['compression_o_gz']      = 'gzip';
 $lang['compression_o_bz2']     = 'bz2';
 $lang['xsendfile_o_0']         = '不使用';
-$lang['xsendfile_o_1']         = '專有 lighttpd 頭(1.5 發布前)';
-$lang['xsendfile_o_2']         = '標准 X-Sendfile 頭';
-$lang['xsendfile_o_3']         = '專有 Nginx X-Accel-Redirect 頭';
+$lang['xsendfile_o_1']         = '專有 lighttpd 標頭 (1.5 發布前)';
+$lang['xsendfile_o_2']         = '標準 X-Sendfile 標頭';
+$lang['xsendfile_o_3']         = '專有 Nginx X-Accel-Redirect 標頭';
 $lang['showuseras_o_loginname'] = '登入名稱';
 $lang['showuseras_o_username'] = '完整姓名';
-$lang['showuseras_o_email']    = '使用者的 email 位址 (根據郵件監控設定來暗化)';
-$lang['showuseras_o_email_link'] = '使用者的 eamil 位址標示成 mailto: link';
+$lang['showuseras_o_email']    = '使用者的 email 位址 (根據郵件監控設定混淆化)';
+$lang['showuseras_o_email_link'] = '使用者的 email 位址標示成 mailto: link';
 $lang['useheading_o_0']        = '永不';
-$lang['useheading_o_navigation'] = '只有導覽';
-$lang['useheading_o_content']  = '只有 Wiki 內容';
+$lang['useheading_o_navigation'] = '僅導覽';
+$lang['useheading_o_content']  = '僅維基內容';
 $lang['useheading_o_1']        = '總是';
+$lang['readdircache']          = 'readdir 緩存的最大存在時間 (秒)';
diff --git a/lib/plugins/config/lang/zh/lang.php b/lib/plugins/config/lang/zh/lang.php
index 0419968c796ad77f6bea7887e2af9fbb66d008b8..93565f3136b67aa5c3006ae5f5ccde6475d1c4a9 100644
--- a/lib/plugins/config/lang/zh/lang.php
+++ b/lib/plugins/config/lang/zh/lang.php
@@ -11,6 +11,7 @@
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['menu']                  = '配置设置';
 $lang['error']                 = '由于非法参数,设置没有更新。请检查您做的改动并重新提交。
@@ -109,6 +110,7 @@ $lang['fetchsize']             = 'fetch.php 能从外部下载的最大文件大
 $lang['notify']                = '发送更改通知给这个邮件地址';
 $lang['registernotify']        = '发送新注册用户的信息给这个邮件地址';
 $lang['mailfrom']              = '自动发送邮件时使用的邮件地址';
+$lang['mailprefix']            = '自动发送邮件时使用的邮件地址前缀';
 $lang['gzip_output']           = '对 xhtml 使用 gzip 内容编码';
 $lang['gdlib']                 = 'GD 库版本';
 $lang['im_convert']            = 'ImageMagick 转换工具的路径';
diff --git a/lib/plugins/config/settings/extra.class.php b/lib/plugins/config/settings/extra.class.php
index f6b69ead18d326c588fc7f6abcba7ede3d6482b6..b4e35b1ccc63829f431a0ee30d4d78b34213419e 100644
--- a/lib/plugins/config/settings/extra.class.php
+++ b/lib/plugins/config/settings/extra.class.php
@@ -90,7 +90,6 @@ if (!class_exists('setting_disableactions')) {
         // transfer some DokuWiki language strings to the plugin
         if (!$plugin->localised) $this->setupLocale();
         $plugin->lang[$this->_key.'_revisions'] = $lang['btn_revs'];
-        $plugin->lang[$this->_key.'_register'] = $lang['register'];
 
         foreach ($this->_choices as $choice)
           if (isset($lang['btn_'.$choice])) $plugin->lang[$this->_key.'_'.$choice] = $lang['btn_'.$choice];
diff --git a/lib/plugins/plugin/admin.php b/lib/plugins/plugin/admin.php
index c662b565a970c6f7eabc1508947cd36f124021c2..b2108f185d650bc7c839385c3049181f21ee6758 100644
--- a/lib/plugins/plugin/admin.php
+++ b/lib/plugins/plugin/admin.php
@@ -44,7 +44,7 @@ class admin_plugin_plugin extends DokuWiki_Admin_Plugin {
 
     function admin_plugin_plugin() {
         global $conf;
-        $this->disabled = (isset($conf['pluginmanager']) && ($conf['pluginmanager'] == 0));
+        $this->disabled = plugin_isdisabled('plugin');
     }
 
     /**
diff --git a/lib/plugins/plugin/classes/ap_download.class.php b/lib/plugins/plugin/classes/ap_download.class.php
index beba0ab07a8c489440b2c8bb66ffdbfe07bdc061..784095aaf74788684124b12c7cce1c3fd467d901 100644
--- a/lib/plugins/plugin/classes/ap_download.class.php
+++ b/lib/plugins/plugin/classes/ap_download.class.php
@@ -1,7 +1,7 @@
 <?php
 class ap_download extends ap_manage {
 
-    var $overwrite = false;
+    var $overwrite = true;
 
     /**
      * Initiate the plugin download
diff --git a/lib/plugins/plugin/classes/ap_manage.class.php b/lib/plugins/plugin/classes/ap_manage.class.php
index 2982a3ebb0f5bd9d3e6be0771a36abc505eba238..fb148f2633e96c03e61a6091d9fa9d79417b211f 100644
--- a/lib/plugins/plugin/classes/ap_manage.class.php
+++ b/lib/plugins/plugin/classes/ap_manage.class.php
@@ -176,7 +176,7 @@ class ap_manage {
     function dir_delete($path) {
         if (!is_string($path) || $path == "") return false;
 
-        if (is_dir($path)) {
+        if (is_dir($path) && !is_link($path)) {
             if (!$dh = @opendir($path)) return false;
 
             while ($f = readdir($dh)) {
diff --git a/lib/plugins/plugin/lang/bg/admin_plugin.txt b/lib/plugins/plugin/lang/bg/admin_plugin.txt
index e74e88d00419cedf5dac206184b2530e3a4e7be1..0227d6fe85293b833efc9aa8226cdafa976cbd8b 100644
--- a/lib/plugins/plugin/lang/bg/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/bg/admin_plugin.txt
@@ -1,3 +1,3 @@
 ====== Управление на приставките ======
 
-На тази страница можете на управлявате всичко свързано с [[doku>plugins|приставките]] на Dokuwiki. За да можете да свалите и инсталирате приставка, вашата plugin директория трябва да е позволена за писане от сървъра.
+На тази страница можете на управлявате всичко свързано с [[doku>plugins|приставките]] на Dokuwiki. За да можете да свалите и инсталирате приставка, е необходимо писането в директорията plugin да е позволено на сървъра.
diff --git a/lib/plugins/plugin/lang/bg/lang.php b/lib/plugins/plugin/lang/bg/lang.php
index 99e7a2fe4cbe2acb0dc76f5381bcb0c5d8421561..40331fb547b9ac51d5085933f9b6eb41e34dedce 100644
--- a/lib/plugins/plugin/lang/bg/lang.php
+++ b/lib/plugins/plugin/lang/bg/lang.php
@@ -5,6 +5,7 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
 $lang['menu']                  = 'Управление на приставките';
 $lang['download']              = 'Сваляне и инсталиране на нова приставка';
@@ -16,37 +17,37 @@ $lang['btn_settings']          = 'настройки';
 $lang['btn_download']          = 'Сваляне';
 $lang['btn_enable']            = 'Запис';
 $lang['url']                   = 'URL';
-$lang['installed']             = 'Инсталирани:';
-$lang['lastupdate']            = 'Последно обновени:';
+$lang['installed']             = 'Инсталирана:';
+$lang['lastupdate']            = 'Актуализирана:';
 $lang['source']                = 'Източник:';
 $lang['unknown']               = 'непознат';
-$lang['updating']              = 'Качване ...';
-$lang['updated']               = 'Качването на приставката %s бе упешно.';
-$lang['updates']               = 'Обновяването на следните приставки бе успешно';
-$lang['update_none']           = 'Не бяха намерени нови версии.';
+$lang['updating']              = 'Актуализиране ...';
+$lang['updated']               = 'Приставката %s е качена успешно';
+$lang['updates']               = 'Следните приставки са актуализирани успешно';
+$lang['update_none']           = 'Не са намерени нови версии.';
 $lang['deleting']              = 'Изтриване ...';
-$lang['deleted']               = 'Изтриването на приставката %s бе успешно.';
+$lang['deleted']               = 'Приставката %s е изтрита успешно.';
 $lang['downloading']           = 'Сваляне ...';
-$lang['downloaded']            = 'Инсталирането на приставката %s бе успешно  ';
-$lang['downloads']             = 'Инсталирането на следните приставки бе успешно:';
-$lang['download_none']         = 'Не бяха намерени приставки или е имало грешка при свалянето и инсталирането.';
-$lang['plugin']                = 'Приставки:';
+$lang['downloaded']            = 'Приставката %s е инсталирана успешно  ';
+$lang['downloads']             = 'Следните приставки са инсталирани успешно:';
+$lang['download_none']         = 'Не са намерени приставки или е възникнала непозната грешка при свалянето и инсталирането.';
+$lang['plugin']                = 'Приставка:';
 $lang['components']            = 'Компоненти';
-$lang['noinfo']                = 'Тази приставка не върна информация, може да е повредена.';
+$lang['noinfo']                = 'Приставка не върна информация, може да е повредена.';
 $lang['name']                  = 'Име:';
 $lang['date']                  = 'Дата:';
 $lang['type']                  = 'Тип:';
 $lang['desc']                  = 'Описание:';
 $lang['author']                = 'Автор:';
-$lang['www']                   = 'Сайт:';
-$lang['error']                 = 'Имаше непозната грешка.';
-$lang['error_download']        = 'Свалянето на приставката %s бе невъзможно.';
-$lang['error_badurl']          = 'Предполагаем грешен адрес - не може да се определи име на файла от адреса(url)';
-$lang['error_dircreate']       = 'Създаването на временна директория за сваляне е невъзможно.';
-$lang['error_decompress']      = 'Разархивирането на сваленият файл е невъзможно.Това може да е резултат от грешно сваляне, в такъв случай трябва да опитате отново; или формата на компресия е непозната - в този случай трябва да свалите и инсталирате приставката ръчно.';
-$lang['error_copy']            = 'Имаше грешка при копирането на файл по време на инсталацията на приставката <em>%s</em>: дискът е пълен или правата за достъп до файловете са грешни. Това може да е довело до частично инсталирана приставка и оставяне на нестабилна инсталация на уикито ви.';
-$lang['error_delete']          = 'Имаше грешка при изтриването на приставката <em>%s</em>.  Най-вероятната причина е недостатъчна права за достъп до файл или директория';
-$lang['enabled']               = 'Приставката %s бе включена.';
-$lang['notenabled']            = 'Приставката %s не бе включена, моля проверете файловите разрешения.';
-$lang['disabled']              = 'Приставката %s бе изключена.';
-$lang['notdisabled']           = 'Приставката %s не бе изключена, моля проверете файловите разрешения.';
+$lang['www']                   = 'Уебстраница:';
+$lang['error']                 = 'Възникна непозната грешка.';
+$lang['error_download']        = 'Свалянето на приставката %s е невъзможно.';
+$lang['error_badurl']          = 'Предполагаем грешен адрес - не може да се определи име на файла от URL адреса';
+$lang['error_dircreate']       = 'Създаването на временна директория за сваляне не е възможно.';
+$lang['error_decompress']      = 'Разархивирането на сваленият файл е невъзможно. Вероятно е резултат от грешка при свалянето, в този случай трябва да опитате отново; или формата на компресия е непознат - тогава трябва да свалите и инсталирате приставката ръчно.';
+$lang['error_copy']            = 'Възникна грешка при копиране на файл по време на инсталиране на приставката <em>%s</em>: вероятно дискът е пълен или правата за достъп до файловете са грешни. Може да доведе до частично инсталирана приставка и да причини нестабилно функциониране на wiki-то ви.';
+$lang['error_delete']          = 'Възникна грешка при изтриването на приставката <em>%s</em>.  Най-вероятната причина е в правата за достъп до файл или директория';
+$lang['enabled']               = 'Приставката %s е включена.';
+$lang['notenabled']            = 'Приставката %s не може да бъде включена, моля проверете правата за файловете.';
+$lang['disabled']              = 'Приставката %s е изключена.';
+$lang['notdisabled']           = 'Приставката %s не е изключена, моля проверете правата за файловете.';
diff --git a/lib/plugins/plugin/lang/fr/lang.php b/lib/plugins/plugin/lang/fr/lang.php
index 79080f5f3fdc9667ab7ce19d1508d8b491a1423d..5daf3b3addf47db98c30f11f5b5b4cb2043718bc 100644
--- a/lib/plugins/plugin/lang/fr/lang.php
+++ b/lib/plugins/plugin/lang/fr/lang.php
@@ -15,6 +15,7 @@
  * @author Philippe Bajoit <philippe.bajoit@gmail.com>
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
  */
 $lang['menu']                  = 'Gestion des modules externes';
 $lang['download']              = 'Télécharger et installer un nouveau module';
diff --git a/lib/plugins/plugin/lang/it/lang.php b/lib/plugins/plugin/lang/it/lang.php
index c7ce28a59ae820a6c302faa86ccab60d81899d47..e675c5530d0515cea2c0fe8d6b3bc7cd88bce332 100644
--- a/lib/plugins/plugin/lang/it/lang.php
+++ b/lib/plugins/plugin/lang/it/lang.php
@@ -12,6 +12,7 @@
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  */
 $lang['menu']                  = 'Gestione Plugin';
 $lang['download']              = 'Scarica e installa un nuovo plugin';
diff --git a/lib/plugins/plugin/lang/ru/lang.php b/lib/plugins/plugin/lang/ru/lang.php
index ed1fc22b385c8536361df5cd8e112d44b7709d38..757b607f5eb0c15c3c05f4ae2c1394af2c82ff12 100644
--- a/lib/plugins/plugin/lang/ru/lang.php
+++ b/lib/plugins/plugin/lang/ru/lang.php
@@ -14,6 +14,8 @@
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['menu']                  = 'Управление плагинами';
 $lang['download']              = 'Скачать и установить новый плагин';
diff --git a/lib/plugins/plugin/lang/sl/lang.php b/lib/plugins/plugin/lang/sl/lang.php
index 41d8579798ce5a8a96497d8ecebf5b1319f62aad..2605a1948ad80474da29996de09d0275c23d4e5c 100644
--- a/lib/plugins/plugin/lang/sl/lang.php
+++ b/lib/plugins/plugin/lang/sl/lang.php
@@ -5,6 +5,7 @@
  * @author Dejan Levec <webphp@gmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
  */
 $lang['btn_delete']            = 'Izbriši';
 $lang['btn_settings']          = 'Nastavitve';
@@ -17,7 +18,7 @@ $lang['updating']              = 'Posodabljanje ...';
 $lang['deleting']              = 'Brisanje ...';
 $lang['name']                  = 'Ime:';
 $lang['date']                  = 'Datum:';
-$lang['type']                  = 'Tip:';
+$lang['type']                  = 'Vrsta:';
 $lang['desc']                  = 'Opis:';
 $lang['author']                = 'Avtor:';
 $lang['www']                   = 'Spletna stran:';
diff --git a/lib/plugins/plugin/lang/zh-tw/admin_plugin.txt b/lib/plugins/plugin/lang/zh-tw/admin_plugin.txt
index 41d6301996c7c171b949386ca7f700aaf0e0a5a1..84d095f510e4f3b3a415234f4615313ea0b0df1b 100644
--- a/lib/plugins/plugin/lang/zh-tw/admin_plugin.txt
+++ b/lib/plugins/plugin/lang/zh-tw/admin_plugin.txt
@@ -1,3 +1,3 @@
 ====== 插件管理器 ======
 
-本頁中您可以管理與 Dokuwiki [[doku>plugins|插件]] 相關的選項。 要通過插件管理器正常下載並安裝插件,插件所在的文件夾必須可寫。
+您可以用本頁管理與 Dokuwiki [[doku>plugins|插件]] 相關的選項。若要正常下載及安裝插件,插件所在的資料夾必須允許網頁伺服器寫入。
diff --git a/lib/plugins/plugin/lang/zh-tw/lang.php b/lib/plugins/plugin/lang/zh-tw/lang.php
index 2e480ee15e0220f90a3e6f22a706ece53373fe8f..f1c399c6880e38213938337793c03c4a03eb79d0 100644
--- a/lib/plugins/plugin/lang/zh-tw/lang.php
+++ b/lib/plugins/plugin/lang/zh-tw/lang.php
@@ -7,10 +7,11 @@
  * @author Wayne San <waynesan@zerozone.tw>
  * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin
  */
-$lang['menu']                  = '管理外掛(Plugins)';
-$lang['download']              = '下載與安裝外掛';
-$lang['manage']                = '已安裝的外掛';
+$lang['menu']                  = '管理插件 (Plugins)';
+$lang['download']              = '下載與安裝插件';
+$lang['manage']                = '已安裝的插件';
 $lang['btn_info']              = '資訊';
 $lang['btn_update']            = 'æ›´æ–°';
 $lang['btn_delete']            = '刪除';
@@ -20,21 +21,21 @@ $lang['btn_enable']            = '儲存';
 $lang['url']                   = 'URL';
 $lang['installed']             = '安裝:';
 $lang['lastupdate']            = '上次更新:';
-$lang['source']                = '来源:';
+$lang['source']                = '來源:';
 $lang['unknown']               = '未知';
 $lang['updating']              = '更新中 ...';
-$lang['updated']               = '外掛(Plugin) %s 成功地更新';
-$lang['updates']               = '以下的外掛(Plugin)已經成功地更新';
+$lang['updated']               = '插件 %s 成功地更新';
+$lang['updates']               = '以下的插件已經成功地更新';
 $lang['update_none']           = '找不到更新';
 $lang['deleting']              = '刪除中 ...';
-$lang['deleted']               = '外掛(Plugin) %s 已刪除。';
+$lang['deleted']               = '插件 %s 已刪除。';
 $lang['downloading']           = '下載中 ...';
-$lang['downloaded']            = '外掛(Plugin) %s 已成功地安裝';
-$lang['downloads']             = '以下的外掛(Plugins)已成功地安裝:';
-$lang['download_none']         = '找不到外掛, 或是下載與安裝的期間發生了一些未知的問題';
-$lang['plugin']                = '外掛(Plugin):';
+$lang['downloaded']            = '插件 %s 已成功地安裝';
+$lang['downloads']             = '以下的插件已成功地安裝:';
+$lang['download_none']         = '找不到插件,或在下載與安裝時發生了未知的問題';
+$lang['plugin']                = '插件:';
 $lang['components']            = '元件';
-$lang['noinfo']                = '此外掛沒有回傳任何資訊, 可能是無效的';
+$lang['noinfo']                = '此插件沒有回傳任何資訊,可能是無效的';
 $lang['name']                  = '名稱:';
 $lang['date']                  = '日期:';
 $lang['type']                  = '類型:';
@@ -42,13 +43,13 @@ $lang['desc']                  = '描述:';
 $lang['author']                = '作者:';
 $lang['www']                   = '網頁:';
 $lang['error']                 = '一個未知的錯誤發生。';
-$lang['error_download']        = '無法下載外掛檔案: %s';
+$lang['error_download']        = '無法下載插件檔案: %s';
 $lang['error_badurl']          = 'URL 可能有問題 - 從 URL 中無法得知文件名';
 $lang['error_dircreate']       = '無法建立暫存目錄來接收下載的內容';
 $lang['error_decompress']      = '插件管理器無法解壓下載的文件。這可能是由於下載出現錯誤,遇到這種情況,請您再次嘗試;或者是壓縮格式無法識別,遇到這種情況,您需要手動下載並安裝該插件。';
-$lang['error_copy']            = '嘗試安裝插件 <em>%s</em> 的相關文件時產生一個復制錯誤:磁盤空間已滿或文件訪問權限錯誤。這可能是由於一個安裝了一部分的插件,並使得您的維基系統不穩定。';
-$lang['error_delete']          = '嘗試刪除插件 <em>%s</em> 時產生一個錯誤。最有可能的情況是文件或路徑的訪問權限不夠';
-$lang['enabled']               = '插件 %s 已啟動。';
-$lang['notenabled']            = '插件 %s 無法啟動,請檢查檔案權限。';
+$lang['error_copy']            = '嘗試安裝插件 <em>%s</em> 的相關文件時發生複製錯誤:可能是磁碟空間不足或檔案存取權限錯誤。這可能是由於未安裝完全的插件使維基系統不穩定導致。';
+$lang['error_delete']          = '嘗試刪除插件 <em>%s</em> 時發生錯誤。最可能原因是檔案或目錄存取權限不足';
+$lang['enabled']               = '插件 %s 已啟用。';
+$lang['notenabled']            = '插件 %s 無法啟用,請檢查檔案權限。';
 $lang['disabled']              = '插件 %s 已停用。';
 $lang['notdisabled']           = '插件 %s 無法停用,請檢查檔案權限。';
diff --git a/lib/plugins/plugin/lang/zh/lang.php b/lib/plugins/plugin/lang/zh/lang.php
index af2db4ee5cf9f7d76fe587854df1231e6c095840..fcc353fed85ead1c4a18a0703ff8a6af03f40c58 100644
--- a/lib/plugins/plugin/lang/zh/lang.php
+++ b/lib/plugins/plugin/lang/zh/lang.php
@@ -11,6 +11,7 @@
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['menu']                  = '插件管理器';
 $lang['download']              = '下载并安装新的插件';
diff --git a/lib/plugins/popularity/helper.php b/lib/plugins/popularity/helper.php
index 629d0bd676099fc348632dc75be5cf1e55c4c68e..5ce562319bf66bd315239a64ab5639b3a9752f19 100644
--- a/lib/plugins/popularity/helper.php
+++ b/lib/plugins/popularity/helper.php
@@ -60,7 +60,7 @@ class helper_plugin_popularity extends Dokuwiki_Plugin {
         $result[] = array(
                 'name'   => 'lastSentTime',
                 'desc'   => 'Compute the last time popularity data was sent',
-                'params' => 'array()',
+                'params' => array(),
                 'return' => array('data' => 'int')
                 );
         return $result;
diff --git a/lib/plugins/popularity/lang/bg/intro.txt b/lib/plugins/popularity/lang/bg/intro.txt
index 06c33858546b76379a39d1ff8115f0988f507237..35023b897072458f03818f3cd9e36f77166eee3d 100644
--- a/lib/plugins/popularity/lang/bg/intro.txt
+++ b/lib/plugins/popularity/lang/bg/intro.txt
@@ -1,9 +1,9 @@
-====== Обратна връзка за популярност ======
+====== Обратна връзка ======
 
-Този инструмент събира данни за потребителите на Вашето Wiki и ви позволява да ги изпратите анонимно на DokuWiki. Това ни помага да разберем как DokuWiki се използва от потребителите си и да разработваме бъдещи решения, съответно реалното използване.
+Инструментът събира данни за вашето Wiki и ви позволява да ги изпратите да разработчиците на DokuWiki. Информацията ще им помогне да разберат как DokuWiki се ползва от потребителите и че статистиката е в подкрепа на поетата насока за развитие.
 
-Моля изпозвайте тази опция, за да информирате разработчиците на този продукт. Вашите данни ще бъдат идентифицирани с анонимен номер.
+Моля, ползвайте функцията, от време на време, когато уебстраницата ви се разраства, за да информирате разработчиците. Изпратените данни ще бъдат идентифицирани с анонимен идентификатор.
 
-Събраните данни съдържат информация за вашата версия на DokuWiki, броя и размера на вашите страници и файлове, инсталирани плъгини и информация за вашата PHP инсталация.
+Събираните данни съдържат информация като версията на DokuWiki, броя и размера на вашите страници и файлове, инсталирани приставки и информация за локалната инсталация на PHP.
 
-Изходните данни са показано по-долу във вида, в който ще бъдат изпратени. Моля ползвайте сьответния бутон, за да изпратите тази информация.
\ No newline at end of file
+Данните, които ще бъдат изпратени са изобразени отдолу. Моля, натиснете бутона "Изпращане на данните", за да бъдат изпратени.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/bg/lang.php b/lib/plugins/popularity/lang/bg/lang.php
index adf99a9f575aaffede441f37ecd3419c3a30c45f..ba731c0fca53ae753751b5d36138cab17bc9a05b 100644
--- a/lib/plugins/popularity/lang/bg/lang.php
+++ b/lib/plugins/popularity/lang/bg/lang.php
@@ -3,6 +3,12 @@
  * Bulgarian language file
  *
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
-$lang['name']                  = 'Обратна връзка за популярност (може да отнеме известно време за зареждане)';
-$lang['submit']                = 'Прати данните';
+$lang['name']                  = 'Обратна връзка (зареждането изисква време)';
+$lang['submit']                = 'Изпращане на данните';
+$lang['autosubmit']            = 'Автоматично изпращане на данните веднъж в месеца';
+$lang['submissionFailed']      = 'Данните не могат да бъдат изпратени поради следната грешка:';
+$lang['submitDirectly']        = 'Можете да изпратите данните ръчно чрез следния формуляр.';
+$lang['autosubmitError']       = 'Последното автоматично изпращане се провали, поради следната грешка:';
+$lang['lastSent']              = 'Данните са изпратени';
diff --git a/lib/plugins/popularity/lang/bg/submitted.txt b/lib/plugins/popularity/lang/bg/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3ecd24f96891d17c19dca6ce79e3789118e99fbf
--- /dev/null
+++ b/lib/plugins/popularity/lang/bg/submitted.txt
@@ -0,0 +1,3 @@
+====== Обратна връзка ======
+
+Данните са изпратени успешно.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/el/lang.php b/lib/plugins/popularity/lang/el/lang.php
index 0d16bbf8634fdd733e73df24ea7473982b8f5939..41704fa062abf216e150b0fd599e746cdde6e560 100644
--- a/lib/plugins/popularity/lang/el/lang.php
+++ b/lib/plugins/popularity/lang/el/lang.php
@@ -7,3 +7,8 @@
  */
 $lang['name']                  = 'Αναφορά Δημοτικότητας (ίσως αργήσει λίγο να εμφανιστεί)';
 $lang['submit']                = 'Αποστολή Δεδομένων';
+$lang['autosubmit']            = 'Να αποστέλονται τα δεδομένα αυτόματα μια φορά το μήνα.';
+$lang['submissionFailed']      = 'Τα δεδομένα δεν ήταν δυνατό να αποσταλλούν λόγω του παρακάτω σφάλματος:';
+$lang['submitDirectly']        = 'Μπορείτε να αποστείλλετε τα δεδομένα χειροκίνητα με την υποβολή της παρακάτω φόρμας.';
+$lang['autosubmitError']       = 'Η τελευταία αυτόματη υποβολή των δεδομένων απέτυχε με το παρακάτω μήνυμα σφάλματος:';
+$lang['lastSent']              = 'Τα δεδομένα έχουν σταλεί.';
diff --git a/lib/plugins/popularity/lang/el/submitted.txt b/lib/plugins/popularity/lang/el/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8004f99970368f49ef638d834820691fbe62b483
--- /dev/null
+++ b/lib/plugins/popularity/lang/el/submitted.txt
@@ -0,0 +1,3 @@
+====== Αποτέλεσμα Υποβολής Δημοσιότητας ======
+
+Τα δεδομένα στάλθηκαν επιτυχώς.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/fr/lang.php b/lib/plugins/popularity/lang/fr/lang.php
index 5ddd074a72a7e5c49a9a81a5fc524d6c4e7a2fe4..9aaf3c7d2ae00cd3830f54f3b1edf94df622ad17 100644
--- a/lib/plugins/popularity/lang/fr/lang.php
+++ b/lib/plugins/popularity/lang/fr/lang.php
@@ -12,6 +12,12 @@
  * @author Philippe Bajoit <philippe.bajoit@gmail.com>
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
  */
-$lang['name']                  = 'Enquête de popularité (peut nécessiter un certain temps pour être chargé)';
+$lang['name']                  = 'Enquête de popularité (peut nécessiter un certain temps pour être chargée)';
 $lang['submit']                = 'Envoyer les données';
+$lang['autosubmit']            = 'Envoyer les données automatiquement chaque mois';
+$lang['submissionFailed']      = 'Les données ne peuvent pas être envoyées à cause des erreurs suivantes :';
+$lang['submitDirectly']        = 'Vous pouvez envoyer le données manuellement  en soumettant ce formulaire.';
+$lang['autosubmitError']       = 'La dernière soumission automatique a échoué pour les raisons suivantes :';
+$lang['lastSent']              = 'Les données ont été envoyées';
diff --git a/lib/plugins/popularity/lang/fr/submitted.txt b/lib/plugins/popularity/lang/fr/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bc4cfe7160ca5c5c8fcb21923b4e5860ccbe38b
--- /dev/null
+++ b/lib/plugins/popularity/lang/fr/submitted.txt
@@ -0,0 +1,2 @@
+====== Enquête de popularité ======
+Les données ont été envoyées avec succès.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/it/intro.txt b/lib/plugins/popularity/lang/it/intro.txt
index 62303eca7df8acb79830bce4c89256f493508fee..f65310a5a4acf7bb3dfde9665084ebcf4fab836e 100644
--- a/lib/plugins/popularity/lang/it/intro.txt
+++ b/lib/plugins/popularity/lang/it/intro.txt
@@ -2,8 +2,8 @@
 
 Questo strumento raccoglie dati anonimi sul tuo wiki e ti permette di inviarli agli sviluppatori di Dokuwiki. Questo aiuta loro a capire come Dokuwiki viene utilizzato dagli utenti e prendere decisioni future sullo sviluppo in base a quelle che sono le reali statistiche di utilizzo da parte degli utenti.
 
-Ti incoraggiamo a ripetere questa operazione al più spesso per mantenere informati gli sviluppatori sulla crescita del tuo wiki. L'insieme dei dati raccolti saranno identificati tramite un ID anonimo.
+Ti incoraggiamo a ripetere ogni tanto questa operazione per mantenere informati gli sviluppatori sulla crescita del tuo wiki. L'insieme dei dati raccolti saranno identificati tramite un ID anonimo.
 
-I dati raccolti contengono informazioni come la versione di DokuWiki, il numero e le dimensioni delle pagine e dei files, i plugins installati e qualche informazione sulla versione di PHP presente nel sistema.
+I dati raccolti contengono informazioni come la versione di DokuWiki, il numero e le dimensioni delle pagine e dei file, i plugin installati e informazioni sulla versione di PHP presente nel sistema.
 
-A continuazione puoi vedere un'anteprima dei dati che saranno inviati. Utilizza il tasto "Invia dati" per trasferire le informazioni.
\ No newline at end of file
+A continuazione puoi vedere un'anteprima dei dati che saranno inviati. Utilizza il pulsante "Invia dati" per trasferire le informazioni.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/it/lang.php b/lib/plugins/popularity/lang/it/lang.php
index 583dfae264c2c4e8ab6df518b767084248c04f95..a7852f22cf226e9a35dafe64ce779c1471400f0c 100644
--- a/lib/plugins/popularity/lang/it/lang.php
+++ b/lib/plugins/popularity/lang/it/lang.php
@@ -8,6 +8,12 @@
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  */
 $lang['name']                  = 'Raccolta dati sul wiki (può impiegare del tempo per caricarsi)';
 $lang['submit']                = 'Invia dati';
+$lang['autosubmit']            = 'Invia automaticamente i dati una volta al mese';
+$lang['submissionFailed']      = 'È stato impossibile inviare i dati a causa del seguente errore:';
+$lang['submitDirectly']        = 'È possibile inviare i dati manualmente utilizzando il pulsante sottostante.';
+$lang['autosubmitError']       = 'L\'ultimo invio automatico non è andato a buon fine a causa del seguente errore:';
+$lang['lastSent']              = 'I dati sono stati inviati';
diff --git a/lib/plugins/popularity/lang/it/submitted.txt b/lib/plugins/popularity/lang/it/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..78247154e2d4a6e802952cd2ff91ba270e35cc2c
--- /dev/null
+++ b/lib/plugins/popularity/lang/it/submitted.txt
@@ -0,0 +1,3 @@
+====== Raccolta dati sul wiki ======
+
+I dati sono stati inviati correttamente.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/nl/intro.txt b/lib/plugins/popularity/lang/nl/intro.txt
index 92962944b7876cd1fefc0c7ff21f6f939066dffa..3c045c427741f764095d9805015092bf0d0b8b16 100644
--- a/lib/plugins/popularity/lang/nl/intro.txt
+++ b/lib/plugins/popularity/lang/nl/intro.txt
@@ -1,9 +1,9 @@
 ====== Populariteitsfeedback ======
 
-Dit onderdeel verzamelt anonieme gegevens over je wiki en stelt je in staat deze te versturen naar de ontwikkelaars van DokuWiki.  Dit helpt hen te begrijpen hoe DokuWiki wordt gebruikt door de gebruikers en zorgt er ook voor dat toekomstige ontwikkelkeuzes kunnen worden gestaafd door echte gebruikersstatistieken.
+Dit onderdeel verzamelt anonieme gegevens over uw wiki en stelt u in staat deze te versturen naar de ontwikkelaars van DokuWiki.  Dit helpt hen te begrijpen hoe DokuWiki wordt gebruikt door de gebruikers en zorgt er ook voor dat toekomstige ontwikkelkeuzes kunnen worden gestaafd door echte gebruikersstatistieken.
 
-U wordt verzocht deze stap van tijd tot tijd te herhalen om ontwikkelaars op de hoogte te houden terwijl je wiki groeit. De herhaalde data zal worden geïdentificeerd door een uniek, anoniem ID.
+U wordt verzocht deze stap van tijd tot tijd te herhalen om ontwikkelaars op de hoogte te houden terwijl uw wiki groeit. De herhaalde data zal worden geïdentificeerd door een uniek, anoniem ID.
 
-De verzamelde gegevens bevat onder andere gegevens over je versie van DokuWiki, het aantal- en de grootte van de pagina's en bestanden, geïnstalleerde plugins en informatie over PHP.
+De verzamelde gegevens bevat onder andere gegevens over uw versie van DokuWiki, het aantal- en de grootte van de pagina's en bestanden, geïnstalleerde plugins en informatie over PHP.
 
 De ruwe data die verzonden worden staan hieronder. Gebruik de knop "Verstuur" om de informatie te verzenden.
diff --git a/lib/plugins/popularity/lang/nl/lang.php b/lib/plugins/popularity/lang/nl/lang.php
index 54e12ae91173b24e352f637de44652a51f750b4c..0a8386f42b87bdfae4894220a73f982b7636647a 100644
--- a/lib/plugins/popularity/lang/nl/lang.php
+++ b/lib/plugins/popularity/lang/nl/lang.php
@@ -13,3 +13,8 @@
  */
 $lang['name']                  = 'Populariteitsfeedback (kan even duren om in te laden)';
 $lang['submit']                = 'Verstuur';
+$lang['autosubmit']            = 'Gegevens automatisch maandelijks verzenden';
+$lang['submissionFailed']      = 'De gegevens konden niet verstuurd worden vanwege de volgende fouten:';
+$lang['submitDirectly']        = 'Je kan de gegevens handmatig sturen door het onderstaande formulier te verzenden.';
+$lang['autosubmitError']       = 'De laatste automatische verzending is mislukt vanwege de volgende fout:';
+$lang['lastSent']              = 'De gegevens zijn verstuurd.';
diff --git a/lib/plugins/popularity/lang/nl/submitted.txt b/lib/plugins/popularity/lang/nl/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..219d80fb64e43e83e30a981d5041b6567e5e4011
--- /dev/null
+++ b/lib/plugins/popularity/lang/nl/submitted.txt
@@ -0,0 +1,3 @@
+===== Populariteitsfeedback =====
+
+Het versturen van de gegevens is gelukt.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/pt/lang.php b/lib/plugins/popularity/lang/pt/lang.php
index da92ee729f095370f53340155360df9ba21d5209..35fac0fc02125ec997fd02bfe3657d3b134d7957 100644
--- a/lib/plugins/popularity/lang/pt/lang.php
+++ b/lib/plugins/popularity/lang/pt/lang.php
@@ -8,3 +8,7 @@
  */
 $lang['name']                  = 'Retorno (feedback) de Popularidade (pode levar algum tempo a carregar)';
 $lang['submit']                = 'Enviar Dados';
+$lang['autosubmit']            = 'Enviar dados automáticamente uma vez por mês';
+$lang['submissionFailed']      = 'Os dados não foram enviados devido ao seguinte erro:';
+$lang['submitDirectly']        = 'Pode enviar os dados manualmente, submetendo o seguinte formulário.';
+$lang['lastSent']              = 'Os dados foram enviados';
diff --git a/lib/plugins/popularity/lang/pt/submitted.txt b/lib/plugins/popularity/lang/pt/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d2bb2b7aee8581ac904730287c2811ababa1049c
--- /dev/null
+++ b/lib/plugins/popularity/lang/pt/submitted.txt
@@ -0,0 +1,3 @@
+====== Retorno de Popularidade ======
+
+Os dados foram enviados com sucesso.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/ru/lang.php b/lib/plugins/popularity/lang/ru/lang.php
index b63558134cffa84c1955b8ea8b66dde51ba8c62d..79b3e224de1bdd8ef0536771c3915de68001b53b 100644
--- a/lib/plugins/popularity/lang/ru/lang.php
+++ b/lib/plugins/popularity/lang/ru/lang.php
@@ -11,6 +11,8 @@
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['name']                  = 'Сбор информации о популярности (для загрузки может потребоваться некоторое время)';
 $lang['submit']                = 'Отправить данные';
diff --git a/lib/plugins/popularity/lang/ru/submitted.txt b/lib/plugins/popularity/lang/ru/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a239943a4bd0e181d30f8b4cd4c83cda02811ac0
--- /dev/null
+++ b/lib/plugins/popularity/lang/ru/submitted.txt
@@ -0,0 +1,2 @@
+====== Общественная обратная связь ======
+Данные были успешно отправлены.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/sl/lang.php b/lib/plugins/popularity/lang/sl/lang.php
index dc81ec060697c97800a9fad594566fc34f7e8385..2191d7597944718f016d042d7b9733da6360d17f 100644
--- a/lib/plugins/popularity/lang/sl/lang.php
+++ b/lib/plugins/popularity/lang/sl/lang.php
@@ -5,5 +5,6 @@
  * @author Dejan Levec <webphp@gmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
  */
 $lang['submit']                = 'Pošlji';
diff --git a/lib/plugins/popularity/lang/sv/lang.php b/lib/plugins/popularity/lang/sv/lang.php
index 10e71b790e89f852256194e22c6d5a80c3bb1513..b461a95cf02bd5e017c03a2335c17223a3b11ba4 100644
--- a/lib/plugins/popularity/lang/sv/lang.php
+++ b/lib/plugins/popularity/lang/sv/lang.php
@@ -15,3 +15,8 @@
  */
 $lang['name']                  = 'Popularitets-feedback (det kan ta en stund att ladda sidan)';
 $lang['submit']                = 'Sänd data';
+$lang['autosubmit']            = 'Skicka data automatiskt varje månad';
+$lang['submissionFailed']      = 'Datan kunde inte skickas för att:';
+$lang['submitDirectly']        = 'Du kan skicka datan manuellt genom att fylla i följande formulär.';
+$lang['autosubmitError']       = 'Senaste automatiska sändning av datan misslyckades för att:';
+$lang['lastSent']              = 'Datan har skickats';
diff --git a/lib/plugins/popularity/lang/sv/submitted.txt b/lib/plugins/popularity/lang/sv/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fb8eab7733cf1d151d672b806741453db2e0b670
--- /dev/null
+++ b/lib/plugins/popularity/lang/sv/submitted.txt
@@ -0,0 +1,3 @@
+====== Popularitetsfeedback ======
+
+Datan har skickats utan problem.
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/zh-tw/intro.txt b/lib/plugins/popularity/lang/zh-tw/intro.txt
index 54444afc04df3b24a18ab63c7f43a1df06daeb5e..37c63dcedfb99f85218ca6704db452a5275e75e9 100644
--- a/lib/plugins/popularity/lang/zh-tw/intro.txt
+++ b/lib/plugins/popularity/lang/zh-tw/intro.txt
@@ -1,9 +1,10 @@
-====== 人氣反饋 ======
+====== 人氣回饋 ======
 
-本工具收集關於您維基站點的匿名信息,並允許您將其發送給 DokuWiki 的開發者。這樣做有助於我們了解用戶是如何使用 DokuWiki 的,並能使我們未來的開發決策建立在現實使用數據上。
+本工具會從您的維基站台收集訊息,並以匿名的方式發送給 DokuWiki 的開發者。這有助於他們了解使用者們如何使用 DokuWiki ,並能基於實際統計資料對未來開發做出更準確的決策。
 
-我們鼓勵您不時重復該步驟,以便我們能了解您的維基站點發展進度。您的數據集將被匿名 ID 標識。
+我們鼓勵您經常重複這個步驟,讓開發者了解您的維基站台的成長情形。您的資料集將會被標識為一個匿名的識別碼 (ID)。
 
-收集的數據包括 DokuWiki 版本、您的頁面數量以及文件大小、已安裝的插件、服務器上的 PHP 相關信息。
+收集的資料包括 DokuWiki 版本、頁面數量、檔案大小、安裝的插件、伺服器的 PHP 資訊。
+
+將被發送的原始資料顯示如下。請點擊「發送資料」按鈕進行傳輸。
 
-將被發送的原始數據如下所示。請點擊“發送數據”按扭進行傳輸。
\ No newline at end of file
diff --git a/lib/plugins/popularity/lang/zh-tw/lang.php b/lib/plugins/popularity/lang/zh-tw/lang.php
index 4757ab84b2daba1a4b796c1fca7a50d6db386d1b..cc96300eec76fe24d2793785e6f63a77a920d7c2 100644
--- a/lib/plugins/popularity/lang/zh-tw/lang.php
+++ b/lib/plugins/popularity/lang/zh-tw/lang.php
@@ -7,6 +7,7 @@
  * @author Wayne San <waynesan@zerozone.tw>
  * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin
  */
-$lang['name']                  = '人氣反饋(載入可能需要一些時間)';
-$lang['submit']                = '發送數據';
+$lang['name']                  = '人氣回饋(載入可能需要一些時間)';
+$lang['submit']                = '發送資料';
diff --git a/lib/plugins/popularity/lang/zh/lang.php b/lib/plugins/popularity/lang/zh/lang.php
index 191b9c1af7cf8b3ecc72ca28bcca9ee5b9b3370e..371a8fddb5108b35ae3984422f54c11b74ea6288 100644
--- a/lib/plugins/popularity/lang/zh/lang.php
+++ b/lib/plugins/popularity/lang/zh/lang.php
@@ -10,6 +10,12 @@
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['name']                  = '人气反馈(载入可能需要一些时间)';
 $lang['submit']                = '发送数据';
+$lang['autosubmit']            = '每月自动发送';
+$lang['submissionFailed']      = '数据由于以下原因不恩你给发送:';
+$lang['submitDirectly']        = '你可以手动提交下面的表单来发送数据。';
+$lang['autosubmitError']       = '印以下原因,上一次自动提交失败:';
+$lang['lastSent']              = '数据已发送';
diff --git a/lib/plugins/popularity/lang/zh/submitted.txt b/lib/plugins/popularity/lang/zh/submitted.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6039b70e13818f2b748f44f3b71a29da4707c350
--- /dev/null
+++ b/lib/plugins/popularity/lang/zh/submitted.txt
@@ -0,0 +1,3 @@
+====== 人气反馈 ======
+
+数据发送成功。
\ No newline at end of file
diff --git a/lib/plugins/revert/lang/bg/intro.txt b/lib/plugins/revert/lang/bg/intro.txt
index ab7308d6d9a6115e5843ea45cd356e43b9cfb481..791c96857c644bfb420c572f96692f5cd284b7c1 100644
--- a/lib/plugins/revert/lang/bg/intro.txt
+++ b/lib/plugins/revert/lang/bg/intro.txt
@@ -1,4 +1,4 @@
 ====== Възстановяване ======
 
-Тази страница помага при автоматичното възстановяване от спам-атака. За да намерите списък със спамнати страници, въведете текст за търсене(пр. спам препратка), след това потвърдете, че намерените страници са наистина спам и възстановете редакциите.
+Страницата помага за автоматично възстановяване след SPAM атака. За да намерите списък със спамнати страници, въведете текст за търсене (напр. линк от SPAM съобщението), след това потвърдете, че намерените страници са наистина SPAM и възстановете старите версии.
 
diff --git a/lib/plugins/revert/lang/bg/lang.php b/lib/plugins/revert/lang/bg/lang.php
index 6f0ff067285c37f93ccce60e0b93ca4e38ff9e9f..0819de01a2a27c7ba651f60e2b9e8300017f85c0 100644
--- a/lib/plugins/revert/lang/bg/lang.php
+++ b/lib/plugins/revert/lang/bg/lang.php
@@ -3,13 +3,14 @@
  * bulgarian language file
  * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
 $lang['menu']                  = 'Възстановяване';
-$lang['filter']                = 'Търсене на спамната страници';
-$lang['revert']                = 'Избрани страници за възстановяване';
-$lang['reverted']              = '%s върнат до версия %s';
-$lang['removed']               = '%s премахнат';
+$lang['filter']                = 'Търсене на спамнати страници';
+$lang['revert']                = 'Възстанови избраните страници';
+$lang['reverted']              = '%s върната до версия %s';
+$lang['removed']               = '%s премахната';
 $lang['revstart']              = 'Процесът на възстановяване започна. Това може да отнеме много време. Ако скриптът се просрочи преди да завърши, трябва да възстановявате на по-малки парчета.';
 $lang['revstop']               = 'Процесът на възстановяване завърши успешно.';
-$lang['note1']                 = 'Забележка: за търсенето имат значение малки/големи букви';
-$lang['note2']                 = 'Забележка: страницата ще бъде възвърната без да съдържа спам терминът <i>%s</i>.';
+$lang['note1']                 = 'Бележка: при търсенето се различават малки от големи букви';
+$lang['note2']                 = 'Бележка: страницата ще бъде върната към стара версия без SPAM терминa <i>%s</i>.';
diff --git a/lib/plugins/revert/lang/fr/lang.php b/lib/plugins/revert/lang/fr/lang.php
index d80ece209a9ee6fd054032a13998286d99e73250..d6dc3ee3d157b756c79e076cdb959ab84322228e 100644
--- a/lib/plugins/revert/lang/fr/lang.php
+++ b/lib/plugins/revert/lang/fr/lang.php
@@ -13,6 +13,7 @@
  * @author Philippe Bajoit <philippe.bajoit@gmail.com>
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
  */
 $lang['menu']                  = 'Gestionnaire de réversions';
 $lang['filter']                = 'Trouver les pages spammées ';
diff --git a/lib/plugins/revert/lang/it/lang.php b/lib/plugins/revert/lang/it/lang.php
index 319493acd83dc18ec21a30815b8ce18b8b3a44c7..79565655bf1ff70f61f9bd4d0b8b6b1e6cd6426a 100644
--- a/lib/plugins/revert/lang/it/lang.php
+++ b/lib/plugins/revert/lang/it/lang.php
@@ -9,6 +9,7 @@
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  */
 $lang['menu']                  = 'Gestore di ripristini';
 $lang['filter']                = 'Cerca pagine con spam';
diff --git a/lib/plugins/revert/lang/ru/lang.php b/lib/plugins/revert/lang/ru/lang.php
index 712a41f08cec0bf41e51067fda2bdb4ca75113a3..9624d8fd601e51966458ce742697ebfce8668d22 100644
--- a/lib/plugins/revert/lang/ru/lang.php
+++ b/lib/plugins/revert/lang/ru/lang.php
@@ -12,6 +12,8 @@
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['menu']                  = 'Менеджер откаток';
 $lang['filter']                = 'Поиск спам-страниц';
diff --git a/lib/plugins/revert/lang/sl/lang.php b/lib/plugins/revert/lang/sl/lang.php
index 57ae9d0927692e04c6d81cd9d29a9ee9958d0712..9d249edbd380c36b93d5f059d3143b77fc3ec73a 100644
--- a/lib/plugins/revert/lang/sl/lang.php
+++ b/lib/plugins/revert/lang/sl/lang.php
@@ -5,4 +5,5 @@
  * @author Dejan Levec <webphp@gmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
  */
diff --git a/lib/plugins/revert/lang/zh-tw/intro.txt b/lib/plugins/revert/lang/zh-tw/intro.txt
index 2aad10206395d70a013e6fc8bdfecc669cfa1ac3..17632b1ddef39df5b2e56126936093f1866eb7e7 100644
--- a/lib/plugins/revert/lang/zh-tw/intro.txt
+++ b/lib/plugins/revert/lang/zh-tw/intro.txt
@@ -1,3 +1,3 @@
 ====== 還原管理器 ======
 
-該頁面能幫助您的頁面從垃圾信息的攻擊中自動還原過來。 請先輸入關鍵詞搜索包含垃圾信息的頁面(如某個垃圾信息的 URL),然后請確定搜索結果的確包含垃圾信息,並將其還原至先前的修訂版。
+本頁面能幫助您自動還原被垃圾訊息攻擊的頁面過來。先輸入關鍵字詞搜尋包含垃圾訊息的頁面(如垃圾訊息的 URL),確認找到的頁面確實包含垃圾訊息,再將它們還原。
diff --git a/lib/plugins/revert/lang/zh-tw/lang.php b/lib/plugins/revert/lang/zh-tw/lang.php
index 40a137dc0220fcfadb80a965d092d1caf21ec20a..68fd3dce54b321c9081e0a62569f0aebdef0de0b 100644
--- a/lib/plugins/revert/lang/zh-tw/lang.php
+++ b/lib/plugins/revert/lang/zh-tw/lang.php
@@ -7,13 +7,19 @@
  * @author Wayne San <waynesan@zerozone.tw>
  * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin <danny0838@pchome.com.tw>
  */
+
+// 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']                  = '還原管理';
-$lang['filter']                = '搜索包含垃圾信息的頁面';
-$lang['revert']                = '還原所選的頁面';
-$lang['reverted']              = '%s已還原到版本%s';
-$lang['removed']               = '%s已移除';
-$lang['revstart']              = '已開始還原操作。有可能需要很長時間。如果計時器在還原操作完成前停止了,請嘗試還原較少的內容。';
-$lang['revstop']               = '還原程序已成工的完成。';
-$lang['note1']                 = '注意: 搜尋有分大小寫';
-$lang['note2']                 = '注意: 此頁將會被還原到不包含給予的spam term <i>%s</i> 的最新版本.';
+
+// custom language strings for the plugin
+$lang['filter']                = '搜索包含垃圾訊息的頁面';
+$lang['revert']                = '還原選取的頁面';
+$lang['reverted']              = '%s 已還原為版本 %s';
+$lang['removed']               = '%s 已移除';
+$lang['revstart']              = '已開始還原操作。有可能需要很長時間。如果程式執行逾時,請嘗試分次還原少量內容。';
+$lang['revstop']               = '還原程序已成功完成。';
+$lang['note1']                 = '注意:搜尋區分大小寫';
+$lang['note2']                 = '注意:此頁面將被還原為最後一個不含垃圾訊息 <i>%s</i> 的版本。';
diff --git a/lib/plugins/revert/lang/zh/lang.php b/lib/plugins/revert/lang/zh/lang.php
index 5ff1ed426739df9fc7ed87699911deeac20afcac..8ba6264326d2e9a9175fcfd44b2791aabf23a6ca 100644
--- a/lib/plugins/revert/lang/zh/lang.php
+++ b/lib/plugins/revert/lang/zh/lang.php
@@ -11,6 +11,7 @@
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['menu']                  = '还原管理器';
 $lang['filter']                = '搜索包含垃圾信息的页面';
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index df13f65e384add5055dd624e1fec12507773c2b9..e40ee9b7e69a58aa6bd05c8e2d1f2b5edc64d8e2 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -562,16 +562,19 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
      * @return  array(user, password, full name, email, array(groups))
      */
     function _retrieveUser($clean=true) {
+        global $auth;
 
-        $user[0] = ($clean) ? cleanID(preg_replace('/.*:/','',$_REQUEST['userid'])) : $_REQUEST['userid'];
+        $user[0] = ($clean) ? $auth->cleanUser($_REQUEST['userid']) : $_REQUEST['userid'];
         $user[1] = $_REQUEST['userpass'];
         $user[2] = $_REQUEST['username'];
         $user[3] = $_REQUEST['usermail'];
-        $user[4] = preg_split('/\s*,\s*/',$_REQUEST['usergroups'],-1,PREG_SPLIT_NO_EMPTY);
+        $user[4] = explode(',',$_REQUEST['usergroups']);
 
-        if (empty($user[4]) || (is_array($user[4]) && (count($user[4]) == 1) && (trim($user[4][0]) == ''))) {
-            $user[4] = null;
-        }
+        $user[4] = array_map('trim',$user[4]);
+        if($clean) $user[4] = array_map(array($auth,'cleanGroup'),$user[4]);
+        $user[4] = array_filter($user[4]);
+        $user[4] = array_unique($user[4]);
+        if(!count($user[4])) $user[4] = null;
 
         return $user;
     }
diff --git a/lib/plugins/usermanager/images/search.png b/lib/plugins/usermanager/images/search.png
index 1aa445f037cbf2d88f9e0317d3e0824d6e0811e8..e9dabc11ec18b16b320a6a3caed01bf46539ad00 100644
Binary files a/lib/plugins/usermanager/images/search.png and b/lib/plugins/usermanager/images/search.png differ
diff --git a/lib/plugins/usermanager/lang/bg/lang.php b/lib/plugins/usermanager/lang/bg/lang.php
index 58c8453f244fcf05bc7914e0507f75f52883c140..909c1e8fea17290410f1206ff4043924eb2dbdbc 100644
--- a/lib/plugins/usermanager/lang/bg/lang.php
+++ b/lib/plugins/usermanager/lang/bg/lang.php
@@ -4,11 +4,12 @@
  *
  * @author Nikolay Vladimirov <nikolay@vladimiroff.com>
  * @author Viktor Usunov <usun0v@mail.bg>
+ * @author Kiril <neohidra@gmail.com>
  */
-$lang['menu']                  = 'Управление на потребителите';
-$lang['noauth']                = '(идентифицирането на потребителите е недостъпно)';
-$lang['nosupport']             = '(не се поддържа управление на потребители)';
-$lang['badauth']               = 'невалиден механизъм при идентификация';
+$lang['menu']                  = 'Диспечер на потребителите';
+$lang['noauth']                = '(удостоверяването на потребители не е налично)';
+$lang['nosupport']             = '(управлението на потребители не се поддържа)';
+$lang['badauth']               = 'невалиден механизъм за удостоверяване';
 $lang['user_id']               = 'Потребител';
 $lang['user_pass']             = 'Парола';
 $lang['user_name']             = 'Истинско име';
@@ -16,33 +17,33 @@ $lang['user_mail']             = 'Електронна поща';
 $lang['user_groups']           = 'Групи';
 $lang['field']                 = 'Поле';
 $lang['value']                 = 'Стойност';
-$lang['add']                   = 'Добавяне';
-$lang['delete']                = 'Изтриване';
-$lang['delete_selected']       = 'Изтриване на избраните';
-$lang['edit']                  = 'Редактиране';
+$lang['add']                   = 'Добави';
+$lang['delete']                = 'Изтрий';
+$lang['delete_selected']       = 'Изтрий избраните';
+$lang['edit']                  = 'Редактирай';
 $lang['edit_prompt']           = 'Редактиране на потребителя';
-$lang['modify']                = 'Запис на промените';
+$lang['modify']                = 'Запиши промените';
 $lang['search']                = 'Търсене';
-$lang['search_prompt']         = 'Търсене';
+$lang['search_prompt']         = 'Търси';
 $lang['clear']                 = 'Обновяване на търсенето';
 $lang['filter']                = 'Филтър';
-$lang['summary']               = 'Показване на потребители %1$d-%2$d от %3$d намерени. %4$d потребители общо.';
-$lang['nonefound']             = 'Няма намерени потребители. Общо %d потребители.';
-$lang['delete_ok']             = '%d потребители изтрити';
-$lang['delete_fail']           = '%d не бяха изтрити';
-$lang['update_ok']             = 'Обновяването на потребителя бе успешно';
-$lang['update_fail']           = 'Обновяването на потребителя бе неуспешно';
-$lang['update_exists']         = 'Смяната на потребителското име бе невъзможна, оказаното потребителско име (%s) вече съществува (всякакви други промени ще бъдат приложени).';
+$lang['summary']               = 'Показване на потребители %1$d-%2$d от %3$d намерени. Общо %4$d потребителя.';
+$lang['nonefound']             = 'Не са намерени потребители. Общо %d потребителя.';
+$lang['delete_ok']             = '%d изтрити потребителя';
+$lang['delete_fail']           = 'изтриването на %d се провали.';
+$lang['update_ok']             = 'Обновяването на потребителя е успешно';
+$lang['update_fail']           = 'Обновяването на потребителя се провали';
+$lang['update_exists']         = 'Смяната на потребителското име се провали, въведеното потребителско име (%s) вече съществува (всички други промени ще бъдат приложени).';
 $lang['start']                 = 'начало';
-$lang['prev']                  = 'предишно';
-$lang['next']                  = 'следващо';
-$lang['last']                  = 'последно';
-$lang['edit_usermissing']      = 'Избраният потребител не бе намерен, оказаното потребителско име може да е изтрито или променено другаде.';
-$lang['user_notify']           = 'Осведомяване на потребителя';
-$lang['note_notify']           = 'Осведомителната e-поща се праща само, ако на потребителя е дадена нова парола.';
-$lang['note_group']            = 'Новите потребители ще бъдат добавяни към групата (%s) ако не бъде посочена друга.';
-$lang['note_pass']             = 'Паролата ще бъде генерирана автоматично, ако полето е оставено празно и функцията за уведомяване на потребителя е включена.';
-$lang['add_ok']                = 'Добавянето на потребителя бе успешно';
-$lang['add_fail']              = 'Добавянето на потребителя бе неуспешно';
+$lang['prev']                  = 'назад';
+$lang['next']                  = 'напред';
+$lang['last']                  = 'край';
+$lang['edit_usermissing']      = 'Избраният потребител не е намерен, въведеното потребителско име може да е изтрито или променено другаде.';
+$lang['user_notify']           = 'Уведомяване на потребителя';
+$lang['note_notify']           = 'Ел. писмо се изпраща само ако бъде променена паролата на потребителя.';
+$lang['note_group']            = 'Новите потребители биват добавяни към стандартната групата (%s) ако не е посочена друга.';
+$lang['note_pass']             = 'Паролата ще бъде генерирана автоматично, ако оставите полето празно и функцията за уведомяване на потребителя е включена.';
+$lang['add_ok']                = 'Добавянето на потребителя е успешно';
+$lang['add_fail']              = 'Добавянето на потребителя се провали';
 $lang['notify_ok']             = 'Осведомително е-писмо бе изпратено';
 $lang['notify_fail']           = 'Пращането на осведомително е-писмо е невъзможно';
diff --git a/lib/plugins/usermanager/lang/fr/lang.php b/lib/plugins/usermanager/lang/fr/lang.php
index 92bc127ed177032c9832af2baf7984eafc53ebe4..49baf9d514dea53987db229715ab2ddcd83c5a2c 100644
--- a/lib/plugins/usermanager/lang/fr/lang.php
+++ b/lib/plugins/usermanager/lang/fr/lang.php
@@ -14,6 +14,7 @@
  * @author Philippe Bajoit <philippe.bajoit@gmail.com>
  * @author Florian Gaub <floriang@floriang.net>
  * @author Samuel Dorsaz samuel.dorsaz@novelion.net
+ * @author Johan Guilbaud <guilbaud.johan@gmail.com>
  */
 $lang['menu']                  = 'Gestion des utilisateurs';
 $lang['noauth']                = '(authentification utilisateur non disponible)';
diff --git a/lib/plugins/usermanager/lang/it/lang.php b/lib/plugins/usermanager/lang/it/lang.php
index a766e5d07702375409d26c8ec6a4494e56f9f067..34c510def6520a5e49d9facfdecf3e1e40e3f52e 100644
--- a/lib/plugins/usermanager/lang/it/lang.php
+++ b/lib/plugins/usermanager/lang/it/lang.php
@@ -11,6 +11,7 @@
  * @author snarchio@alice.it
  * @author robocap <robocap1@gmail.com>
  * @author Osman Tekin osman.tekin93@hotmail.it
+ * @author Jacopo Corbetta <jacopo.corbetta@gmail.com>
  */
 $lang['menu']                  = 'Gestione Utenti';
 $lang['noauth']                = '(autenticazione non disponibile)';
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index d7a0591abcf840fd9b430430520fdda07a68e664..456ba5b2999343ab80453071fb20ec53d3a70309 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -14,6 +14,8 @@
  * @author Vlad Tsybenko <vlad.development@gmail.com>
  * @author Aleksey Osadchiy <rfc@nm.ru>
  * @author Aleksandr Selivanov <alexgearbox@gmail.com>
+ * @author Ladyko Andrey <fylh@succexy.spb.ru>
+ * @author Eugene <windy.wanderer@gmail.com>
  */
 $lang['menu']                  = 'Управление пользователями';
 $lang['noauth']                = '(авторизация пользователей недоступна)';
diff --git a/lib/plugins/usermanager/lang/sl/add.txt b/lib/plugins/usermanager/lang/sl/add.txt
index 985fa607e27de3cad34eb45b611672ff5e5f8134..c1d8913b4d76b748df83172807a68fa1a1c555ba 100644
--- a/lib/plugins/usermanager/lang/sl/add.txt
+++ b/lib/plugins/usermanager/lang/sl/add.txt
@@ -1 +1 @@
-===== Dodaj uporabnika =====
\ No newline at end of file
+===== Dodajanje uporabnika =====
\ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/sl/delete.txt b/lib/plugins/usermanager/lang/sl/delete.txt
index 515b343e56e519155b58b611bb460ac8f51e5f3e..7d9de54e68ad75497ec7dfce2b85c3d3fea48ab5 100644
--- a/lib/plugins/usermanager/lang/sl/delete.txt
+++ b/lib/plugins/usermanager/lang/sl/delete.txt
@@ -1 +1 @@
-===== Izbriši uporabnika =====
\ No newline at end of file
+===== Izbrisanje uporabnika =====
\ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/sl/edit.txt b/lib/plugins/usermanager/lang/sl/edit.txt
index 23aeb0c3b74dee22ba9c27ba30dccf1c94d0181d..4ad01441fc33f4d83d30a98bbeecae0aac81d949 100644
--- a/lib/plugins/usermanager/lang/sl/edit.txt
+++ b/lib/plugins/usermanager/lang/sl/edit.txt
@@ -1 +1 @@
-===== Uredi uporabnika =====
\ No newline at end of file
+===== Urejanje uporabnika =====
\ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/sl/lang.php b/lib/plugins/usermanager/lang/sl/lang.php
index b671d65dc0f3f97cc2e1a678e93ecd93c6a3e8f7..ac073b1c9d5d22ab9c5f8172a093416da02268db 100644
--- a/lib/plugins/usermanager/lang/sl/lang.php
+++ b/lib/plugins/usermanager/lang/sl/lang.php
@@ -5,15 +5,16 @@
  * @author Dejan Levec <webphp@gmail.com>
  * @author Boštjan Seničar <senicar@gmail.com>
  * @author Gregor Skumavc (grega.skumavc@gmail.com)
+ * @author Matej Urbančič (mateju@svn.gnome.org)
  */
 $lang['menu']                  = 'Urejanje uporabnikov';
-$lang['noauth']                = '(preverjanje uporabnikov ni na voljo)';
+$lang['noauth']                = '(overjanje istovetnosti uporabnikov ni na voljo)';
 $lang['nosupport']             = '(urejanje uporabnikov ni podprto)';
-$lang['badauth']               = 'neeljaven mehanizem za preverjanje';
+$lang['badauth']               = 'neveljaven način overjanja';
 $lang['user_id']               = 'Uporabnik';
 $lang['user_pass']             = 'Geslo';
 $lang['user_name']             = 'Pravo ime';
-$lang['user_mail']             = 'Email';
+$lang['user_mail']             = 'Elektronski naslov';
 $lang['user_groups']           = 'Skupine';
 $lang['field']                 = 'Polje';
 $lang['value']                 = 'Vrednost';
@@ -24,15 +25,15 @@ $lang['edit']                  = 'Uredi';
 $lang['edit_prompt']           = 'Uredi tega uporabnika';
 $lang['modify']                = 'Shrani spremembe';
 $lang['search']                = 'Iskanje';
-$lang['search_prompt']         = 'Išči';
+$lang['search_prompt']         = 'Poišči';
 $lang['clear']                 = 'Ponastavi filter iskanja';
 $lang['filter']                = 'Filter';
-$lang['summary']               = 'Prikazujem uporabnike %1$d-%2$d od najdenih %3$d. Vseh je %4$d.';
+$lang['summary']               = 'Izpisani so uporabniki %1$d-%2$d od skupno %3$d. Vseh uporabnikov je %4$d.';
 $lang['nonefound']             = 'Ni najdenih uporabnikov. Vseh uporabnikov je %d.';
-$lang['delete_ok']             = '%d uporabnikov izbrisanih';
-$lang['delete_fail']           = '%d ni bilo možno izbrisati';
-$lang['update_ok']             = 'Uporabnik uspešno posodobljen';
-$lang['update_fail']           = 'Posodobitev uporabnika ni uspela';
-$lang['prev']                  = 'Prejšnji';
+$lang['delete_ok']             = '%d uporabnikov je izbrisanih';
+$lang['delete_fail']           = '%d ni bilo mogoče izbrisati';
+$lang['update_ok']             = 'Uporabniški račun je uspešno posodobljen';
+$lang['update_fail']           = 'Posodobitev uporabniškega računa je spodletela';
+$lang['prev']                  = 'Predhodni';
 $lang['next']                  = 'Naslednji';
 $lang['last']                  = 'Zadnji';
diff --git a/lib/plugins/usermanager/lang/zh-tw/intro.txt b/lib/plugins/usermanager/lang/zh-tw/intro.txt
index 9c499d862552721196d23144a42abc4bdf09b0c6..8f9488d7d30a31b2e01b84a6f4d96c34a8a03f9c 100644
--- a/lib/plugins/usermanager/lang/zh-tw/intro.txt
+++ b/lib/plugins/usermanager/lang/zh-tw/intro.txt
@@ -1 +1 @@
-====== 帳號管理員(User Manager) ======
+====== 帳號管理員 ======
diff --git a/lib/plugins/usermanager/lang/zh-tw/lang.php b/lib/plugins/usermanager/lang/zh-tw/lang.php
index 26c87205d27344102d047263623c2e8fa73d1d50..a46492685f2cf0bbf0b7f0427b64435133b2a1a6 100644
--- a/lib/plugins/usermanager/lang/zh-tw/lang.php
+++ b/lib/plugins/usermanager/lang/zh-tw/lang.php
@@ -8,8 +8,9 @@
  * @author Wayne San <waynesan@zerozone.tw>
  * @author Li-Jiun Huang <ljhuang.tw@gmai.com>
  * @author Cheng-Wei Chien <e.cwchien@gmail.com>
+ * @author Danny Lin <danny0838@pchome.com.tw>
  */
-$lang['menu']                  = '帳號管理員(User Manager)';
+$lang['menu']                  = '帳號管理員';
 $lang['noauth']                = '(帳號認證尚未開放)';
 $lang['nosupport']             = '(尚不支援帳號管理)';
 $lang['badauth']               = '錯誤的認證機制';
@@ -28,25 +29,25 @@ $lang['edit_prompt']           = '修改該帳號';
 $lang['modify']                = '儲存變更';
 $lang['search']                = '搜尋';
 $lang['search_prompt']         = '開始搜尋';
-$lang['clear']                 = '重新設定搜尋的條件';
+$lang['clear']                 = '重設篩選條件';
 $lang['filter']                = '篩選條件(Filter)';
-$lang['summary']               = '顯示帳號 %1$d 至 %2$d 共 %3$d 筆符合. 總共有 %4$d 個帳號';
-$lang['nonefound']             = '找不到該用戶(共 %d 帳號)。';
+$lang['summary']               = '顯示帳號 %1$d-%2$d,共 %3$d 筆符合。共有 %4$d 個帳號。';
+$lang['nonefound']             = '找不到帳號。共有 %d 個帳號。';
 $lang['delete_ok']             = '已刪除 %d 個帳號';
 $lang['delete_fail']           = '%d 個帳號刪除失敗';
 $lang['update_ok']             = '成功更新該帳號';
 $lang['update_fail']           = '更新該帳號時失敗';
-$lang['update_exists']         = '變更帳號名稱 (%s) 時失敗,應該是已有同名的帳號,不過除了帳號名稱之外的其他修改仍會儲存。';
+$lang['update_exists']         = '變更帳號名稱 (%s) 失敗,因為有同名帳號存在(其他修改已套用)。';
 $lang['start']                 = 'é–‹å§‹';
-$lang['prev']                  = '上一步';
-$lang['next']                  = '下一步';
-$lang['last']                  = '最後步驟';
-$lang['edit_usermissing']      = '找不到所選的帳號,該帳號可能已經被刪除或是改為其他名稱喔。';
+$lang['prev']                  = '上一頁';
+$lang['next']                  = '下一頁';
+$lang['last']                  = '最後一頁';
+$lang['edit_usermissing']      = '找不到選取的帳號,可能已被刪除或改為其他名稱。';
 $lang['user_notify']           = '通知使用者';
-$lang['note_notify']           = '通知信只有在給予使用者新密碼時寄送。';
+$lang['note_notify']           = '通知信只會在指定使用者新密碼時寄送。';
 $lang['note_group']            = '如果沒有指定群組,新使用者將會被加入到預設群組(%s)當中。';
 $lang['note_pass']             = '如果沒有輸入這個欄位而且有勾選通知使用者,則會自動產生一組密碼。';
 $lang['add_ok']                = '新增使用者成功';
 $lang['add_fail']              = '新增使用者失敗';
 $lang['notify_ok']             = '通知信已寄出';
-$lang['notify_fail']           = '通知信無法被寄出';
+$lang['notify_fail']           = '通知信無法寄出';
diff --git a/lib/plugins/usermanager/lang/zh/lang.php b/lib/plugins/usermanager/lang/zh/lang.php
index 5836d3346987e5c4cb58db172052ce38ed41db95..21bbb710d90145d88964e2a54a98ca2350e7bf7a 100644
--- a/lib/plugins/usermanager/lang/zh/lang.php
+++ b/lib/plugins/usermanager/lang/zh/lang.php
@@ -10,6 +10,7 @@
  * @author ben <ben@livetom.com>
  * @author lainme <lainme993@gmail.com>
  * @author caii <zhoucaiqi@gmail.com>
+ * @author Hiphen Lee <jacob.b.leung@gmail.com>
  */
 $lang['menu']                  = '用户管理器';
 $lang['noauth']                = '(用户认证不可用)';
diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js
index 01262bcefb6071214bf2d13000de40f144860f34..45c1fb111880fa7d862e13fd82514e64c6025921 100644
--- a/lib/scripts/edit.js
+++ b/lib/scripts/edit.js
@@ -268,6 +268,7 @@ var textChanged = false;
  */
 function deleteDraft() {
     if (is_opera) return;
+    if (window.keepDraft) return;
 
     // remove a possibly saved draft using ajax
     var dwform = $('dw__editform');
@@ -318,8 +319,13 @@ addInitEvent(function (){
     window.onunload = deleteDraft;
 
     // reset change memory var on submit
-    addEvent($('edbtn__save'), 'click', function(){ textChanged = false; });
-    addEvent($('edbtn__preview'), 'click', function(){ textChanged = false; });
+    addEvent($('edbtn__save'), 'click', function(){
+        textChanged = false;
+    });
+    addEvent($('edbtn__preview'), 'click', function(){
+        textChanged = false;
+        window.keepDraft = true; // needed to keep draft on page unload
+    });
 
     var summary = $('edit__summary');
     addEvent(summary, 'change', summaryCheck);
@@ -341,104 +347,3 @@ function summaryCheck(){
     }
 }
 
-
-/**
- * Class managing the timer to display a warning on a expiring lock
- */
-function locktimer_class(){
-        this.sack     = null;
-        this.timeout  = 0;
-        this.timerID  = null;
-        this.lasttime = null;
-        this.msg      = '';
-        this.pageid   = '';
-};
-var locktimer = new locktimer_class();
-    locktimer.init = function(timeout,msg,draft){
-        // init values
-        locktimer.timeout  = timeout*1000;
-        locktimer.msg      = msg;
-        locktimer.draft    = draft;
-        locktimer.lasttime = new Date();
-
-        if(!$('dw__editform')) return;
-        locktimer.pageid = $('dw__editform').elements.id.value;
-        if(!locktimer.pageid) return;
-
-        // init ajax component
-        locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php');
-        locktimer.sack.AjaxFailedAlert = '';
-        locktimer.sack.encodeURIString = false;
-        locktimer.sack.onCompletion = locktimer.refreshed;
-
-        // register refresh event
-        addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();});
-        // start timer
-        locktimer.reset();
-    };
-
-    /**
-     * (Re)start the warning timer
-     */
-    locktimer.reset = function(){
-        locktimer.clear();
-        locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout);
-    };
-
-    /**
-     * Display the warning about the expiring lock
-     */
-    locktimer.warning = function(){
-        locktimer.clear();
-        alert(locktimer.msg);
-    };
-
-    /**
-     * Remove the current warning timer
-     */
-    locktimer.clear = function(){
-        if(locktimer.timerID !== null){
-            window.clearTimeout(locktimer.timerID);
-            locktimer.timerID = null;
-        }
-    };
-
-    /**
-     * Refresh the lock via AJAX
-     *
-     * Called on keypresses in the edit area
-     */
-    locktimer.refresh = function(){
-        var now = new Date();
-        // refresh every minute only
-        if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ //FIXME decide on time
-            var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid);
-            var dwform = $('dw__editform');
-            if(locktimer.draft && dwform.elements.wikitext){
-                params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value);
-                params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value);
-                params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value);
-                if(dwform.elements.date){
-                    params += '&date='+encodeURIComponent(dwform.elements.date.value);
-                }
-            }
-            locktimer.sack.runAJAX(params);
-            locktimer.lasttime = now;
-        }
-    };
-
-
-    /**
-     * Callback. Resets the warning timer
-     */
-    locktimer.refreshed = function(){
-        var data  = this.response;
-        var error = data.charAt(0);
-            data  = data.substring(1);
-
-        $('draft__status').innerHTML=data;
-        if(error != '1') return; // locking failed
-        locktimer.reset();
-    };
-// end of locktimer class functions
-
diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5ba1c60d5df392f5e868ff5b3edc40554e37d9a
--- /dev/null
+++ b/lib/scripts/locktimer.js
@@ -0,0 +1,99 @@
+/**
+ * Class managing the timer to display a warning on a expiring lock
+ */
+var locktimer = {
+    sack:     null,
+    timeout:  0,
+    timerID:  null,
+    lasttime: null,
+    msg:      '',
+    pageid:   '',
+
+    init: function(timeout,msg,draft){
+        // init values
+        locktimer.timeout  = timeout*1000;
+        locktimer.msg      = msg;
+        locktimer.draft    = draft;
+        locktimer.lasttime = new Date();
+
+        if(!$('dw__editform')) return;
+        locktimer.pageid = $('dw__editform').elements.id.value;
+        if(!locktimer.pageid) return;
+        if($('wiki__text').readOnly) return;
+
+        // init ajax component
+        locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php');
+        locktimer.sack.AjaxFailedAlert = '';
+        locktimer.sack.encodeURIString = false;
+        locktimer.sack.onCompletion = locktimer.refreshed;
+
+        // register refresh event
+        addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();});
+        // start timer
+        locktimer.reset();
+    },
+
+    /**
+     * (Re)start the warning timer
+     */
+    reset: function(){
+        locktimer.clear();
+        locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout);
+    },
+
+    /**
+     * Display the warning about the expiring lock
+     */
+    warning: function(){
+        locktimer.clear();
+        alert(locktimer.msg);
+    },
+
+    /**
+     * Remove the current warning timer
+     */
+    clear: function(){
+        if(locktimer.timerID !== null){
+            window.clearTimeout(locktimer.timerID);
+            locktimer.timerID = null;
+        }
+    },
+
+    /**
+     * Refresh the lock via AJAX
+     *
+     * Called on keypresses in the edit area
+     */
+    refresh: function(){
+        var now = new Date();
+        // refresh every minute only
+        if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){
+            var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid);
+            var dwform = $('dw__editform');
+            if(locktimer.draft && dwform.elements.wikitext){
+                params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value);
+                params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value);
+                params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value);
+                if(dwform.elements.date){
+                    params += '&date='+encodeURIComponent(dwform.elements.date.value);
+                }
+            }
+            locktimer.sack.runAJAX(params);
+            locktimer.lasttime = now;
+        }
+    },
+
+    /**
+     * Callback. Resets the warning timer
+     */
+    refreshed: function(){
+        var data  = this.response;
+        var error = data.charAt(0);
+            data  = data.substring(1);
+
+        $('draft__status').innerHTML=data;
+        if(error != '1') return; // locking failed
+        locktimer.reset();
+    }
+};
+
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index c79c9b683a4fd1ea5419836d756e6d03e00c57e3..2cc1246f918aa097e361993f3edd35d5dd98550f 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -113,6 +113,20 @@ function findPosY(object){
   return curtop;
 } //end findPosY function
 
+/**
+ * Get the computed style of a node.
+ *
+ * @link https://acidmartin.wordpress.com/2008/08/26/style-get-any-css-property-value-of-an-object/
+ * @link http://svn.dojotoolkit.org/src/dojo/trunk/_base/html.js
+ */
+function gcs(node){
+    if(node.currentStyle){
+        return node.currentStyle;
+    }else{
+        return node.ownerDocument.defaultView.getComputedStyle(node, null);
+    }
+}
+
 /**
  * Escape special chars in JavaScript
  *
@@ -260,10 +274,32 @@ function insitu_popup(target, popup_id) {
         getElementsByClass('dokuwiki', document.body, 'div')[0].appendChild(fndiv);
     }
 
+    var non_static_parent = fndiv.parentNode;
+    while (non_static_parent != document && gcs(non_static_parent)['position'] == 'static') {
+        non_static_parent = non_static_parent.parentNode;
+    }
+
+    var fixed_target_parent = target;
+    while (fixed_target_parent != document && gcs(fixed_target_parent)['position'] != 'fixed') {
+        fixed_target_parent = fixed_target_parent.parentNode;
+    }
+
     // position the div and make it visible
-    fndiv.style.position = 'absolute';
-    fndiv.style.left = findPosX(target)+'px';
-    fndiv.style.top  = (findPosY(target)+target.offsetHeight * 1.5) + 'px';
+    if (fixed_target_parent != document) {
+        // the target has position fixed, that means the footnote needs to be fixed, too
+        fndiv.style.position = 'fixed';
+    } else {
+        fndiv.style.position = 'absolute';
+    }
+
+    if (fixed_target_parent != document || non_static_parent == document) {
+        fndiv.style.left = findPosX(target)+'px';
+        fndiv.style.top  = (findPosY(target)+target.offsetHeight * 1.5) + 'px';
+    } else {
+        fndiv.style.left = (findPosX(target) - findPosX(non_static_parent)) +'px';
+        fndiv.style.top  = (findPosY(target)+target.offsetHeight * 1.5 - findPosY(non_static_parent)) + 'px';
+    }
+
     fndiv.style.display = '';
     return fndiv;
 }
@@ -460,19 +496,29 @@ addInitEvent(function(){
 });
 
 /**
- * Add the event handler to the actiondropdown
+ * Autosubmit quick select forms
+ *
+ * When a <select> tag has the class "quickselect", this script will
+ * automatically submit its parent form when the select value changes.
+ * It also hides the submit button of the form.
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 addInitEvent(function(){
-    var selector = $('action__selector');
-    if(!selector) return;
-
-    addEvent(selector,'change',function(e){
-        this.form.submit();
-    });
-
-    $('action__selectorbtn').style.display = 'none';
+    var selects = getElementsByClass('quickselect',document,'select');
+    for(var i=0; i<selects.length; i++){
+        // auto submit on change
+        addEvent(selects[i],'change',function(e){
+            this.form.submit();
+        });
+        // hide submit buttons
+        var btns = selects[i].form.getElementsByTagName('input');
+        for(var j=0; j<btns.length; j++){
+            if(btns[j].type == 'submit'){
+                btns[j].style.display = 'none';
+            }
+        }
+    }
 });
 
 /**
diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css
index 09a9ecf016e9ff54a7a3d1b87bcc600f58d6095e..1fdf2bfacf1d38dbefbfa23c63642edbe5228ce8 100644
--- a/lib/tpl/default/design.css
+++ b/lib/tpl/default/design.css
@@ -85,8 +85,10 @@ div.dokuwiki fieldset {
 }
 
 div.dokuwiki textarea.edit {
-  font-family: monospace;
-  font-size: 14px;
+  font-family: monospace, serif;
+  /* second generic font fixes problem with font-size, see
+     http://meyerweb.com/eric/thoughts/2010/02/12/fixed-monospace-sizing/ */
+  font-size: 100%;
   color: __text__;
   background-color: __background__;
   border: 1px solid __border__;
@@ -464,9 +466,14 @@ div.dokuwiki blockquote {
   padding-left: 3px;
 }
 
+div.dokuwiki pre,
+div.dokuwiki code {
+  font-family: monospace, serif;
+  /* second generic font fixes problem with font-size, see
+     http://meyerweb.com/eric/thoughts/2010/02/12/fixed-monospace-sizing/ */
+  font-size: 100%;
+}
 div.dokuwiki pre {
-  font-family: monospace;
-  font-size: 120%;
   padding: 0.5em;
   border: 1px dashed __border__;
   color: __text__;
@@ -519,11 +526,6 @@ div.dokuwiki dl.file dt {
 }
 
 
-/* inline code words */
-div.dokuwiki code {
-  font-size: 120%;
-}
-
 /* inline tables */
 div.dokuwiki table.inline {
   background-color: __background__;
@@ -652,10 +654,12 @@ div.dokuwiki table.diff td {
   font-family: monospace;
   font-size: 100%;
 }
-div.dokuwiki td.diff-addedline {
+div.dokuwiki td.diff-addedline,
+div.dokuwiki span.diff-addedline {
   background-color: #ddffdd;
 }
-div.dokuwiki td.diff-deletedline {
+div.dokuwiki td.diff-deletedline,
+div.dokuwiki span.diff-deletedline {
     background-color: #ffffbb;
 }
 div.dokuwiki td.diff-context {
diff --git a/lib/tpl/default/images/UWEB.png b/lib/tpl/default/images/UWEB.png
index ea03aec94f42256733e020a9afe64503c4e13f22..bded2c76f5924f99c356569a99aff01a752f5095 100644
Binary files a/lib/tpl/default/images/UWEB.png and b/lib/tpl/default/images/UWEB.png differ
diff --git a/lib/tpl/default/images/UWEBshadow.png b/lib/tpl/default/images/UWEBshadow.png
index 212444f0e06afea483ae9dc343e544053e4877ea..8c4e5f829a43bd445046123b5be0df151178686b 100644
Binary files a/lib/tpl/default/images/UWEBshadow.png and b/lib/tpl/default/images/UWEBshadow.png differ
diff --git a/lib/tpl/default/images/button-dw.png b/lib/tpl/default/images/button-dw.png
index 39d5f56a9dff668881444dafbec313e2e89f2287..97272d96841ff4488878a3c8908a1a32b58776ef 100644
Binary files a/lib/tpl/default/images/button-dw.png and b/lib/tpl/default/images/button-dw.png differ
diff --git a/lib/tpl/default/images/button-rss.png b/lib/tpl/default/images/button-rss.png
index b036f7152bd705536c7e3a7eb2d46d8bbb426102..0a55642efa2f494516de8b78ae8f163fe81e49f3 100644
Binary files a/lib/tpl/default/images/button-rss.png and b/lib/tpl/default/images/button-rss.png differ
diff --git a/lib/tpl/default/images/buttonshadow.png b/lib/tpl/default/images/buttonshadow.png
index f60be309f722795be20fa45eb5f6b45cf9a1ad52..b96ebf759a5fda04f0fc6970ac5c0a189686f3e2 100644
Binary files a/lib/tpl/default/images/buttonshadow.png and b/lib/tpl/default/images/buttonshadow.png differ
diff --git a/lib/tpl/default/images/inputshadow.png b/lib/tpl/default/images/inputshadow.png
index d286beb228d3a25d9ffe39831c96d37e5520be9e..480044986e490e70360d9d137eda806a2e495883 100644
Binary files a/lib/tpl/default/images/inputshadow.png and b/lib/tpl/default/images/inputshadow.png differ