diff --git a/_test/tests/inc/changelog_getlastrevisionat.test.php b/_test/tests/inc/changelog_getlastrevisionat.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..84b185ce85658329375dd33599d6d888368530e9
--- /dev/null
+++ b/_test/tests/inc/changelog_getlastrevisionat.test.php
@@ -0,0 +1,127 @@
+<?php
+
+/**
+ * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo()
+ *
+ * This class uses the files:
+ * - data/pages/mailinglist.txt
+ * - data/meta/mailinglist.changes
+ */
+class changelog_getlastrevisionat_test extends DokuWikiTest {
+
+    private $pageid = 'mailinglist';
+    
+    function setup() {
+        parent::setup();
+        global $cache_revinfo;
+        $cache =& $cache_revinfo;
+        if(isset($cache['nonexist'])) {
+            unset($cache['nonexist']);
+        }
+        if(isset($cache['mailinglist'])) {
+            unset($cache['mailinglist']);
+        }
+    }
+    
+
+    /**
+     * no nonexist.changes meta file available
+     */
+    function test_changemetadatanotexists() {
+        $rev = 1362525899;
+        $id = 'nonexist';
+        $revsexpected = false;
+
+        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
+        $revs = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($revsexpected, $revs);
+    }
+
+    /**
+     * start at exact current revision of mailinglist page
+     *
+     */
+    function test_startatexactcurrentrev() {
+        $rev = 1385051947;
+        $revsexpected = '';
+
+        //set a known timestamp
+        touch(wikiFN($this->pageid), $rev);
+
+        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+        $revs = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($revsexpected, $revs);
+
+    }
+    
+    /**
+     * test a future revision
+     *
+     */
+    function test_futurerev() {
+        $rev = 1385051947;
+        $revsexpected = '';
+
+        //set a known timestamp
+        touch(wikiFN($this->pageid), $rev);
+        
+        $rev +=1;
+
+        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+        $revs = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($revsexpected, $revs);
+
+    }
+
+    /**
+     * start at exact last revision of mailinglist page
+     *
+     */
+    function test_exactlastrev() {
+        $rev = 1360110636;
+        $revsexpected = 1360110636;
+
+        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+        $revs = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($revsexpected, $revs);
+    }
+
+
+    /**
+     * Request not existing revision
+     * 
+     */
+    function test_olderrev() {
+        $rev = 1;
+        $revexpected = false;
+
+        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+        $revfound = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($revexpected, $revfound);
+    }
+
+    /**
+     * Start at non existing revision somewhere between existing revisions
+     */
+    function test_notexistingrev() {
+        $rev = 1362525890;
+        $revexpected = 1362525359;
+
+        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
+        $revfound = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($revexpected, $revfound);
+    }
+
+    /**
+     * request nonexisting page
+     *
+     */
+    function test_notexistingpage() {
+        $rev = 1385051947;
+        $currentexpected = false;
+
+        $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
+        $current = $pagelog->getLastRevisionAt($rev);
+        $this->assertEquals($currentexpected, $current);
+    }
+}
\ No newline at end of file
diff --git a/_test/tests/inc/common_ml.test.php b/_test/tests/inc/common_ml.test.php
index 415c0a88de4e8f178714af144bb37426ada82279..027dcaef256562ecddface2c758cff52df72a9b4 100644
--- a/_test/tests/inc/common_ml.test.php
+++ b/_test/tests/inc/common_ml.test.php
@@ -146,4 +146,15 @@ class common_ml_test extends DokuWikiTest {
         $this->assertEquals($expect, ml($id, $args));
 
     }
+    
+    function test_ml_empty_rev() {
+        global $conf;
+        $conf['useslash'] = 0;
+        $conf['userewrite'] = 0;
+
+        $args = array('a' => 'b', 'c' => 'd', 'rev' => '');
+
+        $expect = DOKU_BASE . $this->script . '?a=b&amp;c=d&amp;media=some:img.jpg';
+        $this->assertEquals($expect, ml('some:img.jpg', $args));
+    }
 }
diff --git a/_test/tests/inc/common_wl.test.php b/_test/tests/inc/common_wl.test.php
index 2e34dcae3c4aa3eec9919a625a49c7e316bf5543..4bfde3f3945c9e75ec94abbba23b74b105f41bb1 100644
--- a/_test/tests/inc/common_wl.test.php
+++ b/_test/tests/inc/common_wl.test.php
@@ -142,6 +142,17 @@ class common_wl_test extends DokuWikiTest {
         $expect = DOKU_BASE . DOKU_SCRIPT . '/some/one?a=b&c=d';
         $this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&'));
     }
+    
+    function test_wl_empty_rev() {
+        global $conf;
+        $conf['useslash'] = 0;
+        $conf['userewrite'] = 0;
+
+        $args = array('a' => 'b', 'c' => 'd', 'rev' => '');
+
+        $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&amp;a=b&amp;c=d';
+        $this->assertEquals($expect, wl('some:', $args));
+    }
 
 
 
diff --git a/_test/tests/inc/parser/parser_footnote.test.php b/_test/tests/inc/parser/parser_footnote.test.php
index b47a575ded1cd9aafac6e15d9a5cf5e939020811..2457fb031c51f9be4c1ecbb12b7c64e3e5d83c6f 100644
--- a/_test/tests/inc/parser/parser_footnote.test.php
+++ b/_test/tests/inc/parser/parser_footnote.test.php
@@ -303,7 +303,7 @@ class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
             array('nest', array ( array (
               array('footnote_open',array()),
               array('listu_open',array()),
-              array('listitem_open',array(1)),
+              array('listitem_open',array(1,Doku_Handler_List::NODE)),
               array('listcontent_open',array()),
               array('cdata',array("A")),
               array('listcontent_close',array()),
diff --git a/_test/tests/inc/parser/parser_lists.test.php b/_test/tests/inc/parser/parser_lists.test.php
index e4ef1f83e5dc162b72567f76f3d739f0f76acb91..6acaff63736799801ea97cd2cb659c50ba448bda 100644
--- a/_test/tests/inc/parser/parser_lists.test.php
+++ b/_test/tests/inc/parser/parser_lists.test.php
@@ -13,7 +13,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('listcontent_close',array()),
@@ -46,7 +46,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('listo_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('listcontent_close',array()),
@@ -80,7 +80,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('listo_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('listcontent_close',array()),
@@ -109,7 +109,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('listcontent_close',array()),
@@ -138,7 +138,7 @@ class TestOfDoku_Parser_Lists extends TestOfDoku_Parser {
         $calls = array (
             array('document_start',array()),
             array('listo_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('listcontent_close',array()),
@@ -188,7 +188,7 @@ Bar');
             array('cdata',array("Foo")),
             array('p_close',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('listcontent_close',array()),
@@ -227,7 +227,7 @@ Bar');
         $calls = array (
             array('document_start',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('strong_open',array()),
             array('cdata',array("A")),
@@ -262,7 +262,7 @@ Bar');
         $calls = array (
             array('document_start',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('unformatted',array("A")),
             array('listcontent_close',array()),
@@ -291,7 +291,7 @@ Bar');
         $calls = array (
             array('document_start',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('cdata',array("A")),
             array('linebreak',array()),
@@ -355,7 +355,7 @@ Bar');
         $calls = array (
             array('document_start',array()),
             array('listu_open',array()),
-            array('listitem_open',array(1)),
+            array('listitem_open',array(1,Doku_Handler_List::NODE)),
             array('listcontent_open',array()),
             array('nest', array( array(
                 array('footnote_open',array()),
diff --git a/_test/tests/lib/exe/js_js_compress.test.php b/_test/tests/lib/exe/js_js_compress.test.php
index b1ae2a84f3db92ba09215aeead9d9fc31d54f05e..648ede07edc8352c1a63a89f301a28b9ad29bcbe 100644
--- a/_test/tests/lib/exe/js_js_compress.test.php
+++ b/_test/tests/lib/exe/js_js_compress.test.php
@@ -58,6 +58,18 @@ class js_js_compress_test extends DokuWikiTest {
         $this->assertEquals(js_compress($text), 'text.replace(/"/,"//")');
     }
 
+    function test_regex_after_and_with_slashes_outside_string(){
+        $text = 'if ( peng == bla && /pattern\//.test(url)) request = new Something();';
+        $this->assertEquals(js_compress($text),
+                            'if(peng==bla&&/pattern\//.test(url))request=new Something();');
+    }
+
+    function test_regex_after_or_with_slashes_outside_string(){
+        $text = 'if ( peng == bla || /pattern\//.test(url)) request = new Something();';
+        $this->assertEquals(js_compress($text),
+                            'if(peng==bla||/pattern\//.test(url))request=new Something();');
+    }
+
     function test_dquot1(){
         $text = 'var foo="Now what \\" \'do we//get /*here*/ ?";';
         $this->assertEquals(js_compress($text), $text);
@@ -145,6 +157,72 @@ EOF;
         $this->assertEquals($out, js_compress($text));
     }
 
+    function test_plusplus1(){
+        $text = 'a = 5 + ++b;';
+        $this->assertEquals('a=5+ ++b;',js_compress($text));
+    }
+
+    function test_plusplus2(){
+        $text = 'a = 5+ ++b;';
+        $this->assertEquals('a=5+ ++b;',js_compress($text));
+    }
+
+    function test_plusplus3(){
+        $text = 'a = 5++ + b;';
+        $this->assertEquals('a=5++ +b;',js_compress($text));
+    }
+
+    function test_plusplus4(){
+        $text = 'a = 5++ +b;';
+        $this->assertEquals('a=5++ +b;',js_compress($text));
+    }
+
+    function test_minusminus1(){
+        $text = 'a = 5 - --b;';
+        $this->assertEquals('a=5- --b;',js_compress($text));
+    }
+
+    function test_minusminus2(){
+        $text = 'a = 5- --b;';
+        $this->assertEquals('a=5- --b;',js_compress($text));
+    }
+
+    function test_minusminus3(){
+        $text = 'a = 5-- - b;';
+        $this->assertEquals('a=5-- -b;',js_compress($text));
+    }
+
+    function test_minusminus4(){
+        $text = 'a = 5-- -b;';
+        $this->assertEquals('a=5-- -b;',js_compress($text));
+    }
+
+    function test_minusplus1(){
+        $text = 'a = 5-- +b;';
+        $this->assertEquals('a=5--+b;',js_compress($text));
+    }
+
+    function test_minusplus2(){
+        $text = 'a = 5-- + b;';
+        $this->assertEquals('a=5--+b;',js_compress($text));
+    }
+
+    function test_plusminus1(){
+        $text = 'a = 5++ - b;';
+        $this->assertEquals('a=5++-b;',js_compress($text));
+    }
+
+    function test_plusminus2(){
+        $text = 'a = 5++ -b;';
+        $this->assertEquals('a=5++-b;',js_compress($text));
+    }
+
+    function test_unusual_signs(){
+        $text='var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, radians = π / 180, degrees = 180 / π;';
+        $this->assertEquals(js_compress($text),
+                            'var π=Math.PI,τ=2*π,halfπ=π/2,ε=1e-6,ε2=ε*ε,radians=π/180,degrees=180/π;');
+    }
+
     /**
      * Test the files provided with the original JsStrip
      */
diff --git a/bin/striplangs.php b/bin/striplangs.php
index 6335bc84c7f1c66b721c1271b8264a0f25de787c..82d27d4627a9e80a26c64d04241ba41c1a3b0ec1 100755
--- a/bin/striplangs.php
+++ b/bin/striplangs.php
@@ -26,7 +26,8 @@ class StripLangsCLI extends DokuCLI {
         $options->registerOption(
             'keep',
             'Comma separated list of languages to keep in addition to English.',
-            'k'
+            'k',
+            'langcodes'
         );
         $options->registerOption(
             'english-only',
diff --git a/conf/mime.conf b/conf/mime.conf
index 2a50fab10177268c1ed332f3cf08ba12246760f0..c2e03b775de1a2f2b93dce41f9eaa7d3414fe93f 100644
--- a/conf/mime.conf
+++ b/conf/mime.conf
@@ -9,7 +9,6 @@ gif     image/gif
 png     image/png
 ico     image/vnd.microsoft.icon
 
-swf     application/x-shockwave-flash
 mp3     audio/mpeg
 ogg     audio/ogg
 wav     audio/wav
@@ -66,3 +65,7 @@ odt     !application/vnd.oasis.opendocument.text
 #xml     text/xml
 #csv     text/csv
 
+# Also flash may be able to execute arbitrary scripts in the website's
+# context
+#swf     application/x-shockwave-flash
+
diff --git a/doku.php b/doku.php
index da3643544eb2e8e712d9e64247e8f0a9475fba4d..7cb92cffa82f98fd27e765d86946ed61d865c0c1 100644
--- a/doku.php
+++ b/doku.php
@@ -9,7 +9,7 @@
  */
 
 // update message version
-$updateVersion = 45;
+$updateVersion = 47;
 
 //  xdebug_start_profiling();
 
@@ -34,6 +34,7 @@ $QUERY          = trim($INPUT->str('id'));
 $ID             = getID();
 
 $REV   = $INPUT->int('rev');
+$DATE_AT = $INPUT->str('at');
 $IDX   = $INPUT->str('idx');
 $DATE  = $INPUT->int('date');
 $RANGE = $INPUT->str('range');
@@ -47,7 +48,41 @@ $PRE = cleanText(substr($INPUT->post->str('prefix'), 0, -1));
 $SUF = cleanText($INPUT->post->str('suffix'));
 $SUM = $INPUT->post->str('summary');
 
-//make info about the selected page available
+
+//parse DATE_AT
+if($DATE_AT) {
+    $date_parse = strtotime($DATE_AT);
+    if($date_parse) {
+        $DATE_AT = $date_parse;
+    } else { // check for UNIX Timestamp
+        $date_parse = @date('Ymd',$DATE_AT);
+        if(!$date_parse || $date_parse === '19700101') {
+            msg(sprintf($lang['unable_to_parse_date'], $DATE_AT));
+            $DATE_AT = null;
+        }
+    }
+}
+
+//check for existing $REV related to $DATE_AT
+if($DATE_AT) {
+    $pagelog = new PageChangeLog($ID);
+    $rev_t = $pagelog->getLastRevisionAt($DATE_AT);
+    if($rev_t === '') { //current revision
+        $REV = null;
+        $DATE_AT = null;
+    } else if ($rev_t === false) { //page did not exist
+        $rev_n = $pagelog->getRelativeRevision($DATE_AT,+1);
+        msg(sprintf($lang['page_nonexist_rev'], 
+            strftime($conf['dformat'],$DATE_AT),
+            wl($ID, array('rev' => $rev_n)),
+            strftime($conf['dformat'],$rev_n)));
+        $REV = $DATE_AT; //will result in a page not exists message
+    } else {
+        $REV = $rev_t;
+    }
+}
+
+//make infos about the selected page available
 $INFO = pageinfo();
 
 //export minimal info to JS, plugins can add more
diff --git a/inc/actions.php b/inc/actions.php
index 766c3cd0b710f2b0026b33d428bef9cee4cc7183..709c19dddcd3383c0d58a89166098513dcf8f088 100644
--- a/inc/actions.php
+++ b/inc/actions.php
@@ -676,7 +676,7 @@ function act_export($act){
             $output = p_wiki_xhtml($ID,$REV,false);
             break;
         default:
-            $output = p_cached_output(wikiFN($ID,$REV), $mode);
+            $output = p_cached_output(wikiFN($ID,$REV), $mode, $ID);
             $headers = p_get_metadata($ID,"format $mode");
             break;
     }
diff --git a/inc/auth.php b/inc/auth.php
index 0342de7bee1af5f98e436bb3b52ba87825d82456..d51534e676419f2c3d9d95667a584eb94513da4e 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -338,7 +338,6 @@ function auth_browseruid() {
     $ip  = clientIP(true);
     $uid = '';
     $uid .= $INPUT->server->str('HTTP_USER_AGENT');
-    $uid .= $INPUT->server->str('HTTP_ACCEPT_ENCODING');
     $uid .= $INPUT->server->str('HTTP_ACCEPT_CHARSET');
     $uid .= substr($ip, 0, strpos($ip, '.'));
     $uid = strtolower($uid);
diff --git a/inc/cache.php b/inc/cache.php
index 191d54e45a0774d9ec2bd70acd0e971efd01671c..edf3941342599bac5089c6c9a2aa65eb1fc0a3ab 100644
--- a/inc/cache.php
+++ b/inc/cache.php
@@ -50,7 +50,7 @@ class cache {
         $this->_addDependencies();
 
         if ($this->_event) {
-            return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache')));
+            return $this->_stats(trigger_event($this->_event, $this, array($this,'_useCache')));
         } else {
             return $this->_stats($this->_useCache());
         }
diff --git a/inc/changelog.php b/inc/changelog.php
index e2826e4b3e99628c0b61e31a146eb41cf4f5c07d..cb3cd2aebc4ccc7efaa36807c66bbc0a28b926c8 100644
--- a/inc/changelog.php
+++ b/inc/changelog.php
@@ -847,6 +847,25 @@ abstract class ChangeLog {
     public function isCurrentRevision($rev) {
         return $rev == @filemtime($this->getFilename());
     }
+    
+    /**
+    * Return an existing revision for a specific date which is 
+    * the current one or younger or equal then the date
+    *
+    * @param string $id 
+    * @param number $date_at timestamp
+    * @return string revision ('' for current)
+    */
+    function getLastRevisionAt($date_at){
+        //requested date_at(timestamp) younger or equal then modified_time($this->id) => load current
+        if($date_at >= @filemtime($this->getFilename())) { 
+            return '';
+        } else if ($rev = $this->getRelativeRevision($date_at+1, -1)) { //+1 to get also the requested date revision
+            return $rev;
+        } else {
+            return false;
+        }
+    }
 
     /**
      * Returns the next lines of the changelog  of the chunck before head or after tail
@@ -1074,3 +1093,4 @@ function getRevisions($id, $first, $num, $chunk_size = 8192, $media = false) {
     }
     return $changelog->getRevisions($first, $num);
 }
+
diff --git a/inc/common.php b/inc/common.php
index d628ab6b2e24a916afc80add8bb24066eeb5d3c1..b5fdd1ea5888de557a26d9a360bdfd45c2dd0042 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -440,6 +440,8 @@ function idfilter($id, $ue = true) {
 function wl($id = '', $urlParameters = '', $absolute = false, $separator = '&amp;') {
     global $conf;
     if(is_array($urlParameters)) {
+        if(isset($urlParameters['rev']) && !$urlParameters['rev']) unset($urlParameters['rev']);
+        if(isset($urlParameters['at']) && $conf['date_at_format']) $urlParameters['at'] = date($conf['date_at_format'],$urlParameters['at']);
         $urlParameters = buildURLparams($urlParameters, $separator);
     } else {
         $urlParameters = str_replace(',', $separator, $urlParameters);
@@ -546,6 +548,7 @@ function ml($id = '', $more = '', $direct = true, $sep = '&amp;', $abs = false)
         if(empty($more['w'])) unset($more['w']);
         if(empty($more['h'])) unset($more['h']);
         if(isset($more['id']) && $direct) unset($more['id']);
+        if(isset($more['rev']) && !$more['rev']) unset($more['rev']);
         $more = buildURLparams($more, $sep);
     } else {
         $matches = array();
diff --git a/inc/compatibility.php b/inc/compatibility.php
index ae780e5ac88fa3ca26d6408d8b766e967674db43..cb865a2d71f8e84c710bab21bcac84408219bf46 100644
--- a/inc/compatibility.php
+++ b/inc/compatibility.php
@@ -33,4 +33,50 @@ if(!function_exists('ctype_digit')) {
         if(preg_match('/^\d+$/', $text)) return true;
         return false;
     }
+}
+
+if(!function_exists('gzopen') && function_exists('gzopen64')) {
+    /**
+     * work around for PHP compiled against certain zlib versions #865
+     *
+     * @link http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+     *
+     * @param string $filename
+     * @param string $mode
+     * @param int    $use_include_path
+     * @return mixed
+     */
+    function gzopen($filename, $mode, $use_include_path = 0) {
+        return gzopen64($filename, $mode, $use_include_path);
+    }
+}
+
+if(!function_exists('gzseek') && function_exists('gzseek64')) {
+    /**
+     * work around for PHP compiled against certain zlib versions #865
+     *
+     * @link http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+     *
+     * @param resource $zp
+     * @param int      $offset
+     * @param int      $whence
+     * @return int
+     */
+    function gzseek($zp, $offset, $whence = SEEK_SET) {
+        return gzseek64($zp, $offset, $whence);
+    }
+}
+
+if(!function_exists('gztell') && function_exists('gztell64')) {
+    /**
+     * work around for PHP compiled against certain zlib versions #865
+     *
+     * @link   http://stackoverflow.com/questions/23417519/php-zlib-gzopen-not-exists
+     *
+     * @param resource $zp
+     * @return int
+     */
+    function gztell($zp) {
+        return gztell64($zp);
+    }
 }
\ No newline at end of file
diff --git a/inc/config_cascade.php b/inc/config_cascade.php
index 2c4f1612bec7f1430213fa30e31d4f10f8946f5b..1d9f67edbd6e849e43fe89b4e78c4627f038ffa9 100644
--- a/inc/config_cascade.php
+++ b/inc/config_cascade.php
@@ -8,71 +8,75 @@
 $config_cascade = array_merge(
     array(
         'main' => array(
-            'default'   => array(DOKU_CONF.'dokuwiki.php'),
-            'local'     => array(DOKU_CONF.'local.php'),
-            'protected' => array(DOKU_CONF.'local.protected.php'),
-            ),
-        'acronyms'  => array(
-            'default'   => array(DOKU_CONF.'acronyms.conf'),
-            'local'     => array(DOKU_CONF.'acronyms.local.conf'),
-            ),
-        'entities'  => array(
-            'default'   => array(DOKU_CONF.'entities.conf'),
-            'local'     => array(DOKU_CONF.'entities.local.conf'),
-            ),
+            'default'   => array(DOKU_CONF . 'dokuwiki.php'),
+            'local'     => array(DOKU_CONF . 'local.php'),
+            'protected' => array(DOKU_CONF . 'local.protected.php'),
+        ),
+        'acronyms' => array(
+            'default'   => array(DOKU_CONF . 'acronyms.conf'),
+            'local'     => array(DOKU_CONF . 'acronyms.local.conf'),
+        ),
+        'entities' => array(
+            'default'   => array(DOKU_CONF . 'entities.conf'),
+            'local'     => array(DOKU_CONF . 'entities.local.conf'),
+        ),
         'interwiki' => array(
-            'default'   => array(DOKU_CONF.'interwiki.conf'),
-            'local'     => array(DOKU_CONF.'interwiki.local.conf'),
-            ),
+            'default'   => array(DOKU_CONF . 'interwiki.conf'),
+            'local'     => array(DOKU_CONF . 'interwiki.local.conf'),
+        ),
         'license' => array(
-            'default'   => array(DOKU_CONF.'license.php'),
-            'local'     => array(DOKU_CONF.'license.local.php'),
-            ),
+            'default'   => array(DOKU_CONF . 'license.php'),
+            'local'     => array(DOKU_CONF . 'license.local.php'),
+        ),
         'mediameta' => array(
-            'default'   => array(DOKU_CONF.'mediameta.php'),
-            'local'     => array(DOKU_CONF.'mediameta.local.php'),
-            ),
-        'mime'      => array(
-            'default'   => array(DOKU_CONF.'mime.conf'),
-            'local'     => array(DOKU_CONF.'mime.local.conf'),
-            ),
-        'scheme'    => array(
-            'default'   => array(DOKU_CONF.'scheme.conf'),
-            'local'     => array(DOKU_CONF.'scheme.local.conf'),
-            ),
-        'smileys'   => array(
-            'default'   => array(DOKU_CONF.'smileys.conf'),
-            'local'     => array(DOKU_CONF.'smileys.local.conf'),
-            ),
+            'default'   => array(DOKU_CONF . 'mediameta.php'),
+            'local'     => array(DOKU_CONF . 'mediameta.local.php'),
+        ),
+        'mime' => array(
+            'default'   => array(DOKU_CONF . 'mime.conf'),
+            'local'     => array(DOKU_CONF . 'mime.local.conf'),
+        ),
+        'scheme' => array(
+            'default'   => array(DOKU_CONF . 'scheme.conf'),
+            'local'     => array(DOKU_CONF . 'scheme.local.conf'),
+        ),
+        'smileys' => array(
+            'default'   => array(DOKU_CONF . 'smileys.conf'),
+            'local'     => array(DOKU_CONF . 'smileys.local.conf'),
+        ),
         'wordblock' => array(
-            'default'   => array(DOKU_CONF.'wordblock.conf'),
-            'local'     => array(DOKU_CONF.'wordblock.local.conf'),
-            ),
+            'default'   => array(DOKU_CONF . 'wordblock.conf'),
+            'local'     => array(DOKU_CONF . 'wordblock.local.conf'),
+        ),
         'userstyle' => array(
-            'screen'  => DOKU_CONF.'userstyle.css',
-            'print'   => DOKU_CONF.'userprint.css',
-            'feed'    => DOKU_CONF.'userfeed.css',
-            'all'     => DOKU_CONF.'userall.css',
-            ),
+            'screen'    => DOKU_CONF . 'userstyle.css',
+            'print'     => DOKU_CONF . 'userprint.css',
+            'feed'      => DOKU_CONF . 'userfeed.css',
+            'all'       => DOKU_CONF . 'userall.css',
+        ),
         'userscript' => array(
-            'default' => DOKU_CONF.'userscript.js'
-            ),
-        'acl'       => array(
-            'default'   => DOKU_CONF.'acl.auth.php',
-            ),
+            'default'   => DOKU_CONF . 'userscript.js'
+        ),
+        'acl' => array(
+            'default'   => DOKU_CONF . 'acl.auth.php',
+        ),
         'plainauth.users' => array(
-            'default' => DOKU_CONF.'users.auth.php',
-            ),
-
+            'default'   => DOKU_CONF . 'users.auth.php',
+        ),
         'plugins' => array(
-            'default'   => array(DOKU_CONF.'plugins.php'),
-            'local'     => array(DOKU_CONF.'plugins.local.php'),
+            'default'   => array(DOKU_CONF . 'plugins.php'),
+            'local'     => array(DOKU_CONF . 'plugins.local.php'),
             'protected' => array(
-                DOKU_CONF.'plugins.required.php',
-                DOKU_CONF.'plugins.protected.php',
-                ),
+                DOKU_CONF . 'plugins.required.php',
+                DOKU_CONF . 'plugins.protected.php',
             ),
         ),
-        $config_cascade
+        'lang' => array(
+            'core'      => array(DOKU_CONF . 'lang/'),
+            'plugin'    => array(DOKU_CONF . 'plugin_lang/'),
+            'template'  => array(DOKU_CONF . 'template_lang/')
+        )
+    ),
+    $config_cascade
 );
 
diff --git a/inc/html.php b/inc/html.php
index 754e08edf6c7f80cac65df476e5b034e85b2dbeb..711cd8db60a45f17a9a6a2d27d0306fb2767e452 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -245,6 +245,7 @@ function html_show($txt=null){
     global $REV;
     global $HIGH;
     global $INFO;
+    global $DATE_AT;
     //disable section editing for old revisions or in preview
     if($txt || $REV){
         $secedit = false;
@@ -264,8 +265,8 @@ function html_show($txt=null){
         echo '</div></div>';
 
     }else{
-        if ($REV) print p_locale_xhtml('showrev');
-        $html = p_wiki_xhtml($ID,$REV,true);
+        if ($REV||$DATE_AT) print p_locale_xhtml('showrev');
+        $html = p_wiki_xhtml($ID,$REV,true,$DATE_AT);
         $html = html_secedit($html,$secedit);
         if($INFO['prependTOC']) $html = tpl_toc(true).$html;
         $html = html_hilight($html,$HIGH);
@@ -344,15 +345,17 @@ function html_hilight_callback($m) {
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function html_search(){
-    global $QUERY;
+    global $QUERY, $ID;
     global $lang;
 
     $intro = p_locale_xhtml('searchpage');
     // allow use of placeholder in search intro
+    $pagecreateinfo = (auth_quickaclcheck($ID) >= AUTH_CREATE) ? $lang['searchcreatepage'] : '';
     $intro = str_replace(
-                array('@QUERY@','@SEARCH@'),
-                array(hsc(rawurlencode($QUERY)),hsc($QUERY)),
-                $intro);
+        array('@QUERY@', '@SEARCH@', '@CREATEPAGEINFO@'),
+        array(hsc(rawurlencode($QUERY)), hsc($QUERY), $pagecreateinfo),
+        $intro
+    );
     echo $intro;
     flush();
 
diff --git a/inc/infoutils.php b/inc/infoutils.php
index 9c297a28d9848ab0e5ae2311ad5ad773e2f8002c..399963176d1704afa13eef4574b5a4833f9b1096 100644
--- a/inc/infoutils.php
+++ b/inc/infoutils.php
@@ -20,27 +20,28 @@ function checkUpdateMessages(){
     if(!$conf['updatecheck']) return;
     if($conf['useacl'] && !$INFO['ismanager']) return;
 
-    $cf = $conf['cachedir'].'/messages.txt';
+    $cf = getCacheName($updateVersion, '.updmsg');
     $lm = @filemtime($cf);
 
     // check if new messages needs to be fetched
     if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_INC.DOKU_SCRIPT)){
         @touch($cf);
-        dbglog("checkUpdateMessages(): downloading messages.txt");
+        dbglog("checkUpdateMessages(): downloading messages to ".$cf);
         $http = new DokuHTTPClient();
         $http->timeout = 12;
-        $data = $http->get(DOKU_MESSAGEURL.$updateVersion);
-        if(substr(trim($data), -1) != '%') {
-            // this doesn't look like one of our messages, maybe some WiFi login interferred
-            $data = '';
-        }else {
-            io_saveFile($cf,$data);
+        $resp = $http->get(DOKU_MESSAGEURL.$updateVersion);
+        if(is_string($resp) && ($resp == "" || substr(trim($resp), -1) == '%')) {
+            // basic sanity check that this is either an empty string response (ie "no messages")
+            // or it looks like one of our messages, not WiFi login or other interposed response
+            io_saveFile($cf,$resp);
+        } else {
+            dbglog("checkUpdateMessages(): unexpected HTTP response received");
         }
     }else{
-        dbglog("checkUpdateMessages(): messages.txt up to date");
-        $data = io_readFile($cf);
+        dbglog("checkUpdateMessages(): messages up to date");
     }
 
+    $data = io_readFile($cf);
     // show messages through the usual message mechanism
     $msgs = explode("\n%\n",$data);
     foreach($msgs as $msg){
@@ -113,13 +114,13 @@ function check(){
     if ($INFO['isadmin'] || $INFO['ismanager']){
         msg('DokuWiki version: '.getVersion(),1);
 
-        if(version_compare(phpversion(),'5.2.0','<')){
-            msg('Your PHP version is too old ('.phpversion().' vs. 5.2.0+ needed)',-1);
+        if(version_compare(phpversion(),'5.3.3','<')){
+            msg('Your PHP version is too old ('.phpversion().' vs. 5.3.3+ needed)',-1);
         }else{
             msg('PHP version '.phpversion(),1);
         }
     } else {
-        if(version_compare(phpversion(),'5.2.0','<')){
+        if(version_compare(phpversion(),'5.3.3','<')){
             msg('Your PHP version is too old',-1);
         }
     }
diff --git a/inc/init.php b/inc/init.php
index d825b52506bdd21bc09ce21fd432fbb1aa99e21d..d0d9101e687c47f3f3de812cea86e1047eac3163 100644
--- a/inc/init.php
+++ b/inc/init.php
@@ -178,14 +178,6 @@ $_REQUEST = array_merge($_GET,$_POST);
 // we don't want a purge URL to be digged
 if(isset($_REQUEST['purge']) && !empty($_SERVER['HTTP_REFERER'])) unset($_REQUEST['purge']);
 
-// disable gzip if not available
-if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
-    $conf['compression'] = 'gz';
-}
-if($conf['compression'] == 'gz' && !function_exists('gzopen')){
-    $conf['compression'] = 0;
-}
-
 // precalculate file creation modes
 init_creationmodes();
 
@@ -201,6 +193,14 @@ if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Con
 // load libraries
 require_once(DOKU_INC.'inc/load.php');
 
+// disable gzip if not available
+if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
+    $conf['compression'] = 'gz';
+}
+if($conf['compression'] == 'gz' && !function_exists('gzopen')){
+    $conf['compression'] = 0;
+}
+
 // input handle class
 global $INPUT;
 $INPUT = new Input();
@@ -259,17 +259,33 @@ function init_paths(){
     $conf['media_changelog'] = $conf['metadir'].'/_media.changes';
 }
 
+/**
+ * Load the language strings
+ *
+ * @param string $langCode language code, as passed by event handler
+ */
 function init_lang($langCode) {
     //prepare language array
-    global $lang;
+    global $lang, $config_cascade;
     $lang = array();
 
     //load the language files
     require(DOKU_INC.'inc/lang/en/lang.php');
+    foreach ($config_cascade['lang']['core'] as $config_file) {
+        if (@file_exists($config_file . 'en/lang.php')) {
+            include($config_file . 'en/lang.php');
+        }
+    }
+
     if ($langCode && $langCode != 'en') {
         if (file_exists(DOKU_INC."inc/lang/$langCode/lang.php")) {
             require(DOKU_INC."inc/lang/$langCode/lang.php");
         }
+        foreach ($config_cascade['lang']['core'] as $config_file) {
+            if (@file_exists($config_file . "$langCode/lang.php")) {
+                include($config_file . "$langCode/lang.php");
+            }
+        }
     }
 }
 
diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php
index 9d192639b25da631b5987745797fb974a9369fcb..50984e6303ef11db3090fd0eb37895e98c6fc8cc 100644
--- a/inc/lang/ar/lang.php
+++ b/inc/lang/ar/lang.php
@@ -71,6 +71,7 @@ $lang['badpassconfirm']        = 'عذراً,كلمة السر غير صحيحة
 $lang['minoredit']             = 'تعديلات طفيفة';
 $lang['draftdate']             = 'حفظ المسودات آليا مفعّل';
 $lang['nosecedit']             = 'غُيرت الصفحة في هذه الأثناء، معلومات الجزء اصبحت قديمة. حُمُلت كل الصفحة بدلا.';
+$lang['searchcreatepage']      = 'إن لم تجد ما تبحث عنه، يمكنك إنشاء صفحة جديدة بعنوان ما تبحث عنة بالضغط على زر "حرر هذه الصفحة".';
 $lang['regmissing']            = 'عذرا، عليك ملء جميع الحقول.';
 $lang['reguexists']            = 'عذرا، يوجد مشترك بنفس الاسم.';
 $lang['regsuccess']            = 'أنشئ المستخدم و ارسلت كلمة السر بالبريد.';
diff --git a/inc/lang/ar/searchpage.txt b/inc/lang/ar/searchpage.txt
index 62c05f5e4e4f73431e111ec1d79592c5b77c8a76..56355f85f809c6810aa423cd36436496fc0156fe 100644
--- a/inc/lang/ar/searchpage.txt
+++ b/inc/lang/ar/searchpage.txt
@@ -1,5 +1,5 @@
 ====== بحث ======
 
-نتائج البحث . إن لم تجد ما تبحث عنه، يمكنك إنشاء صفحة جديدة بعنوان ما تبحث عنة بالضغط على زر "حرر هذه الصفحة".
+نتائج البحث .  @CREATEPAGEINFO@
 
 ===== نتائج البحث =====
\ No newline at end of file
diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php
index 5edcfbe58fff4546bb2240d89814ecdef8592c71..bcec31daecbea834b6ac70421913e906183e2c25 100644
--- a/inc/lang/az/lang.php
+++ b/inc/lang/az/lang.php
@@ -58,6 +58,7 @@ $lang['badlogin']              = 'Təssüf ki istifadəçi adı və ya şifrə s
 $lang['minoredit']             = 'Az dəyişiklər';
 $lang['draftdate']             = 'Qaralama yadda saxlandı';
 $lang['nosecedit']             = 'Bu vaxt ərzində səhifə dəyişilmişdir, və bölmə haqqında məlumat köhnəlmişdir. Səhifənin tam versiyası yüklənmişdir.';
+$lang['searchcreatepage']      = "Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın.";
 $lang['regmissing']            = 'Təssüf ki Siz bütün xanələri doldurmalısınız.';
 $lang['reguexists']            = 'Təssüf ki bu ad ilə istifadəçi artıq mövcuddur.';
 $lang['regsuccess']            = 'İstivadəci yaradıldı və şifrə sizin e-maila göndərildi.';
diff --git a/inc/lang/az/searchpage.txt b/inc/lang/az/searchpage.txt
index 4f8efe007a0263a1b9ddbc9d31ec9d77166c7be5..6b7fce7549582b8771ee78da9827f360909c13d0 100644
--- a/inc/lang/az/searchpage.txt
+++ b/inc/lang/az/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Axtarış ======
 
-Qarşınızda - axtarışın nəticələridir. Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın.
+Qarşınızda - axtarışın nəticələridir. @CREATEPAGEINFO@
 
 ===== Nəticələr =====
diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php
index bfa8b2ad78221826b2b427ef0975d5f3b2439d23..cfacd09aa6cb3abafe6dc77170597668898a1db9 100644
--- a/inc/lang/bg/lang.php
+++ b/inc/lang/bg/lang.php
@@ -66,6 +66,7 @@ $lang['badpassconfirm']        = 'За съжаление паролата е г
 $lang['minoredit']             = 'Промените са незначителни';
 $lang['draftdate']             = 'Черновата е автоматично записана на';
 $lang['nosecedit']             = 'Страницата бе междувременно променена, презареждане на страницата поради неактуална информация.';
+$lang['searchcreatepage']      = 'Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.';
 $lang['regmissing']            = 'Моля, попълнете всички полета.';
 $lang['reguexists']            = 'Вече съществува потребител с избраното име.';
 $lang['regsuccess']            = 'Потребителят е създаден, а паролата е пратена по електронната поща.';
diff --git a/inc/lang/bg/searchpage.txt b/inc/lang/bg/searchpage.txt
index 48d47515af47a6da86757cfd8208db47835560af..a44c648cab745d1a3198a4dbcb65af0cbf89e109 100644
--- a/inc/lang/bg/searchpage.txt
+++ b/inc/lang/bg/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Търсене ======
 
-Резултата от търсенето ще намерите по-долу. Ако не намирате каквото сте търсили, може да създадете или редактирате страница, кръстена на вашата заявка, чрез съответния бутон.
+Резултата от търсенето ще намерите по-долу. @CREATEPAGEINFO@
 
 ===== Резултати =====
diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php
index 98607d322e6aff28230a84cce25610e429bf78f7..3a4e30923a910d773e47b2d54bf5b4f54b44c028 100644
--- a/inc/lang/ca-valencia/lang.php
+++ b/inc/lang/ca-valencia/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin']              = 'Disculpe, pero el nom d\'usuari o la contrasen
 $lang['minoredit']             = 'Canvis menors';
 $lang['draftdate']             = 'Borrador gravat el';
 $lang['nosecedit']             = 'La pàgina ha canviat mentres tant, l\'informació de la secció no estava al dia, s\'ha carregat la pàgina sancera.';
+$lang['searchcreatepage']      = 'Si no ha trobat lo que buscava pot crear o editar una pàgina en el mateix nom que el text que ha buscat utilisant el botó corresponent.';
 $lang['regmissing']            = 'Disculpe, pero deu omplir tots els camps.';
 $lang['reguexists']            = 'Disculpe, pero ya existix un usuari en este nom.';
 $lang['regsuccess']            = 'S\'ha creat l\'usuari i se li ha enviat la contrasenya per correu electrònic.';
diff --git a/inc/lang/ca-valencia/searchpage.txt b/inc/lang/ca-valencia/searchpage.txt
index 80f7e9119380aa410016b2709903eefbcd5b7648..7ed3cd2afbed3a56ad587b8c2172bd8911a80678 100644
--- a/inc/lang/ca-valencia/searchpage.txt
+++ b/inc/lang/ca-valencia/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Buscar ======
 
-Pot vore els resultats de la busca ací avall. Si no ha trobat lo que buscava pot crear o editar una pàgina en el mateix nom que el text que ha buscat utilisant el botó corresponent.
+Pot vore els resultats de la busca ací avall.  @CREATEPAGEINFO@
 
 ===== Resultats =====
diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php
index 00d28083c9a05e8994fecb56102b8495f23c9076..31c16ee23e6577cc6281c98e8f189a5d1ee8e87d 100644
--- a/inc/lang/ca/lang.php
+++ b/inc/lang/ca/lang.php
@@ -62,6 +62,7 @@ $lang['badlogin']              = 'Nom d\'usuari o contrasenya incorrectes.';
 $lang['minoredit']             = 'Canvis menors';
 $lang['draftdate']             = 'L\'esborrany s\'ha desat automàticament';
 $lang['nosecedit']             = 'Mentrestant la pàgina ha estat modificada. La informació de seccions estava obsoleta i ha calgut carregar la pàgina sencera.';
+$lang['searchcreatepage']      = "Si no trobeu allò que buscàveu, podeu crear una pàgina nova per mitjà del botó ''Edita aquesta pàgina''.";
 $lang['regmissing']            = 'Heu d\'omplir tots els camps.';
 $lang['reguexists']            = 'Ja existeix un altre usuari amb aquest nom.';
 $lang['regsuccess']            = 'S\'ha creat l\'usuari. La contrasenya s\'ha enviat per correu.';
diff --git a/inc/lang/ca/searchpage.txt b/inc/lang/ca/searchpage.txt
index bf69aef155129c87e5654ba05626d2b6ae1c4311..27efcdabfd98327ee2ce670a62de677cec7fed6c 100644
--- a/inc/lang/ca/searchpage.txt
+++ b/inc/lang/ca/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Cerca ======
 
-Heus ací els resultats de la cerca. Si no trobeu allò que buscàveu, podeu crear una pàgina nova per mitjà del botó ''Edita aquesta pàgina''.
+Heus ací els resultats de la cerca. @CREATEPAGEINFO@
 
 ===== Resultats =====
\ No newline at end of file
diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php
index 4d084d47952297c31f8f26eecaef0515c1404584..ad889f858b6187ae8df767c8ff91bd07ff9444cc 100644
--- a/inc/lang/cs/lang.php
+++ b/inc/lang/cs/lang.php
@@ -80,6 +80,7 @@ $lang['badpassconfirm']        = 'Bohužel špatné heslo';
 $lang['minoredit']             = 'Drobné změny';
 $lang['draftdate']             = 'Koncept automaticky uložen v';
 $lang['nosecedit']             = 'Stránka byla v mezičase změněna. Informace o sekci již nebylo platné, byla načtena celá stránka.';
+$lang['searchcreatepage']      = 'Pokud jste nenašli, co hledáte, zkuste požadovanou stránku sami vytvořit stisknutím tlačítka \'\'Vytvořit stránku\'\'.';
 $lang['regmissing']            = 'Musíte vyplnit všechny údaje.';
 $lang['reguexists']            = 'Uživatel se stejným jménem už je zaregistrován.';
 $lang['regsuccess']            = 'Uživatelský účet byl vytvořen a heslo zasláno mailem.';
@@ -199,6 +200,8 @@ $lang['diff_side']             = 'Přidané';
 $lang['diffprevrev']           = 'Předchozí verze';
 $lang['diffnextrev']           = 'Následující verze';
 $lang['difflastrev']           = 'Poslední revize';
+$lang['diffbothprevrev']       = 'Obě strany předchozí revize';
+$lang['diffbothnextrev']       = 'Obě strany příští revize';
 $lang['line']                  = 'Řádek';
 $lang['breadcrumb']            = 'Historie:';
 $lang['youarehere']            = 'Umístění:';
@@ -294,6 +297,7 @@ $lang['i_problems']            = 'Instalátor narazil na níže popsané problé
 $lang['i_modified']            = 'Instalátor bude z bezpečnostních důvodů pracovat pouze s čistou a ještě neupravenou instalací DokuWiki. Buď znovu rozbalte soubory z instalačního balíčku, nebo zkuste prostudovat <a href="http://dokuwiki.org/install">instrukce pro instalaci DokuWiki</a>.';
 $lang['i_funcna']              = 'PHP funkce <code>%s</code> není dostupná. Váš webhosting ji možná z nějakého důvodu vypnul.';
 $lang['i_phpver']              = 'Verze vaší instalace PHP <code>%s</code> je nižší než požadovaná <code>%s</code>. Budete muset aktualizovat svou instalaci PHP.';
+$lang['i_mbfuncoverload']      = 'mbstring.func_overload musí být vypnut v php.ini pro běh DokuWiki.';
 $lang['i_permfail']            = 'DokuWiki nemůže zapisovat do <code>%s</code>. Budete muset opravit práva k tomuto adresáři.';
 $lang['i_confexists']          = '<code>%s</code> již existuje';
 $lang['i_writeerr']            = 'Nelze vytvořit <code>%s</code>. Budete muset zkontrolovat práva k souborům či adresářům a vytvořit tento soubor ručně.';
@@ -347,3 +351,5 @@ $lang['currentns']             = 'Aktuální jmenný prostor';
 $lang['searchresult']          = 'Výsledek hledání';
 $lang['plainhtml']             = 'Čisté HTML';
 $lang['wikimarkup']            = 'Wiki jazyk';
+$lang['page_nonexist_rev']     = 'Stránka neexistovala na %s. Byla vytvořena dodatečne na <a href="%s">%s</a>.';
+$lang['unable_to_parse_date']  = 'Nelze rozebrat parametr "%s".';
diff --git a/inc/lang/cs/searchpage.txt b/inc/lang/cs/searchpage.txt
index ac045e100ae376dc348e4fd201685907ae5fb5ea..2f5e89ff65f074ab0565bcbaad125f098beb5eff 100644
--- a/inc/lang/cs/searchpage.txt
+++ b/inc/lang/cs/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Vyhledávání ======
 
-Výsledky hledání můžete vidět níže. Pokud jste nenašli, co hledáte, zkuste požadovanou stránku sami vytvořit stisknutím tlačítka ''Vytvořit stránku''.
+Výsledky hledání můžete vidět níže. @CREATEPAGEINFO@
 
 ===== Výsledky =====
diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php
index 3f06bf7583ea7926e54c848052e909e132c968b8..d27f0aa39e9817593061e372881d048527925b3f 100644
--- a/inc/lang/da/lang.php
+++ b/inc/lang/da/lang.php
@@ -76,6 +76,7 @@ $lang['badpassconfirm']        = 'Kodeordet var desværre forkert';
 $lang['minoredit']             = 'Mindre ændringer';
 $lang['draftdate']             = 'Kladde automatisk gemt d.';
 $lang['nosecedit']             = 'Siden blev ændret i mellemtiden, sektions information var for gammel, hentede hele siden i stedet.';
+$lang['searchcreatepage']      = "Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.";
 $lang['regmissing']            = 'Du skal udfylde alle felter.';
 $lang['reguexists']            = 'Dette brugernavn er allerede i brug.';
 $lang['regsuccess']            = 'Du er nu oprettet som bruger. Dit adgangskode bliver sendt til dig i en e-mail.';
diff --git a/inc/lang/da/searchpage.txt b/inc/lang/da/searchpage.txt
index eca1b589cda8c04cb4ff6306b1a0c2c1ee8b1330..9cefd419ca2f78acb25522823f1729cc4adeed21 100644
--- a/inc/lang/da/searchpage.txt
+++ b/inc/lang/da/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Søgning ======
 
-Du kan se resultaterne af din søgning nedenunder. Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.
+Du kan se resultaterne af din søgning nedenunder. @CREATEPAGEINFO@
 
 ===== Søgeresultater =====
diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php
index c81109580b35f9ba8958334d532cb23bd38ae292..1a1491f6bb1ea99860fcbc3918c428941a94bda1 100644
--- a/inc/lang/de-informal/lang.php
+++ b/inc/lang/de-informal/lang.php
@@ -81,6 +81,7 @@ $lang['badpassconfirm']        = 'Das Passwort war falsch.';
 $lang['minoredit']             = 'Kleine Änderung';
 $lang['draftdate']             = 'Entwurf gespeichert am';
 $lang['nosecedit']             = 'Diese Seite wurde in der Zwischenzeit geändert, da das Sektionsinfo veraltet ist. Die ganze Seite wird stattdessen geladen.';
+$lang['searchcreatepage']      = "Falls der gesuchte Begriff nicht gefunden wurde, kannst du direkt eine neue Seite für den Suchbegriff anlegen, indem du auf den Knopf **''[Seite anlegen]''** drückst.";
 $lang['regmissing']            = 'Alle Felder müssen ausgefüllt werden';
 $lang['reguexists']            = 'Der Benutzername existiert leider schon.';
 $lang['regsuccess']            = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
diff --git a/inc/lang/de-informal/searchpage.txt b/inc/lang/de-informal/searchpage.txt
index 72c57b765812c723c1eada231e531c6152de1152..e78e4abddbc350075dc347ced691ca7bfa5d3183 100644
--- a/inc/lang/de-informal/searchpage.txt
+++ b/inc/lang/de-informal/searchpage.txt
@@ -1,6 +1,6 @@
 ====== Suche ======
 
-Unten sind die Ergebnisse deiner Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde, kannst du direkt eine neue Seite für den Suchbegriff anlegen, indem du auf den Knopf **''[Seite anlegen]''** drückst.
+Unten sind die Ergebnisse deiner Suche gelistet. @CREATEPAGEINFO@
 
 ===== Ergebnisse =====
 
diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php
index 18357168179fcceab5ac6f047dbdb717fdbc7053..2725c247a3988a60a0dac5f3f12ce680bb50316e 100644
--- a/inc/lang/de/lang.php
+++ b/inc/lang/de/lang.php
@@ -27,6 +27,7 @@
  * @author Simon <st103267@stud.uni-stuttgart.de>
  * @author Hoisl <hoisl@gmx.at>
  * @author Marcel Eickhoff <eickhoff.marcel@gmail.com>
+ * @author Pascal Schröder <Pascal1802@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -88,6 +89,7 @@ $lang['badpassconfirm']        = 'Das Passwort war falsch.';
 $lang['minoredit']             = 'kleine Änderung';
 $lang['draftdate']             = 'Entwurf gespeichert am';
 $lang['nosecedit']             = 'Diese Seite wurde in der Zwischenzeit geändert, Sektionsinfo ist veraltet, lade stattdessen volle Seite.';
+$lang['searchcreatepage']      = 'Falls der gesuchte Begriff nicht gefunden wurde, können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den **\'\'[Seite anlegen]\'\'** Knopf drücken.';
 $lang['regmissing']            = 'Alle Felder müssen ausgefüllt werden.';
 $lang['reguexists']            = 'Der Benutzername existiert leider schon.';
 $lang['regsuccess']            = 'Der neue Benutzer wurde angelegt und das Passwort per E-Mail versandt.';
@@ -205,6 +207,8 @@ $lang['diff_side']             = 'Side by Side';
 $lang['diffprevrev']           = 'Vorhergehende Überarbeitung';
 $lang['diffnextrev']           = 'Nächste  Überarbeitung';
 $lang['difflastrev']           = 'Letzte  Überarbeitung';
+$lang['diffbothprevrev']       = 'Beide Seiten der vorigen Revision';
+$lang['diffbothnextrev']       = 'Beide Seiten der Revision';
 $lang['line']                  = 'Zeile';
 $lang['breadcrumb']            = 'Zuletzt angesehen:';
 $lang['youarehere']            = 'Sie befinden sich hier:';
@@ -354,3 +358,5 @@ $lang['currentns']             = 'Aktueller Namensraum';
 $lang['searchresult']          = 'Suchergebnisse';
 $lang['plainhtml']             = 'HTML Klartext';
 $lang['wikimarkup']            = 'Wiki Markup';
+$lang['page_nonexist_rev']     = 'DIe Seite exitiert nicht unter %s. Sie wurde aber unter <a herf="%s">%s</a>';
+$lang['unable_to_parse_date']  = 'Parameter "%s" kann nicht geparsed werden.';
diff --git a/inc/lang/de/searchpage.txt b/inc/lang/de/searchpage.txt
index 56104551b73462706371797f8f5c772c37e70322..6cd8006ac3cc1ea9a903c98736040511b453a821 100644
--- a/inc/lang/de/searchpage.txt
+++ b/inc/lang/de/searchpage.txt
@@ -1,6 +1,6 @@
 ====== Suche ======
 
-Unten sind die Ergebnisse Ihrer Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde, können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den **''[Seite anlegen]''** Knopf drücken.
+Unten sind die Ergebnisse Ihrer Suche gelistet. @CREATEPAGEINFO@
 
 ===== Ergebnisse =====
 
diff --git a/inc/lang/el/searchpage.txt b/inc/lang/el/searchpage.txt
index b52162b60c1f4fba8aaef160e86d939f7b5b1088..c5bbbbfae9c0eb6be335dcd980739a79df25f0ee 100644
--- a/inc/lang/el/searchpage.txt
+++ b/inc/lang/el/searchpage.txt
@@ -1,4 +1,4 @@
 ====== Αναζήτηση ======
 
-Τα αποτελέσματα της αναζήτησής σας:
+Τα αποτελέσματα της αναζήτησής σας. @CREATEPAGEINFO@
 
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index 9c1e5dacd1bc7ffaab15cc0a535d6f336f1e7a29..fb455f85fc643779e2f8e0236df3096a092ab48a 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -70,6 +70,7 @@ $lang['badpassconfirm']        = 'Sorry, the password was wrong';
 $lang['minoredit']             = 'Minor Changes';
 $lang['draftdate']             = 'Draft autosaved on'; // full dformat date will be added
 $lang['nosecedit']             = 'The page was changed in the meantime, section info was out of date loaded full page instead.';
+$lang['searchcreatepage']      = 'If you didn\'t find what you were looking for, you can create or edit the page named after your query with the appropriate tool.';
 
 $lang['regmissing']            = 'Sorry, you must fill in all fields.';
 $lang['reguexists']            = 'Sorry, a user with this login already exists.';
@@ -367,4 +368,6 @@ $lang['currentns']             = 'Current namespace';
 $lang['searchresult']          = 'Search Result';
 $lang['plainhtml']             = 'Plain HTML';
 $lang['wikimarkup']            = 'Wiki Markup';
+$lang['page_nonexist_rev']     = 'Page did not exist at %s. It was subsequently created at <a href="%s">%s</a>.';
+$lang['unable_to_parse_date']  = 'Unable to parse at parameter "%s".';
 //Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/en/searchpage.txt b/inc/lang/en/searchpage.txt
index 50578db3ff15cab931b7e7857c85ac6d65f32296..ba0960aa682bcc3e5e6a87a7aecba5f913fc0c77 100644
--- a/inc/lang/en/searchpage.txt
+++ b/inc/lang/en/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Search ======
 
-You can find the results of your search below. If you didn't find what you were looking for, you can create or edit the page named after your query with the appropriate tool.
+You can find the results of your search below. @CREATEPAGEINFO@
 
 ===== Results =====
diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php
index f81de7fa1600d479ee041682ab9bae972f5df05b..0cb84a2de268bdb70e8f067240bcd38dc49f4376 100644
--- a/inc/lang/eo/lang.php
+++ b/inc/lang/eo/lang.php
@@ -71,6 +71,7 @@ $lang['badpassconfirm']        = 'Pardonu, la pasvorto malĝustis';
 $lang['minoredit']             = 'Etaj modifoj';
 $lang['draftdate']             = 'Lasta konservo de la skizo:';
 $lang['nosecedit']             = 'La paĝo ŝanĝiĝis intertempe, sekcio-informo estis malĝisdata, tial la tuta paĝo estas reŝargita.';
+$lang['searchcreatepage']      = 'Se vi ne trovis tion, kion vi serĉis, vi povas krei novan paĝon kun necesa nomo per la koresponda butono.';
 $lang['regmissing']            = 'Pardonu, vi devas plenigi ĉiujn kampojn.';
 $lang['reguexists']            = 'Pardonu, ĉi tiu uzanto-nomo jam ekzistas.';
 $lang['regsuccess']            = 'La uzanto kreiĝis kaj la pasvorto sendiĝis per retpoŝto.';
diff --git a/inc/lang/eo/searchpage.txt b/inc/lang/eo/searchpage.txt
index a940c503d02e6f730fe2a1b42c80cb2bf91d80d0..bdefe7b59f328c0ef39c83a5752bbb66f90ff36a 100644
--- a/inc/lang/eo/searchpage.txt
+++ b/inc/lang/eo/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Serĉo ======
 
-Sube estas rezultoj de serĉo en la retejo.\\ Se vi ne trovis tion, kion vi serĉis, vi povas krei novan paĝon kun necesa nomo per la koresponda butono.
+Sube estas rezultoj de serĉo en la retejo.\\ @CREATEPAGEINFO@
 
 ===== Rezultoj =====
diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php
index 47bee3b6f1218394b787124a268ecc4097fe50fd..8f4cb2977640ed3f848a70b067602089bdc45244 100644
--- a/inc/lang/es/lang.php
+++ b/inc/lang/es/lang.php
@@ -98,6 +98,7 @@ $lang['badpassconfirm']        = 'Lo siento, la contraseña es errónea';
 $lang['minoredit']             = 'Cambios menores';
 $lang['draftdate']             = 'Borrador guardado automáticamente:';
 $lang['nosecedit']             = 'La página ha cambiado en el lapso, la información de sección estaba anticuada, en su lugar se cargó la página completa.';
+$lang['searchcreatepage']      = "Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón  ''Crea esta página''.";
 $lang['regmissing']            = 'Lo siento, tienes que completar todos los campos.';
 $lang['reguexists']            = 'Lo siento, ya existe un usuario con este nombre.';
 $lang['regsuccess']            = 'El usuario ha sido creado y la contraseña se ha enviado por correo.';
diff --git a/inc/lang/es/searchpage.txt b/inc/lang/es/searchpage.txt
index 47a1a90dd2195b21d77ed0f891ac27188b51433c..819815b15a045421c8e5da3ea436b269d19492da 100644
--- a/inc/lang/es/searchpage.txt
+++ b/inc/lang/es/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Búsqueda ======
 
-Puedes encontrar los resultados de tu búsqueda abajo. Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón  ''Crea esta página''.
+Puedes encontrar los resultados de tu búsqueda abajo. @CREATEPAGEINFO@
 
 ===== Resultados =====
\ No newline at end of file
diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php
index 9ae06d7d2a63c105f407731fb9c58bff7fe89c09..d3c510c438f6b01f98c1b824d1e8d16ad2b3af4f 100644
--- a/inc/lang/et/lang.php
+++ b/inc/lang/et/lang.php
@@ -69,6 +69,7 @@ $lang['badpassconfirm']        = 'Väär salasõna';
 $lang['minoredit']             = 'Ebaolulised muudatused';
 $lang['draftdate']             = 'Mustand automaatselt salvestatud';
 $lang['nosecedit']             = 'Leht on vahepeal muutunud, jaotiste teave osutus aegunuks sestap laeti tervelehekülg.';
+$lang['searchcreatepage']      = "Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe kasutades ''Toimeta seda lehte'' nuppu.";
 $lang['regmissing']            = 'Kõik väljad tuleb ära täita.';
 $lang['reguexists']            = 'Tegelikult on sellise nimega kasutaja juba olemas.';
 $lang['regsuccess']            = 'Kasutaja sai tehtud. Parool saadeti Sulle e-posti aadressil.';
diff --git a/inc/lang/et/searchpage.txt b/inc/lang/et/searchpage.txt
index bbc86b637d78c142edca885d4c1a932247449923..6ba57324a4bb1374b2bb7729d62734a96f89df94 100644
--- a/inc/lang/et/searchpage.txt
+++ b/inc/lang/et/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Otsi ======
 
-Leiad vasted oma otsingule. Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe kasutades ''Toimeta seda lehte'' nuppu.
+Leiad vasted oma otsingule. @CREATEPAGEINFO@
 
 ===== Vasted =====
diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php
index 0c996feaf8c3542783454aeeff0fda552b9f2e57..fcf45b946817dd944b9ea920254dea75247e169e 100644
--- a/inc/lang/eu/lang.php
+++ b/inc/lang/eu/lang.php
@@ -1,11 +1,12 @@
 <?php
+
 /**
- * Basque language file
- *
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Xabi Ezpeleta <xezpeleta@mendikute.com>
  * @author Inko Illarramendi <inko.i.a@gmail.com>
  * @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Yadav Gowda <yadav.gowda@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -49,6 +50,9 @@ $lang['btn_revert']            = 'Berrezarri';
 $lang['btn_register']          = 'Erregistratu';
 $lang['btn_apply']             = 'Baieztatu';
 $lang['btn_media']             = 'Media Kudeatzailea';
+$lang['btn_deleteuser']        = 'Nire kontua kendu';
+$lang['btn_img_backto']        = 'Atzera hona %s';
+$lang['btn_mediaManager']      = 'Media kudeatzailean ikusi';
 $lang['loggedinas']            = 'Erabiltzailea:';
 $lang['user']                  = 'Erabiltzailea';
 $lang['pass']                  = 'Pasahitza';
@@ -63,6 +67,7 @@ $lang['badlogin']              = 'Barkatu, prozesuak huts egin du; saiatu berriz
 $lang['minoredit']             = 'Aldaketa Txikiak';
 $lang['draftdate']             = 'Zirriborroa automatikoki gorde da hemen:';
 $lang['nosecedit']             = 'Orria aldatua izan da bitartean, info atala zaharkituta geratu da, orri osoa kargatu da horren ordez.';
+$lang['searchcreatepage']      = 'Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu dezakezu orri berri bat bilaketa ostean \'\'Sortu orri hau\'\' erabiliz.';
 $lang['regmissing']            = 'Barkatu, hutsune guztiak bete behar dituzu.';
 $lang['reguexists']            = 'Barkatu, izen bereko erabiltzailea existitzen da.';
 $lang['regsuccess']            = 'Erabiltzailea sortu da. Pasahitza mailez bidaliko zaizu.';
@@ -76,6 +81,7 @@ $lang['profna']                = 'Wiki honek ez du profilaren aldaketa ahalbidet
 $lang['profnochange']          = 'Aldaketarik ez, ez dago egiteko ezer.';
 $lang['profnoempty']           = 'Izen edota e-posta hutsa ez dago onartua.';
 $lang['profchanged']           = 'Erabiltzaile profila arrakastaz eguneratua.';
+$lang['profdeleteuser']        = 'Kontua ezabatu';
 $lang['pwdforget']             = 'Pasahitza ahaztu duzu? Eskuratu berri bat';
 $lang['resendna']              = 'Wiki honek ez du pasahitz berbidalketa onartzen.';
 $lang['resendpwd']             = '-entzat pasahitza berria ezarri';
@@ -227,7 +233,6 @@ $lang['admin_register']        = 'Erabiltzaile berria gehitu';
 $lang['metaedit']              = 'Metadatua Aldatu';
 $lang['metasaveerr']           = 'Metadatuaren idazketak huts egin du';
 $lang['metasaveok']            = 'Metadatua gordea';
-$lang['btn_img_backto']            = 'Atzera hona %s';
 $lang['img_title']             = 'Izenburua:';
 $lang['img_caption']           = 'Epigrafea:';
 $lang['img_date']              = 'Data:';
@@ -240,7 +245,6 @@ $lang['img_camera']            = 'Kamera:';
 $lang['img_keywords']          = 'Hitz-gakoak:';
 $lang['img_width']             = 'Zabalera:';
 $lang['img_height']            = 'Altuera:';
-$lang['btn_mediaManager']           = 'Media kudeatzailean ikusi';
 $lang['subscr_subscribe_success'] = '%s gehitua %s-ren harpidetza zerrendara';
 $lang['subscr_subscribe_error'] = 'Errorea %s gehitzen %s-ren harpidetza zerrendara';
 $lang['subscr_subscribe_noaddress'] = 'Ez dago helbiderik zure login-arekin lotuta, ezin zara harpidetza zerrendara gehitua izan.';
diff --git a/inc/lang/eu/searchpage.txt b/inc/lang/eu/searchpage.txt
index 2a487a3bb9dc1c56311e7deacb0d16e4db8f43e2..c632305b995005ab19436d71240c2b50af461c2c 100644
--- a/inc/lang/eu/searchpage.txt
+++ b/inc/lang/eu/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Bilaketa ======
 
-Emaitzak ondorengo aurkiketan bilatu ditzakezu. Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu dezakezu orri berri bat bilaketa ostean ''Sortu orri hau'' erabiliz.
+Emaitzak ondorengo aurkiketan bilatu ditzakezu. @CREATEPAGEINFO@
 
 ===== Bilaketa emaitzak: =====
diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php
index 96ffcaf90b12fd0c7c0c9e5da92adce1aa5bc610..25de5c92ee332058ac3c89cb30ac64f2ec27d6cf 100644
--- a/inc/lang/fa/lang.php
+++ b/inc/lang/fa/lang.php
@@ -13,6 +13,8 @@
  * @author reza_khn <reza_khn@yahoo.com>
  * @author Hamid <zarrabi@sharif.edu>
  * @author Mohamad Mehdi Habibi <habibi.esf@gmail.com>
+ * @author Mohammad Sadegh <msdn2013@gmail.com>
+ * @author Omid Hezaveh <hezpublic@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'rtl';
@@ -74,6 +76,7 @@ $lang['badpassconfirm']        = 'متاسفم ، رمز عبور اشتباه 
 $lang['minoredit']             = 'این ویرایش خُرد است';
 $lang['draftdate']             = 'ذخیره خودکار پیش‌نویس';
 $lang['nosecedit']             = 'این صفحه در این میان تغییر کرده است، اطلاعات بخش قدیمی شده است، در عوض محتوای کل نمایش داده می‌شود.';
+$lang['searchcreatepage']      = 'اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.';
 $lang['regmissing']            = 'متاسفم، شما باید همه قسمت‌ها را پر کنید.';
 $lang['reguexists']            = 'نام کاربری‌ای که وارد کردید قبلن استفاده شده است. خواهشمندیم یک نام دیگر انتخاب کنید.';
 $lang['regsuccess']            = 'کاربر ساخته شد و گذرواژه به صورت ایمیل ارسال گردید.';
diff --git a/inc/lang/fa/searchpage.txt b/inc/lang/fa/searchpage.txt
index 3f0378ed394cdfdf07533fe36da9db2787c9119f..f7f1a53094a7e57bca4a65415d68c08f35d81c52 100644
--- a/inc/lang/fa/searchpage.txt
+++ b/inc/lang/fa/searchpage.txt
@@ -1,5 +1,5 @@
 ====== جستجو ======
 
-نتایج جستجو در زیر آمده است. اگر به نتیجه‌ی مطلوبی نرسیده‌اید، می‌توانید صفحه‌ی مورد نظر را ایجاد کنید.
+نتایج جستجو در زیر آمده است. @CREATEPAGEINFO@
 
 ===== نتایج =====
\ No newline at end of file
diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php
index 0f82c3b7a9db0bc85481316e75365161404be2b7..4856efe3357cc06deac3557252d5eca7e3145763 100644
--- a/inc/lang/fi/lang.php
+++ b/inc/lang/fi/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm']        = 'Valitan. Salasana oli väärin';
 $lang['minoredit']             = 'Pieni muutos';
 $lang['draftdate']             = 'Luonnos tallennettu automaattisesti';
 $lang['nosecedit']             = 'Sivu on muuttunut välillä ja kappaleen tiedot olivat vanhentuneet. Koko sivu ladattu.';
+$lang['searchcreatepage']      = "Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.";
 $lang['regmissing']            = 'Kaikki kentät tulee täyttää.';
 $lang['reguexists']            = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
 $lang['regsuccess']            = 'Käyttäjä luotiin ja salasana lähetettiin sähköpostilla.';
diff --git a/inc/lang/fi/searchpage.txt b/inc/lang/fi/searchpage.txt
index aa9fbf52f3af78da5472fbff7d13f58fe1a2ff54..b2ad8cc986773e031487cbeef44af560e97150ab 100644
--- a/inc/lang/fi/searchpage.txt
+++ b/inc/lang/fi/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Etsi ======
 
-Löydät etsinnän tulokset alta. Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.
+Löydät etsinnän tulokset alta. @CREATEPAGEINFO@
 
 ===== Tulokset =====
diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php
index b326d27ac97bef32d9c92334f7f193af3ba8e607..0aee76e01b089cc8b4aeda1ee6aaf61b61e44901 100644
--- a/inc/lang/fo/lang.php
+++ b/inc/lang/fo/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin']              = 'Skeivt brúkaranavn ella loyniorð.';
 $lang['minoredit']             = 'Smærri broytingar';
 $lang['draftdate']             = 'Goym kladdu sett frá';
 $lang['nosecedit']             = 'Hendan síðan var broytt undir tilevnan, brotið var ikki rætt dagfest, heintaði fulla síðu í staðin';
+$lang['searchcreatepage']      = "Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.";
 $lang['regmissing']            = 'Tú skalt fylla út øll øki.';
 $lang['reguexists']            = 'Hetta brúkaranavn er upptiki.';
 $lang['regsuccess']            = 'Tú ert nú stovnavur sum brúkari. Títt loyniorð verður sent til tín í einum T-posti.';
diff --git a/inc/lang/fo/searchpage.txt b/inc/lang/fo/searchpage.txt
index 6304a8901dbc9107eecc9a41b35264c063e81ebc..33bcc320647ebee530b44b21c1ca3d5580ed6316 100644
--- a/inc/lang/fo/searchpage.txt
+++ b/inc/lang/fo/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Leiting ======
 
-Tú kanst síggja úrslitini av tíni leiting niðanfyri. Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.
+Tú kanst síggja úrslitini av tíni leiting niðanfyri. @CREATEPAGEINFO@
 
 ===== Leitiúrslit =====
diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php
index a7651e7309aab107c5488018936d88e1581de228..7a9b821580ab2d9c15b4358e88e46372e9ab7b9b 100644
--- a/inc/lang/fr/lang.php
+++ b/inc/lang/fr/lang.php
@@ -35,6 +35,7 @@
  * @author Caillot <remicaillot5@gmail.com>
  * @author Schplurtz le Déboulonné <schplurtz@laposte.net>
  * @author YoBoY <yoboy@ubuntu-fr.org>
+ * @author james <j.mccann@celcat.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -77,7 +78,7 @@ $lang['btn_draftdel']          = 'Effacer le brouillon';
 $lang['btn_revert']            = 'Restaurer';
 $lang['btn_register']          = 'Créer un compte';
 $lang['btn_apply']             = 'Appliquer';
-$lang['btn_media']             = 'Gestionnaire de médias';
+$lang['btn_media']             = 'Gestionnaire Multimédia';
 $lang['btn_deleteuser']        = 'Supprimer mon compte';
 $lang['btn_img_backto']        = 'Retour vers %s';
 $lang['btn_mediaManager']      = 'Voir dans le gestionnaire de médias';
@@ -96,6 +97,7 @@ $lang['badpassconfirm']        = 'Désolé, le mot de passe est erroné';
 $lang['minoredit']             = 'Modification mineure';
 $lang['draftdate']             = 'Brouillon enregistré automatiquement le';
 $lang['nosecedit']             = 'La page a changé entre temps, les informations de la section sont obsolètes ; la page complète a été chargée à la place.';
+$lang['searchcreatepage']      = 'Si vous n\'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié.';
 $lang['regmissing']            = 'Désolé, vous devez remplir tous les champs.';
 $lang['reguexists']            = 'Désolé, ce nom d\'utilisateur est déjà pris.';
 $lang['regsuccess']            = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.';
diff --git a/inc/lang/fr/searchpage.txt b/inc/lang/fr/searchpage.txt
index a9bd91608f712dba7639d4852140b78df7c0727d..5577a3a2a3fb1e2bd09014e7855857b70184c958 100644
--- a/inc/lang/fr/searchpage.txt
+++ b/inc/lang/fr/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Recherche ======
 
-Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié.
+Voici les résultats de votre recherche. @CREATEPAGEINFO@
 
 ===== Résultats =====
diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php
index aed2253590adacee2d791ba7fbc84417a6ae6c8b..82cbbbfab194c8c0f7310be49ff40d55909e063a 100644
--- a/inc/lang/gl/lang.php
+++ b/inc/lang/gl/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin']              = 'Sentímolo, mais o nome de usuario ou o contra
 $lang['minoredit']             = 'Trocos Menores';
 $lang['draftdate']             = 'Borrador gardado automaticamente en';
 $lang['nosecedit']             = 'A páxina mudou entrementres, a información da sección estaba desfasada polo que se cargou a páxina completa no seu lugar.';
+$lang['searchcreatepage']      = "Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado.";
 $lang['regmissing']            = 'Sentímolo, mais tes que cubrir todos os campos.';
 $lang['reguexists']            = 'Sentímolo, mais xa existe un usuario con ese nome.';
 $lang['regsuccess']            = 'O usuario foi creado e o contrasinal enviado por correo-e.';
diff --git a/inc/lang/gl/searchpage.txt b/inc/lang/gl/searchpage.txt
index 227ca5dbc1db90edb9d0055aed64ec72f5a83a9d..e37ec46427c5f7a7933b051e16b5eeff9ced3dcc 100644
--- a/inc/lang/gl/searchpage.txt
+++ b/inc/lang/gl/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Procura ======
 
-Podes atopar os resultados da túa procura a continuación. Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado.
+Podes atopar os resultados da túa procura a continuación. @CREATEPAGEINFO@
 
 ===== Resultados =====
diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php
index 101102b482560a895db79b369105ca56d45234e1..5e2ecbdff2e5ec183795b74c961f34713577a28c 100644
--- a/inc/lang/he/lang.php
+++ b/inc/lang/he/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm']        = 'מצטערים, הסיסמה שגויה';
 $lang['minoredit']             = 'שינוים מזעריים';
 $lang['draftdate']             = 'הטיוטה נשמרה אוטומטית ב־';
 $lang['nosecedit']             = 'הדף השתנה בינתיים, הקטע שערכת אינו מעודכן - העמוד כולו נטען במקום זאת.';
+$lang['searchcreatepage']      = 'אם לא נמצאו דפים בחיפוש, לחיצה על הכפתור "עריכה" תיצור דף חדש על שם מילת החיפוש שהוזנה.';
 $lang['regmissing']            = 'עליך למלא את כל השדות, עמך הסליחה.';
 $lang['reguexists']            = 'משתמש בשם זה כבר נרשם, עמך הסליחה.';
 $lang['regsuccess']            = 'ההרשמה הצליחה, המשתמש נרשם והודעה נשלחה בדוא״ל.';
diff --git a/inc/lang/he/searchpage.txt b/inc/lang/he/searchpage.txt
index aed23be2417684cc9b9a1c06497166675c42136a..78839c371ba0d9fc6cf75251f98de2d7fc1d21ba 100644
--- a/inc/lang/he/searchpage.txt
+++ b/inc/lang/he/searchpage.txt
@@ -1,5 +1,5 @@
 ====== חיפוש ======
 
-ניתן לראות את תוצאות החיפוש למטה. אם לא נמצאו דפים בחיפוש, לחיצה על הכפתור "עריכה" תיצור דף חדש על שם מילת החיפוש שהוזנה.
+ניתן לראות את תוצאות החיפוש למטה. @CREATEPAGEINFO@
 
 ===== תוצאות =====
\ No newline at end of file
diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php
index 69157015be160dfdf6a85eaab50e3d765736f5f8..c3cf6d8221621e0f9ce86a80985252beb15947f6 100644
--- a/inc/lang/hr/lang.php
+++ b/inc/lang/hr/lang.php
@@ -62,13 +62,14 @@ $lang['oldpass']               = 'Potvrdi trenutnu lozinku';
 $lang['passchk']               = 'još jednom';
 $lang['remember']              = 'Zapamti me';
 $lang['fullname']              = 'Ime i prezime';
-$lang['email']                 = 'Email';
+$lang['email']                 = 'E-pošta';
 $lang['profile']               = 'Korisnički profil';
 $lang['badlogin']              = 'Ne ispravno korisničko ime ili lozinka.';
 $lang['badpassconfirm']        = 'Nažalost, lozinka nije ispravna';
 $lang['minoredit']             = 'Manje izmjene';
 $lang['draftdate']             = 'Nacrt promjena automatski spremljen u';
 $lang['nosecedit']             = 'Stranica se u međuvremenu promijenila. Informacija o odjeljku je ostarila pa je učitana kompletna stranica.';
+$lang['searchcreatepage']      = 'Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom.';
 $lang['regmissing']            = 'Morate popuniti sva polja.';
 $lang['reguexists']            = 'Korisnik s tim korisničkim imenom već postoji.';
 $lang['regsuccess']            = 'Korisnik je uspješno stvoren i poslana je lozinka emailom.';
@@ -99,8 +100,8 @@ $lang['license']               = 'Osim na mjestima gdje je naznačeno drugačije
 $lang['licenseok']             = 'Pažnja: promjenom ovog dokumenta pristajete licencirati sadržaj sljedećom licencom: ';
 $lang['searchmedia']           = 'Traži naziv datoteke:';
 $lang['searchmedia_in']        = 'Traži u %s';
-$lang['txt_upload']            = 'Odaberite datoteku za postavljanje:';
-$lang['txt_filename']          = 'Postaviti kao (nije obavezno):';
+$lang['txt_upload']            = 'Odaberite datoteku za učitavanje:';
+$lang['txt_filename']          = 'Učitaj kao (nije obavezno):';
 $lang['txt_overwrt']           = 'Prepiši postojeću datoteku';
 $lang['maxuploadsize']         = 'Moguće je učitati maks. %s po datoteci.';
 $lang['lockedby']              = 'Trenutno zaključao:';
@@ -155,7 +156,7 @@ $lang['uploadsucc']            = 'Učitavanje uspješno';
 $lang['uploadfail']            = 'Neuspješno učitavanje. Možda dozvole na poslužitelju nisu ispravne?';
 $lang['uploadwrong']           = 'Učitavanje nije dopušteno. Nastavak datoteke je zabranjen!';
 $lang['uploadexist']           = 'Datoteka već postoji.';
-$lang['uploadbadcontent']      = 'Postavljeni sadržaj ne odgovara ekstenziji %s datoteke.';
+$lang['uploadbadcontent']      = 'Učitani sadržaj ne odgovara ekstenziji %s datoteke.';
 $lang['uploadspam']            = 'Učitavanje je spriječeno od spam crne liste.';
 $lang['uploadxss']             = 'Učitavanje je spriječeno zbog mogućeg zlonamjernog sadržaja.';
 $lang['uploadsize']            = 'Učitana datoteka je prevelika (max. %s)';
@@ -190,7 +191,7 @@ $lang['difflastrev']           = 'Zadnja izmjena';
 $lang['diffbothprevrev']       = 'Starije izmjene na obje strane';
 $lang['diffbothnextrev']       = 'Novije izmjene na obje strane';
 $lang['line']                  = 'Redak';
-$lang['breadcrumb']            = 'Putanja:';
+$lang['breadcrumb']            = 'Zadnje viđeno:';
 $lang['youarehere']            = 'Vi ste ovdje:';
 $lang['lastmod']               = 'Zadnja izmjena:';
 $lang['by']                    = 'od';
@@ -211,7 +212,7 @@ $lang['mail_newpage']          = 'stranica dodana:';
 $lang['mail_changed']          = 'stranica izmjenjena:';
 $lang['mail_subscribe_list']   = 'stranice promijenjene u imenskom prostoru:';
 $lang['mail_new_user']         = 'novi korisnik:';
-$lang['mail_upload']           = 'datoteka postavljena:';
+$lang['mail_upload']           = 'datoteka učitana:';
 $lang['changes_type']          = 'Vidi promjene od';
 $lang['pages_changes']         = 'Stranice';
 $lang['media_changes']         = 'Datoteke';
@@ -276,7 +277,7 @@ $lang['subscr_style_list']     = 'listu promijenjenih stranica od zadnje primlje
 $lang['authtempfail']          = 'Autentifikacija korisnika je privremeno nedostupna. Molimo Vas da kontaktirate administratora.';
 $lang['authpwdexpire']         = 'Vaša lozinka će isteći za %d dana, trebate ju promijeniti.';
 $lang['i_chooselang']          = 'Izaberite vaš jezik';
-$lang['i_installer']           = 'DokuWiki instalacija';
+$lang['i_installer']           = 'DokuWiki postavljanje';
 $lang['i_wikiname']            = 'Naziv Wikija';
 $lang['i_enableacl']           = 'Omogući ACL (preporučeno)';
 $lang['i_superuser']           = 'Superkorisnik';
@@ -339,3 +340,5 @@ $lang['currentns']             = 'Tekući imenički prostor';
 $lang['searchresult']          = 'Rezultati pretraživanja';
 $lang['plainhtml']             = 'ÄŒisti HTML';
 $lang['wikimarkup']            = 'Wiki kod';
+$lang['page_nonexist_rev']     = 'Stranica ne postoji na %s. Ona je naknadno napravljena na <a href="%s">%s</a>.';
+$lang['unable_to_parse_date']  = 'Ne mogu analizirati parametar "%s".';
diff --git a/inc/lang/hr/searchpage.txt b/inc/lang/hr/searchpage.txt
index 7a94f32d2a75c1eede578e4be4bdc59e60a3f6ad..90d2ffdf4653e9634b258984aa589b0d5115c147 100644
--- a/inc/lang/hr/searchpage.txt
+++ b/inc/lang/hr/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Pretraživanja ======
 
-Možete naći rezultat vaše pretrage u nastavku. Ako ne možete naći što tražite, možete urediti ili stvoriti novu stranicu s odgovarajućim alatom.
+Možete naći rezultat vaše pretrage u nastavku. @CREATEPAGEINFO@
 
 ====== Rezultati ======
diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php
index eb4b4601adbf4932ccdd0f1d0370631374b1a6a7..bdc78f68dec1790abacf2ab180cfa87b42d7244f 100644
--- a/inc/lang/hu/lang.php
+++ b/inc/lang/hu/lang.php
@@ -75,6 +75,7 @@ $lang['badpassconfirm']        = 'Hibás jelszó';
 $lang['minoredit']             = 'Apróbb változások';
 $lang['draftdate']             = 'Piszkozat elmentve:';
 $lang['nosecedit']             = 'Időközben megváltozott az oldal, emiatt a szakasz nem friss. Töltsd újra az egész oldalt!';
+$lang['searchcreatepage']      = "Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.";
 $lang['regmissing']            = 'Sajnáljuk, az összes mezőt ki kell töltened.';
 $lang['reguexists']            = 'Sajnáljuk, ilyen azonosítójú felhasználónk már van.';
 $lang['regsuccess']            = 'A felhasználói azonosítót létrehoztuk. A jelszót postáztuk.';
diff --git a/inc/lang/hu/searchpage.txt b/inc/lang/hu/searchpage.txt
index ffde87b66d169fee5c537df198d9f3ed222071ef..7e186e5cbb1582077cb38269731218122783c153 100644
--- a/inc/lang/hu/searchpage.txt
+++ b/inc/lang/hu/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Keresés ======
 
-A keresés eredményét lentebb láthatod. Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.
+A keresés eredményét lentebb láthatod. @CREATEPAGEINFO@
 
 ===== Eredmény(ek) =====
\ No newline at end of file
diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php
index cabbbab93c6cb8eb3c454ef43e757dd774cf6db8..a533883b6142b703856fe8c900b016f2f22bb23a 100644
--- a/inc/lang/ia/lang.php
+++ b/inc/lang/ia/lang.php
@@ -64,6 +64,7 @@ $lang['badlogin']              = 'Le nomine de usator o le contrasigno es incorr
 $lang['minoredit']             = 'Modificationes minor';
 $lang['draftdate']             = 'Version provisori automaticamente salveguardate le';
 $lang['nosecedit']             = 'Le pagina ha essite modificate intertanto. Le informationes del section es ora obsolete, dunque le pagina complete ha essite cargate in su loco.';
+$lang['searchcreatepage']      = 'Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate.';
 $lang['regmissing']            = 'Es necessari completar tote le campos.';
 $lang['reguexists']            = 'Regrettabilemente, un usator con iste nomine ja existe.';
 $lang['regsuccess']            = 'Le conto ha essite create e le contrasigno ha essite inviate per e-mail.';
diff --git a/inc/lang/ia/searchpage.txt b/inc/lang/ia/searchpage.txt
index c536833717169c0fd002f1b87793e61ce867752b..a8f7fce514c8a3b8ae1f049bf0f20e15a06de0cd 100644
--- a/inc/lang/ia/searchpage.txt
+++ b/inc/lang/ia/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Recerca ======
 
-Le resultatos de tu recerca se trova hic infra. Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate.
+Le resultatos de tu recerca se trova hic infra. @CREATEPAGEINFO@
 
 ===== Resultatos =====
\ No newline at end of file
diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php
index ff77cf24da7c008f213901931ba729728fc740ba..dc4ca00e0ef10efe2df1cdfeadd9e7aee3eafa7b 100644
--- a/inc/lang/id/lang.php
+++ b/inc/lang/id/lang.php
@@ -69,6 +69,7 @@ $lang['badlogin']              = 'Maaf, username atau password salah.';
 $lang['badpassconfirm']        = 'Maaf, password salah';
 $lang['minoredit']             = 'Perubahan Minor';
 $lang['draftdate']             = 'Simpan draft secara otomatis';
+$lang['searchcreatepage']      = 'Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".';
 $lang['regmissing']            = 'Maaf, Anda harus mengisi semua field.';
 $lang['reguexists']            = 'Maaf, user dengan user login ini telah ada.';
 $lang['regsuccess']            = 'User telah didaftarkan dan password telah dikirim ke email Anda.';
diff --git a/inc/lang/id/searchpage.txt b/inc/lang/id/searchpage.txt
index c47bed7dc5625b14a6362bf9794f92cccb00dcf0..b3fb56580057b838bca297d0c6896c9a91c0a68d 100644
--- a/inc/lang/id/searchpage.txt
+++ b/inc/lang/id/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Pencarian ======
 
-Anda dapat menemukan hasil pencarian dibawah ini. Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".
+Anda dapat menemukan hasil pencarian dibawah ini. @CREATEPAGEINFO@
 
 ===== Hasil Pencarian =====
\ No newline at end of file
diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php
index f59a7b9488327edb997b1012f5371f4ca095b53f..9cde9d28ed10cffd1ff2e76f3df485f5640b660e 100644
--- a/inc/lang/it/lang.php
+++ b/inc/lang/it/lang.php
@@ -81,6 +81,7 @@ $lang['badpassconfirm']        = 'La password è errata';
 $lang['minoredit']             = 'Modifiche minori';
 $lang['draftdate']             = 'Bozza salvata in automatico il';
 $lang['nosecedit']             = 'La pagina è stata modificata nel frattempo; è impossibile modificare solo la sezione scelta, quindi è stata caricata la pagina intera.';
+$lang['searchcreatepage']      = "Se non hai trovato quello che cercavi, puoi creare una nuova pagina con questo titolo usando il pulsante ''Crea questa pagina''.";
 $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.';
diff --git a/inc/lang/it/searchpage.txt b/inc/lang/it/searchpage.txt
index 60a019c3e7b8f2c92202e20000eb899d96550be5..6f269da015e89c172a0ae7c4b2d2fd7f290b3e37 100644
--- a/inc/lang/it/searchpage.txt
+++ b/inc/lang/it/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Cerca ======
 
-Questi sono i risultati della ricerca. Se non hai trovato quello che cercavi, puoi creare una nuova pagina con questo titolo usando il pulsante ''Crea questa pagina''.
+Questi sono i risultati della ricerca. @CREATEPAGEINFO@
 
 ===== Risultati =====
diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php
index 381863eb3538ec0980256266d19aa8b3ad3b3a86..30068d7824fac0f0729610338693fe2ca10943d1 100644
--- a/inc/lang/ja/lang.php
+++ b/inc/lang/ja/lang.php
@@ -73,6 +73,7 @@ $lang['badpassconfirm']        = 'パスワードが間違っています。';
 $lang['minoredit']             = '小変更';
 $lang['draftdate']             = 'ドラフト保存日時:';
 $lang['nosecedit']             = 'ページ内容が変更されていますがセクション情報が古いため、代わりにページ全体をロードしました。';
+$lang['searchcreatepage']      = 'もし、探しているものが見つからない場合、 検索キーワードにちなんだ名前の文書を作成もしくは編集を行ってください。';
 $lang['regmissing']            = '全ての項目を入力してください。';
 $lang['reguexists']            = 'このユーザー名は既に存在しています。';
 $lang['regsuccess']            = '新しいユーザーが作成されました。パスワードは登録したメールアドレス宛てに送付されます。';
diff --git a/inc/lang/ja/searchpage.txt b/inc/lang/ja/searchpage.txt
index af312728b9c34080dcadf6154eceb25a2d3276cf..80b0950c6878357b2edd6d3425ce7996e5a8c1e9 100644
--- a/inc/lang/ja/searchpage.txt
+++ b/inc/lang/ja/searchpage.txt
@@ -1,5 +1,5 @@
 ====== 検索 ======
 
-以下に検索結果を表示します。もし、探しているものが見つからない場合、 検索キーワードにちなんだ名前の文書を作成もしくは編集を行ってください。
+以下に検索結果を表示します。@CREATEPAGEINFO@
 
 ===== 結果 =====
diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php
index ff5e66d9b1b8584d28e899af07cc7913301eeeb9..61bb5835079b4485cb13e4d382a70948a674e281 100644
--- a/inc/lang/ko/lang.php
+++ b/inc/lang/ko/lang.php
@@ -74,6 +74,7 @@ $lang['badpassconfirm']        = '죄송하지만 비밀번호가 잘못되었
 $lang['minoredit']             = '사소한 바뀜';
 $lang['draftdate']             = '초안 자동 저장 시간';
 $lang['nosecedit']             = '한 동안 문서가 바뀌었으며, 문단 정보가 오래되어 문서 전체를 대신 열었습니다.';
+$lang['searchcreatepage']      = '만약 원하는 문서를 찾지 못했다면, \'\'문서 만들기\'\'나 \'\'문서 편집\'\'을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.';
 $lang['regmissing']            = '죄송하지만 모든 필드를 채워야 합니다.';
 $lang['reguexists']            = '죄송하지만 같은 이름을 사용하는 사용자가 있습니다.';
 $lang['regsuccess']            = '사용자를 만들었으며 비밀번호는 이메일로 보냈습니다.';
@@ -343,3 +344,5 @@ $lang['currentns']             = '현재 이름공간';
 $lang['searchresult']          = '검색 결과';
 $lang['plainhtml']             = '일반 HTML';
 $lang['wikimarkup']            = '위키 문법';
+$lang['page_nonexist_rev']     = '문서가 %s에 존재하지 않았습니다. 그 뒤로 <a href="%s">%s</a>에 만들어졌습니다.';
+$lang['unable_to_parse_date']  = '"%s" 변수에서 구문 분석할 수 없습니다.';
diff --git a/inc/lang/ko/searchpage.txt b/inc/lang/ko/searchpage.txt
index 53faa04c6feec977c0544bbefe3e87477806738c..6aa1c89af8f2e8985f8cd2311abfc7489d1e8213 100644
--- a/inc/lang/ko/searchpage.txt
+++ b/inc/lang/ko/searchpage.txt
@@ -1,5 +1,5 @@
 ====== 검색 ======
 
-아래에서 검색 결과를 찾을 수 있습니다. 만약 원하는 문서를 찾지 못했다면, ''문서 만들기''나 ''문서 편집''을 사용해 검색어와 같은 이름의 문서를 만들거나 편집할 수 있습니다.
+아래에서 검색 결과를 찾을 수 있습니다. @CREATEPAGEINFO@
 
-===== ê²°ê³¼ =====
\ No newline at end of file
+===== ê²°ê³¼ =====
diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php
index b1b733ec94a8e9bd298de78b97480e22287804dd..a3c91eee8584af45f8b29fcbb14a6e63531f1043 100644
--- a/inc/lang/ku/lang.php
+++ b/inc/lang/ku/lang.php
@@ -138,5 +138,6 @@ $lang['img_copyr']   = 'Copyright:';
 $lang['img_format']  = 'Format:';
 $lang['img_camera']  = 'Camera:';
 $lang['img_keywords']= 'Keywords:';
+$lang['searchcreatepage']      = "Heke tiştek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.";
 
 //Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/ku/searchpage.txt b/inc/lang/ku/searchpage.txt
index 6646228d5200b6b5a2626139f7cdf79b3d07523a..f762b9873c7f9422eb5871c0b4c168ec90059911 100644
--- a/inc/lang/ku/searchpage.txt
+++ b/inc/lang/ku/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Lêbigere ======
 
-Jêr encamên lêgerandina te tên nîşan dan. Heke tiştek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.
+Jêr encamên lêgerandina te tên nîşan dan. @CREATEPAGEINFO@
 
 ===== Encam =====
\ No newline at end of file
diff --git a/inc/lang/la/searchpage.txt b/inc/lang/la/searchpage.txt
index 8e929110d7fb60f408a526992a04c504da760352..75fd7cd5bcc924e1b699c623e6abce8b10cb60f6 100644
--- a/inc/lang/la/searchpage.txt
+++ b/inc/lang/la/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Quaerere ======
 
-Responsiones in hac pagina uidere potes.
+Responsiones in hac pagina uidere potes. @CREATEPAGEINFO@
 
 ===== Responsiones =====
\ No newline at end of file
diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php
index a1b6ccf84abb730655d79890930ec71c3638477a..1090878e2b5e11785a758ab7959e2f6eafc6e288 100644
--- a/inc/lang/lb/lang.php
+++ b/inc/lang/lb/lang.php
@@ -55,6 +55,7 @@ $lang['badlogin']              = 'Entschëllegt, de Benotzernumm oder d\'Passwue
 $lang['minoredit']             = 'Kleng Ännerungen';
 $lang['draftdate']             = 'Entworf automatesch gespäichert den';
 $lang['nosecedit']             = 'D\'Säit gouf an Zwëschenzäit g\'ännert, Sektiounsinfo veralt. Ganz Säit gouf aplaz gelueden.';
+$lang['searchcreatepage']      = 'Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën.';
 $lang['regmissing']            = 'Du muss all d\'Felder ausfëllen.';
 $lang['reguexists']            = 'Et get schonn e Benotzer mat deem Numm.';
 $lang['regsuccess']            = 'De Benotzer gouf erstallt an d\'Passwuert via Email geschéckt.';
diff --git a/inc/lang/lb/searchpage.txt b/inc/lang/lb/searchpage.txt
index 5e15a2c6079c3355389c6e22f1d9053180a063dd..9f4e5475e5548a69e881aae34a0b9c49f1563d15 100644
--- a/inc/lang/lb/searchpage.txt
+++ b/inc/lang/lb/searchpage.txt
@@ -1,5 +1,5 @@
 ======Sich======
 
-Hei ënnendrënner sinn d'Resultater vun der Sich. Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën.
+Hei ënnendrënner sinn d'Resultater vun der Sich. @CREATEPAGEINFO@
 
 =====Resultater=====
\ No newline at end of file
diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php
index d6552d68c76ac2a76f2462aac5e8eea64badf3f8..d53a117f4da945f0ad6742fef11c8973d0d33c5d 100644
--- a/inc/lang/lt/lang.php
+++ b/inc/lang/lt/lang.php
@@ -60,6 +60,7 @@ $lang['badlogin']              = 'NurodÄ—te blogÄ… vartotojo vardÄ… arba slapta
 $lang['minoredit']             = 'Nedidelis pataisymas';
 $lang['draftdate']             = 'Juodraštis automatiškai išsaugotas';
 $lang['nosecedit']             = 'Puslapis buvo kažkieno pataisytas, teksto dalies informacija tapo pasenusi, todėl pakrautas visas puslapis.';
+$lang['searchcreatepage']      = 'Jeigu neradote to, ko ieškojote, galite sukurti naują puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".';
 $lang['regmissing']            = 'Turite užpildyti visus laukus.';
 $lang['reguexists']            = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
 $lang['regsuccess']            = 'Vartotojas sukurtas, slaptažodis išsiųstas el. paštu.';
diff --git a/inc/lang/lt/searchpage.txt b/inc/lang/lt/searchpage.txt
index a83a6a58a99fbb19648e781fa5a1a7d8ec240e0e..f03f5f17b290d87e21cccd0b925ae6bb6f073825 100644
--- a/inc/lang/lt/searchpage.txt
+++ b/inc/lang/lt/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Paieška ======
 
-Žemiau matote Jūsų atliktos paieškos rezultatus. Jeigu neradote to, ko ieškojote, galite sukurti naują puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".
+Žemiau matote Jūsų atliktos paieškos rezultatus. @CREATEPAGEINFO@
 
 ===== Rezultatai =====
\ No newline at end of file
diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php
index 15994afe602f72b7d937303df4034f75db021b04..ddc97fa8906e91837b16857b131f5dfef979e398 100644
--- a/inc/lang/lv/lang.php
+++ b/inc/lang/lv/lang.php
@@ -65,6 +65,7 @@ $lang['badpassconfirm']        = 'Atvaino, aplama parole';
 $lang['minoredit']             = 'Sīki labojumi';
 $lang['draftdate']             = 'Melnraksts automātiski saglabāts';
 $lang['nosecedit']             = 'Lapa pa šo laiku ir mainījusies, sekcijas informācija novecojusi. Ielādēta lapas  pilnās versija.';
+$lang['searchcreatepage']      = 'Ja neatradi meklēto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklētajiem atslēgvārdiem nosaukumā.';
 $lang['regmissing']            = 'Atvaino, jāaizpilda visas ailes.';
 $lang['reguexists']            = 'Atvaino, tāds lietotājs jau ir.';
 $lang['regsuccess']            = 'Lietotājs izveidots. Parole nosūtīta pa pastu.';
diff --git a/inc/lang/lv/searchpage.txt b/inc/lang/lv/searchpage.txt
index 22eb55f04b42efcb4a8b56450686d91d420b0115..a67f9f166a5627671519a9db03097b01fb3259d6 100644
--- a/inc/lang/lv/searchpage.txt
+++ b/inc/lang/lv/searchpage.txt
@@ -1,4 +1,5 @@
 ====== Meklēšana ======
 
-Te vari redzēt meklēšanas rezultātus. Ja neatradi meklēto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklētajiem atslēgvārdiem nosaukumā.
+Te vari redzēt meklēšanas rezultātus. @CREATEPAGEINFO@
+
 ===== Atrasts =====
diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php
index 6239c01fe5f96c437a6c022fe9eb204a7aa0c447..b6e0cc6e0281a822cefef387e2f5ea2ae7f415fb 100644
--- a/inc/lang/mg/lang.php
+++ b/inc/lang/mg/lang.php
@@ -117,5 +117,5 @@ $lang['qb_sig']     = 'Manisy sonia';
 $lang['js']['del_confirm']= 'Hofafana ilay andalana?';
 
 $lang['admin_register']= 'Ampio mpampiasa vaovao...';
-
+$lang['searchcreatepage']      = "Raha tsy nahita izay notadiavinao ianao, dia afaka mamorona pejy vaovao avy amin'ny teny nanaovanao fikarohana; Ampiasao ny bokotra ''Hanova ny pejy''.";
 //Setup VIM: ex: et ts=2 :
diff --git a/inc/lang/mg/searchpage.txt b/inc/lang/mg/searchpage.txt
index 68c6271df45fa076aff882d427cac285e1ae9990..ef3ed8b19139476703b1853ecf9fabb9d1b0fa58 100644
--- a/inc/lang/mg/searchpage.txt
+++ b/inc/lang/mg/searchpage.txt
@@ -2,6 +2,6 @@
 
 Ireto ambany ireto ny valin'ny fikarohanao.
 
-Raha tsy nahita izay notadiavinao ianao, dia afaka mamorona pejy vaovao avy amin'ny teny nanaovanao fikarohana; Ampiasao ny bokotra ''Hanova ny pejy''.
+@CREATEPAGEINFO@
 
 ===== Vokatry ny fikarohana =====
\ No newline at end of file
diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php
index 72779dd10f84a4710740195c5be0a842f059f262..7ebb14b9362de03b11e86c11ab405e5b8809da30 100644
--- a/inc/lang/mr/lang.php
+++ b/inc/lang/mr/lang.php
@@ -68,6 +68,7 @@ $lang['badlogin']              = 'माफ़ करा, वापरकर्
 $lang['minoredit']             = 'छोटे बदल';
 $lang['draftdate']             = 'प्रत आपोआप सुरक्षित केल्याची तारीख';
 $lang['nosecedit']             = 'मध्यंतरीच्या काळात हे पृष्ठ बदलले आहे.विभागाची माहिती जुनी झाली होती. त्याऐवजी सबंध पृष्ठ परत लोड केले आहे.';
+$lang['searchcreatepage']      = 'जर तुमची शोधत असलेली गोष्ट तुम्हाला सापडली नाही, तर योग्य बटण वापरून तुम्ही शोधत असलेल्या गोष्टीविषयी तुम्ही एखादे पान निर्माण किंवा संपादित करू शकता.';
 $lang['regmissing']            = 'कृपया सर्व रकाने भरा.';
 $lang['reguexists']            = 'या नावाने सदस्याची नोंदणी झालेली आहे, कृपया दुसरे सदस्य नाव निवडा.';
 $lang['regsuccess']            = 'सदस्याची नोंदणी झाली आहे आणि परवलीचा शब्द इमेल केला आहे.';
diff --git a/inc/lang/mr/searchpage.txt b/inc/lang/mr/searchpage.txt
index 23e10b1d3a95214f5f154d5a7c9f0d591b014e14..d41954b4a632c6bc8e3237f06b7afbf3fd820952 100644
--- a/inc/lang/mr/searchpage.txt
+++ b/inc/lang/mr/searchpage.txt
@@ -1,5 +1,5 @@
 ====== शोध ======
 
-तुम्हाला खाली तुमच्या शोधाचे फलित दिसतील. जर तुमची शोधत असलेली गोष्ट तुम्हाला सापडली नाही, तर योग्य बटण वापरून तुम्ही शोधत असलेल्या गोष्टीविषयी तुम्ही एखादे पान निर्माण किंवा संपादित करू शकता.
+तुम्हाला खाली तुमच्या शोधाचे फलित दिसतील. @CREATEPAGEINFO@
 
 ====== फलित ======
\ No newline at end of file
diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php
index ddf0312422d1977ed16b999b8e3c2c766fc95e8a..d4efc89bdfa805666a21e8283a8d45270e632c29 100644
--- a/inc/lang/ne/lang.php
+++ b/inc/lang/ne/lang.php
@@ -58,6 +58,7 @@ $lang['badlogin']              = 'माफ गर्नुहोस् , प्
 $lang['minoredit']             = 'सामान्य परिवर्तन';
 $lang['draftdate']             = 'ड्राफ्ट स्वचालित रुपमा वचत भएको';
 $lang['nosecedit']             = 'यो पृष्ठ यसै बखतमा परिवर्तन भयो, खण्ड जानकारी अध्यावधिक हुन सकेन र पूरै पृष्ठ लोड भयो । ';
+$lang['searchcreatepage']      = 'यदि तपाईले आफुले खोजेको पाउनुभएन भने, तपाईलेको उपयुक्त बटन प्रयोग गरी खोज सँग सम्बन्धित शिर्षकहरु भएका पृष्ठ सृजना या सम्पादन गर्न सक्नुहुन्छ ।';
 $lang['regmissing']            = 'माफ गर्नुहोला , सबै ठाउमा भर्नुपर्नेछ ।';
 $lang['reguexists']            = 'यो नामको प्रयोगकर्ता पहिले देखि रहेको छ।';
 $lang['regsuccess']            = 'यो प्रयोगकर्ता बनाइएको छ र प्रवेशशव्द इमेलमा पठइएको छ।';
diff --git a/inc/lang/ne/searchpage.txt b/inc/lang/ne/searchpage.txt
index a8139f0ab1581b22dbc57a1a1e2a46c5748bf3eb..021306b4b83c5fa856241dfba673087ce3726d69 100644
--- a/inc/lang/ne/searchpage.txt
+++ b/inc/lang/ne/searchpage.txt
@@ -1,3 +1,5 @@
 ====== खोज ======
-तपाईले आफ्नो खोजको निम्न नतिजा  पाउन सक्नुहुन्छ। यदि तपाईले आफुले खोजेको पाउनुभएन भने, तपाईलेको उपयुक्त बटन प्रयोग गरी खोज सँग सम्बन्धित शिर्षकहरु भएका पृष्ठ सृजना या सम्पादन गर्न सक्नुहुन्छ ।
+
+तपाईले आफ्नो खोजको निम्न नतिजा  पाउन सक्नुहुन्छ। @CREATEPAGEINFO@
+
 ===== नतिजा =====
\ No newline at end of file
diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php
index a9058720c07eb83258b21961fc09cd6a0020ace9..aa0087718f274cda1214f700912eac9c0897ae86 100644
--- a/inc/lang/nl/lang.php
+++ b/inc/lang/nl/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm']        = 'Sorry, het wachtwoord was onjuist';
 $lang['minoredit']             = 'Kleine wijziging';
 $lang['draftdate']             = 'Concept automatisch opgeslagen op';
 $lang['nosecedit']             = 'De pagina is tussentijds veranderd, sectie-informatie was verouderd, volledige pagina geladen.';
+$lang['searchcreatepage']      = "Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Maak deze pagina aan''.";
 $lang['regmissing']            = 'Vul alle velden in';
 $lang['reguexists']            = 'Er bestaat al een gebruiker met deze loginnaam.';
 $lang['regsuccess']            = 'De gebruiker is aangemaakt. Het wachtwoord is per e-mail verzonden.';
diff --git a/inc/lang/nl/searchpage.txt b/inc/lang/nl/searchpage.txt
index 3ace704c876cac73a806965acfc60ef50ab53ae6..e03679b2b75ded7d597e2fc887ae69d49cb19e3b 100644
--- a/inc/lang/nl/searchpage.txt
+++ b/inc/lang/nl/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Zoeken ======
 
-Hieronder zijn de resultaten van de zoekopdracht. Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Pagina aanpassen''.
+Hieronder zijn de resultaten van de zoekopdracht. @CREATEPAGEINFO@
 
 ===== Resultaten =====
diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php
index 6156fa34c91c47a1fd8efdbe04d690202ad8dea9..ecf10ff5bcc33c21900dfa2b6af269c992ce4b07 100644
--- a/inc/lang/no/lang.php
+++ b/inc/lang/no/lang.php
@@ -21,6 +21,7 @@
  * @author Thomas Juberg <Thomas.Juberg@Gmail.com>
  * @author Boris <boris@newton-media.no>
  * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -82,6 +83,7 @@ $lang['badpassconfirm']        = 'Beklager, passordet var feil';
 $lang['minoredit']             = 'Mindre endringer';
 $lang['draftdate']             = 'Kladd autolagret';
 $lang['nosecedit']             = 'Siden ble endret i mellomtiden, seksjonsinfo har blitt foreldet - lastet full side istedet.';
+$lang['searchcreatepage']      = 'Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på \'\'**Lag denne siden**\'\'-knappen.';
 $lang['regmissing']            = 'Vennligst fyll ut alle felt.';
 $lang['reguexists']            = 'Det finnes allerede en konto med dette brukernavnet.';
 $lang['regsuccess']            = 'Brukerkonto har blitt laget og passord har blitt sendt via e-post.';
@@ -115,7 +117,7 @@ $lang['searchmedia_in']        = 'Søk i %s';
 $lang['txt_upload']            = 'Velg fil som skal lastes opp:';
 $lang['txt_filename']          = 'Skriv inn wikinavn (alternativt):';
 $lang['txt_overwrt']           = 'Overskriv eksisterende fil';
-$lang['maxuploadsize']         = 'Opplast maks % per fil.';
+$lang['maxuploadsize']         = 'Opplast maks %s per fil.';
 $lang['lockedby']              = 'LÃ¥st av:';
 $lang['lockexpire']            = 'Låsingen utløper:';
 $lang['js']['willexpire']      = 'Din redigeringslås for dette dokumentet kommer snart til å utløpe.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
@@ -355,3 +357,4 @@ $lang['currentns']             = 'gjeldende navnemellomrom';
 $lang['searchresult']          = 'Søk i resultat';
 $lang['plainhtml']             = 'Enkel HTML';
 $lang['wikimarkup']            = 'wiki-format';
+$lang['page_nonexist_rev']     = 'Finnes ingen side på %s. Den er derfor laget på <a href="%s">%s</a>';
diff --git a/inc/lang/no/searchpage.txt b/inc/lang/no/searchpage.txt
index e94e7895b39e8846e597a647ed71704ffd31f130..2e7b0d887a62cf92696df7f3c5309050d3abb73f 100644
--- a/inc/lang/no/searchpage.txt
+++ b/inc/lang/no/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Søk ======
 
-Du ser resultatet av dette søket nedenfor. Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på ''**Lag denne siden**''-knappen.
+Du ser resultatet av dette søket nedenfor. @CREATEPAGEINFO@
 
 ===== Resultat =====
diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php
index c6ff4983e936382986675d82c88b5d6f9840efae..baf3c28a989859047294646893a04e469354dfd8 100644
--- a/inc/lang/pl/lang.php
+++ b/inc/lang/pl/lang.php
@@ -78,6 +78,7 @@ $lang['badpassconfirm']        = 'Niestety, hasło jest niepoprawne.';
 $lang['minoredit']             = 'Mniejsze zmiany';
 $lang['draftdate']             = 'Czas zachowania szkicu';
 $lang['nosecedit']             = 'Strona została zmodyfikowana, sekcje zostały zmienione. Załadowano całą stronę.';
+$lang['searchcreatepage']      = 'Jeśli nie znaleziono szukanego hasła, możesz utworzyć nową stronę, której tytułem będzie poszukiwane hasło.';
 $lang['regmissing']            = 'Wypełnij wszystkie pola.';
 $lang['reguexists']            = 'Użytkownik o tej nazwie już istnieje.';
 $lang['regsuccess']            = 'Utworzono użytkownika. Hasło zostało przesłane pocztą.';
diff --git a/inc/lang/pl/searchpage.txt b/inc/lang/pl/searchpage.txt
index 61b9ffbf94bad8eba46aa13979b4ea0c67a781e1..442975fe10e06dd04198d314cb2d42b4f4ae1894 100644
--- a/inc/lang/pl/searchpage.txt
+++ b/inc/lang/pl/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Wyszukiwanie ======
 
-Wyniki wyszukiwania. Jeśli nie znaleziono szukanego hasła, możesz utworzyć nową stronę, której tytułem będzie poszukiwane hasło.
+Wyniki wyszukiwania. @CREATEPAGEINFO@
 
 ===== Wyniki =====
diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php
index 31940f5be1724bb648ea1b0edf0147874b9f98fe..be62af6fee24015ebb909d90b7f3a906d389be91 100644
--- a/inc/lang/pt-br/lang.php
+++ b/inc/lang/pt-br/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm']        = 'Desculpe, mas a senha está errada ';
 $lang['minoredit']             = 'Alterações mínimas';
 $lang['draftdate']             = 'O rascunho foi salvo automaticamente em';
 $lang['nosecedit']             = 'A página foi modificada nesse intervalo de tempo. Como a informação da seção estava desatualizada, foi carregada a página inteira.';
+$lang['searchcreatepage']      = 'Se você não encontrou o que está procurando, pode criar ou editar a página com o nome que você especificou, usando o botão apropriado.';
 $lang['regmissing']            = 'Desculpe, mas você precisa preencher todos os campos.';
 $lang['reguexists']            = 'Desculpe, mas já existe um usuário com esse nome.';
 $lang['regsuccess']            = 'O usuário foi criado e a senha enviada para seu e-mail.';
diff --git a/inc/lang/pt-br/searchpage.txt b/inc/lang/pt-br/searchpage.txt
index 2fba3afe9944a81d1db01d9bd436040eb8cd6b43..636bfeb7aef96b79031def5d209b9293a5d9aabf 100644
--- a/inc/lang/pt-br/searchpage.txt
+++ b/inc/lang/pt-br/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Pesquisa ======
 
-Você pode encontrar os resultados da sua pesquisa abaixo. Se você não encontrou o que está procurando, pode criar ou editar a página com o nome que você especificou, usando o botão apropriado.
+Você pode encontrar os resultados da sua pesquisa abaixo. @CREATEPAGEINFO@
 
 ===== Resultados =====
diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php
index ddc9b33ab38ca2dcd4f6a66112ac24ae787cdbb8..54f56f8e3b3798e9e8a2226f92ebb5c71d0b41f0 100644
--- a/inc/lang/pt/lang.php
+++ b/inc/lang/pt/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm']        = 'Infelizmente a palavra-passe não é a correct
 $lang['minoredit']             = 'Alterações Menores';
 $lang['draftdate']             = 'Rascunho automaticamente gravado em';
 $lang['nosecedit']             = 'A página foi modificada entretanto. Como a informação da secção estava desactualizada, foi carregada a página inteira.';
+$lang['searchcreatepage']      = 'Se não encontrou o que procurava pode criar uma nova página com o nome da sua pesquisa, usando o botão apropriado.';
 $lang['regmissing']            = 'Por favor, preencha todos os campos.';
 $lang['reguexists']            = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
 $lang['regsuccess']            = 'O utilizador foi criado e a senha foi enviada para o endereço de correio electrónico usado na inscrição.';
diff --git a/inc/lang/pt/searchpage.txt b/inc/lang/pt/searchpage.txt
index 2239330dd85219edf6b6f8fbdc79f7bfe65aa121..563ce28343796e8c3781c06f817c765542d9ed00 100644
--- a/inc/lang/pt/searchpage.txt
+++ b/inc/lang/pt/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Pesquisa ======
 
-Pode encontrar os resultados da sua pesquisa abaixo. Se não encontrou o que procurava pode criar uma nova página com o nome da sua pesquisa, usando o botão apropriado.
+Pode encontrar os resultados da sua pesquisa abaixo. @CREATEPAGEINFO@
 
 ===== Resultados =====
diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php
index cd7d4fcc3510d9d169f42c3e14c0f7512703aa61..e8d8c4af29d50ef08fc83f903ac8fbf5d9a77138 100644
--- a/inc/lang/ro/lang.php
+++ b/inc/lang/ro/lang.php
@@ -67,6 +67,7 @@ $lang['badlogin']              = 'Ne pare rău, utilizatorul și/sau parola au f
 $lang['minoredit']             = 'Modificare minoră';
 $lang['draftdate']             = 'Schiță salvată automat la';
 $lang['nosecedit']             = 'Pagina s-a modificat între timp, secțiunea info a expirat, s-a încărcat pagina întreagă în loc.';
+$lang['searchcreatepage']      = "Dacă nu ai găsit ce ai căutat, poți crea o pagină nouă prin folosirea butonului ''Editează această pagină''.";
 $lang['regmissing']            = 'Ne pare rău, trebuie să completezi toate cîmpurile.';
 $lang['reguexists']            = 'Ne pare rău, un utilizator cu acest nume este deja autentificat.';
 $lang['regsuccess']            = 'Utilizatorul a fost creat. Parola a fost trimisă prin e-mail.';
diff --git a/inc/lang/ro/searchpage.txt b/inc/lang/ro/searchpage.txt
index 53e66adf06743fbbc75740d9d8ef5b0996511367..d4e3df2ee7a1001458367ec8820bc5d7fceb2469 100644
--- a/inc/lang/ro/searchpage.txt
+++ b/inc/lang/ro/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Căutare ======
 
-Rezultatele căutării sunt afișate mai jos. Dacă nu ai găsit ce ai căutat, poți crea o pagină nouă prin folosirea butonului ''Editează această pagină''.
+Rezultatele căutării sunt afișate mai jos. @CREATEPAGEINFO@
 
 ===== Rezultate =====
diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php
index e2f9b3d57f386123bdaf4f86ea10c9925913fdc6..f491fcaa94734e6f0f96c711fc5e28a63ac3dcfe 100644
--- a/inc/lang/ru/lang.php
+++ b/inc/lang/ru/lang.php
@@ -73,7 +73,7 @@ $lang['btn_media']             = 'Управление медиафайлами'
 $lang['btn_deleteuser']        = 'Удалить мой аккаунт';
 $lang['btn_img_backto']        = 'Вернуться к %s';
 $lang['btn_mediaManager']      = 'Просмотр в «управлении медиафайлами»';
-$lang['loggedinas']            = 'Зашли как:';
+$lang['loggedinas']            = 'Зашли как';
 $lang['user']                  = 'Логин';
 $lang['pass']                  = 'Пароль';
 $lang['newpass']               = 'Новый пароль';
@@ -88,6 +88,7 @@ $lang['badpassconfirm']        = 'Простите, пароль неверны
 $lang['minoredit']             = 'Небольшие изменения';
 $lang['draftdate']             = 'Черновик сохранён';
 $lang['nosecedit']             = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.';
+$lang['searchcreatepage']      = 'Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».';
 $lang['regmissing']            = 'Извините, вам следует заполнить все поля.';
 $lang['reguexists']            = 'Извините, пользователь с таким логином уже существует.';
 $lang['regsuccess']            = 'Пользователь создан; пароль выслан на адрес электронной почты.';
@@ -187,7 +188,7 @@ $lang['mediausage']            = 'Для ссылки на этот файл и
 $lang['mediaview']             = 'Посмотреть исходный файл';
 $lang['mediaroot']             = 'корень';
 $lang['mediaupload']           = 'Здесь можно загрузить файл в текущий каталог («пространство имён»). Чтобы создать подкаталоги, добавьте их к началу имени файла («Загрузить как»). Имена подкаталогов разделяются двоеточиями. ';
-$lang['mediaextchange']        = 'Расширение изменилось: с .%s на .%s!';
+$lang['mediaextchange']        = 'Расширение изменилось с .%s на .%s!';
 $lang['reference']             = 'Ссылки для';
 $lang['ref_inuse']             = 'Этот файл не может быть удалён, так как он используется на следующих страницах:';
 $lang['ref_hidden']            = 'Некоторые ссылки находятся на страницах, на чтение которых у вас нет прав доступа';
@@ -203,7 +204,7 @@ $lang['diff_type']             = 'Посмотреть отличия';
 $lang['diff_inline']           = 'встроенный';
 $lang['diff_side']             = 'бок о бок';
 $lang['diffprevrev']           = 'Предыдущая версия';
-$lang['diffnextrev']           = 'Следущая версия';
+$lang['diffnextrev']           = 'Следующая версия';
 $lang['difflastrev']           = 'Последняя версия';
 $lang['line']                  = 'Строка';
 $lang['breadcrumb']            = 'Вы посетили:';
@@ -287,8 +288,8 @@ $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['subscr_style_digest']   = 'информационное электронное письмо со списком изменений для каждой страницы (каждые %.2f дн.)';
+$lang['subscr_style_list']     = 'список изменённых страниц со времени последнего отправленного электронного письма (каждые %.2f дн.)';
 $lang['authtempfail']          = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом своему администратору вики.';
 $lang['authpwdexpire']         = 'Действие вашего пароля истекает через %d дней. Вы должны изменить его как можно скорее';
 $lang['i_chooselang']          = 'Выберите свой язык/Choose your language';
@@ -311,7 +312,7 @@ $lang['i_success']             = 'Конфигурация прошла успе
                                  <a href="doku.php?id=wiki:welcome">своей новой «Докувики»</a>.';
 $lang['i_failure']             = 'При записи в файлы конфигурации были обнаружены ошибки. Возможно, вам придётся исправить их вручную, прежде чем вы сможете использовать <a href="doku.php?id=wiki:welcome">свою новую «Докувики»</a>.';
 $lang['i_policy']              = 'Исходная политика прав доступа';
-$lang['i_pol0']                = 'Открытая вики (чтение, запись, закачка файлов для всех)';
+$lang['i_pol0']                = 'Открытая вики (чтение, запись, загрузка файлов для всех)';
 $lang['i_pol1']                = 'Общедоступная вики (чтение для всех, запись и загрузка файлов для зарегистрированных пользователей)';
 $lang['i_pol2']                = 'Закрытая вики (чтение, запись и загрузка файлов только для зарегистрированных пользователей)';
 $lang['i_allowreg']            = 'Разрешить пользователям самостоятельно регистрироваться';
@@ -322,10 +323,10 @@ $lang['i_pop_field']           = 'Пожалуйста, помогите нам
 $lang['i_pop_label']           = 'Отправлять раз в месяц анонимную пользовательскую информацию разработчикам «Докувики»';
 $lang['recent_global']         = 'Вы просматриваете изменения в пространстве имён <b>%s</b>. Вы можете также <a href="%s">просмотреть недавние изменения во всей вики</a>.';
 $lang['years']                 = '%d лет назад';
-$lang['months']                = '%d месяц(ев) назад';
+$lang['months']                = '%d месяц (-ев) назад';
 $lang['weeks']                 = '%d недель назад';
 $lang['days']                  = '%d дней назад';
-$lang['hours']                 = '%d час(ов) назад';
+$lang['hours']                 = '%d час (-ов) назад';
 $lang['minutes']               = '%d минут назад';
 $lang['seconds']               = '%d секунд назад';
 $lang['wordblock']             = 'Ваши изменения не сохранены, поскольку они содержат блокируемые слова (спам).';
@@ -341,8 +342,8 @@ $lang['media_sort_name']       = 'Сортировка по имени';
 $lang['media_sort_date']       = 'Сортировка по дате';
 $lang['media_namespaces']      = 'Выберите каталог';
 $lang['media_files']           = 'Файлы в %s';
-$lang['media_upload']          = 'Загрузка в пространство имён <strong>%s</strong>.';
-$lang['media_search']          = 'Поиск в пространстве имён <strong>%s</strong>.';
+$lang['media_upload']          = 'Загрузка в пространство имён %s';
+$lang['media_search']          = 'Поиск в пространстве имён %s';
 $lang['media_view']            = '%s';
 $lang['media_viewold']         = '%s в %s
 ';
diff --git a/inc/lang/ru/mailtext.txt b/inc/lang/ru/mailtext.txt
index 953daddf2cd93a934cefcfdff84289e34b9eee4c..929174910486f41431a742dbf533fcfb177f76a9 100644
--- a/inc/lang/ru/mailtext.txt
+++ b/inc/lang/ru/mailtext.txt
@@ -13,5 +13,5 @@ IP-адрес: @IPADDRESS@
 
 
 -- 
-Это письмо было сгенерировано «Докувики» по адресу
+Это письмо создано «Докувики» с сайта
 @DOKUWIKIURL@
diff --git a/inc/lang/ru/password.txt b/inc/lang/ru/password.txt
index fabdf2b68d2cfdd4c92a9dbc6d378b17d43fc767..360201bd900daf55868bace38f3bac29201c976c 100644
--- a/inc/lang/ru/password.txt
+++ b/inc/lang/ru/password.txt
@@ -6,5 +6,5 @@
 Пароль: @PASSWORD@
 
 -- 
-Это письмо было сгенерировано «Докувики» по адресу
+Это письмо создано «Докувики» с сайта
 @DOKUWIKIURL@
diff --git a/inc/lang/ru/pwconfirm.txt b/inc/lang/ru/pwconfirm.txt
index 954c75dfe506a9af7ed83f00982786a8f21a8dcb..de31aa9a8797a1507aeebbe6e871082f2a5edcb9 100644
--- a/inc/lang/ru/pwconfirm.txt
+++ b/inc/lang/ru/pwconfirm.txt
@@ -9,5 +9,5 @@
 @CONFIRM@
 
 -- 
-Это сообщение было сгенерировано «Докувики» по адресу
+Это письмо создано «Докувики» с сайта
 @DOKUWIKIURL@
diff --git a/inc/lang/ru/registermail.txt b/inc/lang/ru/registermail.txt
index 86ef11e8c41f92dff456fe36f7a4643b42bf68d6..d552965589f4843f0a4ce45380f4928e65366462 100644
--- a/inc/lang/ru/registermail.txt
+++ b/inc/lang/ru/registermail.txt
@@ -10,5 +10,5 @@
 Хост: @HOSTNAME@
 
 -- 
-Это сообщение было сгенерировано «Докувики» по адресу
+Это письмо создано «Докувики» с сайта
 @DOKUWIKIURL@
diff --git a/inc/lang/ru/revisions.txt b/inc/lang/ru/revisions.txt
index 55072cd8ac6bab1f41f198649cc15e2c405d826a..40fbedf0e0db6cbe837f514e40a88e3a58090695 100644
--- a/inc/lang/ru/revisions.txt
+++ b/inc/lang/ru/revisions.txt
@@ -1,3 +1,3 @@
 ====== История страницы ======
 
-Перед вами — история правок текущего документа. Чтобы вернуться к одной из предыдущих версий, выберите нужную, нажмите «Править страницу» и сохраните.
+Перед вами история правок текущего документа. Чтобы вернуться к одной из предыдущих версий, выберите нужную, нажмите «Править страницу» и сохраните.
diff --git a/inc/lang/ru/searchpage.txt b/inc/lang/ru/searchpage.txt
index 04feb21cdb68ff281a4e47e93d39e0c5d1a4de7e..d12a848c65c07e261af220abfcd17abbbc78c52b 100644
--- a/inc/lang/ru/searchpage.txt
+++ b/inc/lang/ru/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Поиск ======
 
-Перед вами результаты поиска. Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку «Создать страницу».
+Перед вами результаты поиска. @CREATEPAGEINFO@
 
 ===== Результаты =====
\ No newline at end of file
diff --git a/inc/lang/ru/uploadmail.txt b/inc/lang/ru/uploadmail.txt
index 84103b45a8df5ae2c81803f0dd798d96e19063dc..1cc5c6a5aa111770535fd34388d1c557b45b98e0 100644
--- a/inc/lang/ru/uploadmail.txt
+++ b/inc/lang/ru/uploadmail.txt
@@ -11,5 +11,5 @@
 Пользователь: @USER@
 
 -- 
-Это письмо было сгенерировано «Докувики» по адресу
+Это письмо создано «Докувики» с сайта
 @DOKUWIKIURL@
diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php
index e501cb7fcf02da685d02b6389ecef20e8d740501..afbf79503db3b40f06a284ccf121a848e8abf1b0 100644
--- a/inc/lang/sk/lang.php
+++ b/inc/lang/sk/lang.php
@@ -66,6 +66,7 @@ $lang['badpassconfirm']        = 'Ľutujem, heslo bolo nesprávne.';
 $lang['minoredit']             = 'Menšie zmeny';
 $lang['draftdate']             = 'Koncept automaticky uložený';
 $lang['nosecedit']             = 'Stránka bola medzičasom zmenená, informácie o sekcii sú zastaralé a z tohto dôvodu bola nahraná celá stránka.';
+$lang['searchcreatepage']      = "Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.";
 $lang['regmissing']            = 'Musíte vyplniť všetky údaje.';
 $lang['reguexists']            = 'Užívateľ s rovnakým menom je už zaregistrovaný.';
 $lang['regsuccess']            = 'Užívateľský účet bol vytvorený a heslo zaslané emailom.';
diff --git a/inc/lang/sk/searchpage.txt b/inc/lang/sk/searchpage.txt
index 3fdf074b7a27a273785257655c7cf674924de938..3684f1c6c38562f9dbae0910cd93e0b2596479a3 100644
--- a/inc/lang/sk/searchpage.txt
+++ b/inc/lang/sk/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Vyhľadávanie ======
 
-Výsledky hľadania môžete vidieť nižšie. Pokiaľ ste nenašli, čo hľadáte, skúste požadovanú stránku sami vytvoriť stlačením tlačidla ''Vytvoriť stránku''.
+Výsledky hľadania môžete vidieť nižšie. @CREATEPAGEINFO@
 
 ===== Výsledky =====
diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php
index f76dbb7d18c86d2912ba6fec69eec210fd2025f6..b649d08cb6f1b99de8ae464f17ce26926d2ff242 100644
--- a/inc/lang/sl/lang.php
+++ b/inc/lang/sl/lang.php
@@ -72,6 +72,7 @@ $lang['badpassconfirm']        = 'Napaka! Geslo ni pravo.';
 $lang['minoredit']             = 'Manjše spremembe';
 $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['searchcreatepage']      = "V kolikor rezultati niso skladni z zahtevami iskanja, je mogoče ustvariti  novo stran z nazivom vaše poizvedbe preko povezave ''Uredi stran''.";
 $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.';
diff --git a/inc/lang/sl/searchpage.txt b/inc/lang/sl/searchpage.txt
index 736a36182cd637df571b86c9da48b692b2e15d52..6ccfa96a4563666875b62d1f824901dada4b15b7 100644
--- a/inc/lang/sl/searchpage.txt
+++ b/inc/lang/sl/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Iskanje ======
 
-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''.
+Spodaj so izpisani rezultati iskanja. @CREATEPAGEINFO@
 
 ===== Rezultati =====
\ No newline at end of file
diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php
index 49984097c613f467cc5a169752ac230623ecedd1..4c61b6a70fe07c6dd10e81c438764a8dc6b3b8de 100644
--- a/inc/lang/sq/lang.php
+++ b/inc/lang/sq/lang.php
@@ -63,6 +63,7 @@ $lang['badlogin']              = 'Na vjen keq, emri ose fjalëkalimi është gab
 $lang['minoredit']             = 'Ndryshime të Vogla';
 $lang['draftdate']             = 'Skica u ruajt automatikisht në';
 $lang['nosecedit']             = 'Faqja u ndryshua ndëwrkohë, informacioni i kwtij seksioni ishte i vjetër, u ngarkua faqja e tërë në vend të saj.';
+$lang['searchcreatepage']      = 'Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës.';
 $lang['regmissing']            = 'Na vjen keq, duhet të plotësoni të gjitha fushat.';
 $lang['reguexists']            = 'Na vjen keq, ekziston një përdorues tjetër me të njëjtin emër.';
 $lang['regsuccess']            = 'Përdoruesi u regjistrua dhe fjalëkalimi u dërgua me email.';
diff --git a/inc/lang/sq/searchpage.txt b/inc/lang/sq/searchpage.txt
index 2f34cabb9aca8a6dd3c8eba4170b6594cc9c09d4..b0d6d1f31fb57826ca2048461dd55d5f1b430d3d 100644
--- a/inc/lang/sq/searchpage.txt
+++ b/inc/lang/sq/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Kërko ======
 
-Mund të gjeni rezultatet e kërkimit tuaj më poshtë. Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës.
+Mund të gjeni rezultatet e kërkimit tuaj më poshtë. @CREATEPAGEINFO@
 
 ===== Rezultate =====
\ No newline at end of file
diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php
index 22a500e76db72fa00fc3dbb655e3e83c4af7480a..37a36c82b1343c859a4de4f653f201124ae40c80 100644
--- a/inc/lang/sr/lang.php
+++ b/inc/lang/sr/lang.php
@@ -60,6 +60,7 @@ $lang['badlogin']              = 'Извините, није добро кори
 $lang['minoredit']             = 'Мала измена';
 $lang['draftdate']             = 'Нацрт је аутоматски сачуван';
 $lang['nosecedit']             = 'Страна је у међувремену промењена, поглавље је застарело и поново се учитава цела страна.';
+$lang['searchcreatepage']      = "Ако нисте нашли то што сте тражили, можете да направите нову страницу названу по Вашем упиту користећи дугме ''Измени ову страницу''.";
 $lang['regmissing']            = 'Извините, морате да попуните сва поља.';
 $lang['reguexists']            = 'Извините, корисник са истим именом већ постоји.';
 $lang['regsuccess']            = 'Корисник је направљен и лозинка је послата путем е-поште.';
diff --git a/inc/lang/sr/searchpage.txt b/inc/lang/sr/searchpage.txt
index 010966a7c42499b2ecea77a59c6902dd53df93bd..458c5b1fc9e9e9e358922b3383b5d8393ca18a8c 100644
--- a/inc/lang/sr/searchpage.txt
+++ b/inc/lang/sr/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Претрага ======
 
-Испод можете да нађете резултате Ваше претраге. Ако нисте нашли то што сте тражили, можете да направите нову страницу названу по Вашем упиту користећи дугме ''Измени ову страницу''.
+Испод можете да нађете резултате Ваше претраге. @CREATEPAGEINFO@
 
 ===== Резултати =====
diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php
index 1f129c62130be96a61a8d5acc374bd2e04de6dc2..f22491db10e5b055ce75ce3b235b13222fdd26b7 100644
--- a/inc/lang/sv/lang.php
+++ b/inc/lang/sv/lang.php
@@ -82,6 +82,7 @@ $lang['badpassconfirm']        = 'Ledsen, lösenordet var felaktigt';
 $lang['minoredit']             = 'Små ändringar';
 $lang['draftdate']             = 'Utkast automatiskt sparat';
 $lang['nosecedit']             = 'Sidan ändrades medan du skrev, sektionsinformationen var inte uppdaterad. Laddar hela sidan istället.';
+$lang['searchcreatepage']      = 'Om du inte hittar det du letar efter, så kan du skapa eller redigera sidan med någon av knapparna.';
 $lang['regmissing']            = 'Du måste fylla i alla fälten.';
 $lang['reguexists']            = 'Det finns redan en användare med det användarnamnet.';
 $lang['regsuccess']            = 'Användarkontot skapat, lösenordet har skickats via e-post.';
diff --git a/inc/lang/sv/searchpage.txt b/inc/lang/sv/searchpage.txt
index bcc88cd95987df90c6b29f224ed852e61d75f2ef..7b2d3bca36155f1a9014088901a22b4b0e12f2ab 100644
--- a/inc/lang/sv/searchpage.txt
+++ b/inc/lang/sv/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Sök ======
 
-Nedan ser du resultatet av sökningen. Om du inte hittar det du letar efter, så kan du skapa eller redigera sidan med någon av knapparna.
+Nedan ser du resultatet av sökningen. @CREATEPAGEINFO@
 
 ===== Resultat =====
diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php
index 0e9f1d3bb5c45eacb9861fb3106d379e835d33a0..113431276783fb21fb2ab401cde15139e98df4c9 100644
--- a/inc/lang/th/lang.php
+++ b/inc/lang/th/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm']        = 'พาสเวิร์ดไม่ถูก
 $lang['minoredit']             = 'เป็นการแก้ไขเล็กน้อย';
 $lang['draftdate']             = 'บันทึกฉบับร่างเมื่อ';
 $lang['nosecedit']             = 'ในช่วงเวลาที่ผ่านมานี้เพจถูกแก้ไขไปแล้ว, เนื้อหาในเซคชั่นนี้ไม่ทันสมัย กรุณาโหลดเพจใหม่ทั้งหน้าแทน';
+$lang['searchcreatepage']      = 'ถ้าคุณไม่พบสิ่งที่คนมองหา คุณสามารถเลือกที่จะสร้าง หรือแก้ไขชื่อเพจหลังจากดูผลสืบค้นแล้วด้วยปุ่มที่เหมาะสม';
 $lang['regmissing']            = 'ขออภัย คุณต้องกรอกให้ครบทุกช่อง';
 $lang['reguexists']            = 'ชื่อบัญชีที่ใส่นั้นมีผู้อื่นได้ใช้แล้ว กรุณาเลือกชื่อผู้ใช้อื่น';
 $lang['regsuccess']            = 'ผู้ใช้ถูกสร้างแล้ว และรหัสผ่านได้ถูกส่งไปทางอีเมลแล้ว';
diff --git a/inc/lang/th/searchpage.txt b/inc/lang/th/searchpage.txt
index d6399a9e9b42524b98e48576e9d203e17167bd66..263c656abf91c7081b1b0c5594c4c57b319dc126 100644
--- a/inc/lang/th/searchpage.txt
+++ b/inc/lang/th/searchpage.txt
@@ -1,4 +1,5 @@
 ====== สืบค้น ======
-คุณสามารถพบผลลัพธ์การสืบค้นของคุณด้านล่าง ถ้าคุณไม่พบสิ่งที่คนมองหา คุณสามารถเลือกที่จะสร้าง หรือแก้ไขชื่อเพจหลังจากดูผลสืบค้นแล้วด้วยปุ่มที่เหมาะสม
+
+คุณสามารถพบผลลัพธ์การสืบค้นของคุณด้านล่าง @CREATEPAGEINFO@
 
 ====== ผลลัพธ์ ======
\ No newline at end of file
diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php
index 90a7ea7ba383993f51a1fe58464162fb74802295..1676256a58bc7763de9195aec3b18ba612d7b8f7 100644
--- a/inc/lang/tr/lang.php
+++ b/inc/lang/tr/lang.php
@@ -74,6 +74,7 @@ $lang['badpassconfirm']        = 'Üzgünüz, parolanız yanlış';
 $lang['minoredit']             = 'Küçük Değişiklikler';
 $lang['draftdate']             = 'Taslak ÅŸu saatte otomatik kaydedildi:';
 $lang['nosecedit']             = 'Sayfa yakın zamanda değiştirilmiştir, bölüm bilgisi eski kalmıştır. Bunun için bölüm yerine tüm sayfa yüklenmiştir.';
+$lang['searchcreatepage']      = "Aradığınız şeyi bulamadıysanız, ''Sayfayı değiştir'' tuşuna tıklayarak girdiğiniz sorgu adıyla yeni bir sayfa oluşturabilirsiniz .";
 $lang['regmissing']            = 'Üzgünüz, tüm alanları doldurmalısınız.';
 $lang['reguexists']            = 'Üzgünüz, bu isime sahip bir kullanıcı zaten mevcut.';
 $lang['regsuccess']            = 'Kullanıcı oluşturuldu ve şifre e-posta adresine gönderildi.';
diff --git a/inc/lang/tr/searchpage.txt b/inc/lang/tr/searchpage.txt
index ae6d50c771c00acc66e4f7ddc770e3465705e0f9..bdb3ddf17494ee7044f84ff082d9c692b5cad428 100644
--- a/inc/lang/tr/searchpage.txt
+++ b/inc/lang/tr/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Arama ======
 
-Aşağıda aramanın sonuçları listelenmiştir. Aradığınız şeyi bulamadıysanız, ''Sayfayı değiştir'' tuşuna tıklayarak girdiğiniz sorgu adıyla yeni bir sayfa oluşturabilirsiniz .
+Aşağıda aramanın sonuçları listelenmiştir. @CREATEPAGEINFO@
 
 ===== Sonuçlar =====
diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php
index 56f064c9fddf0ef9b1c0f75ebfb650fdbe0ec925..a6b08c905ecf31bfc2a7897cd7b6aaaf584ad18a 100644
--- a/inc/lang/uk/lang.php
+++ b/inc/lang/uk/lang.php
@@ -68,6 +68,7 @@ $lang['badpassconfirm']        = 'Вибачте, але пароль невір
 $lang['minoredit']             = 'Незначні зміни';
 $lang['draftdate']             = 'Чернетка збережена';
 $lang['nosecedit']             = 'Сторінку змінено, дані розділу застарілі. Завантажено сторінку повністю.';
+$lang['searchcreatepage']      = 'Якщо ви не знайшли те, що ви шукали, ви можете створити або редагувати сторінку, що має таке ж ім’я, що і пошуковий запит за допомогою відповідної кнопки.';
 $lang['regmissing']            = 'Необхідно заповнити всі поля.';
 $lang['reguexists']            = 'Користувач з таким іменем вже існує.';
 $lang['regsuccess']            = 'Користувача створено. Пароль відправлено на e-mail.';
diff --git a/inc/lang/uk/searchpage.txt b/inc/lang/uk/searchpage.txt
index 971c24814ad43f5a0245207190a594f6630f4503..3889a7618c3814595700af0087875b3e461129f5 100644
--- a/inc/lang/uk/searchpage.txt
+++ b/inc/lang/uk/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Пошук ======
 
-Дивіться результати пошуку нижче. Якщо ви не знайшли те, що ви шукали, ви можете створити або редагувати сторінку, що має таке ж ім’я, що і пошуковий запит за допомогою відповідної кнопки.
+Дивіться результати пошуку нижче. @CREATEPAGEINFO@
 
 ===== Результати =====
diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php
index b2349d0b0bd82b8c7bb2e6819ce35b41cfb29bfa..41a7d590ff6443b94d0b70d0f060384a9e1c90f3 100644
--- a/inc/lang/vi/lang.php
+++ b/inc/lang/vi/lang.php
@@ -59,6 +59,7 @@ $lang['badlogin']              = 'Username hoặc password không đúng.';
 $lang['minoredit']             = 'Minor Changes';
 $lang['draftdate']             = 'Bản nháp được tự động lưu lúc';
 $lang['nosecedit']             = 'Các trang web đã được thay đổi trong khi chờ đợi, phần thông tin quá hạn đã được thay thế bằng trang đầy đủ.';
+$lang['searchcreatepage']      = "Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm.";
 $lang['regmissing']            = 'Bạn cần điền vào tất cả các trường';
 $lang['reguexists']            = 'Bạn khác đã dùng username này rồi.';
 $lang['regsuccess']            = 'Đã tạo username, và đã gởi password.';
diff --git a/inc/lang/vi/searchpage.txt b/inc/lang/vi/searchpage.txt
index 7ded7a808c430a9937ccee76c11075b38defd47f..c0c748545f08eebe6379742fd4c0eefa4da8be10 100644
--- a/inc/lang/vi/searchpage.txt
+++ b/inc/lang/vi/searchpage.txt
@@ -1,5 +1,5 @@
 ====== Tìm ======
 
-Sau đây là kết quả mà bạn đã tìm. Nếu bạn không thấy được những gì bạn đang tìm, bạn có thể tạo một trang mới bằng cách bấm vào nút ''Biên soạn trang này'', khi đó bạn sẽ có 1 trang mới với tên trang chính là tuwfw khóa bạn đã tìm kiếm.
+Sau đây là kết quả mà bạn đã tìm. @CREATEPAGEINFO@
 
 ===== Kết quả =====
diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php
index bf7f89130d9ca8638b4b68c010d8dee9df42ab9b..c5e7da000ba68e06912cd260e3f186de59a8a5f8 100644
--- a/inc/lang/zh-tw/lang.php
+++ b/inc/lang/zh-tw/lang.php
@@ -15,6 +15,7 @@
  * @author Danny Lin <danny0838@gmail.com>
  * @author Stan <talktostan@gmail.com>
  * @author June-Hao Hou <junehao@gmail.com>
+ * @author lioujheyu <lioujheyu@gmail.com>
  */
 $lang['encoding']              = 'utf-8';
 $lang['direction']             = 'ltr';
@@ -76,6 +77,7 @@ $lang['badpassconfirm']        = '抱歉,這密碼是錯的';
 $lang['minoredit']             = '小修改';
 $lang['draftdate']             = '草稿已自動存檔於';
 $lang['nosecedit']             = '在您編輯期間,其他使用者修改過本頁面。區段資料已逾時,因此系統載入了全頁,以取代之。';
+$lang['searchcreatepage']      = '若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。';
 $lang['regmissing']            = '很抱歉,所有欄位都要填寫。';
 $lang['reguexists']            = '很抱歉,有人已使用了這個帳號。';
 $lang['regsuccess']            = '使用者帳號已建立,密碼已寄發至該電郵。';
diff --git a/inc/lang/zh-tw/searchpage.txt b/inc/lang/zh-tw/searchpage.txt
index e0f04c433ecfb9236b2f904d8d06b91ad2076f75..96680019d5c878401fe212bb77e117a19b49248a 100644
--- a/inc/lang/zh-tw/searchpage.txt
+++ b/inc/lang/zh-tw/searchpage.txt
@@ -1,5 +1,5 @@
 ====== 搜尋精靈 ======
 
-提示:您可以在下面找到您的搜尋結果。若沒找到您想要的,可按下按鈕建立或編輯和查詢關鍵字同名的頁面。
+提示:您可以在下面找到您的搜尋結果。@CREATEPAGEINFO@
 
 ===== 搜尋結果 =====
diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php
index 797a9b7a136f605f00b793d2acbcff7bcb04e0e9..d960eb799992373c48b7df481f92754ccebe6c5c 100644
--- a/inc/lang/zh/lang.php
+++ b/inc/lang/zh/lang.php
@@ -85,6 +85,7 @@ $lang['badpassconfirm']        = '对不起,密码错误';
 $lang['minoredit']             = '细微修改';
 $lang['draftdate']             = '草稿自动保存于';
 $lang['nosecedit']             = '在您编辑期间本页刚被他人修改过,局部信息已过期,故载入全页。';
+$lang['searchcreatepage']      = '如果没有找到您想要的东西,您可以使用相应的按钮来创建或编辑该页面。';
 $lang['regmissing']            = '对不起,您必须填写所有的字段。';
 $lang['reguexists']            = '对不起,该用户名已经存在。';
 $lang['regsuccess']            = '新用户已建立,密码将通过电子邮件发送给您。';
diff --git a/inc/lang/zh/searchpage.txt b/inc/lang/zh/searchpage.txt
index 8222e242c183b0634f7d79248d12c74e67ce544c..be7ae7909262120e1e3c25a514f0e6c25297f2c5 100644
--- a/inc/lang/zh/searchpage.txt
+++ b/inc/lang/zh/searchpage.txt
@@ -1,5 +1,5 @@
 ====== 搜索 ======
 
-下面将显示您的搜索结果。如果没有找到您想要的东西,您可以使用相应的按钮来创建或编辑该页面。
+下面将显示您的搜索结果。@CREATEPAGEINFO@
 
 ===== 搜索结果 =====
\ No newline at end of file
diff --git a/inc/mail.php b/inc/mail.php
index 9994ac63e3abd0ff3d66c7cd8feb80e6a54bf307..9f1b1f3d633d5047acbfb0f98310127422b346e7 100644
--- a/inc/mail.php
+++ b/inc/mail.php
@@ -27,7 +27,7 @@ if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL',"\n");
  * Check if a given mail address is valid
  */
 if (!defined('RFC2822_ATEXT')) define('RFC2822_ATEXT',"0-9a-zA-Z!#$%&'*+/=?^_`{|}~-");
-if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?i:[0-9a-z][0-9a-z-]*\.)+(?i:[a-z]{2,4}|museum|travel)');
+if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?i:[0-9a-z][0-9a-z-]*\.)+(?i:[a-z]{2,63})');
 
 /**
  * Prepare mailfrom replacement patterns
diff --git a/inc/media.php b/inc/media.php
index 4ad67369d3b98471549e192e0cacbc06faad1da3..c77f3f952e74ca6d12f813d043d0bccdf65379d2 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -636,11 +636,11 @@ function media_notify($id,$file,$mime,$old_rev=false){
 /**
  * List all files in a given Media namespace
  *
- * @param string      $ns
+ * @param string      $ns             namespace
  * @param null|int    $auth           permission level
  * @param string      $jump           id
  * @param bool        $fullscreenview
- * @param bool|string $sort           sorting order
+ * @param bool|string $sort           sorting order, false skips sorting
  */
 function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=false){
     global $conf;
diff --git a/inc/pageutils.php b/inc/pageutils.php
index b9c6418e2520b1b1e85385a86c3ad52939124799..2fbcbfd1fc82f98fc4aeaa1a82306c752a07bf0c 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -256,7 +256,13 @@ function sectionID($title,&$check) {
  * @param bool       $clean  flag indicating that $id should be cleaned (see wikiFN as well)
  * @return bool exists?
  */
-function page_exists($id,$rev='',$clean=true) {
+function page_exists($id,$rev='',$clean=true, $date_at=false) {
+    if($rev !== '' && $date_at) {
+        $pagelog = new PageChangeLog($id);
+        $pagelog_rev = $pagelog->getLastRevisionAt($rev);
+        if($pagelog_rev !== false)
+            $rev = $pagelog_rev;
+    }
     return @file_exists(wikiFN($id,$rev,$clean));
 }
 
@@ -487,9 +493,17 @@ function resolve_id($ns,$id,$clean=true){
  * @param string &$page   (reference) relative media id, updated to resolved id
  * @param bool   &$exists (reference) updated with existance of media
  */
-function resolve_mediaid($ns,&$page,&$exists){
+function resolve_mediaid($ns,&$page,&$exists,$rev='',$date_at=false){
     $page   = resolve_id($ns,$page);
-    $file   = mediaFN($page);
+    if($rev !== '' &&  $date_at){
+        $medialog = new MediaChangeLog($page);
+        $medialog_rev = $medialog->getLastRevisionAt($rev);
+        if($medialog_rev !== false) {
+            $rev = $medialog_rev;
+        }
+    }
+    
+    $file   = mediaFN($page,$rev);
     $exists = @file_exists($file);
 }
 
@@ -502,7 +516,7 @@ function resolve_mediaid($ns,&$page,&$exists){
  * @param string &$page   (reference) relative page id, updated to resolved id
  * @param bool   &$exists (reference) updated with existance of media
  */
-function resolve_pageid($ns,&$page,&$exists){
+function resolve_pageid($ns,&$page,&$exists,$rev='',$date_at=false ){
     global $conf;
     global $ID;
     $exists = false;
@@ -522,20 +536,26 @@ function resolve_pageid($ns,&$page,&$exists){
     $page = resolve_id($ns,$page,false); // resolve but don't clean, yet
 
     // get filename (calls clean itself)
-    $file = wikiFN($page);
+    if($rev !== '' && $date_at) {
+        $pagelog = new PageChangeLog($page);
+        $pagelog_rev = $pagelog->getLastRevisionAt($rev);
+        if($pagelog_rev !== false)//something found
+           $rev  = $pagelog_rev;
+    }
+    $file = wikiFN($page,$rev);
 
     // if ends with colon or slash we have a namespace link
     if(in_array(substr($page,-1), array(':', ';')) ||
        ($conf['useslash'] && substr($page,-1) == '/')){
-        if(page_exists($page.$conf['start'])){
+        if(page_exists($page.$conf['start'],$rev,true,$date_at)){
             // start page inside namespace
             $page = $page.$conf['start'];
             $exists = true;
-        }elseif(page_exists($page.noNS(cleanID($page)))){
+        }elseif(page_exists($page.noNS(cleanID($page)),$rev,true,$date_at)){
             // page named like the NS inside the NS
             $page = $page.noNS(cleanID($page));
             $exists = true;
-        }elseif(page_exists($page)){
+        }elseif(page_exists($page,$rev,true,$date_at)){
             // page like namespace exists
             $page = $page;
             $exists = true;
@@ -552,7 +572,7 @@ function resolve_pageid($ns,&$page,&$exists){
                 }else{
                     $try = $page.'s';
                 }
-                if(page_exists($try)){
+                if(page_exists($try,$rev,true,$date_at)){
                     $page   = $try;
                     $exists = true;
                 }
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 0e7b294e593b54af45d7caccac97a2d928c52374..d96a01a60aa47982a26b0f65c602393485e1fa75 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -71,6 +71,7 @@ class Doku_Handler {
      */
     function plugin($match, $state, $pos, $pluginname){
         $data = array($match);
+        /** @var DokuWiki_Syntax_Plugin $plugin */
         $plugin = plugin_load('syntax',$pluginname);
         if($plugin != null){
             $data = $plugin->handle($match, $state, $pos, $this);
@@ -808,6 +809,8 @@ class Doku_Handler_List {
     var $listCalls = array();
     var $listStack = array();
 
+    const NODE = 1;
+
     function Doku_Handler_List(& $CallWriter) {
         $this->CallWriter = & $CallWriter;
     }
@@ -859,7 +862,8 @@ class Doku_Handler_List {
         $depth = $this->interpretSyntax($call[1][0], $listType);
 
         $this->initialDepth = $depth;
-        $this->listStack[] = array($listType, $depth);
+        //                   array(list type, current depth, index of current listitem_open)
+        $this->listStack[] = array($listType, $depth, 1);
 
         $this->listCalls[] = array('list'.$listType.'_open',array(),$call[2]);
         $this->listCalls[] = array('listitem_open',array(1),$call[2]);
@@ -884,6 +888,7 @@ class Doku_Handler_List {
     function listOpen($call) {
         $depth = $this->interpretSyntax($call[1][0], $listType);
         $end = end($this->listStack);
+        $key = key($this->listStack);
 
         // Not allowed to be shallower than initialDepth
         if ( $depth < $this->initialDepth ) {
@@ -900,6 +905,9 @@ class Doku_Handler_List {
                 $this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
                 $this->listCalls[] = array('listcontent_open',array(),$call[2]);
 
+                // new list item, update list stack's index into current listitem_open
+                $this->listStack[$key][2] = count($this->listCalls) - 2;
+
             // Switched list type...
             } else {
 
@@ -911,7 +919,7 @@ class Doku_Handler_List {
                 $this->listCalls[] = array('listcontent_open',array(),$call[2]);
 
                 array_pop($this->listStack);
-                $this->listStack[] = array($listType, $depth);
+                $this->listStack[] = array($listType, $depth, count($this->listCalls) - 2);
             }
 
         //------------------------------------------------------------------------
@@ -923,7 +931,10 @@ class Doku_Handler_List {
             $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
             $this->listCalls[] = array('listcontent_open',array(),$call[2]);
 
-            $this->listStack[] = array($listType, $depth);
+            // set the node/leaf state of this item's parent listitem_open to NODE
+            $this->listCalls[$this->listStack[$key][2]][1][1] = self::NODE;
+
+            $this->listStack[] = array($listType, $depth, count($this->listCalls) - 2);
 
         //------------------------------------------------------------------------
         // Getting shallower ( $depth < $end[1] )
@@ -937,6 +948,7 @@ class Doku_Handler_List {
 
             while (1) {
                 $end = end($this->listStack);
+                $key = key($this->listStack);
 
                 if ( $end[1] <= $depth ) {
 
@@ -949,6 +961,9 @@ class Doku_Handler_List {
                         $this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
                         $this->listCalls[] = array('listcontent_open',array(),$call[2]);
 
+                        // new list item, update list stack's index into current listitem_open
+                        $this->listStack[$key][2] = count($this->listCalls) - 2;
+
                     } else {
                         // Switching list type...
                         $this->listCalls[] = array('list'.$end[0].'_close', array(), $call[2]);
@@ -957,7 +972,7 @@ class Doku_Handler_List {
                         $this->listCalls[] = array('listcontent_open',array(),$call[2]);
 
                         array_pop($this->listStack);
-                        $this->listStack[] = array($listType, $depth);
+                        $this->listStack[] = array($listType, $depth, count($this->listCalls) - 2);
                     }
 
                     break;
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 3fc5d1c9a6cd38574a955e48769dfd9520cdc838..ac8fd21304303bc5b9841bf25cc944eb71cc0ccd 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -251,8 +251,9 @@ class Doku_Renderer_metadata extends Doku_Renderer {
      * Open a list item
      *
      * @param int $level the nesting level
+     * @param bool $node true when a node; false when a leaf
      */
-    function listitem_open($level) {
+    function listitem_open($level,$node=false) {
         $this->cdata(str_repeat(DOKU_TAB, $level).'* ');
     }
 
diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php
index 6c074e43e7f10f5fb7e812eac05f6d2694655e6e..e1d28267a1fab6c5c052bece3f3e312316686e6d 100644
--- a/inc/parser/renderer.php
+++ b/inc/parser/renderer.php
@@ -343,8 +343,9 @@ class Doku_Renderer extends DokuWiki_Plugin {
      * Open a list item
      *
      * @param int $level the nesting level
+     * @param bool $node true when a node; false when a leaf
      */
-    function listitem_open($level) {
+    function listitem_open($level,$node=false) {
     }
 
     /**
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index c17c984d6d9f9d11935961fa736e066baf90b1d8..f1703111e67b9f5eba849e87dcfca9a7deaadfbb 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -28,6 +28,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
 
     /** @var array A stack of section edit data */
     protected $sectionedits = array();
+    var $date_at = '';    // link pages and media against this revision
 
     /** @var int last section edit id, used by startSectionEdit */
     protected $lastsecid = 0;
@@ -456,9 +457,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
      * Open a list item
      *
      * @param int $level the nesting level
+     * @param bool $node true when a node; false when a leaf
      */
-    function listitem_open($level) {
-        $this->doc .= '<li class="level'.$level.'">';
+    function listitem_open($level, $node=false) {
+        $branching = $node ? ' node' : '';
+        $this->doc .= '<li class="level'.$level.$branching.'">';
     }
 
     /**
@@ -819,7 +822,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
         $default = $this->_simpleTitle($id);
 
         // now first resolve and clean up the $id
-        resolve_pageid(getNS($ID), $id, $exists);
+        resolve_pageid(getNS($ID), $id, $exists, $this->date_at, true);
 
         $link = array();
         $name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype);
@@ -848,11 +851,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
             $link['pre'] = '<span class="curid">';
             $link['suf'] = '</span>';
         }
-        $link['more']  = '';
-        $link['class'] = $class;
-        $link['url']   = wl($id, $params);
-        $link['name']  = $name;
-        $link['title'] = $id;
+        $link['more']   = '';
+        $link['class']  = $class;
+        if($this->date_at) {
+            $params['at'] = $this->date_at;
+        }
+        $link['url']    = wl($id, $params);
+        $link['name']   = $name;
+        $link['title']  = $id;
         //add search string
         if($search) {
             ($conf['userewrite']) ? $link['url'] .= '?' : $link['url'] .= '&amp;';
@@ -999,6 +1005,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
 
         $link['title'] = $this->_xmlEntities($url);
         $url           = str_replace('\\', '/', $url);
+        $url           = ltrim($url,'/');
         $url           = 'file:///'.$url;
         $link['url']   = $url;
 
@@ -1066,7 +1073,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
                            $height = null, $cache = null, $linking = null, $return = false) {
         global $ID;
         list($src, $hash) = explode('#', $src, 2);
-        resolve_mediaid(getNS($ID), $src, $exists);
+        resolve_mediaid(getNS($ID), $src, $exists, $this->date_at, true);
 
         $noLink = false;
         $render = ($linking == 'linkonly') ? false : true;
@@ -1074,7 +1081,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
 
         list($ext, $mime) = mimetype($src, false);
         if(substr($mime, 0, 5) == 'image' && $render) {
-            $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), ($linking == 'direct'));
+            $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache, 'rev'=>$this->_getLastMediaRevisionAt($src)), ($linking == 'direct'));
         } elseif(($mime == 'application/x-shockwave-flash' || media_supportedav($mime)) && $render) {
             // don't link movies
             $noLink = true;
@@ -1082,7 +1089,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
             // add file icons
             $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext);
             $link['class'] .= ' mediafile mf_'.$class;
-            $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache), true);
+            $link['url'] = ml($src, array('id' => $ID, 'cache' => $cache , 'rev'=>$this->_getLastMediaRevisionAt($src)), true);
             if($exists) $link['title'] .= ' ('.filesize_h(filesize(mediaFN($src))).')';
         }
 
@@ -1440,7 +1447,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
                 return $title;
             }
             //add image tag
-            $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache)).'"';
+            $ret .= '<img src="'.ml($src, array('w' => $width, 'h' => $height, 'cache' => $cache, 'rev'=>$this->_getLastMediaRevisionAt($src))).'"';
             $ret .= ' class="media'.$align.'"';
 
             if($title) {
@@ -1585,7 +1592,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
         // see internalmedia() and externalmedia()
         list($img['src']) = explode('#', $img['src'], 2);
         if($img['type'] == 'internalmedia') {
-            resolve_mediaid(getNS($ID), $img['src'], $exists);
+            resolve_mediaid(getNS($ID), $img['src'], $exists ,$this->date_at, true);
         }
 
         return $this->_media(
@@ -1744,6 +1751,21 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
         $out .= '</audio>'.NL;
         return $out;
     }
+    
+    /**
+     * _getLastMediaRevisionAt is a helperfunction to internalmedia() and _media()
+     * which returns an existing media revision less or equal to rev or date_at
+     *
+     * @author lisps
+     * @param string $media_id
+     * @access protected
+     * @return string revision ('' for current)
+     */
+    function _getLastMediaRevisionAt($media_id){
+        if(!$this->date_at || media_isexternal($media_id)) return '';
+        $pagelog = new MediaChangeLog($media_id);
+        return $pagelog->getLastRevisionAt($this->date_at);
+    }
 
     #endregion
 }
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 4371f1928010714b9ee22ec528156c28928b2c9f..3ef8138a739010b75a4a0c080f90389f31eecc72 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -61,7 +61,7 @@ define('METADATA_RENDER_UNLIMITED', 4);
  * @param bool $excuse
  * @return null|string
  */
-function p_wiki_xhtml($id, $rev='', $excuse=true){
+function p_wiki_xhtml($id, $rev='', $excuse=true,$date_at=''){
     $file = wikiFN($id,$rev);
     $ret  = '';
 
@@ -70,9 +70,9 @@ function p_wiki_xhtml($id, $rev='', $excuse=true){
     $keep = $ID;
     $ID   = $id;
 
-    if($rev){
+    if($rev || $date_at){
         if(@file_exists($file)){
-            $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info); //no caching on old revisions
+            $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info,$date_at); //no caching on old revisions
         }elseif($excuse){
             $ret = p_locale_xhtml('norev');
         }
@@ -620,7 +620,7 @@ function p_sort_modes($a, $b){
  * @param array  $info returns render info like enabled toc and cache
  * @return null|string rendered output
  */
-function p_render($mode,$instructions,&$info){
+function p_render($mode,$instructions,&$info,$date_at=''){
     if(is_null($instructions)) return '';
     if($instructions === false) return '';
 
@@ -629,6 +629,10 @@ function p_render($mode,$instructions,&$info){
 
     $Renderer->reset();
 
+    if($date_at) {
+        $Renderer->date_at = $date_at;
+    }
+    
     $Renderer->smileys = getSmileys();
     $Renderer->entities = getEntities();
     $Renderer->acronyms = getAcronyms();
@@ -674,6 +678,7 @@ function p_get_renderer($mode) {
     }
 
     // not bundled, see if its an enabled renderer plugin & when $mode is 'xhtml', the renderer can supply that format.
+    /** @var Doku_Renderer $Renderer */
     $Renderer = $plugin_controller->load('renderer',$rname);
     if ($Renderer && is_a($Renderer, 'Doku_Renderer')  && ($mode != 'xhtml' || $mode == $Renderer->getFormat())) {
         return $Renderer;
diff --git a/inc/plugin.php b/inc/plugin.php
index 3bab560cb10537b66a03438ba13ea1a786630fbd..9d9b2044c2035f60c6749ba3aecd09e4c90fb55c 100644
--- a/inc/plugin.php
+++ b/inc/plugin.php
@@ -30,7 +30,7 @@ class DokuWiki_Plugin {
      * desc   - Short description of the plugin (Text only)
      * url    - Website with more information on the plugin (eg. syntax description)
      */
-    function getInfo() {
+    public function getInfo(){
         $parts = explode('_', get_class($this));
         $info = DOKU_PLUGIN . '/' . $parts[2] . '/plugin.info.txt';
         if(@file_exists($info)) return confToHash($info);
@@ -51,7 +51,7 @@ class DokuWiki_Plugin {
     /**
      * @return string  plugin type
      */
-    function getPluginType() {
+    public function getPluginType() {
         list($t) = explode('_', get_class($this), 2);
         return $t;
     }
@@ -59,7 +59,7 @@ class DokuWiki_Plugin {
     /**
      * @return string  plugin name
      */
-    function getPluginName() {
+    public function getPluginName() {
         list(/* $t */, /* $p */, $n) = explode('_', get_class($this), 4);
         return $n;
     }
@@ -67,7 +67,7 @@ class DokuWiki_Plugin {
     /**
      * @return string  component name
      */
-    function getPluginComponent() {
+    public function getPluginComponent() {
         list(/* $t */, /* $p */, /* $n */, $c) = explode('_', get_class($this), 4);
         return (isset($c)?$c:'');
     }
@@ -82,7 +82,7 @@ class DokuWiki_Plugin {
      * @param   string  $id     id of the string to be retrieved
      * @return  string  string in appropriate language or english if not available
      */
-    function getLang($id) {
+    public function getLang($id) {
         if (!$this->localised) $this->setupLocale();
 
         return (isset($this->lang[$id]) ? $this->lang[$id] : '');
@@ -97,7 +97,7 @@ class DokuWiki_Plugin {
      * @param   string $id id of language dependent wiki page
      * @return  string     parsed contents of the wiki page in xhtml format
      */
-    function locale_xhtml($id) {
+    public function locale_xhtml($id) {
         return p_cached_output($this->localFN($id));
     }
 
@@ -108,7 +108,7 @@ class DokuWiki_Plugin {
      * @param string $id id of localization file
      * @return string wiki text
      */
-    function localFN($id) {
+    public function localFN($id) {
         global $conf;
         $plugin = $this->getPluginName();
         $file = DOKU_CONF.'plugin_lang/'.$plugin.'/'.$conf['lang'].'/'.$id.'.txt';
@@ -127,16 +127,29 @@ class DokuWiki_Plugin {
      * this function is automatically called by getLang()
      */
     function setupLocale() {
-        if ($this->localised) return;
+        if($this->localised) return;
 
-        global $conf;            // definitely don't invoke "global $lang"
-        $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
+        global $conf, $config_cascade; // definitely don't invoke "global $lang"
+        $path = DOKU_PLUGIN . $this->getPluginName() . '/lang/';
 
         $lang = array();
 
         // don't include once, in case several plugin components require the same language file
-        @include($path.'en/lang.php');
-        if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
+        @include($path . 'en/lang.php');
+        foreach($config_cascade['lang']['plugin'] as $config_file) {
+            if(@file_exists($config_file . $this->getPluginName() . '/en/lang.php')) {
+                include($config_file . $this->getPluginName() . '/en/lang.php');
+            }
+        }
+
+        if($conf['lang'] != 'en') {
+            @include($path . $conf['lang'] . '/lang.php');
+            foreach($config_cascade['lang']['plugin'] as $config_file) {
+                if(@file_exists($config_file . $this->getPluginName() . '/' . $conf['lang'] . '/lang.php')) {
+                    include($config_file . $this->getPluginName() . '/' . $conf['lang'] . '/lang.php');
+                }
+            }
+        }
 
         $this->lang = $lang;
         $this->localised = true;
@@ -152,7 +165,7 @@ class DokuWiki_Plugin {
      * @param mixed  $notset  what to return if the setting is not available
      * @return mixed
      */
-    function getConf($setting, $notset=false){
+    public function getConf($setting, $notset=false){
 
         if (!$this->configloaded){ $this->loadConfig(); }
 
@@ -189,7 +202,7 @@ class DokuWiki_Plugin {
      *
      * @return    array    setting => value
      */
-    function readDefaultSettings() {
+    protected function readDefaultSettings() {
 
         $path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
         $conf = array();
@@ -210,7 +223,7 @@ class DokuWiki_Plugin {
      * @param   bool   $msg    if a message should be displayed in case the plugin is not available
      * @return  DokuWiki_Plugin|null helper plugin object
      */
-    function loadHelper($name, $msg = true){
+    public function loadHelper($name, $msg = true){
         $obj = plugin_load('helper',$name);
         if (is_null($obj) && $msg) msg("Helper plugin $name is not available or invalid.",-1);
         return $obj;
@@ -229,7 +242,7 @@ class DokuWiki_Plugin {
      * @param string $more
      * @return string html
      */
-    function email($email, $name='', $class='', $more='') {
+    public function email($email, $name='', $class='', $more='') {
         if (!$email) return $name;
         $email = obfuscate($email);
         if (!$name) $name = $email;
@@ -248,7 +261,7 @@ class DokuWiki_Plugin {
      * @param string $more
      * @return string
      */
-    function external_link($link, $title='', $class='', $target='', $more='') {
+    public function external_link($link, $title='', $class='', $target='', $more='') {
         global $conf;
 
         $link = htmlentities($link);
@@ -276,7 +289,7 @@ class DokuWiki_Plugin {
      * @param array  $arguments
      * @return null|string
      */
-    function __call($name, $arguments) {
+    public function __call($name, $arguments) {
         if($name == 'render'){
             dbg_deprecated('render_text()');
             if(!isset($arguments[1])) $arguments[1] = 'xhtml';
@@ -294,7 +307,7 @@ class DokuWiki_Plugin {
      * @param string $format output format
      * @return null|string
      */
-    function render_text($text, $format='xhtml') {
+    public function render_text($text, $format='xhtml') {
         return p_render($format, p_get_instructions($text),$info);
     }
 
@@ -303,7 +316,7 @@ class DokuWiki_Plugin {
      *
      * @return bool   false if the plugin has to be instantiated
      */
-    function isSingleton() {
+    public function isSingleton() {
         return true;
     }
 }
diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php
index 21d227ee4970858de433538891762f1dcf0822aa..dfd4d0a2951612860791950a2bd247b49530b963 100644
--- a/inc/plugincontroller.class.php
+++ b/inc/plugincontroller.class.php
@@ -178,8 +178,10 @@ class Doku_Plugin_Controller {
                     // to keep everything simple we just skip the plugin completely
                     continue;
                 } elseif (@file_exists(DOKU_PLUGIN.$plugin.'/disabled')) {
-                    // treat this as a default disabled plugin(over-rideable by the plugin manager)
-                    // deprecated 2011-09-10 (usage of disabled files)
+                    /**
+                     * treat this as a default disabled plugin(over-rideable by the plugin manager)
+                     * @deprecated 2011-09-10 (usage of disabled files)
+                     */
                     if (empty($this->plugin_cascade['local'][$plugin])) {
                         $all_plugins[$plugin] = 0;
                     } else {
diff --git a/inc/template.php b/inc/template.php
index 6bb6275f333b5d582439022005bc9629702eb525..3bccb0bd87756029816c20586ea522e0ed3616c0 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -171,8 +171,9 @@ function tpl_content_core() {
             break;
         default:
             $evt = new Doku_Event('TPL_ACT_UNKNOWN', $ACT);
-            if($evt->advise_before())
+            if($evt->advise_before()) {
                 msg("Failed to handle command: ".hsc($ACT), -1);
+            }
             $evt->advise_after();
             unset($evt);
             return false;
@@ -467,8 +468,8 @@ function _tpl_metaheaders_action($data) {
  * @param string $url
  * @param string $name
  * @param string $more
- * @param bool $return return html
- * @return bool|string html or true
+ * @param bool $return if true return the link html, otherwise print
+ * @return bool|string html of the link, or true if printed
  */
 function tpl_link($url, $name, $more = '', $return = false) {
     $out = '<a href="'.$url.'" ';
@@ -488,7 +489,7 @@ function tpl_link($url, $name, $more = '', $return = false) {
  *
  * @param string      $id   page id
  * @param string|null $name the name of the link
- * @return bool
+ * @return bool true
  */
 function tpl_pagelink($id, $name = null) {
     print '<bdi>'.html_wikilink($id, $name).'</bdi>';
@@ -559,11 +560,11 @@ function tpl_button($type, $return = false) {
  * @author Adrian Lang <mail@adrianlang.de>
  * @see    tpl_get_action
  *
- * @param string $type action command
- * @param string $pre prefix of link
- * @param string $suf suffix of link
- * @param string $inner innerHML of link
- * @param bool $return
+ * @param string $type    action command
+ * @param string $pre     prefix of link
+ * @param string $suf     suffix of link
+ * @param string $inner   innerHML of link
+ * @param bool   $return  if true it returns html, otherwise prints
  * @return bool|string html or false if no data, true if printed
  */
 function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = false) {
@@ -1066,9 +1067,9 @@ function tpl_pagetitle($id = null, $ret = false) {
  *
  * @author Andreas Gohr <andi@splitbrain.org>
  *
- * @param array|string $tags tags to try
+ * @param array|string $tags tag or array of tags to try
  * @param string       $alt  alternative output if no data was found
- * @param null|string   $src the image src, uses global $SRC if not given
+ * @param null|string  $src  the image src, uses global $SRC if not given
  * @return string
  */
 function tpl_img_getTag($tags, $alt = '', $src = null) {
@@ -1162,6 +1163,7 @@ function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
     global $IMG;
     /** @var Input $INPUT */
     global $INPUT;
+    global $REV;
     $w = tpl_img_getTag('File.Width');
     $h = tpl_img_getTag('File.Height');
 
@@ -1186,8 +1188,8 @@ function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
     }
 
     //prepare URLs
-    $url = ml($IMG, array('cache'=> $INPUT->str('cache')), true, '&');
-    $src = ml($IMG, array('cache'=> $INPUT->str('cache'), 'w'=> $w, 'h'=> $h), true, '&');
+    $url = ml($IMG, array('cache'=> $INPUT->str('cache'),'rev'=>$REV), true, '&');
+    $src = ml($IMG, array('cache'=> $INPUT->str('cache'),'rev'=>$REV, 'w'=> $w, 'h'=> $h), true, '&');
 
     //prepare attributes
     $alt = tpl_img_getTag('Simple.Title');
@@ -1316,16 +1318,29 @@ function tpl_getLang($id) {
     static $lang = array();
 
     if(count($lang) === 0) {
-        $path = tpl_incdir().'lang/';
+        global $conf, $config_cascade; // definitely don't invoke "global $lang"
+
+        $path = tpl_incdir() . 'lang/';
 
         $lang = array();
 
-        global $conf; // definitely don't invoke "global $lang"
         // don't include once
-        @include($path.'en/lang.php');
-        if($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
-    }
+        @include($path . 'en/lang.php');
+        foreach($config_cascade['lang']['template'] as $config_file) {
+            if(@file_exists($config_file . $conf['template'] . '/en/lang.php')) {
+                include($config_file . $conf['template'] . '/en/lang.php');
+            }
+        }
 
+        if($conf['lang'] != 'en') {
+            @include($path . $conf['lang'] . '/lang.php');
+            foreach($config_cascade['lang']['template'] as $config_file) {
+                if(@file_exists($config_file . $conf['template'] . '/' . $conf['lang'] . '/lang.php')) {
+                    include($config_file . $conf['template'] . '/' . $conf['lang'] . '/lang.php');
+                }
+            }
+        }
+    }
     return $lang[$id];
 }
 
@@ -1349,7 +1364,7 @@ function tpl_locale_xhtml($id) {
 function tpl_localeFN($id) {
     $path = tpl_incdir().'lang/';
     global $conf;
-    $file = DOKU_CONF.'/template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
+    $file = DOKU_CONF.'template_lang/'.$conf['template'].'/'.$conf['lang'].'/'.$id.'.txt';
     if (!@file_exists($file)){
         $file = $path.$conf['lang'].'/'.$id.'.txt';
         if(!@file_exists($file)){
@@ -1372,7 +1387,7 @@ function tpl_localeFN($id) {
  * @triggers MEDIAMANAGER_CONTENT_OUTPUT
  * @param bool $fromajax - set true when calling this function via ajax
  * @param string $sort
-
+ *
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 function tpl_mediaContent($fromajax = false, $sort='natural') {
diff --git a/install.php b/install.php
index 71c2457dc4f46552abb49bb3440ac0492f736299..d031cb3d93a8052ddfdf904ea3e07b7bc2788e35 100644
--- a/install.php
+++ b/install.php
@@ -58,7 +58,6 @@ $dokuwiki_hash = array(
     '2013-05-10'   => '7b62b75245f57f122d3e0f8ed7989623',
     '2013-12-08'   => '263c76af309fbf083867c18a34ff5214',
     '2014-05-05'   => '263c76af309fbf083867c18a34ff5214',
-    'devel'        => 'b3ddc3f793eac8c135176e535054c00a',
 );
 
 
@@ -557,8 +556,8 @@ function check_functions(){
     global $lang;
     $ok = true;
 
-    if(version_compare(phpversion(),'5.2.0','<')){
-        $error[] = sprintf($lang['i_phpver'],phpversion(),'5.2.0');
+    if(version_compare(phpversion(),'5.3.3','<')){
+        $error[] = sprintf($lang['i_phpver'],phpversion(),'5.3.3');
         $ok = false;
     }
 
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 2212656d2a3a526f4eef0094f621d0e7b78b086f..77674d251b4a6d34739b06ce7b3379f708d9d09d 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -166,8 +166,11 @@ function css_out(){
  * @return string
  */
 function css_parseless($css) {
+    global $conf;
+
     $less = new lessc();
     $less->importDir[] = DOKU_INC;
+    $less->setPreserveComments(!$conf['compress']);
 
     if (defined('DOKU_UNITTEST')){
         $less->importDir[] = TMP_DIR;
@@ -431,7 +434,7 @@ class DokuCssFile {
 
     protected $filepath;             // file system path to the CSS/Less file
     protected $location;             // base url location of the CSS/Less file
-    private   $relative_path = null;
+    protected $relative_path = null;
 
     public function __construct($file) {
         $this->filepath = $file;
@@ -464,7 +467,7 @@ class DokuCssFile {
      *
      * @return string   relative file system path
      */
-    private function getRelativePath(){
+    protected function getRelativePath(){
 
         if (is_null($this->relative_path)) {
             $basedir = array(DOKU_INC);
diff --git a/lib/exe/detail.php b/lib/exe/detail.php
index cd3f362ad69b460016ce9e1e055e3db2da0a503e..cc29d5b87914c4fb6f33e45d0fddb909bbc565be 100644
--- a/lib/exe/detail.php
+++ b/lib/exe/detail.php
@@ -5,6 +5,7 @@ require_once(DOKU_INC.'inc/init.php');
 
 $IMG  = getID('media');
 $ID   = cleanID($INPUT->str('id'));
+$REV  = $INPUT->int('rev');
 
 // this makes some general info available as well as the info about the
 // "parent" page
@@ -35,7 +36,7 @@ $ERROR = false;
 $AUTH = auth_quickaclcheck($IMG);
 if($AUTH >= AUTH_READ){
     // check if image exists
-    $SRC = mediaFN($IMG);
+    $SRC = mediaFN($IMG,$REV); 
     if(!@file_exists($SRC)){
         //doesn't exist!
         http_status(404);
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 97f2b52c3042697f93dc44fcc279faafe113c9c3..ec236e98f58c6a6cb9faf57076a5d295c7466d2b 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -305,7 +305,11 @@ function js_compress($s){
     // items that don't need spaces next to them
     $chars = "^&|!+\-*\/%=\?:;,{}()<>% \t\n\r'\"[]";
 
-    $regex_starters = array("(", "=", "[", "," , ":", "!");
+    // items which need a space if the sign before and after whitespace is equal.
+    // E.g. '+ ++' may not be compressed to '+++' --> syntax error.
+    $ops = "+-";
+
+    $regex_starters = array("(", "=", "[", "," , ":", "!", "&", "|");
 
     $whitespaces_chars = array(" ", "\t", "\n", "\r", "\0", "\x0B");
 
@@ -405,19 +409,27 @@ function js_compress($s){
 
         // whitespaces
         if( $ch == ' ' || $ch == "\r" || $ch == "\n" || $ch == "\t" ){
-            // leading spaces
-            if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
-                $i = $i + 1;
-                continue;
-            }
-            // trailing spaces
-            //  if this ch is space AND the last char processed
-            //  is special, then skip the space
             $lch = substr($result,-1);
-            if($lch && (strpos($chars,$lch) !== false)){
-                $i = $i + 1;
-                continue;
+
+            // Only consider deleting whitespace if the signs before and after
+            // are not equal and are not an operator which may not follow itself.
+            if ((!$lch || $s[$i+1] == ' ')
+                || $lch != $s[$i+1]
+                || strpos($ops,$s[$i+1]) === false) {
+                // leading spaces
+                if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
+                    $i = $i + 1;
+                    continue;
+                }
+                // trailing spaces
+                //  if this ch is space AND the last char processed
+                //  is special, then skip the space
+                if($lch && (strpos($chars,$lch) !== false)){
+                    $i = $i + 1;
+                    continue;
+                }
             }
+
             // else after all of this convert the "whitespace" to
             // a single space.  It will get appended below
             $ch = ' ';
diff --git a/lib/images/smileys/index.php b/lib/images/smileys/index.php
index 9a2905b33662cd884417d13356e2e31a630e677c..4167eda5b8055fece249a383dd5b69dad15cf533 100644
--- a/lib/images/smileys/index.php
+++ b/lib/images/smileys/index.php
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en" dir="ltr">
 <head>
-    <title>simleys</title>
+    <title>smileys</title>
 
     <style type="text/css">
         body {
diff --git a/lib/plugins/acl/lang/eu/lang.php b/lib/plugins/acl/lang/eu/lang.php
index f051523d956b5048d45cbfd10836bac54b2e2e2a..bb6ab964af3752ca6a95e44f220dda8dd4749ac4 100644
--- a/lib/plugins/acl/lang/eu/lang.php
+++ b/lib/plugins/acl/lang/eu/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Basque language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Inko Illarramendi <inko.i.a@gmail.com>
  * @author Zigor Astarbe <astarbe@gmail.com>
  */
diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php
index 021bc5d4b102db08cd9c18cdc2c74cb5e185bb1a..4799b3a38dad26a3d3a9a7b4cdc36b1b3ea9df0d 100644
--- a/lib/plugins/auth.php
+++ b/lib/plugins/auth.php
@@ -132,7 +132,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin {
         $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null);
         $evt       = new Doku_Event('AUTH_USER_CHANGE', $eventdata);
         if($evt->advise_before(true)) {
-            $result                           = call_user_func_array(array($this, $validTypes[$type]), $params);
+            $result                           = call_user_func_array(array($this, $validTypes[$type]), $evt->data['params']);
             $evt->data['modification_result'] = $result;
         }
         $evt->advise_after();
diff --git a/lib/plugins/authad/lang/fa/settings.php b/lib/plugins/authad/lang/fa/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..161479afbe4ed6d5dc97ced8d35a97ca6a789736
--- /dev/null
+++ b/lib/plugins/authad/lang/fa/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ */
+$lang['admin_password']        = 'رمز کاربر بالایی ';
+$lang['use_ssl']               = 'از اس‌اس‌ال استفاده می‌کنید؟ در این صورت تی‌ال‌اس را در پایین فعال نکنید. ';
+$lang['use_tls']               = 'از تی‌ال‌اس استفاده می‌کنید؟ در این صورت اس‌اس‌ال را در بالا فعال نکنید. ';
diff --git a/lib/plugins/authad/lang/no/lang.php b/lib/plugins/authad/lang/no/lang.php
new file mode 100644
index 0000000000000000000000000000000000000000..a1c9c7e8a59a1799e222ea04815b74a01cc7a2f1
--- /dev/null
+++ b/lib/plugins/authad/lang/no/lang.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Patrick <spill.p@hotmail.com>
+ */
+$lang['domain']                = 'Loggpå-domene';
diff --git a/lib/plugins/authad/lang/no/settings.php b/lib/plugins/authad/lang/no/settings.php
index bab5ce67dadcde38d4f555666ef4cb7d2bb78e65..f309ead50abb599da84b8804aca31e433dc1b1e8 100644
--- a/lib/plugins/authad/lang/no/settings.php
+++ b/lib/plugins/authad/lang/no/settings.php
@@ -4,6 +4,8 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * 
  * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
  */
+$lang['account_suffix']        = 'Ditt konto-suffiks F. Eks. <code>@my.domain.org</code>';
 $lang['admin_password']        = 'Passordet til brukeren over.';
 $lang['expirywarn']            = 'Antall dager på forhånd brukeren varsles om at passordet utgår. 0 for å deaktivere.';
diff --git a/lib/plugins/authad/lang/ru/settings.php b/lib/plugins/authad/lang/ru/settings.php
index c9c6d9f886a556b77d44b6275c403abc66fd047e..0212589d74ed77716bd43f6d02d3c9138e3cd43b 100644
--- a/lib/plugins/authad/lang/ru/settings.php
+++ b/lib/plugins/authad/lang/ru/settings.php
@@ -8,8 +8,9 @@
  * @author Artur <ncuxxx@gmail.com>
  * @author Erli Moen <evseev.jr@gmail.com>
  * @author Владимир <id37736@yandex.ru>
+ * @author Aleksandr Selivanov <alexgearbox@yandex.ru>
  */
-$lang['account_suffix']        = 'Суффикс вашего аккаунта типа  <code>@my.domain.org</code>';
+$lang['account_suffix']        = 'Суффикс вашего аккаунта. Например, <code>@my.domain.org</code>';
 $lang['domain_controllers']    = 'Список DNS-серверов, разделенных запятой. Например:<code>srv1.domain.org,srv2.domain.org</code>';
 $lang['admin_password']        = 'Пароль для указанного пользователя.';
 $lang['sso']                   = 'Использовать SSO (Single-Sign-On) через Kerberos или NTLM?';
diff --git a/lib/plugins/authldap/lang/fa/settings.php b/lib/plugins/authldap/lang/fa/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..49d485afdd6346014cf493d951f50210a9fadce2
--- /dev/null
+++ b/lib/plugins/authldap/lang/fa/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Mohammad Sadegh <msdn2013@gmail.com>
+ * @author Omid Hezaveh <hezpublic@gmail.com>
+ */
+$lang['starttls']              = 'از تی‌ال‌اس (TLS) استفاده می‌کنید؟';
+$lang['bindpw']                = 'رمزعبور کاربر بالا';
diff --git a/lib/plugins/authldap/lang/no/settings.php b/lib/plugins/authldap/lang/no/settings.php
index 6bedb29912d5fe8fbb29c643e7b548ff7aba244b..61671ed4645fc939543ad6330fc9e992298c13fb 100644
--- a/lib/plugins/authldap/lang/no/settings.php
+++ b/lib/plugins/authldap/lang/no/settings.php
@@ -4,6 +4,8 @@
  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  * 
  * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
  */
 $lang['port']                  = 'LDAP serverport dersom ingen full URL var gitt over.';
 $lang['starttls']              = 'Bruke TLS-forbindelser?';
+$lang['bindpw']                = 'Passord til brukeren over';
diff --git a/lib/plugins/authmysql/lang/no/settings.php b/lib/plugins/authmysql/lang/no/settings.php
new file mode 100644
index 0000000000000000000000000000000000000000..45ab09819f9539cf93fd6fd774379868ce881d3d
--- /dev/null
+++ b/lib/plugins/authmysql/lang/no/settings.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Patrick <spill.p@hotmail.com>
+ */
+$lang['server']                = 'Din MySQL-server';
+$lang['user']                  = 'Ditt MySQL-brukernavn';
+$lang['password']              = 'Passord til brukeren';
+$lang['database']              = 'Database som skal brukes';
+$lang['debug_o_0']             = 'ingen';
+$lang['debug_o_1']             = 'bare ved feil';
+$lang['debug_o_2']             = 'alle SQL-forespørsler';
diff --git a/lib/plugins/authpgsql/auth.php b/lib/plugins/authpgsql/auth.php
index 06590fedd66cab526fd1b895c693b93834d3244d..4cb280aae34063687f2daed571cd20485905015d 100644
--- a/lib/plugins/authpgsql/auth.php
+++ b/lib/plugins/authpgsql/auth.php
@@ -159,9 +159,11 @@ class auth_plugin_authpgsql extends auth_plugin_authmysql {
             if($first) $sql .= " OFFSET $first";
             $result = $this->_queryDB($sql);
 
-            foreach($result as $user)
-                if(($info = $this->_getCachedUserInfo($user['user'])))
+            foreach($result as $user) {
+                if(($info = $this->_getUserInfo($user['user']))) {
                     $out[$user['user']] = $info;
+                }
+            }
 
             $this->_unlockTables();
             $this->_closeDB();
diff --git a/lib/plugins/authpgsql/lang/ru/settings.php b/lib/plugins/authpgsql/lang/ru/settings.php
index 65cbce8df991d07ad4e6e6eed5727cce5e0b8a61..668ba4ef6c75f1d16257849c2a42e3afac24bbcc 100644
--- a/lib/plugins/authpgsql/lang/ru/settings.php
+++ b/lib/plugins/authpgsql/lang/ru/settings.php
@@ -10,7 +10,7 @@
 $lang['server']                = 'Ваш PostgreSQL-сервер';
 $lang['port']                  = 'Порт вашего PostgreSQL-сервера';
 $lang['user']                  = 'Имя пользователя PostgreSQL';
-$lang['password']              = 'Пароль для указанного пользователя.';
+$lang['password']              = 'Пароль для указанного пользователя';
 $lang['database']              = 'Имя базы данных';
 $lang['debug']                 = 'Отображать дополнительную отладочную информацию';
 $lang['checkPass']             = 'Выражение SQL, осуществляющее проверку пароля';
diff --git a/lib/plugins/authplain/_test/escaping.test.php b/lib/plugins/authplain/_test/escaping.test.php
index 5cf63150806eecc0a6d761386ee5a28d8e0a80d5..9df96389a5ac855fb21a10214c21ae344e652499 100644
--- a/lib/plugins/authplain/_test/escaping.test.php
+++ b/lib/plugins/authplain/_test/escaping.test.php
@@ -13,13 +13,13 @@
  */
 class helper_plugin_authplain_escaping_test extends DokuWikiTest {
 
-    protected $pluginsEnabled = array('authplain');
-    /** @var  auth_plugin_authplain */
+    protected $pluginsEnabled = array('authplainharness');
+    /** @var  auth_plugin_authplain|auth_plugin_authplainharness */
     protected $auth;
 
     protected function reloadUsers() {
         /* auth caches data loaded from file, but recreated object forces reload */
-        $this->auth = new auth_plugin_authplain();
+        $this->auth = new auth_plugin_authplainharness();
     }
 
     function setUp() {
@@ -77,7 +77,44 @@ class helper_plugin_authplain_escaping_test extends DokuWikiTest {
         $this->assertEquals($saved['name'], $user['name']);
         $this->assertTrue($this->auth->checkPass("testuser", $user['pass']));
     }
+
+    // really only required for developers to ensure this plugin will
+    // work with systems running on PCRE 6.6 and lower.
+    public function testLineSplit(){
+        $this->auth->setPregsplit_safe(false);
+
+        $names = array(
+          'plain',
+          'ut-fठ8',
+          'colon:',
+          'backslash\\',
+          'alltogether\\ठ:'
+        );
+        $userpass = 'user:password_hash:';
+        $other_user_data = ':email@address:group1,group2';
+
+        foreach ($names as $testname) {
+            $escaped = str_replace(array('\\',':'),array('\\\\','\\:'),$testname);   // escape : & \
+            $test_line = $userpass.$escaped.$other_user_data;
+            $result = $this->auth->splitUserData($test_line);
+
+            $this->assertEquals($escaped, $result[2]);
+        }
+    }
     
 }
 
-?>
\ No newline at end of file
+class auth_plugin_authplainharness extends auth_plugin_authplain {
+
+    public function setPregsplit_safe($bool) {
+        $this->_pregsplit_safe = $bool;
+    }
+
+    public function getPregsplit_safe(){
+        return $this->_pregsplit_safe;
+    }
+
+    public function splitUserData($line){
+        return $this->_splitUserData($line);
+    }
+}
diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php
index 1ea75b100d3fdb3ae31962f33f61594351f2e64b..fd2d0b2493e5cf8f7b1bc673263f567fe0a675a5 100644
--- a/lib/plugins/authplain/auth.php
+++ b/lib/plugins/authplain/auth.php
@@ -17,6 +17,9 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
     /** @var array filter pattern */
     protected $_pattern = array();
 
+    /** @var bool safe version of preg_split */
+    protected $_pregsplit_safe = false;
+
     /**
      * Constructor
      *
@@ -44,6 +47,8 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
             $this->cando['getUsers']     = true;
             $this->cando['getUserCount'] = true;
         }
+
+        $this->_pregsplit_safe = version_compare(PCRE_VERSION,'6.7','>=');
     }
 
     /**
@@ -329,7 +334,7 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
             if(empty($line)) continue;
 
             /* NB: preg_split can be deprecated/replaced with str_getcsv once dokuwiki is min php 5.3 */
-            $row = preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5); // allow for : escaped as \:
+            $row = $this->_splitUserData($line);
             $row = str_replace('\\:', ':', $row);
             $row = str_replace('\\\\', '\\', $row);
 
@@ -342,6 +347,33 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
         }
     }
 
+    protected function _splitUserData($line){
+        // due to a bug in PCRE 6.6, preg_split will fail with the regex we use here
+        // refer github issues 877 & 885
+        if ($this->_pregsplit_safe){
+            return preg_split('/(?<![^\\\\]\\\\)\:/', $line, 5);       // allow for : escaped as \:
+        }
+
+        $row = array();
+        $piece = '';
+        $len = strlen($line);
+        for($i=0; $i<$len; $i++){
+            if ($line[$i]=='\\'){
+                $piece .= $line[$i];
+                $i++;
+                if ($i>=$len) break;
+            } else if ($line[$i]==':'){
+                $row[] = $piece;
+                $piece = '';
+                continue;
+            }
+            $piece .= $line[$i];
+        }
+        $row[] = $piece;
+
+        return $row;
+    }
+
     /**
      * return true if $user + $info match $filter criteria, false otherwise
      *
diff --git a/lib/plugins/extension/helper/list.php b/lib/plugins/extension/helper/list.php
index 6fc8c63b1c3006d558234b0fb624752cc76e1d29..872cccc8c8d35a69e6b600a89308ba00e6259846 100644
--- a/lib/plugins/extension/helper/list.php
+++ b/lib/plugins/extension/helper/list.php
@@ -460,6 +460,7 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
      * @return string The HTML code
      */
     function make_actions(helper_plugin_extension_extension $extension) {
+        global $conf;
         $return = '';
         $errors = '';
 
@@ -491,6 +492,10 @@ class helper_plugin_extension_list extends DokuWiki_Plugin {
                 $errors .= '<p class="permerror">'.$this->getLang('git').'</p>';
             }
 
+            if ($extension->isEnabled() && in_array('Auth', $extension->getTypes()) && $conf['auth'] != $extension->getID()) {
+                $errors .= '<p class="permerror">'.$this->getLang('auth').'</p>';
+            }
+
         }else{
             if (($canmod = $extension->canModify()) === true) {
                 if ($extension->getDownloadURL()) {
diff --git a/lib/plugins/extension/lang/cs/intro_templates.txt b/lib/plugins/extension/lang/cs/intro_templates.txt
new file mode 100644
index 0000000000000000000000000000000000000000..45abe952c3f78be4c2af2a3af153fd98c1059359
--- /dev/null
+++ b/lib/plugins/extension/lang/cs/intro_templates.txt
@@ -0,0 +1 @@
+Toto jsou šablony, které jsou momentálně nainstalovány v této DokuWiki. Aktuálně používanu šablonu lze vybrat ve [[?do=admin&page=config|Správci rozšíření]].
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/cs/lang.php b/lib/plugins/extension/lang/cs/lang.php
index 27b3a94a3320ea12c2f7ca4d7204b66ce3e71dbc..f6db2b1539f3a2317477a4ff770cb78b89886257 100644
--- a/lib/plugins/extension/lang/cs/lang.php
+++ b/lib/plugins/extension/lang/cs/lang.php
@@ -15,6 +15,7 @@ $lang['notimplemented']        = 'Tato vychytávka není dosud implementována';
 $lang['notinstalled']          = 'Toto rozšíření není instalováno';
 $lang['alreadyenabled']        = 'Toto rozšíření je již povoleno';
 $lang['alreadydisabled']       = 'Toto rozšíření je již vypnuto';
+$lang['pluginlistsaveerror']   = 'Došlo k chybě při ukládání seznamu zásuvných modulů';
 $lang['unknownauthor']         = 'Neznámý autor';
 $lang['unknownversion']        = 'Neznámá verze';
 $lang['btn_info']              = 'Zobrazit více informací';
@@ -27,12 +28,15 @@ $lang['btn_reinstall']         = 'Přeinstalovat';
 $lang['js']['reallydel']       = 'Opravdu odinstalovat toto rozšíření?';
 $lang['search_for']            = 'Hledat rozšíření:';
 $lang['search']                = 'Hledat';
+$lang['extensionby']           = '<strong>%s</strong> od %s';
+$lang['screenshot']            = 'Screenshot %s';
 $lang['popularity']            = 'Popularita: %s%%';
 $lang['homepage_link']         = 'Dokumenty';
 $lang['bugs_features']         = 'Chyby';
 $lang['tags']                  = 'Štítky:';
 $lang['author_hint']           = 'Vyhledat rozšíření podle tohoto autora';
 $lang['installed']             = 'Nainstalováno:';
+$lang['downloadurl']           = 'URL stahování:';
 $lang['repository']            = 'Repozitář:';
 $lang['unknown']               = '<em>neznámý</em>';
 $lang['installed_version']     = 'Nainstalovaná verze:';
@@ -41,6 +45,7 @@ $lang['available_version']     = 'Dostupná verze:';
 $lang['compatible']            = 'Kompatibilní s:';
 $lang['depends']               = 'Závisí na:';
 $lang['similar']               = 'Podobný jako:';
+$lang['conflicts']             = 'Koliduje s:';
 $lang['donate']                = 'Líbí se ti to?';
 $lang['donate_action']         = 'Kup autorovi kávu!';
 $lang['repo_retry']            = 'Opakovat';
@@ -54,4 +59,25 @@ $lang['status_disabled']       = 'zakázaný';
 $lang['status_unmodifiable']   = 'neměnný';
 $lang['status_plugin']         = 'zásuvný modul';
 $lang['status_template']       = 'šablona';
+$lang['status_bundled']        = 'svázaný';
+$lang['msg_enabled']           = 'Zásuvný modul %s povolen';
+$lang['msg_disabled']          = 'Zásuvný modul %s zakázán';
 $lang['msg_delete_success']    = 'Rozšíření odinstalováno';
+$lang['msg_template_install_success'] = 'Šablona %s úspěšně nainstalována';
+$lang['msg_template_update_success'] = 'Šablona %s úspěšně aktualizována';
+$lang['msg_plugin_install_success'] = 'Zásuvný modul %s úspěšně nainstalován.';
+$lang['msg_plugin_update_success'] = 'Zásuvný modul %s úspěšně aktualizován.';
+$lang['msg_upload_failed']     = 'Nahrávání souboru selhalo';
+$lang['missing_dependency']    = '<strong>Chybějící nebo zakázaná závislost:</strong> %s';
+$lang['security_issue']        = '<strong>Bezpečnostní problém:</strong> %s';
+$lang['security_warning']      = '<strong>Bezpečnostní varování:</strong> %s';
+$lang['update_available']      = '<strong>Aktualizace:</strong> Je dostupná nová verze %s.';
+$lang['wrong_folder']          = '<strong>Zásuvný modul nesprávně nainstalován:</strong> Přejmenujte adresár modulu "%s" na "%s".';
+$lang['error_badurl']          = 'Adresy URL by měly začínat s http nebo https';
+$lang['error_dircreate']       = 'Nelze vytvořit dočasný adresář pro přijetí stahování';
+$lang['error_download']        = 'Nelze stáhnout soubor: %s';
+$lang['error_findfolder']      = 'Nelze rozpoznat adresář pro rozšíření, je třeba stáhnout a instalovat ručně';
+$lang['noperms']               = 'Nelze zapisovat do adresáře pro rozšíření';
+$lang['notplperms']            = 'Nelze zapisovat do odkládacího adresáře';
+$lang['nopluginperms']         = 'Nelze zapisovat do adresáře se zásuvnými moduly';
+$lang['git']                   = 'Toto rozšíření bylo nainstalováno přes git, nejspíš ho tady aktualizovat nechcete.';
diff --git a/lib/plugins/extension/lang/en/lang.php b/lib/plugins/extension/lang/en/lang.php
index 4da41a2fd18a825497fcf1917a6c5bba653999ba..d7541b42262ef3e3af8f2a96c138d7eecc4f0f9d 100644
--- a/lib/plugins/extension/lang/en/lang.php
+++ b/lib/plugins/extension/lang/en/lang.php
@@ -95,6 +95,7 @@ $lang['noperms']                      = 'Extension directory is not writable';
 $lang['notplperms']                   = 'Template directory is not writable';
 $lang['nopluginperms']                = 'Plugin directory is not writable';
 $lang['git']                          = 'This extension was installed via git, you may not want to update it here.';
+$lang['auth']                         = 'This auth plugin is not enabled in configuration, consider disabling it.';
 
 $lang['install_url']                  = 'Install from URL:';
 $lang['install_upload']               = 'Upload Extension:';
diff --git a/lib/plugins/extension/lang/hr/lang.php b/lib/plugins/extension/lang/hr/lang.php
index 4905fe86486ec240adca6f685e03ad7a3cfd7a4d..f43defcb10fd735c7e76684792c3188685530ed6 100644
--- a/lib/plugins/extension/lang/hr/lang.php
+++ b/lib/plugins/extension/lang/hr/lang.php
@@ -6,24 +6,24 @@
  * @author Davor Turkalj <turki.bsc@gmail.com>
  */
 $lang['menu']                  = 'Upravitelj dodataka';
-$lang['tab_plugins']           = 'Instalirani dodatci';
-$lang['tab_templates']         = 'Instalirani predlošci';
-$lang['tab_search']            = 'Potraži i instaliraj';
-$lang['tab_install']           = 'Ručno instaliranje';
+$lang['tab_plugins']           = 'Ugrađeni dodatci';
+$lang['tab_templates']         = 'Ugrađeni predlošci';
+$lang['tab_search']            = 'Potraži i ugradi';
+$lang['tab_install']           = 'Ručna ugradnja';
 $lang['notimplemented']        = 'Ova mogućnost još nije napravljena';
-$lang['notinstalled']          = 'Dodatak nije instaliran';
+$lang['notinstalled']          = 'Dodatak nije ugrađen';
 $lang['alreadyenabled']        = 'Ovaj dodatak je već omogućen';
 $lang['alreadydisabled']       = 'Ovaj dodatak je već onemogućen';
 $lang['pluginlistsaveerror']   = 'Dogodila se greška pri snimanju liste dodataka';
 $lang['unknownauthor']         = 'Nepoznat autor';
 $lang['unknownversion']        = 'Nepoznata inačica';
 $lang['btn_info']              = 'Prikaži više informacija';
-$lang['btn_update']            = 'Dopuni';
+$lang['btn_update']            = 'Dogradi';
 $lang['btn_uninstall']         = 'Ukloni';
 $lang['btn_enable']            = 'Omogući';
 $lang['btn_disable']           = 'Onemogući';
-$lang['btn_install']           = 'Postavi';
-$lang['btn_reinstall']         = 'Ponovno postavi';
+$lang['btn_install']           = 'Ugradi';
+$lang['btn_reinstall']         = 'Ponovno ugradi';
 $lang['js']['reallydel']       = 'Zaista ukloniti ovo proširenje?';
 $lang['search_for']            = 'Pretraži proširenja';
 $lang['search']                = 'Pretraži';
@@ -34,11 +34,11 @@ $lang['homepage_link']         = 'Upute';
 $lang['bugs_features']         = 'Greške';
 $lang['tags']                  = 'Oznake:';
 $lang['author_hint']           = 'Potraži dodatke od ovog autora';
-$lang['installed']             = 'Postavljeno:';
+$lang['installed']             = 'Ugrađeno:';
 $lang['downloadurl']           = 'URL adresa preuzimanja:';
 $lang['repository']            = 'Repozitorij:';
 $lang['unknown']               = '<em>nepoznat</em>';
-$lang['installed_version']     = 'Postavljena inačica:';
+$lang['installed_version']     = 'Ugrađena inačica:';
 $lang['install_date']          = 'Vaše zadnje osvježavanje:';
 $lang['available_version']     = 'Dostupna inačica';
 $lang['compatible']            = 'Kompatibilan s:';
diff --git a/lib/plugins/extension/lang/ru/lang.php b/lib/plugins/extension/lang/ru/lang.php
index fa1625f280c1dfcb4fdb1df5f289eb8fe0421c55..24e6fe2246340957373060f08fbf309ae9af8d2f 100644
--- a/lib/plugins/extension/lang/ru/lang.php
+++ b/lib/plugins/extension/lang/ru/lang.php
@@ -25,8 +25,9 @@ $lang['js']['reallydel']       = 'Действительно удалить эт
 $lang['search_for']            = 'Поиск дополнения:';
 $lang['search']                = 'Найти';
 $lang['extensionby']           = '<strong>%s</strong> — %s';
-$lang['popularity']            = 'Попоулярность: %s%%';
-$lang['bugs_features']         = 'Ошибки';
+$lang['popularity']            = 'Популярность: %s%%';
+$lang['homepage_link']         = 'Описание';
+$lang['bugs_features']         = 'Баг-трекер';
 $lang['tags']                  = 'Метки:';
 $lang['author_hint']           = 'Найти дополнения этого автора';
 $lang['installed']             = 'Установлено:';
@@ -43,26 +44,30 @@ $lang['conflicts']             = 'Конфликтует с:';
 $lang['donate']                = 'Нравится?';
 $lang['donate_action']         = 'Купить автору кофе!';
 $lang['repo_retry']            = 'Повторить';
+$lang['provides']              = 'Предоставляет:';
+$lang['status']                = 'Статус:';
 $lang['status_installed']      = 'установлено';
 $lang['status_not_installed']  = 'не установлено';
 $lang['status_protected']      = 'защищено';
-$lang['status_enabled']        = 'включен';
+$lang['status_enabled']        = 'включён';
 $lang['status_disabled']       = 'отключено';
 $lang['status_unmodifiable']   = 'неизменяемо';
 $lang['status_plugin']         = 'плагин';
 $lang['status_template']       = 'шаблон';
 $lang['status_bundled']        = 'в комплекте';
-$lang['msg_enabled']           = 'Плагин %s включен';
-$lang['msg_disabled']          = 'Плагин %s отключен';
+$lang['msg_enabled']           = 'Плагин %s включён';
+$lang['msg_disabled']          = 'Плагин %s отключён';
 $lang['msg_delete_success']    = 'Дополнение удалено';
 $lang['msg_template_install_success'] = 'Шаблон %s успешно установлен';
 $lang['msg_template_update_success'] = 'Шаблон %s успешно обновлён';
 $lang['msg_plugin_install_success'] = 'Плагин %s успешно установлен';
 $lang['msg_plugin_update_success'] = 'Плагин %s успешно обновлён';
-$lang['noperms']               = 'Папка для расширений не доступна на запись';
-$lang['notplperms']            = 'Папка для шаблонов не доступна на запись';
-$lang['nopluginperms']         = 'Папка плагинов не доступна на запись';
-$lang['git']                   = 'Это расширение было установлено через git, Вы не можете обновить его тут.';
+$lang['update_available']      = '<strong>Обновление:</strong> доступна новая версия %s.';
+$lang['error_badurl']          = 'Ссылки должны начинаться с http или https';
+$lang['noperms']               = 'Папка для расширений недоступна для записи';
+$lang['notplperms']            = 'Папка для шаблонов недоступна для записи';
+$lang['nopluginperms']         = 'Папка плагинов недоступна для записи';
+$lang['git']                   = 'Это расширение было установлено через git. Вы не можете обновить его тут.';
 $lang['install_url']           = 'Установить с адреса URL:';
 $lang['install_upload']        = 'Скачать расширение:';
-$lang['repo_error']            = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org и также проверьте настройки соединения прокси.';
+$lang['repo_error']            = 'Сайт с плагинами недоступен. Убедитесь, что у сайта есть доступ на www.dokuwiki.org, а также проверьте настройки соединения с Интернетом.';
diff --git a/lib/plugins/extension/lang/zh-tw/intro_plugins.txt b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b5b77a26734dc00381e67415a592e59d32849b09
--- /dev/null
+++ b/lib/plugins/extension/lang/zh-tw/intro_plugins.txt
@@ -0,0 +1 @@
+已經有一些外掛套件被安裝在你的DokuWiki之中。你可以在這裡啟用、禁用,甚至是完全移除它們。如外掛可更新也同時會顯示在這裡,請確保在更新前先閱讀過該套件之文件。
\ No newline at end of file
diff --git a/lib/plugins/extension/lang/zh-tw/lang.php b/lib/plugins/extension/lang/zh-tw/lang.php
index a86364d7ab6dcf5c5b414587644f38e236342536..79657ffeb4b8da326b5714fc9a311c8d47ad8cb9 100644
--- a/lib/plugins/extension/lang/zh-tw/lang.php
+++ b/lib/plugins/extension/lang/zh-tw/lang.php
@@ -5,6 +5,7 @@
  * 
  * @author Stan <talktostan@gmail.com>
  * @author June-Hao Hou <junehao@gmail.com>
+ * @author lioujheyu <lioujheyu@gmail.com>
  */
 $lang['menu']                  = '延伸功能管理';
 $lang['tab_plugins']           = '已安裝外掛';
@@ -28,20 +29,49 @@ $lang['btn_reinstall']         = '重新安裝';
 $lang['js']['reallydel']       = '確定要移除此延伸功能?';
 $lang['search_for']            = '搜尋延伸功能:';
 $lang['search']                = '搜尋';
+$lang['homepage_link']         = '文件';
 $lang['tags']                  = '標籤:';
 $lang['author_hint']           = '搜尋相同作者的延伸功能';
 $lang['installed']             = '已安裝:';
 $lang['downloadurl']           = '下載網址:';
+$lang['unknown']               = '<em>未知</em>';
 $lang['installed_version']     = '已安裝版本:';
+$lang['install_date']          = '你最後一次更新: ';
 $lang['available_version']     = '可用版本:';
 $lang['compatible']            = '相容於:';
+$lang['depends']               = '依賴於: ';
+$lang['similar']               = '類似於: ';
+$lang['conflicts']             = '相衝突於: ';
+$lang['donate']                = '像這樣?';
+$lang['donate_action']         = '請作者一杯咖啡!';
 $lang['repo_retry']            = '再試一次';
 $lang['status']                = '狀態:';
 $lang['status_installed']      = '已安裝';
 $lang['status_not_installed']  = '未安裝';
+$lang['status_protected']      = '已保護';
 $lang['status_enabled']        = '作用中';
 $lang['status_disabled']       = '停用中';
+$lang['status_unmodifiable']   = '不可更動';
 $lang['status_plugin']         = '外掛';
+$lang['status_template']       = '模板';
+$lang['status_bundled']        = '已綑綁內附';
+$lang['msg_enabled']           = '外掛 %s 已啟用';
+$lang['msg_disabled']          = '外掛 %s 已禁用';
+$lang['msg_delete_success']    = '附加元件已移除';
+$lang['msg_template_install_success'] = '模板 %s 以成功安裝';
+$lang['msg_template_update_success'] = '模板 %s 以成功更新';
+$lang['msg_plugin_install_success'] = '外掛 %s 以成功安裝';
+$lang['msg_plugin_update_success'] = '外掛 %s 以成功更新';
+$lang['msg_upload_failed']     = '上傳檔案失敗';
+$lang['missing_dependency']    = '<strong>遺失或禁用相依性套件:</strong> %s';
+$lang['security_issue']        = '<strong>安全性問題:</strong> %s';
+$lang['security_warning']      = '<strong>安全問題警告:</strong> %s';
+$lang['update_available']      = '<strong>更新:</strong> 已可取得 %s 的新版本';
+$lang['wrong_folder']          = '<strong>外掛安裝不正確:</strong> 將外掛資料夾從 "%s" 更名至 "%s"。';
+$lang['url_change']            = '<strong>網址已變更:</strong> 自從上次下載後下載網址已變更。在更新延伸功能前請先檢查新網址是否可用。<br />新: %s<br />舊: %s';
+$lang['error_download']        = '無法下載檔案:%s';
+$lang['error_decompress']      = '無法解壓縮檔案。這可能是下載品質不佳所致,在這個情況下你應該再試一次;也有可能是因為無法辨識的壓縮格式,在這個情況下你應該自行下載並手動安裝';
+$lang['error_findfolder']      = '無法辨認延伸功能資料夾,你必須自行下載並手動安裝';
 $lang['noperms']               = '延伸功能資料夾無法寫入';
 $lang['notplperms']            = '版型資料夾無法寫入';
 $lang['nopluginperms']         = '外掛資料夾無法寫入';
diff --git a/lib/plugins/popularity/lang/eu/lang.php b/lib/plugins/popularity/lang/eu/lang.php
index b52ccaee1cf4b6c0785f1de80abc61aa468fa5b2..b5b80357c6ddbdd1f46a2b216be6f76bcd0ddb4c 100644
--- a/lib/plugins/popularity/lang/eu/lang.php
+++ b/lib/plugins/popularity/lang/eu/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Basque language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Inko Illarramendi <inko.i.a@gmail.com>
  * @author Zigor Astarbe <astarbe@gmail.com>
  */
diff --git a/lib/plugins/revert/lang/eu/lang.php b/lib/plugins/revert/lang/eu/lang.php
index d3532c070e086a86282a2f51e662e231a5720937..40be3e38226752860a2708cb93823fa2f5fb12ad 100644
--- a/lib/plugins/revert/lang/eu/lang.php
+++ b/lib/plugins/revert/lang/eu/lang.php
@@ -1,9 +1,11 @@
 <?php
+
 /**
- * Basque language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Inko Illarramendi <inko.i.a@gmail.com>
  * @author Zigor Astarbe <astarbe@gmail.com>
+ * @author Yadav Gowda <yadav.gowda@gmail.com>
  */
 $lang['menu']                  = 'Berrezartze Kudeatzailea';
 $lang['filter']                = 'Bilatu spam duten orriak';
diff --git a/lib/plugins/revert/lang/no/lang.php b/lib/plugins/revert/lang/no/lang.php
index 6806dcd93cb6cf143bef83969f0613a4b80939ed..76da8ca9cfe65d77dd7a482feafa94bdc45a7e79 100644
--- a/lib/plugins/revert/lang/no/lang.php
+++ b/lib/plugins/revert/lang/no/lang.php
@@ -19,6 +19,7 @@
  * @author Thomas Juberg <Thomas.Juberg@Gmail.com>
  * @author Boris <boris@newton-media.no>
  * @author Christopher Schive <chschive@frisurf.no>
+ * @author Patrick <spill.p@hotmail.com>
  */
 $lang['menu']                  = 'Tilbakestillingsbehandler';
 $lang['filter']                = 'Søk etter søppelmeldinger';
diff --git a/lib/plugins/syntax.php b/lib/plugins/syntax.php
index 7acf681e4b3b58c0d715d28a6976e336f6b4c32d..9e2913d78c1c3c835744bd7d87aa9c44d5a956f0 100644
--- a/lib/plugins/syntax.php
+++ b/lib/plugins/syntax.php
@@ -71,7 +71,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
      * @param   int          $state   The lexer state for the match
      * @param   int          $pos     The character position of the matched text
      * @param   Doku_Handler $handler The Doku_Handler object
-     * @return  array Return an array with all data you want to use in render
+     * @return  bool|array Return an array with all data you want to use in render, false don't add an instruction
      */
     function handle($match, $state, $pos, Doku_Handler $handler){
         trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
@@ -98,7 +98,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
      * @param string          $format   output format being rendered
      * @param Doku_Renderer   $renderer the current renderer object
      * @param array           $data     data created by handler()
-     * @return  boolean                 rendered correctly?
+     * @return  boolean                 rendered correctly? (however, returned value is not used at the moment)
      */
     function render($format, Doku_Renderer $renderer, $data) {
         trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
diff --git a/lib/plugins/usermanager/lang/cs/lang.php b/lib/plugins/usermanager/lang/cs/lang.php
index bbb5606790133fa070c956bba8fa7bfbe37c8b41..6fbfe853517d701415b68c8dd2d8543067481899 100644
--- a/lib/plugins/usermanager/lang/cs/lang.php
+++ b/lib/plugins/usermanager/lang/cs/lang.php
@@ -15,6 +15,7 @@
  * @author Jakub A. Těšínský (j@kub.cz)
  * @author mkucera66@seznam.cz
  * @author Zbyněk Křivka <krivka@fit.vutbr.cz>
+ * @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
  */
 $lang['menu']                  = 'Správa uživatelů';
 $lang['noauth']                = '(autentizace uživatelů není k dispozici)';
@@ -62,6 +63,8 @@ $lang['add_ok']                = 'Uživatel úspěšně vytvořen';
 $lang['add_fail']              = 'Vytvoření uživatele selhalo';
 $lang['notify_ok']             = 'Odeslán mail s upozorněním';
 $lang['notify_fail']           = 'Mail s upozorněním nebylo možno odeslat';
+$lang['import_userlistcsv']    = 'Seznam uživatelů (CSV):';
+$lang['import_header']         = 'Poslední selhání importu';
 $lang['import_success_count']  = 'Import uživatelů: nalezeno %d uživatelů, %d úspěšně importováno.';
 $lang['import_failure_count']  = 'Import uživatelů: %d selhalo. Seznam chybných je níže.';
 $lang['import_error_fields']   = 'Nedostatek položek, nalezena/y %d, požadovány 4.';
diff --git a/lib/plugins/usermanager/lang/eu/lang.php b/lib/plugins/usermanager/lang/eu/lang.php
index 5d3a01fc7cf2245bab06dffaa484ed4b76cc0dfd..1fbe1373920b2118ebc2ef896abca53036aa32db 100644
--- a/lib/plugins/usermanager/lang/eu/lang.php
+++ b/lib/plugins/usermanager/lang/eu/lang.php
@@ -1,7 +1,8 @@
 <?php
+
 /**
- * Basque language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Inko Illarramendi <inko.i.a@gmail.com>
  * @author Zigor Astarbe <astarbe@gmail.com>
  */
diff --git a/lib/plugins/usermanager/lang/hr/lang.php b/lib/plugins/usermanager/lang/hr/lang.php
index 80613ed6fc962683c4525afb6760a7fd6f434cb2..a71afb60a32221e40ae7c5650fdbefbddaa1ee80 100644
--- a/lib/plugins/usermanager/lang/hr/lang.php
+++ b/lib/plugins/usermanager/lang/hr/lang.php
@@ -33,7 +33,7 @@ $lang['line']                  = 'Linija br.';
 $lang['error']                 = 'Poruka o grešci';
 $lang['summary']               = 'Prikaz korisnika %1$d-%2$d od %3$d nađenih. Ukupno %4$d korisnika.';
 $lang['nonefound']             = 'Nema korisnika koji odgovaraju filtru.Ukupno %d korisnika.';
-$lang['delete_ok']             = '%d korisnik obrisano';
+$lang['delete_ok']             = '%d korisnika obrisano';
 $lang['delete_fail']           = '%d neuspjelih brisanja.';
 $lang['update_ok']             = 'Korisnik uspješno izmijenjen';
 $lang['update_fail']           = 'Neuspjela izmjena korisnika';
@@ -49,7 +49,7 @@ $lang['note_group']            = 'Novi korisnik biti će dodijeljen u podrazumij
 $lang['note_pass']             = 'Lozinka će biti generirana ako se polje ostavi prazno i obavješćivanje korisnika je omogućeno.';
 $lang['add_ok']                = 'Korisnik uspješno dodan';
 $lang['add_fail']              = 'Neuspješno dodavanje korisnika';
-$lang['notify_ok']             = 'Obavijest korisniku poslana';
+$lang['notify_ok']             = 'Poslana obavijest korisniku';
 $lang['notify_fail']           = 'Obavijest korisniku ne može biti poslana';
 $lang['import_userlistcsv']    = 'Datoteka s popisom korisnika (CSV):';
 $lang['import_header']         = 'Zadnje greške pri uvozu';
diff --git a/lib/plugins/usermanager/lang/ru/import.txt b/lib/plugins/usermanager/lang/ru/import.txt
index f2049dd0c1f0f40141ec681d8b652b587802e135..c92e47b4c8051dcaee2e04d10fdbebab726bb350 100644
--- a/lib/plugins/usermanager/lang/ru/import.txt
+++ b/lib/plugins/usermanager/lang/ru/import.txt
@@ -3,7 +3,6 @@
 Потребуется список пользователей в файле формата CSV, состоящий из 4 столбцов. 
 Столбцы должны быть заполнены следующим образом: user-id, полное имя, эл. почта, группы. 
 Поля CSV должны быть отделены запятой (,), а строки должны быть заключены в кавычки (%%""%%). Обратный слэш используется как прерывание.
-В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей». 
-Повторяющиеся идентификаторы user-id будут игнорироваться.
+В качестве примера можете взять список пользователей, экспортированный через «Экспорт пользователей». Повторяющиеся идентификаторы user-id будут игнорироваться.
 
 Пароль доступа будет сгенерирован и отправлен по почте удачно импортированному пользователю. 
\ No newline at end of file
diff --git a/lib/plugins/usermanager/lang/ru/lang.php b/lib/plugins/usermanager/lang/ru/lang.php
index 8bbfa639c2625c801e134e400de80f1873ea9f91..515de5186cd8338e233bc3219ec8ad13c4908272 100644
--- a/lib/plugins/usermanager/lang/ru/lang.php
+++ b/lib/plugins/usermanager/lang/ru/lang.php
@@ -68,6 +68,7 @@ $lang['add_ok']                = 'Пользователь успешно доб
 $lang['add_fail']              = 'Не удалось добавить пользователя';
 $lang['notify_ok']             = 'Письмо с уведомлением отправлено';
 $lang['notify_fail']           = 'Не удалось отправить письмо с уведомлением';
+$lang['import_userlistcsv']    = 'Файл со списком пользователей (CSV):';
 $lang['import_success_count']  = 'Импорт пользователей: %d пользователей найдено, %d импортировано успешно.';
 $lang['import_failure_count']  = 'Импорт пользователей: %d не удалось. Список ошибок прочтите ниже.';
 $lang['import_error_fields']   = 'Не все поля заполнены. Найдено %d, а нужно 4.';
@@ -78,4 +79,4 @@ $lang['import_error_upload']   = 'Импорт не удался. CSV-файл 
 $lang['import_error_readfail'] = 'Импорт не удался. Невозможно прочесть загруженный файл.';
 $lang['import_error_create']   = 'Невозможно создать пользователя';
 $lang['import_notify_fail']    = 'Оповещение не может быть отправлено импортированному пользователю %s по электронной почте %s.';
-$lang['import_downloadfailures'] = 'Скачать Ошибки в формате CSV для исправления';
+$lang['import_downloadfailures'] = 'Скачать ошибки в формате CSV для исправления';
diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php
index 4d0e984b1c89548732bd942b135844b669a17309..d4f9c39d1270717a4fafeab12b29025ce2ec09d5 100644
--- a/lib/tpl/dokuwiki/detail.php
+++ b/lib/tpl/dokuwiki/detail.php
@@ -49,7 +49,7 @@ header('X-UA-Compatible: IE=edge,chrome=1');
                     if($ERROR):
                         echo '<h1>'.$ERROR.'</h1>';
                     else: ?>
-
+                        <?php if($REV) echo p_locale_xhtml('showrev');?>
                         <h1><?php echo nl2br(hsc(tpl_img_getTag('simple.title'))); ?></h1>
 
                         <?php tpl_img(900,700); /* parameters: maximum width, maximum height (and more) */ ?>