[Xfce4-commits] [www/wiki.xfce.org] 01/03: Update dokuwiki plugins to latest release

noreply at xfce.org noreply at xfce.org
Mon Mar 20 22:22:35 CET 2017


This is an automated email from the git hooks/post-receive script.

skunnyk pushed a commit to branch master
in repository www/wiki.xfce.org.

commit 580209282aaefda408b5e7f0fea465b793ff9ff3
Author: Romain B <skunnyk at alteroot.org>
Date:   Sun Mar 19 19:33:44 2017 +0100

    Update dokuwiki plugins to latest release
---
 lib/plugins/cellbg/manager.dat                     |   2 +
 lib/plugins/cellbg/plugin.info.txt                 |   2 +-
 lib/plugins/cellbg/script.js                       |   2 +-
 lib/plugins/cellbg/syntax.php                      |   4 +-
 lib/plugins/note/.gitignore                        |   1 +
 lib/plugins/note/README.rdoc                       |  93 +++++++
 lib/plugins/note/images/important.png              | Bin 0 -> 2250 bytes
 lib/plugins/note/images/note.png                   | Bin 0 -> 2520 bytes
 lib/plugins/note/images/tb_important.png           | Bin 0 -> 1366 bytes
 lib/plugins/note/images/tb_note.png                | Bin 0 -> 1461 bytes
 lib/plugins/note/images/tb_tip.png                 | Bin 0 -> 1441 bytes
 lib/plugins/note/images/tb_warning.png             | Bin 0 -> 1870 bytes
 lib/plugins/note/images/tip.png                    | Bin 0 -> 2909 bytes
 lib/plugins/note/images/warning.png                | Bin 0 -> 3249 bytes
 lib/plugins/note/info.txt                          |   8 +
 lib/plugins/note/manager.dat                       |   3 +
 lib/plugins/note/plugin.info.txt                   |   7 +
 lib/plugins/note/script.js                         |  36 +++
 lib/plugins/note/style.css                         |  47 ++--
 lib/plugins/note/syntax.php                        | 251 ++++++++++++------
 lib/plugins/redirect/.gitignore                    |   1 +
 lib/plugins/redirect/action.php                    |   5 +-
 lib/plugins/redirect/admin.php                     |   2 +-
 lib/plugins/redirect/lang/de/intro.txt             |   3 +
 lib/plugins/redirect/lang/de/lang.php              |  10 +
 lib/plugins/redirect/lang/de/settings.php          |   8 +
 lib/plugins/redirect/lang/en/intro.txt             |   4 +-
 lib/plugins/redirect/lang/eo/intro.txt             |  11 +
 lib/plugins/redirect/lang/eo/lang.php              |  10 +
 lib/plugins/redirect/lang/eo/settings.php          |   8 +
 lib/plugins/redirect/lang/fa/intro.txt             |  12 +
 lib/plugins/redirect/lang/fa/lang.php              |  10 +
 lib/plugins/redirect/lang/fa/settings.php          |   8 +
 lib/plugins/redirect/lang/ja/intro.txt             |  15 ++
 lib/plugins/redirect/lang/ja/lang.php              |  10 +
 lib/plugins/redirect/lang/ja/settings.php          |   8 +
 lib/plugins/redirect/lang/ko/intro.txt             |  12 +
 lib/plugins/redirect/lang/ko/lang.php              |  11 +
 lib/plugins/redirect/lang/ko/settings.php          |   9 +
 lib/plugins/redirect/lang/nl/intro.txt             |  12 +
 lib/plugins/redirect/lang/nl/lang.php              |  10 +
 lib/plugins/redirect/lang/nl/settings.php          |   8 +
 lib/plugins/redirect/lang/pt-br/intro.txt          |  11 +
 lib/plugins/redirect/lang/pt-br/lang.php           |  10 +
 lib/plugins/redirect/lang/pt-br/settings.php       |   8 +
 lib/plugins/redirect/lang/ru/intro.txt             |  10 +-
 lib/plugins/redirect/lang/ru/lang.php              |  10 +-
 lib/plugins/redirect/lang/ru/settings.php          |   7 +
 lib/plugins/redirect/manager.dat                   |   3 +
 lib/plugins/redirect/plugin.info.txt               |   2 +-
 lib/plugins/translation/action.php                 | 233 ++++++++++++++---
 lib/plugins/translation/admin.php                  | 101 ++++++++
 lib/plugins/translation/admin.svg                  |   1 +
 lib/plugins/translation/conf/default.php           |   2 +
 lib/plugins/translation/conf/metadata.php          |   3 +-
 lib/plugins/translation/flags/et.gif               | Bin 0 -> 364 bytes
 lib/plugins/translation/helper.php                 | 283 +++++++++++++--------
 lib/plugins/translation/lang/bn/lang.php           |  10 +
 lib/plugins/translation/lang/bn/settings.php       |  10 +
 lib/plugins/translation/lang/bn/totranslate.txt    |   1 +
 lib/plugins/translation/lang/ca/lang.php           |  16 ++
 lib/plugins/translation/lang/ca/settings.php       |  19 ++
 lib/plugins/translation/lang/ca/totranslate.txt    |   1 +
 lib/plugins/translation/lang/cs/lang.php           |  15 +-
 lib/plugins/translation/lang/cs/settings.php       |  21 +-
 lib/plugins/translation/lang/cs/totranslate.txt    |   1 +
 lib/plugins/translation/lang/cy/lang.php           |  11 +
 lib/plugins/translation/lang/cy/settings.php       |  18 ++
 lib/plugins/translation/lang/cy/totranslate.txt    |   1 +
 lib/plugins/translation/lang/da/lang.php           |  12 +-
 lib/plugins/translation/lang/da/settings.php       |  25 +-
 lib/plugins/translation/lang/da/totranslate.txt    |   1 +
 lib/plugins/translation/lang/de/lang.php           |  15 +-
 lib/plugins/translation/lang/de/settings.php       |  28 +-
 lib/plugins/translation/lang/de/totranslate.txt    |   1 +
 lib/plugins/translation/lang/en/lang.php           |   7 +-
 lib/plugins/translation/lang/en/settings.php       |   2 +
 lib/plugins/translation/lang/en/totranslate.txt    |   1 +
 lib/plugins/translation/lang/eo/lang.php           |  11 +
 lib/plugins/translation/lang/eo/settings.php       |  18 ++
 lib/plugins/translation/lang/eo/totranslate.txt    |   1 +
 lib/plugins/translation/lang/es/lang.php           |  15 +-
 lib/plugins/translation/lang/es/settings.php       |  33 ++-
 lib/plugins/translation/lang/es/totranslate.txt    |   1 +
 lib/plugins/translation/lang/fa/lang.php           |  16 ++
 lib/plugins/translation/lang/fa/settings.php       |  19 ++
 lib/plugins/translation/lang/fa/totranslate.txt    |   1 +
 lib/plugins/translation/lang/fr/lang.php           |  18 +-
 lib/plugins/translation/lang/fr/settings.php       |  21 +-
 lib/plugins/translation/lang/fr/totranslate.txt    |   1 +
 lib/plugins/translation/lang/hr/lang.php           |  16 ++
 lib/plugins/translation/lang/hr/settings.php       |  19 ++
 lib/plugins/translation/lang/hr/totranslate.txt    |   1 +
 lib/plugins/translation/lang/hu/lang.php           |  11 +
 lib/plugins/translation/lang/hu/settings.php       |  18 ++
 lib/plugins/translation/lang/hu/totranslate.txt    |   1 +
 lib/plugins/translation/lang/it/lang.php           |   9 +-
 lib/plugins/translation/lang/it/settings.php       |  22 +-
 lib/plugins/translation/lang/it/totranslate.txt    |   1 +
 lib/plugins/translation/lang/ja/lang.php           |  16 ++
 lib/plugins/translation/lang/ja/settings.php       |  19 ++
 lib/plugins/translation/lang/ja/totranslate.txt    |   1 +
 lib/plugins/translation/lang/ko/lang.php           |  16 ++
 lib/plugins/translation/lang/ko/settings.php       |  19 ++
 lib/plugins/translation/lang/ko/totranslate.txt    |   1 +
 lib/plugins/translation/lang/langnames.txt         | 105 ++++----
 lib/plugins/translation/lang/lv/lang.php           |  14 +-
 lib/plugins/translation/lang/lv/settings.php       |  31 ++-
 lib/plugins/translation/lang/lv/totranslate.txt    |   1 +
 lib/plugins/translation/lang/nl/lang.php           |  17 ++
 lib/plugins/translation/lang/nl/settings.php       |  21 ++
 lib/plugins/translation/lang/nl/totranslate.txt    |   1 +
 lib/plugins/translation/lang/pt-br/lang.php        |  16 +-
 lib/plugins/translation/lang/pt-br/settings.php    |  25 +-
 lib/plugins/translation/lang/pt-br/totranslate.txt |   1 +
 lib/plugins/translation/lang/pt/lang.php           |  11 +
 lib/plugins/translation/lang/pt/settings.php       |  19 ++
 lib/plugins/translation/lang/ru/lang.php           |  21 +-
 lib/plugins/translation/lang/ru/settings.php       |  29 ++-
 lib/plugins/translation/lang/ru/totranslate.txt    |   1 +
 lib/plugins/translation/lang/sl/lang.php           |   9 +
 lib/plugins/translation/lang/sl/settings.php       |  18 ++
 lib/plugins/translation/lang/tr/lang.php           |  10 +
 lib/plugins/translation/lang/tr/settings.php       |  15 ++
 lib/plugins/translation/lang/tr/totranslate.txt    |   1 +
 lib/plugins/translation/lang/uk/lang.php           |   2 +-
 lib/plugins/translation/lang/uk/settings.php       |   6 +-
 lib/plugins/translation/lang/zh/lang.php           |  17 +-
 lib/plugins/translation/lang/zh/settings.php       |  23 +-
 lib/plugins/translation/lang/zh/totranslate.txt    |   1 +
 lib/plugins/translation/manager.dat                |   3 +
 lib/plugins/translation/plugin.info.txt            |   2 +-
 lib/plugins/translation/script.js                  |  19 +-
 lib/plugins/translation/style.css                  |  21 +-
 lib/plugins/translation/syntax/notrans.php         |  73 ++++++
 lib/plugins/translation/syntax/trans.php           |  57 +++++
 136 files changed, 2025 insertions(+), 433 deletions(-)

diff --git a/lib/plugins/cellbg/manager.dat b/lib/plugins/cellbg/manager.dat
new file mode 100644
index 0000000..d8c5664
--- /dev/null
+++ b/lib/plugins/cellbg/manager.dat
@@ -0,0 +1,2 @@
+downloadurl=https://github.com/dr4Ke/cellbg/tarball/master
+installed=Tue, 25 Nov 2014 17:51:53 +0100
diff --git a/lib/plugins/cellbg/plugin.info.txt b/lib/plugins/cellbg/plugin.info.txt
index d13127c..4871f08 100644
--- a/lib/plugins/cellbg/plugin.info.txt
+++ b/lib/plugins/cellbg/plugin.info.txt
@@ -1,7 +1,7 @@
 base cellbg
 author dr4ke
 email <dr4ke at dr4ke.net>
-date 2010-03-22
+date 2013-10-09
 name Cell Background
 desc Allows user-defined background colored cells in tables
 url http://www.dokuwiki.org/plugin:cellbg
diff --git a/lib/plugins/cellbg/script.js b/lib/plugins/cellbg/script.js
index e911cc2..adfed10 100644
--- a/lib/plugins/cellbg/script.js
+++ b/lib/plugins/cellbg/script.js
@@ -107,6 +107,6 @@ function plugin_cellbg_toolbar_picker() {
   body.appendChild(picker);     // attach the picker <div> to the page body
   toolbar.appendChild(p_btn);   // attach the picker button to the toolbar
 }
-addInitEvent(plugin_cellbg_toolbar_picker);
+jQuery(plugin_cellbg_toolbar_picker);
  
 //Setup VIM: ex: et ts=2 sw=2 enc=utf-8 :
diff --git a/lib/plugins/cellbg/syntax.php b/lib/plugins/cellbg/syntax.php
index 2c9da44..7cfd30d 100644
--- a/lib/plugins/cellbg/syntax.php
+++ b/lib/plugins/cellbg/syntax.php
@@ -25,10 +25,10 @@ class syntax_plugin_cellbg extends DokuWiki_Syntax_Plugin {
         return array(
             'author' => 'dr4Ke',
             'email'  => 'dr4ke at dr4ke.net',
-            'date'   => '2009-12-08',
+            'date'   => '2013-10-09',
             'name'   => 'Cells background color plugin',
             'desc'   => 'Sets background of a cell with a specific color',
-            'url'    => 'http://git.dr4ke.net/?p=dr4Ke/dokuwiki-cellbg.git',
+            'url'    => 'http://www.dokuwiki.org/plugin:cellbg',
         );
     }
  
diff --git a/lib/plugins/note/.gitignore b/lib/plugins/note/.gitignore
new file mode 100644
index 0000000..f3c7a7c
--- /dev/null
+++ b/lib/plugins/note/.gitignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/plugins/note/README.rdoc b/lib/plugins/note/README.rdoc
new file mode 100644
index 0000000..43ecb9e
--- /dev/null
+++ b/lib/plugins/note/README.rdoc
@@ -0,0 +1,93 @@
+=DokuWiki Note plugin
+
+A plugin for DokuWiki which allows users to easily insert four kinds of notes into the wiki pages.
+
+==Authors
+
+The plugin has been written from scratch by Olivier Cortéz. After the initial release it has been maintained by Olivier while he integrated several patches provided by the DokuWiki-community. Somewhere around the end of 2008 / start of 2009 Olivier started to became too busy with other (real-life) activities and occupations that active development and support halted. On 2009/06/15 Aurélien Bompard decided, after contacting Olivier Cortéz about it, to (temporarily) take-over maintenance a [...]
+
+==Requirements
+
+The plugin works with DokuWiki 2006-03-09 upto DokuWiki 2009-02-14.
+
+==Limitations
+
+Currently this plugin has some limitations:
+
+* Plugin won't work inside numbered lists
+* Plugin won't work inside tables
+
+==Download / Installation
+
+1. Download the latest version of the plugin from http://github.com/MischaTheEvil/dokuwiki_note. A mirror containing the packages can be found at http://www.mediafire.com/evildev.
+2. Installing the plugin:
+   * You can either extract the archive into the <tt>lib/plugins</tt> directory or
+   * -Load the admin page and go to Manage Plugins and enter the URL of the plugin under Download and install the new plugin.-
+3. Update the Configuration Settings under the admin page.
+
+==Usage
+
+When you have it installed, use the following syntax:
+
+* <tt><note>This is my note! Remember it!!</note></tt>
+* <tt><note important>Warning! You're about to lose your mind!</note></tt>
+* <tt><note tip>The clues are in the images.</note></tt>
+* <tt><note warning>Beware of the dog when you open the door !!</note></tt>
+
+You can use the note keywords <tt>important</tt>, <tt>warning</tt> and <tt>tip</tt>.
+It is quite easy to add new types of notes if you know a bit of PHP and CSS.
+
+==Notes
+
+It is regularly reported that the cache needs to be cleaned after installing the plugin before the notes do showup. At least a full page-reload (CTRL-F5) is required.
+
+==Credits
+
+Many thanks to the following DokuWiki developers (in random order):
+
+* Stephane Chamberland
+* Carl-Christian Salvesen
+* Eric Hameleers
+* Christopher Smith
+* Chris Lale
+* Pixote
+* Yves Bergeron
+* Taylor Jones
+* Luke
+* Frédéric
+* Kmosak
+* foosel
+* zerohalo
+
+==Changelog
+
+* 2009-06-16 (re-packaged by Mischa The Evil)
+  * Removed obsolete files from the package
+  * Added README with CHANGELOG
+  * Added GNU GPL v2 license
+  * Fixed file-permissions
+
+* 2009-06-15 (fixes by Aurélien Bompard)
+  * Fix in the ODT renderer
+  * Add toolbar buttons for the notes.
+
+* 2008-02-17 (patches by Aurélien Bompard)
+  * added support for ODT-export
+
+* 2006-03-29 (patches by Eric Hameleers and Christopher Smith)
+  * allow note nesting
+  * fix the trimmed space problem
+  * fix the issue with protected modes (e.g. <tt><code></tt> & <tt><file></tt>) not being allowed within notes
+  * plug the security vulnerability which could allow malicious HTML or JavaScript to infiltrate your wiki
+  * make note types case independent (e.g. <tt>important</tt>, <tt>IMPORTANT</tt> & <tt>Important</tt> will all given an "important" note)
+  * and better:
+    * code efficiency
+    * code reading
+    * conformance to DokuWiki's changes in plugin classes
+
+* 2005-10-13
+  * Initial release by Olivier Cortéz (?)
+
+==License
+
+This plugin is open-source and licensed under the GNU GPL v.2.
diff --git a/lib/plugins/note/images/important.png b/lib/plugins/note/images/important.png
new file mode 100644
index 0000000..dc8c8a4
Binary files /dev/null and b/lib/plugins/note/images/important.png differ
diff --git a/lib/plugins/note/images/note.png b/lib/plugins/note/images/note.png
new file mode 100644
index 0000000..df1e0a9
Binary files /dev/null and b/lib/plugins/note/images/note.png differ
diff --git a/lib/plugins/note/images/tb_important.png b/lib/plugins/note/images/tb_important.png
new file mode 100644
index 0000000..d853518
Binary files /dev/null and b/lib/plugins/note/images/tb_important.png differ
diff --git a/lib/plugins/note/images/tb_note.png b/lib/plugins/note/images/tb_note.png
new file mode 100644
index 0000000..f5c9316
Binary files /dev/null and b/lib/plugins/note/images/tb_note.png differ
diff --git a/lib/plugins/note/images/tb_tip.png b/lib/plugins/note/images/tb_tip.png
new file mode 100644
index 0000000..f127e91
Binary files /dev/null and b/lib/plugins/note/images/tb_tip.png differ
diff --git a/lib/plugins/note/images/tb_warning.png b/lib/plugins/note/images/tb_warning.png
new file mode 100644
index 0000000..892c833
Binary files /dev/null and b/lib/plugins/note/images/tb_warning.png differ
diff --git a/lib/plugins/note/images/tip.png b/lib/plugins/note/images/tip.png
new file mode 100644
index 0000000..2000f20
Binary files /dev/null and b/lib/plugins/note/images/tip.png differ
diff --git a/lib/plugins/note/images/warning.png b/lib/plugins/note/images/warning.png
new file mode 100644
index 0000000..3c8a37d
Binary files /dev/null and b/lib/plugins/note/images/warning.png differ
diff --git a/lib/plugins/note/info.txt b/lib/plugins/note/info.txt
new file mode 100644
index 0000000..5226345
--- /dev/null
+++ b/lib/plugins/note/info.txt
@@ -0,0 +1,8 @@
+# General Plugin Info do not edit
+
+author Olivier Cortès / Eric Hameleers / Christopher Smith / Aurélien Bompard
+email  olive at deep-ocean.net
+date   2009-06-15
+name   Note Plugin
+desc   Add Note/Important/Tip/Warning Capability (DIV+CSS box)
+url    http://www.dokuwiki.org/plugin:note
diff --git a/lib/plugins/note/manager.dat b/lib/plugins/note/manager.dat
new file mode 100644
index 0000000..37051af
--- /dev/null
+++ b/lib/plugins/note/manager.dat
@@ -0,0 +1,3 @@
+downloadurl=https://github.com/LarsGit223/dokuwiki_note/archive/2016-09-14.zip
+installed=Tue, 25 Nov 2014 17:51:59 +0100
+updated=Sun, 05 Mar 2017 13:35:26 +0100
diff --git a/lib/plugins/note/plugin.info.txt b/lib/plugins/note/plugin.info.txt
new file mode 100644
index 0000000..12acb84
--- /dev/null
+++ b/lib/plugins/note/plugin.info.txt
@@ -0,0 +1,7 @@
+base   note
+author Olivier Cortès, Eric Hameleers, Christopher Smith, Aurélien Bompard, LarsDW223
+email  olive at deep-ocean.net
+date   2016-09-14
+name   Note Plugin
+desc   Add Note/Important/Tip/Warning Capability (DIV+CSS box)
+url    https://www.dokuwiki.org/plugin:note
diff --git a/lib/plugins/note/script.js b/lib/plugins/note/script.js
new file mode 100644
index 0000000..c211207
--- /dev/null
+++ b/lib/plugins/note/script.js
@@ -0,0 +1,36 @@
+/* Add Note buttons to the toolbar */
+/* from http://wiki.splitbrain.org/wiki:tips:toolbarbutton */
+
+/* Disabled because this does not allow to select a text and turn it into a note like the type:format does
+var notes_arr = new Array(); // key = insertion string , value = icon filename.
+notes_arr['<note></note>\\n']='tb_note.png';
+notes_arr['<note tip></note>\\n']='tb_tip.png';
+notes_arr['<note important></note>\\n']='tb_important.png';
+notes_arr['<note warning></note>\\n']='tb_warning.png';
+
+toolbar[toolbar.length] = {"type":"picker",
+                           "title":"Notes",
+                           "icon":"../../plugins/note/images/tb_note.png",
+                           "key":"",
+                           "list": notes_arr,
+                           "icobase":"../plugins/note/images"};
+*/
+ 
+if(toolbar){ 
+    toolbar[toolbar.length] = {"type":"format", "title":"note", "key":"", 
+                               "icon":"../../plugins/note/images/tb_note.png", 
+                               "open":"<note>", "close":"</note>"
+                              }; 
+    toolbar[toolbar.length] = {"type":"format", "title":"tip", "key":"", 
+                               "icon":"../../plugins/note/images/tb_tip.png", 
+                               "open":"<note tip>", "close":"</note>"
+                              }; 
+    toolbar[toolbar.length] = {"type":"format", "title":"important", "key":"", 
+                               "icon":"../../plugins/note/images/tb_important.png", 
+                               "open":"<note important>", "close":"</note>"
+                              }; 
+    toolbar[toolbar.length] = {"type":"format", "title":"warning", "key":"", 
+                               "icon":"../../plugins/note/images/tb_warning.png", 
+                               "open":"<note warning>", "close":"</note>"
+                              }; 
+}
diff --git a/lib/plugins/note/style.css b/lib/plugins/note/style.css
index 92ebcb0..8b97dea 100644
--- a/lib/plugins/note/style.css
+++ b/lib/plugins/note/style.css
@@ -1,28 +1,41 @@
-.noteclassic,
-.noteimportant,
-.notewarning,
-.notetip {
-  padding: 0.5em 40px 0.5em 40px;
-  border-top: solid 1px;
-  border-bottom: solid 1px;
+.noteclassic, .noteimportant, .notewarning, .notetip {
+  margin: 2em;
+  margin-left: auto;
+  margin-right: auto;
+  width: 70% !important;
+  min-height: 40px;
+  clear: both;
+  text-align: justify;
+  vertical-align: middle;
+  border-collapse: collapse;
+  padding: 15px 20px 15px 80px;
+  background-position: 20px 50%;
+  background-repeat: no-repeat;
+  -moz-border-radius: 20px;
+  -khtml-border-radius: 20px;
+  border-radius: 20px;
 }
-
+ 
 .noteclassic {
-  border-color: #99d;
-  background-color: #ddf;
+  /*border: 1px solid #99D;*/
+  background-color: #eef;
+  background-image: url(images/note.png);
 }
-
+ 
 .noteimportant {
-  border-color: #ee0;
-  background-color: #ffd;
+  /*border: 1px solid #ff0;*/
+  background-color: #ffc;
+  background-image: url(images/important.png);
 }
-
+ 
 .notewarning {
-  border-color: #d99;
+  /*border: 1px solid #d99;*/
   background-color: #fdd;
+  background-image: url(images/warning.png);
 }
-
+ 
 .notetip {
-  border-color: #9d9;
+  /*border: 1px solid #9d9;*/
   background-color: #dfd;
+  background-image: url(images/tip.png);
 }
diff --git a/lib/plugins/note/syntax.php b/lib/plugins/note/syntax.php
index 5d3a78e..3b8294d 100644
--- a/lib/plugins/note/syntax.php
+++ b/lib/plugins/note/syntax.php
@@ -33,36 +33,32 @@
  * @license    GNU_GPL_v2
  * @author     Olivier Cortes <olive at deep-ocean.net>
  */
-
+ 
 if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
 if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
 require_once(DOKU_PLUGIN.'syntax.php');
 
 
 class syntax_plugin_note extends DokuWiki_Syntax_Plugin {
-
+ 
     var $notes = array(
         'noteimportant' => array('important', 'importante'),
         'notewarning'   => array('warning','bloquante','critique'),
         'notetip'       => array('tip','tuyau','idée'),
         'noteclassic'   => array('','classic','classique')
       );
-
+      
     var $default = 'noteclassic';
 
-    function getInfo(){
-        return confToHash(dirname(__FILE__).'/info.txt');
-    }
-
-
     function getType(){ return 'container'; }
-    function getPType(){ return 'normal'; }
-    function getAllowedTypes() {
+    function getPType(){ return 'block'; }
+    function getAllowedTypes() { 
         return array('container','substition','protected','disabled','formatting','paragraphs');
     }
+
     function getSort(){ return 195; }
 
-    // override default accepts() method to allow nesting
+    // override default accepts() method to allow nesting 
     // - ie, to get the plugin accepts its own entry syntax
     function accepts($mode) {
       if ($mode == substr(get_class($this), 7)) return true;
@@ -72,33 +68,34 @@ class syntax_plugin_note extends DokuWiki_Syntax_Plugin {
     function connectTo($mode) {
         $this->Lexer->addEntryPattern('<note.*?>(?=.*?</note>)',$mode,'plugin_note');
     }
+
     function postConnect() {
         $this->Lexer->addExitPattern('</note>','plugin_note');
     }
 
-    function handle($match, $state, $pos, &$handler){
+    function handle($match, $state, $pos, Doku_Handler $handler) {
 
         switch ($state) {
 
-          case DOKU_LEXER_ENTER :
+          case DOKU_LEXER_ENTER : 
             $note = strtolower(trim(substr($match,5,-1)));
-
+ 
             foreach( $this->notes as $class => $names ) {
               if (in_array($note, $names))
                 return array($state, $class);
-            }
-
-            return array($state, $this->default);
-
+            }            
+            
+            return array($state, $this->default);          
+ 
           case DOKU_LEXER_UNMATCHED :
             return array($state, $match);
-
+        
           default:
             return array($state);
         }
     }
 
-    function render($mode, &$renderer, $indata) {
+    function render($mode, Doku_Renderer $renderer, $indata) {
 
         if($mode == 'xhtml'){
 
@@ -106,15 +103,15 @@ class syntax_plugin_note extends DokuWiki_Syntax_Plugin {
 
           switch ($state) {
             case DOKU_LEXER_ENTER :
-              $renderer->doc .= '<p><div class="'.$data.'">';
+              $renderer->doc .= '<div class="'.$data.'">';
               break;
-
+  
             case DOKU_LEXER_UNMATCHED :
               $renderer->doc .= $renderer->_xmlEntities($data);
               break;
-
+  
             case DOKU_LEXER_EXIT :
-              $renderer->doc .= "\n</div></p>";
+              $renderer->doc .= "\n</div>";
               break;
           }
           return true;
@@ -123,69 +120,161 @@ class syntax_plugin_note extends DokuWiki_Syntax_Plugin {
 
           list($state, $data) = $indata;
 
-          switch ($state) {
-            case DOKU_LEXER_ENTER :
-              $type = substr($data, 4);
-              if ($type == "classic") {
-                $type = "note"; // the icon for classic notes is named note.png
-              }
-              $colors = array("note"=>"#eeffff", "warning"=>"#ffdddd", "important"=>"#ffffcc", "tip"=>"#ddffdd");
-              $renderer->autostyles["pluginnote"] = '
-                  <style:style style:name="pluginnote" style:family="table">
-                      <style:table-properties style:width="15cm" table:align="center" style:shadow="#808080 0.18cm 0.18cm"/>
-                  </style:style>';
-              $renderer->autostyles["pluginnote.A"] = '
-                  <style:style style:name="pluginnote.A" style:family="table-column">
-                      <style:table-column-properties style:column-width="1.5cm"/>
-                  </style:style>';
-              $renderer->autostyles["pluginnote.B"] = '
-                  <style:style style:name="pluginnote.B" style:family="table-column">
-                      <style:table-column-properties style:column-width="13.5cm"/>
-                  </style:style>';
-              $renderer->autostyles["pluginnote".$type.".A1"] = '
-                  <style:style style:name="pluginnote'.$type.'.A1" style:family="table-cell">
-                      <style:table-cell-properties style:vertical-align="middle" fo:padding="0.1cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000" fo:background-color="'.$colors[$type].'"/>
-                  </style:style>';
-              $renderer->autostyles["pluginnote".$type.".B1"] = '
-                  <style:style style:name="pluginnote'.$type.'.B1" style:family="table-cell">
-                      <style:table-cell-properties style:vertical-align="middle" fo:padding="0.3cm" fo:border-left="none" fo:border-right="0.002cm solid #000000" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000" fo:background-color="'.$colors[$type].'"/>
-                  </style:style>';
-              // Content
-              $renderer->p_close();
-              $renderer->doc .= '<table:table table:name="" table:style-name="pluginnote">';
-              $renderer->doc .= '<table:table-column table:style-name="pluginnote.A"/>';
-              $renderer->doc .= '<table:table-column table:style-name="pluginnote.B"/>';
-              $renderer->doc .= '<table:table-row>';
-              $renderer->doc .= '<table:table-cell table:style-name="pluginnote'.$type.'.A1" office:value-type="string">';
-              // Don't use p_open, as it's not the same style-name
-              $renderer->doc .= '<text:p text:style-name="Table_20_Contents">';
-              $src = DOKU_PLUGIN."note/images/".$type.".png";
-              $renderer->_odtAddImage($src);
-              $renderer->doc .= '</text:p>';
-              $renderer->doc .= '</table:table-cell>';
-              $renderer->doc .= '<table:table-cell table:style-name="pluginnote'.$type.'.B1" office:value-type="string">';
-              $renderer->p_open();
-              break;
+          $this->render_odt ($renderer, $state, $data);
+          return true;
+        }
+        
+        // unsupported $mode
+        return false;
+    } 
+
+    protected function render_odt ($renderer, $state, $data) {
+        static $first = true;
+        static $new;
+        
+        if ($first == true) {
+            $new = method_exists ($renderer, 'getODTPropertiesFromElement');
+            $first = false;
+        }
+        
+        if (!$new) {
+            // Render with older ODT plugin version.
+            $this->render_odt_old ($renderer, $state, $data);
+        } else {
+            // Render with newer ODT plugin version.
+            $this->render_odt_new ($renderer, $state, $data);
+        }
+    }
+
+    protected function render_odt_old ($renderer, $state, $data) {
+        switch ($state) {
+            case DOKU_LEXER_ENTER:
+                $type = substr($data, 4);
+                if ($type == "classic") {
+                    $type = "note"; // the icon for classic notes is named note.png
+                }
+                $colors = array("note"=>"#eeeeff", "warning"=>"#ffdddd", "important"=>"#ffffcc", "tip"=>"#ddffdd");
+
+                // Content
+                $properties = array();
+                $properties ['width'] = '100%';
+                $properties ['align'] = 'center';
+                $properties ['shadow'] = '#808080 0.18cm 0.18cm';
+                $renderer->_odtTableOpenUseProperties($properties);
+
+                $properties = array();
+                $properties ['width'] = '1.5cm';
+                $renderer->_odtTableAddColumnUseProperties($properties);
+
+                $properties = array();
+                $properties ['width'] = '13.5cm';
+                $renderer->_odtTableAddColumnUseProperties($properties);
+
+                $renderer->tablerow_open();
+
+                $properties = array();
+                $properties ['vertical-align'] = 'middle';
+                $properties ['text-align'] = 'center';
+                $properties ['padding'] = '0.1cm';
+                $properties ['border'] = '0.002cm solid #000000';
+                $properties ['background-color'] = $colors[$type];
+                $renderer->_odtTableCellOpenUseProperties($properties);
+
+                $src = DOKU_PLUGIN."note/images/".$type.".png";
+                $renderer->_odtAddImage($src);
+
+                $renderer->tablecell_close();
+
+                $properties = array();
+                $properties ['vertical-align'] = 'middle';
+                $properties ['padding'] = '0.3cm';
+                $properties ['border'] = '0.002cm solid #000000';
+                $properties ['background-color'] = $colors[$type];
+                $renderer->_odtTableCellOpenUseProperties($properties);
+                break;
 
             case DOKU_LEXER_UNMATCHED :
-              $renderer->cdata($data);
-              break;
+                $renderer->cdata($data);
+                break;
 
             case DOKU_LEXER_EXIT :
-              $renderer->p_close();
-              $renderer->doc .= '</table:table-cell>';
-              $renderer->doc .= '</table:table-row>';
-              $renderer->doc .= '</table:table>';
-              $renderer->p_open();
-              break;
-          }
-          return true;
+                $renderer->tablecell_close();
+                $renderer->tablerow_close();
+                $renderer->_odtTableClose();
+                $renderer->p_open();
+                break;
         }
+    }
 
-        // unsupported $mode
-        return false;
+    /**
+     * ODT rendering for new versions of the ODT plugin.
+     *
+     * @param $renderer the renderer to use
+     * @param $state    the current state
+     * @param $data     data from handle()
+     * @author LarsDW223
+     */
+    protected function render_odt_new ($renderer, $state, $data) {
+        switch ($state) {
+            case DOKU_LEXER_ENTER:
+                $css_properties = array ();
+
+                // Get CSS properties for ODT export.
+                $renderer->getODTPropertiesNew ($css_properties, 'div', 'class="'.$data.'"', NULL, true);
+
+                // Create Content
+                // (We only use the CSS parameters that are meaningful for creating the ODT table)
+                $properties = array();
+                $properties ['width'] = '100%';
+                $properties ['align'] = 'center';
+                $properties ['shadow'] = '#808080 0.18cm 0.18cm';
+                $renderer->_odtTableOpenUseProperties($properties);
+
+                $properties = array();
+                $properties ['width'] = '1.5cm';
+                $renderer->_odtTableAddColumnUseProperties($properties);
+
+                $properties = array();
+                $properties ['width'] = '13.5cm';
+                $renderer->_odtTableAddColumnUseProperties($properties);
+
+                $renderer->tablerow_open();
+
+                $properties = array();
+                $properties ['vertical-align'] = $css_properties ['vertical-align'];
+                $properties ['text-align'] = 'center';
+                $properties ['padding'] = '0.1cm';
+                $properties ['border'] = '0.002cm solid #000000';
+                $properties ['background-color'] = $css_properties ['background-color'];
+                $renderer->_odtTableCellOpenUseProperties($properties);
+
+                if ($css_properties ['background-image']) {
+                    $renderer->_odtAddImage($css_properties ['background-image']);
+                }
+
+                $renderer->tablecell_close();
+
+                $properties = array();
+                $properties ['vertical-align'] = $css_properties ['vertical-align'];
+                $properties ['text-align'] = $css_properties ['text-align'];
+                $properties ['padding'] = '0.3cm';
+                $properties ['border'] = '0.002cm solid #000000';
+                $properties ['background-color'] = $css_properties ['background-color'];
+                $renderer->_odtTableCellOpenUseProperties($properties);
+                break;
+
+            case DOKU_LEXER_UNMATCHED :
+                $renderer->cdata($data);
+                break;
+
+            case DOKU_LEXER_EXIT :
+                $renderer->tablecell_close();
+                $renderer->tablerow_close();
+                $renderer->_odtTableClose();
+                $renderer->p_open();
+                break;
+        }
     }
 }
-
+ 
 //Setup VIM: ex: et ts=4 enc=utf-8 :
-?>
diff --git a/lib/plugins/redirect/.gitignore b/lib/plugins/redirect/.gitignore
new file mode 100644
index 0000000..1140b92
--- /dev/null
+++ b/lib/plugins/redirect/.gitignore
@@ -0,0 +1 @@
+redirect.conf
diff --git a/lib/plugins/redirect/action.php b/lib/plugins/redirect/action.php
index 606a681..f8261d0 100644
--- a/lib/plugins/redirect/action.php
+++ b/lib/plugins/redirect/action.php
@@ -17,7 +17,7 @@ class action_plugin_redirect extends DokuWiki_Action_Plugin {
     /**
      * register the eventhandlers
      */
-    function register(&$controller){
+    function register(Doku_Event_Handler $controller){
         $controller->register_hook('DOKUWIKI_STARTED',
                                    'AFTER',
                                    $this,
@@ -42,7 +42,8 @@ class action_plugin_redirect extends DokuWiki_Action_Plugin {
                 if($this->getConf('showmsg')){
                     msg(sprintf($this->getLang('redirected'),hsc($ID)));
                 }
-                send_redirect(wl($redirects[$ID] ,'',true));
+                $link = explode('#', $redirects[$ID], 2);
+                send_redirect(wl($link[0] ,'',true) . '#' . rawurlencode($link[1]));
             }
             exit;
         }
diff --git a/lib/plugins/redirect/admin.php b/lib/plugins/redirect/admin.php
index faf64a5..9953928 100644
--- a/lib/plugins/redirect/admin.php
+++ b/lib/plugins/redirect/admin.php
@@ -37,7 +37,7 @@ class admin_plugin_redirect extends DokuWiki_Admin_Plugin {
      */
     function handle() {
         if($_POST['redirdata']){
-            if(io_saveFile(dirname(__FILE__).'/redirect.conf',$_POST['redirdata'])){
+            if(io_saveFile(dirname(__FILE__).'/redirect.conf',cleanText($_POST['redirdata']))){
                 msg($this->getLang('saved'),1);
             }
         }
diff --git a/lib/plugins/redirect/lang/de/intro.txt b/lib/plugins/redirect/lang/de/intro.txt
new file mode 100644
index 0000000..520da20
--- /dev/null
+++ b/lib/plugins/redirect/lang/de/intro.txt
@@ -0,0 +1,3 @@
+====== Redirect Konfiguration ======
+
+Hier kannst du die Weiterleitungen für dein Wiki einstellen. Du kannst zu externen Webseiten oder Wikiseiten weiterleiten. Alle angaben müssen absolut sein. Wiki IDs dürfen keine Sonderzeichen enthalten, kleingeschrieben und den kompletten Namensraum angeben. Der Raute bei einem Seitenanker muss ein \ vorangestellt sein (\#).
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/de/lang.php b/lib/plugins/redirect/lang/de/lang.php
new file mode 100644
index 0000000..8185704
--- /dev/null
+++ b/lib/plugins/redirect/lang/de/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Dominik Eckelmann <deckelmann at gmail.com>
+ */
+$lang['name']                  = 'Einstellung für Seitenweiterleitungen';
+$lang['saved']                 = 'Daten gespeichert.';
+$lang['redirected']            = 'Du wurdest von <b>%s</b> weitergeleitet.';
diff --git a/lib/plugins/redirect/lang/de/settings.php b/lib/plugins/redirect/lang/de/settings.php
new file mode 100644
index 0000000..0c6ebac
--- /dev/null
+++ b/lib/plugins/redirect/lang/de/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Dominik Eckelmann <deckelmann at gmail.com>
+ */
+$lang['showmsg']               = 'Zeige dem Benutzer eine Information über die Weiterleitung an.';
diff --git a/lib/plugins/redirect/lang/en/intro.txt b/lib/plugins/redirect/lang/en/intro.txt
index 6db2c93..31f335e 100644
--- a/lib/plugins/redirect/lang/en/intro.txt
+++ b/lib/plugins/redirect/lang/en/intro.txt
@@ -3,10 +3,12 @@
 Here you can set up redirects for your wiki. You can redirect to external
 websites or pages in the wiki. All given pagenames have to be absolute
 and cleaned (no specialchars, all lowercase, full namespaces).
+Anchor hash must be escaped with a \.
 
-Use the follwing format:
+Use the following format:
 
 <code>
 pagename    internalpage
 otherpage   http://example.com
+somepage    internalpage\#headline
 </code>
diff --git a/lib/plugins/redirect/lang/eo/intro.txt b/lib/plugins/redirect/lang/eo/intro.txt
new file mode 100644
index 0000000..1696d8d
--- /dev/null
+++ b/lib/plugins/redirect/lang/eo/intro.txt
@@ -0,0 +1,11 @@
+====== Redirekta Konfigurado ======
+
+Tie vi povas krei redirektojn por via vikio. Eblas redirekti al eksteraj paĝoj aŭ paĝoj ene de la vikio. Ĉiuj indikitaj paĝnomoj estu absolutaj kaj puraj (neniuj specialaj signoj, ĉio minuskle, kun kompletaj nomspacoj). La ankrokaraktro (#) estu eskapita per \.
+
+Uzu la sekvan formaton:
+
+<code>
+paghnomo internapagho
+aliapagho http://example.com
+iupagho internapagho\#kaplinio
+</code>
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/eo/lang.php b/lib/plugins/redirect/lang/eo/lang.php
new file mode 100644
index 0000000..4183bf2
--- /dev/null
+++ b/lib/plugins/redirect/lang/eo/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Robert Bogenschneider <robog at gmx.de>
+ */
+$lang['name']                  = 'Starigi paĝredirektojn';
+$lang['saved']                 = 'Datumoj konservitaj.';
+$lang['redirected']            = 'Vi estas redirektita de <b>%s</b>.';
diff --git a/lib/plugins/redirect/lang/eo/settings.php b/lib/plugins/redirect/lang/eo/settings.php
new file mode 100644
index 0000000..e7dfe74
--- /dev/null
+++ b/lib/plugins/redirect/lang/eo/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Robert Bogenschneider <robog at gmx.de>
+ */
+$lang['showmsg']               = 'Ĉu montri mesaĝon al uzantoj pri la redirektado?';
diff --git a/lib/plugins/redirect/lang/fa/intro.txt b/lib/plugins/redirect/lang/fa/intro.txt
new file mode 100644
index 0000000..0870ae4
--- /dev/null
+++ b/lib/plugins/redirect/lang/fa/intro.txt
@@ -0,0 +1,12 @@
+====== پیکربندی تغییرمسیر ======
+
+در اینجا می‌توانید یک سیستم تغییرمسیر در ویکی برپا کنید. شما می‌توانید برای لینک‌های خارجی سایت‌ها و یا صفحات این ویکی این کار را انجام دهید. همه‌ی نام‌های‌صفحه باید مطلق و تمیز باشند (بدون کاراکتر خاص، تمام حروف کوچک، فضای‌نام‌های کامل).
+هش لنگر باید با \ فرار کند.
+
+استفاده از فرمت زیر:
+
+<code>
+pagename    internalpage
+otherpage   http://example.com
+somepage    internalpage\#headline
+</code>
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/fa/lang.php b/lib/plugins/redirect/lang/fa/lang.php
new file mode 100644
index 0000000..ccf252c
--- /dev/null
+++ b/lib/plugins/redirect/lang/fa/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sam01 <m.sajad079 at gmail.com>
+ */
+$lang['name']                  = 'برپایی تغییرمسیر صفحه';
+$lang['saved']                 = 'تاریخ ذخیره شد.';
+$lang['redirected']            = 'شما تغییرمسیر یافته‌اید از <b>%s</b>.';
diff --git a/lib/plugins/redirect/lang/fa/settings.php b/lib/plugins/redirect/lang/fa/settings.php
new file mode 100644
index 0000000..fe31dc8
--- /dev/null
+++ b/lib/plugins/redirect/lang/fa/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sam01 <m.sajad079 at gmail.com>
+ */
+$lang['showmsg']               = 'نمایش یک پیام به کاربران درباره‌ی تغییرمسیر؟';
diff --git a/lib/plugins/redirect/lang/ja/intro.txt b/lib/plugins/redirect/lang/ja/intro.txt
new file mode 100644
index 0000000..a8dec0e
--- /dev/null
+++ b/lib/plugins/redirect/lang/ja/intro.txt
@@ -0,0 +1,15 @@
+====== リダイレクト設定 ======
+ 
+このウィキ内のリダイレクト転送の設定ができます。
+外部のウェブサイトやウィキ内のページへの転送が可能です。
+ページ名は絶対パスかつきれいでなくてはなりません。
+(特殊文字なし・全て小文字・完全な名前空間)
+アンカーのハッシュは \ によるエスケープが必要です。
+ 
+以下の形式で記載して下さい:
+ 
+<code>
+pagename    internalpage
+otherpage   http://example.com
+somepage    internalpage\#headline
+</code>
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/ja/lang.php b/lib/plugins/redirect/lang/ja/lang.php
new file mode 100644
index 0000000..46e1f31
--- /dev/null
+++ b/lib/plugins/redirect/lang/ja/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Hideaki SAWADA <chuno at live.jp>
+ */
+$lang['name']                  = 'リダイレクト設定';
+$lang['saved']                 = 'リダイレクト設定を保存しました。';
+$lang['redirected']            = '<b>%s</b> から転送されました。';
diff --git a/lib/plugins/redirect/lang/ja/settings.php b/lib/plugins/redirect/lang/ja/settings.php
new file mode 100644
index 0000000..b17eb47
--- /dev/null
+++ b/lib/plugins/redirect/lang/ja/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Hideaki SAWADA <chuno at live.jp>
+ */
+$lang['showmsg']               = '転送を通知しますか?';
diff --git a/lib/plugins/redirect/lang/ko/intro.txt b/lib/plugins/redirect/lang/ko/intro.txt
new file mode 100644
index 0000000..f0ae36b
--- /dev/null
+++ b/lib/plugins/redirect/lang/ko/intro.txt
@@ -0,0 +1,12 @@
+====== 넘겨주기 설정 ======
+
+여기에서 위키에 대한 넘겨주기를 설정할 수 있습니다. 위키의 문서나 바깥 웹사이트로 넘겨줄 수 있습니다. 모든 주어진 문서 이름은 절대적이고 깨끗해야(규칙에 맞아야) 합니다. (특수문자 없음, 모두 소문자, 전체 이름공간)
+앵커 해시는 \로 탈출해야 합니다.
+
+다음 형식을 사용하세요:
+
+<code>
+문서이름 안쪽문서
+다른문서 http://example.com
+어떤문서 안쪽문서\#표제
+</code>
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/ko/lang.php b/lib/plugins/redirect/lang/ko/lang.php
new file mode 100644
index 0000000..a3d53dd
--- /dev/null
+++ b/lib/plugins/redirect/lang/ko/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author S.C.Yoo <dryoo at live.com>
+ * @author Myeongjin <aranet100 at gmail.com>
+ */
+$lang['name']                  = '문서 넘겨주기 설정';
+$lang['saved']                 = '데이터가 저장되었습니다.';
+$lang['redirected']            = '<b>%s</b>에서 넘어왔습니다.';
diff --git a/lib/plugins/redirect/lang/ko/settings.php b/lib/plugins/redirect/lang/ko/settings.php
new file mode 100644
index 0000000..031d293
--- /dev/null
+++ b/lib/plugins/redirect/lang/ko/settings.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author S.C.Yoo <dryoo at live.com>
+ * @author Myeongjin <aranet100 at gmail.com>
+ */
+$lang['showmsg']               = '사용자에게 넘겨주기에 대한 메시지를 표시할까요?';
diff --git a/lib/plugins/redirect/lang/nl/intro.txt b/lib/plugins/redirect/lang/nl/intro.txt
new file mode 100644
index 0000000..35d17eb
--- /dev/null
+++ b/lib/plugins/redirect/lang/nl/intro.txt
@@ -0,0 +1,12 @@
+====== Doorstuur Instellingen ======
+
+Hier kun je redirects (doorstuur-acties) instellen voor je wiki. Je kunt gebruikers laten doorsturen naar externe websites of pagina's in de wiki. Alle opgegeven paginanamen moeten absoluut en opgeschoond zijn (geen bijzondere tekens, geen hoofdletters, complete namespaces).
+Voor een anker hash # moeten een backslash \ om te zorgen dat deze goed herkend wordt.
+
+Gebruik het volgende formaat:
+
+<code>
+paginanaam    internepagina
+anderepagina  http://example.com
+eenpagina     internepagina\#alineatitel
+</code>
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/nl/lang.php b/lib/plugins/redirect/lang/nl/lang.php
new file mode 100644
index 0000000..1090172
--- /dev/null
+++ b/lib/plugins/redirect/lang/nl/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Gerrit Uitslag <klapinklapin at gmail.com>
+ */
+$lang['name']                  = 'Pagina-doorstuur instellingen';
+$lang['saved']                 = 'Gegevens opgeslagen.';
+$lang['redirected']            = 'Je bent doorgestuurd van <b>%s</b>.';
diff --git a/lib/plugins/redirect/lang/nl/settings.php b/lib/plugins/redirect/lang/nl/settings.php
new file mode 100644
index 0000000..fc04b96
--- /dev/null
+++ b/lib/plugins/redirect/lang/nl/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Gerrit Uitslag <klapinklapin at gmail.com>
+ */
+$lang['showmsg']               = 'Een bericht weergeven aan de gebruikers over het doorsturen?';
diff --git a/lib/plugins/redirect/lang/pt-br/intro.txt b/lib/plugins/redirect/lang/pt-br/intro.txt
new file mode 100644
index 0000000..91af6e9
--- /dev/null
+++ b/lib/plugins/redirect/lang/pt-br/intro.txt
@@ -0,0 +1,11 @@
+====== Configuração de redirecionamentos ======
+
+Aqui é possível configurar redirecionamentos para o seu wiki. Você pode redirecionar para sites externos ou páginas internas do wiki. Os nomes das páginas devem ser completos (contendo seus namespaces), sem caracteres especiais e em letras minúsculas. O caractere de âncora (#) deve ser escapado com \.
+
+Use o formato seguinte:
+
+<code>
+nomedapagina    paginainterna
+outrapagina    http://example.com
+algumapagina    paginainterna\#cabecalho
+</code>
\ No newline at end of file
diff --git a/lib/plugins/redirect/lang/pt-br/lang.php b/lib/plugins/redirect/lang/pt-br/lang.php
new file mode 100644
index 0000000..610002b
--- /dev/null
+++ b/lib/plugins/redirect/lang/pt-br/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Flaudísio Tolentino <flaudisio at gmail.com>
+ */
+$lang['name']                  = 'Configuração de redirecionamento de páginas';
+$lang['saved']                 = 'Dados salvos.';
+$lang['redirected']            = 'Você foi redirecionado de <b>%s</b>.';
diff --git a/lib/plugins/redirect/lang/pt-br/settings.php b/lib/plugins/redirect/lang/pt-br/settings.php
new file mode 100644
index 0000000..8e2f05a
--- /dev/null
+++ b/lib/plugins/redirect/lang/pt-br/settings.php
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Flaudísio Tolentino <flaudisio at gmail.com>
+ */
+$lang['showmsg']               = 'Mostrar uma mensagem sobre o redirecionamento aos usuários?';
diff --git a/lib/plugins/redirect/lang/ru/intro.txt b/lib/plugins/redirect/lang/ru/intro.txt
index 6d99d33..9cab2c8 100644
--- a/lib/plugins/redirect/lang/ru/intro.txt
+++ b/lib/plugins/redirect/lang/ru/intro.txt
@@ -1,11 +1,11 @@
 ====== Настройки переадресации страниц ======
 
-Здесь вы можете назначить переадресацию страниц вашей вики.\\ 
-Вы можете переназначить на внешние веб-сайты или страницы в вики.\\ 
-Имена страниц должны быть абсолютными, без специалных символов, только в нижнем регистре, полные пространства имён.
+Здесь вы можете назначить переадресацию страниц своей вики. Вы можете переназначить на внешние веб-сайты или страницы в вики. Имена страниц должны быть абсолютными, без специальных символов, только в нижнем регистре, полные пространства имён. Якоря должны быть экранированы обратным слешем (''\'')
 
-Используйте следующий формат:
+Используйте следующий формат записи:
 
 <code>
-old_namespace:my_page new_namespace:my_page
+old_namespace:page new_namespace:new_page
+page http://example.com
+page new_page\#headline
 </code>
diff --git a/lib/plugins/redirect/lang/ru/lang.php b/lib/plugins/redirect/lang/ru/lang.php
index 2226300..c13c6c1 100644
--- a/lib/plugins/redirect/lang/ru/lang.php
+++ b/lib/plugins/redirect/lang/ru/lang.php
@@ -1,5 +1,9 @@
 <?php
 
-$lang['name']  = 'Переадресация страниц';
-$lang['saved'] = 'Данные сохранены.';
-
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['name']                  = 'Переадресация страниц';
+$lang['saved']                 = 'Данные сохранены.';
+$lang['redirected']            = 'Вы перенаправлены с <b>%s</b>.';
diff --git a/lib/plugins/redirect/lang/ru/settings.php b/lib/plugins/redirect/lang/ru/settings.php
new file mode 100644
index 0000000..60a208e
--- /dev/null
+++ b/lib/plugins/redirect/lang/ru/settings.php
@@ -0,0 +1,7 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['showmsg']               = 'Показывать пользователям сообщение о перенаправлении?';
diff --git a/lib/plugins/redirect/manager.dat b/lib/plugins/redirect/manager.dat
new file mode 100644
index 0000000..ed44968
--- /dev/null
+++ b/lib/plugins/redirect/manager.dat
@@ -0,0 +1,3 @@
+downloadurl=https://github.com/splitbrain/dokuwiki-plugin-redirect/zipball/master
+installed=Tue, 25 Nov 2014 17:53:25 +0100
+updated=Sun, 05 Mar 2017 13:36:58 +0100
diff --git a/lib/plugins/redirect/plugin.info.txt b/lib/plugins/redirect/plugin.info.txt
index 36efd26..cf876bf 100644
--- a/lib/plugins/redirect/plugin.info.txt
+++ b/lib/plugins/redirect/plugin.info.txt
@@ -1,7 +1,7 @@
 base   redirect
 author Andreas Gohr
 email  andi at splitbrain.org
-date   2010-06-13
+date   2016-02-03
 name   Redirect Plugin
 desc   Redirect page access based on a central redirection list
 url    http://www.dokuwiki.org/plugin:redirect
diff --git a/lib/plugins/translation/action.php b/lib/plugins/translation/action.php
index c125636..80f82ab 100644
--- a/lib/plugins/translation/action.php
+++ b/lib/plugins/translation/action.php
@@ -10,61 +10,230 @@
 // must be run within Dokuwiki
 if(!defined('DOKU_INC')) die();
 
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-require_once(DOKU_PLUGIN.'action.php');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
+require_once(DOKU_PLUGIN . 'action.php');
 
 class action_plugin_translation extends DokuWiki_Action_Plugin {
 
     /**
-     * for th helper plugin
+     * For the helper plugin
+     * @var helper_plugin_translation
      */
-    var $hlp = null;
+    var $helper = null;
+
+    var $locale;
 
     /**
      * Constructor. Load helper plugin
      */
-    function action_plugin_translation(){
-        $this->hlp =& plugin_load('helper', 'translation');
+    function __construct() {
+        $this->helper =& plugin_load('helper', 'translation');
     }
 
     /**
-     * Registe the events
+     * Register the events
      */
-    function register(&$controller) {
+    function register(Doku_Event_Handler $controller) {
+        $scriptName = basename($_SERVER['PHP_SELF']);
+
         // should the lang be applied to UI?
-        if($this->getConf('translateui')){
+        if($this->getConf('translateui')) {
+            switch($scriptName) {
+                case 'js.php':
+                    $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translation_js');
+                    $controller->register_hook('JS_CACHE_USE', 'BEFORE', $this, 'translation_jscache');
+                    break;
+
+                case 'ajax.php':
+                    $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translate_media_manager');
+                    break;
+
+                case 'mediamanager.php':
+                    $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'setJsCacheKey');
+                    break;
+
+                default:
+                    $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'setJsCacheKey');
+            }
+        }
+
+        if($scriptName !== 'js.php' && $scriptName !== 'ajax.php') {
             $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'translation_hook');
+            $controller->register_hook('MEDIAMANAGER_STARTED', 'BEFORE', $this, 'translation_hook');
         }
+
         $controller->register_hook('SEARCH_QUERY_PAGELOOKUP', 'AFTER', $this, 'translation_search');
+        $controller->register_hook('COMMON_PAGETPL_LOAD', 'AFTER', $this, 'page_template_replacement');
+    }
+
+    /**
+     * Hook Callback. Make current language available as page template placeholder and handle
+     * original language copying
+     *
+     * @param $event
+     * @param $args
+     */
+    function page_template_replacement(&$event, $args) {
+        global $ID;
+
+        // load orginal content as template?
+        if($this->getConf('copytrans') && $this->helper->istranslatable($ID, false)) {
+            // look for existing translations
+            $translations = $this->helper->getAvailableTranslations($ID);
+            if($translations) {
+                // find original language (might've been provided via parameter or use first translation)
+                $orig = (string) $_REQUEST['fromlang'];
+                if(!$orig) $orig = array_shift(array_keys($translations));
+
+                // load file
+                $origfile = $translations[$orig];
+                $event->data['tpl'] = io_readFile(wikiFN($origfile));
+
+                // prefix with warning
+                $warn = io_readFile($this->localFN('totranslate'));
+                if($warn) $warn .= "\n\n";
+                $event->data['tpl'] = $warn . $event->data['tpl'];
+
+                // show user a choice of translations if any
+                if(count($translations) > 1) {
+                    $links = array();
+                    foreach($translations as $t => $l) {
+                        $links[] = '<a href="' . wl($ID, array('do' => 'edit', 'fromlang' => $t)) . '">' . $this->helper->getLocalName($t) . '</a>';
+                    }
+
+                    msg(
+                        sprintf(
+                            $this->getLang('transloaded'),
+                            $this->helper->getLocalName($orig),
+                            join(', ', $links)
+                        )
+                    );
+                }
+
+            }
+        }
+
+        // apply placeholders
+        $event->data['tpl'] = str_replace('@LANG@', $this->helper->realLC(''), $event->data['tpl']);
+        $event->data['tpl'] = str_replace('@TRANS@', $this->helper->getLangPart($ID), $event->data['tpl']);
     }
 
     /**
-     * Change the UI language in foreign language namespaces
+     * Hook Callback. Load correct translation when loading JavaScript
+     *
+     * @param $event
+     * @param $args
+     */
+    function translation_js(&$event, $args) {
+        global $conf;
+        if(!isset($_GET['lang'])) return;
+        if(!in_array($_GET['lang'], $this->helper->translations)) return;
+        $lang = $_GET['lang'];
+        $event->data = $lang;
+        $conf['lang'] = $lang;
+    }
+
+    /**
+     * Hook Callback. Pass language code to JavaScript dispatcher
+     *
+     * @param $event
+     * @param $args
+     * @return bool
+     */
+    function setJsCacheKey(&$event, $args) {
+        if(!isset($this->locale)) return false;
+        $count = count($event->data['script']);
+        for($i = 0; $i < $count; $i++) {
+            if(strpos($event->data['script'][$i]['src'], '/lib/exe/js.php') !== false) {
+                $event->data['script'][$i]['src'] .= '&lang=' . hsc($this->locale);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Hook Callback. Make sure the JavaScript is translation dependent
+     *
+     * @param $event
+     * @param $args
+     */
+    function translation_jscache(&$event, $args) {
+        if(!isset($_GET['lang'])) return;
+        if(!in_array($_GET['lang'], $this->helper->translations)) return;
+
+        $lang = $_GET['lang'];
+        // reuse the constructor to reinitialize the cache key
+        if(method_exists($event->data, '__construct')) {
+            // New PHP 5 style constructor
+            $event->data->__construct(
+                $event->data->key . $lang,
+                $event->data->ext
+            );
+        } else {
+            // Old PHP 4 style constructor - deprecated
+            $event->data->cache(
+                $event->data->key . $lang,
+                $event->data->ext
+            );
+        }
+    }
+
+    /**
+     * Hook Callback. Translate the AJAX loaded media manager
+     *
+     * @param $event
+     * @param $args
+     */
+    function translate_media_manager(&$event, $args) {
+        global $conf;
+        if(isset($_REQUEST['ID'])) {
+            $id = getID();
+            $lc = $this->helper->getLangPart($id);
+        } elseif(isset($_SESSION[DOKU_COOKIE]['translationlc'])) {
+            $lc = $_SESSION[DOKU_COOKIE]['translationlc'];
+        } else {
+            return;
+        }
+        if(!$lc) return;
+
+        $conf['lang'] = $lc;
+        $event->data = $lc;
+    }
+
+    /**
+     * Hook Callback. Change the UI language in foreign language namespaces
      */
     function translation_hook(&$event, $args) {
         global $ID;
         global $lang;
         global $conf;
         global $ACT;
-
         // redirect away from start page?
-        if($this->conf['redirectstart'] && $ID == $conf['start'] && $ACT == 'show'){
-            $lc = $this->hlp->getBrowserLang();
+        if($this->conf['redirectstart'] && $ID == $conf['start'] && $ACT == 'show') {
+            $lc = $this->helper->getBrowserLang();
             if(!$lc) $lc = $conf['lang'];
-            header('Location: '.wl($lc.':'.$conf['start'],'',true,'&'));
+            header('Location: ' . wl($lc . ':' . $conf['start'], '', true, '&'));
             exit;
         }
 
         // check if we are in a foreign language namespace
-        $lc = $this->hlp->getLangPart($ID);
+        $lc = $this->helper->getLangPart($ID);
 
-        // store language in session
-        if($ACT == 'show') $_SESSION[DOKU_COOKIE]['translationlc'] = $lc;
+        // store language in session (for page related views only)
+        if(in_array($ACT, array('show', 'recent', 'diff', 'edit', 'preview', 'source', 'subscribe'))) {
+            $_SESSION[DOKU_COOKIE]['translationlc'] = $lc;
+        }
         if(!$lc) $lc = $_SESSION[DOKU_COOKIE]['translationlc'];
         if(!$lc) return;
+        $this->locale = $lc;
+
+        if(!$this->getConf('translateui')) {
+            return true;
+        }
 
-        if(file_exists(DOKU_INC.'inc/lang/'.$lc.'/lang.php')) {
-          require(DOKU_INC.'inc/lang/'.$lc.'/lang.php');
+        if(file_exists(DOKU_INC . 'inc/lang/' . $lc . '/lang.php')) {
+            require(DOKU_INC . 'inc/lang/' . $lc . '/lang.php');
         }
         $conf['lang_before_translation'] = $conf['lang']; //store for later access in syntax plugin
         $conf['lang'] = $lc;
@@ -73,35 +242,35 @@ class action_plugin_translation extends DokuWiki_Action_Plugin {
     }
 
     /**
-     * Resort page match results so that results are ordered by translation, having the
+     * Hook Callback.  Resort page match results so that results are ordered by translation, having the
      * default language first
      */
     function translation_search(&$event, $args) {
 
-        if($event->data['has_titles']){
+        if($event->data['has_titles']) {
             // sort into translation slots
             $res = array();
-            foreach($event->result as $r => $t){
-                $tr = $this->hlp->getLangPart($r);
+            foreach($event->result as $r => $t) {
+                $tr = $this->helper->getLangPart($r);
                 if(!is_array($res["x$tr"])) $res["x$tr"] = array();
-                $res["x$tr"][] = array($r,$t);
+                $res["x$tr"][] = array($r, $t);
             }
             // sort by translations
             ksort($res);
             // combine
             $event->result = array();
-            foreach($res as $r){
-                foreach($r as $l){
+            foreach($res as $r) {
+                foreach($r as $l) {
                     $event->result[$l[0]] = $l[1];
                 }
             }
-        }else{
+        } else {
             # legacy support for old DokuWiki hooks
 
             // sort into translation slots
             $res = array();
-            foreach($event->result as $r){
-                $tr = $this->hlp->getLangPart($r);
+            foreach($event->result as $r) {
+                $tr = $this->helper->getLangPart($r);
                 if(!is_array($res["x$tr"])) $res["x$tr"] = array();
                 $res["x$tr"][] = $r;
             }
@@ -109,12 +278,12 @@ class action_plugin_translation extends DokuWiki_Action_Plugin {
             ksort($res);
             // combine
             $event->result = array();
-            foreach($res as $r){
-                $event->result = array_merge($event->result,$r);
+            foreach($res as $r) {
+                $event->result = array_merge($event->result, $r);
             }
         }
     }
 
 }
 
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+//Setup VIM: ex: et ts=4 :
diff --git a/lib/plugins/translation/admin.php b/lib/plugins/translation/admin.php
new file mode 100644
index 0000000..f8d95a1
--- /dev/null
+++ b/lib/plugins/translation/admin.php
@@ -0,0 +1,101 @@
+<?php
+
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+class admin_plugin_translation extends DokuWiki_Admin_Plugin {
+    function forAdminOnly() {
+        return false;
+    }
+
+    function handle() {
+    }
+
+    function html() {
+
+        /** @var helper_plugin_translation $helper */
+        $helper = plugin_load('helper', "translation");
+        $default_language = $helper->defaultlang;
+
+        /** @var Doku_Renderer_xhtml $xhtml_renderer */
+        $xhtml_renderer = p_get_renderer('xhtml');
+
+        echo "<h1>" . $this->getLang("menu") . "</h1>";
+        echo "<table id='outdated_translations' class=\"inline\">";
+        echo "<tr><th>default: $default_language</th>";
+        if ($this->getConf('show_path')) {
+            echo "<th>" . $this->getLang('path') . "</th>";
+        }
+        foreach ($helper->translations as $t) {
+            if($t === $default_language) {
+                continue;
+            }
+            echo "<th>$t</th>";
+        }
+        echo "</tr>";
+
+        $pages = $this->getAllPages();
+        foreach ($pages as $page) {
+            if (!$helper->getLangPart($page["id"]) === $default_language ||
+                !$helper->istranslatable($page["id"], false) ||
+                !page_exists($page["id"])
+            ) {
+                continue;
+            }
+            // We have an existing and translatable page in the default language
+            $showRow = false;
+            $row = "<tr><td>" . $xhtml_renderer->internallink($page['id'],null,null,true) . "</td>";
+            if ($this->getConf('show_path')) {
+                $row .= "<td>" . $xhtml_renderer->internallink($page['id'],$page['id'],null,true) . "</td>";
+            }
+
+            list($lc, $idpart) = $helper->getTransParts($page["id"]);
+
+            foreach ($helper->translations as $t) {
+                if ($t === $default_language) {
+                    continue;
+                }
+
+                list($translID, $name) = $helper->buildTransID($t, $idpart);
+
+
+                $difflink = '';
+                if(!page_exists($translID)) {
+                    $class = "missing";
+                    $title = $this->getLang("missing");
+                    $showRow = true;
+                } else {
+                    $translfn = wikiFN($translID);
+                    if($page['mtime'] > filemtime($translfn)) {
+                        $class = "outdated";
+                        $difflink = " <a href='";
+                        $difflink .= $helper->getOldDiffLink($page["id"], $page['mtime']);
+                        $difflink .= "'>(diff)</a>";
+                        $title = $this->getLang('old');
+                        $showRow = true;
+                    } else {
+                        $class = "current";
+                        $title = $this->getLang('current');
+                    }
+                }
+                $row .= "<td class='$class'>" . $xhtml_renderer->internallink($translID,$title,null,true) . $difflink . "</td>";
+            }
+            $row .= "</tr>";
+
+            if ($showRow) {
+                echo $row;
+            }
+
+        }
+        echo "</table>";
+
+    }
+
+    function getAllPages() {
+        $namespace = $this->getConf("translationns");
+        $dir = dirname(wikiFN("$namespace:foo"));
+        $pages = array();
+        search($pages, $dir, 'search_allpages',array());
+        return $pages;
+    }
+}
diff --git a/lib/plugins/translation/admin.svg b/lib/plugins/translation/admin.svg
new file mode 100644
index 0000000..c3d51ee
--- /dev/null
+++ b/lib/plugins/translation/admin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12.87 15.07l-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>
\ No newline at end of file
diff --git a/lib/plugins/translation/conf/default.php b/lib/plugins/translation/conf/default.php
index 9719967..3a20131 100644
--- a/lib/plugins/translation/conf/default.php
+++ b/lib/plugins/translation/conf/default.php
@@ -15,3 +15,5 @@ $conf['checkage']      = 0;
 $conf['about']         = '';
 $conf['localabout']    = 0;
 $conf['display']       = 'langcode,title';
+$conf['copytrans']     = 0;
+$conf['show_path']     = 1;
diff --git a/lib/plugins/translation/conf/metadata.php b/lib/plugins/translation/conf/metadata.php
index 8138042..d9c4d22 100644
--- a/lib/plugins/translation/conf/metadata.php
+++ b/lib/plugins/translation/conf/metadata.php
@@ -16,5 +16,6 @@ $meta['redirectstart'] = array('onoff');
 $meta['checkage']      = array('onoff');
 $meta['about']         = array('string','_pattern' => '/^(|[\w:\-]+)$/');
 $meta['localabout']    = array('onoff');
-
+$meta['copytrans']     = array('onoff');
+$meta['show_path']     = array('onoff');
 
diff --git a/lib/plugins/translation/flags/et.gif b/lib/plugins/translation/flags/et.gif
new file mode 100644
index 0000000..9397a2d
Binary files /dev/null and b/lib/plugins/translation/flags/et.gif differ
diff --git a/lib/plugins/translation/helper.php b/lib/plugins/translation/helper.php
index 1ec560a..ddbf528 100644
--- a/lib/plugins/translation/helper.php
+++ b/lib/plugins/translation/helper.php
@@ -10,55 +10,55 @@
 if(!defined('DOKU_INC')) die();
 
 class helper_plugin_translation extends DokuWiki_Plugin {
-    var $trans       = array();
-    var $tns         = '';
+    var $translations = array();
+    var $translationNs = '';
     var $defaultlang = '';
-    var $LN          = array(); // hold native names
-    var $opts        = array(); // display options
+    var $LN = array(); // hold native names
+    var $opts = array(); // display options
 
     /**
      * Initialize
      */
-    function helper_plugin_translation(){
+    function __construct() {
         global $conf;
-        require_once(DOKU_INC.'inc/pageutils.php');
-        require_once(DOKU_INC.'inc/utf8.php');
+        require_once(DOKU_INC . 'inc/pageutils.php');
+        require_once(DOKU_INC . 'inc/utf8.php');
 
         // load wanted translation into array
-        $this->trans = strtolower(str_replace(',',' ',$this->getConf('translations')));
-        $this->trans = array_unique(array_filter(explode(' ',$this->trans)));
-        sort($this->trans);
+        $this->translations = strtolower(str_replace(',', ' ', $this->getConf('translations')));
+        $this->translations = array_unique(array_filter(explode(' ', $this->translations)));
+        sort($this->translations);
 
         // load language names
-        $this->LN = confToHash(dirname(__FILE__).'/lang/langnames.txt');
+        $this->LN = confToHash(dirname(__FILE__) . '/lang/langnames.txt');
 
         // display options
         $this->opts = $this->getConf('display');
-        $this->opts = explode(',',$this->opts);
-        $this->opts = array_map('trim',$this->opts);
+        $this->opts = explode(',', $this->opts);
+        $this->opts = array_map('trim', $this->opts);
         $this->opts = array_fill_keys($this->opts, true);
 
         // get default translation
-        if(!$conf['lang_before_translation']){
+        if(!$conf['lang_before_translation']) {
             $dfl = $conf['lang'];
         } else {
             $dfl = $conf['lang_before_translation'];
         }
-        if(in_array($dfl,$this->trans)){
+        if(in_array($dfl, $this->translations)) {
             $this->defaultlang = $dfl;
-        }else{
+        } else {
             $this->defaultlang = '';
-            array_unshift($this->trans,'');
+            array_unshift($this->translations, '');
         }
 
-        $this->tns = cleanID($this->getConf('translationns'));
-        if($this->tns) $this->tns .= ':';
+        $this->translationNs = cleanID($this->getConf('translationns'));
+        if($this->translationNs) $this->translationNs .= ':';
     }
 
     /**
      * Check if the given ID is a translation and return the language code.
      */
-    function getLangPart($id){
+    function getLangPart($id) {
         list($lng) = $this->getTransParts($id);
         return $lng;
     }
@@ -67,21 +67,21 @@ class helper_plugin_translation extends DokuWiki_Plugin {
      * Check if the given ID is a translation and return the language code and
      * the id part.
      */
-    function getTransParts($id){
-        $rx = '/^'.$this->tns.'('.join('|',$this->trans).'):(.*)/';
-        if(preg_match($rx,$id,$match)){
-            return array($match[1],$match[2]);
+    function getTransParts($id) {
+        $rx = '/^' . $this->translationNs . '(' . join('|', $this->translations) . '):(.*)/';
+        if(preg_match($rx, $id, $match)) {
+            return array($match[1], $match[2]);
         }
-        return array('',$id);
+        return array('', $id);
     }
 
     /**
      * Returns the browser language if it matches with one of the configured
      * languages
      */
-    function getBrowserLang(){
-        $rx = '/(^|,|:|;|-)('.join('|',$this->trans).')($|,|:|;|-)/i';
-        if(preg_match($rx,$_SERVER['HTTP_ACCEPT_LANGUAGE'],$match)){
+    function getBrowserLang() {
+        $rx = '/(^|,|:|;|-)(' . join('|', $this->translations) . ')($|,|:|;|-)/i';
+        if(preg_match($rx, $_SERVER['HTTP_ACCEPT_LANGUAGE'], $match)) {
             return strtolower($match[2]);
         }
         return false;
@@ -91,27 +91,27 @@ class helper_plugin_translation extends DokuWiki_Plugin {
      * Returns the ID and name to the wanted translation, empty
      * $lng is default lang
      */
-    function buildTransID($lng,$idpart){
+    function buildTransID($lng, $idpart) {
         global $conf;
-        if($lng){
-            $link = ':'.$this->tns.$lng.':'.$idpart;
+        if($lng) {
+            $link = ':' . $this->translationNs . $lng . ':' . $idpart;
             $name = $lng;
-        }else{
-            $link = ':'.$this->tns.$idpart;
+        } else {
+            $link = ':' . $this->translationNs . $idpart;
             $name = $this->realLC('');
         }
-        return array($link,$name);
+        return array($link, $name);
     }
 
     /**
      * Returns the real language code, even when an empty one is given
      * (eg. resolves th default language)
      */
-    function realLC($lc){
+    function realLC($lc) {
         global $conf;
-        if($lc){
+        if($lc) {
             return $lc;
-        }elseif(!$conf['lang_before_translation']){
+        } elseif(!$conf['lang_before_translation']) {
             return $conf['lang'];
         } else {
             return $conf['lang_before_translation'];
@@ -122,15 +122,15 @@ class helper_plugin_translation extends DokuWiki_Plugin {
      * Check if current ID should be translated and any GUI
      * should be shown
      */
-    function istranslatable($id,$checkact=true){
+    function istranslatable($id, $checkact = true) {
         global $ACT;
 
         if($checkact && $ACT != 'show') return false;
-        if($this->tns && strpos($id,$this->tns) !== 0) return false;
+        if($this->translationNs && strpos($id, $this->translationNs) !== 0) return false;
         $skiptrans = trim($this->getConf('skiptrans'));
-        if($skiptrans &&  preg_match('/'.$skiptrans.'/ui',':'.$id)) return false;
+        if($skiptrans && preg_match('/' . $skiptrans . '/ui', ':' . $id)) return false;
         $meta = p_get_metadata($id);
-        if($meta['plugin']['translation']['notrans']) return false;
+        if(!empty($meta['plugin']['translation']['notrans'])) return false;
 
         return true;
     }
@@ -146,79 +146,111 @@ class helper_plugin_translation extends DokuWiki_Plugin {
         $curlc = $this->getLangPart($ID);
 
         $about = $this->getConf('about');
-        if($this->getConf('localabout')){
-            list($lc,$idpart) = $this->getTransParts($about);
-            list($about,$name) = $this->buildTransID($curlc,$idpart);
+        if($this->getConf('localabout')) {
+            list($lc, $idpart) = $this->getTransParts($about);
+            list($about, $name) = $this->buildTransID($curlc, $idpart);
             $about = cleanID($about);
         }
 
         $out = '';
         $out .= '<sup>';
-        $out .= html_wikilink($about,'?');
+        $out .= html_wikilink($about, '?');
         $out .= '</sup>';
 
         return $out;
     }
 
     /**
-     * Displays the available and configured translations. Needs to be placed in the template.
+     * Returns a list of (lc => link) for all existing translations of a page
+     *
+     * @param $id
+     * @return array
      */
-    function showTranslations(){
-        global $ID;
+    function getAvailableTranslations($id) {
+        $result = array();
+
+        list($lc, $idpart) = $this->getTransParts($id);
+        $lang = $this->realLC($lc);
+
+        foreach($this->translations as $t) {
+            if($t == $lc) continue; //skip self
+            list($link, $name) = $this->buildTransID($t, $idpart);
+            if(page_exists($link)) {
+                $result[$name] = $link;
+            }
+        }
+
+        return $result;
+    }
+
+    /**
+     * Creates an UI for linking to the available and configured translations
+     *
+     * Can be called from the template or via the ~~TRANS~~ syntax component.
+     */
+    public function showTranslations() {
         global $conf;
         global $INFO;
 
-        if(!$this->istranslatable($ID)) return;
+        if(!$this->istranslatable($INFO['id'])) return '';
         $this->checkage();
 
-        list($lc,$idpart) = $this->getTransParts($ID);
+        list($lc, $idpart) = $this->getTransParts($INFO['id']);
         $lang = $this->realLC($lc);
 
-
-        $out  = '<div class="plugin_translation">';
+        $out = '<div class="plugin_translation">';
 
         //show title and about
-        if (isset($this->opts['title'])){
-            $out .= '<span>'.$this->getLang('translations');
-            if ($this->getConf('about')) $out .= $this->showAbout();
+        if(isset($this->opts['title'])) {
+            $out .= '<span>' . $this->getLang('translations');
+            if($this->getConf('about')) $out .= $this->showAbout();
             $out .= ':</span> ';
             if(isset($this->opts['twolines'])) $out .= '<br />';
         }
 
         // open wrapper
-        if($this->getConf('dropdown')){
+        if($this->getConf('dropdown')) {
             // select needs its own styling
-            if($INFO['exists']){
+            if($INFO['exists']) {
                 $class = 'wikilink1';
-            }else{
+            } else {
                 $class = 'wikilink2';
             }
-            if(isset($this->opts['flag'])){
-                $flag   = DOKU_BASE.'lib/plugins/translation/flags/'.hsc($lang).'.gif';
+            if(isset($this->opts['flag'])) {
+                $flag = DOKU_BASE . 'lib/plugins/translation/flags/' . hsc($lang) . '.gif';
+            }else{
+                $flag = '';
             }
-            $out .= '<form action="'.wl().'" id="translation__dropdown">';
-            if($flag) $out .= '<img src="'.$flag.'" alt="'.hsc($lang).'" height="11" class="'.$class.'" /> ';
-            $out .= '<select name="id" class="'.$class.'">';
-        }else{
+
+            if($conf['userewrite']) {
+                $action = wl();
+            } else {
+                $action = script();
+            }
+
+            $out .= '<form action="' . $action . '" id="translation__dropdown">';
+            if($flag) $out .= '<img src="' . $flag . '" alt="' . hsc($lang) . '" height="11" class="' . $class . '" /> ';
+            $out .= '<select name="id" class="' . $class . '">';
+        } else {
             $out .= '<ul>';
         }
 
         // insert items
-        foreach($this->trans as $t){
+        foreach($this->translations as $t) {
             $out .= $this->getTransItem($t, $idpart);
         }
 
         // close wrapper
-        if($this->getConf('dropdown')){
+        if($this->getConf('dropdown')) {
             $out .= '</select>';
             $out .= '<input name="go" type="submit" value="→" />';
             $out .= '</form>';
-        }else{
+        } else {
             $out .= '</ul>';
         }
 
         // show about if not already shown
-        if (!isset($this->opts['title']) && $this->getConf('about')) {
+        if(!isset($this->opts['title']) && $this->getConf('about')) {
             $out .= '&nbsp';
             $out .= $this->showAbout();
         }
@@ -229,6 +261,19 @@ class helper_plugin_translation extends DokuWiki_Plugin {
     }
 
     /**
+     * Return the local name
+     *
+     * @param $lang
+     * @return string
+     */
+    function getLocalName($lang) {
+        if($this->LN[$lang]) {
+            return $this->LN[$lang];
+        }
+        return $lang;
+    }
+
+    /**
      * Create the link or option for a single translation
      *
      * @param $lc string      The language code
@@ -239,59 +284,58 @@ class helper_plugin_translation extends DokuWiki_Plugin {
         global $ID;
         global $conf;
 
-        list($link,$lang) = $this->buildTransID($lc,$idpart);
+        list($link, $lang) = $this->buildTransID($lc, $idpart);
         $link = cleanID($link);
 
-
         // class
-        if(page_exists($link,'',false)){
+        if(page_exists($link, '', false)) {
             $class = 'wikilink1';
-        }else{
+        } else {
             $class = 'wikilink2';
         }
 
         // local language name
-        if ($this->LN[$lang]){
-            $localname = $this->LN[$lang];
-        } else{
-            $localname = $lang;
-        }
+        $localname = $this->getLocalName($lang);
 
+        $divClass = 'li';
         // current?
-        if($ID == $link){
-            $sel    = ' selected="selected"';
+        if($ID == $link) {
+            $sel = ' selected="selected"';
             $class .= ' cur';
-        }else{
-            $sel    = '';
+            $divClass .= ' cur';
+        } else {
+            $sel = '';
         }
 
         // flag
-        if(isset($this->opts['flag'])){
-            $flag   = DOKU_BASE.'lib/plugins/translation/flags/'.hsc($lang).'.gif';
-            $style  = ' style="background-image: url(\''.$flag.'\')"';
+        if(isset($this->opts['flag'])) {
+            $flag = DOKU_BASE . 'lib/plugins/translation/flags/' . hsc($lang) . '.gif';
+            $style = ' style="background-image: url(\'' . $flag . '\')"';
             $class .= ' flag';
         }
 
         // what to display as name
-        if(isset($this->opts['name'])){
+        if(isset($this->opts['name'])) {
             $display = hsc($localname);
-            if(isset($this->opts['langcode'])) $display .= ' ('.hsc($lang).')';
-        }elseif(isset($this->opts['langcode'])){
+            if(isset($this->opts['langcode'])) $display .= ' (' . hsc($lang) . ')';
+        } elseif(isset($this->opts['langcode'])) {
             $display = hsc($lang);
-        }else{
+        } else {
             $display = ' ';
         }
 
         // prepare output
         $out = '';
-        if($this->getConf('dropdown')){
-            $out .= '<option class="'.$class.'" title="'.hsc($localname).'" value="'.$link.'"'.$sel.$style.'>';
+        if($this->getConf('dropdown')) {
+            if($conf['useslash']) $link = str_replace(':', '/', $link);
+
+            $out .= '<option class="' . $class . '" title="' . hsc($localname) . '" value="' . $link . '"' . $sel . $style . '>';
             $out .= $display;
             $out .= '</option>';
-        }else{
-            $out .= '<li><div class="li">';
-            $out .= '<a href='.wl($link).' class="'.$class.'" title="'.hsc($localname).'">';
-            if($flag) $out .= '<img src="'.$flag.'" alt="'.hsc($lang).'" height="11" />';
+        } else {
+            $out .= "<li><div class='$divClass'>";
+            $out .= '<a href="' . wl($link) . '" class="' . $class . '" title="' . hsc($localname) . '">';
+            if($flag) $out .= '<img src="' . $flag . '" alt="' . hsc($lang) . '" height="11" />';
             $out .= $display;
             $out .= '</a>';
             $out .= '</div></li>';
@@ -303,10 +347,10 @@ class helper_plugin_translation extends DokuWiki_Plugin {
     /**
      * Checks if the current page is a translation of a page
      * in the default language. Displays a notice when it is
-     * older than the original page. Tries to lin to a diff
+     * older than the original page. Tries to link to a diff
      * with changes on the original since the translation
      */
-    function checkage(){
+    function checkage() {
         global $ID;
         global $INFO;
         if(!$this->getConf('checkage')) return;
@@ -314,35 +358,56 @@ class helper_plugin_translation extends DokuWiki_Plugin {
         $lng = $this->getLangPart($ID);
         if($lng == $this->defaultlang) return;
 
-        $rx = '/^'.$this->tns.'(('.join('|',$this->trans).'):)?/';
-        $idpart = preg_replace($rx,'',$ID);
+        $rx = '/^' . $this->translationNs . '((' . join('|', $this->translations) . '):)?/';
+        $idpart = preg_replace($rx, '', $ID);
 
         // compare modification times
-        list($orig,$name) = $this->buildTransID($this->defaultlang,$idpart);
+        list($orig, $name) = $this->buildTransID($this->defaultlang, $idpart);
         $origfn = wikiFN($orig);
-        if($INFO['lastmod'] >= @filemtime($origfn) ) return;
+        if($INFO['lastmod'] >= @filemtime($origfn)) return;
 
         // get revision from before translation
         $orev = 0;
-        $revs = getRevisions($orig,0,100);
-        foreach($revs as $rev){
-            if($rev < $INFO['lastmod']){
+        $changelog = new PageChangelog($orig);
+        $revs = $changelog->getRevisions(0, 100);
+        foreach($revs as $rev) {
+            if($rev < $INFO['lastmod']) {
                 $orev = $rev;
                 break;
             }
         }
 
         // see if the found revision still exists
-        if($orev && !page_exists($orig,$orev)) $orev=0;
+        if($orev && !page_exists($orig, $orev)) $orev = 0;
 
         // build the message and display it
         $orig = cleanID($orig);
-        $msg = sprintf($this->getLang('outdated'),wl($orig));
-        if($orev){
-            $msg .= sprintf(' '.$this->getLang('diff'),
-                    wl($orig,array('do'=>'diff','rev'=>$orev)));
+        $msg = sprintf($this->getLang('outdated'), wl($orig));
+
+        $difflink = $this->getOldDiffLink($orig, $INFO['lastmod']);
+        if ($difflink) {
+            $msg .= sprintf(' ' . $this->getLang('diff'), $difflink);
+        }
+
+        echo '<div class="notify">' . $msg . '</div>';
+    }
+
+    function getOldDiffLink($id, $lastmod) {
+        // get revision from before translation
+        $orev = false;
+        $changelog = new PageChangelog($id);
+        $revs = $changelog->getRevisions(0, 100);
+        foreach($revs as $rev) {
+            if($rev < $lastmod) {
+                $orev = $rev;
+                break;
+            }
+        }
+        if($orev && !page_exists($id, $orev)) {
+            return false;
         }
+        $id = cleanID($id);
+        return wl($id, array('do' => 'diff', 'rev' => $orev));
 
-        echo '<div class="notify">'.$msg.'</div>';
     }
 }
diff --git a/lib/plugins/translation/lang/bn/lang.php b/lib/plugins/translation/lang/bn/lang.php
new file mode 100644
index 0000000..5bfc73b
--- /dev/null
+++ b/lib/plugins/translation/lang/bn/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author ninetailz <ninetailz1125 at gmail.com>
+ */
+$lang['translations']          = 'এই পাতার অনুবাদ';
+$lang['outdated']              = 'এই অনুবাদ <a href="%s" class="wiki link1">মূল পাতা</ a> তুলনায় পুরোনো হয় এবং পুরান হতে পারে.';
+$lang['diff']                  = 'দেখুন কি <a href="%s" class="wikilink1">পরিবর্তন</ a> হয়েছে';
diff --git a/lib/plugins/translation/lang/bn/settings.php b/lib/plugins/translation/lang/bn/settings.php
new file mode 100644
index 0000000..d1df06b
--- /dev/null
+++ b/lib/plugins/translation/lang/bn/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author ninetailz <ninetailz1125 at gmail.com>
+ */
+$lang['about']                 = 'এখানে একটি পৃষ্ঠায় নাম লিখুন যেখানে অনুবাদের বৈশিষ্ট্যটি ব্যবহারকারীদের জন্য ব্যাখ্যা করা আছে. এটা ভাষা নির্বাচক থেকে লিঙ্ক করা হবে.';
+$lang['checkage']              = 'সম্ভবত পুরোনো অনুবাদের বিষয়ে সাবধান.';
+$lang['copytrans']             = 'একটি নতুন অনুবাদ শুরু যখন সম্পাদক মধ্যে মূল ভাষা টেক্সট কপি করুন?';
diff --git a/lib/plugins/translation/lang/bn/totranslate.txt b/lib/plugins/translation/lang/bn/totranslate.txt
new file mode 100644
index 0000000..46e5f1c
--- /dev/null
+++ b/lib/plugins/translation/lang/bn/totranslate.txt
@@ -0,0 +1 @@
+FixMe ** এই পাতা সম্পূর্ণরূপে এখনো অনুবাদ করা হয়নি. অনুবাদ সমাপ্তির সাহায্য করুন. ** \ \ / / (অনুবাদ সমাপ্ত হয় একবার এই অনুচ্ছেদ মুছে ফেলুন) / /
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/ca/lang.php b/lib/plugins/translation/lang/ca/lang.php
new file mode 100644
index 0000000..c74c568
--- /dev/null
+++ b/lib/plugins/translation/lang/ca/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jordi Robert Sancho <jrobertsancho at gmail.com>
+ */
+$lang['translations']          = 'Traduccions d\'aquesta pàgina';
+$lang['outdated']              = 'Aquesta traducció és més antiga que la <a href="%s" class="wikilink1">pàgina original</a> i pot estar desactualitzada.';
+$lang['diff']                  = 'Veure que ha <a href="%s" class="wikilink1">canviat</a>.';
+$lang['transloaded']           = 'Els continguts de la traducció d\'aquesta pàgina a %s han sigut pre-carregats per facilitar la traducció.<br>Però pots basar la teva traducció en les següents traduccions: %s';
+$lang['menu']                  = 'traduccions desactualitzades i que falten';
+$lang['missing']               = 'Falta!';
+$lang['old']                   = 'desactualitzat';
+$lang['current']               = 'actualitzat';
+$lang['path']                  = 'Ruta';
diff --git a/lib/plugins/translation/lang/ca/settings.php b/lib/plugins/translation/lang/ca/settings.php
new file mode 100644
index 0000000..4a356cc
--- /dev/null
+++ b/lib/plugins/translation/lang/ca/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jordi Robert Sancho <jrobertsancho at gmail.com>
+ */
+$lang['translations']          = 'Llista separada per espais d\'idiomes de traducció';
+$lang['translationns']         = 'Si només vols traduccions sota un cert espai de noms, posa\'l aquí.';
+$lang['skiptrans']             = 'Quan el nom de la pàgina coincideix amb aquesta expressió regular, no mostris el menú de traducció.';
+$lang['dropdown']              = 'Utilitzar una llista desplegable per mostrar les traduccions (recomanat per a més de 5 idiomes).';
+$lang['translateui']           = 'L\'idioma de la interfície d\'usuari s\'hauria de canviar també en els espais de noms en llengües estrangeres?';
+$lang['redirectstart']         = 'La pàgina d\'inici hauria de redirigir a un espai de noms d\'idioma mitjançant la detecció d\'idioma del navegador?';
+$lang['about']                 = 'Introdueix un nom de pàgina aquí, on la funció de traducció s\'explica als usuaris. Estarà connectat des del selector d\'idioma.';
+$lang['localabout']            = 'Utilitzar versions localitzades de la pàgina \'quant a\' (en lloc d\'un \'quant a\' global).';
+$lang['checkage']              = 'Advertir sobre possibles traduccions obsoletes.';
+$lang['display']               = 'Selecciona el que vulguis que es mostri al seleccionador d\'idioma. Recorda que els experts en usabilitat no recomanen fer servir banderes de país.';
+$lang['copytrans']             = 'Copiar el text en l\'idioma original en l\'editor quan s\'inicia una nova traducció?';
+$lang['show_path']             = 'Mostrar la ruta a la pàgina de traducció que falta?';
diff --git a/lib/plugins/translation/lang/ca/totranslate.txt b/lib/plugins/translation/lang/ca/totranslate.txt
new file mode 100644
index 0000000..96820e8
--- /dev/null
+++ b/lib/plugins/translation/lang/ca/totranslate.txt
@@ -0,0 +1 @@
+ARREGLA'M **Aquesta pàgina encara no està totalment traduïda. Si us plau, ajuda completant la traducció.**\\//(treu aquest paràgraf en acabar la traducció)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/cs/lang.php b/lib/plugins/translation/lang/cs/lang.php
index 9a92c61..faca1ae 100644
--- a/lib/plugins/translation/lang/cs/lang.php
+++ b/lib/plugins/translation/lang/cs/lang.php
@@ -1,3 +1,16 @@
 <?php
 
-$lang['translations'] = 'Překlady této stránky';
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau at seznam.cz>
+ */
+$lang['translations']          = 'Překlady této stránky';
+$lang['outdated']              = 'Tento překlad je starší než <a href="%s" class="wikilink1">originální stránka</a> a nejspíše i zastaralý.';
+$lang['diff']                  = 'Zobrazit <a href="%s" class="wikilink1">změny</a>.';
+$lang['transloaded']           = 'Text pro překlad této stránky do %s byl pro ulehčení překládání automaticky načten.<br />Můžete ale použít předešlé dostupné překlady: %s.';
+$lang['menu']                  = 'zastaralé a chybějící překlady';
+$lang['missing']               = 'Chybí!';
+$lang['old']                   = 'zastaralý';
+$lang['current']               = 'aktuální';
+$lang['path']                  = 'Cesta';
diff --git a/lib/plugins/translation/lang/cs/settings.php b/lib/plugins/translation/lang/cs/settings.php
index 7e8a5c6..f24ab34 100644
--- a/lib/plugins/translation/lang/cs/settings.php
+++ b/lib/plugins/translation/lang/cs/settings.php
@@ -1,6 +1,19 @@
 <?php
-$lang['translations']  = "Seznam přeložených jazyků (ISO kódů) oddělený mezerami. Nezahrnujte defaultní jazyk!";
-$lang['translationns'] = "Chcete-li udržovat překlad jen pro konkrétní jmenný prostor, vložte jeho jméno sem.";
-$lang['translateui']   = "Mělo by se přeložit i uživatelské rozhraní při změně překladu stránky?";
-$lang['about']         = "Vložte jméno stránky s nápovědou ohledně možnosti překládat stránky na DokuWiki s pomoci Translation pluginu. Tento odkaz bude k dispozici z výběru přeložených jazyků.";
 
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jaroslav Lichtblau <jlichtblau at seznam.cz>
+ */
+$lang['translations']          = 'Seznam přeložených jazyků (ISO kódů) oddělený mezerami. Nezahrnujte defaultní jazyk!';
+$lang['translationns']         = 'Chcete-li udržovat překlad jen pro konkrétní jmenný prostor, vložte jeho jméno sem.';
+$lang['skiptrans']             = 'Pokud jméno stránky obsahuje tento regulární výraz, nezobrazovat překladové menu.';
+$lang['dropdown']              = 'Použít rozbalovací seznam dostupných překladů (doporučeno pro 5 a více jazyků).';
+$lang['translateui']           = 'Mělo by se přeložit i uživatelské rozhraní při změně překladu stránky?';
+$lang['redirectstart']         = 'Má hlavní stránka automaticky přesměrovávat na dostupnou jazykovou verzi jmenného prostoru dle nastavení jazyka prohlížeče?';
+$lang['about']                 = 'Vložte jméno stránky s nápovědou ohledně možnosti překládat stránky na DokuWiki s pomoci Translation pluginu. Tento odkaz bude k dispozici z výběru přeložených jazyků.';
+$lang['localabout']            = 'Použít přeložené verze stran o aplikaci (namísto té globální).';
+$lang['checkage']              = 'Upozorňovat na možné zastaralé překlady.';
+$lang['display']               = 'Vybrat co se má zobrazovat v menu pro výběr jazyka. Experti na použitelnost webu nedoporučují zobrazování obrázků vlajek zemí pro výběr jazyka.';
+$lang['copytrans']             = 'Kopírovat výchozí jazykovou verzi do editoru pro nový překlad?';
+$lang['show_path']             = 'Zobrazit cestu na chybějící stránku překladu?';
diff --git a/lib/plugins/translation/lang/cs/totranslate.txt b/lib/plugins/translation/lang/cs/totranslate.txt
new file mode 100644
index 0000000..5cdeee6
--- /dev/null
+++ b/lib/plugins/translation/lang/cs/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Tato stránka ještě není plně přeložena. Pomozte s dokončením překladu.**\\ //(odstraňte tento odstavec, jakmile je překlad dokončen)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/cy/lang.php b/lib/plugins/translation/lang/cy/lang.php
new file mode 100644
index 0000000..18e12e7
--- /dev/null
+++ b/lib/plugins/translation/lang/cy/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Alan Davies <ben.brynsadler at gmail.com>
+ */
+$lang['translations']          = 'Cyfieithiadau\'r dudalen hon';
+$lang['outdated']              = 'Mae\'r cyfieithiad hwn yn hŷn na\'r <a href="%s" class="wikilink1">dudalen wreiddiol</a> a gall fod wedi dyddio.';
+$lang['diff']                  = 'Gweld beth sydd wedi <a href="%s" class="wikilink1">newid</a>.';
+$lang['transloaded']           = 'Cafodd cynnwys y dudalen hon mewn %s ei raglwytho er mwyn hwyluso\'r cyfieithu.<br />Er gallwch chi seilio\'ch cyfieithiad ar y cyfieithiadau canlynol sy\'n bodoli\'n barod: %s';
diff --git a/lib/plugins/translation/lang/cy/settings.php b/lib/plugins/translation/lang/cy/settings.php
new file mode 100644
index 0000000..21d5315
--- /dev/null
+++ b/lib/plugins/translation/lang/cy/settings.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Alan Davies <ben.brynsadler at gmail.com>
+ */
+$lang['translations']          = 'Rhestr gwahanwyd gan goma o iaith gyfieithu (codau ISO)';
+$lang['translationns']         = 'Os ydych chi am osod y cyfieithiadau o dan namespace penodol yn unig, rhowch e yma.';
+$lang['skiptrans']             = 'Pan fydd enw\'r dudalen yn bodloni\'r mynegiad rheolaidd, paid dangos y dewislen cyfieithu.';
+$lang['dropdown']              = 'Defnyddio cwymprestr i ddangos y cyfieithiadau (awgrymir am fwy na 5 iaith).';
+$lang['translateui']           = 'A ddylai iaith rhyngwyneb y defnyddiwr gael ei newid mewn namespaces ieithoedd estron hefyd?';
+$lang['redirectstart']         = 'A ddylai\'r dudalen gychwyn ailgyfeirio yn awtomatig i mewn i namespace iaith gan ddefnyddio datgeliad iaith y porwr?';
+$lang['about']                 = 'Rhowch enw tudalen yma lle caiff y nodwedd cyfieithu ei esbonio ar gyfer eich defnyddwyr. Caiff ei gysylltu o\'r dewisydd iaith.';
+$lang['localabout']            = 'Defnyddio fersiynau lleoledig o\'r dudalen \'ynghylch\' (yn hytrach nag un dudalen \'ynghylch\' gyffredinol).';
+$lang['checkage']              = 'Rhybuddio ynghylch cyfieithiadau sydd efallai wedi dyddio.';
+$lang['display']               = 'Dewiswch yr hyn hoffech chi weld yn y dewisydd iaith. \'Dyw defnyddio baneri gwlad ddim i\'w awgrymu yn ôl arbenigwyr.';
+$lang['copytrans']             = 'Copïo testun y iaith wreiddiol i\'r golygydd wrth ddechrau cyfieithiad newydd?';
diff --git a/lib/plugins/translation/lang/cy/totranslate.txt b/lib/plugins/translation/lang/cy/totranslate.txt
new file mode 100644
index 0000000..da8bfaa
--- /dev/null
+++ b/lib/plugins/translation/lang/cy/totranslate.txt
@@ -0,0 +1 @@
+FIXME **'Dyw'r dudalen heb ei chyfieithu'n llawn eto. Cynorthwywch gan gyflawni'r cyfieithiad.**\\ //(tynnych y paragraff hwn unwaith i chi orffen y cyfieithu)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/da/lang.php b/lib/plugins/translation/lang/da/lang.php
index da1bebb..af5f450 100644
--- a/lib/plugins/translation/lang/da/lang.php
+++ b/lib/plugins/translation/lang/da/lang.php
@@ -1,8 +1,12 @@
 <?php
+
 /**
- * Danish language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Markus Petersen <markus at mdev.dk>
+ * @author Soren Birk <soer9648 at eucl.dk>
  */
-
-$lang['translations'] = 'Oversættelser af denne side';
+$lang['translations']          = 'Oversættelser af denne side';
+$lang['outdated']              = 'Denne oversættelse er ældre end den <a href="%s" class="wikilink1">originale side</a> og er muligvis forældet.';
+$lang['diff']                  = 'Se hvad der er <a href="%s" class="wikilink1">ændret</a>.';
+$lang['transloaded']           = 'Indholdet af denne sides oversættelse i %s er blevet præ-indlæst for lettere oversættelse. <br />Du kan basere din oversættelse på følgende nuværende oversættelser: %s.';
diff --git a/lib/plugins/translation/lang/da/settings.php b/lib/plugins/translation/lang/da/settings.php
index 5ae938c..7b43734 100644
--- a/lib/plugins/translation/lang/da/settings.php
+++ b/lib/plugins/translation/lang/da/settings.php
@@ -1,13 +1,20 @@
 <?php
+
 /**
- * Danish language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Markus Petersen <markus at mdev.dk>
+ * @author Soren Birk <soer9648 at eucl.dk>
+ * @author Jacob Palm <mail at jacobpalm.dk>
  */
-
-$lang['translations']  = "Mellemrums-separeret liste a oversættelsessprog (ISO koder). Lad være med at inkludere standardsproget.";
-$lang['translationns'] = "Hvis du kun vil have oversættelser under et bestemt navnerum, indsæt det her.";
-$lang['skiptrans']     = "Hvis navnet på siden matcher dette regulære udtryk, så lad være med at vise oversættelsesmenuen.";
-$lang['translateui']   = "Skal brugerfladens sprog også skiftes i fremmedsprogets navnerum?";
-$lang['about']         = "Skriv et sidenavn her hvor oversættelsesfunktionen er forklaret for dine brugere. Siden vil blive linket til fra sprogvælgeren.";
-
+$lang['translations']          = 'Mellemrums-separeret liste a oversættelsessprog (ISO koder). Lad være med at inkludere standardsproget.';
+$lang['translationns']         = 'Hvis du kun vil have oversættelser under et bestemt navnerum, indsæt det her.';
+$lang['skiptrans']             = 'Hvis navnet på siden matcher dette regulære udtryk, så lad være med at vise oversættelsesmenuen.';
+$lang['dropdown']              = 'Benyt en rulleliste til at vise oversættelserne (anbefales til 5 sprog eller mere).';
+$lang['translateui']           = 'Skal brugerfladens sprog også skiftes i fremmedsprogets navnerum?';
+$lang['redirectstart']         = 'Skal startsiden automatisk henvise til et sprog-navnerum vha browserens sprog-genkendelse?';
+$lang['about']                 = 'Skriv et sidenavn her hvor oversættelsesfunktionen er forklaret for dine brugere. Siden vil blive linket til fra sprogvælgeren.';
+$lang['localabout']            = 'Anvend lokaliserede versions af "Om" siden (i stedet for en global "Om" side)';
+$lang['checkage']              = 'Advar om mulige forældede oversættelser.';
+$lang['display']               = 'Angiv hvad du ønsker der skal vises menuen til valg af sprog. Bemærk venligst, at det frarådes at benytte landeflag til sprogvalg.';
+$lang['copytrans']             = 'Kopier tekst fra originalt sporg ind i editorern når en ny oversættelse påbegyndes?';
diff --git a/lib/plugins/translation/lang/da/totranslate.txt b/lib/plugins/translation/lang/da/totranslate.txt
new file mode 100644
index 0000000..3109105
--- /dev/null
+++ b/lib/plugins/translation/lang/da/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Denne side er endnu ikke fuldt oversat. Måske kan du hjælpe med at færdiggøre oversættelsen?**\\ //(fjern dette afsnit når siden er oversat)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/de/lang.php b/lib/plugins/translation/lang/de/lang.php
index e402a02..750b6c6 100644
--- a/lib/plugins/translation/lang/de/lang.php
+++ b/lib/plugins/translation/lang/de/lang.php
@@ -1,3 +1,16 @@
 <?php
 
-$lang['translations'] = 'Übersetzungen dieser Seite';
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+$lang['translations']          = 'Übersetzungen dieser Seite';
+$lang['outdated']              = 'Diese Übersetzung ist älter als das <a href="%s" class="wikilink1">Original</a> und ist eventuell veraltet.';
+$lang['diff']                  = '<a href="%s" class="wikilink1">Änderungen</a> zeigen.';
+$lang['transloaded']           = 'Der Inhalt dieser Seite auf %s wurde in den Editor geladen um die Übersetzung zu erleichtern.<br />Sie können Ihre Arbeit auch mit einer der folgenden vorhandenen Übersetzungen beginnen: %s.';
+$lang['menu'] = "veraltete und fehlende Übersetzungen";
+$lang['missing']               = 'Fehlt!';
+$lang['old']                   = 'veraltet';
+$lang['current']               = 'aktuell';
+$lang['path']                  = 'Pfad';
diff --git a/lib/plugins/translation/lang/de/settings.php b/lib/plugins/translation/lang/de/settings.php
index 1b1f46b..ce7fbda 100644
--- a/lib/plugins/translation/lang/de/settings.php
+++ b/lib/plugins/translation/lang/de/settings.php
@@ -1,13 +1,19 @@
 <?php
 
-$lang['translations']  = 'Liste der Sprachen (ISO codes), mittels Leerzeichen separiert. Die Default-Sprache nicht angeben.';
-$lang['translationns'] = 'Wenn die Übersetzung nur unterhalb eines Namensraumes gelten soll, diesen hier angeben.';
-$lang['skiptrans']     = 'Wenn der Seitennamen dem regulären Ausdruck entspricht, dann den Sprachumschalter nicht anzeigen.';
-$lang['dropdown']      = 'Eine Auswahlliste benutzen, um die Übersetzungen anzuzeigen (zu bevorzugen bei mehr als fünf Sprachen).';
-$lang['translateui']   = 'Soll die Sprache der Benutzerschnittstelle auch in die jeweilige Fremdspache umgeschaltet werden?';
-$lang['redirectstart'] = 'Anhand des Browsers des Benutzers erkennen, welche Sprache angezeigt werden soll. (Startseite leitet in den passenden Namensraum um).';
-$lang['about']         = 'Geben Sie hier eine Seite an, welche den Mechanismus der Übersetzung erklärt. Sie wird vom Sprachumschalter verlinkt.';
-$lang['localabout']    = 'Sprachspezifische Versionen der oben angegebenen Seite (anstelle einer globalen) nutzen.';
-$lang['checkage']      = 'Warnungen von möglicherweise veralteten Übersetzungen anzeigen.';
-$lang['display']       = 'Geben Sie an welches/r Symbol/Text im Sprachumschalter angezeigt werden soll. (Die Nutzung von länderspezifischen Flaggen wird aus Gründen der Benutzbarkeit nicht empfohlen.)';
-
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+$lang['translations']          = 'Liste der Sprachen (ISO codes), mittels Leerzeichen separiert. Die Default-Sprache nicht angeben.';
+$lang['translationns']         = 'Wenn die Übersetzung nur unterhalb eines Namensraumes gelten soll, diesen hier angeben.';
+$lang['skiptrans']             = 'Wenn der Seitennamen dem regulären Ausdruck entspricht, dann den Sprachumschalter nicht anzeigen.';
+$lang['dropdown']              = 'Eine Auswahlliste benutzen, um die Übersetzungen anzuzeigen (zu bevorzugen bei mehr als fünf Sprachen).';
+$lang['translateui']           = 'Soll die Sprache der Benutzerschnittstelle auch in die jeweilige Fremdspache umgeschaltet werden?';
+$lang['redirectstart']         = 'Anhand des Browsers des Benutzers erkennen, welche Sprache angezeigt werden soll. (Startseite leitet in den passenden Namensraum um).';
+$lang['about']                 = 'Geben Sie hier eine Seite an, welche den Mechanismus der Übersetzung erklärt. Sie wird vom Sprachumschalter verlinkt.';
+$lang['localabout']            = 'Sprachspezifische Versionen der oben angegebenen Seite (anstelle einer globalen) nutzen.';
+$lang['checkage']              = 'Warnungen von möglicherweise veralteten Übersetzungen anzeigen.';
+$lang['display']               = 'Geben Sie an welches/r Symbol/Text im Sprachumschalter angezeigt werden soll. (Die Nutzung von länderspezifischen Flaggen wird aus Gründen der Benutzbarkeit nicht empfohlen.)';
+$lang['copytrans']             = 'Original Sprachversion in den Editor kopieren wenn eine neue Übersetzung begonnen wird?';
+$lang['show_path']             = 'Seitenpfad in der Übersicht der fehlenden Übersetzungen anzeigen?';
diff --git a/lib/plugins/translation/lang/de/totranslate.txt b/lib/plugins/translation/lang/de/totranslate.txt
new file mode 100644
index 0000000..37d03ae
--- /dev/null
+++ b/lib/plugins/translation/lang/de/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Diese Seite wurde noch nicht vollständig übersetzt. Bitte helfen Sie bei der Übersetzung.**\\ //(diesen Absatz entfernen, wenn die Übersetzung abgeschlossen wurde)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/en/lang.php b/lib/plugins/translation/lang/en/lang.php
index 5e83e74..304d298 100644
--- a/lib/plugins/translation/lang/en/lang.php
+++ b/lib/plugins/translation/lang/en/lang.php
@@ -3,4 +3,9 @@
 $lang['translations'] = 'Translations of this page';
 $lang['outdated']     = 'This translation is older than the <a href="%s" class="wikilink1">original page</a> and might be outdated.';
 $lang['diff']         = 'See what has <a href="%s" class="wikilink1">changed</a>.';
-?>
+$lang['transloaded']  = 'The contents of this page\'s translation in %s have been pre-loaded for easy translation.<br />But you can base your translation on the following existing translations: %s.';
+$lang['menu'] = "outdated and missing translations";
+$lang['missing']      = 'Missing!';
+$lang['old']          = 'outdated';
+$lang['current']      = 'up-to-date';
+$lang['path']         = 'Path';
diff --git a/lib/plugins/translation/lang/en/settings.php b/lib/plugins/translation/lang/en/settings.php
index faf6235..bda50a6 100644
--- a/lib/plugins/translation/lang/en/settings.php
+++ b/lib/plugins/translation/lang/en/settings.php
@@ -16,3 +16,5 @@ $lang['localabout']    = 'Use localized versions of about page (instead of one g
 $lang['checkage']      = 'Warn about possibly outdated translations.';
 $lang['display']       = 'Select what you\'d like to have shown in the language selector. Note that using country flags for language selection is not recommended by usability experts.';
 
+$lang['copytrans']     = 'Copy original language text into the editor when starting a new translation?';
+$lang['show_path']     = 'Show path on the missing translation page?';
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/en/totranslate.txt b/lib/plugins/translation/lang/en/totranslate.txt
new file mode 100644
index 0000000..ab42d5f
--- /dev/null
+++ b/lib/plugins/translation/lang/en/totranslate.txt
@@ -0,0 +1 @@
+FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/eo/lang.php b/lib/plugins/translation/lang/eo/lang.php
new file mode 100644
index 0000000..3b325da
--- /dev/null
+++ b/lib/plugins/translation/lang/eo/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Robert Bogenschneider <bogi at uea.org>
+ */
+$lang['translations']          = 'Tradukoj de tiu paĝo';
+$lang['outdated']              = 'Tiu traduko estas pli malnova ol la <a href="%s" class="wikilink1">origina paĝo</a> kaj povus esti malaktuala.';
+$lang['diff']                  = 'Vidi kio <a href="%s" class="wikilink1">ŝanĝiĝis</a>.';
+$lang['transloaded']           = 'La enhavo de la paĝtraduko en %s disponeblas por facila tradukado.<br />Sed vi povas bazi vian tradukon sur la sekvaj tradukoj: %s.';
diff --git a/lib/plugins/translation/lang/eo/settings.php b/lib/plugins/translation/lang/eo/settings.php
new file mode 100644
index 0000000..6edf642
--- /dev/null
+++ b/lib/plugins/translation/lang/eo/settings.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Robert Bogenschneider <bogi at uea.org>
+ */
+$lang['translations']          = 'Spaco-disigita listo de tradukaj lingvoj (ISO-kodoj).';
+$lang['translationns']         = 'Se vi volas traduki nur ene de certa nomspaco, indiku ĝin.';
+$lang['skiptrans']             = 'Ne montri la tradukmenuon, kiam la paĝnomo kongruas al tiu regula esprimo.';
+$lang['dropdown']              = 'Uzi falmenuon por montri la tradukojn (rekomendata por pli ol 5 lingvoj).';
+$lang['translateui']           = 'Ĉu ankaŭ ŝanĝi la lingvon de la uzanto-interfaco en alilingvaj nomspacoj?';
+$lang['redirectstart']         = 'Ĉu la startpaĝo aŭtomate redirektiĝu al lingva nomspaco laŭ foliumila rekonado?';
+$lang['about']                 = 'Paĝnomo, kie klariĝas la tradukad-funkcio al uzantoj. La lingvo-selektilo ligos tien.';
+$lang['localabout']            = 'Uzi lokajn versiojn de la pri-paĝo (anstataŭ unu ĝenerala pri-paĝo).';
+$lang['checkage']              = 'Averti pri eble malaktualaj tradukoj.';
+$lang['display']               = 'Kion montri en la lingvo-selektilo. Notu ke uzeblec-fakuloj ne rekomendas uzi landajn flagetojn por lingvo-elekto.';
+$lang['copytrans']             = 'Ĉu kopii la originlingvan tekston en la redaktokampon por komenci novan tradukon?';
diff --git a/lib/plugins/translation/lang/eo/totranslate.txt b/lib/plugins/translation/lang/eo/totranslate.txt
new file mode 100644
index 0000000..1987959
--- /dev/null
+++ b/lib/plugins/translation/lang/eo/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Tiu paĝo ankoraŭ ne plene tradukiĝis. Bv. helpi kompletigi la tradukon.**\\ //(forigu tiun alineon post fintraduko)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/es/lang.php b/lib/plugins/translation/lang/es/lang.php
index d22b133..c46669e 100644
--- a/lib/plugins/translation/lang/es/lang.php
+++ b/lib/plugins/translation/lang/es/lang.php
@@ -1,3 +1,12 @@
-<?php
-
-$lang['translations'] = 'Traducciones de esta página';
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Camilo Sampedro <sampedro1903 at gmail.com>
+ * @author carlos <carloscyb at gmail.com>
+ */
+$lang['translations']          = 'Traducciones de esta página';
+$lang['outdated']              = 'Esta traducción es más antigua que la <a href="%s" class="wikilink1">página original</a> y podría estar obsoleta.';
+$lang['diff']                  = 'Ver lo que <a href="%s" class="wikilink1">ha cambiado</a>.';
+$lang['transloaded']           = 'Los contenidos de la traducción de esta página en %s han sido precargados para facilitar la traducción.<br />Pero puedes basar tu traducción en las siguientes traducciones existentes: %s.';
diff --git a/lib/plugins/translation/lang/es/settings.php b/lib/plugins/translation/lang/es/settings.php
index 83d3243..2f9ee2d 100644
--- a/lib/plugins/translation/lang/es/settings.php
+++ b/lib/plugins/translation/lang/es/settings.php
@@ -1,13 +1,20 @@
-<?php
-/**
- * Spanish language file
- *
- * @author Cristina Amor <princesa.7 at gmail.com>
- */
-
-$lang['translations']  = "Lista de lenguajes para traducción (Códigos ISO), separados por espacios. No incluir el lenguaje por defecto.";
-$lang['flags']         = "¿Usar banderas en la pantalla en lugar del código ISO de dos letras para los lenguajes? Marcar si es sí, desmarcar si es no.";
-$lang['translationns'] = "Si sólo quieres traducciones en determinados espacios de nombre, indícalos aquí.";
-$lang['translateui']   = "¿También debería el lenguaje del interface de usuario cambiarse en los espacios de nombre foráneos?";
-$lang['about']         = "Introduce aquí un nombre de página donde se explique a tus usuarios la funcionalidad de traducción. Se enlazará desde el selector de lenguaje.";
-
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Cristina Amor <princesa.7 at gmail.com>
+ * @author Camilo Sampedro <sampedro1903 at gmail.com>
+ * @author carlos <carloscyb at gmail.com>
+ */
+$lang['translations']          = 'Lista de lenguajes para traducción (Códigos ISO), separados por espacios. No incluir el lenguaje por defecto.';
+$lang['translationns']         = 'Si sólo quieres traducciones en determinados espacios de nombre, indícalos aquí.';
+$lang['skiptrans']             = 'Cuando el nombre de la página concuerda con esta expresión regular, no mostrar el menú de traducción.';
+$lang['dropdown']              = 'Utiliza una lista desplegable para mostrar las traducciones (recomendado para más de 5 idiomas).';
+$lang['translateui']           = '¿También debería el lenguaje del interfaz de usuario cambiarse en los espacios de nombre foráneos?';
+$lang['redirectstart']         = '¿Debería la página principal redireccionar automáticamente a una página de un idioma según sea detectado por el navegador?';
+$lang['about']                 = 'Introduce aquí un nombre de página donde se explique a tus usuarios la funcionalidad de traducción. Se enlazará desde el selector de lenguaje.';
+$lang['localabout']            = 'Utiliza versiones localizadas de la página \'acerca de\' (en lugar de una página \'acerca de\' global)';
+$lang['checkage']              = 'Alertar sobre posibles traducciones obsoletas.';
+$lang['display']               = 'Selecciona lo que quieras que sea mostrado en el selector de idioma. Ten en cuenta que el uso de parámetros de país para la selección de idioma no está recomendada por los expertos en usabilidad.';
+$lang['copytrans']             = '¿Mostrar el texto en el idioma original en el editor cuando se comienza una nueva traducción?';
diff --git a/lib/plugins/translation/lang/es/totranslate.txt b/lib/plugins/translation/lang/es/totranslate.txt
new file mode 100644
index 0000000..6dc2803
--- /dev/null
+++ b/lib/plugins/translation/lang/es/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Esta página no está completamente traducida, aún. Por favor, contribuye a su traducción.**\\ //(Elimina este párrafo una vez la traducción esté completa)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/fa/lang.php b/lib/plugins/translation/lang/fa/lang.php
new file mode 100644
index 0000000..2abecd7
--- /dev/null
+++ b/lib/plugins/translation/lang/fa/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sam01 <m.sajad079 at gmail.com>
+ */
+$lang['translations']          = 'ترجمه‌های این صفحه';
+$lang['outdated']              = 'این ترجمه از a href="%s" class="wikilink1">صفحه‌ی اصلی</a> قدیمی‌تر است و ممکن است منسوخ شده باشد.';
+$lang['diff']                  = 'ببینید چه چیزی <a href="%s" class="wikilink1">تغییر کرده</a>.';
+$lang['transloaded']           = 'محتویات این ترجمه‌ی صفحه در %s برای ترجمه‌ی آسان از قبل پر شده‌است. <br />اما شما می‌توانید پایه‌ی ترجمه‌هایتان را در ترجمه‌های موجود زیر ببینید: %s.';
+$lang['menu']                  = 'ترجمه‌های منسوخ‌ شده و پیدا نشده';
+$lang['missing']               = 'پیدا نشده!';
+$lang['old']                   = 'منسوخ شده';
+$lang['current']               = 'به روز';
+$lang['path']                  = 'مسیر';
diff --git a/lib/plugins/translation/lang/fa/settings.php b/lib/plugins/translation/lang/fa/settings.php
new file mode 100644
index 0000000..2331783
--- /dev/null
+++ b/lib/plugins/translation/lang/fa/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Sam01 <m.sajad079 at gmail.com>
+ */
+$lang['translations']          = 'فضای لیست جداشده‌ی زبان‌های ترجمه شده (کدهای آی‌اس‌او)';
+$lang['translationns']         = 'اگر شما فقط می‌خواهید ترجمه‌ها زیر یک فضای‌نام خاص باشند، اینجا قرار دهید.';
+$lang['skiptrans']             = 'وقتی نام‌صفحه با عبارات منظم هم‌خوانی داشت، منوی ترجمه را نشان نده.';
+$lang['dropdown']              = 'استفاده از یک لیست کشویی برای نمایش ترجمه (توصیه شده برای بیشتر از ۵ زبان)';
+$lang['translateui']           = 'باید زبان رابط کاربر در زبان‌های خارجی فضای‌نام تغییر یابد، همچنین؟';
+$lang['redirectstart']         = 'باید صفحه‌ی آغازین به‌طور خودکار به زبانی که فضای‌نام توسط مرورگر کشف شده، تغییرمسیر کند؟';
+$lang['about']                 = 'وارد کردن یک نام‌صفحه جایی که ';
+$lang['localabout']            = 'استفاده از نسخه‌های متمرکز شده‌ی درباره صفحه (به جای یک جهانی درباره صفحه)';
+$lang['checkage']              = 'هشدار درمورد ترجمه‌های احتمالا منسوخ شده.';
+$lang['display']               = 'انتخاب این‌که شما چه چیزی را می‌پسندید تا در انتخابگر زبان نمایش داده شود. توجه داشته‌باشید که استفاده از پرچم کشورها برای انتخابگر زبان توسط کارشناسان توصیه نمی‌شود.';
+$lang['copytrans']             = 'کپی‌کردن زبان اصلی متن داخل ویرایشگر وقتی که یک ترجمه جدید آغار می‌شود؟';
+$lang['show_path']             = 'نمایش مسیر در ترجمه‌ی پیدانشده‌ی صفحه‌‌ها؟';
diff --git a/lib/plugins/translation/lang/fa/totranslate.txt b/lib/plugins/translation/lang/fa/totranslate.txt
new file mode 100644
index 0000000..665eb5b
--- /dev/null
+++ b/lib/plugins/translation/lang/fa/totranslate.txt
@@ -0,0 +1 @@
+تعمیرم کن **این صفحه کامل ترجمه نشده، اکنون. لطفا برای کامل‌شدنش کمک کنید.**\\ //(بعد از پایان ترجمه این بند را از ترجمه حذف کنید)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/fr/lang.php b/lib/plugins/translation/lang/fr/lang.php
index dd21c10..d8a8b9d 100644
--- a/lib/plugins/translation/lang/fr/lang.php
+++ b/lib/plugins/translation/lang/fr/lang.php
@@ -1,3 +1,19 @@
 <?php
 
-$lang['translations'] = 'Traductions de cette page';
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Vincent Feltz <psycho at feltzv.fr>
+ * @author NicolasFriedli <nicolas at theologique.ch>
+ * @author Gilles-Philippe Morin <gilles.philippe.morin at gmail.com>
+ * @author Schplurtz le Déboulonné <schplurtz at laposte.net>
+ */
+$lang['translations']          = 'Traductions de cette page';
+$lang['outdated']              = 'Cette traduction est plus ancienne que <a href="%s" class="wikilink1">la page originale</a> et est peut-être dépassée.';
+$lang['old']                  = 'dépassée';
+$lang['diff']                  = 'Voir ce qui a <a href="%s" class="wikilink1">changé</a>.';
+$lang['transloaded']           = 'Le contenu de cette page en %s a été pré-chargé pour faciliter la traduction.<br/> Mais vous pouvez baser votre traduction sur les traductions existantes: %s';
+$lang['menu']                  = 'traductions dépassées et manquantes';
+$lang['missing']               = 'Manquante!';
+$lang['current']               = 'à jour';
+$lang['path']                  = 'Chemin';
diff --git a/lib/plugins/translation/lang/fr/settings.php b/lib/plugins/translation/lang/fr/settings.php
index 2d29c7c..74869ce 100644
--- a/lib/plugins/translation/lang/fr/settings.php
+++ b/lib/plugins/translation/lang/fr/settings.php
@@ -1,9 +1,22 @@
 <?php
+
 /**
- * French language file
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  *
  * @author Guy Brand <gb at isis.u-strasbg.fr>
+ * @author Vincent Feltz <psycho at feltzv.fr>
+ * @author NicolasFriedli <nicolas at theologique.ch>
+ * @author Schplurtz le Déboulonné <schplurtz at laposte.net>
  */
-
-$lang['translations']  = "Liste des langues disponibles séparées par des espaces (codes ISO). Ne pas inclure la langue par défaut";
-$lang['translationns'] = "Si vous ne souhaitez que des traductions sous un namespace, indiquez-le ici.";
+$lang['translations']          = 'Liste des langues disponibles séparées par des espaces (codes ISO).';
+$lang['translationns']         = 'Si vous souhaitez ne traduire qu\'une certaine catégorie, indiquez-la ici.';
+$lang['skiptrans']             = 'Quand le nom de la page correspond à cette expression régulière, ne pas montrer le menu de traduction.';
+$lang['dropdown']              = 'Utiliser un menu déroulant pour afficher les traductions (recommandé pour plus de 5 langues).';
+$lang['translateui']           = 'Faut-il changer la langue de l\'interface utilisateur dans les catégories traduites ?';
+$lang['redirectstart']         = 'La page de départ devrait-elle rediriger vers une catégorie traduite en utilisant la détection de langue du navigateur ?';
+$lang['about']                 = 'Entrez ici un nom de page où la fonctionnalité de traduction est expliquée aux utilisateurs. Elle sera accessible depuis le sélecteur de langue.';
+$lang['localabout']            = 'Utiliser des versions traduites de la page à propos (au lieu d\'une page à propos globale).';
+$lang['checkage']              = 'Avertir de la possibilité de traductions dépassées.';
+$lang['display']               = 'Sélectionnez ce que vous voudriez afficher dans le sélecteur de langue. Notez qu\'utiliser les drapeaux de pays pour la sélection de langue n\'est pas recommandé par les experts en ergonomie.';
+$lang['copytrans']             = 'Copier le texte en langue source dans l\'éditeur quand une nouvelle traduction est lancée ?';
+$lang['show_path']             = 'Montrer les chemins sur la page des traductions manquantes ?';
diff --git a/lib/plugins/translation/lang/fr/totranslate.txt b/lib/plugins/translation/lang/fr/totranslate.txt
new file mode 100644
index 0000000..3603d4e
--- /dev/null
+++ b/lib/plugins/translation/lang/fr/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Cette page n'est pas encore traduite entièrement. Merci de terminer la traduction**\\ //(supprimez ce paragraphe une fois la traduction terminée)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/hr/lang.php b/lib/plugins/translation/lang/hr/lang.php
new file mode 100644
index 0000000..80e9399
--- /dev/null
+++ b/lib/plugins/translation/lang/hr/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc at gmail.com>
+ */
+$lang['translations']          = 'Prijevodi ove stranice';
+$lang['outdated']              = 'Prijevod ove stranice je stariji od <a href="%s" class="wikilink1">originalne stranice</a> i može biti zastario.';
+$lang['diff']                  = 'Pogledajte što je <a href="%s" class="wikilink1">izmijenjeno</a>.';
+$lang['transloaded']           = 'Sadržaj ove stranice u jeziku %s je napunjeno radi lakšeg prevođenja.<br />Ali možete bazirati Vaš prijevod i prema slijedećim raspoloživim prijevodima: %s.';
+$lang['menu']                  = 'zastarjeli i nedostajući prijevodi';
+$lang['missing']               = 'Nedostaje!';
+$lang['old']                   = 'zastarjelo';
+$lang['current']               = 'ažuran';
+$lang['path']                  = 'Staza';
diff --git a/lib/plugins/translation/lang/hr/settings.php b/lib/plugins/translation/lang/hr/settings.php
new file mode 100644
index 0000000..d1769cc
--- /dev/null
+++ b/lib/plugins/translation/lang/hr/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Davor Turkalj <turki.bsc at gmail.com>
+ */
+$lang['translations']          = 'Razmacima odvojena lista podržanih jezika (ISO oznake).';
+$lang['translationns']         = 'Ako želite prijevode samo ispod određenog imenskog prostora, navedite ga ovdje.';
+$lang['skiptrans']             = 'Kada ime stranice odgovara ovom regularnom izrazu, ne prikazujte meni za prijevode.';
+$lang['dropdown']              = 'Koristi padajuću listu za prikaz prijevoda (preporučeno kada ima više od 5 jezika).';
+$lang['translateui']           = 'Da li da jezik korisničkog sučelja također bude prebačen u jezik stranog imenskog prostora ?';
+$lang['redirectstart']         = 'Da li da se početna strana automatski preusmjeri na imenski prostor koristeći detektirani jezik preglednika?';
+$lang['about']                 = 'Unesi naziv stranice gdje je korisnicima pojašnjene mogućnosti prevođenja. Ona će biti povezana na izbornik jezika.';
+$lang['localabout']            = 'Koristi lokaliziranu inačicu "about" stranice (umjesto jedinstvene globalne)';
+$lang['checkage']              = 'Upozori o mogućem zastarjelom prijevodu.';
+$lang['display']               = 'Odaberite što želite da bude prikazano u izborniku jezika. Budite svjesni da korištenje zastava za odabir jezika nije preporučeno od strane eksperata.';
+$lang['copytrans']             = 'Kopirati originalni tekst u editor kada otvorite novi prijevod ?';
+$lang['show_path']             = 'Prikaži stazu do nedostajuće stranice s prijevodom?';
diff --git a/lib/plugins/translation/lang/hr/totranslate.txt b/lib/plugins/translation/lang/hr/totranslate.txt
new file mode 100644
index 0000000..b49e869
--- /dev/null
+++ b/lib/plugins/translation/lang/hr/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Ova stranica još nije prevedena u cijelosti. Molimo pomognite u njenom prijevodu.**\\ //(uklonite ovaj paragraf jednom kada je prevođenje završeno)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/hu/lang.php b/lib/plugins/translation/lang/hu/lang.php
new file mode 100644
index 0000000..6a576ff
--- /dev/null
+++ b/lib/plugins/translation/lang/hu/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marina Vladi <deldadam at gmail.com>
+ */
+$lang['translations']          = 'Oldal fordításai';
+$lang['outdated']              = 'A fordítás régebbi, mint az <a href="%s" class="wikilink1">eredeti oldal</a>, ezért lehet, hogy már elavult.';
+$lang['diff']                  = 'Módosítások <a href="%s" class="wikilink1">megtekintése</a>.';
+$lang['transloaded']           = 'Az oldal tartalmának %s nyelvi fordítását előre betöltöttem a könnyebb módosítás érdekében.<br />Ugyanakkor a fordítást elvégezhetjük a már létező %s fordítás alapján is.';
diff --git a/lib/plugins/translation/lang/hu/settings.php b/lib/plugins/translation/lang/hu/settings.php
new file mode 100644
index 0000000..5a27108
--- /dev/null
+++ b/lib/plugins/translation/lang/hu/settings.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Marina Vladi <deldadam at gmail.com>
+ */
+$lang['translations']          = 'Szóközzel elválasztott lista a nyelvi fordításokról (ISO-kódokkal).';
+$lang['translationns']         = 'Ha csak egy bizonyos névtér alatt lévő fordítást szeretnénk, tegyük ide.';
+$lang['skiptrans']             = 'Ha az oldal neve illeszkedik ehhez a reguláris kifejezéshez, ne jelenjen meg a fordítások menüje.';
+$lang['dropdown']              = 'Legördülő lista használata a fordításokhoz (5 nyelvnél több esetén javasolt).';
+$lang['translateui']           = 'Módosuljon a felhasználói felület nyelve is idegen nyelvi névterek alatt?';
+$lang['redirectstart']         = 'Átirányítsuk automatikusan a kezdőoldalt abba a nyelvi névtérbe, amely nyelv a böngészőben van beállítva?';
+$lang['about']                 = 'Itt adhatjuk meg annak az oldalnak a nevét, amelyen a fordítási lehetőségeket ismertetjük a felhasználókkal. Erre fog hivatkozni a nyelvkiválasztó képernyőelem.';
+$lang['localabout']            = 'A névjegy oldal fordított változátanak használata (a globális névjegy oldal helyett).';
+$lang['checkage']              = 'Figyelmeztetés az esetlegesen elavult fordításokra.';
+$lang['display']               = 'Válasszuk ki, mi jelenjen meg a nyelvi kiválasztó képernyőelemében. Jegyezzük meg: az országzászlókat nem javasolják a használhatósági szakértők.';
+$lang['copytrans']             = 'Átmásoljuk az eredeti nyelvi szöveget a szövegszerkesztőbe új fordítás indításakor?';
diff --git a/lib/plugins/translation/lang/hu/totranslate.txt b/lib/plugins/translation/lang/hu/totranslate.txt
new file mode 100644
index 0000000..e072d8a
--- /dev/null
+++ b/lib/plugins/translation/lang/hu/totranslate.txt
@@ -0,0 +1 @@
+JAVÍTANDÓ **Az oldal még nincs teljesen lefordítva. Kérjük, segítsen a befejezésében!**\\ //(Töröljük ezt a bekezdést a fordítás elkészültekor.)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/it/lang.php b/lib/plugins/translation/lang/it/lang.php
index e0a8ee2..23d3bd6 100644
--- a/lib/plugins/translation/lang/it/lang.php
+++ b/lib/plugins/translation/lang/it/lang.php
@@ -1,3 +1,10 @@
 <?php
 
-$lang['translations'] = 'Traduzioni di questa pagina';
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Torpedo <dgtorpedo at gmail.com>
+ */
+$lang['translations']          = 'Traduzioni di questa pagina';
+$lang['outdated']              = 'Questa traduzione è più vecchia di quella della <a href="%s" class="wikilink1">pagina originale</a> è potrebbe essere superata.';
+$lang['diff']                  = 'Vedi cosa è <a href="%s" class="wikilink1">cambiato</a>.';
diff --git a/lib/plugins/translation/lang/it/settings.php b/lib/plugins/translation/lang/it/settings.php
index 6349bb5..775fbf7 100644
--- a/lib/plugins/translation/lang/it/settings.php
+++ b/lib/plugins/translation/lang/it/settings.php
@@ -1,12 +1,20 @@
 <?php
+
 /**
- * Italian language file
- *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
  * @author Andreas Gohr <andi at splitbrain.org>
  * @author Diego Pierotto <ita.translations at tiscali.it>
+ * @author Sebastiano Pistore <olatusrooc at virgilio.it>
+ * @author Sebastiano Pistore <sebastiano.pistore.info at aol.com>
+ * @author OlatusRooc <olatusrooc at virgilio.it>
  */
-
-$lang['translations']  = "Elenco delle lingue di traduzione separati da spazi (codici ISO). Non includere la lingua predefinita";
-$lang['translationns'] = "Scrivi qui solo se vuoi le traduzioni all'interno di una certa categoria.";
-$lang['translateui']   = "Vuoi che anche la lingua dell'interfaccia utente sia modificata in categorie della stessa lingua?";
-$lang['about']         = "Inserisci qui una pagina dove la funzione di traduzione viene spiegata agli utenti. Sarà collegata al selettore lingua.";
+$lang['translations']          = 'Elenco delle lingue di traduzione separati da spazi (codici ISO). Non includere la lingua predefinita';
+$lang['translationns']         = 'Scrivi qui solo se vuoi le traduzioni all\'interno di una certa categoria.';
+$lang['skiptrans']             = 'Quando i nomi delle pagine corrispondono a questa espressione regolare non mostrare il menu di traduzione.';
+$lang['dropdown']              = 'Utilizza un menu a tendina per visualizzare le traduzioni (consigliato quando si lavora con più di cinque lingue).';
+$lang['translateui']           = 'Vuoi che anche la lingua dell\'interfaccia utente sia modificata in categorie della stessa lingua?';
+$lang['about']                 = 'Inserisci qui una pagina dove la funzione di traduzione viene spiegata agli utenti. Sarà collegata al selettore lingua.';
+$lang['localabout']            = 'Mostra le versioni localizzate della pagina About.';
+$lang['checkage']              = 'Avvisa della possibile presenza di traduzioni obsolete.';
+$lang['copytrans']             = 'Copia nell\'editor il testo in lingua originale quando viene iniziata una nuova traduzione?';
diff --git a/lib/plugins/translation/lang/it/totranslate.txt b/lib/plugins/translation/lang/it/totranslate.txt
new file mode 100644
index 0000000..e83c52a
--- /dev/null
+++ b/lib/plugins/translation/lang/it/totranslate.txt
@@ -0,0 +1 @@
+FIXME ** Questa pagina non è ancora completamente tradotta. Chi può potrebbe aiutarne il completamento. ** \\ // (Rimuovere questo paragrafo a lavoro completato) //
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/ja/lang.php b/lib/plugins/translation/lang/ja/lang.php
new file mode 100644
index 0000000..b438bc6
--- /dev/null
+++ b/lib/plugins/translation/lang/ja/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno at live.jp>
+ */
+$lang['translations']          = 'このページの翻訳';
+$lang['outdated']              = 'この翻訳は<a href="%s" class="wikilink1">元のページ</a>よりも更新日が古く、内容が古い可能性があります。';
+$lang['diff']                  = '<a href="%s" class="wikilink1">変更点</a>を参照して下さい。';
+$lang['transloaded']           = '翻訳し易くするために %s にあるこのページの翻訳内容を事前に読み込みました。<br />以下の既存の翻訳を翻訳の基にすることができます:%s。';
+$lang['menu']                  = '古い翻訳と欠落している翻訳';
+$lang['missing']               = '欠落';
+$lang['old']                   = '内容が古い';
+$lang['current']               = '最新';
+$lang['path']                  = 'パス';
diff --git a/lib/plugins/translation/lang/ja/settings.php b/lib/plugins/translation/lang/ja/settings.php
new file mode 100644
index 0000000..b8c8899
--- /dev/null
+++ b/lib/plugins/translation/lang/ja/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Hideaki SAWADA <chuno at live.jp>
+ */
+$lang['translations']          = '翻訳言語(ISOコード)のスペース区切り一覧';
+$lang['translationns']         = '特定の名前空間以下のみを翻訳したい場合、名前空間を記入する。';
+$lang['skiptrans']             = 'ページ名がこの正規表現と一致すると、翻訳メニューが表示されません。';
+$lang['dropdown']              = '翻訳を表示するためにドロップダウン一覧を使用する(5言語以上の場合推奨)。';
+$lang['translateui']           = 'ユーザーインターフェイスの言語も、名前空間の言語に切り替えるか?';
+$lang['redirectstart']         = 'ブラウザーの言語設定を利用して、スタートページを各言語の名前空間に自動的にリダイレクトするか?';
+$lang['about']                 = '翻訳機能をユーザーに説明するページ名を入力して下さい。言語セレクタからリンクされます。';
+$lang['localabout']            = '(包括的な概要ページの代わりに)翻訳版の概要ページを使用する。';
+$lang['checkage']              = '古い翻訳について警告する。';
+$lang['display']               = '言語セレクタに何を表示するかを選択する。言語選択に国旗を使用することをユーザビリティ専門家は奨励しないので注意してください。';
+$lang['copytrans']             = '新しく翻訳を開始する時、エディタに元の言語の文章をコピーしますか?';
+$lang['show_path']             = '欠落している翻訳ページのパスを表示します。';
diff --git a/lib/plugins/translation/lang/ja/totranslate.txt b/lib/plugins/translation/lang/ja/totranslate.txt
new file mode 100644
index 0000000..05ac184
--- /dev/null
+++ b/lib/plugins/translation/lang/ja/totranslate.txt
@@ -0,0 +1 @@
+FIXME **このページはまだ完全には、翻訳されません。翻訳の完了を支援して下さい。**\\ //(翻訳が完了したらこの段落を削除して下さい)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/ko/lang.php b/lib/plugins/translation/lang/ko/lang.php
new file mode 100644
index 0000000..d99d64d
--- /dev/null
+++ b/lib/plugins/translation/lang/ko/lang.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100 at gmail.com>
+ */
+$lang['translations']          = '이 문서의 번역';
+$lang['outdated']              = '이 번역은 <a href="%s" class="wikilink1">원래 문서</a>보다 오래되었고 오래된 번역일 수 있습니다.';
+$lang['diff']                  = '무엇이 <a href="%s" class="wikilink1">바뀌었는지</a> 보세요.';
+$lang['transloaded']           = '%s에 있는 이 문서의 번역의 내용을 쉽게 번역하기 위해 미리 불러왔습니다.<br />하지만 다음 기존 번역에 당신의 번역을 바탕으로 할 수 있습니다: %s.';
+$lang['menu']                  = '오래되었고 없는 번역';
+$lang['missing']               = '없음!';
+$lang['old']                   = '오래됨';
+$lang['current']               = '최신';
+$lang['path']                  = '경로';
diff --git a/lib/plugins/translation/lang/ko/settings.php b/lib/plugins/translation/lang/ko/settings.php
new file mode 100644
index 0000000..ccf6d1c
--- /dev/null
+++ b/lib/plugins/translation/lang/ko/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Myeongjin <aranet100 at gmail.com>
+ */
+$lang['translations']          = '번역 언어의 공백으로 구분한 목록 (ISO 코드).';
+$lang['translationns']         = '특정 이름공간에 따라 번역을 원하면, 여기에 넣으세요.';
+$lang['skiptrans']             = '문서 이름이 정규 표현식과 일치하면, 번역 메뉴를 보여주지 마세요.';
+$lang['dropdown']              = '번역을 표시할 드롭다운 목록을 사용합니다. (5개 이상의 언어에 권장)';
+$lang['translateui']           = '사용자 인터페이스의 언어도 외국어 이름공간으로 전환해야 합니까?';
+$lang['redirectstart']         = '시작 문서가 자동으로 브라우저 언어 감지를 사용해 언어 이름공간으로 넘겨줘야 합니까?';
+$lang['about']                 = '사용자에게 설명할 번역 기능이 어디에 있는지 여기에 문서 이름을 입력하세요.';
+$lang['localabout']            = '(하나의 전역 소개 문서 대신) 소개 문서의 지역화된 버전을 사용합니다.';
+$lang['checkage']              = '가능하면 오래된 번역에 대해 경고합니다.';
+$lang['display']               = '언어 선택기에 보여주고 싶은 것을 선택하세요. 언어 선택에 국기를 사용하는 것은 사용성 전문가에게 권장하지 않음을 참고하세요.';
+$lang['copytrans']             = '새 번역을 시작할 때 편집기에 원래 언어 문장을 복사하겠습니까?';
+$lang['show_path']             = '없는 번역 문서에서의 경로를 보여줄까요?';
diff --git a/lib/plugins/translation/lang/ko/totranslate.txt b/lib/plugins/translation/lang/ko/totranslate.txt
new file mode 100644
index 0000000..9a19833
--- /dev/null
+++ b/lib/plugins/translation/lang/ko/totranslate.txt
@@ -0,0 +1 @@
+FIXME **이 문서는 아직 완전히 번역되지 않았습니다. 번역을 완료하는 데 도와주세요.**\\ //(번역을 마치면 이 단락을 지우세요)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/langnames.txt b/lib/plugins/translation/lang/langnames.txt
index 1ba02ec..90992ee 100644
--- a/lib/plugins/translation/lang/langnames.txt
+++ b/lib/plugins/translation/lang/langnames.txt
@@ -3,36 +3,36 @@
 
 aa	Afaraf
 ab	Аҧсуа
-ae	avesta
+ae	Avesta
 af	Afrikaans
 ak	Akan
 am	አማርኛ
 an	Aragonés
 ar	|العربية
 as	অসমীয়া
-av	авар мацӀ
-ay	aymar aru
-az	azərbaycan dili
-ba	башҡорт теле
+av	Авар мацӀ
+ay	Aymar aru
+az	Azərbaycan dili
+ba	Башҡорт теле
 be	Беларуская
-bg	български език
+bg	Български език
 bh	भोजपुरी
 bi	Bislama
-bm	bamanankan
+bm	Bamanankan
 bn	বাংলা
 bo	བོད་ཡིག
-br	brezhoneg
-bs	bosanski jezik
+br	Brezhoneg
+bs	Bosanski Jezik
 ca	Català
-ce	нохчийн мотт
+ce	Нохчийн Мотт
 ch	Chamoru
-co	corsu
+co	Corsu
 cr	ᓀᐦᐃᔭᐍᐏᐣ
-cs	česky
-cu	ѩзыкъ словѣньскъ
-cv	чӑваш чӗлхи
+cs	Česky
+cu	Ѩзыкъ Словѣньскъ
+cv	Чӑваш Чӗлхи
 cy	Cymraeg
-da	dansk
+da	Dansk
 de	Deutsch
 dv	ދިވެހި
 dz	རྫོང་ཁ
@@ -40,15 +40,15 @@ ee	Eʋegbe
 el	Ελληνικά
 en	English
 eo	Esperanto
-es	español
-et	eesti
-eu	euskara
+es	Español
+et	Eesti
+eu	Euskara
 fa	فارسی
 ff	Fulfulde
-fi	suomi
-fj	vosa Vakaviti
-fo	føroyskt
-fr	français
+fi	Suomi
+fj	Vosa Vakaviti
+fo	Føroyskt
+fr	Français
 fy	Frysk
 ga	Gaeilge
 gd	Gaelic
@@ -60,8 +60,8 @@ ha	هَوُسَ
 he	עברית
 hi	हिन्दी, हिंदी
 ho	Hiri Motu
-hr	hrvatski
-ht	Kreyòl ayisyen
+hr	Hrvatski
+ht	Kreyòl Ayisyen
 hu	Magyar
 hy	Հայերեն
 hz	Otjiherero
@@ -76,7 +76,7 @@ is	Íslenska
 it	Italiano
 iu	ᐃᓄᒃᑎᑐᑦ
 ja	日本語
-jv	basa Jawa
+jv	Basa Jawa
 ka	ქართული
 kg	KiKongo
 ki	Gĩkũyũ
@@ -89,21 +89,21 @@ ko	한국어
 kr	Kanuri
 ks	कश्मीरी}}
 ku	Kurdî
-kv	коми кыв
+kv	Коми Кыв
 kw	Kernewek
-ky	кыргыз тили
-la	latine
+ky	Кыргыз Тили
+la	Latine
 lb	Lëtzebuergesch
 lg	Luganda
 li	Limburgs
 ln	Lingála
 lo	ພາສາລາວ
-lt	lietuvių kalba
-lv	latviešu valoda
-mg	Malagasy fiteny
+lt	Lietuvių Kalba
+lv	Latviešu Valoda
+mg	Malagasy Fiteny
 mh	Kajin M̧ajeļ
-mi	te reo Māori
-mk	македонски јазик
+mi	Te Reo Māori
+mk	Македонски Јазик
 ml	മലയാളം
 mn	Монгол
 mr	मराठी
@@ -118,9 +118,9 @@ ng	Owambo
 nl	Nederlands
 nn	Norsk nynorsk
 no	Norsk
-nr	isiNdebele
+nr	IsiNdebele
 nv	Diné bizaad
-ny	chiCheŵa
+ny	ChiCheŵa
 oc	Occitan
 oj	ᐊᓂᔑᓈᐯᒧᐎᓐ
 om	Afaan Oromoo
@@ -128,45 +128,46 @@ or	ଓଡ଼ିଆ
 os	Ирон æвзаг
 pa	ਪੰਜਾਬੀ, 
 pi	पाऴि
-pl	polski
+pl	Polski
 ps	پښتو
 pt	Português
+pt-br   Português
 qu	Runa Simi
-rm	rumantsch grischun
-rn	kiRundi
-ro	română
+rm	Rumantsch Grischun
+rn	KiRundi
+ro	Română
 ru	Русский
 rw	Ikinyarwanda
 sa	संस्कृतम्
-sc	sardu
+sc	Sardu
 sd	सिन्धी}}
 se	Davvisámegiella
-sg	yângâ tî sängö
+sg	Yângâ Tî Sängö
 si	සිංහල
-sk	slovenčina
-sl	slovenščina
-sm	gagana fa'a Samoa
-sn	chiShona
+sk	Slovenčina
+sl	Slovenščina
+sm	Gagana fa'a Samoa
+sn	ChiShona
 so	Soomaaliga
 sq	Shqip
-sr	српски језик
+sr	Српски Језик
 ss	SiSwati
 st	Sesotho
 su	Basa Sunda
-sv	svenska
+sv	Svenska
 sw	Kiswahili
 ta	தமிழ்
 te	తెలుగు
-tg	тоҷикӣ
+tg	Тоҷикӣ
 th	ไทย
 ti	ትግርኛ
 tk	Türkmen
 tl	Wikang Tagalog
 tn	Setswana
-to	faka Tonga
+to	Faka Tonga
 tr	Türkçe
 ts	Xitsonga
-tt	татарча
+tt	Татарча
 tw	Twi
 ty	Reo Mā`ohi
 ug	Uyƣurqə
@@ -178,10 +179,10 @@ vi	Tiếng Việt
 vo	Volapük
 wa	Walon
 wo	Wollof
-xh	isiXhosa
+xh	IsiXhosa
 yi	ייִדיש
 yo	Yorùbá
 za	Saɯ cueŋƅ
 zh	中文
 zh-tw	繁體中文
-zu	isiZulu
+zu	IsiZulu
diff --git a/lib/plugins/translation/lang/lv/lang.php b/lib/plugins/translation/lang/lv/lang.php
index 9860e09..af85894 100644
--- a/lib/plugins/translation/lang/lv/lang.php
+++ b/lib/plugins/translation/lang/lv/lang.php
@@ -1,3 +1,11 @@
-<?php
-
-$lang['translations'] = 'Citās valodās';
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Aivars Miška <allefm at gmail.com>
+ */
+$lang['translations']          = 'Citās valodās';
+$lang['outdated']              = 'Šis tulkojums ir vecāks par <a href="%s" class="wikilink1">oriģinālo lapu</a> un varbūt ir novecojis.';
+$lang['diff']                  = 'Redzēt, ka ir <a href="%s" class="wikilink1">mainījies</a>.';
+$lang['transloaded']           = 'Vieglākai tulkošanai ir ielādēts lapas saturs  no %s .<br />Bet varat balstīties arī uz šādiem tulkojumiem: %s.';
diff --git a/lib/plugins/translation/lang/lv/settings.php b/lib/plugins/translation/lang/lv/settings.php
index 22bd23e..1b61b46 100644
--- a/lib/plugins/translation/lang/lv/settings.php
+++ b/lib/plugins/translation/lang/lv/settings.php
@@ -1,12 +1,19 @@
-<?php
-/**
- * Latvian language file
- *
- * @author Aivars Miška <allefm at gmail.com>
- */
-
-$lang['translations']  = "Ar atstarpēm atdalīts tulkojumu valodu saraksts  (ISO kodi). Izņemot noklusēto valodu.";
-$lang['translationns'] = "Ja tulkojumus vajag tikai noteiktā nodaļā , ieraksti to šeit.";
-$lang['translateui']   = "Vai svešvalodu nodaļās jāpārslēdz arī lietotāja sakarnes valoda?";
-$lang['about']         = "Ieraksti šeit lapu, kurā lietotājiem izskaidrotas tulkošas iespējas. Tā tiks piesaistīta valodu izvēlei.";
-
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Aivars Miška <allefm at gmail.com>
+ * @author Aivars Miška <allefm at gmail.com>
+ */
+$lang['translations']          = 'Ar atstarpēm atdalīts tulkojumu valodu saraksts  (ISO kodi). Izņemot noklusēto valodu.';
+$lang['translationns']         = 'Ja tulkojumus vajag tikai noteiktā nodaļā, ieraksti to šeit.';
+$lang['skiptrans']             = 'Ja lapas nosaukums atbilst regulārajai izteiksmei, tulkošanas izvēlni nerādīt.';
+$lang['dropdown']              = 'Lietot izkrītošo izvēlni tulkojumu parādīšanai (ieteikt, ja ir vairāk par 5 valodām). ';
+$lang['translateui']           = 'Vai svešvalodu nodaļās jāpārslēdz arī lietotāja sakarnes valoda?';
+$lang['redirectstart']         = 'Vai sākuma lapai automātiski jāpārslēdzas atkarībā no pārlūkprogrammas noteiktās valodas?';
+$lang['about']                 = 'Ieraksti šeit lapu, kurā lietotājiem izskaidrotas tulkošas iespējas. Tā tiks piesaistīta valodu izvēlei.';
+$lang['localabout']            = 'Lietot "par" lapas lokalizēto versiju, nevis globālo "par" lapu.';
+$lang['checkage']              = 'Brīdināt pa varbūt novecojušiem tulkojumiem. ';
+$lang['display']               = 'Norādiet, ko lietot valodas izvēlei. Ņemiet vērā, ka valodām izmantot valstu karogus neiesaka.';
+$lang['copytrans']             = 'Sākot tulkojumu, iekopēt redaktorā oriģināltekstu?';
diff --git a/lib/plugins/translation/lang/lv/totranslate.txt b/lib/plugins/translation/lang/lv/totranslate.txt
new file mode 100644
index 0000000..c46c14e
--- /dev/null
+++ b/lib/plugins/translation/lang/lv/totranslate.txt
@@ -0,0 +1 @@
+IZLABO **Lapa nav pilnībā pārtulkota. Lūdzu palīdzi pabeigt tulkojumu!** \\ //(Izdzēs šo rindkopu, kad tulkojums pabeigts!)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/nl/lang.php b/lib/plugins/translation/lang/nl/lang.php
new file mode 100644
index 0000000..1864f07
--- /dev/null
+++ b/lib/plugins/translation/lang/nl/lang.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Gerrit Uitslag <klapinklapin at gmail.com>
+ * @author Marcel Bachus <marcel.bachus at ziggo.nl>
+ */
+$lang['translations']          = 'Vertaling van deze pagina';
+$lang['outdated']              = 'Deze vertaling is ouder dan de <a href="%s" class="wikilink1">originele pagina</a> en kan verouderd zijn.';
+$lang['diff']                  = 'Kijk wat er is <a href="%s" class="wikilink1">veranderd</a>.';
+$lang['transloaded']           = 'De inhoud van vertaling van deze pagina in %s is al geladen om vertalen makkelijker te maken.<br />Maar je kunt je vertaling ook baseren op één van de volgende bestaande vertalingen: %s.';
+$lang['menu']                  = 'verouderde of missende vertaling';
+$lang['missing']               = 'Niet gevonden!';
+$lang['old']                   = 'verouderd';
+$lang['current']               = 'laatste stand van zaken';
+$lang['path']                  = 'Pad';
diff --git a/lib/plugins/translation/lang/nl/settings.php b/lib/plugins/translation/lang/nl/settings.php
new file mode 100644
index 0000000..88dbe98
--- /dev/null
+++ b/lib/plugins/translation/lang/nl/settings.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Gerrit <klapinklapin at gmail.com>
+ * @author Gerrit Uitslag <klapinklapin at gmail.com>
+ * @author Marcel Bachus <marcel.bachus at ziggo.nl>
+ */
+$lang['translations']          = 'Spatiegescheiden lijst van vertalingen (ISO codes).';
+$lang['translationns']         = 'Als je alleen vertalingen in een bepaalde namespace wenst, plaatst die dan hier.';
+$lang['skiptrans']             = 'Wanneer een paginanaam overeenstemt met deze reguliere expressie, wordt het vertaalmenu niet getoond.';
+$lang['dropdown']              = 'Gebruik een dropdownlijst om vertalingen weer te geven (aanbevolen bij meer dan 5 talen).';
+$lang['translateui']           = 'Moet de taal van de gebruikersinterface ook veranderen naar de taal van vertaalde namespace?';
+$lang['redirectstart']         = 'Moet de startpagina automatisch doorverwijzen naar de namespace van de taal die de taaldetectie van de browser doorgeeft?';
+$lang['about']                 = 'Geef een paginanaam waar de vertaalfunctie wordt uitgelegd voor je gebruikers. Het zal worden gelinkt vanuit de talenkiezer.';
+$lang['localabout']            = 'Gebruik vertaalde versies van bovengenoemde vertalingsuitlegpagina (in plaats van één globale uitlegpagina).';
+$lang['checkage']              = 'Waarschuw voor mogelijk gedateerde vertalingen.';
+$lang['display']               = 'Selecteer wat je wil zien in de talenkiezer. Let op dat het gebruik van landenvlaggen in de talenkiezer niet altijd gebruiksvriendelijkheid is.';
+$lang['copytrans']             = 'De tekst in de oorspronkelijke taal naar het bewerkvenster kopiëren als er een nieuwe vertaling wordt begonnen.';
+$lang['show_path']             = 'Toon het pad naar de missende vertalings pagina?';
diff --git a/lib/plugins/translation/lang/nl/totranslate.txt b/lib/plugins/translation/lang/nl/totranslate.txt
new file mode 100644
index 0000000..d5f8cee
--- /dev/null
+++ b/lib/plugins/translation/lang/nl/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Deze pagina is nog niet volledig vertaald. Help alsjeblieft de vertaling compleet te maken.**\\ //(verwijder deze paragraaf als de vertaling is voltooid)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/pt-br/lang.php b/lib/plugins/translation/lang/pt-br/lang.php
index acc3cdf..c6fa3f7 100644
--- a/lib/plugins/translation/lang/pt-br/lang.php
+++ b/lib/plugins/translation/lang/pt-br/lang.php
@@ -1,3 +1,17 @@
 <?php
 
-$lang['translations'] = 'Traduções';
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Felipe Castro <fefcas at gmail.com>
+ * @author Edney Rossi <edneyrossi at gmail.com>
+ */
+$lang['translations']          = 'Traduções desta página';
+$lang['outdated']              = 'Esta tradução é mais antiga que a <a href="%s" class="wikilink1"> página original </a> e pode estar desatualizada.';
+$lang['diff']                  = 'Veja o que foi <a href="%s" class="wikilink1">mudado</a>.';
+$lang['transloaded']           = 'O conteúdo da tradução desta página em %s foi pré-carregado para facilitar o trabalho.< br/>Mas você pode basear sua tradução nas seguintes traduções existentes: %s.';
+$lang['menu']                  = 'traduções desatualizadas e inexistentes';
+$lang['missing']               = 'Inexistente!';
+$lang['old']                   = 'desatualizado';
+$lang['current']               = 'atualizada';
+$lang['path']                  = 'Caminho';
diff --git a/lib/plugins/translation/lang/pt-br/settings.php b/lib/plugins/translation/lang/pt-br/settings.php
index 401cd0b..e053e13 100644
--- a/lib/plugins/translation/lang/pt-br/settings.php
+++ b/lib/plugins/translation/lang/pt-br/settings.php
@@ -1,14 +1,21 @@
 <?php
+
 /**
- * Arquivo de idioma Portugues do Brasil
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  *
  * @author Paulino Michelazzo <paulino at michelazzo.com.br>
- 
- * @date Oct 17, 2007
+ * @author Felipe Castro <fefcas at gmail.com>
+ * @author Edney Rossi <edneyrossi at gmail.com>
  */
-
-$lang['translations']  = "Lista de idiomas (códigos ISO) separada por espaços. Não inclua o idioma padrão.";
-$lang['translationns'] = "Se você deseja traduções somente abaixo de um determinado namespace, informe-o aqui.";
-$lang['translateui']   = "A interface também deve ser alterada para o idioma selecionado pelo usuário?";
-$lang['about']         = "Informe uma página onde a funcionalidade de tradução é explicada para o usuário. Ela pode ser conectada com o selecionador de idiomas.";
-
+$lang['translations']          = 'Lista de idiomas separados por espaço (códigos ISO).';
+$lang['translationns']         = 'Se você deseja traduções apenas para certo idioma, coloque-o aqui.';
+$lang['skiptrans']             = 'Quando o nome-de-página estiver de acordo com esta expressão regular, não mostre o menu de tradução.';
+$lang['dropdown']              = 'Usar listagem desdobrada para mostrar as traduções (recomendado para mais que 5 línguas).';
+$lang['translateui']           = 'A interface do usuário deve ser trocada para o idioma, também?';
+$lang['redirectstart']         = 'A página inicial deve redirecionar automaticamente para o "namespace" da língua usando a detecção de idiomas no navegador?';
+$lang['about']                 = 'Digite um nome de página aqui onde o recurso de tradução é explicado para seus usuários. Ele será vinculado a partir do seletor de idioma.';
+$lang['localabout']            = 'Usar versões localizadas da página "a respeito de" (em vez de uma página global "a respeito de").';
+$lang['checkage']              = 'Avisar sobre possíveis traduções desatualizadas.';
+$lang['display']               = 'Selecionar o que você gostaria de mostrar no seletor de línguas. Note que usar bandeirinhas de países para selecionar línguas não é recomendado por especialistas em usabilidade.';
+$lang['copytrans']             = 'Copiar o texto da língua original no editor quando começar uma nova tradução?';
+$lang['show_path']             = 'Mostrar o caminho na página com tradução inexistente?';
diff --git a/lib/plugins/translation/lang/pt-br/totranslate.txt b/lib/plugins/translation/lang/pt-br/totranslate.txt
new file mode 100644
index 0000000..5329cda
--- /dev/null
+++ b/lib/plugins/translation/lang/pt-br/totranslate.txt
@@ -0,0 +1 @@
+FIXME ** Esta página não está completamente traduzida ainda. Por favor ajude a completar sua tradução.**\\ //(remova este parágrafo assim que a tradução tenha terminado)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/pt/lang.php b/lib/plugins/translation/lang/pt/lang.php
new file mode 100644
index 0000000..a17ab35
--- /dev/null
+++ b/lib/plugins/translation/lang/pt/lang.php
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author André Neves <drakferion at gmail.com>
+ * @author Alfredo Silva <alfredo.silva at sky.com>
+ */
+$lang['translations']          = 'Traduções para esta página';
+$lang['outdated']              = 'Esta tradução é mais antiga do que a <a href="%s" class="wikilink1">página original</a> e poderá estar desatualizada.';
+$lang['diff']                  = 'Veja o que foi <a href="%s" class="wikilink1">alterado</a>.';
diff --git a/lib/plugins/translation/lang/pt/settings.php b/lib/plugins/translation/lang/pt/settings.php
new file mode 100644
index 0000000..4cdd114
--- /dev/null
+++ b/lib/plugins/translation/lang/pt/settings.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author André Neves <drakferion at gmail.com>
+ * @author Alfredo Silva <alfredo.silva at sky.com>
+ */
+$lang['translations']          = 'Lista de idiomas de tradução (códigos ISO) separada por espaço.';
+$lang['translationns']         = 'Se pretender apenas as traduções abaixo de um determinado espaço de nome, coloque-as aqui.';
+$lang['skiptrans']             = 'Quando o nome da página corresponder com esta expressão regular, não mostrar o menu de tradução.';
+$lang['dropdown']              = 'Utilizar uma lista de menu para exibir as traduções (recomendado para mais de 5 idiomas).';
+$lang['translateui']           = 'O idioma da interface do utilizador também deverá ser alterado nos espaços de nome do idioma estrangeiro?';
+$lang['redirectstart']         = 'A página inicial deve redirecionar automaticamente para um espaço de nome do idioma utilizando a deteção de idioma do navegador?';
+$lang['about']                 = 'Insira aqui um nome de página onde a funcionalidade de tradução é explicada aos seus utilizadores. O seletor de língua terá uma ligação para lá.';
+$lang['localabout']            = 'Utilizar versões localizadas da página sobre (em vez de uma página global sobre).';
+$lang['checkage']              = 'Avisar sobre as possíveis traduções desatualizadas.';
+$lang['display']               = 'Selecione o que gostaria de ver mostrado no seletor de linguagem. Note que usar bandeiras de países para seleção de linguagem não é recomendado por peritos de usabilidade.';
+$lang['copytrans']             = 'Copiar o texto do idioma original no editor quando iniciar uma nova tradução?';
diff --git a/lib/plugins/translation/lang/ru/lang.php b/lib/plugins/translation/lang/ru/lang.php
index bd3e041..dc85abc 100644
--- a/lib/plugins/translation/lang/ru/lang.php
+++ b/lib/plugins/translation/lang/ru/lang.php
@@ -1,5 +1,18 @@
-<?php
+<?php
 
-$lang['translations'] = 'Перевод этой страницы';
-$lang['outdated']     = 'Этот перевод старее чем <a href="%s" class="wikilink1">оригинальная страница</a> и может быть не актуальным.';
-$lang['diff']         = 'Смотрите что <a href="%s" class="wikilink1">было изменено</a>.';
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Aleksandr Selivanov <alexgearbox at gmail.com>
+ * @author Vasilyy Balyasnyy <v.balyasnyy at gmail.com>
+ * @author Anotheroneuser <w20151222 at ya.ru>
+ */
+$lang['translations']          = 'Перевод этой страницы';
+$lang['outdated']              = 'Этот перевод старее, чем <a href="%s" class="wikilink1">оригинальная страница</a>, и может быть неактуальным.';
+$lang['diff']                  = 'Смотрите, что <a href="%s" class="wikilink1">было изменено</a>.';
+$lang['transloaded']           = 'Содержание перевода этой страницы в %s было предварительно загружено для упрощения перевода.<br />Но вы можете переводить на основе следующего существующего перевода: %s.';
+$lang['menu']                  = 'Устаревшие или отсутствующие переводы';
+$lang['missing']               = 'Отсутствует! ';
+$lang['old']                   = 'устарело';
+$lang['current']               = 'обновить (привести в актуальное состояние)';
+$lang['path']                  = 'Путь';
diff --git a/lib/plugins/translation/lang/ru/settings.php b/lib/plugins/translation/lang/ru/settings.php
index 26c7ed5..a974b68 100644
--- a/lib/plugins/translation/lang/ru/settings.php
+++ b/lib/plugins/translation/lang/ru/settings.php
@@ -1,16 +1,21 @@
-<?php
+<?php
+
 /**
- * Russian language file
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  *
  * @author Oleksiy Zagorskyi <zalex_ua at i.ua>
+ * @author Aleksandr Selivanov <alexgearbox at gmail.com>
+ * @author Anotheroneuser <w20151222 at ya.ru>
  */
-
-$lang['translations']  = 'Список поддерживаемых языков перевода (двусимвольные коды ISO). Разделите значения запятыми или пробелами.';
-$lang['translationns'] = 'Если вы хотите перевести только определенное Пространство имен, тогда впишите здесь его имя.';
-$lang['skiptrans']     = 'Если имя страницы соответствует этому регулярному выражению, тогда не отображать меню переводов.';
-$lang['dropdown']      = 'Использовать выпадающий список для отображения доступных переводов (рекомендуется, если более 5 переводов)';
-$lang['translateui']   = 'Должен ли язык интерфейса пользователя так же переключаться согласно языку Пространства имен?';
-$lang['redirectstart'] = 'Должна ли стартовая страница автоматически перенаправляться на Пространство имен языка, используя детектирование языка браузера?';
-$lang['about']         = 'Введите здесь имя страницы, на которой будут разъяснены функции перевода для ваших пользователей. Она будет связана с выбором языка.';
-$lang['checkage']      = 'Отображать предупреждения о возможной не актуальности перевода страниц?';
-
+$lang['translations']          = 'Список поддерживаемых языков перевода (двухсимвольные коды ISO). Разделите значения пробелами.';
+$lang['translationns']         = 'Если вы хотите перевести только определённое пространство имён, тогда впишите здесь его имя.';
+$lang['skiptrans']             = 'Если имя страницы соответствует этому регулярному выражению, тогда не отображать меню перевода.';
+$lang['dropdown']              = 'Использовать выпадающий список для отображения доступных переводов (рекомендуется, если более 5 переводов)';
+$lang['translateui']           = 'Должен ли язык интерфейса пользователя также переключаться согласно языку пространства имён?';
+$lang['redirectstart']         = 'Должна ли стартовая страница автоматически перенаправляться на пространство имён языка, используя автоопределение языка браузера?';
+$lang['about']                 = 'Введите здесь имя страницы, на которой будут разъяснены функции перевода для ваших пользователей. Она будет связана с выбором языка.';
+$lang['localabout']            = 'Использовать локализованную версию страницы разъяснений (вместо одной глобальной страницы разъяснений).';
+$lang['checkage']              = 'Отображать предупреждение о возможной неактуальности перевода?';
+$lang['display']               = 'Выберите, что бы вы хотели видеть в поле выбора языков. Имейте в виду, что использование изображения государственного флага в поле выбора языков не было рекомендовано экспертами в области потребительского удобства. ';
+$lang['copytrans']             = 'Копировать текст оригинала в окно редактирования при создании нового перевода?';
+$lang['show_path']             = 'Показывать путь на непереведённых страницах? ';
diff --git a/lib/plugins/translation/lang/ru/totranslate.txt b/lib/plugins/translation/lang/ru/totranslate.txt
new file mode 100644
index 0000000..b34588e
--- /dev/null
+++ b/lib/plugins/translation/lang/ru/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Эта страница пока что не переведена полностью. Пожалуйста, помогите завершить перевод.**\\ //(Сотрите это сообщение по окончании перевода.)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/sl/lang.php b/lib/plugins/translation/lang/sl/lang.php
new file mode 100644
index 0000000..be8a195
--- /dev/null
+++ b/lib/plugins/translation/lang/sl/lang.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ */
+$lang['translations']          = 'Prevod trenutne strani';
+$lang['outdated']              = 'Prevod je starejši od <a href="%s" class="wikilink1">izvorne strani</a> in je zato lahko zastarel.';
+$lang['diff']                  = 'Oglejte si <a href="%s" class="wikilink1">spremembe</a>.';
diff --git a/lib/plugins/translation/lang/sl/settings.php b/lib/plugins/translation/lang/sl/settings.php
new file mode 100644
index 0000000..6bdcff4
--- /dev/null
+++ b/lib/plugins/translation/lang/sl/settings.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * 
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matej Urbančič <mateju at svn.gnome.org>
+ */
+$lang['translations']          = 'Space separated list of translation languages (ISO codes).';
+$lang['translationns']         = 'If you only want translations below a certain namespace, put it here.';
+$lang['skiptrans']             = 'When the pagename matches this regular expression, don\'t show the translation menu.';
+$lang['dropdown']              = 'Use a dropdown list to display the translations (recommended for more than 5 languages).';
+$lang['translateui']           = 'Should the language of the user interface be switched in foreign language namespaces, too?';
+$lang['redirectstart']         = 'Should the start page automatically redirect into a language namespace using browser language detection?';
+$lang['about']                 = 'Enter a pagename here where the translation feature is explained for your users. It will be linked from the language selector.';
+$lang['localabout']            = 'Uporabi prevedeno različico strani o vstavku (namesto splošne strani).';
+$lang['checkage']              = 'Opozori o zastarelem prevodu.';
+$lang['display']               = 'Izbor možnosti za prikaz jezika v izbirniku jezika. Izbor zastave jezika v izbiri ni priporočen.';
diff --git a/lib/plugins/translation/lang/tr/lang.php b/lib/plugins/translation/lang/tr/lang.php
new file mode 100644
index 0000000..6f8f617
--- /dev/null
+++ b/lib/plugins/translation/lang/tr/lang.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author İlker R. Kapaç <irifat at gmail.com>
+ */
+$lang['translations']          = 'Bu sayfanın çevirileri';
+$lang['outdated']              = 'Bu çeviri <a href="%s" class="wikilink1">orjinal sayfadan</a> daha eski tarihli. Dolayısıyla güncel olmayabilir.';
+$lang['diff']                  = 'Nelerin değiştiğini görmek için <a href="%s" class="wikilink1">tıklayın</a>.';
diff --git a/lib/plugins/translation/lang/tr/settings.php b/lib/plugins/translation/lang/tr/settings.php
new file mode 100644
index 0000000..bad9dbc
--- /dev/null
+++ b/lib/plugins/translation/lang/tr/settings.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author İlker R. Kapaç <irifat at gmail.com>
+ */
+$lang['translations']          = 'Tercüme dillerinin listesi. (boşluk ile ayrılmış, ISO kodları)';
+$lang['translationns']         = 'Eğer tercümelerin bir isim alanın (namespace) altında olmasını istiyorsanız, buraya yazın.';
+$lang['skiptrans']             = 'İsim alanı (Namespace) buradaki tanıma uyduğunda, tercüme arayüzünü gösterme.';
+$lang['dropdown']              = 'Dilleri listelemek için açılır arayüz kullan. (5\'ten fazla dil olduğunda kullanılması önerilir)';
+$lang['localabout']            = 'Bir tane genel "hakkında" sayfası kullanmak yerine, yerelleştirilmiş "hakkında" sayfaları kullan. ';
+$lang['checkage']              = 'Eski tarihli tercümeler hakkında uyarı göster.';
+$lang['display']               = 'Dil seçiminde görünmesini istediklerinizi seçin. Lütfen unutmayın, dil seçiminde ülke bayrağı kullanmak, erişilebilirlik uzmanları tarafından tavsiye edilmez.';
+$lang['copytrans']             = 'Yeni tercümeye başlarken orjinal dildeki metin, düzenleme ekranına kopyalansın mı?';
diff --git a/lib/plugins/translation/lang/tr/totranslate.txt b/lib/plugins/translation/lang/tr/totranslate.txt
new file mode 100644
index 0000000..e281874
--- /dev/null
+++ b/lib/plugins/translation/lang/tr/totranslate.txt
@@ -0,0 +1 @@
+FIXME **Bu sayfanın çevirisi henüz tamamlanmadı. Lütfen çevirinin tamamlanmasına yardımcı olun.**\\ //(Çeviri tamamlandığında bu paragrafı silin)//
\ No newline at end of file
diff --git a/lib/plugins/translation/lang/uk/lang.php b/lib/plugins/translation/lang/uk/lang.php
index ddf3cf9..06e1938 100644
--- a/lib/plugins/translation/lang/uk/lang.php
+++ b/lib/plugins/translation/lang/uk/lang.php
@@ -1,4 +1,4 @@
-<?php
+<?php
 
 $lang['translations'] = 'Переклад цієї сторінки';
 $lang['outdated']     = 'Цей переклад старіший ніж <a href="%s" class="wikilink1">оригінальна сторінка</a> і може бути не актуальним.';
diff --git a/lib/plugins/translation/lang/uk/settings.php b/lib/plugins/translation/lang/uk/settings.php
index 2655a9f..11e87a0 100644
--- a/lib/plugins/translation/lang/uk/settings.php
+++ b/lib/plugins/translation/lang/uk/settings.php
@@ -1,4 +1,4 @@
-<?php
+<?php
 /**
  * Ukrainian language file
  *
@@ -12,5 +12,7 @@ $lang['dropdown']      = 'Використовувати випадаючий с
 $lang['translateui']   = 'Чи повинна мова інтерфейсу користувача також перемикатись відповідно до мови Простору імен?';
 $lang['redirectstart'] = 'Чи повинна стартова сторінка автоматично перенаправлятись на Простір імен мови, використовуючи детектекцію мови оглядача?';
 $lang['about']         = 'Введіть тут ім\'я сторінки, на якій буде роз\'яснено функції перекладу для ваших користувачів. Вона буде пов\'язана з вибором мови.';
+$lang['localabout']    = 'Використовувати локалізовану версію сторінки роз\'яснень (замість однієї глобальної сторінки роз\'яснень).';
 $lang['checkage']      = 'Відображувати попередження про можливу не актуальність перекладу сторінок?';
-
+$lang['display']       = 'Оберіть що б ви хотіли відображувати в перемикачі мов. Примітка: використовувати прапор країни для перемикача мов не рекомендується експертами по зручності використання інтерфейсу.';
+?>
diff --git a/lib/plugins/translation/lang/zh/lang.php b/lib/plugins/translation/lang/zh/lang.php
index ef60c32..4aaa2d3 100644
--- a/lib/plugins/translation/lang/zh/lang.php
+++ b/lib/plugins/translation/lang/zh/lang.php
@@ -1,3 +1,18 @@
 <?php
 
-$lang['translations'] = '本页面的其他翻译';
\ No newline at end of file
+/**
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author hfl <huangfeilong at gmail.com>
+ * @author oott123 <ip.192.168.1.1 at qq.com>
+ * @author kuma <kuma000 at qq.com>
+ */
+$lang['translations']          = '本页面的其他翻译';
+$lang['outdated']              = '翻译跟<a href="%s" class="wikilink1">原始页面</a>比较起来显得有些陈旧,所以可能失效。';
+$lang['diff']                  = '查看<a href="%s" class="wikilink1">更新</a>';
+$lang['transloaded']           = '此页面的 %s 已经由 easy translation 预翻译。<br />但你可以以以下现存的语言为基础翻译你的版本。%s';
+$lang['menu']                  = '过时的和缺失的翻译';
+$lang['missing']               = '缺失!';
+$lang['old']                   = '过时';
+$lang['current']               = '最新的';
+$lang['path']                  = '路径';
diff --git a/lib/plugins/translation/lang/zh/settings.php b/lib/plugins/translation/lang/zh/settings.php
index 40abeeb..6ca6666 100644
--- a/lib/plugins/translation/lang/zh/settings.php
+++ b/lib/plugins/translation/lang/zh/settings.php
@@ -1,12 +1,21 @@
 <?php
+
 /**
- * Chinese(Simplified) language file
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
  *
  * @author ZDYX <zhangduyixiong at gmail.com>
+ * @author oott123 <ip.192.168.1.1 at qq.com>
+ * @author kuma <kuma000 at qq.com>
  */
-
-$lang['translations']  = "使用空格分隔的翻译语言列表(ISO 码)。请勿填入默认语言。";
-$lang['translationns'] = "如果您只希望本插件作用于某个特定的名称空间,请在这里写上其名称。";
-$lang['translateui']   = "整个用户界面也跟随某个页面的翻译语言而改变吗?";
-$lang['about']         = "请在此输入向用户解释翻译功能的页面的名称空间。它的链接将出现在语言选择器上。";
-
+$lang['translations']          = '使用空格分隔的翻译语言列表(ISO 码)。请勿填入默认语言。';
+$lang['translationns']         = '如果您只希望本插件作用于某个特定的名称空间,请在这里写上其名称。';
+$lang['skiptrans']             = '当页面名称与此正则匹配时,不要显示翻译菜单。';
+$lang['dropdown']              = '使用下拉列表显示翻译语言(5+语言时建议启用)';
+$lang['translateui']           = '整个用户界面也跟随某个页面的翻译语言而改变吗?';
+$lang['redirectstart']         = '首页是否根据浏览器语言自动切换到相应语言?';
+$lang['about']                 = '请在此输入向用户解释翻译功能的页面的名称空间。它的链接将出现在语言选择器上。';
+$lang['localabout']            = '使用本地化的关于页面(而不是一个全局关于页面)。';
+$lang['checkage']              = '警告:可能过时了的翻译。';
+$lang['display']               = '选择你想在选择器中显示什么。注意可用性专家并不推荐使用国旗选择语言。';
+$lang['copytrans']             = '开始新翻译的时候在编辑器中复制原始语言版本?';
+$lang['show_path']             = '缺失的翻译页面上显示路径?';
diff --git a/lib/plugins/translation/lang/zh/totranslate.txt b/lib/plugins/translation/lang/zh/totranslate.txt
new file mode 100644
index 0000000..aaa32f9
--- /dev/null
+++ b/lib/plugins/translation/lang/zh/totranslate.txt
@@ -0,0 +1 @@
+等待修复  **此页面没有被翻译完全。请帮助翻译本页。**\\ //(当全文翻译完时请移除这个段落。)//
\ No newline at end of file
diff --git a/lib/plugins/translation/manager.dat b/lib/plugins/translation/manager.dat
new file mode 100644
index 0000000..28a2043
--- /dev/null
+++ b/lib/plugins/translation/manager.dat
@@ -0,0 +1,3 @@
+downloadurl=https://github.com/splitbrain/dokuwiki-plugin-translation/zipball/master
+installed=Tue, 25 Nov 2014 17:52:25 +0100
+updated=Sun, 05 Mar 2017 13:40:48 +0100
diff --git a/lib/plugins/translation/plugin.info.txt b/lib/plugins/translation/plugin.info.txt
index a05dafa..14ea71f 100644
--- a/lib/plugins/translation/plugin.info.txt
+++ b/lib/plugins/translation/plugin.info.txt
@@ -2,7 +2,7 @@
 base   translation
 author Andreas Gohr
 email  andi at splitbrain.org
-date   2010-12-10
+date   2016-09-07
 name   Translation Plugin
 desc   Supports the easy setup of a multi-language wiki.
 url    http://www.dokuwiki.org/plugin:translation
diff --git a/lib/plugins/translation/script.js b/lib/plugins/translation/script.js
index 3c11be9..819b80e 100644
--- a/lib/plugins/translation/script.js
+++ b/lib/plugins/translation/script.js
@@ -1,17 +1,18 @@
 /**
  * Remove go button from translation dropdown
  */
-addInitEvent(function(){
-    var frm = $('translation__dropdown');
-    if(!frm) return;
-    frm.elements['go'].style.display = 'none';
-    addEvent(frm.elements['id'],'change',function(e){
-        var id = e.target.options[e.target.selectedIndex].value;
+jQuery(function(){
+    var $frm = jQuery('#translation__dropdown');
+    if(!$frm.length) return;
+    $frm.find('input[name=go]').hide();
+    $frm.find('select[name=id]').change(function(){
+        var id = jQuery(this).val();
         // this should hopefully detect rewriting good enough:
-        if(frm.action.substr(frm.action.length-1) == '/'){
-            var link = frm.action + id;
+        var action = $frm.attr('action');
+        if(action.substr(action.length-1) == '/'){
+            var link = action + id;
         }else{
-            var link = frm.action + '?id=' + id;
+            var link = action + '?id=' + id;
         }
 
         window.location.href= link;
diff --git a/lib/plugins/translation/style.css b/lib/plugins/translation/style.css
index b89172a..14e54eb 100644
--- a/lib/plugins/translation/style.css
+++ b/lib/plugins/translation/style.css
@@ -27,7 +27,7 @@
 .dokuwiki div.plugin_translation ul li a.wikilink1:active,
 .dokuwiki div.plugin_translation ul li a.wikilink1:visited {
     background-color: #000080;
-    color: #fff !important;
+    color: #fff;
     text-decoration:none;
     padding: 0 0.2em;
     margin: 0.1em 0.2em;
@@ -39,7 +39,7 @@
 .dokuwiki div.plugin_translation ul li a.wikilink2:active,
 .dokuwiki div.plugin_translation ul li a.wikilink2:visited {
     background-color: #808080;
-    color: #fff !important;
+    color: #fff;
     text-decoration:none;
     padding: 0 0.2em;
     margin: 0.1em 0.2em;
@@ -78,3 +78,20 @@
 .dokuwiki div.plugin_translation .wikilink2 img {
     opacity: 0.5;
 }
+
+table#outdated_translations td {
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+table#outdated_translations td.missing {
+    background-color: #ff6666;
+}
+
+table#outdated_translations td.outdated {
+    background-color: #ffff66;
+}
+
+table#outdated_translations td.current {
+    background-color: #00CC00;
+}
diff --git a/lib/plugins/translation/syntax/notrans.php b/lib/plugins/translation/syntax/notrans.php
new file mode 100644
index 0000000..b8cb9cd
--- /dev/null
+++ b/lib/plugins/translation/syntax/notrans.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Translation Plugin: Simple multilanguage plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi at splitbrain.org>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+class syntax_plugin_translation_notrans extends DokuWiki_Syntax_Plugin {
+
+    /**
+     * for th helper plugin
+     */
+    var $hlp = null;
+
+    /**
+     * Constructor. Load helper plugin
+     */
+    function __construct(){
+        $this->hlp =& plugin_load('helper', 'translation');
+    }
+
+    /**
+     * What kind of syntax are we?
+     */
+    function getType(){
+        return 'substition';
+    }
+
+    /**
+     * Where to sort in?
+     */
+    function getSort(){
+        return 155;
+    }
+
+
+    /**
+     * Connect pattern to lexer
+     */
+    function connectTo($mode) {
+        $this->Lexer->addSpecialPattern('~~NOTRANS~~',$mode,'plugin_translation_notrans');
+    }
+
+
+    /**
+     * Handle the match
+     */
+    function handle($match, $state, $pos, Doku_Handler $handler){
+        return array('notrans');
+    }
+
+    /**
+     * Create output
+     */
+    function render($format, Doku_Renderer $renderer, $data) {
+        // store info in metadata
+        if($format == 'metadata'){
+            $renderer->meta['plugin']['translation']['notrans'] = true;
+        }
+        return false;
+    }
+
+    // for backward compatibility
+    function _showTranslations(){
+        return $this->hlp->showTranslations();
+    }
+
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
diff --git a/lib/plugins/translation/syntax/trans.php b/lib/plugins/translation/syntax/trans.php
new file mode 100644
index 0000000..bbd4645
--- /dev/null
+++ b/lib/plugins/translation/syntax/trans.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Translation Plugin: Simple multilanguage plugin
+ *
+ * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author     Andreas Gohr <andi at splitbrain.org>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+class syntax_plugin_translation_trans extends DokuWiki_Syntax_Plugin {
+    /**
+     * What kind of syntax are we?
+     */
+    function getType() {
+        return 'substition';
+    }
+
+    /**
+     * Where to sort in?
+     */
+    function getSort() {
+        return 155;
+    }
+
+    /**
+     * Connect pattern to lexer
+     */
+    function connectTo($mode) {
+        $this->Lexer->addSpecialPattern('~~TRANS~~', $mode, 'plugin_translation_trans');
+    }
+
+    /**
+     * Handle the match
+     */
+    function handle($match, $state, $pos, Doku_Handler $handler) {
+        return array();
+    }
+
+    /**
+     * Create output
+     */
+    function render($format, Doku_Renderer $renderer, $data) {
+        if($format != 'xhtml') return false;
+
+        // disable caching
+        $renderer->nocache();
+
+        /** @var helper_plugin_translation $hlp */
+        $hlp =  plugin_load('helper', 'translation');
+        $renderer->doc .= $hlp->showTranslations();
+        return true;
+    }
+
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list